summaryrefslogtreecommitdiffstats
path: root/binutils-2.24/binutils
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2014-03-26 11:03:35 -0700
committerBen Cheng <bccheng@google.com>2014-03-26 11:03:35 -0700
commit09797ba54abf3683ea66eedddf6afbe7653f9cb9 (patch)
tree8030b2ed79c7463c89d6da294782e9d503c84f50 /binutils-2.24/binutils
parent5a2caf34e4995860baf405552163df288000b7bf (diff)
downloadtoolchain_binutils-09797ba54abf3683ea66eedddf6afbe7653f9cb9.tar.gz
toolchain_binutils-09797ba54abf3683ea66eedddf6afbe7653f9cb9.tar.bz2
toolchain_binutils-09797ba54abf3683ea66eedddf6afbe7653f9cb9.zip
Initial checkin of binutils 2.24.
Change-Id: I0dfcbae6608dded6c3586bf5f4ac27e9612e70a2
Diffstat (limited to 'binutils-2.24/binutils')
-rw-r--r--binutils-2.24/binutils/BRANCHES48
-rw-r--r--binutils-2.24/binutils/ChangeLog585
-rw-r--r--binutils-2.24/binutils/ChangeLog-00012066
-rw-r--r--binutils-2.24/binutils/ChangeLog-02032187
-rw-r--r--binutils-2.24/binutils/ChangeLog-2004799
-rw-r--r--binutils-2.24/binutils/ChangeLog-20051356
-rw-r--r--binutils-2.24/binutils/ChangeLog-2006605
-rw-r--r--binutils-2.24/binutils/ChangeLog-20071171
-rw-r--r--binutils-2.24/binutils/ChangeLog-2008880
-rw-r--r--binutils-2.24/binutils/ChangeLog-20091361
-rw-r--r--binutils-2.24/binutils/ChangeLog-20101083
-rw-r--r--binutils-2.24/binutils/ChangeLog-2011936
-rw-r--r--binutils-2.24/binutils/ChangeLog-2012756
-rw-r--r--binutils-2.24/binutils/ChangeLog-91975223
-rw-r--r--binutils-2.24/binutils/ChangeLog-98991914
-rw-r--r--binutils-2.24/binutils/MAINTAINERS284
-rw-r--r--binutils-2.24/binutils/Makefile.am547
-rw-r--r--binutils-2.24/binutils/Makefile.in1481
-rw-r--r--binutils-2.24/binutils/NEWS492
-rw-r--r--binutils-2.24/binutils/README290
-rw-r--r--binutils-2.24/binutils/aclocal.m41013
-rw-r--r--binutils-2.24/binutils/addr2line.c502
-rw-r--r--binutils-2.24/binutils/ar.c1478
-rw-r--r--binutils-2.24/binutils/arlex.c2036
-rw-r--r--binutils-2.24/binutils/arlex.l95
-rw-r--r--binutils-2.24/binutils/arparse.c1770
-rw-r--r--binutils-2.24/binutils/arparse.h102
-rw-r--r--binutils-2.24/binutils/arparse.y204
-rw-r--r--binutils-2.24/binutils/arsup.c481
-rw-r--r--binutils-2.24/binutils/arsup.h63
-rw-r--r--binutils-2.24/binutils/bfdtest1.c70
-rw-r--r--binutils-2.24/binutils/bfdtest2.c106
-rw-r--r--binutils-2.24/binutils/bin2c.c66
-rw-r--r--binutils-2.24/binutils/binemul.c149
-rw-r--r--binutils-2.24/binutils/binemul.h71
-rw-r--r--binutils-2.24/binutils/bucomm.c626
-rw-r--r--binutils-2.24/binutils/bucomm.h79
-rw-r--r--binutils-2.24/binutils/budbg.h57
-rw-r--r--binutils-2.24/binutils/coffdump.c558
-rw-r--r--binutils-2.24/binutils/coffgrok.c744
-rw-r--r--binutils-2.24/binutils/coffgrok.h226
-rw-r--r--binutils-2.24/binutils/config.in271
-rwxr-xr-xbinutils-2.24/binutils/configure16653
-rw-r--r--binutils-2.24/binutils/configure.com146
-rw-r--r--binutils-2.24/binutils/configure.in499
-rw-r--r--binutils-2.24/binutils/configure.tgt42
-rw-r--r--binutils-2.24/binutils/cxxfilt.c289
-rw-r--r--binutils-2.24/binutils/debug.c3371
-rw-r--r--binutils-2.24/binutils/debug.h793
-rw-r--r--binutils-2.24/binutils/deflex.c2105
-rw-r--r--binutils-2.24/binutils/deflex.l98
-rw-r--r--binutils-2.24/binutils/defparse.c2142
-rw-r--r--binutils-2.24/binutils/defparse.h124
-rw-r--r--binutils-2.24/binutils/defparse.y245
-rw-r--r--binutils-2.24/binutils/dep-in.sed20
-rw-r--r--binutils-2.24/binutils/dlltool.c4547
-rw-r--r--binutils-2.24/binutils/dlltool.h40
-rw-r--r--binutils-2.24/binutils/dllwrap.c1252
-rw-r--r--binutils-2.24/binutils/doc/Makefile.am201
-rw-r--r--binutils-2.24/binutils/doc/Makefile.in888
-rw-r--r--binutils-2.24/binutils/doc/addr2line.1299
-rw-r--r--binutils-2.24/binutils/doc/ar.1461
-rw-r--r--binutils-2.24/binutils/doc/binutils.info4898
-rw-r--r--binutils-2.24/binutils/doc/binutils.texi4885
-rw-r--r--binutils-2.24/binutils/doc/cxxfilt.man336
-rw-r--r--binutils-2.24/binutils/doc/dlltool.1529
-rw-r--r--binutils-2.24/binutils/doc/elfedit.1233
-rw-r--r--binutils-2.24/binutils/doc/fdl.texi506
-rw-r--r--binutils-2.24/binutils/doc/nlmconv.1242
-rw-r--r--binutils-2.24/binutils/doc/nm.1530
-rw-r--r--binutils-2.24/binutils/doc/objcopy.11012
-rw-r--r--binutils-2.24/binutils/doc/objdump.1842
-rw-r--r--binutils-2.24/binutils/doc/ranlib.1218
-rw-r--r--binutils-2.24/binutils/doc/readelf.1448
-rw-r--r--binutils-2.24/binutils/doc/size.1266
-rw-r--r--binutils-2.24/binutils/doc/strings.1255
-rw-r--r--binutils-2.24/binutils/doc/strip.1427
-rw-r--r--binutils-2.24/binutils/doc/windmc.1351
-rw-r--r--binutils-2.24/binutils/doc/windres.1359
-rw-r--r--binutils-2.24/binutils/dwarf-mode.el170
-rw-r--r--binutils-2.24/binutils/dwarf.c6855
-rw-r--r--binutils-2.24/binutils/dwarf.h250
-rw-r--r--binutils-2.24/binutils/elfcomm.c853
-rw-r--r--binutils-2.24/binutils/elfcomm.h112
-rw-r--r--binutils-2.24/binutils/elfedit.c738
-rw-r--r--binutils-2.24/binutils/embedspu.sh260
-rw-r--r--binutils-2.24/binutils/emul_aix.c141
-rw-r--r--binutils-2.24/binutils/emul_vanilla.c30
-rw-r--r--binutils-2.24/binutils/filemode.c249
-rw-r--r--binutils-2.24/binutils/ieee.c7411
-rw-r--r--binutils-2.24/binutils/is-ranlib.c22
-rw-r--r--binutils-2.24/binutils/is-strip.c23
-rw-r--r--binutils-2.24/binutils/makefile.vms90
-rw-r--r--binutils-2.24/binutils/maybe-ranlib.c23
-rw-r--r--binutils-2.24/binutils/maybe-strip.c23
-rw-r--r--binutils-2.24/binutils/mclex.c441
-rw-r--r--binutils-2.24/binutils/mcparse.c2156
-rw-r--r--binutils-2.24/binutils/mcparse.h103
-rw-r--r--binutils-2.24/binutils/mcparse.y356
-rw-r--r--binutils-2.24/binutils/nlmconv.c2138
-rw-r--r--binutils-2.24/binutils/nlmconv.h86
-rw-r--r--binutils-2.24/binutils/nlmheader.c2698
-rw-r--r--binutils-2.24/binutils/nlmheader.h135
-rw-r--r--binutils-2.24/binutils/nlmheader.y960
-rw-r--r--binutils-2.24/binutils/nm.c1706
-rw-r--r--binutils-2.24/binutils/not-ranlib.c22
-rw-r--r--binutils-2.24/binutils/not-strip.c23
-rw-r--r--binutils-2.24/binutils/objcopy.c4290
-rw-r--r--binutils-2.24/binutils/objdump.c3698
-rw-r--r--binutils-2.24/binutils/objdump.h51
-rw-r--r--binutils-2.24/binutils/od-macho.c1119
-rw-r--r--binutils-2.24/binutils/od-xcoff.c1842
-rw-r--r--binutils-2.24/binutils/po/Make-in258
-rw-r--r--binutils-2.24/binutils/po/POTFILES.in76
-rw-r--r--binutils-2.24/binutils/po/bg.gmobin0 -> 76717 bytes
-rw-r--r--binutils-2.24/binutils/po/bg.po7951
-rw-r--r--binutils-2.24/binutils/po/binutils.pot7975
-rw-r--r--binutils-2.24/binutils/po/da.gmobin0 -> 69960 bytes
-rw-r--r--binutils-2.24/binutils/po/da.po7486
-rw-r--r--binutils-2.24/binutils/po/es.gmobin0 -> 199631 bytes
-rw-r--r--binutils-2.24/binutils/po/es.po9274
-rw-r--r--binutils-2.24/binutils/po/fi.gmobin0 -> 191859 bytes
-rw-r--r--binutils-2.24/binutils/po/fi.po9025
-rw-r--r--binutils-2.24/binutils/po/fr.gmobin0 -> 197223 bytes
-rw-r--r--binutils-2.24/binutils/po/fr.po8734
-rw-r--r--binutils-2.24/binutils/po/hr.gmobin0 -> 21549 bytes
-rw-r--r--binutils-2.24/binutils/po/hr.po7853
-rw-r--r--binutils-2.24/binutils/po/id.gmobin0 -> 153153 bytes
-rw-r--r--binutils-2.24/binutils/po/id.po6486
-rw-r--r--binutils-2.24/binutils/po/it.gmobin0 -> 192727 bytes
-rw-r--r--binutils-2.24/binutils/po/it.po8280
-rw-r--r--binutils-2.24/binutils/po/ja.gmobin0 -> 205175 bytes
-rw-r--r--binutils-2.24/binutils/po/ja.po8782
-rw-r--r--binutils-2.24/binutils/po/ro.gmobin0 -> 20265 bytes
-rw-r--r--binutils-2.24/binutils/po/ro.po5090
-rw-r--r--binutils-2.24/binutils/po/ru.gmobin0 -> 235992 bytes
-rw-r--r--binutils-2.24/binutils/po/ru.po8495
-rw-r--r--binutils-2.24/binutils/po/rw.gmobin0 -> 615 bytes
-rw-r--r--binutils-2.24/binutils/po/rw.po4990
-rw-r--r--binutils-2.24/binutils/po/sk.gmobin0 -> 149635 bytes
-rw-r--r--binutils-2.24/binutils/po/sk.po6306
-rw-r--r--binutils-2.24/binutils/po/sv.gmobin0 -> 113208 bytes
-rw-r--r--binutils-2.24/binutils/po/sv.po4931
-rw-r--r--binutils-2.24/binutils/po/tr.gmobin0 -> 129842 bytes
-rw-r--r--binutils-2.24/binutils/po/tr.po5790
-rw-r--r--binutils-2.24/binutils/po/uk.gmobin0 -> 237105 bytes
-rw-r--r--binutils-2.24/binutils/po/uk.po8546
-rw-r--r--binutils-2.24/binutils/po/vi.gmobin0 -> 208072 bytes
-rw-r--r--binutils-2.24/binutils/po/vi.po8492
-rw-r--r--binutils-2.24/binutils/po/zh_CN.gmobin0 -> 75892 bytes
-rw-r--r--binutils-2.24/binutils/po/zh_CN.po4742
-rw-r--r--binutils-2.24/binutils/po/zh_TW.gmobin0 -> 121475 bytes
-rw-r--r--binutils-2.24/binutils/po/zh_TW.po5497
-rw-r--r--binutils-2.24/binutils/prdbg.c2838
-rwxr-xr-xbinutils-2.24/binutils/ranlib.sh22
-rw-r--r--binutils-2.24/binutils/rclex.c905
-rw-r--r--binutils-2.24/binutils/rcparse.c4663
-rw-r--r--binutils-2.24/binutils/rcparse.h298
-rw-r--r--binutils-2.24/binutils/rcparse.y2013
-rw-r--r--binutils-2.24/binutils/rdcoff.c876
-rw-r--r--binutils-2.24/binutils/rddbg.c450
-rw-r--r--binutils-2.24/binutils/readelf.c14415
-rw-r--r--binutils-2.24/binutils/rename.c212
-rw-r--r--binutils-2.24/binutils/resbin.c2160
-rw-r--r--binutils-2.24/binutils/rescoff.c750
-rw-r--r--binutils-2.24/binutils/resrc.c3374
-rw-r--r--binutils-2.24/binutils/resres.c731
-rwxr-xr-xbinutils-2.24/binutils/sanity.sh67
-rw-r--r--binutils-2.24/binutils/size.c611
-rw-r--r--binutils-2.24/binutils/srconv.c1892
-rw-r--r--binutils-2.24/binutils/stabs.c5433
-rw-r--r--binutils-2.24/binutils/stamp-h.in1
-rw-r--r--binutils-2.24/binutils/strings.c655
-rw-r--r--binutils-2.24/binutils/sysdep.h188
-rw-r--r--binutils-2.24/binutils/sysdump.c719
-rw-r--r--binutils-2.24/binutils/sysinfo.c1962
-rw-r--r--binutils-2.24/binutils/sysinfo.h77
-rw-r--r--binutils-2.24/binutils/sysinfo.y429
-rw-r--r--binutils-2.24/binutils/syslex.c1906
-rw-r--r--binutils-2.24/binutils/syslex.l85
-rw-r--r--binutils-2.24/binutils/syslex_wrap.c25
-rw-r--r--binutils-2.24/binutils/sysroff.info504
-rw-r--r--binutils-2.24/binutils/testsuite/ChangeLog258
-rw-r--r--binutils-2.24/binutils/testsuite/ChangeLog-0411997
-rw-r--r--binutils-2.24/binutils/testsuite/ChangeLog-93031057
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/add-empty-section.d9
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/add-section.d11
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/alias-2.def2
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/alias.def2
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/ar.exp575
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/arm/objdump.exp89
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/arm/simple.s35
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/arm/thumb2-cond.s8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/bfin/objdump.exp53
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/bfin/unknown-mode.s8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/bintest.s12
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/compress.exp176
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/copy-1.d13
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/copy-1.s6
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/copy-2.d18
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/copy-3.d17
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/copy-4.d9
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/copytest.s7
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/dlltool.exp282
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/dumptest.s2
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/dw2-1.S198
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/dw2-1.W103
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/dw2-2.S195
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/dw2-compressed.S218
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/dw2-decodedline.S16
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/dw2-empty.S1
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/elfedit-1.d16
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/elfedit-2.d15
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/elfedit-3.d15
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/elfedit-4.d17
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/elfedit.exp35
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/empty-file0
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/empty.s1
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/exclude-1.s16
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/exclude-1a.d9
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/exclude-1b.d9
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/fastcall.def2
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/group-2.s8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/group-3.s8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/group-4.s6
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/group-5.d19
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/group-5.s12
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/group-6.d9
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/group-6.s4
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/group.s8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/hppa/addendbug.s23
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/hppa/freg.s23
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/hppa/objdump.exp96
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1.s147
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1a.d160
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1b.d18
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1c.d18
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/i386/i386.exp38
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/libdw2-compressed.out5
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/libdw2.out13
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/link-order.s13
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-1.d19
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-1.s36
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-2.d7
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-2.s2
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/m68k/fnop.s1
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/m68k/movem.s2
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/m68k/objdump.exp79
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/mips/mips.exp26
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-micromips.d30
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-micromips.s33
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-mips16.d30
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-mips16.s34
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/needed-by-reloc.s7
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/nm-1.s15
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/nm-elf-1.s16
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/nm.exp209
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/note-1.d13
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/objcopy.exp1006
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/objdump.W103
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/objdump.WL15
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/objdump.exp249
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/objdump.s9
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/readelf.exp361
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/readelf.h20
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/readelf.n5
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/readelf.r4
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/readelf.r-644
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/readelf.s21
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/readelf.s-6423
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/readelf.ss18
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/readelf.ss-6413
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/readelf.ss-mips15
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/readelf.ss-tmips15
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/readelf.wa27
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/size.exp82
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/strip-1.d11
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/strip-10.d8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/strip-2.d18
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/strip-3.d11
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/strip-4.d11
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/strip-5.d18
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/strip-6.d11
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/strip-7.d18
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/strip-8.d11
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/strip-9.d18
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/testprog.c31
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/testranges-ia64.d15
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/testranges-ia64.s57
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/testranges.d15
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/testranges.s61
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/unique.s4
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/unknown.s4
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/vax/entrymask.s11
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/vax/objdump.exp64
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/version.def17
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/version.s1
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/MSG00001.binbin0 -> 112 bytes
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/README33
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/bmp1.bmpbin0 -> 122 bytes
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/bmpalign.rc9
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/bmpalign.rsd38
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/capstyle.rc5
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/capstyle.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/checkbox.rc5
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/checkbox.rsd12
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/combobox.rc8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/combobox.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/deflang.rc4
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/deflang.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/dialog0.rc4
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/dialog0.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/dialog1.rc5
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/dialog1.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/dialogid.rc9
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/dialogid.rsd18
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/dialogsignature.rc5
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/dialogsignature.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/dlgfont.rc29
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/dlgfont.rsd39
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/edittext.rc4
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/edittext.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/escapea.rc7
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/escapea.rsd7
-rwxr-xr-xbinutils-2.24/binutils/testsuite/binutils-all/windres/escapex-2.rc5
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/escapex-2.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/escapex.rc4
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/escapex.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/html.rc6
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/html.rsd45
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/html1.hm11
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/html2.hm11
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/lang.rc15
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/lang.rsd10
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/listbox.rc4
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/listbox.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/messagetable.rc5
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/messagetable.rsd15
-rwxr-xr-xbinutils-2.24/binutils/testsuite/binutils-all/windres/msupdate40
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/nocaption.rc4
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/nocaption.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/printstyle.rc6
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/printstyle.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/quoteclass.rc8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/scrollbar.rc4
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/scrollbar.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/strtab1.rc8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/strtab1.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/strtab2.rc8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/strtab2.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/strtab3.rc14
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/strtab3.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/strtab4.rc10
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/strtab4.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/sublang.rc5
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/sublang.rsd8
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/version.rc32
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/version.rsd51
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/version_cat.rc32
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/version_cat.rsd55
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/version_mlang.rc43
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/version_mlang.rsd87
-rwxr-xr-xbinutils-2.24/binutils/testsuite/binutils-all/windres/version_small.rc32
-rwxr-xr-xbinutils-2.24/binutils/testsuite/binutils-all/windres/version_small.rsd51
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/windres/windres.exp141
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1.s142
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1a.d157
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1b.d18
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1c.d18
-rw-r--r--binutils-2.24/binutils/testsuite/binutils-all/x86-64/x86-64.exp34
-rw-r--r--binutils-2.24/binutils/testsuite/config/default.exp135
-rw-r--r--binutils-2.24/binutils/testsuite/config/hppa.sed4
-rw-r--r--binutils-2.24/binutils/testsuite/lib/binutils-common.exp342
-rw-r--r--binutils-2.24/binutils/testsuite/lib/utils-lib.exp558
-rw-r--r--binutils-2.24/binutils/unwind-ia64.c1086
-rw-r--r--binutils-2.24/binutils/unwind-ia64.h32
-rw-r--r--binutils-2.24/binutils/version.c42
-rw-r--r--binutils-2.24/binutils/windint.h1098
-rw-r--r--binutils-2.24/binutils/windmc.c1172
-rw-r--r--binutils-2.24/binutils/windmc.h99
-rw-r--r--binutils-2.24/binutils/windres.c1406
-rw-r--r--binutils-2.24/binutils/windres.h123
-rw-r--r--binutils-2.24/binutils/winduni.c905
-rw-r--r--binutils-2.24/binutils/winduni.h140
-rw-r--r--binutils-2.24/binutils/wrstabs.c2272
385 files changed, 336811 insertions, 0 deletions
diff --git a/binutils-2.24/binutils/BRANCHES b/binutils-2.24/binutils/BRANCHES
new file mode 100644
index 00000000..f9e141a7
--- /dev/null
+++ b/binutils-2.24/binutils/BRANCHES
@@ -0,0 +1,48 @@
+Please keep the following tables alphabetical.
+
+Organization Tag Organization Name
+---------------- -----------------
+csl CodeSourcery, LLC
+
+This table lists branches created by particular organizations. Please
+include the branch name, and a description of the branch. The branch
+description should name the owner of the branch (i.e., the person to
+contact regarding the branch) and a description of the commit policy
+for the branch (e.g., "no commits without permission of X or Y").
+
+Organization Branches Description
+--------------------- -----------
+binutils-csl-arm-2005q1-branch
+ CodeSourcery toolchain release branches.
+ Please do not commit to these branches without
+ permission from a CodeSourcery developer.
+
+binutils-csl-gxxpro-3_4-branch
+binutils-csl-2_17-branch
+ CodeSourcery branded GNU Toolchain release branches.
+ Please do not commit to this branch without
+ permission from a CodeSourcery developer.
+
+Release Branches
+----------------
+binutils-2_10-branch
+binutils-2_11-branch
+binutils-2_12-branch
+binutils-2_13-branch
+binutils-2_14-branch
+binutils-2_15-branch
+binutils-2_16-branch
+binutils-2_17-branch
+binutils-2_18-branch
+binutils-2_19-branch
+binutils-2_20-branch
+binutils-2_21-branch
+binutils-2_22-branch
+binutils-2_23-branch
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+binutils-2_24-branch
diff --git a/binutils-2.24/binutils/ChangeLog b/binutils-2.24/binutils/ChangeLog
new file mode 100644
index 00000000..f9014b51
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog
@@ -0,0 +1,585 @@
+2013-11-22 Cory Fields <cory@coryfields.com>
+
+ * windres.c (define_resource): Use zero for timestamp, making
+ output deterministic. time.h include is no longer needed.
+ * resres.c (res_append_resource): Likewise.
+
+2013-11-15 Alan Modra <amodra@gmail.com>
+
+ Apply changes from mainline to 2.24
+ 2013-10-30 Alan Modra <amodra@gmail.com>
+ * readelf.c (get_ppc_dynamic_type): Replace PPC_TLSOPT with PPC_OPT.
+ (get_ppc64_dynamic_type): Replace PPC64_TLSOPT with PPC64_OPT.
+
+ 2013-10-30 Ulrich Weigand <uweigand@de.ibm.com>
+ * readelf.c (get_ppc64_symbol_other): New function.
+ (get_symbol_other): Use it for EM_PPC64.
+
+ 2013-10-30 Alan Modra <amodra@gmail.com>
+ * readelf.c (get_machine_flags): Display ABI version for EM_PPC64.
+
+2013-11-07 Roland McGrath <mcgrathr@google.com>
+
+ * objdump.c (dump_dwarf): Grok bfd_mach_x86_64_nacl and
+ bfd_mach_x64_32_nacl as equivalent to bfd_mach_x86_64.
+
+2013-10-31 Nick Clifton <nickc@redhat.com>
+
+ * nm.c (display_rel_file): Treat bfd_error_no_symbols as
+ non-fatal.
+
+2013-10-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ * dwarf.c (display_debug_frames): Pass offset_size to
+ print_dwarf_vma for cie_id.
+
+2013-10-11 Roland McGrath <mcgrathr@google.com>
+
+ * winduni.c (languages): Use \345 (octal syntax) rather than
+ literal non-ASCII/non-UTF8 character in string literal.
+
+2013-10-11 Roland McGrath <mcgrathr@google.com>
+
+ * readelf.c (print_dynamic_symbol): Use array subscript syntax
+ rather than addition syntax with string literal.
+
+2013-10-09 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (add64): New function.
+ (read_and_display_attr_value): Add CU offset in to the value
+ displayed for a DW_AT_ref8 attribute.
+
+2013-09-20 Alan Modra <amodra@gmail.com>
+
+ * configure: Regenerate.
+
+2013-09-18 Tristan Gingold <gingold@adacore.com>
+
+ * NEWS: Add marker for 2.24.
+
+2013-09-18 Tristan Gingold <gingold@adacore.com>
+
+ * Makefile.am (LEXLIB): Define. Replase references to @LEXLIB@
+ by $(LEXLIB).
+ * Makefile.in: Regenerate.
+
+2013-09-17 Doug Gilmore <Doug.Gilmore@imgtec.com>
+
+ * readelf.c (get_machine_flags): Handle EF_MIPS_FP64.
+
+2013-09-12 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (dwarf_vmatoa): Rename to dwarf_vmatoa_1 and add a
+ precision parameter.
+ (dwarf_vmatoa): New wrapper for dwarf_vmatoa_1.
+ (print_dwarf_vma): Use dwarf_vmatoa_1.
+ (SAFE_BYTE_GET): Add check that VAL is big enough to contain
+ AMOUNT bytes.
+ (process_debug_info): Use an unsigned int for the offset size.
+ (process_debug_pubnames): Likewise.
+ (display_debug_aranges): Likewise.
+ (struct Frame_Chunk): Use dwarf_vma type for pc_begin and pc_range
+ fields.
+ (frame_display_row): Use print_dwarf_vma to display dwarf_vma
+ values.
+ (display_debug_frames): Likewise.
+
+2013-09-10 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (display_debug_frames): Check for DW64_CIE_ID when
+ parsing 64-bit frames.
+
+2013-08-27 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/15796
+ * ar.c (map_over_members): Correctly handle multiple same-name
+ entries on the command line and in the archive.
+
+2013-08-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ * doc/binutils.texi: Remove the extra space.
+
+2013-08-23 Mikael Pettersson <mikpe@it.uu.se>
+
+ PR binutils/15779
+ * doc/binutils.texi (ranlib -D): Correct description.
+ PR binutils/15777
+ (nm --special-syms): Fix typo.
+
+2013-08-23 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/15798
+ * doc/binutils.texi (ar cmdline): Update description of 'q'
+ command.
+
+ PR binutils/14136
+ (nm): Add description of 'I' symbol type.
+
+2013-08-23 Yuri Chornoivan <yurchor@ukr.net>
+
+ PR binutils/15834
+ * od-xcoff.c: Fix typos.
+
+2013-08-19 Tristan Gingold <gingold@adacore.com>
+
+ * nm.c (print_size_symbols): Directly get symbol size.
+
+2013-08-12 Andreas Schwab <schwab@suse.de>
+
+ PR binutils/15818
+ * objdump.c (disassemble_section): Return early if nothing from
+ this section needs to be disassembled.
+
+2013-08-09 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (get_machine_flags): Handle RL78 G10 flag.
+
+2013-07-26 Sergey Guriev <sergey.s.guriev@intel.com>
+ Alexander Ivchenko <alexander.ivchenko@intel.com>
+ Maxim Kuznetsov <maxim.kuznetsov@intel.com>
+ Sergey Lega <sergey.s.lega@intel.com>
+ Anna Tikhonova <anna.tikhonova@intel.com>
+ Ilya Tocar <ilya.tocar@intel.com>
+ Andrey Turetskiy <andrey.turetskiy@intel.com>
+ Ilya Verbin <ilya.verbin@intel.com>
+ Kirill Yukhin <kirill.yukhin@intel.com>
+ Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * dwarf.c (dwarf_regnames_i386): Add k0-k7 registers and
+ numeration in comments.
+ (dwarf_regnames_x86_64): Add xmm16-31 and k0-k7 registers to
+ dwarf table.
+
+2013-07-19 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/15745
+ * readelf.c (get_unwind_section_word): Whilst searching for a
+ reloc section associated with an unwind section, check the type as
+ well as the section number.
+
+2013-07-18 Jim Thomas <thomas@cfht.hawaii.edu>
+
+ * ar.c (usage): Fix C conformance issue.
+
+2013-07-18 Nick Clifton <nickc@redhat.com>
+
+ * doc/binutils.texi (nm, objdump): Remove bogus links to STABS
+ documentation.
+
+ * readelf.c (process_unwind): Do not return the result of a void
+ function.
+
+2013-07-15 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * readelf.c (display_mips_gnu_attribute): Replace hardcoded magic
+ numbers with enum values.
+
+2013-07-12 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * readelf.c (get_machine_flags): Handle EF_MIPS_NAN2008.
+
+2013-07-10 Tristan Gingold <gingold@adacore.com>
+
+ * od-xcoff.c (OPT_LDINFO): Define.
+ (options): Add ldinfo.
+ (xcoff_help): Mention ldinfo.
+ (xcoff_dump): Rename to ...
+ (xcoff_dump_obj): ... this. Add a break.
+ (dump_dumpx_core): New function.
+ (xcoff_dump_core): Likewise.
+ (xcoff_dump): Likewise.
+ * doc/binutils.texi (objdump): Mention ldinfo.
+
+2013-07-09 Tristan Gingold <gingold@adacore.com>
+
+ * configure.com: Add new defines to match changes in configure.
+
+2013-05-28 Cary Coutant <ccoutant@google.com>
+
+ * dwarf.c (display_debug_lines_raw): Print section offsets.
+
+2013-05-15 Cary Coutant <ccoutant@google.com>
+
+ * dwarf.c (SAFE_BYTE_GET64): Correct end-of-buffer check;
+ don't increment PTR.
+ (decode_location_expression): DW_OP_const2u should read 2 bytes.
+ (display_debug_lines_decoded): Adjust formatting.
+ * elfcomm.c (byte_get_little_endian): Add cases for 5-, 6-, and
+ 7-byte reads.
+ (byte_get_big_endian): Likewise.
+ (byte_get_signed): Likewise.
+
+2013-05-09 Andrew Pinski <apinski@cavium.com>
+
+ * doc/binutils.texi: Document -Mvirt disassembler option.
+
+2013-05-02 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c: Add support for MSP430X architecture.
+
+2013-05-02 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (display_debug_lines_raw): Do not treat .debug_line.dwo
+ sections as if they were fragmentary .debug_line sections.
+ (display_debug_lines_decoded): Likewise.
+
+2013-04-29 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (read_debug_line_header): New function. Reads in a
+ header in a .debug_line section.
+ (display_debug_lines_raw): Use new function. Handle fragmentary
+ .debug_line sections.
+ (display_debug_lines_decoded): Likewise.
+ * readelf.c (process_section_headers): Handle fragmenatry
+ .debug_line sections.
+ (display_debug_section): Likewise.
+
+2013-04-26 Ian Lance Taylor <iant@google.com>
+
+ * MAINTAINERS: Add myself and Cary as gold maintainers.
+
+2013-04-08 Tom Tromey <tromey@redhat.com>
+
+ * dwarf.c (process_debug_info): Check dwarf_cutoff_level.
+
+2013-04-08 Tom Tromey <tromey@redhat.com>
+
+ * dwarf-mode.el: Bump version number.
+ (dwarf-mode): Remove autoload.
+ (dwarf-die-reference): Relax regexp.
+
+2013-04-05 Alan Modra <amodra@gmail.com>
+
+ PR binutils/15324
+ * configure.in: Add strnlen to AC_CHECK_DECLS, sort.
+ * dwarf.c (strnlen): Provide fallback decl.
+ * config.in: Regnerate.
+ * configure: Regenerate.
+
+2013-03-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ * dwarf.c (process_debug_info): Increment hdrptr by 8 after
+ SAFE_BYTE_GET64.
+
+2013-03-27 Phil Krylov <phil.krylov@gmail.com>
+
+ PR binutils/13409
+ * winduni.c (codepages[]): Use UTF-16LE.
+ (wind_MultiByteToWideChar): Likewise.
+ (wind_WideCharToMultiByte): Likewise.
+
+2013-03-27 Alan Modra <amodra@gmail.com>
+
+ PR binutils/15206
+ * dwarf.c (read_and_display_attr_value): Cast format '*' arg to int.
+
+2013-03-26 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/15206
+ * dwarf.c (SAFE_BYTE_GET): New macro - checks remaining buffer
+ space before calling byte_get.
+ (SAFE_BYTE_GET_AND_INC): New macro.
+ (SAFE_SIGNED_BYTE_GET): New macro.
+ (SAFE_SIGNED_BYTE_GET_AND_INC): New macro.
+ (SAFE_BYTE_GET64): New macro.
+ (process_extened_line_op): Use new macros. Use strnlen when
+ appropriate.
+ (fetch_indirect_string): Likewise.
+ (get_FORM_name): Likewise.
+ (decode_location_expression): Likewise.
+ (read_and_display_attr_value): Likewise.
+ (process_debug_info): Likewise.
+ (display_debug_lines_raw): Likewise.
+ (display_debug_lines_decoded): Likewise.
+ (display_debug_pubnames): Likewise.
+ (display_debug_macinfo): Likewise.
+ (get_line_filename_and_dirname): Likewise.
+ (display_debug_macro): Likewise.
+ (display_loc_list): Likewise.
+ (display_loc_list_dwo): Likewise.
+ (display_debug_aranges): Likewise.
+ (display_debug_ranges): Likewise.
+ (frame_display_row): Likewise.
+ (display_debug_frames): Likewise.
+
+2013-03-25 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/15202
+ * dwarf.c (read_leb128): Add END parameter. Do not read at or
+ beyond end.
+ (read_sleb128): Add END parameter.
+ (read_uleb128): New function.
+ (process_extended_line_op): Pass END to leb128 functions.
+ (process_abbrev_section): Likewise.
+ (decode_location_expression): Likewise.
+ (read_and_display_attr_value): Likewise.
+ (read_and_display_attr): Likewise.
+ (process_debug_info): Likewise.
+ (display_debug_lines_raw): Likewise.
+ (display_debug_lines_decoded): Likewise.
+ (display_debug_macinfo): Likewise.
+ (get_line_filename_and_dirname): Likewise.
+ (display_debug_macro): Likewise.
+ (display_loc_list_dwo): Likewise.
+ (display_debug_ranges): Likewise.
+ * dwarf.h (read_leb128): Update prototype.
+ * readelf.c (read_uleb128): Add END parameter.
+ (decode_arm_unwind_bytecode): Pass END to read_uleb128.
+ (decode_tic6x_unwind_bytecode): Likewise.
+ (display_tag_value): New function.
+ (display_arm_attribute): Add END parameter. Pass END to
+ read_uleb128. Use display_tag_value.
+ (display_gnu_attribute): Likewise.
+ (display_power_gnu_attribute): Likewise.
+ (display_sparc_gnu_attribute): Likewise.
+ (display_mips_gnu_attribute): Likewise.
+ (display_tic6x_attribute): Likewise.
+ (process_attributes): Likewise.
+ (display_raw_attribute): New function.
+
+2013-03-22 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/15201
+ * dwarf.c (display_debug_ranges): Add checks for reading beyond
+ the end of the section.
+
+ PR binutils/15157
+ * readelf.c (apply_relocations): Catch relocations with negative
+ offsets.
+
+2013-03-15 Nick Clifton <nickc@redhat.com>
+
+ * addr2line.c (slurp_symtab): If canonicalization reveals that
+ there were no ordinary symbols, try loading the dynamic symbols
+ instead.
+
+2013-03-14 Markos Chandras <markos.chandras@imgtec.com>
+
+ * MAINTAINERS: Add myself as Meta maintainer.
+
+2013-03-08 Andreas Arnez <arnez@linux.vnet.ibm.com>
+
+ * readelf.c (get_note_type): Add NT_S390_TDB.
+
+2013-03-07 Alan Modra <amodra@gmail.com>
+
+ * strings.c (get_char): Dispense with buf[]. Instead shift
+ chars into big-endian value and byte-swap later if
+ little-endian. Don't EOF check value read from object.
+
+2013-03-05 Corinna Vinschen <vinschen@redhat.com>
+
+ * configure.in: Build DLL tools on x86_64-*-cygwin* as well.
+ * configure: Regenerate.
+
+2013-03-04 Nick Clifton <nickc@redhat.com>
+
+ * elfcomm.c (error): Flush stdout before emitting the error
+ message.
+ (warn): Likewise.
+
+2013-03-01 Cary Coutant <ccoutant@google.com>
+
+ * dwarf.c (cu_tu_indexes_read, shndx_pool, shndx_pool_size)
+ (shndx_pool_used): Move to top of file.
+ (struct cu_tu_set): New type.
+ (cu_count, tu_count, cu_sets, tu_sets): New file scope variables.
+ (fetch_indexed_string): Add "this_set" parameter. Update all callers.
+ (find_cu_tu_set_v2): New function.
+ (read_and_display_attr_value): Add "this_set" parameter.
+ (read_and_display_attr): Likewise.
+ (process_debug_info): Track base offsets for DWARF package files.
+ (load_debug_info): Call load_cu_tu_indexes.
+ (get_DW_SECT_short_name): New function.
+ (process_cu_tu_index): Add support for version 2 DWARF package files.
+
+2013-02-27 Alan Modra <amodra@gmail.com>
+
+ PR binutils/15191
+ * readelf.c (offsetof): Define.
+ (CHECK_ENTSIZE_VALUES): Remove extraneous indefinite article.
+ (process_corefile_note_segment): Allow notes without name or
+ desc. Combine out-of-range checks. Disallow "negative"
+ notesz or descsz.
+
+2013-02-26 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/15191
+ * readelf.c (process_corefile_note_segment): Prevent attempts to
+ read beyond the end of the note buffer.
+
+2013-02-15 Kai Tietz <ktietz@redhat.com>
+
+ * objcopy.c (copy_main): Initialize context variable.
+
+2013-02-15 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/15140
+ * ar.c (open_inarch): Fail on attempts to convert a normal archive
+ to a thin archive or vice versa.
+ * elfcomm.c (make_qualified_name): Handle corrupted thin
+ archives.
+ * readelf.c (process_archive): Likewise.
+ * doc/binutils.texi: Clarify documentation describing thin
+ archives.
+
+2013-02-15 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/15033
+ * objcopy.c (enum change_action): Delete.
+ (struct section_list): Delete remove, copy, change_vma, change_lma
+ and set_flags fields. Add context field.
+ (find_section_list): Add a context parameter. Add support for
+ wildcard characters in section names.
+ (is_strip_section): Check for sections being both copied and
+ removed.
+ (copy_object): Pass context to find_section_list.
+ (setup_section): Likewise.
+ (copy_section): Likewise.
+ (copy_main): Likewise.
+ * doc/binutils: Document the new behaviour.
+ * NEWS: Mention the new feature
+
+2013-02-14 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/15125
+ * objcopy.c (copy_object): Provide a helpful warning message when
+ adding a gnu_debuglink section to an object which already contains
+ one.
+
+2013-02-07 Nick Clifton <nickc@redhat.com>
+
+ * elfcomm.c (get_archive_member_name): Prevent seg-fault if a
+ corrupt archive uses long names but has no long name table.
+
+2013-02-06 Sandra Loosemore <sandra@codesourcery.com>
+ Andrew Jenner <andrew@codesourcery.com>
+
+ Based on patches from Altera Corporation.
+
+ * readelf.c: Include elf/nios2.h.
+ (dump_relocations): Add case for EM_ALTERA_NIOS2.
+ (get_nios2_dynamic_type): New.
+ (get_dynamic_type): Add case for EM_ALTERA_NIOS2.
+ (is_32bit_abs_reloc): Fix EM_ALTERA_NIOS2 case.
+ (is_16bit_abs_reloc): Likewise.
+ (is_none_reloc): Add EM_ALTERA_NIOS2 and EM_NIOS32 cases.
+ * NEWS: Note Altera Nios II support.
+ * MAINTAINERS: Add Nios II maintainers.
+
+2013-01-29 Xi Wang <xi.wang@gmail.com>
+
+ * readelf.c (process_version_sections): Fix overflow checks to
+ avoid undefined behaviour.
+
+2013-01-28 Doug Evans <dje@google.com>
+
+ * dwarf.c (display_gdb_index): Handle .gdb_index version 8.
+
+2013-01-28 Robert Schiele <rschiele@gmail.com>
+
+ * objcopy.c (parse_flags): Add merge and strings section flags.
+
+2013-01-25 Cary Coutant <ccoutant@google.com>
+
+ * dwarf.c (display_loc_list): Update offset for each line
+ printed.
+ (print_addr_index): New function.
+ (display_loc_list_dwo): Update offset for each line printed.
+ Fix problems displaying loclists in .dwo files. Add support
+ for type 4 entries.
+ (display_debug_loc): Remove custom header for .dwo files.
+ (display_debug_addr): Adjust formatting.
+
+2013-01-25 Marco Atzeri <marco.atzeri@gmail.com>
+
+ * objcopy.c : Enable long section names for OPTION_ADD_GNU_DEBUGLINK.
+
+2013-01-24 Doug Evans <dje@google.com>
+
+ * dwarf.c (display_debug_addr): Add missing parentheses to expression.
+
+2013-01-24 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (get_machine_flags): Decode E_V850E3V5_ARCH.
+
+2013-01-23 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * readelf.c: Add strings for NT_S390_LAST_BREAK and
+ NT_S390_SYSTEM_CALL.
+
+2013-01-18 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/15026
+ * addr2line.c (translate_addresses): When pretty printing, print
+ unknown function names on the same line as unknown symbol names.
+
+2013-01-17 Nickolai Zeldovich <nickolai@csail.mit.edu>
+
+ * objdump.c (dump_target_specific): Fix NULL pointer test.
+
+2013-01-16 Alan Modra <amodra@gmail.com>
+
+ PR binutils/15018
+ * stabs.c (parse_stab_members): Always set physname here to avoid
+ gcc warning..
+ (parse_stab_argtypes): ..and don't duplicate the init here.
+
+2013-01-10 Will Newton <will.newton@imgtec.com>
+
+ * binutils/readelf.c: (guess_is_rela): Add EM_METAG.
+ (dump_relocations): Add EM_METAG.
+ (get_machine_name): Correct case for Meta.
+ (is_32bit_abs_reloc): Add support for Meta ADDR32 reloc.
+ (is_none_reloc): Add support for Meta NONE reloc.
+
+2013-01-08 Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * readelf.c (get_note_type): Handle NT_ARM_TLS, NT_ARM_HW_BREAK
+ and NT_ARM_HW_WATCH.
+
+2013-01-07 Roland McGrath <mcgrathr@google.com>
+
+ * objcopy.c (deterministic): Make int rather than bfd_boolean,
+ initialize to -1.
+ (strip_options, copy_options): Add -U/--disable-deterministic-archives.
+ (default_deterministic): New function.
+ (strip_main, copy_main): Handle -U. Call default_deterministic.
+ (copy_usage, strip_usage): Describe -U. Cite whether -D or -U is
+ the default based on DEFAULT_AR_DETERMINISTIC.
+ * doc/binutils.texi (objcopy, strip): Describe -U and effect of
+ configure options on -D.
+
+ * ar.c (default_deterministic): Comment fix.
+
+2013-01-07 Patrice Dumas <pertusus@free.fr>
+
+ * doc/binutils.texi: Fix ordering of top level nodes.
+ Replace erroneous uses of @itemx with @item.
+
+2013-01-04 Andreas Schwab <schwab@linux-m68k.org>
+
+ * doc/binutils.texi (elfedit): Fix use of @itemx in @table.
+
+2013-01-03 Marcus Shawcroft <marcus.shawcroft@arm.com>
+
+ * MAINTAINERS: Add myself as AArch64 co-maintainer.
+
+2013-01-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * version.c (print_version): Update copyright year to 2013.
+
+For older changes see ChangeLog-2012
+
+Copyright (C) 2013 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-0001 b/binutils-2.24/binutils/ChangeLog-0001
new file mode 100644
index 00000000..f8b0f7e9
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-0001
@@ -0,0 +1,2066 @@
+2001-12-20 Julian v. Bock <julian@wongr.net>
+
+ * readelf.c (print_symbol): New function: Print a formatted symbol
+ name. If --wide is specified do not truncate it.
+ (dump_relocations): Use print_symbol() to print symbol names.
+ (process_symbol_table): Likewise.
+ (process_syminfo): Likewise.
+ (process_mips_specific): Likewise.
+ (usage): Document new feature of --wide switch.
+ * doc/binutils.texi (objdump): Document additional behaviour of
+ --wide.
+
+2001-12-18 Michael Snyder <msnyder@redhat.com>
+
+ * objcopy.c (copy_file): Accept corefiles (format bfd_core).
+ (copy_object): Don't set the start address or flags of a core file.
+ (copy_section): Don't relocate a core file. Don't copy contents
+ if the input section has the contents flag set, but the output
+ section does not (which happens with the fake 'note' pseudo-
+ sections that BFD creates for corefiles).
+
+2001-12-18 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * readelf.c (get_machine_flags): Recognize header flags for ABI and
+ ASE extensions. More robust code for ISA checking. Ignore empty fields
+ in header flags for GNU extensions.
+
+2001-12-18 Alan Modra <amodra@bigpond.net.au>
+
+ * objcopy.c (copy_archive): Set output bfd format outside the loop.
+
+2001-12-18 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * po/ja.po: Import from translation project.
+ * configure.in (ALL_LINGUAS): Add ja.
+ * configure: Regenerate.
+
+2001-12-18 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * addr2line.c (main): Protoype.
+ * ar.c (main): Protoype.
+ * nm.c (main): Protoype.
+ * objcopy.c (main): Protoype.
+ * objdump.c (main): Protoype.
+ * size.c (main): Protoype.
+ * strings.c (main): Protoype.
+
+2001-12-17 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (symtab_shndx_hdr): New global.
+ (SECTION_HEADER_INDEX): Define.
+ (SECTION_HEADER_NUM): Define.
+ (SECTION_HEADER): Define.
+ (GET_ELF_SYMBOLS): Pass two params rather than three.
+ (get_32bit_elf_symbols): Take file and section args. Read and
+ use SHT_SYMTAB_SHNDX.
+ (get_64bit_elf_symbols): Likewise.
+ (dump_relocations): Use SECTION_HEADER to index "section_headers".
+ (process_section_headers): Likewise. Use SECTION_HEADER_NUM too.
+ Remember symtab_shdx_hdr.
+ (process_program_headers): Scan from index 1 for segment map.
+ (slurp_ia64_unwind_table): Use SECTION_HEADER to index
+ "section_headers".
+ (process_relocs): Likewise. Also adjust call to GET_ELF_SYMBOLS.
+ (process_unwind): Likewise.
+ (process_version_sections): Likewise.
+ (process_symbol_table): Likewise.
+ (display_debug_info): Likewise.
+ (process_dynamic_segment): Fake up a symtab section for changed
+ GET_ELF_SYMBOLS.
+ (get_symbol_index_type): Check SHN_LOOS before SHN_LORESERVE.
+ (process_program_headers): Kill signed/unsigned warning.
+ (load_debug_str): Likewise.
+ (display_debug_info): Likewise.
+
+2001-12-13 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (get_segment_type): Support PT_GNU_EH_FRAME.
+
+2001-12-11 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (process_file_header): Print extended e_shnum and
+ e_shdtrndx values. Set elf_header values for same.
+ (get_32bit_section_headers): Add "num" arg to read "num" headers.
+ (get_64bit_section_headers): Likewise.
+ (process_section_headers): Update calls.
+ (get_file_header): Call get_32bit_section_headers or 64bit variant.
+
+2001-12-10 Jakub Jelinek <jakub@redhat.com>
+
+ * objcopy.c (setup_section): Copy entsize.
+
+2001-12-07 Geoffrey Keating <geoffk@redhat.com>
+
+ * readelf.c (guess_is_rela): Add support for stormy16.
+ (dump_relocations): Likewise.
+ (get_machine_name): Likewise.
+
+2001-12-05 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * dllwrap.c (main) Replace multiple strings describing a
+ single error with a single, newline escaped sentence to permit
+ better translation into foreign languages.
+
+ * readelf.c (get_elf_class): Remove internalionalisation of ELF
+ class names.
+
+2001-12-04 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * strings.c (get_char): Initialize value.
+
+2001-12-04 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * arlex.l: Silence compile warnings.
+ * arsup.h: Likewise. Fix formatting.
+
+2001-12-04 Jakub Jelinek <jakub@redhat.com>
+
+ * strings.c: Include config.h before bfd.h.
+ (file_off): New type.
+ (file_open): Define.
+ (print_strings): Use file_off instead of file_ptr. Print addresses
+ which don't fit into long correctly.
+ (get_char): Use file_off instead of file_ptr. Use getc_unlocked if
+ available.
+ (strings_file): Use file_off instead of file_ptr. Use file_open.
+ * configure.in: Check for getc_unlocked.
+ Check for fopen64 and whether _LARGEFILE64_SOURCE needs to
+ be defined for it.
+ * configure: Rebuilt.
+ * config.h.in: Rebuilt.
+
+2001-11-29 H.J. Lu <hjl@gnu.org>
+
+ * bucomm.c (make_tempname): Revert the changes made on
+ 2001-11-14 and 2001-11-12. They won't work with directories.
+
+2001-11-23 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * binutils/Makefile.am (check-DEJAGNU): Pass CC_FOR_TARGET and
+ CFLAGS_FOR_TARGET to runtest in environment.
+ * Makefile.in: Rebuild.
+ * doc/Makefile.in: Rebuild.
+
+2001-11-28 Mike Stump <mrs@wrs.com>
+
+ * objcopy.c (setup_section): Preserve SEC_RELOC when
+ --set-section-flags is used.
+
+2001-11-19 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * readelf.c (do_debug_str): New variable.
+ (display_debug_str): New function: Display the contents of a
+ .debug_str section.
+ (load_debug_str): New function: Load in the contents of a
+ .debug_str section.
+ (free_debug_str): New function: Free the memory used by
+ load_debug_str().
+ (fetch_indirect_string): Retrieve a string from the .debug_str
+ section.
+ (usage): Add -ws.
+ (parse_args): Accept -ws.
+ (process_section_headers): Allow the display of the .debug_str
+ section.
+ (read_and_display_attr_value): Use fetch_indirect_string. Show
+ offset into .debug_str section.
+ (display_debug_info): Use load_debug_str and free_debug_str.
+ (debug_displays): Add .debug_str.
+ * doc/binutils.texi: Document -ws.
+
+2001-11-19 Andreas Jaeger <aj@suse.de>
+
+ * testsuite/binutils-all/objdump.exp: Add x86-64.
+
+2001-11-15 Andreas Schwab <schwab@suse.de>
+
+ * readelf.c: Fix warnings without terminating newline.
+
+2001-11-15 Alan Modra <amodra@bigpond.net.au>
+
+ * doc/binutils.texi (objdump): Document ppc -M options.
+
+2001-11-14 Andreas Jaeger <aj@suse.de>
+
+ * doc/binutils.texi (objdump): Fix description to use x86-64.
+
+2001-11-14 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * bucomm.c (make_tempname): Use mkstemps instead of mkstemp, since
+ not all systems provide mkstemp.
+
+2001-11-14 Alan Modra <amodra@bigpond.net.au>
+
+ * doc/binutils.texi (objdump): Document x86 -M options.
+
+2001-11-13 Keith Walker <keith.walker@arm.com>
+
+ * readelf.c (read_and_display_attr_value): New function to
+ handle DW_FORM_indirect.
+ (read_and_display_attr): Use it.
+
+2001-11-13 Geoffrey Keating <geoffk@redhat.com>
+
+ * readelf.c (display_debug_lines): Deal with unknown standard
+ opcodes. Handle DW_LNS_set_prologue_end, DW_LNS_set_epilogue_begin,
+ DW_LNS_set_isa.
+
+2001-11-13 Timothy Wall <twall@alum.mit.edu>
+
+ * MAINTAINERS: Add self as tic54x maintainer. This target
+ includes the IBM C54XDSP clone.
+
+2001-11-12 * Steven J. Hill <sjhill@realitydiluted.com>
+
+ * bucomm.c (make_tempname): Use mkstemp in place of mktemp.
+
+2001-11-09 Jeffrey A Law (law@cygnus.com)
+
+ * unwind-ia64.c (unw_print_brmask): Fix ISO C portability glitch.
+ (unw_print_grmask, unw_print_frmask, unw_print_abreg): Likewise.
+ (unw_print_xyreg, unw_decode_x1, unw_decode_x2): Likewise.
+ (unw_decode_x3, unw_decode_r1, unw_decode_r2): Likewise.
+ (unw_decode_r3, unw_decode_p1, unw_decode_p2_p5): Likewise.
+ (unw_decode_p6, unw_decode_p7_p10, unw_decode_b1): Likewise.
+ (unw_decode_b2, unw_decode_b3_b4): Likewise.
+
+ * readelf.c (get_elf_class): Fix ISO portability glitch.
+ (get_data_encoding, get_osabi_name, request_dump): Likewise.
+
+2001-11-07 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (debug_str, debug_str_size): New.
+ (display_debug_abbrev): If no abbrevs were read, skip the CU.
+ Call free_abbrevs.
+ (read_and_display_addr): Handle DW_FORM_strp.
+ (display_debug_info): Read .debug_str section if present,
+ so that DW_FORM_strp can be handled.
+ Fix test for non-existant .debug_abbrev section.
+
+2001-11-05 Jakub Jelinek <jakub@redhat.com>
+
+ * arlex.l: Accept `\' in filenames. Patch by <earl_chew@agilent.com>.
+
+ * arsup.c (ar_open): Prepend tmp- to basename, not whole path.
+
+2001-11-05 Martin Schwidefsky <schwidefsky@de.ibm.com>
+
+ * MAINTAINERS: Add self as s390/s390x maintainer.
+
+2001-11-02 Tom Rix <trix@bluey.cygnus.com>
+
+ * MAINTAINERS: Add self as PPC XCOFF maintainer.
+
+2001-11-02 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * configure.in (ALL_LINGUAS): Add "fr" and "tr".
+ * configure: Regernate.
+ * po/fr.po: New file.
+ * po/tr.po: New file.
+
+2001-10-30 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * MAINTAINERS: Add self as MMIX port maintainer.
+ * readelf.c: Include elf/mmix.h.
+ (guess_is_rela): MMIX is RELA.
+ (dump_relocations): Handle MMIX relocations.
+ * Makefile.am: Regenerate dependencies.
+ * Makefile.in: Regenerate.
+
+2001-10-13 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * readelf.c (parse_args): Handle multiple options to the -w
+ switch.
+
+2001-10-12 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (get_section_type_name): Don't print SHT_ prefix for
+ LOPROC, LOOS and LOUSER.
+
+2001-10-11 J"orn Rennecke <amylaar@onetel.net.uk>
+
+ * MAINTAINERS: Update my email address.
+
+2001-10-03 Alan Modra <amodra@bigpond.net.au>
+
+ * doc/Makefile.in: Regenerate.
+ * configure: Regenerate.
+
+2001-10-02 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * readelf.c (display_debug_line, display_debug_pubnames,
+ display_debug_info, display_debug_frames): Detect and warn
+ about 64-bit format entries.
+ (display_debug_aranges): Reword 64-bit warning.
+ (debug_displays): Add .debug_pubtypes as a known, but not yet
+ supported, debug section.
+
+2001-10-02 Alan Modra <amodra@bigpond.net.au>
+
+ * coffdump.c (PROGRAM_VERSION): Delete.
+ (main <'V'>): Call print_version.
+ * srconv.c: Likewise.
+ * sysdump.c: Likewise.
+ * version.c (program_version): Remove.
+ (print_version): Use BFD_VERSION_STRING. Just print the current
+ year in copyright message.
+ * addr2line.c (program_version): Remove unused declaration.
+ * objdump.c (display_target_tables): Use BFD_VERSION_STRING in
+ place of BFD_VERSION.
+ * Makefile.am (Makefile): Depend on bfd/configure.in.
+ (cplus-dem.o): Depend on Makefile.
+ Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2001-10-01 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * readelf.c (display_debug_aranges): Detect and warn about DWARF64
+ format .debug_arange sections.
+ (main): Add missing prototype.
+
+2001-09-30 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * Makefile.am: Update dependencies with "make dep-am".
+ * Makefile.in: Regenerate.
+
+2001-09-28 Richard Henderson <rth@redhat.com>
+
+ * objdump.c (dump_section_header): Dump SEC_ARCH_BIT_0.
+
+2001-09-26 Alan Modra <amodra@bigpond.net.au>
+
+ * bucomm.c (fatal): Define using VPARAMS, VA_OPEN, VA_FIXEDARG,
+ VA_CLOSE.
+ (non_fatal): Likewise.
+ * objdump.c (objdump_sprintf): Likewise.
+ * readelf.c (error): Likewise.
+ (warn): Likewise.
+
+2001-09-25 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (do_wide): New.
+ (options): Add --wide.
+ (usage, parse_args): Likewise.
+ (process_program_headers): Put each segment on a single line if
+ --wide is given.
+ (process_section_headers): Put each section on a single line if
+ --wide is given.
+ * doc/binutils.texi: Document it.
+ * NEWS: Likewise.
+
+2001-09-25 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (print_vma): Print 8 digits of low hex value.
+
+2001-09-24 Andreas Jaeger <aj@suse.de>
+
+ * nlmconv.c: Fix warnings about unused attributes and function
+ prototypes.
+
+ * strings.c: Add prototype for get_char.
+
+2000-09-19 H.J. Lu <hjl@gnu.org>
+
+ * doc/Makefile.am ($(DEMANGLER_NAME).1): Try cxxfilt.man and
+ $(srcdir)/cxxfilt.man.
+ * doc/Makefile.in: Rebuild.
+
+2001-09-19 Alan Modra <amodra@bigpond.net.au>
+
+ * objcopy.c (copy_main): Correct rename-section string parsing.
+ Consolidate new_name parsing, and error messages.
+
+2001-09-18 Bruno Haible <haible@clisp.cons.org>
+
+ * addr2line.c: Don't include <ctype.h>.
+ (main): For gettext, also set the LC_CTYPE locate facet.
+ * ar.c (main): Likewise.
+ * coffdump.c (main): Likewise.
+ * dlltool.c: Include "safe-ctype.h" instead of <ctype.h>.
+ (main): For gettext, also set the LC_CTYPE locate facet.
+ Use ISALNUM instead of isalpha/isdigit.
+ * dllwrap.c: Don't include <ctype.h>.
+ (main): For gettext, also set the LC_CTYPE locate facet.
+ * nlmconv.c: Include "safe-ctype.h" instead of <ctype.h>.
+ (main): For gettext, also set the LC_CTYPE locate facet.
+ Use TOUPPER instead of islower/toupper.
+ * nlmheader.y: Include "safe-ctype.h" instead of <ctype.h>.
+ (yylex): Use ISSPACE/ISALNUM instead of isspace/isalnum.
+ Use TOUPPER instead of islower/toupper.
+ * nm.c (main): For gettext, also set the LC_CTYPE locate facet.
+ * objcopy.c (main): Likewise.
+ * objdump.c: Include "safe-ctype.h" instead of <ctype.h>.
+ (disassemble_bytes): Use ISPRINT instead of isprint.
+ (dump_section_stabs): Use ISDIGIT instead of isdigit.
+ (dump_data): Use ISPRINT instead of isprint.
+ (main): For gettext, also set the LC_CTYPE locate facet.
+ * rclex.l: Include "safe-ctype.h" instead of <ctype.h>.
+ (cpp_line, handle_quotes): Use ISSPACE instead of isspace.
+ * rcparse.y: Include "safe-ctype.h" instead of <ctype.h>.
+ Use TOUPPER instead of islower/toupper.
+ * readelf.c (main): For gettext, also set the LC_CTYPE locate facet.
+ * resrc.c: Include "safe-ctype.h" instead of <ctype.h>.
+ (write_rc_accelerators): Use ISPRINT instead of isprint.
+ (write_rc_rcdata): Likewise.
+ * size.c (main): For gettext, also set the LC_CTYPE locate facet.
+ * srconv.c (main): Likewise.
+ * stabs.c: Include "safe-ctype.h" instead of <ctype.h>.
+ (parse_number): Use ISDIGIT/ISUPPER/ISLOWER instead of
+ isdigit/isupper/islower.
+ (parse_stab_string, parse_stab_type, parse_stab_argtypes,
+ parse_stab_array_type, stab_demangle_count, stab_demangle_get_count,
+ stab_demangle_prefix, stab_demangle_qualified,
+ stab_demangle_template, stab_demangle_type,
+ stab_demangle_fund_type): Use ISDIGIT instead of isdigit.
+ * strings.c: Include "safe-ctype.h" instead of <ctype.h>.
+ (isgraphic): Use ISPRINT instead of isascii/isprint.
+ (main): Remove HAVE_LC_MESSAGES dependency.
+ * sysdump.c: Include "safe-ctype.h" instead of <ctype.h>.
+ (pbarray): Use ISPRINT instead of isprint.
+ (main): For gettext, also set the LC_CTYPE locate facet.
+ * windres.c: Include "safe-ctype.h" instead of <ctype.h>.
+ (format_from_filename): Use ISPRINT instead of isprint.
+ (main): For gettext, also set the LC_CTYPE locate facet.
+ * winduni.c: Include "safe-ctype.h" instead of <ctype.h>.
+ (unicode_print): Use ISPRINT instead of isprint.
+ * wrstabs.c: Include "safe-ctype.h" instead of <ctype.h>.
+ (stab_variable): Use ISDIGIT instead of isdigit.
+
+2001-09-18 Alan Modra <amodra@bigpond.net.au>
+
+ * ar.c (print_contents): Cast args of bfd_seek to the right types.
+ Replace bfd_read call with call to bfd_bread.
+ (extract_file): Likewise.
+
+ * objdump.c (dump_section_header): Cast section->filepos to
+ unsigned long to suit printf format string.
+ * readelf.c (process_section_headers): Similarly for sh_offset.
+ (process_unwind): Likewise.
+
+2001-09-14 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * strings.c (encoding, encoding_bytes): New variables.
+ (long_options): Add --encoding.
+ (main): Accept -e and --encoding.
+ (get_char): New function. Read a, possibly wide, character from
+ the input stream.
+ (print_strings): Use get_char().
+ (usage): Document new command line option.
+ * doc/binutils.texi: Document new command line option.
+ * NEWS: Announce new command line option.
+
+2001-09-12 Alexandre Oliva <aoliva@redhat.com>
+
+ * readelf.c (guess_is_rela, dump_relocations, get_machine_name,
+ get_machine_flags): Added EM_M32R, EM_D10V, EM_V850, EM_D30V,
+ EM_MN10200, EM_MN10300, EM_FR30, EM_AVR_OLD and EM_PJ_OLD.
+ Removed EM_CYGNUS_ARC.
+
+2001-09-04 Jeffrey A Law (law@cygnus.com)
+
+ * readelf.c: Include elf/h8 for H8 series definitions.
+ (guess_is_rela): H8 series if RELA.
+ (dump_relocations): Handle H8 series relocations.
+
+2001-08-31 Eric Christopher <echristo@redhat.com>
+
+ * readelf.c (get_machine_flags): Remove E_MIPS_MACH_MIPS32_4K.
+
+2001-08-29 Peter Targett <peter.targett@arccores.com>
+
+ * MAINTAINERS: Include ARC Maintainer.
+
+2001-08-29 Ben Elliston <bje@redhat.com>
+
+ * stabs.c (stab_demangle_template): Initialise s4.
+
+2001-08-27 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (dump_relocations): Recognise EM_PPC64.
+
+2001-08-26 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * readelf.c (get_machine_flags): Add detection of EF_MIPS_32BITMODE.
+
+2001-08-25 H.J. Lu <hjl@gnu.org>
+
+ * nm.c (print_width): New.
+ (display_rel_file): Set `print_width' according to
+ bfd_sprintf_vma.
+ (print_symbol_info_bsd): Check `print_width' instead of BFD64.
+
+2001-08-24 Alexandre Oliva <aoliva@redhat.com>
+
+ * objcopy.c (use_alt_mach_code): New variable.
+ (OPTION_ALT_MACH_CODE): Define.
+ (copy_options): Added --alt-machine-code.
+ (copy_main): Handle it.
+ (copy_object): Switch to alternate machine code if requested.
+ * doc/binutils.texi: Document new option.
+ * NEWS: Likewise.
+
+2001-08-22 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * readelf.c (get_machine_flags): Add detection of EF_MIPS_UCODE.
+
+2001-08-21 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (dump_relocations): Support ELF64 on 32bit hosts.
+ (display_debug_info): Cast for 64bit hosts.
+ (display_debug_frames): Likewise.
+ (process_mips_specific): Likewise.
+
+2001-08-21 Andreas Jaeger <aj@suse.de>
+
+ * coffgrok.h: Add missing parameter for prototype of coff_grok.
+
+ * sysdump.c: Add missing prototypes.
+ * srconv.c: Likewise.
+ * unwind-ia64.c: Likewise.
+ * coffdump.c: Likewise.
+
+ * sysinfo.y: Print prototypes, include <ansidecl.h>.
+
+ * coffgrok.c: Add missing prototypes, include libiberty.h instead
+ of declaring xcalloc.
+
+2001-08-10 H.J. Lu <hjl@gnu.org>
+
+ * nm.c (print_value): Add one arg, bfd *.
+ (print_value): Replace fprintf_vma with bfd_fprintf_vma.
+ (print_symbol_info_bsd): Also pass `abfd' to print_value ().
+ (print_symbol_info_sysv): Likewise.
+ (print_symbol_info_posix): Likewise.
+
+ * objdump.c (dump_section_header): Replace printf_vma with
+ bfd_printf_vma.
+ (print_section_stabs): Likewise.
+ (dump_bfd_header): Likewise.
+ (objdump_print_value): Replace sprintf_vma with
+ bfd_sprintf_vma.
+ (disassemble_bytes): Likewise.
+ (dump_reloc_set): Likewise.
+
+2001-08-10 Andreas Jaeger <aj@suse.de>
+
+ * configure.in: Add -Wstrict-prototypes and -Wmissing-prototypes
+ to build warnings.
+ * configure: Regenerate.
+
+2001-08-09 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c: Add missing prototypes.
+ * objdump.c: Likewise. Format existing prototypes.
+
+2001-08-08 Alexandre Oliva <aoliva@redhat.com>
+
+ * readelf.c (display_debug_info): Add to abbrev_offset the addend
+ of any RELA relocation for the abbrev_offset memory location that
+ refers to the .debug_abbrev section symbol.
+
+2001-08-07 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (process_file): Return 0 if OK, otherwise return 1.
+ (main): Return process_file ().
+
+2001-08-05 Philip Blundell <philb@gnu.org>
+
+ * doc/binutils.texi: Use "Thumb" not "THUMB".
+
+2001-08-03 John Healy <jhealy@redhat.com>
+
+ Patch suggested by Frank Eigler <fche@redhat.com>.
+ * objdump.c (disassemble_data): Fill in section member of the
+ disasm_info structure.
+
+2001-08-03 Tom Walsh <tom@cyberiansoftware.com>
+
+ * configure.in: Added --with-windres option.
+ * configure: Regenerated.
+
+2001-07-11 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * doc/binutils.texi: Use @command{name} for commands;
+ use @option{-opt} for options; use @table @env for list of options;
+ remove spaces arround [ | ] in synopsis.
+
+ * doc/Makefile.am (POD2MAN): Use 'GNU Development Tools' for the
+ center title.
+
+2001-07-31 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * objcopy.c: Fix formatting.
+ (section_rename): New structure.
+ (OPTION_RENAME_SECTION): New switch.
+ (copy_usage): Document new switch.
+ (add_section_rename): New function: Add a node to the section
+ rename list.
+ (find_section_rename): New function: Find the new name and
+ flags for a section.
+ (setup_section): Call find_section_name to determine the name
+ of the output section.
+ (copy_main): Handle OPTION_RENAME_SECTION.
+ * binutils.texi: Document new switch.
+ * NEWS: Mention new switch.
+
+2001-07-30 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * README: Rename bug-gnu-utils@gcc.org to bug-binutils@gcc.org.
+ * MAINTAINERS: Rename bug-gnu-utils@gcc.org to
+ bug-binutils@gcc.org.
+
+2001-07-28 Matthias Kramm <kramm@quiss.org>
+
+ * bucomm.c (list_supported_architectures): New function.
+ * bucomm.h (list_supported_architectures): Declare.
+ * objdump.c (usage): Call the above.
+
+2001-07-25 Dave Brolley <brolley@redhat.com>
+
+ * objdump.c (SKIP_ZEROES): Only define it if it is not already defined.
+ (SKIP_ZEROES_AT_END): Only define it if it is not already defined.
+
+2001-07-19 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * README: Update for 2.11. Change bug reporting email address.
+ * MAINTAINERS: Tidy up. Change bug reporting email address.
+
+2001-07-16 DJ Delorie <dj@redhat.com>
+
+ * resres.c (write_res_header): Align header size.
+ (res_align_file): Calculate alignment correctly.
+
+ * rcparse.y (styles): use SUBLANG_SHIFT instead of 8 (or the more
+ correct 10).
+ * resrc.c (write_rc_resource): Likewise.
+ * windres.h (SUBLANG_SHIFT): Define - as 10.
+
+2001-07-15 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * MAINTAINERS: Add Christian Groessler as maintainer for z8k port.
+
+2001-07-11 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * MAINTAINERS: Add notes about branch checkins.
+
+2001-07-05 Daniel Berlin <dan@cgsoftware.com>
+
+ * readelf.c (display_debug_macinfo): New function, display
+ .debug_macinfo section.
+ (do_debug_macinfo): New variable.
+ (parse_args): Handle "-w[mM]" to mean display macro info.
+ (process_section_headers): Handle debug_macinfo.
+ (debug_displays): Replace unsupported function with macinfo
+ function for .debug_macinfo display.
+ * doc/binutils.texi: Document new command line switch.
+ * NEWS: Document new feature of readelf.
+
+2001-07-05 H.J. Lu <hjl@gnu.org>
+
+ * objcopy.c (filter_symbols): Don't turn undefined symbols
+ into local.
+
+2001-07-03 H.J. Lu <hjl@gnu.org>
+
+ * doc/Makefile.am (addr2line.1): Use addr2line.pod instead of
+ $@.pod.
+ (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): Use $(DEMANGLER_NAME).pod instead of $@.pod.
+ ($(DEMANGLER_NAME).1): Also substitute cxxfilt with
+ $(DEMANGLER_NAME).
+ (as.1): Removed.
+ * doc/Makefile.in: Regenerated.
+
+2001-07-03 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * MAINTAINERS: Change MIPS maintainer to Eric Christopher.
+
+2001-07-01 Daniel Berlin <dan@cgsoftware.com>
+
+ * readelf.c: Support DWARF 2.1 tags, encodings, languages.
+
+2001-06-29 James Cownie <jcownie@etnus.com>
+
+ * readelf.c: Support DWARF 2.1 attributes.
+
+2001-06-28 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (GET_DATA_ALLOC): Remove.
+ (GET_DATA): Remove.
+ (get_data): New function combining above macros, with an extra
+ test for zero size.
+ (slurp_rela_relocs): Use get_data, and catch error return.
+ (slurp_rel_relocs): Likewise.
+ (get_32bit_program_headers): Likewise.
+ (get_64bit_program_headers): Likewise.
+ (get_32bit_section_headers): Likewise.
+ (get_64bit_section_headers): Likewise.
+ (get_32bit_elf_symbols): Likewise.
+ (get_64bit_elf_symbols): Likewise.
+ (process_section_headers): Likewise.
+ (process_relocs): Likewise.
+ (slurp_ia64_unwind_table): Likewise.
+ (process_unwind): Likewise.
+ (get_32bit_dynamic_segment): Likewise.
+ (get_64bit_dynamic_segment): Likewise.
+ (process_dynamic_segment): Likewise.
+ (process_version_sections): Likewise.
+ (process_symbol_table): Likewise.
+ (dump_section): Likewise.
+ (display_debug_info): Likewise.
+ (display_debug_section): Likewise.
+ (process_section_contents): Likewise.
+ (process_corefile_note_segment): Likewise.
+ (process_mips_specific): Likewise. Also free econf32, econf64.
+
+2001-06-25 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (dump_relocations): Print "bad symbol index" if
+ symtab == NULL with non-zero symtab_index.
+ (process_relocs): Don't bomb if reloc section has no symsec.
+
+2001-06-24 H.J. Lu <hjl@gnu.org>
+
+ * objcopy.c (strip_main): Revert the change made on 2001-05-30
+ by accident.
+ (copy_main): Apply the change made to strip_main on
+ 2001-05-30 by accident.
+
+2001-06-23 Andreas Jaeger <aj@suse.de>
+
+ * unwind-ia64.c (unw_decode_x1): Add unused attribute for
+ parameter 'code'.
+ (unw_decode_x2): Likewise.
+ (unw_decode_x3): Likewise.
+ (unw_decode_x4): Likewise.
+
+2001-06-23 Ben Elliston <bje@redhat.com>
+
+ * MAINTAINERS: Add myself as M88k maintainer.
+
+2001-06-22 Jocelyn Mayer <jocelyn.mayer@netgem.com>
+
+ * objcopy.c (strip_main): Support -o or --output-file command lien
+ switch.
+
+2001-06-19 H.J. Lu <hjl@gnu.org>
+
+ * doc/Makefile.in: Regenerated.
+
+2001-06-19 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * readelf.c: Restore formatting.
+
+2001-06-18 H.J. Lu <hjl@gnu.org> & Nick Clifton <nickc@redhat.com>
+
+ * Makefile.am: Move documentation into doc subdirectory.
+ * Makefile.in: Regenerated.
+ * binutils.texi: Move into doc subdirectory.
+ * addr2line.1: Removed.
+ * 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: New Directory.
+ * doc/Makefile.am: New file.
+ * doc/Makefile.in: Generate.
+
+2001-06-09 Alan Modra <amodra@bigpond.net.au>
+
+ * NEWS: Fix a typo. Mention hppa64-elf. Add binutils-2.11 marker.
+
+2001-06-01 Alan Modra <amodra@bigpond.net.au>
+
+ * MAINTAINERS: Update my email address.
+
+2001-05-30 Honda Hiroki <hhonda@kobe-catv.ne.jp>
+
+ * objcopy.c: Add new switches: --keep-global-symbol,
+ --keep-symbols, --localize-symbols, --keep-global-symbols and
+ --weaken-symbols.
+ * binutils.texi: Document new switches.
+ * objcopy.1: Regenerate.
+ * NEWS: Announce new feature.
+
+2001-05-28 Andreas Jaeger <aj@suse.de>
+
+ * readelf.c (display_debug_frames): Fix warnings: Remove unused
+ variables, fix format strings.
+
+2001-05-28 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * objdump.c (disassemble_bytes): Remove section VMA adjustment
+ when computing the address of the line to show.
+
+2001-05-16 Richard Henderson <rth@redhat.com>
+
+ * readelf.c (do_debug_frames_interp): New.
+ (byte_get_little_endian): If BFD64, always read entire 8-byte fields.
+ (byte_get_big_endian): Likewise.
+ (parse_args) ['F']: Set do_debug_frames_interp.
+ (Frame_Chunk): Make data_factor signed, add fde_encoding.
+ (frame_display_row): Don't trunc pc_begin to int.
+ (size_of_encoded_value): New.
+ (display_debug_frames): Handle 64-bit targets. Print raw data
+ unless do_debug_frames_interp.
+ (debug_displays): Remove duplicate .debug_frame.
+
+2001-05-15 Ralf Baechle <ralf@gnu.org>
+
+ * readelf.c: Replace uses of EM_MIPS_RS4_BE with EM_MIPS_RS3_LE.
+ The former constant was never in active use and is used otherwise
+ by the ABI.
+
+2001-05-11 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (process_unwind): Print all unwind sections, not just
+ one.
+
+2001-05-07 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * readelf.c (process_unwind): Remove const specifier.
+
+2001-04-27 Michal Svec <rebel@atrey.karlin.mff.cuni.cz>
+
+ * strings.c (isgraphic): Do not use isascii() unless it is needed
+ for isprint() to work.
+ (main): Set the locale domain to LC_ALL not just LC_MESSAGES.
+
+2001-04-27 Johan Rydberg <jrydberg@opencores.org>
+
+ * NEWS: Announce support for OpenRISC.
+
+2001-04-17 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * dlltool.c (do_default_excludes): Initialise to true.
+
+2001-04-10 Alan Modra <amodra@one.net.au>
+
+ * MAINTAINERS: Update my email address
+ * nm.c (print_symbol_info_bsd): Use a simple printf string.
+
+2001-04-05 Hans-Peter Nilsson <hp@axis.com>
+
+ * readelf.c (display_debug_lines): Fix typo for "Prologue".
+
+2001-03-30 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (process_unwind): Just return if do_unwind is 0.
+
+2001-03-28 Roger Sayle <roger@metaphorics.com>
+
+ * dlltool.c (make_one_lib_file): Fix section flags for
+ .text, .data and .bss in stub ds*.o files to match those
+ generated by gas.
+
+2001-03-29 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (process_unwind): Only do unwind sections for
+ IA64.
+
+2001-03-28 H.J. Lu <hjl@gnu.org>
+
+ * Makefile.am ($(srcdir)/dlltool.1): Remove the extra target.
+ * Makefile.in: Regenerate.
+
+2001-03-26 Andreas Jaeger <aj@suse.de>
+
+ * binutils.texi (nm): Fix texi syntax.
+
+2001-03-25 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+
+ * binutils.texi: Put @c man begin and @c man end indications
+ to generate man pages using texi2pod and pod2man. Put @c man title
+ to identify each man. Add SEEALSO entries.
+ * Makefile.am (MANCONF, TEXI2POD, POD2MAN): New variable.
+ (man_MANS): Add dlltool.1, nlmconv.1, readelf.1, windres.1,
+ sort the list.
+ (*.1): Build the man pages from binutils.texi.
+ * Makefile.in: Regenerate.
+
+2001-03-13 Eric Kohl <ekohl@rz-online.de>
+
+ * defparse.y (opt_equal_name): allow "." in name.
+ * dlltool.c (def_exports): Added ability to generate forwarded exports.
+ (gen_exp_file): Likewise.
+
+2001-03-12 Stefan Geuken <mail@stefan-geuken.de>
+
+ * NEWS: Document addition of -B switch to objcopy.
+ * binutils.texi: Document addition of -B switch to objcopy.
+ * objcopy.c: (copy_options): Add --binary-architecture.
+ (copy_usage): Document -B/--binary-architecture.
+ (copy_main): Support -B/--binary-architecture. Set
+ bfd_external_binary_architecture.
+
+2001-03-11 Andreas Jaeger <aj@suse.de>
+
+ * readelf.c (guess_is_rela): Handle EM_S390_OLD.
+ (dump_relocations): Likewise.
+ (get_machine_name): Likewise.
+
+2001-02-28 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c: (struct unw_aux_info): Remove const modifier for
+ 'strtab' field.
+ (process_unwind): Remove non-K&R compliant LHS type cast in call
+ to GET_DATA_ALLOC macro.
+
+2001-02-28 Philip Blundell <pb@futuretv.com>
+
+ * readelf.c (decode_ARM_machine_flags): Explicitly mention which
+ ABI is in use; remove ambiguity between the "unknown" EABI and
+ unrecognised ABIs. Handle version 2 ARM EABI. Update uses of
+ renamed EF_xx constants.
+
+2001-02-27 Alan Modra <alan@linuxcare.com.au>
+
+ * configure.in (BFD_VERSION): New.
+ (AM_INIT_AUTOMAKE): Use $BFD_VERSION.
+ * configure: Regenerate.
+ * Makefile.am: Run "make dep-am"
+ * Makefile.in: Regenerate.
+
+2001-02-14 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add "Obvious Fix" rule.
+
+2001-02-11 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * unwind-ia64.c: Don't use ANSI C preprocessor stringisation and string
+ literal concatenation.
+
+2001-02-11 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * readelf.c (struct unw_aux_info): Remove const from the info member.
+ (process_unwind): Don't type-cast the third argument to the
+ GET_DATA_ALLOC macro.
+
+2001-02-11 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (dump_relocations): Free corrected allocated
+ array.
+ (process_unwind): Fix compile time warning.
+
+2001-02-10 Nick Clifton <nickc@redhat.com>
+
+ * binutils.texi: Document new --unwind option to readelf.
+
+2001-02-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
+
+ * readelf.c: Add linux target for S/390.
+
+2001-02-10 Alan Modra <alan@linuxcare.com.au>
+
+ * nm.c (print_symbol_info_bsd): Don't #ifdef inside printf in case
+ printf is a macro.
+
+2001-02-08 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * acinclude.m4 (AM_PROG_LEX): Override installed definition.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2001-02-07 Todd Vierling <tv@wasabisystems.com>
+
+ * bucomm.c (bfd_target_vector): Change extern array to pointer.
+ * objdump.c (bfd_target_vector): Likewise.
+
+2001-02-07 David Mosberger <davidm@hpl.hp.com>
+
+ * readelf.c (process_unwind): New function.
+ (slurp_ia64_unwind_table): Ditto.
+ (dump_ia64_unwind): Ditto.
+ (find_symbol_for_address): Ditto.
+ (slurp_rela_relocs): New function (split off from dump_relocations()).
+ (slurp_rel_relocs): Ditto.
+ (parse_args): Handle '-u' option.
+
+ * unwind-ia64.c: New file.
+ * unwind-ia64.h: New file.
+ * Makefile.am: Include unwind-ia64.c in readelf build.
+ * Makefile.in: Regenerate.
+ * po/binutils.pot: Regenerate.
+
+2001-02-04 Philip Blundell <philb@gnu.org>
+
+ * configure.in (OBJDUMP_DEFS): Match `arm*-*', not just `arm-*'.
+ * configure: Regenerate.
+
+2001-01-31 Steve deRosier <sderosier@vari-lite.com>
+
+ * ieee.c (ieee_add_bb11): Don't check for backslashes
+ unless HAVE_DOS_BASED_FILE_SYSTEM is defined.
+
+2001-01-24 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * ieee.c: Update copyright.
+ (ieee_start_compilation_unit): Don't check for backslashes
+ unless HAVE_DOS_BASED_FILE_SYSTEM is defined.
+
+ * stabs.c: Update copyright. Include "filenames.h".
+ (parse_stab): Use IS_ABSOLUTE_PATH. Ignore N_WARNING stabs.
+
+2001-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (process_version_sections): Check if VERDEF or VERNEED
+ sections are present before using them. Remove code duplication.
+ (process_symbol_table): Check if VERDEF or VERNEED sections are
+ present before using them.
+
+2001-01-17 Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (copy_object): Fail if attempting to convert the
+ endianness of the input object file.
+
+ * binutils.texi: Explain that objcopy cannot convert endianness.
+
+2001-01-16 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (string_table_length): New variable.
+ (SECTION_NAME): Catch out of range indices and missing section
+ pointers.
+ (process_section_headers): Delete useless local variable
+ string_table_offset. Set the value of string_table_length
+ after loading the string table.
+ (process_mips_specific): Use SECTION_NAME macro.
+ (process_file): Set string_table_length to 0 when it is freed.
+
+2001-01-12 Nick Clifton <nickc@redhat.com>
+
+ * version.c (print_version): Update copyright date.
+
+2001-01-11 Peter Targett <peter.targett@arccores.com>
+
+ * readelf.c (dump_relocations): Include selection with EM_ARC.
+ (get_machine_name) Update name to "ARC".
+
+2001-01-09 Nick Clifton <nickc@redhat.com>
+
+ * Makefile.am: Add rule to build objdump.o from objdump.c and
+ using OBJDUMP_DEFS.
+ * Makefile.in: Regenerate.
+
+ * configure.in: Define OBJDUMP_DEFS. Default to empty.
+ (arm, xscale, d10v): For these targets define OBJDUMP_DEFS to
+ -DDISASSEMBLER_NEEDS_RELOCS.
+ * configure: Regenerate.
+
+ * objdump.c (disassemble_bytes): If DISASSEMBLER_NEEDS_RELOCS
+ is defined read in the relocs even if dump_reloc_info is
+ false.
+
+2001-01-07 Philip Blundell <philb@gnu.org>
+
+ * binutils.texi (Bug Reporting): Replace `bug-gnu-utils' with
+ `bug-binutils'.
+ * README: Likewise.
+
+2000-12-19 Nick Clifton <nickc@redhat.com>
+
+ * dlltool.c: Add missing support for arm-epoc-pe.
+ * configure.in: Add missing support for arm-epoc-pe.
+ * configure: Regenerate.
+
+2000-12-15 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add Diego Novillo as a maintainer for the Intel
+ Mode parts of the x86 port.
+
+2000-12-04 Andreas Jaeger <aj@suse.de>
+
+ * readelf.c (guess_is_rela): Add EM_X86_64.
+ (dump_relocations): Add EM_X86_64.
+ (get_machine_name): Add EM_X86_64.
+ Include "elf/x86-64.h".
+
+2000-12-12 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c: Fix formatting.
+
+2000-12-11 Jan Hubicka <jh@suse.cz>
+
+ * MAINTAINERS: Add myself and Andreas Jaeger as x86_64 maintainer.
+
+2000-12-07 Andrew Haley <aph@redhat.com>
+
+ * readelf.c (display_debug_frames): Only display columns that are
+ referenced by the frame debug info.
+
+2000-12-05 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add Jason Merrill as DWARF2 maintainer.
+
+2000-12-04 Jason Merrill <jason@redhat.com>
+
+ * readelf.c (process_section_headers): Handle linkonce.wi sections.
+ (display_debug_section): Likewise.
+ (display_debug_info): Display CU header before bailing.
+
+2000-12-01 Chris Demetriou <cgd@sibyte.com>
+
+ * readelf.c (get_machine_flags): Recognize MIPS32 ISA in
+ EF_MIPS_ARCH. Replace use of E_MIPS_MACH_MIPS32 with
+ E_MIPS_MACH_MIPS32_4K and adjust printed CPU name similarly.
+
+ * readelf.c (get_machine_flags): Add cases for E_MIPS_ARCH_5,
+ and E_MIPS_ARCH_64.
+
+ * readelf.c (get_machine_flags): Add case for
+ E_MIPS_MACH_SB1.
+
+2000-11-30 Richard Earnshaw <rearnsha@arm.com>
+
+ * readelf.c (frame_display_row): Output 's' for DW_CFA_same_value.
+
+2000-11-28 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * MAINTAINERS: Add Jörn Rennecke and self as SH maintainers.
+ Change sourceware.cygnus.com to sources.redhat.com.
+ Fix typo for "amongst".
+
+2000-11-28 Nick Clifton <nickc@redhat.com>
+
+ * strip.1 (COPYING): Mention that the GNU Free Documentation
+ License is present in the sources, but not the output, and
+ also available from the GNU website.
+ (GNU Free Documentation License): Comment out this section.
+ * strings.1: Ditto.
+ * size.1: Ditto.
+ * ranlib.1: Ditto.
+ * objdump.1: Ditto.
+ * objcopy.1: Ditto.
+ * nm.1: Ditto.
+ * nlmconv.1: Ditto.
+ * ar.1: Ditto.
+ * addr2line.1: Ditto.
+
+2000-11-27 DJ Delorie <dj@redhat.com>
+
+ * readelf.c (usage): Add -wf (--debug-dump=frames) option.
+ (parse_args): Support -wf option.
+ (process_section_headers): Ditto.
+ (debug_displays): Ditto.
+ (display_debug_frames): New, dump *_frame sections.
+ (frame_need_space): Support for above.
+ (frame_display_row): Ditto.
+ * binutils.texi: Document it.
+
+2000-11-24 Nick Clifton <nickc@redhat.com>
+
+ * NEWS: Announce support for v5t, v5te and XScale.
+
+2000-11-22 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (get_machine_name): Add EM_JAVELIN, EM_FIREPATH,
+ EM_ZSP, EM_MMIX, EM_HUANY, EM_PRISM.
+ (get_section_type_name): Add SHT_GROUP and SHT_SYMTAB_SHNDX.
+ (get_elf_section_flags: Add SHF_GROUP.
+ (process_section_headers): Adjust output for 32-bit binaries
+ to look nice on an 80 column terminal.
+
+2000-11-20 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (get_osabi_name): Change ELFOSABI_MONTEREY to
+ ELFOSABI_AIX.
+
+2000-11-17 Richard Henderson <rth@redhat.com>
+
+ * readelf.c (display_debug_lines): Adjust last change to
+ use sizeof (external->li_length).
+
+2000-11-17 Richard Henderson <rth@redhat.com>
+
+ * readelf.c (display_debug_lines): Fix section length check
+ and end_of_sequence computation.
+
+2000-11-06 Nick Clifton <nickc@redhat.com>
+
+ * binutils.texi: Add GNU Free Documentation License.
+ * objcopy.1: Add GNU Free Documentation License.
+ * objdump.1: Add GNU Free Documentation License.
+ * addr2line.1: Add GNU Free Documentation License.
+ * ar.1: Add GNU Free Documentation License.
+ * nlmconv.1: Add GNU Free Documentation License.
+ * nm.1: Add GNU Free Documentation License.
+ * ranlib.1: Add GNU Free Documentation License.
+ * size.1: Add GNU Free Documentation License.
+ * strings.1: Add GNU Free Documentation License.
+ * strip.1: Add GNU Free Documentation License.
+
+2000-10-06 Luciano Gemme <ishitawa@yahoo.com>
+
+ * objcopy.c (--srec-len=nn): New parameter to set the
+ maximum length of generated Srecords.
+ (--srec-forceS3): New parameter that restricts the generation of
+ Srecords to type S3 only.
+ * binutils.texi: Document new command line switches.
+ * objcopy.1: Docuemnt the new command line switches.
+ * NEWS: Announce the existence of the new command line switches.
+
+2000-10-31 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add Jim Wilson as the maintainer for the IA64
+ code. Add Eric Chrisopher as maintainer of MN10300 port.
+
+2000-10-12 Roger Sayle <roger@metaphorics.com>
+
+ * Make comma after string after icon/control optional.
+
+2000-09-13 Anders Norlander <anorland@acc.umu.se>
+
+ * readelf.c (get_machine_flags): Also print EF_MIPS_MACH field.
+
+ * NEWS: Mention support for MIPS32.
+
+2000-09-08 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add Stephane Carrez as maintainer for 68HC[11|12].
+
+2000-09-07 H.J. Lu <hjl@gnu.org>
+
+ * configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM.
+ * configure: Rebuild.
+
+2000-09-06 Alexandre Oliva <aoliva@redhat.com>
+
+ * configure: Rebuilt with new libtool.m4.
+
+2000-09-05 Nick Clifton <nickc@redhat.com>
+
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+
+2000-09-04 Todd Vierling <tv@wasabisystems.com>
+
+ * strip.1: Fix stray '\' in -o formatting.
+
+2000-09-02 Nick Clifton <nickc@redhat.com>
+
+ * configure.in: Increase version number to 2.10.91.
+ * configure: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * po/binutils.pot: Regenerate.
+
+2000-08-31 Alexandre Oliva <aoliva@redhat.com>
+
+ * acinclude.m4: Include libtool and gettext macros from the
+ top level.
+ * aclocal.m4, configure: Rebuilt.
+
+2000-08-30 Jamie Guinan <guinan@bluebutton.com>
+
+ * resrc.c (close_input_stream): Delete extraneous logic
+
+2000-08-24 Hans-Peter Nilsson <hp@axis.com>
+
+ * NEWS: Mention support for CRIS.
+
+2000-08-21 Nick Clifton <nickc@redhat.com>
+
+ * addr2line.c: Changed email address for Ulrich Lauther.
+
+2000-08-17 Christopher C. Chimelis <chris@debian.org>
+
+ * objdump.c (LONGEST_ARCH): Set to sizeof("powerpc:common").
+
+2000-08-17 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (display_debug_pubnames): Only issue warning
+ message once. Terminate message with a new line.
+ (display_debug_aranges): Only display version 2 debug info.
+
+2000-08-14 Todd Vierling <tv@wasabisystems.com>
+
+ * objcopy.c (strip_main): Silently accept -d as an alias for -g
+ for compatibility with old BSD systems.
+
+2000-08-14 Jason Eckhardt <jle@cygnus.com>
+
+ * NEWS: Mention i860 support.
+
+2000-08-11 Carlo Wood <carlo@alinoe.com>
+
+ * addr2line.c (main): Add const to char *.
+
+2000-08-11 Geoff Keating <geoffk@cygnus.com>
+
+ * ar.c (main): Don't crash if called with no arguments
+ or only '-X32_64' as an argument.
+
+2000-08-08 DJ Delorie <dj@redhat.com>
+
+ * resrc.c: use "gcc -xc" instead of -xc-header
+
+2000-08-05 Jason Eckhardt <jle@cygnus.com>
+
+ * readelf.c (elf/i860.h): Include.
+ (dump_relocations): Add recognition of i860 architecture.
+ (guess_is_rela): Add recognition of i860 architecture.
+
+2000-08-03 Nick Clifton <nickc@cygnus.com>
+
+ * MAINTAINERS: Add information about CGEN maintainers.
+
+2000-07-26 Geoff Keating <geoffk@cygnus.com>
+
+ * nm.c (main): Ignore '-X32_64' as an option.
+ * ar.c (main): Likewise.
+ * binutils.texi (nm): Document new option.
+ (ar): Likewise.
+
+2000-07-23 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * rdcoff.c (external_coff_symbol_p): K&R-ise.
+
+2000-07-20 H.J. Lu <hjl@gnu.org>
+
+ * binutils.texi: Put back "@end table" deleted by
+ accident.
+
+2000-07-05 Kenneth Block <krblock@computer.org>
+
+ * nm.c: Add optional style to demangle switch.
+ * objdump.c: Add optional style to demangle switch.
+ * addr2line.c: Add optional style to demangle switch.
+ * binutils.texi: Document optional style to demangle
+ switch.
+
+2000-07-20 Hans-Peter Nilsson <hp@axis.com>
+
+ * MAINTAINERS: Add self as CRIS port maintainer.
+ * readelf.c: Include elf/cris.h.
+ (guess_is_rela): Handle EM_CRIS.
+ (dump_relocations): Ditto.
+ (get_machine_name): Ditto.
+ * Makefile.am: Rebuild dependencies.
+ * Makefile.in: Regenerate.
+ * po/binutils.pot: Regenerate.
+
+2000-07-19 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (get_dynamic_type): Change "AUXILARY" to
+ "AUXILIARY".
+ (process_dynamic_segment): Print out strings for DT_CONFIG,
+ DT_DEPAUDIT, DT_AUDIT and DT_RUNPATH.
+
+2000-07-19 Mark Kettenis <kettenis@gnu.org>
+
+ * nm.c (usage): Change output of `nm --help' to include a
+ description of the purpose of the program and a detailed
+ description of the accepted options.
+
+2000-07-19 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (process_dynamic_segment): Change DF_1_NODEPLIB
+ to DF_1_NODEFLIB.
+
+2000-07-19 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (get_dynamic_type): Fix DT_CHECKSUM.
+
+2000-07-19 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (get_dynamic_type): Change DT_FEATURE_1 to
+ DT_FEATURE.
+ (process_dynamic_segment): Likewise.
+
+ * readelf.c (get_dynamic_type): Handle DT_CONFIG, DT_DEPAUDIT,
+ DT_AUDIT, DT_PLTPAD, DT_MOVETAB and DT_CHECKSUM.
+ (process_dynamic_segment): Handle DTF_1_CONFEXP, DF_1_NODEPLIB,
+ DF_1_NODUMP and DF_1_CONLFAT.
+
+2000-07-18 Nick Clifton <nickc@cygnus.com>
+
+ * binutils.texi (readelf): Fix spelling typo.
+
+2000-07-11 Mark Kettenis <kettenis@gnu.org>
+
+ * objdump.c (usage): Make output of `objdump --help' more
+ consistent with the rest of the GNU world. Add a line describing
+ the purpose of the program.
+
+2000-07-10 David Huggins-Daines <dhd@linuxcare.com>
+
+ * stabs.c (parse_stab_range_type): Cast to proper type to fix
+ warning.
+
+2000-07-10 Ryan Bradetich <rbradetich@uswest.net>
+
+ * readelf.c (get_dynamic_data): Add casts and use unsigned chars
+ to fix warnings.
+ (process_symbol_table): Ditto.
+ (procesS_extended_line_op): Ditto.
+ (display_debug_lines): Ditto.
+ (display_debug_pubnames): Ditto.
+ (read_and_display_attr): Ditto.
+
+2000-07-09 Nick Clifton <nickc@cygnus.com>
+
+ * MAINTAINERS: Add several more port specific maintainers.
+
+2000-07-05 Nick Clifton <nickc@cygnus.com>
+
+ * MAINTAINERS: Add blanket write privs for Michael Meissner.
+
+2000-06-05 DJ Delorie <dj@redhat.com>
+
+ * MAINTAINERS: New.
+
+2000-07-01 Eric Fifer <EFifer@sanwaint.com>
+
+ * dllwrap.c: Changed mistaken dyn_string_append() calls
+ to dyn_string_append_cstr().
+
+2000-07-01 Alexander Aganichev <AAganichev@hypercom.com>
+
+ * stabs.c (parse_stab_type): Divide size in bits by 8 as binutils
+ struct debug_type stores size in bytes.
+
+2000-07-01 Alan Modra <alan@linuxcare.com.au>
+
+ * Makefile.am (DEP): Fix 2000-06-22. grep after running dep.sed
+ (CLEANFILES): Add DEPA.
+ * Makefile.in: Regenerate.
+
+2000-06-27 Alan Modra <alan@linuxcare.com.au>
+
+ * ar.c: Revert incorrect 2000-06-25 patch.
+ * bucomm.c: Likewise.
+
+2000-06-25 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * rdcoff (parse_coff_symbol): Treat GNU weak symbols as external.
+ (external_coff_symbol_p): New function.
+ (parse_coff): Use it.
+
+2000-06-25 Alexander Aganichev <AAganichev@hypercom.com>
+
+ * ar.c (normalize): Advance past both characters in a DOS based
+ <letter>: filepath prefix.
+ (main): Likewise.
+ * bucomm.c (make_tempname): Likewise.
+
+2000-06-24 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (usage): Fix description of --stabs switch.
+
+2000-06-22 Alan Modra <alan@linuxcare.com.au>
+
+ * Makefile.am (DEP): grep for leading `/' in DEP1, and fail if we
+ find one.
+ * Makefile.in: Regenerate.
+
+2000-06-20 Alexander Aganichev <AAganichev@hypercom.com>
+
+ * ar.c (normalize): Correct pointer comparison when checking for
+ backslashes.
+ (main): Likewise.
+ * bucomm.c (make_tempname): Likewise.
+
+ * ieee.c (ieee_start_compilation_unit): Correct pointer comparison
+ and search for backslashes in the original pathname.
+ (ieee_add_bb11): Likewise.
+
+2000-06-18 Nick Clifton <nickc@redhat.com>
+
+ * ar.c (print_contents): Improve verbose message.
+
+2000-06-15 H.J. Lu <hjl@gnu.org>
+
+ * dyn-string.c: Removed. Not needed with dyn-string.c in
+ libiberty.
+ * dyn-string.h: Likewise.
+
+ * Makefile.am: Remove references to dyn-string.c and
+ dyn-string.h. Rebuild dependency.
+ * Makefile.in: Rebuild.
+
+2000-06-15 H.J. Lu <hjl@gnu.org>
+
+ * binutils.texi: Put a warning on copying relocatable object
+ files between two different formats.
+
+2000-06-13 DJ Delorie <dj@cygnus.com>
+
+ * rcparse.y (control): ICON controls take an id as the first
+ parameter, not an optional string. Also, call new convenience
+ function that takes res_id's.
+ * resrc.c (define_control): missing text means zero-length string,
+ not zero ID.
+ (define_icon_control): New.
+ * windres.h: declare define_icon_control.
+
+2000-06-13 H.J. Lu <hjl@gnu.org>
+
+ * configure: Regenerate.
+
+2000-06-08 David O'Brien <obrien@FreeBSD.org>
+
+ * configure.in (VERSION): Update to show this is the CVS mainline.
+
+2000-06-02 David O'Brien <obrien@FreeBSD.org>
+
+ * strings.c (isgraphic): Interpret <TAB> as a printable character,
+ analogous to <SPACE>.
+
+2000-05-30 Alan Modra <alan@linuxcare.com.au>
+
+ * objdump.c (display_target_list): Use bfd_close_all_done, not
+ bfd_close to fix crash caused by 2000-05-24 change.
+
+2000-05-25 DJ Delorie <dj@cygnus.com>
+
+ * resrc.c (close_input_stream): zero out cpp_pipe after closing it.
+
+2000-05-26 Alan Modra <alan@linuxcare.com.au>
+
+ * Makefile.am: Update dependencies with "make dep-am"
+ * Makefile.in: Regenerate.
+
+2000-05-26 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * ar.c: Include filenames.h.
+ (normalize) [HAVE_DOS_BASED_FILE_SYSTEM]: Support backslashes
+ and drive letters in file names.
+ (main): Support backslashes and drive letters in argv[0]. Drop
+ the .exe suffix, if any, in argv[0] if is_ranlib is negative. Use
+ FILENAME_CMP instead of strcmp to compare file names.
+ (open_inarch) [__GO32__]: Don't ifdef errno != ENOENT test for
+ DJGPP v2.
+ (do_quick_append) [__GO32__]: Ditto.
+ (get_pos_bfd, delete_members, move_members, replace_members):
+ Compare file names with FILENAME_CMP.
+
+ * bucomm.c: Include filenames.h.
+ (make_tempname) [HAVE_DOS_BASED_FILE_SYSTEM]: Support mixed
+ forward/backward slashes and drive letters in file names.
+
+ * ieee.c (ieee_start_compilation_unit, ieee_add_bb11): Support
+ mixed forward/backward slashes and drive letters in file names.
+
+ * strings.c (O_BINARY, setmode, SET_BINARY): Define.
+ (main) [SET_BINARY]: Use SET_BINARY to switch stdin into binary
+ mode.
+
+ * objcopy.c: Include filenames.h.
+ (main) [HAVE_DOS_BASED_FILE_SYSTEM]: Drop the .exe suffix
+ before comparing to "strip".
+ Use FILENAME_CMP to compare file names.
+
+ * arsup.c: Include filenames.h.
+ (map_over_list, ar_delete, ar_replace, ar_extract): Use
+ FILENAME_CMP to compare file names.
+ (ar_open): Prepend "tmp-" instead of appending "-tmp", to create
+ the temporary file name.
+
+ * configure.in: Check for setmode.
+ * configure: Regenerate.
+
+2000-05-24 Alan Modra <alan@linuxcare.com.au>
+
+ * objdump.c (display_target_list): Close the bfd.
+ (display_info_table): Likewise.
+
+2000-05-14 H.J. Lu (hjl@gnu.org)
+
+ * objcopy.c (filter_symbols): Don't strip global symbols in
+ relocatable object files.
+
+2000-05-14 Alan Modra <alan@linuxcare.com.au>
+
+ * size.c (usage): Associate short options with corresponding long
+ option to give a clue as to their function.
+
+2000-05-14 Philippe De Muyter <phdm@macqel.be>
+
+ * size.c (main): Accept and ignore `-f' option.
+
+2000-05-13 Alan Modra <alan@linuxcare.com.au>
+
+ * bucomm.h (gettext, dgettext, dcgettext, textdomain,
+ bindtextdomain): Replace defines with those from intl/libgettext.h
+ to quieten gcc warnings.
+
+2000-05-12 H.J. Lu <hjl@gnu.org>
+
+ * nlmconv.c (temp_filename): Removed.
+
+ * nlmconv.c (link_inputs): Use make_temp_file () instead of
+ choose_temp_base ().
+ * objdump.c (display_target_list): Likewise.
+ (display_info_table): Likewise.
+
+2000-05-08 Alan Modra <alan@linuxcare.com.au>
+
+ * objcopy.c (setup_section): Add const and gettext calls for err.
+
+2000-05-02 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (get_osabi_name): Handle ELFOSABI_NONE instead of
+ ELFOSABI_SYSV. Also handle ELFOSABI_NETBSD, ELFOSABI_HURD,
+ ELFOSABI_SOLARIS, ELFOSABI_MONTEREY, ELFOSABI_IRIX,
+ ELFOSABI_FREEBSD, ELFOSABI_TRU64, ELFOSABI_MODESTO
+ and ELFOSABI_OPENBSD.
+
+2000-05-02 Kazu Hirata <kazu@hxi.com>
+
+ * coffgrok.c: Add ATTRIBUTE_UNUSED as appropriate.
+ * srconv.c: Likewise.
+ * sysdump.c: Likewise.
+
+2000-04-23 Denis Chertykov <denisc@overta.ru>
+
+ * readelf.c (guess_is_rela): AVR uses RELA relocations.
+ (get_machine_name): machine name for EM_AVR added.
+
+2000-04-21 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
+
+ * Makefile.am (readelf.o): Add elf/ia64.h.
+ * Makefile.in: Rebuild.
+ * readelf.c: Include elf/ia64.h.
+ (guess_is_rela, dump_relocations): Handle EM_IA_64.
+
+2000-04-17 Timothy Wall <twall@cygnus.com>
+
+ * objdump.c (disassemble_data): Set octets per byte *after*
+ resolving arch/mach for binary files.
+
+2000-04-14 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * arlex.l: Add directives to increase lex buffer size.
+
+ * objdump.c, readelf.c: Don't include strarg.h or varargs.h. They are
+ already included by bucomm.h.
+
+2000-04-10 Philippe De Muyter <phdm@macqel.be>
+
+ * readelf.c (dynamic_segment_mips_val): Call `sprintf', not
+ `strftime' since strftime is not available on all systems.
+ (process_mips_specific): Ditto.
+
+2000-04-07 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add
+ --enable-build-warnings option.
+ * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions.
+ * Makefile.in, configure: Re-generate.
+
+2000-04-06 Alan Modra <alan@linuxcare.com.au>
+
+ * addr2line.c: Update copyright.
+ * objcopy.1: Likewise, and title.
+ * strings.1: Likewise.
+
+ * version.c (print_version): Add 2000.
+
+ * rddbg.c (read_section_stabs_debugging_info): Don't use
+ bfd_size_type for strx to avoid printf problems if BFD64.
+
+ * bucomm.c: (report): Remove `static'.
+ Move inclusion of stdarg.h/vararg.h from here.
+ * bucomm.h: To here.
+ (CONST): Change all occurences to const.
+ (report): Declare it.
+ (bfd_fatal): Add ATTRIBUTE_NORETURN.
+ (fatal): Add ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN.
+ (non_fatal): Add ATTRIBUTE_PRINTF_1.
+
+ * ar.c (main): Use fatal or non_fatal instead of fprintf.
+ Correct a typo in an error message.
+ (do_quick_append): Use non_fatal instead of fprintf.
+ (move_members): Use fatal instead of fprintf, exit.
+ * coffdump.c (main): Same here.
+
+ * dlltool.c (display): Delete.
+ (warn): Delete.
+ (inform): Use `report' instead of `display'.
+ (rvaafter): Remove trailing \n from fatal error msg.
+ (rvabefore): Ditto.
+ (asm_prefix): Ditto.
+ (yyerror): Replace `warn' with `non_fatal', and remove \n.
+ (def_name): Likewise.
+ (run): Likewise.
+ (scan_all_symbols): Likewise.
+ (gen_lib_file): Likewise.
+ (def_library): Likewise. Remove extra program_name too.
+ (run): Remove \n from inform strings.
+ (scan_drectve_symbols): Likewise.
+ (add_excludes): Likewise.
+ (scan_open_obj_file): Likewise.
+ (gen_exp_file): Likewise.
+ (gen_lib_file): Likewise.
+ (process_duplicates): Likewise.
+
+ * Makefile.am (dllwrap_SOURCES): Add version.c.
+ * dllwrap.c (program_version): Delete.
+ (print_version): Delete.
+ (display): Always print trailing \n.
+ (warn): New.
+ (delete_temp_files): Use warn instead of fprintf. Use gettext.
+ (run): Here too.
+ (main): And here.
+ (usage): gettext'ify.
+ (long_options): Add missing initialisers.
+
+ * nlmconv.c (main): Use fatal/non_fatal instead of fprintf.
+ (select_output_format): Likewise.
+ (powerpc_mangle_relocs): Likewise.
+ (link_inputs): Likewise.
+
+ * nm.c (set_print_radix): Use fatal instead of fprintf, exit.
+ (set_output_format): Likewise.
+ (main): Use non_fatal instead of fprintf.
+ (display_rel_file): Likewise.
+
+ * objdump.c (slurp_symtab): Use non_fatal instead of fprintf.
+ (slurp_dynamic_symtab): Same here.
+ (disassemble_data): And here.
+ (read_section_stabs): And here.
+ (read_section_stabs): And here.
+ (dump_bfd): And here.
+ (main): And here.
+ (objdump_sprintf): Use fatal instead of fprintf, exit.
+ (disassemble_data): Same here.
+
+ * rdcoff.c (parse_coff_type): Use non_fatal instead of fprintf.
+ (parse_coff_struct_type): Same here.
+ (parse_coff_enum_type): And here.
+ (parse_coff): And here.
+ * rddbg.c (read_debugging_info): And here.
+ * size.c (main): And here.
+ * windres.c (format_from_name): And here.
+ * wrstabs.c (stab_write_symbol): Here too.
+ (write_stabs_in_sections_debugging_info): And here.
+ (stab_int_type): And here.
+ (stab_struct_field): And here.
+ (stab_typdef): And here.
+
+ * rescoff.c (read_coff_rsrc): Use fatal instead of fprintf, exit.
+ * srconv.c (main): Same here.
+ * strings.c (main): And here.
+ (integer_arg): And here.
+ * sysdump.c (main): And here.
+
+2000-04-06 Timothy Wall <twall@cygnus.com>
+
+ * objdump.c (dump_section_header): Print CLINK and BLOCK flags.
+
+2000-04-06 Jason Merrill <jason@yorick.cygnus.com>
+
+ * readelf.c (decode_location_expression): Loop through multiple
+ operations.
+ (read_and_display_attr): Pass in length.
+
+ * readelf.c (read_and_display_attr): Add CU offset to references.
+ (display_debug_info): Pass it in.
+
+2000-04-06 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (decode_ARM_machine_flags): New function.
+ (get_machine_flags): Call decode_ARM_machine_flags for ARM
+ targets.
+
+ (get_machine_name): Catch EM_AVR
+
+2000-04-05 Alan Modra <alan@linuxcare.com.au>
+
+ * binutils.texi: Remove optional `=' from long options that have
+ an `=' in the argument.
+ * objcopy.1: Here too. Remove extra space on discard-all.
+
+ * binutils.texi (objcopy): Mention --redefine-sym.
+ * objcopy.1: Here too.
+ * NEWS: And here.
+
+ * objcopy.c (parse_flags): Split off flag names from error message
+ gettext as they are not translated.
+ (copy_main): Similarly split off option name for --add-section,
+ --set-section-flags, --change-section-vma, --change-section-lma
+ error messages.
+ Some white space changes.
+
+ from Matthew Benjamin <matt@linuxbox.nu>
+ * objcopy.c (struct redefine_node): New.
+ (redefine_sym_list): New.
+ (redefine_list_append): New.
+ (lookup_sym_redefinition): New.
+ (OPTION_REDEFINE_SYM): New.
+ (copy_options): Add --redefine-sym option.
+ (copy_usage): Mention it.
+ (filter_symbols): Rename symbols on redefine_sym_list.
+ (copy_object): Call filter_symbols if redefine_sym_list != NULL.
+ (copy_main): Handle OPTION_REDEFINE_SYM.
+
+2000-04-04 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (process_symbol_table): Correctly read in symbol
+ versioning information.
+
+2000-04-04 Alan Modra <alan@linuxcare.com.au>
+
+ * po/binutils.pot: Regenerate.
+
+ * addr2line.c (usage): Restore translated part of bug string.
+ * ar.c (usage): Likewise.
+ * nlmconv.c (show_usage): Likewise.
+ * nm.c (usage): Likewise.
+ * objcopy.c (copy_usage): Likewise.
+ (strip_usage): Likewise.
+ * objdump.c (usage): Likewise.
+ * readelf.c (usage): Likewise.
+ * size.c (usage): Likewise.
+ * strings.c (usage): Likewise.
+ * windres.c (usage): Likewise.
+
+ * Makefile.am (MKDEP): Use gcc -MM rather than mkdep.
+ (DEP): Quote when passing vars to sub-make. Add warning
+ message to end.
+ (DEP1): Rewrite for "gcc -MM".
+ (CLEANFILES): Add DEP2.
+ Update dependencies.
+ * Makefile.in: Regenerate.
+
+2000-04-04 H.J. Lu <hjl@gnu.org>
+
+ * Makefile.am (GENERATED_HFILES): Add rcparse.h
+ (arparse.h): Depend on arparse.c
+ (defparse.h, nlmheader.h, rcparse.h, sysinfo.h): Similarly.
+
+2000-04-03 H.J. Lu (hjl@gnu.org)
+
+ * size.c (usage): Use REPORT_BUGS_TO.
+
+2000-04-03 Alan Modra <alan@linuxcare.com.au>
+
+ * bucomm.h: #include "bin-bugs.h"
+ * addr2line.c (usage): Use REPORT_BUGS_TO.
+ * ar.c (usage): Likewise.
+ * nlmconv.c (show_usage): Likewise.
+ * nm.c (usage): Likewise.
+ (OPTION_TARGET): Define.
+ (long_options): Use OPTION_TARGET rather than 200.
+ (main): Likewise.
+
+ * objcopy.c (copy_usage): Use REPORT_BUGS_TO.
+ (strip_usage): Likewise.
+ * objdump.c (usage): Likewise.
+ * readelf.c (usage): Likewise.
+ * strings.c (usage): Likewise.
+ * windres.c (usage): Likewise.
+
+2000-03-31 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * readelf.c: Include sys/types.h before sys/stat.h for ultrix.
+
+2000-03-27 Nick Clifton <nickc@cygnus.com>
+
+ * rddbg.c (read_section_stabs_debugging_info): Catch out of range
+ string offsets in corrupt stabs entries.
+
+2000-03-27 Alan Modra <alan@linuxcare.com.au>
+
+ * readelf.c: Include elf/avr.h
+ (dump_relocations): Add EM_AVR case.
+
+2000-03-09 Tim Waugh <twaugh@redhat.com>
+
+ * strings.1: Correct '-bytes' to '--bytes'.
+
+2000-03-08 H.J. Lu <hjl@gnu.org>
+
+ * Makefile.am (install-exec-local): Depend on
+ install-binPROGRAMS for parallel make.
+ * Makefile.in: Regenerated.
+
+2000-02-27 Ian Lance Taylor <ian@zembu.com>
+
+ From Brad Lucier <lucier@math.purdue.edu>:
+ * readelf.c (process_dynamic_segment): Add cast to make sure
+ argument to %* is int.
+
+2000-02-25 H.J. Lu <hjl@gnu.org>
+
+ * configure.in (AC_SEARCH_LIBS): Pass m, not -lm.
+
+2000-02-24 Nick Clifton <nickc@cygnus.com>
+
+ * configure.in: Add arm-wince, mips-pe and sh-pe targets.
+ * configure: Regenerate.
+
+ * dlltool.c: Add support for sh-pe and mips-pe targets.
+ * rescoff.c: Add support for sh-pe and mips-pe targets.
+
+2000-02-23 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (get_osabi_name): Handle ELFOSABI_LINUX.
+
+2000-02-22 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (process_symbol_table): Remove use of ELF_ST_OTHER.
+
+2000-02-22 Ian Lance Taylor <ian@zembu.com>
+
+ From Brad Lucier <lucier@math.purdue.edu>:
+ * readelf.c (process_version_sections): Add casts to make sure
+ argument to %* is an int.
+ (process_mips_specific): Add casts to make printf arguments match
+ format.
+
+2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * objdump.c (dump_section_header): Change `opb' to unsigned.
+ (find_symbol_for_address): Same here.
+ (disassemble_data): And here. Change `addr_offset',
+ `stop_offset', `nextstop_offset' to unsigned long.
+ (dump_data): Change opb to unsigned.
+
+2000-02-18 Frank Ch. Eigler <fche@redhat.com>
+
+ * resrc.c: Remove unmatched #if for cygwin.
+
+2000-02-14 Fernando Nasser <fnasser@totem.to.cygnus.com>
+
+ * binutils.texi: Document the change of flavor name from atpcs-special
+ to special-atpcs to prevent name conflict in gdb.
+
+2000-02-08 Timothy Wall <twall@redhat.com>
+
+ * objdump.c (show_line): Fix bug preventing printing of the very
+ first line (line zero) of a file when interlisting source and
+ assembly. Added option to print entire context from start of file
+ when the first line from that file is encountered.
+
+2000-02-03 Timothy Wall <twall@redhat.com>
+
+ * objdump.c (dump_section_header, find_symbol_for_address,
+ show_line, disassemble_bytes, disassemble_data, dump_data):
+ distinguish between octets and bytes.
+
+2000-01-27 Thomas de Lellis <tdel@windriver.com>
+
+ * nm.c (print_symbol_info_bsd): Use bfd_is_undefined_symclass to
+ check to unresolved symbols.
+ (print_symbol_info_sysv): Ditto.
+ (print_symbol_info_posix): Ditto.
+
+ * binutils.texi: Document new 'V' symclass flag for nm.
+
+2000-01-27 Nick Clifton <nickc@redhat.com>
+
+ * binutils.texi (objdump): Document new ARM specific
+ disassembler options.
+
+ * objdump.c (usage): Call disassembler_usage().
+
+2000-01-27 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * readelf.c (get_dynamic_flags): Return buff.
+ (process_dynamic_segment): Don't pass error strings to printf
+ as format arg.
+ (read_and_display_attr): Use lx and ld to print longs.
+ (process_corefile_note_segment): Cast bfd_vma to unsigned long
+ before printing.
+ Update copyright.
+
+2000-01-17 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (get_osabi_name): Recognise ELFOSABI_ARM.
+
+2000-01-15 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * debug.c (debug_name_type): Return DEBUG_TYPE_NULL rather than
+ false.
+ (debug_tag_type): Here too.
+ * ieee.c (ieee_builtin_type): And here.
+ * stabs.c (parse_stab_type, parse_stab_array_type): And here.
+
+2000-01-13 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (get_machine_name): Change EM_S370 to return "IBM
+ System/370".
+
+2000-01-11 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (get_dynamic_type): Remove DT_ENCODING.
+
+2000-01-10 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (get_note_type): Display NT_WIN32PSTATUS notes.
+
+2000-01-07 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * windres.c (long_options): Add --use-temp-file and
+ --no-use-temp-file options.
+ (usage): Document.
+ (main): Handle.
+
+ * windres.h: Update read_rc_file prototype.
+
+ * resrc.c (cpp_temp_file): New static variable.
+ (istream_type): New static variable.
+ (close_pipe): Delete function.
+ (run_cmd): New static function.
+ (open_input_stream): New static function.
+ (close_input_stream): New static function.
+ (look_for_default): Handle DOS directory separator. Use
+ open_input_stream instead of popen.
+ (read_rc_file): Likewise.
+
+ * binutils.texi: Document --use-temp-file, --no-use-temp-file
+ options.
+
+2000-01-04 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c (create_compat_implib): New variable.
+ (gen_exp_file): Use.
+ (make_one_lib_file): Use.
+ (long_options): Add --compat-implib option.
+ (usage): Handle.
+ (main): Handle.
+
+ * dllwrap.c (enum target_type): Rename MINGW32_TARGET to MINGW_TARGET.
+ (main): Use. Don't look for "32" in cygwin and mingw target names.
+
+2000-01-03 Nick Clifton <nickc@cygnus.com>
+
+ * binutils.texi: Document new, ARM specific disassembler
+ command line switch "-M force-thumb".
+
+For older changes see ChangeLog-9899
+
+Copyright (C) 2000-2001 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-0203 b/binutils-2.24/binutils/ChangeLog-0203
new file mode 100644
index 00000000..5b1a37a6
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-0203
@@ -0,0 +1,2187 @@
+2003-12-31 Daniel Jacobowitz <drow@mvista.com>
+
+ * MAINTAINERS: Rename CONFIGURE to BUILD SYSTEM and add myself.
+
+2003-12-29 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (debug_line_pointer_size): Replace with an array
+ called 'debug_line_pointer_sizes'.
+ (num_debug_line_pointer_sizes): New variable.
+ (display_debug_lines): Extract pointer size from the
+ debug_line_pointer_sizes array.
+ (display_debug_loc): Likewise.
+ (prescan_debug_info): Fill in the debug_line_pointer_sizes
+ array.
+
+2003-12-23 Ralf Baechle <ralf@gnu.org>
+ Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * objcopy.c (bfd_flags_to_set, bfd_flags_to_clear): New variables
+ to handle flags for tweaking.
+ (copy_options): New options: impure, pure, readonly-text,
+ writable-text.
+ (copy_usage, copy_object, command_line_switch): Handle the new
+ options.
+ * doc/binutils.texi: Document the new options.
+
+2003-12-22 Jakub Jelinek <jakub@redhat.com>
+
+ * objdump.c (disassemble_bytes): Subtract rel_offset from printed
+ reloc address.
+ (disassemble_section): Set rel_offset to section->vma instead of
+ pinfo->buffer_vma.
+
+2003-12-19 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
+
+ * readelf.c (guess_is_rela): Changed m32r's default type to RELA.
+
+2003-12-11 Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (strip_usage): Add --only-keep-debug.
+ (copy_usage): Likewise.
+
+2003-12-04 Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (copy_object): Do not copy the object if the
+ output file's format cannot be set to that of the input file.
+ If the input file's format is unknown, fail.
+
+2003-11-28 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * cxxfilt.c (usage): Mention new -p/--no-params options.
+
+2003-11-28 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am (install-exec-local): Remove common term from string
+ comparison.
+ * Makefile.in: Regenerate.
+ * doc/Makefile.am: Don't use $<.
+ * doc/Makefile.in: Regenerate.
+
+2003-11-27 Nick Clifton <nickc@redhat.com>
+
+ * rename.c (smart_rename): Make sure that we have write
+ permission on the destination file before renaming.
+
+2003-11-26 Daniel Jacobowitz <drow@mvista.com>
+ Nick Clifton <nickc@redhat.com>
+
+ * readelf.c: Add a comment describing the difference between
+ readelf and objdump.
+ * doc/binutils.texi (readelf): Likewise.
+
+2003-11-25 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * doc/binutils.texi (dlltool): Document dlltool --temp-prefix
+ option.
+ * dlltool.c (usage): Likewise.
+
+2003-11-22 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * cxxfilt.c (long_options): Add --no-params.
+ (main): Handle -p/--no-params.
+ * doc/binutils.texi (c++filt): Document -p/--no-params.
+
+2003-11-19 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c: Wrap long lines, init vars separately from decl.
+ (disassemble_section): Reset require_sec after call to
+ find_symbol_for_address.
+
+2003-11-14 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (find_symbol_for_address): Change parameters so
+ that the entire disassemble_info structure is passed, not just
+ a few fields. Use the symbol_is_valid field to check the
+ validity of located symbols and continue searching if they are
+ not valid.
+ (objdump_print_addr): Alter parameters passed to
+ find_symbol_for_address.
+ (objdump_symbol_at_address): Likewise.
+ (disassemble_section): Likewise. Also use symbol_is_valid
+ function to check the validity of located symbols.
+
+2003-11-13 Tobias Burnus <tobias.burnus@physik.fu-berlin.de>
+
+ * ar.c (open_inarch): Emit a warning when an archive is created
+ (only shown with -v) in order to confrom to POSIX specification.
+
+2003-11-11 Wang Li <charles@linux.net.cn>
+
+ * objcopy.c (wildcard): New variable. True if wildcard pattern
+ matching is allowed in symbol names.
+ (strip_options): Add -w option to enable wildcard pattern
+ matching.
+ (copy_options): Likewise.
+ (copy_usage): Mention new switch.
+ (strip_usage): Likewise.
+ (is_specified_symbol): If performing wildcard matches use fnmatch
+ to compare symbol names with entries on the symbol list.
+ (strip_main): Accept -w switch.
+ (copy_main): Likewise.
+ * Makefile.am: Add dependency on fnmatch.h for objcopy.c
+ * Makefile.in: Regenerate.
+ * doc/binutils.texi: Document new switch.
+ * NEWS: Mention new switch.
+
+2003-11-11 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c: Revert rev 1.81 commit.
+
+2003-11-10 Tobias Burnus <tobias.burnus@physik.fu-berlin.de>
+
+ * ar.c (print_contents): Remove "member" from verbose output in
+ order to conform to POSIX specification.
+
+2003-11-10 Alan Modra <amodra@bigpond.net.au>
+
+ * README: Expand bug reporting information.
+
+2003-11-07 Jonathan R. Grant <jg-binutils@jguk.org>
+
+ * bucomm,c (get_file_size): New function. Returns the size of a
+ file.
+ * bucomm.h: Add prototype for get_file_size.
+ * addr2line.c (process_file): Use new function.
+ * ar.c (main, ranlib_only, ranlib_touch): Likewise.
+ * nm.c (display_file): Likewise.
+ * objcopy.c (add_specific_symbols, copy_file, strip_main,
+ copy_main): Likewise.
+ * objdump.c (display_file): Likewise.
+ * size.c (display_file): Likewise.
+ * strings.c (strings_file): Likewise.
+ * readelf.c (process_file): Use similar code to get_file_size.
+
+2003-11-06 Bruno Rohee <bruno@rohee.com>
+
+ * ieee.c: Fix "the the" typo.
+ * stabs.c: Likewise.
+
+2003-10-30 Marshall T. Vandegrift <llasram@wuli.nu>
+
+ * readelf.c (dump_section): Do not dump the contents of SHT_NOBITS
+ sections - they have no file space assigned to their contents.
+
+2003-10-28 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * readelf.c (dump_section): Don't display DEL characters.
+
+2003-10-27 Kazu Hirata <kazu@cs.umass.edu>
+
+ * ChangeLog: Fix typos.
+ * ChangeLog-9197: Likewise.
+ * ChangeLog-9899: Likewise.
+ * NEWS: Likewise.
+ * ar.c: Fix comment typos.
+ * arsup.c: Likewise.
+ * coffgrok.c: Likewise.
+ * debug.c: Likewise.
+ * debug.h: Likewise.
+ * dlltool.c: Likewise.
+ * ieee.c: Likewise.
+ * nm.c: Likewise.
+ * objdump.c: Likewise.
+ * prdbg.c: Likewise.
+ * readelf.c: Likewise.
+ * resrc.c: Likewise.
+ * sysinfo.y: Likewise.
+ * windres.c: Likewise.
+
+2003-10-27 Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (copy_section): Do not complain when a target does not
+ support relocations.
+ (mark_symbols_used_in_relocations): Likewise.
+
+2003-10-14 Anil Paranjpe <anilp1@KPITCummins.com>
+
+ * objcopy.c (copy_main): Reads machine flags from arch_info
+ structure.
+
+2003-10-20 Andrew Cagney <cagney@redhat.com>
+
+ * coffgrok.h (coff_section): Replace 'struct sec" with "struct
+ bfd_section".
+
+2003-10-07 Nathan Sidwell <nathan@codesourcery.com>
+
+ * objdump.c (read_section_stabs): Just read one section, return
+ pointer to it. Add size parameter.
+ (print_section_stabs): Add string offset parameter. Adjust.
+ (struct stab_section_names): Add string offset member.
+ (find_stabs_sections): Correct check for split section suffix,
+ adjust read_section_stabs and print_section_stabs calls.
+ (dump_stabs_section): Clear string_offset, free string table.
+
+2003-10-01 Martin Fuchs <martin-fuchs@gmx.net>
+
+ * resrc.c (define_icon): Fix storage of color attributes 'planes' and
+ 'bit count' in icon groups.
+
+2003-09-30 Chris Demetriou <cgd@broadcom.com>
+
+ * NEWS: Add an indication of the cutoff for 2.14.
+
+2003-09-30 Chris Demetriou <cgd@broadcom.com>
+
+ * readelf.c (get_machine_flags): Handle E_MIPS_ARCH_64R2.
+
+2003-09-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (dump_relocations): Support SHN_IA_64_ANSI_COMMON.
+ (get_symbol_index_type): Likewise.
+
+2003-09-25 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (process_version_sections): Indent version names.
+
+2003-09-15 Anthony Green <green@redhat.com>
+
+ * dlltool.c (prefix_encode): Fix ISO C90 conversion.
+ (dlltmp): Ditto.
+ (dtab): Ditto.
+
+2003-09-14 Andreas Jaeger <aj@suse.de>
+
+ * addr2line.c: Convert to ISO C90 prototypes, change PTR, remove
+ unneeded (void *) casts.
+ * ar.c: Likewise.
+ * arlex.l: Likewise.
+ * arparse.y: Likewise.
+ * arsup.c: Likewise.
+ * binemul.c: Likewise.
+ * binemul.h: Likewise.
+ * bucomm.c: Likewise.
+ * bucomm.h: Likewise.
+ * budbg.h: Likewise.
+ * budemang.c: Likewise.
+ * budemang.h: Likewise.
+ * coffdump.c: Likewise.
+ * coffgrok.c: Likewise.
+ * cxxfilt.c: Likewise.
+ * debug.c: Likewise.
+ * debug.h: Likewise.
+ * deflex.l: Likewise.
+ * dlltool.c: Likewise.
+ * dlltool.h: Likewise.
+ * dllwrap.c: Likewise.
+ * emul_aix.c: Likewise.
+ * filemode.c: Likewise.
+ * ieee.c: Likewise.
+ * nlmconv.c: Likewise.
+ * nlmconv.h: Likewise.
+ * nlmheader.y: Likewise.
+ * nm.c: Likewise.
+ * prdbg.c: Likewise.
+ * rclex.l: Likewise.
+ * rcparse.y: Likewise.
+ * rdcoff.c: Likewise.
+ * rddbg.c: Likewise.
+ * rename.c: Likewise.
+ * resbin.c: Likewise.
+ * rescoff.c: Likewise.
+ * resrc.c: Likewise.
+ * size.c: Likewise.
+ * srconv.c: Likewise.
+ * stabs.c: Likewise.
+ * strings.c: Likewise.
+ * sysdump.c: Likewise.
+ * sysinfo.y: Likewise.
+ * syslex.l: Likewise.
+ * unwind-ia64.c: Likewise.
+ * unwind-ia64.h: Likewise.
+ * version.c: Likewise.
+ * windres.c: Likewise.
+ * windres.h: Likewise.
+ * winduni.c: Likewise.
+ * wrstabs.c: Likewise.
+
+2003-09-10 James E Wilson <wilson@specifixinc.com>
+
+ * MAINTAINERS: Update my e-mail address.
+
+2003-09-09 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * MAINTAINERS: Update my e-mail address.
+
+2003-09-04 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Make it clear what should be done with patches to
+ the top level configure files (other than config.guess and
+ config.sub). Add binutils@sources.redhat.com as an address to
+ which patches can be sent.
+
+2003-09-04 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (get_machine_flags): Recognise V850E1 machine type.
+
+2003-09-03 Andrew Cagney <cagney@redhat.com>
+
+ * objdump.c: Refer to init_disassemble_info in comments.
+ (disassemble_data): Replace INIT_DISASSEMBLE_INFO with
+ init_disassemble_info.
+
+2003-09-03 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (struct objdump_disasm_info): Add new fields
+ 'dynrelbuf', 'dynrelcount' and 'disassemble_fn'.
+ (process_section_p): New function: Returns TRUE if a section
+ can be dumped.
+ (disassemble_section): New function: Contains the body of
+ disassemble_data(), but just for one section.
+ (disassemble_data): Use bfd_map_over_sections to walk section
+ chain.
+ (find_stabs_section): New function: Find a stabs containing
+ section and then dump it.
+ (dump_stabs_section): New function: Use bfd_map_over_sections
+ to find the section to dump.
+ (dump_stabs): Use dump_stabs_section.
+ (dump_section): New function: Display the contents of a
+ section.
+ (dump_data): Use bfd_map_over_sections to display section
+ contents.
+ (dump_relocs_in_section): Display the relocs in a given section.
+ (dump_relocs): Use bfd_map_over_sections to display relocs.
+ (adjust_addresses): New function: Adjust the vma and lma of
+ sections.
+ (dump_bfd): Use bfd_map_over_sections.
+ * doc/binutils.texi: Document the "objdump -s" (no longer)
+ dumps empty sections.
+
+2003-08-24 Jonathan R. Grant <jg-binutils@jguk.org>
+
+ * objdump.c: Improve comments/documentation.
+ dump_data: Eliminate duplicate function calls to bfd_section_size.
+
+2003-09-02 Alan Modra <amodra@bigpond.net.au>
+
+ * MAINTAINERS: Move Dave Anglin's entry to where it belongs.
+
+2003-08-21 Nick Clifton <nickc@redhat.com>
+
+ * po/tr.po: Updated Turkish translation.
+
+2003-08-14 Alan Modra <amodra@bigpond.net.au>
+
+ * dep-in.sed: Remove libintl.h.
+ * Makefile.am (POTFILES.in): Unset LC_COLLATE.
+ Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2003-08-11 Ian Lance Taylor <ian@airs.com>
+
+ * readelf.c (process_archive): Fix error handling. Remove memory
+ leak.
+
+ * readelf.c: Add ability to read archives.
+ (archive_file_offset): New variable.
+ (archive_file_size): New variable.
+ (get_data): Include archive_file_offset in file offset
+ calculation when fseeking.
+ (process_program_headers): Likewise.
+ (process_symbol_table): Likewise.
+ (process_dynamic_segment): Handle computation of end of file
+ position when the file is in an archive.
+ (process_object): New function. Contains the body of
+ process_file().
+ (process_archive): New function. Call process_object on each
+ member of an archive.
+ (process_file): Detect archives and handle appropriately.
+ * Makefile.am: Add dependency on aout/ar.h for readelf.c
+ * Makefile.in: Regenerate.
+ * NEWS: Document readelf's new ability.
+ * doc/binutils: Alter text to say that readelf supports archives
+ and 64-bit ELF files.
+
+2003-08-08 Nick Clifton <nickc@redhat.com>
+
+ * po/fr.po: Updated French translation.
+
+2003-08-05 Alan Modra <amodra@bigpond.net.au>
+
+ * objcopy.c: Remove unnecessary prototypes and casts.
+ * objdump.c: Remove unnecessary casts.
+ * readelf.c: Convert to C90. Remove unnecessary prototypes and casts.
+ (get_osabi_name): Move so we don't need a forward declaration.
+
+2003-08-04 Bradley Harrington <bharring@us.ibm.com>
+ Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (include_paths, include_path_count): New vars.
+ (usage): Describe --include.
+ (long_options): Add "include".
+ (add_include_path): New function.
+ (struct print_file_list): Make filename const. Add modname.
+ (try_print_file_open, update_source_path): New functions.
+ (show_line): Use them.
+ (main): Handle 'I' option. Don't check for NULL xrealloc arg.
+
+2003-07-30 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c: Remove unnecessary prototypes.
+ (disassemble_bytes): Add rel_offset parameter. Simplify reloc skipping
+ code, and print relocs when dump_dynamic_reloc_info.
+ (disassemble_data): Read and handle dynamic relocs. Correct reloc
+ skip code. Formatting.
+ (dump_bfd): Don't dump dynamic relocs when disassembling.
+
+2003-07-29 Ben Elliston <bje@wasabisystems.com>
+
+ * MAINTAINERS: Remove self as M88k maintainer. Future M88k
+ maintenance defaults to the blanket write privilege maintainers.
+
+2003-07-29 Michael Meissner <gnu@the-meissners.org>
+
+ * MAINTAINERS: Updated my email address.
+
+2003-07-29 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c: Update to ISO C.
+
+2003-07-24 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (disassemble_data): Do not ignore sections without the
+ LOAD flag when disassemble_all is true. Only print a message
+ about disassembling a section if it contains some data.
+
+ * po/fr.po: Updated French translation.
+
+2003-07-23 Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c: Switch to ISO C. Remove debugging code accidentally
+ left in. Some formatting tidy ups.
+
+2003-07-22 Salvador Eduardo Tropea <set@computer.org>
+
+ * objdump.c: New command line option --debugging-tags.
+ * doc/binutils.texi: Document new command line option.
+ * prdbg.c: Code to print the debug info as tags compatible
+ with ctags.
+ * budbg.h: Adjust prototype.
+ * NEWS: Mention new switch
+
+2003-07-18 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (main) :Accept multiple -M switch.
+ * doc/binutils.texi: Document that multiple -M switches are
+ accepted and that a single -M switch can contain comma
+ separated options.
+
+2003-07-17 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (main): Issue a warning message if multiple -M
+ switches are used.
+
+ * doc/binutils.texi (objdump): Update documentation about -M
+ option.
+
+2003-07-17 Nick Clifton <nickc@redhat.com>
+
+ * po/es.po: New Spanish translation.
+
+2003-07-11 Alan Modra <amodra@bigpond.net.au>
+
+ * po/binutils.pot: Regenerate.
+
+2003-07-05 Christopher Faylor <cgf@redhat.com>
+
+ * dlltool.c (prefix_encode): Use a fixed length for alpha.
+
+2003-07-04 Christopher Faylor <cgf@redhat.com>
+
+ * dlltool.c (prefix_encode): New function. Encode temp file prefix
+ from pid.
+ (dlltmp): Pass address of pointer being alloced or suffer neverending
+ mallocs.
+ (make_one_lib_file): Allocate enough space for new longer stub names.
+ (gen_lib_file): Ditto.
+ (main): Generate the temp file prefix from the pid if prefix was not
+ specified on the command line.
+
+2003-07-04 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (get_data): Print (unsigned) hex values for size and
+ offset in error messages.
+ (process_section_headers): If the string table could not be
+ allocated, do not continue.
+
+2003-07-01 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (dynamic_segment_ia64_val): Print address and newline
+ for sections by default. Comment fix.
+
+2003-06-28 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * rcparse.y (res_text_field): New res_id variable.
+ (res_null_text): New static const struct res_id object,
+ with empty unicode name field.
+ (control): Pop parsing of optresidc up one level. Set
+ res_text_field to $2 except for controls which do not accept
+ a text field. Set res_text_field to res_null_text for the
+ special cases (viz. COMBOBOX, EDITTEXT, LISTBOX, SCROLLBAR).
+ (control_params): Adjust to use res_text_field rather
+ than optresidc.
+ (COMBOBOX): Add comment about discrepency between documented
+ vs. observed default style.
+ * resrc.c (define_control): Make first param const.
+ * windres.h (define_control): Adjust prototype.
+
+2003-06-27 Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (copy_object): Replace call to
+ bfd_create_gnu_debuglink_section with separate calls to
+ bfd_add_gnu_debuglink_section and
+ bfd_fill_in_gnu_debuglink_section, separated by a walk over the
+ symbol tables.
+
+2003-06-26 Roland McGrath <roland@redhat.com>
+
+ * readelf.c (loadaddr): Variable removed.
+ (dynamic_info, version_info): Fix type long -> bfd_vma.
+ (program_headers): New variable.
+ (get_program_headers): New function, broken out of
+ process_program_headers.
+ (process_program_headers): Call it. Don't set `loadaddr'.
+ (slurp_ia64_unwind_table): Use get_program_headers.
+ (process_corefile_note_segments): Likewise.
+ (offset_from_vma): New function.
+ (process_relocs, process_dynamic_segment): Call that instead of
+ subtracting `loadaddr'.
+ (process_version_sections, process_symbol_table): Likewise.
+ (process_mips_specific): Likewise.
+
+2003-06-26 Nick Clifton <nickc@redhat.com>
+
+ * objcopy (enum strip_action): Add STRIP_NONDEBUG.
+ (OPTION_ONLY_KEEP_DEBUG): New.
+ (strip_options): Add --only-keep-debug.
+ (copy_options): Likewise.
+ (is_strip_section): Invert return value if STRIP_NONDEBUG is
+ active.
+ (copy_object): Do not copy private data when STRIP_NONDEBUG is
+ active.
+ (setup_section): Likewise.
+ (strip_main): Handle --only-keep-debug.
+ (copy_main): Likewise.
+ * NEWS: Mention new switch
+ * doc/binutils.texi: Document new switch.
+
+2003-06-25 Alan Modra <amodra@bigpond.net.au>
+
+ * NEWS: Correct spelling of "relocatable".
+ * objdump.c: Likewise.
+ * sysroff.info: Likewise.
+
+2003-06-19 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (print_vma): When printing DEC_5 values, if the
+ number is bigger than 99999 switch to using hexadecimal
+ notation.
+
+2003-06-11 Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (gnu_debuglink_filename): New variable.
+ (OPTION_ADD_GNU_DEBUGLINK): New switch
+ (copy_options): Describe --add-gnu-debuglink switch.
+ Mention that --strip-debug removes sections as well.
+ (is_strip_section): Process the sections removed and kept
+ lists before checking for debugging sections.
+ (add_redefine_syms_file): Make function static.
+ (copy_object): Use is_strip_section.
+ Check to see if a .gnu_debuglink section should be added. If
+ so, call bfd_add_gnu_debuglink.
+ (setup_section): Use is_strip_section.
+ (copy_section): Use is_strip_section.
+ (copy_main): Handle OPTION_ADD_GNU_DEBUGLINK.
+ * NEWS: Mention new objcopy switch.
+ * doc/binutils.texi: Document new switch.
+
+2003-06-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ * po/Make-in (DESTDIR): New.
+ (install-data-yes): Support $(DESTDIR).
+ (uninstall): Likewise.
+
+2003-06-11 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.in: Regenerate.
+
+2003-05-23 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (get_segment_type): Handle PT_GNU_STACK.
+
+2003-06-03 Elias Athanasopoulos <elathan@phys.uoa.gr>
+
+ * NEWS: Document the new BSD/POSIX single-character mapping for
+ .comment/.note sections.
+
+2003-06-02 Chris Demetriou <cgd@broadcom.com>
+ Jason Thorpe <thorpej@wasabisystems.com>
+
+ * objcopy.c (redefine_list_append): Add an argument that
+ indicates the context from which this function is being
+ called. Change all callers.
+ (copy_options): Add a new option, --redefine-syms.
+ (copy_usage): Document new option.
+ (copy_main): Handle the --redefine-syms option.
+ * doc/binutils.text (objcopy): Document new option.
+
+2003-05-31 Richard Henderson <rth@redhat.com>
+
+ * readelf.c (byte_get_signed): New.
+ (get_encoded_value): New.
+ (display_debug_frames): Use it. Always pre-process opcodes.
+
+2003-05-20 Michal Ludvig <mludvig@suse.cz>
+
+ * readelf.c (display_debug_frames): Print both registers
+ for DW_CFA_register.
+
+2003-05-16 Kelley Cook <kelleycook@wideopenwest.com>
+
+ * configure.in: Accept i[3-7]86 variants. Escape '[]' for
+ i[3-7]86-*-interix.
+ * configure.in: Regenerate.
+
+2003-05-13 Michael Eager <eager@mvista.com>
+
+ * objcopy.c: Treat identical src/dst file names as if only one
+ entered. One Windows creating an output file of the same name as
+ the input file will delete the input file before it is read.
+
+2003-05-12 Salvador Eduardo Tropea <salvador@inti.gov.ar>
+
+ * debug.c (debug_get_real_type): Extend test for circular debug
+ references.
+
+2003-05-12 Nick Clifton <nickc@redhat.com>
+
+ * configure.in (ALL_LINGUAS): Add zh_CN.
+ * configure: Regenerate.
+ * po/zh_CN.po: New file: Chinese (simplified) translation.
+
+2003-05-11 Jason Eckhardt <jle@rice.edu>
+
+ * MAINTAINERS: Update my mail address.
+
+2003-05-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (dump_relocations): Enlarge the type field in wide
+ mode by one character.
+
+2003-05-03 Richard Henderson <rth@redhat.com>
+
+ * readelf.c (struct Frame_Chunk): Add cfa_exp.
+ (frame_display_row): Just print "exp" for cfa or register
+ defined by a location expression.
+ (display_debug_frames): Handle DW_CFA_def_cfa_expression,
+ DW_CFA_expression, DW_CFA_MIPS_advance_loc8.
+
+2003-04-30 H.J. Lu <hjl@gnu.org>
+
+ * objdump.c (only): Change it to char **.
+ (only_size): New.
+ (only_used): New.
+ (disassemble_data): Check only as an array.
+ (dump_data): Likewise.
+ (dump_relocs): Likewise.
+ (main): Treat only as an array.
+
+2003-04-24 Dimitrie O. Paun <dpaun@rogers.com>
+
+ * doc/binutils.texi: Fix the documentation for the -fo option.
+
+2003-04-23 J"orn Rennecke <joern.rennecke@superh.com>
+
+ * readelf.c (get_machine_name) <EM_SH>: Amend return value
+ to refer to SuperH.
+
+ * readelf.c (decode_location_expression): Don't add a trailing ';'.
+
+2003-04-23 Dimitrie O. Paun <dpaun@rogers.com>
+ Nick Clifton <nickc@redhat.com>
+
+ * windres.c (long_options): Move close to main, where it is used.
+ Add 'input' and 'output' long options.
+ (main): Accept "-fo" as an alias for "-o". This is for rc
+ comptibility.
+ * doc/binutils.texi: Mention that -fo is accepted as an alias for
+ -o, but discourage its use.
+
+2003-04-22 Dimitrie O. Paun <dpaun@rogers.com>
+
+ * windres.c (format_from_name): Make the exit on error
+ behaviour optional.
+ (main): Rename the -I option to -J. Introduce -I as a synonym
+ for --include-dir. For backwards compatibility also support the
+ old -I behaviour, but issue a deprecation warning.
+ * doc/binutils.texi: Rename -I to -J. Document the new behaviour
+ of the -I option.
+
+2003-04-22 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
+
+ * readelf.c: Replace references to Mitsubishi M32R with
+ references to Renesas M32R.
+
+2003-04-15 Rohit Kumar Srivastava <rohits@kpitcummins.com>
+
+ * readelf.c: Replace occurrances of 'Hitachi' with 'Renesas'.
+
+2003-04-09 Alexandre Oliva <aoliva@redhat.com>
+
+ * doc/binutils.texi (objdump) [--debugging]: Suggest readelf -w
+ for debugging information types not supported by objdump.
+
+2003-04-09 Bernd Jendrissek <berndj@prism.co.za>
+
+ * configure.in: Recognize canonical form of i[3-6]86-pe*.
+ * configure: Regenerate.
+
+2003-04-09 Alexandre Oliva <aoliva@redhat.com>
+
+ * readelf.c (display_debug_info): Apply RELA relocations on the
+ entire section.
+ (byte_put_little_endian, byte_put_big_endian): New functions.
+ (byte_put): New variable.
+ (get_file_header): Initialize it.
+
+2003-04-05 Dimitrie O. Paun <dpaun@rogers.com>
+
+ * windres.c: Add -l for compatibility with wrc, and rc.
+ Use the short option as a key for long options that have
+ a synonymous short option.
+ * doc/binutils.texi: Added -l to the list of options.
+
+2003-04-03 Dimitrie O. Paun <dpaun@rogers.com>
+
+ * windres.c: Add -U for compatibility with wrc, rc, and cpp.
+ (main): Just pass the -U option down to the preprocessor.
+ * doc/binutils.texi: Added -U to the list of options.
+
+2003-04-01 Dimitrie O. Paun <dpaun@rogers.com>
+
+ * windres.c (usage): Report -r option.
+ (main): Ignore the -r option.
+ * doc/binutils.texi: Add -r to the list of options.
+
+2003-04-01 Bob Wilson <bob.wilson@acm.org>
+
+ * MAINTAINERS: Add myself as Xtensa maintainer.
+
+2003-04-01 Bob Wilson <bob.wilson@acm.org>
+
+ * readelf.c: Include "elf/xtensa.h".
+ (guess_is_rela): Add EM_XTENSA and EM_XTENSA_OLD to list of
+ targets that use RELA relocations.
+ (dump_relocations): Call elf_xtensa_reloc_type for
+ EM_XTENSA and EM_XTENSA_OLD.
+ (get_machine_name): Handle EM_XTENSA and EM_XTENSA_OLD.
+
+2003-04-01 Nick Clifton <nickc@redhat.com>
+
+ * configure.in: Change "arm-pe*" to "arm-*-pe*". Similarly for
+ thumb-pe*, mcore-pe and mcore-*elf.
+ * configure: Regenerate.
+
+2003-03-31 Alexandre Oliva <aoliva@redhat.com>
+
+ * objdump.c (dump_data): Don't truncate the address to long; make
+ the width large enough, and uniform for all entries in a section.
+
+2003-03-31 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c: Include "libiberty.h".
+ (dynamic_relocations): New.
+ (process_relocs): Properly handle dynamic relocation.
+ (process_dynamic_segment): Fill relocation elements in
+ dynamic_info.
+
+2003-03-31 Kevin Buettner <kevinb@redhat.com>
+
+ * readelf.c (read_and_display_attr, read_and_display_attr_value):
+ Add new arguments ``offset_size'' and ``dwarf_version''. Adjust
+ all callers.
+ (display_debug_lines, display_debug_pubnames, display_debug_info)
+ (display_debug_aranges, display_debug_frames, read_and_display_attr)
+ (read_and_display_attr_value): Add 64-bit DWARF support.
+
+2003-03-31 Ian Lance Taylor <ian@airs.com>
+
+ * rcparse.y: Replace uses of 'optstringrc' with 'optresid'.
+ (optresid): Handle a resource id that can be a string or a number.
+ * resrc.c (define_control): Replace 'text' parameter with 'iid' a
+ struct res_id.
+ (define_icon_control): Pass a struct res_id to define_control.
+ * windres.h (define_control): Change prototype.
+
+2003-03-24 Elias Athanasopoulos <elathan@phys.uoa.gr>
+
+ * objcopy (OPTION_FORMATS_INFO): Define.
+ (strip_options): Add "info"/OPTION_FORMATS_INFO option.
+ (copy_options): Likewise.
+ (strip_usage): Add "--info" to usage.
+ (copy_usage): Likewise.
+ (strip_main): Declare formats_info. Iniatilize it to FALSE.
+ Handle "info".
+ (copy_main). Likewise.
+ * doc/binutils.texi. Document the "--info" option for
+ objcopy/strip.
+ * NEWS: Mention the new command line switch.
+
+ * objdump.c (endian_string): Move to bucomm.c.
+ (display_info): Likewise.
+ (display_target_list): Likewise.
+ (display_info_table): Likewise.
+ (display_target_tables): Likewise.
+ (main): Assign the return value of display_info to exit_status.
+ * bucomm.c: Include bfdver.h and libbfd.h
+ (display_target_list): Call bfd_nonfatal instead of nonfatal and
+ return 0 on a non-fatal error, 1 on success.
+ (display_info_table): Likewise.
+ * bucomm.h (display_info): Provide a prototype.
+ * Makefile.am (bucomm.o): Add dependencies on bfdver.h and
+ libbfd.h.
+ * Makefile.in: Regenerate.
+
+2003-03-22 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * dlltool.c (gen_def_file): Put demangled name comments on
+ own line preceding export name.
+
+2003-03-17 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (disassemble_data): Use disasm_info.fprintf_func not
+ printf for emitting new lines.
+
+2003-03-16 Elias Athanasopoulos <elathan@phys.uoa.gr>
+
+ * nm.c (print_symbol_info_bsd): Print the symbol's size instead of
+ the symbol's value when --size-sort is used, unless -S is used.
+ doc/binutils.texi (--size-sort): For non-bsd formats both the
+ value and size of the symbols are displayed.
+
+2003-03-13 Nick Clifton <nickc@redhat.com>
+
+ * po/da.po: Update.
+
+2003-03-12 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Remove Peter Targett as ARC maintainer.
+
+2003-03-10 Ben Elliston <bje@wasabisystems.com>
+
+ * MAINTAINERS: Update my mail address.
+
+2003-03-06 Elias Athanasopoulos <elathan@phys.uoa.gr>
+
+ * stabs.c (BYTES_IN_WORD): Remove definition.
+ * wrstabs.c (BYTES_IN_WORD): Likewise.
+
+2003-03-04 Nick Clifton <nickc@redhat.com>
+
+ * nm.c (main): Print a warning message if --size-sort and
+ --undefined-only are used together.
+
+2003-03-04 Elias Athanasopoulos <elathan@phys.uoa.gr>
+
+ * nm.c (print_symbol): Remove check for undefined_only.
+
+2003-03-03 Nick Clifton <nickc@redhat.com>
+
+ * po/da.po: Installed latest translation.
+
+2003-02-24 Nick Clifton <nickc@redhat.com>
+
+ * README: Update binutils references to 2.13.
+ Add paragraph about using --disable-nls.
+
+2003-02-24 Elias Athanasopoulos <elathan@phys.uoa.gr>
+
+ * doc/binutils.texi (nm --size-sort): Update.
+
+2003-02-21 James E Wilson <wilson@tuliptree.org>
+
+ * MAINTAINERS: Update email address.
+
+2003-02-21 Ian Wienand <ianw@gelato.unsw.edu.au>
+
+ * readelf.c (get_ia64_dynamic_type): New function.
+ (dynamic_segment_ia64_val): New function.
+ (get_dynamic_type): If machine type is EM_IA_64 call
+ get_ia64_dynamic_val.
+ (get_ia64_section_type_name): Handle sections with types in the
+ SHT_IA_64_LOPSREG to SHT_IA_64_HIPSREG range.
+ (get_dynamic_flags): If machine type is EM_IA_64 call
+ dynamic_segment_ia64_val.
+
+2003-02-21 Bob Wilson <bob.wilson@acm.org>
+
+ * doc/binutils.texi: Fix typos and obvious texinfo mistakes. Make
+ section title capitalization more consistent. Update descriptions
+ of various options to be consistent with the code. Fix errors and
+ incomplete list in the description of c++filt format options. Remove
+ information about the linker. Change to be more polite about poor
+ bug reports. Replace FDL appendix with include of fdl.texi.
+ * doc/fdl.texi: New file.
+
+2003-02-21 Roger Sayle <roger@eyesopen.com>
+
+ * objcopy.c (filter_symbols): Fix compilation problems with
+ HP-UX's C compiler.
+
+2003-02-19 Christopher Faylor <cgf@redhat.com>
+
+ * rclex.l (handle_quotes): Fix minor formatting problems introduced in
+ previous change.
+
+2003-02-19 Mark Blackburn <marklist@fangorn.ca>
+
+ * rclex.l (handle_quotes): Handle strings spanning more than one line.
+
+2003-02-12 Bob Wilson <bob.wilson@acm.org>
+
+ * nm.c (usage): Add `java' and `gnat' demangle styles and make
+ quotes consistent.
+ * objdump.c (usage): Ditto. Also fix some typos.
+
+ * readelf.c (parse_args): Include 'H' option in call to getopt_long.
+
+ * debug.c (debug_record_variable): Handle global register variables.
+
+ * stabs.c (parse_stab): For N_SLINE only include
+ function_start_offset if the symbol is within a function;
+ otherwise, the value is absolute.
+
+2003-02-10 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (decode_ARM_machine_flags): Handle the
+ EF_ARM_MAVERICK_FLOAT flag.
+
+2003-02-04 Andreas Schwab <schwab@suse.de>
+
+ * rddbg.c (read_section_stabs_debugging_info): Cast ptrdiff_t to
+ long and use %ld in printf format.
+
+2003-01-28 Richard Sandiford <rsandifo@redhat.com>
+
+ * readelf.c (dump_relocations): Reorder the r_info field for
+ little-endian mips elf64. Move #ifdef BFD64 to cover the new code.
+
+2003-01-21 Daniel Berlin <dan@dberlin.org>
+
+ * readelf.c (display_debug_loc): Skip address base changes.
+
+2003-01-17 Fabio Alemagna <falemagn@aros.org>
+
+ * readelf.c (get_osabi_name): Handle ELFOSABI_AROS, ELFOSABI_OPENVMS
+ and ELFOSABI_NSK.
+
+2003-01-16 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c: Include elf/ppc64.h.
+ (dump_relocations <EM_PPC64>): Use elf_ppc64_reloc_type.
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2003-01-02 Ben Elliston <bje@redhat.com>
+
+ * readelf.c (guess_is_rela): Handle EM_IQ2000.
+ (get_machine_name): Likewise.
+ (dump_relocations): Likewise.
+ * NEWS: Mention IQ2000 support.
+
+2003-01-02 Richard Sandiford <rsandifo@redhat.com>
+
+ * readelf.c (get_machine_flags): Handle E_MIPS_ARCH_32R2.
+
+2002-12-30 Chris Demetriou <cgd@broadcom.com>
+
+ * doc/binutils.texi (objdump): Note MIPS HWR (Hardware Register)
+ changes in MIPS -M options.
+
+2002-12-30 Dmitry Diky <diwil@mail.ru>
+
+ * Makefile.am: Add msp430 target.
+ * Makefile.in: Regenerate.
+ * readelf.c: Add support for msp430 target.
+
+2002-12-27 Chris Demetriou <cgd@broadcom.com>
+
+ * doc/binutils.texi (objdump): Document MIPS -M options.
+
+2002-12-23 Andreas Schwab <schwab@suse.de>
+
+ * readelf.c (main): Reset dump request after each file.
+
+2002-12-23 Nick Clifton <nickc@redhat.com>
+
+ * nlmconv.c (main): Pass TRUE as third argument to
+ bfd_arch_get_compatible.
+
+2002-12-23 Nick Clifton <nickc@redhat.com>
+
+ * strings.c (isgraphic): Replace definition with STRING_ISGRAPHIC
+ macro. Handle 'S' encoding, accepting 8-bit characters.
+ (main): Parse 'S' encoding.
+ (get_char): Accept 'S' encoding.
+ (print_strings): Use STRING_ISGRAPHIC.
+ (usage): Document support of 'S' encoding.
+ * doc/binutils.texi: Document support of 'S' encoding/
+ * NEWS: Mention new feature.
+
+2002-12-20 Alan Modra <amodra@bigpond.net.au>
+
+ * README <building ar>: Don't use libibery's needed_list or
+ required_list, instead link libiberty/*.o.
+
+2002-12-19 Kazu Hirata <kazu@cs.umass.edu>
+
+ * doc/binutils.texi: Fix typos.
+
+2002-12-14 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * doc/binutils.texi: Add missing parenthesis.
+
+2002-12-15 Nick Kelsey <nickk@ubicom.com>
+
+ * objcopy.c: Add --prefix-symbols=<prefix> option to rename all
+ symbols by adding the given prefix to the begining of the symbol
+ name. This is useful to provide name space separation regardless
+ of how the object file was created. Added --prefix-sections=
+ <prefix> and --prefix-alloc-sections=<prefix> options to rename all
+ sections (or all sections with the alloc flag set) by adding the given
+ prefix to the begining of the symbol name.
+ * NEWS: Mention this new feature.
+ * doc/binutils.texi: Document this new feature.
+
+2002-12-13 Alan Modra <amodra@bigpond.net.au>
+
+ * dlltool.c (mcore_elf_gen_out_file): Replace all occurrences of
+ dyn_string_append with dyn_string_append_cstr.
+
+ * emul_aix.c (ar_emul_aix_create): Remove unused function.
+
+2002-12-10 James Cownie <jcownie@etnus.com>
+
+ * readelf.h (get_TAG_name, get_AT_name,
+ read_and_display_attr_value): Add support for UPC extensions to
+ DWARF2 spec.
+ * NEWS: Mention this new support.
+
+2002-12-08 Alan Modra <amodra@bigpond.net.au>
+
+ * NEWS: Mention that bfd no longer declares a "boolean" type.
+
+2002-12-07 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (process_program_headers): When setting loadaddr, don't
+ assume segment size is 4k. Use p_align instead.
+ (loadaddr): Change from int to long.
+ (dynamic_addr, dynamic_info, version_info): Likewise.
+ (process_dynamic_segment <syminsz>): Likewise.
+ (process_dynamic_segment): Adjust print format string.
+ (rela_addr, rela_size): Delete.
+ (process_relocs): Formatting.
+
+2002-12-05 Jim Wilson <wilson@redhat.com>
+
+ * configure.in (OBJDUMP_DEFS): Define SKIP_ZEROES as 16 for IA-64.
+ * configure: Regenerate.
+
+2002-12-04 Ian Lance Taylor <ian@airs.com>
+
+ * MAINTAINERS: Change e-mail address back to airs.com.
+
+2002-12-04 Aldy Hernandez <aldyh@redhat.com>
+
+ * MAINTAINERS: Add self.
+
+2002-11-30 Alan Modra <amodra@bigpond.net.au>
+
+ * addr2line.c, ar.c, arsup.c, binemul.c, binemul.h, bucomm.c, bucomm.h,
+ budbg.h, debug.c, debug.h, dlltool.c, emul_aix.c, ieee.c, nlmconv.c,
+ nlmconv.h, nlmheader.y, nm.c, objcopy.c, objdump.c, prdbg.c, rdcoff.c,
+ rddbg.c, readelf.c, rename.c, size.c, stabs.c, strings.c,
+ unwind-ia64.h, wrstabs.c: Replace boolean with bfd_boolean, true with
+ TRUE, false with FALSE. Simplify comparisons of bfd_boolean vars
+ with TRUE/FALSE. Formatting.
+
+2002-11-29 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c Replace occurrences of Elf32_Internal_* and
+ Elf64_Internal_* with Elf_Internal_*.
+ (slurp_rel_relocs): Change Elf_Internal_Rel to Elf_Internal_Rela.
+ Zero r_addend fields.
+ (dump_relocations): Remove relas variable, change Elf_Internal_Rel to
+ Elf_Internal_Rela.
+
+2002-11-23 Nick Clifton <nickc@redhat.com>
+
+ * size.c (usage): Fix typo describing switch for hex format.
+
+2002-11-18 Svein E. Seldal <Svein.Seldal@solidas.com>
+
+ * testsuite/binutils-all/objcopy.exp: Disable tic4x from test
+ * testsuite/binutils-all/objdump.exp: Setup proper values for tic4x
+ testcase
+
+2002-11-14 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (process_program_headers): Add comment about return
+ value. Ensure that 0 is returned if the headers are not loaded.
+ (process_file): If process_section_headers failed to load the
+ headers disable any tests that rely upon them. Similarly for
+ process_program_headers.
+
+2002-11-12 Nick Clifton <nickc@redhat.com>
+
+ * po/da.po: Updated Danish translation.
+
+2002-11-12 Klee Dienes <kdienes@apple.com>
+
+ * rddbg.c (read_section_stabs_debugging_info): Also recognize
+ LC_SYMTAB.stab/LC_SYMTAB.stabstr as a valid pair of sections.
+
+2002-11-11 Christopher Faylor <cgf@redhat.com>
+
+ * MAINTAINERS: Reinstate DJ Delorie as COFF maintainer. Drop COFF from
+ cgf maintainership.
+
+2002-11-11 Christopher Faylor <cgf@redhat.com>
+
+ * MAINTAINERS: Replace DJ Delorie as PE/COFF maintainer.
+
+2002-11-07 Nick Clifton <nickc@redhat.com>
+
+ * configure.in (ALL_LINGUAS): Add 'da'.
+ * configure: Regenerate.
+ * po/da.po: New Danish translation.
+
+ * readelf.c (get_symbol_index_type): Revert part of previous
+ patch: Display unknown symbol types in decimal, not hex.
+
+2002-11-07 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * dlltool.c (add_excludes): Don't prefix excluded fastcall
+ symbols with underscore.
+ (xlate): Ignore add_underscore for decorated fastcall symbols.
+
+2002-11-07 Eric Kohl <ekohl@rz-online.de>
+
+ * deflex.l: Accept '@' as first character of an ID.
+ * dlltool.c (gen_exp_file): Use existing '@' prefix rather than
+ ASM_PREFIX for fastcall symbols.
+ (scan_drectve_symbols): Handle fastcall symbols when generating
+ undecorated aliases for symbols in drectve section.
+ (scan_filtered_symbols): Likewise, with export-all.
+ (xlate): Likewise, with --kill-at.
+ (make_imp_label): New function to handle fastcall symbols
+ correctly.
+ (make_one_lib_file): Use make_imp_label instead of make_label
+ for imp symbols.
+
+2002-11-06 Svein E. Seldal <Svein.Seldal@solidas.com>
+
+ * MAINTAINERS: Add self as TIC4X maintainer.
+
+2002-11-06 Hiroyuki Machida <machida@sm.sony.co.jp>
+
+ * readelf.c (get_symbol_index_type): Add hex number to
+ PROCESSOR-specific, OS-specific, reserved and unknown symbol
+ types.
+
+2002-11-04 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (byte_get_little_endian): Comment typo fix.
+ (print_symbol): Constify "symbol" arg. Don't pass "symbol" to printf
+ as the format string.
+ (dump_relocations): Correct section sym names.
+ (process_section_headers): Clear symtab_shndx_hdr.
+ (read_and_display_attr_value): Don't pass indirect string to printf
+ as the format string.
+ (display_debug_frames): Indicate when zero terminator found. Decode
+ DW_EH_PE_pcrel addresses.
+
+2002-10-23 Svein E. Seldal <Svein.Seldal@solidas.com>
+
+ * configure.in: Define SKIP_ZEROES as 32 for tic4x target in
+ order to ensure proper disassembly of the valid 0-value opcode.
+ * configure: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * configure.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+ * po/binutils.pot: Regenerate.
+
+2002-10-23 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+
+ * MAINTAINERS: Add self as SH maintainer.
+
+2002-10-23 Ben Elliston <bje@redhat.com>
+
+ * doc/binutils.texi (objdump): Document -z and move the entry for
+ --disassemble-zeroes to the end of the options section (for `z').
+
+2002-10-21 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Discontinue Hans-Peter Nilsson as SH maintainer.
+
+2002-10-21 Svein E. Seldal <Svein.Seldal@solidas.com>
+
+ * objdump.c (dump_data): Correct addr_offset for opb != 1.
+
+2002-10-15 Alan Modra <amodra@bigpond.net.au>
+
+ * bucomm.c (list_supported_targets): Use bfd_target_list.
+
+ * objcopy.c (copy_file): Report ambiguous bfd_object matches, and
+ other object errors in preference to bfd_core errors.
+
+2002-10-14 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * objdump.c: #include "bfdver.h".
+ * version.c: Likewise.
+ * Makefile.in: Regenerate.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * po/POTFILES.in: Regenerate.
+
+2002-10-09 Daniel Jacobowitz <drow@mvista.com>
+
+ * readelf.c (display_debug_info): Ignore empty .rela.debug_info
+ sections. Allow relocations against the absolute symbol. Don't
+ use the value in compunit.cu_abbrev_offset if we found a RELA
+ relocation.
+
+2002-10-07 Gordon Chaffee <chaffee@netvmg.com>
+
+ * addr2line.c (slurp_symtab): Read in dynamic symbols if no
+ ordinary ones are available.
+
+2002-09-30 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (get_machine_flags): Handle E_MIPS_MACH_4120,
+ E_MIPS_MACH_5400 and E_MIPS_MACH_5500.
+
+2002-09-17 Zack Weinberg <zack@codesourcery.com>
+
+ * Makefile.am (CFILES): Add cxxfilt.c.
+ (cxxfilt_SOURCES): Now just cxxfilt.c $(BULIBS).
+ (cxxfilt_LDADD): Delete.
+ Remove all references to underscore.c.
+ Regen dependencies.
+ * configure.in: Define TARGET_PREPENDS_UNDERSCORE in
+ config.h from $UNDERSCORE, rather than AC_SUBSTing it.
+ * binutils/cxxfilt.c: Moved here from gcc/cp, minor
+ adjustments to fit into binutils framework.
+ * configure, config.in, Makefile.in, doc/Makefile.in: Regenerate.
+
+2002-09-12 Roland McGrath <roland@redhat.com>
+
+ * readelf.c (decode_location_expression): DW_OP_calli -> DW_OP_call_ref
+ Handle DW_OP_GNU_push_tls_address.
+
+2002-09-11 Nick Clifton <nickc@redhat.com>
+
+ * po/tr.po: Updated Turkish translation.
+
+2002-09-10 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add Ben Elliston as a maintainer for configure and
+ testsuite changes. Add paragraphs about testsuite and config
+ patches.
+
+2002-08-29 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (get_machine_flags): Remove redundant reference to
+ E_V850EA_ARCH.
+
+2002-08-28 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (dump_bfd): Restore lines accidentally deleted in
+ last commit.
+
+2002-08-28 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
+
+ * objdump.c (dump_headers): Add printing of HAS_LOAD_PAGE flag.
+ (dump_bfd_header): Likewise.
+
+2002-08-27 Alan Modra <amodra@bigpond.net.au>
+
+ * nm.c: Revert last change.
+
+2002-08-26 Alan Modra <amodra@bigpond.net.au>
+
+ * nm.c (display_rel_file): Don't report "no symbols" as an error.
+ * objdump.c (slurp_symtab): Likewise.
+ (slurp_dynamic_symtab): Likewise.
+ (dump_symbols): Likewise. Do print "no symbols" to stdout.
+
+2002-08-24 Geoffrey Keating <geoffk@redhat.com>
+
+ * MAINTAINERS: Change my mailing address.
+
+2002-08-23 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * MAINTAINERS: Add Dave Anglin as HPPA co-maintainer.
+
+2002-08-22 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add Jeff Law as (maintainance) maintainer for
+ HPPA.
+
+2002-08-21 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * readelf.c (parse_args): Change debug_dump_opt to static.
+
+2002-08-16 Sivaguru Sankaridurg <siva@eternal-systems.com>
+
+ * stabs.c (parse_stab_argtype): Pass length of physname to
+ stab_demangle_argtypes.
+ (stab_demangle_argtypes): Add new parameter - length of physname.
+ Pass length of physname on to stab_demangle_prefix.
+ (stab_demangle_prefix): Add new parameter - length of physname.
+ Use length of physname (if supplied) to compute end of function
+ name.
+
+2002-08-15 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c: Include elf/i370.h.
+ (dump_relocations): Handle EM_S370.
+ (dynamic_segment_parisc_val): Print \n.
+ (process_dynamic_segment <DT_BIND_NOW>): Here too.
+
+2002-08-14 Nick Clifton <nickc@redhat.com>
+
+ * nm.c (usage): Change 'gnu-new-abi' to 'gnu-v3'.
+ * objdump.c (usage): Likewise.
+ * doc/binutils.texi: Likewise.
+
+2002-08-14 Luke Dunstan <infidel@users.sourceforge.net>
+
+ * rcparse.y (acc_entry): Don't warn about ALT use with
+ non-VIRTKEY.
+
+2002-08-13 H.J. Lu <hjl@gnu.org>
+
+ * objcopy.c (copy_object): Don't warn about the unsupported
+ architecture unless the input target is defaulted or the
+ output architecture is different from the input.
+
+2002-08-09 Nick Clifton <nickc@redhat.com>
+
+ * po/sv.po: Updated Swedish translation.
+
+2002-08-05 Alan Modra <amodra@bigpond.net.au>
+
+ * prdbg.c (pr_fix_visibility): Remove assert.
+
+2002-07-31 Nick Clifton <nickc@redhat.com>
+
+ * addr2line.c (process_file): Rename parameter 'filename' to
+ 'file_name' in order to avoid shadowing global symbol of the
+ same name.
+ (main): Likewise.
+
+2002-07-30 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (OPTION_DEBUG_DUMP): Define.
+ (options): Use it.
+ (usage): Update help.
+ (parse_args): Handle --debug-dump separately from -w.
+ * doc/binutils.texi (readelf): Update documentation.
+
+2002-07-25 Nick Clifton <nickc@redhat.com>
+
+ * po/es.po: Updated Spanish translation.
+ * po/fr.po: Updated French translation.
+
+2002-07-24 Nick Clifton <nickc@redhat.com>
+
+ * po/es.po: Updated Spanish translation.
+
+2002-07-23 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2002-07-23 Nick Clifton <nickc@redhat.com>
+
+ * po/fr.po: Updated French translation.
+
+2002-07-23 Eric S. Raymond <esr@golux.thyrsus.com>
+
+ * doc/binutils.texi (addr2line <man synopsis>): Correct brackets.
+
+2002-07-20 Alan Modra <amodra@bigpond.net.au>
+
+ * budemang.c: Include config.h and string.h/strings.h.
+
+2002-07-18 Denis Chertykov <denisc@overta.ru>
+ Frank Ch. Eigler <fche@redhat.com>
+
+ * readelf.c: Include "elf/ip2k.h".
+ (guess_is_rela): Add support for EM_IP2K and EM_IP2K_OLD.
+ (dump_relocations): Likewise.
+ (get_machine_name): Likewise.
+ * NEWS: Mention IP2K support.
+
+2002-07-16 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * NEWS: Add 'Changes in 2.13'.
+
+2002-07-10 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (get_dynamic_type): Handle DT_GNU_PRELINKED,
+ DT_GNU_CONFLICT* and DT_GNU_LIBLISZ*.
+ (get_section_type_name): Handle SHT_GNU_LIBLIST.
+ (process_dynamic_segment): Handle DT_GNU_CONFLICTSZ,
+ DT_GNU_LIBLISTSZ and DT_GNU_PRELINKED.
+ (process_gnu_liblist): New.
+ (process_file): Call it.
+
+2002-07-03 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am (check-DEJAGNU): Revert 2002-06-25 change.
+ * Makefile.in: Regenerate.
+
+2002-07-02 Alan Modra <amodra@bigpond.net.au>
+
+ * budemang.c: New file, "demangle" function.
+ * budemang.h: New file.
+ * addr2line.c (translate_addresses): Use "demangle".
+ * nm.c (print_symname): Likewise.
+ * objdump.c (objdump_print_symname): Likewise.
+ (dump_symbols): Likewise. Also, don't use bfd_asymbol_name macro
+ here since that obfuscates.
+ * rdcoff.c: Don't #include demangle.h.
+ * Makefile.am (CFILES): Add budemang.c, emul_aix.c,
+ emul_vanilla.c. Remove emul_$(EMULATION).c. Sort.
+ (HFILES): Add budemang.h. Sort.
+ (nm_new_SOURCES, objdump_SOURCES, addr2line_SOURCES): Add budemang.c.
+ Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2002-07-01 Matt Thomas <matt@3am-software.com>
+
+ * readelf.c: Include "elf/vax.h".
+ (guess_is_rela): Move EM_VAX from unknown to RELA case.
+ (dump_relocations): Handle VAX relocations.
+ (get_machine_flags): Handle VAX machine flags.
+
+2002-06-29 Stephane Carrez <stcarrez@nerim.fr>
+
+ * readelf.c (dump_relocations): Handle 68HC11/68HC12 relocations.
+
+2002-06-26 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * MAINTAINERS: Remove Tom Rix from d10v and pcc maintainerships.
+
+2002-06-26 Alan Modra <amodra@bigpond.net.au>
+
+ * nm.c (print_symname): When demangling, strip leading dots from
+ symbol names to avoid confusing the demangler.
+
+2002-06-25 H.J. Lu <hjl@gnu.org>
+
+ * Makefile.am (check-DEJAGNU): Set LC_ALL=C and export it.
+ * Makefile.in: Regenerated.
+
+2002-06-21 Igor Schein <igor@txc.com>
+
+ * configure.in: Quote bu_cv_have_fopen64.
+ * configure: Regenerate.
+
+2002-06-21 Mitsru Chinen <chinen@jp.ibm.com>
+
+ * configure.in: Check for strcoll.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+ * nm.c (main): Set locale for LC_COLLATE category.
+ (non_numeric_forward): Use strcoll if available.
+
+2002-06-20 Dave Brolley <brolley@redhat.com>
+
+ * MAINTAINERS: Add self as fr30 and frv maintainer.
+
+2002-06-18 H.J. Lu (hjl@gnu.org)
+
+ * nm.c: Include "elf/common.h".
+ (extended_symbol_info): Add elfinfo, a pointer to
+ elf_symbol_type.
+ (SYM_SIZE): Use elfinfo if it is not NULL.
+ (get_symbol_type): New function.
+ (display_archive): Set print_width for each archive member.
+ (display_file): Likewise.
+ (display_rel_file): Don't set print_width here.
+ (print_object_filename_sysv): Handle print_width.
+ (print_archive_member_sysv): Likewise.
+ (print_symbols): Pass (bfd_vma) 0 to print_symbol.
+ (print_symbol): Set the elfinfo field in extended_symbol_info
+ for ELF.
+ (print_object_filename_sysv): Fix the output format.
+ (print_symbol_info_sysv): Print type and section for ELF.
+
+2002-06-18 Elias Athanasopoulos <eathan@otenet.gr>
+
+ * nm.c (print_size_symbols): Remove assignment, which makes
+ the symbol's size equal to its value when --size-sort is
+ used.
+
+2002-06-18 Dave Brolley <brolley@redhat.com>
+
+ From Catherine Moore:
+ * readelf.c (elf/frv.h): #include it.
+ (guess_is_rela): Support EM_CYGNUS_FRV.
+ (dump_relocations): Ditto.
+ (get_machine_name): Ditto.
+ * Makefile.am (readelf.o): add dependency on $(INCDIR)/elf/frv.h.
+
+2002-06-18 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (get_file_header): Only read the first section header if
+ e_shoff is non-zero.
+
+2002-06-15 H.J. Lu (hjl@gnu.org)
+
+ * nm.c (print_size): New variable. Initialize to 0.
+ (long_options): Add 'S'/"print-size".
+ (main): Handle 'S'.
+ (print_symbol_info_bsd): Print size only if print_size is not
+ 0.
+
+ * doc/binutils.texi: Document -S/--print-size.
+
+2002-6-13 Elias Athanasopoulos <eathan@otenet.gr>
+
+ * nm.c (struct extended_symbol_info): New structure: Add the size
+ of the symbols to the information provided by the symbol_info
+ structure.
+ (print_symbols): Pass the symbol size to print_symbol.
+ (print_size_symbols): Pass the symbol size to print_symbol.
+ (print_symbol): Extra argument: The size of the symbol. Store
+ this in the extended_symbol_info structure.
+ (print_symbol_info): Change type of info parameter to
+ extended_symbol_info. Display the size, if known.
+ (print_symbol_info_posix): Likewise.
+ (print_symbol_info_sysv): Likewise.
+
+2002-06-08 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regnerate.
+
+ * bucomm.c: Replace CONST with const.
+ * nm.c: Likewise.
+ * objdump.c: Likewise.
+
+2002-06-07 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (DW_CFA_GNU_args_size): Don't define.
+ (DW_CFA_GNU_negative_offset_extended): Likewise.
+ (DW_CFA_GNU_window_save): Likewise.
+ (display_debug_frames): Handle DW_CFA_offset_extended_sf,
+ DW_CFA_def_cfa_sf and DW_CFA_def_cfa_offset_sf.
+
+2002-06-07 Elias Athanasopoulos <eathan@otenet.gr>
+
+ * nm.c: When computing size of symbols for an ELF target use the
+ internal size field.
+
+2002-06-06 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * testsuite/binutils-all/objcopy.exp: clear xfail for
+ "hppa*64*-*-hpux*".
+ * testsuite/binutils-all/hppa/objdump.exp: Return if
+ "*64*-*-*".
+
+2002-06-05 Alan Modra <amodra@bigpond.net.au>
+
+ * objcopy.c (copy_section): Don't copy SEC_GROUP sections.
+
+2002-06-03 Elias Athanasopoulos <eathan@otenet.gr>
+
+ * objdump.c: Fix formatting.
+
+2002-05-29 Ben Elliston <bje@redhat.com>
+
+ * MAINTAINERS: Add self as M68k maintainer.
+
+2002-05-28 Kuang Hwa Lin <kuang@sbcglobal.net>
+
+ * readelf.c: Modified/Added DLX elf support.
+
+2002-05-27 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * arsup.c: Fix formatting.
+ * debug.c (debug_record_label): Add missing colon to error
+ message.
+ * ieee.c (parse_ieee_ty): Fix spelling typo.
+ * readelf.c (process_program_headers): Remove English assumption
+ about making a plural word.
+ (process_section_headers): Likewise.
+ (process_relocs): Allow quotes to be translated.
+ (process_unwind): Likewise,
+ (process_mips_specific): Improve error message.
+ (get_note_type): Fix spelling typo.
+
+ * configure.in (ALL_LINGUAS): Add sv
+ * po/sv.po: New file.
+
+2002-05-27 Alan Modra <amodra@bigpond.net.au>
+
+ * unwind-ia64.c (unw_print_brmask): Don't use sprintf.
+ (unw_print_grmask): Likewise.
+ (unw_print_frmask): Likewise.
+
+2002-05-26 Kazu Hirata <kazu@cs.umass.edu>
+
+ * arsup.c: Remove ARGSUSED.
+ * debug.c: Likewise.
+ * ieee.c: Likewise.
+ * nlmconv.c: Likewise.
+ * prdbg.c: Likewise.
+ * stabs.c: Likewise.
+ * wrstabs.c: Likewise.
+
+2002-05-25 Alan Modra <amodra@bigpond.net.au>
+
+ * arlex.l: Use #include "" instead of <> for local header files.
+ * coffdump.c: Likewise.
+ * coffgrok.c: Likewise.
+ * nlmconv.c: Likewise.
+ * nlmheader.y: Likewise.
+ * srconv.c: Likewise.
+ * strings.c: Likewise.
+ * sysdump.c: Likewise.
+ * unwind-ia64.h: Likewise.
+ * windres.h: Likewise.
+ * winduni.h: Likewise.
+
+2002-05-24 Tom Rix <trix@redhat.com>
+
+ * MAINTAINERS: Add self as the d10v maintainer.
+
+2002-05-24 TAMURA Kent <kent@netbsd.org>
+
+ * configure.in: Builds dlltool for i386-netbsdpe.
+ * configure: Regenerate.
+
+2002-05-23 Kazu Hirata <kazu@cs.umass.edu>
+
+ * size.c: Fix formatting.
+ * srconv.c: Likewise.
+ * stabs.c: Likewise.
+ * sysdump.c: Likewise.
+ * unwind-ia64.c: Likewise.
+ * wrstabs.c: Likewise.
+
+2002-05-23 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (get_segment_type): Add PT_TLS.
+ (get_elf_section_flags): Add SHF_TLS.
+ (get_dynamic_flags): Optimize. Add DF_STATIC_TLS.
+ (process_dynamic_segment): Use puts instead of printf.
+ (get_symbol_type): Support STT_TLS.
+ * objdump.c (dump_section_header): Remove SEC_CONSTRUCTOR_TEXT,
+ SEC_CONSTRUCTOR_DATA, SEC_CONSTRUCTOR_BSS.
+ Add SEC_THREAD_LOCAL.
+
+2002-05-23 Kazu Hirata <kazu@cs.umass.edu>
+
+ * rdcoff.c: Fix formatting.
+ * rddbg.c: Likewise.
+ * readelf.c: Likewise.
+ * rename.c: Likewise.
+ * resbin.c: Likewise.
+ * resrc.c: Likewise.
+ * resres.c: Likewise.
+
+2002-05-21 Kazu Hirata <kazu@cs.umass.edu>
+
+ * filemode.c: Fix formatting.
+ * ieee.c: Likewise.
+ * is-ranlib.c: Likewise.
+ * is-strip.c: Likewise.
+ * maybe-ranlib.c: Likewise.
+ * maybe-strip.c: Likewise.
+ * nlmconv.c: Likewise.
+ * nm.c: Likewise.
+ * not-ranlib.c: Likewise.
+ * not-strip.c: Likewise.
+ * objcopy.c: Likewise.
+ * objdump.c: Likewise.
+
+2002-05-21 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * objdump.c (dump_headers): Fix output formatting for ELF32
+ architectures in a BFD64 enabled toolchain.
+
+2002-05-20 Kazu Hirata <kazu@cs.umass.edu>
+
+ * debug.c: Fix formatting.
+ * debug.h: Likewise.
+ * dlltool.c: Likewise.
+ * dllwrap.c: Likewise.
+ * emul_aix.c: Likewise.
+ * emul_vanilla.c: Likewise.
+
+2002-05-19 Kazu Hirata <kazu@cs.umass.edu>
+
+ * addr2line.c: Fix formatting.
+ * ar.c: Likewise.
+ * arsup.c: Likewise.
+ * arsup.h: Likewise.
+ * binemul.c: Likewise.
+ * binemul.h: Likewise.
+ * bucomm.c: Likewise.
+ * coffdump.c: Likewise.
+ * coffgrok.c: Likewise.
+ * coffgrok.h: Likewise.
+
+2002-05-16 Marek Michalkiewicz <marekm@amelek.gda.pl>
+
+ * MAINTAINERS: Add myself as the second AVR port maintainer.
+
+2002-05-16 Stephane Carrez <stcarrez@nerim.fr>
+
+ * MAINTAINERS: Update my email address.
+
+2002-05-09 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * MAINTAINERS: Add Jason Thorpe as VAX maintainer.
+
+2002-05-09 Alan Modra <amodra@bigpond.net.au>
+
+ * configure.in: Replace `*pe' with `pe' throughout.
+ * configure: Regenerate.
+
+2002-05-07 Federico G. Schwindt <fgsch@olimpo.com.br>
+
+ * Makefile.am: Honour DESTDIR.
+ * Makefile.in: Regenerate.
+
+2002-05-06 Alan Modra <amodra@bigpond.net.au>
+
+ * dlltool.c (process_def_file): Add missing prototype.
+ (new_directive, assemble_file, main): Likewise.
+ (process_def_file, new_directive): Make static.
+ (inform): Rewrite using VA_FIXEDARG.
+ * dllwrap.c (mybasename): Add missing prototype.
+ (strhash, main): Likewise.
+ (inform): Rewrite using VA_FIXEDARG.
+ (warn): Likewise.
+ (cleanup_and_exit): Use old style function definition.
+ (strhash): Likewise.
+ * windres.c (define_resource): Use one memset to clear all of
+ struct res_resource.
+
+ * rcparse.y: Remove newcmd rule. Move rcparse_discard_strings
+ call to rules that need no lookahead. Check for no lookahead.
+
+2002-05-06 Borut Razem <borut.razem@siol.net>
+
+ * rclex.l (get_string): Correct "strings" list handling.
+ * resrc.c (read_rc_file): Discard strings.
+
+2002-05-04 Alan Modra <amodra@bigpond.net.au>
+
+ * ar.c (replace_members): Remove unused var. Formatting fix.
+ * binemul.c (ar_emul_default_parse_arg): Add ATTRIBUTE_UNUSED.
+
+ * MAINTAINERS: Sort port maintainers by CPU.
+
+2002-05-04 Bob Byrnes <byrnes@curl.com>
+
+ * size.c (display_archive): Add last_arfile and code to close archives.
+
+2002-05-01 Alan Modra <amodra@bigpond.net.au>
+
+ * nm.c (print_symbol): Check returned filename from
+ bfd_find_nearest_line is non-NULL.
+
+2002-04-25 Elena Zannoni <ezannoni@redhat.com>
+
+ * readelf.c (get_AT_name): Handle DW_AT_GNU_vector.
+
+2002-04-24 Christian Groessler <chris@groessler.org>
+
+ * MAINTAINERS: Changed my email address.
+
+2002-04-17 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * arparse.y: Fix syntax warning.
+
+2002-04-16 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * readelf.c (fetch_location_list): Remove unused function.
+
+ * readelf.c (process_corefile_note_segment): Catch corrupt notes
+ and display a warning message, then exit the loop.
+
+ * rcparse.y: Set MEMFLAG_DISCARDABLE by default.
+
+2002-04-15 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * resrc.c (write_rc_dialog): If charset is non-default value
+ display all of the DIALOGEX parameters.
+
+2002-04-15 Eric Kohl <ekohl@rz-online.de>
+
+ * rcparse.y: Allow two to five parameter in FONT statement of
+ DIALOGEX resources.
+ * resbin.c (bin_to_res_dialog): Fixed read/write code for dialogex
+ resource data.
+ (res_to_bin_dialog): Likewise.
+ * windres.h: Added misssing charset variable to dialog_ex
+ structure.
+
+2002-04-10 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * rcparse.y: Set MEMFLAG_PURE by default.
+
+2002-04-09 Bernd Herd <info@herdsoft.com>
+
+ * rcparse.y: CLASS definitions in DIALOG resources
+ are quoted.
+ Fix typo in BEDIT warning.
+ Don't add default dialog style when explicit style specified.
+ Add WS_CAPTION dialog style if CAPTION is specified.
+
+ * rclex.l (handle_quotes): "\xhex" encoding in strings corrected.
+ (handle_quotes) "\a" escape (used for right justified key
+ definitions in menus) is encodes as binary 8.
+
+ * resrc.c (write_rc_dialog): Print style even if it is 0.
+ (write_rc_directory): Fix overlooked sublang shift bug.
+ (bin_to_res_dialog): Don't print empty dialog caption.
+
+ * resbin.c (bin_to_res_dialog): Use signature to identify
+ DIALOGEX.
+
+ * windres.c (main): Set default LANGUAGE to english/us.
+
+2002-04-09 Gunnar Degnbol <degnbol@danbbs.dk>
+
+ * resrc.c: print CLASS names in quotes
+
+2002-04-09 J"orn Rennecke <joern.rennecke@superh.com>
+
+ * MAINTAINERS: Update my email address.
+
+2002-04-04 Alan Modra <amodra@bigpond.net.au>
+
+ * dep-in.sed: Cope with absolute paths.
+ * Makefile.am (dep.sed): Subst TOPDIR.
+ Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2002-03-27 Peter Targett <peter.targett@arc.com>
+
+ * MAINTAINERS: Update my email address.
+
+2002-03-21 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+ * po/POTFILES.in: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+
+2002-03-20 Daniel Berlin <dan@dberlin.org>
+
+ * readelf.c: Add support for displaying dwarf2 location lists.
+ (do_debug_loc, debug_loc_section, debug_loc_size): New.
+ (parse_args): Use 'O' as shorthand for displaying location list
+ section.
+ (process_section_headers): Handle debug_loc as well.
+ (load_debug_loc): New.
+ (free_debug_loc): New.
+ (fetch_location_list): New.
+ (display_debug_loc): New.
+ (display_debug_info): Call load_debug_loc and free_debug_loc.
+ (debug_displays): We can display .debug_loc now, too.
+ (usage): Update usage string.
+ (read_and_display_attr_value): Note location lists, but don't
+ display them inline.
+
+2002-03-18 Tom Rix <trix@redhat.com>
+
+ * Makefile.am: Add binutils emulation support.
+ * configure.in: Same.
+ * configure.tgt: New file. Same.
+ * ar.c (main): Use ar_emul_parse_arg.
+ (usage): Use ar_emul_usage.
+ (replace_members): Use ar_emul_replace, ar_emul_append.
+ * binemul.c: New file. Define the binutils emulation
+ layer. Define default methods.
+ * binemul.h: New file. Binutils emulation layer header file.
+ * emul_aix.c: New file. AIX binutils emulation.
+ * emul_vanilla.c: New file. Default binutils emulation.
+ * Makefile.in: Regenerate.
+ * configure: Same.
+
+2002-03-18 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * po/fr.po: Updated version.
+
+2002-03-13 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * po/fr.po: Updated version.
+
+2002-03-07 Daniel Jacobowitz <drow@mvista.com>
+
+ * README: Update some version numbers.
+
+2002-03-07 Daniel Jacobowitz <drow@mvista.com>
+
+ * doc/binutils.texi (Target Selection): Fix LD crossreferences.
+ (Architecture Selection): Likewise.
+
+2002-03-01 Dmitry Timoshkov <dmitry@baikal.ru>
+
+ * dlltool.c (gen_exp_file): Take into account --kill-at (-k) while
+ generating .exp file.
+
+2002-02-21 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * readelf.c (dump_relocations): Fix typo.
+
+2002-02-20 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * NEWS: Mark 2.12 branch.
+
+2002-02-18 Timothy Daly <remote_bob@yahoo.com>
+
+ * readelf.c (dump_relocations): Display 2nd and 3rd reloc
+ types for 64-bit MIPS. Narrow some fields for 80-char
+ output.
+ (dump_relocations): Change spelling from 'unrecognised'
+ to 'unrecognized'.
+ (decode_ARM_machine_flags): Likewise.
+ (parse_args): Likewise.
+ (read_and_display_attr_value): Likewise.
+ (display_debug_section): Likewise.
+
+2002-02-15 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * NEWS: Mention support for MMIX.
+
+2002-02-13 Matt Fredette <fredette@netbsd.org>
+
+ * readelf.c (get_machine_flags): Recognize EF_M68000.
+
+2002-02-12 Alexandre Oliva <aoliva@redhat.com>
+
+ * MAINTAINERS: Added self as MN10300 co-maintainer.
+
+2002-02-12 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (get_ppc64_dynamic_type): Handle DT_PPC64_OPD and
+ DT_PPC64_OPDSZ.
+
+2002-02-11 Daniel Jacobowitz <drow@mvista.com>
+
+ * MAINTAINERS: List myself as branch maintainer.
+
+2002-02-11 Alan Modra <amodra@bigpond.net.au>
+
+ * configure: Regenerate.
+ * objcopy.c: Update copyright date.
+ * doc/Makefile.in: Regenerate.
+
+2002-02-10 Daniel Jacobowitz <drow@mvista.com>
+
+ * nlmconv.c: Back out localtime PARAMS change.
+
+2002-02-11 Alan Modra <amodra@bigpond.net.au>
+
+ * objcopy.c (MKDIR): Define.
+ (copy_archive): Make name_list.name const. Use MKDIR.
+ Handle duplicate files in archives by making more temp dirs.
+
+2002-02-10 Daniel Jacobowitz <drow@mvista.com>
+
+ * coffdump.c: Include "getopt.h" after "bucomm.h"
+ so that macros are defined correctly.
+ * nlmconv.c: Add PARAMS ((const time_t *)) to localtime
+ prototype. Prototype main.
+ * nlmheader.y: Add PARAMS ((int)) to strerror prototype.
+
+2002-02-06 Alexandre Oliva <aoliva@redhat.com>
+
+ * MAINTAINERS: Added self as SH co-maintainer.
+
+2002-02-05 Nick Clifton <nickc@redhat.com>
+
+ * po/tr.po: Updated translation.
+
+2002-02-01 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am"
+ * Makefile.in: Regenerate.
+
+2002-01-29 Daniel Jacobowitz <drow@mvista.com>
+
+ * nm.c (print_value): Mark abfd unused.
+
+2002-01-29 Daniel Jacobowitz <drow@mvista.com>
+
+ * unwind-ia64.c (unw_decoder): Change second argument
+ to unsigned int, to match function prototypes.
+
+2002-01-29 Daniel Jacobowitz <drow@mvista.com>
+
+ * objdump.c: Include "getopt.h" after "bucomm.h" so that
+ __GNU_LIBRARY__ will be defined.
+ * size.c: Likewise.
+
+2002-01-27 Daniel Jacobowitz <drow@mvista.com>
+
+ * configure: Regenerated.
+
+2002-01-26 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * doc/Makefile.am (install): Depend on install-info.
+ * doc/Makefile.in: Regenerate.
+
+2002-01-25 Jason R. Thorpe <thorpej@wasabisystems.com>
+
+ * objcopy.c (strip_usage): Document -d as an alias
+ --strip-debug.
+
+ * size.c (usage): Document [-t | --totals] options.
+ (long_options): Add --totals option.
+ (main): If the [-t | --totals] option is specified and
+ the output format is Berkeley-style, print the total
+ text, data, and bss sizes of all objects listed.
+ (print_berkeley_format): If the [-t | --totals] option
+ is specified, track the total text, data, and bss
+ sizes.
+ * doc/binutils.texi (size): Document [-t | --totals] options.
+ (strip): Document -d as an alias for --strip-debug.
+ * NEWS: Mention new feature of size.
+
+2002-01-25 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * po/fr.po: Updated version.
+ * po/es.po: Updated version.
+
+2002-01-23 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * addr2line.c (usage): Update text to provide verbose
+ description of the command line options.
+ * ar.c (usage): Update text to provide verbose
+ description of the command line options.
+ (main): Accept -h and -H when running as ranlib.
+ * coffdump.c (show_usage): Update text to provide verbose
+ description of the command line options.
+ * dlltool.c (main): Accept -H as an alias for --help.
+ * nlmconv.c (show_usage): Update text to provide verbose
+ description of the command line options.
+ * nm.c (usage): Replace OPTIONS with option(s).
+ (main): Accept -H as an alias for --help.
+ * objcopy.c (strip_main): Accept -H as an alias for --help.
+ * objdump.c (main): Accept -v as an alias for --verbose.
+ * readelf.c (usage): Adjust format to match style used in
+ other binutils.
+ * size.c (usage): Update text to provide verbose description
+ of the command line options.
+ (main): Accept -v, -h and -H as command line options.
+ * srconv.c (show_usage): Update text to provide verbose
+ description of the command line options.
+ * strings.c (main): Accept -H and -v as command line options.
+ (usage): Update text to provide verbose description of the
+ command line options.
+ * sysdump.c (show_usage): Update text to provide verbose
+ description of the command line options.
+ * windres.c (usage): Adjust format to match style used in
+ other binutils.
+
+ * coffdump.c: Fix formatting.
+ * nlmconv.c: Fix formatting.
+ * srconv.c: Fix formatting.
+ * sysdump.c: Fix formatting.
+
+2002-01-22 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2002-01-18 Andreas Jaeger <aj@suse.de>
+
+ * version.c (print_version): Update year.
+
+2002-01-17 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (get_machine_name): Handle EM_PPC64.
+ (guess_is_rela): Here too.
+
+2002-01-17 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * po/binutils.pot: Regenerate.
+ * po/fr.po: Regenerate.
+ * po/tr.po: Regenerate.
+
+2002-01-16 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * po/tr.po: Import new version.
+
+2002-01-16 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (get_ppc64_dynamic_type): New.
+ (get_dynamic_type): Call it.
+
+2002-01-15 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * objcopy.c (copy_usage): Use "options" instead of "switches".
+ (strip_usage): Use "options" instead of "switches".
+ * doc/binutils.texi (dlltool): Refer to "options" instead of
+ "switches".
+
+2002-01-14 Richard Earnshaw <rearnsha@arm.com>
+
+ * MAINTAINERS: Add self as co-maintainer for the ARM code.
+
+2001-12-18 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * po/es.po: Import from translation project.
+ * configure.in (ALL_LINGUAS): Add es.
+ * configure: Regenerate.
+
+2002-01-09 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * readelf.c (get_netbsd_elfcore_note_type): Use
+ NT_NETBSDCORE_PROCINFO and NT_NETBSDCORE_FIRSTMACH.
+
+2002-01-09 Jason Thorpe <thorpej@wasabisystems.com>
+
+ * readelf.c: Update copyright years.
+ (get_note_type): Return a const char *.
+ (get_netbsd_elfcore_note_type): New function.
+ (process_note): Use get_netbsd_elfcore_note_type to get
+ the note type string for NetBSD ELF core files.
+
+2002-01-06 Steve Ellcey <sje@cup.hp.com>
+
+ * readelf.c (get_ia64_segment_type): Add support for macros.
+ (get_segment_type): Add support for IA64 specific macros.
+
+For older changes see ChangeLog-0001
+
+Copyright (C) 2002-2003 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-2004 b/binutils-2.24/binutils/ChangeLog-2004
new file mode 100644
index 00000000..d3644acb
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-2004
@@ -0,0 +1,799 @@
+2004-12-31 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (remove_useless_symbols): Discard section symbols.
+
+2004-12-27 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (read_leb128): Support 64bit host.
+
+2004-12-23 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/616
+ * readelf.c (debug_info): Add 'cu_offset' field.
+ (get+pointer_size_of_comp_unit): Rename to
+ 'get_pointer_size_and_offset_of_comp_unit'. Add code to return
+ the offset of the comp_unit if requested.
+ (get_debug_info): Record comp_unit offsets as well.
+ (display_debug_lines): Call get_pointer_size_of_comp_unit.
+ (decode_location_expression): Add an extra parameter - the offset
+ of the current comp-unit. Use this when decoding the DW_OP_call2
+ and DW_OP_call4 operators.
+ (display_debug_loc): Call get_pointer_size_of_comp_unit, pass the
+ comp_unit offset on the decode_location_expression.
+ (read_and_display_attr_value): Pass the comp_unit offset on the
+ decode_location_expression.
+ (display_debug_frames): Pass 0 as the comp_unit offset to
+ decode_location_expression.
+
+2004-12-22 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (last_pointer_size, warned_about_missing_comp_units):
+ New variables associated with obtaining the pointer size for a
+ comp_unit.
+ (get_pointer_size_of_comp_unit): Add an extra parameter - the name
+ of the section requesting the pointer size. Use this name in
+ error messages. If there are not enough comp_units available
+ produce a warning message, but return the last known pointer size
+ so that section dumping can continue.
+ (get_debug_info): Reset the new variables.
+ (display_debug_lines): Add extra parameter to invocation of
+ get_pointer_size_of_comp_unit and remove error message when it
+ returns 0.
+ (display_debug_loc): Likewise.
+
+2004-12-15 Jan Beulich <jbeulich@novell.com>
+
+ * doc/binutils.texi: Document --strip-unneeded-symbol and
+ --strip-unneeded-symbols.
+ * objcopy.c (strip_unneeded_list): New.
+ (enum command_line_switch): Add OPTION_STRIP_UNNEEDED_SYMBOL
+ and OPTION_STRIP_UNNEEDED_SYMBOLS.
+ (copy_options): Add --strip-unneeded-symbol and
+ --strip-unneeded-symbols.
+ (copy_usage): Likewise.
+ (filter_symbols): Suppress copying of symbol if in strip_unneeded_list
+ and the symbol is not needed.
+ (copy_main): Handle OPTION_STRIP_UNNEEDED_SYMBOL and
+ OPTION_STRIP_UNNEEDED_SYMBOLS.
+
+2004-12-09 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * readelf.c (get_machine_flags): Handle E_MIPS_MACH_9000.
+
+2004-12-08 Ben Elliston <bje@au.ibm.com>
+
+ * arlex.l: Fix formatting.
+
+2004-12-08 Ben Elliston <bje@au.ibm.com>
+
+ * doc/Makefile.am (config.texi): Emit a @set UPDATED command to
+ config.texi whose value is the current month and year.
+ * doc/Makefile.in: Rebuild.
+ * doc/binutils.texi: Set the document subtitle to be the value of
+ the Texinfo UPDATED variable (obtained from config.texi).
+
+2004-12-07 Ben Elliston <bje@au.ibm.com>
+
+ PR binutils/249
+ * doc/binutils.texi (def file format): New node.
+ (dlltool): Use the tool name as the @chapter name, like all the
+ other binutils. Use @file{.def} throughout for consistency.
+
+2004-12-06 Ben Elliston <bje@au.ibm.com>
+
+ * dlltool.c: Comment fix.
+
+2004-12-06 Ben Elliston <bje@au.ibm.com>
+
+ * doc/binutils.texi: Update copyright years.
+
+2004-12-03 Richard Sandiford <rsandifo@redhat.com>
+
+ * MAINTAINERS: Remove mention of config.if.
+
+2004-11-30 Tero Niemela <tero_niemela@yahoo.com>
+
+ * Makefile.am: Change LOCALEDIR to $(datadir)/share.
+ * Makefile.in: Regenerate.
+
+2004-11-10 Ian Lance Taylor <ian@wasabisystems.com>
+
+ PR binutils/536
+ * stabs.c (stab_demangle_template): Call stab_demangle_count
+ rather than stab_demangle_get_count to get the length of a pointer
+ target.
+
+2004-11-10 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * defparse.y: Remove unnecessary commas from token list.
+
+2004-11-08 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
+
+ * doc/binutils.texi (nm): Update description of weak symbols.
+
+2004-11-03 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (do_debug_ranges): New variable.
+ (usage): Document new switch: -wR or --debug-dump=Ranges.
+ (parse_args): Handle new switch. Replace switch statement for the
+ long options with a more compact table structure.
+ (process_section_headers): Allow the dumping of .debug_ranges
+ sections if so requested.
+ (debug_displays): Likewise.
+ (load_debug_range): New function: Grabs the contents of a
+ .debug_ranges section.
+ (free_debug_range): New function: Releases the grabbed
+ .debug_ranges section.
+ (decode_64bit_range): New function: Displays a 64-bit range in a
+ .debug_ranges section.
+ (decode_range): New function: Displays a 32-bit range in a
+ .debug_ranges section.
+ (read_and_display_attr_value): Record the value of DW_AT_low_pc
+ attributes. Use decode_ranges() to display a DW_AT_ranges
+ attribute.
+ (display_debug_info): Use load_debug_range() and
+ free_debug_range().
+ (display_64bit_debug_ranges): New function. Displays the contents
+ of a 64-bit format .debug_ranges section.
+ (display_debug_ranges): New function: Displays the contents of a
+ 32-bit .debug_ranges section.
+
+ (main): Move cmdline_dump_sects and num_cmdline_dump_sects into the
+ global scope.
+ (process_object): Initialise the dump_sects array from the
+ cmdline_dump_sects array before processing each object file.
+
+ (streq, strneq): New macros. Use them to replace occurrences of
+ strcmp() and strncmp().
+
+ (debug_information): New structure array to replace
+ debug_line_pointer_sizes array.
+ (num_debug_info_entries): New variable to replace
+ num_debug_line_pointers.
+ (get_pointer_size_of_comp_unit): New function: Returns the pointer
+ size of a given compilation unit.
+ (get_debug_info): New function to replace
+ get_debug_line_pointer_sizes.
+ (display_debug_lines): Use the new functions.
+ (display_debug_loc): Likewise.
+
+ (disassemble_section): Change return type to int.
+ (display_debug_lines): Move local variables to their
+ innermost scope.
+ (display_debug_section): Likewise. Also record the return value
+ of functions called and pass this back to the parent. Also only
+ warn about undumped sections when the user explicitly requested
+ their dumping.
+
+ (debug_apply_rela_addends): Allow relocations against STT_OBJECT
+ types as well.
+
+ * NEWS: Mention the support for decoding .debug_ranges sections.
+ * doc/binutils.texi: Document the new command line switch to
+ readelf.
+
+2004-11-03 Randolph Chung <tausq@debian.org>
+
+ * readelf.c (ia64_unw_aux_info, ia64_unw_table_entry): Rename from
+ unw_aux_info and unw_table_entry.
+ (find_symbol_for_address): Pass symtab and strtab info explicitly.
+ (dump_ia64_unwind): Rename unw_{aux_info,table_entry} with ia64_
+ prefix.
+ (slurp_ia64_unwind_table): Likewise.
+ (ia64_process_unwind): Rename from old process_unwind.
+ (hppa_unw_aux_info): New.
+ (dump_hppa_unwind): New.
+ (slurp_hppa_unwind_table): New.
+ (hppa_process_unwind): New.
+ (process_unwind): Factor out common unwinding checks; dispatch to
+ unwind handler based on machine type.
+
+2004-11-02 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (display_debug_lines): Fix typo in error message.
+
+2004-10-26 Mark Mitchell <mark@codesourcery.com>
+
+ * readelf.c (get_note_type): Handle notes not in core files.
+ (process_note_sections): New function.
+ (process_corefile_contents): Rename to ...
+ (process_notes): ... this.
+ (process_object): Call process_notes, not
+ process_corefile_contents.
+ * doc/binutils.texi: Update readelf -n documentation.
+
+2004-10-26 Jakub Jelinek <jakub@redhat.com>
+
+ * ar.c (extract_file): Set atime to mtime for ar xo.
+
+2004-10-25 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * stabs.c (stab_demangle_v3_arglist): New static function, broken
+ out of stab_demangle_v3_argtypes.
+ (stab_demangle_v3_argtypes): Call it.
+ (stab_demangle_v3_arg): Handle DEMANGLE_COMPONENT_FUNCTION_TYPE.
+ If we find an unrecognized component, print out its number.
+
+2004-10-25 David Mosberger <davidm@hpl.hp.com>
+
+ * readelf.c (slurp_ia64_unwind_table): Support relocations against
+ non-section symbols by adding in the symbol value.
+
+2004-10-25 Nick Clifton <nickc@redhat.com>
+
+ PR 465
+ * readelf.c (dynamic_strings_length): New global variable.
+ (VALID_DYNAMIC_NAME, GET_DYNAMIC_NAME): New macros for accessing
+ strings in the dynamic string table.
+ (process_section_headers): Initialise dynamic_strings_length.
+ (process_dynamic_section): Likewise.
+ (process_object): Reset dynamic_string_length when the buffer is freed.
+ (dynamic_sections_mips_val): Use the new macros.
+ (process_dynamic_section): Likewise.
+ (process_version_sections): Likewise.
+ (process_symbol_table): Likewise.
+ (process_syminfo): Likewise.
+ (process_mips_specific): Likewise.
+ (dump_relocations): Add a new parameter 'strtablen' and use this
+ to verify that string offset in a given reloc is valid. Print a
+ suitable error message otherwise.
+ (process_relocs): Pass the new argument to dump_relocations.
+
+2004-10-23 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
+
+ * dlltool.c: Include <assert.h>.
+ (PREFIX_ALIAS_BASE): Define.
+ (struct export): Add member import_name;
+ (def_exports): Set import_name.
+ (make_one_lib_file): Remove prefix alias code, use import_name
+ in .idata$6.
+ (gen_lib_file): Create and delete aliases.
+
+2004-10-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (process_section_groups): Free symtab after use.
+
+2004-10-18 Tommy Pettersson <ptp@lysator.liu.se>
+ Nick Clifton <nickc@redhat.com>
+
+ * strings.c (usage): Place radix values for -t option into the
+ correct order.
+
+ * objcopy.c (add_redefine_syms_file): Change error messages to use
+ <filename>:<linenumber>: format for easier parsing by automatic
+ tools.
+
+ * srconv.c (show_usage): Fix spelling typo.
+
+ * windres.c (format_from_filename): Suggest the use of -J instead
+ of -I if the file type cannot be determined.
+
+2004-10-18 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
+
+ * strings.c: Include <sys/stat.h>.
+
+2004-10-18 Alan Modra <amodra@bigpond.net.au>
+
+ * budemang.c (demangle): Fix thinko.
+
+ * budemang.c (demangle): Handle "@plt" suffix.
+
+2004-10-14 Nick Clifton <nickc@redhat.com>
+
+ * nm.c (usage): Fix description of --special-syms switch.
+
+2004-10-13 Jakub Jelinek <jakub@redhat.com>
+
+ * strings.c (statbuf): New typedef.
+ (file_stat): Define.
+ (strings_object_file): Avoid using get_file_size, instead do the
+ checks here, using file_stat.
+ * configure.in (HAVE_STAT64): New test.
+ * configure: Rebuilt.
+ * config.in: Rebuilt.
+
+2004-10-12 Paul Brook <paul@codesourcery.com>
+
+ * readelf.c (decode_ARM_machine_flags): Support EABI version 4.
+
+2004-10-11 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (dump_symbols): Fix thinko last change. Improve error
+ messages.
+
+2004-10-08 Nick Clifton <nickc@redhat.com>
+
+ * nm.c: Add a new switch --special-syms which, if enabled, will
+ include the ARM Mapping symbols in nm's output.
+ (usage): Mention the switch.
+ (filter_symbols): Handle the switch.
+ * objdump.c: Add a similar switch.
+ (usage): Mention the switch.
+ (dump_symbols): Handle the switch.
+ * doc/binutils.texi: Document the new switches.
+ * NEWS: Mention the new switches.
+
+2004-10-08 Daniel Jacobowitz <dan@debian.org>
+
+ * readelf.c (get_x86_64_section_type_name): New function.
+ (get_section_type_name): Use it.
+
+2004-10-08 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
+
+ * dlltool.c (make_one_lib_file): Revert 2004-09-02 and 2004-09-04
+ patches.
+ * doc/binutils.texi (dlltool): Revert 2004-09-06 patch.
+
+2004-10-07 Alexandre Oliva <aoliva@redhat.com>
+
+ * readelf.c (get_machine_flags): Don't fall through into m68k cpu
+ types.
+
+2004-10-01 Paul Brook <paul@codesourcery.com>
+
+ * readelf.c (get_arm_section_type_name): New function.
+ (get_section_type_name): Use it.
+
+2004-09-28 Nick Clifton <nickc@redhat.com>
+
+ * nm.c: Reorder functions to eliminate most of the static function
+ prototypes.
+
+2004-09-22 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (process_program_headers): Don't include .tbss in non-TLS
+ segments.
+
+2004-09-17 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * doc/Makefile.in: Regenerate.
+ * po/binutils.pot: Regenerate.
+
+2004-09-12 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (decode_location_expression): Sign extend value for
+ DW_OP_const1s, DW_OP_const2s, DW_OP_const4s, DW_OP_bra, DW_OP_skip.
+
+2004-09-09 Nick Clifton <nickc@redhat.com>
+
+ PR 363
+ * ar.c (replace_members): Do not use get_file_size as
+ ar_emul_append correctly handles missing files.
+
+2004-09-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * configure: Regenerated with autconfig 2.13.
+
+2004-09-06 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * doc/binutils.texi (dlltool): Update --add-underscore, --kill-at
+ documentation.
+
+2004-09-06 Michael Wardle <mbw@endbracket.net>
+
+ * doc/binutils.texi (objdump): Document that the -x switch includes
+ the effect of the -p switch.
+
+2004-09-04 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * dlltool.c (make_one_lib_file): Test if internal_name was
+ specified by user before using it.
+
+2004-09-02 Carlo Wood <carlo@alinoe.com>
+
+ PR binutils/351
+ * dlltool.c (make_one_lib_file): For IDATA6 take the name from
+ exp->internal_name if it is present.
+
+2004-09-02 Alexandre Oliva <aoliva@redhat.com>
+
+ * MAINTAINERS: Add self as co-maintainer of FR-V.
+ * readelf.c (get_machine_flags): Print FR-V cpu types.
+
+2004-08-28 Alan Modra <amodra@bigpond.net.au>
+
+ * nm.c (show_synthetic): New var.
+ (long_options): Add "synthetic".
+ (usage): Here too.
+ (display_rel_file): Handle show_synthetic.
+
+2004-08-28 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (dump_bfd): Pass both symbol tables to
+ bfd_get_synthetic_symtab.
+
+2004-08-17 Jakub Jelinek <jakub@redhat.com>
+
+ * objdump.c (dump_bfd): For relocatable objects, pass syms instead
+ of dynsyms to bfd_get_synthetic_symtab.
+
+2004-08-16 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (debug_apply_rela_addends): New function, extracted from..
+ (display_debug_info): ..here.
+ (display_debug_frames): Call debug_apply_rela_addends. Don't do
+ DW_EH_PE_pcrel adjustment for ET_REL.
+
+2004-08-06 Andreas Schwab <schwab@suse.de>
+
+ * readelf.c (dump_relocations): Fix typo when calculating
+ sec_index.
+
+2004-08-02 Jakub Bogusz <qboosh@pld-linux.org>
+
+ * dllwrap.c (deduce_name): Fix typos introduced when program_name
+ was renamed to prog_name.
+
+2004-07-29 Alexandre Oliva <aoliva@redhat.com>
+
+ * readelf.c (get_machine_flags <EM_SH>): Handle EF_SH2A and
+ EF_SH2A_NOFPU.
+
+2004-07-28 Alexandre Oliva <aoliva@redhat.com>
+
+ 2003-07-08 Alexandre Oliva <aoliva@redhat.com>
+ * readelf.c (get_machine_flags <EM_SH)): Handle EF_SH4_NOFPU and
+ EF_SH4A_NOFPU.
+ 2003-06-12 Alexandre Oliva <aoliva@redhat.com>
+ * readelf.c (get_machine_flags <EM_SH>): Print SH ISA name.
+
+2004-07-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objcopy.c (filter_symbols): Use bfd_coff_get_comdat_section
+ to access comdat.
+ * objdump.c (dump_section_header): Likewise.
+
+2004-07-15 Aravinda PR <aravindapr@rediffmail.com>
+
+ * nlmconv.c (main): Pass map_file argument to link_inputs.
+ (link_inputs): Use map_file argument if it is defined.
+
+2004-07-13 Nick Clifton <nickc@redhat.com>
+
+ * dllwrap.c: Replace 'program_name' with 'prog_name' to avoid
+ conflicts with exported global defined in bucomm.h.
+ (deduce_name): Rename parameter 'program_name' to 'name' to avoid
+ shadowing the global defined in bucomm.h.
+
+2004-07-12 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
+
+ * dlltool.c (ext_prefix_alias): New global variable.
+ (make_one_lib_file): Add aliases with prefixes for external
+ and import definitions.
+ (usage): Document -p option.
+ (long_options): Add --ext-prefix-alias option.
+ (main): Handle -p.
+ * doc/binutils.texi: Document new switch.
+ * NEWS: Mention new switch.
+
+2004-07-09 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
+
+ * binutils/dlltool.c (asm_prefix): Add parameter: name.
+ No underscore for symbols beginning with ?.
+ (ASM_PREFIX): Add parameter: NAME.
+ (gen_exp_file): Use new parameter.
+ (make_label): Likewise.
+ (make_imp_label): Likewise.
+ (make_one_lib_file): Likewise.
+
+2004-07-07 Tomer Levi <Tomer.Levi@nsc.com>
+
+ * MAINTAINERS: Added myself to the list.
+ * readelf.c: Include "elf/crx.h".
+ (guess_is_rela): Handle EM_CRX.
+ (get_machine_name): Likewise.
+ (dump_relocations): Likewise.
+
+2004-07-03 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
+
+ * doc/binutils.texi (nm): Clarify weak symbol description.
+
+2004-06-24 Ben Elliston <bje@au.ibm.com>
+
+ * readelf.c (get_segment_type): Display "GNU_STACK", not just
+ "STACK", when a PT_GNU_STACK segment is encountered.
+
+2004-06-24 Alan Modra <amodra@bigpond.net.au>
+
+ * objcopy.c (copy_section): Don't set _cooked_size.
+
+2004-06-22 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (Elf32_Word): Delete.
+ (get_32bit_dynamic_section): Handle SGI ELF dynamic segment.
+ (get_64bit_dynamic_section): Likewise.
+
+ * readelf.c (get_32bit_dynamic_section): Stop at first DT_NULL entry.
+ (get_64bit_dynamic_section): Likewise.
+
+ * readelf.c (dynamic_nent): New variable.
+ (get_32bit_dynamic_section): Set it.
+ (get_64bit_dynamic_section): Here too.
+ (process_dynamic_section): Use it instead of dynamic_size.
+ (process_syminfo): Likewise.
+
+ * readelf.c (get_32bit_dynamic_section): Correct number of entries
+ translated from external to internal form.
+ (get_64bit_dynamic_section): Likewise.
+
+2004-06-18 Jie Zhang <zhangjie@magima.com.cn>
+
+ * readelf.c (process_program_headers): When locating the dynamic
+ section use the section table if it is present.
+ (dynamic_segment): Renamed to dynamic_section.
+ Replace references to dynamic segment with references to dynamic
+ section, except where appropriate.
+ (dynamic_segment_mips_val): Rename to dynamic_section_mips_val.
+ (dynamic_segment_parisc_val): Rename to dynamic_section_parisc_val.
+ (dynamic_segment_ia64_val): Rename to dynamic_section_ia64_val.
+ (get_32bit_dynamic_segment): Rename to get_32bit_dynamic_section.
+ Remove tag counting code as it is no longer needed.
+ (get_64bit_dynamic_segment): Rename to get_64bit_dynamic_section.
+ Remove tag counting code as it is no longer needed.
+ (process_dynamic_segment): Rename to process_dynamic_section.
+
+2004-06-15 Alan Modra <amodra@bigpond.net.au>
+
+ * objcopy.c (copy_section): Use bfd_get_section_size instead of
+ _raw_size or bfd_get_section_size_before_reloc. Don't set reloc_done.
+ (compare_section_lma): Likewise.
+ * addr2line.c (find_address_in_section): Likewise.
+ * coffgrok.c (do_sections_p1): Likewise.
+ * dlltool.c (scan_drectve_symbols): Likewise.
+ * nlmconv.c (main): Likewise.
+ (copy_sections): Likewise.
+ (powerpc_mangle_relocs): Likewise.
+ * objdump.c (disassemble_section): Likewise.
+ * prdbg.c (find_address_in_section): Likewise.
+ * size.c (berkeley_sum): Likewise.
+ * srconv.c (wr_ob): Likewise.
+ * strings.c (strings_a_section): Likewise.
+
+2004-05-28 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * readelf.c (decode_ARM_machine_flags): Add EF_ARM_VFP_FLOAT.
+
+2004-05-17 David Heine <dlheine@tensilica.com>
+
+ * objcopy.c (setup_bfd_headers): New function.
+ (copy_object): Call setup_bfd_headers.
+
+2004-05-13 Paul Brook <paul@codesourcery.com>
+
+ * readelf.c (display_debug_frames): Handle dwarf3 format CIE
+ entries.
+
+2004-05-13 Nick Clifton <nickc@redhat.com>
+
+ * po/fr.po: Updated French translation.
+
+2004-05-11 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (get_segment_type): Handle PT_GNU_RELRO.
+
+2004-05-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (section_groups): New.
+ (group_count): New.
+ (section_headers_groups): New.
+ (process_section_groups): Populate group_count, section_groups
+ and section_headers_groups.
+ (process_unwind): Support section group.
+ (process_object): Always call process_section_groups. Free
+ section_groups and section_headers_groups.
+
+2004-04-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (process_section_headers): Use %3lu on sh_info.
+
+2004-04-30 Michael Deutschmann <michael@talamasca.ocis.net>
+
+ * ranlib.sh: Quote $1 argument in case it contains spaces.
+
+2004-04-27 John Paul Wallington <jpw@gnu.org>
+
+ * objcopy.c (copy_usage, strip_usage): Fix spelling.
+
+2004-04-26 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (do_section_groups): New.
+ (options): Add --section-groups/-g.
+ (usage): Mention --section-groups/-g.
+ (parse_args): Support --section-groups/-g.
+ (get_group_flags): New.
+ (process_section_groups): New.
+ (process_object): Call process_section_groups.
+
+2004-04-24 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (disassemble_section): Don't disassemble sections
+ without SEC_HAS_CONTENTS.
+
+2004-04-22 Jakub Jelinek <jakub@redhat.com>
+
+ * objdump.c (synthsyms, synthcount): New variables.
+ (disassemble_data): Use dynsyms for stripped binaries or libraries.
+ Add synthetized symbols.
+ (dump_bfd): For disassemble, initialize dynsyms always and
+ also synthsyms. Free synthsyms and clear {sym,dynsym,synth}count
+ before returning.
+
+2004-04-14 Alan Modra <amodra@bigpond.net.au>
+
+ * strings.c (print_strings): Cast file_off to unsigned long in
+ printf arg list.
+
+2004-04-07 Benjamin Monate <benjamin.monate@cea.fr>
+
+ PR 86
+ * arsup.c (ar_save): Use smart_rename.
+
+2004-04-01 Dean Luick <luick@cray.com>
+
+ * readelf.c (display_debug_pubnames): Align offset and data
+ columns.
+ (read_and_display_attr_value): Add missing break;
+ (debug_displays): Enable the display of the .debug_pubtypes
+ section.
+
+2004-03-30 Stan Shebs <shebs@apple.com>
+
+ * mpw-config.in, mpw-make.sed, mac-binutils.r: Remove MPW
+ support files, no longer used.
+
+2004-03-23 Paul Brook <paul@codesourcery.com>
+
+ * readelf.c (decode_ARM_machine_flags): Add EABI v3.
+
+2004-03-21 Richard Henderson <rth@redhat.com>
+
+ * readelf.c (display_debug_frames): Don't crash for mismatched
+ DW_CFA_restore_state.
+
+2004-03-19 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * po/binutils.pot: Regenerate.
+
+2004-03-15 Nathan Sidwell <nathan@codesourcery.com>
+
+ * objdump.c (struct SFILE): Replace current pointer with pos
+ offset, rename size to alloc.
+ (objdump_sprintf): Avoid unnecessary copies in the common case
+ (disassemble_bytes): Keep sfile live throughout the
+ function. Adjust usage appropriately.
+
+2004-03-10 Ben Elliston <bje@gnu.org>
+
+ * MAINTAINERS: Update my mail address.
+
+2004-03-08 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * deflex.l: Handle "PRIVATE" string.
+ * defparse.y (%token): Add PRIVATE.
+ (%type): Add opt_PRIVATE.
+ (expline): Pass opt_PRIVATE to def_exports.
+ (opt_PRIVATE): Handle PRIVATE token.
+ * dlltool.h (def_exports): Add 7th param for private flag to
+ declaration.
+ * dlltool.c: Add PRIVATE to comment on EXPORTS syntax.
+ (struct export): Add 'private' field.
+ (def_exports): Set 'private' field of struct exports.
+ (scan_drectve_symbols): Adjust calls to def_exports.
+ (scan_filtered_symbols): Likewise.
+ (dump_def_info): Print 'private' field.
+ (gen_def_file): Likewise.
+ (gen_lib_file): Skip generation of lib object if private.
+ Delete tmp object files in same order as they were generated.
+ Don't delete non-existent private object files.
+
+2004-02-27 Andreas Schwab <schwab@suse.de>
+
+ * ar.c (main): Support POSIX-compatible argument parsing.
+
+2004-02-23 Daniel Lucq <daniel@lucq.org>
+
+ * readelf.c (process_mips_specific): Print conflictsno as an
+ unsigned long.
+
+2004-02-21 Dmitry Timoshkov <dmitry@baikal.ru>
+
+ * dlltool.c (gen_exp_file): Always output names for forwarded symbols.
+
+2004-02-19 Jakub Jelinek <jakub@redhat.com>
+
+ * objcopy.c (copy_section): Avoid warnings.
+
+2004-02-14 Andrew Cagney <cagney@redhat.com>
+
+ * ar.c (remove_output): Use bfd_cache_close.
+ * arsup.c (ar_end): Ditto.
+
+2004-01-21 Roland McGrath <roland@redhat.com>
+
+ * readelf.c (get_note_type): Match NT_AUXV.
+
+2004-01-20 Nick Clifton <nickc@redhat.com>
+
+ * version.c (print_version): Update copyright year to 2004.
+
+2004-01-14 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * acinclude.m4: Quote names of macros to be defined by AC_DEFUN
+ throughout.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2004-01-12 Jakub Jelinek <jakub@redhat.com>
+
+ * objcopy.c: Include elf-bfd.h.
+ (is_strip_section): Don't strip debugging sections if
+ STRIP_NONDEBUG.
+ (setup_section): If STRIP_NONDEBUG make SEC_ALLOC sections
+ ~(SEC_LOAD | SEC_HAS_CONTENTS) and on ELF targets also SHT_NOBITS.
+
+ * objcopy.c (copy_section): Free relpp if relcount == 0.
+
+2004-01-12 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * stabs.c (parse_stab_argtypes): Handle g++ ABI version 3 names.
+ (stab_demangle_argtypes): Likewise.
+ (stab_demangle_v3_argtypes): New static function.
+ (stab_demangle_v3_arg): New static function.
+
+2004-01-12 Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (copy_object): Make the function boolean, returning
+ FALSE upon failure.
+ (copy_archive): Handle the return value from copy_object.
+ (copy_file): Likewise.
+
+2004-01-07 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (find_section): New function. Locates a named
+ section.
+ (get_debug_line_pointer_sizes): New function: Initialises the
+ debug_line_pointer_sizes array.
+ (display_debug_lines): Call get_debug_line_pointer_sizes.
+ (display_debug_loc): Likewise.
+ (load_debug_loc): Use find_section.
+ (load_debug_str): Likewise.
+ (display_debug_info): Likewise.
+ (prescan_debug_info): Delete.
+ (debug_displays): Remove prescan field.
+ (process_section_contents): Do not perform prescans.
+
+2004-01-03 Alan Modra <amodra@bigpond.net.au>
+
+ * objcopy.c (filter_bytes): Delete. Move code to..
+ (copy_section): ..here. Simplify size adjustment. Divide
+ section lma by interleave.
+
+2004-01-02 Nick Clifton <nickc@redhat.com>
+
+ * po/ru.po: New file: Russian translation.
+ * configure.in (ALL_LINGUAS): Add ru
+ * configure: Regenerate.
+
+For older changes see ChangeLog-0203
+
+Copyright (C) 2004 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-2005 b/binutils-2.24/binutils/ChangeLog-2005
new file mode 100644
index 00000000..39e9a82c
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-2005
@@ -0,0 +1,1356 @@
+2005-12-30 Jie Zhang <jie.zhang@analog.com>
+
+ * readelf.c (get_machine_name): Add case for Blackfin.
+
+2005-12-27 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ (Makefile): Remove dependency.
+ * Makefile.in: Regenerate.
+
+2005-12-26 Jan-Benedict Glaw <jbglaw@lug-owl.de>
+
+ * MAINTAINERS: Add myself as VAX maintainer.
+
+2005-12-22 Randolph Chung <tausq@debian.org>
+
+ * rddbg.c (read_section_stabs_debugging_info): Add $GDB_SYMBOLS$
+ entry to names[] array for SOM binaries.
+
+2005-12-21 H.J. Lu <hjl@gnu.org>
+
+ * MAINTAINERS: Add myself as x86_64 maintainer.
+
+2005-12-16 Nathan Sidwell <nathan@codesourcery.com>
+
+ Second part of ms1 to mt renaming.
+ * readelf.c (guess_is_rela): Use EM_MT.
+ (dump_relocations, get_machine_name): Adjust.
+
+2005-12-12 Nathan Sidwell <nathan@codesourcery.com>
+
+ * Makefile.am: Replace ms1 files with mt files.
+ * Makefile.in: Rebuilt.
+ * readelf.c (elf/mt.h): Adjust #include.
+
+2005-11-30 Nick Clifton <nickc@redhat.com>
+
+ * configure.in (ALL_LINGUAS): Add fi.
+ * configure: Regenerate.
+ * po/fi.po: New file: Finnish translation.
+
+2005-11-21 Arnold Metselaar <arnoldm@sourceware.org>
+
+ * MAINTAINERS: add myself as Z80 maintainer
+
+2005-11-17 Andrew Haley <aph@redhat.com>
+
+ * cxxfilt.c (main): Flush output at newline.
+
+2005-11-16 Mark Mitchell <mark@codesourcery.com>
+
+ * doc/binutils.texi: Include config.texi and @file documentation
+ for manual pages.
+
+2005-11-15 Jan Beulich <jbeulich@novell.com>
+
+ * objcopy.c (keep_file_symbols): New.
+ (enum command_line_switch): Add OPTION_KEEP_FILE_SYMBOLS.
+ (strip_options): Add --keep-file-symbols.
+ (copy_options): Likewise.
+ (copy_usage): Likewise.
+ (strip_usage): Likewise.
+ (filter_symbols): Act upon keep_file_symbols.
+ (strip_main): Handle OPTION_KEEP_FILE_SYMBOLS.
+ (copy_main): Likewise.
+ * doc/binutils.texi: Document --keep-file-symbols for objcopy
+ and strip.
+
+2005-11-14 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * readelf.c (struct dump_list_entry, request_dump_byname)
+ (initialise_dumps_byname): New.
+ (parse_args): Call request_dump_byname.
+ (process_section_contents): Call initialise_dumps_byname.
+ * doc/binutils.texi (readelf): Mention -x NAME.
+ * NEWS: Likewise.
+
+2005-11-11 Nick Clifton <nickc@redhat.com>
+
+ PR 1150
+ * readelf.c (get_mips_symbol_other): New function.
+ (get_symbol_other): New function.
+ (process_symbol_table): Call get_symbol_other() to get a
+ description of the st_other field if it contains more information
+ than just the visibility.
+
+2005-11-07 Steve Ellcey <sje@cup.hp.com>
+
+ * configure: Regenerate after modifying bfd/warning.m4.
+
+2005-10-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerated.
+
+ * dep-in.sed: Replace " ./" with " ".
+
+2005-10-25 Alan Modra <amodra@bigpond.net.au>
+
+ * po/POTFILES.in: Regenerate.
+ * po/binutils.pot: Regenerate.
+
+2005-10-24 Bernd Schmidt <bernd.schmidt@analog.com>
+
+ * MAINTAINERS: Add self as BFIN maintainer.
+
+2005-10-18 Jie Zhang <jie.zhang@analog.com>
+
+ * MAINTAINERS: Add self as BFIN maintainer.
+
+2005-10-11 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * rclex.l (handle quotes): Stop parsing hex notation escaped
+ chars after the first two digits,
+
+2005-10-11 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/1437
+ * cxxfilt.c (flags): Remove DMGL_TYPES;
+ (long_options): Rename --no-types to --types.
+ (usage): Likewise.
+ (demangle_it): Add a comment describing why _ and $ prefixes are
+ skipped. Use printf rather than puts to emit the demangled output
+ in order to avoid emitting a new line character.
+ (main): Have the -t flag enable type demangling.
+ Emit a newline after every demangled command line argument.
+ Copy whitespace from stdin to stdout.
+ * doc/binutils.texi (c++filt): Document the change to the -t
+ switch.
+ Document why demangling names on the command line is slightly
+ different to demangling names read from the standard input.
+
+2005-10-10 Mark Mitchell <mark@codesourcery.com>
+
+ * doc/Makefile.am (config.texi): Set top_srcdir.
+ * doc/Makefile.in: Regenerated.
+ * doc/binutils.texi: Use at-file.texi from libiberty.
+
+2005-10-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/1436
+ * readelf.c (ABSADDR): New.
+ (dump_ia64_unwind): Use ABSADDR to get the unwind info address.
+
+2005-10-10 Thomas Weidenmueller <w3seek@reactos.com>
+
+ * resbin.c (res_to_bin_accelerator): Place the terminating NUL at
+ the correct location in the bindata structure.
+
+2005-10-10 Bryce Schober <bryce.schober@dynonavionics.com>
+
+ * doc/binutils.texi (objdump): Fix typo: -reg-name-std should be
+ -reg-names-std.
+
+2005-10-04 Nick Clifton <nickc@redhat.com>
+
+ * cxxfilt.c: Treat mangled names specified on the command line in
+ the same way as mangled names read from stdin.
+ Add -i switch to disable the display of implementation details.
+ Add -t switch to disable the demangling of types.
+ * NEWS: Mention the new switches.
+ * doc/binutils.texi (cxxfilt): Document the -i and -t switches.
+
+2005-10-03 Mark Mitchell <mark@codesourcery.com>
+
+ * addr2line.c (usage): Document @file.
+ * ar.c (usage): Likewise.
+ * coffdump (usage): Likewise.
+ * cxxfilt.c (usage): Likewise.
+ * dlltool.c (usage): Likewise.
+ * dllwrap.c (usage): Likewise.
+ * nlmconv.c (usage): Likewise.
+ * nm.c (usage): Likewise.
+ * objcopy.c (usage): Likewise.
+ * objdump.c (usage): Likewise.
+ * readelf.c (usage): Likewise.
+ * size.c (usage): Likeise.
+ * srconv.c (usage): Likewise.
+ * strings.c (usage): Likewise.
+ * windres.c (usage): Likewise.
+ * doc/binutils.texi: Add section on common options.
+
+2005-10-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ * NEWS: Mention -W/--dwarf.
+
+ * doc/binutils.texi: Document -W/--dwarf for objdump.
+
+2005-10-01 Paul Brook <paul@codesourcery.com>
+
+ * readelf.c (arm_attr_tag_CPU_arch, arm_attr_tag_ARM_ISA_use,
+ arm_attr_tag_THUMB_ISA_use, arm_attr_tag_VFP_arch,
+ arm_attr_tag_WMMX_arch, arm_attr_tag_NEON_arch,
+ arm_attr_tag_ABI_PCS_config, arm_attr_tag_ABI_PCS_R9_use,
+ arm_attr_tag_ABI_PCS_RW_data, arm_attr_tag_ABI_PCS_RO_DATA,
+ arm_attr_tag_ABI_PCS_GOT_use, arm_attr_tag_ABI_PCS_wchar_t,
+ arm_attr_tag_ABI_FP_rounding, arm_attr_tag_ABI_FP_denormal,
+ arm_attr_tag_ABI_FP_exceptions, arm_attr_tag_ABI_FP_user_exceptions,
+ arm_attr_tag_ABI_FP_number_model, arm_attr_tag_ABI_align8_needed,
+ arm_attr_tag_ABI_align8_preserved, arm_attr_tag_ABI_enum_size,
+ arm_attr_tag_ABI_HardFP_use, arm_attr_tag_ABI_VFP_args,
+ arm_attr_tag_ABI_WMMX_args, arm_attr_tag_ABI_optimization_goals,
+ arm_attr_tag_ABI_FP_optimization_goals, arm_attr_public_tags): New.
+ (display_arm_attribute, process_arm_specific): New functions.
+ (process_arch_specific): Add EM_ARM.
+
+2005-09-30 Mark Mitchell <mark@codesourcery.com>
+
+ * dlltool.c (main): Fix typo.
+ * windres.c (main): Likewise.
+
+2005-09-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.in: Regenerated.
+
+2005-09-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysinfo.y (main): Undo last change.
+
+2005-08-30 Mark Mitchell <mark@codesourcery.com>
+
+ * addr2line.c (main): Use expandargv.
+ * ar.c (main): Likewise.
+ * coffdump.c (main): Likewise.
+ * cxxfilt.c (main): Likewise.
+ * dlltool.c (main): Likewise.
+ * dllwrap.c (main): Likewise.
+ * nlmconv.c (main): Likewise.
+ * nm.c (main): Likewise.
+ * objcopy.c (main): Likewise.
+ * objdump.c (main): Likewise.
+ * readelf.c (main): Likewise.
+ * size.c (main): Likeiwse.
+ * srcconv.c (main): Likewise.
+ * strings.c (main): Likewise.
+ * sysdump.c (main): Likewise.
+ * sysinfo.y (main): Likewise.
+ * windres.c (main): Likewise.
+
+2005-09-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerated.
+ * aclocal.m4: Likewise.
+
+2005-09-30 Catherine Moore <clm@cm00re.com>
+
+ * Makefile.am: Bfin support.
+ * Makefile.in: Regenerated.
+ * aclocal.m4: Regenerated.
+ * readelf.c (elf/bfin.h): Include.
+ (guess_is_rela): EM_BLACKFIN support.
+ (dump_relocations): Likewise.
+
+2005-09-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * dwarf.c (fetch_indirect_string): Adjust for section address.
+ (process_debug_info): Likewise.
+ (display_debug_loc): Likewise.
+ (display_debug_ranges): Likewise.
+
+ * objdump.c (mach_o_dwarf_sections): New.
+ (generic_dwarf_sections): Likewise.
+ (check_mach_o_dwarf): Likewise.
+ (dump_dwarf): Call check_mach_o_dwarf.
+
+2005-09-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.am (objdump_SOURCES): Add dwarf.c.
+ * Makefile.in: Regenerated.
+
+ * objdump.c: Include "dwarf.h".
+ (usage): Add -W/--dwarf.
+ (long_options): Likewise.
+ (dump_dwarf_section_info): New.
+ (load_debug_section): Likewise.
+ (free_debug_section): Likewise.
+ (dump_dwarf_section): Likewise.
+ (dump_dwarf): Likewise.
+ (dump_bfd): Load symbol table and call dump_dwarf if
+ dump_dwarf_section_info isn't zero.
+ (main): Handle -W/--dwarf.
+
+2005-09-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c: Reordered.
+ (is_relocatable): New.
+ (dwarf_section): New structure for DWARF section.
+ (load_debug_section): New.
+ (free_debug_section): Likewise.
+ (debug_str_section): Likewise.
+ (debug_abbrev_section): Likewise.
+ (debug_str_contents): Removed.
+ (debug_str_size): Likewise.
+ (debug_loc_contents): Likewise.
+ (debug_loc_size): Likewise.
+ (debug_range_contents): Likewise.
+ (debug_range_size): Likewise.
+ (load_debug_str): Likewise.
+ (free_debug_str): Likewise.
+ (load_debug_loc): Likewise.
+ (free_debug_loc): Likewise.
+ (load_debug_arange): Likewise.
+ (free_debug_arange): Likewise.
+ (load_debug_abbrev): Likewise.
+ (free_debug_abbrev): Likewise.
+ (fetch_indirect_string): Updated.
+ (debug_apply_rela_addends): Likewise.
+ (process_debug_info): Likewise.
+ (get_debug_info): Likewise.
+ (display_debug_lines): Likewise.
+ (display_debug_pubnames): Likewise.
+ (display_debug_macinfo): Likewise.
+ (display_debug_abbrev): Likewise.
+ (display_debug_loc): Likewise.
+ (display_debug_str): Likewise.
+ (display_debug_info): Likewise.
+ (display_debug_aranges): Likewise.
+ (display_debug_ranges): Likewise.
+ (display_debug_frames): Likewise.
+ (display_debug_not_supported): Likewise.
+ (debug_displays): Likewise.
+ (display_debug_section): Likewise.
+ (get_file_header): Set is_relocatable.
+
+2005-09-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (debug_apply_rela_addends): Relocate the whole
+ section.
+ (process_debug_info): Don't call debug_apply_rela_addends.
+ (display_debug_frames): Likewise.
+ (get_debug_info): Call debug_apply_rela_addends.
+ (debug_displays): Add the "relocate" field.
+ (display_debug_section): Call debug_apply_rela_addends if
+ needed.
+
+2005-09-30 Matthias Kurz <mk@baerlap.north.de>
+
+ * bucomm.h: Prevent the inclusion of <libintl.h> from the Solaris
+ version of <locale.h> when ENABLE_NLS is not defined.
+
+2005-09-26 Mark Mitchell <mark@codesourcery.com>
+
+ * BRANCHES: Mention binutils-csl-gxxpro-3_4-branch.
+
+2005-09-20 Richard Henderson <rth@redhat.com>
+
+ * readelf.c (display_debug_lines): Use unsigned long for address
+ increments. Use 0x prefix for all hex numbers.
+
+2005-09-09 Richard Earnshaw <richard.earnshaw@arm.com>
+
+ * readelf.c (get_arm_section_type_name): Add SHT_ARM_PREEMPTMAP and
+ SHT_ARM_ATTRIBUTES.
+
+2005-09-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (get_elf_section_flags): Handle 64bit sh_flags.
+
+2005-09-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (debug_abbrev_contents): New.
+ (debug_abbrev_size): Likewise.
+ (load_debug_abbrev): Likewise.
+ (free_debug_abbrev): Likewise.
+ (process_debug_info): Use them.
+
+2005-08-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/1179
+ * objdump.c (disassemble_bytes): Don't adjust
+ adjust_section_vma.
+ (adjust_addresses): Don't adjust vma for debugging section.
+ Adjust lma only for relocatable files.
+ (dump_bfd): Tell adjust_addresses if it is a relocatable file.
+
+2005-08-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ * bucomm.h (stpcpy): Declare if HAVE_DECL_STPCPY isn't defined.
+
+ * configure.in (AC_GNU_SOURCE): Added.
+ (AC_CHECK_DECLS): Add stpcpy.
+ * configure: Regenerated.
+ * config.in: Likewise.
+
+2005-08-16 Jakub Jelinek <jakub@redhat.com>
+
+ * unwind-ia64.c (UNW_DEC_SPILL_SPREL, UNW_DEC_SPILL_PSPREL,
+ UNW_DEC_RESTORE, UNW_DEC_SPILL_REG): Increase {,ab,t}regname
+ buffer sizes.
+
+2005-08-15 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * doc/binutils.texi (objdump): Document -M e300.
+
+2005-08-14 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * readelf.c (slurp_hppa_unwind_table): Fix entry size on hppa64-hpux.
+ Don't access table entries past the end of the table.
+
+2005-08-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * readelf.c (get_parisc_segment_type): Handle PT_PARISC_WEAKORDER.
+ (get_parisc_section_type_name): Handle SHT_PARISC_DLKM.
+
+2005-08-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ * NEWS: Mention "-t/--section-details" and
+ "-N/--full-section-name".
+
+ * doc/binutils.texi: Document "-t/--section-details". Remove
+ "-N/--full-section-name".
+
+ * readelf.c (do_full_section_name): Renamed to ...
+ (do_section_details): This.
+ (option): Rename "-N/--full-section-name" to
+ "-t/--section-details".
+ (usage): Likewise.
+ (parse_args): Likewise.
+ (get_elf_section_flags): Support do_section_details.
+ (process_section_headers): Updated for do_section_details.
+
+2005-08-04 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * readelf.c (get_parisc_dynamic_type): Add new dynamic types.
+ (get_dynamic_type): Use old values for DT_LOOS and DT_HIOS when
+ e_machine is EM_PARISC.
+ (get_parisc_segment_type): Add new segment types.
+ (get_parisc_section_type_name): Add new section names.
+ (dynamic_section_parisc_val): Add new table entries.
+
+2005-08-01 Filip Navara <navaraf@reactos.com>
+
+ * dlltool.c (alphafunc): Remove and replace usage with nfunc.
+ (nfunc): Fix sorting of fastcall symbols when --kill-at is used.
+
+2005-07-25 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (dump_relocations): Handle SHN_X86_64_LCOMMON.
+ (get_symbol_index_type): Likewise.
+ (get_elf_section_flags): Handle SHF_X86_64_LARGE.
+
+2005-07-21 Eric Christopher <echristo@apple.com>
+
+ * MAINTAINERS: Change affiliation.
+
+2005-07-19 Ben Elliston <bje@au.ibm.com>
+
+ * readelf.c (read_and_display_attr_value): Remove comment adjacent
+ to DW_ATE_decimal_float about it being a GNU extension.
+
+2005-07-18 Nick Clifton <nickc@redhat.com>
+
+ * binemul.c: Fix name of Red Hat.
+ * binemul.h: Likewise.
+ * emul_aix.c: Likewise.
+ * emul_vanilla: Likewise.
+
+2005-07-18 Ben Elliston <bje@au.ibm.com>
+
+ * readelf.c (read_and_display_attr_value): Handle a DW_AT_encoding
+ value of DW_ATE_decimal_float instead of DW_ATE_GNU_decimal_float.
+
+2005-07-16 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2005-07-15 Eric Christopher <echristo@redhat.com>
+
+ * MAINTAINERS: Change affiliation.
+
+2005-07-14 Jim Blandy <jimb@redhat.com>
+
+ * readelf.c: #include "elf/m32c.h"
+ (guess_is_rela, dump_relocations, get_machine_name): Add cases for
+ EM_M32C.
+ * Makefile.am (readelf.o): Update dependencies.
+ * Makefile.in: Regenerated.
+
+2005-07-08 Ben Elliston <bje@au.ibm.com>
+
+ * bucomm.h: Include <stdarg.h> unconditionally, not only when
+ ANSI_PROTOTYPES is defined. Remove #ifdef logic.
+ * dlltool.c: Likewise.
+ * dllwrap.c: Likewise.
+
+2005-07-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * bucomm.h (report): Add format attribute.
+ * dlltool.c (inform): Likewise.
+ * dllwrap.c (display, inform, warn): Likewise.
+ * objdump.c (objdump_sprintf): Likewise.
+ * readelf.c (error, warn): Likewise. Fix format bugs.
+
+2005-07-05 Dmitry V. Levin <ldv@altlinux.org>
+ Nick Clifton <nickc@redhat.com>
+
+ * strings.c (filename_and_size_t): New typedef.
+ (strings_a_section): Skip sections with size greater or equal to
+ the file size. Cache the file size to avoid repeated stat()s.
+ (strings_object_file): Pass filename_and_size_t argument to
+ strings_a_section() via bfd_map_over_sections().
+
+2005-07-04 Alan Modra <amodra@bigpond.net.au>
+
+ PR 1004
+ * objcopy.c (copy_object): Use bfd_make_section_with_flags.
+ (write_debugging_info): Likewise.
+ (setup_section): Use bfd_make_section_anyway_with_flags.
+
+2005-07-01 Steve Ellcey <sje@cup.hp.com>
+
+ * configure.in (AM_BINUTILS_WARNINGS): Add.
+ (BFD_NEED_DECLARATION): Replace with AC_CHECK_DECLS.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+ * objdump.c (NEED_DECLARATION_*): Replace with !HAVE_DECL_*.
+ * bucomm.h: (NEED_DECLARATION_*): Ditto.
+
+2005-06-30 Ben Elliston <bje@gnu.org>
+
+ * Makefile.am (check-DEJAGNU): Don't search for expect.
+ * Makefile.in: Regenerate.
+
+2005-06-30 Ben Elliston <bje@gnu.org>
+
+ * Makefile.am (EXPECT): Set to expect.
+ (RUNTEST): Likewise, set to runtest.
+ * Makefile.in: Regenerate.
+
+2005-06-17 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (CHECK_ENTSIZE_VALUES, CHECK_ENTSIZE): Define.
+ (process_section_headers): Use it.
+ (process_relocs): Don't crash if symsec is not SHT_SYMTAB
+ or SHT_DYNSYM.
+ (process_version_sections): Use sizeof (Elf_External_Versym)
+ instead of sh_entsize.
+
+2005-06-16 Nick Clifton <nickc@redhat.com>
+
+ * rename.c (simple_copy): Only define if it is going to be used.
+ (smart_rename): Mark the preserve_dates parameter as possibly
+ being unused.
+
+ * resres.c (write_res_data): Prevent a potential compile time
+ warning by casting the return value from fwrite.
+
+2005-06-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR 995
+ * ar.c (BUFSIZE): Moved to ...
+ * bucomm.h (BUFSIZE): Here.
+
+ * bucomm.c: Include <assert.h>.
+ (bfd_get_archive_filename): New.
+ * bucomm.h (bfd_get_archive_filename): New.
+
+ * objcopy.c (copy_unknown_object): New.
+ (copy_object): Use bfd_get_archive_filename when reporting input
+ error. Don't call fatal on unknown arch.
+ (copy_archive): Call copy_unknown_object on unknown format or
+ arch.
+
+2005-06-14 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (cmalloc, xcmalloc, xcrealloc): New functions.
+ (get_data): Add nmemb argument. Return NULL if nmemb * size
+ overflows. If var == NULL, allocate one extra byte and
+ clear it.
+ (slurp_rela_relocs, slurp_rel_relocs, get_32bit_program_headers,
+ get_64bit_program_headers, get_program_headers,
+ get_32bit_section_headers, get_64bit_section_headers,
+ get_32bit_elf_symbols, get_64bit_elf_symbols, process_section_headers,
+ process_section_groups, process_relocs, slurp_ia64_unwind_table,
+ ia64_process_unwind, slurp_hppa_unwind_table, hppa_process_unwind,
+ get_32bit_dynamic_section, get_64bit_dynamic_section,
+ process_dynamic_section, process_version_sections, get_dynamic_data,
+ process_symbol_table, dump_section, load_debug_str, load_debug_loc,
+ load_debug_range, read_and_display_attr_value, process_debug_info,
+ get_debug_info, frame_need_space, display_debug_frames,
+ display_debug_section, process_mips_specific, process_gnu_liblist,
+ process_corefile_note_segment): Adjust get_data callers. Use
+ cmalloc, xcmalloc and xcrealloc instead of {m,xm,xre}alloc where
+ passed size is a product of 2 numbers.
+
+ * readelf.c (print_mode): Fix comment typo.
+ (slurp_rela_relocs, slurp_rel_relocs): Fix memory leaks.
+ (dump_relocations): Fix a thinko in check for invalid st_name.
+ (process_program_headers): Don't crash if string_table is NULL.
+ (process_section_headers): Don't crash if e_shstrndx is invalid.
+ Ensure string_table_length is 0 if string_table == NULL.
+ Don't return just because string_table is NULL.
+ (process_section_groups): Don't crash if symtab's sh_link or
+ symbol's st_name is invalid. Fix a memory leak. Fix check for
+ invalid section number entry.
+ (process_relocs): Don't crash if relocation or symbol section's
+ sh_link is invalid.
+ (slurp_ia64_unwind_table, slurp_hppa_unwind_table): Don't crash if
+ relocation section's sh_info is invalid.
+ (ia64_process_unwind, hppa_process_unwind): Don't crash if symbol
+ table's sh_link is invalid.
+ (process_version_sections): Don't crash on version or symbol
+ section's sh_link is invalid. Don't crash if symbol's st_shndx
+ is invalid.
+ (process_symbol_table): Don't crash if string table is corrupt
+ or symbol's st_name, st_shndx, vna_name or vda_name is invalid.
+ (debug_apply_rela_addends): Don't crash if relocation section's
+ sh_info or sh_link is invalid.
+ (display_debug_loc): Warn for unterminated .debug_loc section
+ or start offsets not within .debug_loc section boundaries.
+ (process_gnu_liblist): Don't crash if liblist section's sh_link
+ or entry's l_name is invalid.
+
+2005-06-09 Jakub Jelinek <jakub@redhat.com>
+
+ * objdump.c (disassemble_bytes): Don't crash if q->howto == NULL.
+ If q->howto->name == NULL, print q->howto->type as number instead.
+ (dump_reloc_set): Likewise.
+
+2005-06-07 Eric Christopher <echristo@redhat.com>
+
+ * readelf.c (guess_is_rela): Support ms1.
+ (dump_relocations): Ditto.
+ (get_machine_name): Ditto.
+
+2005-06-07 Aldy Hernandez <aldyh@redhat.com>
+ Michael Snyder <msnyder@redhat.com>
+ Stan Cox <scox@redhat.com>
+
+ * Makefile.am (readelf.o): Depend on ms1.h.
+
+ * Makefile.in: Regenerate.
+
+ * readelf.c: Include ms1.h.
+
+2005-06-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR 990
+ * nm.c (print_symbol): Call bfd_find_line before
+ bfd_find_nearest_line.
+
+2005-06-06 Alan Modra <amodra@bigpond.net.au>
+
+ * NEWS: Mention new powerpc ld support.
+
+2005-06-03 Steve Ellcey <sje@cup.hp.com>
+
+ * configure.in: Check for getc_unlocked prototype.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+ * strings.c (get_char): Only call getc_unlocked if we have seen a
+ prototype.
+
+2005-06-03 Nick Clifton <nickc@redhat.com>
+
+ * configure.in (ALL_LINGUAS): Add zh_TW
+ * configure: Regenerate.
+ * po/zh_TW.po: New Chinese (traditional) translation.
+
+2005-05-31 Richard Henderson <rth@redhat.com>
+
+ * readelf.c (dump_relocations): Special case R_ALPHA_LITUSE.
+
+2005-05-29 Richard Henderson <rth@redhat.com>
+
+ * readelf.c (get_alpha_dynamic_type): New.
+ (get_dynamic_type): Call it.
+
+2005-05-24 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (process_section_groups): Report group section
+ index. Check if the section member index is valid.
+
+2005-05-23 Fred Fish <fnf@specifixinc.com>
+
+ * addr2line.c (unwind_inlines): New flag for 'i' option.
+ (usage): Document '-i' option.
+ (long_options): Recognize '--inlines'.
+ (translate_addresses): Loop, calling bfd_find_inliner_info as
+ necessary and printing multiple output lines.
+ (main): Handle 'i' option.
+ * doc/binutils.texi (addr2line): Document '-i' option.
+ * NEWS: Mention new addr2line '-i' option.
+
+2005-05-23 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (fetch_indirect_string): Display a warning message
+ when a corrupt DW_FORM_strp value is encountered.
+
+ (process_debug_info): Mention that the compilation unit offset is
+ being displayed in hexadecimal.
+
+ (display_debug_lines): Fix typo in name of .debug_line section.
+
+2005-05-19 Zack Weinberg <zack@codesourcery.com>
+
+ * Makefile.am: Have 'all' depend on 'info'.
+ * Makefile.in: Regenerate.
+
+2005-05-19 Ben Elliston <bje@au.ibm.com>
+
+ * readelf.c (read_and_display_attr_value): Handle a DW_AT_encoding
+ value of DW_ATE_GNU_decimal_float.
+
+2005-05-17 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * doc/Makefile.am (config.texi): Don't use $<.
+ * doc/Makefile.in: Regenerated.
+
+2005-05-15 Yitzchak Scott-Thoennes <sthoenna@efn.org>
+
+ * deflex.l: Ignore CRs
+
+2005-05-15 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * acinclude.m4: Remove obsolete code.
+ * configure.in: Update AC_PREREQ.
+ * doc/Makefile.am (binutils_TEXINFOS): Define.
+ (config.texi): Depend on distributed files instead of built
+ files.
+ (binutils.dvi, binutils.info): Remove unnecessary rules.
+ (DISTCLEANFILES): Remove.
+ (install-data-local): Renamed from install.
+ (info-local): Renamed from info.
+ * Makefile.in, aclocal.m4, config.in, configure,
+ doc/Makefile.in: Regenerated.
+
+2005-05-14 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (get_ppc_dynamic_type): Display DT_PPC_GOT, not
+ DT_PPC_GLINK.
+
+2005-05-13 Fred Fish <fnf@specifixinc.com>
+
+ * readelf.c: Fix a couple of obvious comment typos,
+ 'debug_str' -> 'debug_ranges' and proecess' -> 'process'.
+
+2005-05-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (dump_ia64_unwind): Get stamp with proper size.
+
+2005-05-12 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (display_debug_lines): If pointer_size has not been
+ found then assume that it is 4 in order to prevent a seg fault
+ when process_extend_line_op attempts to read the line data.
+
+2005-05-11 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (get_ppc_dynamic_type): New function for DT_PPC_GLINK.
+ (get_dynamic_type): Call the above.
+
+2005-05-07 Nick Clifton <nickc@redhat.com>
+
+ * Update the address and phone number of the FSF organization in
+ the GPL notices in the following files:
+ aclocal.m4, addr2line.c, ar.c, arlex.l, arparse.y, arsup.c,
+ arsup.h, binemul.c, binemul.h, bucomm.c, bucomm.h, budbg.h,
+ budemang.c, budemang.h, coffdump.c, coffgrok.c, coffgrok.h,
+ cxxfilt.c, debug.c, debug.h, deflex.l, defparse.y, dlltool.c,
+ dlltool.h, dllwrap.c, emul_aix.c, emul_vanilla.c, filemode.c,
+ ieee.c, nlmconv.c, nlmconv.h, nlmheader.y, nm.c, objcopy.c,
+ objdump.c, prdbg.c, rclex.l, rcparse.y, rdcoff.c, rddbg.c,
+ readelf.c, rename.c, resbin.c, rescoff.c, resrc.c, resres.c,
+ size.c, srconv.c, stabs.c, strings.c, sysdump.c, sysinfo.y,
+ syslex.l, unwind-ia64.c, unwind-ia64.h, version.c, windres.c,
+ windres.h, winduni.c, winduni.h wrstabs.c, doc/fdl.texi
+
+2005-05-06 Jan Beulich <jbeulich@novell.com>
+
+ * objcopy.c (copy_file): Don't delete output upon error here.
+ (copy_main): Delete output upon error.
+
+2005-05-02 Ben Elliston <bje@au.ibm.com>
+
+ * dlltool.c (dtab): Remove empty function.
+ (process_duplicates): Remove calls to dtab().
+
+2005-05-01 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * doc/binutils.texi (strip, objcopy): Clarify the description of
+ the "--strip-debug" option. Fix a typo.
+
+2005-04-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ * bucomm.c: Undo the last change.
+ * bucomm.h: Likewise.
+
+2005-04-29 Ben Elliston <bje@au.ibm.com>
+
+ * syslex.l (word, number, unit): Remove unused variables.
+ * nlmheader.y (keyword_tokens): Make static.
+ * coffdump.c (dump_coff_symbol, coff_dump): Make static.
+ * coffgrok.c (lofile, last_function_symbol, last_function_type,
+ last_struct, last_enum, cur_sfile): Make variables static.
+ * sysdump.c (getCHARS, fillup, getBARRAY, getINT, getBITS,
+ sysroff_swap_tr_in, sysroff_print_tr_out): Make static.
+ * sysinfo.y (writecode, it, code, repeat, oldrepeat, name, rdepth,
+ names, pnames): Likewise.
+
+2005-04-29 Ben Elliston <bje@au.ibm.com>
+
+ * ar.c (mri_mode): Make static.
+ * arsup.c (obfd, real_name, outfile): Likewise.
+ * binemul.c (ar_emul_create): Remove unused function.
+ (ar_emul_default_create): Likewise.
+ * binemul.h (ar_emul_create): Remove declaration.
+ (ar_emul_default_create): Likewise.
+ (struct bin_emulation_xfer_struct): Remove ar_create member.
+ * bucomm.c (report): Make static.
+ * bucomm.h (report): Remove declaration.
+ * cxxfilt.c (mbuffer): Make static.
+ (main): Use unsigned ints for some loop control variables.
+ * readelf.c: Make many global variables static.
+ * size.c (berkeley_format): Make static.
+ (long_options): Likewise.
+ * emul_aix.c (bin_aix_emulation): Remove ar_emul_default_create
+ structure initialiser.
+ (bin_aix5_emulation): Likewise.
+ * emul_vanilla.c (bin_vanilla_emulation): Likewise.
+
+2005-04-27 Ben Elliston <bje@au.ibm.com>
+
+ * syslex.l: Adjust top-of-file comment: this file is part of GNU
+ binutils, not GNU ld.
+
+2005-04-25 Nick Clifton <nickc@redhat.com>
+
+ PR872
+ * objcopy.c (copy_archive): Initialise 'obfd' field of new
+ name_list structure.
+
+ * objcopy.c (copy_usage): Fix description of -K switch.
+
+ * doc/binutils.texi (strip, objcopy): Fix description of -K
+ switch.
+
+2005-04-20 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * readelf.c (display_debug_frames): Use data factor for
+ DW_CFA_def_cfa_sf and DW_CFA_def_cfa_offset_sf.
+
+2005-04-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objdump.c (dump_section_header): Skip linker created section.
+
+2005-04-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objdump.c (dump_section_header): Support SEC_GROUP.
+
+2005-04-16 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (debug_apply_rela_addends): Remove redundant %s from
+ printf string.
+
+2005-04-15 Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (copy_file): Issue an error message when attmepting to
+ copy an empty input file.
+
+2005-04-14 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am (NO_WERROR): Define. Use instead of -Wno-error.
+ * configure.in: Include ../bfd/warning.m4 contents.
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * doc/Makefile.in: Regenerate.
+
+2005-04-12 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ (syslex.o, sysinfo.o, arparse.o, arlex.o): Add -Wno-error to command.
+ (sysroff.o, defparse.o, deflex.o): Likewise.
+ (nlmheader.o, rcparse.o, rclex.o): Likewise.
+ * Makefile.in: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+
+2005-04-11 Jan Beulich <jbeulich@novell.com>
+
+ * MAINTAINERS: Add myself as ix86 Intel mode maintainer.
+
+2005-04-06 Nick Clifton <nickc@redhat.com>
+ H.J. Lu <hongjiu.lu@intel.com>
+
+ * po/rw.po: New translation: Kinyarwanda.
+ * configure.in (ALL_LINGUAS): Add rw.
+ * configure: Regenerate.
+
+2005-04-04 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * readelf.c (debug_apply_rela_addends): Reorder r_info as
+ necessary for 64-bit MIPS.
+
+2005-04-04 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * doc/binutils.texi (readelf): Remove a duplicate paragraph.
+
+2005-04-04 Ramana Radhakrishnan <ramana.radhakrishnan@codito.com>
+
+ PR binutils/813
+ * objdump.c (dump_symbols): Add a check to see if the section for
+ the symbol is chosen using process_section_p.
+
+2005-04-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ * NEWS: Mention new readelf options, "-N/--full-section-name"
+ and "-g/--section-groups".
+
+ * doc/binutils.texi: Document new readelf options,
+ "-N/--full-section-name" and "-g/--section-groups".
+
+2005-03-31 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (do_full_section_name): New.
+ (options): Add "--full-section-name"/'N'.
+ (usage): Add -N/--full-section-name.
+ (parse_args): Handle 'N'.
+ (process_section_headers): Print out the full section name if
+ do_full_section_name isn't 0.
+
+2005-03-31 Nick Clifton <nickc@redhat.com>
+
+ * configure.in: Add a check for <unistd.h> providing a prototype
+ for getopt() which is compatible with the one in
+ include/getopt.h. If so then define HAVE_DECL_GETOPT.
+ * configure: Regenerate.
+ * config.in (HAVE_DECL_GETOPT): Add.
+ * aclocal.m4: Regenerate.
+ * addr2line.c: Include "config.h" before "bfd.h" so that
+ HAVE_DECL_GETOPT is defined before getopt.h is included.
+
+2005-03-21 Jan-Benedict Glaw <jbglaw@lug-owl.de>
+
+ * doc/binutils.texi: Document new VAX disassembler-specific option
+ -M entry:0xfooba8.
+ * NEWS: Mention the new option.
+
+2005-03-29 Anil Paranjpe <anilp1@kpitcummins.com>
+
+ * MAINTAINERS: Add myself as H8300 maintainer.
+
+2005-03-28 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
+
+ * objdump.c (disassemble_bytes): Remove cast.
+
+2005-03-25 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * BRANCHES: Add binutils-csl-arm-2005q1-branch and
+ binutils-2_16-branch.
+
+2005-03-25 Mark Kettenis <kettenis@gnu.org>
+
+ * MAINTAINERS: Add myself as M88k maintainer.
+
+2005-03-24 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * winduni.c (unicode_from_ascii): Don't declare variables
+ 's' and 'w' if _WIN32. Use MultiByteToWideChar to set the unicode
+ string len.
+
+2005-03-24 Dmitry Diky <diwil@spec.ru>
+
+ * MAINTAINERS: Add myself as MSP430 maintainer.
+
+2005-03-23 Nick Clifton <nickc@redhat.com>
+
+ * po/fr.po: Updated translation.
+
+2005-03-22 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add Daniel Jacobwitz to the blanket write
+ privileges list.
+
+2005-03-17 Paul Brook <paul@codesourcery.com>
+ Dan Jacobowitz <dan@codesourcery.com>
+ Mark Mitchell <mark@codesourcery.com>
+
+ * binutils/readelf.c (get_arm_segment_type): New function.
+ (get_segment_type): Use it.
+
+2005-03-18 Paul Brook <paul@codesourcery.com>
+
+ * objdump.c (objdump_print_addr): Avoid uninitialized warning.
+
+2005-03-17 Diego Novillo <dnovillo@redhat.com>
+
+ * MAINTAINERS: Remove self as maintainer of x86 intel
+ mode.
+
+2005-03-16 Nick Clifton <nickc@redhat.com>
+ Ben Elliston <bje@au.ibm.com>
+
+ * configure.in (werror): New switch: Add -Werror to the
+ compiler command line. Enabled by default. Disable via
+ --disable-werror.
+ * configure: Regenerate.
+
+2005-03-15 Daniel Marques <marques@cs.cornell.edu>
+ Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (globalize_specific_list): New linked list of symbols
+ to convert from local binding into global binding.
+ (command_line_switch): Add OPTION_GLOBALIZE_SYMBOL and
+ OPTION_GLOBALIZE_SYMBOLS.
+ (copy_options): Add "globalize-symbol" and "globalize-symbols".
+ (copy_usage): Document the new switches.
+ (filter_symbols): Convert defined local symbols mentioned on the
+ globalize_specific_list into global symbols.
+ (copy_object): Perform actions if the globalize_specific_list is
+ not empty.
+ (copy_main): Handle new switches.
+ * NEWS: Mention new feature.
+ * doc/binutils.texi: Document new switches.
+
+2005-03-15 Alan Modra <amodra@bigpond.net.au>
+
+ * po/es.po: Commit new Spanish translation.
+
+ * po/fr.po: Commit new French translation.
+
+2005-03-14 Alan Modra <amodra@bigpond.net.au>
+
+ * po/tr.po: Commit new Turkish translation.
+
+2005-03-11 Nick Clifton <nickc@redhat.com>
+
+ * po/fr.po: Updated French translation.
+
+2005-03-10 Nick Clifton <nickc@redhat.com>
+
+ * configure.in (ALL_LINGUAS): Add Romanian lingua "ro".
+ * configure: Regenerate.
+ * po/ro.po: New file.
+
+ * po/ru.po: Updated file.
+
+2005-03-05 Alan Modra <amodra@bigpond.net.au>
+
+ * po/binutils.pot: Regenerate.
+
+2005-03-02 Jan Beulich <jbeulich@novell.com>
+
+ * ar.c (remove_output): Use unlink_if_ordinary instead of unlink.
+ * objcopy.c (copy_file): Likewise.
+ (strip_main): Likewise.
+
+2005-03-01 Stig Petter Olsroed <stigpo@users.sourceforge.net>
+ Nick Clifton <nickc@redhat.com>
+
+ * objdump.c: Fix coding for DISASSEMBLER_NEEDS_RELOC:
+ (struct objdump_disasm_info): Add 'reloc' field.
+ (disassemble_bytes): Fix check for when an insn has a reloc
+ associated with it. Improve comment explaining why the use of
+ octets is wrong. Set the 'reloc' field in objdump_disasm_info
+ structure.
+ (objdump_print_addr): Use new 'reloc' field to lookup the correct
+ address for the symbol associated with the current instruction's
+ relocation.
+ (disassemble_info): Initialise 'reloc' field.
+
+2005-02-28 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (get_file_type, get_machine_name, get_osabi_name,
+ get_segment_type, get_section_type_name, get_elf_class,
+ get_data_encoding, get_group_flags, dynamic_section_mips_val,
+ get_symbol_binding, get_symbol_type, get_TAG_name, get_FORM_name,
+ get_AT_name, process_mips_specific, process_gnu_liblist,
+ get_note_type, get_netbsd_elfcore_note_type): Use snprintf instead of
+ sprintf where needed.
+ (get_dynamic_type): Likewise. Increase buff to 64 bytes.
+ (get_elf_section_flags): Increase buff to 33 bytes. Avoid
+ using strcat.
+ (get_dynamic_flags): Renamed to...
+ (print_dynamic_flags): ... this. Print the flags to stdout instead
+ of returning them as string.
+ (process_dynamic_section): Adjust caller.
+
+2005-02-25 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (display_debug_ranges): Print out offset for end of
+ list.
+
+2005-02-23 Alan Modra <amodra@bigpond.net.au>
+
+ * dlltool.c: Warning fixes.
+ * objdump.c: Likewise.
+
+2005-02-22 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am (syslex.o, sysinfo.o): Pass AM_CFLAGS to compiler.
+ (syslex.o, sysinfo.o, dlltool.o, rescoff.o): Remove duplicate
+ dependencies. Run "make dep-am".
+ * nlmconv.c: Warning fixes.
+ * readelf.c: Likewise.
+ * srconv.c: Likewise.
+ * sysdump.c: Likewise.
+ * sysinfo.y: Likewise.
+ * syslex.l: Likewise. Use yyleng instead of strlen, memcpy instead
+ of strcpy.
+ * Makefile.in: Regenerate.
+
+2005-02-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objcopy.c (parse_flags): Replace SEC_SHARED with
+ SEC_COFF_SHARED.
+
+ * objdump.c (dump_section_header): Dump SEC_TIC54X_BLOCK and
+ SEC_TIC54X_CLINK for TI c54x only. Remove SEC_ARCH_BIT_0. Dump
+ SEC_COFF_SHARED for COFF only.
+
+2005-02-21 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am"
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+
+2005-02-21 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (BYTE_GET8): Delete. Replace uses with BYTE_GET.
+ (byte_get_little_endian): Don't handle size of -8.
+ (byte_get_signed, byte_get_big_endian): Likewise.
+ (print_dec_vma, print_hex_vma): New functions.
+ (print_vma): Use them. Return chars output.
+ (get_dynamic_data): Return a bfd_vma array. Add ent_size parm.
+ (process_symbol_table): Handle alpha and s390 .hash.
+
+2005-02-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (display_debug_loc): Print out offset for end of
+ list.
+
+2005-02-18 Joseph S. Myers <joseph@codesourcery.com>
+
+ * Makefile.am (TOOL_PROGS): Add objdump.
+ * Makefile.in: Regenerate.
+
+2005-02-17 Alan Modra <amodra@bigpond.net.au>
+
+ * deflex.l (YY_NO_UNPUT): Define.
+ * rclex.l (YY_NO_UNPUT): Define.
+ * rcparse.y (null_unichar): New static var.
+ (res_null_text): Use it rather than attempting to init from wchar_t.
+ * windres.c: Include assert.h and time.h before getopt.h.
+ Include config.h and unistd.h too.
+
+2005-02-15 Nick Clifton <nickc@redhat.com>
+
+ * nlmconv.c: Provide a full prototype for the localtime() function
+ in order to avoid a compile time warning.
+
+2005-02-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (group_count): Don't initialize it.
+ (process_section_groups): Reurn 1 if we won't do unwind nor
+ section groups. Set group_count to 0 before counting group
+ sections and return 1 if there are no group sections. Reread
+ SHT_SYMTAB/SHT_STRTAB sections only when needed. Don't skip
+ section 0.
+ (process_object): Only set do_unwind to 0 if
+ process_section_groups return 0.
+
+2005-02-10 Ian Lance Taylor <ian@airs.com>
+
+ * MAINTAINERS: Update my e-mail address.
+
+2005-02-10 Mark Mitchell <mark@codesourcery.com>
+
+ * MAINTAINERS: Add Paul Brook and Mark Mitchell as ARM (Symbian)
+ maintainers.
+
+2005-02-07 Inderpreet Singh <inderpreetb@noida.hcltech.com>
+
+ * MAINTAINERS: Add self as maintainer of MAXQ.
+
+2005-01-31 Richard Sandiford <rsandifo@redhat.com>
+
+ * readelf.c (eh_addr_size): New variable.
+ (find_section): Move earlier in file. Return empty sections too.
+ (process_program_headers): Use find_section to find .dynamic.
+ (process_section_headers): Initialize eh_addr_size.
+ (dump_ia64_unwind, slurp_ia64_unwind_table, ia64_process_unwind)
+ (dump_hppa_unwind, slurp_hppa_unwind_table, hppa_process_unwind)
+ (display_debug_frames): Use it instead of local addr_size variable.
+ (size_of_encoded_value): Get pointer size from eh_addr_size rather
+ than is_32bit_elf.
+
+2005-01-31 Andrew Cagney <cagney@gnu.org>
+
+ * configure: Regenerate to track ../gettext.m4.
+
+2005-01-31 Nick Clifton <nickc@redhat.com>
+
+ * version.c (print_version): Bump the copyright date to 2005.
+
+2005-01-25 Alan Modra <amodra@bigpond.net.au>
+
+ * nm.c (display_rel_file): Read dynamic syms before calling
+ bfd_get_synthetic_symtab.
+
+2005-01-21 Ben Elliston <bje@au.ibm.com>
+
+ * dlltool.c (dump_iat): Remove unused function.
+ (gen_exp_file): Remove #if 0'd code.
+ (make_one_lib_file): Likewise.
+ * srconv.c: Remove #if 0'd code throughout.
+ * size.c (lprint_number): Remove.
+ (print_berkeley_format): Remove #if 0'd code.
+ * ar.c (do_quick_append): Remove declaration and definiton.
+ (main): Remove #if 0'd code.
+ * filemode.c (filemodestring): Remove #if 0'd function.
+ * sysdump.c (unit_info_list): Remove function.
+ (object_body_list): Likewise.
+ (program_structure): Likewise.
+ (debug_list): Likewise.
+ (module): Remove #if 0'd code.
+
+2005-01-20 Mark Mitchell <mark@codesourcery.com>
+
+ * BRANCHES: Add binutils-2_15-branch.
+
+ * MAINTAINERS: Document branch policy.
+ * BRANCHES: New file.
+
+2005-01-19 Fred Fish <fnf@specifixinc.com>
+
+ * NEWS: Make note of the new MIPS disassembly option "no-aliases".
+ * doc/binutils.texi (objdump): Document the "no-aliases"
+ disassembly option.
+
+2005-01-17 Eugene Kotlyarov <ekot@narod.ru>
+
+ PR binutils/647
+ * rcparse.y (RCDATA): Allow a filename to be supplied as the
+ parameter. Parse it with define_rcdata_file().
+ * resrc.c (define_rcdata_file): New function.
+ * windres.h: Provide a prototype for the new function.
+
+ * resrc.c (define_user_file): Fix typo by replacing "font file"
+ with "file".
+
+2005-01-16 Jason Thorpe <thorpej@netbsd.org>
+
+ * MAINTAINERS: Update my email address.
+
+2005-01-16 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * dlltool.c (set_dll_name_from_def): New function. Strip name
+ to basename, with warning.
+ (def_name): Use it.
+ (def_library): Likwise.
+ (main): Strip arg of --dllname to basename, with warning.
+ Only use basename of exp_name when inferring dll_name.
+
+2005-01-11 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/637
+ * doc/binutils.texi (c++filt): Use uppercase CXXFILT in the
+ footnote in order to prevent the sed script in the Makefile from
+ converting it into c++filt.
+
+2005-01-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ BZ 635
+ readelf.c (saved_base_address): Removed.
+ (decode_64bit_range): Likewise.
+ (decode_range): Likewise.
+ (display_64bit_debug_ranges): Likewise.
+ (debug_info): Add range_lists, num_range_lists and
+ max_range_lists.
+ (read_and_display_attr_value): Handle do_debug_ranges.
+ (process_debug_info): Likewise.
+ (display_debug_ranges): Rewrite.
+ (process_object): Free range_lists.
+
+2005-01-10 Andreas Schwab <schwab@suse.de>
+
+ * configure.in: Don't define SKIP_ZEROES.
+ * configure: Regenerate.
+ * objdump.c (disassemble_data): Set skip_zeroes and
+ skip_zeroes_at_end in disasm_info to defaults.
+ (DEFAULT_SKIP_ZEROES): Rename from SKIP_ZEROES and always define.
+ (DEFAULT_SKIP_ZEROES_AT_END): Rename from SKIP_ZEROES_AT_END and
+ always define.
+ (disassemble_bytes): Use skip_zeroes and skip_zeroes_at_end from
+ objdump_disasm_info.
+
+2005-01-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (display_debug_loc): Display base address
+ specifiers. Always output <End of list>.
+
+2005-01-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (have_frame_base): New.
+ (need_base_address): Likewise.
+ (saved_base_address): Likewise.
+ (decode_location_expression): Return 1 if DW_AT_frame_base is
+ needed.
+ (debug_info): Add base_address and a have_frame_base pointer.
+ (read_and_display_attr_value): Replace saved_DW_AT_low_pc with
+ saved_base_address. Record base address. Set have_frame_base.
+ Record if a location list has DW_AT_frame_base. Display if a
+ location expression has no DW_AT_frame_base but needs one. Set
+ saved_base_address only if needed.
+ (process_debug_info): Clear have_frame_base, saved_base_address
+ and set need_base_address.
+ (display_debug_loc): Display if a location expression has no
+ DW_AT_frame_base but needs one. Display if start >= end. Don't
+ adjust for section address. Properly handle base address.
+ (process_object): Free the have_frame_base pointer in
+ debug_info.
+
+2005-01-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (display_debug_loc): Display offsets for hole and
+ overlap.
+ (display_debug_str): Add a newline at the end.
+
+2005-01-04 Armin Diehl <diehl@nordrhein.de>
+
+ PR binutils/630
+ * nlmconv.c (main): Only store the basename of the output filename
+ in the module table.
+
+2005-01-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ BZ 615
+ * readelf.c (process_debug_info): New.
+ (debug_info): Add num_loc_offsets, loc_offsets and
+ last_loc_offset_p.
+ (get_debug_info): Use process_debug_info.
+ (display_debug_loc): Properly handle location list. Warn if bad
+ location lists are encoutnered.
+ (read_and_process_attr_value): New.
+ (read_and_display_attr_value): Use "%lx" for DW_FORM_data4.
+ (display_debug_info): Use process_debug_info.
+ (process_object): Also free loc_offsets in debug_information.
+
+For older changes see ChangeLog-2004
+
+Copyright (C) 2005 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-2006 b/binutils-2.24/binutils/ChangeLog-2006
new file mode 100644
index 00000000..b8377825
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-2006
@@ -0,0 +1,605 @@
+2006-12-25 Kazu Hirata <kazu@codesourcery.com>
+
+ * readelf.c (get_machine_flags): Handle EF_M68K_CPU32_FIDO_A.
+
+2006-12-11 J"orn Rennecke <joern.rennecke@arc.com>
+
+ MAINTAINERS (SH): Remove my entry.
+
+2006-12-11 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * configure.in: Define GENINSRC_NEVER.
+ * doc/Makefile.am (MAINTAINERCLEANFILES): Add info file.
+ (DISTCLEANFILES): Pretend to add info file.
+ * po/Make-in (.po.gmo): Put gmo files in objdir.
+ * configure, Makefile.in, doc/Makefile.in: Regenerated.
+
+2006-12-07 Kazu Hirata <kazu@codesourcery.com>
+
+ * readelf.c: Update uses of EF_M68K_*.
+
+2006-10-30 Paul Brook <paul@codesourcery.com>
+
+ * objdump.c (disassemble_section): Set info->symtab_pos.
+ (disassemble_data): Set info->symtab and info->symtab_size.
+
+2006-10-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/3384
+ * configure.in (AC_CHECK_HEADERS): Add limits.h and sys/param.h.
+ * configure: Regenerated.
+ * config.in: Likewise.
+
+ * readelf.c: Include <limits.h> and <sys/param.h> for PATH_MAX.
+ (program_interpreter): Allocate PATH_MAX bytes instead of 64.
+ (process_program_headers): Don't assume that program interpreter
+ is shorter than 64 characters.
+
+2006-10-25 Trevor Smigiel <Trevor_Smigiel@playstation.sony.com>
+ Yukishige Shibata <shibata@rd.scei.sony.co.jp>
+ Nobuhisa Fujinami <fnami@rd.scei.sony.co.jp>
+ Takeaki Fukuoka <fukuoka@rd.scei.sony.co.jp>
+ Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c: Add SPU support.
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2006-10-13 Robert Connolly <robert@linuxfromscratch.org>
+
+ PR binutils/2876
+ * configure.in: Check for the mkstemp and mkdtemp functions.
+ * configure: Regenerate.
+ * config.in (HAVE_MKDTEMP): New potential define.
+ (MAKE_MKSTEMP): Likewise.
+ * bucomm.c (make_tempname): Use mkstemp if it is available.
+ (make_tempdir): New function: Create a temporary directory using
+ mkdtemp, if it is available.
+ * bucomm.h (make_tempdir): New prototype.
+ * objcopy.c (copy_archive): Use make_tempdir if it is available.
+ (strip_main): Produce an warning message if a temporary file could
+ not be created.
+ (copy_main): Likewise.
+ * ar.c (write_archive): Likewise.
+
+2006-10-10 Andreas Schwab <schwab@suse.de>
+
+ * dwarf.c (display_debug_loc): Don't dereference loc_offsets when
+ there are no location lists.
+ (display_debug_ranges): Similar for range_lists.
+
+2006-10-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (debug_apply_rela_addends): Don't ignore relocation
+ against symbols without type.
+
+2006-09-25 Pedro Alves <pedro_alves@portugalmail.pt>
+
+ * nlmconv.c (main) : Use LITMEMCPY.
+ * prdbg.c (tg_class_static_member) : Use LITSTRCPY.
+
+2006-09-26 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/3257
+ * strings.c (main): Handle "-T format".
+
+2006-09-26 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add Mei Ligang as maintainer of the Score port.
+
+2006-09-26 Thiemo Seufer <ths@networkno.de>
+
+ * configure.in: Remove broken changequote lines.
+
+2006-09-20 Kai Tietz <Kai.Tietz@onevision.com>
+
+ * configure.in: Add new target x86_64-pc-mingw64.
+ * configure: Regenerate.
+ * dlltool.c: Adjust include for this target.
+ (DLLTOOL_MX86_64): Added macro to handle target specific code.
+ (mname): Added default target static as "i386:x86-64".
+ (MX86): Added macro for target ident.
+ (mtable): Added target specific definitions.
+ (rvaafter): Add handling of MX86.
+ (rvabefore): Add handling of MX86.
+ (asmprefix): Add handling of MX86.
+
+2006-09-17 Mei Ligang <ligang@sunnorth.com.cn>
+
+ * readelf.c: Add support for Score binaries.
+ * Makefile.am: Update readelf's dependencies.
+ * Makefile.in: Regenerate.
+
+2006-09-16 Nick Clifton <nickc@redhat.com>
+ Pedro Alves <pedro_alves@portugalmail.pt>
+
+ * ar.c: Make use of new STRING_COMMA_LEN and CONST_STRNEQ
+ macros defined in bfd.h.
+ * dlltool.c: Likewise.
+ * emul_aix.c: Likewise.
+ * nlmconv.c: Likewise.
+ * objdump.c: Likewise.
+ * prdbg.c: Likewise.
+ * stabs.c: Likewise.
+ * readelf.c (const_strneq): New macro.
+ (process_section_headers, slurp_ia64_unwind_table,
+ slurp_hppa_unwind_table, display_debug_section, process_notes,
+ process_archive): Use the new macro.
+
+2006-09-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/3181
+ * objcopy.c (group_signature): Return proper group signature.
+
+2006-09-14 Alan Modra <amodra@bigpond.net.au>
+
+ PR 3181
+ * objcopy.c (group_signature): New function, split out from..
+ (setup_section): ..here.
+ (is_strip_section): Return true for SHT_GROUP sections that are
+ going to lose their group signature symbol.
+
+2006-09-14 Alan Modra <amodra@bigpond.net.au>
+
+ PR 3181
+ * objcopy.c (copy_object): Load symbols earlier.
+ (setup_section): Mark group signature symbols with BSF_KEEP.
+
+2006-09-09 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/3110
+ * objcopy.c (copy_archive): Add new parameter:
+ force_output_target. If not true, then perserve the file formats
+ of each copied archive element, otherwise force them to be one
+ specific file format.
+ (copy_file): Compute force_output_target parameter to pass to
+ copy_archive.
+
+2006-09-05 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/3166
+ * objcopy.c (is_strip_section): Do not treat group sections as
+ debugging sections.
+ * doc/binutils.texi (--only-keep-debug): Document that this switch
+ is only intended for use on fully linked files.
+
+2006-09-01 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/3146
+ * readelf.c (dump_relocations): Check for a NULL value in rtype
+ before using it.
+
+2006-08-21 Pedro Alves <pedro_alves@portugalmail.pt>
+
+ * configure.in: Split arm-pe and arm-wince-pe. Build dlltool
+ with -DDLLTOOL_ARM_WINCE for Windows CE case.
+ * configure: Regenerate.
+ * dlltool.c: Add support for arm-wince.
+
+2006-08-15 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/3039
+ * wrstabs.c (stab_tag_type): Initialize 'size'.
+
+2006-08-10 J"orn Rennecke <joern.rennecke@st.com>
+
+ PR binutils/3017
+ * doc/Makefile.am: Use single quotes inside backquotes for
+ date command while generating config.texi.
+ * doc/Makefile.in: Regenerate.
+
+2006-08-08 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/2768
+ * dwarf.c (display_debug_aranges): When the address size is
+ greater than 4 display addresses and lengths as 16 hex digits,
+ otherwise use 8 hex digits.
+
+2006-08-06 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/3001
+ * addr2line.c (process_file): Change function from void to
+ returning an int. Return 0 upon success, 1 otherwise.
+ (main): Use return value from process_file as the exit value.
+ * ar.c (ranlib_only): Change function from void to returning an
+ int. Return 0 upon success, 1 otherwise.
+ (ranlib_touch): Likewise.
+ (main): Use return value from ranlib functions as exit value.
+ * objcopy.c (add_specific_symbol): Set status to 1 if get_file_size
+ fails.
+ (copy_file): Likewise.
+ (strip_main): Likewise.
+ (copy_main): Likewise.
+ * objdump.c (display_file): Set exit_status to 1 if get_file_size
+ fails.
+ * size.c (display_file): Set return_code to 1 if get_file_size
+ fails.
+
+2006-08-02 Thiemo Seufer <ths@mips.com>
+ Nigel Stephens <nigel@mips.com>
+
+ * readelf.c (dump_relocations): Handle MIPS-specific
+ SHN_MIPS_SCOMMON and SHN_MIPS_SUNDEFINED.
+ (get_symbol_index_type): Similarly.
+
+2006-07-24 Ralk Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * doc/binutils.texinfo: Fix spelling mistakes.
+
+2006-07-10 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (get_dynamic_type): Handle DT_GNU_HASH.
+ (get_section_type_name): Handle SHT_GNU_HASH.
+ (dynamic_info_DT_GNU_HASH): New variable.
+ (process_dynamic_section): Handle DT_GNU_HASH.
+ (process_symbol_table): Print also DT_GNU_HASH histogram.
+
+2006-07-06 Mohammed Adnène Trojette <adn@diwi.org>
+
+ PR binutils/2879
+ * doc/binutils.texi (Strings): Document -T shorthand for --target
+ switch.
+ * strings.c: Update comment to include -T option.
+
+ PR binutils/2875
+ * doc/binutils.texi (readelf): Fix spelling typo.
+
+2006-06-30 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (display_debug_frames): Catch a corrupt length field
+ generating an end of block address that is beyond the end of the
+ section.
+ When encountering a corrupt CIE pointer do not reset the start
+ pointer as more data still has to be read.
+ Do not warn about user defined call frame instructions.
+
+2006-06-29 DJ Delorie <dj@redhat.com>
+
+ * readelf.c (process_section_headers): Add H8/300 support.
+
+2006-06-23 Richard Sandiford <richard@codesourcery.com>
+
+ * objcopy.c (localize_hidden): New variable.
+ (OPTION_LOCALIZE_HIDDEN): New command_line_switch value.
+ (copy_options): Add --localize-hidden.
+ (copy_usage): Mention --localize-hidden.
+ (is_hidden_symbol): New function.
+ (filter_symbols): Handle localize_hidden.
+ (copy_object): Call filter_symbols if localize_hidden.
+ (copy_main): Handle OPTION_LOCALIZE_HIDDEN.
+ * doc/binutils.texi (--localize-hidden): Document new option.
+
+2006-06-23 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * Makefile.am (ar_DEPENDENCIES, ranlib_DEPENDENCIES)
+ (dlltool_DEPENDENCIES, windres_DEPENDENCIES): Remove @LEXLIB@.
+ * Makefile.in: Regenerate.
+
+2006-06-23 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am (*_DEPENDENCIES): Add missing dependencies.
+ * Makefile.in: Regenerate.
+
+2006-06-07 Joseph S. Myers <joseph@codesourcery.com>
+
+ * po/Make-in (pdf, ps): New dummy targets.
+
+2006-06-05 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * po/Make-in (top_builddir): Define.
+
+2006-06-05 Alan Modra <amodra@bigpond.net.au>
+
+ * config.in: Regenerate.
+
+2006-06-02 Joseph S. Myers <joseph@codesourcery.com>
+
+ * doc/Makefile.am (TEXI2DVI): Define.
+ * doc/Makefile.in: Regenerate.
+
+2006-05-31 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * Makefile.am: Replace INTLLIBS with LIBINTL everywhere. Add
+ DEPENDENCIES variables for every program.
+ (INTLLIBS): Remove.
+ (INCLUDES): Use @INCINTL@.
+ * acinclude.m4: Include new gettext macros.
+ * configure.in: Use ZW_GNU_GETTEXT_SISTER_DIR and AM_PO_SUBDIRS.
+ Remove local code for po/Makefile.
+ * Makefile.in, configure, doc/Makefile.in: Regenerated.
+
+2006-05-30 Nick Clifton <nickc@redhat.com>
+
+ * po/es.po: Updated Spanish translation.
+
+2006-05-25 J"orn Rennecke <joern.rennecke@st.com>
+
+ * MAINTAINERS: Update my email address.
+
+2006-05-24 Nick Clifton <nickc@redhat.com>
+
+ * po/fr.po: Updated French translation.
+
+2006-05-23 Nick Clifton <nickc@redhat.com>
+
+ * po/vi.po: Updated Vietnamese translation.
+
+2006-05-22 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * po/ru.po: Updated translation.
+
+2006-05-19 Andreas Schwab <schwab@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-17 Carlos O'Donell <carlos@codesourcery.com>
+
+ * doc/binutils.texi: Use "Binutils Index" for index name.
+
+2006-05-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ * dwarf.c (display_debug_frames): Don't return on ZERO
+ terminator.
+
+2006-05-02 Daniel Jacobowitz <dan@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-26 Julian Brown <julian@codesourcery.com>
+
+ * readelf.c (arm_attr_tag_VFP_arch): Add VFPv3.
+
+2006-04-19 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2006-04-19 Alan Modra <amodra@bigpond.net.au>
+
+ * configure: Regenerate.
+
+2006-04-18 Nick Clifton <nickc@redhat.com>
+
+ PR 2257
+ * readelf.c (SECTION_NAME): Cope with a missing string table.
+ (process_file_header): Cope with a corrupt e_shstrndx field.
+ (process_section_headers): Correctly handle an e_shstrndx value of
+ SHF_UNDEF.
+
+2006-04-12 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (objdump_symbol_at_address): Fix typo in comment.
+
+2006-04-10 Ben Elliston <bje@gnu.org>
+
+ * MAINTAINERS (CGEN Maintainers): Remove myself.
+
+2006-04-06 Carlos O'Donell <carlos@codesourcery.com>
+
+ * po/Make-in: Add install-html target.
+ * Makefile.am: Add install-html and install-html-recursive targets.
+ * Makefile.in: Regenerate.
+ * configure.in: AC_SUBST datarootdir, docdir and htmldir.
+ * configure: Regenerate.
+ * doc/Makefile.am: Add install-html and install-html-am targets.
+ * doc/Makefile.in: Regenerate.
+
+2006-04-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * addr2line.c (long_options): Add new option 'section'.
+ (usage): Document new -j/--section option.
+ (find_offset_in_section): New function.
+ (translate_addresses): Add 'section' parameter.
+ If it is non-null, call find_offset_in_section on it.
+ (process_file): Add 'section_name' parameter.
+ If it is non-null, look for the section in the BFD object.
+ Pass the section to translate_addresses.
+ (main): Handle new -j option.
+ Pass the section name to process_file.
+ * doc/binutils.texi (addr2line): Document new -j/--section option.
+
+2006-03-29 Ben Elliston <bje@au.ibm.com>
+
+ * resbin.c: Avoid duplicating constants in calls to reswr_alloc.
+
+2006-03-20 Nathan Sidwell <nathan@codesourcery.com>
+
+ * BRANCHES: Remove binutils-csl-arm-2006q1-branch. Document
+ binutils-csl-2_17-branch instead.
+
+2006-03-20 Paul Brook <paul@codesourcery.com>
+
+ * BRANCHES: Mention binutils-csl-arm-2006q1-branch.
+
+2006-03-16 Alan Modra <amodra@bigpond.net.au>
+
+ PR 2434
+ * ieee.c (write_ieee_debugging_info): Adjust bfd_hash_table_init calls.
+ * wrstabs.c (write_stabs_in_sections_debugging_info): Likewise.
+
+2006-03-13 Ben Elliston <bje@au.ibm.com>
+
+ * bucomm.c (display_target_list): Make local variable `a' to be of
+ type enum bfd_architecture. Thus no need to cast enums to int.
+ (display_info_table): Likewise.
+
+2006-03-10 Paul Brook <paul@codesourcery.com>
+
+ * readelf.c (decode_ARM_machine_flags): Handle EABIv5.
+
+2006-03-10 Alan Modra <amodra@bigpond.net.au>
+
+ * dwarf.c (process_extended_line_op): Remove pointer_size param.
+ Use length instead to determine address size.
+ (get_pointer_size_and_offset_of_comp_unit): Delete.
+ (display_debug_lines): Adjust for above.
+ (display_debug_aranges): Don't stop on finding two zeros.
+ (display_debug_frames): For warning, print offset not pointer.
+
+2006-03-09 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * dlltool.c: Update copyright year.
+ * doc/binutils.texi: Likewise.
+
+2006-03-09 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * dlltool.c (add_stdcall_underscore): New flag.
+ (xlate): Also add underscore to stdcall symbol if
+ add_stdcall_underscore set.
+ (usage): Document --add-stdcall-underscore option.
+ (OPTION_ADD_STDCALL_UNDERSCORE): New define.
+ (long_options): Use it for --add-stdcall-underscore option.
+ (main): Handle it.
+ * doc/binutils.texi: Document --add-stdcall-underscore option
+ and differentiate from --add-underscore.
+
+2006-03-06 Nathan Sidwell <nathan@codesourcery.com>
+
+ * readelf.c (get_machine_flags): Adjust.
+
+2006-03-03 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (frame_display_row, display_debug_frames): Handle
+ DW_CFA_val_offset, DW_CFA_val_offset_sf and DW_CFA_val_expression.
+
+2006-02-28 Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (use_alt_mach_code): Change type to unsigned long.
+ (copy_object): If bfd_alt_mach_code fails emit a more helpful
+ message and if the target architecture is ELF use the alternative
+ as replacement value for the e_machine number.
+ (copy_main): Use strtoul to parse the number provided with the
+ --alt-mach-code switch.
+ * doc/binutils.texi (--alt-mach-code): Document that this switch
+ can now set the absolute e_machine value.
+
+2006-02-27 Carlos O'Donell <carlos@codesourcery.com>
+
+ * po/Make-in: Add html target.
+
+2006-02-17 Nick Hudson <nick.hudson@dsl.pipex.com>
+
+ * readelf.c (get_machine_flags): Add logic for missing EF_SH flags.
+
+2006-02-14 Jakub Jelinek <jakub@redhat.com>
+
+ * config.in: Rebuilt.
+
+2006-02-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/2258
+ * readelf.c (process_program_headers): Use
+ ELF_IS_SECTION_IN_SEGMENT_MEMORY.
+
+2006-02-09 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * configure.in (CHECK_DECLS): Add snprintf and vsnprintf.
+ * configure: Regenerate.
+ * objdump.c (fprintf): Remove declaration.
+ * bucomm.h (fprintf): Declare if not already declared.
+ (snprintf): Likewise.
+ (vsnprintf): Likewise.
+
+2006-02-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (process_program_headers): Match PT_TLS segment
+ only with SHT_TLS sections.
+
+2006-02-07 Nathan Sidwell <nathan@codesourcery.com>
+
+ * readelf.c (get_machine_flags): Add logic for EF_M68K flags.
+
+2006-02-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (process_program_headers): Undo the last change.
+
+2006-02-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (process_program_headers): Undo the change made on
+ 2004-09-22. Match PT_DYNAMIC segment only with SHT_DYNAMIC
+ sections.
+
+2006-01-30 Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (copy_object): Catch the case where an attempt is made
+ to add a section that already exists and produce a more helpful
+ warning message.
+
+2006-01-26 Nick Clifton <nickc@redhat.com>
+
+ * po/vi.po: New Vietnamese translation.
+ * configure.in (ALL_LINGUAS): Add vi.
+ * configure: Regenerate.
+
+2006-01-18 Alexandre Oliva <aoliva@redhat.com>
+
+ Introduce TLS descriptors for i386 and x86_64.
+ * readelf.c (get_dynamic_type): Handle DT_TLSDESC_GOT and
+ DT_TLSDESC_PLT.
+
+2006-01-18 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/1391
+ * objcopy.c (copy_object): For PE format targets set the VMA of a
+ newly created gnu_debuglink section to a non-zero, aligned,
+ contiguous value.
+ * Makefile.am (objcopy.c): Add a dependency upon libbfd.h.
+ * Makefile.in: Regenerate.
+
+2006-01-17 Andreas Schwab <schwab@suse.de>
+
+ PR binutils/1486
+ * configure.in: Don't define DISASSEMBLER_NEEDS_RELOCS.
+ * configure: Regenerate.
+ * objdump.c (struct objdump_disasm_info): Don't check for
+ DISASSEMBLER_NEEDS_RELOCS.
+ (objdump_print_addr): Likewise.
+ (disassemble_bytes): Check disassembler_needs_relocs from
+ disassemble_info at run-time instead of DISASSEMBLER_NEEDS_RELOCS
+ at compile-time.
+ (disassemble_section): Likewise.
+ (disassemble_data): Initialize it.
+
+2006-01-11 Alan Modra <amodra@bigpond.net.au>
+
+ * objcopy.c (copy_object): Fix thinko.
+
+ * objcopy.c (copy_object): Set isympp and osympp to NULL after free.
+
+2006-01-09 Mike Frysinger <vapier@gentoo.org>:
+
+ * readelf.c (guess_is_rela): Add case for Nios/Nios II.
+ (get_machine_name): Likewise.
+
+For older changes see ChangeLog-2005
+
+Copyright (C) 2006 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-2007 b/binutils-2.24/binutils/ChangeLog-2007
new file mode 100644
index 00000000..3e77793f
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-2007
@@ -0,0 +1,1171 @@
+2007-12-24 Nick Clifton <nickc@redhat.com>
+
+ * po/ru.po: Updated Russian translation.
+
+2007-12-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ * doc/binutils.texi: Document the new intel-mnemonic and
+ intel-mnemonic options for i386 disassembler.
+
+2007-12-07 Bob Wilson <bob.wilson@acm.org>
+
+ * readelf.c (is_32bit_pcrel_reloc): Add Xtensa.
+
+2007-12-04 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (is_32bit_abs_reloc, is_32bit_pcrel_reloc): Add SPU.
+
+2007-11-29 Mark Shinwell <shinwell@codesourcery.com>
+
+ * readelf.c (get_machine_flags): Handle Loongson-2E and -2F
+ flags.
+
+2007-11-26 Alan Modra <amodra@bigpond.net.au>
+
+ * cxxfilt.c (demangle_it): Don't call printf without format string.
+
+2007-11-21 Hans-Peter Nilsson <hp@axis.com>
+
+ * dwarf.c (display_debug_loc): Cast section_end - start to long
+ for output format.
+
+2007-11-20 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (display_debug_loc): Issue a warning if there are bytes
+ at the end of the .debug_loc section which are not referenced by
+ any attribute in the .debug_info section.
+
+2007-11-19 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (is_32bit_abs_reloc): Add support for NIOS relocs.
+ (is_64bit_abs_reloc): Add support for HPPA relocs.
+ (is_16bit_abs_reloc): Add support for NIOS relocs.
+
+2007-11-17 Thiemo Seufer <ths@mips.com>
+
+ * readelf.c (display_mips_gnu_attribute): Recognize -mips32r2 -mfp64
+ objects.
+
+2007-11-16 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (process_extended_line_op): Add cases for HP extensions
+ to the line ops. Mention if an unknown op code is in the user
+ defined range.
+ (decode_location_expression): Add cases for HP extensions, the
+ DW_OP_GNU_uninit extension and the DW_OP_call_frame_cfa and
+ DW_OP_bit_piece DWARF3 operators.
+ (read_and_display_attr): Correct list of attributes which can
+ reference a location list.
+ (read_and_display_attr_value): Add cases for DWARF3 values and HP
+ extensions.
+ Correct list of attributes which can reference a location list.
+ (get_AT_name): Add cases for DWARF3 values and HP and PGI
+ extensions.
+
+2007-11-07 Karl Berry <karl@gnu.org>
+
+ * doc/binutils.texi: Update to FDL 1.2.
+ (Top): consistent punctuation in menu entries.
+ (Index): Rename from Binutils Index.
+ * doc/fdl.texi: Update from http://www.gnu.org/licenses/fdl.texi.
+
+2007-10-31 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (is_relocatable): Remove definition.
+ (display_debug_frames): Remove check in is_relocatable.
+ * dwarf.h (is_relocatable): Remove declaration.
+ * objdump.c (is_relocatable): New static definition.
+ * readelf.c (dump_relocations): Make the function void.
+ (is_32bit_abs_reloc): Add support for x86, Arc, Arm, D10V, Dlx,
+ OR32 and Score.
+ (is_32bit_pcrel_reloc): Add support for x86 and Arm.
+ (is_16bit_abs_reloc): Add support for D10V.
+ (debug_apply_rela_addends): Rename to debug_apply_relocations.
+ Add code to support rel relocations.
+ (load_debug_section): Fix call to debug_apply_relocations.
+ (get_file_header): Remove setting of is_relocatable.
+
+2007-10-31 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (debug_apply_rela_addends): Clarify FIXME.
+
+2007-10-29 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (is_32bit_abs_reloc): Add knowledge of reloc used by
+ IA64.
+ (is_64bit_abs_reloc): Likewise.
+
+2007-10-28 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (process_debug_info): Check for corrupt lengths.
+ * readelf.c (get_reloc_type): New function. Returns the reloc
+ number extracted from the info field of a reloc.
+ (get_reloc_symindex): New function. Returns the symbol index
+ extracted from the info field of a reloc.
+ (dump_relocations): Use the new functions.
+ (slurp_ia64_unwind_table): Use the new functions.
+ (slurp_hppa_unwind_table): Use the new functions.
+ (dump_section_as_bytes): Use the new functions.
+ (get_reloc_size): Delete function.
+ (is_32bit_abs_reloc): New function. Determines if a given reloc
+ type is a 32-bit absolute relocation.
+ (is_32bit_pcrel_reloc): New function. Like is_32bit_abs_reloc but
+ for pc-relative relocations.
+ (is_64bit_abs_reloc): New function. Like is_32bit_abs_reloc but
+ for 64-bit absolute relocations.
+ (is_16bit_abs_reloc): New function. Like is_32bit_abs_reloc but
+ for 32-bit absolute relocations.
+ (debug_apply_rela_addends): Use the new functions. Skip and warn
+ about any unrecognised relocations.
+
+2007-10-26 Karl Berry <karl@freefriends.org>
+
+ * doc/binutils.texi: Move top stuff to the top.
+ Use @direntry/@dircategory, format entries to play nicely with
+ others.
+ Avoid duplicate copying strings.
+ Don't misspell "Texinfo".
+
+2007-10-25 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * readelf.c (display_power_gnu_attribute): Add support for
+ Tag_GNU_Power_ABI_Vector.
+
+2007-10-25 Carlos Eduardo Seo <cseo@linux.vnet.ibm.com>
+
+ * readelf.c (get_note_type): Handle NT_PPC_VMX.
+
+2007-10-24 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+ * po/POTFILES.in: Regenerate.
+
+2007-10-24 Alan Modra <amodra@bigpond.net.au>
+
+ * strings.c (print_strings): Don't use %L, use %ll in printf
+ format strings.
+
+2007-10-24 Tristan Gingold <gingold@adacore.com>
+ Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (process_program_headers): Use dynamic segment unless
+ dynamic section is found.
+
+2007-10-16 Bob Wilson <bob.wilson@acm.org>
+
+ * doc/binutils.texi (objcopy, strip): Replace hyphens with em-dashes.
+ (objdump, strip, c++filt): Correct punctuation for "e.g." and "i.e."
+ and change to spell out "for example" in two places.
+
+2007-10-16 Nick Clifton <nickc@redhat.com>
+
+ * configure.in: Build windows tools for --enable-targets=all.
+ * configure: Regenerate.
+
+2007-10-15 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (print_line): Check fwrite return value.
+ * srconv.c (checksum, wr_tr, wr_cs): Likewise.
+ * sysdump.c (fillup): Return zero on getc or fread EOF. Return count
+ read.
+
+2007-10-10 Jim Blandy <jimb@codesourcery.com>
+
+ * dwarf.c (process_debug_info): Line up section offsets of
+ attribute values with those of dies.
+ (read_and_display_attr): Reduce spacing here.
+
+ * dwarf.c (display_debug_lines): Print the offset of each line
+ number program header.
+
+2007-10-09 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/4476
+ * readelf.c (print_dynamic_symbol): New.
+ (process_symbol_table): Handle DT_GNU_HASH for dynamic symbols.
+
+2007-10-08 Carlos O'Donell <carlos@codesourcery.com>
+
+ * resrc.c (read_rc_file): Rename e to edit, and c to dir.
+ Pass dir to windres_add_include_dir. Add comments.
+ (close_input_stream): Check pclose error, and call fatal if
+ the preprocessor failed.
+ * windres.c (windres_add_include_dir): Assert that p is non-NULL,
+ and not an empty string.
+
+2007-10-04 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/5098
+ * dlltool.c: Fix spelling typos.
+
+2007-10-03 Masaki Muranaka <monaka@monami-software.com>
+
+ * readelf.c (dump_section_as_strings): Use %6tx instead of %6zx.
+
+2007-09-25 Thien-Thi Nguyen <ttn@gnuvola.org>
+
+ * MAINTAINERS: Fix typo.
+
+2007-09-17 Shen Feng <shen@cn.fujitsu.com>
+
+ * readelf.c (do_archive_index): New.
+ (options): Add -c and --archive-index option.
+ (usage): Add -c option.
+ (parse_args): Add c option parsing.
+ (process_archive): Dump archive index.
+ * NEWS: Mention the new feature.
+ * doc/binutils.texi: Document the new feature.
+
+2007-09-17 Nick Clifton <nickc@redhat.com>
+
+ * po/es.po: Updated Spanish translation.
+
+2007-09-17 Nick Clifton <nickc@redhat.com>
+
+ * doc/binutils.texi (objdump): Describe the output of the --syms
+ option in more detail.
+
+2007-09-17 Alon Bar-Lev <alon.barlev@gmail.com>
+
+ PR binutils/4987
+ * resrc.c: (read_rc_file): Move 'filename' default initialization
+ to start of function.
+
+2007-08-31 Michael Meissner <michael.meissner@amd.com>
+ Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
+
+ * NEWS: Add note about SSE5 being added on i386.
+
+2007-09-13 Alan Modra <amodra@bigpond.net.au>
+ Zhou Drangon <drangon.mail@gmail.com>
+
+ * nm.c (value_format_64bit, set_print_radix, print_value): Handle
+ BFD_HOST_64BIT_LONG_LONG.
+ * readelf.c (print_dec_vma): Don't define if BFD_HOST_64BIT_LONG_LONG.
+ (print_vma): Handle BFD_HOST_64BIT_LONG_LONG.
+ (dump_relocations): Likewise. Expand _bfd_int64_low in a
+ number of places.
+
+2007-09-11 Kai Tietz <kai.tietz@onevision.com>
+
+ * rcparse.y: (string_data): Removed ill token removal.
+
+2007-09-10 Alan Modra <amodra@bigpond.net.au>
+
+ PR 5011
+ * readelf.c (process_version_sections): Don't read past end of
+ various section buffers.
+
+2007-08-31 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.am (INCLUDES): Remove -D_GNU_SOURCE.
+ * Makefile.in: Regenerated.
+
+ * sysdep.h: Include "config.h" first.
+
+2007-08-31 Nick Clifton <nickc@redhat.com>
+
+ * po/sk.po: New Slovakian translation.
+ * configure.in (LINGUAS): Add sk.
+ * configure: Regenerate.
+
+2007-08-30 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (dump_type): New type used to classify the kinds of
+ dump requested by the user.
+ (dump_sects, cmdline_dump_sects): Use the new type.
+ (options): Add --string-dump option.
+ (request_dump): Rename to request_dump_bynumber. Use dump_type.
+ (request_dump_byname): Use dump_type.
+ (parse_args): Parse --string-dump option.
+ (process_section_headers): Fix calls to request_dump.
+ (initialise_dumps_byname): Likewise.
+ (dump_section): Rename to dump_section_as_bytes.
+ (dump_section_as_strings): New function. Display the contents of
+ a section as printable strings.
+ (process_section_contents): String dump the section if requested.
+ (process_object): Use dump_type.
+ (main): Likewise.
+ * Makefile.am: Add dependency for readelf.c on safe-ctype.h.
+ * Makefile.in: Regenerate.
+ * NEWS: Mention the new feature.
+ * doc/binutils.texi: Document the new feature.
+
+2007-08-30 Nathan Sidwell <nathan@codesourcery.com>
+
+ * bucomm.c (bfd_nonfatal_message): New.
+ * bucomm.h (bfd_nonfatal_message): Declare.
+ * objcopy.c (RETURN_NONFATAL): Take BFD not NAME, use
+ bfd_nonfatal_message.
+ (copy_unknown_object): Adjust bfd_nonfatal and RETURN_NONFATAL
+ calls, or replace with bfd_nonfatal_message calls as appropriate.
+ (copy_object, copy_archive, copy_file, setup_section,
+ copy_section, write_debugging_info): Likewise.
+
+2007-08-28 Nick Clifton <nickc@redhat.com>
+
+ * NEWS: Mention Coverity's contribution.
+
+2007-08-25 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * readelf.c (process_note): Recognize SPU core file notes.
+
+2007-08-24 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * configure.in: Install embedspu on powerpc*-*-eabi* also.
+ * configure: Regenerated.
+
+2007-08-24 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * po/uk.po: Updated Ukrainian translation.
+
+2007-08-22 Ben Elliston <bje@au.ibm.com>
+
+ * doc/binutils.texi (objdump): Document -Mppcps.
+
+2007-08-17 Alan Modra <amodra@bigpond.net.au>
+
+ * po/Make-in: Add --msgid-bugs-address to xgettext invocation.
+
+2007-08-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c: Revert last change.
+
+2007-08-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (get_segment_type): Change PT_GNU_STACK to
+ PT_GNU_ATTR.
+
+2007-08-12 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * NEWS: Add a marker for the 2.18 features.
+
+2007-08-12 Matthias Klose <doko@ubuntu.com>
+
+ * doc/Makefile.am (AM_MAKEINFOFLAGS, TEXI2DVI): Include
+ $(top_srcdir)/../../bfd/doc.
+ * doc/Makefile.in: Regenerate.
+
+2007-08-10 M R Swami Reddy <MR.Swami.Reddy@nsc.com>
+
+ * MAINTAINERS: Add myself as CR16 support maintainer and
+ update myself as CRX support maintainer.
+
+2007-08-10 Nick Clifton <nickc@redhat.com>
+
+ * po/fi.po: Updated Finnish translation.
+ * po/vi.po: Updated Vietnamese translation.
+
+2007-08-10 Kai Tietz <kai.tietz@onevision.com>
+
+ * doc/binutils.texi: (windmc): Correct incorrect desciption.
+
+2007-08-04 Alan Modra <amodra@bigpond.net.au>
+
+ PR 4888
+ * objcopy.c (setup_section): Do modify section flags for ELF
+ STRIP_NONDEBUG (reverting part of 2007-05-30 change). Prevent
+ header rewrite by twiddling input section flags instead.
+ Simplify code setting SHT_NOBITS.
+
+2007-07-28 Christopher Faylor <me+binutils@cgf.cx>
+
+ * MAINTAINERS: Update my email address.
+
+2007-07-26 Adam Nemet <anemet@caviumnetworks.com>
+
+ * readelf.c (process_archive): Also skip Irix6-style archive symbol
+ tables.
+
+2007-07-24 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (NUM_ELEM): Remove redundant macro; replace references
+ to it with references to ARRAY_SIZE.
+ Add support for CR16.
+ Fix formatting.
+
+2007-07-19 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/4802
+ * srconv.c (strip_suffix): Add const qualifier to argument.
+
+2007-07-16 Nick Clifton <nickc@redhat.com>
+
+ * po/uk.po: New Ukrainian translation.
+ * configure.in (ALL_LINGUAS): Add 'uk'.
+ * configure: Regenerate.
+
+2007-07-10 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (dump_dwarf): Correct setting of is_relocatable.
+
+2007-07-09 Roland McGrath <roland@redhat.com>
+
+ * readelf.c (get_gnu_elf_note_type): New function.
+ (process_note): Use it for "GNU" name.
+
+2007-07-08 Andreas Schwab <schwab@suse.de>
+
+ * Makefile.am (HFILES): Add dwarf.h, sysdep.h and unwind-ia64.h.
+ (CFILES): Add unwind-ia64.c.
+ Regenerate dependencies.
+ * Makefile.in: Regenerate.
+
+2007-07-05 Nick Clifton <nickc@redhat.com>
+
+ * addr2line.c: Update copyright notice to refer to GPLv3.
+ * ar.c, arlex.l, arparse.y, arsup.c, arsup.h, bin2c.c, binemul.c,
+ binemul.h, bucomm.c, bucomm.h, budbg.h, coffdump.c, coffgrok.c,
+ coffgrok.h, cxxfilt.c, debug.c, debug.h, deflex.l, defparse.y,
+ dlltool.c, dlltool.h, dllwrap.c, dwarf.c, dwarf.h, embedspu.sh,
+ emul_aix.c, emul_vanilla.c, filemode.c, ieee.c, mclex.c,
+ mcparse.y, nlmconv.c, nlmconv.h, nlmheader.y, nm.c, objcopy.c,
+ objdump.c, prdbg.c, rclex.c, rcparse.y, rdcoff.c, rddbg.c,
+ readelf.c, rename.c, resbin.c, rescoff.c, resrc.c, resres.c,
+ size.c, srconv.c, stabs.c, strings.c, sysdep.h, sysdump.c,
+ sysinfo.y, syslex.l, unwind-ia64.c, unwind-ia64.h, version.c,
+ windint.h, windmc.c, windmc.h, windres.c, windres.h, winduni.c,
+ winduni.h, wrstabs.c: Likewise.
+ * is-ranlib.c, is-strip.c, maybe-ranlib.c, maybe-strip.c,
+ not-ranlib.c, not-strip.c, ranlib.sh, sanity.sh: Add a copyright
+ notice.
+ * NEWS: Mention that the sources are now released under GPLv3.
+ Add a marker for the changes that went into v2.17.
+ * version.c (print_version): Specify that the program is released
+ under version 3 of the GPL.
+
+2007-07-05 Kai Tietz <kai.tietz@onevision.com>
+
+ * resrc.c: (read_rc_file): Add include path of user passed rc
+ input file.
+ * windres.c: (windres_add_include_dir): New.
+ (main): Use of windres_add_include_dir.
+ * windres.h: (windres_add_include_dir): Add prototype.
+
+2007-07-05 Alan Modra <amodra@bigpond.net.au>
+
+ * doc/binutils.texi (size): Document --common.
+ * size.c: Make a number of vars static. Delete unnecessary
+ function declarations.
+ (show_common, common_size): New vars.
+ (usage): Describe --common.
+ (OPTION_FORMAT, OPTION_RADIX, OPTION_TARGET): Define and use.
+ (long_options): Add common.
+ (calculate_common_size): New function.
+ (print_berkeley_format): Add common_size to bsssize.
+ (sysv_one_line): New function split out from..
+ (sysv_internal_printer): ..here.
+ (print_sysv_format): Handle display of *COM*.
+ (print_sizes): Call calculate_common_size.
+
+2007-07-05 Alan Modra <amodra@bigpond.net.au>
+
+ * emul_aix.c (ar_emul_aix_internal): Rename "next" to "archive_next".
+
+2007-07-02 Alan Modra <amodra@bigpond.net.au>
+
+ PR 4716
+ * objcopy.c (filter_symbols): Correct relocatable file test.
+
+2007-07-02 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+ * po/POTFILES.in: Regenerate.
+ * po/binutils.pot: Regenerate.
+
+2007-06-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * aclocal.m4: Regenerated.
+ * doc/Makefile.in: Likewise.
+ * Makefile.in: Likewise.
+
+2007-06-29 Joseph Myers <joseph@codesourcery.com>
+
+ * readelf.c (display_power_gnu_attribute, process_power_specific):
+ New.
+ (process_arch_specific): Call process_power_specific.
+
+2007-06-29 Joseph Myers <joseph@codesourcery.com>
+
+ * readelf.c (display_mips_gnu_attribute): New.
+ (process_mips_specific): Call process_attributes.
+
+2007-06-29 Joseph Myers <joseph@codesourcery.com>
+
+ * readelf.c (display_gnu_attribute): New.
+ (process_arm_specific): Rearrange as process_attributes.
+ (process_arm_specific): Replace by wrapper of process_attributes.
+
+2007-06-28 Roland McGrath <roland@frob.com>
+
+ * objcopy.c (setup_section): Don't reset ELF section type to
+ SHT_NOBITS when it is SHT_NOTE.
+ * doc/binutils.texi (objcopy, strip): Mention under --only-keep-debug.
+
+2007-06-27 Alan Modra <amodra@bigpond.net.au>
+
+ * ar.c: Rename uses of bfd.next to bfd.archive_next throughout.
+ * arsup.c: Likewise.
+ * binemul.c: Likewise.
+ * objcopy.c: Likewise.
+ * dlltool.c: Likewise.
+
+2007-06-26 Shantonu Sen <ssen@apple.com>
+
+ PR binutils/4693
+ * Makefile.am (windres_DEPENDENCIES, windmc_DEPENDENCIES): Move
+ dependency on $(LIBICONV) to ...
+ (windres_LDADD, windmc_LDADD) ... here.
+ * Makefile.in: Regenerate.
+
+2007-06-21 Alan Modra <amodra@bigpond.net.au>
+
+ * embedspu.sh (relas): Correct sh_info parsing.
+
+2007-06-19 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * objdump.c: Include sys/stat.h.
+
+2007-06-19 Kai Tietz <kai.tietz@onevision.com>
+
+ * Makefile.am: Add windmc tool.
+ * Makefile.in: Regenerate.
+ * configure.in: Add windmc tool.
+ * configure: Regenerate.
+ * mclex.c: New.
+ * mcparse.y: New.
+ * windmc.c: New.
+ * windmc.h: New.
+ * doc/Makefile.am: Add windmc tool.
+ * doc/Makefile.in: Regenerate.
+ * doc/binutils.texi: Add windmc documentation.
+ * NEWS: Mention new tool.
+
+2007-06-18 Andi Kleen <ak@suse.de>
+
+ * objdump.c: Include sys/mman.h
+ (print_file_list): Remove f, add map, mapsize, linemap, maxline,
+ last_line, first fields.
+ (slurp_file): Add.
+ (index_file): Add.
+ (print_file_open): Call slurp_file and index_file. Initialize new
+ fields.
+ (skip_to_line): Rename to print_line and write only single line.
+ (dump_line): Add.
+ (show_line): Change to new algorithm.
+
+2007-06-18 Thomas Weidenmueller <w3seek@reactos.org>
+
+ * resres.c (probe_binary): Fix test for badly formatted headers.
+
+2007-06-18 Kai Tietz <Kai.Tietz@onevision.com>
+
+ * rclex.c: (cpp_line): Add code_page pragma support.
+ * windres.c: (usage, long_options, main): Add new option
+ --codepage or -c.
+ * winduni.c: (wind_default_codepage, wind_current_codepage): New.
+ (unicode_from_ascii, ascii_from_unicode): Use
+ wind_current_codepage as codepage parameter.
+ (unicode_print): Print 4 characters for hexadecimal values in
+ unicode strings.
+ * winduni.h: (wind_default_codepage, wind_current_codepage):
+ Export.
+ * doc/binutils.texi: Document new option.
+ * NEWS: Mention new features of windres.
+
+2007-06-18 Brian D. Watt <bwatt@us.ibm.com>
+
+ * embedspu.sh: Parse _SPUEAR_ symbol values as hex.
+
+2007-06-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.am (ACLOCAL_AMFLAGS): Add -I ../config -I ../bfd.
+
+ * acinclude.m4: Removed.
+
+ * Makefile.in: Regenerated.
+ * aclocal.m4: Likewise.
+ * configure: Likewise.
+
+2007-06-11 Nathan Sidwell <nathan@codesourcery.com>
+
+ * dwarf.c (decode_location_expression): Add DW_OP_form_tls_address.
+
+2007-06-06 Kai Tietz <Kai.Tietz@onevision.com>
+
+ PR binutils/4356 binutils/591
+ * resrc.c (filename_need_quotes): New function.
+ (look_for_default): If filename_need_quotes is true then quote the
+ filename in the command line being created.
+ (read_rc_file): Likewise.
+
+2007-06-06 Ben Elliston <bje@au.ibm.com>
+
+ * doc/binutils.texi (objdump): Fix capitalisation of "PowerPC".
+
+2007-06-05 Kai Tietz <Kai.Tietz@onevision.com>
+
+ * Makefile.am: Add LIBICONV to windres.
+ * acinclude.m4: Added missing "lib-*.m4" and "lt*.m4" files.
+ * configure.in: Add AC_CHECK_HEADER for iconv.h and use AM_ICONV.
+ * config.in: Add ICONV defines.
+ * aclocal.m4: Regenerate.
+ * confugure: Regenerate.
+ * winduni.c: (local_iconv_map codepages, wind_language_t,
+ languages, unicode_is_valid_codepage, wind_find_language_by_id,
+ wind_find_language_by_codepage, wind_find_codepage_info,
+ unicode_from_codepage, codepage_from_unicode, iconv_onechar,
+ wind_iconv_cp, wind_MultiByteToWideChar wind_WideCharToMultiByte):
+ New.
+ (ascii_from_unicode): Use codepage_from_unicode.
+ (ascii_from_unicode): Use unicode_from_codepage.
+ Use for cygwin windows API for unicode transformation.
+ * winduni.h: (CP_ACP, CP_UTF7, CP_UTF8, CP_OEM, CP_UTF16): New
+ macros.
+ (wind_language_t, local_iconv_map): New types.
+ (wind_find_language_by_id, wind_find_language_by_codepage,
+ unicode_is_valid_codepage, wind_find_codepage_info,
+ unicode_from_codepage, codepage_from_unicode): New
+ prototypes.
+
+2007-06-05 Alan Modra <amodra@bigpond.net.au>
+
+ * embedspu.sh: Handle R_SPU_PPU* relocs with no symbol.
+
+2007-05-30 Alan Modra <amodra@bigpond.net.au>
+
+ * objcopy.c (copy_object): Revert 2007-05-11 change. Don't
+ avoid calling bfd_copy_private_bfd_data for ELF STRIP_NONDEBUG.
+ (setup_section): Don't modify flags, and don't avoid calling
+ bfd_copy_private_section_data for ELF STRIP_NONDEBUG.
+ * readelf.c (process_program_headers): Ignore .dynamic of type
+ SHT_NOBITS.
+
+2007-05-29 Alan Modra <amodra@bigpond.net.au>
+
+ * embedspu.sh: Emit SPU ELF image to .data.rel.ro.speelf if
+ pic or pie and image needs relocs.
+
+2007-05-24 Steve Ellcey <sje@cup.hp.com>
+
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * aclocal.m4: Regenerate.
+ * doc/Makefile.in: Regenerate.
+
+2007-05-24 Kai Tietz <Kai.Tietz@onevision.com>
+
+ * rcparse.y: Join strings for elements having no side-effects in
+ "rc"-grammar.
+
+2007-05-23 Kai Tietz <Kai.Tietz@onevision.com>
+
+ * rclex.c: New file replacing rclex.l.
+ * rclex.l: Removed.
+ * windint.h: New file holding common structure and type
+ definitions.
+ * Makefile.am: Added new header windint.h and exchanged rclex.l by
+ rclex.c.
+ * Makefile.in: Regenerate.
+ * rcparse.y: Renamed some structures.
+ Use in internal representation always bfd_vma instead of long or
+ int.
+ Removed from %union unused stringtable.
+ Added to %union suni structure for unicode strings.
+ Added new tokens for ANICURSOR, ANIICON, DLGINCLUDE,
+ DLGINIT, FONTDIR, HTML, MANIFEST, PLUGPLAY, VXD,
+ TOOLBAR, BUTTON, QUOTEDUNISTRING, and SIZEDUNISTRING.
+ Added support for these new rc file tokens.
+ * resbin.c: Rewrote using bfd and binary structures, and support
+ new resource types.
+ * rescoff.c: Likewise.
+ * resres.c: Likewise.
+ * resrc.c: Likewise. Dumps as RC are now recompilable.
+ * windres.c: As above. Using bfd for res and provide target
+ specific endianess support.
+ * windres.h: Use windint.h as include. Additionally removed K&R
+ syntax.
+ * winduni.c: New printing and unichar support routines.
+ * winduni.h: Prototypes for new unichar helpers.
+ * windint.h: New file.
+
+2007-05-22 Paul Brook <paul@codesourcery.com>
+
+ * objdump.c (find_symbol_for_address): Merge section and target
+ specific filtering code.
+
+2007-05-22 Nick Clifton <nickc@redhat.com>
+
+ * doc/binutils.texi: Use @copying around the copyright notice.
+
+2007-05-21 Richard Sandiford <richard@codesourcery.com>
+
+ * objdump.c (disassemble_bytes): Ignore disassembler_needs_relocs
+ for executables and shared libraries.
+
+2007-05-18 Nathan Sidwell <nathan@codesourcery.com>
+
+ * objcopy.c (strip_main): Detect identical input and output file
+ names.
+ (copy_main): Refactor tempname detection and use.
+
+2007-05-17 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (load_debug_section): Select bias for DWARF debug
+ addresses based on the flavour of the bfd.
+
+2007-05-11 Alan Modra <amodra@bigpond.net.au>
+
+ PR 4479
+ * objcopy.c (copy_object): Don't copy ELF program headers for
+ --only-keep-debug.
+
+2007-05-11 Alan Modra <amodra@bigpond.net.au>
+
+ * embedspu.sh (find_prog): Prefer prog in same dir as embedspu
+ over one found on the users path.
+ (main): Generate .reloc for each R_SPU_PPU* reloc.
+
+2007-04-28 Alan Modra <amodra@bigpond.net.au>
+
+ * prdbg.c (tg_variable): Adjust for changed demangler.
+ (tg_start_function): Likewise.
+
+2007-04-27 Alan Modra <amodra@bigpond.net.au>
+
+ * bucumm.h: Split off host dependencies to..
+ * sysdep.h: ..here.
+ Many files: Include sysdep.h. Remove duplicate headers and reorder.
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2007-04-24 Nick Clifton <nickc@redhat.com>
+
+ * srconv.c (walk_tree_type_1): Initialise dpt.dunno.
+
+2007-04-24 Nathan Froyd <froydnj@codesourcery.com>
+ Phil Edwards <phil@codesourcery.com>
+
+ * objcopy.c (filter_symbols): Explicitly stripping a symbol
+ used in relocations is an error.
+ Retype 'keep' to bfd_boolean.
+
+2007-04-24 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+
+2007-04-20 Nathan Froyd <froydnj@codesourcery.com>
+ Phil Edwards <phil@codesourcery.com>
+ Thomas de Lellis <tdel@windriver.com>
+
+ * objcopy.c (reverse_bytes): New variable.
+ (command_line_switch, copy_main): Add OPTION_REVERSE_ENDIAN.
+ (copy_options, copy_usage): Add "reverse-bytes" entry.
+ (copy_section): Reverse bytes within output sections.
+ * doc/binutils.texi: Document new objcopy option.
+
+2007-04-20 Nick Clifton <nickc@redhat.com>
+
+ * rclex.l: Allow underscores at the start of identifiers.
+
+2007-04-19 Alan Modra <amodra@bigpond.net.au>
+
+ * budemang.c: Delete.
+ * budemang.h: Delete.
+ * addr2line.c (translate_addresses): Call bfd_demangle rather than
+ demangle.
+ * nm.c (print_symname): Likewise.
+ * objdump.c (objdump_print_symname, dump_symbols): Likewise.
+ (dump_bfd): Likewise.
+ * prdbg.c (struct pr_handle <demangler>): Add int param.
+ (tg_variable, tg_start_function): Adjust demangler calls.
+ * Makefile.am: Remove mention of budemang.[ch]. Run "make dep-am".
+ * Makefile.in: Regenerate.
+ * po/POTFILES.in: Regenerate.
+
+2007-04-14 Steve Ellcey <sje@cup.hp.com>
+
+ * Makefile.am: Add ACLOCAL_AMFLAGS.
+ * configure.in: Change macro call order.
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+
+2007-04-13 Nathan Sidwell <nathan@codesourcery.com>
+
+ * Makefile.am (TOOL_PROGS): Add objcopy.
+ * Makefile.in: Rebuilt.
+
+2007-04-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/4348
+ * objcopy.c (copy_object): Don't stop when there are no
+ sections to be copied.
+
+2007-04-10 Vladimir Prus <vladimir@codesourcery.com>
+
+ * NEWS: Mention disjoint histograms support in
+ gprof.
+
+2007-04-09 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * dwarf.c (process_debug_info): Do not require DW_AT_frame_base for
+ DW_TAG_inlined_subroutine.
+
+2007-04-06 Matt Thomas <matt@netbsd.org>
+
+ * MAINTAINERS: Add myself as VAX and NetBSD support maintainer.
+
+2007-04-05 Alan Modra <amodra@bigpond.net.au>
+
+ PR binutils/4292
+ * nm.c (print_value): Cast bfd_vma to unsigned long to suit
+ value_format_32bit.
+
+2007-04-02 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/4292
+ * nm.c (value_format): Replace with value_format_32bit and
+ value_format_64bit.
+ (set_radix): Update setting of value_format.
+ (set_print_width): New function. Compute the address size of a
+ given bfd and set the print_width global appropriately.
+ (display_archive): Use set_print_width.
+ (display_file): Likewise,
+ (print_object_filename_sysv): Update use of print_width.
+ (print_archive_member_sysv): Likewise.
+ (print_symbol_filename_posix): Likewise.
+ (print_sumbol_info_bfd, print_symbol_info_sysv): Likewise.
+
+2007-03-28 Richard Sandiford <richard@codesourcery.com>
+ Phil Edwards <phil@codesourcery.com>
+
+ * doc/binutils.texi: Put the contents after the title page rather
+ than at the end of the document.
+
+2007-03-28 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (slurp_rela_relocs): Add newline to end of error
+ messages.
+ (slurp_rel_relocs, request_dump, request_dump_byname,
+ process_program_headers, process_dynamic_section,
+ process_symbol_table, process_mips_specific, main): Likewise.
+
+2007-03-28 Alan Modra <amodra@bigpond.net.au>
+
+ * MAINTAINERS: Update mailing list addresses. Add myself
+ as PPC maintainer.
+
+2007-03-27 Alan Modra <amodra@bigpond.net.au>
+
+ * embedspu.sh: Correct toe_addr quoting.
+
+2007-03-27 Alan Modra <amodra@bigpond.net.au>
+
+ * embedspu.sh: Combine "_EAR_" and "_EAR_*" patterns. Tighten
+ .toe section and .toe address checks. Use .reloc for _EAR*
+ symbols defined in non-BSS sections. Build table for _SPUEAR_
+ symbols.
+
+2007-03-23 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+
+ PR gas/3811
+ * readelf.c (debug_apply_rela_addends): Do nothing for SH.
+
+2007-03-22 Joseph Myers <joseph@codesourcery.com>
+
+ * doc/binutils.texi: Include VERSION_PACKAGE when reporting
+ version.
+
+2007-03-16 Kai Tietz <Kai.Tietz@onevision.com>
+
+ * dlltool.c (make_one_lib_file): Use pc-relative relocation
+ instead of an absolute relocation for x86_64-pc-mingw32 target.
+
+2007-03-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.am (REPORT_BUGS_TO): Removed.
+ (INCLUDES): Remove -DREPORT_BUGS_TO.
+ * Makefile.in: Regenerated.
+
+ * bucomm.c: Don't include bfdver.h.
+ * objdump.c: Likewise.
+ * version.c: Likewise.
+
+ * bucomm.h: Include bfdver.h.
+
+ * configure.in (--with-bugurl): Removed.
+ * configure: Regenerated.
+
+ * doc/Makefile.am (binutils_TEXINFOS): Removed.
+ (AM_MAKEINFOFLAGS): Add -I ../../bfd/doc.
+ (TEXI2DVI): Likewise.
+ (config.texi): Removed.
+ (MOSTLYCLEANFILES): Remove config.texi.
+ * doc/Makefile.in: Regenerated.
+
+ * doc/binutils.texi: Include bfdver.texi instead of
+ config.texi.
+
+2007-03-13 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (dump_section): Also test for SHT_REL sections when
+ producing the warning about unapplied relocs.
+
+2007-03-07 Joseph Myers <joseph@codesourcery.com>
+
+ * configure.in (REPORT_BUGS_TEXI): Define to Texinfo version of
+ bug-reporting URL.
+ * doc/Makefile.am (config.texi): Define BUGURL.
+ * doc/binutils.texi: Use BUGURL. Remove text about large files
+ and uuencoding.
+ * Makefile.in, configure, doc/Makefile.in: Regenerate.
+
+2007-03-01 Phil Edwards <phil@codesourcery.com>
+ Richard Sandiford <richard@codesourcery.com>
+
+ * NEWS: Mention addition of --extract-symbol.
+ * doc/binutils.texi: Document it.
+ * objcopy.c (extract_symbol): New variable.
+ (OPTION_EXTRACT_SYMBOLS): New command_line_switch.
+ (copy_options): Add an entry for --extract-symbol.
+ (copy_usage): Mention --extract-symbol.
+ (copy_object): Set the start address to zero for --extract-symbol.
+ Do not copy private BFD data in that case.
+ (setup_section): Set the size, LMA and VMA to zero for
+ --extract-symbol. Do not copy private BFD data in that case.
+ (copy_section): Do not copy section contents if --extract-symbol
+ is passed.
+ (copy_main): Set extract_symbol to TRUE if --extract-symbol
+ is passed.
+
+2007-03-01 Paul Brook <paul@codesourcery.com>
+
+ * MAINTAINERS: Update my entry.
+
+2007-03-01 Joseph Myers <joseph@codesourcery.com>
+
+ * version.c: Update copyright date.
+
+2007-03-01 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * Makefile.am (install-exec-local): Depend on $(noinst_PROGRAMS).
+ Adjust $(EXEEXT) handling for $(RENAMED_PROGS).
+ * Makefile.in, doc/Makefile.in: Regenerate.
+
+2007-03-01 Alan Modra <amodra@bigpond.net.au>
+
+ * embedspu.sh: Set type and size of global program handle symbol.
+
+2007-02-28 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am (PROGS): Delete.
+ (RENAMED_PROGS): Define. Extracted from..
+ (noinst_PROGRAMS): ..here. Add BUILD_MISC.
+ (install-exec-local): Adjust.
+ * Makefile.in: Regenerate.
+
+2007-02-28 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am (PROGS): Add BUILD_INSTALL_MISC.
+ (bin_PROGRAMS): Replace BUILD_MISC with BUILD_INSTALL_MISC.
+ (EXTRA_PROGRAMS): Remove bin2c.
+ (bin2c$(EXEEXT_FOR_BUILD)): New rule.
+ (bin2c_SOURCES): Delete.
+ (DISTCLEANFILES): Remove sysinfo.
+ (MOSTLYCLEANFILES): Add sysinfo$(EXEEXT_FOR_BUILD) and
+ bin2c$(EXEEXT_FOR_BUILD).
+ * configure.in (BUILD_MISC): Add $(EXEEXT_FOR_BUILD) to bin2c.
+ Move embedspu to..
+ (BUILD_INSTALL_MISC): ..here.
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+
+2007-02-27 Alan Modra <amodra@bigpond.net.au>
+
+ * bin2c.c: New file.
+ * Makefile.am (EXTRA_PROGRAMS): Add bin2c.
+ (CFILES): Add bin2c.c.
+ (bin2c_SOURCES): Define.
+ (bin2c.o): Dependencies from "make dep-am".
+ * configure.in (BUILD_MISC): Add bin2c.
+ * version.c: Update year.
+ * po/POTFILES.in: Regenerate.
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+
+2007-02-17 Mark Mitchell <mark@codesourcery.com>
+ Nathan Sidwell <nathan@codesourcery.com>
+ Vladimir Prus <vladimir@codesourcery.com
+ Joseph Myers <joseph@codesourcery.com>
+
+ * configure.in (--with-bugurl): New option.
+ * configure: Regenerate.
+ * Makefile.am (REPORT_BUGS_TO): Define.
+ (INCLUDES): Define REPORT_BUGS_TO.
+ Regenerate dependencies.
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+ * bucomm.h: Remove include of bin-bugs.h.
+ * addr2line.c (usage): Don't print empty REPORT_BUGS_TO.
+ * ar.c (usage): Pass s to list_supported_targets. Don't print
+ empty REPORT_BUGS_TO.
+ * coffdump.c (show_usage): Don't print empty REPORT_BUGS_TO.
+ * cxxfilt.c (usage): Print bug url when giving help.
+ * dlltool.c (usage): Likewise.
+ * dllwrap.c (usage): Likewise.
+ * nlmconv.c (show_usage): Don't print empty REPORT_BUGS_TO.
+ * nm.c (usage): Likewise.
+ * objcopy.c (copy_usage, strip_usage): Likewise.
+ * objdump.c (usage): Likewise.
+ * readelf.c ((usage): Likewise. Add STREAM argument. Adjust
+ callers.
+ * size.c (usage): Don't print empty REPORT_BUGS_TO.
+ * srconv.c (show_usage): Likewise.
+ * strings.c (usage): Likewise.
+ * sysdymp.c (show_usage): Likewise.
+ * windres.c (usage): Likewise.
+
+2007-02-13 Alan Modra <amodra@bigpond.net.au>
+
+ * embedspu.sh: Add -W to readelf invocation.
+
+2007-02-06 Dave Brolley <brolley@redhat.com>
+
+ * MAINTAINERS: Add myself as the maintainer of the MeP port.
+
+2007-02-06 Nick Clifton <nickc@redhat.com>
+
+ PR gas/3800
+ * readelf.c: Include elf/h8.h twice. The first time in order to
+ get the reloc numbers, the second time in order to get the reloc
+ decoder function.
+ (dump_section): Tell the user if the section being displayed has
+ unprocessed relocs associated with it.
+ (get_reloc_size): New function - returns the size of a reloc.
+ (debug_apply_rela_addends): Use get_reloc_size().
+ * dwarf.c (read_and_display_attr_value): Extend number of
+ languages known for the DW_AT_language attribute.
+ (process_debug_info): Display the attribute offset before decoding
+ the attribute, in case there are problems.
+
+2007-02-05 Dave Brolley <brolley@redhat.com>
+
+ * readelf.c (dump_relocations): Don't check for
+ (rtype == NULL && type == R_RELC).
+
+2007-02-05 Dave Brolley <brolley@redhat.com>
+
+ * Makefile.am (readelf.o): Depends on $(INCDIR)/elf/mep.h.
+ * Makefile.in: Regenerated.
+ * Contribute the following changes:
+ 2003-10-29 Dave Brolley <brolley@redhat.com>
+
+ * configure.in: Define SKIP_ZEROES and SKIP_ZEROES_AT_END for mep.
+ * configure: Regenerated.
+
+ 2001-04-03 Ben Elliston <bje@redhat.com>
+
+ * readelf.c: Include "elf/mep.h".
+ (guess_is_rela): Handle EM_CYGNUS_MEP.
+ (get_machine_name): Ditto.
+ (dump_relocations): Ditto.
+
+2007-02-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * MAINTAINERS: Add a space between H.J. and Lu.
+
+2007-02-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * doc/binutils.texi (objdump): Document the new addr64 option
+ for i386 disassembler.
+
+2007-02-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/3945
+ * configure.in (DLLTOOL_DEFAULT): New. Defined for the first PE
+ target.
+ (DLLTOOL_DEFS): Add $DLLTOOL_DEFAULT.
+ * configure: Regenerated.
+
+ * dlltool.c (mname): Defined with DLLTOOL_DEFAULT_XXX.
+
+2007-02-02 Nick Clifton <nickc@redhat.com>
+
+ * doc/binutils.texi (objdump): Document support for disassembling
+ the 440 PowerPC architecture.
+
+2007-01-31 Nathan Sidwell <nathan@codesourcery.com>
+
+ * dwarf.c (process_debug_info): Protect against bogus length and
+ abbrev offsets.
+
+2007-01-25 Kazu Hirata <kazu@codesourcery.com>
+
+ * ar.c (print_contents, extract_file): Cast the return value
+ of fwrite to size_t.
+
+2007-01-12 Alan Modra <amodra@bigpond.net.au>
+
+ * ar.c (open_inarch): Check fwrite return. Use size_t.
+ (extract_file): Likewise. Remove test for "negative" file size.
+ * readelf.c (process_program_headers): Check fscanf return.
+
+2007-01-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ * bucomm.c (template_in_dir): Fix typo.
+
+2007-01-11 Alan Modra <amodra@bigpond.net.au>
+
+ * embedspu.sh: New file.
+ * Makefile.am (embedspu): Add rule.
+ * configure.in (BUILD_MISC): Add embedspu for powerpc-linux.
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+
+2007-01-11 Alan Modra <amodra@bigpond.net.au>
+
+ * bucomm.h (make_tempdir): Declare independently of HAVE_MKDTEMP.
+ * bucomm.c (template_in_dir): New function, split out from..
+ (make_tempname): ..here. Open the file with O_EXCL if !HAVE_MKSTEMP.
+ (make_tempdir): Use template_in_dir. Handle directory creation
+ when !HAVE_MKDTEMP.
+ * objcopy.c (MKDIR): Don't define.
+ (copy_archive): Use make_tempdir when !HAVE_MKDTEMP too. Fix
+ error message.
+
+2007-01-08 Kazu Hirata <kazu@codesourcery.com>
+
+ * readelf.c (get_machine_flags): Treat Fido as an architecture
+ by itself.
+
+2007-01-08 Kai Tietz <kai.tietz@onevision.com>
+
+ * configure.in: Renamed target x86_64-*-mingw64 to
+ x86_64-*-mingw*.
+ * configure: Regenerated.
+
+2007-01-05 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (dump_section): Don't print 32-bit values, which
+ were done incorrectly for little-endian. Instead print bytes.
+
+For older changes see ChangeLog-2006
+
+Copyright (C) 2007 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-2008 b/binutils-2.24/binutils/ChangeLog-2008
new file mode 100644
index 00000000..a1b9505e
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-2008
@@ -0,0 +1,880 @@
+2008-12-23 Jon Beniston <jon@beniston.com>
+
+ * MAINTAINERS: Added Jon Beniston as maintainer for LM32 port.
+ * readelf.c: Add support for LM32 machine number.
+
+2008-12-23 Kai Tietz <kai.tietz@onevision.com>
+
+ * rcparse.y (rcdata_data): Allow empty comma elements.
+
+2008-12-23 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (dump_reloc_set): Remove STT_IFUNC support.
+ * readelf.c (dump_relocations): Likewise.
+ (get_symbol_type): Likewise.
+ * doc/binutils.texi: Likewise.
+
+2008-12-18 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure: Regenerate.
+
+2008-12-09 Tom Tromey <tromey@redhat.com>
+
+ * srconv.c (wr_hd): Add parens to placate gcc 4.4.
+
+2008-12-09 Andrew Stubbs <ams@codesourcery.com>
+
+ * readelf.c (arm_attr_tag_CPU_arch): Add "v6-M" and "v6S-M".
+ (arm_attr_tag_WMMX_arch): Add "WMMXv2".
+ (arm_attr_tag_NEON_arch): Rename to ...
+ (arm_attr_tag_Advanced_SIMD_arch): ... official name.
+ (arm_attr_tag_ABI_PCS_config): Rename to ...
+ (arm_attr_tag_PCS_config): ... official name.
+ (arm_attr_tag_ABI_PCS_RO_DATA): Rename to ...
+ (arm_attr_tag_ABI_PCS_RO_data): ... official name.
+ (arm_attr_tag_ABI_FP_denormal): Add "Sign only".
+ (arm_attr_tag_CPU_unaligned_access): New array.
+ (arm_attr_tag_T2EE_use): New array.
+ (arm_attr_tag_Virtualization_use): New array.
+ (arm_attr_tag_MPextension_use): New array.
+ (arm_attr_publ): NEON_arch -> Advanced_SIMD_arch.
+ ABI_PCS_config -> PCS_config.
+ ABI_PCS_RO_DATA -> ABI_PCS_RO_data.
+ Add CPU_unaligned_access, nodefaults, also_compatible_with,
+ T2EE_use, conformance, Virtualization_use and MPextension_use.
+ (display_arm_attribute): Handle Tag_nodefaults and
+ Tag_also_compatible_with.
+
+2008-12-04 Ben Elliston <bje@au.ibm.com>
+
+ * doc/binutils.texi (objdump): Update booke documentation.
+ * NEWS: Document user-visible changes to command line options.
+
+2008-12-04 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (dump_reloc_set): Append "()" to symbol names which
+ have the BSF_INDIRECT_FUNCTION type.
+ * readelf.c (print_symbol): Fix handling of negative widths.
+ (dump_relocations): Append "()" to symbol names which have the
+ STT_IFUNC type. Display negative offsets as a positive number with
+ a "-" prefix.
+ (get_symbol_type): Return "IFUNC" for STT_IFUNC symbols.
+ * doc/binutils.texi: Document 'i' symbol type.
+
+2008-11-26 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * strings.c (main): New variable `s'. Have string_min parsing
+ call fatal for invalid input strings.
+
+2008-11-25 Nick Clifton <nickc@redhat.com>
+
+ PR7044
+ * dlltool.c (run): Use formatting string to avoid compile time
+ warning.
+ (gen_exp_file): Check return value from fread.
+ * windmc.c (main): Check return value from fread.
+
+2008-11-21 Sterling Augustine <sterling@tensilica.com>
+
+ * MAINTAINERS: Take over from Bob Wilson as Xtensa maintainer.
+
+2008-11-19 Nick Clifton <nickc@redhat.com>
+
+ * doc/fdl.texi: Update to v1.3
+ * doc/binutils.texinfo: Change license to v1.3.
+
+2008-11-18 Catherine Moore <clm@codesourcery.com>
+
+ * readelf.c (arm_attr_tag_ABI_FP_16bit_format): New.
+ (arm_attr_tag_VFP_HP_extension): New.
+ (arm_attr_public_tag arm_attr_public_tags): Support
+ new attributes.
+
+2008-11-17 Nick Clifton <nickc@redhat.com>
+
+ * version.c (print_version): Update copyright year.
+
+2008-11-16 Danny Smith <dannysmith@usesr.sourceforge.net>
+
+ * dlltool.c (identify_search_section): Cast argument, not return
+ value, of xstrdup to 'char*'.
+
+2008-11-15 Charles Wilson <cygwin@cwilson.fastmail.fm>
+
+ Added --identify option to dlltool.
+ * binutils/dlltool.c: Add new global variables
+ identify_imp_name and identify_dll_name.
+ (identify_dll_for_implib, identify_search_archive,
+ identify_search_member, identify_process_section_p,
+ identify_search_section): New functions.
+ (usage): Added --identify.
+ (long_options): Added --identify.
+ (main): Handle --identify option.
+ * binutils/doc/binutils.texi: Document --identify.
+
+2008-11-14 Tristan Gingold <gingold@adacore.com>
+
+ Remove outdated mach-o specific tests.
+ * objdump.c (load_debug_section): Remove mach-o specific test.
+ (mach_o_uncompressed_dwarf_sections): Removed.
+ (mach_o_compressed_dwarf_sections): Removed.
+ (generic_uncompressed_dwarf_sections): Removed.
+ (generic_compressed_dwarf_sections): Removed.
+ (check_mach_o_dwarf): Removed.
+ (dump_dwarf): Remove call to check_mach_o_dwarf.
+
+2008-11-14 Tristan Gingold <gingold@adacore.com>
+
+ * configure.com: Get version from configure.in of bfd.
+ * makefile.vms-in (DEBUG_OBJS): Add dwarf.obj.
+ (CFLAGS): Update flags.
+
+2008-11-13 Hans-Peter Nilsson <hp@axis.com>
+ Alan Modra <amodra@bigpond.net.au>
+
+ * nm.c (filter_symbols): Only call memcpy when from != to.
+
+2008-11-10 Tristan Gingold <gingold@adacore.com>
+ Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (disassemble_bytes): Don't skip leading zeros when
+ end of section calculation overflows.
+
+2008-11-07 Prafulla Thakare <prafulla.thakare@kpitcummins.com>
+
+ * MAINTAINERS: Take over from Anil Paranjpe as H8300 maintainer.
+
+2008-10-31 Alan Modra <amodra@bigpond.net.au>
+
+ * po/id.po: New file.
+ * configure.in (ALL_LINGUAS): Add id.
+ * configure: Regenerate.
+
+2008-10-21 Alan Modra <amodra@bigpond.net.au>
+
+ * windmc.c (res_alloc): Remove unnecessary cast.
+ * windres.c (res_alloc, reswr_alloc): Likewise.
+
+2008-10-20 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c: Tidy up code formatting.
+
+2008-10-10 Nathan Froyd <froydnj@codesourcery.com>
+
+ * readelf.c (display_power_gnu_attribute): Decode
+ Tag_GNU_Power_ABI_Struct_Return.
+
+2008-10-10 Alan Modra <amodra@bigpond.net.au>
+
+ * embedspu.sh: Pass -Wa,-noexecstack to $CC.
+
+2008-10-09 Kai Tietz <kai.tietz@onevision.com>
+
+ * dlltool.c (PAGE_SIZE): Make sure it has bfd_vma type.
+ (PAGE_MASK): Likewise.
+ (sfunc): Change to address size of bfd_vma for base-file.
+ (flush_page): Likewise.
+ (gen_exp_file): Likewise.
+
+2008-10-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * readelf.c (process_section_headers): Do not cut the section names and
+ types if running with --wide.
+
+2008-10-06 Tom Tromey <tromey@redhat.com>
+
+ * dwarf.c (display_debug_frames): Change text for uniformity.
+ (process_debug_info): Likewise.
+ (display_debug_aranges): Likewise. Indent address output.
+ (display_debug_pubnames): Print offset in hex.
+
+2008-10-02 Andrew Paprocki <andrew@ishiboo.com>
+
+ PR 6934
+ * stabs.c (parse_stab_string): Parse and ignore =Y<name> strings
+ generated by the SUNPro C++ compiler.
+
+2008-09-30 Andrew Paprocki <andrew@ishiboo.com>
+
+ PR 6922
+ * stabs.c (parse_stab_sun_builtin_type): Parse, but ignore SUN's
+ 'b' and 'v' extensions.
+
+2008-09-29 Peter O'Gorman <pogma@thewrittenword.com>
+ Steve Ellcey <sje@cup.hp.com>
+
+ * configure: Regenerate for new libtool.
+ * aclocal.m4: Ditto.
+ * Makefile.in: Ditto.
+ * doc/Makefile.in: Ditto.
+
+2008-09-28 Alan Modra <amodra@bigpond.net.au>
+
+ * objcopy.c (setup_section): Set elf_group_id.
+
+2008-09-24 Richard Henderson <rth@redhat.com>
+
+ * dwarf.c (size_of_encoded_value, get_encoded_value): Move up.
+ (decode_location_expression): Add section parameter. Handle
+ DW_OP_GNU_encoded_addr.
+ (read_and_display_attr_value): Update decode_location_expression call.
+ (display_debug_loc, display_debug_frames): Likewise.
+
+2008-09-25 Alan Modra <amodra@bigpond.net.au>
+
+ PR 6913
+ * dwarf.c (print_dwarf_vma): Don't call printf without format string.
+
+2008-09-17 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Suppress warnings on NONE relocations to discarded sections.
+ * readelf.c (is_none_reloc): New function.
+ (debug_apply_relocations): Ignore is_none_reloc() relocations.
+
+2008-09-11 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix loading large elf64 binaries on 32bit hosts.
+ * configure.in: Call AC_SYS_LARGEFILE.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+
+2008-09-11 Alan Modra <amodra@bigpond.net.au>
+
+ * po/sv.po: Update.
+
+2008-09-08 Tristan Gingold <gingold@adacore.com>
+
+ * BRANCHES: Add 2.18 and 2.19 release branches.
+
+2008-09-08 Tristan Gingold <gingold@adacore.com>
+
+ * NEWS: Add a marker for the 2.19 features.
+
+2008-09-05 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * readelf.c (load_specific_debug_section): New function, from
+ load_debug_section.
+ (load_debug_section): Use load_specific_debug_section.
+ (display_debug_section): Use load_specific_debug_section. Check for
+ multiple sections with the same name.
+
+2008-08-28 Tristan Gingold <gingold@adacore.com>
+
+ * objdump.c (dump_stabs): Add sections for Darwin.
+
+2008-08-25 Alan Modra <amodra@bigpond.net.au>
+
+ * sysdep.h: Include "binary-io.h".
+ (O_BINARY): Don't define here.
+ * bin2c.c (O_BINARY, O_TEXT, SET_BINARY): Don't define here.
+ * strings.c: Likewise.
+ (main): Remove #ifdef SET_BINARY.
+ * Makefile.am: Run "make dep-am"
+ * Makefile.in: Regenerate.
+
+2008-08-24 Alan Modra <amodra@bigpond.net.au>
+
+ * configure.in: Update a number of obsolete autoconf macros.
+ * configure: Regenerate.
+ * aclocal.m4: Regenerate.
+
+2008-08-21 Richard Henderson <rth@redhat.com>
+
+ * readelf.c (is_32bit_pcrel_reloc): Fix hppa entry.
+ (is_64bit_pcrel_reloc): New.
+ (debug_apply_relocations): Use it. Handle hppa pcrel bias.
+
+2008-08-15 Alan Modra <amodra@bigpond.net.au>
+
+ PR 6526
+ * configure.in: Invoke AC_USE_SYSTEM_EXTENSIONS.
+ * Makefile.in: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * doc/Makefile.in: Regenerate.
+
+2008-08-09 Alan Modra <amodra@bigpond.net.au>
+
+ PR 6615
+ * rename.c (smart_rename): Punctuate error messages.
+
+2008-08-08 Richard Sandiford <rdsandiford@googlemail.com>
+ Daniel Jacobowitz <dan@codesourcery.com>
+ Catherine Moore <clm@codesourcery.com>
+ Mark Shinwell <shinwell@codesourcery.com>
+
+ * readelf.c (get_mips_symbol_other): Handle STO_MIPS_PLT and
+ STO_MIPS_PIC.
+ (slurp_rela_relocs, slurp_rel_relocs): Handle MIPS ELF64 here.
+ (dump_relocations, debug_apply_relocations): Don't handle it here.
+ (get_mips_dynamic_type): Handle DT_MIPS_PLTGOT and DT_MIPS_RWPLT.
+ (print_mips_pltgot_entry): New function.
+ (process_mips_specific): Dump the PLT GOT.
+
+2008-08-08 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (is_64bit_abs_reloc): Return true for R_MIPS_64.
+
+2008-08-06 Alan Modra <amodra@bigpond.net.au>
+
+ PR 6774
+ * objcopy.c (copy_object): Don't setup_bfd_headers when extract_symbol.
+ (setup_section): Don't zero vma and lma when extract_symbol.
+ (copy_section): Discard relocations when extract_symbol.
+ * doc/binutils.texi: Update --extract-symbol description.
+
+2008-08-04 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am (POTFILES.in): Set LC_ALL=C.
+ * Makefile.in: Regenerate.
+
+2008-08-04 Markus Weiss <weissms@aros.org>
+
+ * readelf.c (get_osabi_name <ELFOSABI_AROS>): Change name.
+
+2008-08-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ * dwarf.c (dwarf_regnames_i386): Remove AVX registers.
+ (dwarf_regnames_x86_64): Likewise.
+
+2008-07-30 Alan Modra <amodra@bigpond.net.au>
+
+ * dlltool.c, dwarf.c, objdump.c, readelf.c, resrc.c, resres.c,
+ windmc.c: Silence gcc warnings.
+
+2008-07-28 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (print_vma): Typo fix.
+
+2008-07-28 Alan Modra <amodra@bigpond.net.au>
+
+ PR 6769
+ * readelf.c (print_dec_vma, print_hex_vma): Delete.
+ (print_vma): Use BFD_VMA_FMT.
+ * size.c (size_number, rprint_number): Likewise.
+
+2008-07-26 Michael Eager <eager@eagercon.com>
+
+ * readelf.c (display_power_gnu_attribute): Display
+ single-precision hard float.
+
+2008-07-21 Luis Machado <luisgpm@br.ibm.com>
+
+ * readelf.c (get_note_type): Handle VSX notes.
+
+2008-07-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objdump.c (load_debug_section): Initialize section_is_compressed
+ for gcc 3.4/ia64.
+ * readelf.c (load_debug_section): Likewise.
+
+2008-07-12 Jie Zhang <jie.zhang@analog.com>
+
+ Revert
+ 2008-07-12 Jie Zhang <jie.zhang@analog.com>
+ * readelf.c (get_machine_flags): Deal with Blackfin specific
+ flags.
+
+2008-07-12 Jie Zhang <jie.zhang@analog.com>
+
+ * readelf.c (get_machine_flags): Deal with Blackfin specific
+ flags.
+
+2008-07-09 Craig Silverstein <csilvers@google.com>
+
+ * config.in: Add HAVE_ZLIB_H
+ * configure.in: Add test for libz and zlib.h
+ * configure: Regenerate.
+ * dwarf.c (debug_displays): Add .zdebug_* strings.
+ * dwarf.h (struct dwarf_section): Add fields uncompressed_namd
+ and compressed_name.
+ * objdump.c (load_debug_section): Call
+ bfd_uncompress_section_contents when loading a compressed
+ section.
+ (dump_dwarf_section): Recognize compressed section name.
+ (mach_o_dwarf_sections): Rename as
+ mach_o_uncompressed_dwarf_sections.
+ (mach_o_compressed_dwarf_sections): New variable.
+ (generic_dwarf_section): Rename as
+ generic_uncompressed_dwarf_sections.
+ (generic_compressed_dwarf_sections): New variable.
+ (check_mach_o_dwarf): Save and restore
+ mach_o_compressed_dwarf_sections.
+ * readelf.c: Add #include for config.h and zlib.h
+ (process_section_headers): Recognize compressed section name.
+ (uncompress_section_contents): New function.
+ (load_debug_section): Call uncompress_section_contents when
+ loading a compressed section.
+ (display_debug_section): Recognize compressed section name.
+
+2008-07-07 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (find_symbol_for_address): Prefer symbols in current
+ section.
+
+2008-07-07 Alan Modra <amodra@bigpond.net.au>
+
+ * ieee.c (write_ieee_debugging_info): Use bfd_make_section_with_flags.
+ * nlmconv.c (main, powerpc_build_stubs): Likewise.
+ * rescoff.c (write_coff_file): Likewise.
+ * resres.c (write_res_file): Likewise.
+ * windmc.c (windmc_write_bin): Likewise.
+
+2008-06-18 M R Swami Reddy <MR.Swami.Reddy@nsc.com>
+
+ * readelf.c (guess_is_rela): Add EM_CR16_OLD.
+ (dump_relocations): Likewise.
+ (get_machine_name): Likewise.
+ (is_32bit_abs_reloc): Likewise.
+
+2008-06-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure: Regenerate.
+
+2008-06-12 DJ Delorie <dj@redhat.com>
+
+ * readelf.c (guess_is_rela): Add EM_M32C_OLD.
+ (dump_relocations): Likewise.
+ (process_section_headers): Likewise.
+ (is_32bit_abs_reloc): Likewise.
+ (is_16bit_abs_reloc): Likewise.
+
+2008-06-12 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/6483
+ * objdump.c (dump_bfd): If the -g option found no STABS or IEEE
+ debug information to display, try dumping DWARF information
+ instead.
+ * rddbg.c (read_debugging_info): Add a parameter to suppress the
+ display of a warning message when no debug information is found.
+ * budbg.h (read_debugging_info): Update prototype.
+ * objcopy.c (copy_object): Continue to allow read_debugging_info
+ to produce warning messages.
+ * doc/binutils.texi (--debugging): Document new behaviour of the
+ -g/--debugging option.
+
+2008-06-10 Ben Elliston <bje@gnu.org>
+
+ * MAINTAINERS: Remove myself as m68k maintainer.
+
+2008-05-14 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+
+2008-05-12 Alan Modra <amodra@bigpond.net.au>
+
+ * embedspu.sh: Test for presence of ._ea by looking at section
+ table rather than looking at relocs. Correct toe_addr substitution.
+
+2008-05-08 Alan Modra <amodra@bigpond.net.au>
+
+ * embedspu.sh: Take note of R_SPU_PPU32/64 relocs without a symbol,
+ and if present, put image in ".data.speelf". Put program handle
+ in ".data.spehandle".
+
+2008-05-01 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (print_symbol): Add code to display non-printing
+ characters.
+
+2008-04-30 John Heidemann <johnh@isi.edu>
+
+ * doc/binutils.texi (strings): Add "unicode" to the documentation
+ of strings in order to make explicit that it supports this
+ feature.
+
+2008-04-30 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (process_program_headers): Correct section in segment
+ display.
+
+2008-04-28 M Thomas <mthomas@rhrk.uni-kl.de>
+ Nick Clifton <nickc@redhat.com>
+
+ PR binutils/6449
+ * objdump.c (slurp_file): Open the file in binary mode.
+ * ar.c: Remove conditional definition of O_BINARY.
+ * bin2.c: Likewise.
+ * rename.c: Likewise.
+ * strings.c: Likewise.
+ * sysdep.h: Add conditional definition of O_BINARY.
+
+2008-04-23 Paolo Bonzini <bonzini@gnu.org>
+
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2008-04-16 Jean-Yves Lefort <jylefort@brutele.be>
+
+ PR binutils/6034
+ * objcopy.c (stuct symlist): Rename to
+ is_specified_symbol_predicate_data.
+ (strip_specific_list): Rename to strip_specific_htab.
+ (strip_unneeded_list): Rename to strip_unneeded_htab.
+ (keep_specific_list): Rename to keep_specific_htab.
+ (localize_specific_list): Rename to localize_specific_htab.
+ (globalize_specific_list): Rename to globalize_specific_htab.
+ (keepglobal_specific_list): Rename to keepglobal_specific_htab.
+ (weaken_specific_list): Rename to weaken_specific_htab.
+ (eq_string): New function.
+ (create_symbol_htab): New function.
+ (create_symbol_htabs): New function.
+ (add_specific_symbol): Change to use hash tables.
+ (is_specified_symbol_predicate): New function.
+ (is_specified_symbol): Use hash table lookup.
+ (is_strip_section): Update to use new functions and hash tables.
+ (filter_symbols): Likewise.
+ (copy_object): Likewise.
+ (copy_section): Likewise.
+ (strip_main): Likewise.
+ (copy_main): Likewise.
+ (main): Likewise.
+
+2008-04-14 David S. Miller <davem@davemloft.net>
+
+ * readelf.c (get_gnu_elf_note_type): Recognize NT_GNU_GOLD_VERSION.
+
+2008-04-11 Torleif Sandnes <torleif.sandnes@gmail.com>
+
+ * dwarf.c (display_debug_lines): Rename to
+ display_debug_lines_raw.
+ (display_debug_lines_decoded): New function. Displays the
+ interpreted contents of a .debug_line section.
+ (display_debug_lines): New function: Selects either a raw dump or
+ a decoded dump (or both) as requested by the user.
+ * dwarf.h (do_debug_lines_decoded): New extern.
+ * readelf.c: Add support for -wL or --debug-dump=decodedline
+ option to display the decoded contents of a .debug_line section.
+ * doc/binutils.texi: Document the new option.
+ * NEWS: Mention the new feature.
+
+2008-04-08 Alan Modra <amodra@bigpond.net.au>
+
+ * dwarf.c: Remove trailing whitespace throughout file.
+
+2008-04-04 Nick Clifton <nickc@redhat.com>
+
+ * po/sk.po: Updated Slovak translation.
+
+2008-04-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ * dwarf.c (dwarf_regnames_i386): Add AVX registers.
+ (dwarf_regnames_x86_64): Likewise.
+
+2008-03-27 Cary Coutant <ccoutant@google.com>
+
+ Add support for thin archives.
+ * ar.c (make_thin_archive): New global flag.
+ (map_over_members): Deal with full pathnames in thin archives.
+ (usage, main): Add 'T' option for building thin archives.
+ (replace_members): Pass thin archive flag to ar_emul_append.
+ * arsup.c (ar_open): Initialize new flag.
+ * binemul.c (ar_emul_append): Add new parameter for
+ flattening nested archives.
+ (do_ar_emul_default_append): New function.
+ (ar_emul_default_append): Factored out recursive code.
+ * binutils/binemul.h (ar_emul_default_append): Add new parameter.
+ (struct bin_emulation_xfer_struct): New parameter for ar_append.
+ * dlltool.c (gen_lib_file): Initialize thin archive flag.
+ * emul_aix.c (ar_emul_aix_internal): Add new flatten
+ parameter, currently unimplemented.
+ All callers changed.
+ * objcopy.c (copy_archive): Preserve thin archive flag.
+ * doc/binutils.texi: Update ar documentation.
+ * NEWS: Mention the new feature.
+
+2008-03-20 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (process_mips_specific): Declare addr_size as int.
+
+2008-03-20 Richard Sandiford <rsandifo@nildram.co.uk>
+
+ * readelf.c (print_mips_got_entry): New function.
+ (process_mips_specific): Print GOT information.
+
+2008-03-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * aclocal.m4: Regenerate.
+ * configure: Likewise.
+ * Makefile.in: Likewise.
+ * doc/Makefile.in: Likewise.
+
+2008-03-16 Brian Dessent <brian@dessent.net>
+
+ * rcparse.y (resid): Allow control text to span multiple lines.
+
+2008-03-13 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c: Use %u throughout when printing sh_link or sh_info,
+ %lu when printing sh_addralign.
+ (process_version_sections): Use identical formats when printing
+ all offset and sh_link fields.
+
+2008-03-13 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+ * configure: Regenerate.
+
+2008-03-12 Alan Modra <amodra@bigpond.net.au>
+
+ PR 5900
+ * readelf.c (SECTION_HEADER_INDEX, SECTION_HEADER_NUM): Delete.
+ Remove use throughout file.
+ (SECTION_HEADER): Likewise.
+ (dump_relocations): Don't adjust st_shndx for reserved range.
+ (process_file_header): Mask SHN_XINDEX to values seen in external
+ elf structs. Simplify valid section index tests.
+ (get_32bit_elf_symbols, get_64bit_elf_symbols): Mask SHN_XINDEX.
+ Map reserved st_shndx to internal form.
+ (process_section_groups): Test that group symbol st_shndx is in
+ range, not just non-zero. Delete reserved range check.
+ (get_symbol_index_type): Mask "type" to 16 bits when printing PRC,
+ OS or RSV.
+
+2008-03-09 Paul Brook <paul@codesourcery.com>
+
+ * readelf.c (arm_attr_tag_VFP_arch): Add "VFPv3-D16".
+
+2008-03-03 James E. Wilson <wilson@tuliptree.org>
+
+ * MAINTAINERS: Update my email address.
+
+2008-03-03 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (decode_location_expression): Handle
+ DW_OP_PGI_omp_thread_num.
+
+2008-03-01 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (objdump_print_addr): Initialise "sym".
+
+2008-02-27 Justin Pryzby <justinpryzby@users.sourceforge.net>
+ Nick Clifton <nickc@redhat.com>
+
+ * ar.c (usage): Mention -t command line switch.
+ * doc/binutils.texi (ranlib): Document -t command line switch.
+
+2008-02-26 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (objdump_print_addr): If displaying file offsets, show
+ the offset even if there are no symbols available.
+ (dump_section): Display nothing if none of the section is going to
+ be dumped. Display the file offset, if requested, of the location
+ from where the dump starts.
+ * doc/binutils.texi (objdump): Mention that dumping via the -s
+ switch is also affected by the -F option.
+
+2008-02-26 Nick Clifton <nickc@redhat.com>
+
+ Re-apply this patch which was accidentally deleted:
+ 2006-05-16 Carlos O'Donell <carlos@codesourcery.com>
+
+ * doc/binutils.texi: Use "Binutils Index" for index name.
+
+2008-02-22 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (display_file_offsets): New variable.
+ (long_options): Add -F/--file-offsets.
+ (objdump_print_addr_with_sym): If displaying file offsets, print
+ the offset of the given address.
+ (disassemble_bytes): If displaying file offsets, tell the user how
+ many zeroes are skipped and the file offset of the point where
+ dumping resumes.
+ (disassemble_section): Only display the name of the section if
+ data is going to be dumped from it.
+ (main): Handle new option. Produce error messages if the start or
+ stop addresses do not make sense.
+ * doc/binutils.texi: Document the new feature.
+ * NEWS: Mention the new feature.
+
+2008-02-15 Chu Li <chul@cn.fujitsu.com>
+ Nick Clifton <nickc@redhat.com>
+
+ PR binutils/5713
+ * strings.c (integer_arg): Delete function.
+ (string_min): Initialise to 4.
+ (main): Use strtoul to parse integer arguments.
+ Move check for an invalid string length to after all the arguments
+ have been parsed.
+ (usage): Use indentation to indicate that -<n> is a another form
+ of the --bytes= command line option.
+
+2008-02-12 Nick Clifton <nickc@redhat.com>
+
+ * dlltool.c (mcore_elf_cache_filename): Add a const qualifier to
+ the argument.
+ (scan_obj_filename): Do not drop the const qualifier when calling
+ mcore_elf_cache_filename.
+ (struct fname_cache): Add const qualifier to filename field.
+
+2008-02-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/5713
+ * strings.c (main): Set string_min to 4 if it is <= 0.
+
+2008-02-07 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (main): Don't pass unadorned NULL to concat.
+
+2008-02-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR 5715
+ * configure: Regenerated.
+
+2008-02-03 Adam Nemet <anemet@caviumnetworks.com>
+
+ * readelf.c (get_machine_flags): Handle Octeon.
+
+2008-01-30 Tristan Gingold <gingold@adacore.com>
+
+ * readelf.c (dump_relocations): Decode OpenVMS-specific sections.
+ (get_ia64_dynamic_type): Decode OpenVMS-specific tags.
+ (get_dynamic_type): Handle IA64-specific tags.
+ (get_ia64_section_type_name): Handle OpenVMS-specific sections.
+ (get_section_type_name): Handle OS-specific sections (and
+ particularly IA64 OpenVMS one).
+ (get_elf_section_flags): Makes flags static. Add entries for IA64 and
+ decode them.
+
+2008-01-29 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (print_dwarf_vma): New function. Display the value of a
+ dwarf_vma type at a specified precision. Use mingw field type
+ specifier if necessary.
+ (display_debug_loc): Use dwarf_vma type for begin and end values.
+ Use print_dwarf_vma to display their values. Use byte_get_signed
+ in order to correctly detect the -1 escape value.
+ (display_debug_aranges): Likewise.
+ (display_debug_ranges): Likewise.
+
+2008-01-29 Alan Modra <amodra@bigpond.net.au>
+
+ * dwarf.c (display_debug_loc): Correct test for base address
+ entry when 64-bit host dumping 32-bit object.
+
+2008-01-29 Alan Modra <amodra@bigpond.net.au>
+
+ * MAINTAINERS: Remove myself as ix86 maintainer. Add for SPU.
+
+2008-01-28 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/5529
+ * rclex.c (yylex): Also allow the hypen character.
+
+2008-01-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ * dwarf.c: Include "elf/common.h".
+ (eh_addr_size): Changed to int.
+ (dwarf_regnames_i386): New.
+ (dwarf_regnames_x86_64): Likewise.
+ (dwarf_regnames): Likewise.
+ (dwarf_regnames_count): Likewise.
+ (init_dwarf_regnames): Likewise.
+ (regname): Likewise.
+ (frame_display_row): Properly support different address size.
+ Call regname to get register name.
+ (display_debug_frames): Call regname to get register name.
+ Display DW_CFA_def_cfa_register as DW_CFA_def_cfa_register
+ instead of DW_CFA_def_cfa_reg.
+
+ * dwarf.h (init_dwarf_regnames): New.
+
+ * objdump.c: Include "elf-bfd.h".
+ (dump_dwarf): Call init_dwarf_regnames on ELF input.
+
+ * readelf.c (guess_is_rela): Change argument to int.
+ (parse_args): Remove the undocumented upper case options for
+ -wX.
+ (process_file_header): Call init_dwarf_regnames.
+
+2008-01-25 DJ Delorie <dj@redhat.com>
+
+ * readelf.c (process_section_headers): Add m16c handler.
+ (is_16bit_abs_reloc): Recognize R_M32C_16.
+
+2008-01-25 Kai Tietz <kai.tietz@onevision.com>
+
+ * prdbg.c: Correct formatter style use.
+ * readelf.c: Likewise.
+ * strings.c: Likewise.
+
+2008-01-25 Nick Clifton <nickc@redhat.com>
+
+ * po/ru.po: Updated Russian translation.
+
+2008-01-17 H.J. Lu <hjl.tools@gmail.com>
+
+ * MAINTAINERS: Update my email address.
+
+2008-01-14 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (process_debug_info): Include the CU offset and corrupt
+ version value when reporting unrecognised DWARF version numbers.
+ (load_debug_info): Remember a failed attempt to load and parse the
+ .debug_info section and do not repeat such attempts.
+ (display_debug_lines): Check the return value from load_debug_info
+ and return whilst displaying a warning message if the load failed.
+ (display_debug_loc): Likewise.
+ (display_debug_ranges): Likewise.
+ (DEBUG_INFO_UNAVAILABLE): Value stored in num_debug_info_entries
+ when the .debug_info section could not be loaded/parsed.
+ (process_debug_info): Display the length of the compilation unit
+ in hex, so that it corresponds with the offsets that will follow.
+ Tell the user if the length was 32-bit or 64-bit.
+ If a DIE abbreviation could not be found, tell the user the offset
+ of the DIE.
+ (free_debug_memory): Do not attempt to free any entries in the
+ debug_information array if num_debug_info_entries is set to
+ DEBUG_INFO_UNAVAILABLE.
+
+2008-01-10 Andreas Schwab <schwab@suse.de>
+
+ * readelf.c (is_64bit_abs_reloc): Handle R_S390_64.
+
+2008-01-09 Jakub Zawadzki <darkjames@darkjames.ath.cx>
+
+ PR binutils/55326
+ * bucomm.c (list_supported_architectures): Free architecture list
+ after use.
+ * windres.c (set_endianess): Likewise.
+ * windmc.c (set_endianess): Likewise.
+
+2008-01-08 Kai Tietz <kai.tietz@onevision.com>
+
+ PR binutils/5529
+ * binutils/rclex.c: (yylex): Add ':', '_', '\\', and '/' to post
+ characters for name tokens.
+
+2008-01-04 Greg McGary <greg@mcgary.org>
+
+ * prdbg.c (print_vma): Print as long long, if host supports it.
+
+2008-01-03 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (read_and_display_attr_value): Prefix values that are
+ displayed in hexadecimal with 0x.
+ For the DW_AT_import attribute display the abbreviation number and
+ tag of the imported DIE.
+ (process_debug_info): Warn about lengths that reserved by the
+ DWARF3 specification.
+ Provide more information when corrupted DIEs are detected.
+ Warn if DIE corruption makes the sibling level negative.
+
+For older changes see ChangeLog-2007
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-2009 b/binutils-2.24/binutils/ChangeLog-2009
new file mode 100644
index 00000000..5a3d7870
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-2009
@@ -0,0 +1,1361 @@
+2009-12-31 Eirik Byrkjeflot Anonsen <eirik@opera.com>
+ Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (add_redefine_syms_file): Avoid symbol buffer
+ overrun.
+
+2009-12-21 Alan Modra <amodra@gmail.com>
+
+ * MAINTAINERS: Update my email address.
+
+2009-12-18 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * readelf.c (get_note_type): Handle NT_S390_HIGH_GPRS notes.
+
+2009-12-11 Nick Clifton <nickc@redhat.com>
+
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+ * ar.c: Fix shadowed variable warnings.
+ * bucomm.c: Likewise.
+ * coffgrok.c: Likewise.
+ * configure: Likewise.
+ * dlltool.c: Likewise.
+ * dllwrap.c: Likewise.
+ * dwarf.c: Likewise.
+ * ieee.c: Likewise.
+ * nlmconv.c: Likewise.
+ * nm.c: Likewise.
+ * objcopy.c: Likewise.
+ * objdump.c: Likewise.
+ * prdbg.c: Likewise.
+ * readelf.c: Likewise.
+ * resbin.c: Likewise.
+ * resrc.c: Likewise.
+ * resres.c: Likewise.
+ * srconv.c: Likewise.
+ * stabs.c: Likewise.
+ * sysdump.c: Likewise.
+ * sysinfo.y: Likewise.
+ * wrstabs.c: Likewise.
+
+2009-12-10 Tristan Gingold <gingold@adacore.com>
+
+ * addr2line.c (pretty_print): New variable.
+ (long_options): Add an entry for -p/--pretty-print.
+ (usage): Document -p/--pretty-print.
+ (translate_addresses): Handle pretty_print. Reindent.
+ (main): Handle option -p.
+ * doc/binutils.texi (addr2line): Document -p/--pretty-print.
+ * NEWS: Mention new feature.
+
+2009-12-09 Tristan Gingold <gingold@adacore.com>
+
+ * addr2line.c (translate_addresses): Display addresses
+ if option -a is used.
+ (with_addresses): New variable.
+ (long_options): Add option '-a'.
+ (usage): Add usage for option '-a'.
+ (main): Handle option '-a'.
+ * doc/binutils.texi (addr2line): Document option '-a'.
+ * NEWS: Mention new feature.
+
+2009-12-08 Cary Coutant <ccoutant@google.com>
+
+ * dwarf.c (dwarf_select_sections_by_names): Handle pubtypes correctly.
+ (debug_displays): Remove duplicate entry for debug_pubtypes.
+
+2009-12-03 David Daney <ddaney@caviumnetworks.com>
+ Adam Nemet <adambnemet@gmail.com>
+
+ * readelf.c (get_machine_flags): Handle E_MIPS_MACH_OCTEON2 case.
+
+2009-12-03 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/11045
+ * dwarf.c (do_debug_pubtypes): New variable.
+ (dwarf_select_sections_by_names): Handle .debug_pubtypes.
+ (dwarf_select_sections_by_letters): Add 't' for .debug_pubtype.
+ (dwarf_select_sections_all): Set do_debug_pubtypes.
+ (debug_displays): Add support for .debug_pubtypes.
+ * dwarf.h (do_debug_pubtypes): Export.
+ * objdump.c (usage): Add -wt or --dwarf=pubtypes.
+ * readelf.c (usage): Likewise.
+ (process_section_headers): Enable debug display if
+ do_debug_pubtypes is set.
+ * doc/binutils.texi: Document -wt/--dwarf=pubtypes option.
+
+2009-12-02 Jerker Bäck <jerker.back@gmail.com>
+
+ PR binutils/11017
+ * dlltool.c (PAGE_SIZE): Delete.
+ (PAGE_MASK): Provide default definition based on COFF_PAGE_SIZE.
+ Check for DLLTOOL_DEFAULT_MX86_64 and DLLTOOL_DEFAULT_I386.
+
+2009-12-01 Joseph Myers <joseph@codesourcery.com>
+
+ * readelf.c (get_machine_name, get_osabi_name): Handle more
+ allocated values.
+
+2009-11-30 Joseph Myers <joseph@codesourcery.com>
+
+ * configure: Regenerate.
+
+2009-11-20 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c: Include xc16x.h.
+ (dump_relocations): Handle relocations for the xc16x target.
+ (get_machine_name): Accept EM_C166 for xc16x targets.
+ (is_32bit_abs_reloc): Add support for xc16c 32-bit absolute reloc.
+ (is_16bit_abs_reloc): Add support for xc16c 16-bit absolute reloc.
+ (is_none_reloc): Add support for xc16c null reloc.
+
+2009-11-20 Ben Elliston <bje@au.ibm.com>
+
+ * Makefile.am (syslex.o): Use $(NO_WERROR) not -Wno-error.
+ (sysinfo.o): Likewise.
+ * Makefile.in: Regenerate.
+
+2009-11-19 Ben Elliston <bje@au.ibm.com>
+
+ * arlex.l: Enable noinput, nounput flex options.
+ * syslex.l: Likewise.
+
+2009-11-17 Paul Brook <paul@codesourcery.com>
+ Daniel Jacobowitz <dan@codesourcery.com>
+
+ * readelf.c (arm_attr_tag_CPU_arch): Add v7E-M.
+
+2009-11-16 Kai Tietz <kai.tietz@onevision.com>
+
+ * windmc.c (set_endianess): Use bfd_get_target_info.
+ * windres.c (set_endianess): Likewise.
+ (find_arch_match): Removed.
+
+2009-11-11 Nick Clifton <nickc@redhat.com>
+
+ * po/id.po: Updated Indonesian translation.
+
+2009-11-11 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * configure.in: Stop checking for fopen64 and stat64.
+ * strings.c (file_off, file_open, statbuf, file_stat): Remove.
+ (strings_file): Change file_off to file_ptr, file_open to fopen,
+ statbuf to struct stat and file_stat to stat.
+ (get_char): Change parameter type file_off * to file_ptr *.
+ (print_strings): Change parameter and variable `start' type file_off to
+ file_ptr.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+
+2009-11-11 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * configure.in: Call ACX_LARGEFILE. Stop calling AC_PLUGINS,
+ AC_SYS_LARGEFILE and checking the Solaris largefile exception.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2009-11-09 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * bucomm.c (get_file_size): Update comment for the error return value.
+
+2009-11-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * readelf.c (slurp_hppa_unwind_table): Don't relocate address twice.
+
+2009-11-05 Kai Tietz <kai.tietz@onevision.com>
+
+ * dllwrap.c (is_leading_underscore): New variable.
+ (cpu_type): New enum type.
+ (which_cpu): New variable.
+ (usage): Add new options --no-leading-underscore
+ and --leading-underscore.
+ (long_options): Likewise.
+ (OPTION_NO_LEADING_UNDERSCORE): New define.
+ (OPTION_LEADING_UNDERSCORE): Likewise.
+ (main): Initialize which_host, pass new options
+ to dlltool, do underscoring dependent on
+ is_leading_underscore, and do '@12' decoration
+ only for x86.
+
+2009-11-02 Paul Brook <paul@codesourcery.com>
+
+ * readelf.c (arm_attr_tag_VFP_arch): Add VFPv4 and VFPv4-D16.
+
+2009-10-28 Kai Tietz <kai.tietz@onevision.com>
+
+ * dlltool.c (leading_underscore): New local variable.
+ (asm_prefix): Interpret leading_underscore.
+ (xlate): Likewise.
+ (add_excludes): Use leading_underscore for making
+ symbol name.
+ (gen_exp_file): Use leading_underscore for internal
+ _imp_ symbols.
+ (usage): Add display of --no-leading-underscore and
+ --leading-underscore option.
+ (OPTION_NO_LEADING_UNDERSCORE): New.
+ (OPTION_LEADING_UNDERSCORE): New.
+ (long_options): Add --no-leading-underscore and
+ --leading-underscore option.
+ (main): Handle new options.
+ * doc/binutils.text: Add documentation of the options
+ --no-leading-underscore and --leading-underscore.
+
+2009-10-23 Kai Tietz <kai.tietz@onevision.com>
+
+ * deflex.l: Allow '<' and '>' in ID names.
+
+ * defparse.y (EQUAL): New token constant.
+ (opt_import_name): New rule for emptry or '==' ID.
+ (expline): Add opt_import_name as last line element.
+ (impline): Likewise.
+ * dlltool.c (ifunct): New member its_name.
+ (export): Likewise.
+ (append_import): Add its_name argument.
+ (defexports): Likewise.
+ (defimport): Likewise.
+ (scan_drectve_symbols): Adjust calls to def_exports.
+ (dump_def_info): Print new optinal import/export table
+ symbol name.
+ (generate_idata_ofile): Use its_name member.
+ (make_one_lib_file): Likewise.
+ (nfunc): Take its_name in account on sort.
+ * dlltool.h (def_exports): Add its_name as argument.
+ (def_import): Likewise.
+ * doc/binutils.texi: Add new def file syntax extension.
+ * deflex.l (EQUAL): Add rule for '=='.
+ * NEWS: Mention new feature.
+
+2009-10-23 Thomas Cougnard <thomas.cougnard@gmail.com>
+
+ * readelf.c (dynamic_info): Correct size of array.
+
+2009-10-21 Ben Elliston <bje@gnu.org>
+
+ * MAINTAINERS (BUILD SYSTEM, TESTSUITES): Remove myself.
+
+2009-10-19 Jerker Bäck <jerker.back@gmail.com>
+
+ PR binutils/10793
+ * prdbg.c (tg_end_struct_type): Warning fix.
+
+ PR binutils/10792
+ * dlltool.c (dll_name_list_append): Declare variable at start
+ of block.
+ (dll_name_list_count, dll_name-list_print): Likewise.
+
+2009-10-16 Doug Evans <dje@sebabeach.org>
+
+ * MAINTAINERS: Add myself as m32r maintainer.
+
+2009-10-16 Jerker Bäck <jerker.back@gmail.com>
+
+ PR 10764
+ * Makefile.am (sysinfo.o, syslex.o): Place source file after all
+ command line switches.
+ * Makefile.in: Regenerate.
+
+2009-10-16 Yann Droneaud <yann@droneaud.fr>
+
+ PR 10768
+ * dlltool.c (bfd_get_errmsg): New macro.
+ (scan_obj_file): Use it.
+ (make_one_lib_file): Use it.
+ (make_head): Use it.
+ (make_delay_head): Use it.
+ (make_tail): Use it.
+ (gen_lib_file): Use it.
+ (identify_dll_for_implib): Use it.
+ (identify_search_archive): Use it.
+
+2009-10-16 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (usage): Add mention of --debug-dump=frames-interp.
+ Wrap output to 80 columns.
+ * objdump.c (usage): Likewise.
+ * doc/binutils.texi (readelf): Add note about =frames-interp.
+
+2009-10-01 Alan Modra <amodra@bigpond.net.au>
+
+ * addr2line.c (slurp_symtab): Don't use bfd_read_minisymbols.
+
+2009-09-29 Nick Clifton <nickc@redhat.com>
+
+ * doc/binutils.texi (c++filt): Remove spurious description of
+ nonexistent --java command line switch for cxxfilt.
+
+2009-09-29 DJ Delorie <dj@redhat.com>
+
+ * readelf.c: Add support for RX target.
+ * MAINTAINERS: Add DJ and NickC as maintainers for RX.
+
+2009-09-28 Alan Modra <amodra@bigpond.net.au>
+
+ * configure.in: Don't invoke configure.tgt on $enable_targets.
+ * configure: Regenerate.
+
+2009-09-28 Nick Clifton <nickc@redhat.com>
+
+ PR 10478
+ * readelf.c (get_elf_section_flags): Allow SHN_BEFORE and
+ SHN_AFTER section link values in x86 binaries.
+ (process_section_headers): Likewise.
+
+2009-09-25 Dmitry Gorbachev <d.g.gorbachev@gmail.com>
+
+ PR 10656
+ * readelf.c: Remove duplicate declaration of variable do_wide.
+ * dwarf.h: Add export of do_wide.
+
+2009-09-24 Cary Coutant <ccoutant@google.com>
+
+ * dwarf.c (get_TAG_name): Add missing DWARF-3 and new DWARF-4 tags.
+ (get_FORM_name): Add new DWARF-4 forms.
+ (read_and_display_attr_value): Add DW_FORM_ref_sig8, DW_LANG_Python.
+ (get_AT_name): Add new DWARF-4 and GNU-specific attributes.
+ (process_debug_info): Add do_types parameter; change all callers.
+ Add support for .debug_types sections.
+ (display_debug_types): New function.
+ (debug_displays): Add .debug_types section.
+ * readelf.c (process_section_headers): Add .debug_types section.
+ (display_debug_section): Simplify call to streq.
+
+2009-09-25 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (print_dynamic_symbol): Format entries as for
+ normal symbol table.
+ (process_symbol_table): Use -7s format string for visibility.
+
+2009-09-22 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * objdump.c (disassemble_section): Use bfd_get_arch_size
+ instead of assuming that the address size is 32 bits.
+
+2009-09-21 Alan Modra <amodra@bigpond.net.au>
+
+ * readelf.c (get_ppc_dynamic_type): Add TLSOPT.
+ (get_ppc64_dynamic_type): Likewise.
+
+2009-09-18 Nick Clifton <nickc@redhat.com>
+
+ * po/es.po: Updated Spanish translation.
+ * po/vi.po: Updated Vietnamese translation.
+
+2009-09-11 Paul Pluzhnikov <ppluzhnikov@google.com>
+
+ * readelf.c (process_version_sections, process_symbol_table):
+ Use symbolic constants.
+
+2009-09-11 Nick Clifton <nickc@redhat.com>
+
+ * po/binutils.pot: Updated by the Translation project.
+
+2009-09-11 Philippe De Muyter <phdm@macqel.be>
+
+ * obcopy.c (copy_object): New parameter `input_arch', architecture
+ of input file, if not specified in input file itself; all callers
+ updated; `binary_architecture' hack removed.
+ (copy_archive, copy_file): New parameter `input_arch', for
+ `copy_object' usage.
+ (copy_main): Accept `-B' (`--binary-architecture') option also
+ for any arch-less input ifile format, not only `binary'; remove
+ bfd_external_binary_architecture hack; instead, add `input_arch'
+ to calls to `copy_file'.
+ * windres.c, windmc.c : Obsolete and useless external references
+ to `bfd_external_binary_architecture' or `bfd_external_machine'
+ removed.
+ * doc/binutils.texi: Mention that -B parameter can be used for any
+ input file type which does not have its own architecture.
+
+2009-09-10 Martin Thuresson <martin@mtme.org>
+
+ Update sources to compile cleanly with -Wc++-compat:
+ * addr2line.c (slurp_symtab): Fix casts. Introduce variable
+ minisyms to avoid aliasing varning.
+ * ar.c: Add casts.
+ (normalize): Use name del instead of delete.
+ (display_target_list,display_info_table): Change loop counter
+ variable a to int.
+ * bucomm.c: Add casts.
+ * debug.c: Update function to use new names.
+ (struct debug_baseclass): Rename member from virtual to
+ is_virtual.
+ (struct debug_type_s, struct debug_field_s, struct
+ debug_baseclass_s, struct debug_method_s, struct
+ debug_method_variant_s, struct debug_type_s): Rename struct from
+ avoid name collision.
+ * debug.h: Use new struct names.
+ * dwarf.c: Add casts.
+ (free_debug_memory): Change loop counter variable a to int.
+ * ieee.c: Add casts.
+ (enum ieee_var_kind): Move to top level.
+ (ieee_class_baseclass): Rename parameter virtual to is_virtual.
+ (ieee_class_method_var): Rename variable virtual to is_virtual.
+ * nm.c: Add casts.
+ * objcopy.c: Add casts.
+ (copy_archive): Rename variable delete to del.
+ * objdump.c: Add casts.
+ (dump_dwarf_section): Change loop counter variable i to int.
+ * prdbg.c: Add casts.
+ (pr_class_baseclass,tg_class_baseclass): Rename parameters virtual
+ to is_virtual.
+ * readelf.c: Add casts.
+ (struct ia64_unw_table_entry,struct hppa_unw_table_entry): Move to
+ top level.
+ * size.c: Add casts.
+ * stabs.c (parse_stab_type, parse_stab_range_type,
+ (parse_stab_cpp_abbrev): Rename parameter from typename to
+ type_name.
+ (parse_stab_baseclasses): Rename variable virtual to is_virtual.
+ * strings.c: Add casts.
+ * wrstabs.c (stab_class_baseclass): Rename parameter virtual to
+ is_virtual.
+
+2009-09-09 Nick Clifton <nickc@redhat.com>
+
+ PR 10478:
+ readelf.c (get_elf_section_flags): Add support for SHF_EXCLUDE and
+ SHF_ORDERED.
+ (process_section_headers): Warn about out of range sh_link
+ values. When displaying detailed section header information
+ annote the SHN_BEFORE and SHN_AFTER values.
+
+2009-09-08 Alan Modra <amodra@bigpond.net.au>
+
+ * dwarf.c (byte_get_little_endian): Handle size of 3.
+ (byte_get_big_endian): Likewise.
+ * readelf.c (byte_put_little_endian): Likewise.
+ (byte_put_big_endian): Likewise.
+ (is_24bit_abs_reloc): New function.
+ (is_none_reloc): Formatting.
+ (apply_relocations): Use is_24bit_abs_reloc. Handle pj and xtensa
+ reloc peculiarity.
+
+2009-09-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * readelf.c (is_none_reloc <EM_XTENSA_OLD>, is_none_reloc <EM_XTENSA>):
+ New.
+
+2009-09-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwarf.c (process_debug_info): Support section padding abbrev codes.
+
+2009-09-07 Tristan Gingold <gingold@adacore.com>
+
+ * po/binutils.pot: Regenerate.
+
+2009-09-05 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * Makefile.am (sysdump.o): Depend on sysroff.c.
+ * Makefile.in: Regenerate.
+
+2009-09-05 Martin Thuresson <martin@mtme.org>
+
+ * ieee.c (ieee_read_cxx_misc, ieee_read_cxx_class,
+ ieee_read_reference): Rename variables named class to cxxclass.
+
+2009-09-04 Tristan Gingold <gingold@adacore.com>
+
+ * BRANCHES: Add binutils-2_20-branch.
+
+2009-09-04 Tristan Gingold <gingold@adacore.com>
+
+ * NEWS: Add marker for 2.20.
+
+2009-09-04 Timo Kreuzer <timo.kreuzer@web.de>
+
+ * dlltool.c (delayimp_name): Add new global variable
+ (usage, long_options, main): Add new option "-y" / "--output-delaylib"
+ (struct mac): Add fields how_dljtab_size, how_dljtab_roff1,
+ how_dljtab_roff2, how_dljtab, trampoline.
+ (i386_dljtab): Add binary stub for x86 delay import.
+ (i386_trampoline): Add text assembly stub for x86 delay import.
+ (mtable): Add delay import data for M386 and MX86 only.
+ (make_delay_head): New function.
+ (make_one_lib_file): New arg delay creates delay-load import stub.
+ (gen_lib_file): New arg delay likewise.
+ (HOW_JTAB, HOW_JTAB_SIZE, HOW_JTAB_ROFF): New arg delay likewise.
+ (HOW_JTAB_ROFF2, HOW_JTAB_ROFF3): New macros for delay import.
+ (make_tail): Convert hard TABS embedded in strings to "\t" escapes.
+ * NEWS: Mention new feature. Also fix whitespace.
+ * doc/binutils.texi: Updated dlltool documentation.
+
+2009-09-02 Tristan Gingold <gingold@adacore.com>
+
+ * configure.com: Do not copy makefile.vms-in to makefile.vms
+ * makefile.vms-in: Renamed to...
+ * makefile.vms: ... this usual name as it is not processed anymore.
+ Remove WRITE_DEBUG_OBJS (unused) and reorder object files for
+ objdump.exe.
+
+2009-09-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * Makefile.am (arparse.o, arlex.o, sysroff.o, defparse.o)
+ (deflex.o, nlmheaders.o, rcparse.o, mcparse.o): Supply correct
+ source file name for generated files which may be in $(srcdir).
+ * Makefile.in: Regenerate.
+
+2009-09-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ * version.c (print_version): Change to "Copyright 2009".
+
+2009-09-01 Tristan Gingold <gingold@adacore.com>
+
+ * makefile.vms-in: Remove unused VERSION variable. Remove unused
+ dependencies.
+ * configure.com: Ported to Itanium VMS. Create build.com DCL script.
+
+2009-08-29 Martin Thuresson <martin@mtme.org>
+
+ * nlmconv.c (main): Rename variable new to new_name.
+
+2009-08-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.am (sysinfo$(EXEEXT_FOR_BUILD)): Replace
+ CFLAGS/LDFLAGS with CFLAGS_FOR_BUILD/LDFLAGS_FOR_BUILD.
+ (syslex.o): Likewise.
+ (sysinfo.o): Likewise.
+ (bin2c$(EXEEXT_FOR_BUILD)): Likewise.
+ * Makefile.in: Regenerated.
+
+2009-08-27 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ * doc/binutils.texi (--only-keep-debug): Relocate stray para here ...
+ (--subsystem): ... from here.
+
+2009-08-24 Cary Coutant <ccoutant@google.com>
+
+ * objdump.c (find_symbol_for_address): Avoid costly call to
+ bfd_octets_per_byte.
+
+2009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * Makefile.am (am__skiplex, am__skipyacc): New.
+ * Makefile.in: Regenerate.
+
+2009-08-23 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * Makefile.am (syslex.o): Depend on sysinfo.h config.h.
+ * Makefile.in: Regenerate.
+
+2009-08-22 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * Makefile.am (AM_CPPFLAGS): Renamed from ...
+ (INCLUDES): ... this.
+ (bin2c$(EXEEXT_FOR_BUILD): Adjust rule.
+ (installcheck-local): Renamed from ...
+ (installcheck): ... this.
+ * Makefile.in: Regenerate.
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Remove cygnus, add no-dist and
+ foreign.
+ (MKDEP, CLEANFILES): Remove now-unneeded variables.
+ (DEP, DEP1, dep.sed, dep, dep-in, dep-am): Remove.
+ (mkdep section): Remove.
+ (BUILT_SOURCES): New variable, list $(GENERATED_HFILES).
+ (EXTRA_ar_SOURCES): New, list $(CFILES).
+ (syslex.o): Depend on syslex.c.
+ (sysinfo.o): Depend on sysinfo.c.
+ (arparse.h, defparse.h, nlmheaders.h rcparse.h mcparse.h):
+ Remove dependencies, now tracked by automake.
+ (srconv.o): Depend on sysroff.c.
+ (objdump.o, arparse.o, arlex.o, sysroff.o, defparse.o, deflex.o)
+ (nlmheader.o, rcparse.o, mcparse.o, rclex.o, mclex.o, dlltool.o)
+ (rescoff.o, nlmconv.o): Rewrite using automake-style dependency
+ tracking rules; only list the dependency upon the primary source
+ file, but no included headers.
+ * Makefile.in: Regenerate.
+
+ * Makefile.am (install-pdf, install-pdf-recursive, install-html)
+ (install-html-recursive): Remove.
+ * Makefile.in: Regenerate.
+ * doc/Makefile.am (pdf__strip_dir, install-pdf, install-pdf-am)
+ (html__strip_dir, install-html, install-html-am): Remove.
+ * doc/Makefile.in: Regenerate.
+
+ * Makefile.in: Regenerate.
+ * aclocal.m4: Likewise.
+ * config.in: Likewise.
+ * configure: Likewise.
+ * doc/Makefile.in: Likewise.
+
+2009-08-17 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (is_32bit_abs_reloc): Treat R_PARISC_SECREL32 as a
+ 32-bit absolute reloc for the purposes of processing debug
+ sections.
+
+2009-08-10 Daniel Gutson <dgutson@codesourcery.com>
+
+ * readelf.c (get_arm_section_type_name): Added support for
+ new sections headers.
+
+2009-08-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/10364
+ * objcopy.c (strip_main): Check return from smart_rename.
+ (copy_main): Likewise.
+
+2009-07-27 Nick Clifton <nickc@redhat.com>
+
+ PR 10413
+ * objdump.c (dump_section_header): Skip sections that we are
+ ignoring.
+
+2009-07-25 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (guess_is_rela): Handle EM_L1OM.
+ (dump_relocations): Likewise.
+ (get_machine_name): Likewise.
+ (get_section_type_name): Likewise.
+ (get_elf_section_flags): Likewise.
+ (get_symbol_index_type): Likewise.
+ (is_32bit_abs_reloc): Likewise.
+ (is_32bit_pcrel_reloc): Likewise.
+ (is_64bit_abs_reloc): Likewise.
+ (is_64bit_pcrel_reloc): Likewise.
+ (is_none_reloc): Likewise.
+
+2009-07-23 Ulrich Drepper <drepper@redhat.com>
+
+ * readelf.c (get_symbol_binding): For Linux targeted files return
+ UNIQUE for symbols with the STB_GNU_UNIQUE binding.
+ * doc/binutils.texi: Document the meaning of the 'u' symbol
+ binding in the output of nm and objdump --syms.
+
+2009-07-20 H.J. Lu <hongjiu.lu@intel.com>
+
+ * NEWS: Mention --insn-width.
+
+ * objdump.c (insn_width): New.
+ (usage): Display --insn-width.
+ (option_values): Add OPTION_INSN_WIDTH.
+ (long_options): Add --insn-width.
+ (disassemble_bytes): Handle insn_width.
+ (main): Handle OPTION_INSN_WIDTH.
+
+ * doc/binutils.texi: Document --insn-width.
+
+2009-07-17 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (display_debug_lines): If do_debug_lines has not been
+ set then default to displaying raw .debug_line section contents.
+
+2009-07-14 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Support unordered .debug_info references to .debug_ranges.
+ * dwarf.c (struct range_entry, range_entry_compar): New.
+ (display_debug_ranges): Remove variables last_offset, first, j,
+ seen_first_offset, use_debug_info and next. New variables
+ range_entries and range_entry_fill. Create the sorted copy
+ range_entries. Remove the FIXME error on detected unordered references.
+ * dwarf.h (debug_info <range_lists>): New comment.
+
+2009-07-14 Nick Clifton <nickc@redhat.com>
+
+ PR 10380
+ * README: Document use of LDFLAGS="--static".
+
+2009-07-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerated.
+
+2009-07-10 Tom Tromey <tromey@redhat.com>
+
+ * Makefile.am (dwarf.o): Refer to dwarf2.h, not elf/dwarf2.h.
+ * Makefile.in: Rebuild.
+ * dwarf.c: Include dwarf2.h, not elf/dwarf2.h.
+
+2009-07-06 Tristan Gingold <gingold@adacore.com>
+
+ * objdump.c (dump_dwarf_section): Handle .eh_frame like other dwarf
+ sections.
+ * dwarf.h (struct dwarf_section_display): Remove eh_frame field.
+ * dwarf.c (debug_displays): Adjust for removed field.
+
+2009-07-03 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (decode_location_expression): Handle DW_OP_stack_value
+ and DW_OP_implicit_value.
+
+2009-07-01 Nick Clifton <nickc@redhat.com>
+
+ PR 6714
+ * rclex.c (handle_quotes): Do not complain about whitespace
+ separating quoted strings.
+ (rclex_string): Ignore whitespace when looking for a new opening
+ quote following a closing quote.
+
+2009-06-27 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/10321
+ * bucomm.c (get_file_size): Return -1 on error.
+
+ * objcopy.c (copy_file): Report empty file.
+
+2009-06-23 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (display_debug_lines_raw): Include the name of the
+ section in warning message.
+ (struct debug_display): Enable reloc processing for .debug_line
+ and .debug_ranges sections.
+
+ * readelf.c: Add --relocated-dump command line option to dump the
+ relocated contents of a specified section.
+ (request_dump): New function.
+ (parse_args): Use it.
+ (dump_section_as_bytes): Add parameter to indicate whether the
+ contents should be relocated.
+ (target_specific_reloc_handling): Add code for a R_MN10300_16
+ reloc found after a R_MN10300_SYM_DIFF reloc.
+ (debug_apply_relocations): Rename to apply_relocations.
+ (get_section_contents): New function. Replaces common code found
+ in dump_section_as_strings and dump_section_as_bytes.
+ * doc/binutils.texi: Document new command line option.
+ * NEWS: Mention the new feature.
+
+2009-06-22 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (target_specific_reloc_handling): New function:
+ Processes relocs in a target specific manner.
+ (debug_apply_relocations): Use the new function.
+ * dwarf.c (display_debug_loc): End the dump with a blank line.
+ (struct debug_display): Enable reloc processing for .debug_aranges
+ and .debug_loc sections.
+
+2009-06-19 Nick Clifton <nickc@redhat.com>
+
+ * ar.c (usage): Do not use #ifdef inside _("...).
+ * nm.c (usage): Likewise.
+
+2009-06-18 Nick Clifton <nickc@redhat.com>
+
+ PR 10288
+ * objdump.c (disassemble_bytes): Set the
+ USER_SPECIFIED_MACHINE_TYPE flag in the disassemble_info structure
+ if the user has invoked the -m switch.
+ * doc/binutils.texi: Document the additional behaviour of
+ objdump's -m switch for ARM targets.
+
+2009-06-18 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ * configure.in: Merge cegcc and mingw32ce target name changes from
+ CeGCC project.
+
+2007-12-25 Pedro Alves <pedro_alves@portugalmail.pt>
+
+ * configure.in: Add arm*-*-cegcc* and arm*-*-mingw32ce* targets.
+ * configure: Regenerate.
+
+2009-06-15 Nick Clifton <nickc@redhat.com>
+
+ PR 10263
+ * objdump.c (disassemble_bytes): Set the DISASSEMBLE_DATA bit in
+ the flags field of the disassemble_info structure if the -D switch
+ is in operation.
+
+2009-06-12 Homer Xing <homer.xing@yahoo.com>
+
+ * NEWS: Mention new feature added to gprof.
+
+2009-06-12 John Reiser <jreiser@BitWagon.com>
+
+ * readelf.c (process_symbol_table): Set gnubuckets to NULL after
+ freeing it and before returning.
+
+2009-06-12 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (process_symbol_table): Don't return early if
+ .hash/.gnu.hash is empty/unusable and not -D.
+
+2009-06-09 Tom Bramer <tjb@postpro.net>
+
+ PR 10165
+ * winduni.c (wind_MultiByteToWideChar): Do not pass MB_PRECOMPOSED
+ to MultiByteToWideChar when using the CP_UTF8 or CO_UTF7 types.
+
+2009-06-04 Alan Modra <amodra@bigpond.net.au>
+
+ * strings.c (main): Delay parsing of decimal digits.
+
+2009-06-04 Alan Modra <amodra@bigpond.net.au>
+
+ * dep-in.sed: Don't use \n in replacement part of s command.
+ * Makefile.am (DEP1): LC_ALL for uniq.
+ Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2009-06-03 Tristan Gingold <gingold@adacore.com>
+
+ * MAINTAINERS: Add myself as Mach-O maintainer.
+
+2009-06-01 Alan Modra <amodra@bigpond.net.au>
+
+ PR 10199
+ * doc/binutils.texi (nm): Correct -S description.
+
+2009-05-28 Nick Clifton <nickc@redhat.com>
+
+ * po/da.po: Updated Danish translation.
+
+2009-05-28 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (display_debug_section): Do not display debug sections
+ with the NOBITS section type.
+
+2009-05-27 Rafael Avila de Espindola <espindola@google.com>
+
+ * aclocal.m4: Include ../config/plugins.m4.
+ * configure.in: Use AC_PLUGINS.
+ * configure: Regenerate.
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+
+2009-05-27 Rafael Avila de Espindola <espindola@google.com>
+
+ * ar.c (main): Call bfd_plugin_set_program_name.
+ * nm.c (main): Call bfd_plugin_set_program_name.
+
+2009-05-27 Nathan Sidwell <nathan@codesourcery.com>
+
+ * sysdump.c (tab): Use puts rather than two printfs.
+
+2009-05-26 Nick Clifton <nickc@redhat.com>
+
+ * po/id.po: Updated Indonesian translation.
+ * po/binutils.pot: Updated template file.
+
+2009-05-26 Rafael Avila de Espindola <espindola@google.com>
+
+ * ar.c: Include plugin.h.
+ (main): Handle the --plugin option.
+ * nm.c: Include plugin.h.
+ (OPTION_PLUGIN): New.
+ (long_options): Add plugin.
+ (main): Handle OPTION_PLUGIN.
+ * NEWS: Mention the new feature.
+ * doc/binutils: Documement the new command line options.
+ * configure.in: Check for --enable-plugins.
+ * configure: Regenerate.
+
+2009-05-26 Alan Modra <amodra@bigpond.net.au>
+
+ * dep-in.sed: Output one filename per line with all lines having
+ continuation backslash. Prefix first line with "A", following
+ lines with "B".
+ * Makefile.am (DEP): Don't use dep.sed here.
+ (DEP1): Run $MKDEP on single files, use dep.sed here on dependencies,
+ sort and uniq.
+ * Makefile.in: Regenerate.
+
+2009-05-25 Tristan Gingold <gingold@adacore.com>
+
+ * makefile.vms-in: Fix CFLAGS, add addr2line.exe target.
+
+ * configure.com: Fix it: handle alloca and define TARGET in config.h.
+
+2009-05-22 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2009-05-12 Alan Modra <amodra@bigpond.net.au>
+
+ * objcopy.c (set_long_section_mode): Check input_bfd is coff
+ before accessing coff specific fields of bfd.
+
+2009-05-09 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ * MAINTAINERS: Add myself as PE/COFF co-maintainer.
+
+2009-05-08 Kai Tietz <kai.tietz@onevision.com>
+
+ * winduni.c (iconv_onechar): Only define when HAVE_ICONV
+ is defined, but not when __CYGWIN__ or _WIN32 are defined.
+ See wind_iconv_cp for call logic of this local funtion.
+
+2009-05-05 Guillaume Duhamel <guillaume.duhamel@gmail.com>
+
+ PR 10109
+ * winduni.c: Replace test of HAVE_ICONV_H with a test of
+ HAVE_ICONV.
+ (iconv_onechar): Use ICONV_CONST instead of "const".
+ (wind_MultiByteToWideChar): Initialise local strings.
+
+2009-04-30 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (dump_relocations): Display a relocation against an
+ ifunc symbol as if it were a function invocation.
+ (get_symbol_type): Handle STT_GNU_IFUNC.
+
+2009-04-29 Anthony Green <green@moxielogic.com>
+
+ * NEWS: Tweak verilog support description.
+
+2009-04-29 Alan Modra <amodra@bigpond.net.au>
+ Denis Scherbakov <denis_scherbakov@yahoo.com>
+
+ * readelf.c (slurp_ia64_unwind_table): Correct 64-bit unwind table
+ read, and merge with 32-bit case.
+
+2009-04-27 Anthony Green <green@moxielogic.com>
+
+ * NEWS: Mention verilog support added to bfd.
+
+2009-04-27 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objcopy.c (copy_object): Copy pe_opthdr before changing PE
+ parameters.
+
+2009-04-24 Cary Coutant <ccoutant@google.com>
+
+ * dwarf.c (process_extended_line_op): Add DW_LNE_set_discriminator.
+ Add missing newlines to HP extensions.
+
+2009-04-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objcopy.c (set_pe_subsystem): Replace efi-rom with sal-rtd.
+ * doc/binutils.texi: Likewise.
+
+2009-04-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/10074
+ * objcopy.c: Include coff/i386.h and coff/pe.h.
+ (pe_file_alignment): New.
+ (pe_heap_commit): Likewise.
+ (pe_heap_reserve): Likewise.
+ (pe_image_base): Likewise.
+ (pe_section_alignment): Likewise.
+ (pe_stack_commit): Likewise.
+ (pe_stack_reserve): Likewise.
+ (pe_subsystem): Likewise.
+ (pe_major_subsystem_version): Likewise.
+ (pe_minor_subsystem_version): Likewise.
+ (set_pe_subsystem): Likewise.
+ (convert_efi_target): Likewise.
+ (command_line_switch): Add OPTION_FILE_ALIGNMENT,
+ OPTION_HEAP, OPTION_IMAGE_BASE, OPTION_SECTION_ALIGNMENT,
+ OPTION_STACK and OPTION_SUBSYSTEM.
+ (copy_options): Likewise.
+ (copy_usage): Add --file-alignment, --heap, --image-base,
+ --section-alignment, --stack and --subsystem.
+ (copy_object): Set up PE parameters.
+ (copy_main): Process Add OPTION_FILE_ALIGNMENT,
+ OPTION_HEAP, OPTION_IMAGE_BASE, OPTION_SECTION_ALIGNMENT,
+ OPTION_STACK and OPTION_SUBSYSTEM. Convert EFI target to
+ PEI target.
+
+ * NEWS: Mention --file-alignment, --heap, --image-base,
+ --section-alignment, --stack and --subsystem command line
+ options for objcopy.
+
+ * doc/binutils.texi: Document --file-alignment, --heap,
+ --image-base, --section-alignment, --stack and --subsystem
+ command line options for objcopy.
+
+2009-04-15 Anthony Green <green@moxielogic.com>
+
+ * MAINTAINERS: Add myself as Moxie port maintainer.
+
+2009-04-14 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ * objcopy.c (enum long_section_name_handling): New enum type.
+ (enum command_line_switch): Add OPTION_LONG_SECTION_NAMES.
+ (copy_options[]): Add entry for --long-section-names option.
+ (copy_usage): Document it.
+ (set_long_section_mode): New subroutine.
+ (copy_file): Call it.
+ (copy_main): Accept OPTION_LONG_SECTION_NAMES and parse arg.
+ * doc/binutils.texi: Update objcopy documentation with details
+ of new option.
+
+2009-04-01 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ * dlltool.c (set_dll_name_from_def): Accept new second arg that
+ indicates if we are building DLL or EXE, and use it to add a
+ default suffix to the output filename when none is already present.
+ (def_name): Indicate we are building an EXE when calling it.
+ (def_library): Indicate we are building a DLL when calling it.
+
+2009-04-01 Jari Aalto <jari.aalto@cante.net>
+
+ PR 9972
+ * doc/binutils.texi (strings): Document the -V alias for the
+ --version option.
+ * strings.c (usage): Likewise.
+
+2009-03-31 Nick Clifton <nickc@redhat.com>
+
+ PR 9992
+ * configure.in: Import Solaris specific largefile test from
+ bfd/configure.in.
+ * configure: Regenerate.
+
+2009-03-30 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * MAINTAINERS: Add self.
+
+2009-03-27 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (display_debug_ranges): Add the base address to the
+ displayed values for 'Begin' and 'End'.
+
+2009-03-25 Ryan Mansfield <rmansfield@qnx.com>
+
+ * readelf.c (process_file_header): Don't report a corrupt string
+ table index if it is zero.
+
+2009-03-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ * dwarf.c (dwarf_regnames): Moved before frame_need_space.
+ (dwarf_regnames_count): Likewise.
+ (frame_need_space): Return int.
+ (display_debug_frames): Check invalid registers.
+
+2009-03-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (debug_apply_relocations): Check relocations
+ against STT_SECTION symbol.
+
+2009-03-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (debug_apply_relocations): Allow relocations
+ against function symbols.
+
+2009-03-18 Alan Modra <amodra@bigpond.net.au>
+
+ * sysdep.h: Include alloca-conf.h instead of config.h and remove
+ existing #if's handling alloca.
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2009-03-14 Richard Sandiford <r.sandiford@uk.ibm.com>
+
+ * configure.tgt: Extend AIX 5 behavior to AIX 6 and above.
+ * configure.in: Likewise.
+ * configure: Regenerate.
+
+2009-03-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/9945
+ * objcopy.c (copy_object): Clear HAS_RELOC when stripping all.
+
+2009-03-11 Chris Demetriou <cgd@google.com>
+
+ * ar.c (deterministic): New global variable.
+ (main): Recognize new 'D' option, which enables 'deterministic mode'.
+ (usage): Document new 'D' option.
+ (write_archive): Set BFD_DETERMINISTIC_OUTPUT in output archive's
+ flags if deterministic mode was requested.
+ * doc/binutils.texi (ar): Document deterministic mode ('D' option).
+
+2009-03-09 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/9933
+ * objcopy.c (filter_symbols): Properly handle common symbols
+ in relocatable file.
+
+2009-03-06 Nick Clifton <nickc@redhat.com>
+
+ * po/es.po: Updated Spanish translation.
+
+2009-03-05 Nick Clifton <nickc@redhat.com>
+
+ * objdump.c (disassemble_section): If the computed next offset is
+ not beyond the current offset then just continue to the end.
+
+2009-03-04 Tristan Gingold <gingold@adacore.com>
+
+ * MAINTAINERS: Add myself as VMS maintainer.
+
+2009-03-03 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c: Update formatting.
+
+2009-03-03 Alan Modra <amodra@bigpond.net.au>
+
+ * Makefile.am: Run "make dep-am".
+ * Makefile.in: Regenerate.
+
+2009-03-03 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (disassemble_section): Mask address before sign extending.
+
+2009-03-02 Sebastian Biallas <sb@biallas.net>
+
+ * ieee.c (parse_ieee_ty): Add support for undocumented 'v' type.
+ (parse_ieee_bb): Set the filename if it has not already been
+ discovered.
+
+2009-03-02 Cary Coutant <ccoutant@google.com>
+
+ * readelf.c (adjust_relative_path): New function.
+ (struct archive_info): New type.
+ (setup_archive): New function.
+ (release_archive): New function.
+ (setup_nested_archive): New function.
+ (get_archive_member_name): New function.
+ (get_archive_member_name_at): New function.
+ (make_qualified_name): New function.
+ (process_archive): Factor out code for reading archive index and
+ long filename table to setup_archive. Add support for thin archives.
+
+2009-03-02 Nick Clifton <nickc@redhat.com>
+
+ * po/sk.po: Updated Slovak translation.
+
+2009-03-01 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure: Regenerate.
+
+2009-02-23 Cary Coutant <ccoutant@google.com>
+
+ * objdump.c (load_specific_debug_section): New function, from
+ load_debug_section.
+ (load_debug_section): Use load_specific_debug_section.
+ (dump_dwarf_section): Likewise.
+
+2009-02-23 Cary Coutant <ccoutant@google.com>
+
+ * readelf.c (parse_args): Select all sections explicitly for -w.
+
+2009-02-09 Kai Tietz <kai.tietz@onevision.com>
+
+ * windres.c (set_endianess): Copy name without leading '-'.
+
+2009-02-09 Tristan Gingold <gingold@adacore.com>
+
+ * NEWS: Mention feature match between objdump and readelf for dumping
+ dwarf info.
+
+ * doc/binutils.texi (objdump): Document -W/--dwarf improvments to
+ objdump.
+
+ * objdump.c (usage): Update documentation for -W/--dwarf.
+ (enum option_values): Add OPTION_DWARF.
+ (long_options): --dwarf can accept arguments.
+ (dump_dwarf_section): Also check enabled field.
+ (main): Option -W can accept arguments, code moved to
+ dwarf.c and call dwarf_select_sections_all instead.
+ * readelf.c (process_section_headers): Remove do_debug_lines_decoded.
+ (parse_args): Move code to...
+ * dwarf.c (dwarf_select_sections_by_letters,
+ dwarf_select_sections_by_names): : ...here (new functions).
+ (do_debug_lines_decoded): Remove and replaced by ...
+ (FLAG_DEBUG_LINES_RAW, FLAG_DEBUG_LINES_DECODED): ... new macros.
+ (display_debug_lines): Adjust for previous change.
+ (dwarf_select_sections_all): New function.
+ (debug_displays): Add initializer for enabled field.
+ * dwarf.h (do_debug_lines_decoded): Remove.
+ Add prototypes for the new functions.
+ (struct dwarf_section_display): Add enabled field.
+
+2009-02-06 Nick Clifton <nickc@redhat.com>
+
+ * po/vi.po: Updated Vietnamese translation.
+
+2009-02-03 Sandip Matte <sandip@rmicorp.com>
+
+ * readelf.c (get_machine_flags): Handle E_MIPS_MACH_XLR.
+
+2009-02-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ * NEWS: Move --as-needed change to ...
+ * ../ld/NEWS: Here.
+
+2009-02-03 Carlos O'Donell <carlos@codesourcery.com>
+
+ * configure.in: AC_SUBST pdfdir.
+ * Makefile.am: Add install-pdf, install-pdf-am,
+ and install-pdf-recursive targets.
+ * doc/Makefile.am: Define pdf__strip_dir. Add
+ install-pdf and install-pdf-am targets.
+ * po/Make-in: Add install-pdf target.
+ * configure: Regenerate.
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+
+2009-02-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/9784
+ * NEWS: Mention --prefix=PREFIX and --prefix-strip=LEVEL.
+
+ * doc/binutils.texi: Document --prefix=PREFIX and
+ --prefix-strip=LEVEL.
+
+ * objdump.c: Include "filenames.h".
+ (prefix): New.
+ (prefix_strip): Likewise.
+ (prefix_length): Likewise.
+ (usage): Add --prefix=PREFIX and --prefix-strip=LEVEL.
+ (option_values): Add OPTION_PREFIX and OPTION_PREFIX_STRIP.
+ (long_options): Likewise.
+ (show_line): Handle prefix and prefix_strip.
+ (main): Handle OPTION_PREFIX and OPTION_PREFIX_STRIP.
+
+ * readelf.c (PATH_MAX): Moved to ...
+ * sysdep.h: Here.
+
+2009-01-31 Alan Modra <amodra@bigpond.net.au>
+
+ * NEWS: Mention --as-needed change.
+
+2009-01-29 Alan Modra <amodra@bigpond.net.au>
+
+ PR 9798
+ * bucomm.c (bfd_nonfatal_message): Use bfd_get_archive_filename.
+ (bfd_get_archive_filename): Constify param.
+ * bucomm.h (bfd_get_archive_filename): Update prototype.
+ * objcopy.c (RETURN_NONFATAL): Delete.
+ (copy_unknown_object): Don't call bfd_get_archive_filename for
+ bfd_nonfatal_message filename, instead just pass bfd.
+ (copy_object): Likewise.
+ (copy_archive, copy_file): Likewise. Expand RETURN_NONFATAL. On
+ bfd_close errors, do not pass the bfd to bfd_nonfatal_message.
+ (setup_bfd_headers): Fix error message.
+
+2009-01-27 Nick Clifton <nickc@redhat.com>
+
+ PR 9774
+ * objdump.c (disassemble_section): When the target uses signed
+ addresses make sure that we compute signed values.
+
+2009-01-27 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Remove Thiemo Seufer's name from the list of MIPS
+ maintainers.
+
+2009-01-26 Nick Clifton <nickc@redhat.com>
+
+ PR 9766
+ * dlltool.c (xlate): When strip text after the @ sign, look for
+ the last one not the first one.
+
+2009-01-16 Alan Modra <amodra@bigpond.net.au>
+
+ * configure.in (commonbfdlib): Delete.
+ * configure: Regenerate.
+
+2008-01-14 Charles Wilson <cygwin@cwilson.fastmail.fm>
+
+ Cleanup code related to --identify option.
+
+ * dlltool.c (file scope): Removed globals identify_ms,
+ identify_member_contains_symname_result,
+ identify_dll_name_list_head, and identify_dll_name_list_tail.
+ Renamed existing typedef dll_name_list_type to
+ dll_name_list_node_type.
+ Added new typedefs dll_name_list_type, symname_search_data_type,
+ and identify_data_type.
+ (identify_append_dll_name_to_list): Renamed to...
+ (dll_name_list_append): ...here. Changed signature to accept list
+ argument rather than use global.
+ (identify_count_dll_name_list): Renamed to...
+ (dll_name_list_count): ...here. Changed signature to accept list
+ argument rather than use global.
+ (identify_print_dll_name_list): Renamed to...
+ (dll_name_list_print): ...here. Changed signature to accept list
+ argument rather than use global.
+ (identify_free_dll_name_list): Renamed to...
+ (dll_name_list_free_contents): ...here.
+ (dll_name_list_free): New function.
+ (dll_name_list_create): New function.
+ (identify_process_section_p): Changed signature to accept
+ ms_style_implib argument rather than use global.
+ (identify_member_contains_symname): Expect incoming void * data to
+ be symname_search_data_type.
+ (identify_dll_for_implib): Use new functions dll_name_list_create
+ and dll_name_list_free. Use new types symname_search_data_type
+ and identify_data_type to communicate with search routines.
+ (identify_search_section): Expect incoming void * data to be
+ identify_data_type. Use its contents rather than global
+ variables.
+
+2009-01-13 Charles Wilson <cygwin@cwilson.fastmail.fm>
+
+ Add --identify-strict option. Handle ms-style implibs:
+
+ * dlltool.c (file scope): Added new globals identify_ms and
+ identify_strict. New typedef dll_name_list_type, and globals
+ identify_dll_name_list_head and identify_dll_name_list_tail. Added
+ new global identify_member_contains_symname_result.
+ (identify_append_dll_name_to_list): New function.
+ (identify_count_dll_name_list): New function.
+ (identify_print_dll_name_list): New function.
+ (identify_free_dll_name_list): New function.
+ (identify_search_archive): Changed signature to take function
+ pointer to operation to apply to each member, and data to pass on
+ to that function.
+ (identify_search_member): Changed signature to accept user data
+ from caller.
+ (identify_member_contains_symname): New function.
+ (identify_dll_for_implib): Rewrite. Now determines whether implib
+ is ms- or binutils- style, before searching sections for
+ dllname. Allows multiple dllnames.
+ (identify_process_section_p): Search alternate section for dllname
+ when implib is ms-style.
+ (identify_search_section): Add additional conditions to excludes
+ candidate sections from consideration.
+ (usage): Added --identify-strict.
+ (long_options): Added --identify-strict.
+ (main): Handle --identify-strict option.
+ * doc/binutils.texi: Document --identify-strict option.
+ * NEWS: Document --identify and --identify-strict options.
+
+2009-01-13 Alan Modra <amodra@bigpond.net.au>
+
+ PR 7034
+ * doc/binutils.texi (objdump -R): Note effect of -d or -D.
+
+2009-01-13 Alan Modra <amodra@bigpond.net.au>
+
+ * objdump.c (disassemble_section): Don't assume non-instruction
+ data if object symbol at given address is in different section.
+
+2009-01-12 Kai Tietz <kai.tietz@onevision.com>
+
+ * dlltool.c (create_for_pep): New.
+ (flush_page): Use create_for_pep instead of using
+ macro DLLTOOL_MX86_64 clause.
+ (generate_idata_ofile): Likewise.
+ (make_one_lib_file): Likewise.
+ (make_head): Likewise.
+ (make_tail): Likewise.
+ (main): Initialize create_for_pep.
+
+2009-01-08 Kai Tietz <kai.tietz@onevision.com>
+
+ * dlltool.c (use_nul_prefixed_import_tables): New.
+ (make_head): Make prefix leading zero prefix element for
+ idata$4 and idata$5 dependent to new flag.
+ (usage): Add new option --use-nul-prefixed-import-tables.
+ (OPTION_USE_NUL_PREFIXED_IMPORT_TABLES): New.
+ (long_options): Add --use-nul-prefixed-import-tables.
+ (main): Likewise.
+ * doc/binutils.texi: Add new option documentation for
+ --use-nul-prefixed-import-tables.
+ * NEWS: Add new option.
+
+2009-01-06 Kai Tietz <kai.tietz@onevision.com>
+
+ * windres.c (set_endianess): Get architecture name
+ for internal target names like "pe-arm-wince-little".
+ (find_arch_match): New helper.
+ * ChangeLog: Reset it.
+ * ChangeLog-2008: Moved old ChangeLog.
+
+For older changes see ChangeLog-2008
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-2010 b/binutils-2.24/binutils/ChangeLog-2010
new file mode 100644
index 00000000..ba568714
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-2010
@@ -0,0 +1,1083 @@
+2010-12-15 Kai Tietz <kai.tietz@onevision.com>
+
+ * dwarf.c (display_gdb_index): Fix printf types for
+ used formatters.
+
+2010-12-12 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ PR binutils/12306
+ * doc/binutils.texi: Fix typos in elfedit documentation.
+
+2010-12-10 Alan Modra <amodra@gmail.com>
+
+ * binemul.h (do_ar_emul_append): Declare.
+ * binemul.c (any_ok): New function.
+ (do_ar_emul_append): Rename from do_ar_emul_default_append. Make
+ global, add check arg. Adjust callers.
+ (ar_emul_default_replace): Tidy.
+ * configure.tgt (powerpc-*-aix[5-9]*,rs6000-*-aix[5-9]*): Use
+ bin_aix_emulation.
+ * emul_aix.c (bin_aix5_emulation, ar_emul_aix_internal): Delete.
+ (ar_emul_aix5_append, ar_emul_aix5_replace): Delete.
+ (check_aix): New function.
+ (ar_emul_aix_append, ar_emul_aix_replace): Rewrite.
+
+2010-12-09 Mike Frysinger <vapier@gentoo.org>
+
+ * .gitignore: New file.
+
+2010-12-08 Alan Modra <amodra@gmail.com>
+
+ * ar.c: Formatting.
+ (usage): Correct help strings.
+ (decode_options): Correct getopt_long short options. Remove
+ duplicate non-handled option message.
+ (main): Don't handle -M specially.
+
+2010-12-08 Arnaud Lacombe <lacombar@gmail.com>
+
+ * ar.c (long_options): Add target.
+ (decode_options): Handle the --target option.
+ (open_inarch): Check for plugin's target, default to --target
+ (replace_members): Use generic `target'.
+
+ * ar.c (operation): New global variable.
+ (show_version): Likewise.
+ (show_help): Likewise.
+ (long_options): Likewise.
+ (usage): Fix help string argument order.
+ (decode_options): New.
+ (ranlib_main): Use getopt_long.
+ (main): Use decode_options.
+
+ * ar.c (main): Split ranlib path.
+ (ranlib_usage): New
+ (ranlib_main): New
+
+2010-12-03 Doug Evans <dje@google.com>
+
+ * dwarf.c: #include "bfd_stdint.h".
+ (do_gdb_index): New global.
+ (display_gdb_index): New function.
+ (dwarf_select_sections_by_names) Add "gdb_index".
+ (dwarf_select_sections_all): Set do_gdb_index.
+ (debug_displays): Add .gdb_index.
+ * dwarf.h (do_gdb_index): Declare.
+ * objdump.c (usage): Add gdb_index.
+ * readelf.c (usage): Add gdb_index.
+ (process_section_headers): Process ".gdb_index".
+ * doc/binutils.texi (readelf): Document gdb_index dump.
+ (objdump): Ditto.
+
+2010-12-01 Kai Tietz <kai.tietz@onevision.com>
+
+ PR binutils/11065
+ * dlltool.c (dll_name_set_by_exp_name): New variable.
+ (def_name): Allow setting of dll_name by .def file.
+ (def_library): Likewise.
+ (main): Set dll_name_set_by_exp_name, if dll_name is
+ set indirect by exp_name.
+
+2010-11-26 Alan Modra <amodra@gmail.com>
+
+ * dwarf.c (decode_location_expression, display_debug_frames): Move
+ code handling DW_EH_PE_pcrel into..
+ (get_encoded_value): ..here.
+
+2010-11-26 Alan Modra <amodra@gmail.com>
+
+ * po/ja.po: Update.
+
+2010-11-25 Alan Modra <amodra@gmail.com>
+
+ * po/bg.po: Update.
+ * po/es.po: Update.
+ * po/fi.po: Update.
+ * po/ja.po: Update.
+ * po/ru.po: Update.
+ * po/zh_CN.po: Update.
+
+2010-11-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/12235
+ * elfcomm.c: New.
+ * elfcomm.h: Likewise.
+
+ * Makefile.am (HFILES): Add elfcomm.h.
+ (CFILES): Add elfcomm.c.
+ (ELFLIBS): New.
+ (readelf_SOURCES): Add $(ELFLIBS).
+ (elfedit_SOURCES): Likewise.
+ (objdump_SOURCES): Likewise.
+ * Makefile.in: Regenerated.
+
+ * dwarf.c: Include "elfcomm.h".
+ (byte_get): Removed.
+ (byte_get_little_endian): Likewise.
+ (byte_get_big_endian): Likewise.
+ (byte_get_signed): Likewise.
+ (error): Likewise.
+ (warn): Likewise.
+
+ * dwarf.h (dwarf_vma): Defined with HOST_WIDEST_INT.
+ (dwarf_size_type): Likewise.
+ (byte_get): Removed.
+ (byte_get_signed): Likewise.
+ (byte_get_little_endian): Likewise.
+ (byte_get_big_endian): Likewise.
+ (error): Likewise.
+ (warn): Likewise.
+
+ * elfedit.c: Include "elfcomm.h". Don't include "aout/ar.h".
+ Call error () instead of non_fatal ().
+ (streq): Removed.
+ (strneq): Likewise.
+ (const_strneq): Likewise.
+ (non_fatal): Likewise.
+ (BYTE_GET): Likewise.
+ (BYTE_PUT): Likewise.
+ (byte_get): Likewise.
+ (byte_put): Likewise.
+ (byte_get_little_endian): Likewise.
+ (byte_get_big_endian): Likewise.
+ (byte_put_little_endian): Likewise.
+ (byte_put_big_endian): Likewise.
+ (adjust_relative_path): Likewise.
+ (archive_info): Likewise.
+ (setup_archive): Likewise.
+ (release_archive): Likewise.
+ (setup_nested_archive): Likewise.
+ (get_archive_member_name): Likewise.
+ (get_archive_member_name_at): Likewise.
+ (make_qualified_name): Likewise.
+
+ * objdump.c: Include "elfcomm.h".
+
+ * readelf.c: Include "elfcomm.h". Don't include "aout/ar.h".
+ (BYTE_GET): Removed.
+ (BYTE_GET_SIGNED): Removed.
+ (streq): Likewise.
+ (strneq): Likewise.
+ (const_strneq): Likewise.
+ (byte_put): Likewise.
+ (byte_put_little_endian): Likewise.
+ (byte_put_big_endian): Likewise.
+ (adjust_relative_path): Likewise.
+ (archive_info): Likewise.
+ (setup_archive): Likewise.
+ (release_archive): Likewise.
+ (setup_nested_archive): Likewise.
+ (get_archive_member_name): Likewise.
+ (get_archive_member_name_at): Likewise.
+ (make_qualified_name): Likewise.
+
+2010-11-18 Alan Modra <amodra@gmail.com>
+
+ PR binutils/11742
+ * readelf.c (get_archive_member_name): Formatting. Properly
+ handle full size ar_name.
+
+2010-11-17 Alan Modra <amodra@gmail.com>
+
+ * ar.c (print_contents): Don't internationalize strings without words.
+ * dwarf.c (process_extended_line_op): Likewise.
+ (process_debug_info): Likwise.
+ (display_debug_lines_raw): Likewise.
+ (display_debug_lines_decoded): Likewise.
+ (display_debug_abbrev): Likewise.
+ * readelf.c (process_file_header): Likewise.
+ (GET_OP): Likewise.
+ (decode_arm_unwind): Likewise.
+ (process_mips_specific): Likewise.
+ * resrc.c (run_cmd): Likewise.
+ (rcparse_warning): Likewise.
+ * objdump.c (dump_headers): Don't print "Pg".
+
+2010-11-16 Jorma Karvonen <karvonen.jorma@gmail.com>
+
+ * windmc.c: ,%s' -> `%s' in a number of strings.
+
+2010-11-16 Jie Zhang <jie.zhang@analog.com>
+
+ * readelf.c (get_machine_flags): Deal with Blackfin specific flags.
+
+2010-11-11 Mingming Sun <mingm.sun@gmail.com>
+
+ * readelf.c (get_machine_flags): Add loongson-3a.
+
+2010-11-10 Nick Clifton <nickc@redhat.com>
+
+ * po/ja.po: Updated Japanese translation.
+ * po/fr.po: Updated French translation.
+
+2010-11-08 Nick Clifton <nickc@redhat.com>
+
+ * po/ja.po: Updated Japanese translation.
+
+2010-11-08 Alan Modra <amodra@gmail.com>
+
+ * objcopy.c (copy_main): No need to rename sections when compressing
+ or decompressing.
+
+2010-11-05 Alan Modra <amodra@gmail.com>
+
+ * bin2c.c: Remove internationalization and version report.
+ * Makefile.am: Update bin2c rule.
+ * Makefile.in: Regenerate.
+
+2010-11-05 Tristan Gingold <gingold@adacore.com>
+
+ * po/binutils.pot: Regenerate
+
+2010-11-05 Tristan Gingold <gingold@adacore.com>
+
+ * NEWS: Add marker for 2.21.
+
+2010-11-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objdump.c (dump_bfd_header): Don't display
+ BFD_FLAGS_FOR_BFD_USE_MASK bits in abfd->flags.
+
+2010-11-02 Joseph Myers <joseph@codesourcery.com>
+
+ * readelf.c (display_tic6x_attribute): Handle more attributes.
+
+2010-10-30 Kai Tietz <kai.tietz@onevision.com>
+
+ * dlltool.c (scan_drectve_symbols): Allow quoted strings for -export
+ directives.
+
+2010-10-29 Joseph Myers <joseph@codesourcery.com>
+
+ * readelf.c (display_tic6x_attribute): Use Tag_ABI_compatibility
+ not hardcoded 32. Display name of this attribute.
+
+2010-10-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ * addr2line.c (process_file): Set BFD_DECOMPRESS.
+
+ * objcopy.c (do_debug_sections): New.
+ (OPTION_COMPRESS_DEBUG_SECTIONS): New.
+ (OPTION_DECOMPRESS_DEBUG_SECTIONS): Likewise.
+ (copy_options): Add OPTION_COMPRESS_DEBUG_SECTIONS and
+ OPTION_DECOMPRESS_DEBUG_SECTIONS.
+ (copy_usage): Add --compress-debug-sections and
+ --decompress-debug-sections.
+ (copy_file): Set BFD_COMPRESS or BFD_DECOMPRESS.
+ (copy_section): Replace bfd_get_section_contents with
+ bfd_get_full_section_contents.
+ (copy_main): Handle OPTION_COMPRESS_DEBUG_SECTIONS and
+ OPTION_DECOMPRESS_DEBUG_SECTIONS. Check do_debug_sections to
+ rename DWARF debug sections.
+
+ * objdump.c (load_specific_debug_section): Replace
+ bfd_get_section_contents with bfd_get_full_section_contents.
+ Remove bfd_uncompress_section_contents.
+ (dump_section): Replace bfd_get_section_contents with
+ bfd_get_full_section_contents.
+ (display_file): Set BFD_DECOMPRESS if needed.
+
+ * readelf.c (uncompress_section_contents): Set buffer to NULL
+ to indiate decompression failure.
+ (load_specific_debug_section): Always call
+ uncompress_section_contents.
+
+ * doc/binutils.texi: Document --compress-debug-sections and
+ --decompress-debug-sections.
+
+2010-10-29 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/12058
+ * ar.c (usage): Revert previous change. Describe how 's' can be
+ used as a command letter.
+ * doc/binutils.texi (ar cmdline): Describe how 's' can be used as
+ a command letter.
+
+2010-10-29 Bernd Schmidt <bernds@codesourcery.com>
+ Joseph Myers <joseph@codesourcery.com>
+
+ * readelf.c (display_tic6x_attribute): Handle Tag_ABI_DSBT.
+
+2010-10-28 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/12058
+ * ar.c (usage): Remove spurious 's' from list of accepted command
+ letters.
+
+2010-10-28 Alan Modra <amodra@gmail.com>
+
+ * readelf.c (is_32bit_abs_reloc): Support i960 and microblaze.
+ (is_32bit_pcrel_reloc): Support microblaze.
+
+2010-10-26 Nick Clifton <nickc@redhat.com>
+
+ * po/ja.po: Updated Japanese transaltion.
+
+2010-10-21 Joseph Myers <joseph@codesourcery.com>
+
+ * readelf.c (display_tic6x_attribute): Update for attribute
+ renaming.
+
+2010-10-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * dwarf.c (byte_get_signed): Make it extern.
+
+ * dwarf.h (byte_get_signed): New.
+
+ * readelf.c (BYTE_GET_SIGNED): New.
+ (slurp_rela_relocs): Use BYTE_GET_SIGNED on r_addend.
+ (dump_relocations): Properly dump r_addend.
+
+2010-10-08 Joseph Myers <joseph@codesourcery.com>
+
+ * nm.c (value_format_64bit): Define appropriately for __MSVCRT__.
+ (set_print_radix): Update for __MSVCRT__ definition of
+ value_format_64bit.
+
+2010-10-08 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ Fix build with -DDEBUG=7
+ * nlmheader.y (DEBUG token): Rename to DEBUG_K.
+
+2010-10-06 Alan Modra <amodra@gmail.com>
+
+ * bucomm.c (bfd_nonfatal, bfd_nonfatal_message): Don't clobber errno.
+
+2010-10-05 Alan Modra <amodra@gmail.com>
+
+ * bucomm.c (bfd_nonfatal): Flush stdout before output to stderr.
+ (bfd_nonfatal_message, report, list_matching_formats): Likewise.
+ (list_supported_targets): Tidy.
+ * objdump.c (free_only_list): Formatting.
+ (slurp_dynamic_symtab): Non-zero exit status for "not a dynamic
+ object".
+ (update_source_path): Delete redundant check for NULL filename.
+ (disassemble_bytes): Error if disassemble_fn returns a value
+ that won't increment address.
+ (disassemble_data): Don't capitalize error message.
+ (read_section_stabs): Likewise.
+ (main): Return non-zero exit status on bad options.
+
+2010-10-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/12088
+ * nm.c (plugin_target): New.
+ (main): Set plugin_target to "plugin" for --plugin.
+ (display_file): Pass plugin_target to bfd_openr if target
+ isn't set.
+
+2010-09-27 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure: Regenerate.
+
+2010-09-22 Mike Frysinger <vapier@gentoo.org>
+
+ * MAINTAINERS: Add self as ADI Blackfin maintainer.
+
+2010-09-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ * emul_aix.c (ar_emul_aix_append): Add a target argument
+ and ignore it if it is set.
+ (ar_emul_aix5_append): Likewise.
+ (ar_emul_aix_replace): Likewise.
+ (ar_emul_aix5_replace): Likewise.
+
+2010-09-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ * ar.c (plugin_target): New.
+ (main): Set plugin_target to "plugin" for --plugin.
+ (open_inarch): Initialize target to plugin_target.
+ (replace_members): Pass plugin_target to ar_emul_replace
+ and ar_emul_append.
+
+ * binemul.h (ar_emul_append): Add a target argument.
+ (ar_emul_default_append): Likewise.
+ (ar_emul_replace): Likewise.
+ (ar_emul_default_replace): Likewise.
+ (bin_emulation_xfer_struct): Add a target argument to
+ ar_append and ar_replace.
+
+ * binemul.c (ar_emul_append): Updated. Pass target to bfd_openr.
+ (do_ar_emul_default_append): Likewise.
+ (ar_emul_default_append): Likewise.
+ (ar_emul_replace): Likewise.
+ (ar_emul_default_replace): Likewise.
+
+2010-09-10 Ben Gardiner <bengardiner@nanometrics.ca>
+
+ * objcopy.c: Add --interleave-width option to allow interleaving
+ of more than one byte at a time.
+ (copy_width): New variable.
+ (copy_options): Add --interleave-width.
+ (copy_section): When interleaving copy in units of copy_width
+ bytes.
+ (copy_main): Parse the new option.
+ * doc/binutils: Document the new option.
+ * NEWS: Mention the new feature.
+
+2010-09-09 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (decode_location_expression): Fix data adjustment
+ for DW_OP_GNU_implicit_pointer in v3+.
+
+2010-09-09 Tristan Gingold <gingold@adacore.com>
+
+ * NEWS: Add entry to NEWS for hppa/som.
+
+2010-09-09 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.h (debug_info): Add offset_info and dwarf_version fields.
+ * dwarf.c (decode_location_expression): Add offset_size and
+ dwarf_version arguments. Prefix DIE offset with 0x for
+ DW_OP_call{2,4,_ref}. Fix up DW_OP_call_ref operand size,
+ complain if in frame info section. Handle
+ DW_OP_GNU_implicit_pointer.
+ (read_and_display_attr_value, display_debug_loc,
+ display_debug_frames): Adjust decode_location_expression callers.
+ (process_debug_info): Save offset_size and dwarf_version values
+ into debug_information array.
+
+2010-09-07 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (process_section_headers): Mention meaning of 'l'
+ section flag for x86-64 targets.
+
+2010-09-03 Jan Kratochvil <jan.kratochvil@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (regname): New declaration.
+ (decode_location_expression): Print for registers also regname output.
+
+2010-09-02 Richard Henderson <rth@redhat.com>
+
+ * dwarf.c (init_dwarf_regnames_i386, init_dwarf_regnames_x86_64): New.
+ (init_dwarf_regnames): Use them.
+ * dwarf.h: Declare them.
+ * objdump.c (dump_dwarf): Use bfd_get_arch + bfd_get_mach to set up
+ the regnames, rather than using elf_machine_code.
+
+2010-09-02 Richard Henderson <rth@redhat.com>
+
+ * objdump.c (dump_dwarf): Use bfd_arch_bits_per_address.
+
+2010-08-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elfedit.c (input_elf_osabi): New.
+ (output_elf_osbi): Likewise.
+ (osabis): Likewise.
+ (elf_osabi): Likewise.
+ (update_elf_header): Support updating ELF OSABI.
+ (make_qualified_name): Break long line.
+ (command_line_switch): Add OPTION_INPUT_OSABI and
+ OPTION_OUTPUT_OSABI.
+ (options): Likewise.
+ (usage): Add --input-osabi and --output-osabi.
+ (main): Handle OPTION_INPUT_OSABI and OPTION_OUTPUT_OSABI.
+
+ * doc/binutils.texi: Document --input-osabi and --output-osabi
+ for elfedit.
+
+2010-08-23 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * readelf.c (display_mips_gnu_attribute): Replace GCC options
+ with a textual description of a MIPS32r2 64-bit FPU.
+
+2010-08-13 Dan Rosenberg <dan.j.rosenberg@gmail.com>
+
+ PR binutils/11889
+ * readelf.c (get_32bit_elf_symbols): Check for a corrupt
+ sh_entsize.
+ (get_64bit_elf_symbols): Likewise.
+ (process_symbol_table): Likewise.
+ (process_section_groups): Check for corrupt headers.
+ (process_version_sections): Check for corrupt indicies.
+ (process_corefile_note_segment): Likewise.
+
+2010-08-13 Nathan Sidwell <nathan@codesourcery.com>
+
+ * readelf.c (get_machine_flags): Detect CF ISA C and EMAC_B
+ variants.
+
+2010-08-13 Tom Tromey <tromey@redhat.com>
+
+ * dwarf.c (process_debug_info): Don't subtract section address
+ when calculating location of cu abbrev within section.
+
+2010-08-12 Michael Haubenwallner <haubi@gentoo.org>
+
+ PR binutils/11742
+ * readelf.c (get_archive_member_name): Do not read beyond the end
+ of the ar_name field.
+
+2010-08-03 Tristan Gingold <gingold@adacore.com>
+
+ * dwarf.c (display_debug_lines): Mark file argument unused.
+ Do not try to load .debug_info section.
+
+2010-08-02 Alan Modra <amodra@gmail.com>
+
+ * readelf.c (apply_relocations): D30V is really REL.
+
+2010-07-23 Naveen.H.S <naveen.S@kpitcummins.com>
+ Ina Pandit <ina.pandit@kpitcummins.com>
+
+ * binutils/readelf.c: Add support for V850E2 and V850E2V3.
+
+2010-07-22 Alan Modra <amodra@gmail.com>
+
+ * readelf.c: Add Moxie support.
+
+2010-07-20 Alan Modra <amodra@gmail.com>
+
+ * readelf.c (process_program_headers): Don't ignore all zero size
+ sections.
+
+2010-07-19 Andreas Schwab <schwab@redhat.com>
+
+ * readelf.c (process_section_headers): Update key to flags.
+
+2010-07-17 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ * objcopy.c (copy_usage): Tweak previous typofix.
+
+2010-07-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objcopy.c (copy_usage): Fix a typo.
+
+2010-07-15 Kai Tietz <kai.tietz@onevision.com>
+
+ * dllwrap.c (main): Make sure is_leading_underscore
+ gets initialized with correct default.
+
+2010-07-05 Alan Modra <amodra@gmail.com>
+
+ * readelf.c (uncompress_section_contents): Avoid gcc-4.6 warning.
+
+2010-07-03 Cary Coutant <ccoutant@google.com>
+
+ * objdump.c (load_specific_debug_section): Decompress section contents
+ before applying relocations.
+ * readelf.c (load_specific_debug_section): Update section size after
+ decompression.
+
+2010-06-29 Alan Modra <amodra@gmail.com>
+
+ PR binutils/3166
+ * objcopy.c (is_strip_section): Revert 2006-09-05.
+ (setup_section): Make SHT_GROUP section nobits.
+
+2010-06-29 Alan Modra <amodra@gmail.com>
+
+ * configure: Regenerate.
+ * po/POTFILES.in: Regenerate.
+
+2010-06-27 Alan Modra <amodra@gmail.com>
+
+ * resbin.c (res_to_bin_accelerator): Delete set but unused variables.
+
+2010-06-17 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/11711
+ * windres.c (enum option_values): New enum.
+ (long_options): Use separate option number for --include-dir
+ option.
+ (main): Separate backwards compatibility check from code to
+ implement --include-dir. Check to see if directory exists and do
+ not complain if it does.
+
+2010-06-15 Joseph Myers <joseph@codesourcery.com>
+
+ * readelf.c (display_tic6x_attribute, process_tic6x_specific):
+ New.
+ (process_arch_specific): Call process_tic6x_specific for
+ EM_TI_C6000.
+
+2010-06-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (dump_ia64_vms_dynamic_fixups): Cast to unsigned long
+ for 0x%lx.
+
+2010-06-11 Tristan Gingold <gingold@adacore.com>
+ Doug Rupp <rupp@gnat.com>
+
+ * readelf.c (is_ia64_vms): New function.
+ (dump_relocations): Use it.
+ (get_machine_flags): Display IA-64 OpenVMS flags.
+ (process_program_headers): No error on OpenVMS if no .dynamic section.
+ (struct ia64_vms_dynfixup, struct ia64_vms_dynimgrela): New
+ declarations.
+ (dump_ia64_vms_dynamic_fixups): New function.
+ (dump_ia64_vms_dynamic_relocs): Ditto.
+ (process_ia64_vms_dynamic_relocs): Ditto.
+ (process_relocs): Handle IA-64 OpenVMS relocs.
+ (VMS_EPOCH_OFFSET, VMS_GRANULARITY_FACTOR): New macros.
+ (print_vms_time): New function.
+ (dynamic_section_ia64_val): Handle DT_IA_64_VMS_LINKTIME and
+ DT_IA_64_VMS_LNKFLAGS.
+ (get_ia64_symbol_other): New function.
+ (get_symbol_other): Handle EM_IA_64.
+
+2010-06-11 Tristan Gingold <gingold@adacore.com>
+
+ * unwind-ia64.c (unw_print_abreg): Add const to special_reg.
+ (UNW_DEC_ABI): Ditto for abiname.
+ (unw_decode_table): Make it const.
+
+2010-06-10 Tristan Gingold <gingold@adacore.com>
+
+ * readelf.c (slurp_ia64_unwind_table): IA64 rela relocations are
+ not inplace.
+
+2010-05-25 Daniel Jacobowitz <dan@codesourcery.com>
+ Joseph Myers <joseph@codesourcery.com>
+ Andrew Stubbs <ams@codesourcery.com>
+
+ * readelf.c (get_machine_flags): Handle EF_SH_PIC and EF_SH_FDPIC.
+
+2010-05-25 Jay Krell <jay.krell@cornell.edu>
+
+ PR ld/11621
+ * Makefile.am: Replace all occurences of .o with .@OBJEXT@
+ * Makefile.in: Regenerate.
+
+2010-05-24 Tristan Gingold <gingold@adacore.com>
+
+ * readelf.c (usage): Add new trace sections for --debug-dump.
+ (process_section_headers): Handle dump of trace sections.
+ * objdump.c (usage): Add new trace sections for --dwarf.
+ * dwarf.h (do_trace_info, do_trace_abbrevs): New variables.
+ (do_trace_aranges): Ditto.
+ (enum dwarf_section_display_enum): Add trace_info, trace_abbrev
+ and trace_aranges literals.
+ * dwarf.c (do_trace_info, do_trace_abbrevs): New variables.
+ (do_trace_aranges): Ditto.
+ (process_debug_info): Add abbrev_sec argument and replace
+ abbrev with abbrev_sec.
+ (load_debug_info): Adjust call of process_debug_info.
+ (display_debug_info): Ditto.
+ (display_trace_info): New function.
+ (dwarf_select_sections_by_names): Add trace_info, trace_abbrevs
+ and trace_aranges sections name.
+ (dwarf_select_sections_all): Also select trace sections.
+ (debug_displays): Reindent. Add entries for the trace sections.
+ * doc/binutils.texi (readelf): Document new --dwarf parameters.
+ (objdump): Ditto.
+
+2010-05-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/11600
+ * readelf.c (get_elf_section_flags): Treat SHF_EXCLUDE as a
+ generic flag.
+
+2010-05-07 Tristan Gingold <gingold@adacore.com>
+
+ * Makefile.in: Regenerate with automake 1.11.1.
+ * aclocal.m4: Ditto.
+ * doc/Makefile.in: Ditto.
+
+2010-05-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ * dwarf.c (init_dwarf_regnames): Handle EM_L1OM.
+ * readelf.c (get_elf_section_flags): Likewise.
+ (process_section_headers): Likewise.
+
+2010-05-05 Nick Clifton <nickc@redhat.com>
+
+ * po/es.po: Updated Spanish translation.
+
+2010-04-27 Kai Tietz <kai.tietz@onevision.com>
+
+ * dlltool.c (main): Query for bfd's underscoring default for
+ default target case.
+
+2010-04-27 Nick Clifton <nickc@redhat.com>
+
+ * po/ru.po: Updated Russian translation.
+
+2010-04-23 Alan Modra <amodra@gmail.com>
+
+ * readelf.c (process_program_headers): Replace use of
+ ELF_IS_SECTION_IN_SEGMENT_MEMORY with ELF_SECTION_IN_SEGMENT.
+
+2010-04-22 Nick Clifton <nickc@redhat.com>
+
+ * po/binutils.pot: Updated by the Translation project.
+ * po/fi.po: Updated Finnish translation.
+ * po/vi.po: Updated Vietnamese translation.
+ * po/bg.po: New Bulgarian translation.
+ * configure.in (ALL_LINGUAS): Add bg.
+ * configure: Regenerate.
+
+2010-04-20 Nick Clifton <nickc@redhat.com>
+
+ * po/fr.po: Updated french translation.
+
+2010-04-20 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c: Add _() macros to constant strings that are
+ translatable.
+
+ * readelf.c (display_mips_gnu_attribute): Replace GCC options
+ with a textual description of single and double precision float.
+
+2010-04-15 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * readelf.c (arm_attr_tag_FP_arch): Rename from arm_attr_tag_VFP_arch.
+ (arm_attr_tag_ABI_align8_needed): Remove.
+ (arm_attr_tag_ABI_align8_preserved): Remove.
+ (arm_attr_tag_ABI_HardFP_use): Update text strings.
+ (arm_attr_public_tags): Add strings for ABI v2.08 attribute tags.
+ (display_arm_attribute): Add decoding of ABI v2.08 attributes.
+
+2010-04-13 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/11419
+ * dwarf.c (process_debug_info): Initialise the signature array.
+
+2010-04-09 Nick Clifton <nickc@redhat.com>
+
+ * dwarf.c (process_debug_info): Remove unused variable
+ cu_abbrev_offset_ptr.
+ (display_debug_lines_decoded): Remove unused variable prev_line.
+ * elfedit.c (process_archive): Remove unused variable
+ file_name_size.
+ * ieee.c (ieee_start_compilation_unit): Remove unused variable
+ nindx.
+ (ieee_set_type): Remove unused variables info, targetindx and
+ baseindx.
+ * objdump.c (disassmble_byte): Remove unused variable done_dot.
+ * rddbg.c (read_section_stabs_debugging_info): Remove unused
+ variable other.
+ * readelf.c (dump_section_as_strings): Remove unused variable
+ addr.
+ (process_archive): Remove unused variable file_name_size.
+ * stabs.c (parse_stab_string): Mark desc parameter as unused.
+ Remove unused variable lineno.
+ (parse_stab_struct_type): Remove unused variable orig.
+ (stab_demangle_type): Remove unused variables constp, volatilep
+ and hold.
+
+2010-04-07 Alan Modra <amodra@gmail.com>
+
+ * configure: Regenerate.
+
+2010-04-06 Nick Clifton <nickc@redhat.com>
+
+ * po/vi.po: Updated Vietnamese translation.
+
+2010-04-05 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (struct Frame_Chunk): Add ptr_size and segment_size
+ fields.
+ (display_debug_frames): Handle CIE version 4.
+
+ * dwarf.c (struct State_Machine_Registers): Add op_index field,
+ change end_sequence type to unsigned char.
+ (reset_state_machine): Clear op_index.
+ (process_extended_line_op): For DW_LNE_set_address clear op_index.
+ (display_debug_lines_raw): Initialize li_max_ops_per_insn.
+ Track op_index state machine register and print it if
+ li_max_ops_per_insn is != 1.
+ (display_debug_lines_decoded): Likewise.
+
+2010-04-01 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (read_and_display_attr_value): Don't reject
+ dwarf_version == 4. Handle DW_FORM_sec_offset, DW_FORM_flag_present
+ and DW_FORM_exprloc.
+ (process_debug_info): Handle cu_version == 4.
+ (display_debug_lines_raw, display_debug_lines_decoded): Handle
+ li_version == 4.
+
+2010-03-30 Andreas Schwab <schwab@linux-m68k.org>
+
+ * Makefile.am (CONFIG_STATUS_DEPENDENCIES): Define.
+ * Makefile.in: Regenerate.
+
+2010-03-25 Joseph Myers <joseph@codesourcery.com>
+
+ * MAINTAINERS: Add self as TI C6X maintainer.
+ * NEWS: Add news entry for TI C6X support.
+ * readelf.c: Include elf/tic6x.h.
+ (guess_is_rela): Handle EM_TI_C6000.
+ (dump_relocations): Likewise.
+ (get_tic6x_dynamic_type): New.
+ (get_dynamic_type): Call it.
+ (get_machine_flags): Handle EF_C6000_REL.
+ (get_osabi_name): Handle machine-specific values only for relevant
+ machines. Handle C6X values.
+ (get_tic6x_segment_type): New.
+ (get_segment_type): Call it.
+ (get_tic6x_section_type_name): New.
+ (get_section_type_name): Call it.
+ (is_32bit_abs_reloc, is_16bit_abs_reloc, is_none_reloc): Handle
+ EM_TI_C6000.
+
+2010-03-25 Thomas Schwinge <thomas@codesourcery.com>
+
+ * doc/binutils.texi (readelf) <unwind information>: Mention support for
+ ARM unwind tables.
+
+2010-03-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (decode_arm_unwind): Increase buf size to 9 byte.
+
+2010-03-17 Alan Modra <amodra@gmail.com>
+
+ * readelf.c (dump_arm_unwind): Warning fix.
+
+2010-03-16 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * MAINTAINERS: Update my email address. List Tristan Gingold
+ as the release branch maintainer.
+
+2010-03-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * readelf.c (get_ver_flags): Handle VER_FLG_INFO.
+
+2010-03-02 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * NEWS: Document .ARM.exidx / .ARM.extab support.
+
+ * dwarf.c (read_leb128): Make non-static.
+ * dwarf.h (read_leb128): Declare.
+ * readelf.c (REMOVE_ARCH_BITS): Define.
+ (find_section_by_address): New.
+ (read_uleb128): Move higher. Use read_leb128 from dwarf.c.
+ (find_symbol_for_address): Handle the Thumb bit for ARM, by
+ using REMOVE_ARCH_BITS.
+ (struct arm_section, struct arm_unw_aux_info, arm_print_vma_and_name)
+ (arm_free_section, arm_section_get_word, decode_arm_unwind)
+ (dump_arm_unwind, arm_process_unwind): New.
+ (process_unwind): Handle ARM.
+
+2010-02-26 Jie Zhang <jie@codesourcery.com>
+
+ * MAINTAINERS: Update my email address.
+
+2010-02-23 Peter Breitenlohner <peb@mppmu.mpg.de>
+
+ PR binutils/11298
+ * doc/binutils.texi (windmc): Fix synopsis and description of
+ ASCII options.
+
+2010-02-19 Alan Modra <amodra@gmail.com>
+
+ * readelf.c (get_group_flags): Return empty string when flags zero.
+ Add space in other returned values.
+ (process_section_groups): Adjust format string.
+
+2010-02-18 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * readelf.c (arm_attr_tag_Advanced_SIMD_arch): Add description of
+ newly permitted attribute values.
+ (arm_attr_tag_Virtualization_use): Likewise.
+ (arm_attr_tag_DIV_use): Add description of new attribute.
+ (arm_attr_tag_MPextension_use_legacy): Likewise.
+
+2010-02-15 Nick Clifton <nickc@redhat.com>
+
+ * po/vi.po: Updated Vietnamese translation.
+
+2010-02-09 Michael Holzheu <holzheu@de.ibm.com>
+
+ * readelf.c (get_note_type): Handle NT_S390_TIMER, NT_S390_TODCMP,
+ NT_S390_TODPREG, NT_S390_CTRS and NT_S390_PREFIX.
+
+2010-02-08 Jim Blandy <jimb@red-bean.com>
+
+ * dwarf.c (display_debug_frames): Skip the 'S' character in CFI
+ 'z' augmentation strings.
+
+2010-02-08 Christophe Lyon <christophe.lyon@st.com>
+
+ * objdump.c (disassemble_bytes): Clear aux->reloc before printing
+ a new address, so as not to reuse a previous, non-related reloc.
+
+2010-02-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (get_note_type): Handle NT_X86_XSTATE.
+
+2010-02-01 Nathan Sidwell <nathan@codesourcery.com>
+
+ * objcopy.c (copy_object): Set SEC_LINKER_CREATED when adding
+ sections.
+
+2010-01-28 Nick Clifton <nickc@redhat.com>
+
+ PR 11225
+ * objdump.c (only): Replace with linked list.
+ (only_size, only_used): Replace with only_list.
+ (process_section_p): Set seen field on matches sections.
+ (add_only): New function.
+ (free_only_list): New function.
+ (disassemble_section): Check only_list.
+ (main): Use add_only and free_only_list.
+
+2010-01-26 Tristan Gingold <gingold@adacore.com>
+
+ * Makefile.am (bin2c): Add libintl dependance and library.
+ * Makefile.in: Regenerate.
+
+2010-01-21 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * readelf.c (get_machine_flags): Handle EF_S390_HIGH_GPRS.
+
+2010-01-19 Ian Lance Taylor <iant@google.com>
+
+ * objcopy.c (copy_main): Rewrite OPTION_ADD_SECTION code to work
+ with non-ordinary files like /dev/null.
+
+2010-01-19 Daisuke Hatayama <d.hatayama@jp.fujitsu.com>
+ Alan Modra <amodra@gmail.com>
+
+ * readelf.c (process_file_header): Handle e_phnum extension.
+
+2010-01-14 Tristan Gingold <gingold@adacore.com>
+
+ * dwarf.c (get_AT_name): Handle DW_AT_use_GNAT_descriptive_type
+ and DW_AT_GNAT_descriptive_type.
+
+2010-01-13 Tristan Gingold <gingold@adacore.com>
+
+ * ar.c (main): Use lbasename.
+ (normalize): Ditto.
+ * objdump.c (update_source_path): Ditto.
+
+2010-01-12 Tristan Gingold <gingold@adacore.com>
+
+ * makefile.vms (CFLAGS): Turns warnings into informational messages.
+
+2010-01-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/11146
+ * NEWS: Mention --dyn-syms for readelf.
+
+ * readelf.c (do_dyn_syms): New.
+ (OPTION_DYN_SYMS): Likewise.
+ (options): Add "dyn-syms".
+ (usage): Add --dyn-syms.
+ (parse_args): Handle OPTION_DYN_SYMS.
+ (process_symbol_table): Handle do_dyn_syms.
+ (process_object): Likewise.
+ (process_archive): Likewise.
+
+ * doc/binutils.texi: Document --dyn-syms for readelf. Mention
+ symbol hash tables for -D.
+
+2010-01-11 Nick Clifton <nickc@redhat.com>
+
+ * NEWS: Mention addition of elfedit.
+
+ * po/fi.po: Updated Finnish translation.
+
+2010-01-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+ * doc/Makefile.in: Regenerate.
+
+2010-01-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * version.c (print_version): Change to "Copyright 2010".
+
+2010-01-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elfedit.c (input_elf_type): New.
+ (output_elf_type): Likewise.
+ (elf_type): Likewise.
+ (update_elf_header): Support updating ELF file type.
+ (command_line_switch): Add OPTION_INPUT_TYPE and
+ OPTION_OUTPUT_TYPE.
+ (options): Likewise.
+ (usage): Add --input-type and --output-type.
+ (main): Handle OPTION_INPUT_TYPE and OPTION_OUTPUT_TYPE. Check
+ one of --output-mach and --output-type must be specified.
+
+ * doc/binutils.texi: Document --input-type and --output-type
+ for elfedit.
+
+2010-01-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * doc/binutils.texi: Fix a typo.
+
+2010-01-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elfedit.c (update_elf_header): Don't change input_elf_class
+ nor input_elf_machine if they are -1.
+
+2010-01-08 Tristan Gingold <gingold@adacore.com>
+
+ * ar.c: Remove bfd_special_undocumented_glue prototype.
+
+2010-01-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elfedit.c (update_elf_header): Reformat.
+
+2010-01-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (usage): Fix indent for --symbols.
+
+2010-01-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * doc/binutils.texi: Replace -histogram with --histogram.
+
+2010-01-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/11131
+ * Makefile.am (ELFEDIT_PROG): New.
+ (bin_PROGRAMS): Add $(ELFEDIT_PROG).
+ (CFILES): Add elfedit.c.
+ (elfedit_DEPENDENCIES): New.
+ (elfedit_SOURCES): Likewise.
+ (elfedit_LDADD): Likewise.
+ * Makefile.in: Regenerated.
+
+ * elfedit.c: New.
+
+ * doc/binutils.texi: Document elfedit.
+
+ * doc/Makefile.am (man_MANS): Add elfedit.1.
+ (elfedit.1): New.
+ * doc/Makefile.in: Regenerated.
+
+2010-01-06 Tristan Gingold <gingold@adacore.com>
+
+ * nm.c (usage): Remove extra blanks.
+
+2010-01-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objcopy.c: Update copyright.
+ * readelf.c: Likewise.
+
+2010-01-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/11130
+ * objcopy.c (copy_object): Remove "Warning: " from error
+ message.
+
+2010-01-04 Nick Clifton <nickc@redhat.com>
+
+ PR 11128
+ * readelf.c (dump_section_as_strings): Use two separate
+ invocations of printf() in order to work around bugs in
+ the Solaris 8 implementation.
+
+2010-01-04 Nick Clifton <nickc@redhat.com>
+
+ * po/ru.po: Updated Russian translation.
+
+For older changes see ChangeLog-2009
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-2011 b/binutils-2.24/binutils/ChangeLog-2011
new file mode 100644
index 00000000..c92d0d36
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-2011
@@ -0,0 +1,936 @@
+2011-12-28 Ian Lance Taylor <iant@google.com>
+
+ * dwarf.c (read_and_display_attr_value): Handle DW_LANG_Go.
+
+2011-12-20 Roland McGrath <mcgrathr@google.com>
+
+ * configure.in (--enable-deterministic-archives): Grok new
+ argument. Set DEFAULT_AR_DETERMINISTIC to 1 or 0 accordingly.
+ * configure: Regenerated.
+ * config.in: Regenerated.
+ * ar.c (deterministic): Initialize to -1.
+ (decode_options, ranlib_main): Grok U option.
+ (usage, ranlib_usage): Mention U; say for D and U which is the default.
+ (default_deterministic): New function.
+ (ranlib_main): Call it.
+ (main): Likewise. Make newer_only && deterministic error
+ non-fatal if it was just DEFAULT_AR_DETERMINISTIC and not the D option.
+ * doc/binutils.texi (ar cmdline, ranlib): Document U modifier and
+ --enable-deterministic-archives behavior.
+
+2011-12-16 Tristan Gingold <gingold@adacore.com>
+
+ * od-macho.c: Include mach-o/codesign.h
+ (OPT_CODESIGN): Define.
+ (options): Add an entry for codesign.
+ (mach_o_help): Likewise.
+ (dump_header): Fix indentation.
+ (dump_thread): Do not test result of xmalloc.
+ (bfd_mach_o_cs_magic, bfd_mach_o_cs_hash_type): New.
+ (dump_code_signature_superblob): New function.
+ (swap_code_codedirectory_v1_in): Likewise.
+ (hexdump): Likewise.
+ (dump_code_signature_codedirectory): Likewise.
+ (dump_code_signature_blob, dump_code_signature): Likewise.
+ (dump_load_command): Dump code signature.
+ (mach_o_dump): Likewise.
+
+2011-12-15 Andreas Tobler <andreast@fgznet.ch>
+
+ * readelf.c (get_symbol_type): Add ELFOSABI_FREEBSD to the
+ supported abi's.
+
+2011-12-13 Tristan Gingold <gingold@adacore.com>
+
+ * od-macho.c: New file.
+ * objdump.h (objdump_private_desc_mach_o): Add.
+ * configure.in: Add Mach-O od_vectors.
+ * Makefile.am (CFILES): Add od-macho.c
+ * configure: Regenerate.
+ * Makefile.in: Regenerate.
+
+2011-12-06 David Daney <david.daney@cavium.com>
+
+ * readelf.c (dynamic_section_mips_val): Factor out trailing '\n'
+ from printed strings and move it to the end of the function.
+ Use BFD_VMA_FMT for printf format specifier for dynamic tag value.
+ Use print_vma() to print dynamic tag values.
+
+2011-12-02 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (ia64_process_unwind): Turn into a void funtion.
+ (hppa_process_unwind): Likewise.
+ (arm_process_unwind): Likewise.
+ (process_unwind): Likewise.
+ (arm_get_section_word): Rename to get_unwind_section_word.
+ Add sym_name parameter to return the offset into the string table
+ of the symbol associated with the reloc applied to the word.
+ (decode_tic6x_unwind_regmask): Add NULL argument to invocation of
+ get_unwind_section_word.
+ (dump_arm_unwind): Likewise.
+ (decode_arm_unwind_bytecode): Prepend a comma when *not* the first
+ register in a list.
+ (decode_arm_unwind): If the returned function address is 0 and a
+ valid symname offset is provided use that to compute the name
+ associated with the entry.
+ Add extra checks of the compact model index entry.
+
+2011-11-29 Roland McGrath <mcgrathr@google.com>
+
+ * ar.c (ranlib_usage): Describe -D.
+ (ranlib_main): Parse -D.
+ (ranlib_touch): Set BFD_DETERMINISTIC_OUTPUT under -D.
+ * doc/binutils.texi (ranlib): Describe -D, and also --help/-h/-H.
+
+2011-11-28 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/13421
+ * readelf.c (arm_section_get_word): Add descriptive comments.
+ Initliase the rel_type field of the arm_sec structure.
+ (expand_prel31): Rename to arm_expand_prel31.
+ (dump_arm_unwind): Use new name.
+ Print the function name based on the function address entry.
+
+2011-11-11 Andreas Schwab <schwab@linux-m68k.org>
+
+ * readelf.c (process_program_headers): Fix typo printing p_memsz
+ field.
+
+2011-11-01 DJ Delorie <dj@redhat.com>
+
+ * readelf.c: Include elf/rl78.h
+ (guess_is_rela): Handle EM_RL78.
+ (dump_relocations): Likewise.
+ (get_machine_name): Likewise.
+ (is_32bit_abs_reloc): Likewise.
+ * NEWS: Mention addition of RL78 support.
+ * MAINTAINERS: Add myself as RL78 port maintainer.
+
+2011-10-28 Ian Lance Taylor <iant@google.com>
+
+ * dwarf.c (display_debug_frames): If do_debug_frames_interp,
+ DW_CFA_restore goes to DW_CFA_undefined, not DW_CFA_unreferenced.
+
+2011-10-28 Walter Lee <walt@tilera.com>
+
+ * NEWS: Mention addition of TILEPro and TILE-Gx support.
+ * MAINTAINERS: Add myself as TILEPro and TILE-Gx port maintainer.
+
+2011-10-27 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * MAINTAINERS: Add myself as EPIPHANY port maintainer.
+
+2011-10-25 Mike Frysinger <vapier@gentoo.org>
+
+ * Makefile.am (syslex.@OBJEXT@): Add -I$(srcdir).
+ * Makefile.in: Regen.
+
+2011-10-25 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * readelf.c: Include "elf/epiphany.h".
+ (guess_is_rela, dump_relocation): Handle EM_ADAPTEVA_EPIPHANY.
+ (get_machine_name, is_32bit_abs_reloc, is_32bit_pcrel_reloc): Likewise.
+ (is_16bit_abs_reloc, is_none_reloc): Likewise.
+ * po/binutils.pot: Regenerate.
+
+2011-10-25 Kai Tietz <ktietz@redhat.com>
+
+ * winduni.h (unicode_from_ascii_len): New prototype.
+ * winduni.c (unicode_from_ascii_len): New function.
+ * windres.h (define_stringtable): Add additional length argument.
+ * windres.c (define_stringtable): Add length argument for string.
+ * rcparse.y (res_unicode_sizedstring): New rule.
+ (res_unicode_sizedstring_concat): Likewise.
+ (string_data): Adjust rule.
+
+2011-10-24 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwarf.c (read_and_display_attr_value) <DW_AT_import>: Add CU_OFFSET
+ also for DW_FORM_ref_udata.
+
+2011-10-24 Nick Clifton <nickc@redhat.com>
+
+ * po/ja.po: Updated Japanese translation.
+
+2011-10-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/13278
+ * ar.c (open_inarch): Set the target from the first object
+ on the list only if it isn't set.
+
+2011-10-13 Nick Clifton <nickc@redhat.com>
+
+ Fixes to aid translation:
+ * addr2line.c (translate_address): Add comments describing context
+ of a couple of printf statements.
+ * ar.c (write_archive): Allow translation of error message.
+ * bucomm.c (endian_string): Allow translation of strings.
+ (display_target_list): Allow translation.
+ * coffdump.c (dump_coff_type): Allow translation of output.
+ (dump_coff_where): Likewise.
+ (dump_coff_symbol): Likewise.
+ (dump_coff_scope): Likewise.
+ (dump_coff_sfile): Likewise.
+ (dump_coff_section): Likewise.
+ (coff_dump): Likewise.
+ * dlltool (def_version): Allow translation of output.
+ (run): Likewise.
+ * dllwrap.c (run): Allow translation of output.
+ * dwarf.c (print_dwarf_vma): Allow translation of output.
+ (process_extended_line_op): Remove spurious translation.
+ Add translation for strings that can be translated.
+ (decode_location_exression): Allow translation of output.
+ (read_and_display_attr_value): Allow translation of output.
+ * readelf.c (slurp_rela_relocs): Add translation for error
+ messages when failing to get data.
+ (slurp_rel_relocs): Likewise.
+ (get_32bit_elf_symbols): Likewise.
+ (get_64bit_elf_symbols): Likewise.
+ (dump_ia64_vms_dynamic_relocs): Replace abbreviation with full
+ word.
+ (process_relocs): Remove spurious translation.
+ (decode_tic6x_unwind_bytecode): Likewise.
+ (process_version_section): Improve error messages.
+ (process_mips_specific): Likewise.
+ (print_gnu_note): Remove spurious translation.
+ (print_stapsdt_note): Likewise.
+ (get_ia64_vms_note_type): Likewise.
+ * sysdump.c (getCHARS): Allow translation.
+ (fillup): Allow translation of output.
+ (getone): Likewise.
+ (must): Likewise.
+ (derived_type): Likewise.
+ * doc/binutils.doc (addr2line): Extend description of command line
+ options.
+ * po/binutils.pot: Regenerate.
+
+2011-10-13 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/13219
+ * readelf.c (GET_ELF_SYMBOLS): Add sym_count parameter.
+ (get_32bit_elf_symbols): Add num_syms_return argument.
+ Return the number of symbols loaded into the symbol table.
+ (get_64bit_elf_symbols): Likewise.
+ (process_section_headers): Use GET_ELF_SYMBOLS to initialise
+ symbol count.
+ (proces_relocs): Likewise.
+ (ia64_process_unwind): Likewise.
+ (hppa_process_unwind): Likewise.
+ (arm_process_unwind): Likewise.
+ (process_dynamic_section): Likewise.
+ (process_version_sections): Likewise.
+ (process_symbol_table): Likewise.
+ (process_section_groups): Likewise.
+ Add check before indexing into the symbol table.
+ (apply_relocations): Likewise.
+
+2011-10-11 Chris <player1@onet.eu>
+
+ PR binutils/13051
+ Fix a syntax error bug when compiling rc files with the VERSIONINFO resource
+ containing more than one language block inside a single StringFileInfo block.
+
+ * windint.h (rc_ver_stringtable): New structure definition.
+ (rc_ver_info): Use it.
+ * rcparse.y (verstringtable): New variable.
+ (verstringtables): New type.
+ (verstringtables:): New rule declaration.
+ (verblocks:): Use it.
+ * resrc.c (append_ver_stringtable): New function.
+ (append_ver_stringfileinfo): Update to use stringtables.
+ * windres.h (append_ver_stringfileinfo): Update declaration.
+ (append_ver_stringtable): New declaration.
+ * resrc.c (write_rc_versioninfo): Update to support multiple blocks.
+ * resbin.c (bin_to_res_version): Likewise.
+ (res_to_bin_versioninfo): Likewise.
+
+2011-10-10 Nick Clifton <nickc@redhat.com>
+
+ * po/bg.po: Updated Bulgarian translation.
+ * po/es.po: Updated Spansih translation.
+ * po/fi.po: Updated Finnish translation.
+ * po/fr.po: Updated French translation.
+
+2011-10-05 DJ Delorie <dj@redhat.com>
+ Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (get_machine_dlags): Add support for RX's PID mode.
+
+2011-10-04 Paul Woegerer <paul_woegerer@mentor.com>
+ Carlos O'Donell <carlos@codesourcery.com>
+
+ * dwarf.c (display_debug_lines_decoded): Index directory_table with
+ directory_index from file_table entry.
+
+2011-09-30 Cary Coutant <ccoutant@google.com>
+
+ * binutils/dwarf.h (dwarf_section_display_enum): Add missing enum
+ constant.
+
+2011-09-28 Tristan Gingold <gingold@adacore.com>
+
+ * od-xcoff.c (dump_xcoff32_aout_header): Fix typo.
+
+2011-09-27 Tristan Gingold <gingold@adacore.com>
+
+ * od-xcoff.c (dump_xcoff32_aout_header): Remove some gettext macros.
+ (dump_xcoff32_sections_header): Likewise.
+ (dump_xcoff32_symbols, dump_xcoff32_relocs): Likewise.
+ (dump_xcoff32_lineno, dump_xcoff32_loader): Likewise.
+ (dump_xcoff32_except): Likewise.
+ (dump_xcoff32_typchk, dump_xcoff32_tbtags): Likewise.
+
+2011-09-27 Tristan Gingold <gingold@adacore.com>
+
+ * readelf.c (print_ia64_vms_note): Fix xgettext warnings.
+
+2011-09-22 Tristan Gingold <gingold@adacore.com>
+
+ * NEWS: Add marker for 2.22.
+
+2011-09-21 David S. Miller <davem@davemloft.net>
+
+ * MAINTAINER: Take over from Jakub Jalinek as SPARC maintainer.
+
+ * readelf.c (display_sparc_hwcaps): New.
+ (display_sparc_gnu_attribute): New.
+ (process_sparc_specific): New.
+ (process_arch_specific): When EM_SPARC, EM_SPARC32PLUS,
+ or EM_SPARCV9 invoke process_sparc_specific.
+
+2011-09-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/13196
+ * dwarf.c (display_debug_aranges): Check zero address size.
+
+2011-09-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/13180
+ * objcopy.c (is_strip_section_1): New.
+ (is_strip_section): Use it. Remove the group section if all
+ members are removed.
+
+2011-09-08 Nick Clifton <nickc@redhat.com>
+
+ * po/ja.po: Updated Japanese translation.
+
+2011-08-26 Nick Clifton <nickc@redhat.com>
+
+ * po/es.po: Updated Spanish translation.
+
+2011-08-08 Marcus Comstedt <marcus@mc.pp.se>
+
+ PR binutils/12964
+ * Makefile.am (embedspu): Use awk rather than sed.
+ * Makefile.in: Regenerate.
+
+2011-07-27 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwarf.c (read_and_display_attr_value): Recognize DW_FORM_data4 and
+ DW_FORM_data8 as location list pointers only for DWARF < 4.
+
+2011-07-26 Jakub Jelinek <jakub@redhat.com>
+
+ * NEWS: Mention .debug_macro support.
+ * dwarf.c (read_and_display_attr_value): Don't print a tab
+ if attribute is 0.
+ (get_AT_name): Handle DW_AT_GNU_macros.
+ (get_line_filename_and_dirname, display_debug_macro): New
+ functions.
+ (debug_displays): Add an entry for .debug_macro and .zdebug_macro.
+ * readelf.c (process_section_headers): With do_debug_macinfo
+ handle also .debug_macro sections.
+ * dwarf.h (dwarf_section_display_enum): Add macro.
+
+2011-07-24 Chao-ying Fu <fu@mips.com>
+ Maciej W. Rozycki <macro@codesourcery.com>
+
+ * readelf.c (get_machine_flags): Handle microMIPS ASE.
+ (get_mips_symbol_other): Likewise.
+
+2011-07-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ * dwarf.c (init_dwarf_regnames): Handle EM_K1OM.
+
+ * elfedit.c (elf_machine): Support EM_K1OM.
+ (elf_class): Likewise.
+
+ * readelf.c (guess_is_rela): Handle EM_K1OM.
+ (dump_relocations): Likewise.
+ (get_machine_name): Likewise.
+ (get_section_type_name): Likewise.
+ (get_elf_section_flags): Likewise.
+ (process_section_headers): Likewise.
+ (get_symbol_index_type): Likewise.
+ (is_32bit_abs_reloc): Likewise.
+ (is_32bit_pcrel_reloc): Likewise.
+ (is_64bit_abs_reloc): Likewise.
+ (is_64bit_pcrel_reloc): Likewise.
+ (is_none_reloc): Likewise.
+
+ * doc/binutils.texi: Mention K1OM for elfedit.
+
+2011-07-11 Cary Coutant <ccoutant@google.com>
+
+ PR 12983
+ * binutils/nm.c (display_file): Decompress debug sections when
+ printing line numbers.
+
+2011-07-03 Samuel Thibault <samuel.thibault@gnu.org>
+ Thomas Schwinge <thomas@schwinge.name>
+
+ PR binutils/12913
+ * elfedit.c (osabis): Use ELFOSABI_GNU name instead of ELFOSABI_LINUX
+ alias and ELFOSABI_HURD. Add GNU alias.
+ * readelf.c (get_osabi_name, get_symbol_binding, get_symbol_type):
+ Likewise.
+ * doc/binutils.texi <elfedit>: Update accordingly.
+
+2011-07-01 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/12325
+ * doc/binutils.texi (ar cmdline): Document --target, --version and
+ --help command line options.
+
+2011-06-30 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/12558
+ * ar.c (main): When asked to move members in an archive that is
+ being created, ignore the move request.
+
+2011-06-29 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (get_section_type_name): When displaying an unknown
+ section type display the hex value first on the assumption that
+ the full message will probably be truncated into a 15 character
+ field.
+
+2011-06-22 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (decode_location_expression): For DW_OP_GNU_convert and
+ DW_OP_GNU_reinterpret, if uvalue is 0, don't add cu_offset.
+ Handle DW_OP_GNU_parameter_ref.
+
+2011-06-16 Tom Tromey <tromey@redhat.com>
+
+ * dwarf-mode.el (dwarf-do-insert-substructure): Call
+ expand-file-name.
+ (dwarf-do-refresh): Likewise.
+
+2011-06-15 Ulrich Weigand <ulrich.weigand@linaro.org>
+
+ * readelf.c (get_note_type): Handle NT_ARM_VFP.
+
+2011-06-13 Walter Lee <walt@tilera.com>
+
+ * readelf.c: Include tilepro.h and tilegx.h.
+ (guess_is_rela): Handle EM_TILEGX and EM_TILEPRO.
+ (dump_relocations): Likewise.
+ (get_machine_name): Likewise.
+ (is_32bit_abs_reloc): Likewise.
+ (is_32bit_pcerel_reloc): Likewise.
+ (is_64bit_abs_reloc): Likewise.
+ (is_64bit_pcrel_reloc): Likewise.
+
+2011-06-09 Tristan Gingold <gingold@adacore.com>
+
+ * od-xcoff.c (xcoff32_read_symbols): Allow missing string table
+ length.
+
+2011-06-08 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/12855
+ * readelf.c (process_version_sections): Handle binaries containing
+ corrupt version information.
+ (process_symbol_table): Stop processing a symbol's version
+ information if it could not be read in.
+
+ (get_data): Add comment describing the function.
+ (process_section_headers): Set dynamic_strings_length to 0 if the
+ dynamic strings could not be read in.
+ (process_dynamic_section): Likewise.
+ (process_section_groups): Stop processing the group information if
+ the data could not be read in.
+ (hppa_processs_unwind): Assert that there is only one string table
+ in the file.
+ (arm_process_unwind): Likewise.
+ (ia64_process_unwind): Likewise.
+ Set the size of the unwind auxillary information to 0 if the data
+ could not be read.
+ (load_specific_debug_section): Handle a failure to read in the
+ section.
+ (process_mips_specific): Stop display of the PLT GOT section if it
+ could not be read in.
+
+2011-06-08 Tristan Gingold <gingold@adacore.com>
+
+ * makefile.vms (DEFS): Define OBJDUMP_PRIVATE_VECTORS.
+
+2011-06-07 Cary Coutant <ccoutant@google.com>
+
+ * dwarf.c: Fix conversion to TU number.
+
+2011-06-02 Nick Clifton <nickc@redhat.com>
+
+ * resres.c: Fix spelling typo.
+ * windint.h: Likewise.
+ * windmc.c: Likewise.
+ * windres.c: Likewise.
+ * po/POTFILES.in: Regenerate.
+ * po/binutils.pot: Regenerate.
+
+2011-06-01 Daniel Jacobowitz <drow@false.org>
+
+ * MAINTAINERS: Update my email address.
+
+2011-05-31 Matthias Klose <doko@ubuntu.com>
+
+ * configure.in (BUILD_INSTALL_MISC): Only add embedspu once.
+ * configure: Regenerate.
+
+2011-05-30 Alan Modra <amodra@gmail.com>
+
+ PR binutils/12820
+ * Makefile.am (bin_PROGRAMS): Move BUILD_INSTALL_MISC to..
+ (bin_SCRIPTS): ..here.
+ (EXTRA_SCRIPTS): Define.
+ (EXTRA_DIST): Add embedspu.sh.
+ (DISTCLEANFILES): Add embedspu.
+ (embedspu): Depend on Makefile. Replace sed "s" command with "c".
+ * Makefile.in: Regenerate.
+
+2011-05-25 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (loc_offsets): New variable.
+ (loc_offsets_compar): New routine.
+ (display_debug_loc): Handle loc_offsets not being in ascending order
+ and also a single .debug_loc entry being used multiple times.
+
+2011-05-18 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/12753
+ * nm.c (filter_symbols): Treat unique symbols as global symbols.
+ * doc/binutils.texi (nm): Mention that some lowercase letters
+ actually indicate global symbols.
+
+2011-05-15 Tristan Gingold <gingold@adacore.com>
+
+ * od-xcoff.c: New file.
+ * objdump.h: New file.
+ * objdump.c: Include objdump.h
+ (dump_private_options, objdump_private_vectors): New variables.
+ (usage): Mention -P/--private. Display handled options.
+ (long_options): Add -P/--private.
+ (dump_target_specific): New function.
+ (dump_bfd): Handle dump_private_options.
+ (main): Handle -P.
+ * doc/binutils.texi (objdump): Document -P/--private.
+ * configure.in (OBJDUMP_PRIVATE_VECTORS, OBJDUMP_PRIVATE_OFILES):
+ New variables, compute them.
+ (od_vectors): Add vectors for private dumpers. Make them uniq.
+ (OBJDUMP_DEFS): Add OBJDUMP_PRIVATE_VECTORS.
+ * Makefile.am (HFILES): Add objdump.h
+ (CFILES): Add od-xcoff.c
+ (OBJDUMP_PRIVATE_OFILES): New variable.
+ (objdump_DEPENDENCIES): Append OBJDUMP_PRIVATE_OFILES.
+ (objdump_LDADD): Ditto.
+ (EXTRA_objdump_SOURCES): Define.
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
+
+2011-05-10 Tristan Gingold <gingold@adacore.com>
+
+ * dwarf.c (process_extended_line_op): Dump unknown records.
+
+2011-05-07 Alan Modra <amodra@gmail.com>
+
+ PR binutils/12632
+ * objcopy.c (copy_archive): Check bfd_openw result in unknown object
+ case. Rewrite without goto.
+
+2011-05-03 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (decode_location_expression): Handle DW_OP_GNU_const_type,
+ DW_OP_GNU_regval_type, DW_OP_GNU_deref_type, DW_OP_GNU_convert
+ and DW_OP_GNU_reinterpret.
+
+ * MAINTAINERS: Add myself as DWARF2 maintainer.
+
+2011-05-02 Alan Modra <amodra@gmail.com>
+
+ PR binutils/12720
+ Revert the following change
+ Michael Snyder <msnyder@vmware.com>
+ * ar.c (move_members): Plug memory leak.
+ (delete_members): Plug memory leak.
+
+2011-04-28 Tom Tromey <tromey@redhat.com>
+
+ * NEWS: Add note about --dwarf-depth, --dwarf-start, and
+ dwarf-mode.el.
+ * objdump.c (suppress_bfd_header): New global.
+ (usage): Update.
+ (OPTION_DWARF_DEPTH, OPTION_DWARF_START): New constants.
+ (options): Add dwarf-depth and dwarf-start entries.
+ (dump_bfd): Use suppress_bfd_header.
+ (main): Handle OPTION_DWARF_START, OPTION_DWARF_DEPTH.
+ * doc/binutils.texi (objcopy): Document --dwarf-depth and
+ --dwarf-start.
+ (readelf): Likewise.
+ * dwarf-mode.el: New file.
+ * dwarf.c (dwarf_cutoff_level, dwarf_start_die): New globals.
+ (read_and_display_attr_value): Also check debug_info_p.
+ (process_debug_info): Handle dwarf_start_die and
+ dwarf_cutoff_level.
+ * dwarf.h (dwarf_cutoff_level, dwarf_start_die): Declare.
+ * readelf.c (usage): Update.
+ (OPTION_DWARF_DEPTH): New macro.
+ (OPTION_DWARF_START): Likewise.
+ (options): Add dwarf-depth and dwarf-start entries.
+ (parse_args): Handle OPTION_DWARF_START and OPTION_DWARF_DEPTH.
+
+2011-04-28 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwarf.c (display_gdb_index): Support version 5, warn on version 4.
+
+2011-04-27 Tristan Gingold <gingold@adacore.com>
+
+ * dwarf.c (process_extended_line_op): Handle
+ DW_LNE_HP_source_file_correlation.
+
+2011-04-27 Nick Clifton <nickc@redhat.com>
+
+ * po/da.po: Updated Danish translation.
+
+2011-04-21 Tom Tromey <tromey@redhat.com>
+
+ * readelf.c (print_stapsdt_note): New function.
+ (process_note): Use it.
+
+2011-04-21 Tom Tromey <tromey@redhat.com>
+
+ * readelf.c (get_stapsdt_note_type): New function.
+ (process_note): Recognize "stapsdt" notes.
+
+2011-04-21 Tom Tromey <tromey@redhat.com>
+
+ * readelf.c (process_corefile_note_segment): Change header field
+ widths.
+ (process_note): Change field widths.
+
+2011-04-21 Tom Tromey <tromey@redhat.com>
+
+ * readelf.c (print_gnu_note): New function.
+ (process_note): Use it.
+
+2011-04-21 Jie Zhang <jzhang918@gmail.com>
+
+ * MAINTAINERS: Update my email address.
+
+2011-04-11 Kai Tietz <ktietz@redhat.com>
+
+ * windres.c (usage): Add new --preprocessor-arg option.
+ (option_values): Add new OPTION_PREPROCESSOR_ARG enumerator.
+ (option long_options): Add preprocessor-arg option.
+ (main): Handle it.
+ * doc/binutils.texi: Add documentation for --preprocessor-arg
+ option.
+ * NEWS: Add line about new --preprocessor-arg option for windres.
+
+2011-04-08 John Marino <binutils@marino.st>
+
+ * arlex.l: Prevent redefinition of YY_NO_UNPUT.
+ * syslex.l: Likewise.
+
+2011-04-07 Paul Brook <paul@codesourcery.com>
+
+ * readelf.c (arm_section_get_word): Handle C6000 relocations.
+ (decode_tic6x_unwind_regmask, decode_arm_unwind_bytecode,
+ decode_tic6x_unwind_bytecode, expand_prel31): New functions.
+ (decode_arm_unwind): Split out common code from ARM specific bits.
+ (dump_arm_unwind): Use expand_prel31.
+ (arm_process_unwind): Handle SHT_C6000_UNWIND sections.
+ (process_unwind): Add SHT_C6000_UNWIND.
+
+2011-04-06 Joseph Myers <joseph@codesourcery.com>
+
+ * configure.in (thumb-*-pe*): Remove.
+ * configure: Regenerate.
+
+2011-04-05 Sterling Augustine <augustine.sterling@gmail.com>
+
+ * MAINTAINERS: Update my email address.
+
+2011-04-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/12632
+ * objcopy.c (copy_unknown_object): Make the archive element
+ readable.
+
+2011-04-03 David S. Miller <davem@davemloft.net>
+
+ * objdump.c (dump_reloc_set): Output R_SPARC_OLO10 relocations
+ accurately, rather than how they are represented internally.
+
+2011-03-31 Tristan Gingold <gingold@adacore.com>
+
+ * makefile.vms (readelf.exe): New target.
+
+2011-03-31 Tristan Gingold <gingold@adacore.com>
+
+ * makefile.vms (DEBUG_OBJS): Add elfcomm.obj.
+
+2011-03-31 Bernd Schmidt <bernds@codesourcery.com>
+
+ * readelf.c (get_symbol_index_type): Handle SCOM for TIC6X.
+ (dump_relocations): Likewise.
+
+2011-03-31 Tristan Gingold <gingold@adacore.com>
+
+ * readelf.c (get_ia64_vms_note_type): New function.
+ (print_ia64_vms_note): Ditto.
+ (process_note): Recognize VMS/ia64 specific notes.
+ Display them.
+ (process_corefile_note_segment): Decode VMS notes.
+
+2011-03-30 Catherine Moore <clm@codesourcery.com>
+
+ * addr2line.c (translate_addresses): Sign extend the pc
+ if sign_extend_vma is enabled.
+
+2011-03-30 Michael Snyder <msnyder@msnyder-server.eng.vmware.com>
+
+ * readelf.c (process_gnu_liblist): Stop memory leak.
+
+2011-03-29 Alan Modra <amodra@gmail.com>
+
+ * coffdump.c: Include bfd_stdint.h
+
+2011-03-28 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * coffdump.c (coff_dump): Correct spelling error.
+ (show_usage): Replace SYSROFF by COFF.
+
+2011-03-25 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * coffdump.c (dump_coff_scope): Use double typecast for pointer P
+ to allow compilation for all targets.
+
+2011-03-25 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ * dwarf.c (process_debug_info): Use offset_size to determine
+ the bit-size of the computation unit's offset.
+ (decode_location_expression): Use dwarf_vmatoa function to display
+ DW_OP_addr OP.
+ (process_debug_info): Use dwarf_vma type for local variables
+ length and type_offset.
+
+2011-03-25 Michael Snyder <msnyder@vmware.com>
+
+ * strings.c (print_strings): Plug memory leak.
+ * ar.c (move_members): Plug memory leak.
+ (delete_members): Plug memory leak.
+ (write_archive): Plug memory leak.
+ * ieee.c (ieee_add_bb11): Plug memory leak.
+ (ieee_function_type): Likewise.
+ (ieee_class_baseclass): Likewise.
+ * prdbg.c (pr_function_type): Close memory leaks.
+ (pr_method_type): Likewise.
+ (tg_class_static_member): Likewise.
+ (tg_class_method_variant): Likewise.
+ (tg_class_static_method_variant): Likewise.
+ * stabs.c (parse_stab_enum_type): Fix memory leaks.
+ (parse_stab_struct_type): Likewise.
+ (parse_stab_struct_fields): Likewise.
+ (parse_stab_one_struct_field): Likewise.
+ (parse_stab_members): Likewise.
+ (stab_demangle_qualified): Likewise.
+ * objdump.c (dump_reloc_set): Free malloced memory.
+ * bucomm.c (make_tempname): Stop memory leak.
+
+2011-03-25 Pierre Muller <muller@ics.u-strasbg.fr>
+
+ Replace bfd_vma type and analog types by dwarf_vma and analogs.
+ Use dwarf specific print functions to display these type values.
+ * dwarf.h (dwarf_signed_vma): New type;
+ (DWARF2_External_LineInfo): Replace bfd_vma by dwarf_vma.
+ (DWARF2_External_PubNames): Likewise.
+ (DWARF2_External_CompUnit): Likewise.
+ (DWARF2_External_ARange): Likewise.
+ (read_leb128): Change return type to dwarf_vma.
+ * dwarf.c (print_dwarf_vma): Use __MINGW32__ conditional and
+ check byte_size values.
+ (dwarf_vmatoa): Change parameter type to dwarf_vma.
+ (dwarf_svmatoa): New static function.
+ (read_leb128): Change return type to dwarf_vma.
+ (read_sleb128): New static function.
+ (struct State_Machine_Registers): Change address field type to
+ dwarf_vma.
+ (process_extended_line_op): Adapt to type changes.
+ (fetch_indirect_string): Likewise.
+ (idisplay_block): Likewise.
+ (decode_location_expression): Likewise.
+ (read_and_display_attr_value): Likewise.
+ (process_debug_info): Likewise.
+ (display_debug_lines_raw): Likewise.
+ (display_debug_lines_decoded): Likewise.
+ (SLEB macro): Use new read_sleb128 function.
+
+2011-03-17 Alan Modra <amodra@gmail.com>
+
+ PR 12590
+ * ar.c (ranlib_main): Init arg_index properly.
+ (usage): Describe --target.
+
+2011-03-16 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (dw_TAG_name): Handle DW_TAG_GNU_call_site_parameter.
+ (read_and_display_attr_value): Handle DW_AT_GNU_call_site_data_value,
+ DW_AT_GNU_call_site_target and DW_AT_GNU_call_site_target_clobbered.
+ (get_AT_name): Handle DW_AT_GNU_call_site_value,
+ DW_AT_GNU_call_site_data_value, DW_AT_GNU_call_site_target,
+ DW_AT_GNU_call_site_target_clobbered, DW_AT_GNU_tail_call,
+ DW_AT_GNU_all_tail_call_sites, DW_AT_GNU_all_call_sites and
+ DW_AT_GNU_all_source_call_sites.
+ (decode_location_expression) <case DW_OP_GNU_entry_value>: Adjust
+ handling.
+
+2011-03-16 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwarf.c (get_TAG_name): Handle DW_TAG_GNU_call_site.
+ (decode_location_expression): Handle DW_OP_GNU_entry_value.
+ (read_and_display_attr_value): Handle DW_AT_GNU_call_site_value.
+ (get_AT_name): Likewise.
+
+2011-03-14 Michael Snyder <msnyder@vmware.com>
+
+ * objcopy.c (set_pe_subsystem): Free subsystem.
+
+ * wrstabs.c (stab_start_struct_type): Close memory leak.
+
+ * readelf.c (process_version_sections): Free symbols.
+
+ * nm.c (display_rel_file): Free symsizes.
+
+2011-03-10 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (get_machine_name): Update EM_V850 entry.
+
+2011-03-03 Mike Frysinger <vapier@gentoo.org>
+
+ * objdump.c (usage): Fix single typo.
+ * po/bg.po, po/binutils.pot, po/da.po, po/es.po, po/fi.po,
+ po/fr.po, po/id.po, po/ja.po, po/ru.po, po/vi.po: Likewise.
+
+2011-03-01 Akos Pasztory <akos.pasztory@gmail.com>
+
+ PR binutils/12523
+ * readelf.c (process_object): Clear dynamic_info_DT_GNU_HASH.
+
+2011-02-28 Kai Tietz <kai.tietz@onevision.com>
+
+ * debug.c (debug_start_source): Use filename_(n)cmp.
+ * ieee.c (ieee_finish_compilation_unit): Likewise.
+ (ieee_lineno): Likewise.
+ * nlmconv.c (main): Likewise.
+ * objcopy.c (strip_main): Likewise.
+ (copy_main): Likewise.
+ * objdump.c (show_line): Likewise.
+ (dump_reloc_set): Likewise.
+ * srconv.c (main): Likewise.
+ * wrstabs.c (stab_lineno): Likewise.
+
+2011-02-24 Zachary T Welch <zwelch@codesourcery.com>
+
+ * readelf.c (decode_arm_unwind): Implement decoding of remaining
+ ARM unwind instructions (i.e. VFP/NEON and Intel Wireless MMX).
+
+2011-02-23 Kai Tietz <kai.tietz@onevision.com>
+
+ * dwarf.c (read_leb128): Use bfd_vma instead of
+ long type.
+ (dwarf_vmatoa): New helper routine.
+ (process_extended_line_op): Use for adr bfd_vma
+ type and print those typed values via BFD_VMA_FMT
+ or via dwarf_vmatoa for localized prints.
+ (fetch_indirect_string): Adjust offset's type.
+ (decode_location_expression): Adjust argument types
+ and uvalue type.
+ (read_and_display_attr_value): Likewise.
+ (read_and_display_attr): Likewise.
+ (decode_location_expression): Adjust printf format.
+ (process_debug_info): Likewise.
+ (display_debug_lines_raw): Likewise.
+ (display_debug_lines_decoded): Likewise.
+ (display_debug_pubnames): Likewise.
+ (display_debug_loc): Likewise.
+ (display_debug_aranges): Likewise.
+ * dwarf.h (DWARF2_External_LineInfo,
+ DWARF2_Internal_LineInfo, DWARF2_External_PubNames,
+ DWARF2_Internal_PubNames, DWARF2_External_CompUnit,
+ DWARF2_Internal_CompUnit, DWARF2_External_ARange,
+ DWARF2_Internal_ARange): Added..
+ (read_leb128): Adjust return type.
+
+2011-02-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * configure: Regenerate.
+
+2011-02-08 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/12467
+ * readelf.c (process_program_headers): Issue a warning if there
+ are no program headers but the file header has a non-zero program
+ header offset.
+ (process_section_headers): Issue a warning if there are no section
+ headers but the file header has a non-zero section header offset.
+ (process_section_groups): Reword the no section message so that it
+ can be distinguished from the one issued by process_section_headers.
+
+2011-01-26 Jan Kratochvil <jan.kratochvil@redhat.com>
+ Doug Evans <dje@google.com>
+
+ * dwarf.c (display_gdb_index): Support version 4, warn on version 3.
+
+2011-01-19 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * readelf.c (process_object): Free dynamic_section after use.
+
+2011-01-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/12408
+ * readelf.c (process_archive): Free and reset dump_sects
+ after processing each archive member.
+
+2011-01-11 Andreas Schwab <schwab@redhat.com>
+
+ * readelf.c (print_symbol): Handle symbol characters as unsigned.
+ Whitespace fixes.
+
+2011-01-10 Nick Clifton <nickc@redhat.com>
+
+ * po/da.po: Updated Danish translation.
+
+2011-01-06 Vladimir Siminov <sv@sw.ru>
+
+ * bucomm.c (get_file_size): Check for negative sizes and issue a
+ warning message if encountered.
+
+2011-01-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ * version.c (print_version): Update copyright to 2011.
+
+For older changes see ChangeLog-2010
+
+Copyright (C) 2011 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-2012 b/binutils-2.24/binutils/ChangeLog-2012
new file mode 100644
index 00000000..da7d9e4c
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-2012
@@ -0,0 +1,756 @@
+2012-12-17 Nick Clifton <nickc@redhat.com>
+
+ * BRANCHES: Add copyright notice.
+ * MAINTAINERS: Likewise.
+ * Makefile.am: Likewise.
+ * NEWS: Likewise.
+ * README: Likewise.
+ * configure.com: Likewise.
+ * configure.in: Likewise.
+ * configure.tgt: Likewise.
+ * dwarf-mode.el: Likewise.
+ * makefile.vms: Likewise.
+ * syslex_wrap.c: Likewise.
+ * doc/Makefile.am: Likewise.
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+
+2012-11-27 Kai Tietz <ktietz@redhat.com>
+
+ * resbin.c (bin_to_res_version): Correct offset
+ and length calculation of resource.
+ (get_version_header): Apply alignement of 4 to len.
+
+2012-11-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (process_dynamic_section): Correct DF_1_CONFALT.
+ Also dump DF_1_ENDFILTEE, DF_1_DISPRELDNE, DF_1_NODIRECT,
+ DF_1_IGNMULDEF, DF_1_NOKSYMS, DF_1_NOHDR, DF_1_EDITED,
+ DF_1_NORELOC, DF_1_SYMINTPOSE, DF_1_GLOBAUDIT and DF_1_SINGLETON.
+
+2012-11-14 Tristan Gingold <gingold@adacore.com>
+
+ * od-macho.c (bfd_mach_o_load_command_name): Add new definitions.
+ (dump_load_command): Handle BFD_MACH_O_LC_SOURCE_VERSION
+ and BFD_MACH_O_LC_MAIN.
+
+2012-11-13 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * readelf.c (get_machine_flags) <EM_MIPS, EM_MIPS_RS3_LE>: Move
+ code to handle EF_SH_PIC and EF_SH_FDPIC...
+ <EM_SH>: ... here.
+
+2012-11-09 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (get_machine_flags): Add support for E_FLAG_RX_ABI.
+ (guess_is_rela): Add EM_V800.
+ (dump_relocations): Likewise.
+ (get_machine_name): Update EM_V800.
+ (get_machine_flags): Add support for RH850 ABI flags.
+ (is_32bit_abs_reloc): Add support for RH850 ABI reloc.
+
+2012-11-09 H.J. Lu <hongjiu.lu@intel.com>
+
+ * coffgrok.c (coff_grok): Remove trailing redundant `;'.
+ * resrc.c (open_input_stream): Likewise.
+
+2012-11-08 Alan Modra <amodra@gmail.com>
+
+ * po/POTFILES.in: Regenerate.
+
+2012-11-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objcopy.c (copy_section): Don't read beyond section end.
+
+2012-11-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/14567
+ * Makefile.am (BFDTEST2_PROG): New.
+ (bfdtest2_DEPENDENCIES): Likewise.
+ (TEST_PROGS): Add $(BFDTEST2_PROG).
+ * Makefile.in: Regenerated.
+ * bfdtest2.c: New file.
+
+2012-11-05 Stephane Carrez <Stephane.Carrez@gmail.com>
+
+ * MAINTAINERS: Update my email address.
+
+2012-11-05 Alan Modra <amodra@gmail.com>
+
+ * configure.in: Apply 2012-09-10 change to config.in here. Add
+ __CONFIG_H__ check.
+ * config.in: Regenerate.
+
+2012-11-01 Tom Tromey <tromey@redhat.com>
+
+ * readelf.c (get_note_type): Handle NT_386_TLS, NT_386_IOPERM.
+
+2012-10-30 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/14779
+ * configure.in: Add checks for wchar.h and mbstate_t.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * readelf.c: Conditionally include wchar.h.
+ (print_symbol): Conditionally use mbstate_t.
+
+2012-10-30 Steve McIntyre <steve.mcintyre@linaro.org>
+
+ * readelf.c (decode_ARM_machine_flags): Recognise and display the
+ new ARM hard-float/soft-float ABI flags for EABI_VER5. Split out
+ the code for EABI_VER4 and EABI_VER5 to allow this.
+
+2012-10-29 Alan Modra <amodra@gmail.com>
+
+ * dlltool.c (INIT_SEC_DATA): Move.
+ (secdata <DLLTOOL_PPC>): Use here too.
+
+2012-10-26 Nick Clifton <nickc@redhat.com>
+
+ * po/hr.po: New Croation translation.
+ * configure.in (ALL_LINGUAS): Add hr.
+ * configure: Regenerate.
+
+2012-10-23 Cary Coutant <ccoutant@google.com>
+
+ * dwarf.c (do_debug_addr, do_debug_cu_index): New global flags.
+ (load_debug_info): Fix typo.
+ (cu_tu_indexes_read, shndx_pool, shndx_pool_size, shndx_pool_used):
+ New global variables.
+ (prealloc_cu_tu_list, add_shndx_to_cu_tu_entry, end_cu_tu_entry)
+ (process_cu_tu_index, load_cu_tu_indexes, find_cu_tu_set)
+ (display_cu_index): New functions.
+ (dwarf_select_sections_by_names): Add "debug_addr", "cu_index".
+ Sort entries alphabetically.
+ (dwarf_select_sections_all): Set do_debug_addr, do_debug_cu_index.
+ (debug_displays): Add .debug_cu_index, .debug_tu_index.
+ Clean up formatting.
+ * dwarf.h (dwarf_section_display_enum): Add dwp_cu_index,
+ dwp_tu_index.
+ (do_debug_addr, do_debug_cu_index): New global flags.
+ (find_cu_tu_set): New function declaration.
+ * objdump.c (usage): Add --dwarf=addr, --dwarf=cu_index.
+ * readelf.c (find_section_in_set): New function.
+ (usage): Add --debug-dump=addr, --debug_dump=cu_index.
+ (process_section_headers): Check do_debug_addr and do_debug_cu_index.
+ (section_subset): New global variable.
+ (load_debug_section): Restrict search to section subset.
+ (display_debug_section): Add section index as paramter. Select subset
+ of sections when dumping a .dwp file. Update caller.
+
+2012-10-23 Tom Tromey <tromey@redhat.com>
+
+ * readelf.c (get_note_type): Handle NT_SIGINFO, NT_FILE.
+ (print_core_note): New function.
+ (process_note): Call it.
+
+2012-10-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objdump.c (dump_dwarf): Handle bfd_mach_x64_32 and
+ bfd_mach_x64_32_intel_syntax.
+
+2012-10-21 Alan Modra <amodra@gmail.com>
+
+ * objdump.c (load_specific_debug_section): Use
+ bfd_cache_section_contents.
+
+2012-10-18 Kai Tietz <ktietz@redhat.com>
+
+ * objdump.c (dump_bfd): Call dump headers after
+ call of slurp_symtab.
+
+ * objcopy.c (is_strip_section_1): Don't strip
+ .reloc section by default.
+
+2012-10-11 Doug Evans <dje@google.com>
+
+ * dwarf.c (display_gdb_index): Include static/global information
+ of each symbol.
+
+2012-09-14 David Edelsohn <dje.gcc@gmail.com>
+
+ * configure: Regenerate.
+
+2012-09-10 Matthias Klose <doko@ubuntu.com>
+
+ * config.in: Disable sanity check for kfreebsd.
+
+2012-09-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ * configure: Regenerated.
+
+2012-09-06 Cary Coutant <ccoutant@google.com>
+
+ * dwarf.c (decode_location_expression): Add
+ DW_OP_GNU_const_index.
+
+2012-09-06 Nick Clifton <nickc@redhat.com>
+
+ * doc/binutils.texi (nm): Alpha-sort the option descriptions.
+ Add description of the --synthetic option.
+
+2012-09-04 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/14493
+ * readelf.c (get_symbol_index_type): Check bad section index.
+
+2012-08-24 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * readelf.c (arm_attr_tag_CPU_arch): Update for ARMv8.
+ (arm_attr_tag_FP_arch): Likewise.
+ (arm_attr_tag_Advanced_SIMD_arch): Likewise.
+
+2012-08-17 Yuri Chornoivan <yurchor@ukr.net>
+
+ * doc/binutils.texi, * objdump.c, * od-xcoff.c: Typo fixes.
+
+2012-08-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/14481
+ * Makefile.am (BFDTEST1_PROG): New.
+ (TEST_PROGS): Likewise.
+ (bfdtest1_DEPENDENCIES): Likewise.
+ (noinst_PROGRAMS): Add $(TEST_PROGS).
+ * Makefile.in: Regenerated.
+
+ * bfdtest1.c: New file.
+
+2012-08-13 Ian Bolton <ian.bolton@arm.com>
+ Laurent Desnogues <laurent.desnogues@arm.com>
+ Jim MacArthur <jim.macarthur@arm.com>
+ Marcus Shawcroft <marcus.shawcroft@arm.com>
+ Nigel Stephens <nigel.stephens@arm.com>
+ Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+ Richard Earnshaw <rearnsha@arm.com>
+ Sofiane Naci <sofiane.naci@arm.com>
+ Tejas Belagod <tejas.belagod@arm.com>
+ Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * readelf.c (guess_is_rela): Handle EM_AARCH64.
+ (get_machine_name): Likewise.
+ (get_aarch64_segment_type): New function.
+ (get_segment_type): Handle EM_AARCH64 by calling the new function.
+ (get_aarch64_section_type_name): New function.
+ (get_section_type_name): Handle EM_AARCH64 by calling the new function.
+ (is_32bit_abs_reloc): Handle EM_AARCH64.
+ (is_32bit_pcrel_reloc): Likewise.
+ (is_64bit_abs_reloc): Likewise.
+ (is_64bit_pcrel_reloc): Likewise.
+ (is_none_reloc): Likewise.
+
+2012-08-09 Nick Clifton <nickc@redhat.com>
+
+ * po/vi.po: Updated Vietnamese translation.
+
+2012-08-03 Tom Tromey <tromey@redhat.com>
+
+ * dlltool.c (scan_obj_file): Close arfile after calling
+ bfd_openr_next_archived_file.
+
+2012-08-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/14420
+ * dwarf.c (process_abbrev_section): Add attribute terminator.
+ Warn missing section terminator.
+ (get_FORM_name): Special check for 0 value.
+ (get_AT_name): Likewise.
+ (process_debug_info): Display zero abbrev number. Check
+ attribute terminator.
+
+2012-07-30 Nick Clifton <nickc@redhat.com>
+
+ * po/binutils.pot: Updated template.
+ * po/bg.po: Updated Bulgarian translation.
+ * po/es.po: Updated Spanish translation.
+ * po/fi.po: Updated Finnish translation.
+ * po/fr.po: Updated French translation.
+ * po/uk.po: Updated Ukranian translation.
+
+2012-07-28 Kai Tietz <ktietz@redhat.com>
+
+ * rcparse.y (FILEVERSION): Use optcnumexpr instead of cnumexpr.
+ (PRODUCTVERSION): Likewise.
+
+2012-07-27 Mike Frysinger <vapier@gentoo.org>
+
+ * configure.in (BFD_VERSION): Run bfd/configure --version and
+ parse the output of that.
+ * configure: Regenerate.
+
+2012-07-27 Tristan Gingold <gingold@adacore.com>
+
+ * NEWS: Add marker for 2.23.
+
+2012-07-24 Teresa Johnson <tejohnson@google.com>
+
+ * addr2line.c (find_address_in_section): Invoke
+ bfd_find_nearest_line_discriminator to get the discriminator.
+ (find_offset_in_section): Likewise.
+ (translate_addresses): Print discriminator if it is non-zero.
+ * objdump.c (show_line): Invoke
+ bfd_find_nearest_line_discriminator to get the discriminator,
+ and keep track of prev_discriminator. Print discriminator
+ if it is non-zero.
+ (disassemble_data): Initialize prev_discriminator.
+ (dump_reloc_set): Invoke bfd_find_nearest_line_discriminator
+ to get the discriminator, and keep track of last_discriminator.
+ Print discriminator if it is non-zero.
+
+2012-07-17 Nick Clifton <nickc@redhat.com>
+
+ * elfcomm.c (setup_archive): Extract index table and symbol table
+ scanning code into...
+ (process_archive_index_and_symbols): ... this function and add
+ support for 64-bit index tables.
+ * elfcomm.h (struct archive_info): Change type of index_num and
+ index_array to elf_vma.
+ Add 'uses_64bit_indicies' field.
+ * readelf.c (process_archive): Fix support for 64-bit indicies.
+
+2012-07-03 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (process_archive): Display member indicies when
+ dumping index.
+
+2012-07-02 Tom Tromey <tromey@redhat.com>
+
+ * dwarf.c: Include gdb-index.h.
+ (display_gdb_index): Handle version 7.
+
+2012-06-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ * nm.c (filter_symbols): Simplify global symbol handling.
+
+2012-06-29 Francois Gouget <fgouget@codeweavers.com>
+
+ PR binutils/14302
+ * bucomm.c (print_arelt_descr): Correctly report the archive size
+ field (for 'ar tv').
+ * ar.c (print_contents): Use correct types for archive element
+ sizes (for 'ar p').
+ (extract_file): Likewise (for 'ar x').
+
+2012-06-29 Alan Modra <amodra@gmail.com>
+
+ * readelf.c (is_16bit_abs_reloc): Handle mn10200 reloc.
+
+2012-06-12 Tom Tromey <tromey@redhat.com>
+
+ * dwarf-mode.el: Add final comment. Bump version.
+ (dwarf-insert-substructure-button): Use string-to-number.
+ (dwarf-browse): Fix autoload cookie.
+
+2012-06-08 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (read_and_display_attr_value): Handle
+ DW_FORM_GNU_ref_alt and DW_FORM_GNU_strp_alt.
+ (display_debug_macro): Handle DW_MACRO_GNU_define_indirect_alt,
+ DW_MACRO_GNU_undef_indirect_alt and
+ DW_MACRO_GNU_transparent_include_alt.
+
+2012-06-01 Alan Modra <amodra@gmail.com>
+
+ * addr2line.c (translate_addresses): Truncate input addresses to
+ arch_size bits. Avoid undefined shift. Print '?' for zero line.
+
+2012-05-30 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (process_section_headers): Correct bug in previous
+ delta - display full section type in wide mode.
+
+2012-05-28 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (print_symbol): Display multibyte characters in symbol
+ names.
+ (process_section_headers): Use print_symbol.
+
+2012-05-18 Andreas Schwab <schwab@linux-m68k.org>
+
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+ * Makefile.in: Regenerate.
+
+2012-05-17 Daniel Richard G. <skunk@iskunk.org>
+ Nick Clifton <nickc@redhat.com>
+
+ PR 14072
+ * configure.in: Add check that sysdep.h has been included before
+ any system header files.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+ * unwind-ia64.h: Include config.h.
+
+2012-05-17 Alan Modra <amodra@gmail.com>
+
+ * dwarf.c (process_debug_info): Display abbrev offset in hex.
+ (display_debug_abbrev): Show offset of abbrev.
+
+2012-05-17 Alan Modra <amodra@gmail.com>
+
+ * dwarf.c (display_debug_ranges): Don't report more than one use
+ of the same range set as an overlap.
+
+2012-05-16 Daniel Richard G. <skunk@iskunk.org>
+
+ PR binutils/13558
+ * Makefile.am (CFILES): Add syslex_wrap.c.
+ (sysinfo): Depend upon syslex_wrap.o.
+ (syslex_wrap.o): New rule.
+ (syslex.o): Delete rule.
+ * syslex_wrap.c: New file.
+ * Makefile.in: Regenerate.
+
+2012-05-15 James Murray <jsm@jsm-net.demon.co.uk>
+
+ * readelf.c (get_machine_name): Update m68hc12 entry.
+
+2012-05-13 H.J. Lu <hongjiu.lu@intel.com>
+
+ * objdump.c (disassemble_bytes): Print addend as signed.
+ (dump_reloc_set): Likewise.
+
+2012-05-04 Sterling Augustine <saugustine@google.com>
+ Cary Coutant <ccoutant@google.com>
+
+ * doc/binutils.texi: Add --dwarf-check option.
+ * dwarf.c (dwarf_check): New global flag.
+ (fetch_indexed_string): New function.
+ (fetch_indexed_value): New function.
+ (get_FORM_name): Add DW_FORM_GNU_str_index and DW_FORM_GNU_addr_index.
+ (decode_location_expression): Add DW_OP_GNU_addr_index.
+ (read_and_display_attr_value): Add DW_FORM_GNU_str_index,
+ DW_FORM_GNU_addr_index, DW_AT_GNU_addr_base, and DW_AT_GNU_ranges_base.
+ (get_AT_name): Add new attributes for Fission.
+ (process_debug_info): Load new debug sections for Fission.
+ (load_debug_info): Check for .debug_info.dwo section.
+ (display_loc_list, display_loc_list_dwo): New functions.
+ (display_debug_loc): Move logic to above two functions.
+ (display_debug_info): Choose abbrev section based on info section.
+ (display_debug_types): Likewise.
+ (display_trace_info): Likewise.
+ (comp_addr_base): New function.
+ (display_debug_addr): New function.
+ (display_debug_str_offsets): New function.
+ (display_debug_ranges): Allow missing range lists. Suppress
+ diagnostics if dwarf_check not set.
+ (debug_displays): Add column to select abbrev section.
+ * dwarf.h (enum dwarf_section_display_enum): Add new debug sections
+ for Fission.
+ (struct dwarf_section): Add abbrev_sec field.
+ (struct dwarf_section_display): New type.
+ (debug_info): Add addr_base, ranges_base fields.
+ (dwarf_check): New global variable.
+ * objdump.c (usage): Add --dwarf-check option.
+ (enum option_values): Add OPTION_DWARF_CHECK.
+ (long_options): Add --dwarf-check.
+ (main): Likewise.
+ * readelf.c (OPTION_DWARF_CHECK): New macro.
+ (options): Add --dwarf-check.
+ (parse_args): Likewise.
+ (process_section_headers): Use const_strneq instead of
+ streq.
+
+2012-05-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/14088
+ * readelf.c (dump_relocations): Always display addend as
+ signed hex number.
+
+2012-05-11 Daniel Richard G. <skunk@iskunk.org>
+
+ PR binutils/14028
+ * configure.in: Invoke ACX_HEADER_STRING.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+ * sysdep.h: If STRINGS_WITH_STRING is defined then include both
+ string.h and strings.h.
+
+2012-05-10 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf.c (read_and_display_attr_value): Don't look up tag from
+ abbrev for DW_FORM_ref_addr.
+
+2012-05-08 Sean Keys <skeys@ipdatasys.com>
+
+ * binutils/MAINTAINERS: Added my entry to the maintainers secion.
+
+2012-05-08 Cary Coutant <ccoutant@google.com>
+
+ * doc/binutils.texi (objcopy): Add --strip-dwo, --extract-dwo options.
+ (strip): Add --strip-dwo option.
+ * objcopy.c (enum strip_action): Add STRIP_DWO, STRIP_NONDWO.
+ (enum command_line_switch): Add OPTION_EXTRACT_DWO, OPTION_STRIP_DWO.
+ (strip_options): Add --strip-dwo option.
+ (copy_options): Add --extract-dwo, --strip-dwo options.
+ (copy_usage): Likewise.
+ (strip_usage): Add --strip-dwo option.
+ (is_dwo_section): New function.
+ (is_strip_section_1): Check for DWO sections.
+ (copy_object): Check for --strip-dwo, --extract-dwo options.
+ (copy_relocations_in_section): Discard relocations for DWO sections.
+ Discard entire relocation section when no relocations.
+ (strip_main): Add --strip-dwo option.
+ (copy_main): Add --strip-dwo, --extract-dwo options.
+
+2012-05-08 Alan Modra <amodra@gmail.com>
+
+ * Makefile.am (check_DEJAGNU): Export LC_ALL=C in place of other
+ LC and LANG environment vars.
+ * Makefile.in: Regenerate.
+
+2012-05-07 Tom Tromey <tromey@redhat.com>
+
+ * dwarf.c (get_TAG_name): Use get_DW_TAG_name.
+ (get_FORM_name): Use get_DW_FORM_name.
+ (get_AT_name): Use get_DW_AT_name.
+
+2012-05-07 Alan Modra <amodra@gmail.com>
+
+ * Makefile.am (check-DEJAGNU): Clear LC_COLLATE, LC_ALL and LANG.
+ * Makefile.in: Regenerate.
+
+2012-05-05 Alan Modra <amodra@gmail.com>
+
+ * dlltool.c (make_one_lib_file): Use bfd_und_section_ptr.
+
+2012-05-03 Sean Keys <skeys@ipdatasys.com>
+
+ * readelf.c: Add support for XGATE.
+
+2012-05-02 Nick Clifton <nickc@redhat.com>
+
+ * po/vi.po: Updated Vietnamese translation.
+ * po/it.po: New Italian translation.
+ * configure.in (ALL_LINGUAS): Add it.
+ * configure: Regenerate.
+
+2012-05-01 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/13121
+ * rescoff.c: Rename 'finfo' to 'flaginfo' to avoid conflicts with
+ AIX system headers.
+
+2012-04-25 Cary Coutant <ccoutant@google.com>
+
+ * doc/binutils.texi: Add -D/--enable-deterministic-archives option
+ to strip and objcopy.
+ * objcopy.c (deterministic): New global variable.
+ (strip_options): Add --enable-deterministic-archives.
+ (copy_options): Likewise.
+ (copy_usage): Likewise.
+ (strip_usage): Likewise.
+ (copy_archive): When stripping all, don't add archive map; set
+ deterministic output when requested.
+ (strip_main): Add -D/--enable-deterministic-archives option.
+ (copy_main): Likewise.
+
+2012-04-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/13947
+ * objcopy.c (copy_object): Call copy_relocations_in_section
+ before copy_section.
+ (skip_section): New.
+ (copy_relocations_in_section): Likewise.
+ (copy_section): Use skip_section. Don't copy relocations here.
+
+2012-04-11 Ryan Mansfield <rmansfield@qnx.com>
+
+ * objdump.c (dump_bfd): If defaulting to dwarf call
+ dwarf_select_sections_all to enable displays.
+
+2012-04-06 Roland McGrath <mcgrathr@google.com>
+
+ * configure.in (AC_CHECK_HEADERS): Add locale.h.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+
+2012-04-05 Nick Clifton <nickc@redhat.com>
+
+ * configure.in (AC_CHECK_FUNCS): Add setlocale.
+ (AM_LC_MESSAGES): Add.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+
+2012-03-30 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/13925
+ * stabs.c (stab_demangle_v3_arglist): Cope with the demangler
+ returning an empty context for a function with no arguments.
+
+2012-03-28 Tom Tromey <tromey@redhat.com>
+
+ * dwarf.c (display_gdb_index): Handle index version 6.
+
+2012-03-07 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (is_16bit_abs_reloc): Add detection of R_MN10300_16.
+
+2012-02-29 Jeff Law <law@redhat.com>
+
+ * doc/binutils.texi (c++filt): Fix typos.
+
+2012-02-24 Kai Tietz <ktietz@redhat.com>
+
+ PR binutils/13710
+ * defparse.y (keyword_as_name): Disable LIBRARY
+ keyword.
+ * doc/binutils.texi: Document LIBRARY exception.
+
+2012-02-21 Kai Tietz<ktietz@redhat.com>
+
+ PR binutils/13682
+ * NEWS: Mention new feature.
+ * dlltool.c (i386_x64_dljtab): New stub-code for x64
+ delayed-load feature.
+ (i386_x64_trampoline): New trampoline-code for x64
+ delayed-load feature.
+ (make_one_lib_file): Add support for x64 delayed-load
+ feature.
+ (make_delay_head): Likewis
+
+2012-02-20 Namhyung Kim <namhyung.kim@lge.com>
+
+ * objdump.c (slurp_file): Close file if fstat fails.
+
+2012-02-14 Cary Coutant <ccoutant@google.com>
+
+ * dwarf.c (dwarf_vmatoa64): New function.
+ (read_and_display_attr_value): Print 8-byte forms as single hex
+ numbers.
+ (process_debug_info): Print type signatures as single hex numbers.
+ * elfcomm.c (byte_get_64): New function.
+ * elfcomm.h (byte_get_64): New function.
+
+2012-02-11 Kai Tietz <ktietz@redhat.com>
+
+ PR binutils/13657
+ * defparse.y (%union): New type id_const.
+ (opt_name2): New rule.
+ (keyword_as_name): New rule.
+ (opt_name): Adjust rule.
+ (opt_import_name): Likewise.
+ (opt_equal_name): Likewise.
+
+2012-02-11 Kai Tietz <ktietz@redhat.com>
+
+ PR binutils/13297
+ * resrc.c (write_rc_dialog_control): Omit text dump for
+ EDITTEXT, COMBOBOX, LISTBOX, and SCROLLBAR.
+
+2012-02-09 Alan Modra <amodra@gmail.com>
+
+ * sysdep.h: Include sys/stat.h here.
+ * ar.c: Don't include headers already included by sysdep.h.
+ * bucomm.c: Likewise.
+ * budbg.h: Likewise.
+ * dlltool.h: Likewise.
+ * elfedit.c: Likewise.
+ * nlmconv.c: Likewise.
+ * objcopy.c: Likewise.
+ * objdump.c: Likewise.
+ * objdump.h: Likewise.
+ * readelf.c: Likewise.
+ * rename.c: Likewise.
+ * resrc.c: Likewise.
+ * strings.c: Likewise.
+ * windres.c: Likewise.
+ * od-macho.c: Ensure #include sysdep.h is first.
+ * od-xcoff.c: Likewise.
+ * dllwrap.c: Remove alloca pragma handled by sysdep.h, and
+ remove duplicate headers.
+ * dlltool.c: Likewise and ensure #include sysdep.h is first.
+
+2012-02-01 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/13493
+ * ar.c (ranlib_main): Process --plugin option.
+ * doc/binutils.texi: Document --plugin support for ranlib.
+
+2012-02-01 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/13482
+ * readelf.c (process_corefile_note_segment): Fix off-by-one errors
+ verifying the contents of a note.
+
+2012-01-26 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/13622
+ * readelf.c (process_section_groups): If there are no section
+ headers do not scan for section groups.
+ (process_note_sections): Likewise for note sections.
+
+2012-01-20 Tristan Gingold <gingold@adacore.com>
+
+ * od-macho.c (OPT_SEG_SPLIT_INFO): New macro.
+ (options): Add an entry for seg_split_info.
+ (mach_o_help): Document it.
+ (dump_segment_split_info): New function.
+ (dump_load_command): Handle seg_split_info.
+
+2012-01-19 Tristan Gingold <gingold@adacore.com>
+
+ * dwarf.c (process_extended_line_op): Add a cast to silent a
+ warning.
+
+2012-01-19 Tristan Gingold <gingold@adacore.com>
+
+ * dwarf.c (process_extended_line_op): Reindent define_file output.
+ Detect define_file opcode length mismatch.
+ (display_debug_lines_decoded): Add an entry in file_table for each
+ define_file opcode.
+ Ignore DW_LNE_set_discriminator and DW_LNE_HP_set_sequence.
+ Display extended opcode for unhandle opcode.
+
+2012-01-17 Alan Modra <amodra@gmail.com>
+
+ * version.c (print_version): Update copyright message year.
+
+2012-01-16 Alan Modra <amodra@gmail.com>
+
+ PR binutils/13593
+ * nm.c (OPTION_SIZE_SORT): Define.
+ (long_options): Don't set no_sort, sort_numerically or
+ sort_by_size directly.
+ (main): Instead set the flags here, making them mutually exclusive.
+
+2012-01-10 Tristan Gingold <gingold@adacore.com>
+
+ * objdump.c (display_object_bfd): Renamed from ...
+ (display_bfd): ... this.
+ (display_any_bfd): New function.
+ (display_file): Split. Handle nested archives.
+
+2012-01-09 Roland McGrath <mcgrathr@google.com>
+
+ * configure.in: Use AM_ZLIB.
+ * configure: Regenerated.
+
+2012-01-06 Nick Clifton <nickc@redhat.com>
+
+ * po/ru.po: Updated Russian translation.
+
+2012-01-04 Tristan Gingold <gingold@adacore.com>
+
+ * od-macho.c (dump_load_command): Handle fvmlib.
+
+2012-01-04 Tristan Gingold <gingold@adacore.com>
+
+ * od-macho.c: Update copyright year.
+ (dump_load_command): Handle BFD_MACH_O_LC_ENCRYPTION_INFO.
+
+For older changes see ChangeLog-2011
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-9197 b/binutils-2.24/binutils/ChangeLog-9197
new file mode 100644
index 00000000..883aa5c0
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-9197
@@ -0,0 +1,5223 @@
+Mon Dec 29 16:58:05 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ From Matthew Bellantoni <matthew@chrysalis.com>:
+ * ar.c (get_pos_bfd): Add default_posname parameter. Change all
+ callers.
+ (replace_members): Default to replacing in the same position.
+
+Mon Dec 22 11:27:22 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * rclex.l: Don't permit a comma in a STRING.
+ * rcparse.y (acc_entry): Warn if an inappropriate modifier is used
+ with a non VIRTKEY.
+ (acc_event): For a control character, set VIRTKEY, and force the
+ character to uppercase.
+ (acc_options): Don't require a comma separator.
+
+Tue Dec 9 13:25:42 1997 Michael Meissner <meissner@cygnus.com>
+
+ * size.c (size_number): New function to provide size of field.
+ ({l,r}print_number): For octal and hex fields, print field using
+ '0' and '0x' suffixes. Do not include following tab.
+ (sysv_internal_sizer): Size section name, section size, and vma
+ address fields.
+ (sysv_internal_printer): Use calculated sizes for the columns.
+ (print_sysv_format): Size columns before printing.
+ (print_berkeley_format): Print tabs between numbers now that
+ {l,r}print_number doesn't. Print fields right justified.
+
+Mon Dec 8 11:22:04 1997 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (objdump_print_addr_with_sym): Remove call to
+ disasm_symaddr() as this function no longer exists.
+
+Tue Dec 2 10:23:50 1997 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (objdump_print_addr_with_sym): Call disasm_symaddr()
+ to allow backend to know which symbol has just been displayed.
+
+Tue Dec 2 13:06:46 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * windres.h (ESCAPE_*): Define standard escape sequences.
+ * rclex.l (handle_quotes): Handle standard escape sequences. Warn
+ about an unrecognized escape character.
+ * windres.c (unicode_print): Print standard escape sequences.
+ * rcparse.y (acc_event): Initialize $$.next.
+ * resbin.c (bin_to_res_menuitems): Don't set MENUITEM_POPUP or
+ MENUITEM_ENDMENU in the menu item flags.
+ (bin_to_res_accelerators): Allocate a structure (the old code
+ never worked).
+ (res_to_bin_accelerator): Correct the test for setting ACC_LAST.
+ (res_to_bin_dialog): Save the extended style rather than saving
+ the style twice. Remove useless shadowing length variable. Set
+ the length of control data correctly.
+ * resrc.c (write_rc_dialog): Don't print the class or menu if the
+ string length is zero.
+
+Mon Nov 24 18:52:43 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * stabs.c (parse_stab_argtypes): Don't try to parse the name of a
+ destructor as mangled argument types.
+
+Mon Nov 10 17:51:41 1997 Gavin Koch <gavin@cygnus.com>
+
+ * addr2line.c (translate_addresses): Use bfd_scan_vma rather
+ than strtol to scan addresses.
+
+Sun Nov 9 11:01:31 1997 Jeffrey A Law (law@cygnus.com)
+
+ * Makefile.am (bin_PROGRAMS): Don't use line continuations here.
+
+Tue Nov 4 11:56:14 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (copy_section): Don't crash if there is no particular
+ information for a section.
+
+Mon Nov 3 12:36:19 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (parse_flags): Make flag check case insensitive.
+ Check for `contents' flag. Give an error for unrecognized flags.
+ (copy_section): If the contents flag was set for a section that
+ had no contents, zero out the new contents.
+ * binutils.texi (objcopy): Document contents section flag.
+
+Sun Nov 2 14:49:56 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c: Move new struct and variable definitions to top of
+ file. Remove obsolete add_strip_symbol and is_strip_symbol
+ declarations. Add prototype declarations for add_specific_symbol
+ and is_specified_symbol.
+
+Mon Oct 20 15:31:43 1997 Klaus K"ampf <kkaempf@progis.de>
+
+ * configure.com (HAVE_SBRK): Undefine.
+
+Tue Oct 14 16:14:35 1997 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (objdump_symbol_at_address): New function. Returns
+ true if a symbol can be found at the address passed in.
+ (disassemble_data): Set the symbol_at_address_func field to point
+ to objdump_symbol_at_address.
+
+Fri Oct 10 14:13:09 1997 Richard Henderson <rth@cygnus.com>
+
+ * objcopy.c, objcopy.1, binutils.texi: "localize" is a better name
+ than "privatize". Update all references.
+
+Thu Oct 9 15:57:29 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils.texi (strip): Remove duplicate --target. From Marty
+ Leisner <leisner@sdsp.mc.xerox.com>.
+
+ * nm.c (lineno_cache_bfd): New file static variable.
+ (lineno_cache_rel_bfd): New file static variable.
+ (display_archive): Clear lineno_cache_bfd and lineno_cache_rel_bfd
+ when closing a BFD.
+ (display_file): Likewise.
+ (print_symbol): Use lineno_cache_bfd and lineno_cache_rel_bfd
+ instead of cache_bfd and cache_rel_bfd. Make seccount static, and
+ only set it when setting relocs.
+
+Wed Oct 8 21:19:11 1997 Richard Henderson <rth@cygnus.com>
+
+ * objcopy.c (keep_specific_list, privatize_specific_list,
+ weaken_specific_list): New variables.
+ (keep_symbols): Removed.
+ (add_specific_symbol): New function from the carcas of
+ add_strip_symbol. Takes a list as an argument.
+ (is_specified_symbol): Likewise from is_strip_symbol.
+ (filter_symbols): Honor the new privatize and weaken lists.
+ Optimize bfd_asymbol_name handling.
+ (copy_object, copy_options, copy_usage): Add privatize-symbol &
+ weaken-symbol options.
+
+ * objcopy.1, binutils.texi: Update docs.
+
+Sun Oct 5 09:05:44 1997 Frank Ch. Eigler <fche@cygnus.com>
+
+ * objdump.c (disassemble_data): Make "--prefix-addresses"
+ disassembly adjust to mixed-length instructions.
+ (objdump_print_addr_with_sym): Add "0x" prefix for hexadecimal
+ symbol-offsets in disassembly.
+
+Fri Oct 3 12:04:25 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (set_times): New static function, replacing
+ make_same_dates.
+ (strip_main): If preserve_dates, stat the input file before
+ copying it, and call set_times afterward.
+ (copy_main): Likewise.
+
+ * wrstabs.c (write_stabs_in_sections_debugging_info): Cast p to
+ char * when calling strcpy and strlen.
+
+Wed Sep 24 11:34:05 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils.texi (ar cmdline): Document that q now works like r.
+ From Marty Leisner <leisner@sdsp.mc.xerox.com>.
+
+ * binutils.texi (size): The object file argument is optional.
+ From Marty Leisner <leisner@sdsp.mc.xerox.com>.
+
+ * aclocal.m4: Rebuild with new libtool.
+ * configure: Rebuild.
+
+Tue Aug 26 17:48:34 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (EXEEXT_FOR_BUILD): New variable. Use it in all
+ references to the sysinfo program.
+ * configure.in: Rebuild with new bfd/acinclude.m4.
+ * Makefile.in: Rebuild.
+
+Fri Aug 8 15:32:49 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * windres.c: Include <time.h>.
+ (define_resource): Set a timestamp for the resource.
+
+Wed Aug 6 13:37:58 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Define TARGET in header file.
+ * acconfig.h (TARGET): Add #undef.
+ * Makefile.am (version.o, bucomm.o): Remove special targets.
+ * bucomm.c (target): Remove.
+ * nm.c (program_name): Don't declare.
+ (target): Make static.
+ * size.c (target): Make static.
+ * configure, config.in, Makefile.in: Rebuild.
+
+Tue Aug 5 00:01:41 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (check-DEJAGNU): Export r.
+ (.dep1): Use $(INCLUDES) rather than $(ALL_CFLAGS).
+ * Makefile.in: Rebuild.
+
+ * nlmheader.y: Use VERSIONK rather than VERSION.
+
+ * Makefile.am (STRIP_PROG): Change from strip.new to strip-new.
+ (NM_PROG): Change from nm.new to nm-new.
+ (TOOL_PROGS, install-exec-local): Adjust accordingly.
+ * Makefile.in: Rebuild.
+
+Mon Aug 4 11:47:31 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Remove AC_ARG_PROGRAM; it's invoked by
+ AM_INIT_AUTOMAKE.
+ * configure: Rebuild.
+
+ * Makefile.am (install-exec-local): Create $(tooldir)/bin before
+ trying to install anything into it.
+ * Makefile.in: Rebuild.
+
+ * Makefile.am (TOOL_PROGS): Use an explicit $(EXEEXT).
+ (install-exec-local): When handling $(noinst_PROGRAMS), only use
+ $(EXEEXT) on the installed file. When handling $(TOOL_PROGS),
+ handle $(EXEEXT) correctly.
+ * configure.in: Add an explicit $(EXEEXT) when substituting for
+ the name of a program to build.
+ * Makefile.in, configure: Rebuild.
+
+ * aclocal.m4, configure, Makefile.in: Rebuild with new automake
+ patches.
+
+ * deflex.l, defparse.y: Use VERSIONK rather than VERSION.
+ * rclex.l, rcparse.y: Likewise.
+ * Makefile.am (windres_SOURCES): Add $(BULIBS).
+ * Makefile.in: Rebuild.
+
+Fri Aug 1 13:08:39 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * acinclude.m4: Include bfd/acinclude.m4, not bfd/acmacros.m4.
+ * aclocal.m4, configure: Rebuild with new libtool.
+
+Thu Jul 31 11:51:35 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am: New file, based on old Makefile.in.
+ * acinclude.m4: New file, from old aclocal.m4.
+ * configure.in: Call AM_INIT_AUTOMAKE and AM_PROG_LIBTOOL. Remove
+ shared library handling; now handled by libtool. Replace
+ AC_CONFIG_HEADER with AM_CONFIG_HEADER. Call AC_PROG_YACC,
+ AC_PROG_LEX, AC_DECL_YYTEST, AM_MAINTAINER_MODE, AM_CYGWIN32, and
+ AM_EXEEXT. Replace AC_PROG_INSTALL with AM_PROG_INSTALL. Remove
+ stamp-h handling in AC_OUTPUT.
+ * acconfig.h: Mention PACKAGE and VERSION.
+ * stamp-h.in: New file.
+ * Makefile.in: Now built with automake.
+ * aclocal.m4: Now built with aclocal.
+ * config.in, configure: Rebuild.
+
+ From Ton van Overbeek <tvoverbe@wk.estec.esa.nl>:
+ * rcparse.y (dialog): Default menu and class to be named.
+ (styles): If FONT is seen, set DS_SETFONT in dialog style.
+ * resbin.c (res_to_bin_dialog): Correct computation of font
+ information length.
+
+Wed Jul 30 11:21:06 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ From Ton van Overbeek <tvoverbe@wk.estec.esa.nl>:
+ * resbin.c (res_to_bin_menu): Correct computation of menu
+ vs. menuex length.
+ * resrc.c (define_stringtable): Add 1 to resource ID.
+
+Tue Jul 29 11:06:03 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * resbin.c (bin_to_res_string): Correct adjustment of data and
+ length. From Ton van Overbeek <tvoverbe@wk.estec.esa.nl>.
+
+Tue Jul 22 18:01:23 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * nlmconv.c (link_inputs): Call libiberty pexecute function.
+ (pexecute) [multiple versions]: Remove.
+
+Tue Jul 22 16:19:34 1997 Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>
+
+ * bucomm.c (make_tempname): If we might be using a DOS filesystem,
+ check for a backslash as well as a slash.
+
+Thu Jun 26 13:53:17 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * windres.c (main): Quit if we didn't get any resources.
+ (usage): Fix --yydebug usage message.
+ * rescoff.c (write_coff_file): Don't free the relocation array
+ until after we've closed the BFD.
+ (read_coff_rsrc): Quit rather than try to read standard input.
+ (write_coff_file): Quit rather than try to write to standard
+ output.
+ * rcparse.y: Add a couple of missing semicolons (accepted by bison
+ but not byacc).
+ * binutils.texi: Document windres.
+
+Wed Jun 25 20:57:06 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * resbin.c: New file.
+ * rclex.l, rcparse.y, rescoff.c, resrc.c, windres.c, windres.h:
+ Numerous fixes and improvements.
+ * Makefile.in: Rebuild dependencies.
+ (CFILES): Add resbin.c.
+ (WINDRES_OBJS): Add resbin.o.
+
+Sun Jun 22 17:29:41 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ First stab at Windows resource compiler:
+ * windres.h: New file.
+ * windres.c: New file.
+ * resrc.c: New file.
+ * rcparse.y: New file.
+ * rclex.l: New file.
+ * rescoff.c: New file.
+ * configure.in: Define and substitute BUILD_WINDRES.
+ * configure: Rebuild.
+ * Makefile.in: Rebuild dependencies.
+ (WINDRES_PROG): New variable.
+ (PROGS): Add @BUILD_WINDRES@.
+ (HFILES): Add dlltool.h and windres.h.
+ (CFILES): Add windres.c and resrc.c.
+ (GENERATED_CFILES): Add rcparse.c and rclex.c.
+ (WINDRES_OBJS): New variable.
+ $(WINDRES_PROG): New target.
+ (rcparse.c, rcparse.h, rclex.c): New targets.
+
+Thu Jun 12 12:27:51 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (export_type): Add data field.
+ (def_exports): Add data parameter. Change all callers.
+ (dump_def_info): Print data field.
+ (gen_def_file): Likewise.
+ (make_one_lib_file): Handle data field by not emitting simple
+ label and not emitting anything in SEC_TEXT.
+ (dtab): Print data field.
+ (process_duplicates): Merge data field.
+ * dlltool.h (def_exports): Update declaration.
+ * defparse.y (expline): Accept opt_DATA. Pass it to def_exports.
+ (opt_DATA): New non-terminal.
+
+Wed Jun 11 17:15:47 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.h: New file.
+ * deflex.l: Include dlltool.h and libiberty.h. Don't declare
+ strdup. Use xstrdup rather than strdup.
+ * defparse.y: Include bfd.h, bucomm.h, and dlltool.h.
+ * dlltool.c: Include dlltool.h and time.h. Make a lot of
+ variables and functions static. Make a lot of char * variables
+ and parameters const. Add declarations for static functions. Do
+ some reindenting. Hide more PowerPC stuff inside DLLTOOL_PPC.
+
+Wed Jun 11 12:05:52 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
+
+ * ar.c (bfd_special_undocumented_glue): Add const.
+
+Mon May 12 22:09:35 1997 Bob Manson <manson@charmed.cygnus.com>
+
+ * Makefile.in (check): Pass CC_FOR_TARGET and CFLAGS_FOR_TARGET
+ to runtest.
+
+Mon May 12 13:14:22 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Don't clear OPCODES when --enable-commonbfdlib is
+ used on HP/UX.
+ * configure: Rebuild.
+
+Fri Apr 25 14:22:08 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
+
+ * Makefile.in (maintainer-clean realclean): Change *.info*
+ to binutils.info* to save sysroff.info.
+
+Tue Apr 15 13:42:22 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (INSTALL): Set to @INSTALL@.
+ (INSTALL_XFORM, INSTALL_XFORM1): Remove.
+ (install): Depend upon installdirs. Use $(program_transform_name)
+ directly, rather than using $(INSTALL_XFORM) and
+ $(INSTALL_XFORM1).
+ (installdirs): New target.
+ (install-info): Run mkinstalldirs.
+
+Mon Apr 14 11:52:39 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (INSTALL): Change install.sh to install-sh.
+
+ From Thomas Graichen <graichen@rzpd.de>:
+ * Makefile.in: Always use $(SHELL) when running move-if-change.
+ * configure.in: Use ${CONFIG_SHELL} when running $ac_config_sub.
+ * configure: Rebuild.
+
+Fri Apr 4 13:28:02 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Add AC_FUNC_ALLOCA.
+ * configure, config.in: Rebuild.
+ * bucomm.h: Add alloca handling, copied from gas/as.h.
+ * dlltool.c: Add #pragma alloca for AIX to start of file.
+ * nlmconv.c: Likewise.
+
+ * Makefile.in (distclean): Remove site.exp and site.bak. Remove
+ everything that clean removes.
+
+Thu Apr 3 13:18:39 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (VERSION): Set to 2.8.1.
+
+ * Branched binutils 2.8.
+
+Tue Apr 1 16:21:44 1997 Klaus Kaempf <kkaempf@progis.de>
+
+ * configure.com: New file.
+ * config.h-vms: Remove file.
+ * makefile.vms: Update for new configure scheme.
+
+Mon Mar 31 15:30:43 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
+
+ * objcopy.c (make_same_dates): Use statbuf, not buf, if not
+ HAVE_GOOD_UTIME_H.
+
+Fri Mar 28 17:57:53 1997 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * Makefile.in ($(OBJDUMP_PROG)): Don't link against BFDLIB twice.
+ * configure.in: Add AC_ARG_ENABLE for commonbfdlib. If it is set,
+ set OPCODES to empty.
+ * configure: Rebuild.
+
+Thu Mar 27 16:03:02 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patch from Marty Leisner <leisner@sdsp.mc.xerox.com>:
+ * objcopy.c: Include <utime.h> or <sys/time.h>.
+ (strip_options): Add "preserve-dates".
+ (copy_options): Likewise.
+ (copy_usage): Mention -p and --preserve-dates.
+ (strip_usage): Likewise.
+ (make_same_dates): New static function.
+ (strip_main): Handle -p.
+ (copy_main): Likewise.
+ * binutils.texi, strip.1, objcopy.1: Document new option.
+
+ addr2line.c contributed by Ulrich Lauther
+ <Ulrich.Lauther@zfe.siemens.de>:
+ * addr2line.c: New file.
+ * Makefile.in: Rebuild dependencies.
+ (ADDR2LINE_PROG): New variable.
+ (MANPAGES): Add addr2line.
+ (PROGS): Add $(ADDR2LINE_PROG).
+ (CFILES): Add addr2line.c.
+ ($(ADDR2LINE_PROG)): New target.
+ * binutils.texi: Document addr2line.
+ * addr2line.1: New file.
+
+ * version.c (print_version): Update copyright date.
+
+Mon Mar 24 10:52:45 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * objdump.c (disassemble_data): Don't exit if a file cannot be
+ disassembled, instead just return.
+
+Thu Mar 20 21:16:51 1997 Jeffrey A Law (law@cygnus.com)
+
+ * size.c (usage): Make definition match its prototype.
+ (display_bfd, lprint_number, rprint_number): Likewise.
+ (print_berkeley_format, sysv_internal_printer): Likewise.
+ (print_sysv_format): Likewise.
+ * nm.c (set_print_radix, set_output_format): Likewise.
+ * objcopy.c (filter_bytes): Likewise.
+
+Tue Mar 18 16:39:55 1997 H.J. Lu <hjl@lucon.org>
+
+ * Many files: Add function prototypes.
+ * ar.c (mri_emul, get_pos_bfd): Make static.
+ * arlex.l: Include "libiberty.h". Don't declare strdup. Use
+ xstrdup rather than strdup.
+ * arparse.y (yyerror): Make argument const. Correct typo.
+ * arsup.c (strdup): Don't declare.
+ (ar_save): Use xstrdup rather than strdup.
+ * filemode.c: Include "bucomm.h".
+ * nm.c (usage): Make static.
+ (print_symname): Make format and name const.
+ * objcopy.c (cat): Remove.
+ (copy_archive): Make output_target const. Use concat, not cat.
+ (copy_file, simple_copy, smart_rename): Make arguments const.
+ * objdump.c (read_section_stabs): Likewise.
+ (print_section_stabs): Likewise.
+ (display_target_tables): Don't declare getenv.
+ * strings.c (strings_object_file): Change file to const.
+ (print_strings): Change filename to const.
+ * Makefile.in: Rebuild dependencies.
+
+Tue Mar 18 11:37:24 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Add BFD_NEED_DECLARATION(getenv).
+ * acconfig.h: Add NEED_DECLARATION_GETENV.
+ * bucomm.h (getenv): Declare if NEED_DECLARATION_GETENV.
+ * configure, config.in: Rebuild.
+ * nlmconv.c (getenv): Don't declare.
+
+ * Makefile.in: Rebuild dependencies.
+
+Sat Mar 15 15:35:56 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patches from Jamie Lokier <jamie@rebellion.co.uk>:
+ * objdump.c: Include "demangle.h".
+ (do_demangle): New static variable.
+ (usage): Mention -C/--demangle.
+ (long_options): Add "demangle".
+ (objdump_print_symname): New static function.
+ (objdump_print_addr_with_sym): Use objdump_print_symname.
+ (disassemble_bytes): Likewise.
+ (dump_reloc_set): Likewise.
+ (dump_symbols): Demangle symbol name.
+ (main): Handle -C.
+ * binutils.texi, objdump.1: Document -C/--demangle.
+
+ * objdump.c (usage): Mention --no-show-raw-insn.
+ (long_options): Add "no-show-raw-insn".
+ (disassemble_bytes): Handle --no-show-raw-insn.
+ * binutils.texi, objdump.1: Document --no-show-raw-insn.
+
+Wed Mar 12 11:42:00 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * rddbg.c (free_saved_stabs): Set the strings to NULL after being
+ freed.
+
+Fri Feb 28 17:18:45 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * bucomm.c (set_default_bfd_target): New function.
+ * bucomm.h (set_default_bfd_target): Declare.
+ * ar.c (main): Call set_default_bfd_target.
+ * nlmconv.c (main): Likewise.
+ * nm.c (main): Likewise.
+ * objcopy.c (main): Likewise.
+ * objdump.c (main): Likewise.
+ * size.c (main): Likewise.
+ * strings.c (main): Likewise.
+ * Makefile.in (bucomm.o): New target, to define TARGET.
+
+Tue Feb 25 21:28:38 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (adjust_section_vma): New static variable.
+ (usage): Mention --adjust-section-vma.
+ (OPTION_ADJUST_VMA): Define.
+ (long_options): Add "addjust-vma".
+ (display_bfd): If adjust_section_vma is not 0, add it to all the
+ section addresses.
+ (main): Handle OPTION_ADJUST_VMA.
+ * binutils.texi, objdump.1: Document --adjust-vma.
+
+Fri Feb 14 18:46:47 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * nm.c (print_symbol): Cache the BFD as well as the symbols and
+ relocs, and don't try to use the symbols or relocs with a
+ different BFD.
+
+Thu Feb 13 21:34:43 1997 Klaus Kaempf (kkaempf@progis.de)
+
+ * config.h-vms: sbrk() is provided on openVMS/Alpha.
+ * makefile.vms: allow compiling with current gcc snapshot.
+
+Thu Feb 13 20:14:40 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * arsup.c, coffgrok.c, dlltool.c, nlmconv.c: Use xmalloc rather
+ than malloc.
+
+Wed Feb 12 16:12:02 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (disassemble_data): Correct VMA argument to
+ find_symbol_for_address. Improve handling of code with no symbol
+ followed by code with a symbol.
+
+Wed Feb 12 12:16:47 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * objdump.c (disassemble_bytes): Make output of raw instructions
+ work better for non-standard values of bytes_per_chunk and
+ bytes_per_line.
+
+Thu Feb 6 14:14:59 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * objdump.c (disassemble_bytes): Added code to allow some control
+ over the way raw instructions are displayed.
+
+Thu Feb 6 12:36:03 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (struct bincl_file): Add next_stack field.
+ (push_bincl): Put the new file on both bincl_list and
+ bincl_stack. Clear the file_types field.
+ (pop_bincl): Use the next_stack field when popping the stack.
+ Don't put the file on bincl_list.
+ (find_excl): Include the file name when warning about an unfound
+ N_EXCL.
+
+ * debug.c (debug_type_samep): Don't crash if we are passed NULL.
+
+Thu Feb 6 11:54:24 1997 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * objcopy.1: Add missing space after .B.
+
+Fri Jan 31 10:33:07 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * objdump.c (disassemble_data): Initialize `aux.require_sec'.
+
+Wed Jan 29 13:21:21 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (objdump_print_value): Add skip_zeroes parameter.
+ Change all callers.
+ (objdump_print_addr_with_sym): Likewise. Call objdump_print_value
+ to print address.
+ (objdump_print_addr): New static function.
+ (objdump_print_address): Just call objdump_print_addr.
+ (disassemble_bytes): Print real address, not function offset.
+ Skip a certain number of leading zeroes.
+
+ * objdump.c (disassemble_zeroes): New static variable.
+ (usage): Mention --disassemble-zeroes.
+ (long_options): Add "disassemble-zeroes".
+ (disassemble_bytes): Check disassemble_zeroes.
+
+Tue Jan 28 16:47:26 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (disassemble_bytes): Don't skip zeroes if the
+ disassembler has told us that we are in a branch delay slot.
+
+Mon Jan 20 14:24:04 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * size.c (berkeley_sum): Rewrite. Skip sections which are not
+ SEC_ALLOC. Count SEC_READONLY sections as text.
+
+Tue Jan 14 15:14:14 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (maintainer-clean realclean): Remove *.info*, not
+ just *.info. From H.J. Lu <hjl@lucon.org>.
+
+Tue Dec 31 15:42:54 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (ALL_CFLAGS): Add -D_GNU_SOURCE.
+
+Fri Dec 27 11:19:26 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Work around bug in AC_FUNC_VFORK in autoconf 2.12.
+ * configure: Rebuild.
+
+Thu Dec 19 13:11:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patch from Andrew J Klossner <andrew@pogo.wv.tek.com>:
+ * objcopy.c (OPTION_WEAKEN): Define.
+ (copy_options): Add "weaken".
+ (copy_usage): Mention --weaken.
+ (weaken): New static variable.
+ (filter_symbols): Handle weaken.
+ (copy_object): Call filter_symbols if weaken.
+ (copy_main): Handle OPTION_WEAKEN.
+ * binutils.texi, objcopy.1: Document --weaken.
+
+Wed Dec 18 22:49:13 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Use NewFolderRecursive for installation.
+
+Sat Dec 7 10:17:25 1996 Jeffrey A Law (law@cygnus.com)
+
+ * Makefile.in (install): Add "else true" clause to cater to
+ broken "make" on some systems.
+
+Fri Dec 6 17:21:41 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (parse_ieee_bb): Always initialize namcopy to avoid gcc
+ warning about uninitialized variable.
+ (ieee_read_cxx_class): Likewise, for pf.
+ (ieee_enum_type): Likewise, for i.
+
+Tue Nov 26 17:01:25 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * wrstabs.c (stab_array_type): Add casts when printing
+ bfd_signed_vma values.
+
+ * configure: Rebuild with autoconf 2.12.
+
+Mon Nov 25 16:53:18 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (disassemble_data): Don't crash if there is no
+ symbol.
+
+Fri Nov 22 17:29:14 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * ar.c (open_inarch): Don't call bfd_openr with a null name.
+
+Fri Nov 1 12:08:13 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils.texi: Add section on reporting bugs.
+
+Thu Oct 31 18:20:53 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (struct stab_handle): Add bincl_list field.
+ (parse_stab): Pass value to push_bincl. Call find_excl for
+ N_EXCL.
+ (struct bincl_file): Add hash, file and file_types fields.
+ (push_bincl): Add hash parameter. Save it in the new hash field.
+ Save the file number in the new file field.
+ (pop_bincl): Put the bincl_file on bincl_list, rather than freeing
+ it. Save the file types in the new file_types field.
+ (find_excl): New static function.
+
+ * ieee.c (ieee_lineno): Don't compare line number addresses to
+ info->highaddr (undo part of October 28 patch).
+
+Tue Oct 29 16:40:22 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (objdump_print_value): Don't print the empty string
+ for zero.
+
+Mon Oct 28 16:58:14 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (struct stab_handle): Add function_end field.
+ (start_stab): Initialize function_end.
+ (finish_stab): Pass info->function_end to debug_end_function.
+ (parse_stab): If info->function_end is set, use it as the address
+ which ends a function.
+
+ * ieee.c (ieee_array_type): Remember the correct size.
+
+ * ieee.c (ieee_finish_compilation_unit): Permit coalescing ranges
+ that are up to 0x1000 bytes apart, not just 64.
+ (ieee_add_bb11_blocks): Don't bother to emit a BB11 that is less
+ than 0x100 bytes.
+ (ieee_lineno): Only emit line numbers that are less than
+ info->highaddr.
+
+Fri Oct 25 12:12:17 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (struct ieee_defined_enum): Add defined field.
+ (ieee_enum_type): If the enum tag has been seen before but not
+ defined, reuse the same type index, and define it.
+ (ieee_tag_type): If this enum has not been defined, add an
+ undefined entry to the list of enums.
+
+ * objdump.c (disassemble_bytes): Let the disassembler override the
+ number of bytes printed on a line.
+
+Thu Oct 24 16:42:10 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (prefix_addresses): New static variable.
+ (long_options): Add "prefix-addresses".
+ (compare_symbols): Sort BSF_FUNCTION symbols before other
+ symbols.
+ (find_symbol_for_address): New static function, broken out of
+ objdump_print_address.
+ (objdump_print_addr_with_sym): New static function, broken out of
+ objdump_print_address.
+ (objdump_print_address): Call new functions.
+ (disassemble_bytes): New static function, broken out of
+ disassemble_data. Change disassembly format, unless
+ prefix_addresses is set.
+ (disassemble_data): Call disassemble_bytes. Unless
+ prefix_addresses is set, disassemble in chunks headed by a
+ symbol.
+ * binutils.texi, objdump.1: Document --prefix-addresses.
+
+ * rddbg.c (read_section_stabs_debugging_info): Preserve the
+ backslash when concatenating multiple stabs strings.
+
+Thu Oct 10 11:36:31 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * dlltool.c (scan_open_obj_file): Fix loop exit test.
+ Add missing parameter to def_exports.
+
+Tue Oct 8 12:06:17 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (LEX_OPTIONS): Set to empty string. -I -Cem is the
+ default for flex, and is not recognized by lex.
+
+Thu Oct 3 17:41:23 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils.texi (Target Selection): Document that you can now
+ specify targets using configuration triplets.
+
+ * ar.c (usage): Declare. Make sure all callers pass an argument.
+
+Thu Oct 3 15:39:42 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
+
+ * Makefile.in (clean): Remove config.log.
+
+Wed Oct 2 15:49:16 1996 Klaus Kaempf <kkaempf@progis.de>
+
+ * makefile.vms: Bump version date.
+
+Tue Oct 1 15:00:59 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * version.c (print_version): New function.
+ * bucomm.h (print_version): Declare.
+ * ar.c (program_version): Don't declare.
+ (do_show_version): Remove.
+ (usage): Add help parameter. Print bug report address.
+ (main): Set is_ranlib at start. Check for --help and --version.
+ Call print_version, not do_show_version.
+ * nlmconv.c (program_version): Don't declare.
+ (main): Call print_version.
+ (show_usage): Print bug report address.
+ * nm.c (program_version, print_version): Don't declare.
+ (usage): Print bug report address.
+ (main): Call print_version.
+ * objcopy.c (program_version): Don't declare.
+ (copy_usage): Print bug report address.
+ (strip_usage): Likewise.
+ (strip_main): Call print_version.
+ (copy_main): Likewise.
+ * objdump.c (program_version): Don't declare.
+ (usage): Print bug report address.
+ (main): Call print_version.
+ * size.c (program_version): Don't declare.
+ (usage): Print bug report address.
+ (main): Call print_version.
+ * strings.c (program_version): Don't declare.
+ (main): Call print_version.
+ (usage): Print bug report address.
+ * Makefile.in: Update dependencies.
+
+Thu Sep 19 14:53:15 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c: Revert Monday's reflocalp patch, and apply this patch
+ instead:
+ (write_ieee_debugging_info): Write a dummy type at the end of the
+ global type block.
+
+Mon Sep 16 15:30:54 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (struct ieee_write_type): Add reflocalp field.
+ (ieee_pointer_type): Set reflocalp after pushing type.
+ (ieee_function_type): If reflocalp is set, make this type local.
+ (ieee_range_type, ieee_array_type, ieee_set_type): Likewise.
+ (ieee_const_type, ieee_volatile_type): Likewise.
+ (ieee_struct_field, ieee_class_baseclass): Likewise.
+
+ * ieee.c (struct ieee_info): Add global_types field.
+ (parse_ieee_bb): When starting a BB1, initialize the types field
+ to the global_types field.
+ (parse_ieee_be): When ending a BB2, copy the types field to the
+ global_types field.
+
+Fri Sep 13 17:32:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (change_leading_char): New static variable.
+ (OPTION_CHANGE_LEADING_CHAR): Define.
+ (copy_options): Add "change-leading-char".
+ (copy_usage): Mention --change-leading-char.
+ (filter_symbols): Add obfd parameter. Change all callers.
+ Implement change_leading_char.
+ (copy_object): Call filter_symbols if change_leading_char.
+ (copy_main): Handle OPTION_CHANGE_LEADING_CHAR.
+ * binutils.texi, objcopy.1: Document --change-leading-char.
+
+Tue Sep 3 14:05:29 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (ieee_enum_type): Don't check index into a NULL names
+ array.
+ * nm.c (sort_symbols_by_size): Always initialize next.
+ * rdcoff.c (parse_coff_type): Warn about an incomprehensible
+ type rather than crashing.
+ * rddbg.c (read_symbol_stabs_debugging_info): Initialize f.
+ * stabs.c (parse_stab_members): Set context in all cases.
+
+Thu Aug 29 16:56:52 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * configure.in (i[345]86-*-*): Recognize i686 for pentium pro.
+ * configure: Regenerate.
+
+Thu Aug 29 11:29:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (L_tmpnam): Never define.
+ (display_target_list): Use choose_temp_base instead of tmpnam.
+ (display_info_table): Likewise.
+
+Tue Aug 27 18:15:01 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (parse_stab): An N_FUN symbol with an empty string
+ indicates the end of a function.
+
+Thu Aug 22 17:08:00 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * wrstabs.c (struct string_hash_entry): Add next field.
+ (struct stab_write_handle): Change strings to a pointer to
+ string_hash_entry. Add last_strings field. Remove strings_alloc
+ field.
+ (string_hash_newfunc): Initialize next field.
+ (stab_write_symbol): Copy string into hash table rather than into
+ buffer. Keep a list of hash table entries.
+ (write_stabs_in_sections_debugging_info): Initialize last_string.
+ Copy strings from list of hash table entries in memory.
+ (stab_modify_type): If the entry on the stack is a definition,
+ make a new definition rather than failing an assert.
+ (stab_array_type): The size is only zero if high is strictly less
+ than low.
+
+ * ieee.c (struct ieee_info): Add saw_filename field.
+ (parse_ieee): Initialize saw_filename.
+ (parse_ieee_bb): Set saw_filename for a BB1 or BB2. In a BB1,
+ discard the current variables and types. In a BB10, if no
+ filename has been seen, call debug_set_filename.
+ (parse_ieee_ty): In case 'g', the type is optional.
+
+ * prdbg.c (pr_fix_visibility): Don't abort on
+ DEBUG_VISIBILITY_IGNORE.
+
+ * debug.c (debug_name_type): Correct error message.
+
+ * configure.in: Substitute HLDENV.
+ * configure: Rebuild.
+ * Makefile.in (HLDENV): New variable. Use it whenever linking a
+ program.
+
+Thu Aug 15 19:30:41 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Add symbolic doublequotes around the version
+ number.
+
+Thu Aug 8 12:27:52 1996 Klaus Kaempf <kkaempf@progis.de>
+
+ * makefile.vms: Add better support for DEC C compilation.
+ Add new macros as in Makefile.in.
+
+Wed Aug 7 14:27:33 1996 Philippe De Muyter <phdm@info.ucl.ac.be>
+
+ * configure.in: Call BFD_NEED_DECLARATION on strstr and sbrk.
+ * acconfig.h (NEED_DECLARATION_STRSTR): New macro.
+ (NEED_DECLARATION_SBRK): New macro.
+ * configure, config.in: Rebuild.
+ * bucomm.h (strstr): Declare if NEED_DECLARATION_STRSTR.
+ (sbrk): Declare if HAVE_SBRK and NEED_DECLARATION_SBRK.
+
+ * prdbg.c (pr_end_struct_type): Avoid using a string constant in
+ assert, for the benefit of broken assert macros.
+
+Fri Jul 26 14:06:50 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (disassemble_data): Set disasm_info.flavour from
+ abfd.
+
+Tue Jul 23 13:59:54 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (secdata): In non DLLTOOL_PPC case, change alignment
+ of .text section to 2.
+
+Mon Jul 22 08:46:15 1996 Stu Grossman (grossman@lisa.cygnus.com)
+
+ * objdump.c (dump_section_stabs): Fix test for stabs sections
+ ending with numbers. This fixes a problem with .stab being
+ confused with .stab.index.
+
+Wed Jul 10 13:32:28 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (stab_demangle_fund_type): Return a void * for a
+ template, rather than simply aborting.
+
+Mon Jul 8 15:28:05 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ar.c (open_inarch): Add file parameter. Change all callers. If
+ this is a newly created archive, set the target based on the
+ file.
+ * arsup.h (open_inarch): Update declaration.
+
+Thu Jul 4 12:00:55 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (VERSION): Set to cygnus-2.7.1.
+
+ * Released binutils 2.7.
+
+ * rdcoff.c (parse_coff): Get address to pass to debug_end_function
+ from function size, not value of .ef symbol. From Ning
+ Mosberger-Tang <ning@AZStarNet.com>.
+
+Sat Jun 29 21:18:09 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (strip_main): Add -o option, and handle it.
+ (strip_usage): Mention -o.
+ * binutils.texi, strip.1: Mention -o.
+
+Mon Jun 24 17:19:02 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
+
+ * Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir,
+ INSTALL_PROGRAM, INSTALL_DATA): Use autoconf set values.
+ (docdir): Removed.
+ * configure.in (AC_PREREQ): Autoconf 2.5 or higher.
+
+Mon Jun 24 11:59:13 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (endian): New static variable.
+ (usage): Mention -EB/-EL/--endian.
+ (long_options): Add "endian".
+ (disassemble_data): If endianness was specified, replace
+ abfd->xvec with a copy of itself with the given endianness.
+ (main): Handle -EB/-EL/--endian.
+ * binutils.texi, objdump.1: Mention -EB/-EL/--endian.
+
+ * objdump.c: Make most variables and functions static.
+
+ * configure.in: On alpha*-*-osf*, link against libbfd.a if not
+ using shared libraries.
+ * configure: Rebuild with autoconf 2.10.
+
+Sun Jun 23 14:47:36 1996 Kim Knuttila <krk@cygnus.com>
+
+ * dlltool.c (secdata): Changed .rdata to .reldata so .reloc will work.
+ (make_one_lib_file): Removed cruft. (#if 1)
+
+Wed Jun 19 14:46:38 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (stabs): Change from struct internal_nlist * to
+ bfd_byte *.
+ (print_section_stabs): Fetch stabs information directly, rather
+ than assuming that struct internal_nlist is the right size.
+
+ * binutils.texi: Document change to binary format: file position
+ based on load address, not section VMA.
+
+ * bucomm.h: Define SEEK_SET, SEEK_CUR, and SEEK_END if they are
+ not already defined.
+
+Tue Jun 18 18:25:00 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (DISTSTUFF): Add deflex.c.
+
+Tue Jun 18 15:03:44 1996 Klaus Kaempf <kkaempf@progis.de>
+
+ * config.h-vms, makefile.vms: New files.
+
+Mon Jun 17 09:47:31 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (make_one_lib_file): Use BFD_RELOC_RVA rather than
+ BFD_RELOC_32 in IDATA7.
+
+Wed Jun 12 11:52:06 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * nm.c (struct get_relocs_info): Define.
+ (line_numbers): New static variable.
+ (long_options): Add "line-numbers".
+ (usage): Mention -l and --line-numbers.
+ (main): Handle -l.
+ (print_symbol): Print line numbers if requested.
+ (get_relocs): New static function.
+ * binutils.texi, nm.1: Document -l/--line-numbers.
+
+Tue Jun 11 20:12:15 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (dump_reloc_set): Add sec parameter. Change all
+ callers. If with_line_numbers is set, display line numbers of
+ relocation entries.
+ * binutils.texi, objdump.1: Document -l with -r.
+
+Mon Jun 10 23:42:59 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ar.c (open_inarch): Report BFD error message if an archive can
+ not be recognized. List matching formats if the file is
+ ambiguously recognized.
+ (ranlib_touch): Likewise.
+
+Thu Jun 6 13:56:14 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * README: Add notes on how to build if you don't have ar.
+
+ * Makefile.in: Remove old incorrect setting of CC.
+
+Tue Jun 4 10:52:49 1996 Tom Tromey <tromey@csk3.cygnus.com>
+
+ * Makefile.in (install): Don't check to see if tooldir exists.
+ Make $(tooldir) and $(tooldir)/bin.
+
+Mon Jun 3 17:40:23 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * strings.c (main): Make main an int function, not void.
+
+Fri May 31 13:59:24 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * nm.c (filter_symbols): Check for BSF_WEAK as well as
+ BSF_GLOBAL.
+ * objcopy.c (filter_symbols): Likewise.
+
+Wed May 8 16:57:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (copy_object): Make clear that it is only a warning
+ when the output file can not represent the architecture.
+
+Fri May 3 11:30:17 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (disassemble_data): Don't refer to bytes past the end
+ of data.
+
+Wed Apr 24 14:10:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * rddbg.c (read_symbol_stabs_debugging_info): Move call to
+ free_saved_stabs outside the loop over the symbols.
+
+Tue Apr 23 12:56:11 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (compare_symbols): Sort symbols whose names start with
+ `.' after other symbols. If no other decision can be made, sort
+ symbols by name.
+
+Thu Apr 18 16:02:11 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * dep-in.sed: Substitute $(BFDDIR) for @BFDDIR@.
+ * Makefile.in: Rebuild dependencies.
+ (dep.sed): Substitute $(BFDDIR) for @BFDDIR@.
+
+Tue Apr 16 13:50:22 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * rdcoff.c: New file.
+ * rddbg.c (read_debugging_info): Read COFF symbols if COFF flavour
+ and no stabs were found.
+ * budbg.h (parse_coff): Declare.
+ * Makefile.in: Rebuild dependencies.
+ (CFILES): Add rdcoff.c.
+ (DEBUG_OBJS): Add rdcoff.o.
+
+Mon Apr 15 15:55:01 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * nlmconv.c (choose_temp_base{,_try}): Delete, in libiberty now.
+ (link_inputs): Update call to choose_temp_base.
+
+Mon Apr 8 14:40:05 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Permit --enable-shared to specify a list of
+ directories.
+ * configure: Rebuild.
+
+Fri Mar 29 16:11:33 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (dump_section_header): Print the SEC_LINK_ONCE flag
+ and the SEC_LINK_DUPLICATES field.
+
+Fri Mar 29 11:35:55 1996 J.T. Conklin (jtc@lisa.cygnus.com)
+
+ * nlmconv.1: Changed to be recognized by catman -w on Solaris.
+
+Thu Mar 28 14:17:02 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * wrstabs.c (stab_enum_type): Set buf before using it.
+
+Fri Mar 22 15:49:08 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (struct stab_handle): Add field abfd.
+ (start_stab): Add abfd parameter.
+ (parse_stab_string): Skip the symbol leading char when searching
+ for the value of a global symbol.
+ * budbg.h (start_stab): Update declaration.
+ * rddbg.c (read_section_stabs_debugging_info): Pass abfd to
+ start_stab.
+ (read_symbol_stabs_debugging_info): Likewise.
+
+Thu Mar 21 12:40:48 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * wrstabs.c (stab_function_type): Output an empty typedef for an
+ unused argument, rather than making up a meaningless name.
+ (stab_variable): Use N_RSYM for a DEBUG_REGISTER variable.
+
+ * ieee.c (struct ieee_info): Add global_vars field.
+ (parse_ieee_be): When ending the global typedef block, copy the
+ variables into info->global_vars.
+ (parse_ieee_atn): Don't require an NN record for a pmisc ATN.
+ (ieee_read_reference): Search the global variables after the local
+ variables.
+
+Wed Mar 20 18:08:19 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * objdump.c (disassemble_data): Make sure sym_name is always set.
+ (dump_section_header): Always put a space after the section name.
+ (dump_bfd_header): Terminate output with newline.
+
+Wed Mar 20 16:35:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * wrstabs.c: New file.
+ * budbg.h (write_stabs_in_sections_debugging_info): Declare.
+ * objcopy.c (write_debugging_info): For COFF or ELF, output stabs
+ in sections.
+ * Makefile.in: Rebuild dependencies.
+ (CFILES): Add wrstabs.c.
+ (WRITE_DEBUG_OBJS): New variable.
+ ($(OBJCOPY_PROG)): Use $(WRITE_DEBUG_OBJS), not $(DEBUG_OBJS).
+ ($(STRIP_PROG)): Likewise.
+
+ * stabs.c (parse_stab_members): Make type stub detection more like
+ gdb.
+
+ * ieee.c (struct ieee_handle): Add fields complex_float_index and
+ complex_double_index.
+ (ieee_complex_type): Cache type index in complex_float_index and
+ complex_double_index, depending upon size. Set size on type stack
+ to size * 2.
+
+ * ieee.c (ieee_empty_type): Use builtin_unknown, not 0.
+ (ieee_void_type): Use builtin_void, not 1.
+
+ * ieee.c (parse_ieee_ty): Handle 'V' type code.
+ (parse_ieee_atn): Don't require two numbers for type 10.
+
+ * ieee.c (parse_ieee_be): Add one to offset at end of function or
+ block.
+
+ * ieee.c (struct ieee_block): Add field skip.
+ (parse_ieee_bb): Don't call debug_record_function for __XRYCPP
+ function, and set skip field.
+ (parse_ieee_be): Don't call debug_end_function if skip is set.
+
+ * debug.c (struct debug_handle): Add fields current_write_lineno
+ and current_write_lineno_index.
+ (debug_write): Initialize current_write_lineno and
+ current_write_lineno_index for each unit. Call
+ debug_write_linenos rather than writing out the line numbers
+ directly.
+ (debug_write_function): Call debug_write_linenos.
+ (debug_write_block): Likewise.
+ (debug_write_linenos): New static function.
+
+ * debug.c (debug_write_type): For DEBUG_KIND_FUNCTION, push return
+ type before arguments.
+
+Mon Mar 18 18:05:33 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Add AC_FUNC_VFORK.
+ * configure, config.in: Rebuild.
+ * dlltool.c, nlmconv.c: Include <vfork.h> if HAVE_VFORK_H is
+ defined.
+
+ * stabs.c (parse_stab_range_type): A complex type is defined as a
+ subrange of itself with the high bound zero.
+ * ieee.c (ieee_complex_type): Don't crash on sizes of 12 or 16.
+
+Tue Mar 12 12:09:43 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (ieee_write_undefined_tag): Switch to global_types even
+ if it is not empty.
+ (ieee_tag_type): For an enum, look through info->enums.
+
+ * configure: Rebuild with autoconf 2.8.
+
+ * debug.c (debug_type_samep): Don't loop endlessly in
+ DEBUG_KIND_ENUM case. From Eric Baur <ecb@nexen.com>.
+
+Mon Mar 11 12:35:03 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * rddbg.c (read_section_stabs_debugging_info): Call save_stab for
+ each stab entry, call stab_context on an error, and call
+ free_saved_stabs before rturning.
+ (read_symbol_stabs_debugging_info): Likewise.
+ (SAVE_STABS_COUNT): Define.
+ (struct saved_stab): Define.
+ (saved_stabs, saved_stabs_index): New static variables.
+ (save_stab, stab_context, free_saved_stabs): New static functios.
+
+ * objdump.c (stab_name): Remove.
+ (struct stab_print): Remove.
+ (stab_print): Remove.
+ (dump_stabs): Don't initialize stab_name.
+ (print_section_stabs): Call bfd_get_stab_name rather than using
+ the stab_name array.
+
+Tue Feb 27 19:52:01 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * prdbg.c (pr_int_constant): Initialize info correctly.
+ (pr_float_constant): Likewise.
+
+Mon Feb 26 18:11:37 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Update to handle shared library support.
+
+Sat Feb 24 11:21:49 1996 Alan Modra <alan@spri.levels.unisa.edu.au>:
+
+ * Makefile.in ($(OBJDUMP_PROG)): Search $(BFDLIB) before
+ $(OPCODES).
+
+Thu Feb 15 12:44:45 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Don't tamper with LDFLAGS. Call AC_PROG_CC before
+ configure.host.
+ * configure: Rebuild.
+
+ * configure.in: Substitute RPATH_ENVVAR.
+ * configure: Rebuild.
+ * Makefile.in (RPATH_ENVVAR): New variable.
+ (check): Use $(RPATH_ENVVAR) rather than LD_LIBRARY_PATH.
+
+ * objcopy.c (smart_rename): Rather than doing chmod then chown, do
+ chmod without setuid, then chown, then chmod with setuid.
+
+Wed Feb 14 16:46:42 1996 Martin Anantharaman <martin@mail.imech.uni-duisburg.de>
+
+ * arsup.c (map_over_list): Reindent. Don't assume that the
+ function does not delete the BFD.
+ (ar_addlib_doer): Don't set prev->next if prev is NULL.
+
+Wed Feb 14 15:12:17 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (ieee_regno_to_genreg): Convert register numbers for m68k
+ and i960.
+ (ieee_genreg_to_regno): Likewise.
+
+Mon Feb 12 14:19:59 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c: Extensive changes to write code to put types in the
+ global type block when possible, to output ranges for all memory
+ occupied by the module, and to improve efficiency.
+
+ * debug.c (struct debug_handle): Remove class_mark field. Add
+ id_list and compare_list fields.
+ (struct debug_class_id): Define.
+ (struct debug_type_compare_list): Define.
+ (debug_write): Initialize info->id_list
+ (debug_write_name): Remove reference to info->class_mark.
+ (debug_write_type): Get id for all structs and classes. Simplify
+ test for whether struct has already been written.
+ (debug_write_class_type): Get id for all classes. Simplify test
+ for whether class has already been written.
+ (debug_write_block): Don't write out blocks other than the top
+ level block if they have no local variables.
+ (debug_set_class_id): New static function.
+ (debug_type_samep): New static function.
+ (debug_class_type_samep): New static function.
+ * prdbg.c (pr_start_struct_type): Always print id.
+ (pr_start_class_type): Likewise.
+ (pr_tag_type): Likewise.
+
+ * stabs.c (struct stab_handle): Add syms and symcount fields.
+ (start_stab): Add syms and symcount parameters. Change all
+ callers.
+ (parse_stab_string): Look up global variables in the symbol table
+ to get the right value.
+ * budbg.h (start_stab): Update declaration.
+ * rddbg.c (read_section_stabs_debugging_info): Add syms and
+ symcount parameters. Change all callers.
+
+ * stabs.c (parse_stab_array_type): If the index type is 0, use
+ int.
+
+Wed Feb 7 14:17:45 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (ieee_start_compilation_unit): Clear modified and
+ modified_alloc fields of info.
+
+ * configure.in: Check for --enable-shared. Substitute new
+ variables BFDLIB and OPCODES.
+ * configure: Rebuild.
+ * Makefile.in (BFDLIB): Set to @BFDLIB@.
+ (OPCODES): Set to @OPCODES@.
+
+Mon Feb 5 16:18:42 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ Support for building bfd and opcodes as shared libraries, based on
+ patches from Alan Modra <alan@spri.levels.unisa.edu.au>:
+ * configure.in (HLDFLAGS): New substitution.
+ * configure: Rebuild.
+ * Makefile.in (HLDFLAGS): New variable. Make all links use
+ $(HLDFLAGS) before $(CFLAGS) and $(LDFLAGS).
+ (BFDLIB_DEP): New variable. Replace all occurrences of $(BFD) as
+ a dependency with $(BFDLIB_DEP). Remove $(BFD) as a dependency if
+ there is also a dependency on $(ADDL_DEPS).
+ (BFDLIB): Rename from BFD; change all uses; set to -L../bfd -lbfd.
+ (OPCODES_DEP): New variable. Replace all occurrends of $(OPCODES)
+ as a dependency with $(OPCODES_DEP).
+ (OPCODES): Set to -L../opcodes -lopcodes.
+ (ADDL_DEPS): New variable. Replace all occurrences of
+ $(ADDL_LIBS) as a dependency with $(ADDL_DEPS).
+ (check): Set LD_LIBRARY_PATH in the environment.
+ (config.status): Depend upon BFD configure.host and config.bfd.
+
+Fri Feb 2 17:02:59 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * objdump.c: #include stdarg.h or varargs.h.
+ (objdump_print_value): Change FILE* arg to struct disassemble_info*.
+ All callers updated. Use fprintf_func.
+ (objdump_print_address): Consistently use fprintf_func.
+ (objdump_sprintf): New function.
+ (disassemble_data): Print insn into a buffer, print raw insn ourselves,
+ then print insn mnemonic.
+
+Fri Feb 2 16:48:55 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure: Regenerate.
+
+Thu Feb 1 09:38:18 1996 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * configure.in (i[3-6]86-*-win32): Becomes i[3-6]86-*-cygwin32.
+ (powerpc*-*-cygwin32): New.
+ * configure: Regenerated.
+
+Wed Jan 31 13:22:03 1996 Richard Henderson <rth@tamu.edu>
+
+ * Makefile.in (distclean): Remove $(DEMANGLER_PROG).1.
+
+Mon Jan 29 17:36:29 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patches from H J Lu <hjl@zoom.com>:
+ * objcopy.c (remove_leading_char): New static variable.
+ (OPTION_REMOVE_LEADING_CHAR): Define.
+ (copy_usage): Mention --remove-leading-char.
+ (filter_symbols): If remove_leading_char, and the first character
+ of a global symbol matches the symbol leading char of the BFD,
+ remove the first character.
+ (copy_object): Filter the symbols if remove_leading_char is set.
+ (copy_main): Handle --remove-leading-char.
+ * binutils.texi, objcopy.1: Document --remove-leading-char.
+
+Sat Jan 27 15:40:13 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * objdump.c (fprintf): Add prototype to avoid compiler warning on
+ SunOS.
+
+Fri Jan 26 11:53:42 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils.texi (nm): Improve documentation on symbol types.
+ (objdump): Reference the stabs manual from the discussion of the
+ --stabs option.
+
+Thu Jan 25 11:21:46 1996 Raymond Jou <rjou@mexican.cygnus.com>
+
+ * mpw-make.sed: Add a "stamps" target.
+
+Thu Jan 25 13:51:44 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (dump_headers, dump_section_header): Change objdump -h
+ output to be simpler and to include section file offsets.
+
+Wed Jan 24 12:06:05 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (parse_stab_members): Don't adjust voffset.
+
+ * ieee.c (ieee_read_cxx_class): Don't multiply voffset by 4.
+ (struct ieee_write_type): Add name field.
+ (struct ieee_type_class): Remove name field. Change all uses to
+ use new name field in type instead.
+ (struct ieee_name_type): Likewise.
+ (ieee_start_struct_type): Initialize name field of type.
+ (ieee_start_class_type): Don't initialize classdef entry of tag.
+ (ieee_class_method_var): Don't adjust voffset.
+ (ieee_end_class_type): Likewise.
+ (ieee_tag_type): Initialize new name field of type.
+ (ieee_typdef): Set name after copying in type information.
+
+ * debug.c (VOFFSET_STATIC_METHOD): Define as -1, not 1.
+
+ * ieee.c (struct ieee_modified_type): Define.
+ (struct ieee_handle): Add modified and modified_alloc fields.
+ (ieee_get_modified_info): New static function.
+ (ieee_pointer_type): Cache type index.
+ (ieee_const_type): Likewise.
+ (ieee_volatile_type): Likewise.
+
+ * ieee.c (ieee_define_named_type): When creating a tag for an
+ anonymous struct, copy the name into memory.
+ (ieee_tag_type): Likewise.
+ * debug.c (debug_write_type): Only check and set id field for an
+ unnamed object.
+ (debug_write_class_type): Likewise.
+
+ * ieee.c: Various changes to write out types for functions and
+ references, and to not write out unnecessary function types.
+
+ * ieee.c (struct ieee_var): Remove variable field. Add kind
+ field, and define some enum constants for it.
+ (parse_ieee_ty): Set kind field of variable for 'x' and 'X' types.
+ (parse_ieee_atn): Make an indirect slot for an external variable,
+ although we otherwise don't record it. Set kind field rather than
+ variable field of pvar.
+ (ieee_read_cxx_class): Try to get the type of a static member.
+ (ieee_read_reference): Check kind field rather than variable
+ field.
+
+Tue Jan 23 15:54:18 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c: Various changes to handle reading C++ reference type
+ information.
+
+ * debug.h (enum debug_var_kind): Add DEBUG_VAR_ILLEGAL.
+ (enum debug_parm_kind): Add DEBUG_PARM_ILLEGAL.
+ * debug.c (debug_get_parameter_types): Handle DEBUG_KIND_FUNCTION.
+
+ * ieee.c: Various changes to write out definitions of C++ classes.
+
+ * debug.c (debug_append_filename): Remove.
+ * debug.h (debug_append_filename): Don't declare.
+
+ * stabs.c (struct stab_handle): Remove last_type field. Add
+ so_string and so_value fields.
+ (finish_stab): Call stab_emit_pending_vars before calling
+ debug_end_function. Don't warn about pending variables.
+ (parse_stab): Accumulate N_SO strings until a non N_SO symbol is
+ seen, rather than calling debug_append_filename. Call
+ stab_emit_pending_vars before calling debug_end_function. Don't
+ set info->last_type.
+
+Tue Jan 23 09:53:54 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * objdump.c (disassemble_data): Handle unknown endianness.
+ Pass fprintf to INIT_DISASSEMBLE_INFO.
+
+Mon Jan 22 16:46:43 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ Add new option --show-raw-insn.
+ * objdump.c (show_raw_insn): New global.
+ (usage): Update.
+ (long_options): Update.
+ (disassemble_data): Set disasm_info.flags if --show-raw-insn.
+
+ * objdump.c (disassemble_data): Set new arch,mach,endian fields in
+ disasm_info.
+
+Mon Jan 22 19:29:36 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c: Extensive changes to pass a single info argument around
+ in the reading routines, rather than several arguments. Add code
+ to read C++ debugging records.
+
+ * debug.h (debug_get_type_size): Declare.
+ (debug_get_field_name): Declare.
+ (debug_get_field_bitpos): Declare.
+ (debug_get_field_bitsize): Declare.
+ (debug_get_field_visibility): Declare.
+ (debug_get_field_physname): Declare.
+ * debug.c (debug_get_real_type): Handle DEBUG_KIND_TAGGED.
+ (debug_get_type_size): New function.
+ (debug_get_field_name): New function.
+ (debug_get_field_bitpos): New function.
+ (debug_get_field_bitsize): New function.
+ (debug_get_field_visibility): New function.
+ (debug_get_field_physname): New function.
+ (debug_write_type): Make sure we pass the real kind, not INDIRECT,
+ to tag_type. Pass the name recursively for INDIRECT.
+
+Fri Jan 19 12:31:57 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * debug.h (struct debug_write_fns): Remove ellipsis_type. Add int
+ and boolean parameters to function_type. Add boolean parameter to
+ method_type.
+ (debug_make_ellipsis_type): Don't declare.
+ (debug_make_function_type): Add debug_type * and boolean
+ parameters. Change all callers.
+ (debug_make_method_type): Add boolean parameter. Change all
+ callers.
+ (debug_get_parameter_types): Add boolean * parameter. Change all
+ callers.
+ (debug_get_target_type): Declare.
+ * debug.c (struct debug_function_type): Add fields arg_types and
+ varargs.
+ (struct debug_method_type): Add field varargs.
+ (debug_ellipsis_type, ELLIPSIS_P): Remove.
+ (debug_make_ellipsis_type): Remove.
+ (debug_make_function_type): Add arg_types and varargs parameters.
+ (debug_make_method_type): Add varargs parameter.
+ (debug_get_parameter_types): Add pvarargs parameter.
+ (debug_get_target_type): New function.
+ (debug_write_type): In case DEBUG_KIND_FUNCTION, push argument
+ types and pass count to function_type. In DEBUG_KIND_METHOD, use
+ a signed int for the count, don't call ellipsis_type, and pass
+ varargs to method_type.
+ * stabs.c (struct stab_demangle_info): Add varargs field.
+ (stab_demangle_argtypes): Add pvarargs parameter. Change all
+ callers.
+ (stab_demangle_args): Likewise.
+ (stab_demangle_type): In case 'F', pick up argument types.
+ * prdbg.c (pr_ellipsis_type): Remove.
+ (pr_function_type): Add argcount and varargs parameters.
+ (pr_method_type): Add varargs parameter.
+ * ieee.c (ieee_ellipsis_type): Remove.
+ (ieee_function_type): Add argcount and varargs parameters.
+ (ieee_method_type): Add varargs parameter. Remove most of
+ function body, and just call ieee_function_type.
+
+ * stabs.c: Include "demangle.h". Added several new static
+ functions not listed below to demangle argument types; they are
+ all called via stab_demangle_argtypes.
+ (finish_stab): If the kind of an undefined tag is
+ DEBUG_KIND_ILLEGAL, use DEBUG_KIND_STRUCT instead. Warn if there
+ are any pending variable.
+ (parse_stab): Don't close the function when the block depth goes
+ to zero. Pass value to debug_end_function.
+ (parse_stab_string): In case 'T', pass the name to
+ parse_stab_type.
+ (parse_stab_type): In case 'x', use stab_find_tagged_type. In
+ case '#', handle functions with variable numbers of arguments.
+ (parse_stab_struct_type): Add tagname parameter. Change all
+ callers.
+ (parse_stab_members): Add tagname and typenums parameters. Change
+ all callers. If the type of a method is a stub, call
+ parse_stab_argtypes to demangle the argument types and get the
+ physical name of the function.
+ (parse_stab_argtypes): New static function.
+ (stab_record_variable): For a DEBUG_GLOBAL or DEBUG_STATIC
+ variable, call debug_record_variable immediately.
+ (stab_find_tagged_type): New static function.
+
+ * debug.h (enum debug_type_kind): Add DEBUG_KIND_ILLEGAL.
+ (struct debug_write_fns): Add field ellipsis_type. Add id
+ parameter to start_struct_type, start_class_type, and tag_type.
+ (debug_make_ellipsis_type): Declare.
+ (debug_find_named_type): Declare.
+ (debug_get_type_kind): Declare.
+ (debug_get_return_type): Declare.
+ (debug_get_parameter_types): Declare.
+ (debug_get_fields): Declare.
+ (debug_get_field_type): Declare.
+ * debug.c (struct debug_handle): Add fields class_id and base_id.
+ (struct debug_class_type): Add field id.
+ (struct debug_method_variant): Rename argtypes to physname.
+ Change all uses.
+ (debug_ellipsis_type): New static variable.
+ (ELLIPSIS_P): New macro.
+ (debug_make_ellipsis_type): New function.
+ (debug_make_method_variant): Rename argtypes to physname.
+ (debug_make_static_method_variant): Likewise.
+ (debug_name_type): Always put types in the global namespace.
+ (debug_find_named_type): New function.
+ (debug_find_tagged_type): Treat DEBUG_KIND_ILLEGAL specially,
+ rather than DEBUG_KIND_VOID.
+ (debug_get_real_type): New static function.
+ (debug_get_type_kind): New function.
+ (debug_get_return_type): New function.
+ (debug_get_parameter_types): New function.
+ (debug_get_fields): New function.
+ (debug_get_field_type): New function.
+ (debug_write): Initialize base_id.
+ (debug_write_type): Pass new id argument to tag_type. Handle
+ DEBUG_KIND_ILLEGAL. Use id for DEBUG_KIND_STRUCT and
+ DEBUG_KIND_UNION. Handle ellipsis for method arguments.
+ (debug_write_class_type): Don't dereference kclass if it is NULL.
+ Use id.
+ * prdbg.c (pr_fns): Add pr_ellipsis_type.
+ (pr_ellipsis_type): New static function.
+ (pr_pointer_type): If this is a pointer to an array, parenthesize
+ it correctly.
+ (pr_start_struct_type): Add id parameter.
+ (pr_start_class_type): Likewise.
+ (pr_tag_type): Likewise.
+ (pr_fix_visibility): Add the visibility to the top of the stack,
+ not the second element on the stack.
+ (pr_struct_field): Pop the stack before calling pr_fix_visibility.
+ (pr_class_static_member): Likewise.
+ (pr_class_start_method): Don't push a type, just set the method
+ name in the type on the top of the stack.
+ (pr_class_end_method): Don't pop the stack.
+ (pr_class_method_variant): Rename argtypes parameter to physname.
+ Append const and volatile rather than prepending them. Add a
+ space after the physname.
+ (pr_class_static_method_variant): Likewise.
+ * ieee.c (ieee_fns): Add ieee_ellipsis_type.
+ (ieee_define_named_type): Use DEBUG_KIND_ILLEGAL rather than
+ DEBUG_KIND_VOID.
+ (write_ieee_debugging_info): Likewise.
+ (ieee_typdef): Likewise.
+ (ieee_ellipsis_type): New static function.
+ (ieee_start_struct_type): Add id parameter.
+ (ieee_start_class_type): Likewise.
+ (ieee_tag_type): Likewise.
+ (ieee_class_method_variant): Rename name to physname.
+ (ieee_class_static_method_variant): Likewise.
+
+ * Makefile.in (DEBUG_OBJS): Remove prdbg.o.
+ ($(OBJDUMP_PROG)): Depend upon, and link against, prdbg.o.
+
+Thu Jan 18 17:35:06 1996 Kim Knuttila <krk@cygnus.com>
+
+ * dlltool.c (make_tail): Changed the order of the sections to avoid
+ an alignment problem.
+
+Wed Jan 17 14:23:00 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * srconv.c (wr_du): Set du.stackfrmt to 0.
+ (wr_un, wr_sc): Emit all sections, even those with 0 size.
+
+Tue Jan 16 16:15:49 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * srconv.c (wr_hd): Space size within segment was being
+ stored in segment identifier field.
+
+Tue Jan 16 12:07:25 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-config.in (BUILD_NLMCONV, BUILD_SRCONV, SYSINFO_PROG,
+ BUILD_DLLTOOL): Put definitions for these into makefile when
+ configuring, instead of always clearing in mpw-make.sed.
+ * mpw-make.sed: Edit out any host_alias or target_alias settings,
+ fix pathname to BFD internal include files, remove dependency
+ calculation rules.
+
+Thu Jan 11 17:31:38 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * objdump.c (dump_section_header): Add new section flags
+ SEC_{EXCLUDE,SORT_ENTRIES}.
+
+Thu Jan 11 11:45:34 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (filter_symbols): NULL terminate the output symbols.
+ (copy_object): Allocate space for a possible extra NULL pointer.
+
+ * debug.c (debug_make_undefined_tagged_type): Make sure we are
+ given a kind of type we can handle.
+ (debug_write_type): Handle undefined enums and structs.
+ (debug_write_class_type): Handle undefined classes.
+ * prdbg.c (pr_enum_type): Handle an undefined enum.
+ * ieee.c (ieee_enum_type): Likewise.
+
+Wed Jan 10 15:33:18 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in: Updated dependencies.
+ (ALLOCA, MALLOC): Remove variables.
+ (ADDL_LIBS): Remove $(MALLOC) from definition.
+ * alloca.c, gmalloc.c: Remove.
+
+Mon Jan 8 18:02:29 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c: Add global function write_ieee_debugging_info and a
+ bunch of static functions and structs used to write out IEEE
+ debugging information.
+ * budbg.h (write_ieee_debugging_info): Declare.
+
+ * ieee.c (struct ieee_type): Add pslot field.
+ (enum builtin_types): Define.
+ (ieee_builtin_type): For a pointer, return a pointer to the named
+ type. Use enum values rather than numbers.
+ (ieee_alloc_type): New static function.
+ (ieee_read_type_index): Use ieee_alloc_type.
+ (parse_ieee_bb): Likewise.
+ (parse_ieee_ty): Likewise. Use ieee_builtin_type for array range,
+ rather than making a new integer type. Store the new type in the
+ slot, if there is one.
+ (parse_ieee_atn): Treat ATN10 as defining a register variable.
+ (ieee_regno_to_genreg): Rename from ieee_regno_to_gen. Change all
+ callers.
+ (ieee_genreg_to_regno): New static function.
+
+ * stabs.c (parse_stab_type): Add new typename parameter. Change
+ all callers.
+ (parse_stab_range_type): Add new typename parameter. Change all
+ callers.
+
+ * debug.h (struct debug_write_fns): Add tag parameter to
+ enum_type, start_struct_type, and start_class_type.
+ * debug.c (debug_write_type): Pass any tag name to
+ start_struct_type, debug_write_class_type, and enum_type. If
+ DEBUG_KIND_TAGGED, pass the name in the recursive call.
+ (debug_write_class_type): Accept a new tag parameter, and pass it
+ to start_class_type.
+ * prdbg.c (pop_type): Don't remove '+' character.
+ (pr_enum_type): Accept and use tag parameter.
+ (pr_start_struct_type): Likewise.
+ (pr_start_class_type): Likewise.
+ (pr_class_baseclass): Adjust algorithm used to find where to put
+ the baseclass name.
+ (pr_tag): Don't bother to insert the tag name.
+
+ * objcopy.c: Include budbg.h.
+ (convert_debugging): New static variable.
+ (OPTION_DEBUGGING): Define.
+ (copy_options): Add "debugging".
+ (copy_usage): Mention --debugging.
+ (is_strip_section): Skip debugging sections if convert_debugging.
+ (setup_section, copy_section): Likewise.
+ (filter_symbols): Skip debugging symbols if convert_debugging.
+ (copy_object): If convert_debugging, read and write debugging
+ information.
+ (write_debugging_info): New static function.
+ (copy_main): Handle --debugging.
+ * Makefile.in (DEBUG_OBJS): New variable.
+ ($(OBJCOPY_PROG)): Depend upon and link against $(DEBUG_OBJS).
+ ($(STRIP_PROG)): Likewise.
+ (OBJDUMP_OBJS): Remove variable.
+ ($(OBJDUMP_PROG)): Use objdump.o $(DEBUG_OBJS) rather than
+ $(OBJDUMP_OBJS).
+ * binutils.texi, objcopy.1: Document --debugging.
+
+Thu Jan 4 16:31:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c: New file with code to read IEEE debugging information.
+ * budbg.h (parse_ieee): Declare.
+ * rddbg.c (read_debugging_info): Handle IEEE flavour files.
+ (read_ieee_debugging_info): New static function.
+ * Makefile.in: Rebuild dependencies.
+ (CFILES): Add ieee.c.
+ (OBJDUMP_OBJS): Add ieee.o.
+
+ * bucomm.h (xrealloc): Change type of first parameter from char *
+ to PTR.
+
+Tue Jan 2 17:44:07 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in: Add targets to automatically rebuild dependencies.
+ Remove targets which just listed dependencies of .o files.
+ (DEP): New variable.
+ (HFILES, GENERATED_HFILES): New variables.
+ (CFILES, GENERATED_CFILES): New variables.
+ (underscore.c): Don't do anything, just depend upon stamp-under.
+ (stamp-under): New target; do what underscore.c used to do.
+ (nlmconv.o): Depend upon sym.h and ecoff.h.
+ (.dep, .dep1, dep.sed, dep, dep-in): New targets.
+ (stage1, stage2, stage3, against, comparison): Remove.
+ (de-stage1, de-stage2, de-stage3): Remove.
+ (clean, distclean): Remove stamp-under and dep.sed.
+ * dep-in.sed: New file.
+
+ Implement generic debugging support. Implement a stabs reader and
+ a generic printer.
+ * budbg.h, debug.c, debug.h, prdbg.c, rddbg.c, stabs.c: New files.
+ * objdump.c: Include "debug.h" and "budbg.h".
+ (dump_debugging): New global variable.
+ (usage): Mention --debugging.
+ (long_options): Add "debugging".
+ (display_bfd): Handle --debugging.
+ * Makefile.in (OBJDUMP_OBJS): New variable.
+ ($(OBJDUMP_PROG)): Use $(OBJDUMP_OBJS).
+ * binutils.texi, objdump.1: Document --debugging.
+
+Sat Dec 30 09:59:51 1995 Jeffrey A Law (law@cygnus.com)
+
+ * nm.c ( long_options): Add "--defined-only" option.
+ (usage): Update for new "--defined-only" option.
+ (filter_symbols): Handle "--defined-only".
+
+Fri Dec 29 16:04:56 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * arparse.y: Include "bucomm.h", not <sysdep.h>.
+ * nlmheader.y: Don't include "sysdep.h".
+
+Tue Dec 26 18:23:18 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * nm.c (print_symdef_entry): Check return value of
+ bfd_get_elt_at_index.
+
+Sat Dec 23 11:03:16 1995 Michael Meissner <meissner@tiktok.cgynsu.com>
+
+ * configure.in (DLLTOOL_DEFS): Build dlltool for PowerPC if target
+ is powerpc*-*-win* in addition to powerpc*-*-*pe*.
+
+Fri Dec 15 16:30:57 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (endian_string): New static function.
+ (display_target_list): Use it.
+ * nlmconv.c (main): Use new bfd_big_endian macro.
+
+Fri Dec 15 07:51:34 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (fill_ordinals): Start from 1 if no other instructions
+ given.
+
+Tue Dec 12 12:05:21 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (clean): Remove $(DEMANGLER_PROG).1. From Ronald
+ F. Guilmette <rfg@monkeys.com>.
+
+Mon Dec 11 14:33:05 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mac-binutils.r: Fix copyright and version strings.
+
+ * Makefile.in (version): Remove, no longer used.
+
+Fri Dec 1 14:41:56 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed (install, install-only): Edit in Mac-specific
+ install procedure.
+
+Thu Nov 30 20:26:02 1995 Kim Knuttila <krk@cygnus.com>
+
+ * dlltool.c (ppc_jtab): The binary glue for PowerPC dll linkage,
+ including the return instruction.
+ sinfo: added a preferred alignment field.
+ (secdata): section data for the PowerPC version.
+ (make_one_lib_file): More symbols, More sections (pdata, rdata)
+ (make_tail): Use idata$6 instead of idata$7 for ppc. Also added a
+ NULL idata$3 descriptor (temporary).
+
+Tue Nov 28 17:23:44 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * dlltool.c (fill_ordinals): Don't reference d_export_vec if
+ there are no exported functions.
+
+Mon Nov 27 13:05:59 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure: Regenerate with autoconf 2.7.
+
+Wed Nov 22 13:17:15 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (fill_ordinals): Start assigning ordinals at 1.
+
+ * Makefile.in (EXPECT): Use $$r, not $${rootme}.
+ (check): Set r, not rootme.
+
+Tue Nov 21 18:04:09 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Use BFD_NEED_DECLARATION.
+ * acconfig.h: Put NEED_DECLARATION_FPRINTF in @TOP@ section.
+ * configure, config.in: Rebuild with autoconf 2.6.
+
+Fri Nov 17 10:34:37 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (CC_FOR_TARGET): Use @host@ and @target@, not
+ $(host_canonical) and $(target_canonical).
+
+Thu Nov 16 03:39:20 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ Version 2.6 released.
+ * Makefile.in (VERSION): Update to 2.6.
+
+Wed Nov 15 12:14:17 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (CC_FOR_TARGET): Define.
+ (check): Pass CC and CFLAGS to runtest.
+
+ * nm.c (display_rel_file): Don't require a DYNAMIC object when
+ dumping the dynamic symbol table.
+
+ * objdump.c (compare_symbols): Sort global symbols before local
+ symbols before debugging symbols.
+ (objdump_print_address): Don't futz around looking for a global
+ symbol with the same value.
+
+Tue Nov 14 17:19:11 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c: Use FOPEN_* macros rather than "r" or "w".
+
+ * dlltool.c (fill_ordinals): Correct memset call.
+
+Sun Nov 12 12:56:05 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed (DEMANGLER_PROG): Edit out attempts to do anything
+ with the man page.
+
+Fri Nov 10 11:41:22 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (setup_section): Copy the section lma independently of
+ the vma.
+
+Wed Nov 8 11:33:00 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * arsup.c (ar_open): Cast malloc return value.
+
+Tue Nov 7 09:01:26 1995 Kim Knuttila <krk@cygnus.com>
+
+ * configure.in, configure (DLLTOOL_DEFS): Added ppc target.
+ * dlltool.c (MPPC): Added basic PPC definitions.
+
+Tue Nov 7 14:02:57 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Don't treat rs6000-*-lynx* specially.
+ * configure: Rebuild.
+ * config/rslynx: Remove.
+ * Makefile.in: Remove @target_makefile_fragment@.
+
+Mon Nov 6 15:00:50 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * bucomm.h: Include <sys/types.h>.
+ * ar.c: Don't include <sys/types.h> or <stdio.h>.
+ * bucomm.c, dlltool.c, nlmconv.c, objcopy.c, objdump.c: Likewise.
+
+Fri Nov 3 12:38:09 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c: Include <sys/types.h>.
+
+ Permit user to override DEMANGLER_PROG from command line. From
+ Manfred Hollstein <manfred@lts.sel.alcatel.de>.
+ * Makefile.in ($(DEMANGLER_PROG)): Depend upon
+ $(DEMANGLER_PROG).1.
+ (install): Don't depend upon $(DEMANGLER_PROG).1. Only install
+ $(DEMANGLER_PROG).1 if $(DEMANGLER_PROG) is not empty.
+
+Wed Nov 1 15:04:57 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
+
+ * Makefile.in (syslex.o): add -I$(srcdir) if compiling in a
+ separate directory.
+
+Mon Oct 30 14:24:18 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (objdump_print_value): New static function.
+ (objdump_print_address): Use it. If we need the right section for
+ the symbol, and we can't find it, print an offset from the section
+ rather than using a symbol from some other section.
+
+Thu Oct 26 10:23:14 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (no_idata4, no_idata5): New.
+ (arm_jtab): Use correct encoding of jump instruction.
+ (usage, main, make_head, make_tail): Act on no_idata4, no_idata5.
+
+Wed Oct 25 12:10:07 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Edit paths to generated y.tab.[ch] files.
+
+Fri Oct 20 18:40:34 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils.texi: Change --with-targets to --enable-targets.
+
+Thu Oct 19 17:47:41 1995 Fred Fish <fnf@cygnus.com>
+
+ * Makefile.in: Remove extraneous tab on otherwise empty line,
+ which confuses many non-GNU versions of "make".
+
+Wed Oct 18 16:31:58 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (i386_jtab, arm_jtab): New
+ (gen_lib_file): Rewritten to use bfd.
+
+Fri Oct 13 16:10:07 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * Makefile.in (install): Don't give error message if dlltool
+ wasn't built.
+
+Fri Oct 13 11:04:37 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * deflex.l: Allow quoting of IDs.
+ * defparse.y (%union): string deleted.
+ (command): DESCRIPTION takes ID.
+ * dlltool.c (gen_def_file): Quote outgoing name if
+ necessary. Preserve NONAME.
+ (gen_lib_file): Run ranlib.
+ (workout_prefix): Deleted.
+ (main, usage, long_options): Add --as, --ranlib, --ar options.
+
+Wed Oct 11 13:36:13 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (mtable): HOW_ALIGN_LONG, new.
+ (d_ord): Deleted.
+ (d_low_ord, d_high_ord, d_named_funcs): New.
+ (gen_exp_file): Create noname entries correctly.
+ (gen_lib_file): Dump exports alphabetically.
+ (process_duplicates): Count nonamed functions.
+ (fill_ordinals): Keep track of highest ord too.
+ (mangle_defs): Create alphabetically ordered list of names.
+
+Tue Oct 10 09:39:09 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * Makefile.in (TOOL_PROGS): Include DLLTOOL_PROG.
+
+Mon Oct 9 13:06:31 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (add_underscore): New.
+ (xlate): Use new name.
+ (main, usage): Update.
+
+Fri Oct 6 14:08:51 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * sysinfo.y: Eliminate unused terminals "[" and "]" and unused
+ nonterminal "name". One s/r conflict remains.
+
+ Mon Sep 25 22:49:32 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * nm.c (print_symname): Don't try to demangle an empty
+ name.
+ * objdump.c (slurp_symtab): Reset symcount if there are
+ no symbols.
+ (slurp_dynamic_symtab): Likewise, for dynsymcount.
+ (disassemble_data): Fix memory leak: free sorted_syms when done.
+ (display_bfd): Likewise, for syms and dynsyms.
+ (dump_relocs): Don't print header before possibly generating an
+ error message.
+ (dump_dynamic_relocs): Likewise.
+
+ * ar.1, nm.1, objdump.1, size.1, strings.1, strip.1: Fix typos and
+ formatting bugs.
+
+Fri Oct 6 12:00:25 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ar.c (do_quick_append): Comment out.
+ (replace_members): Add quick argument.
+ (main): Don't call do_quick_append.
+ (open_inarch): Don't call quick_append to create an empty archive.
+ Instead call bfd_openw/bfd_set_format/bfd_close.
+
+Thu Oct 5 20:53:08 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * bucomm.c: Always include time.h.
+
+Thu Oct 5 17:25:21 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (compare_symbols): Sort gnu_compiled and gcc2_compiled
+ symbols after other symbols with the same value. Likewise for
+ symbols which look like file names.
+ (objdump_print_address): Always chose the first reasonable symbol
+ with a given value.
+
+Tue Oct 3 22:38:55 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * arsup.c (ar_save): Use rename, not unlink/link/unlink.
+
+Mon Oct 2 12:10:25 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * strings.c (main): Exit with zero status if no files are given
+ and standard input is read.
+
+Thu Sep 28 20:03:07 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-config.in: Calculate underscore and put into makefile
+ fragment, generate config.h.
+ * mpw-make.sed: New file, sed commands to edit Unix makefile
+ into MPW syntax.
+ * mpw-make.in: Remove.
+ * mac-binutils.r: New file, Mac resources.
+
+Thu Sep 28 15:49:00 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c: (gen_exp_file): Always emit a .reloc section if
+ relocatable.
+ (imp_name_lab): New.
+ (gen_def_file): New.
+ (gen_lib_file): Use imp_name_lab.
+ (main): Initialize imp_name_lab.
+
+Mon Sep 25 12:05:34 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Call AC_HEADER_SYS_WAIT.
+ * configure: Rebuild.
+ * config.in: Rebuild.
+ * dlltool.c: Include "libiberty.h" and "bucomm.h". Don't include
+ <stdio.h>, <stdlib.h>, or <string.h>. Don't include <wait.h>.
+ Include <sys/types.h>. Use HAVE_SYS_WAIT_H to control whether to
+ include <sys/wait.h> or define the wait macros by hand. Don't
+ declare xmalloc.
+ (gen_lib_file): Don't assume that sprintf returns the number of
+ characters; use strlen instead.
+
+Fri Sep 22 17:16:41 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (disassemble_data): Don't use the old BFD based
+ disassembler interface. Make info a const pointer.
+
+Wed Sep 13 18:33:44 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (start_address): New variable.
+ (stop_address): New variable.
+ (usage): Mention --start-address and --stop-address.
+ (OPTION_START_ADDRESS, OPTION_STOP_ADDRESS): Define.
+ (long_options): Add "start-address" and "stop-address".
+ (disassemble_data): Handle start_address and stop_address.
+ (dump_data, dump_reloc_set): Likewise.
+ (main): Don't set seenflag for -l. Handle OPTION_START_ADDRESS
+ and OPTION_STOP_ADDRESS.
+ * objcopy.c (parse_vma): Move to bucomm.c.
+ * bucomm.c (parse_vma): New function, moved in from objcopy.c.
+ * bucomm.h (parse_vma): Declare.
+ * binutils.texi, objdump.1: Document new objdump options.
+
+Tue Sep 12 12:37:39 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (maintainer-clean): New target.
+
+ * ar.c (replace_members): Don't call write_archive if nothing
+ changed.
+
+ * objdump.c (disassemble_data): Add casts to avoid gcc warnings.
+
+Thu Sep 7 12:12:17 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * config.in: Rename from config.h.in.
+ * configure.in: Call AC_CONFIG_HEADER with config.h:config.in.
+ Check for config.h:config.in when creating stamp-h.
+ * configure: Rebuild.
+ * Makefile.in (stamp-h): Depend upon config.in rather than
+ config.h.in. Set CONFIG_HEADERS to config.h:config.in when
+ calling config.status.
+
+ * Makefile.in (distclean): Remove config.h, stamp-h, and
+ config.log.
+
+ * nm.c (value_format): Initialize based on BFD64 and
+ BFD_HOST_64BIT_LONG.
+ (print_radix): New static variable.
+ (set_print_radix): Set print_radix. Adjust changes to
+ value_format.
+ (print_value): New static function, to print 64 bit octal and
+ decimal values correctly.
+ (print_symbol_info_bsd): Check BFD64, not BFD_HOST_64_BIT. Use
+ print_value.
+ (print_symbol_info_sysv): Use print_value.
+ (print_symbol_info_posix): Likewise.
+
+Wed Sep 6 15:02:55 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (*.o): Remove incorrect dependencies on
+ $(BFDDIR)/hosts/std-host.h.
+
+ * Makefile.in (INSTALL_DATA): Add -m 644.
+ (INSTALL_XFORM1): Likewise.
+ (CC_FOR_BUILD): Set to @CC_FOR_BUILD@ rather than $(CC).
+ (mostlyclean): Remove config.log.
+ (distclean): Remove config.cache.
+
+ * configure.in: Call BFD_CC_FOR_BUILD and BFD_BINARY_FOPEN.
+ * configure: Rebuild.
+
+Tue Sep 5 20:22:42 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Rewrite to use autoconf.
+ * aclocal.m4: New file.
+ * configure: New file, built by autoconf.
+ * acconfig.h: New file.
+ * config.h.in: New file, built by autoheader.
+ * Makefile.in: Various changes for new configure script. Also:
+ (PROGS): Remove $(SYSINFO_PROG).
+ (ALL_CFLAGS): Remove $(TDEFINES).
+ (version.o): Use $(ALL_CFLAGS).
+ (cplus-dem.o, dlltool.o, nlmconv.o): Likewise.
+ (sysdump.o): Depend upon bucomm.h and config.h.
+ (srconv.o, arsup.o, strings.o): Depend upon config.h.
+ (filemode.o): Don't depend upon ../bfd/sysdep.h.
+ (bucomm.o): Depend upon config.h, not ../bfd/sysdep.h.
+ (size.o, objdump.o, nm.o, ar.o, objcopy.o): Likewise.
+ (nlmheader.o, nlmconv.o): Likewise.
+ (distclean): Don't remove sysdep.h.
+ * bucomm.h: Include "ansidecl.h", <stdio.h>, and "config.h".
+ Include "fopen-same.h" or "fopen-bin.h", based on
+ USE_BINARY_FOPEN. Include <errno.h>, and declare errno if it is
+ not a macro. Include <unistd.h>, <string.h>, <strings.h>,
+ <stdlib.h>, and <fcntl.h> if they are present. Declare strchr,
+ strrchr, and strstr if no string header file exists. Include
+ <sys/file.h> if it exists and <fcntl.h> does not. Define
+ O_RDONLY and O_RDWR if necessary.
+ * ar.c: Don't include "sysdep.h". Do include <sys/types.h> and
+ <sys/stat.h>. Use HAVE_GOOD_UTIME_H rather than POSIX_UTIME. Use
+ HAVE_UTIMES rather than !USE_UTIME. Don't include <errno.h>, and
+ don't declare errno.
+ * arsup.c: Don't include <sysdep.h>.
+ * bucomm.c: Don't include "sysdep.h". Include <stdio.h>,
+ <sys/types.h>, and <sys/stat.h>. Include <time.h> if it defines
+ time_t. Define time_t if necessary.
+ * coffdump.c: Don't include "sysdep.h".
+ * coffgrok.c, filemode.c, nlmconv.c, size.c: Likewise.
+ * srconv.c, strings.c: Likewise.
+ * nm.c: Don't include "sysdep.h". Don't try to define HAVE_SBRK.
+ * objcopy.c: Don't include "sysdep.h". Include <sys/types.h> and
+ <sys/stat.h>.
+ (simple_copy): Use creat rather than assuming that O_CREAT is
+ defined.
+ * objdump.c: Don't include "sysdep.h". Use
+ NEED_DECLARATION_PRINTF rather than !FPRINTF_ALREADY_DECLARED.
+ * sysdump.c: Include "bfd.h" and "bucomm.h". Don't include
+ "sysdep.h" or <stdlib.h>.
+ (dump_symbol_info): Rename from symbol_info. Change all callers.
+
+Mon Sep 4 14:30:00 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in (host_makefile_frag): Don't set. Substitute for
+ @CC@, @CFLAGS@, @HDEFINES@ and @LDFLAGS@ in Makefile.
+ * Makefile.in (AR_FLAGS): Set to rc rather than qv.
+ (CC): Define as @CC@.
+ (CFLAGS): Set to @CFLAGS@.
+ (LDFLAGS): Define as @LDFLAGS@.
+ (ALL_CFLAGS): Use @HDEFINES@ rather than $(HDEFINES).
+
+ * configure.in: Don't bother to call config.bfd for each target.
+ Just call it for the default target, and use the shell variable to
+ decide whether underscores are used.
+
+Thu Aug 31 19:21:48 1995 Jason Molenda (crash@phydeaux.cygnus.com)
+
+ * configure.in: match i[3-6]86-*-win32, not just i386-*-win32.
+
+Thu Aug 31 16:30:22 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (add_indirect): New.
+ (asm_prefix): New
+ (gen_exp_file): Timestamp should be 0. Insert prefix when
+ needed. New code for indirection.
+ (gen_lib_file): Timestamp should be 0. Insert prefix
+ when needed.
+ (usage): Document --add-indirect.
+ (main): Cope with new option.
+
+ * objdump.c (dump_private_headers): New.
+ (usage): Document new option.
+ (long_option): Add private-headers.
+ (dump_bfd_private_header): New.
+ (main): Cope with new option.
+
+Thu Aug 31 04:09:16 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * dlltool.c (run): Add missing 3rd arg to waitpid.
+
+Wed Aug 30 11:02:11 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * Makefile.in (TOOL_PROGS): Include dlltool if needed.
+
+Tue Aug 29 13:25:21 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (rva): Deleted.
+ (rvaafter, rva_before): Use new assembler pseudo.
+ (flush_page, gen_exp_file, gen_lib_file): Use new way of RVAing.
+ (gen_exp_file): Don't generate .edata if no need.
+ (gen_lib_file): Don't make timestamp.
+ Put _iname in idata$7.
+ (workout_prefix): Fix memory initialization bug.
+ (usage): Tidy up, delete many single char options.
+ (main): rva option is gone.
+
+Mon Aug 21 18:41:28 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (options): image-base is a synonym for rva.
+ (gen_lib_file): Put dll name into ibase$7.
+
+Sun Aug 20 09:59:00 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ Modified to generate archives and objects rather than .s files.
+ * dlltool.c (run) New function.
+ (gen_exp_file, gen_lib_file): Use run.
+ (workout_prefix): New.
+ (usage): Document new options.
+ (main): Parse new options.
+
+Wed Aug 16 16:26:52 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (gen_exp_file): Fix RVA handling.
+ (rva_s, rva_n): Delete.
+
+Fri Aug 11 18:27:18 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * nm.c (main): Ignore -e.
+
+Thu Aug 10 17:35:00 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * Makefile.in (config.texi): New target. Write out a setting for
+ texinfo variable VERSION.
+ (binutils.dvi, binutils.info): Depend on it.
+ * binutils.texi: Include it, and reference @value{VERSION} instead
+ of explicitly specifying 2.2(!).
+
+Thu Aug 10 16:07:53 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * coffgrok.c (do_type): Handle array dimensions the same way gdb
+ does.
+
+Tue Aug 8 17:10:42 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (mtable): New fields.
+ (ASM_RVA_BEFORE, ASM_RVA_AFTER): New.
+ (flush_page): Use new macros.
+
+Sat Aug 5 00:16:37 1995 Jeff Law (law@snake.cs.utah.edu)
+
+ * objcopy.c (mark_symbols_used_in_relocations): Handle sections
+ with no relocations.
+ * coffgrok.c (do_sections_p1): Likewise.
+
+Mon Jul 31 12:51:06 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * strings.c (print_strings): For compatibility with existing
+ strings programs, print strings which are not terminated with a
+ null byte or a newline.
+ * binutils.texi, strings.1: Update documentation accordingly.
+
+ * ar.c (replace_members): For compatibility with existing ar
+ programs, permit users to add the same file multiple times.
+
+Tue Jul 25 11:21:53 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * strings.c (DATA_FLAGS): Remove SEC_DATA.
+ (main): If no file names are given, scan standard input.
+ * binutils.texi, strings.1: strings now scans non-data sections by
+ default.
+
+Mon Jul 24 13:52:28 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * srconv.c (wr_hd): Set afl field to 4 for bfd_arch_sh.
+ (writeINT): When size == -2, use 2 bytes for the h8300 and 4 bytes
+ for the sh.
+
+ * sysdump.c (fillup): Return size - 1, the last byte is a checksum
+ and shouldn't be counted.
+ * sysroff.info (hd): Changed segment identifier from a byte to a 1
+ bit field. The sysroff 2.0-01 specification seems to be in error
+ here. Reduce width of following "spare" field from 4 to 3 bits.
+ (rl): Changed order and width of first 4 bitfields to correspond
+ to sysroff specification.
+ (dln_head, dln_inside, dln_tail): Removed.
+
+Tue Jul 18 23:00:03 1995 Fred Fish <fnf@cygnus.com>
+
+ * nm.c (sort_symbols_by_size): Enclose expression being casted
+ in parens so result is casted, not just first operand. Can't
+ do pointer arithmetic on void* pointers.
+
+Fri Jul 14 13:42:42 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * sysdump.c (dh): Changed format of output to be 16 hex digits
+ followed by 16 ascii characters, similar to Emacs' hexl-mode,
+ to make it easier to read.
+ (xcalloc): fix typo.
+
+Thu Jul 13 15:27:44 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * srconv.c (wr_tr): Write out handcrafted tr block.
+ (walk_tree_symbol): Use evallen and evalue instead of
+ vallen & value because of corresponding changes in
+ sysroff.info.
+
+ * sysdump.c (sysroff_swap_tr_in, sysroff_print_tr_out): New
+ functions.
+
+ * sysroff.info (tr): the tr block is a special case --- a block
+ without contents --- which can't be handled by generated code.
+ (den, dpp): only first byte is present for DENend, DPPend.
+ (dsy): describe a conditional portion of block, rename some fields.
+ (dps): describe a conditional portion of block.
+ (dfl): removed.
+
+ * sysinfo.y (yyerror): write error message to standard error.
+
+Thu Jul 13 10:43:59 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (DISTSTUFF): Add arparse.h and sysinfo.h.
+ (mostlyclean): Remove y.output.
+ (clean): Remove sysroff, sysroff.c, sysroff.h, and sysinfo.
+
+ * nlmconv.c (powerpc_mangle_relocs): Cast memset arg to size_t.
+ * objcopy.c (copy_object): Likewise.
+
+ * nm.c (HAVE_SBRK): Define except on amigados and WINDOWS_NT.
+ (struct size_sym): Define.
+ (show_stats): New static variable.
+ (long_options): Add undocumented option "stats".
+ (main): Print memory stats if requested.
+ (sort_bfd, sort_dynamic, sort_x, sort_y): New static variables.
+ (numeric_forward): Use minisymbols rather than asymbols.
+ (non_numeric_forward): Likewise.
+ (size_forward1): Rename from size_forward. Use minisymbols.
+ (size_forward2): New static function.
+ (sort_symbols_by_size): Take new arguments dynamic, size, and
+ symsizep. Use minisymbols. Don't store the size back in the
+ symbol; store in a newly allocate struct size_sym array.
+ (display_rel_file): Read minisymbols rather than asymbols. Set
+ sort_* variables. Call print_size_symbols if sorting by size.
+ (filter_symbols): Take new arguments dynamic and size. Use
+ minisymbols.
+ (print_symbols): Likewise. Call print_symbol for actual printing.
+ (print_size_symbols): New static function.
+ (print_symbol): New static function.
+
+Wed Jul 12 10:43:05 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (dump_section_stabs): Only print each stabs section
+ once.
+ (compare_relocs): Make it clear to gcc that this always returns a
+ value.
+
+Wed Jul 12 10:40:23 1995 H.J. Lu <hjl@nynexst.com>
+
+ * objcopy.c (simple_copy): Preserve errno on failure.
+ (smart_rename): Print error mesage if simple_copy fails.
+
+Tue Jul 11 13:10:52 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * sysdump.c: re-indented file.
+ (module): read blocks sequentially instead of trying to parse
+ them, as that would require changing the parser recognize the
+ difference between a DPSstart and DPSend block.
+ (getone): Add break's between switch blocks as appropriate.
+ (object_body_list): parse blocks according to sysroff spec.
+
+Mon Jul 10 12:37:25 1995 J.T. Conklin <jtc@poseidon.cygnus.com>
+
+ * sysroff.info: re-indented file, prior formatting was confusing
+ because it was indentation did not reflect nesting of conditional
+ records. Change "space size within segment" record in hd record
+ from bit to byte.
+
+ * sysinfo.y (cond_it_field): Use xcalloc instead of calloc.
+
+ * srconv.c (wr_cs): Reformatted cs header array, tag each byte
+ with a comment describing the field.
+ (wr_unit_info): Use SEEK_SET macro instead of constant 0.
+ (main): Use FOPEN_WB macro instead of literal "wb".
+ * sysroff.info: Remove fdl (dfl) field from cs block. Compare
+ ptr->type with ED_TYPE_CONST instead of constant 2 in ed block.
+
+Tue Jul 4 14:48:42 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * nm.c (size_forward): Check yf against yn, not xn.
+
+ * objcopy.c (copy_archive): Record all output BFD's, and close
+ them before unlinking them and removing the temporary directory,
+ to avoid NFS problems.
+
+ * ar.c (replace_members): In verbose messages, use 'r' when
+ replacing a member, and 'a' when adding one.
+
+ * ar.c (ar_truncate): New static variable.
+ (normalize): Change return type to const char *. Add abfd
+ argument. Change all callers. If ar_truncate, chop the filename
+ to abfd->ar_max_namelen.
+ (main): For the 'f' modifier, set ar_truncate to true. Don't
+ change quick_append to replace if ar_truncate is true.
+ (do_quick_append): If ar_truncate, set BFD_TRADITIONAL_FORMAT.
+ (write_archive): Likewise.
+ * binutils.texi, ar.1: Document 'f' modifier.
+
+ * objcopy.c (enum strip_action): Define strip_unneeded.
+ (OPTION_STRIP_UNNEEDED): Define.
+ (strip_options): Add "strip-unneeded".
+ (copy_options): Likewise.
+ (copy_usage): Mention --strip-unneeded.
+ (strip_usage): Likewise.
+ (is_strip_section): Strip debugging sections if strip_unneeded.
+ (filter_symbols): If strip_unneeded, only keep BSF_KEEP symbols.
+ (copy_object): If strip_all, discard symbols without checking
+ discard_locals.
+ (copy_object): Call filter_symbols if strip_unneeded.
+ (setup_section): Strip debugging sections if strip_unneeded.
+ (copy_section): Likewise.
+ (strip_main): Handle OPTION_STRIP_UNNEEDED.
+ (copy_main): Likewise.
+ * binutils.texi, objcopy.1, strip.1: Document --strip-unneeded.
+
+Mon Jul 3 14:16:47 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * configure.in (i386-*-win32): New configuration.
+ * dlltool.c (killat, xlate, usage, long_options, main):
+ Understand and cope with -k option.
+
+Sat Jul 1 12:25:15 1995 Fred Fish <fnf@cygnus.com>
+
+ * ar.c: (extract_file): Change "#if POSIX_UTIME" to
+ "#ifdef POSIX_UTIME" to match other tests of POSIX_UTIME
+ and avoid lossage when POSIX_UTIME is not defined at all.
+
+Wed Jun 28 17:51:24 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * ar.c: (print_contents.c, extract_file, do_quick_append):
+ Malloc buffers rather than allocate on stack (so it works
+ on NT).
+ * deflex.l: Names can have an @ in them.
+ * dlltool.c: Loads of stuff. Can now generate .imp files which
+ work with NT .dlls.
+
+Thu Jun 22 19:10:50 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.in (demangle.c.o): Remove.
+ (arparse.h): Depend on arparse.c instead of arparse.y.
+
+Wed Jun 21 17:32:45 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in (DISTSTUFF): Don't include info here.
+ (diststuff): Include it here.
+ (realclean): Remove *.info.
+
+ * objdump.c (compare_relocs): If relocation entries have the same
+ address, keep them in file order.
+
+Mon Jun 19 09:06:49 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c: Change names of generated files. .*.s-> -*.s
+
+ * objdump.c (dump_section_stabs): Check for names
+ which are supersets of selected names.
+
+Wed Jun 14 19:43:52 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * dlltool.c (mtable, ARM jump): Must redirect via pc offsetable ptr.
+
+Wed Jun 14 13:27:22 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * deflex.l, defparse.y, dlltool.c: New files.
+ * Makefile.in, configure.in: Support for them.
+
+Mon Jun 12 11:27:54 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * sysdump.c: Include sysdep.h
+ (main): Open input with FOPEN_RB.
+
+Fri Jun 9 17:26:11 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * objdump.c (wide_output): New flag variable.
+ (usage): Print new -w, --wide options.
+ (long_options): Add --wide support.
+ (dump_section_header): If --wide, don't print a newline between
+ the section's first line and the flags.
+ (objdump_print_address): Use unsigned comparisons for the binary
+ search, not signed.
+ (disassemble_data): If --wide, don't put a \n between the
+ disassembly output and relocation information.
+ (main): Support -w option being the same as --wide.
+
+Thu Jun 1 17:09:27 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ Sat May 6 08:52:24 1995 H.J. Lu (hjl@nynexst.com)
+
+ * objcopy.c (smart_rename): make it smarter, clean up
+ if rename () fails.
+
+Tue May 30 14:24:15 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in: Delete lines with lots of #### because four or more
+ indicate a point for makefile fragment substitution.
+
+Tue May 9 17:17:05 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * configure.in: Don't build nlmconv on PowerPC eabi any more, it
+ is not needed.
+
+Thu Apr 27 20:21:24 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * Makefile.in (EXPECT): Define.
+ (RUNTEST): Use one in source tree if present.
+ (check): Set `rootme' for $(EXPECT).
+
+Wed Apr 26 18:26:21 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * srconv.c (main): Add support for -n option which disables
+ prescan of common symbols.
+ (wr_ob): If reading past the end of a section, fill with zeros.
+
+Tue Apr 25 19:14:37 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * objdump.c (dump_section_header): Display load address after
+ virtual memory (run-time) address.
+
+Wed Apr 19 09:44:06 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * Makefile.in (cplus-dem.o): Pass -DVERSION='"$(VERSION)"' to the
+ compile.
+ (DEMANGLER_PROG): No longer uses version.o.
+
+Mon Apr 10 13:29:49 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ Merge in support for Mac MPW as a host.
+ (Old change descriptions retained for informational value.)
+
+ * mpw-config.in (TDEFINES): Define as empty in makefile frag.
+
+ * mpw-config.in: Create mk.tmp, define ARCHDEFS in it.
+
+ * mpw-config.in: New file, MPW configure fragment for binutils.
+ * mpw-make.in (install-only): New target.
+ (install): Also depend on install-only.
+
+ * mpw-make.in (cplusfilt): Renamed from c++filt.
+ (INCLUDES): Add more paths.
+
+ * mpw-make.in: New file, MPW makefile fragment for binutils.
+ (Normally automatically generated from Makefile.in.)
+
+Mon Mar 27 11:52:57 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ar.c (write_archive): Call make_tempname to get output file
+ name, rather than using a fixed name based on the input file.
+
+ * objcopy.c (make_tempname): Copy from here...
+ * bucomm.c (make_tempname): ...to here, and make global.
+ * bucomm.h (make_tempname): Declare.
+
+Fri Mar 24 11:47:42 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * strings.c: Include "bfd.h" before other headers. Include
+ "sysdep.h".
+ * bucomm.c (print_arelt_descr): Cast st_uid and st_gid to long,
+ and print them with %ld.
+
+Fri Mar 10 13:09:42 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (strip_options): Add --keep-symbol.
+ (copy_options): Likewise.
+ (copy_usage): Mention --keep-symbol and -K.
+ (strip_usage): Likewise.
+ (keep_symbols): New static variable.
+ (is_strip_symbol): Adjust the return value according to
+ keep_symbols.
+ (strip_main): Handle -K. For -N, check that -K was not given.
+ (copy_main): Likewise.
+ * binutils.texi, objcopy.1, strip.1: Document -K.
+
+Mon Mar 6 13:33:47 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * objcopy.c (copy_archive): Check result of mkdir.
+ (copy_main): Cast an xmalloc result.
+
+ * objdump.c (usage): Break long format string into shorter ones.
+
+Mon Mar 6 13:46:12 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * bucomm.c (list_supported_targets): New function.
+ * bucomm.h (list_supported_targets): Declare.
+ * ar.c (usage): Call list_supported_targets.
+ * nm.c (usage): Likewise.
+ * objcopy.c (copy_usage, strip_usage): Likewise.
+ * objdump.c (usage): Likewise.
+ * size.c (usage): Likewise.
+ * strings.c (usage): Likewise.
+
+Tue Feb 28 15:13:58 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * bucomm.c (print_arelt_descr): Cast st_size to long before
+ passing it to fprintf.
+
+Fri Feb 17 13:36:45 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (struct section_list): Add fields remove, set_flags,
+ and flags. Change adjust from boolean to enum.
+ (remove_sections): Remove static variable.
+ (sections_removed): New static variable.
+ (copy_options): Add --set-section-flags.
+ (copy_usage): Mention --set-section-flags.
+ (parse_flags): New static function.
+ (find_section_list): New static function.
+ (is_strip_symbol): Change return type from int to boolean.
+ (is_strip_section): New static function.
+ (filter_symbols): Call is_strip_section.
+ (copy_object): When adding sections, check for specified flags or
+ VMA. Call filter_symbols if any sections are being removed.
+ (setup_section): Use find_section_list function rather than
+ looking through remove_sections and adjust_sections. Handle
+ --set-section-flags.
+ (copy_section): Use find_section_list rather than looking through
+ remove_sections.
+ (strip_main): Use find_section_list instead of adding items to
+ sections_removed.
+ (copy_main): Use find_section_list instead of adding items to
+ sections_removed and adjust_sections. Handle --set-section-flags.
+ * binutils.texi, objcopy.1: Document --set-section-flags.
+
+Tue Feb 14 18:03:03 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (with_source_code): New global variable.
+ (usage): Mention -S/--source.
+ (long_options): Add --source.
+ (prev_functionname, prev_line): New static variables.
+ (struct print_file_list): Define.
+ (print_files): New static variable.
+ (skip_to_line, show_line): New static functions.
+ (disassemble_data): Call show_line to handle -l and -S.
+ (main): Handle -S.
+ * binutils.texi, objdump.1: Document -S/--source.
+
+Thu Feb 9 16:11:53 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (copy_usage): Rename parameter to avoid shadowing.
+ (strip_usage): Likewise.
+
+ * objcopy.c (struct section_add): Define.
+ (add_sections): New static variable.
+ (copy_options): Accept --add-section.
+ (copy_usage): Mention --add-section.
+ (copy_object): Add sections from the add_sections list.
+ (copy_main): Handle --add-section.
+ * binutils.texi, objcopy.1: Document --add-section.
+
+Wed Feb 1 15:04:57 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * objdump.c (disassemble_data): Pass section offset, not absolute
+ address, to bfd_find_nearest_line.
+
+ * nlmconv.c (powerpc_mangle_relocs): Don't use const with
+ reloc_howto_type.
+
+Thu Jan 26 18:50:06 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (compare_symbols): Use bfd_asymbol_value (VAR) rather
+ than VAR->value.
+ (objdump_print_address): Likewise.
+ (disassemble_data): Don't change the symbol values. It can
+ confuse bfd_canonicalize_reloc.
+
+Thu Jan 26 12:03:56 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * configure.in: Add support for powerpc-*-ebai.
+
+Wed Jan 18 10:02:12 1995 Steve Chamberlain <sac@splat>
+
+ * coffdump.c: Include sysdep.h.
+ (dump_coff_type): Handle coff_secdef_type.
+ * coffgrok.c : Include sysdep.h.
+ * srconv.c: Include libiberty.h
+ (absolute_p, dty_start, dty_end, dump_tree_structure): Remove.
+
+Wed Jan 18 12:24:14 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * coffdump.c (dump_coff_scope): Cast pointer to unsigned long for
+ printf.
+ * coffgrok.c: Include bucomm.h. Don't declare xmalloc.
+ (push_scope): Declare type of parameter link.
+ * size.c: Include libiberty.h.
+ * srconv.c: Include bucomm.h.
+ (find_base): Declare at top of file.
+ (wr_hd): Add default case to architecture switch.
+ (wr_dps_start): Declare type of parameter nest.
+ (wr_du): Comment out variables used only in commented out blocks.
+ (wr_dus): Remove unused variable i.
+ (wr_sc): Remove unused variables myinfo, low, and high.
+ * strings.c: Include libiberty.h.
+ * sysdump.c: Include <ctype.h>.
+
+Tue Dec 20 19:13:44 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ar.c (main): Ignore 'f' modifier used on HP/UX 9.
+
+Thu Dec 15 17:34:12 1994 Stan Shebs <shebs@andros.cygnus.com>
+
+ * ar.c, nm.c, objcopy.c, objdump.c: Include progress.h.
+ * ar.c, nm.c, objcopy.c, objdump.c (main): Add START_PROGRESS
+ and END_PROGRESS.
+ * ar.c (map_over_members, open_inarch): Call PROGRESS.
+ * nm.c (main, display_archive, filter_symbols, print_symbols):
+ Call PROGRESS.
+
+ * objcopy.c (copy_usage): Break up long usage string.
+
+Wed Dec 14 15:51:56 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * objcopy.c (copy_object): Don't bother setting status after
+ nonfatal() "call", because it won't return.
+
+Fri Dec 9 00:22:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (powerpc_mangle_relocs): Don't switch a reloc to use
+ the section symbol if the symbol is undefined.
+
+Thu Dec 8 14:45:50 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * objcopy.c (add_strip_symbol): Cast return value of xmalloc.
+
+Wed Nov 30 11:05:43 1994 Ian Lance Taylor <ian@rtl.cygnus.com>
+
+ * ar.c (replace_members): Pass current->filename to normalize when
+ checking for duplicates, because the filename of a newly added
+ file will not have been normalized yet.
+
+Thu Nov 17 15:00:13 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ar.c (main): Don't call do_quick_append if any of the archive
+ names are longer than 14 characters.
+
+ * objcopy.c (main): Fix is_strip test. From
+ pirker@eiunix.tuwien.ac.at (Martin Pirker).
+
+Thu Nov 17 15:37:19 1994 Mark W. Eichin <eichin@cygnus.com>
+
+ * objcopy.c (add_strip_symbol): New function, adds a name to an
+ explicit list of symbols to strip.
+ (is_strip_symbol): New function, reports whether the name argument
+ is in the explicit list.
+ (filter_symbols): Check against is_strip_symbol above all.
+ (strip_main): Recognize -N option. If used, don't default to
+ strip_all.
+ (copy_main): Recognize -N option.
+ (strip_usage): Document -N and --strip-symbol options.
+ (copy_usage): Ditto.
+ * objcopy.1, strip.1, binutils.texi: Document -N and
+ --strip-symbol options.
+
+Tue Nov 8 13:12:54 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * objdump.c (display_target_list, display_info_table): Pass an
+ array to tmparg, rather than NULL, since some systems can't handle
+ NULL.
+
+ * objcopy.c (copy_archive): Keep a list of the names of the
+ temporary files we created. Close each input BFD after we open
+ its successor.
+
+Mon Nov 7 15:48:39 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in (VERSION): Bump to 2.5.3.
+
+Thu Nov 3 19:04:34 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in (install-info): Install info files from whatever
+ directory they were found in.
+
+ Patch from DJ Delorie:
+ * configure.bat: do c++filt -> cxxfilt right
+
+ * sysinfo.y: Include system header files early, so any potential
+ declaration of abort() occurs before its use.
+
+ * strings.c (strings_file): Try opening the file in binary mode
+ first.
+
+Wed Nov 2 15:44:13 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ar.c (main): Treat ar qs like ar rs.
+
+Tue Oct 25 16:19:25 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * objcopy.c (gap_fill): Explicitly initialize, for clarity.
+ (pad_to_set, pad_to): New static variables.
+ (copy_options): Accept --pad-to.
+ (copy_usage): Mention --pad-to.
+ (copy_object): Support --pad-to.
+ (compare_section_vma): Sort non loadable sections to the front.
+ Sort sections with the same VMA by size.
+ (copy_main): Handle --pad-to.
+ * binutils.texi, objcopy.1: Document --pad-to.
+
+Thu Oct 20 13:51:31 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objcopy.c (gap_fill_set, gap_fill): New static variables.
+ (copy_options): Accept --gap-fill.
+ (copy_usage): Mention --gap-fill.
+ (copy_object): Support --gap-fill.
+ (get_sections, compare_section_vma): New static functions.
+ (copy_main): Handle --gap-fill.
+ * binutils.texi, objcopy.1: Document --gap-fill.
+
+Wed Oct 19 14:09:16 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * Makefile.in (check): Add a dummy else clause to the if
+ statement.
+
+ * objcopy.c (copy_object): Revert yesterday's change.
+ * binutils.texi, objcopy.1: Remove special mention of --set-start
+ and `binary' output format.
+
+Tue Oct 18 11:12:01 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * objcopy.c (copy_object): If the output file format is `binary',
+ and the start address was not set using --set-start, default the
+ start address to zero. This hack is because the `binary' output
+ file format uses the start address to set the virtual address of
+ the first byte in the file.
+ * binutils.texi, objcopy.1: Add some notes on generating S-records
+ and binary files.
+
+ * nm.c (print_symdef_entry): Call print_symname to print the
+ symbol name, so that --demangle works.
+
+ * Makefile.in (mostlyclean): Remove tmpdir.
+
+ * objcopy.c (struct section_list): Add fields used, adjust, val.
+ (adjust_start, set_start_set, set_start): New static variables.
+ (adjust_section_vma, adjust_sections): New static variables.
+ (copy_options): Add --adjust-start, --adjust-vma,
+ --adjust-section-vma, --adjust-warnings, --no-adjust-warnings,
+ --set-start.
+ (parse_vma): New static function.
+ (copy_usage): Mention new options.
+ (copy_object): Handle --set-start and --adjust-start.
+ (setup_section): Correct type of last argument to PTR. Set used
+ field if section is removed. Handle --adjust-vma and
+ --adjust-section-vma.
+ (copy_section): Correct type of last argument to PTR.
+ (mark_symbols_used_in_relocations): Likewise.
+ (strip_main): Clear used field when handling -R.
+ (copy_main): Handle new options.
+ * binutils.texi (objcopy): Document new options.
+ * objcopy.1: Document new options.
+
+Fri Oct 14 14:38:13 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * configure.in (configdirs): Remove definition--testsuite is no
+ longer configured.
+ * Makefile.in (testsuite): Remove target.
+ (site.exp): New target.
+ (check): Rewrite.
+ (clean, distclean): Don't recur into testsuite directory.
+
+Thu Oct 13 19:24:09 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in (VERSION): Updated to 2.5.
+ * Version 2.5 released.
+
+Tue Oct 11 15:26:42 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * Makefile.in (sysdump.o): Depends upon sysroff.c.
+
+Mon Oct 10 13:50:30 1994 J.T. Conklin (jtc@rtl.cygnus.com)
+
+ * nlmconv.c (link_inputs): Pass -Ur flag to ld so that the
+ ctor/dtor tables needed by C++ programs are built.
+
+Sun Oct 9 18:04:00 1994 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * Makefile.in (srconv.o): Add dependence on sysroff.c.
+
+Tue Oct 4 12:19:51 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * configure.in: Use ${config_shell} when running config.bfd.
+
+ * Makefile.in (sysroff.h): Split target away from sysroff.c.
+ (srconv.o, sysdump.o): New targets.
+ (srconv, sysdump): Don't depend upon sysroff.c.
+
+Wed Sep 28 13:04:34 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * Makefile.in (arparse.c): Don't ignore errors from mv.
+ (sysinfo.c): Likewise. Also, depend upon arparse.c, to prevent a
+ parallel make from trying to build both arparse.c and sysinfo.c
+ simultaneously.
+ (nlmheader.c): Similar change.
+ (arparse.h): Separate target from arparse.c, so that a parallel
+ make does not try to build both at once. Depend upon arparse.c.
+ (sysinfo.h): Similar change.
+
+ * objdump.c (disassemble_data): Pass the reloc buffer to free, not
+ the pointer used to loop over the relocs.
+
+Sat Sep 24 16:16:57 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * objdump.c (disassemble_data): Cast result of xmalloc.
+
+Wed Sep 21 19:30:35 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objdump.c (sorted_syms, sorted_symcount): New global variables.
+ (objdump_print_address): Use sorted_syms and sorted_symcount
+ instead of syms and symcount.
+ (disassemble_data): Don't bother to get the relocs before looping
+ over the sections. Before filtering and sorting the symbol table,
+ copy it into sorted_syms.
+
+Fri Sep 16 11:27:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objdump.c (struct objdump_disasm_info): Add field require_sec.
+ (objdump_print_address): If aux->require_sec, require that the
+ symbol be in aux->sec even if HAS_RELOC is not set. If we can't
+ find a smaller symbol in the right section, look for a larger one.
+ (disassemble_data): Set aux.require_sec around the
+ objdump_print_address call for the instruction address.
+
+Thu Sep 15 21:43:17 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ar.c: Call xexit rather than exit.
+ (output_filename, output_file, output_bfd): New static variables.
+ (remove_output): New static function.
+ (main): Call xatexit (remove_output). Call xexit rather than
+ returning.
+ (extract_file): Set output_filename and output_file while output
+ file is open.
+ (write_archive): Likewise, but use output_bfd, not output_file.
+ * arsup.c: Include libiberty.h. Call xexit rather than exit.
+ * bucomm.c: Likewise.
+
+ * objdump.c (disassemble_all): New global variable.
+ (usage): Document --disassemble-all.
+ (long_options): Add disassemble-all as a synonym for -D.
+ (compare_symbols): Make pointers const.
+ (compare_relocs): New static function.
+ (disassemble_data): Rename disassemble to disassemble_fn to avoid
+ shadowing. If dump_reloc_info, print relocs along with
+ disassembly. Skip sections which are not SEC_CODE unless
+ disassemble_all or only is set.
+ (display_bfd): Don't call dump_relocs if disassemble is set.
+ (main): Accept and handle -D.
+ * binutils.texi: Document -D/--disassemble-all.
+ * objdump.1: Likewise.
+
+Wed Sep 14 12:19:07 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objdump.c (disassemble_data): Initialize prevline to 0. Make
+ prev_function non const. Copy functionname into an malloc buffer
+ when setting prev_function, instead of assuming that the string
+ will last forever.
+
+ * nm.c: Include libiberty.h.
+ (sort_by_size): New static variable.
+ (long_options): Add --size-sort.
+ (usage): Mention --size-sort.
+ (numeric_forward): Make static. Change from void * to PTR.
+ (numeric_reverse): Likewise.
+ (non_numeric_forward, non_numeric_reverse): Likewise.
+ (sorters): Change declaration from void * to PTR.
+ (size_forward, sort_symbol_by_size): New static functions.
+ (display_rel_file): Handle sort_by_size.
+ (filter_symbols): If sort_by_size, discard absolute and undefined
+ symbols.
+ * binutils.texi (nm): Document --size-sort.
+ * nm.1: Document --size-sort.
+
+Tue Sep 13 21:06:06 1994 Jeff Law (law@snake.cs.utah.edu)
+
+ * objcopy.c (copy_main): Initialize input_filename and
+ output_filename to NULL.
+
+Tue Sep 13 14:17:24 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * Makefile.in (version.o): Depend upon Makefile, so that version.o
+ gets rebuilt when make variable VERSION is changed.
+
+ * objdump.c (dump_section_header): Print the SEC_NEVER_LOAD flag.
+
+Wed Aug 24 12:40:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * configure.in: Change i[34]86 to i[345]86.
+
+Tue Aug 23 11:00:40 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ar.c (ranlib_touch): Don't update the archive map if there isn't
+ one.
+
+Mon Aug 22 16:02:18 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ar.c: Include libiberty.h.
+ (inarch): Remove variable.
+ (map_over_members): Make static. Add arch argument, and use it
+ instead of inarch. Change all callers.
+ (main): Treat --version as -v. Accept -t argument. Accept any
+ number of archive arguments. Catch and use open_inarch return
+ value, rather than using inarch.
+ (open_inarch): Return newly opened BFD, rather than using inarch.
+ (do_quick_append): Make archive_filename const.
+ (write_archive): Add iarch argument, and use it instead of inarch.
+ Change all callers.
+ (delete_members, move_members, replace_members): Likewise.
+ (ranlib_only): Don't exit on success. Catch and use open_inarch
+ return value.
+ (ranlib_touch): New function.
+ * arsup.h (map_over_members): Don't declare.
+ (ar_end, ar_extract): Declare.
+ (open_inarch): Change return value in declaration to bfd *.
+ * arsup.c (map_over_list): Make static. Always pass two arguments
+ to function. Add arch argument, and use it instead of inarch.
+ Change all callers.
+ (ar_directory_doer): Make static. Add ignored second argument.
+ Change all callers.
+ (ar_directory): Use open_inarch return value rather than inarch.
+ (ar_addlib_doer): Make static.
+ (ar_addlib): Use open_inarch return value rather than inarch.
+ (ar_extract): Remove unused local variable abfd.
+
+Thu Aug 11 14:55:57 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ Add support for removing named sections to objcopy and strip.
+ * objcopy.c (struct section_list): Define.
+ (remove_sections): New static variable.
+ (strip_options, copy_options): Add remove-section.
+ (copy_usage, strip_usage): Mention -R and --remove-section.
+ (setup_section): If section is in remove_sections list, ignore it.
+ (copy_section): Likewise.
+ (strip_main, copy_main): Handle -R.
+ * binutils.texi, objcopy.1, strip.1: Document new options.
+
+Wed Aug 10 10:19:55 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * nlmconv.c (powerpc_mangle_relocs): Rename symvalue to sym_value,
+ so as not to conflict with the symvalue typedef in bfd.h.
+
+Mon Aug 1 13:19:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * nlmheader.y: Per current NetWare docs, accept a revision number
+ of 0 and treat a revision number greater than 26 as 0.
+
+Mon Jul 25 12:58:36 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objdump.c (objdump_print_address): Correct handling of end of
+ symbols when looking for next symbol with a different value.
+
+Fri Jul 22 16:48:34 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * nm.c (numeric_forward): Treat undefined symbols as "less than"
+ defined symbols with zero values. If numeric values are equal, or
+ both symbols are undefined, sort alphabetically. Don't assume
+ that the difference of two bfd_vma values will truncate to "int"
+ and still have the same sign.
+ (numeric_reverse): Call numeric_forward and negate the result.
+ (print_symbol_info_bsd): For undefined symbols, print leading
+ spaces equivalent to the width of a printed bfd_vma, rather than
+ assuming that 8 will look right.
+
+Fri Jul 22 10:36:50 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * coffgrok.c (doit): Zero all fields of new structure.
+ * srconv.c (sysroff_swap_*_out): Remove redundant trailing arg.
+ * sysinfo.y: Generate sysroff_swap_*_out without requiring extra
+ arg.
+
+Fri Jul 22 10:09:53 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
+
+ * nlmheader.y: Make "stack" and "stacksize" synonyms in the lexer
+ rather than the parser.
+
+Thu Jul 21 10:25:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * config/mh-alphaosf, config/mh-apollo68v, config/mh-delta88:
+ Remove; obsolete.
+
+Sat Jul 16 22:34:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objdump.c (slurp_dynamic_symtab): Try to get the dynamic symbols
+ even if the bfd is not marked DYNAMIC. ELF executables are not
+ marked DYNAMIC, but do have dynamic symbols.
+
+Fri Jul 15 01:41:35 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * coffgrok.c (do_where): Make data with no type 'int'.
+ (do_define): Keep info on source file of a symbol.
+ * coffgrok.h (coff_symbol): New field.
+ * srconv.c (PROGRAM_VERSION): Now 1.3
+ (wr_rl): Use external ref number for symbol.
+ (wr_dus): Only keep one source file per debug unit.
+ (wr_dln): Always emit line numbers for first source file,
+ (wr_globals): Emit globals in the du of their owning source file.
+
+Mon Jul 11 15:59:03 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
+
+ * nlmheader.y: Null terminate var_hdr->threadName.
+
+Fri Jul 8 17:33:22 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * Makefile.in (syslex.o, sysinfo.o): Permit C source files to be
+ in $(srcdir), as they will be for FSF releases.
+
+Wed Jul 6 01:13:14 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (setup_sections): Preserve existing section flags when
+ copying in flags from a new section.
+
+Tue Jul 5 15:56:01 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objcopy.c: Include libiberty.h.
+ (copy_file): If output_target is NULL, set it to the target of the
+ input file.
+
+Wed Jun 29 17:17:14 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
+
+ * nlmconv.c (link_inputs): Fixed memory allocation bug.
+
+Thu Jun 23 12:52:46 1994 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * configure.in: Change --with-targets to --enable-targets.
+
+Tue Jun 21 12:53:21 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * Makefile.in (sysinfo): Does not depend upon $(ADDL_LIBS).
+
+ * nlmconv.c (powerpc_build_stubs): Don't generate the PowerPC
+ NetWare custom header; no longer needed.
+ (powerpc_mangle_relocs): Convert relocs against the uninitialized
+ data section into relocs against the data section.
+
+ * configure.in: Set nlmconv_defs to -DNLMCONV_cputype for all the
+ netware targets. Write it into Makefile as NLMCONV_DEFS.
+ * Makefile.in (nlmconv.o): Pass $(NLMCONV_DEFS) to $(CC).
+ * nlmconv.c: Only compile code for specific CPU types if
+ NLMCONV_cputype is defined.
+
+ * nlmconv.c (main): Change uses of bfd_abs_section, etc., to use
+ bfd_abs_section_ptr or bfd_is_abs_section, etc.
+ (i386_mangle_relocs, alpha_mangle_relocs): Likewise.
+ (powerpc_build_stubs): Likewise.
+ * nm.c (filter_symbols, print_symbols): Likewise.
+ * objcopy.c (filter_symbols): Likewise.
+ (mark_symbols_used_in_relocations): Likewise.
+ * objdump.c (remove_useless_symbols, dump_relocs): Likewise.
+ * size.c (sysv_internal_printer): Likewise.
+
+Mon Jun 20 16:43:03 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * Makefile.in (MANPAGES): Remove $(DEMANGLER_PROG).
+ (install): Install it explicitly, from build dir, not srcdir.
+
+Mon Jun 20 16:29:54 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objdump.c: Don't include elf/internal.h.
+ (bfd_elf_find_section): Don't declare.
+ (read_section_stabs): No special handling for ELF. Always read
+ using BFD sections.
+
+Thu Jun 16 17:25:20 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure.in: Set UNDERSCORE in Makefile based on result of
+ invoking config.bfd with a second argument of ``_''.
+ * Makefile.in (underscore.c): Depend upon Makefile. Don't try to
+ run $(CC) and $(NM), just use $(UNDERSCORE). Create via temporary
+ file.
+ (demangle.o): Remove target.
+ ($(NM_PROG)): Don't depend upon demangle.o, and don't link against
+ demangle.o. It's in libiberty anyhow.
+ (cplus-dem.o): Don't depend upon demangle.o.
+ * binutils.texi: Mention -n and --no-strip-underscores arguments
+ to c++filt.
+
+Wed Jun 15 12:10:31 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nm.c (long_options): Add --no-demangle to turn off --demangle,
+ and --no-cplus for Linux compatibility.
+ (usage): Mention --no-demangle.
+ * binutils.texi: Document --no-demangle.
+
+Fri Jun 10 15:41:25 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nm.c: HOST_64_BIT was renamed to BFD_HOST_64_BIT.
+
+ * objcopy.c (copy_archive): Make the temporary directory in the
+ same directory as the output BFD, since we may not have write
+ permission on the current directory. Set the permissions of the
+ new directory to 0700, not 0777.
+
+Mon Jun 6 21:36:43 1994 D. V. Henkel-Wallace (gumby@cygnus.com)
+
+ * configure.in: if this is an rs6000 (and we're not building for
+ any other bfd targets) then build only nm (collect needs it on
+ rs6000-lynx).
+
+ * Makefile.in: define TOOL_PROGS which the list of programes to
+ install in $tooldir -- replaces a hard-coded list.
+
+Fri Jun 3 10:59:18 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (display_target_list): Remove unused local ok.
+
+Thu May 26 18:05:52 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * config/mh-alphaosf (CFLAGS): Don't specify both -g and -O;
+ they're not compatible under native cc. Use -O1 instead.
+
+ * Makefile.in (VERSION): Updated to cygnus-2.4.1.
+
+ Changes from binutils-2.4 net release:
+
+ * Makefile.in (MANPAGES): Use $(DEMANGLER_PROG).
+ ($(DEMANGLER_PROG).1): Build from cxxfilt.man, using sed.
+ * cxxfilt.man: Renamed from c++filt.1, replaced "c++filt" with
+ magic token to be replaced by sed.
+
+ Wed May 11 22:32:00 1994 DJ Delorie (dj@ctron.com)
+
+ * configure.bat: update for latest makefile.in
+
+Fri May 13 23:25:13 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * bucomm.c: Check ANSI_PROTOTYPES rather than __STDC__.
+
+Tue May 10 18:22:06 1994 Jason Molenda (crash@sendai.cygnus.com)
+
+ * objcopy.c (copy_section): Set section size correctly if using
+ interleave.
+
+Sat May 7 16:49:36 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * Makefile.in: Add rule for sysinfo.h
+
+Fri May 6 12:18:33 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * Makefile.in (SRCONV_PROG): Define.
+ (PROGS): Use $(SRCONV_PROG) too.
+
+Thu May 5 19:41:43 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * Makefile.in (DISTSTUFF): Add sysinfo.c, syslex.c, in case
+ someone configures with `targets=all'.
+ (distclean): Remove y.*.
+ (syslex.o): Depend on sysinfo.h.
+ (sysinfo.c): Rename y.tab.h to sysinfo.h.
+ (install-info): Don't try to install into $(infodir)/$(srcdir).
+ * syslex.l: Include sysinfo.h, not y.tab.h.
+
+Thu May 5 11:50:55 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com)
+
+ * syslex.l (yywrap): Define as function if not defined as a macro.
+
+ * Makefile.in (objdump.o): Deleted special rule.
+ * configure.in: Don't bother building ARCHDEFS variable for
+ Makefile.
+ * objdump.c (ARCH_*): Deleted handling.
+ (disassemble_data): Call `disassembler' from opcodes library.
+
+Thu May 5 13:28:42 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in (install): Correct handling of $(tooldir) and
+ $(bindir) being on different devices.
+
+Fri Apr 29 09:50:38 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * sysdump.c (h8300, sh): Add declarations.
+
+Wed Apr 27 11:25:18 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * Makefile.in (syslex, sysinfo): Use CC_FOR_BUILD.
+ * coffdump.c, coffgrok.c, coffgrok.h, srconv.c, sysdump.c,
+ sysroff.info: Major changes.
+
+Tue Apr 26 18:18:24 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * objdump.c (print_section_stabs): Indicate the stab header symbol
+ more clearly, print numbers of unrecognized stab n_type values.
+
+Tue Apr 26 16:22:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (copy_sections): Copy arelent pointers, not arelents.
+
+Mon Apr 25 16:14:32 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in (distclean): Remove $(PROGS) and underscore.c.
+
+Fri Apr 22 11:14:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (setup_sections): Remove special handling of .reginfo
+ section.
+ (copy_sections): Likewise.
+ (alpha_mangle_relocs): Use bfd_ecoff_get_gp_value rather than the
+ special ECOFF .reginfo section.
+
+ * objcopy.c (copy_object): Call bfd_copy_private_bfd_data after
+ copying everything else, to let it fiddle with the file in its
+ final state.
+
+ * objdump.c: Include libiberty.h.
+ (display_target_list): If a format fails, just go on to the next
+ one. Check return value of bfd_set_format.
+ (display_info_table): Likewise. Don't increment loop variable in
+ for loop test, since that skips the first element.
+ (display_target_tables): Rewrite loop for clarity. Ensure that it
+ always prints at least one element.
+
+ * nlmconv.c (main): Use CyGnUsEx rather than CyGnUsSeCs for
+ sections header. Rename from cygnus_sections to cygnus_ext.
+
+Thu Apr 21 12:12:26 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (_DUMMY_NAME_): Don't define.
+ (display_target_list): Use tmpnam to get a file name rather than
+ using _DUMMY_NAME_. Unlink it when done.
+ (display_info_table): Likewise.
+
+ * nlmconv.c (secsec): New static variable.
+ (main): Create .nlmsections section in output BFD. Store
+ information about it in sections header.
+ (setup_sections): Allocate space in sections header.
+ (copy_sections): Copy zero sized sections. Put information about
+ each section in the sections header.
+
+Wed Apr 20 14:34:51 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (powerpc_build_stubs): Take new outbfd argument.
+ Change caller. Create custom header for new PowerPC NetWare
+ format.
+
+ * Makefile.in (nlmheader.o, nlmconv.o): Update dependencies.
+ * nlmconv.c: Include bfd.h and libiberty.h with "", not <>.
+ * nlmheader.y: Include bfd.h with "", not <>.
+
+Wed Apr 13 10:52:50 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c: Do an ifdef on __GO32__, not unix.
+
+Wed Apr 6 21:54:49 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ Added -D (--dynamic) option to nm and -T (--dynamic-syms) and -R
+ (--dynamic-reloc) arguments to objdump.
+ * nm.c (dynamic): New static variable.
+ (long_options): Added "dynamic".
+ (usage): Mention -D and --dynamic.
+ (main): Add D to getopt string. Handle -D by setting dynamic.
+ (display_rel_file): If dynamic is non-zero, read dynamic symbols
+ rather than normal symbols.
+ * nm.1: Updated for -D (--dynamic) option.
+ * objdump.c (dump_dynamic_symtab): New global variable.
+ (dump_dynamic_reloc_info): New global variable.
+ (dynsyms, dynsymcount): New global variables.
+ (usage): Mention -R, -T, --dynamic-syms and --dynamic-reloc.
+ (long_options): Added "dynamic-reloc" and "dynamic-syms".
+ (slurp_symtab): If no symbols, return rather than exit.
+ (slurp_dynamic_symtab): New function.
+ (display_bfd): Handle dump_dynamic_symtab and
+ dump_dynamic_reloc_info.
+ (dump_symbols): Take new dynamic argument, indicating whether to
+ display dynamic symbols.
+ (dump_relocs): Move most printing into dump_reloc_set.
+ (dump_dynamic_relocs): New function.
+ (dump_reloc_set): New function, extracted from dump_relocs.
+ (main): Add R and T to getopt string. Handle -T by setting
+ dump_dynamic_symtab and -R by setting dump_dynamic_reloc_info.
+ * objdump.1: Updated for -R (--dynamic-reloc) and -T
+ (--dynamic-syms) options.
+ * binutils.texi: Updated for new nm and objdump options.
+
+Wed Mar 30 15:52:40 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ Update for recent BFD changes to symbol and reloc reading. Rename
+ all uses of get_symtab_upper_bound to bfd_get_symtab_upper_bound.
+ Also:
+ * coffgrok.c (symcount): Change to long.
+ (do_sections_p1): Check for error return from
+ bfd_get_reloc_upper_bound. Change relcount to long, and check for
+ error from bfd_canonicalize_reloc.
+ (coff_grok): Change storage to long. Check for error from
+ bfd_get_symtab_upper_bound and bfd_canonicalize_symtab.
+ * nlmconv.c (main): Change symcount, newsymalloc, newsymcount, and
+ i to long. Check for error from bfd_get_symtab_upper_bound and
+ bfd_canonicalize_symtab.
+ (copy_sections): Change reloc_size and reloc_count to long. Check
+ for error from bfd_get_reloc_upper_bound and
+ bfd_canonicalize_reloc.
+ (mangle_relocs, i386_mangle_relocs, alpha_mangle_relocs): Change
+ reloc_count_ptr argument to long *. Make corresponding changes to
+ variables loaded from *reloc_count_ptr.
+ * nm.c (display_rel_file): Change storage and symcount to long.
+ Check for errors from bfd_get_symtab_upper_bound and
+ bfd_canonicalize_symtab.
+ * objcopy.c (filter_symbols): Change symcount, src_count and
+ dst_count to long.
+ (copy_object): Change symcount to long. Pass another argument to
+ fprintf. Check for errors from bfd_get_symtab_upper_bound and
+ bfd_canonicalize_symtab.
+ (copy_section): Change relcount to long. Check for errors from
+ bfd_get_reloc_upper_bound and bfd_canonicalize_reloc.
+ (mark_symbols_used_in_relocations): Change relcount and i to long.
+ Check for errors form bfd_get_reloc_upper_bound and
+ bfd_canonicalize_reloc.
+ * objdump.c (storage): Remove global variable.
+ (symcount): Changed to long.
+ (slurp_symtab): New local variable storage. Check for errors from
+ bfd_get_symtab_upper_bound and bfd_canonicalize_symtab.
+ (remove_useless_symbols): Change return value and count to long.
+ (objdump_print_address): Change min, max, thisplace and i to long.
+ (disassemble_data): Change i to long.
+ (dump_symbols): Change count to long.
+ (dump_relocs): Change relcount to long. Check for errors from
+ bfd_ret_reloc_upper_bound and bfd_canonicalize_reloc.
+ (display_info_table): Add casts when passing LONGEST_ARCH for
+ printf %* argument.
+
+Tue Mar 29 14:59:04 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nm.c (display_archive): Close each archive element after it has
+ been displayed.
+ * objdump.c (display_file): Likewise.
+
+Mon Mar 28 13:04:08 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure.in: Change error message to refer to bfd/config.bfd
+ rather than bfd/configure.in.
+
+Sun Mar 27 16:23:39 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * More fixes for object formats which allow multiple sections
+ with the same name:
+ * objcopy.c (setup_section): Make a new output section even if
+ one already exists with the given name.
+ (copy_section): Use isection->output_section rather than trying
+ to look the output section up by its (possibly non-unique) name.
+
+ * Makefile.in (install-info): Look for binutils.info in the
+ current directory, then in $(srcdir). Don't use $<.
+
+Mon Mar 21 12:55:45 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (objdump_print_address): Make static. Declare with
+ prototype. Change vardiff from int to bfd_signed_vma. Correct
+ binary search termination condition. When looking for same
+ section symbol in relocatable file, handle final symbol correctly.
+
+Sun Mar 20 11:26:36 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * Makefile.in: Avoid bug in hpux sed.
+
+ * objcopy.c: Changes to keep it from stripping symbols used
+ in output relocations.
+ (mark_symbols_used_in_relocations): New function. Mark symbols
+ used in output relocations with BSF_KEEP.
+ (filter_symbols): Do not strip symbols marked with BSF_KEEP.
+ (copy_object): Reorder actions. First setup sections, then
+ build the output symbol table, then copy the section contents.
+
+Fri Mar 18 10:53:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ar.c (write_archive): Allocate space for the null byte. From
+ Robert Lipe <robertl@arnet.com>.
+
+Thu Mar 17 16:20:28 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in: Built nm.new and strip.new to avoid problems with
+ collect when . is in PATH.
+ (STRIP_PROG): Change from strip to strip.new.
+ (NM_PROG): Change from nm to nm.new.
+ (install): Remove the .new when installing.
+
+Wed Mar 16 16:27:05 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (powerpc_build_stubs): Set BSF_DYNAMIC flag for each
+ symbol for which we build a stub.
+ (powerpc_mangle_relocs): Only reset TOC pointer for a call to a
+ symbol with BSF_DYNAMIC flag set.
+
+Tue Mar 15 23:04:13 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * objcopy.c (filter_symbols): Use bfd_is_local_label to determine
+ if a symbol represents a compiler-generated local label.
+ (copy_object): Give the BFD backends a chance to copy any private
+ bfd data from the input BFD to the output BFD.
+ (setup_section): Give the BFD backends a chance to copy any private
+ section data from the input section to the output section.
+
+Mon Mar 14 11:15:58 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * objcopy.c (mangle_section): Delete unused function.
+ (setup_section): Set osection here instead of calling
+ mangle section to do it.
+
+Mon Mar 14 12:11:01 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ar.c (write_archive): Close inarch before unlinking it.
+
+Fri Mar 11 22:20:48 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (main): For PowerPC, call powerpc_build_stubs and
+ powerpc_resolve_stubs. Use __GOT0, not __toc_start. Handle it if
+ the start and end symbols are not in the text section.
+ (struct powerpc_stub): New struct definition.
+ (powerpc_stubs, powerpc_stub_insns): New static variables.
+ (powerpc_initial_got_size): New static variable.
+ (powerpc_build_stubs): New function.
+ (powerpc_resolve_stubs): New function.
+ (powerpc_mangle_relocs): Clear extraneous data in .got section.
+ Rearrange reloc handling to handle ELF relocs that are not
+ partial_inplace. Resolve PC relative relocs.
+
+Wed Mar 9 13:48:11 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * ar.c (move_members): Fix it so that the abi positional modifiers
+ don't delete all archive members following the insert point.
+
+Tue Mar 8 13:14:43 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * coffgrok.[ch]: New files, understand coff objects.
+ * coffdump.c: Uses coffgrok to dump out the debug info of a coff
+ file.
+ * sysroff.info: Description of a SYSROFF object file.
+ * sysinfo.y, syslex.l: Parse info file, generate a reader, writer,
+ header files and a printer.
+ * srconv.c: Uses coffgrok.c and sysroff.info to convert a coff
+ file to a SYSROFF file.
+
+Sat Feb 26 13:35:26 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * ar.c (do_quick_append): Pad with a genuine character 10,
+ rather than whatever '\n' might happen to be.
+
+Tue Feb 22 18:25:52 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * nlmconv.c (main): Ignore debugging symbols when looking for
+ special symbols by name.
+
+Sun Feb 20 18:47:42 1994 Ian Lance Taylor (ian@lisa.cygnus.com)
+
+ * nlmconv.c: Include libiberty.h.
+
+ Support for PowerPC NetWare.
+ * nlmconv.c (main): For PowerPC NetWare, automatically define the
+ special symbols __toc_start.
+ (select_output_format): Handle bfd_arch_powerpc.
+ (mangle_relocs): Likewise.
+ (powerpc_mangle_relocs): New function.
+
+Thu Feb 17 09:28:23 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ar.c, bucomm.c, nlmconv.c, nm.c, objcopy.c, objdump.c,
+ size.c: Use bfd_get_error and bfd_set_error and new error names.
+
+Fri Feb 11 15:54:51 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objcopy.c (strip_main, copy_main): Add missing 'break' in switch.
+
+Mon Feb 7 19:45:52 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (disassemble_data): Handle bfd_arch_powerpc.
+
+Sun Feb 6 22:08:20 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * strings.c objdump.c nlmconv.c objcopy.c nm.c ar.c size.c (main):
+ Call xmalloc_set_program_name.
+
+Fri Feb 4 10:46:01 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objcopy.c (filter_bytes): Make MEMHUNK a char *, not PTR, so we
+ can do arithmetic on it.
+
+Thu Feb 3 14:06:41 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objdump.c (dump_section_stabs, read_section_stabs,
+ print_section_stabs): Functions broken out of dump_stabs_1.
+ Free the stabs and strings when done with them.
+
+Wed Feb 2 13:42:23 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * nlmconv.c (main): Use bfd_get_flavour instead of struct member.
+ * ar.c (print_contents, extract_file), size.c
+ (print_berkeley_format, print_sysv_format): Use bfd_get_filename and
+ bfd_my_archive instead of dereferencing the structs directly.
+
+ * ar.c: Use bfd_fatal and bfd_nonfatal instead of bfd_perror and exit.
+ Indent. Remove DEFUNs.
+
+ * nlmconv.c (main), objcopy.c (copy_file): Print matching formats
+ if ambiguous match.
+ * nm.c (display_file, display_archive), size.c (display_bfd):
+ Eliminate gotos.
+ Print matching formats if there is an ambiguous match. Use
+ bfd_nonfatal instead of hardcoded error message if nothing matches.
+
+ * arsup.c, ar.c, objdump.c: Use bfd_get_filename instead of
+ abfd->filename.
+
+ * nm.c (display_archive): New function, from code in display_file.
+ (display_rel_file): Renamed from do_one_rel_file.
+
+ * size.c: Indent.
+ (display_archive): New function from code in display_file.
+ (display_file): Check bfd_close error return.
+
+ * strings.c (strings_object_file): Check bfd_check_format
+ error return.
+
+ * strings.c, objdump.c, size.c: Use bfd_nonfatal instead of bfd_perror.
+
+ * bucomm.c: Delete references to exit_handler. It wasn't set
+ anywhere, and now that we're using the libiberty xmalloc, it
+ wouldn't always get called before exiting.
+ (list_matching_formats): Function moved from objdump.c.
+ * bucomm.h: Declare it.
+
+ * objdump.c (disassemble_data): Move some variable decls closer to
+ their use. Add some comments. Replace a nested block with a
+ return.
+
+Mon Jan 31 18:50:41 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * objdump.c (display_target_list, display_info_table): Check that
+ the bfd of the dummy output file is not null.
+
+Wed Jan 26 13:13:18 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objcopy.c (filter_bytes): New function.
+ (copy_section): Call it.
+ (copy_options, copy_usage, copy_main): Add --byte option to
+ activate it. Appropriate the -b option (which was an undocumented
+ synonym for -F) for it, also. Add --interleave, -i option for
+ additional control.
+ (setup_section, copy_section, mangle_section): Renamed with no `s'
+ on the end.
+ * objcopy.1, binutils.texi: Document the new options.
+
+ * objdump.c (display_target_tables, display_target_list):
+ New functions broken out of display_info.
+ Eliminate some magic constants. Use more meaningful variable names.
+ (dump_bfd_header): New function broken out of display_bfd.
+ (dump_section_header): New function broken out of dump_headers.
+ (remove_useless_symbols): Don't shadow global variable name with
+ parameter.
+ (objdump_print_address): Fix backward test.
+
+Tue Jan 25 19:40:54 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * bucomm.c (print_arelt_descr): Change decl of `when' to time_t.
+ * objdump.h: Removed.
+
+Mon Jan 24 13:29:02 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objdump.c (display_file): Remove call to list_matching_formats.
+ It would never be called.
+ (list_matching_formats): Take an arg giving the list of matching
+ formats.
+ (display_bfd): Pass the arg, and get it filled in by calling
+ bfd_check_format_matches instead of bfd_check_format.
+ (display_info, display_info_table): target_vector was renamed to
+ bfd_target_vector.
+
+ * binutils.texi (objdump): Note some limitations of -h section
+ address printing.
+
+Sat Jan 22 16:20:46 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * Makefile.in (MALLOC): Set to emptiness by default.
+ (ALL_CFLAGS): Add and use.
+ (arparse.h): Make it depend on arparse.y.
+ * ar.c (libbfd.h): Don't require to be in ../bfd.
+ * objdump.c (comp): Rename to compare_symbols.
+
+Fri Jan 21 20:22:30 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objdump.c (list_matching_formats): If the file format is ambiguous,
+ print the matching names so the user can choose one.
+ (display_bfd): Call it.
+ (display_file): Call it.
+
+Fri Jan 21 19:17:25 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (disassemble_data): Support bfd_arch_rs6000.
+
+Mon Jan 17 13:57:25 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * objdump.c (stab_name): Allocate dynamically.
+ (stab_print): Use pointers to strings instead of char arrays.
+ (dump_stabs): Change alloc and init of arrays appropriately.
+ (dump_stabs_1): Always decide whether to print stab_name or
+ the stab's type number, if unnamed.
+
+Fri Jan 14 14:42:48 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objcopy.c (strip_main, copy_main): Don't clobber the input file
+ if copy_file fails.
+
+ * nlmconv.c (main): Warn about an attempt to use a shared library
+ with uninitialized data.
+
+ * nlmconv.c (setup_sections): Make sure that we align the
+ output_offset of each input section appropriately.
+
+Thu Jan 13 17:32:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (dump_relocs): Don't crash if section name is NULL.
+
+Tue Jan 11 19:46:33 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * filemode.c (filemodestring): Commented out; not used.
+ (mode_string): Use POSIX definitions.
+ (ftypelet): Likewise.
+ (rwx): Removed; no longer used.
+ * bucomm.c: Include bucomm.h.
+ (bfd_nonfatal, bfd_fatal): Argument is const.
+ (fatal): Make __STDC__ version.
+ * bucomm.h (mode_string): Declare.
+ * Makefile.in (bucomm.o): Depend upon bucomm.h
+
+Sun Jan 9 12:03:20 1994 Ken Raeburn (raeburn@rtl.cygnus.com)
+
+ * bucomm.c (xmalloc, xrealloc): Deleted.
+ * bucomm.h (xmalloc, xrealloc): Fix prototypes, to correspond to
+ libiberty version of functions.
+
+Thu Jan 6 06:18:15 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * binutils.texi: Add a chapter summarizing the ways to select
+ aspects of the target for each program.
+
+ * objdump.c (long_options, usage): Add long equivalents for all
+ remaining short options that lacked them.
+ * binutils.texi objdump.1: Document them.
+
+ * size.c (usage): Tweak usage message.
+ * size.1: Add missing `=' in examples.
+
+ * binutils.texi strip.1 objcopy.1 nlmconv.1 objcopy.c nlmconv.c:
+ Use "--target=bfdname" as the option to select the BFD target,
+ like nm and size already do.
+ Reserve "--format=format" for textual output selection options, but
+ for now keep old option names as obsolete for backward compatibility.
+
+ * strings.c (main, strings_object_file, usage): Add --target option.
+ * binutils.texi strings.1: Document it.
+
+Sat Jan 1 13:58:24 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ar.c (main): Add \n in error message.
+
+Thu Dec 23 12:23:11 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ gcc -Wall lint:
+ * ar.c (main): Put parens around assignment used as truth value.
+ * objcopy.c (strip_main): Remove unused variables. Return 0.
+ (copy_main): Remove unused variables. Return 0.
+ * objdump.c (display_bfd): Declare return value as void.
+ (stab_print): Use "" instead of 0 to initialize array.
+ (dump_stabs_1): Print vma using printf_vma.
+ (display_info): Put parens around assignment used as truth value.
+ * strings.c (print_strings): Cast printf arguments.
+
+ * objcopy.c (copy_main): Use copy_options, not strip_options.
+
+ * nlmheader.y (command): Warn about illegal date values.
+
+Wed Dec 15 11:18:03 1993 David J. MacKenzie (djm@frosty.eng.umd.edu)
+
+ * bucomm.c bucomm.h: Run through indent. De-ansidecl-ify.
+ (bfd_nonfatal): New function.
+ (bfd_fatal): Call it.
+
+ * objcopy.c (smart_rename): Do a copy if the dest file has
+ multiple hard links. Remove source file on successful copy.
+ Try to preserve mode and owner on successful rename.
+
+ * objcopy.c: Run through indent. Clean up a bit.
+ Make global variables static.
+ Make {input,output}_{target,filename}, show_version local
+ to various functions.
+ New global variable `status' for exit status.
+ (strip_main, copy_main): New functions with code from main.
+ (nonfatal): New macro. Use it globally instead of bfd_perror and
+ bfd_fatal.
+
+ (copy_object): Call mangle_sections with bfd_map_over_sections.
+ (mangle_sections): Adjust for new calling convention.
+
+Fri Dec 10 11:28:11 1993 Ian Lance Taylor (ian@deneb.cygnus.com)
+
+ * nlmheader.y (command): Accept MAP and FULLMAP without arguments.
+ * nlmconv.c (main): Change error message for MAP and FULLMAP.
+
+Thu Dec 9 17:47:19 1993 Ian Lance Taylor (ian@deneb.cygnus.com)
+
+ * nlmconv.c (main): Warn about imported symbols that are not in
+ the IMPORT list even if the IMPORT keyword is not used.
+
+ * nlmconv.c (debug, unlink_on_exit): New static variables.
+ (long_options): Add "debug" and "linker".
+ (main): Handle -d and -l arguments. Make command line input and
+ output files optional. Parse the command file before opening the
+ BFD's, which requires storing more information in local variables.
+ If INPUT names multiple files, link them together. Use OUTPUT for
+ the output file name if not named on command line.
+ (show_usage): Changed for new options.
+ (link_inputs): New function to automatically invoke linker to
+ handle multiple INPUT files.
+ (choose_temp_base_try, choose_temp_base, pexecute): New functions,
+ mostly copied from gcc/gcc.c.
+ * nlmconv.h (input_files, output_file): Declare.
+ * nlmheader.y (input_files, output_file): Define.
+ (command): Support INPUT with a string_list argument. Support
+ OUTPUT.
+ (string_list): Renamed from module_list.
+ * Makefile.in (nlmconv.o): Define LD_NAME based on
+ program_transform_name.
+
+Wed Dec 8 10:09:04 1993 Ian Lance Taylor (ian@deneb.cygnus.com)
+
+ * nlmheader.y (nlmheader_identify): New function. Use it to print
+ the program name just once, instead of with every error message.
+
+Mon Dec 6 16:11:32 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (long_options): Changed --header-info to --header-file
+ to match documentation and usage message.
+
+Sun Dec 5 01:31:01 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * objdump.c (dump_relocs): Avoid dereferencing a NULL sym_ptr_ptr
+ in a relocation.
+
+Thu Dec 2 16:00:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (main): Change various types from bfd_size_type to
+ size_t, since they have to be arguments to fread and fwrite.
+ Change set from char * to unsigned char *.
+ (select_output_format): Make mach argument unsigned. Handle
+ bfd_arch_alpha.
+ (setup_sections): Don't copy the .reginfo section of an ECOFF
+ file. Call bfd_set_reloc to initialize the relocation fields.
+ (copy_sections): Don't copy the .reginfo section of an ECOFF file.
+ Combine all relocs for a section.
+ (mangle_relocs): Change type of relocs to permit specific
+ functions to change it. Call alpha_mangle_relocs for alpha,
+ default_mangle_relocs for other architectures.
+ (default_mangle_relocs): New function. Adjust the address of all
+ relocs by the output_offset.
+ (i386_mangle_relocs): Change type of relocs argument. Cast length
+ argument to memmove to size_t.
+ (alpha_mangle_relocs): New function.
+
+Wed Nov 17 17:38:58 1993 Sean Eric Fagan (sef@cygnus.com)
+
+ * nlmconv.c (select_output_format): Use nlm32-sparc for
+ bfd_arch_sparc.
+
+Wed Nov 17 14:41:35 1993 Jeffrey Osier (jeffrey@thepub.cygnus.com)
+
+ * nlmconv.1: added man page
+ * objcopy.1: fixed format errors
+
+Wed Nov 17 12:03:41 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in: Use CFLAGS as well as LDFLAGS when linking.
+
+Wed Nov 17 04:50:55 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * strings.1: Fix typo.
+
+Mon Nov 15 12:03:20 1993 Ken Raeburn (raeburn@rtl.cygnus.com)
+
+ * Makefile.in (DISTSTUFF): Build "info".
+ (VERSION): Updated to cygnus-2.3.1; 2.3 has gone out.
+
+Sun Nov 14 00:27:24 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * objdump.c (dump_stabs): Handle stabs-in-som as implemented
+ by the new BFD SOM assembler.
+
+Sat Nov 13 07:14:05 1993 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * ar.1 c++filt.1 nm.1 objcopy.1 objdump.1 ranlib.1 size.1
+ strings.1 strip.1: Replace \(em in NAME section with \- so
+ makewhatis can grok it.
+
+Tue Nov 9 15:22:12 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (i386_mangle_relocs): Adjust reloc address by
+ section output_offset.
+
+Fri Nov 5 12:11:52 1993 Jeffrey Osier (jeffrey@thepub.cygnus.com)
+
+ * binutils.texi: added nlmconv chapter
+
+Wed Nov 3 16:10:50 1993 Jeffrey Wheat (cassidy@cygnus.com)
+
+ * Makefile.in: Change RUNTESTFLAGS to RUNTEST_FLAGS
+
+Wed Nov 3 15:09:23 1993 Ken Raeburn (raeburn@rover.cygnus.com)
+
+ * Makefile.in (distclean): Don't get rid of dvi or info files.
+
+Tue Nov 2 13:29:59 1993 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * objcopy.c (S_ISLNK): Define as 0 if there's no S_IFLNK.
+
+Fri Oct 29 16:02:34 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * binutils.texi: Move objcopy docs into alphabetical order.
+
+ * objdump.c: Use xmalloc instead of malloc.
+
+Fri Oct 29 11:11:14 1993 Stan Shebs (shebs@rtl.cygnus.com)
+
+ * objdump.c (info): Rename to formats_info.
+ (dump_stabs_1): Better comments and formatting.
+
+Thu Oct 28 19:43:16 1993 Stan Shebs (shebs@rtl.cygnus.com)
+
+ * ar.c (main): Always create the archive when quick appending,
+ even if no input files have been given.
+
+Wed Oct 27 12:03:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (main): Set sharedDebugRecordOffset and
+ sharedDebugRecordCount fields in extended header.
+
+ * nlmconv.c (main): Force moduleName field to upper case.
+
+Mon Oct 25 16:45:42 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objcopy.c (main): Give a usage message if there are too many
+ arguments.
+
+Mon Oct 25 10:37:08 1993 Ken Raeburn (raeburn@rover.cygnus.com)
+
+ * Makefile.in (install-info): Rewrite to take advantage of VPATH,
+ so FSF distributions (with info files in $(srcdir)) install
+ properly.
+ (DISTSTUFF): Build nlmheader.c too.
+
+Fri Oct 22 11:43:23 1993 Ken Raeburn (raeburn@rover.cygnus.com)
+
+ * ar.c (program_name): Don't define here.
+ * objdump.c: Include "bucomm.h".
+ (xmalloc): Don't declare here.
+ (program_name): Don't define here.
+ (program_version): Fixed type in declaration.
+ * size.c: Include "bucomm.h".
+ (program_name): Don't declare here.
+
+Fri Oct 22 14:10:41 1993 Mark Eichin (eichin@cygnus.com)
+
+ * objdump.c (fprintf): hide declaration in FPRINTF_ALREADY_DECLARED
+
+Fri Oct 1 12:43:00 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (i386_mangle_relocs): Resolve and remove PC relative
+ relocs against defined symbols in the same section.
+
+Thu Sep 30 16:46:26 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * Makefile.in (binutils.dvi): use TEXIDIR to find texinfo.tex
+
+Sat Sep 25 18:09:29 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objcopy.c (simple_copy, smart_rename): New functions.
+ (main): Use them.
+
+Fri Sep 24 15:38:29 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in (clean, distclean): Recurse into testsuite.
+
+Thu Sep 23 01:05:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objcopy.c (setup_sections, copy_sections): If stripping, don't
+ copy SEC_DEBUGGING sections.
+ * objdump.c (dump_headers): Print SEC_DEBUGGING flag.
+
+ * objdump.c (usage): Mention --stabs.
+
+ * objcopy.c (copy_object): Copy all applicable file flags.
+ (copy_file): Don't copy EXEC_P specially here.
+
+Mon Sep 20 19:28:57 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (main): Adjust data section size to correspond to bss
+ alignment adjustment. Clear BSF_SECTION_SYM if symbol is moved to
+ a different section. Use time_t for time variable.
+ (setup_sections): Only put sections with contents in output NLM.
+ (i386_mangle_relocs): No symbols are common at this point. Add
+ casts to avoid warnings.
+
+Fri Sep 10 11:00:40 1993 Stan Shebs (shebs@rtl.cygnus.com)
+
+ * objdump.c: Made the --stabs option work for stabs-in-coff.
+ (ELF_STAB_DISPLAY): Removed.
+ (dump_elf_stabs): Renamed to dump_stabs, changed to run for
+ any object file format.
+ (dump_elf_stabs_1): Renamed to dump_stabs_1, added calls to
+ generic BFD routines for non-ELF case, changed format of message
+ for no-section-found case.
+ (display_bfd): Always call dump_stabs if requested.
+ (dump_data): Call bfd_section_size to get section size.
+
+Fri Sep 10 08:12:23 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * Makefile.in (install): Don't put strings in tooldir/bin.
+
+Mon Sep 6 15:39:04 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (total_bss_size): Removed.
+ (main): Set the bss vma to always follow the data section. Move
+ symbols into new sections, and adjust values by output_offset.
+ (setup_sections): Don't copy all sections, but instead point all
+ text sections to .text, all data sections to .data, and all bss
+ sections to .bss.
+ (copy_sections): Adjust accordingly.
+
+Thu Sep 2 12:34:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ Only build nlmconv if configured for a NetWare target.
+ * configure.in: If we have some *-*-netware* target, or are using
+ all targets, set BUILD_NLMCONV to $(NLMCONV_PROG) in Makefile.
+ * Makefile.in (PROGS): Use $(BUILD_NLMCONV) rather than
+ $(NLMCONV_PROG).
+
+Tue Aug 31 14:13:35 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * objdump.c (ARCH_all): Define ARCH_hppa too.
+ (dump_headers): Don't test for SEC_BALIGN if it's not defined by
+ bfd.h.
+
+Tue Aug 31 13:29:12 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (main): Force creation of .bss section. Set up the
+ sections before looking at the symbols. Move all common symbols
+ into .bss section. Automatically define _edata and _end. Only
+ export symbols in the export list, with multiple prefixes if
+ necessary. Warn if no version. Always create extended header.
+ Set date automatically if not already set.
+ (setup_sections): Count size of bss sections.
+ (mangle_relocs, i386_mangle_relocs): Accept section argument, and
+ take reloc_count as a changeable pointer; changed callers.
+ (i386_mangle_relocs): Remove PC relative relocs within a section,
+ as they require no adjustment.
+ * nlmheader.y: Fixed memory allocation throughout: token STRING is
+ now allocated on the heap, and freed if not needed. Null
+ terminated copyright message. Accept version with only two
+ strings.
+ (symbol_list_opt): New nonterminal, either symbol_list or empty.
+ (symbol_list): Use left recursion to avoid overflowing parser
+ stack.
+ (yylex): Rearranged beginning of line check. Accept quoted
+ strings using single quotes. End generic argument at comment
+ character or parentheses.
+ (string_list_append): Fixed.
+ (string_list_append1): New function.
+
+ * bucomm.h: The first argument to xrealloc is PTR, not char *.
+ * bucomm.c (xrealloc): Use PTR rather than char *.
+ * Makefile.in (objdump.o): Depend upon config.status to notice
+ --with-targets changes.
+ (nlmconv.o): Depend upon bucomm.h.
+
+Tue Aug 17 09:46:01 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * configure.in: Don't pass cpu to config.bfd.
+
+Thu Aug 12 16:43:04 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * Makefile.in ($(NM_PROG)): Depend on demangle.o.
+ (demangle.o): New target.
+ (cplus-dem.o): Depend on it, to force compilation order when doing
+ parallel compiles.
+
+ * nm.c (print_symbol_info_{bsd,sysv,posix}): Take a bfd arg.
+ (struct output_fns print_symbol_info): Ditto.
+ (long_options, usage, main): Add -C --demangle option.
+ (print_symname): New function, demangling if requested.
+ (print_symbols, print_symbol_info_{bsd,sysv,posix}): Use it.
+
+Wed Aug 11 22:57:23 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * Makefile.in: Put CFLAGS last in compilation rules and omit from
+ linking rules. Use ARCHDEFS to compile objdump.c.
+ Update dependencies.
+ * configure.in: Construct ARCHDEFS based on the BFD target makefile
+ fragments.
+ * objdump.c: Conditionalize calls to the print_insn_ARCH functions
+ according to ARCHDEFS.
+
+Thu Aug 12 08:06:15 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * ar.c: Removed obsolete and non-functional GNU960 code.
+
+Wed Aug 11 13:08:26 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * size.c (berkeley_sum): New function.
+ (bsssize, datasize, textsize): New global variables.
+ (bss_section_name, data_section_name, text_section_name): Removed.
+ (print_berkeley_format): Map berkeley_sum over all the sections,
+ rather than only reporting sizes of specifically named sections.
+ * Makefile.in ($(OBJDUMP_PROG)): Removed dependency on size.o.
+
+Tue Aug 10 10:46:01 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * nlmconv.c, nlmconv.h, nlmheader.y: New files for program to
+ convert object files into NetWare Loadable Modules.
+ * Makefile.in (NLMCONV_PROG): New macro, define to be nlmconv.
+ (PROGS): Add NLMCONV_PROG.
+ (nlmheader.c, nlmheader.o, nlmconv.o, $(NLMCONV_PROG)): New
+ targets.
+
+Thu Aug 5 15:48:32 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
+
+ * Makefile.in: define MAKEOVERRIDES to an empty string
+
+Wed Aug 4 17:08:08 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objcopy.c (copy_file): Make failures to process a file nonfatal.
+
+Mon Aug 2 11:28:23 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * nm.c: Add -B option, like --format=bsd.
+
+Tue Jul 27 16:29:54 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objcopy.c (copy_file): If the file is neither an object nor an
+ archive, give an error rather than returning success.
+
+Mon Jul 19 16:13:40 1993 Ken Raeburn (raeburn@rtl.cygnus.com)
+
+ * objdump.c (objdump_print_address): Prefer non-local symbols over
+ local ones, and especially discriminate against debugging symbols.
+ Also, for relocateable files, try to find a symbol in the current
+ section, instead of picking one from some random section with a
+ convenient value (read, section offset).
+ (disassemble_data): Cast argument to malloc to size_t first.
+ (dump_data): Likewise.
+ (dump_relocs): If a single section name is specified, show relocs
+ only for that section. Otherwise, silently omit sections without
+ relocs. Format table nicely even if values are printed using 16
+ digits instead of 8.
+
+Fri Jul 16 15:19:59 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * nm.c: Changes for final version of POSIX.2.
+ (print_symbol_filename_{bsd,sysv,posix}): New functions.
+ (formats): Add an element for a pointer to them.
+ (print_symbols): Call it.
+ (print_object_filename_posix, print_archive_member_posix): Produce
+ output according to new POSIX.2 spec.
+
+ * strings.c (print_strings): Handle STREAM being NULL.
+ (strings_a_section): Pass a NULL.
+ (main): Don't open /dev/null.
+
+Thu Jul 15 12:44:09 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (disassemble_data): Handle the m88k.
+ (display_bfd): Use bfd_errmsg, rather than just claiming that the
+ bfd is not an object file.
+
+Mon Jul 12 17:55:34 1993 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in (TAGS): make work again by naming directories
+ explicitly rather than depending on undefined macros.
+ (INSTALL_XFORM): correct bad install target.
+
+Fri Jul 2 16:58:34 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * strings.c: Doc fixes.
+
+Sun Jun 27 13:35:24 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * Makefile.in: Note dependencies on bucomm.h.
+ (cplus-dem.o): Link c++filt with version.o.
+
+ * strings.c: Include bucomm.h and add prototypes to other decls.
+ Remove -h option.
+
+ * bucomm.h: Declare xrealloc.
+
+ * nm.c, objcopy.c, objdump.c, size.c, strings.c (main, usage): Add
+ --help option. Put "GNU" in the version message.
+ (usage): Take stream and exit status as args.
+ (main): Pass new args to usage.
+
+Fri Jun 25 23:12:12 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * strings.c, strings.1: New files.
+ * binutils.texi: Document strings.
+ * Makefile.in: Add rules for it.
+
+Fri Jun 25 20:44:43 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
+
+ * objdump.c: Use size-independent bfd elf section names.
+
+Sun Jun 20 23:09:06 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
+
+ * objdump.c (objdump_print_address): Handle wide offsets by
+ calling sprintf_vma.
+
+Fri Jun 18 14:29:12 1993 Per Bothner (bothner@deneb.cygnus.com)
+
+ * objdump.c (syms2): Removed unused variable.
+ * objdump.c (remove_useless_symbols): New function.
+ * objdump.c (comp): Simplify.
+ * objdump.c (dis-assemble_data): Make simpler and more
+ efficient how we filter out useless symbols: Just filter
+ BEFORE the sort (using remove_useless_symbols).
+ * objdump.c (objdump_print_address): Simplify.
+ Change output syntax to match gdb.
+
+Thu Jun 17 16:53:56 1993 david d `zoo' zuhn (zoo@cygnus.com)
+
+ * Makefile.in: canonicalize install.sh; for use within
+ this directory (and subdirs)
+
+Mon Jun 14 12:13:22 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com)
+
+ * Makefile.in (install, install-info): remove parentdir support,
+ use INSTALL_XFORM; define INSTALL_XFORM
+
+Thu Jun 10 17:29:21 1993 Per Bothner (bothner@cygnus.com)
+
+ * objcopy.c (copy_object): Fix bad size passed to xmalloc().
+
+Mon Jun 7 12:41:12 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in (INCLUDES): Add -I../bfd for sysdep.h and bfd.h.
+ * configure.in: No longer need to configure to get sysdep.h.
+ * objcopy.c (copy_object): Fix symbol table handling.
+
+Fri Jun 4 17:20:03 1993 Per Bothner (bothner@cygnus.com)
+
+ * objcopy.c (filter_symbols): Cannot filter the symbols
+ in place, because that confuses the relocs, so take separate
+ parameter for output array.
+ * objcopy.c (sympp): Make two variables: isympp and osympp.
+ * objcopy.c (copy_object): Allocate separate array (osympp)
+ for filtered symbols.
+
+Fri Jun 4 10:51:44 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: change recursion test to presence of a configured
+ testsuite directory
+
+Thu Jun 3 14:05:57 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * Makefile.in (underscore.c): Hack the backquoted command so it
+ doesn't cause Solaris make to bomb.
+
+Thu Jun 3 10:40:19 1993 Jeffrey Osier (jeffrey@cygnus.com)
+
+ * Makefile.in: added c++filt and objcopy to MANPAGES variable
+
+Thu Jun 3 00:32:52 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: rename LOADLIBES to EXTRALIBS
+
+Wed Jun 2 18:30:24 1993 Jeffrey Osier (jeffrey@cygnus.com)
+
+ * c++filt.1, objcopy.1: new man pages
+
+Fri May 28 15:01:24 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in (install): Also install ar and ranlib in
+ $(tooldir)/bin; needed for building libgcc.a.
+ * objdump.c (objdump_print_address): Fix the check
+ "coincidental" label matches by dis-allowing undefined
+ or com symbols.
+
+Thu May 27 16:58:31 1993 Jeffrey Osier (jeffrey@cygnus.com)
+
+ * binutils.texi: revised c++filt chapter
+
+Wed May 26 17:24:17 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (FLAGS_TO_PASS): Pass down CC and CFLAGS.
+
+Tue May 25 00:26:47 1993 Ken Raeburn (raeburn@cygnus.com)
+
+ * objdump.c (slurp_symtab): Print warning for bad symbol table.
+ (bfd_elf32_find_section, Elf32_Internal_Shdr): Updated
+ declarations and uses.
+
+ * Makefile.in (DISTSTUFF): Don't build binutils.mm.
+
+Fri May 21 10:51:19 1993 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * nm.c: Add -f/--format, -P/--portability, -t/--radix options.
+ Make global variables static.
+ (main): Make -v like -n, not -V, and make -A like -o, for POSIX.2.
+ (set_print_radix, set_output_format,
+ print_{object_filename,archive_filename,archive_member,symbol_info}
+ {bsd,sysv,posix}): New functions.
+ (display_file, print_symbols): Call them.
+
+ * ar.c: Improve error messages.
+
+ * nm.c (main): Handle long options that just set a flag.
+
+ * nm.c (main), ar.c (do_show_version), objcopy.c (main), size.c
+ (main): Exit after printing the version number, per the GNU coding
+ standards.
+
+Mon May 17 13:20:25 1993 Per Bothner (bothner@cygnus.com)
+
+ * README, Makefile.in: Minor updates for 2.2.
+
+Fri May 14 11:12:26 1993 Per Bothner (bothner@cygnus.com)
+
+ * Makefile.in (underscore.c): Automatically generate
+ (using nm) a file with the variable prepends_underscore.
+ * Makefile.in (c++filt): Link underscore.o with cplus-dem.o
+ so that initial underscores get removed iff appropriate.
+ * binutils.texi: Preliminary documentation for c++filt.
+ * Makefile.in, binutils.texi: Set to version 2.2.
+
+ * NEWS: Mention copy->objcopy renaming and new c++filt program.
+
+Wed May 12 12:05:36 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (cplus-dem.o, $(DEMANGLER_PROG)): Build the
+ demangler via cplus-dem.o, rather than directly from the .c file.
+
+ * objcopy.c: Renamed from copy.c, updated comments accordingly.
+ * Makefile.in, binutils.texi: Renamed copy to objcopy.
+ * is-strip.c, maybe-strip.c, not-strip.c: Updated comments for
+ rename of copy to objcopy.
+
+Mon May 10 17:20:18 1993 Per Bothner (bothner@cygnus.com)
+
+ * binutils.texi (strip, -v option): Fix typo.
+
+Fri May 7 13:57:50 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (RUNTEST): Define.
+ (FLAGS_TO_PASS): Pass down RUNTEST.
+
+Tue May 4 10:06:50 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (DEMANGLER_PROG): Name it c++filt.
+ (PROG): Also build and install COPY_PROG.
+
+Mon May 3 19:11:48 1993 Per Bothner (bothner@cygnus.com)
+
+ * Makefile.in: Change definition of $(tooldir) to match FSF.
+
+Wed Apr 28 23:41:32 1993 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * size.c (usage): Add missing options.
+ (main): Clean up option parser.
+
+ * objdump.c (usage): Add missing options.
+ (display_file): Print program name before calling
+ bdf_perror.
+
+ * nm.c (usage): Add missing options.
+ (main): Clean up option parser.
+ (display_file): Print program name before calling
+ bdf_perror.
+
+ * copy.c (copy_usage, strip_usage): Add missing options.
+
+ * ar.c (usage): New function.
+ (main): Call it.
+ (open_inarch, do_quick_append): Print program name before calling
+ bdf_perror.
+
+Thu Apr 22 15:01:35 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * nm.c (main): Accept and ignore -A and -B for MIPS compatibility.
+
+Mon Apr 19 14:06:59 1993 Rob Savoye (rob@cygnus.com)
+
+ * Makefile.in: Added FLAGS_TO_PASS so tests get run on freshly
+ built binaries if they exist. (otherwise the path)
+
+Wed Apr 7 22:22:50 1993 Rob Savoye (rob@cygnus.com)
+
+ * Makefile.in: Changed check target to use DejaGnu.
+
+Thu Apr 1 12:37:13 1993 Jim Kingdon (kingdon@cygnus.com)
+
+ * Makefile.in: Remove am29k-pinsn.c, i960-pinsn.c.
+ objdump.c: a29k and i960 are `disassemble' not `print'.
+
+ * objdump.c: Rename print_address to objdump_print_address
+ and change parameters.
+ (disassemble_data): Use objdump_print_address.
+
+Wed Mar 31 10:25:29 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
+
+ * objdump.c (disassemble_data): print_insn_sparc is now a
+ `disassemble' not a `print'.
+ Makefile.in: Remove sparc-pinsn.c (now in libopcodes.a).
+
+ * objdump.c (disassemble_data): Use new read_memory_func stuff.
+
+Thu Mar 25 10:38:11 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * objdump.c (fprintf): Declaration of variadic function had better
+ be a prototype for ANSI C systems.
+
+Mon Mar 22 23:19:46 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: rename test-install to install-check
+
+Fri Mar 19 14:40:08 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * objdump.c (disassemble_data): Add H8500.
+
+Fri Mar 19 10:56:51 1993 Jim Kingdon (kingdon@cygnus.com)
+
+ * objdump.c (usage): Mention long options.
+
+Thu Mar 18 14:22:17 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * nm.c: Modify behavior of -o flag for archives to match
+ BSD4.4 and Sunos 4: Prefix archive name before each line.
+
+ * m68k-pinsn.c: Removed. Subsumed by ../opcodes/m68k-dis.c.
+ * i386-pinsn.c: Removed. Subsumed by ../opcodes/i386-dis.c.
+ * Makefile.in: Adjust accordingly.
+ * objdump.c: Support new-style disassemblers (ones that use
+ the interface of ../include/dis-asm.h).
+
+Thu Feb 25 15:57:00 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: When making tar file, remove texinfo/*,
+ except for texinfo/texinfo.tex.
+ * ardup.c: Add extern declaration of strdup.
+ * Makefile.in (testsuite): Add 'else true' since otherwise
+ Ultrix /bin/sh complains.
+
+Wed Feb 24 19:44:18 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: Set VERSION to 2.1.
+ * README, NEWS: Updates.
+ * nm.c: Add -v as a synonym for -V.
+
+Tue Feb 23 19:00:50 1993 Mike Werner (mtw@poseidon.cygnus.com)
+
+ * configure.in: added testsuite to configdirs.
+ * Makefile.in: added support for building testsuite.
+
+Mon Feb 22 22:52:10 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * objdump.c (disassemble_data): Print function names when
+ given by bfd_find_nearest_line. If not - still print
+ line numbers.
+
+Mon Feb 22 07:54:03 1993 Mike Werner (mtw@poseidon.cygnus.com)
+
+ * testsuite: made modifications to testcases, etc., to allow
+ them to work properly given the reorganization of deja-gnu and the
+ relocation of the testcases from deja-gnu to a "tool" subdirectory.
+
+Mon Feb 22 10:27:24 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * objdump.c (dump_data): Free up section contents each time
+ through the loop. Reported by minyard@bnr.ca.
+
+Sun Feb 21 10:55:55 1993 Mike Werner (mtw@poseidon.cygnus.com)
+
+ * testsuite: Initial creation of binutils/testsuite.
+ Migrated dejagnu testcases and support files for testing nm to
+ binutils/testsuite from deja-gnu. These files were moved "as is"
+ with no modifications. This migration is part of a major overhaul
+ of dejagnu. The modifications to these testcases, etc., which
+ will allow them to work with the new version of dejagnu will be
+ made in a future update.
+
+Fri Feb 12 10:05:20 1993 Fred Fish (fnf@cygnus.com)
+
+ * Makefile.in (LIBIBERTY_SRC_DIR, LIBIBERTY_BIN_DIR): New macros.
+ * Makefile.in (LIBIBERTY): Use LIBIBERTY_BIN_DIR.
+ * Makefile.in (DEMANGLER_PROG): New program to build. Add macro
+ and rule.
+ * Makefile.in (PROGS): Add DEMANGLER_PROG.
+
+Tue Jan 26 11:56:33 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * copy.c, nm.c, objdump.c, size.c: Use new bfd_is_com_section
+ macro rather than checking for equality to bfd_com_section.
+
+Fri Jan 8 15:50:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (disassemble_data): Fix code to find first useless
+ symbol.
+
+Thu Jan 7 13:13:31 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (disassemble_data): Use mips_print_insn for MIPS.
+ Don't core dump if bfd_find_nearest_line returns false.
+
+Wed Jan 6 17:14:01 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * objdump.c (disassemble_data): know how to disassemble z8000s
+ too.
+
+Wed Jan 6 15:16:27 1993 Per Bothner (bothner@cygnus.com)
+
+ * arsup.h (interactive), bucomm.h (program_name): Prefix
+ with 'extern', to avoid warnings from some compilers.
+
+Wed Jan 6 15:14:11 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * arparse.y: fix unnecessary shift/reduce
+
+Tue Dec 22 15:46:56 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: Make check depend on all.
+ * Makefile.in (distclean): Remove sysdep.h.
+ * size.c: Use %u format where appropriate.
+ * objdump.c: Standardize: L_SET -> SEEK_SET.
+ * objdump.c: Use new macro bfd_asymbol_bfd.
+ * configure.in: Allow std-host as the default ${mys_host}.
+
+Thu Dec 17 19:38:19 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: added dvi target, define and use TEXI2DVI
+
+Tue Dec 15 18:05:07 1992 Per Bothner (bothner@cygnus.com)
+
+ * Makefile.in (dist): Fix permissions before release.
+ * size.c: Use bfd_size_type (and long) where appropriate.
+ * ar.c: Make writing a map the default, to be compatible
+ with SYSV and Posix.2. Remove some bogus kludges that
+ handled __.SYMDEF directly.
+ * NEWS: New file.
+
+Mon Nov 9 13:36:53 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: flex no longer needs the -S flag
+
+Sat Nov 7 15:06:13 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * ar.c (extract_file): utime needs a pointer to a utimbuf
+
+ * Makefile.in: handle -I includes better, adding $(BASEDIR)/bfd to
+ the list (since some of the bfd/hosts/*.h files include other
+ files from that directory)
+
+Fri Nov 6 00:12:51 1992 John Gilmore (gnu@cygnus.com)
+
+ * i960-pinsn.c (MEM_MAX, MEM_SIZ): Set upper bound properly.
+
+Thu Nov 5 03:37:15 1992 John Gilmore (gnu@cygnus.com)
+
+ Clean up some old BFD ansification macros.
+
+ * arsup.h, bucomm.h, objdump.h: Remove EXFUN from binutils.
+ It still remains as a local macro in gmalloc.c, which is derived
+ from some other copy of GNU Malloc somewhere (FIXME).
+
+ * ar.c, objdump.c, size.c: Replace EXFUN with PROTO. Make static
+ fns really static.
+ * arsup.h: Declare extract_files.
+
+Mon Nov 2 12:42:11 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * ar.c (extract_file): instead of checking USG: if POSIX_UTIME,
+ use utime and utimbuf structure, otherwise if USE_UTIME use utime
+ and array of two longs, otherwise use utimes.
+
+Thu Oct 15 13:57:35 1992 Per Bothner (bothner@cygnus.com)
+
+ * binutils.texi: Document yesterday's changes to strip and copy.
+
+Wed Oct 14 13:22:14 1992 Per Bothner (bothner@cygnus.com)
+
+ * copy.c: Re-do command-line parsing to use getopt_long().
+ Add long option names. Re-think option letters to be more
+ consistent.
+ * copy.c: New function filter_symbols() for stripping only
+ debug-symbols and/or local symbols. Use these to support
+ the previously-missing options of the old FSF strip.
+
+Tue Oct 13 01:24:20 1992 John Gilmore (gnu@cygnus.com)
+
+ * configure.in (host): Use ${srcdir}/../bfd/configure.host rather
+ than repeating a copy of it here.
+
+Wed Oct 7 12:53:52 1992 Ken Raeburn (raeburn@cygnus.com)
+
+ * copy.c (main): Even if is_strip, accept -d argument indicating
+ alternate output format. Needed by gdb for Nindy.
+
+ * m68k-pinsn.c (print_insn_arg): Handle new "`" operand type.
+
+Tue Oct 6 16:33:56 1992 Jeffrey Osier (jeffrey@cygnus.com)
+
+ * binutils.texi: added documentation for "copy"
+
+Tue Oct 6 14:22:56 1992 Per Bothner (bothner at PersSony)
+
+ * Makefile.in (*clean rules): Some cleaning up.
+ * Makefile.in (dist): Make diststuff in gprof for a dist.
+
+ * ar.c (do_show_version): New function.
+ * ar.c (main): Fix so "ar -V" works.
+
+Thu Oct 1 22:44:45 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * configure.in: now uses the cpu-vendor-os triple instead of
+ nested cases.
+
+Fri Sep 25 22:41:08 1992 John Gilmore (gnu@cygnus.com)
+
+ * i960-pinsn.c: Change bzero to memset.
+ * sparc-pinsn.c: Change index to strchr.
+
+Mon Sep 21 14:39:56 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * m68k-pinsn (print_insn_arg, fetch_arg): added support for
+ operands to memory management instructions, from WRS.
+
+Tue Sep 15 15:26:38 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (install): if $(tooldir) exists, install nm and
+ strip in $(tooldir)/bin.
+
+Thu Sep 3 11:57:40 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: Let's call it version 2.0.
+
+Wed Sep 2 00:25:13 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: Bump to version 0.98.
+ * TODO, README: Minor updates.
+
+ * Makefile.in: Added mostlyclean, distclean rules,
+ and cleaned up clean, realclean.
+
+Sun Aug 30 21:18:59 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in: map program names through program_transform_name
+ when installing.
+
+Sun Aug 30 18:09:03 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: Bump to versions 1.97.90.
+ * cplus-dem.c: Removed. Was nowhere used - and if some
+ programs are changed to to demangling should now use the
+ versions in libiberty.
+
+Thu Aug 27 12:58:09 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * configure.in: add we32k
+
+Mon Aug 24 14:53:42 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ar.c (map_over_members): if the element of the archive has a
+ null name, fill it in.
+
+ * nm.c (do_one_rel_file): only warn if a bfd's flags say there
+ will be symbols and there aren't any.
+
+Wed Aug 19 11:20:25 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * m68k-pinsn.c: handle new operand type 'r', introduced for cas2.
+
+Tue Aug 18 20:45:48 1992 Rob Savoye (rob@cygnus.com)
+
+ * nm.c objdump.c: Added support for a +version (-V)
+ to print the version number.
+
+ * ar.c, copy.c: Added support for a -V option to print
+ the version number.
+
+Tue Aug 18 13:28:44 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * config/mh-apollo68v: removed -g from CC definition.
+
+ * Makefile.in: always create installation directories.
+
+Mon Aug 17 18:33:41 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * m68k-pinsn.c: Minor fix in style of output (don't use
+ range to indicate floating point control registers).
+
+Tue Aug 11 23:42:21 1992 Per Bothner (bothner@cygnus.com)
+
+ * ar.c (main): Don't *always* set the verbose flag!
+
+Wed Aug 5 11:25:27 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * copy.c: When is_strip (because it is invoked as the strip
+ program), follow traditional argv processing:
+ 'strip file1 file2' now strips file1 and file2, rather
+ than stripping file1 (as input), leaving output in file2.
+
+Mon Jul 27 16:28:08 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * objdump.c (display_info, display_info_table): Call
+ bfd_set_format() on dummy bfd before using it (twice).
+ * ar.c: Make sure archive is created on command 'r'
+ even when no elements are inserted. (Clean up and
+ simplify some non-working related code.)
+
+Mon Jul 20 02:48:38 1992 D. V. Henkel-Wallace (gumby@cygnus.com)
+
+ * configure.in: hppa support doesn't assume hp OS (from sef).
+
+Sat Jul 18 14:35:22 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * configure.in: recognize hppa hosts (bsd & hpux), error messages
+ to stderr, not stdout
+
+Fri Jul 17 18:39:44 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * ar.1, binutils.texi, i960-pinsn.c, nm.1, objdump.1, ranlib.1,
+ size.1, sparc-pinsn.c, strip.1: removed rcsid's.
+
+Thu Jul 16 16:55:24 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.dos: removed rcsid.
+
+Thu Jul 16 08:23:07 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * objdump.c (display_bfd): print state of BFD_IS_RELAXABLE too
+
+Tue Jun 30 20:26:15 1992 D. V. Henkel-Wallace (gumby@cygnus.com)
+
+ * Makefile.in: Add program_suffix (parallel to program_prefix)
+
+Thu Jun 25 04:52:45 1992 John Gilmore (gnu at cygnus.com)
+
+ * nm.c (sorters): Lint. Remove excess whitespace.
+
+Wed Jun 24 13:48:07 1992 Per Bothner (bothner@cygnus.com)
+
+ * nm.c (valueof macro): Add missing parentheses.
+ (Their lack screwed up numeric_forward().)
+
+Sun Jun 14 10:33:27 1992 John Gilmore (gnu at cygnus.com)
+
+ * objdump.c (dump_elf_stabs): Also dump .stab.index and
+ .stab.excl sections.
+ (dump_elf_stabs_1): Split out main body of old dump_elf_stabs.
+ * objdump.1, binutils.texi: Document new sections dumped.
+
+Fri Jun 12 22:23:35 1992 John Gilmore (gnu at cygnus.com)
+
+ * size.c, objdump.c, bucomm.c: Lint.
+
+Thu Jun 11 01:19:06 1992 John Gilmore (gnu at cygnus.com)
+
+ * objdump.c (dump_elf_stabs): New feature: --stabs prints out a
+ .stab section from an ELF file. Installed under #ifdef
+ ELF_STAB_DISPLAY so it can be easily disabled, since it requires
+ bfd-internals header files and such.
+ * objdump.1, binutils.texi: Update for --stabs. Also fix
+ objdump's doc to use -- rather than + for long options.
+ (FIXME: Not yet fixed everywhere in binutils.texinfo.)
+
+Wed Jun 10 07:53:24 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * objdump.c(display_info), patches from
+ mohring@informatik.tu-muenchen.de to print the table much more
+ nicely.
+
+Thu May 28 13:36:16 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * objdump.c: Add another enum->int cast, for the sake of
+ old compilers (such as PCC).
+
+Wed May 27 13:01:44 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * arlex.l: Don't include <sysdep.h> (unneeded conflicts).
+ Add declaration of strdup().
+
+Fri May 22 13:40:37 1992 Per Bothner (bothner@cygnus.com)
+
+ * Makefile.in: Use srcdir instead of VPATH in ldgram/ldlex
+ rules, since these are used when building a distribution.
+ * Makefile.in (arlex.c): Don't re-direct output, since that
+ leaves a bogus output files if it fails.
+
+ * arlex.l: Make work with lex, for what it's worth.
+ * Makefile.in: Better lex support.
+ * Makefile.in (dist): Generate flex and bison outputs
+ for distribution.
+
+Thu May 14 17:17:59 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.in: get BISON definition right.
+
+Fri May 8 07:47:08 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * sanity.sh: default TMPDIR to ".".
+
+Thu May 7 12:34:50 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * binutils.texi: add doc for ar command language.
+
+Wed May 6 18:05:36 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * arparse.y: make END call ar_end
+ * arsup.c (ar_end): added, deletes temp file if archive session
+ aborted.
+
+
+Wed May 6 11:08:53 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.in: use bison & flex from ../ if they exist. Also,
+ FLEX->LEX.
+
+ * sanity.sh: remove temporary directory when finished.
+
+Tue May 5 12:00:58 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: Bump to version 1.97.
+ * ar.c: Declare errno for machines that need it.
+
+Mon May 4 23:29:51 1992 John Gilmore (gnu@cygnus.com)
+
+ * objdump.c (display_info): Handle error cases without coredump.
+ Close the dummy temporary file we open in the loop.
+ * Makefile.in (arsup.o): Add kludge to build with Sun Make.
+
+Fri May 1 16:20:23 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in: added test-install target.
+
+ * sanity.sh: new file.
+
+ * Makefile.in: use sanity test on make check.
+
+Tue Apr 21 13:38:37 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in: rework CFLAGS so that they can be passed on the
+ command line to make. Remove MINUS_G. Default CFLAGS to -g.
+
+Wed Apr 15 14:33:07 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * arsup.c, arsup.h, arparse.y, arlex.l: support for archive
+ scripting language.
+
+Fri Mar 6 21:54:53 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in: added check target.
+
+Thu Mar 5 21:35:49 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in: added clean-info target.
+
+Tue Mar 3 15:36:37 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.in: remove $(COPY_PROG) from PROGS. It shouldn't be
+ installed. added tooldir and program_prefix.
+
+Wed Feb 26 18:04:40 1992 K. Richard Pixley (rich@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.
+
+Sun Feb 16 12:53:02 1992 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in: Bump version to 1.96, and remove -beta
+ suffix from distribution name.
+ * m68k-pinsn.c: New macro COERCE_SIGNED_CHAR to extract
+ the signed value of a character (even if chars are unsigned).
+ * sparc-pinsn.c: Add new operand types.
+
+Thu Feb 6 12:14:19 1992 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * objdump.c (disassemble_data): don't print a section's contents
+ if it's not loadable (eg bss)
+
+Tue Jan 28 11:11:06 1992 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * m68k-pinsn.c (print_insn_arg): fixed so that -ve branch
+ displacements don't get printed as large +ve ones.
+
+Fri Jan 24 14:47:53 1992 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * copy.c, nm.c, objdump.c, size.c : changed to use the
+ new reloc scheme.
+
+
+Mon Dec 30 18:34:41 1991 Per Bothner (bothner at cygnus.com)
+
+ * bucomm.c (print_arelt_descr): Tweek the output format
+ so that 'ar tv' output follows Posix 1003.2/D11.
+ Output is now also identical to Sun's (except __.SYMDEF).
+
+Mon Dec 30 06:09:53 1991 John Gilmore (gnu at cygnus.com)
+
+ * Makefile.in: Make `make' output more readable.
+
+Wed Dec 18 15:04:45 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in: Bump to version 1.94.
+
+Wed Dec 11 16:48:09 1991 Steve Chamberlain (sac at cygnus.com)
+
+ * ar.c: added "b" to fopens for dos
+ * configdj.bat, makefile.dos new files from DJ
+
+Tue Dec 10 04:07:26 1991 K. Richard Pixley (rich at rtl.cygnus.com)
+
+ * Makefile.in: infodir belongs in datadir.
+
+Sat Dec 7 17:09:37 1991 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * bucomm.h: created to hold prototypes of bucomm.c
+ * objdump.h: created to hold prototyes of objdump.c
+ * am29k-pinsn.c: include objdump.h
+ * ar.c: include bucomm.h, get ar.h from the right place and
+ include libbfd.h
+ * bucomm.c: defunize bfd_fatal
+ * copy.c: include bucomm.h, lint.
+ * i960-pinsn.h: include bucomm.h
+ * m68k-pinsn.h: lint
+ * nm.c: include bucomm.h, lint
+ * objdump.c: lint
+ * sparc-pinsn.c: include objdump.h
+
+
+
+Fri Dec 6 23:02:14 1991 K. Richard Pixley (rich at rtl.cygnus.com)
+
+ * Makefile.in: added standards.text support. install using
+ INSTALL_PROGRAM and INSTALL_DATA.
+
+ * configure.in: configure now does all of it's work from objdir so
+ make file existence tests against ${srcdir}.
+
+Thu Dec 5 22:46:22 1991 K. Richard Pixley (rich at rtl.cygnus.com)
+
+ * 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.
+
+Wed Dec 4 22:42:03 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in: Bump to version 1.93.
+ * Makefile.in: Add make-strip.o:maybe-strip.c dependency
+ for make versions that provide half-baked VPATH-support (e.g. Sun's).
+ * size.c: Improvements suggested by
+ "david d [zoo] zuhn" <zoo@aps1.spa.umn.edu>:
+ - Don't emit (Berkeley) headers if no files were found.
+ - Return a non-zero return code on failure.
+
+Sat Nov 30 21:34:19 1991 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ Changes due to include file renaming:
+ * am29k-pinsn.c: a29k-opcode.h -> opcode/a29k.h
+ * sparc-pinsn.c: sparc-opcode.h -> opcode/sparc.h
+ * m68k-pinsn.c: m68k-opcode.h -> opcode/m68k.h
+ * nm.c: stab.gnu.h -> aout/stab_gnu.h
+
+Tue Nov 19 19:20:43 1991 Per Bothner (bothner at cygnus.com)
+
+ * README: Mention MINIMIZE flag for bfd's make.
+
+Mon Nov 18 12:05:37 1991 Per Bothner (bothner at cygnus.com)
+
+ * README: Various improvements.
+
+Sun Nov 17 23:40:59 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in: Bump to version 1.92.
+ * version.c, Makefile.in: Get version string from Makefile.
+ * copy.c, is-strip.c, not-strip.c, maybe-strip.c, Makefile.in:
+ Make the same change that we earlier did for ar/ranlib:
+ Generate two different binaries for strip and copy and use
+ a global variable with different values to distinguish
+ ostrip from copy. (-1 means to use argv[0] to decide,
+ so you can get the old behavior, but it is no longer the default).
+ * copy.c (copy_file): Set EXEC_P of output bfd if input is so.
+ * copy.c (main): If is_strip==-1, compare last 5 chars
+ of argv[0], not the whole path.
+ * copy.c (main): Return 0, not 1.
+ * copy.c (setup_sections): Fix due to change in bfd_make_section
+ now failing if asked for a duplicate section.
+ * strip.c, ostrip.c: Removed obsolete files.
+ * ar.c, not-ranlib.c, maybe-ranlib.c:
+ Change encoding of is_ranlib variable to be consistent
+ with is_strip for strip.copy (i.e -1 to means use argv[0]).
+
+Thu Nov 14 20:11:02 1991 Per Bothner (bothner at cygnus.com)
+
+ * version.c (program_version): Update to version 1.92.
+
+Tue Nov 12 16:17:53 1991 Per Bothner (bothner at cygnus.com)
+
+ * ar.c (get_pos_bfd): Previous fix was missing a "break".
+
+Thu Nov 7 08:55:56 1991 Steve Chamberlain (sac at cygnus.com)
+
+ * am29k-pinsn.c: Fixed bug in mtacc, dmac and fmac instruction
+ encodings. (Thaks to David Wood)
+
+Sun Nov 3 14:50:23 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in ($(DIST_NAME).tar.Z), TODO: Various fixes.
+ * ar.c (get_pos_bfd): Fix to handling of before/after
+ positioning options.
+ * bucomm.c (fatal): MISSING_VFPRINTF is no longer an issue,
+ since libiberty contains vfprintf etc if otherwise missing.
+ * m68k-pinsn.c (print_insn_arg): Support BB/BW/BL
+ type operands, as used by branch instructions.
+ * nm.c: Delegate printing of symbols to BFD,
+ by using bfd_print_symbol to do the formatting.
+
+Mon Oct 28 11:20:47 1991 Steve Chamberlain (steve at cygnus.com)
+
+ * ar.c (write_archive.c): added unlink before rename since some
+ systems can't rename onto an existant file.
+
+Mon Oct 21 09:47:23 1991 Steve Chamberlain (steve at rtl.cygnus.com)
+
+ * nm.c: now doesn't crash if a symbol with no section and no
+ SEC_ABS appears.
+
+Thu Oct 17 15:25:50 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in, version.c: Bump to version 1.91.
+
+Wed Oct 16 11:45:36 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in, ar.c, bucomm.c, copy.c, cplus-dem.c, filemode.c,
+ i960-pinsn.c, m68k-pinsn.c, nm.c, objdump.c, size.c, sparc-pinsn.c,
+ * strip.c: Add or update Copyright notice.
+ * TODO: Add note on 'nm -a'.
+ * version.c: Update version number to 1.90.
+ * Makefile.in: Fix making of documentation for dist.
+
+Tue Oct 15 00:17:17 1991 Per Bothner (bothner at cygnus.com)
+
+ * README: New file.
+ * Makefile.in: New kludgy rules for making a tarfile.
+ * Makefile.in: Fix bindir path.
+
+Mon Oct 14 17:34:29 1991 Roland H. Pesch (pesch at cygnus.com)
+
+ * Makefile.in: add targets binutils.mm, binutils.me
+
+Fri Oct 11 22:44:21 1991 John Gilmore (gnu at cygnus.com)
+
+ * Makefile.in: Avoid Sun Make VPATH bugs by adding dependencies.
+
+Fri Oct 11 12:51:33 1991 Roland H. Pesch (pesch at cygnus.com)
+
+ * Makefile.in: add target "binutils.ms"
+
+ * binutils.texinfo: minor restructuring for texi2roff comfort.
+
+Fri Oct 11 04:12:28 1991 John Gilmore (gnu at cygnus.com)
+
+ Restructure configuration scheme for bfd, binutils, ld.
+
+ * configure.in: Revise to symlink sysdep.h to ../bfd/hosts/h-xxx.h.
+ Change some config names to match other dirs.
+ * *.c: Include bfd.h before sysdep.h, so ansidecl and PROTO()
+ get defined first.
+ * Makefile.in: Use -I. to get sysdep.h.
+
+Wed Oct 9 22:42:56 1991 Per Bothner (bothner at cygnus.com)
+
+ * nm.c (print_symbols): Handle NULL name field of symbol.
+ * Makefile.in: Removed spurious comment.
+
+Tue Oct 8 16:55:03 1991 Roland H. Pesch (pesch at cygnus.com)
+
+ * binutils.texinfo: minor typos, phrasing, formatting fixes.
+
+Tue Oct 8 15:13:20 1991 Per Bothner (bothner at cygnus.com)
+
+ * configure.in: Get host file from ../bfd/config, not config.
+ * config/*: Remove config directory and its files.
+
+Tue Oct 8 13:58:59 1991 Roland H. Pesch (pesch at cygnus.com)
+
+ * Makefile.in: new targets binutils.dvi, binutils.info
+
+ * binutils.texinfo: remove most remaining FIXME's, delete
+ references to __.SYMDEF by name
+
+
+Tue Oct 8 10:23:44 1991 Steve Chamberlain (steve at cygnus.com)
+
+ * objdump.c (print_address) Print addresses nicely.
+
+Mon Oct 7 11:31:05 1991 Per Bothner (bothner at cygnus.com)
+
+ * ar.c, Makefile.in, new files {is,not,maybe}-ranlib.c:
+ Make two different binaries for ar and ranlib, instead of
+ distinguishing them at run time using argv[0].
+ (Old behavior is still available if you "make ar_with_ranlib",
+ but it is not the default.)
+ * ranlib.sh (new): An alternative one-line
+ shell implementation of ranlib.
+
+Fri Oct 4 21:49:44 1991 John Gilmore (gnu at cygnus.com)
+
+ * objdump.c: Cope with renames of a few BFD types & enums.
+
+Fri Oct 4 19:08:09 1991 Roland H. Pesch (pesch at cygnus.com)
+
+ * binutils.texinfo: add new file (rudimentary docn)
+
+Mon Sep 30 12:30:39 1991 Per Bothner (bothner at cygnus.com)
+
+ * config/hmake-news: Add new file (for Sony NEWSOS3).
+ * bucomm.c (fatal): Conditionally compile fatal() depending on
+ MISSING_VFPRINTF, and don't confuse the issue with NO_VARARGS.
+ * objdump.c (dump_headers): Trivial output format change.
+ * objdump.c (display_info): Loop over integers, not enums,
+ to appease old compilers.
+
+Mon May 20 16:14:07 1991 Steve Chamberlain (steve at cygint.cygnus.com)
+
+ *objdump.c *nm.c *copy.c: Changed some types to work with 64 bit
+ object files.
+
+Thu May 16 16:06:55 1991 Steve Chamberlain (steve at cygint.cygnus.com)
+ from bother
+ * objdump.c (print_address): Make disasembled output more
+ consistent with gdb and as: Add 0x when printing hex.
+ Don't print extra leading zeros.
+ Attempt to not print "filename.o".
+ * objdump.c: Add some enum-to-int casts to accommodate old compilers.
+
+
+Fri May 3 22:21:44 1991 John Gilmore (gnu at cygint.cygnus.com)
+
+ * copy.c: Change =& constructs to = &, since they confuse older
+ C compilers.
+
+
+Copyright (C) 1991-1997 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/ChangeLog-9899 b/binutils-2.24/binutils/ChangeLog-9899
new file mode 100644
index 00000000..75f231e5
--- /dev/null
+++ b/binutils-2.24/binutils/ChangeLog-9899
@@ -0,0 +1,1914 @@
+1999-12-28 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Update with new constants added by Oct 4, 1999
+ ELF ABI draft.
+ (guess_is_rela): Add new machine codes, but leave
+ rel type undetermined.
+ (get_machine_name): Add new machine codes.
+ (get_section_type_name): Add new section types.
+ (get_elf_section_flags): New function: Decode section flags.
+ (process_section_headers): Call get_elf_section_flags() in
+ order to decode flags in section header.
+ (get_dynamic_flags): New function: Decode dynamic section
+ flags.
+ (process_dynamic_section): Display flags (if present).
+ (get_symbol_type): Add STT_COMMON.
+ (get_symbol_visibility): New function: Decode a symbol's
+ visibility.
+ (process_symbol_table): Call get_symbol_visibility().
+ (get_note_type): Add NT_PRXFPREGS.
+
+1999-12-26 Ian Lance Taylor <ian@zembu.com>
+
+ * strings.c (main): Correct handling of numeric argument.
+
+1999-12-23 Andrew Haley <aph@cygnus.com>
+
+ * dlltool.c (mtable): mcore how_jtab_roff is 4 bytes into the
+ jtab; was 8.
+
+1999-12-17 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (mtable): Stop compile time warnings about missing
+ initialisers.
+ (yyerror): Stop compile time warnings about unused paramater.
+ (INIT_SEC_DATA): New macro: initialise an entry in the secdata
+ array.
+ (secdata): Stop ccompile time warnings about uninitialised
+ fields.
+ (dtab): Stop compile time warnings about unused parameter.
+ (long_options): Stop compile time warning about missing
+ initialiser.
+
+1999-12-10 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (print_vma): Support native 64bit ELF systems.
+
+1999-12-09 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (mtable): Add epoc-arm specific entry.
+ Make default arm entry pass -mpacs-26 to assembler.
+ (flush_page): Do not mangle null entries.
+
+1999-12-07 H . J . Lu hjl@valinux.com
+
+ * readelf.c: Fix compile time warnings. Support more than 999
+ symbols.
+
+1999-12-03 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (enum print_mode): New type.
+ (print_vma): New function.
+ (dump_relocations): Use print_vma to display bfd_vma values.
+ (process_file_header): Use print_vma to display bfd_vma values.
+ (process_program_headers): Use print_vma to display bfd_vma values.
+ (process_section_headers): Use print_vma to display bfd_vma values.
+ (dynamic_segment_parisc_val): Use print_vma to display bfd_vma values.
+ (process_dynamic_segment): Use print_vma to display bfd_vma values.
+ (process_symbol_table): Use print_vma to display bfd_vma values.
+ (process_mips_specific): Use print_vma to display bfd_vma values.
+
+1999-11-25 Fred Fish <fnf@cygnus.com>
+
+ * readelf.c (process_note): Change arg from Elf_External_Note
+ to Elf32_Internal_Note, which also turns the function body
+ into little more than a call to printf.
+ (process_corefile_note_segment): Substantially rewritten
+ to properly handle case where target and host are different
+ endianness, handle note sections with padding, and add some
+ cruft to handle notes with unterminated name data.
+
+1999-11-22 Nick Clifton <nickc@cygnus.com>
+
+ * objcopy.c (copy_usage): Reformat.
+ (strip_usage): Reformat.
+
+1999-11-21 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (usage): Overhaul output: One line per switch.
+ Textual description of each switch. Distinguish between
+ optional switches and required switches.
+ (long_options): Add 'g', 'G' and 'z' short options.
+ (main): Distinguish between optional switches and required
+ switches.
+
+ * binutils.texi: Add -g -G and -z short options for
+ --debugging, --stabs and --disassemble-zeroes.
+
+1999-11-03 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (flush_page): Clip short values to prevent warnings
+ from the assembler.
+ Change default mcore machine name to 'mcore-le' and rename
+ big-endian version to 'mcore-be'.
+
+1999-10-27 Fred Fish <fnf@cygnus.com>
+
+ * objdump.c (display_bfd): Break into two functions. The
+ actual dumping code moves to dump_bfd. If bfd is not
+ unambiguously recognized as a bfd_object, attempt to dump
+ it as a bfd_core.
+ (dump_bfd): New function.
+
+1999-10-26 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (assemble_file): Remove spurious test of exp_name.
+
+1999-10-22 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (struct mac): Add new field 'how_default_as_switches'.
+ (mtable): Initialise new field. Some machines have a non empty
+ string for this field.
+ (HOW_BFD_TARGET): Undefine and replace with...
+ (HOW_BFD_READ_TARGET): New macro: bfd target to use when opening a
+ file for reading. This is set to 0 so that any recognisable bfd
+ format can be read.
+ (HOW_BFD_WRITE_TARGET): New macro: bfd target to use when opening
+ a file for writing. This is set to the target machine type.
+ (ASM_SWITCHES): New macro: default switches to use when assembling
+ a file.
+ (assemble_file): New function: Assemble a source file into a
+ destination object file.
+ (gen_exp_file): Use assemble_file to create the exp file.
+ (make_one_lib_file): Use assemble_file to create the lib file.
+ Open output file use HOW_BFD_WRITE_TARGET and input files using
+ HOW_BFD_READ_TARGET.
+ (make_head): Use assemble_file to create the head file.
+ (make_tail): Use assemble_file to create the tail file.
+ (gen_lib_file): Open output file use HOW_BFD_WRITE_TARGET.
+
+1999-10-15 Ian Lance Taylor <ian@zembu.com>
+
+ * ar.c (normalize): Fix full_pathname code.
+
+1999-10-08 Ben Elliston <bje@cygnus.com>
+
+ * binutils.texi: Some rewording and clarifications.
+
+1999-09-15 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (dynamic_segment_parisc_val): Print 0 for DLD_FLAGS if
+ the value is zero.
+ (process_symbol_table): Don't print histogram if hash table is empty.
+
+1999-09-15 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (get_parisc_dynamic_type): Handle DT_HP_GST_* values.
+
+1999-09-02 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (get_symbol_type): Add support for HPUX and PARISC
+ specific symbol types.
+
+ * readelf.c: Add HPUX and PARISC extensions to dynamic and program
+ header table printing.
+
+ * readelf.c (get_machine_flags): Add handling of PARISC.
+
+1999-09-29 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c (scan_drectve_symbols): Handle type tags in exported
+ symbols.
+ (scan_filtered_symbols): Likewise.
+
+1999-09-19 Ian Lance Taylor <ian@zembu.com>
+
+ * resrc.c (write_rc_rcdata): Fix local variable shadowing
+ problem. If RCDATA_BUFFER data can be read as strings, modify
+ code to print the strings as comments.
+ * resres.c: Add casts to avoid warnings.
+ (write_res_data, read_res_data): Don't put the program name in the
+ error message; fatal already puts it there.
+
+1999-09-14 Michael Meissner <meissner@cygnus.com>
+
+ * configure.in (Canonicalization of target names): Remove adding
+ ${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
+ generates $ac_config_sub with a ${CONFIG_SHELL} already.
+ * configure: Regenerate.
+
+1999-09-12 Ian Lance Taylor <ian@zembu.com>
+
+ * ar.c (main): Clear output_file if we don't change the archive.
+ (delete_members, replace_members): Likewise.
+
+1999-09-12 Donn Terry <donn@interix.com>
+
+ * objdump.c (dump_headers): If wide_output, print Flags header.
+
+ * objdump.c (dump_section_header): Print any comdat information.
+
+ * objcopy.c (parse_flags): Handle "noload", "debug", and "share".
+ * binutils.texi, objcopy.1: Document new flags.
+
+ * ar.c (counted_name_mode): New static variable.
+ (counted_name_counter): New static variable.
+ (map_over_members): Handle counted mode.
+ (usage): Mention N modifier.
+ (main): Handle N modifier.
+ (delete_members): Handle counted mode.
+ * binutils.texi, ar.1: Document N modifier.
+
+ * ar.c (print_contents): Change printing of member name for
+ POSIX.2 conformance.
+
+ * ar.c (output_filename): Make const.
+ (open_inarch): If creating a new empty archive, set
+ output_filename.
+
+1999-09-12 Ian Lance Taylor <ian@zembu.com>
+
+ * ar.c (full_pathname): New static variable.
+ (map_over_members): Call normalize on command line parameter.
+ (usage): Mention P modifier.
+ (normalize): If full_pathname is true, don't do anything.
+ (main): Accept P modifier.
+ (delete_members): Call normalize on command line parameter.
+ * binutils.texi, ar.1: Document P modifier.
+
+1999-09-09 Andreas Schwab <schwab@suse.de>
+
+ * binutils.texi: Add info dir entries for all programs described
+ here. Fix arguments of @var to not contain punctuation.
+
+1999-09-06 Donn Terry <donn@interix.com>
+
+ * nm.c (print_symbol_info_bsd): Check for 'w' as well as 'U'.
+ (print_symbol_info_sysv): Likewise.
+ (print_symbol_info_posix): Likewise.
+
+1999-09-04 Steve Chamberlain <sac@pobox.com>
+
+ * readelf.c: Include "elf/pj.h".
+ (dump_relocations): Handle EM_PJ.
+ (get_machine_name): Likewise.
+ (get_machine_flags): Likewise.
+
+1999-08-31 Scott Bambrough <scottb@netwinder.org>
+
+ * readelf.c (get_note_type): New function: Decode the e_type
+ value of a note.
+ (process_note): New function: Display the contents of a core note.
+ (process_corefile_note_segment): New function.
+ (process_corefile_note_segments): New function.
+ (process_corefile_contents): New function.
+ (process_file): Add call to process_corefile_contents.
+ (parse_args): Add parsing of -n/--notes command line switch.
+ (usage): Document new command line switch.
+
+ * binutils.texi: Documemnt new command line switch to readelf.
+
+1999-08-31 Ian Lance Taylor <ian@zembu.com>
+
+ * binutils.texi (Bug Reporting): Clarify that large files should
+ not be sent to bug-gnu-utils.
+
+1999-08-28 Stephane Carrez <stcarrez@worldnet.fr>
+
+ * readelf.c (process_extended_line_op): New parameter pointer_size,
+ read the address according to pointer_size.
+ (debug_line_pointer_size): New global to indicate the
+ size of address in .debug_line section.
+ (debug_displays, prescan_debug_info): Prescan the .debug_info section
+ to record the size of address in `debug_line_pointer_size'.
+ (process_section_contents): Before dumping any section, execute
+ the pre-scan operation defined for some debug sections.
+
+1999-08-27 Jim Wilson <wilson@cygnus.com>
+
+ * readelf.c (display_debug_lines): Use i-1 not i in standard_opcodes
+ access.
+ (display_debug_aranges): New local excess. Use for calculating padding
+ and add that into ranges. Break from loop only if length is also 0.
+
+1999-08-27 Jim Wilson <wilson@cygnus.com>
+
+ * readelf.c (display_debug_lines, case DW_LNS_const_add_pc): Multiply
+ adv by info.li_min_insn_length.
+
+1999-08-26 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * readelf.c (get_sparc64_dynamic_type): New function.
+ (get_dynamic_type): Use it.
+
+1999-08-26 Jim Wilson <wilson@cygnus.com>
+
+ * readelf.c (display_debug_lines, case default): Change second line
+ setting adv to use = not +=.
+
+1999-08-19 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c: Added more examples to the comment at the start.
+
+1999-08-18 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (make_head): Only emit interworking directive if
+ necessary.
+
+Thu Jul 15 22:44:21 1999 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * readelf.c (process_abbrev_section): Handle standard-conforming
+ single zero at the end of the section.
+
+1999-08-09 Ian Lance Taylor <ian@zembu.com>
+
+ * objdump.c (exit_status): New static variable.
+ (nonfatal): New static function.
+ (disassemble_data): Set exit_status on error.
+ (read_section_stabs): Likewise.
+ (display_bfd): Likewise. Call nonfatal rather than bfd_nonfatal.
+ (display_file): Call nonfatal rather than bfd_nonfatal.
+ (display_target_list, display_info_table): Likewise.
+ (main): Return exit_status rather than 0.
+
+1999-08-08 Ian Lance Taylor <ian@zembu.com>
+
+ * objdump.c (dump_section_header): Update for renaming of
+ SEC_SHORT to SEC_SMALL_DATA. Print SEC_SHARED flag.
+
+ From Eli Zaretskii <eliz@gnu.org>:
+ * binutils.texi: Document cxxfilt as MS-DOS name for c++filt.
+
+ * configure.in: Define and substitute DEMANGLER_NAME.
+ * Makefile.am (DEMANGLER_PROG): Set to cxxfilt.
+ (man_MANS): Use DEMANGLER_NAME rather than DEMANGLER_PROG.
+ (bin_PROGRAMS): Remove $(DEMANGLER_PROG).
+ (noinst_PROGRAMS): Add $(DEMANGLER_PROG).
+ (cxxfilt_SOURCES): Rename from c__filt_SOURCES.
+ (cxxfilt_LDADD): Rename from c__filt_LDADD.
+ ($(DEMANGLER_NAME).1): Rename from $(DEMANGLER_PROG).1. Use
+ DEMANGLER_NAME rather than DEMANGLER_PROG in substitution.
+ (MOSTLYCLEANFILES): Use DEMANGLER_NAME rather than
+ DEMANGLER_PROG.
+ (install-exec-local): When installing noinst_PROGRAMS, change
+ cxxfilt to $(DEMANGLER_NAME).
+ * configure, Makefile.in: Rebuild.
+
+ * Makefile.am: Rename .dep* files to DEP*. Change DEP variable to
+ MKDEP.
+ * Makefile.in: Rebuild.
+
+1999-08-05 Donn Terry <donn@interix.com>
+
+ * Makefile.am (YACC): If bison is not in the source tree, use
+ @YACC@ rather than bison -y.
+ (LEX): If flex is not in the source tree, use @LEX@ rather than
+ flex.
+ * configure.in: Build dlltool for i[3-6]86-*-interix.
+ * Makefile.in, configure: Rebuild.
+
+1999-07-21 Ian Lance Taylor <ian@zembu.com>
+
+ From Mark Elbrecht:
+ * configure.bat: Remove; obsolete.
+
+1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * readelf.c (get_machine_flags): Print EF_SPARC_SUN_US3.
+
+1999-07-15 Ian Lance Taylor <ian@zembu.com>
+
+ * configure.in: Bump version number to 2.9.5.
+ * configure: Rebuild.
+
+1999-07-14 Richard Henderson <rth@cygnus.com>
+
+ * objdump.c (dump_section_header): Print SEC_SHORT.
+
+1999-07-11 Ian Lance Taylor <ian@zembu.com>
+
+ * Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
+ as appropriate. Add variable initializations. Add casts.
+ * objdump.c (disassemble_bytes): Change j to bfd_vma.
+ * readelf.c (process_syminfo): Change i to unsigned int.
+ (display_debug_info): Change abbrev_number to unsigned long.
+ (process_mips_specific): Change fcnt to size_t.
+
+1999-07-09 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Only support decoding 64bit ELF files if the compiler
+ supports a 64 bit data type.
+ Add -I equivalent for --histogram.
+ Add -A command-line option to display architecture specific information.
+
+1999-07-08 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * readelf.c (guess_is_rela): Sparcv9 and v8plus use rela.
+ (dump_relocations): Use ELF64_R_TYPE_ID for Sparc, for R_SPARC_OLO10
+ print the secondary addend.
+ (get_machine_flags): Print Sparc machine flags.
+ (get_symbol_type): Print STT_REGISTER.
+
+1999-07-08 Ian Lance Taylor <ian@zembu.com>
+
+ * stabs.c (parse_stab_type): Fix handling of template names with
+ template parameters containing `::'.
+ (stab_demangle_type): Handle a qualified name in a pointer to
+ member.
+
+1999-06-23 Ian Lance Taylor <ian@zembu.com>
+
+ * Makefile.am (dlltool_SOURCES): Add dyn-string.c.
+ * Makefile.in: Rebuild.
+
+1999-06-23 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * configure.in (HAVE_EXECUTABLE_SUFFIX): Define.
+ * dlltool.c (look_for_prog): Use HAVE_EXECUTABLE_SUFFIX.
+ * dllwrap.c (look_for_prog): Likewise.
+ * resrc.c (look_for_default): Likewise.
+ * configure, config.in: Rebuild.
+
+1999-06-22 Ian Lance Taylor <ian@zembu.com>
+
+ Based on patches from Mumit Khan <khan@xraylith.wisc.EDU>:
+ * configure.in: Define EXECUTABLE_SUFFIX.
+ * dlltool.c: Include "dyn-string.h". Include <stdarg.h> based on
+ ANSI_PROTOTYPES, not __STDC__.
+ (outfile): Remove.
+ (gen_exp_file): Change uses of outfile to use alloca.
+ (make_one_lib_file, make_head, make_tail): Likewise.
+ (gen_lib_file): Likewise.
+ (look_for_prog): New static function.
+ (deduce_name): Rewrite to use look_for_prog.
+ (mcore_elf_gen_out_file): Use dyn_string_t rather than outfile.
+ * dllwrap.c: Don't include <stdio.h>, <errno.h>, <string.h>,
+ <stdlib.h>, or <unistd.h>. Include <sys/stat.h> and either
+ <stdarg.h> or <varargs.h>.
+ (driver_name): Initialize to NULL, not "gcc".
+ (dlltool_name): Initialize to NULL, not "dlltool".
+ (display, inform, look_for_prog, deduce_name): New static
+ functions.
+ (usage): Mention -mno-cygwin.
+ (OPTION_MNO_CYGWIN): Define.
+ (main): Handle -mno-cygwin. Deduce driver_name and dlltool_name.
+ * resrc.c (look_for_default): Make static. Remove unused local
+ path. Check using EXECUTABLE_SUFFIX.
+ (read_rc_file): Allocate enough space to hold EXECUTABLE_SUFFIX.
+ * Makefile.am: Rebuild dependencies.
+ (dllwrap_LDADD): Add $(INTLLIBS).
+ * configure, Makefile.in, config.in: Rebuild.
+
+Mon Jun 21 16:49:11 1999 Jeffrey A Law (law@cygnus.com)
+
+ * readelf.c (dump_relocations): Use elf_hppa_reloc_type instead of
+ elf32_hppa_reloc_type.
+
+1999-06-17 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (mcore_elf_gen_out_file): Link object files with the
+ .exp file, not the .lib file.
+
+Fri Jun 18 20:17:51 1999 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * deflex.l: Accept single-character symbol names.
+
+1999-06-16 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (get_symbol_type): Detect ARM symbols typed as Thumb
+ functions.
+
+1999-06-14 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (disassembler_options): New variable.
+ (usage): Document new -M/--disassembler-options option.
+ (long_options): Add --disassembler-options.
+ (disassemble_data): Initialise disassembler_options field of
+ disassembler_info structure.
+ (main): Add parsing of -M option.
+
+ * binutils.texi: Document new command line switch to objdump.
+
+ * NEWS: Describe new command line switch to objdump.
+
+
+Mon Jun 14 10:27:54 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * binutils.texi: Fix typos.
+
+1999-06-13 Ian Lance Taylor <ian@zembu.com>
+
+ * objdump.c (disassemble_bytes): If the disassembler returns an
+ error, print out anything it may have printed to the buffer. From
+ H.J. Lu <hjl@gnu.org>.
+
+ * defparse.y (explist): Remove separate expline to eliminate
+ shift/reduce conflict.
+
+ From Kai-Uwe Rommel <rommel@ars.de>:
+ * defparse.y: Add tokens NONSHARED, SINGLE, MULTIPLE,
+ INITINSTANCE, INITGLOBAL, TERMINSTANCE, and TERMGLOBAL.
+ (command): Add option_list after LIBRARY.
+ (attr): Accept and ignore NONSHARED, SINGLE, and MULTIPLE.
+ (option_list, option): New nonterminals.
+ * deflex.l: Recognize NONSHARED, SINGLE, MULTIPLE, INITINSTANCE,
+ INITGLOBAL, TERMINSTANCE, and TERMGLOBAL.
+
+1999-06-12 Ian Lance Taylor <ian@zembu.com>
+
+ * ar.c (O_BINARY): Define as 0 if not defined.
+ (ranlib_touch): Open file with O_BINARY.
+
+ * rename.c (O_BINARY): Define as 0 if not defined.
+ (simple_copy): Open files with O_BINARY.
+
+ Based on patch from H. Peter Anvin <hpa@transmeta.com>:
+ * objcopy.c (struct section_list): Add copy field.
+ (sections_copied): New static variable.
+ (copy_options): Add "only-section".
+ (copy_usage): Mention -j and --only-section.
+ (find_section_list): Initialize copy field.
+ (is_strip_section): Check for copying sections.
+ (copy_object): Check sections_copied when calling filter_symbols.
+ (setup_section): Check for copying sections.
+ (copy_section): Likewise.
+ (copy_main): Handle -j/--only-section.
+ * binutils.texi, objcopy.1: Document -j/--only-section.
+
+ * configure.in: If frexp is not available, check in -lm.
+ * configure: Rebuild.
+
+ * readelf.c (get_elf_class): Use correct printf format for type.
+ (get_data_encoding): Likewise.
+ (get_osabi_name): Likewise.
+ (process_file_header): Don't pass an extra argument to printf.
+ (process_dynamic_segment): Cast dynamic_size to long before
+ printing.
+ (decode_location_expression): Cast byte_get to long before
+ printing.
+
+Wed Jun 9 11:40:16 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * readelf.c (dump_section): Cast values from byte_get to
+ [unsigned] long for printing, in case it is wider than long.
+ (display_block): Likewise.
+ (read_and_display_attr): Likewise.
+ (decode_location_expression): Likewise. Don't depend on
+ evaluation order.
+
+Mon Jun 7 12:14:57 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * windres.c (usage): Fix typo.
+
+1999-06-04 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Use 64bit wide fields in internal structures even if
+ targetting a 32bit architecture.
+ (dump_relocations): Take a new parameter - the number of symbols
+ in the symbol table.
+
+1999-06-04 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Add support for 64bit ELF files.
+
+1999-06-03 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (mcore_elf_gen_out_file): Use constants for temporary
+ file names.
+
+Wed Jun 2 12:34:36 1999 Richard Henderson <rth@cygnus.com>
+
+ * dlltool.c (gen_exp_file): Revert 19990411 change.
+
+Mon May 31 09:56:22 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * readelf.c (process_relocs): Determine type of reloc from
+ DT_PLTREL and from section type.
+
+1999-05-29 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (get_elf_class): Display unknown class number.
+ (get_data_encoding): Display unknown encoding number.
+ (get_osabi_name): Display unknown ABI number.
+ (process_file_header): Display unknown version number.
+
+1999-05-29 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (dump_relocations): Fix typo.
+
+1999-05-28 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (dump_relocations): Add extra parameter: is_rela to
+ specify the kind of relocations to be dumped. Call guess_is_rela
+ if this parameter has a value of UNKNOWN.
+ (guess_is_rela): New function: Guess the kind of reloc being used
+ baced on the machine number.
+ (process_relocs): Determine type of reloc before calling
+ dump_relocations.
+
+1999-05-28 Ian Lance Taylor <ian@zembu.com>
+
+ * readelf.c: Include "elf/i960.h".
+ (dump_relocations): Handle EM_960.
+
+Thu May 27 11:58:33 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * objcopy.c (copy_archive): Preserve dates of archive members if
+ requested.
+
+ * readelf.c (dump_relocations): Always print the addend on RELA
+ systems even if there is no symbol.
+ (process_program_headers): Reset dynamic_size before looping
+ through the program headers.
+ (process_version_sections): Cast sh_offset to unsigned long for
+ printing in case bfd_vma is wider.
+ (process_symbol_table): Use get_symbol_index_type when printing
+ st_shndx.
+
+1999-05-17 DJ Delorie <dj@cygnus.com>
+
+ * windres.c: add verbose option
+ (main): process verbose option
+ * resrc.c (look_for_default): new. Look for the default
+ preprocessor in a given location.
+ (read_rc_file): for foo/bar-windres, look for foo/bar-gcc,
+ foo/gcc (in case of foo/windres), and then gcc (the old default).
+
+1999-05-16 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (deduce_name): New function: Deduce name of program to
+ run.
+ (mcore_elf_out_file): New variable: Name of mcore-elf output file.
+ (mcore_elf_linker): New variable: Name of linker to use.
+ (mcore_elf_linker_flags): New variable: Linker flags to pass.
+ (scan_obj_file): Cache filenames if necessary.
+ (usage): Document new command line options.
+ (main): Support new command line options: -M (generate an
+ mcore-elf output file) -L (name of linker to use) -F (flags to
+ pass to linker).
+ (mcore_elf_cache_filename): Store a filename in a cache.
+ (mcore_elf_gen_out_file): New function: Generate an output file
+ per the mcore-elf spec.
+
+1999-05-15 Nick Clifton <nickc@cygnus.com>
+
+ * configure.in (BUILD_MISC): Build dlltool for mcore
+ * configure: Regenerate.
+ * dlltool.c: Update example in comment.
+ (DLLTOOL_MCORE): Define.
+ (DLLTOOL_MCORE_ELF): Define.
+ (DRECTVE_SECTION_NAME): Define.
+ (mcore_be_jtab, mcore_le_jtab): Binary for performing an mcore
+ jump to address.
+ (mtable): Add entries for mcore variants.
+ (rvaafter, rvabefore, asm_prefix): Add mcore suppport.
+ (scan_drectve_symbols): Use DRECTVE_SECTION_NAME.
+ (make_head, make_tail): Cope if file cannot be created.
+ (usage): Improve layout.
+
+1999-05-13 DJ Delorie <dj@cygnus.com>
+
+ * rclex.l: add code to suppress certain output from cpp, replace
+ all returns with MAYBE_RETURN
+ (MAYBE_RETURN): new, implement the suppression by returning
+ IGNORED_TOKEN as needed.
+ (cpp_line): remember which file we're in, mark data from included
+ *.h files for suppression.
+ * rcparse.y (input): allow IGNORED_TOKEN outside of known constructs
+
+1999-05-10 DJ Delorie <dj@cygnus.com>
+
+ * windres.c (quot): Quote shell metacharacters in a string
+ (main): quote parameters to cpp that might have metacharacters in
+ them. Allow -D as an alias for --define to allow for sharing make
+ macros with gcc.
+
+ * objdump.c (dump_reloc_set): don't core if howto->name is NULL
+
+ * Makefile.am: Give rescoff.c a cpu-specific -D so it can set
+ the correct BFD.
+ * Makefile.in: ditto
+ * rescoff.c (write_coff_file): Set the correct BFD
+
+1999-05-06 Ian Lance Taylor <ian@zembu.com>
+
+ * rename.c (smart_rename): Fix test of whether file exists.
+
+1999-05-06 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (disassemble_data): Set display_endian based on target
+ endianism.
+
+1999-05-05 Catherine Moore <clm@cygnus.com>
+
+ * dlltool.c (interwork): Remove.
+ (arm_interwork_jtab): Use bx insn.
+ (thumb_jtab): Likewise.
+ (MARM_INTERWORK): New machine type.
+ (rvaafter): Handle it.
+ (rvabefore) Likewise.
+ (asm_prefix): Likewise.
+ (gen_exp_type): Check machine type instead of
+ interwork flag.
+ (make_one_lib_file): Likewise.
+ (make_head): Likewise.
+ (make_tail): Likewise.
+ (usage): Update machine types.
+ (main): Remove -interwork support.
+
+1999-05-05 Catherine Moore <clm@cygnus.com>
+
+ * readelf.c (get_machine_flags): Check for EF_CPU32.
+ (get_data_encoding): Fix typo.
+
+1999-04-26 Tom Tromey <tromey@cygnus.com>
+
+ * aclocal.m4, configure: Updated for new version of libtool.
+
+1999-04-18 Ian Lance Taylor <ian@zembu.com>
+
+ * stabs.c (parse_stab_range_type): Correct parenthesization in
+ BFD64 case.
+
+ * readelf.c (get_section_type_name): Use correct types in printf
+ formats.
+ (process_relocs): Likewise.
+ (process_dynamic_segment): Likewise.
+ (process_symbol_table): Likewise.
+ (process_mips_specific): Likewise.
+
+Tue Apr 13 21:22:00 1999 Catherine Moore <clm@cygnus.com>
+
+ * dlltool.c (make_one_lib_file): Mark thumb functions as
+ C_THUMBEXTFUNC.
+
+1999-04-11 Richard Henderson <rth@cygnus.com>
+
+ * bucomm.h (environ): Declare it, if needed.
+ (alloca) [C_ALLOCA]: Don't use gcc's builtin or <alloca.h>.
+ * configure.in (environ): Detect declaration.
+ * nm.c (main): Don't declare environ.
+ * configure, config.in: Rebuild.
+
+ * dlltool.c (gen_exp_file): Pad out the .reloc section to a
+ 32-byte boundary with dummy relocations, to make the BeOS loader
+ happy. Patch from Bob Manson <manson@charmed.cygnus.com>.
+
+1999-04-08 Tom Tromey <tromey@cygnus.com>
+
+ * binutils.texi (c++filt): Updated for -j/--java, and hp/edg
+ formats.
+
+1999-04-08 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Add ability to decode new constants found in April 25
+ 1998 Draft of System V ABI spec.
+
+1999-04-06 Ian Lance Taylor <ian@zembu.com>
+
+ * bucomm.h (LC_MESSAGES): Never define.
+ * addr2line.c (main): Don't pass LC_MESSAGES to setlocale if the
+ system does not define it.
+ * ar.c (main): Likewise.
+ * coffdump.c (main): Likewise.
+ * dlltool.c (main): Likewise.
+ * nlmconv.c (main): Likewise.
+ * nm.c (main): Likewise.
+ * objcopy.c (main): Likewise.
+ * objdump.c (main): Likewise.
+ * size.c (main): Likewise.
+ * srconv.c (main): Likewise.
+ * strings.c (main): Likewise.
+ * sysdump.c (main): Likewise.
+ * windres.c (main): Likewise.
+ * readelf.c (main): Call locale setting functions.
+
+1999-04-05 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (decode_location_expression): Fix DW_OP_const8{s|u}
+ decodes.
+
+1999-04-04 Ian Lance Taylor <ian@zembu.com>
+
+ * rename.c: New file, copied out of objcopy.c with a few changes.
+ * bucomm.h (set_times, smart_rename): Declare.
+ * ar.c: Don't include <utime.h>.
+ (extract_file): Call set_times rather than utime.
+ (write_archive): Call smart_rename rather than unlink and rename.
+ * objcopy.c: Don't include <utime.h>.
+ (simple_copy, smart_rename, set_times): Move to rename.c.
+ (strip_main): Update smart_rename call for new parameter.
+ (copy_main): Likewise.
+ * Makefile.am: Rebuild dependencies.
+ (CFILES): Add rename.c.
+ (objcopy_SOURCES, strip_new_SOURCES): Add rename.c.
+ (ar_SOURCES, ranlib_SOURCES): Add rename.c.
+ * Makefile.in: Rebuild.
+
+ * Makefile.am: Rebuild dependencies.
+ (EXTRA_PROGRAMS): Remove backslash which troubles current version
+ of automake.
+ * Makefile.in: Rebuild.
+
+ * dllwrap.c (main): Expect correct type in format string.
+ * resres.c: Include "bfd.h", "bucomm.h", "libiberty.h", and
+ <time.h>. Don't include <stdio.h> and <errno.h>.
+ (write_res_file): Remove unused locals e and i.
+ (read_resource_entry): Remove unused locals rtype and n.
+ (read_unistring): Remove unused local n.
+
+1999-04-03 Ian Lance Taylor <ian@zembu.com>
+
+ * arparse.y: Declare yylex.
+ * objdump.c (disassemble_bytes): Initialize bytes. Add comment
+ for incorrect use of bytes.
+ * readelf.c: Change many formats to avoid warnings.
+
+1999-04-01 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (reset_state_machine): New function. Resets the
+ registers of the source line number state machine.
+ (process_extended_line_op): Use state machine.
+ (display_debug_lines): Use state machine. Handle multiple line
+ number blocks within the same section.
+
+1999-03-29 Jason Merrill <jason@yorick.cygnus.com>
+
+ * readelf.c (process_extended_line_op): end_sequence also resets
+ the line number.
+ (display_debug_lines): advance_line takes a signed operand.
+ (read_and_display_attr): Print refs as <%x>, addresses as %#x,
+ others as %d. Handle other location expression attributes.
+ (display_debug_info): Handle nesting. Always print the offset.
+
+1999-03-23 Ian Lance Taylor <ian@zembu.com>
+
+ * objcopy.c (filter_symbols): When checking whether to keep a
+ symbol, check the BFD section symbol for a symbol with
+ BSF_SECTION_SYM set.
+
+1999-03-10 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_dynamic_segment): Print new Solaris dynamic
+ section entries. Correct printing of DT_POSFLAG_1 and DT_FLAGS_1.
+
+1999-03-10 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (request_dump): New function.
+ Removed arbitary limit on the number of sections that can be
+ dumped.
+
+Wed Mar 10 15:10:14 1999 Stan Cox <scox@cygnus.com>
+
+ * dlltool.c (make_one_lib_file): Use %05d to output the stub name so
+ order in the import library is preserved.
+
+1999-02-19 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Fix compile time warings.
+
+1999-02-17 DJ Delorie <dj@cygnus.com>
+
+ * resbin.c (res_to_bin_versioninfo): Instead of entering a value
+ length of zero in a version info string, enter the appropriate
+ length.
+
+Tue Feb 16 16:00:33 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Require autoconf 2.13. Change AM_PROG_INSTALL to
+ AC_PROG_INSTALL. Add comments for AC_DEFINE calls.
+ * acconfig.h: Remove.
+ * aclocal.m4: Rebuild.
+ * configure: Rebuild.
+ * Makefile.in: Rebuild.
+ * config.in: Rebuild.
+
+1999-02-02 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (read_and_display_attr): Add display of basic type
+ encodings.
+ (display_debug_aranges): New function: Display the contents of a
+ .debug_aranges section.
+ (display_debug_info): Dump tags found after compunit entry.
+
+ * binutils.texi: Fixed bug in readelf documentation.
+
+Mon Feb 1 12:38:01 1999 Catherine Moore <clm@cygnus.com>
+
+ * readelf.c (dump_relocations): Handle EM_ARM as REL.
+
+1999-01-29 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (process_symbol_table): Do not produce a histogram of
+ bucket chains if none were found.
+
+1999-01-27 Nick Clifton <nickc@cygnus.com>
+
+ * version.c: Add 1999 copyright.
+
+ * binutils.texi (readelf): Document new command line options
+ --debug-dump and --histogram.
+
+ * readelf.c: Add ability to display contents of some or all of the
+ Dwarf2 debug sections. {Work only partially completed}.
+ (display_debug_section): New function.
+ (display_debug_info): New function.
+ (display_debug_not_supported): New function.
+ (display_debug_line): New function.
+ (display_debug_abbrev): New function.
+ (process_abbrev_section): New function.
+ (read_leb128): New function.
+ (process_extended_line_op): New function.
+ (get_TAG_name): New function.
+ (get_AT_name): New function.
+ (get_FORM_name): New function.
+ (free_abbrevs): New function.
+ (add_abbrev): New function.
+ (add_abbrev_attr): New function.
+ (read_and_display_attr): New function.
+ (display_block): New function.
+
+Thu Jan 14 23:36:11 1999 Jeffrey A Law (law@cygnus.com)
+
+ * coffdump.c (xcalloc): Remove, in libiberty now.
+ * srconv.c (xcalloc): Likewise.
+ * sysdump.c (xcalloc): Likewise.
+
+1999-01-14 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (process_section_headers): Omit trailing space at end
+ of section header contents line.
+
+Wed Dec 16 17:20:05 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * aclocal.m4: Regenerate.
+
+Mon Dec 14 12:55:36 1998 Jim Wilson <wilson@cygnus.com>
+
+ * dllwrap.c: Include bfd.h and bucomm.h. Move getopt.h include
+ after libiberty.h include.
+
+Tue Dec 8 16:29:43 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.1: Fix typo (-d to -D). From Nokubi Hirotaka
+ <hnokubi@yyy.or.jp>.
+
+Sun Dec 6 13:28:09 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (SFILE): Add size field.
+ (objdump_sprintf): Merge both versions into one. Increase buffer
+ size as needed to avoid overflow.
+ (disassemble_bytes): Change buf from 1000 bytes to 50. Change
+ initialization and use of sfile to match changes to
+ objdump_sprintf.
+
+ * strip.1: Fix typo (-V to -v). From Issei Hirayama
+ <iss@mail.wbs.or.jp>.
+
+1998-12-03 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_dynamic_segment): Improve output format for
+ various DT_* values.
+
+1998-12-02 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_mips_specific): Print .conflict section
+ content.
+
+ * readelf.c (process_mips_specific): Print l_flags in liblist in
+ textual form.
+
+1998-11-30 Nick Clifton <nickc@cygnus.com>
+
+ * ar.c (extract_file): Add some paranoia checks for negatively
+ sized files.
+
+Tue Nov 24 09:39:24 1998 Nick Clifton <nickc@cygnus.com>
+
+ * stabs.c (DIR_SEPARATOR): Define as '\\' if WIN32 is defined.
+
+Tue Nov 17 10:25:26 1998 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.in: Regenerate.
+
+Mon Nov 16 19:17:23 1998 Dave Brolley <brolley@cygnus.com>
+
+ * po/binutils.pot: Regenerate.
+
+Mon Nov 16 10:18:53 1998 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.am: Regernated dependencies.
+ * aclocal.m4: Regenerated.
+ * configure: Regenerated.
+
+Sat Nov 14 14:50:56 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * debug.c (debug_name_type): Correct return type from false to
+ DEBUG_TYPE_NULL.
+
+Sat Nov 14 14:48:21 1998 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * objdump.c (disassemble_data): Skip over relocs below start
+ address.
+
+Tue Nov 10 15:31:52 1998 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.am: Add dependency of readelf.c on elf/fr30.h
+ * Makefile.in: Regenerate.
+
+Wed Nov 4 16:25:55 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Add support for the FR30.
+
+Mon Nov 2 14:59:33 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * configure.in: detect cygwin* instead of cygwin32*
+ * configure: regenerate
+
+Fri Oct 30 15:14:49 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * dllwrap.c: change all references to cygwin32_ to cygwin_,
+ change Cygwin target def to CYGWIN.
+
+Wed Oct 28 10:31:19 1998 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (disassemble_data): Replace 'unsigned long' with
+ 'bfd_vma'.
+
+Tue Oct 27 14:39:00 1998 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (disassemble_bytes): Applied this patch from Philip
+ Blundell <pb@nexus.co.uk>: Make address variables unsigned to
+ avoid problems when disassembling code at high-bit-set addresses.
+
+Mon Oct 26 14:07:59 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dllwrap.c (strhash): New function.
+ (main): Use it to supply image base if not supplied by user.
+ (program_version): Up to 0.2.4.
+
+Mon Oct 26 14:07:59 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c (add_stdcall_alias): New global.
+ (long_options): Add --add-stdcall-alias option.
+ (main): Handle it.
+ (scan_drectve_symbols): Add alias if --add-stdcall-alias is
+ specified.
+ (scan_filtered_symbols): Likewise.
+ (gen_def_file): Output alias for stdcall syms if appropriate.
+
+ * binutils.texi (dlltool): Document --add-stdcall-alias option.
+
+ * dllwrap.c (long_options): Add --add-stdcall-alias option.
+ (main): Handle it.
+
+ * defparse.y (opt_name): Allow "." in name.
+ * dlltool.c (def_name): Set dll_name from NAME entry in def file.
+ (def_library): Set dll_name from LIBRARY entry in def file.
+
+Mon Oct 26 14:07:59 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dllwrap.c (long_options): --implib synonym for --output-lib.
+ (main): Pass --export-all to dlltool only if specified.
+ (program_version): Up to 0.2.3.
+
+Mon Oct 26 14:07:59 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dllwrap.c (mybasename): New function.
+ (main): Run dlltool to create export definition file and import
+ library file if necessary.
+ Change exp_file_name so that it's based on the dll name.
+
+Sun Oct 25 10:37:45 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c (scan_all_symbols): Fix patch error.
+
+Fri Oct 16 22:56:20 1998 Felix Lee <flee@cygnus.com>
+
+ * nm.c (display_rel_file): fix "no symbols" messages.
+ * objdump.c (slurp_symtab): ditto.
+ * po/POTFILES.in, po/binutils.pot: rebuilt
+
+Mon Oct 12 14:28:03 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (dump_relocations): Rename field from Value to Info to
+ match name of field in ELF structures.
+
+Thu Oct 8 15:33:08 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * configure.in: call AC_EXEEXT instead of AM_EXEEXT and
+ AM_CYGWIN32.
+ * aclocal.m4: remove local AM_EXEEXT/AM_CYGWIN32 macros.
+ * configure: regenerate
+
+Thu Oct 8 15:33:08 1998 Geoffrey Noer <noer@cygnus.com>
+
+ From Mumit Khan <khan@xraylith.wisc.edu>:
+ * dlltool.c (scan_all_symbols): Don't re-export symbols exported
+ by other DLLs.
+
+Thu Oct 8 15:33:08 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * Makefile.am (BUILD_DLLWRAP): Add.
+ (BUILD_DLLWRAP, DLLWRAP_PROG): Add.
+ (bin_PROGRAMS): Add dllwrap.
+ * Makefile.in: regenerate with automake
+
+ From Mumit Khan <khan@xraylith.wisc.edu>:
+ * dllwrap.c: New file from dllhelpers v0.2.1.
+ (print_version): New function.
+ (long_options): Add --version.
+ (main): Handle.
+ * dyn-string.h, dyn-string.c: New files from egcs-1.1/gcc.
+ * configure.in (BUILD_DLLWRAP): Add.
+ * configure: Regenerate.
+
+Tue Oct 6 18:20:10 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * Makefile.am (windres_SOURCES): Add resres.c.
+ (windres_OBJECTS): Add resres.o.
+ * Makefile.in: regenerate with automake
+
+ From Anders Norlander <anorland@hem2.passagen.se>.
+ * resres.c: New file. Implementation of read_res_file and
+ write_res_file functions for windres.
+ * rcparse.y: Handle CONTROL's with named classes.
+ * resbin.c: Bug in res_to_bin_dialog and bin_to_res_dialog
+ when dialog is extended: The version and signature fields should
+ be reversed (despite what the docs say). Id is 32 bits long in
+ extended dialogs.
+ * resrc.c (write_rc_dialog): properly print controls with named
+ classes.
+ * windres.c (read_res_file, write_res_file): Remove stubs.
+ * resres.c (write_res): Rename RT_ACCELERATORS to RT_ACCELERATOR.
+
+Sun Oct 4 20:34:42 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From Nokubi Hirotaka <hnokubi@yyy.or.jp>:
+ * objcopy.1: Fix typo in --remove-leading-char docs.
+ * objdump.1: Fix formatting in --stabs docs.
+
+Sat Sep 19 23:33:56 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * rcparse.y (memflags_move): Correct recursion.
+
+1998-09-10 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_symbol_table): Print in histogram how many
+ symbols are covered by the current chain length.
+
+Sun Sep 6 16:15:47 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (process_section_contents): Do not try to dump empty
+ sections.
+
+Sat Sep 5 19:17:10 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c (scan_all_symbols): Don't re-export symbols exported
+ by other DLLs.
+
+1998-09-02 14:50 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_dynamic_segment): Print DT_* value only if
+ do_dynamic.
+ (do_histogram): New variable.
+ (options): New long option histogram. Set do_histogram if this
+ option is used.
+ (usage): Document --histogram.
+ (parse_args): Handle 0 return value from getopt_long. Enable
+ do_histogram for -a.
+ (process_symbol_table): Read hash table also if only do_histogram.
+ Add code to print hash table histogram.
+
+1998-08-25 16:45 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_dynamic_segment): Read syminfo section if
+ available.
+ (process_syminfo): New function. Print syminfo information.
+ (process_file): Call process_syminfo and free syminfo data at the end.
+
+Wed Aug 19 16:19:51 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (usage): Add file parameter. Change all callers.
+ (main): Don't treat '?' as a special case in getopt return.
+
+ * binutils.texi (dlltool): Document new options. Add some uses of
+ @var.
+
+Wed Aug 19 16:19:07 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c (gen_def_file): Plug memory leak. Don't print
+ demangled name if it is NULL.
+
+ Support for exporting all symbols to an output export def file:
+ * dlltool.c ({export_all_symbols, no_default_excludes,
+ no_default_excludes, excludes}): New file static variables.
+ (struct string_list): Type to hold list of symbols to exclude.
+ (scan_drectve_symbols): Renamed from scan_open_obj_file.
+ (scan_filtered_symbols): New static function.
+ (add_excludes): New static function.
+ (match_exclude): New static function.
+ (set_default_excludes): New static function.
+ (filter_symbols): New static function.
+ (scan_all_symbols): New static function.
+ (scan_open_obj_file): New static function.
+ (usage): Document new options.
+ (long_options): Add new options.
+ (main): Handle new options.
+
+1998-07-31 21:24 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_program_headers): Print p_offset value with
+ six hex digits.
+ (dynamic_segment_mips_val): Add support for DT_MIPS_FLAGS,
+ DT_MIPS_IVERSION, and DT_MIPS_TIME_STAMP.
+ (process_mips_specific): Also print seconds of time stamp.
+
+Fri Jul 31 10:04:23 1998 Catherine Moore <clm@cygnus.com>
+
+ * readelf.c (dump_relocations): EM_ARM uses rela relocs.
+
+1998-07-30 16:25 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (get_dynamic_type): Don't used gettext on the names.
+ Add new DT_* values from Solaris. Don't print nuemric value in
+ case of an unknown entry.
+ (process_dynamic_segment): Handle new DT_* entries. Print numeric
+ values in decimal, not hex.
+
+Fri Jul 24 16:28:57 1998 Jeff Holcomb <jeffh@cygnus.com>
+
+ * readelf.c (get_dynamic_type): Remove empty default from switch
+ statement.
+
+Fri Jul 24 16:28:12 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (install-exec-local): Don't remove the file before
+ checking whether $(bindir) == $(tooldir)/bin. From Maciej
+ W. Rozycki <macro@ds2.pg.gda.pl>.
+ * Makefile.in: Rebuild.
+
+Fri Jul 24 09:38:59 1998 Nick Clifton <nickc@cygnus.com>
+
+ * objcopy.c: Removed spurious inclusion of elf/internal.h and
+ elf-bfd.h.
+
+1998-07-22 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c: Consistantly use elf_ prefix for *_reloc_type
+ functions.
+
+Wed Jul 22 16:29:12 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (dump_relocations): Add dumps of HPPA and ARC
+ relocations.
+
+ (process_relocs): Do not abort if no string table can be found.
+
+1998-07-22 14:58 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c: Remove definition of functions to return relocation
+ symbol strings. They now get implicitly defined when include the
+ system specific ELF header.
+
+1998-07-22 13:51 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c: Before include system specific ELF header define
+ START_RELOC_NUMBERS, RELOC_NUMBER, and END_RELOC_NUMBERS. For now
+ used for ppc, mips, and mn10300.
+
+Wed Jul 22 10:26:32 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (dump_relocations): Display number of unrecognised
+ relocations.
+
+1998-07-21 13:13 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c: Use symbolic names of relocation entries for the various
+ architectures. Correct more layout details.
+ Print names of MIPS specific section types. Print Alpha, ARM, and
+ MIPS relocation type names.
+
+1998-07-20 Vladimir N. Makarov <vmakarov@cygnus.com>
+
+ * objcopy.c (filter_symbols): Add code for strip all symbols case.
+ (copy_objects): Strip all case is now processed also through
+ filter_symbols. No marking symbols used in relocations when strip
+ all symbols case.
+ (copy_section): When strip all symbols case, remove relocations
+ which are not in keep strip specific list.
+ (strip_main): Remove guard `strip_specific_list == NULL' for
+ setting up strip all symbols by default.
+
+Mon Jul 20 12:51:16 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * addr2line.c (find_address_in_section): Only consider a section
+ if the pc value is completely contained within it.
+ (translate_addresses): Don't crash if functionname or filename are
+ null.
+
+1998-07-20 07:45 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_symbol_table): Fix little alignment problem
+ in printed table header.
+
+1998-07-20 07:14 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c: Correct reading of .dynamic section.
+ (dynamic_section): Now a global variable.
+ (process_mips_fpe_exception, process_mips_specific,
+ process_arch_specific): New functions.
+ (get_file_header): Call process_arch_specific.
+
+1998-07-19 15:15 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c: Fix several versioning related bugs. Produce nicer
+ output.
+ Add support for processor specific information on MIPS.
+
+Fri Jul 10 15:57:58 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Switch prototypes from unsigned short to unsigned
+ int.
+
+Fri Jul 10 16:17:50 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From Christian Holland <CHolland@de.lucent.com>:
+ * ieee.c (parse_ieee): Initialize info.global_vars and
+ info.global_types.
+ (parse_ieee_atn): Ignore register lifetime information reportedly
+ emitted by MRI compiler.
+
+Thu Jul 9 13:08:01 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (MAINTAINERCLEANFILES): Define.
+ * Makefile.in: Rebuild.
+
+Tue Jul 7 21:48:54 1998 Jeffrey A Law (law@cygnus.com)
+
+ * readelf.c (byte_get): Use PARAMS in prototype.
+ (error): Make it work with non-ANSI compilers.
+ (warn): Likewise.
+ (get_ver_flags): Don't use an ANSI prototype in the definition.
+
+Tue Jul 7 13:26:13 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (filter_bytes): Set size correctly if the size of the
+ section is not an even multiple of the interleave. Based on patch
+ from Brion Stone <Brion.Stone@attws.com>.
+
+Thu Jul 2 14:01:34 1998 Klaus Kaempf <kkaempf@rmi.de>
+
+ * configure.com: Add vax/vms support.
+ * makefile.vms-in: Renamed from makefile.vms. Add substitutions
+ now done by configure.com.
+
+Wed Jul 1 20:43:52 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (parse_stab_range_type): Handle 4 and 8 byte signed
+ integers with real upper bounds. Handle a lower bound one larger
+ than the upper bound as a signed integer. Handle 8 byte signed
+ integers.
+ (stab_demangle_template): Optionally return the demangled name of
+ the template.
+ (stab_demangle_qualified): Treat a template name as a tagged
+ type.
+ (stab_demangle_fund_type): Likewise.
+
+Wed Jul 1 16:29:50 1998 Nick Clifton <nickc@cygnus.com>
+
+ * objcopy.c: Minor formatting improvements.
+ * readelf.c: Minor output formatting improvement.
+
+Wed Jul 1 14:23:48 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * rclex.l: Add casts and change types to avoid warnings.
+ * rcparse.y: Likewise.
+ * resbin.c: Likewise.
+ * rescoff.c: Likewise.
+ * resrc.c: Likewise.
+
+ * Makefile.am: Rebuild dependencies.
+ (HFILES): Remove readelf.h.
+ * Makefile.in: Rebuild.
+
+ Based on patches from Andrew Kozin
+ <Andrew.Kozin@p14.f960.n5020.z2.fidonet.org>:
+ * winduni.h: New file, from windres.h.
+ * winduni.c: New file, from windres.c.
+ * windres.c: Move Unicode functions into winduni.c.
+ * windres.h: Move Unicode declarations into winduni.h. Include
+ winduni.h.
+ (RT_ACCELERATOR): Rename from RT_ACCELERATORS to match Windows
+ macro. Change all uses.
+ (RT_PLUGPLAY, RT_VXD): Correct values.
+ * Makefile.am (HFILES): Add windres.h.
+ (CFILES): Add winduni.c.
+ (windres_SOURCES): Add winduni.c.
+
+Mon Jun 29 17:01:21 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Use BFD Internal and External Elf structures.
+ * readelf.h: Removed - no longer needed.
+ * Makefile.in: Remove readelf.c's dependency upon readelf.h.
+
+1998-06-26 Vladimir N. Makarov <vmakarov@cygnus.com>
+
+ * objcopy.c (strip_main): keep_specific_list == NULL as additional
+ condition to set up strip all symbols by default.
+ (copy_archive): don't change archive when error in object files of
+ the archive.
+
+Wed Jun 24 17:53:47 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (parse_number): Sign extend negative values correctly if
+ bfd_vma is larger than unsigned long.
+
+Tue Jun 23 14:55:05 1998 Mike Stump <mrs@wrs.com>
+
+ * Makefile.am (install-exec-local): Don't let EXEEXT interfere
+ with the program transform name.
+ * Makefile.in: Rebuild.
+
+Tue Jun 23 11:08:53 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Rewrite to use fopen/fread ratehr than mmap.
+
+ Add --section-headers command line switch, which is an alias for
+ --sections.
+
+ Incorporate improvemnts made by Andreas Schwab
+ <schwab@issan.informatik.uni-dortmund.de> including output
+ formatting and version info display.
+
+ * binutils.texi: Document --section-headers switch to readelf.
+
+Mon Jun 22 18:28:19 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * readelf.c: Include bfd.h and bucomm.h before system header
+ files.
+ (parse_args): Change type of c from char to int.
+
+Sun Jun 14 14:26:28 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (usage): Write to stdout, not stderr.
+
+Fri Jun 12 13:33:51 1998 Tom Tromey <tromey@cygnus.com>
+
+ * po/Make-in (all-yes): Depend on .pot file if maintainer mode
+ enabled.
+ ($(PACKAGE).pot): Unconditionally depend on POTFILES.
+
+Fri Jun 12 16:06:15 1998 Michael Meissner <meissner@cygnus.com>
+
+ * readelf.c (get_ppc_rel_type): New PowerPC support.
+ (dump_relocations): PowerPC uses RELA relocations.
+ (get_machine_name): Spell PowerPC correctly.
+ (get_file_type): Change unsigned short parameter to unsigned.
+ (get_machine_name): Ditto.
+ (get_machine_data): Return whether big endian or little endian.
+ (get_machine_flags): Interpret PowerPC, M32R, and MIPS flags.
+ (process_elf_header): Print endian-ess. Convert all numeric
+ formats to long or unsigned long. Print out machine specific flag
+ bits.
+ (process_section_headers): Increase name by 3 columns and decrease
+ type by the same so that .gcc_except_table fits in the space.
+
+ * readelf.h: Include elf/ppc.h, elf/mips.h, and elf/m32r.h to get
+ machine specific flag bits.
+
+Thu Jun 11 17:54:26 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Remove extraneous #includes. Fix warnings produced
+ by -Wall when compiling under Linux.
+
+ * Makefile.am (readelf_LDADD): Add $(LIBIBERTY).
+
+Thu Jun 11 18:30:20 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (struct stab_handle): Add self_crossref field.
+ (parse_stab_string): If a tag is a cross reference to itself,
+ don't define it in the tags list.
+ (parse_stab_type): Set info->self_crossref.
+
+ * debug.c (struct debug_type_real_list): Define.
+ (debug_get_real_type): Add list parameter. Change all callers.
+ Check for circularity to avoid crashing when it occurs.
+
+Thu Jun 11 14:48:32 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: New file: Display contents of ELF format file.
+ * readelf.h: New file: Header file for readelf.c
+ * Makefile.am: Add rules to build readelf.
+ * Makefile.in: Rebuilt.
+ * binutils.texi: Document readelf.
+ * NEWS: Mention inclusion of readelf into binutils.
+ * po/POTFILES.in; Rebuilt.
+
+Fri Jun 5 18:43:40 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (setup_section): Adjust the section size if copy_byte
+ is >= 0.
+ (copy_section): Do not call bfd_set_section_size.
+
+Thu Jun 4 09:12:27 1998 Nick Clifton <nickc@cygnus.com>
+
+ * objcopy.c (copy_usage): Add missing \n\ from help description.
+
+Wed Jun 3 19:31:33 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (YACC): Correct bison -L option.
+ * Makefile.in: Rebuild.
+
+ * binutils.texi, objdump.1: Document -p/--private-headers.
+
+Wed Jun 3 12:09:40 1998 Nick Clifton <nickc@cygnus.com>
+
+ * objcopy.c: Add new command line options: --change-section-lma
+ and --change-section-vma. Rename old command line option
+ --adjust-section-vma to --change-section-address. Rename
+ --adjust-vma to --change-addresses and --adjust-start to
+ --change-start. Provide aliases to support the old versions of
+ these command line options.
+
+ Change the names of macros and enum elements to upper case to
+ match the GNU coding standard.
+
+ Replace calls to fprintf (stderr,...) with calls to fatal () or
+ non_fatal () as appropriate.
+
+ * objcopy.1: Document command line option changes.
+ * binutils.texi: Document command line option changes.
+
+ * bucomm.h: New exported funtion from bucomm.c: non_fatal().
+ * bucomm.c (non_fatal): New exported function. Just like fatal()
+ except that it returns rather than calling xexit().
+
+ (bfd_check_format_matches): Call fatal() rather than bfd_fatal().
+
+ (check_matching_formats): Fix C formating.
+
+ (parse_vma): Call fatal().
+
+Mon Jun 1 18:26:40 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From Yuli Barcohen <yuli.barcohen@telrad.co.il>:
+ * debug.c (debug_type_samep): Avoid endless loops comparing
+ function and method parameter types.
+
+Fri May 22 14:02:42 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (dump_iat): Comment out; not used.
+ (display): Rename from tell. Change all callers.
+
+Thu May 14 14:00:56 1998 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c: Add support for Thumb DLLs. Add support for
+ interworking between ARM and Thumb programs and DLLs. Tidy the
+ code.
+
+ * binutils.texi: Document dlltool.
+
+ * configure: Build dlltool for thumb-pe targets.
+
+ * version.c (print_version): Include 1998 in copyright strings.
+
+ * stabs.c (parse_stab): Support Win32 style directory separators.
+
+Sun May 10 22:34:44 1998 Jeffrey A Law (law@cygnus.com)
+
+ * po/Make-in (install-info): New target.
+
+Fri May 8 10:33:13 1998 Nick Clifton <nickc@cygnus.com>
+
+ * ar.c (usage): Extend information provided about command line
+ options.
+
+Wed May 6 15:28:51 1998 Klaus Kaempf <kkaempf@progis.de>
+
+ * makefile.vms: Run dec c with /nodebug. Pass CC value when
+ calling make.
+
+Tue May 5 15:19:00 1998 Nick Clifton <nickc@cygnus.com>
+
+ * configure: Build dlltool for thumb-pe target.
+ * configure.in: Build dlltool for thumb-pe target.
+
+Sun May 3 22:04:49 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (EXTRA_PROGRAMS): Change $(SRCONV_PROG) to sysconf
+ sysdump coffdump to avoid extra $(EXEEXT).
+ * Makefile.in: Rebuild.
+
+Wed Apr 29 22:22:55 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * configure.in: Stop appending EXEEXT to the end of
+ SRCONV_PROG (wrong because that variable may contain multiple
+ programs)
+ * Makefile.am: instead, add EXEEXTs to each SRCONV_PROG
+ program
+ * Makefile.in: regenerate
+ * configure: regenerate
+
+Tue Apr 28 19:14:34 1998 Tom Tromey <tromey@cygnus.com>
+
+ * addr2line.c (main): Conditionally call setlocale.
+ * windres.c (main): Likewise.
+ * sysdump.c (main): Likewise.
+ * strings.c (main): Likewise.
+ * srconv.c (main): Likewise.
+ * size.c (main): Likewise.
+ * objdump.c (main): Likewise.
+ * objcopy.c (main): Likewise.
+ * nm.c (main): Likewise.
+ * nlmconv.c (main): Likewise.
+ * dlltool.c (main): Likewise.
+ * coffdump.c (main): Likewise.
+ * ar.c (main): Likewise.
+ * bucomm.h: Include <locale.h> if HAVE_LOCALE_H.
+ (LC_MESSAGES): Now can be defined even when ENABLE_NLS.
+
+Tue Apr 28 10:33:07 1998 Bill Moyer <ttk@cygnus.com>
+
+ Add support for IMPORTS:
+ * defparse.y (impline): Add IMPORTS syntaxes.
+ * dlltool.c (ifunctype, iheadtype): New typedefs.
+ (import_list): New static variable.
+ (append_import): New static function.
+ (def_import): Add an entry to import_list.
+ (generate_idata_ofile): New static function.
+ (gen_exp_file): Call generate_idata_ofile.
+ * dlltool.h (def_import): Update declaration.
+
+Mon Apr 27 16:39:22 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Change version number to 2.9.4
+ * configure: Rebuild.
+
+Wed Apr 22 16:00:35 1998 Tom Tromey <tromey@cygnus.com>
+
+ * po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).
+
+Wed Apr 22 00:33:56 1998 Tom Tromey <tromey@scribbles.cygnus.com>
+
+ * Makefile.am (INCLUDES): Search intl dirs for headers; define
+ LOCALEDIR.
+ * addr2line.c (main): Call setlocale, bindtextdomain, textdomain.
+ * ar.c (main): Likewise.
+ * coffdump.c (main): Likewise.
+ * dlltool.c (main): Likewise.
+ * nlmconv.c (main): Likewise.
+ * nm.c (main): Likewise.
+ * objcopy.c (main): Likewise.
+ * objdump.c (main): Likewise.
+ * size.c (main): Likewise.
+ * srconv.c (main): Likewise.
+ * strings.c (main): Likewise.
+ * sysdump.c (main): Likewise.
+ * windres.c (main): Likewise.
+
+Tue Apr 21 22:13:08 1998 Tom Tromey <tromey@scribbles.cygnus.com>
+
+ * Many files: Added gettext invocations around user-visible
+ strings.
+ * bucomm.h: Added gettext-related includes and defines.
+ * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY,
+ HAVE_LC_MESSAGES): Define.
+ * configure.in: Call CY_GNU_GETTEXT. Create po/Makefile.in and
+ po/Makefile. Use AM_PROG_LEX.
+ * Makefile.am (SUBDIRS): New macro.
+ (POTFILES): Likewise.
+ (po/POTFILES.in): New target.
+ (LDADD): Added INTLLIBS.
+ (objdump_LDADD): Likewise.
+ (c__filt_LDADD): Likewise.
+ (ar_LDADD): Likewise.
+ (ranlib_LDADD): Likewise.
+ (dlltool_LDADD): Likewise.
+ (windres_LDADD): Likewise.
+ * po/Make-in, po/POTFILES.in, po/binutils.pot: New files.
+
+Tue Apr 21 16:07:18 1998 Stanislav Brabec <utx@k332.feld.cvut.cz>
+
+ * objcopy.c (preserve_dates): New file static variable.
+ (smart_rename): If preserve_dates, call set_times when copying.
+ (strip_main): Remove preserve_dates local variable.
+ (copy_main): Likewise.
+
+Tue Apr 7 15:41:15 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (DISTSTUFF): Add defparse.h, defparse.c, rclex.c,
+ rcparse.h, and rcparse.c
+ * Makefile.in: Rebuild.
+
+Mon Apr 6 16:24:35 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (PROGS): Move $(ADDR2LINE_PROG) to end, so that
+ Makefile.in doesn't have an empty continuation line.
+ (bin_PROGRAMS): Likewise.
+ * Makefile.in: Rebuild.
+
+Fri Apr 3 14:48:42 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (DISTCLEANFILES): Add site.exp and site.bak.
+ (MOSTLYCLEANFILES): Add binutils.log, binutils.sum, and abcdefgh*.
+ (mostlyclean-local): New target.
+ * Makefile.in: Rebuild.
+
+Wed Apr 1 15:54:16 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From Zack Weinberg <zack@rabi.phys.columbia.edu> and H.J. Lu
+ <hjl@gnu.org>:
+ * ar.c (usage): Mention S modifier.
+ (main): Add S modifier.
+ * ar.1, binutils.texi: Document S modifier.
+
+Wed Apr 1 13:11:23 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * binutils.texi: Use @itemx for a secondary item in a table.
+
+Tue Mar 31 18:44:13 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * dep-in.sed: Add rule to remove @OBJDIR@.
+ * Makefile.am (dep.sed): Substitute for @OBJDIR@.
+ * Makefile.in: Rebuild.
+
+Mon Mar 30 12:47:18 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Set version to 2.9.1.
+ * configure: Rebuild.
+
+ * Branched binutils 2.9.
+
+ * Makefile.am (DISTCLEANFILES): Remove defparse.h, arparse.h,
+ rcparse.h, and nlmheader.h.
+ * Makefile.in: Rebuild.
+
+Sat Mar 28 17:39:27 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (MOSTLYCLEANFILES): Define.
+ * Makefile.in: Rebuild.
+
+ Fix some gcc -Wall warnings:
+ * nlmconv.c (main): Add casts to avoid warnings.
+ (alpha_mangle_relocs): Likewise.
+ * objdump.c (dump_section_stabs): Likewise.
+ * size.c (print_sysv_format): Likewise.
+ * srcconv.c (wr_ob): Likewise.
+ * wrstabs.c (stab_modify_type): Likewise.
+ (stab_variable): Likewise.
+ * nlmconv.c (main): Initialize variables to avoid warnings.
+ * nm.c (sort_symbols_by_size): Likewise.
+ * objdump.c (disassemble_bytes): Likewise.
+ * wrstabs.c (stab_end_class_type): Likewise.
+ * coffgrok.c (do_sections_p2): Change j to unsigned int.
+ (do_lines): Change l to unsigned int.
+ * nlmheader.y (yylex): Change i to unsigned int.
+ * nm.c (print_symbol): Change j to long.
+ * size.c (lprint_number): Comment out.
+ * srconv.c (wr_ob): Change i to bfd_size_type.
+ * sysdump.c (unit_info_list): Comment out.
+ (object_body_list, program_structure, debug_list): Likewise.
+ * sysinfo.y (yyerror): Return value.
+
+Thu Mar 26 17:06:51 1998 Richard Henderson <rth@cygnus.com>
+
+ * defparse.y (explist): Allow epsilon.
+ Suggestion from Jonathan-Harris@psion.com.
+
+Thu Mar 26 16:59:09 1998 Richard Henderson <rth@cygnus.com>
+
+ * coffgrok.c (do_sections_p1): Use the section's lma instead of vma
+ for the benefit of prom loaders.
+
+Wed Mar 25 13:05:39 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patch from H.J. Lu <hjl@gnu.org>:
+ * Makefile.am (DISTSTUFF): New variable.
+ (diststuff): New target.
+ (DISTCLEANFILES): New variable.
+ * Makefile.in: Rebuild.
+
+Tue Mar 24 19:33:08 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * rclex.l: Accept { and } as synonyms for BEGIN and END.
+
+Fri Mar 20 19:18:08 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * aclocal.m4, configure: Rebuild with libtool 1.2.
+
+Tue Feb 24 13:07:50 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * objdump.c (disassemble_data): Delete "++place" after call to
+ find_symbol_for_address. Set disasm_info.symbols to array of
+ symbols at the current address.
+
+Wed Feb 18 23:39:46 1998 Richard Henderson <rth@cygnus.com>
+
+ * Makefile.am (install-exec-local): Install properly when ln
+ fails or tooldir == prefix.
+
+Tue Feb 17 18:40:55 1998 Richard Henderson <rth@cygnus.com>
+
+ * objcopy.c (compare_section_lma): Rename from _vma.
+ (copy_object): Gap fill based on LMA not VMA.
+ * binutils.texi: Update and clarify.
+ * objcopy.1: Likewise.
+
+Tue Feb 17 20:34:11 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (gen_exp_file): Generate _imp__%s as well as __imp_%s,
+ for Microsoft compatibility.
+ (make_one_lib_file): Likewise.
+
+ * dlltool.c (make_one_lib_file): Don't add 1 to hint.
+
+Fri Feb 13 16:37:44 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Define.
+ * configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.
+
+Thu Feb 12 14:13:46 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * deflex.l: Accept '?' in symbol names, for VC++ mangled names.
+ From Mikey <jeffdb@netzone.com>.
+
+ * addr2line.c (usage): Update bug-gnu-utils address.
+ * ar.c (usage): Likewise.
+ * nlmconv.c (show_usage): Likewise.
+ * nm.c (usage): Likewise.
+ * objcopy.c (copy_usage): Likewise.
+ (strip_usage): Likewise.
+ * objdump.c (usage): Likewise.
+ * size.c (usage): Likewise.
+ * strings.c (usage): Likewise.
+ * windres.c (usage): Likewise.
+ * binutils.texi (Bug Reporting): Likewise.
+
+Sat Feb 7 15:36:24 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure, aclocal.m4: Rebuild with new libtool.
+
+Thu Feb 5 12:21:13 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure, Makefile.in, aclocal.m4: Rebuild with new libtool.
+
+Fri Jan 30 19:16:28 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * Makefile.am (CC_FOR_TARGET,nlmcomv.o): Change program_transform_name
+ to transform.
+ * Makefile.in: Regenerate.
+
+Thu Jan 29 16:24:04 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c: Define exit status macros for _WIN32 but not
+ __CYGWIN32__.
+ (gen_lib_file): Check for exit status of unlink.
+ * resrc.c: Define popen and pclose if _WIN32 but not
+ __CYGWIN32__.
+
+Wed Jan 28 17:45:46 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Remove vfork check.
+ * nlmconv.c: Never include vfork.h.
+ * aclocal.m4, configure, Makefile.in, config.in: Rebuild.
+
+Wed Jan 28 17:43:02 1998 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>
+
+ * objcopy.c (copy_archive): Only pass one argument to mkdir if
+ _WIN32 but not __CYGWIN32__.
+ (smart_rename): Add code for _WIN32 (not __CYGWIN32__), to cope
+ with different rename behaviour and lack of chown.
+
+ * configure.in: Check for mingw32 when deciding whether to build
+ dlltool.
+ * dlltool.c: Never include vfork.h.
+ (run): Use pexecute rather than vfork.
+ (gen_lib_file): Check for errors from bfd_set_archive_head and
+ bfd_close. Close all the BFDs in the archive before deleting the
+ temporary files.
+
+Thu Jan 22 16:22:55 1998 Fred Fish <fnf@cygnus.com>
+
+ * objdump.c (disassemble_bytes): Add flag INSN_HAS_RELOC to tell
+ disassembly function there is a reloc on this line.
+
+Wed Jan 14 15:29:43 1998 Richard Henderson <rth@cygnus.com>
+
+ * srconv.c (sh, h8300): Delete variables.
+ (addrsize, toolname, rnames): New variables.
+ (writeINT): Use addrsize.
+ (wr_un): Use toolname.
+ (wr_hd): Set up addrsize et al properly for h8300[hs].
+ (walk_tree_symbol): Zero dsy. Use rnames.
+ (wr_un, wr_hd, wr_ob, wr_du): Use proper bfd access macros.
+ * sysdump.c (sh, h8300): Delete variables.
+ (addrsize): New variable.
+ (getINT): Use it.
+ (getone): Initialize it.
+ (getBITS): Range check on MAX.
+
+For older changes see ChangeLog-9197
+
+Copyright (C) 1998-1999 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/MAINTAINERS b/binutils-2.24/binutils/MAINTAINERS
new file mode 100644
index 00000000..3ea36851
--- /dev/null
+++ b/binutils-2.24/binutils/MAINTAINERS
@@ -0,0 +1,284 @@
+ ========= Binutils Maintainers =========
+
+This is the list of individuals responsible for maintenance and update
+of the GNU Binary Utilities project. This includes the linker (ld),
+the assembler (gas), the profiler (gprof), a whole suite of other
+programs (binutils) and the libraries that they use (bfd and
+opcodes). This project shares a common set of header files with the
+GCC and GDB projects (include), so maintainership of those files is
+shared amoungst the projects.
+
+The home page for binutils is:
+
+ http://www.gnu.org/software/binutils/binutils.html
+
+and patches should be sent to:
+
+ binutils@sourceware.org
+
+with "[Patch]" as part of the subject line. Note - patches to the
+top level config.guess and config.sub scripts should be sent to:
+
+ config-patches@gnu.org
+
+and not to the binutils lists. Patches to the other top level
+configure files (configure, configure.in, config-ml.in) should
+be sent to the binutils lists, and copied to the gcc and gdb
+lists as well (gcc-patches@gcc.gnu.org and
+gdb-patches@sourceware.org).
+
+ --------- Blanket Write Privs ---------
+
+The following people have permission to check patches into the
+repository without obtaining approval first:
+
+ Nick Clifton <nickc@redhat.com> (head maintainer)
+ Richard Henderson <rth@redhat.com>
+ Ian Lance Taylor <ian@airs.com>
+ Jeff Law <law@redhat.com>
+ Jim Wilson <wilson@tuliptree.org>
+ DJ Delorie <dj@redhat.com>
+ Alan Modra <amodra@gmail.com>
+ Michael Meissner <gnu@the-meissners.org>
+ Daniel Jacobowitz <drow@false.org>
+ Richard Sandiford <rdsandiford@googlemail.com>
+
+ --------- Maintainers ---------
+
+Maintainers are individuals who are responsible for, and have
+permission to check in changes in, certain subsets of the code. Note
+that maintainers still need approval to check in changes outside of
+the immediate domain that they maintain.
+
+If there is no maintainer for a given domain then the responsibility
+falls to the head maintainer (above). If there are several
+maintainers for a given domain then responsibility falls to the first
+maintainer. The first maintainer is free to devolve that
+responsibility among the other maintainers.
+
+ ALPHA Richard Henderson <rth@redhat.com>
+ AARCH64 Richard Earnshaw <rearnsha@arm.com>
+ AARCH64 Marcus Shawcroft <marcus.shawcroft@arm.com>
+ ARM Nick Clifton <nickc@redhat.com>
+ ARM Richard Earnshaw <rearnsha@arm.com>
+ ARM Paul Brook <paul@codesourcery.com>
+ ARM (Symbian) Mark Mitchell <mark@codesourcery.com>
+ AVR Denis Chertykov <denisc@overta.ru>
+ AVR Marek Michalkiewicz <marekm@amelek.gda.pl>
+ BFIN Jie Zhang <jzhang918@gmail.com>
+ BFIN Bernd Schmidt <bernd.schmidt@analog.com>
+ BFIN Mike Frysinger <michael.frysinger@analog.com>
+ BUILD SYSTEM Daniel Jacobowitz <drow@false.org>
+ CR16 M R Swami Reddy <MR.Swami.Reddy@nsc.com>
+ CRIS Hans-Peter Nilsson <hp@axis.com>
+ CRX M R Swami Reddy <MR.Swami.Reddy@nsc.com>
+ DLX Nikolaos Kavvadias <nkavv@physics.auth.gr>
+ DWARF2 Jason Merrill <jason@redhat.com>
+ DWARF2 Jakub Jelinek <jakub@redhat.com>
+ EPIPHANY Joern Rennecke <joern.rennecke@embecosm.com>
+ FR30 Dave Brolley <brolley@redhat.com>
+ FRV Dave Brolley <brolley@redhat.com>
+ FRV Alexandre Oliva <aoliva@redhat.com>
+ GOLD Ian Lance Taylor <iant@google.com>
+ GOLD Cary Coutant <ccoutant@google.com>
+ H8300 Prafulla Thakare <prafulla.thakare@kpitcummins.com>
+ HPPA Dave Anglin <dave.anglin@nrc.ca>
+ HPPA elf32 Alan Modra <amodra@gmail.com>
+ HPPA elf64 Jeff Law <law@redhat.com> [Basic maintainance only]
+ IA-64 Jim Wilson <wilson@tuliptree.org>
+ IQ2000 Stan Cox <scox@redhat.com>
+ i860 Jason Eckhardt <jle@rice.edu>
+ ix86 H.J. Lu <hjl.tools@gmail.com>
+ ix86 PE Christopher Faylor <me+binutils@cgf.cx>
+ ix86 COFF DJ Delorie <dj@redhat.com>
+ ix86 PE/COFF Dave Korn <dave.korn.cygwin@gmail.com>
+ ix86 INTEL MODE Jan Beulich <jbeulich@novell.com>
+ LM32 Jon Beniston <jon@beniston.com>
+ M32R Doug Evans <dje@sebabeach.org>
+ M68HC11 M68HC12 Stephane Carrez <Stephane.Carrez@gmail.com>
+ M68HC11 M68HC12 Sean Keys <skeys@ipdatasys.com>
+ M88k Mark Kettenis <kettenis@gnu.org>
+ MACH-O Tristan Gingold <gingold@adacore.com>
+ MAXQ Inderpreet Singh <inderpreetb@noida.hcltech.com>
+ MEP Dave Brolley <brolley@redhat.com>
+ METAG Markos Chandras <markos.chandras@imgtec.com>
+ MICROBLAZE Michael Eager <eager@eagercon.com>
+ MIPS Eric Christopher <echristo@apple.com>
+ MMIX Hans-Peter Nilsson <hp@bitrange.com>
+ MN10300 Eric Christopher <echristo@apple.com>
+ MN10300 Alexandre Oliva <aoliva@redhat.com>
+ Moxie Anthony Green <green@moxielogic.com>
+ MSP430 Dmitry Diky <diwil@spec.ru>
+ NetBSD support Matt Thomas <matt@netbsd.org>
+ Nios II Sandra Loosemore <sandra@codesourcery.com>
+ Nios II Andrew Jenner <andrew@codesourcery.com>
+ PPC Geoff Keating <geoffk@geoffk.org>
+ PPC Alan Modra <amodra@gmail.com>
+ PPC vector ext Aldy Hernandez <aldyh@redhat.com>
+ RL78 DJ Delorie <dj@redhat.com>
+ RX DJ Delorie <dj@redhat.com>
+ RX Nick Clifton <nickc@redhat.com>
+ s390, s390x Martin Schwidefsky <schwidefsky@de.ibm.com>
+ SCORE Mei Ligang <ligang@sunnorth.com.cn>
+ SH Alexandre Oliva <aoliva@redhat.com>
+ SH Kaz Kojima <kkojima@rr.iij4u.or.jp>
+ SPARC David S. Miller <davem@davemloft.net>
+ SPU Alan Modra <amodra@gmail.com>
+ TIC4X Svein Seldal <svein@dev.seldal.com>
+ TIC54X Timothy Wall <twall@alum.mit.edu>
+ TIC6X Joseph Myers <joseph@codesourcery.com>
+ TILE-Gx Walter Lee <walt@tilera.com>
+ TILEPro Walter Lee <walt@tilera.com>
+ VAX Matt Thomas <matt@netbsd.org>
+ VAX Jan-Benedict Glaw <jbglaw@lug-owl.de>
+ VMS Tristan Gingold <gingold@adacore.com>
+ x86_64 Jan Hubicka <jh@suse.cz>
+ x86_64 Andreas Jaeger <aj@suse.de>
+ x86_64 H.J. Lu <hjl.tools@gmail.com>
+ XCOFF Richard Sandiford <r.sandiford@uk.ibm.com>
+ XGATE Sean Keys <skeys@ipdatasys.com>
+ Xtensa Sterling Augustine <augustine.sterling@gmail.com>
+ z80 Arnold Metselaar <arnold.metselaar@planet.nl>
+ z8k Christian Groessler <chris@groessler.org>
+
+
+ --------- CGEN Maintainers -------------
+
+CGEN is a tool for building, amongst other things, assemblers,
+disassemblers and simulators from a single description of a CPU.
+It creates files in several of the binutils directories, but it
+is mentioned here since there is a single group that maintains
+CGEN and the files that it creates.
+
+If you have CGEN related problems you can send email to;
+
+ cgen@sourceware.org
+
+The current CGEN maintainers are:
+
+ Doug Evans, Frank Eigler
+
+ --------- Write After Approval ---------
+
+Individuals with "write after approval" have the ability to check in
+changes, but they must get approval for each change from someone in
+one of the above lists (blanket write or maintainers).
+
+[It's a huge list, folks. You know who you are. If you have the
+ *ability* to do binutils checkins, you're in this group. Just
+ remember to get approval before checking anything in.]
+
+ ------------- Obvious Fixes -------------
+
+Fixes for obvious mistakes do not need approval, and can be checked in
+right away, but the patch should still be sent to the binutils list.
+The definition of obvious is a bit hazy, and if you are not sure, then
+you should seek approval first. Obvious fixes include fixes for
+spelling mistakes, blatantly incorrect code (where the correct code is
+also blatantly obvious), and so on. Obvious fixes should always be
+small, the larger they are, the more likely it is that they contain
+some un-obvious side effect or consequence.
+
+ --------- Branch Checkins ---------
+
+If a patch is approved for check in to the mainline sources, it can
+also be checked into the current release branch. Normally however
+only bug fixes should be applied to the branch. New features, new
+ports, etc, should be restricted to the mainline. (Otherwise the
+burden of maintaining the branch in sync with the mainline becomes too
+great). If you are uncertain as to whether a patch is appropriate for
+the branch, ask the branch maintainer. This is:
+
+ Tristan Gingold <gingold@adacore.com>
+
+ -------- Testsuites ---------------
+
+In general patches to any of the binutils testsuites should be
+considered generic and sent to the binutils mailing list for
+approval. Patches to target specific tests are the responsibility the
+relevent port maintainer(s), and can be approved/checked in by them.
+Other testsuite patches need the approval of a blanket-write-priveleges
+person.
+
+ -------- Configure patches ----------
+
+Patches to the top level configure files (config.sub & config.guess)
+are not the domain of the binutils project and they cannot be approved
+by the binutils group. Instead they should be submitted to the config
+maintainer at:
+
+ config-patches@gnu.org
+
+ --------- Creating Branches ---------
+
+Anyone with at least write-after-approval access may create a branch
+to use for their own development purposes. In keeping with FSF
+policies, all patches applied to such a branch must come from people
+with appropriate copyright assignments on file. All legal
+requirements that would apply to any other contribution apply equally
+to contributions on a branch.
+
+Before creating the branch, you should select a name for the branch of
+the form:
+
+ binutils-<org>-<name>
+
+where "org" is the initials of your organization, or your own initials
+if you are acting as an individual. For example, for a branch created
+by The GNUDist Company, "tgc" would be an appropriate choice for
+"org". It's up to each organization to select an appropriate choice
+for "name"; some organizations may use more structure than others, so
+"name" may contain additional hyphens.
+
+Suppose that The GNUDist Company was creating a branch to develop a
+port of Binutils to the FullMonty processor. Then, an appropriate
+choice of branch name would be:
+
+ binutils-tgc-fm
+
+A date stamp is not required as part of the name field, but some
+organizations like to have one. If you do include the date, you
+should follow these rules:
+
+1. The date should be the date that the branch was created.
+
+2. The date should be numerical and in the form YYYYMMDD.
+
+For example:
+
+ binutils-tgc-fm_20050101
+
+would be appropriate if the branch was created on January 1st, 2005.
+
+Having selected the branch name, create the branch as follows:
+
+1. Check out binutils, so that you have a CVS checkout corresponding
+ to the initial state of your branch.
+
+2. Create a tag:
+
+ cvs tag binutils-<org>-<name>-branchpoint
+
+ That tag will allow you, and others, to easily determine what's
+ changed on the branch relative to the initial state.
+
+3. Create the branch:
+
+ cvs rtag -b -r binutils-<org>-<name>-branchpoint \
+ binutils-<org>-<name>-branch
+
+4. Document the branch:
+
+ Add a description of the branch to binutils/BRANCHES, and check
+ that file in. All branch descriptions should be added to the
+ HEAD revision of the file; it doesn't help to modify
+ binutils/BRANCHES on a branch!
+
+Please do not commit any patches to a branch you did not create
+without the explicit permission of the person who created the branch.
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/binutils-2.24/binutils/Makefile.am b/binutils-2.24/binutils/Makefile.am
new file mode 100644
index 00000000..e2f86305
--- /dev/null
+++ b/binutils-2.24/binutils/Makefile.am
@@ -0,0 +1,547 @@
+## Process this file with automake to generate Makefile.in
+#
+# Copyright 2012 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 3 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; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+#
+
+AUTOMAKE_OPTIONS = dejagnu no-dist foreign
+ACLOCAL_AMFLAGS = -I .. -I ../config -I ../bfd
+
+SUBDIRS = doc po
+
+tooldir = $(exec_prefix)/$(target_alias)
+
+## These aren't set by automake, because they appear in
+## bfd/acinclude.m4, which is included by binutils/acinclude.m4, and
+## thus is not seen by automake.
+CC_FOR_BUILD = @CC_FOR_BUILD@
+EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
+
+YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bison/; else echo @YACC@; fi`
+YFLAGS = -d
+LEX = `if [ -f ../flex/flex ]; then echo ../flex/flex; else echo @LEX@; fi`
+LEXLIB = @LEXLIB@
+
+# Automake 1.10+ disables lex and yacc output file regeneration if
+# maintainer mode is disabled. Avoid this.
+am__skiplex =
+am__skipyacc =
+
+WARN_CFLAGS = @WARN_CFLAGS@
+NO_WERROR = @NO_WERROR@
+AM_CFLAGS = $(WARN_CFLAGS)
+LIBICONV = @LIBICONV@
+
+# these two are almost the same program
+AR_PROG=ar
+RANLIB_PROG=ranlib
+
+# objcopy and strip should be the same program
+OBJCOPY_PROG=objcopy
+STRIP_PROG=strip-new
+
+STRINGS_PROG=strings
+
+READELF_PROG=readelf
+
+ELFEDIT_PROG=elfedit
+
+# These should all be the same program too.
+SIZE_PROG=size
+NM_PROG=nm-new
+OBJDUMP_PROG=objdump
+
+# This is the demangler, as a standalone program.
+# Note: This one is used as the installed name too, unlike the above.
+DEMANGLER_PROG=cxxfilt
+
+ADDR2LINE_PROG=addr2line
+
+NLMCONV_PROG=nlmconv
+DLLTOOL_PROG=dlltool
+WINDRES_PROG=windres
+WINDMC_PROG=windmc
+DLLWRAP_PROG=dllwrap
+
+SRCONV_PROG=srconv$(EXEEXT) sysdump$(EXEEXT) coffdump$(EXEEXT)
+
+bin_PROGRAMS = $(SIZE_PROG) $(OBJDUMP_PROG) $(AR_PROG) $(STRINGS_PROG) $(RANLIB_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ @BUILD_WINDMC@ $(ADDR2LINE_PROG) $(READELF_PROG) $(ELFEDIT_PROG) @BUILD_DLLWRAP@
+
+bin_SCRIPTS = @BUILD_INSTALL_MISC@
+EXTRA_SCRIPTS = embedspu
+
+## Test programs.
+BFDTEST1_PROG = bfdtest1
+BFDTEST2_PROG = bfdtest2
+
+TEST_PROGS = $(BFDTEST1_PROG) $(BFDTEST2_PROG)
+
+## We need a special rule to install the programs which are built with
+## -new, and to rename cxxfilt to c++filt.
+RENAMED_PROGS = $(NM_PROG) $(STRIP_PROG) $(DEMANGLER_PROG)
+noinst_PROGRAMS = $(RENAMED_PROGS) $(TEST_PROGS) @BUILD_MISC@
+
+EXTRA_PROGRAMS = $(NLMCONV_PROG) srconv sysdump coffdump $(DLLTOOL_PROG) $(WINDRES_PROG) $(WINDMC_PROG) $(DLLWRAP_PROG)
+
+# Stuff that goes in tooldir/ if appropriate.
+TOOL_PROGS = nm-new strip-new ar ranlib dlltool objdump objcopy
+
+BASEDIR = $(srcdir)/..
+BFDDIR = $(BASEDIR)/bfd
+INCDIR = $(BASEDIR)/include
+
+AM_CPPFLAGS = -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) \
+ @HDEFINES@ \
+ @INCINTL@ \
+ -DLOCALEDIR="\"$(datadir)/locale\"" \
+ -Dbin_dummy_emulation=$(EMULATION_VECTOR)
+
+HFILES = \
+ arsup.h binemul.h bucomm.h budbg.h \
+ coffgrok.h debug.h dlltool.h dwarf.h elfcomm.h nlmconv.h \
+ objdump.h sysdep.h unwind-ia64.h windres.h winduni.h windint.h \
+ windmc.h
+
+GENERATED_HFILES = arparse.h sysroff.h sysinfo.h defparse.h rcparse.h mcparse.h
+BUILT_SOURCES = $(GENERATED_HFILES)
+
+CFILES = \
+ addr2line.c ar.c arsup.c bin2c.c binemul.c bucomm.c \
+ coffdump.c coffgrok.c cxxfilt.c \
+ dwarf.c debug.c dlltool.c dllwrap.c \
+ elfcomm.c emul_aix.c emul_vanilla.c filemode.c \
+ ieee.c is-ranlib.c is-strip.c maybe-ranlib.c maybe-strip.c \
+ nlmconv.c nm.c not-ranlib.c not-strip.c \
+ objcopy.c objdump.c prdbg.c \
+ od-xcoff.c od-macho.c \
+ rclex.c rdcoff.c rddbg.c readelf.c rename.c \
+ resbin.c rescoff.c resrc.c resres.c \
+ size.c srconv.c stabs.c strings.c sysdump.c \
+ syslex_wrap.c unwind-ia64.c elfedit.c version.c \
+ windres.c winduni.c wrstabs.c \
+ windmc.c mclex.c
+
+GENERATED_CFILES = \
+ arparse.c arlex.c sysroff.c sysinfo.c syslex.c \
+ defparse.c deflex.c nlmheader.c rcparse.c mcparse.c
+
+DEBUG_SRCS = rddbg.c debug.c stabs.c ieee.c rdcoff.c
+WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c
+
+# Extra object files for objdump
+OBJDUMP_PRIVATE_OFILES = @OBJDUMP_PRIVATE_OFILES@
+
+# Code shared by all the binutils.
+BULIBS = bucomm.c version.c filemode.c
+
+# Code shared by the ELF related programs.
+ELFLIBS = elfcomm.c
+
+BFDLIB = ../bfd/libbfd.la
+
+OPCODES = ../opcodes/libopcodes.la
+
+LIBIBERTY = ../libiberty/libiberty.a
+
+POTFILES = $(CFILES) $(DEBUG_SRCS) $(HFILES)
+po/POTFILES.in: @MAINT@ Makefile
+ for f in $(POTFILES); do echo $$f; done | LC_ALL=C sort > tmp \
+ && mv tmp $(srcdir)/po/POTFILES.in
+
+EXPECT = expect
+RUNTEST = runtest
+
+CC_FOR_TARGET = ` \
+ if [ -f $$r/../gcc/xgcc ] ; then \
+ if [ -f $$r/../newlib/Makefile ] ; then \
+ echo $$r/../gcc/xgcc -B$$r/../gcc/ -idirafter $$r/../newlib/targ-include -idirafter $${srcroot}/../newlib/libc/include -nostdinc; \
+ else \
+ echo $$r/../gcc/xgcc -B$$r/../gcc/; \
+ fi; \
+ else \
+ if [ "@host@" = "@target@" ] ; then \
+ echo $(CC); \
+ else \
+ echo gcc | sed '$(transform)'; \
+ fi; \
+ fi`
+
+check-DEJAGNU: site.exp
+ srcdir=`cd $(srcdir) && pwd`; export srcdir; \
+ r=`pwd`; export r; \
+ LC_ALL=C; export LC_ALL; \
+ EXPECT=$(EXPECT); export EXPECT; \
+ runtest=$(RUNTEST); \
+ if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+ CC_FOR_TARGET="$(CC_FOR_TARGET)" CFLAGS_FOR_TARGET="$(CFLAGS)" \
+ $$runtest --tool $(DEJATOOL) --srcdir $${srcdir}/testsuite \
+ $(RUNTESTFLAGS); \
+ else echo "WARNING: could not find \`runtest'" 1>&2; :;\
+ fi
+
+installcheck-local:
+ /bin/sh $(srcdir)/sanity.sh $(bindir)
+
+# There's no global DEPENDENCIES. So, we must explicitly list everything
+# which depends on libintl, since we don't know whether LIBINTL_DEP will be
+# non-empty until configure time. Ugh!
+size_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+objdump_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB) $(OPCODES) $(OBJDUMP_PRIVATE_OFILES)
+nm_new_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+ar_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+strings_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+strip_new_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+ranlib_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+cxxfilt_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+objcopy_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+nlmconv_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+srconv_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+sysdump_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+coffdump_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+dlltool_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+windres_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+windmc_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+addr2line_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+readelf_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY)
+elfedit_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY)
+dllwrap_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY)
+bfdtest1_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+bfdtest2_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+
+LDADD = $(BFDLIB) $(LIBIBERTY) $(LIBINTL)
+
+size_SOURCES = size.c $(BULIBS)
+
+objcopy_SOURCES = objcopy.c not-strip.c rename.c $(WRITE_DEBUG_SRCS) $(BULIBS)
+
+strings_SOURCES = strings.c $(BULIBS)
+
+readelf_SOURCES = readelf.c version.c unwind-ia64.c dwarf.c $(ELFLIBS)
+readelf_LDADD = $(LIBINTL) $(LIBIBERTY)
+
+elfedit_SOURCES = elfedit.c version.c $(ELFLIBS)
+elfedit_LDADD = $(LIBINTL) $(LIBIBERTY)
+
+strip_new_SOURCES = objcopy.c is-strip.c rename.c $(WRITE_DEBUG_SRCS) $(BULIBS)
+
+nm_new_SOURCES = nm.c $(BULIBS)
+
+objdump_SOURCES = objdump.c dwarf.c prdbg.c $(DEBUG_SRCS) $(BULIBS) $(ELFLIBS)
+EXTRA_objdump_SOURCES = od-xcoff.c
+objdump_LDADD = $(OBJDUMP_PRIVATE_OFILES) $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL)
+
+objdump.@OBJEXT@:objdump.c
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(OBJDUMP_DEFS) $(srcdir)/objdump.c
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='objdump.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c $(OBJDUMP_DEFS) $(srcdir)/objdump.c
+endif
+
+cxxfilt_SOURCES = cxxfilt.c $(BULIBS)
+
+ar_SOURCES = arparse.y arlex.l ar.c not-ranlib.c arsup.c rename.c binemul.c \
+ emul_$(EMULATION).c $(BULIBS)
+EXTRA_ar_SOURCES = $(CFILES)
+ar_LDADD = $(BFDLIB) $(LIBIBERTY) $(LEXLIB) $(LIBINTL)
+
+ranlib_SOURCES = ar.c is-ranlib.c arparse.y arlex.l arsup.c rename.c \
+ binemul.c emul_$(EMULATION).c $(BULIBS)
+ranlib_LDADD = $(BFDLIB) $(LIBIBERTY) $(LEXLIB) $(LIBINTL)
+
+addr2line_SOURCES = addr2line.c $(BULIBS)
+
+# The following is commented out for the conversion to automake.
+# This rule creates a single binary that switches between ar and ranlib
+# by looking at argv[0]. Use this kludge to save some disk space.
+# However, you have to install things by hand.
+# (That is after 'make install', replace the installed ranlib by a link to ar.)
+# Alternatively, you can install ranlib.sh as ranlib.
+# ar_with_ranlib: $(ADDL_DEPS) ar.o maybe-ranlib.o
+# $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(AR_PROG) ar.o maybe-ranlib.o $(ADDL_LIBS) $(EXTRALIBS)
+# -rm -f $(RANLIB_PROG)
+# -ln $(AR_PROG) $(RANLIB_PROG)
+#
+# objcopy and strip in one binary that uses argv[0] to decide its action.
+#
+#objcopy_with_strip: $(ADDL_DEPS) objcopy.o maybe-strip.o
+# $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(OBJCOPY_PROG) objcopy.o maybe-strip.o $(ADDL_LIBS) $(EXTRALIBS)
+# -rm -f $(STRIP_PROG)
+# -ln $(OBJCOPY_PROG) $(STRIP_PROG)
+
+sysroff.c: sysinfo$(EXEEXT_FOR_BUILD) sysroff.info
+ ./sysinfo$(EXEEXT_FOR_BUILD) -c <$(srcdir)/sysroff.info >sysroff.c
+ ./sysinfo$(EXEEXT_FOR_BUILD) -i <$(srcdir)/sysroff.info >>sysroff.c
+ ./sysinfo$(EXEEXT_FOR_BUILD) -g <$(srcdir)/sysroff.info >>sysroff.c
+
+sysroff.h: sysinfo$(EXEEXT_FOR_BUILD) sysroff.info
+ ./sysinfo$(EXEEXT_FOR_BUILD) -d <$(srcdir)/sysroff.info >sysroff.h
+
+sysinfo$(EXEEXT_FOR_BUILD): sysinfo.@OBJEXT@ syslex_wrap.@OBJEXT@
+ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.@OBJEXT@ syslex_wrap.@OBJEXT@
+
+syslex_wrap.@OBJEXT@: syslex_wrap.c syslex.c sysinfo.h config.h
+ $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex_wrap.c
+
+sysinfo.@OBJEXT@: sysinfo.c
+ if [ -r sysinfo.c ]; then \
+ $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \
+ else \
+ $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \
+ fi
+
+bin2c$(EXEEXT_FOR_BUILD): bin2c.c
+ $(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c
+
+embedspu: embedspu.sh Makefile
+ awk '/^program_transform_name=/ {print "program_transform_name=\"$(program_transform_name)\""; next} {print}' < $< > $@
+ chmod a+x $@
+
+# We need these for parallel make.
+sysinfo.h: sysinfo.c
+
+# Disable -Werror, if it has been enabled, since old versions of bison/
+# yacc will produce working code which contain compile time warnings.
+arparse.@OBJEXT@: arparse.c
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f arparse.c || echo $(srcdir)/`arparse.c $(NO_WERROR)
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='arparse.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c `test -f arparse.c || echo $(srcdir)/`arparse.c $(NO_WERROR)
+endif
+
+arlex.@OBJEXT@: arlex.c
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f arlex.c || echo $(srcdir)/`arlex.c $(NO_WERROR)
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='arlex.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c `test -f arlex.c || echo $(srcdir)/`arlex.c $(NO_WERROR)
+endif
+
+sysroff.@OBJEXT@: sysroff.c
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f sysroff.c || echo $(srcdir)/`sysroff.c $(NO_WERROR)
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='sysroff.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c `test -f sysroff.c || echo $(srcdir)/`sysroff.c $(NO_WERROR)
+endif
+
+defparse.@OBJEXT@: defparse.c
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f defparse.c || echo $(srcdir)/`defparse.c $(NO_WERROR)
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='defparse.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c `test -f defparse.c || echo $(srcdir)/`defparse.c $(NO_WERROR)
+endif
+
+deflex.@OBJEXT@: deflex.c
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f deflex.c || echo $(srcdir)/`deflex.c $(NO_WERROR)
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='deflex.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c `test -f deflex.c || echo $(srcdir)/`deflex.c $(NO_WERROR)
+endif
+
+nlmheader.@OBJEXT@: nlmheader.c
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f nlmheader.c || echo $(srcdir)/`nlmheader.c $(NO_WERROR)
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='nlmheader.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c `test -f nlmheader.c || echo $(srcdir)/`nlmheader.c $(NO_WERROR)
+endif
+
+rcparse.@OBJEXT@: rcparse.c
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f rcparse.c || echo $(srcdir)/`rcparse.c $(NO_WERROR)
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='rcparse.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c `test -f rcparse.c || echo $(srcdir)/`rcparse.c $(NO_WERROR)
+endif
+
+mcparse.@OBJEXT@: mcparse.c
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f mcparse.c || echo $(srcdir)/`mcparse.c $(NO_WERROR)
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='mcparse.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c `test -f mcparse.c || echo $(srcdir)/`mcparse.c $(NO_WERROR)
+endif
+
+rclex.@OBJEXT@: rclex.c
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(srcdir)/rclex.c $(NO_WERROR)
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='rclex.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c $(srcdir)/rclex.c $(NO_WERROR)
+endif
+
+mclex.@OBJEXT@: mclex.c
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(srcdir)/mclex.c $(NO_WERROR)
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='mclex.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c $(srcdir)/mclex.c $(NO_WERROR)
+endif
+
+srconv_SOURCES = srconv.c coffgrok.c $(BULIBS)
+srconv.@OBJEXT@: sysroff.c
+
+dlltool_SOURCES = dlltool.c defparse.y deflex.l $(BULIBS)
+dlltool_LDADD = $(BFDLIB) $(LIBIBERTY) $(LEXLIB) $(LIBINTL)
+
+dlltool.@OBJEXT@:
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(DLLTOOL_DEFS) $(srcdir)/dlltool.c
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='dlltool.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c $(DLLTOOL_DEFS) $(srcdir)/dlltool.c
+endif
+
+rescoff.@OBJEXT@:
+if am__fastdepCC
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(DLLTOOL_DEFS) $(srcdir)/rescoff.c
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='rescoff.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ $(COMPILE) -c $(DLLTOOL_DEFS) $(srcdir)/rescoff.c
+endif
+
+coffdump_SOURCES = coffdump.c coffgrok.c $(BULIBS)
+
+sysdump_SOURCES = sysdump.c $(BULIBS)
+sysdump.@OBJEXT@: sysroff.c
+
+# coff/sym.h and coff/ecoff.h won't be found by the automatic dependency
+# scripts, since they are only included conditionally.
+nlmconv.@OBJEXT@: nlmconv.c
+if am__fastdepCC
+ ldname=`echo ld | sed '$(transform)'`; \
+ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ \
+ -DLD_NAME="\"$${ldname}\"" @NLMCONV_DEFS@ $(srcdir)/nlmconv.c
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+else
+if AMDEP
+ source='nlmconv.c' object='$@' libtool=no @AMDEPBACKSLASH@
+ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+endif
+ ldname=`echo ld | sed '$(transform)'`; \
+ $(COMPILE) -c -DLD_NAME="\"$${ldname}\"" @NLMCONV_DEFS@ $(srcdir)/nlmconv.c
+endif
+
+nlmconv_SOURCES = nlmconv.c nlmheader.y $(BULIBS)
+
+windres_SOURCES = windres.c resrc.c rescoff.c resbin.c rcparse.y rclex.c \
+ winduni.c resres.c $(BULIBS)
+windres_LDADD = $(BFDLIB) $(LIBIBERTY) $(LEXLIB) $(LIBINTL) $(LIBICONV)
+
+windmc_SOURCES = windmc.c mcparse.y mclex.c \
+ winduni.c $(BULIBS)
+windmc_LDADD = $(BFDLIB) $(LIBIBERTY) $(LEXLIB) $(LIBINTL) $(LIBICONV)
+
+dllwrap_SOURCES = dllwrap.c version.c
+dllwrap_LDADD = $(LIBIBERTY) $(LIBINTL)
+
+
+EXTRA_DIST = arparse.c arparse.h arlex.c nlmheader.c sysinfo.c sysinfo.h \
+ syslex.c deflex.c defparse.h defparse.c rcparse.h rcparse.c \
+ mcparse.h mcparse.c embedspu.sh
+
+diststuff: $(EXTRA_DIST) info
+all: info
+
+# We extract version from bfd/configure.in, make sure to rerun configure
+# when BFD's version changes.
+CONFIG_STATUS_DEPENDENCIES = $(BFDDIR)/configure.in
+
+DISTCLEANFILES = sysroff.c sysroff.h site.exp site.bak embedspu
+
+MOSTLYCLEANFILES = sysinfo$(EXEEXT_FOR_BUILD) bin2c$(EXEEXT_FOR_BUILD) \
+ binutils.log binutils.sum abcdefgh*
+mostlyclean-local:
+ -rm -rf tmpdir
+
+.PHONY: install-exec-local
+
+install-exec-local: install-binPROGRAMS $(bin_PROGRAMS) $(noinst_PROGRAMS)
+ @list='$(RENAMED_PROGS)'; for p in $$list; do \
+ if test -f $$p$(EXEEXT); then \
+ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p$(EXEEXT) $(bindir)/`echo $$p|sed -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p$(EXEEXT) $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+ else :; fi; \
+ done
+ $(mkinstalldirs) $(DESTDIR)$(tooldir)/bin
+ for i in $(TOOL_PROGS); do \
+ if [ -f $$i$(EXEEXT) ]; then \
+ j=`echo $$i | sed -e 's/-new//'`; \
+ k=`echo $$j | sed '$(transform)'`; \
+ if [ "$(bindir)/$$k" != "$(tooldir)/bin/$$j" ]; then \
+ rm -f $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT); \
+ ln $(DESTDIR)$(bindir)/$$k$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT) >/dev/null 2>/dev/null \
+ || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$i$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT); \
+ fi; \
+ else true; \
+ fi; \
+ done
diff --git a/binutils-2.24/binutils/Makefile.in b/binutils-2.24/binutils/Makefile.in
new file mode 100644
index 00000000..e1e61dc8
--- /dev/null
+++ b/binutils-2.24/binutils/Makefile.in
@@ -0,0 +1,1481 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+#
+# Copyright 2012 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 3 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; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+#
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+bin_PROGRAMS = $(am__EXEEXT_6) $(am__EXEEXT_7) $(am__EXEEXT_8) \
+ $(am__EXEEXT_9) $(am__EXEEXT_10) $(am__EXEEXT_11) \
+ @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ \
+ @BUILD_WINDMC@ $(am__EXEEXT_12) $(am__EXEEXT_13) \
+ $(am__EXEEXT_14) @BUILD_DLLWRAP@
+noinst_PROGRAMS = $(am__EXEEXT_18) $(am__EXEEXT_21) @BUILD_MISC@
+EXTRA_PROGRAMS = $(am__EXEEXT_1) srconv$(EXEEXT) sysdump$(EXEEXT) \
+ coffdump$(EXEEXT) $(am__EXEEXT_2) $(am__EXEEXT_3) \
+ $(am__EXEEXT_4) $(am__EXEEXT_5)
+subdir = .
+DIST_COMMON = NEWS README ChangeLog $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/configure \
+ $(am__configure_deps) $(srcdir)/config.in \
+ $(srcdir)/../mkinstalldirs $(top_srcdir)/po/Make-in arparse.h \
+ arparse.c arlex.c defparse.h defparse.c deflex.c nlmheader.h \
+ nlmheader.c arparse.h arparse.c arlex.c mcparse.h mcparse.c \
+ rcparse.h rcparse.c $(srcdir)/../depcomp $(srcdir)/../ylwrap
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \
+ $(top_srcdir)/../config/zlib.m4 \
+ $(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/../config/acx.m4 \
+ $(top_srcdir)/../config/depstand.m4 \
+ $(top_srcdir)/../config/gettext-sister.m4 \
+ $(top_srcdir)/../config/iconv.m4 \
+ $(top_srcdir)/../config/largefile.m4 \
+ $(top_srcdir)/../config/lcmessage.m4 \
+ $(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/lib-link.m4 \
+ $(top_srcdir)/../config/lib-prefix.m4 \
+ $(top_srcdir)/../config/nls.m4 \
+ $(top_srcdir)/../config/override.m4 \
+ $(top_srcdir)/../config/plugins.m4 \
+ $(top_srcdir)/../config/po.m4 \
+ $(top_srcdir)/../config/progtest.m4 \
+ $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
+ $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
+ $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = po/Makefile.in
+CONFIG_CLEAN_VPATH_FILES =
+am__EXEEXT_1 = nlmconv$(EXEEXT)
+am__EXEEXT_2 = dlltool$(EXEEXT)
+am__EXEEXT_3 = windres$(EXEEXT)
+am__EXEEXT_4 = windmc$(EXEEXT)
+am__EXEEXT_5 = dllwrap$(EXEEXT)
+am__EXEEXT_6 = size$(EXEEXT)
+am__EXEEXT_7 = objdump$(EXEEXT)
+am__EXEEXT_8 = ar$(EXEEXT)
+am__EXEEXT_9 = strings$(EXEEXT)
+am__EXEEXT_10 = ranlib$(EXEEXT)
+am__EXEEXT_11 = objcopy$(EXEEXT)
+am__EXEEXT_12 = addr2line$(EXEEXT)
+am__EXEEXT_13 = readelf$(EXEEXT)
+am__EXEEXT_14 = elfedit$(EXEEXT)
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
+am__EXEEXT_15 = nm-new$(EXEEXT)
+am__EXEEXT_16 = strip-new$(EXEEXT)
+am__EXEEXT_17 = cxxfilt$(EXEEXT)
+am__EXEEXT_18 = $(am__EXEEXT_15) $(am__EXEEXT_16) $(am__EXEEXT_17)
+am__EXEEXT_19 = bfdtest1$(EXEEXT)
+am__EXEEXT_20 = bfdtest2$(EXEEXT)
+am__EXEEXT_21 = $(am__EXEEXT_19) $(am__EXEEXT_20)
+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
+am__objects_1 = bucomm.$(OBJEXT) version.$(OBJEXT) filemode.$(OBJEXT)
+am_addr2line_OBJECTS = addr2line.$(OBJEXT) $(am__objects_1)
+addr2line_OBJECTS = $(am_addr2line_OBJECTS)
+addr2line_LDADD = $(LDADD)
+am__DEPENDENCIES_1 =
+am_ar_OBJECTS = arparse.$(OBJEXT) arlex.$(OBJEXT) ar.$(OBJEXT) \
+ not-ranlib.$(OBJEXT) arsup.$(OBJEXT) rename.$(OBJEXT) \
+ binemul.$(OBJEXT) emul_$(EMULATION).$(OBJEXT) $(am__objects_1)
+ar_OBJECTS = $(am_ar_OBJECTS)
+bfdtest1_SOURCES = bfdtest1.c
+bfdtest1_OBJECTS = bfdtest1.$(OBJEXT)
+bfdtest1_LDADD = $(LDADD)
+bfdtest2_SOURCES = bfdtest2.c
+bfdtest2_OBJECTS = bfdtest2.$(OBJEXT)
+bfdtest2_LDADD = $(LDADD)
+am_coffdump_OBJECTS = coffdump.$(OBJEXT) coffgrok.$(OBJEXT) \
+ $(am__objects_1)
+coffdump_OBJECTS = $(am_coffdump_OBJECTS)
+coffdump_LDADD = $(LDADD)
+am_cxxfilt_OBJECTS = cxxfilt.$(OBJEXT) $(am__objects_1)
+cxxfilt_OBJECTS = $(am_cxxfilt_OBJECTS)
+cxxfilt_LDADD = $(LDADD)
+am_dlltool_OBJECTS = dlltool.$(OBJEXT) defparse.$(OBJEXT) \
+ deflex.$(OBJEXT) $(am__objects_1)
+dlltool_OBJECTS = $(am_dlltool_OBJECTS)
+am_dllwrap_OBJECTS = dllwrap.$(OBJEXT) version.$(OBJEXT)
+dllwrap_OBJECTS = $(am_dllwrap_OBJECTS)
+am__objects_2 = elfcomm.$(OBJEXT)
+am_elfedit_OBJECTS = elfedit.$(OBJEXT) version.$(OBJEXT) \
+ $(am__objects_2)
+elfedit_OBJECTS = $(am_elfedit_OBJECTS)
+am_nlmconv_OBJECTS = nlmconv.$(OBJEXT) nlmheader.$(OBJEXT) \
+ $(am__objects_1)
+nlmconv_OBJECTS = $(am_nlmconv_OBJECTS)
+nlmconv_LDADD = $(LDADD)
+am_nm_new_OBJECTS = nm.$(OBJEXT) $(am__objects_1)
+nm_new_OBJECTS = $(am_nm_new_OBJECTS)
+nm_new_LDADD = $(LDADD)
+am__objects_3 = rddbg.$(OBJEXT) debug.$(OBJEXT) stabs.$(OBJEXT) \
+ ieee.$(OBJEXT) rdcoff.$(OBJEXT)
+am__objects_4 = $(am__objects_3) wrstabs.$(OBJEXT)
+am_objcopy_OBJECTS = objcopy.$(OBJEXT) not-strip.$(OBJEXT) \
+ rename.$(OBJEXT) $(am__objects_4) $(am__objects_1)
+objcopy_OBJECTS = $(am_objcopy_OBJECTS)
+objcopy_LDADD = $(LDADD)
+am_objdump_OBJECTS = objdump.$(OBJEXT) dwarf.$(OBJEXT) prdbg.$(OBJEXT) \
+ $(am__objects_3) $(am__objects_1) $(am__objects_2)
+objdump_OBJECTS = $(am_objdump_OBJECTS)
+am_ranlib_OBJECTS = ar.$(OBJEXT) is-ranlib.$(OBJEXT) arparse.$(OBJEXT) \
+ arlex.$(OBJEXT) arsup.$(OBJEXT) rename.$(OBJEXT) \
+ binemul.$(OBJEXT) emul_$(EMULATION).$(OBJEXT) $(am__objects_1)
+ranlib_OBJECTS = $(am_ranlib_OBJECTS)
+am_readelf_OBJECTS = readelf.$(OBJEXT) version.$(OBJEXT) \
+ unwind-ia64.$(OBJEXT) dwarf.$(OBJEXT) $(am__objects_2)
+readelf_OBJECTS = $(am_readelf_OBJECTS)
+am_size_OBJECTS = size.$(OBJEXT) $(am__objects_1)
+size_OBJECTS = $(am_size_OBJECTS)
+size_LDADD = $(LDADD)
+am_srconv_OBJECTS = srconv.$(OBJEXT) coffgrok.$(OBJEXT) \
+ $(am__objects_1)
+srconv_OBJECTS = $(am_srconv_OBJECTS)
+srconv_LDADD = $(LDADD)
+am_strings_OBJECTS = strings.$(OBJEXT) $(am__objects_1)
+strings_OBJECTS = $(am_strings_OBJECTS)
+strings_LDADD = $(LDADD)
+am_strip_new_OBJECTS = objcopy.$(OBJEXT) is-strip.$(OBJEXT) \
+ rename.$(OBJEXT) $(am__objects_4) $(am__objects_1)
+strip_new_OBJECTS = $(am_strip_new_OBJECTS)
+strip_new_LDADD = $(LDADD)
+am_sysdump_OBJECTS = sysdump.$(OBJEXT) $(am__objects_1)
+sysdump_OBJECTS = $(am_sysdump_OBJECTS)
+sysdump_LDADD = $(LDADD)
+am_windmc_OBJECTS = windmc.$(OBJEXT) mcparse.$(OBJEXT) mclex.$(OBJEXT) \
+ winduni.$(OBJEXT) $(am__objects_1)
+windmc_OBJECTS = $(am_windmc_OBJECTS)
+am_windres_OBJECTS = windres.$(OBJEXT) resrc.$(OBJEXT) \
+ rescoff.$(OBJEXT) resbin.$(OBJEXT) rcparse.$(OBJEXT) \
+ rclex.$(OBJEXT) winduni.$(OBJEXT) resres.$(OBJEXT) \
+ $(am__objects_1)
+windres_OBJECTS = $(am_windres_OBJECTS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+SCRIPTS = $(bin_SCRIPTS)
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/../depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
+LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS)
+LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS)
+YLWRAP = $(top_srcdir)/../ylwrap
+@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
+YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS)
+LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS)
+SOURCES = $(addr2line_SOURCES) $(ar_SOURCES) $(EXTRA_ar_SOURCES) \
+ bfdtest1.c bfdtest2.c $(coffdump_SOURCES) $(cxxfilt_SOURCES) \
+ $(dlltool_SOURCES) $(dllwrap_SOURCES) $(elfedit_SOURCES) \
+ $(nlmconv_SOURCES) $(nm_new_SOURCES) $(objcopy_SOURCES) \
+ $(objdump_SOURCES) $(EXTRA_objdump_SOURCES) $(ranlib_SOURCES) \
+ $(readelf_SOURCES) $(size_SOURCES) $(srconv_SOURCES) \
+ $(strings_SOURCES) $(strip_new_SOURCES) $(sysdump_SOURCES) \
+ $(windmc_SOURCES) $(windres_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS
+ETAGS = etags
+CTAGS = ctags
+DEJATOOL = $(PACKAGE)
+RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
+DIST_SUBDIRS = $(SUBDIRS)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_DLLTOOL = @BUILD_DLLTOOL@
+BUILD_DLLWRAP = @BUILD_DLLWRAP@
+BUILD_INSTALL_MISC = @BUILD_INSTALL_MISC@
+BUILD_MISC = @BUILD_MISC@
+BUILD_NLMCONV = @BUILD_NLMCONV@
+BUILD_SRCONV = @BUILD_SRCONV@
+BUILD_WINDMC = @BUILD_WINDMC@
+BUILD_WINDRES = @BUILD_WINDRES@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_FOR_BUILD = @CC_FOR_BUILD@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEMANGLER_NAME = @DEMANGLER_NAME@
+DEPDIR = @DEPDIR@
+DLLTOOL_DEFS = @DLLTOOL_DEFS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULATION = @EMULATION@
+EMULATION_VECTOR = @EMULATION_VECTOR@
+EXEEXT = @EXEEXT@
+EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
+FGREP = @FGREP@
+GENCAT = @GENCAT@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+HDEFINES = @HDEFINES@
+INCINTL = @INCINTL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = `if [ -f ../flex/flex ]; then echo ../flex/flex; else echo @LEX@; fi`
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBINTL_DEP = @LIBINTL_DEP@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+NLMCONV_DEFS = @NLMCONV_DEFS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NO_WERROR = @NO_WERROR@
+OBJDUMP = @OBJDUMP@
+OBJDUMP_DEFS = @OBJDUMP_DEFS@
+
+# Extra object files for objdump
+OBJDUMP_PRIVATE_OFILES = @OBJDUMP_PRIVATE_OFILES@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+XGETTEXT = @XGETTEXT@
+YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bison/; else echo @YACC@; fi`
+YFLAGS = -d
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = dejagnu no-dist foreign
+ACLOCAL_AMFLAGS = -I .. -I ../config -I ../bfd
+SUBDIRS = doc po
+tooldir = $(exec_prefix)/$(target_alias)
+
+# Automake 1.10+ disables lex and yacc output file regeneration if
+# maintainer mode is disabled. Avoid this.
+am__skiplex =
+am__skipyacc =
+AM_CFLAGS = $(WARN_CFLAGS)
+
+# these two are almost the same program
+AR_PROG = ar
+RANLIB_PROG = ranlib
+
+# objcopy and strip should be the same program
+OBJCOPY_PROG = objcopy
+STRIP_PROG = strip-new
+STRINGS_PROG = strings
+READELF_PROG = readelf
+ELFEDIT_PROG = elfedit
+
+# These should all be the same program too.
+SIZE_PROG = size
+NM_PROG = nm-new
+OBJDUMP_PROG = objdump
+
+# This is the demangler, as a standalone program.
+# Note: This one is used as the installed name too, unlike the above.
+DEMANGLER_PROG = cxxfilt
+ADDR2LINE_PROG = addr2line
+NLMCONV_PROG = nlmconv
+DLLTOOL_PROG = dlltool
+WINDRES_PROG = windres
+WINDMC_PROG = windmc
+DLLWRAP_PROG = dllwrap
+SRCONV_PROG = srconv$(EXEEXT) sysdump$(EXEEXT) coffdump$(EXEEXT)
+bin_SCRIPTS = @BUILD_INSTALL_MISC@
+EXTRA_SCRIPTS = embedspu
+BFDTEST1_PROG = bfdtest1
+BFDTEST2_PROG = bfdtest2
+TEST_PROGS = $(BFDTEST1_PROG) $(BFDTEST2_PROG)
+RENAMED_PROGS = $(NM_PROG) $(STRIP_PROG) $(DEMANGLER_PROG)
+
+# Stuff that goes in tooldir/ if appropriate.
+TOOL_PROGS = nm-new strip-new ar ranlib dlltool objdump objcopy
+BASEDIR = $(srcdir)/..
+BFDDIR = $(BASEDIR)/bfd
+INCDIR = $(BASEDIR)/include
+AM_CPPFLAGS = -I. -I$(srcdir) -I../bfd -I$(BFDDIR) -I$(INCDIR) \
+ @HDEFINES@ \
+ @INCINTL@ \
+ -DLOCALEDIR="\"$(datadir)/locale\"" \
+ -Dbin_dummy_emulation=$(EMULATION_VECTOR)
+
+HFILES = \
+ arsup.h binemul.h bucomm.h budbg.h \
+ coffgrok.h debug.h dlltool.h dwarf.h elfcomm.h nlmconv.h \
+ objdump.h sysdep.h unwind-ia64.h windres.h winduni.h windint.h \
+ windmc.h
+
+GENERATED_HFILES = arparse.h sysroff.h sysinfo.h defparse.h rcparse.h mcparse.h
+BUILT_SOURCES = $(GENERATED_HFILES)
+CFILES = \
+ addr2line.c ar.c arsup.c bin2c.c binemul.c bucomm.c \
+ coffdump.c coffgrok.c cxxfilt.c \
+ dwarf.c debug.c dlltool.c dllwrap.c \
+ elfcomm.c emul_aix.c emul_vanilla.c filemode.c \
+ ieee.c is-ranlib.c is-strip.c maybe-ranlib.c maybe-strip.c \
+ nlmconv.c nm.c not-ranlib.c not-strip.c \
+ objcopy.c objdump.c prdbg.c \
+ od-xcoff.c od-macho.c \
+ rclex.c rdcoff.c rddbg.c readelf.c rename.c \
+ resbin.c rescoff.c resrc.c resres.c \
+ size.c srconv.c stabs.c strings.c sysdump.c \
+ syslex_wrap.c unwind-ia64.c elfedit.c version.c \
+ windres.c winduni.c wrstabs.c \
+ windmc.c mclex.c
+
+GENERATED_CFILES = \
+ arparse.c arlex.c sysroff.c sysinfo.c syslex.c \
+ defparse.c deflex.c nlmheader.c rcparse.c mcparse.c
+
+DEBUG_SRCS = rddbg.c debug.c stabs.c ieee.c rdcoff.c
+WRITE_DEBUG_SRCS = $(DEBUG_SRCS) wrstabs.c
+
+# Code shared by all the binutils.
+BULIBS = bucomm.c version.c filemode.c
+
+# Code shared by the ELF related programs.
+ELFLIBS = elfcomm.c
+BFDLIB = ../bfd/libbfd.la
+OPCODES = ../opcodes/libopcodes.la
+LIBIBERTY = ../libiberty/libiberty.a
+POTFILES = $(CFILES) $(DEBUG_SRCS) $(HFILES)
+EXPECT = expect
+RUNTEST = runtest
+CC_FOR_TARGET = ` \
+ if [ -f $$r/../gcc/xgcc ] ; then \
+ if [ -f $$r/../newlib/Makefile ] ; then \
+ echo $$r/../gcc/xgcc -B$$r/../gcc/ -idirafter $$r/../newlib/targ-include -idirafter $${srcroot}/../newlib/libc/include -nostdinc; \
+ else \
+ echo $$r/../gcc/xgcc -B$$r/../gcc/; \
+ fi; \
+ else \
+ if [ "@host@" = "@target@" ] ; then \
+ echo $(CC); \
+ else \
+ echo gcc | sed '$(transform)'; \
+ fi; \
+ fi`
+
+
+# There's no global DEPENDENCIES. So, we must explicitly list everything
+# which depends on libintl, since we don't know whether LIBINTL_DEP will be
+# non-empty until configure time. Ugh!
+size_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+objdump_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB) $(OPCODES) $(OBJDUMP_PRIVATE_OFILES)
+nm_new_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+ar_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+strings_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+strip_new_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+ranlib_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+cxxfilt_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+objcopy_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+nlmconv_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+srconv_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+sysdump_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+coffdump_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+dlltool_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+windres_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+windmc_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+addr2line_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+readelf_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY)
+elfedit_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY)
+dllwrap_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY)
+bfdtest1_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+bfdtest2_DEPENDENCIES = $(LIBINTL_DEP) $(LIBIBERTY) $(BFDLIB)
+LDADD = $(BFDLIB) $(LIBIBERTY) $(LIBINTL)
+size_SOURCES = size.c $(BULIBS)
+objcopy_SOURCES = objcopy.c not-strip.c rename.c $(WRITE_DEBUG_SRCS) $(BULIBS)
+strings_SOURCES = strings.c $(BULIBS)
+readelf_SOURCES = readelf.c version.c unwind-ia64.c dwarf.c $(ELFLIBS)
+readelf_LDADD = $(LIBINTL) $(LIBIBERTY)
+elfedit_SOURCES = elfedit.c version.c $(ELFLIBS)
+elfedit_LDADD = $(LIBINTL) $(LIBIBERTY)
+strip_new_SOURCES = objcopy.c is-strip.c rename.c $(WRITE_DEBUG_SRCS) $(BULIBS)
+nm_new_SOURCES = nm.c $(BULIBS)
+objdump_SOURCES = objdump.c dwarf.c prdbg.c $(DEBUG_SRCS) $(BULIBS) $(ELFLIBS)
+EXTRA_objdump_SOURCES = od-xcoff.c
+objdump_LDADD = $(OBJDUMP_PRIVATE_OFILES) $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(LIBINTL)
+cxxfilt_SOURCES = cxxfilt.c $(BULIBS)
+ar_SOURCES = arparse.y arlex.l ar.c not-ranlib.c arsup.c rename.c binemul.c \
+ emul_$(EMULATION).c $(BULIBS)
+
+EXTRA_ar_SOURCES = $(CFILES)
+ar_LDADD = $(BFDLIB) $(LIBIBERTY) $(LEXLIB) $(LIBINTL)
+ranlib_SOURCES = ar.c is-ranlib.c arparse.y arlex.l arsup.c rename.c \
+ binemul.c emul_$(EMULATION).c $(BULIBS)
+
+ranlib_LDADD = $(BFDLIB) $(LIBIBERTY) $(LEXLIB) $(LIBINTL)
+addr2line_SOURCES = addr2line.c $(BULIBS)
+srconv_SOURCES = srconv.c coffgrok.c $(BULIBS)
+dlltool_SOURCES = dlltool.c defparse.y deflex.l $(BULIBS)
+dlltool_LDADD = $(BFDLIB) $(LIBIBERTY) $(LEXLIB) $(LIBINTL)
+coffdump_SOURCES = coffdump.c coffgrok.c $(BULIBS)
+sysdump_SOURCES = sysdump.c $(BULIBS)
+nlmconv_SOURCES = nlmconv.c nlmheader.y $(BULIBS)
+windres_SOURCES = windres.c resrc.c rescoff.c resbin.c rcparse.y rclex.c \
+ winduni.c resres.c $(BULIBS)
+
+windres_LDADD = $(BFDLIB) $(LIBIBERTY) $(LEXLIB) $(LIBINTL) $(LIBICONV)
+windmc_SOURCES = windmc.c mcparse.y mclex.c \
+ winduni.c $(BULIBS)
+
+windmc_LDADD = $(BFDLIB) $(LIBIBERTY) $(LEXLIB) $(LIBINTL) $(LIBICONV)
+dllwrap_SOURCES = dllwrap.c version.c
+dllwrap_LDADD = $(LIBIBERTY) $(LIBINTL)
+EXTRA_DIST = arparse.c arparse.h arlex.c nlmheader.c sysinfo.c sysinfo.h \
+ syslex.c deflex.c defparse.h defparse.c rcparse.h rcparse.c \
+ mcparse.h mcparse.c embedspu.sh
+
+
+# We extract version from bfd/configure.in, make sure to rerun configure
+# when BFD's version changes.
+CONFIG_STATUS_DEPENDENCIES = $(BFDDIR)/configure.in
+DISTCLEANFILES = sysroff.c sysroff.h site.exp site.bak embedspu
+MOSTLYCLEANFILES = sysinfo$(EXEEXT_FOR_BUILD) bin2c$(EXEEXT_FOR_BUILD) \
+ binutils.log binutils.sum abcdefgh*
+
+all: $(BUILT_SOURCES) config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .l .lo .o .obj .y
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ $(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+ else :; fi
+
+stamp-h1: $(srcdir)/config.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+po/Makefile.in: $(top_builddir)/config.status $(top_srcdir)/po/Make-in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p || test -f $$p1; \
+ then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
+addr2line$(EXEEXT): $(addr2line_OBJECTS) $(addr2line_DEPENDENCIES)
+ @rm -f addr2line$(EXEEXT)
+ $(LINK) $(addr2line_OBJECTS) $(addr2line_LDADD) $(LIBS)
+arparse.h: arparse.c
+ @if test ! -f $@; then \
+ rm -f arparse.c; \
+ $(MAKE) $(AM_MAKEFLAGS) arparse.c; \
+ else :; fi
+ar$(EXEEXT): $(ar_OBJECTS) $(ar_DEPENDENCIES)
+ @rm -f ar$(EXEEXT)
+ $(LINK) $(ar_OBJECTS) $(ar_LDADD) $(LIBS)
+bfdtest1$(EXEEXT): $(bfdtest1_OBJECTS) $(bfdtest1_DEPENDENCIES)
+ @rm -f bfdtest1$(EXEEXT)
+ $(LINK) $(bfdtest1_OBJECTS) $(bfdtest1_LDADD) $(LIBS)
+bfdtest2$(EXEEXT): $(bfdtest2_OBJECTS) $(bfdtest2_DEPENDENCIES)
+ @rm -f bfdtest2$(EXEEXT)
+ $(LINK) $(bfdtest2_OBJECTS) $(bfdtest2_LDADD) $(LIBS)
+coffdump$(EXEEXT): $(coffdump_OBJECTS) $(coffdump_DEPENDENCIES)
+ @rm -f coffdump$(EXEEXT)
+ $(LINK) $(coffdump_OBJECTS) $(coffdump_LDADD) $(LIBS)
+cxxfilt$(EXEEXT): $(cxxfilt_OBJECTS) $(cxxfilt_DEPENDENCIES)
+ @rm -f cxxfilt$(EXEEXT)
+ $(LINK) $(cxxfilt_OBJECTS) $(cxxfilt_LDADD) $(LIBS)
+defparse.h: defparse.c
+ @if test ! -f $@; then \
+ rm -f defparse.c; \
+ $(MAKE) $(AM_MAKEFLAGS) defparse.c; \
+ else :; fi
+dlltool$(EXEEXT): $(dlltool_OBJECTS) $(dlltool_DEPENDENCIES)
+ @rm -f dlltool$(EXEEXT)
+ $(LINK) $(dlltool_OBJECTS) $(dlltool_LDADD) $(LIBS)
+dllwrap$(EXEEXT): $(dllwrap_OBJECTS) $(dllwrap_DEPENDENCIES)
+ @rm -f dllwrap$(EXEEXT)
+ $(LINK) $(dllwrap_OBJECTS) $(dllwrap_LDADD) $(LIBS)
+elfedit$(EXEEXT): $(elfedit_OBJECTS) $(elfedit_DEPENDENCIES)
+ @rm -f elfedit$(EXEEXT)
+ $(LINK) $(elfedit_OBJECTS) $(elfedit_LDADD) $(LIBS)
+nlmheader.h: nlmheader.c
+ @if test ! -f $@; then \
+ rm -f nlmheader.c; \
+ $(MAKE) $(AM_MAKEFLAGS) nlmheader.c; \
+ else :; fi
+nlmconv$(EXEEXT): $(nlmconv_OBJECTS) $(nlmconv_DEPENDENCIES)
+ @rm -f nlmconv$(EXEEXT)
+ $(LINK) $(nlmconv_OBJECTS) $(nlmconv_LDADD) $(LIBS)
+nm-new$(EXEEXT): $(nm_new_OBJECTS) $(nm_new_DEPENDENCIES)
+ @rm -f nm-new$(EXEEXT)
+ $(LINK) $(nm_new_OBJECTS) $(nm_new_LDADD) $(LIBS)
+objcopy$(EXEEXT): $(objcopy_OBJECTS) $(objcopy_DEPENDENCIES)
+ @rm -f objcopy$(EXEEXT)
+ $(LINK) $(objcopy_OBJECTS) $(objcopy_LDADD) $(LIBS)
+objdump$(EXEEXT): $(objdump_OBJECTS) $(objdump_DEPENDENCIES)
+ @rm -f objdump$(EXEEXT)
+ $(LINK) $(objdump_OBJECTS) $(objdump_LDADD) $(LIBS)
+ranlib$(EXEEXT): $(ranlib_OBJECTS) $(ranlib_DEPENDENCIES)
+ @rm -f ranlib$(EXEEXT)
+ $(LINK) $(ranlib_OBJECTS) $(ranlib_LDADD) $(LIBS)
+readelf$(EXEEXT): $(readelf_OBJECTS) $(readelf_DEPENDENCIES)
+ @rm -f readelf$(EXEEXT)
+ $(LINK) $(readelf_OBJECTS) $(readelf_LDADD) $(LIBS)
+size$(EXEEXT): $(size_OBJECTS) $(size_DEPENDENCIES)
+ @rm -f size$(EXEEXT)
+ $(LINK) $(size_OBJECTS) $(size_LDADD) $(LIBS)
+srconv$(EXEEXT): $(srconv_OBJECTS) $(srconv_DEPENDENCIES)
+ @rm -f srconv$(EXEEXT)
+ $(LINK) $(srconv_OBJECTS) $(srconv_LDADD) $(LIBS)
+strings$(EXEEXT): $(strings_OBJECTS) $(strings_DEPENDENCIES)
+ @rm -f strings$(EXEEXT)
+ $(LINK) $(strings_OBJECTS) $(strings_LDADD) $(LIBS)
+strip-new$(EXEEXT): $(strip_new_OBJECTS) $(strip_new_DEPENDENCIES)
+ @rm -f strip-new$(EXEEXT)
+ $(LINK) $(strip_new_OBJECTS) $(strip_new_LDADD) $(LIBS)
+sysdump$(EXEEXT): $(sysdump_OBJECTS) $(sysdump_DEPENDENCIES)
+ @rm -f sysdump$(EXEEXT)
+ $(LINK) $(sysdump_OBJECTS) $(sysdump_LDADD) $(LIBS)
+mcparse.h: mcparse.c
+ @if test ! -f $@; then \
+ rm -f mcparse.c; \
+ $(MAKE) $(AM_MAKEFLAGS) mcparse.c; \
+ else :; fi
+windmc$(EXEEXT): $(windmc_OBJECTS) $(windmc_DEPENDENCIES)
+ @rm -f windmc$(EXEEXT)
+ $(LINK) $(windmc_OBJECTS) $(windmc_LDADD) $(LIBS)
+rcparse.h: rcparse.c
+ @if test ! -f $@; then \
+ rm -f rcparse.c; \
+ $(MAKE) $(AM_MAKEFLAGS) rcparse.c; \
+ else :; fi
+windres$(EXEEXT): $(windres_OBJECTS) $(windres_DEPENDENCIES)
+ @rm -f windres$(EXEEXT)
+ $(LINK) $(windres_OBJECTS) $(windres_LDADD) $(LIBS)
+install-binSCRIPTS: $(bin_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n' \
+ -e 'h;s|.*|.|' \
+ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+ if (++n[d] == $(am__install_max)) { \
+ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+ else { print "f", d "/" $$4, $$1 } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-binSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 's,.*/,,;$(transform)'`; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addr2line.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arlex.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arparse.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arsup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bfdtest1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bfdtest2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bin2c.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binemul.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bucomm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coffdump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coffgrok.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cxxfilt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/deflex.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/defparse.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dlltool.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dllwrap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfcomm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfedit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emul_$(EMULATION).Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emul_aix.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emul_vanilla.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filemode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ieee.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is-ranlib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is-strip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maybe-ranlib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/maybe-strip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mclex.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mcparse.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlmconv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlmheader.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nm.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/not-ranlib.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/not-strip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/objcopy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/objdump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/od-macho.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/od-xcoff.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prdbg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rclex.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rcparse.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdcoff.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rddbg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readelf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rename.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resbin.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rescoff.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resrc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resres.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/size.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srconv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stabs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strings.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sysdump.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syslex_wrap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unwind-ia64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/windmc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/windres.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/winduni.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wrstabs.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+.l.c:
+ $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
+
+.y.c:
+ $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool config.lt
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) config.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) config.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+site.exp: Makefile
+ @echo 'Making a new site.exp file...'
+ @echo '## these variables are automatically generated by make ##' >site.tmp
+ @echo '# Do not edit here. If you wish to override these values' >>site.tmp
+ @echo '# edit the last section' >>site.tmp
+ @echo 'set srcdir $(srcdir)' >>site.tmp
+ @echo "set objdir `pwd`" >>site.tmp
+ @echo 'set build_alias "$(build_alias)"' >>site.tmp
+ @echo 'set build_triplet $(build_triplet)' >>site.tmp
+ @echo 'set host_alias "$(host_alias)"' >>site.tmp
+ @echo 'set host_triplet $(host_triplet)' >>site.tmp
+ @echo 'set target_alias "$(target_alias)"' >>site.tmp
+ @echo 'set target_triplet $(target_triplet)' >>site.tmp
+ @echo '## All variables above are generated by configure. Do Not Edit ##' >>site.tmp
+ @test ! -f site.exp || \
+ sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
+ @-rm -f site.bak
+ @test ! -f site.exp || mv site.exp site.bak
+ @mv site.tmp site.exp
+
+distclean-DEJAGNU:
+ -rm -f site.exp site.bak
+ -l='$(DEJATOOL)'; for tool in $$l; do \
+ rm -f $$tool.sum $$tool.log; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(PROGRAMS) $(SCRIPTS) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -rm -f arlex.c
+ -rm -f arparse.c
+ -rm -f arparse.h
+ -rm -f deflex.c
+ -rm -f defparse.c
+ -rm -f defparse.h
+ -rm -f mcparse.c
+ -rm -f mcparse.h
+ -rm -f nlmheader.c
+ -rm -f nlmheader.h
+ -rm -f rcparse.c
+ -rm -f rcparse.h
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-recursive
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool \
+ clean-noinstPROGRAMS mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-DEJAGNU distclean-compile \
+ distclean-generic distclean-hdr distclean-libtool \
+ distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS install-binSCRIPTS \
+ install-exec-local
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am: installcheck-local
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ -rm -rf $(top_srcdir)/autom4te.cache
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-local
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
+ check-am ctags-recursive install install-am install-strip \
+ tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am am--refresh check check-DEJAGNU check-am clean \
+ clean-binPROGRAMS clean-generic clean-libtool \
+ clean-noinstPROGRAMS ctags ctags-recursive distclean \
+ distclean-DEJAGNU distclean-compile distclean-generic \
+ distclean-hdr distclean-libtool distclean-tags dvi dvi-am html \
+ html-am info info-am install install-am install-binPROGRAMS \
+ install-binSCRIPTS install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-exec-local \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installcheck-local installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \
+ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-binPROGRAMS uninstall-binSCRIPTS
+
+po/POTFILES.in: @MAINT@ Makefile
+ for f in $(POTFILES); do echo $$f; done | LC_ALL=C sort > tmp \
+ && mv tmp $(srcdir)/po/POTFILES.in
+
+check-DEJAGNU: site.exp
+ srcdir=`cd $(srcdir) && pwd`; export srcdir; \
+ r=`pwd`; export r; \
+ LC_ALL=C; export LC_ALL; \
+ EXPECT=$(EXPECT); export EXPECT; \
+ runtest=$(RUNTEST); \
+ if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+ CC_FOR_TARGET="$(CC_FOR_TARGET)" CFLAGS_FOR_TARGET="$(CFLAGS)" \
+ $$runtest --tool $(DEJATOOL) --srcdir $${srcdir}/testsuite \
+ $(RUNTESTFLAGS); \
+ else echo "WARNING: could not find \`runtest'" 1>&2; :;\
+ fi
+
+installcheck-local:
+ /bin/sh $(srcdir)/sanity.sh $(bindir)
+
+objdump.@OBJEXT@:objdump.c
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(OBJDUMP_DEFS) $(srcdir)/objdump.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='objdump.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $(OBJDUMP_DEFS) $(srcdir)/objdump.c
+
+# The following is commented out for the conversion to automake.
+# This rule creates a single binary that switches between ar and ranlib
+# by looking at argv[0]. Use this kludge to save some disk space.
+# However, you have to install things by hand.
+# (That is after 'make install', replace the installed ranlib by a link to ar.)
+# Alternatively, you can install ranlib.sh as ranlib.
+# ar_with_ranlib: $(ADDL_DEPS) ar.o maybe-ranlib.o
+# $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(AR_PROG) ar.o maybe-ranlib.o $(ADDL_LIBS) $(EXTRALIBS)
+# -rm -f $(RANLIB_PROG)
+# -ln $(AR_PROG) $(RANLIB_PROG)
+#
+# objcopy and strip in one binary that uses argv[0] to decide its action.
+#
+#objcopy_with_strip: $(ADDL_DEPS) objcopy.o maybe-strip.o
+# $(HLDENV) $(CC) $(HLDFLAGS) $(CFLAGS) $(LDFLAGS) -o $(OBJCOPY_PROG) objcopy.o maybe-strip.o $(ADDL_LIBS) $(EXTRALIBS)
+# -rm -f $(STRIP_PROG)
+# -ln $(OBJCOPY_PROG) $(STRIP_PROG)
+
+sysroff.c: sysinfo$(EXEEXT_FOR_BUILD) sysroff.info
+ ./sysinfo$(EXEEXT_FOR_BUILD) -c <$(srcdir)/sysroff.info >sysroff.c
+ ./sysinfo$(EXEEXT_FOR_BUILD) -i <$(srcdir)/sysroff.info >>sysroff.c
+ ./sysinfo$(EXEEXT_FOR_BUILD) -g <$(srcdir)/sysroff.info >>sysroff.c
+
+sysroff.h: sysinfo$(EXEEXT_FOR_BUILD) sysroff.info
+ ./sysinfo$(EXEEXT_FOR_BUILD) -d <$(srcdir)/sysroff.info >sysroff.h
+
+sysinfo$(EXEEXT_FOR_BUILD): sysinfo.@OBJEXT@ syslex_wrap.@OBJEXT@
+ $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.@OBJEXT@ syslex_wrap.@OBJEXT@
+
+syslex_wrap.@OBJEXT@: syslex_wrap.c syslex.c sysinfo.h config.h
+ $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex_wrap.c
+
+sysinfo.@OBJEXT@: sysinfo.c
+ if [ -r sysinfo.c ]; then \
+ $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \
+ else \
+ $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \
+ fi
+
+bin2c$(EXEEXT_FOR_BUILD): bin2c.c
+ $(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c
+
+embedspu: embedspu.sh Makefile
+ awk '/^program_transform_name=/ {print "program_transform_name=\"$(program_transform_name)\""; next} {print}' < $< > $@
+ chmod a+x $@
+
+# We need these for parallel make.
+sysinfo.h: sysinfo.c
+
+# Disable -Werror, if it has been enabled, since old versions of bison/
+# yacc will produce working code which contain compile time warnings.
+arparse.@OBJEXT@: arparse.c
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f arparse.c || echo $(srcdir)/`arparse.c $(NO_WERROR)
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='arparse.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f arparse.c || echo $(srcdir)/`arparse.c $(NO_WERROR)
+
+arlex.@OBJEXT@: arlex.c
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f arlex.c || echo $(srcdir)/`arlex.c $(NO_WERROR)
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='arlex.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f arlex.c || echo $(srcdir)/`arlex.c $(NO_WERROR)
+
+sysroff.@OBJEXT@: sysroff.c
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f sysroff.c || echo $(srcdir)/`sysroff.c $(NO_WERROR)
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sysroff.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f sysroff.c || echo $(srcdir)/`sysroff.c $(NO_WERROR)
+
+defparse.@OBJEXT@: defparse.c
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f defparse.c || echo $(srcdir)/`defparse.c $(NO_WERROR)
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='defparse.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f defparse.c || echo $(srcdir)/`defparse.c $(NO_WERROR)
+
+deflex.@OBJEXT@: deflex.c
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f deflex.c || echo $(srcdir)/`deflex.c $(NO_WERROR)
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='deflex.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f deflex.c || echo $(srcdir)/`deflex.c $(NO_WERROR)
+
+nlmheader.@OBJEXT@: nlmheader.c
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f nlmheader.c || echo $(srcdir)/`nlmheader.c $(NO_WERROR)
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nlmheader.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f nlmheader.c || echo $(srcdir)/`nlmheader.c $(NO_WERROR)
+
+rcparse.@OBJEXT@: rcparse.c
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f rcparse.c || echo $(srcdir)/`rcparse.c $(NO_WERROR)
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rcparse.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f rcparse.c || echo $(srcdir)/`rcparse.c $(NO_WERROR)
+
+mcparse.@OBJEXT@: mcparse.c
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `test -f mcparse.c || echo $(srcdir)/`mcparse.c $(NO_WERROR)
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mcparse.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f mcparse.c || echo $(srcdir)/`mcparse.c $(NO_WERROR)
+
+rclex.@OBJEXT@: rclex.c
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(srcdir)/rclex.c $(NO_WERROR)
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rclex.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $(srcdir)/rclex.c $(NO_WERROR)
+
+mclex.@OBJEXT@: mclex.c
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(srcdir)/mclex.c $(NO_WERROR)
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mclex.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $(srcdir)/mclex.c $(NO_WERROR)
+srconv.@OBJEXT@: sysroff.c
+
+dlltool.@OBJEXT@:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(DLLTOOL_DEFS) $(srcdir)/dlltool.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dlltool.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $(DLLTOOL_DEFS) $(srcdir)/dlltool.c
+
+rescoff.@OBJEXT@:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(DLLTOOL_DEFS) $(srcdir)/rescoff.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rescoff.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $(DLLTOOL_DEFS) $(srcdir)/rescoff.c
+sysdump.@OBJEXT@: sysroff.c
+
+# coff/sym.h and coff/ecoff.h won't be found by the automatic dependency
+# scripts, since they are only included conditionally.
+nlmconv.@OBJEXT@: nlmconv.c
+@am__fastdepCC_TRUE@ ldname=`echo ld | sed '$(transform)'`; \
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ \
+@am__fastdepCC_TRUE@ -DLD_NAME="\"$${ldname}\"" @NLMCONV_DEFS@ $(srcdir)/nlmconv.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nlmconv.c' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ ldname=`echo ld | sed '$(transform)'`; \
+@am__fastdepCC_FALSE@ $(COMPILE) -c -DLD_NAME="\"$${ldname}\"" @NLMCONV_DEFS@ $(srcdir)/nlmconv.c
+
+diststuff: $(EXTRA_DIST) info
+all: info
+mostlyclean-local:
+ -rm -rf tmpdir
+
+.PHONY: install-exec-local
+
+install-exec-local: install-binPROGRAMS $(bin_PROGRAMS) $(noinst_PROGRAMS)
+ @list='$(RENAMED_PROGS)'; for p in $$list; do \
+ if test -f $$p$(EXEEXT); then \
+ echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p$(EXEEXT) $(bindir)/`echo $$p|sed -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+ $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p$(EXEEXT) $(DESTDIR)$(bindir)/`echo $$p|sed -e 's/-new//' -e 's/cxxfilt/$(DEMANGLER_NAME)/'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+ else :; fi; \
+ done
+ $(mkinstalldirs) $(DESTDIR)$(tooldir)/bin
+ for i in $(TOOL_PROGS); do \
+ if [ -f $$i$(EXEEXT) ]; then \
+ j=`echo $$i | sed -e 's/-new//'`; \
+ k=`echo $$j | sed '$(transform)'`; \
+ if [ "$(bindir)/$$k" != "$(tooldir)/bin/$$j" ]; then \
+ rm -f $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT); \
+ ln $(DESTDIR)$(bindir)/$$k$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT) >/dev/null 2>/dev/null \
+ || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$i$(EXEEXT) $(DESTDIR)$(tooldir)/bin/$$j$(EXEEXT); \
+ fi; \
+ else true; \
+ fi; \
+ done
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/binutils-2.24/binutils/NEWS b/binutils-2.24/binutils/NEWS
new file mode 100644
index 00000000..26555b09
--- /dev/null
+++ b/binutils-2.24/binutils/NEWS
@@ -0,0 +1,492 @@
+-*- text -*-
+
+Changes in 2.24:
+
+* Objcopy now supports wildcard characters in command line options that take
+ section names.
+
+* Add support for Altera Nios II.
+
+Changes in 2.23:
+
+* Add support for the VLE extension to the PowerPC architecture.
+
+* Add support for x64 Windows target of the delayed-load-library.
+
+* Add support for the Renesas RL78 architecture.
+
+Changes in 2.22:
+
+* Add support for displaying the contents of .debug.macro sections.
+
+* Add --preprocessor-arg option to windres to specify additional options
+ passed to preprocessor.
+
+* Add --dwarf-start and --dwarf-end to readelf and objdump. These are used by
+ the new Emacs mode, see dwarf-mode.el.
+
+* Add support for the Tilera TILEPro and TILE-Gx architectures.
+
+changes in 2.21:
+
+* Add --interleave-width option to objcopy to allowing copying a range of
+ bytes from the input to the output with the --interleave option.
+
+* Add support for the TMS320C6000 (TI C6X) processor family.
+
+* Readelf can now display ARM unwind tables (.ARM.exidx / .ARM.extab) using
+ the -u / --unwind option.
+
+* Add --dyn-syms to readelf to dump dynamic symbol table.
+
+* A new tool - elfedit - has been added to directly manipulate ELF format
+ binaries.
+
+* Add to dlltool .def file feature of aliasing PE internal symbol name by
+ '== <ID>' option.
+
+* Add a new command line option -a / --addresses to addr2line to display the
+ address before function name or source filename.
+
+* Add a new command line option -p / --pretty-print to addr2line to have
+ a more human readable output.
+
+* The hppa/som targets can now be compiled on any host.
+
+Changes in 2.20:
+
+* Add support for delay importing to dlltool. Use the --output-delaylib <file>
+ switch to create a delay-import library. The resulting app will load the dll
+ as soon as the first function is called. It will link to __delayLoadHelper2()
+ from the static delayimp library, which will import LoadLibraryA and
+ GetProcAddress from kernel32.
+
+* Add a new command line option, --insn-width=WIDTH, to objdump to specify
+ number of bytes to be displayed on a single line when disassembling
+ instructions.
+
+* Readelf can now display the relocated contents of a section as a sequence
+ of bytes via the --relocated-dump=<name|number> command line option.
+
+* The gprof program has been given a new command line option:
+ --external-symbols-table=<filename> which reads in symbols from a specified
+ file.
+
+* The plugin target has been added to bfd. It can load the same shared objects
+ used by gold and uses them to provide basic support for new file formats.
+
+* The verilog memory hex dump file format is now supported as an output format
+ for objcopy.
+
+* Add --file-alignment, --heap, --image-base, --section-alignment,
+ --stack and --subsystem command line options to objcopy, which will
+ set PE optional header.
+
+* Option --dwarf/-W of objdump is now as flexible as readelf --debug-dump/-w.
+
+* --as-needed now links in a dynamic library if it satisfies undefined
+ symbols in regular objects, or in other dynamic libraries. In the
+ latter case the library is not linked if it is found in a DT_NEEDED
+ entry of one of the libraries already linked.
+
+* Added --prefix=PREFIX and --prefix-strip=LEVEL switches to objdump to
+ add absolute paths for -S.
+
+* Add new option --use-nul-prefixed-import-tables to dlltool to allow fall-
+ back to old import table generation with null element prefix.
+
+* Added --identify-strict switch to cause --identify <implib> to
+ report an error when the import library is associated with
+ multiple DLLs.
+
+* Added --identify <implib> option to dlltool, which determines the
+ name of the DLL associated with the specified <implib>.
+
+* Support for PowerPC booke64 instructions has been removed. The assembler no
+ longer accepts -mbooke32 or -mbooke64 and the disassembler no longer accepts
+ -Mbooke32 or -Mbooke64. Instead, -mbooke and -Mbooke should be used.
+
+Changes in 2.19:
+
+* Added -wL switch to dump decoded contents of .debug_line.
+
+* Added support for "thin" archives which contain pathnames pointing to
+ object files rather than the files themselves and which contain a
+ flattened symbol index for all objects, and archives, which have been
+ added to the archive.
+
+* Added -F switch to objdump to include file offsets in the disassembly.
+
+* Added -c switch to readelf to allow string dumps of archive symbol index.
+
+* Support for SSE5 has been added to the i386 port.
+
+* Added -p switch to readelf to allow string dumps of sections.
+
+Changes in 2.18:
+
+* Resolved 37 coding problems in bfd including static array overruns, null
+ pointer dereferences and use of a malloc buffer after it has been freed, as
+ revealed by static analysis donated by Coverity, Inc. (http://scan.coverity.com).
+
+* The binutils sources are now released under version 3 of the GNU General
+ Public License.
+
+* A new tool "windmc" has been added for some targets. This is a message
+ compiler which attempts to be compatible with the MS version.
+
+* Add codepage support to the windres tool. It now supports many new
+ resource types (e.g. MANIFEST, TOOLBAR, etc). The output generation
+ for binary files is done now via bfd itself. The endianess problems
+ for different hosts are solved. Dumps of .res files can now be
+ re-compiled by windres without lossing resources or compilation errors.
+ Some problems on dialog resource translations are corrected.
+
+* Add --extract-symbol command line option to objcopy, which will
+ strip everything out of an ordinary object file or executable except
+ for its symbol table. Files containing just symbols can be useful
+ to some OSes.
+
+Changes in 2.17:
+
+* Add "-x NAME" to readelf in addition to "-x NUMBER".
+
+* Add -i and -t switches to cxxfilt. -i disables the display of implementation
+ specific extra demangling information (if any) and -t disables the demangling
+ of types.
+
+* Add support for the "@<file>" syntax to the command lines of all tools, so
+ that extra switches can be read from <file>.
+
+* Add "-W/--dwarf" to objdump to display the contents of the DWARF
+ debug sections.
+
+* Add "-t/--section-details" to readelf to display section details.
+ "-N/--full-section-name" is deprecated.
+
+* powerpc-linux ld now supports a variant form of PLT and GOT for the security
+ conscious. This form will automatically be chosen when ld detects that all
+ code in regular object files was generated by gcc -msecure-plt. The old PLT
+ and GOT may be forced by a new ld option, --bss-plt.
+
+* Add "-i/--inlines" to addr2line to print enclosing scope information
+ for inlined function chains, back to first non-inlined function.
+
+* Add "-N/--full-section-name" to readelf to display full section name.
+
+* Add "-M entry:<addr>" switch to objdump to specify a function entry address
+ when disassembling VAX binaries.
+
+* Add "--globalize-symbol <name>" and "--globalize-symbols <filename>" switches
+ to objcopy to convert local symbols into global symbols.
+
+* gprof now allows input files to have histogram records for
+ several memory ranges, provided those ranges are disjoint.
+
+Changes in 2.16:
+
+* Add "-g/--section-groups" to readelf to display section groups.
+
+* objcopy recognizes two new options --strip-unneeded-symbol and
+ --strip-unneeded-symbols, namely for use together with the wildcard
+ matching the original --strip-symbol/--strip-symbols provided, but
+ retaining any symbols matching but needed by relocations.
+
+* readelf can now display address ranges from .debug_range sections. This
+ happens automatically when a DW_AT_range attribute is encountered. The
+ command line switch --debug-dump=Ranges (or -wR) can also be used to display
+ the contents of the .debug_range section.
+
+* nm and objdump now have a switch "--special-syms" to enable the displaying of
+ symbols which the target considers to be special. By default these symbols
+ are no longer displayed. Currently the only special symbols are the Mapping
+ symbols used by the ARM port to mark transitions between text and data and
+ between ARM and THUMB code.
+
+* dlltool has a switch "--ext-prefix-alias <prefix>" to generate additional
+ import and export symbols with <preifx> prepended to them.
+
+Changes in 2.15:
+
+* objcopy for MIPS targets now accepts "-M no-aliases" as an option to the
+ disassembler to print the "raw" mips instruction mnemonic instead of some
+ pseudo instruction name. I.E. print "daddu" or "or" instead of "move",
+ "sll" instead of "nop", etc.
+
+* objcopy and strip can now take wildcard patterns in symbol names specified on
+ the command line provided that the --wildcard switch is used to enable them.
+
+* readelf can now parse archives.
+
+* objdump now accepts --debugging-tags to print the debug information in a
+ format compatible with ctags tool.
+
+* objcopy and strip now accept --only-keep-debug to create a file containing
+ those sections that would be stripped out by --strip-debug. The idea is that
+ this can be used in conjunction with the --add-gnu-debuglink switch to create
+ a two part program distribution - one a stripped executable and the other the
+ debugging info.
+
+* objcopy now accepts --add-gnu-debuglink=<file> to insert a .gnu_debuglink
+ section into a (presumably stripped) executable. This allows the debug
+ information for the file to be held in a separate file.
+
+* BFD marks the sections .comment and .note as 'n' in the BSD/POSIX
+ single-character representation. This can be checked by running nm
+ with the -a switch.
+
+Changes in 2.14:
+
+* Added --info switch to objcopy and strip.
+
+* Support for Vitesse IQ2000 added by Red Hat.
+
+* Added 'S' encoding to strings to allow the display of 8-bit characters.
+
+* Added --prefix-symbols=<text>, --prefix-sections=<text> and
+ --prefix-alloc-sections=<text> to objcopy.
+
+* readelf can handle the extensions to the DWARF2 spec used by the Unified
+ Parallel C compiler.
+
+* BFD no longer declares a "boolean" type, to avoid clashes with other
+ headers that declare the same. Users of BFD should replace boolean,
+ false and true, with int, 0 and 1, or define their own boolean type.
+
+* Support for IP2K added by Denis Chertykov.
+
+Changes in 2.13:
+
+* Support for the Fujitsu FRV architecture added by Red Hat. Models for FR400
+ and FR500 included.
+
+Changes in version 2.12:
+
+* Support for Don Knuth's MMIX, by Hans-Peter Nilsson.
+
+* size: Add --totals to display summary of sizes (Berkeley format only).
+
+* readelf: Add --wide option to not break section header or segment listing
+ lines to fit into 80 columns.
+
+* strings: Add --encoding to display wide character strings. By Markus Kuhn.
+
+* objcopy: Add --rename-section to change section names.
+
+* readelf: Support added for DWARF 2.1 extensions. Support added for
+ displaying the contents of .debug.macinfo sections.
+
+* New command line switches added to objcopy to allow symbols to be kept as
+ global symbols, and also to specify files containing lists of such symbols.
+ by Honda Hiroki.
+
+* Support for OpenRISC by Johan Rydberg.
+
+* New command line switch to objcopy --alt-machine-code which creates a binary
+ with an alternate machine code if one is defined in the architecture
+ description. Only supported for ELF targets. By Alexandre Oliva.
+
+* New command line switch to objcopy -B (or --binary-architecture) which sets
+ the architecture of the output file to the given argument. This option only
+ makes sense, if the input target is binary. Otherwise it is ignored.
+ By Stefan Geuken.
+
+* Support for PDP-11 by Lars Brinkhoff.
+
+Changes in binutils 2.11:
+
+* Add support for ARM v5t and v5te architectures and Intel's XScale ARM
+ extenstions.
+
+* Add --srec-len and --srec-forceS3 command line switch to objcopy.
+ By Luciano Gemme.
+
+* Support for the MIPS32, by Anders Norlander.
+
+* Support for the i860, by Jason Eckhardt.
+
+* Support for CRIS (Axis Communications ETRAX series).
+
+Changes in binutils 2.10:
+
+* Support for 64-bit ELF on HPPA.
+
+* New command line switch to objdump --file-start-context which shows the
+ entire file contents up to the source line first encountered for a given
+ file.
+
+* New command line switch to objdump -M (or --disassembler-options) which takes
+ a parameter which can then be interpreted on a per-target basis by the
+ disassembler. Used by ARM targets to select register name sets, ISA, APCS or
+ raw verions.
+
+* objdump support for -mi386:intel which causes disassembly to be displayed
+ with intel syntax.
+
+* New program: readelf. This displays the contents of ELF format files,
+ regardless of target machine.
+
+* objcopy now takes --change-section-lma, --change-section-vma, and
+ --change-section-address options. The old --adjust-section-vma option is
+ equivalent to --change-section-address. The other --adjust-* options are now
+ renamed to --change-*, although --adjust-* continues to work.
+
+* objcopy has a --redefine-sym option that lets you rename symbols.
+
+* objcopy now takes a -j/--only-section option to copy only the specified
+ sections.
+
+* dlltool now supports the IMPORTS command.
+
+* dlltool now takes --export-all-symbols, --no-export-all-symbols,
+ --exclude-symbols, and --no-default-excludes options.
+
+Changes in binutils 2.9:
+
+* Added windres program, which can be used to manipulate resources in WIN32
+ files as used on Windows 95 and Windows NT.
+
+* The objcopy --gap-fill and --pad-to options operate on the LMA rather than
+ the VMA of the sections.
+
+* Added S modifier to ar to not build a symbol table.
+
+Changes in binutils 2.8:
+
+* The objdump disassembly format has been changed, and hopefully improved. Use
+ the new --prefix-addresses option to get the old format. There are also new
+ --disassemble-zeroes and --no-show-raw-insn options which affect disassembler
+ output.
+
+* Formats may now be specified as configuration triplets. For example,
+ objdump -b i386-pc-linux. The triplets are not passed through config.sub,
+ so they must be in canonical form.
+
+* Added new addr2line program. This uses the debugging information to convert
+ an address into a file name and line number within a program.
+
+* Added --change-leading-char argument to objcopy.
+
+* Added --weaken argument to objcopy.
+
+* objdump --dynamic-reloc now works on ELF executables and shared libraries.
+
+* Added --adjust-vma option to objdump.
+
+* Added -C/--demangle option to objdump.
+
+* Added -p/--preserve-dates option to strip and objcopy.
+
+Changes in binutils 2.7:
+
+* Added --enable-shared and --enable-commonbfdlib options to configure.
+
+* Added --debugging argument to objdump and objcopy.
+
+* Added --defined-only argument to nm.
+
+* Added --remove-leading-char argument to objcopy.
+
+* The objdump --line-numbers option is now meaningful with --reloc.
+
+* Added --line-numbers option to nm.
+
+* Added --endian/-EB/-EL option to objdump.
+
+* Added support for Alpha OpenVMS/AXP.
+
+Changes in binutils 2.6:
+
+* Added -N/--strip-symbol and -K/--keep-symbol arguments to strip and objcopy.
+
+* Added several arguments to objcopy to provide some control over how the new
+ file is laid out in memory. Also added binary output format to BFD to permit
+ generating plain binary files.
+
+* Added --start-address and --stop-address options to objdump.
+
+* ar and ranlib now work on AIX. The tools are now built by default on AIX.
+
+Changes in binutils 2.5:
+
+* Changed objdump -dr to dump the relocs interspersed with the assembly
+ listing, for a more useful listing of relocatable files.
+
+* Changed objdump -d/--disassemble to only disassemble SEC_CODE sections.
+ Added -D/--disassemble-all option to disassemble all sections.
+
+* Added --size-sort option to nm.
+
+* strip and objcopy should now be able to handle dynamically linked ELF
+ executables.
+
+Changes in binutils 2.4:
+
+* Support for HP-PA (by Jeff Law), i386 Mach (by David Mackenzie), RS/6000 and
+ PowerPC (except ar and ranlib; by Ian Taylor).
+
+* Support for Irix 5.
+
+* Programs `strip' and `objcopy' will not attempt to write dynamically linked
+ ELF output files, since BFD currently can't create them properly.
+
+Changes in binutils 2.3:
+
+* A new --stabs argument has been added to objdump to dump stabs sections in
+ ELF and COFF files.
+
+* A new program, nlmconv, has been added. It can convert object files into
+ Novell NetWare Loadable Modules.
+
+* The strings program has been added.
+
+Changes in binutils 2.2:
+
+* The 'copy' program has been renamed to 'objcopy', for consistency with
+ 'objdump', and because 'copy' might more plausibly be used as a synonym for
+ 'cp'.
+
+* The new stand-alone program c++filt is a filter that converts encoded
+ (mangled) C++ assembly-level identifiers to user-level names. (Note: This
+ may get moved to the gcc distribution.)
+
+* nm -o on an archive now prefixes each line with the archive name, matching
+ the output from BSD nm.
+
+* ar (and ld) can now read (but not write) BSD4.4-style archives.
+
+* New support for H8500, Z8000, and the Hitach SH.
+
+* Dis-assembler interface changed to allow sharing with gdb.
+
+* There is new Elf code, but it is not yet ready for general use.
+
+* There is the beginnings of a test suite.
+
+Changes in binutils 2.1:
+
+* There is now support for writing ECOFF files, so ld and the other utilities
+ should work on Risc/Ultrix and Irix. Please let us know how well this works.
+
+* ar now automatically creates a symbol table (a __.SYMDEF member, in the BSD
+ version), if there are any object files in the archive. So running ranlib is
+ now redundant (unless the non-standard q command is used). This is required
+ for Posix.2 conformance.
+
+* The archive-reading code now reads both BSD-style and SYSV-style archives
+ independently of the selected target format. This is to encourage people to
+ switch to SYSV-format, which has a number of advantages.
+
+* The strip and copy programs now have options to remove debug-symbols only
+ and/or local symbols only. They now also support long options.
+
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local variables:
+fill-column: 79
+End:
diff --git a/binutils-2.24/binutils/README b/binutils-2.24/binutils/README
new file mode 100644
index 00000000..6d8a1346
--- /dev/null
+++ b/binutils-2.24/binutils/README
@@ -0,0 +1,290 @@
+ README for BINUTILS
+
+These are the GNU binutils. These are utilities of use when dealing
+with binary files, either object files or executables. These tools
+consist of the linker (ld), the assembler (gas), and the profiler
+(gprof) each of which have their own sub-directory named after them.
+There is also a collection of other binary tools, including the
+disassembler (objdump) in this directory. These tools make use of a
+pair of libraries (bfd and opcodes) and a common set of header files
+(include).
+
+There are README and NEWS files in most of the program sub-directories
+which give more information about those specific programs.
+
+
+Unpacking and Installation -- quick overview
+============================================
+
+When you unpack the binutils archive file, you will get a directory
+called something like `binutils-XXX', where XXX is the number of the
+release. (Probably 2.13 or higher). This directory contains
+various files and sub-directories. Most of the files in the top
+directory are for information and for configuration. The actual
+source code is in sub-directories.
+
+To build binutils, you can just do:
+
+ cd binutils-XXX
+ ./configure [options]
+ make
+ make install # copies the programs files into /usr/local/bin
+ # by default.
+
+This will configure and build all the libraries as well as the
+assembler, the binutils, and the linker.
+
+If you have GNU make, we recommend building in a different directory:
+
+ mkdir objdir
+ cd objdir
+ ../binutils-XXX/configure [options]
+ make
+ make install
+
+This relies on the VPATH feature of GNU make.
+
+By default, the binutils will be configured to support the system on
+which they are built. When doing cross development, use the --target
+configure option to specify a different target, eg:
+
+ ./configure --target=foo-elf
+
+The --enable-targets option adds support for more binary file formats
+besides the default. List them as the argument to --enable-targets,
+separated by commas. For example:
+
+ ./configure --enable-targets=sun3,rs6000-aix,decstation
+
+The name 'all' compiles in support for all valid BFD targets:
+
+ ./configure --enable-targets=all
+
+On 32-bit hosts though, this support will be restricted to 32-bit
+target unless the --enable-64-bit-bfd option is also used:
+
+ ./configure --enable-64-bit-bfd --enable-targets=all
+
+You can also specify the --enable-shared option when you run
+configure. This will build the BFD and opcodes libraries as shared
+libraries. You can use arguments with the --enable-shared option to
+indicate that only certain libraries should be built shared; for
+example, --enable-shared=bfd. The only potential shared libraries in
+a binutils release are bfd and opcodes.
+
+The binutils will be linked against the shared libraries. The build
+step will attempt to place the correct library in the run-time search
+path for the binaries. However, in some cases, after you install the
+binaries, you may have to set an environment variable, normally
+LD_LIBRARY_PATH, so that the system can find the installed libbfd
+shared library.
+
+On hosts that support shared system libraries the binutils will be
+linked against them. If you have static versions of the system
+libraries installed as well and you wish to create static binaries
+instead then use the LDFLAGS environment variable, like this:
+
+ ../binutils-XXX/configure LDFLAGS="--static" [more options]
+
+Note: the two dashes are important. The binutils make use of the
+libtool script which has a special interpretation of "-static" when it
+is in the LDFLAGS environment variable.
+
+To build under openVMS/AXP, see the file makefile.vms in the top level
+directory.
+
+
+Native Language Support
+=======================
+
+By default Native Language Support will be enabled for binutils. On
+some systems however this support is not present and can lead to error
+messages such as "undefined reference to `libintl_gettext'" when
+building there tools. If that happens the NLS support can be disabled
+by adding the --disable-nls switch to the configure line like this:
+
+ ../binutils-XXX/configure --disable-nls
+
+
+If you don't have ar
+====================
+
+If your system does not already have an 'ar' program, the normal
+binutils build process will not work. In this case, run configure as
+usual. Before running make, run this script:
+
+#!/bin/sh
+MAKE_PROG="${MAKE-make}"
+MAKE="${MAKE_PROG} AR=true LINK=true"
+export MAKE
+${MAKE} $* all-libiberty
+${MAKE} $* all-intl
+${MAKE} $* all-bfd
+cd binutils
+MAKE="${MAKE_PROG}"
+export MAKE
+${MAKE} $* ar_DEPENDENCIES= ar_LDADD='../bfd/*.o ../libiberty/*.o `if test -f ../intl/gettext.o; then echo '../intl/*.o'; fi`' ar
+
+This script will build an ar program in binutils/ar. Move binutils/ar
+into a directory on your PATH. After doing this, you can run make as
+usual to build the complete binutils distribution. You do not need
+the ranlib program in order to build the distribution.
+
+Porting
+=======
+
+Binutils-2.13 supports many different architectures, but there
+are many more not supported, including some that were supported
+by earlier versions. We are hoping for volunteers to improve this
+situation.
+
+The major effort in porting binutils to a new host and/or target
+architecture involves the BFD library. There is some documentation
+in ../bfd/doc. The file ../gdb/doc/gdbint.texinfo (distributed
+with gdb-5.x) may also be of help.
+
+Reporting bugs
+==============
+
+Send bug reports and patches to:
+
+ bug-binutils@gnu.org.
+
+Please include the following in bug reports:
+
+- A description of exactly what went wrong, and exactly what should have
+ happened instead.
+
+- The configuration name(s) given to the "configure" script. The
+ "config.status" file should have this information. This is assuming
+ you built binutils yourself. If you didn't build binutils youself,
+ then we need information regarding your machine and operating system,
+ and it may be more appropriate to report bugs to wherever you obtained
+ binutils.
+
+- The options given to the tool (gas, objcopy, ld etc.) at run time.
+
+- The actual input file that caused the problem.
+
+Always mention the version number you are running; this is printed by
+running any of the binutils with the --version option. We appreciate
+reports about bugs, but we do not promise to fix them, particularly so
+when the bug report is against an old version. If you are able, please
+consider building the latest tools from CVS to check that your bug has
+not already been fixed.
+
+When reporting problems about gas and ld, it's useful to provide a
+testcase that triggers the problem. In the case of a gas problem, we
+want input files to gas and command line switches used. The inputs to
+gas are _NOT_ .c or .i files, but rather .s files. If your original
+source was a C program, you can generate the .s file and see the command
+line options by passing -v -save-temps to gcc in addition to all the
+usual options you use. The reason we don't want C files is that we
+might not have a C compiler around for the target you use. While it
+might be possible to build a compiler, that takes considerable time and
+disk space, and we might not end up with exactly the same compiler you
+use.
+
+In the case of a ld problem, the input files are .o, .a and .so files,
+and possibly a linker script specified with -T. Again, when using gcc
+to link, you can see these files by adding options to the gcc command
+line. Use -v -save-temps -Wl,-t, except that on targets that use gcc's
+collect2, you would add -v -save-temps -Wl,-t,-debug. The -t option
+tells ld to print all files and libraries used, so that, for example,
+you can associate -lc on the ld command line with the actual libc used.
+Note that your simple two line C program to trigger a problem typically
+expands into several megabytes of objects by the time you include
+libraries.
+
+It is antisocial to post megabyte sized attachments to mailing lists, so
+please put large testcases somewhere on an ftp or web site so that only
+interested developers need to download them, or offer to email them on
+request. Better still, try to reduce the testcase, for example, try to
+develop a ld testcase that doesn't use system libraries. However,
+please be sure it is a complete testcase and that it really does
+demonstrate the problem. Also, don't bother paring it down if that will
+cause large delays in filing the bug report.
+
+If you expect to be contributing a large number of test cases, it would
+be helpful if you would look at the test suite included in the release
+(based on the Deja Gnu testing framework, available from the usual ftp
+sites) and write test cases to fit into that framework. This is
+certainly not required.
+
+VMS
+===
+
+This section was written by Klaus K"ampf <kkaempf@rmi.de>. It
+describes how to build and install the binutils on openVMS (Alpha and
+Vax). (The BFD library only supports reading Vax object files.)
+
+Compiling the release:
+
+To compile the gnu binary utilities and the gnu assembler, you'll
+need DEC C or GNU C for openVMS/Alpha. You'll need *both* compilers
+on openVMS/Vax.
+
+Compiling with either DEC C or GNU C works on openVMS/Alpha only. Some
+of the opcodes and binutils files trap a bug in the DEC C optimizer,
+so these files must be compiled with /noopt.
+
+Compiling on openVMS/Vax is a bit complicated, as the bfd library traps
+a bug in GNU C and the gnu assembler a bug in (my version of) DEC C.
+
+I never tried compiling with VAX C.
+
+
+You further need GNU Make Version 3.76 or later. This is available
+at ftp.progis.de or any GNU archive site. The makefiles assume that
+gmake starts gnu make as a foreign command.
+
+If you're compiling with DEC C or VAX C, you must run
+
+ $ @setup
+
+before starting gnu-make. This isn't needed with GNU C.
+
+On the Alpha you can choose the compiler by editing the toplevel
+makefile.vms. Either select CC=cc (for DEC C) or CC=gcc (for GNU C)
+
+
+Installing the release
+
+Provided that your directory setup conforms to the GNU on openVMS
+standard, you already have a concealed device named 'GNU_ROOT'.
+In this case, a simple
+
+ $ gmake install
+
+suffices to copy all programs and libraries to the proper directories.
+
+Define the programs as foreign commands by adding these lines to your
+login.com:
+
+ $ gas :== $GNU_ROOT:[bin]as.exe
+ $ size :== $GNU_ROOT:[bin]size.exe
+ $ nm :== $GNU_ROOT:[bin]nm.exe
+ $ objdump :== $GNU_ROOT:[bin]objdump.exe
+ $ strings :== $GNU_ROOT:[bin]strings.exe
+
+If you have a different directory setup, copy the binary utilities
+([.binutils]size.exe, [.binutils]nm.exe, [.binutils]objdump.exe,
+and [.binutils]strings.exe) and the gnu assembler and preprocessor
+([.gas]as.exe and [.gas]gasp.exe]) to a directory of your choice
+and define all programs as foreign commands.
+
+
+If you're satisfied with the compilation, you may want to remove
+unneeded objects and libraries:
+
+ $ gmake clean
+
+
+If you have any problems or questions about the binutils on VMS, feel
+free to mail me at kkaempf@rmi.de.
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/binutils-2.24/binutils/aclocal.m4 b/binutils-2.24/binutils/aclocal.m4
new file mode 100644
index 00000000..fd838a64
--- /dev/null
+++ b/binutils-2.24/binutils/aclocal.m4
@@ -0,0 +1,1013 @@
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.64],,
+[m4_warning([this file was generated for autoconf 2.64.
+You have another version of autoconf. It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.11.1], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
+else
+ $1_TRUE='#'
+ $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 10
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery. Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
+ [$1], CXX, [depcc="$CXX" am_compiler_list=],
+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+ [$1], UPC, [depcc="$UPC" am_compiler_list=],
+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
+ [depcc="$$1" am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+ [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_$1_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+ fi
+ am__universal=false
+ m4_case([$1], [CC],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac],
+ [CXX],
+ [case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac])
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_$1_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`AS_DIRNAME("$mf")`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`AS_DIRNAME(["$file"])`
+ AS_MKDIR_P([$dirpart/$fdir])
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled. FIXME. This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_PROG_LEX
+# -----------
+# Autoconf leaves LEX=: if lex or flex can't be found. Change that to a
+# "missing" invocation, for better error output.
+AC_DEFUN([AM_PROG_LEX],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AM_MISSING_HAS_RUN])dnl
+AC_REQUIRE([AC_PROG_LEX])dnl
+if test "$LEX" = :; then
+ LEX=${am_missing_run}flex
+fi])
+
+# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well. Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+ [enable], [m4_define([am_maintainer_other], [disable])],
+ [disable], [m4_define([am_maintainer_other], [enable])],
+ [m4_define([am_maintainer_other], [enable])
+ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+ dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+ AC_ARG_ENABLE([maintainer-mode],
+[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer],
+ [USE_MAINTAINER_MODE=$enableval],
+ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+ AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+ MAINT=$MAINTAINER_MODE_TRUE
+ AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[[\\\"\#\$\&\'\`$am_lf]]*)
+ AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([../bfd/acinclude.m4])
+m4_include([../bfd/warning.m4])
+m4_include([../config/acx.m4])
+m4_include([../config/depstand.m4])
+m4_include([../config/gettext-sister.m4])
+m4_include([../config/iconv.m4])
+m4_include([../config/largefile.m4])
+m4_include([../config/lcmessage.m4])
+m4_include([../config/lead-dot.m4])
+m4_include([../config/lib-ld.m4])
+m4_include([../config/lib-link.m4])
+m4_include([../config/lib-prefix.m4])
+m4_include([../config/nls.m4])
+m4_include([../config/override.m4])
+m4_include([../config/plugins.m4])
+m4_include([../config/po.m4])
+m4_include([../config/progtest.m4])
+m4_include([../libtool.m4])
+m4_include([../ltoptions.m4])
+m4_include([../ltsugar.m4])
+m4_include([../ltversion.m4])
+m4_include([../lt~obsolete.m4])
diff --git a/binutils-2.24/binutils/addr2line.c b/binutils-2.24/binutils/addr2line.c
new file mode 100644
index 00000000..0de73982
--- /dev/null
+++ b/binutils-2.24/binutils/addr2line.c
@@ -0,0 +1,502 @@
+/* addr2line.c -- convert addresses to line number and function name
+ Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+ 2007, 2009 Free Software Foundation, Inc.
+ Contributed by Ulrich Lauther <Ulrich.Lauther@mchp.siemens.de>
+
+ 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+
+/* Derived from objdump.c and nm.c by Ulrich.Lauther@mchp.siemens.de
+
+ Usage:
+ addr2line [options] addr addr ...
+ or
+ addr2line [options]
+
+ both forms write results to stdout, the second form reads addresses
+ to be converted from stdin. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "getopt.h"
+#include "libiberty.h"
+#include "demangle.h"
+#include "bucomm.h"
+#include "elf-bfd.h"
+
+static bfd_boolean unwind_inlines; /* -i, unwind inlined functions. */
+static bfd_boolean with_addresses; /* -a, show addresses. */
+static bfd_boolean with_functions; /* -f, show function names. */
+static bfd_boolean do_demangle; /* -C, demangle names. */
+static bfd_boolean pretty_print; /* -p, print on one line. */
+static bfd_boolean base_names; /* -s, strip directory names. */
+
+static int naddr; /* Number of addresses to process. */
+static char **addr; /* Hex addresses to process. */
+
+static asymbol **syms; /* Symbol table. */
+
+static struct option long_options[] =
+{
+ {"addresses", no_argument, NULL, 'a'},
+ {"basenames", no_argument, NULL, 's'},
+ {"demangle", optional_argument, NULL, 'C'},
+ {"exe", required_argument, NULL, 'e'},
+ {"functions", no_argument, NULL, 'f'},
+ {"inlines", no_argument, NULL, 'i'},
+ {"pretty-print", no_argument, NULL, 'p'},
+ {"section", required_argument, NULL, 'j'},
+ {"target", required_argument, NULL, 'b'},
+ {"help", no_argument, NULL, 'H'},
+ {"version", no_argument, NULL, 'V'},
+ {0, no_argument, 0, 0}
+};
+
+static void usage (FILE *, int);
+static void slurp_symtab (bfd *);
+static void find_address_in_section (bfd *, asection *, void *);
+static void find_offset_in_section (bfd *, asection *);
+static void translate_addresses (bfd *, asection *);
+
+/* Print a usage message to STREAM and exit with STATUS. */
+
+static void
+usage (FILE *stream, int status)
+{
+ fprintf (stream, _("Usage: %s [option(s)] [addr(s)]\n"), program_name);
+ fprintf (stream, _(" Convert addresses into line number/file name pairs.\n"));
+ fprintf (stream, _(" If no addresses are specified on the command line, they will be read from stdin\n"));
+ fprintf (stream, _(" The options are:\n\
+ @<file> Read options from <file>\n\
+ -a --addresses Show addresses\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 Unwind inlined functions\n\
+ -j --section=<name> Read section-relative offsets instead of addresses\n\
+ -p --pretty-print Make the output easier to read for humans\n\
+ -s --basenames Strip directory names\n\
+ -f --functions Show function names\n\
+ -C --demangle[=style] Demangle function names\n\
+ -h --help Display this information\n\
+ -v --version Display the program's version\n\
+\n"));
+
+ list_supported_targets (program_name, stream);
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+ exit (status);
+}
+
+/* Read in the symbol table. */
+
+static void
+slurp_symtab (bfd *abfd)
+{
+ long storage;
+ long symcount;
+ bfd_boolean dynamic = FALSE;
+
+ if ((bfd_get_file_flags (abfd) & HAS_SYMS) == 0)
+ return;
+
+ storage = bfd_get_symtab_upper_bound (abfd);
+ if (storage == 0)
+ {
+ storage = bfd_get_dynamic_symtab_upper_bound (abfd);
+ dynamic = TRUE;
+ }
+ if (storage < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ syms = (asymbol **) xmalloc (storage);
+ if (dynamic)
+ symcount = bfd_canonicalize_dynamic_symtab (abfd, syms);
+ else
+ symcount = bfd_canonicalize_symtab (abfd, syms);
+ if (symcount < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ /* If there are no symbols left after canonicalization and
+ we have not tried the dynamic symbols then give them a go. */
+ if (symcount == 0
+ && ! dynamic
+ && (storage = bfd_get_dynamic_symtab_upper_bound (abfd)) > 0)
+ {
+ free (syms);
+ syms = xmalloc (storage);
+ symcount = bfd_canonicalize_dynamic_symtab (abfd, syms);
+ }
+}
+
+/* These global variables are used to pass information between
+ translate_addresses and find_address_in_section. */
+
+static bfd_vma pc;
+static const char *filename;
+static const char *functionname;
+static unsigned int line;
+static unsigned int discriminator;
+static bfd_boolean found;
+
+/* Look for an address in a section. This is called via
+ bfd_map_over_sections. */
+
+static void
+find_address_in_section (bfd *abfd, asection *section,
+ void *data ATTRIBUTE_UNUSED)
+{
+ bfd_vma vma;
+ bfd_size_type size;
+
+ if (found)
+ return;
+
+ if ((bfd_get_section_flags (abfd, section) & SEC_ALLOC) == 0)
+ return;
+
+ vma = bfd_get_section_vma (abfd, section);
+ if (pc < vma)
+ return;
+
+ size = bfd_get_section_size (section);
+ if (pc >= vma + size)
+ return;
+
+ found = bfd_find_nearest_line_discriminator (abfd, section, syms, pc - vma,
+ &filename, &functionname,
+ &line, &discriminator);
+}
+
+/* Look for an offset in a section. This is directly called. */
+
+static void
+find_offset_in_section (bfd *abfd, asection *section)
+{
+ bfd_size_type size;
+
+ if (found)
+ return;
+
+ if ((bfd_get_section_flags (abfd, section) & SEC_ALLOC) == 0)
+ return;
+
+ size = bfd_get_section_size (section);
+ if (pc >= size)
+ return;
+
+ found = bfd_find_nearest_line_discriminator (abfd, section, syms, pc,
+ &filename, &functionname,
+ &line, &discriminator);
+}
+
+/* Read hexadecimal addresses from stdin, translate into
+ file_name:line_number and optionally function name. */
+
+static void
+translate_addresses (bfd *abfd, asection *section)
+{
+ int read_stdin = (naddr == 0);
+
+ for (;;)
+ {
+ if (read_stdin)
+ {
+ char addr_hex[100];
+
+ if (fgets (addr_hex, sizeof addr_hex, stdin) == NULL)
+ break;
+ pc = bfd_scan_vma (addr_hex, NULL, 16);
+ }
+ else
+ {
+ if (naddr <= 0)
+ break;
+ --naddr;
+ pc = bfd_scan_vma (*addr++, NULL, 16);
+ }
+
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
+ {
+ const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+ bfd_vma sign = (bfd_vma) 1 << (bed->s->arch_size - 1);
+
+ pc &= (sign << 1) - 1;
+ if (bed->sign_extend_vma)
+ pc = (pc ^ sign) - sign;
+ }
+
+ if (with_addresses)
+ {
+ printf ("0x");
+ bfd_printf_vma (abfd, pc);
+
+ if (pretty_print)
+ printf (": ");
+ else
+ printf ("\n");
+ }
+
+ found = FALSE;
+ if (section)
+ find_offset_in_section (abfd, section);
+ else
+ bfd_map_over_sections (abfd, find_address_in_section, NULL);
+
+ if (! found)
+ {
+ if (with_functions)
+ {
+ if (pretty_print)
+ printf ("?? ");
+ else
+ printf ("??\n");
+ }
+ printf ("??:0\n");
+ }
+ else
+ {
+ while (1)
+ {
+ if (with_functions)
+ {
+ const char *name;
+ char *alloc = NULL;
+
+ name = functionname;
+ if (name == NULL || *name == '\0')
+ name = "??";
+ else if (do_demangle)
+ {
+ alloc = bfd_demangle (abfd, name, DMGL_ANSI | DMGL_PARAMS);
+ if (alloc != NULL)
+ name = alloc;
+ }
+
+ printf ("%s", name);
+ if (pretty_print)
+ /* Note for translators: This printf is used to join the
+ function name just printed above to the line number/
+ file name pair that is about to be printed below. Eg:
+
+ foo at 123:bar.c */
+ printf (_(" at "));
+ else
+ printf ("\n");
+
+ if (alloc != NULL)
+ free (alloc);
+ }
+
+ if (base_names && filename != NULL)
+ {
+ char *h;
+
+ h = strrchr (filename, '/');
+ if (h != NULL)
+ filename = h + 1;
+ }
+
+ printf ("%s:", filename ? filename : "??");
+ if (line != 0)
+ {
+ if (discriminator != 0)
+ printf ("%u (discriminator %u)\n", line, discriminator);
+ else
+ printf ("%u\n", line);
+ }
+ else
+ printf ("?\n");
+ if (!unwind_inlines)
+ found = FALSE;
+ else
+ found = bfd_find_inliner_info (abfd, &filename, &functionname,
+ &line);
+ if (! found)
+ break;
+ if (pretty_print)
+ /* Note for translators: This printf is used to join the
+ line number/file name pair that has just been printed with
+ the line number/file name pair that is going to be printed
+ by the next iteration of the while loop. Eg:
+
+ 123:bar.c (inlined by) 456:main.c */
+ printf (_(" (inlined by) "));
+ }
+ }
+
+ /* fflush() is essential for using this command as a server
+ child process that reads addresses from a pipe and responds
+ with line number information, processing one address at a
+ time. */
+ fflush (stdout);
+ }
+}
+
+/* Process a file. Returns an exit value for main(). */
+
+static int
+process_file (const char *file_name, const char *section_name,
+ const char *target)
+{
+ bfd *abfd;
+ asection *section;
+ char **matching;
+
+ if (get_file_size (file_name) < 1)
+ return 1;
+
+ abfd = bfd_openr (file_name, target);
+ if (abfd == NULL)
+ bfd_fatal (file_name);
+
+ /* Decompress sections. */
+ abfd->flags |= BFD_DECOMPRESS;
+
+ if (bfd_check_format (abfd, bfd_archive))
+ fatal (_("%s: cannot get addresses from archive"), file_name);
+
+ if (! bfd_check_format_matches (abfd, bfd_object, &matching))
+ {
+ bfd_nonfatal (bfd_get_filename (abfd));
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ {
+ list_matching_formats (matching);
+ free (matching);
+ }
+ xexit (1);
+ }
+
+ if (section_name != NULL)
+ {
+ section = bfd_get_section_by_name (abfd, section_name);
+ if (section == NULL)
+ fatal (_("%s: cannot find section %s"), file_name, section_name);
+ }
+ else
+ section = NULL;
+
+ slurp_symtab (abfd);
+
+ translate_addresses (abfd, section);
+
+ if (syms != NULL)
+ {
+ free (syms);
+ syms = NULL;
+ }
+
+ bfd_close (abfd);
+
+ return 0;
+}
+
+int
+main (int argc, char **argv)
+{
+ const char *file_name;
+ const char *section_name;
+ char *target;
+ int c;
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = *argv;
+ xmalloc_set_program_name (program_name);
+
+ expandargv (&argc, &argv);
+
+ bfd_init ();
+ set_default_bfd_target ();
+
+ file_name = NULL;
+ section_name = NULL;
+ target = NULL;
+ while ((c = getopt_long (argc, argv, "ab:Ce:sfHhij:pVv", long_options, (int *) 0))
+ != EOF)
+ {
+ switch (c)
+ {
+ case 0:
+ break; /* We've been given a long option. */
+ case 'a':
+ with_addresses = TRUE;
+ break;
+ case 'b':
+ target = optarg;
+ break;
+ case 'C':
+ do_demangle = TRUE;
+ if (optarg != NULL)
+ {
+ enum demangling_styles style;
+
+ style = cplus_demangle_name_to_style (optarg);
+ if (style == unknown_demangling)
+ fatal (_("unknown demangling style `%s'"),
+ optarg);
+
+ cplus_demangle_set_style (style);
+ }
+ break;
+ case 'e':
+ file_name = optarg;
+ break;
+ case 's':
+ base_names = TRUE;
+ break;
+ case 'f':
+ with_functions = TRUE;
+ break;
+ case 'p':
+ pretty_print = TRUE;
+ break;
+ case 'v':
+ case 'V':
+ print_version ("addr2line");
+ break;
+ case 'h':
+ case 'H':
+ usage (stdout, 0);
+ break;
+ case 'i':
+ unwind_inlines = TRUE;
+ break;
+ case 'j':
+ section_name = optarg;
+ break;
+ default:
+ usage (stderr, 1);
+ break;
+ }
+ }
+
+ if (file_name == NULL)
+ file_name = "a.out";
+
+ addr = argv + optind;
+ naddr = argc - optind;
+
+ return process_file (file_name, section_name, target);
+}
diff --git a/binutils-2.24/binutils/ar.c b/binutils-2.24/binutils/ar.c
new file mode 100644
index 00000000..987b46cb
--- /dev/null
+++ b/binutils-2.24/binutils/ar.c
@@ -0,0 +1,1478 @@
+/* ar.c - Archive modify and extract.
+ Copyright 1991-2013 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 3 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. */
+
+/*
+ Bugs: GNU ar used to check file against filesystem in quick_update and
+ replace operations (would check mtime). Doesn't warn when name truncated.
+ No way to specify pos_end. Error messages should be more consistent. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "progress.h"
+#include "getopt.h"
+#include "aout/ar.h"
+#include "libbfd.h"
+#include "bucomm.h"
+#include "arsup.h"
+#include "filenames.h"
+#include "binemul.h"
+#include "plugin.h"
+
+#ifdef __GO32___
+#define EXT_NAME_LEN 3 /* Bufflen of addition to name if it's MS-DOS. */
+#else
+#define EXT_NAME_LEN 6 /* Ditto for *NIX. */
+#endif
+
+/* Static declarations. */
+
+static void mri_emul (void);
+static const char *normalize (const char *, bfd *);
+static void remove_output (void);
+static void map_over_members (bfd *, void (*)(bfd *), char **, int);
+static void print_contents (bfd * member);
+static void delete_members (bfd *, char **files_to_delete);
+
+static void move_members (bfd *, char **files_to_move);
+static void replace_members
+ (bfd *, char **files_to_replace, bfd_boolean quick);
+static void print_descr (bfd * abfd);
+static void write_archive (bfd *);
+static int ranlib_only (const char *archname);
+static int ranlib_touch (const char *archname);
+static void usage (int);
+
+/** Globals and flags. */
+
+static int mri_mode;
+
+/* This flag distinguishes between ar and ranlib:
+ 1 means this is 'ranlib'; 0 means this is 'ar'.
+ -1 means if we should use argv[0] to decide. */
+extern int is_ranlib;
+
+/* Nonzero means don't warn about creating the archive file if necessary. */
+int silent_create = 0;
+
+/* Nonzero means describe each action performed. */
+int verbose = 0;
+
+/* Nonzero means preserve dates of members when extracting them. */
+int preserve_dates = 0;
+
+/* Nonzero means don't replace existing members whose dates are more recent
+ than the corresponding files. */
+int newer_only = 0;
+
+/* Controls the writing of an archive symbol table (in BSD: a __.SYMDEF
+ member). -1 means we've been explicitly asked to not write a symbol table;
+ +1 means we've been explicitly asked to write it;
+ 0 is the default.
+ Traditionally, the default in BSD has been to not write the table.
+ However, for POSIX.2 compliance the default is now to write a symbol table
+ if any of the members are object files. */
+int write_armap = 0;
+
+/* Operate in deterministic mode: write zero for timestamps, uids,
+ and gids for archive members and the archive symbol table, and write
+ consistent file modes. */
+int deterministic = -1; /* Determinism indeterminate. */
+
+/* Nonzero means it's the name of an existing member; position new or moved
+ files with respect to this one. */
+char *posname = NULL;
+
+/* Sez how to use `posname': pos_before means position before that member.
+ pos_after means position after that member. pos_end means always at end.
+ pos_default means default appropriately. For the latter two, `posname'
+ should also be zero. */
+enum pos
+ {
+ pos_default, pos_before, pos_after, pos_end
+ } postype = pos_default;
+
+enum operations
+ {
+ none = 0, del, replace, print_table,
+ print_files, extract, move, quick_append
+ } operation = none;
+
+static bfd **
+get_pos_bfd (bfd **, enum pos, const char *);
+
+/* For extract/delete only. If COUNTED_NAME_MODE is TRUE, we only
+ extract the COUNTED_NAME_COUNTER instance of that name. */
+static bfd_boolean counted_name_mode = 0;
+static int counted_name_counter = 0;
+
+/* Whether to truncate names of files stored in the archive. */
+static bfd_boolean ar_truncate = FALSE;
+
+/* Whether to use a full file name match when searching an archive.
+ This is convenient for archives created by the Microsoft lib
+ program. */
+static bfd_boolean full_pathname = FALSE;
+
+/* Whether to create a "thin" archive (symbol index only -- no files). */
+static bfd_boolean make_thin_archive = FALSE;
+
+static int show_version = 0;
+
+static int show_help = 0;
+
+static const char *plugin_target = NULL;
+
+static const char *target = NULL;
+
+#define OPTION_PLUGIN 201
+#define OPTION_TARGET 202
+
+static struct option long_options[] =
+{
+ {"help", no_argument, &show_help, 1},
+ {"plugin", required_argument, NULL, OPTION_PLUGIN},
+ {"target", required_argument, NULL, OPTION_TARGET},
+ {"version", no_argument, &show_version, 1},
+ {NULL, no_argument, NULL, 0}
+};
+
+int interactive = 0;
+
+static void
+mri_emul (void)
+{
+ interactive = isatty (fileno (stdin));
+ yyparse ();
+}
+
+/* If COUNT is 0, then FUNCTION is called once on each entry. If nonzero,
+ COUNT is the length of the FILES chain; FUNCTION is called on each entry
+ whose name matches one in FILES. */
+
+static void
+map_over_members (bfd *arch, void (*function)(bfd *), char **files, int count)
+{
+ bfd *head;
+ int match_count;
+
+ if (count == 0)
+ {
+ for (head = arch->archive_next; head; head = head->archive_next)
+ {
+ PROGRESS (1);
+ function (head);
+ }
+ return;
+ }
+
+ /* This may appear to be a baroque way of accomplishing what we want.
+ However we have to iterate over the filenames in order to notice where
+ a filename is requested but does not exist in the archive. Ditto
+ mapping over each file each time -- we want to hack multiple
+ references. */
+
+ for (head = arch->archive_next; head; head = head->archive_next)
+ head->archive_pass = 0;
+
+ for (; count > 0; files++, count--)
+ {
+ bfd_boolean found = FALSE;
+
+ match_count = 0;
+ for (head = arch->archive_next; head; head = head->archive_next)
+ {
+ const char * filename;
+
+ PROGRESS (1);
+ /* PR binutils/15796: Once an archive element has been matched
+ do not match it again. If the user provides multiple same-named
+ parameters on the command line their intent is to match multiple
+ same-named entries in the archive, not the same entry multiple
+ times. */
+ if (head->archive_pass)
+ continue;
+
+ filename = head->filename;
+ if (filename == NULL)
+ {
+ /* Some archive formats don't get the filenames filled in
+ until the elements are opened. */
+ struct stat buf;
+ bfd_stat_arch_elt (head, &buf);
+ }
+ else if (bfd_is_thin_archive (arch))
+ {
+ /* Thin archives store full pathnames. Need to normalize. */
+ filename = normalize (filename, arch);
+ }
+
+ if (filename != NULL
+ && !FILENAME_CMP (normalize (*files, arch), filename))
+ {
+ ++match_count;
+ if (counted_name_mode
+ && match_count != counted_name_counter)
+ {
+ /* Counting, and didn't match on count; go on to the
+ next one. */
+ continue;
+ }
+
+ found = TRUE;
+ function (head);
+ head->archive_pass = 1;
+ /* PR binutils/15796: Once a file has been matched, do not
+ match any more same-named files in the archive. If the
+ user does want to match multiple same-name files in an
+ archive they should provide multiple same-name parameters
+ to the ar command. */
+ break;
+ }
+ }
+
+ if (!found)
+ /* xgettext:c-format */
+ fprintf (stderr, _("no entry %s in archive\n"), *files);
+ }
+}
+
+bfd_boolean operation_alters_arch = FALSE;
+
+static void
+usage (int help)
+{
+ FILE *s;
+
+#if BFD_SUPPORTS_PLUGINS
+ /* xgettext:c-format */
+ const char *command_line
+ = _("Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV]"
+ " [--plugin <name>] [member-name] [count] archive-file file...\n");
+
+#else
+ /* xgettext:c-format */
+ const char *command_line
+ = _("Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV]"
+ " [member-name] [count] archive-file file...\n");
+#endif
+ s = help ? stdout : stderr;
+
+ fprintf (s, command_line, program_name);
+
+ /* xgettext:c-format */
+ fprintf (s, _(" %s -M [<mri-script]\n"), program_name);
+ fprintf (s, _(" commands:\n"));
+ fprintf (s, _(" d - delete file(s) from the archive\n"));
+ fprintf (s, _(" m[ab] - move file(s) in the archive\n"));
+ fprintf (s, _(" p - print file(s) found in the archive\n"));
+ fprintf (s, _(" q[f] - quick append file(s) to the archive\n"));
+ fprintf (s, _(" r[ab][f][u] - replace existing or insert new file(s) into the archive\n"));
+ fprintf (s, _(" s - act as ranlib\n"));
+ fprintf (s, _(" t - display contents of archive\n"));
+ fprintf (s, _(" x[o] - extract file(s) from the archive\n"));
+ fprintf (s, _(" command specific modifiers:\n"));
+ fprintf (s, _(" [a] - put file(s) after [member-name]\n"));
+ fprintf (s, _(" [b] - put file(s) before [member-name] (same as [i])\n"));
+ if (DEFAULT_AR_DETERMINISTIC)
+ {
+ fprintf (s, _("\
+ [D] - use zero for timestamps and uids/gids (default)\n"));
+ fprintf (s, _("\
+ [U] - use actual timestamps and uids/gids\n"));
+ }
+ else
+ {
+ fprintf (s, _("\
+ [D] - use zero for timestamps and uids/gids\n"));
+ fprintf (s, _("\
+ [U] - use actual timestamps and uids/gids (default)\n"));
+ }
+ fprintf (s, _(" [N] - use instance [count] of name\n"));
+ fprintf (s, _(" [f] - truncate inserted file names\n"));
+ fprintf (s, _(" [P] - use full path names when matching\n"));
+ fprintf (s, _(" [o] - preserve original dates\n"));
+ fprintf (s, _(" [u] - only replace files that are newer than current archive contents\n"));
+ fprintf (s, _(" generic modifiers:\n"));
+ fprintf (s, _(" [c] - do not warn if the library had to be created\n"));
+ fprintf (s, _(" [s] - create an archive index (cf. ranlib)\n"));
+ fprintf (s, _(" [S] - do not build a symbol table\n"));
+ fprintf (s, _(" [T] - make a thin archive\n"));
+ fprintf (s, _(" [v] - be verbose\n"));
+ fprintf (s, _(" [V] - display the version number\n"));
+ fprintf (s, _(" @<file> - read options from <file>\n"));
+ fprintf (s, _(" --target=BFDNAME - specify the target object format as BFDNAME\n"));
+#if BFD_SUPPORTS_PLUGINS
+ fprintf (s, _(" optional:\n"));
+ fprintf (s, _(" --plugin <p> - load the specified plugin\n"));
+#endif
+
+ ar_emul_usage (s);
+
+ list_supported_targets (program_name, s);
+
+ if (REPORT_BUGS_TO[0] && help)
+ fprintf (s, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+
+ xexit (help ? 0 : 1);
+}
+
+static void
+ranlib_usage (int help)
+{
+ FILE *s;
+
+ s = help ? stdout : stderr;
+
+ /* xgettext:c-format */
+ fprintf (s, _("Usage: %s [options] archive\n"), program_name);
+ fprintf (s, _(" Generate an index to speed access to archives\n"));
+ fprintf (s, _(" The options are:\n\
+ @<file> Read options from <file>\n"));
+#if BFD_SUPPORTS_PLUGINS
+ fprintf (s, _("\
+ --plugin <name> Load the specified plugin\n"));
+#endif
+ if (DEFAULT_AR_DETERMINISTIC)
+ fprintf (s, _("\
+ -D Use zero for symbol map timestamp (default)\n\
+ -U Use an actual symbol map timestamp\n"));
+ else
+ fprintf (s, _("\
+ -D Use zero for symbol map timestamp\n\
+ -U Use actual symbol map timestamp (default)\n"));
+ fprintf (s, _("\
+ -t Update the archive's symbol map timestamp\n\
+ -h --help Print this help message\n\
+ -v --version Print version information\n"));
+
+ list_supported_targets (program_name, s);
+
+ if (REPORT_BUGS_TO[0] && help)
+ fprintf (s, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+
+ xexit (help ? 0 : 1);
+}
+
+/* Normalize a file name specified on the command line into a file
+ name which we will use in an archive. */
+
+static const char *
+normalize (const char *file, bfd *abfd)
+{
+ const char *filename;
+
+ if (full_pathname)
+ return file;
+
+ filename = lbasename (file);
+
+ if (ar_truncate
+ && abfd != NULL
+ && strlen (filename) > abfd->xvec->ar_max_namelen)
+ {
+ char *s;
+
+ /* Space leak. */
+ s = (char *) xmalloc (abfd->xvec->ar_max_namelen + 1);
+ memcpy (s, filename, abfd->xvec->ar_max_namelen);
+ s[abfd->xvec->ar_max_namelen] = '\0';
+ filename = s;
+ }
+
+ return filename;
+}
+
+/* Remove any output file. This is only called via xatexit. */
+
+static const char *output_filename = NULL;
+static FILE *output_file = NULL;
+static bfd *output_bfd = NULL;
+
+static void
+remove_output (void)
+{
+ if (output_filename != NULL)
+ {
+ if (output_bfd != NULL)
+ bfd_cache_close (output_bfd);
+ if (output_file != NULL)
+ fclose (output_file);
+ unlink_if_ordinary (output_filename);
+ }
+}
+
+static char **
+decode_options (int argc, char **argv)
+{
+ int c;
+
+ /* Convert old-style tar call by exploding option element and rearranging
+ options accordingly. */
+
+ if (argc > 1 && argv[1][0] != '-')
+ {
+ int new_argc; /* argc value for rearranged arguments */
+ char **new_argv; /* argv value for rearranged arguments */
+ char *const *in; /* cursor into original argv */
+ char **out; /* cursor into rearranged argv */
+ const char *letter; /* cursor into old option letters */
+ char buffer[3]; /* constructed option buffer */
+
+ /* Initialize a constructed option. */
+
+ buffer[0] = '-';
+ buffer[2] = '\0';
+
+ /* Allocate a new argument array, and copy program name in it. */
+
+ new_argc = argc - 1 + strlen (argv[1]);
+ new_argv = xmalloc ((new_argc + 1) * sizeof (*argv));
+ in = argv;
+ out = new_argv;
+ *out++ = *in++;
+
+ /* Copy each old letter option as a separate option. */
+
+ for (letter = *in++; *letter; letter++)
+ {
+ buffer[1] = *letter;
+ *out++ = xstrdup (buffer);
+ }
+
+ /* Copy all remaining options. */
+
+ while (in < argv + argc)
+ *out++ = *in++;
+ *out = NULL;
+
+ /* Replace the old option list by the new one. */
+
+ argc = new_argc;
+ argv = new_argv;
+ }
+
+ while ((c = getopt_long (argc, argv, "hdmpqrtxlcoVsSuvabiMNfPTDU",
+ long_options, NULL)) != EOF)
+ {
+ switch (c)
+ {
+ case 'd':
+ case 'm':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 't':
+ case 'x':
+ if (operation != none)
+ fatal (_("two different operation options specified"));
+ break;
+ }
+
+ switch (c)
+ {
+ case 'h':
+ show_help = 1;
+ break;
+ case 'd':
+ operation = del;
+ operation_alters_arch = TRUE;
+ break;
+ case 'm':
+ operation = move;
+ operation_alters_arch = TRUE;
+ break;
+ case 'p':
+ operation = print_files;
+ break;
+ case 'q':
+ operation = quick_append;
+ operation_alters_arch = TRUE;
+ break;
+ case 'r':
+ operation = replace;
+ operation_alters_arch = TRUE;
+ break;
+ case 't':
+ operation = print_table;
+ break;
+ case 'x':
+ operation = extract;
+ break;
+ case 'l':
+ break;
+ case 'c':
+ silent_create = 1;
+ break;
+ case 'o':
+ preserve_dates = 1;
+ break;
+ case 'V':
+ show_version = TRUE;
+ break;
+ case 's':
+ write_armap = 1;
+ break;
+ case 'S':
+ write_armap = -1;
+ break;
+ case 'u':
+ newer_only = 1;
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ case 'a':
+ postype = pos_after;
+ break;
+ case 'b':
+ postype = pos_before;
+ break;
+ case 'i':
+ postype = pos_before;
+ break;
+ case 'M':
+ mri_mode = 1;
+ break;
+ case 'N':
+ counted_name_mode = TRUE;
+ break;
+ case 'f':
+ ar_truncate = TRUE;
+ break;
+ case 'P':
+ full_pathname = TRUE;
+ break;
+ case 'T':
+ make_thin_archive = TRUE;
+ break;
+ case 'D':
+ deterministic = TRUE;
+ break;
+ case 'U':
+ deterministic = FALSE;
+ break;
+ case OPTION_PLUGIN:
+#if BFD_SUPPORTS_PLUGINS
+ plugin_target = "plugin";
+ bfd_plugin_set_plugin (optarg);
+#else
+ fprintf (stderr, _("sorry - this program has been built without plugin support\n"));
+ xexit (1);
+#endif
+ break;
+ case OPTION_TARGET:
+ target = optarg;
+ break;
+ case 0: /* A long option that just sets a flag. */
+ break;
+ default:
+ usage (0);
+ }
+ }
+
+ return &argv[optind];
+}
+
+/* If neither -D nor -U was specified explicitly,
+ then use the configured default. */
+static void
+default_deterministic (void)
+{
+ if (deterministic < 0)
+ deterministic = DEFAULT_AR_DETERMINISTIC;
+}
+
+static void
+ranlib_main (int argc, char **argv)
+{
+ int arg_index, status = 0;
+ bfd_boolean touch = FALSE;
+ int c;
+
+ while ((c = getopt_long (argc, argv, "DhHUvVt", long_options, NULL)) != EOF)
+ {
+ switch (c)
+ {
+ case 'D':
+ deterministic = TRUE;
+ break;
+ case 'U':
+ deterministic = FALSE;
+ break;
+ case 'h':
+ case 'H':
+ show_help = 1;
+ break;
+ case 't':
+ touch = TRUE;
+ break;
+ case 'v':
+ case 'V':
+ show_version = 1;
+ break;
+
+ /* PR binutils/13493: Support plugins. */
+ case OPTION_PLUGIN:
+#if BFD_SUPPORTS_PLUGINS
+ plugin_target = "plugin";
+ bfd_plugin_set_plugin (optarg);
+#else
+ fprintf (stderr, _("sorry - this program has been built without plugin support\n"));
+ xexit (1);
+#endif
+ break;
+ }
+ }
+
+ if (argc < 2)
+ ranlib_usage (0);
+
+ if (show_help)
+ ranlib_usage (1);
+
+ if (show_version)
+ print_version ("ranlib");
+
+ default_deterministic ();
+
+ arg_index = optind;
+
+ while (arg_index < argc)
+ {
+ if (! touch)
+ status |= ranlib_only (argv[arg_index]);
+ else
+ status |= ranlib_touch (argv[arg_index]);
+ ++arg_index;
+ }
+
+ xexit (status);
+}
+
+int main (int, char **);
+
+int
+main (int argc, char **argv)
+{
+ int arg_index;
+ char **files;
+ int file_count;
+ char *inarch_filename;
+ int i;
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = argv[0];
+ xmalloc_set_program_name (program_name);
+#if BFD_SUPPORTS_PLUGINS
+ bfd_plugin_set_program_name (program_name);
+#endif
+
+ expandargv (&argc, &argv);
+
+ if (is_ranlib < 0)
+ {
+ const char *temp = lbasename (program_name);
+
+ if (strlen (temp) >= 6
+ && FILENAME_CMP (temp + strlen (temp) - 6, "ranlib") == 0)
+ is_ranlib = 1;
+ else
+ is_ranlib = 0;
+ }
+
+ START_PROGRESS (program_name, 0);
+
+ bfd_init ();
+ set_default_bfd_target ();
+
+ xatexit (remove_output);
+
+ for (i = 1; i < argc; i++)
+ if (! ar_emul_parse_arg (argv[i]))
+ break;
+ argv += (i - 1);
+ argc -= (i - 1);
+
+ if (is_ranlib)
+ ranlib_main (argc, argv);
+
+ if (argc < 2)
+ usage (0);
+
+ argv = decode_options (argc, argv);
+
+ if (show_help)
+ usage (1);
+
+ if (show_version)
+ print_version ("ar");
+
+ arg_index = 0;
+
+ if (mri_mode)
+ {
+ mri_emul ();
+ }
+ else
+ {
+ bfd *arch;
+
+ /* We don't use do_quick_append any more. Too many systems
+ expect ar to always rebuild the symbol table even when q is
+ used. */
+
+ /* We can't write an armap when using ar q, so just do ar r
+ instead. */
+ if (operation == quick_append && write_armap)
+ operation = replace;
+
+ if ((operation == none || operation == print_table)
+ && write_armap == 1)
+ xexit (ranlib_only (argv[arg_index]));
+
+ if (operation == none)
+ fatal (_("no operation specified"));
+
+ if (newer_only && operation != replace)
+ fatal (_("`u' is only meaningful with the `r' option."));
+
+ if (newer_only && deterministic > 0)
+ fatal (_("`u' is not meaningful with the `D' option."));
+
+ if (newer_only && deterministic < 0 && DEFAULT_AR_DETERMINISTIC)
+ non_fatal (_("\
+`u' modifier ignored since `D' is the default (see `U')"));
+
+ default_deterministic ();
+
+ if (postype != pos_default)
+ posname = argv[arg_index++];
+
+ if (counted_name_mode)
+ {
+ if (operation != extract && operation != del)
+ fatal (_("`N' is only meaningful with the `x' and `d' options."));
+ counted_name_counter = atoi (argv[arg_index++]);
+ if (counted_name_counter <= 0)
+ fatal (_("Value for `N' must be positive."));
+ }
+
+ inarch_filename = argv[arg_index++];
+
+ for (file_count = 0; argv[arg_index + file_count] != NULL; file_count++)
+ continue;
+
+ files = (file_count > 0) ? argv + arg_index : NULL;
+
+ arch = open_inarch (inarch_filename,
+ files == NULL ? (char *) NULL : files[0]);
+
+ if (operation == extract && bfd_is_thin_archive (arch))
+ fatal (_("`x' cannot be used on thin archives."));
+
+ switch (operation)
+ {
+ case print_table:
+ map_over_members (arch, print_descr, files, file_count);
+ break;
+
+ case print_files:
+ map_over_members (arch, print_contents, files, file_count);
+ break;
+
+ case extract:
+ map_over_members (arch, extract_file, files, file_count);
+ break;
+
+ case del:
+ if (files != NULL)
+ delete_members (arch, files);
+ else
+ output_filename = NULL;
+ break;
+
+ case move:
+ /* PR 12558: Creating and moving at the same time does
+ not make sense. Just create the archive instead. */
+ if (! silent_create)
+ {
+ if (files != NULL)
+ move_members (arch, files);
+ else
+ output_filename = NULL;
+ break;
+ }
+ /* Fall through. */
+
+ case replace:
+ case quick_append:
+ if (files != NULL || write_armap > 0)
+ replace_members (arch, files, operation == quick_append);
+ else
+ output_filename = NULL;
+ break;
+
+ /* Shouldn't happen! */
+ default:
+ /* xgettext:c-format */
+ fatal (_("internal error -- this option not implemented"));
+ }
+ }
+
+ END_PROGRESS (program_name);
+
+ xexit (0);
+ return 0;
+}
+
+bfd *
+open_inarch (const char *archive_filename, const char *file)
+{
+ bfd **last_one;
+ bfd *next_one;
+ struct stat sbuf;
+ bfd *arch;
+ char **matching;
+
+ bfd_set_error (bfd_error_no_error);
+
+ if (target == NULL)
+ target = plugin_target;
+
+ if (stat (archive_filename, &sbuf) != 0)
+ {
+#if !defined(__GO32__) || defined(__DJGPP__)
+
+ /* FIXME: I don't understand why this fragment was ifndef'ed
+ away for __GO32__; perhaps it was in the days of DJGPP v1.x.
+ stat() works just fine in v2.x, so I think this should be
+ removed. For now, I enable it for DJGPP v2. -- EZ. */
+
+ /* KLUDGE ALERT! Temporary fix until I figger why
+ stat() is wrong ... think it's buried in GO32's IDT - Jax */
+ if (errno != ENOENT)
+ bfd_fatal (archive_filename);
+#endif
+
+ if (!operation_alters_arch)
+ {
+ fprintf (stderr, "%s: ", program_name);
+ perror (archive_filename);
+ maybequit ();
+ return NULL;
+ }
+
+ /* If the target isn't set, try to figure out the target to use
+ for the archive from the first object on the list. */
+ if (target == NULL && file != NULL)
+ {
+ bfd *obj;
+
+ obj = bfd_openr (file, target);
+ if (obj != NULL)
+ {
+ if (bfd_check_format (obj, bfd_object))
+ target = bfd_get_target (obj);
+ (void) bfd_close (obj);
+ }
+ }
+
+ /* Create an empty archive. */
+ arch = bfd_openw (archive_filename, target);
+ if (arch == NULL
+ || ! bfd_set_format (arch, bfd_archive)
+ || ! bfd_close (arch))
+ bfd_fatal (archive_filename);
+ else if (!silent_create)
+ non_fatal (_("creating %s"), archive_filename);
+
+ /* If we die creating a new archive, don't leave it around. */
+ output_filename = archive_filename;
+ }
+
+ arch = bfd_openr (archive_filename, target);
+ if (arch == NULL)
+ {
+ bloser:
+ bfd_fatal (archive_filename);
+ }
+
+ if (! bfd_check_format_matches (arch, bfd_archive, &matching))
+ {
+ bfd_nonfatal (archive_filename);
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ {
+ list_matching_formats (matching);
+ free (matching);
+ }
+ xexit (1);
+ }
+
+ if ((operation == replace || operation == quick_append)
+ && bfd_openr_next_archived_file (arch, NULL) != NULL)
+ {
+ /* PR 15140: Catch attempts to convert a normal
+ archive into a thin archive or vice versa. */
+ if (make_thin_archive && ! bfd_is_thin_archive (arch))
+ {
+ fatal (_("Cannot convert existing library %s to thin format"),
+ bfd_get_filename (arch));
+ goto bloser;
+ }
+ else if (! make_thin_archive && bfd_is_thin_archive (arch))
+ {
+ fatal (_("Cannot convert existing thin library %s to normal format"),
+ bfd_get_filename (arch));
+ goto bloser;
+ }
+ }
+
+ last_one = &(arch->archive_next);
+ /* Read all the contents right away, regardless. */
+ for (next_one = bfd_openr_next_archived_file (arch, NULL);
+ next_one;
+ next_one = bfd_openr_next_archived_file (arch, next_one))
+ {
+ PROGRESS (1);
+ *last_one = next_one;
+ last_one = &next_one->archive_next;
+ }
+ *last_one = (bfd *) NULL;
+ if (bfd_get_error () != bfd_error_no_more_archived_files)
+ goto bloser;
+ return arch;
+}
+
+static void
+print_contents (bfd *abfd)
+{
+ bfd_size_type ncopied = 0;
+ bfd_size_type size;
+ char *cbuf = (char *) xmalloc (BUFSIZE);
+ struct stat buf;
+
+ if (bfd_stat_arch_elt (abfd, &buf) != 0)
+ /* xgettext:c-format */
+ fatal (_("internal stat error on %s"), bfd_get_filename (abfd));
+
+ if (verbose)
+ printf ("\n<%s>\n\n", bfd_get_filename (abfd));
+
+ bfd_seek (abfd, (file_ptr) 0, SEEK_SET);
+
+ size = buf.st_size;
+ while (ncopied < size)
+ {
+ bfd_size_type nread;
+ bfd_size_type tocopy = size - ncopied;
+
+ if (tocopy > BUFSIZE)
+ tocopy = BUFSIZE;
+
+ nread = bfd_bread (cbuf, tocopy, abfd);
+ if (nread != tocopy)
+ /* xgettext:c-format */
+ fatal (_("%s is not a valid archive"),
+ bfd_get_filename (bfd_my_archive (abfd)));
+
+ /* fwrite in mingw32 may return int instead of bfd_size_type. Cast the
+ return value to bfd_size_type to avoid comparison between signed and
+ unsigned values. */
+ if ((bfd_size_type) fwrite (cbuf, 1, nread, stdout) != nread)
+ fatal ("stdout: %s", strerror (errno));
+ ncopied += tocopy;
+ }
+ free (cbuf);
+}
+
+/* Extract a member of the archive into its own file.
+
+ We defer opening the new file until after we have read a BUFSIZ chunk of the
+ old one, since we know we have just read the archive header for the old
+ one. Since most members are shorter than BUFSIZ, this means we will read
+ the old header, read the old data, write a new inode for the new file, and
+ write the new data, and be done. This 'optimization' is what comes from
+ sitting next to a bare disk and hearing it every time it seeks. -- Gnu
+ Gilmore */
+
+void
+extract_file (bfd *abfd)
+{
+ FILE *ostream;
+ char *cbuf = (char *) xmalloc (BUFSIZE);
+ bfd_size_type nread, tocopy;
+ bfd_size_type ncopied = 0;
+ bfd_size_type size;
+ struct stat buf;
+
+ if (bfd_stat_arch_elt (abfd, &buf) != 0)
+ /* xgettext:c-format */
+ fatal (_("internal stat error on %s"), bfd_get_filename (abfd));
+ size = buf.st_size;
+
+ if (verbose)
+ printf ("x - %s\n", bfd_get_filename (abfd));
+
+ bfd_seek (abfd, (file_ptr) 0, SEEK_SET);
+
+ ostream = NULL;
+ if (size == 0)
+ {
+ /* Seems like an abstraction violation, eh? Well it's OK! */
+ output_filename = bfd_get_filename (abfd);
+
+ ostream = fopen (bfd_get_filename (abfd), FOPEN_WB);
+ if (ostream == NULL)
+ {
+ perror (bfd_get_filename (abfd));
+ xexit (1);
+ }
+
+ output_file = ostream;
+ }
+ else
+ while (ncopied < size)
+ {
+ tocopy = size - ncopied;
+ if (tocopy > BUFSIZE)
+ tocopy = BUFSIZE;
+
+ nread = bfd_bread (cbuf, tocopy, abfd);
+ if (nread != tocopy)
+ /* xgettext:c-format */
+ fatal (_("%s is not a valid archive"),
+ bfd_get_filename (bfd_my_archive (abfd)));
+
+ /* See comment above; this saves disk arm motion */
+ if (ostream == NULL)
+ {
+ /* Seems like an abstraction violation, eh? Well it's OK! */
+ output_filename = bfd_get_filename (abfd);
+
+ ostream = fopen (bfd_get_filename (abfd), FOPEN_WB);
+ if (ostream == NULL)
+ {
+ perror (bfd_get_filename (abfd));
+ xexit (1);
+ }
+
+ output_file = ostream;
+ }
+
+ /* fwrite in mingw32 may return int instead of bfd_size_type. Cast
+ the return value to bfd_size_type to avoid comparison between
+ signed and unsigned values. */
+ if ((bfd_size_type) fwrite (cbuf, 1, nread, ostream) != nread)
+ fatal ("%s: %s", output_filename, strerror (errno));
+ ncopied += tocopy;
+ }
+
+ if (ostream != NULL)
+ fclose (ostream);
+
+ output_file = NULL;
+ output_filename = NULL;
+
+ chmod (bfd_get_filename (abfd), buf.st_mode);
+
+ if (preserve_dates)
+ {
+ /* Set access time to modification time. Only st_mtime is
+ initialized by bfd_stat_arch_elt. */
+ buf.st_atime = buf.st_mtime;
+ set_times (bfd_get_filename (abfd), &buf);
+ }
+
+ free (cbuf);
+}
+
+static void
+write_archive (bfd *iarch)
+{
+ bfd *obfd;
+ char *old_name, *new_name;
+ bfd *contents_head = iarch->archive_next;
+
+ old_name = (char *) xmalloc (strlen (bfd_get_filename (iarch)) + 1);
+ strcpy (old_name, bfd_get_filename (iarch));
+ new_name = make_tempname (old_name);
+
+ if (new_name == NULL)
+ bfd_fatal (_("could not create temporary file whilst writing archive"));
+
+ output_filename = new_name;
+
+ obfd = bfd_openw (new_name, bfd_get_target (iarch));
+
+ if (obfd == NULL)
+ bfd_fatal (old_name);
+
+ output_bfd = obfd;
+
+ bfd_set_format (obfd, bfd_archive);
+
+ /* Request writing the archive symbol table unless we've
+ been explicitly requested not to. */
+ obfd->has_armap = write_armap >= 0;
+
+ if (ar_truncate)
+ {
+ /* This should really use bfd_set_file_flags, but that rejects
+ archives. */
+ obfd->flags |= BFD_TRADITIONAL_FORMAT;
+ }
+
+ if (deterministic)
+ obfd->flags |= BFD_DETERMINISTIC_OUTPUT;
+
+ if (make_thin_archive || bfd_is_thin_archive (iarch))
+ bfd_is_thin_archive (obfd) = 1;
+
+ if (!bfd_set_archive_head (obfd, contents_head))
+ bfd_fatal (old_name);
+
+ if (!bfd_close (obfd))
+ bfd_fatal (old_name);
+
+ output_bfd = NULL;
+ output_filename = NULL;
+
+ /* We don't care if this fails; we might be creating the archive. */
+ bfd_close (iarch);
+
+ if (smart_rename (new_name, old_name, 0) != 0)
+ xexit (1);
+ free (old_name);
+}
+
+/* Return a pointer to the pointer to the entry which should be rplacd'd
+ into when altering. DEFAULT_POS should be how to interpret pos_default,
+ and should be a pos value. */
+
+static bfd **
+get_pos_bfd (bfd **contents, enum pos default_pos, const char *default_posname)
+{
+ bfd **after_bfd = contents;
+ enum pos realpos;
+ const char *realposname;
+
+ if (postype == pos_default)
+ {
+ realpos = default_pos;
+ realposname = default_posname;
+ }
+ else
+ {
+ realpos = postype;
+ realposname = posname;
+ }
+
+ if (realpos == pos_end)
+ {
+ while (*after_bfd)
+ after_bfd = &((*after_bfd)->archive_next);
+ }
+ else
+ {
+ for (; *after_bfd; after_bfd = &(*after_bfd)->archive_next)
+ if (FILENAME_CMP ((*after_bfd)->filename, realposname) == 0)
+ {
+ if (realpos == pos_after)
+ after_bfd = &(*after_bfd)->archive_next;
+ break;
+ }
+ }
+ return after_bfd;
+}
+
+static void
+delete_members (bfd *arch, char **files_to_delete)
+{
+ bfd **current_ptr_ptr;
+ bfd_boolean found;
+ bfd_boolean something_changed = FALSE;
+ int match_count;
+
+ for (; *files_to_delete != NULL; ++files_to_delete)
+ {
+ /* In a.out systems, the armap is optional. It's also called
+ __.SYMDEF. So if the user asked to delete it, we should remember
+ that fact. This isn't quite right for COFF systems (where
+ __.SYMDEF might be regular member), but it's very unlikely
+ to be a problem. FIXME */
+
+ if (!strcmp (*files_to_delete, "__.SYMDEF"))
+ {
+ arch->has_armap = FALSE;
+ write_armap = -1;
+ continue;
+ }
+
+ found = FALSE;
+ match_count = 0;
+ current_ptr_ptr = &(arch->archive_next);
+ while (*current_ptr_ptr)
+ {
+ if (FILENAME_CMP (normalize (*files_to_delete, arch),
+ (*current_ptr_ptr)->filename) == 0)
+ {
+ ++match_count;
+ if (counted_name_mode
+ && match_count != counted_name_counter)
+ {
+ /* Counting, and didn't match on count; go on to the
+ next one. */
+ }
+ else
+ {
+ found = TRUE;
+ something_changed = TRUE;
+ if (verbose)
+ printf ("d - %s\n",
+ *files_to_delete);
+ *current_ptr_ptr = ((*current_ptr_ptr)->archive_next);
+ goto next_file;
+ }
+ }
+
+ current_ptr_ptr = &((*current_ptr_ptr)->archive_next);
+ }
+
+ if (verbose && !found)
+ {
+ /* xgettext:c-format */
+ printf (_("No member named `%s'\n"), *files_to_delete);
+ }
+ next_file:
+ ;
+ }
+
+ if (something_changed)
+ write_archive (arch);
+ else
+ output_filename = NULL;
+}
+
+
+/* Reposition existing members within an archive */
+
+static void
+move_members (bfd *arch, char **files_to_move)
+{
+ bfd **after_bfd; /* New entries go after this one */
+ bfd **current_ptr_ptr; /* cdr pointer into contents */
+
+ for (; *files_to_move; ++files_to_move)
+ {
+ current_ptr_ptr = &(arch->archive_next);
+ while (*current_ptr_ptr)
+ {
+ bfd *current_ptr = *current_ptr_ptr;
+ if (FILENAME_CMP (normalize (*files_to_move, arch),
+ current_ptr->filename) == 0)
+ {
+ /* Move this file to the end of the list - first cut from
+ where it is. */
+ bfd *link_bfd;
+ *current_ptr_ptr = current_ptr->archive_next;
+
+ /* Now glue to end */
+ after_bfd = get_pos_bfd (&arch->archive_next, pos_end, NULL);
+ link_bfd = *after_bfd;
+ *after_bfd = current_ptr;
+ current_ptr->archive_next = link_bfd;
+
+ if (verbose)
+ printf ("m - %s\n", *files_to_move);
+
+ goto next_file;
+ }
+
+ current_ptr_ptr = &((*current_ptr_ptr)->archive_next);
+ }
+ /* xgettext:c-format */
+ fatal (_("no entry %s in archive %s!"), *files_to_move, arch->filename);
+
+ next_file:;
+ }
+
+ write_archive (arch);
+}
+
+/* Ought to default to replacing in place, but this is existing practice! */
+
+static void
+replace_members (bfd *arch, char **files_to_move, bfd_boolean quick)
+{
+ bfd_boolean changed = FALSE;
+ bfd **after_bfd; /* New entries go after this one. */
+ bfd *current;
+ bfd **current_ptr;
+
+ while (files_to_move && *files_to_move)
+ {
+ if (! quick)
+ {
+ current_ptr = &arch->archive_next;
+ while (*current_ptr)
+ {
+ current = *current_ptr;
+
+ /* For compatibility with existing ar programs, we
+ permit the same file to be added multiple times. */
+ if (FILENAME_CMP (normalize (*files_to_move, arch),
+ normalize (current->filename, arch)) == 0
+ && current->arelt_data != NULL)
+ {
+ if (newer_only)
+ {
+ struct stat fsbuf, asbuf;
+
+ if (stat (*files_to_move, &fsbuf) != 0)
+ {
+ if (errno != ENOENT)
+ bfd_fatal (*files_to_move);
+ goto next_file;
+ }
+ if (bfd_stat_arch_elt (current, &asbuf) != 0)
+ /* xgettext:c-format */
+ fatal (_("internal stat error on %s"),
+ current->filename);
+
+ if (fsbuf.st_mtime <= asbuf.st_mtime)
+ goto next_file;
+ }
+
+ after_bfd = get_pos_bfd (&arch->archive_next, pos_after,
+ current->filename);
+ if (ar_emul_replace (after_bfd, *files_to_move,
+ target, verbose))
+ {
+ /* Snip out this entry from the chain. */
+ *current_ptr = (*current_ptr)->archive_next;
+ changed = TRUE;
+ }
+
+ goto next_file;
+ }
+ current_ptr = &(current->archive_next);
+ }
+ }
+
+ /* Add to the end of the archive. */
+ after_bfd = get_pos_bfd (&arch->archive_next, pos_end, NULL);
+
+ if (ar_emul_append (after_bfd, *files_to_move, target,
+ verbose, make_thin_archive))
+ changed = TRUE;
+
+ next_file:;
+
+ files_to_move++;
+ }
+
+ if (changed)
+ write_archive (arch);
+ else
+ output_filename = NULL;
+}
+
+static int
+ranlib_only (const char *archname)
+{
+ bfd *arch;
+
+ if (get_file_size (archname) < 1)
+ return 1;
+ write_armap = 1;
+ arch = open_inarch (archname, (char *) NULL);
+ if (arch == NULL)
+ xexit (1);
+ write_archive (arch);
+ return 0;
+}
+
+/* Update the timestamp of the symbol map of an archive. */
+
+static int
+ranlib_touch (const char *archname)
+{
+#ifdef __GO32__
+ /* I don't think updating works on go32. */
+ ranlib_only (archname);
+#else
+ int f;
+ bfd *arch;
+ char **matching;
+
+ if (get_file_size (archname) < 1)
+ return 1;
+ f = open (archname, O_RDWR | O_BINARY, 0);
+ if (f < 0)
+ {
+ bfd_set_error (bfd_error_system_call);
+ bfd_fatal (archname);
+ }
+
+ arch = bfd_fdopenr (archname, (const char *) NULL, f);
+ if (arch == NULL)
+ bfd_fatal (archname);
+ if (! bfd_check_format_matches (arch, bfd_archive, &matching))
+ {
+ bfd_nonfatal (archname);
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ {
+ list_matching_formats (matching);
+ free (matching);
+ }
+ xexit (1);
+ }
+
+ if (! bfd_has_map (arch))
+ /* xgettext:c-format */
+ fatal (_("%s: no archive map to update"), archname);
+
+ if (deterministic)
+ arch->flags |= BFD_DETERMINISTIC_OUTPUT;
+
+ bfd_update_armap_timestamp (arch);
+
+ if (! bfd_close (arch))
+ bfd_fatal (archname);
+#endif
+ return 0;
+}
+
+/* Things which are interesting to map over all or some of the files: */
+
+static void
+print_descr (bfd *abfd)
+{
+ print_arelt_descr (stdout, abfd, verbose);
+}
diff --git a/binutils-2.24/binutils/arlex.c b/binutils-2.24/binutils/arlex.c
new file mode 100644
index 00000000..10a1c52d
--- /dev/null
+++ b/binutils-2.24/binutils/arlex.c
@@ -0,0 +1,2036 @@
+
+#line 3 "arlex.c"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+typedef uint64_t flex_uint64_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#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. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t yyleng;
+
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = (yy_hold_char); \
+ YY_RESTORE_YY_MORE_OFFSET \
+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr) )
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+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.
+ */
+ yy_size_t 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;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* 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
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* 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".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
+yy_size_t yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0; /* 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 (FILE *input_file );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
+void yy_delete_buffer (YY_BUFFER_STATE b );
+void yy_flush_buffer (YY_BUFFER_STATE b );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
+void yypop_buffer_state (void );
+
+static void yyensure_buffer_stack (void );
+static void yy_load_buffer_state (void );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
+
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len );
+
+void *yyalloc (yy_size_t );
+void *yyrealloc (void *,yy_size_t );
+void yyfree (void * );
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ yyensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer(yyin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ yyensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer(yyin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+typedef unsigned char YY_CHAR;
+
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int yylineno;
+
+int yylineno = 1;
+
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (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 = (yy_size_t) (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
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int16_t 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 flex_int32_t 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 flex_int32_t 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 flex_int16_t 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 flex_int16_t 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 flex_int16_t 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 flex_int16_t 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;
+
+extern int yy_flex_debug;
+int yy_flex_debug = 0;
+
+/* 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 YY_NO_INPUT 1
+#line 4 "arlex.l"
+/* arlex.l - Strange script language lexer */
+
+/* Copyright 1992, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2011
+ 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 3 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@cygnus.com>. */
+
+#define DONTDECLARE_MALLOC
+#include "ansidecl.h"
+#include "libiberty.h"
+#include "arparse.h"
+
+#ifndef YY_NO_UNPUT
+#define YY_NO_UNPUT
+#endif
+
+extern int yylex (void);
+
+int linenumber;
+#line 599 "arlex.c"
+
+#define INITIAL 0
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy (void );
+
+int yyget_debug (void );
+
+void yyset_debug (int debug_flag );
+
+YY_EXTRA_TYPE yyget_extra (void );
+
+void yyset_extra (YY_EXTRA_TYPE user_defined );
+
+FILE *yyget_in (void );
+
+void yyset_in (FILE * in_str );
+
+FILE *yyget_out (void );
+
+void yyset_out (FILE * out_str );
+
+yy_size_t yyget_leng (void );
+
+char *yyget_text (void );
+
+int yyget_lineno (void );
+
+void yyset_lineno (int line_number );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap (void );
+#else
+extern int yywrap (void );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#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 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_LVALUE->yy_is_interactive ) \
+ { \
+ int c = '*'; \
+ yy_size_t 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
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex (void);
+
+#define YY_DECL int yylex (void)
+#endif /* !YY_DECL */
+
+/* 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
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+#line 46 "arlex.l"
+
+
+#line 782 "arlex.c"
+
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#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 ) {
+ yyensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ 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 48 "arlex.l"
+{ return ADDLIB; }
+ YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 49 "arlex.l"
+{ return ADDMOD; }
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 50 "arlex.l"
+{ return CLEAR; }
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 51 "arlex.l"
+{ return CREATE; }
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 52 "arlex.l"
+{ return DELETE; }
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 53 "arlex.l"
+{ return DIRECTORY; }
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 54 "arlex.l"
+{ return END; }
+ YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 55 "arlex.l"
+{ return EXTRACT; }
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 56 "arlex.l"
+{ return FULLDIR; }
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 57 "arlex.l"
+{ return HELP; }
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 58 "arlex.l"
+{ return LIST; }
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 59 "arlex.l"
+{ return OPEN; }
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 60 "arlex.l"
+{ return REPLACE; }
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 61 "arlex.l"
+{ return VERBOSE; }
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 62 "arlex.l"
+{ return SAVE; }
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 63 "arlex.l"
+{ return ADDLIB; }
+ YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 64 "arlex.l"
+{ return ADDMOD; }
+ YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 65 "arlex.l"
+{ return CLEAR; }
+ YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 66 "arlex.l"
+{ return CREATE; }
+ YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 67 "arlex.l"
+{ return DELETE; }
+ YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 68 "arlex.l"
+{ return DIRECTORY; }
+ YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 69 "arlex.l"
+{ return END; }
+ YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 70 "arlex.l"
+{ return EXTRACT; }
+ YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 71 "arlex.l"
+{ return FULLDIR; }
+ YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 72 "arlex.l"
+{ return HELP; }
+ YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 73 "arlex.l"
+{ return LIST; }
+ YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 74 "arlex.l"
+{ return OPEN; }
+ YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 75 "arlex.l"
+{ return REPLACE; }
+ YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 76 "arlex.l"
+{ return VERBOSE; }
+ YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 77 "arlex.l"
+{ return SAVE; }
+ YY_BREAK
+case 31:
+/* rule 31 can match eol */
+YY_RULE_SETUP
+#line 78 "arlex.l"
+{ linenumber ++; }
+ YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 79 "arlex.l"
+{ return '('; }
+ YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 80 "arlex.l"
+{ return ')'; }
+ YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 81 "arlex.l"
+{ return ','; }
+ YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 82 "arlex.l"
+{
+ yylval.name = xstrdup (yytext);
+ return FILENAME;
+ }
+ YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 86 "arlex.l"
+{ }
+ YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 87 "arlex.l"
+{ }
+ YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 88 "arlex.l"
+{ }
+ YY_BREAK
+case 39:
+/* rule 39 can match eol */
+YY_RULE_SETUP
+#line 89 "arlex.l"
+{ linenumber ++; return NEWLINE; }
+ YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 91 "arlex.l"
+ECHO;
+ YY_BREAK
+#line 1070 "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_LVALUE->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_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+ YY_CURRENT_BUFFER_LVALUE->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_LVALUE->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_LVALUE->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 (void)
+{
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->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_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->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_LVALUE->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_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+ else
+ {
+ yy_size_t num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* 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 )
+ {
+ yy_size_t 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. */
+ yyrealloc((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_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ (yy_n_chars), num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->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_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ (yy_n_chars) += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->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 (void)
+{
+ 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 );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
+{
+ 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_INPUT
+#ifdef __cplusplus
+ static int yyinput (void)
+#else
+ static int input (void)
+#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_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ /* This was really a NUL. */
+ *(yy_c_buf_p) = '\0';
+
+ else
+ { /* need more input */
+ yy_size_t 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 );
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( yywrap( ) )
+ return 0;
+
+ 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;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void yyrestart (FILE * input_file )
+{
+
+ if ( ! YY_CURRENT_BUFFER ){
+ yyensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer(yyin,YY_BUF_SIZE );
+ }
+
+ yy_init_buffer(YY_CURRENT_BUFFER,input_file );
+ yy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
+{
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * yypop_buffer_state();
+ * yypush_buffer_state(new_buffer);
+ */
+ yyensure_buffer_stack ();
+ 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_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = 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;
+}
+
+static void yy_load_buffer_state (void)
+{
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) yyalloc(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 *) yyalloc(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;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ *
+ */
+ void yy_delete_buffer (YY_BUFFER_STATE b )
+{
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ yyfree((void *) b->yy_ch_buf );
+
+ yyfree((void *) b );
+}
+
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
+
+{
+ int oerrno = errno;
+
+ yy_flush_buffer(b );
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then yy_init_buffer was _probably_
+ * called from yyrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+ void yy_flush_buffer (YY_BUFFER_STATE b )
+{
+ 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( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ *
+ */
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+ if (new_buffer == NULL)
+ return;
+
+ yyensure_buffer_stack();
+
+ /* This block is copied from yy_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ (yy_buffer_stack_top)++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from yy_switch_to_buffer. */
+ yy_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ *
+ */
+void yypop_buffer_state (void)
+{
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ yy_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if ((yy_buffer_stack_top) > 0)
+ --(yy_buffer_stack_top);
+
+ if (YY_CURRENT_BUFFER) {
+ yy_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void yyensure_buffer_stack (void)
+{
+ yy_size_t num_to_alloc;
+
+ if (!(yy_buffer_stack)) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ (yy_buffer_stack_max) = num_to_alloc;
+ (yy_buffer_stack_top) = 0;
+ return;
+ }
+
+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
+ (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+ ((yy_buffer_stack),
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+ (yy_buffer_stack_max) = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
+{
+ 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) yyalloc(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;
+}
+
+/** Setup the input buffer state to scan a string. The next call to yylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * yy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
+{
+
+ return yy_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n, i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) yyalloc(n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_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;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+ (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. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ yytext[yyleng] = (yy_hold_char); \
+ (yy_c_buf_p) = yytext + yyless_macro_arg; \
+ (yy_hold_char) = *(yy_c_buf_p); \
+ *(yy_c_buf_p) = '\0'; \
+ yyleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int yyget_lineno (void)
+{
+
+ return yylineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *yyget_in (void)
+{
+ return yyin;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *yyget_out (void)
+{
+ return yyout;
+}
+
+/** Get the length of the current token.
+ *
+ */
+yy_size_t yyget_leng (void)
+{
+ return yyleng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *yyget_text (void)
+{
+ return yytext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void yyset_lineno (int line_number )
+{
+
+ yylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see yy_switch_to_buffer
+ */
+void yyset_in (FILE * in_str )
+{
+ yyin = in_str ;
+}
+
+void yyset_out (FILE * out_str )
+{
+ yyout = out_str ;
+}
+
+int yyget_debug (void)
+{
+ return yy_flex_debug;
+}
+
+void yyset_debug (int bdebug )
+{
+ yy_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from yylex_destroy(), so don't allocate here.
+ */
+
+ (yy_buffer_stack) = 0;
+ (yy_buffer_stack_top) = 0;
+ (yy_buffer_stack_max) = 0;
+ (yy_c_buf_p) = (char *) 0;
+ (yy_init) = 0;
+ (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ yyin = stdin;
+ yyout = stdout;
+#else
+ yyin = (FILE *) 0;
+ yyout = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * yylex_init()
+ */
+ return 0;
+}
+
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy (void)
+{
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ yy_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ yypop_buffer_state();
+ }
+
+ /* Destroy the stack itself. */
+ yyfree((yy_buffer_stack) );
+ (yy_buffer_stack) = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * yylex() is called, initialization will occur. */
+ yy_init_globals( );
+
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *yyalloc (yy_size_t size )
+{
+ return (void *) malloc( size );
+}
+
+void *yyrealloc (void * ptr, yy_size_t size )
+{
+ /* 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 );
+}
+
+void yyfree (void * ptr )
+{
+ free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 91 "arlex.l"
+
+
+#ifndef yywrap
+/* Needed for lex, though not flex. */
+int yywrap(void) { return 1; }
+#endif
+
diff --git a/binutils-2.24/binutils/arlex.l b/binutils-2.24/binutils/arlex.l
new file mode 100644
index 00000000..40805801
--- /dev/null
+++ b/binutils-2.24/binutils/arlex.l
@@ -0,0 +1,95 @@
+%option noinput nounput
+
+%{
+/* arlex.l - Strange script language lexer */
+
+/* Copyright 1992, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2011
+ 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 3 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@cygnus.com>. */
+
+#define DONTDECLARE_MALLOC
+#include "ansidecl.h"
+#include "libiberty.h"
+#include "arparse.h"
+
+#ifndef YY_NO_UNPUT
+#define YY_NO_UNPUT
+#endif
+
+extern int yylex (void);
+
+int linenumber;
+%}
+
+%a 10000
+%o 25000
+
+%%
+
+"ADDLIB" { return ADDLIB; }
+"ADDMOD" { return ADDMOD; }
+"CLEAR" { return CLEAR; }
+"CREATE" { return CREATE; }
+"DELETE" { return DELETE; }
+"DIRECTORY" { return DIRECTORY; }
+"END" { return END; }
+"EXTRACT" { return EXTRACT; }
+"FULLDIR" { return FULLDIR; }
+"HELP" { return HELP; }
+"LIST" { return LIST; }
+"OPEN" { return OPEN; }
+"REPLACE" { return REPLACE; }
+"VERBOSE" { return VERBOSE; }
+"SAVE" { return SAVE; }
+"addlib" { return ADDLIB; }
+"addmod" { return ADDMOD; }
+"clear" { return CLEAR; }
+"create" { return CREATE; }
+"delete" { return DELETE; }
+"directory" { return DIRECTORY; }
+"end" { return END; }
+"extract" { return EXTRACT; }
+"fulldir" { return FULLDIR; }
+"help" { return HELP; }
+"list" { return LIST; }
+"open" { return OPEN; }
+"replace" { return REPLACE; }
+"verbose" { return VERBOSE; }
+"save" { return SAVE; }
+"+\n" { linenumber ++; }
+"(" { return '('; }
+")" { return ')'; }
+"," { return ','; }
+[A-Za-z0-9/\\$:.\-\_]+ {
+ yylval.name = xstrdup (yytext);
+ return FILENAME;
+ }
+"*".* { }
+";".* { }
+" " { }
+"\n" { linenumber ++; return NEWLINE; }
+
+%%
+#ifndef yywrap
+/* Needed for lex, though not flex. */
+int yywrap(void) { return 1; }
+#endif
diff --git a/binutils-2.24/binutils/arparse.c b/binutils-2.24/binutils/arparse.c
new file mode 100644
index 00000000..6251c32a
--- /dev/null
+++ b/binutils-2.24/binutils/arparse.c
@@ -0,0 +1,1770 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton 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.3"
+
+/* 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, 2005, 2007
+ 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 3 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@cygnus.com
+
+*/
+#define DONTDECLARE_MALLOC
+#include "sysdep.h"
+#include "bfd.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
+typedef union YYSTYPE
+#line 38 "arparse.y"
+{
+ char *name;
+struct list *list ;
+
+}
+/* Line 193 of yacc.c. */
+#line 179 "arparse.c"
+ YYSTYPE;
+# 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 216 of yacc.c. */
+#line 192 "arparse.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && 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
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+ int i;
+#endif
+{
+ return i;
+}
+#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
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (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 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# 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
+{
+ yytype_int16 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 (yytype_int16) + 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 (YYID (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 (YYID (0))
+
+#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 yytype_uint8 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 yytype_uint8 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 yytype_int8 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 yytype_uint8 yyrline[] =
+{
+ 0, 69, 69, 69, 73, 74, 78, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 102, 107, 112, 117, 121, 126, 131,
+ 138, 143, 149, 153, 160, 162, 166, 169, 173, 179,
+ 184, 185, 190
+};
+#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 yytype_uint16 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 yytype_uint8 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 yytype_uint8 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 yytype_uint8 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 yytype_int8 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 yytype_int8 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 yytype_int8 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 yytype_int8 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 yytype_uint8 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 yytype_uint8 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 (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (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 (YYID (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 (YYID (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 defined YYLTYPE_IS_TRIVIAL && 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 (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ yytype_int16 *bottom;
+ yytype_int16 *top;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; 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 (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+ YYSTYPE *yyvsp;
+ int yyrule;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
+ fprintf (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule); \
+} while (YYID (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. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# 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. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+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 == '"')
+ {
+ YYSIZE_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
+
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
+ else
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { 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 + 1;
+ 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)
+ return YYSIZE_MAXIMUM;
+
+ if (yyresult)
+ {
+ /* 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 = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+#endif /* YYERROR_VERBOSE */
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+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
+{
+ YYUSE (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 __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+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;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+ /* 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. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ 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;
+ yytype_int16 *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;
+
+ {
+ yytype_int16 *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. */
+
+ /* 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;
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ 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 69 "arparse.y"
+ { prompt(); }
+ break;
+
+ case 6:
+#line 78 "arparse.y"
+ { prompt(); }
+ break;
+
+ case 19:
+#line 94 "arparse.y"
+ { ar_end(); return 0; }
+ break;
+
+ case 21:
+#line 96 "arparse.y"
+ { yyerror("foo"); }
+ break;
+
+ case 23:
+#line 103 "arparse.y"
+ { ar_extract((yyvsp[(2) - (2)].list)); }
+ break;
+
+ case 24:
+#line 108 "arparse.y"
+ { ar_replace((yyvsp[(2) - (2)].list)); }
+ break;
+
+ case 25:
+#line 113 "arparse.y"
+ { ar_clear(); }
+ break;
+
+ case 26:
+#line 118 "arparse.y"
+ { ar_delete((yyvsp[(2) - (2)].list)); }
+ break;
+
+ case 27:
+#line 122 "arparse.y"
+ { ar_addmod((yyvsp[(2) - (2)].list)); }
+ break;
+
+ case 28:
+#line 127 "arparse.y"
+ { ar_list(); }
+ break;
+
+ case 29:
+#line 132 "arparse.y"
+ { ar_save(); }
+ break;
+
+ case 30:
+#line 139 "arparse.y"
+ { ar_open((yyvsp[(2) - (2)].name),0); }
+ break;
+
+ case 31:
+#line 144 "arparse.y"
+ { ar_open((yyvsp[(2) - (2)].name),1); }
+ break;
+
+ case 32:
+#line 150 "arparse.y"
+ { ar_addlib((yyvsp[(2) - (3)].name),(yyvsp[(3) - (3)].list)); }
+ break;
+
+ case 33:
+#line 154 "arparse.y"
+ { ar_directory((yyvsp[(2) - (4)].name), (yyvsp[(3) - (4)].list), (yyvsp[(4) - (4)].name)); }
+ break;
+
+ case 34:
+#line 161 "arparse.y"
+ { (yyval.name) = (yyvsp[(1) - (1)].name); }
+ break;
+
+ case 35:
+#line 162 "arparse.y"
+ { (yyval.name) = 0; }
+ break;
+
+ case 36:
+#line 167 "arparse.y"
+ { (yyval.list) = (yyvsp[(2) - (3)].list); }
+ break;
+
+ case 37:
+#line 169 "arparse.y"
+ { (yyval.list) = 0; }
+ break;
+
+ case 38:
+#line 174 "arparse.y"
+ { struct list *n = (struct list *) malloc(sizeof(struct list));
+ n->next = (yyvsp[(1) - (3)].list);
+ n->name = (yyvsp[(3) - (3)].name);
+ (yyval.list) = n;
+ }
+ break;
+
+ case 39:
+#line 179 "arparse.y"
+ { (yyval.list) = 0; }
+ break;
+
+ case 42:
+#line 191 "arparse.y"
+ { verbose = !verbose; }
+ break;
+
+
+/* Line 1267 of yacc.c. */
+#line 1546 "arparse.c"
+ default: break;
+ }
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ 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
+ yyerror (YY_("syntax error"));
+#else
+ {
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+#endif
+ }
+
+
+
+ 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 (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ 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 (1);
+ 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);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+
+#line 195 "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;
+}
+
diff --git a/binutils-2.24/binutils/arparse.h b/binutils-2.24/binutils/arparse.h
new file mode 100644
index 00000000..0926a615
--- /dev/null
+++ b/binutils-2.24/binutils/arparse.h
@@ -0,0 +1,102 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 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
+typedef union YYSTYPE
+#line 38 "arparse.y"
+{
+ char *name;
+struct list *list ;
+
+}
+/* Line 1529 of yacc.c. */
+#line 95 "arparse.h"
+ YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
diff --git a/binutils-2.24/binutils/arparse.y b/binutils-2.24/binutils/arparse.y
new file mode 100644
index 00000000..113c5483
--- /dev/null
+++ b/binutils-2.24/binutils/arparse.y
@@ -0,0 +1,204 @@
+%{
+/* arparse.y - Stange script language parser */
+
+/* Copyright 1992, 1993, 1995, 1997, 1999, 2002, 2003, 2005, 2007
+ 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 3 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@cygnus.com
+
+*/
+#define DONTDECLARE_MALLOC
+#include "sysdep.h"
+#include "bfd.h"
+#include "arsup.h"
+extern int verbose;
+extern int yylex (void);
+static int yyerror (const char *);
+%}
+
+%union {
+ char *name;
+struct list *list ;
+
+};
+
+%token NEWLINE
+%token VERBOSE
+%token <name> FILENAME
+%token ADDLIB
+%token LIST
+%token ADDMOD
+%token CLEAR
+%token CREATE
+%token DELETE
+%token DIRECTORY
+%token END
+%token EXTRACT
+%token FULLDIR
+%token HELP
+%token QUIT
+%token REPLACE
+%token SAVE
+%token OPEN
+
+%type <list> modulelist
+%type <list> modulename
+%type <name> optional_filename
+%%
+
+start:
+ { prompt(); } session
+ ;
+
+session:
+ session command_line
+ |
+ ;
+
+command_line:
+ command NEWLINE { prompt(); }
+ ;
+
+command:
+ open_command
+ | create_command
+ | verbose_command
+ | directory_command
+ | addlib_command
+ | clear_command
+ | addmod_command
+ | save_command
+ | extract_command
+ | replace_command
+ | delete_command
+ | list_command
+ | END { ar_end(); return 0; }
+ | error
+ | FILENAME { yyerror("foo"); }
+ |
+ ;
+
+
+extract_command:
+ EXTRACT modulename
+ { ar_extract($2); }
+ ;
+
+replace_command:
+ REPLACE modulename
+ { ar_replace($2); }
+ ;
+
+clear_command:
+ CLEAR
+ { ar_clear(); }
+ ;
+
+delete_command:
+ DELETE modulename
+ { ar_delete($2); }
+ ;
+addmod_command:
+ ADDMOD modulename
+ { ar_addmod($2); }
+ ;
+
+list_command:
+ LIST
+ { ar_list(); }
+ ;
+
+save_command:
+ SAVE
+ { ar_save(); }
+ ;
+
+
+
+open_command:
+ OPEN FILENAME
+ { ar_open($2,0); }
+ ;
+
+create_command:
+ CREATE FILENAME
+ { ar_open($2,1); }
+ ;
+
+
+addlib_command:
+ ADDLIB FILENAME modulelist
+ { ar_addlib($2,$3); }
+ ;
+directory_command:
+ DIRECTORY FILENAME modulelist optional_filename
+ { ar_directory($2, $3, $4); }
+ ;
+
+
+
+optional_filename:
+ FILENAME
+ { $$ = $1; }
+ | { $$ = 0; }
+ ;
+
+modulelist:
+ '(' modulename ')'
+ { $$ = $2; }
+ |
+ { $$ = 0; }
+ ;
+
+modulename:
+ modulename optcomma FILENAME
+ { struct list *n = (struct list *) malloc(sizeof(struct list));
+ n->next = $1;
+ n->name = $3;
+ $$ = n;
+ }
+ | { $$ = 0; }
+ ;
+
+
+optcomma:
+ ','
+ |
+ ;
+
+
+verbose_command:
+ VERBOSE
+ { verbose = !verbose; }
+ ;
+
+
+%%
+
+static int
+yyerror (const char *x ATTRIBUTE_UNUSED)
+{
+ extern int linenumber;
+
+ printf (_("Syntax error in archive script, line %d\n"), linenumber + 1);
+ return 0;
+}
diff --git a/binutils-2.24/binutils/arsup.c b/binutils-2.24/binutils/arsup.c
new file mode 100644
index 00000000..9ddc55d6
--- /dev/null
+++ b/binutils-2.24/binutils/arsup.c
@@ -0,0 +1,481 @@
+/* arsup.c - Archive support for MRI compatibility
+ Copyright 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
+ 2004, 2005, 2007, 2008 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 3 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@cygnus.com
+
+ This file looks after requests from arparse.y, to provide the MRI
+ style librarian command syntax + 1 word LIST. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "filenames.h"
+#include "bucomm.h"
+#include "arsup.h"
+
+static void map_over_list
+ (bfd *, void (*function) (bfd *, bfd *), struct list *);
+static void ar_directory_doer (bfd *, bfd *);
+static void ar_addlib_doer (bfd *, bfd *);
+
+extern int verbose;
+
+static bfd *obfd;
+static char *real_name;
+static FILE *outfile;
+
+static void
+map_over_list (bfd *arch, void (*function) (bfd *, bfd *), struct list *list)
+{
+ bfd *head;
+
+ if (list == NULL)
+ {
+ bfd *next;
+
+ head = arch->archive_next;
+ while (head != NULL)
+ {
+ next = head->archive_next;
+ function (head, (bfd *) NULL);
+ head = next;
+ }
+ }
+ else
+ {
+ struct list *ptr;
+
+ /* This may appear to be a baroque way of accomplishing what we
+ want. however we have to iterate over the filenames in order
+ to notice where a filename is requested but does not exist in
+ the archive. Ditto mapping over each file each time -- we
+ want to hack multiple references. */
+ for (ptr = list; ptr; ptr = ptr->next)
+ {
+ bfd_boolean found = FALSE;
+ bfd *prev = arch;
+
+ for (head = arch->archive_next; head; head = head->archive_next)
+ {
+ if (head->filename != NULL
+ && FILENAME_CMP (ptr->name, head->filename) == 0)
+ {
+ found = TRUE;
+ function (head, prev);
+ }
+ prev = head;
+ }
+ if (! found)
+ fprintf (stderr, _("No entry %s in archive.\n"), ptr->name);
+ }
+ }
+}
+
+
+
+static void
+ar_directory_doer (bfd *abfd, bfd *ignore ATTRIBUTE_UNUSED)
+{
+ print_arelt_descr(outfile, abfd, verbose);
+}
+
+void
+ar_directory (char *ar_name, struct list *list, char *output)
+{
+ bfd *arch;
+
+ arch = open_inarch (ar_name, (char *) NULL);
+ if (output)
+ {
+ outfile = fopen(output,"w");
+ if (outfile == 0)
+ {
+ outfile = stdout;
+ fprintf (stderr,_("Can't open file %s\n"), output);
+ output = 0;
+ }
+ }
+ else
+ outfile = stdout;
+
+ map_over_list (arch, ar_directory_doer, list);
+
+ bfd_close (arch);
+
+ if (output)
+ fclose (outfile);
+}
+
+void
+prompt (void)
+{
+ extern int interactive;
+
+ if (interactive)
+ {
+ printf ("AR >");
+ fflush (stdout);
+ }
+}
+
+void
+maybequit (void)
+{
+ if (! interactive)
+ xexit (9);
+}
+
+
+void
+ar_open (char *name, int t)
+{
+ char *tname = (char *) xmalloc (strlen (name) + 10);
+ const char *bname = lbasename (name);
+ real_name = name;
+
+ /* Prepend tmp- to the beginning, to avoid file-name clashes after
+ truncation on filesystems with limited namespaces (DOS). */
+ sprintf (tname, "%.*stmp-%s", (int) (bname - name), name, bname);
+ obfd = bfd_openw (tname, NULL);
+
+ if (!obfd)
+ {
+ fprintf (stderr,
+ _("%s: Can't open output archive %s\n"),
+ program_name, tname);
+
+ maybequit ();
+ }
+ else
+ {
+ if (!t)
+ {
+ bfd **ptr;
+ bfd *element;
+ bfd *ibfd;
+
+ ibfd = bfd_openr (name, NULL);
+
+ if (!ibfd)
+ {
+ fprintf (stderr,_("%s: Can't open input archive %s\n"),
+ program_name, name);
+ maybequit ();
+ return;
+ }
+
+ if (!bfd_check_format(ibfd, bfd_archive))
+ {
+ fprintf (stderr,
+ _("%s: file %s is not an archive\n"),
+ program_name, name);
+ maybequit ();
+ return;
+ }
+
+ ptr = &(obfd->archive_head);
+ element = bfd_openr_next_archived_file (ibfd, NULL);
+
+ while (element)
+ {
+ *ptr = element;
+ ptr = &element->archive_next;
+ element = bfd_openr_next_archived_file (ibfd, element);
+ }
+ }
+
+ bfd_set_format (obfd, bfd_archive);
+
+ obfd->has_armap = 1;
+ obfd->is_thin_archive = 0;
+ }
+}
+
+static void
+ar_addlib_doer (bfd *abfd, bfd *prev)
+{
+ /* Add this module to the output bfd. */
+ if (prev != NULL)
+ prev->archive_next = abfd->archive_next;
+
+ abfd->archive_next = obfd->archive_head;
+ obfd->archive_head = abfd;
+}
+
+void
+ar_addlib (char *name, struct list *list)
+{
+ if (obfd == NULL)
+ {
+ fprintf (stderr, _("%s: no output archive specified yet\n"), program_name);
+ maybequit ();
+ }
+ else
+ {
+ bfd *arch;
+
+ arch = open_inarch (name, (char *) NULL);
+ if (arch != NULL)
+ map_over_list (arch, ar_addlib_doer, list);
+
+ /* Don't close the bfd, since it will make the elements disappear. */
+ }
+}
+
+void
+ar_addmod (struct list *list)
+{
+ if (!obfd)
+ {
+ fprintf (stderr, _("%s: no open output archive\n"), program_name);
+ maybequit ();
+ }
+ else
+ {
+ while (list)
+ {
+ bfd *abfd = bfd_openr (list->name, NULL);
+
+ if (!abfd)
+ {
+ fprintf (stderr, _("%s: can't open file %s\n"),
+ program_name, list->name);
+ maybequit ();
+ }
+ else
+ {
+ abfd->archive_next = obfd->archive_head;
+ obfd->archive_head = abfd;
+ }
+ list = list->next;
+ }
+ }
+}
+
+
+void
+ar_clear (void)
+{
+ if (obfd)
+ obfd->archive_head = 0;
+}
+
+void
+ar_delete (struct list *list)
+{
+ if (!obfd)
+ {
+ fprintf (stderr, _("%s: no open output archive\n"), program_name);
+ maybequit ();
+ }
+ else
+ {
+ while (list)
+ {
+ /* Find this name in the archive. */
+ bfd *member = obfd->archive_head;
+ bfd **prev = &(obfd->archive_head);
+ int found = 0;
+
+ while (member)
+ {
+ if (FILENAME_CMP(member->filename, list->name) == 0)
+ {
+ *prev = member->archive_next;
+ found = 1;
+ }
+ else
+ prev = &(member->archive_next);
+
+ member = member->archive_next;
+ }
+
+ if (!found)
+ {
+ fprintf (stderr, _("%s: can't find module file %s\n"),
+ program_name, list->name);
+ maybequit ();
+ }
+
+ list = list->next;
+ }
+ }
+}
+
+void
+ar_save (void)
+{
+ if (!obfd)
+ {
+ fprintf (stderr, _("%s: no open output archive\n"), program_name);
+ maybequit ();
+ }
+ else
+ {
+ char *ofilename = xstrdup (bfd_get_filename (obfd));
+
+ bfd_close (obfd);
+
+ smart_rename (ofilename, real_name, 0);
+ obfd = 0;
+ free (ofilename);
+ }
+}
+
+void
+ar_replace (struct list *list)
+{
+ if (!obfd)
+ {
+ fprintf (stderr, _("%s: no open output archive\n"), program_name);
+ maybequit ();
+ }
+ else
+ {
+ while (list)
+ {
+ /* Find this name in the archive. */
+ bfd *member = obfd->archive_head;
+ bfd **prev = &(obfd->archive_head);
+ int found = 0;
+
+ while (member)
+ {
+ if (FILENAME_CMP (member->filename, list->name) == 0)
+ {
+ /* Found the one to replace. */
+ bfd *abfd = bfd_openr (list->name, 0);
+
+ if (!abfd)
+ {
+ fprintf (stderr, _("%s: can't open file %s\n"),
+ program_name, list->name);
+ maybequit ();
+ }
+ else
+ {
+ *prev = abfd;
+ abfd->archive_next = member->archive_next;
+ found = 1;
+ }
+ }
+ else
+ {
+ prev = &(member->archive_next);
+ }
+ member = member->archive_next;
+ }
+
+ if (!found)
+ {
+ bfd *abfd = bfd_openr (list->name, 0);
+
+ fprintf (stderr,_("%s: can't find module file %s\n"),
+ program_name, list->name);
+ if (!abfd)
+ {
+ fprintf (stderr, _("%s: can't open file %s\n"),
+ program_name, list->name);
+ maybequit ();
+ }
+ else
+ *prev = abfd;
+ }
+
+ list = list->next;
+ }
+ }
+}
+
+/* And I added this one. */
+void
+ar_list (void)
+{
+ if (!obfd)
+ {
+ fprintf (stderr, _("%s: no open output archive\n"), program_name);
+ maybequit ();
+ }
+ else
+ {
+ bfd *abfd;
+
+ outfile = stdout;
+ verbose =1 ;
+ printf (_("Current open archive is %s\n"), bfd_get_filename (obfd));
+
+ for (abfd = obfd->archive_head;
+ abfd != (bfd *)NULL;
+ abfd = abfd->archive_next)
+ ar_directory_doer (abfd, (bfd *) NULL);
+ }
+}
+
+void
+ar_end (void)
+{
+ if (obfd)
+ {
+ bfd_cache_close (obfd);
+ unlink (bfd_get_filename (obfd));
+ }
+}
+
+void
+ar_extract (struct list *list)
+{
+ if (!obfd)
+ {
+ fprintf (stderr, _("%s: no open archive\n"), program_name);
+ maybequit ();
+ }
+ else
+ {
+ while (list)
+ {
+ /* Find this name in the archive. */
+ bfd *member = obfd->archive_head;
+ int found = 0;
+
+ while (member && !found)
+ {
+ if (FILENAME_CMP (member->filename, list->name) == 0)
+ {
+ extract_file (member);
+ found = 1;
+ }
+
+ member = member->archive_next;
+ }
+
+ if (!found)
+ {
+ bfd_openr (list->name, 0);
+ fprintf (stderr, _("%s: can't find module file %s\n"),
+ program_name, list->name);
+ }
+
+ list = list->next;
+ }
+ }
+}
diff --git a/binutils-2.24/binutils/arsup.h b/binutils-2.24/binutils/arsup.h
new file mode 100644
index 00000000..5b176810
--- /dev/null
+++ b/binutils-2.24/binutils/arsup.h
@@ -0,0 +1,63 @@
+/* arsup.h - archive support header file
+ Copyright 1992, 1993, 1994, 1996, 2001, 2002, 2003, 2005, 2007
+ 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 3 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. */
+
+struct list {
+ char *name;
+ struct list *next;
+};
+
+void maybequit (void);
+
+void prompt (void);
+
+void ar_clear (void);
+
+void ar_replace (struct list *);
+
+void ar_delete (struct list *);
+
+void ar_save (void);
+
+void ar_list (void);
+
+void ar_open (char *, int);
+
+void ar_directory (char *, struct list *, char *);
+
+void ar_addmod (struct list *);
+
+void ar_addlib (char *, struct list *);
+
+void ar_end (void);
+
+void ar_extract (struct list *);
+
+bfd *open_inarch (const char *archive_filename, const char *);
+
+extern int yylex (void);
+
+int yyparse (void);
+
+/* Functions from ar.c */
+
+void extract_file (bfd * abfd);
+
+extern int interactive;
diff --git a/binutils-2.24/binutils/bfdtest1.c b/binutils-2.24/binutils/bfdtest1.c
new file mode 100644
index 00000000..eaee2fdf
--- /dev/null
+++ b/binutils-2.24/binutils/bfdtest1.c
@@ -0,0 +1,70 @@
+/* A program to test BFD.
+ Copyright 2012 Free Software Foundation, Inc.
+
+ This file is part of the 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 3 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 "sysdep.h"
+#include "bfd.h"
+
+static void
+die (const char *s)
+{
+ printf ("oops: %s\n", s);
+ exit (1);
+}
+
+int
+main (int argc, char **argv)
+{
+ bfd *archive;
+ bfd *last, *next;
+
+ if (argc != 2)
+ die ("usage: bfdtest1 <archive>");
+
+ archive = bfd_openr (argv[1], NULL);
+ if (archive == NULL)
+ die ("no such archive");
+
+ if (!bfd_check_format (archive, bfd_archive))
+ {
+ bfd_close (archive);
+ die ("bfd_check_format");
+ }
+
+ for (last = bfd_openr_next_archived_file (archive, NULL);
+ last;
+ last = next)
+ {
+ next = bfd_openr_next_archived_file (archive, last);
+ bfd_close (last);
+ }
+
+ for (last = bfd_openr_next_archived_file (archive, NULL);
+ last;
+ last = next)
+ {
+ next = bfd_openr_next_archived_file (archive, last);
+ bfd_close (last);
+ }
+
+ if (!bfd_close (archive))
+ die ("bfd_close");
+
+ return 0;
+}
diff --git a/binutils-2.24/binutils/bfdtest2.c b/binutils-2.24/binutils/bfdtest2.c
new file mode 100644
index 00000000..a0bdd7c6
--- /dev/null
+++ b/binutils-2.24/binutils/bfdtest2.c
@@ -0,0 +1,106 @@
+/* A program to test BFD.
+ Copyright 2012 Free Software Foundation, Inc.
+
+ This file is part of the 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 3 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 "sysdep.h"
+#include "bfd.h"
+
+static void
+die (const char *s)
+{
+ printf ("oops: %s\n", s);
+ exit (1);
+}
+
+static void *
+iovec_open (struct bfd *nbfd ATTRIBUTE_UNUSED, void *open_closure)
+{
+ return open_closure;
+}
+
+static file_ptr iovec_read (struct bfd *nbfd ATTRIBUTE_UNUSED,
+ void *stream, void *buf, file_ptr nbytes,
+ file_ptr offset)
+{
+ FILE* file = (FILE*) stream;
+
+ if (fseek(file, offset, SEEK_SET) != 0)
+ die ("fseek error");
+
+ return fread (buf, 1, nbytes, file);
+}
+
+static int
+iovec_stat (struct bfd *abfd ATTRIBUTE_UNUSED,
+ void *stream, struct stat *sb)
+{
+ return fstat (fileno ((FILE*) stream), sb);
+}
+
+static bfd_boolean
+check_format_any (struct bfd *abfd, bfd_format format)
+{
+ char** targets = NULL;
+
+ if (bfd_check_format_matches (abfd, format, &targets))
+ return TRUE;
+
+ if (targets)
+ {
+ bfd_find_target (targets[0], abfd);
+
+ return bfd_check_format (abfd, format);
+ }
+
+ return FALSE;
+}
+
+int
+main (int argc, const char** argv)
+{
+ FILE* file;
+ bfd *abfd, *mbfd;
+
+ if (argc < 2)
+ die ("Usage: test archivefile");
+
+ file = fopen(argv[1], "rb");
+ if (!file)
+ die ("file not found");
+
+ abfd = bfd_openr_iovec (argv[1], 0, iovec_open, file,
+ iovec_read, NULL, iovec_stat);
+ if (!abfd)
+ die ("error opening file");
+
+ if (!check_format_any (abfd, bfd_archive))
+ die ("not an archive");
+
+ mbfd = bfd_openr_next_archived_file (abfd, 0);
+ if (!mbfd)
+ die ("error opening archive member");
+
+ if (!bfd_close (mbfd))
+ die ("error closing archive member");
+
+ if (!bfd_close (abfd))
+ die ("error closing archive");
+
+ return 0;
+}
diff --git a/binutils-2.24/binutils/bin2c.c b/binutils-2.24/binutils/bin2c.c
new file mode 100644
index 00000000..0719fb91
--- /dev/null
+++ b/binutils-2.24/binutils/bin2c.c
@@ -0,0 +1,66 @@
+/* bin2c.c -- dump binary file in hex format
+ Copyright 2007, 2008 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 3 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 <stdio.h>
+#include <stdlib.h>
+#include "binary-io.h"
+
+int
+main (int argc, char *argv[])
+{
+ int c;
+ int i;
+
+ if (argc != 1)
+ {
+ int ishelp = 0;
+ FILE *stream;
+
+ if (argc == 2 && argv[1][0] == '-')
+ {
+ const char *opt = &argv[1][1];
+ if (*opt == '-')
+ ++opt;
+ ishelp = *opt == 'h' || *opt == 'H';
+ }
+
+ stream = ishelp ? stdout : stderr;
+ fprintf (stream, "Usage: %s < input_file > output_file\n", argv[0]);
+ fprintf (stream, "Prints bytes from stdin in hex format.\n");
+ exit (!ishelp);
+ }
+
+ SET_BINARY (fileno (stdin));
+
+ i = 0;
+ while ((c = getc (stdin)) != EOF)
+ {
+ printf ("0x%02x,", c);
+ if (++i == 16)
+ {
+ printf ("\n");
+ i = 0;
+ }
+ }
+ if (i != 0)
+ printf ("\n");
+
+ exit (0);
+}
diff --git a/binutils-2.24/binutils/binemul.c b/binutils-2.24/binutils/binemul.c
new file mode 100644
index 00000000..6bfcb15a
--- /dev/null
+++ b/binutils-2.24/binutils/binemul.c
@@ -0,0 +1,149 @@
+/* Binutils emulation layer.
+ Copyright 2002, 2003, 2005, 2007, 2008, 2010
+ Free Software Foundation, Inc.
+ Written by Tom Rix, Red Hat 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 3 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 "binemul.h"
+
+extern bin_emulation_xfer_type bin_dummy_emulation;
+
+void
+ar_emul_usage (FILE *fp)
+{
+ if (bin_dummy_emulation.ar_usage)
+ bin_dummy_emulation.ar_usage (fp);
+}
+
+void
+ar_emul_default_usage (FILE *fp)
+{
+ AR_EMUL_USAGE_PRINT_OPTION_HEADER (fp);
+ /* xgettext:c-format */
+ fprintf (fp, _(" No emulation specific options\n"));
+}
+
+bfd_boolean
+ar_emul_append (bfd **after_bfd, char *file_name, const char *target,
+ bfd_boolean verbose, bfd_boolean flatten)
+{
+ if (bin_dummy_emulation.ar_append)
+ return bin_dummy_emulation.ar_append (after_bfd, file_name, target,
+ verbose, flatten);
+
+ return FALSE;
+}
+
+static bfd_boolean
+any_ok (bfd *new_bfd ATTRIBUTE_UNUSED)
+{
+ return TRUE;
+}
+
+bfd_boolean
+do_ar_emul_append (bfd **after_bfd, bfd *new_bfd,
+ bfd_boolean verbose, bfd_boolean flatten,
+ bfd_boolean (*check) (bfd *))
+{
+ /* When flattening, add the members of an archive instead of the
+ archive itself. */
+ if (flatten && bfd_check_format (new_bfd, bfd_archive))
+ {
+ bfd *elt;
+ bfd_boolean added = FALSE;
+
+ for (elt = bfd_openr_next_archived_file (new_bfd, NULL);
+ elt;
+ elt = bfd_openr_next_archived_file (new_bfd, elt))
+ {
+ if (do_ar_emul_append (after_bfd, elt, verbose, TRUE, check))
+ {
+ added = TRUE;
+ after_bfd = &((*after_bfd)->archive_next);
+ }
+ }
+
+ return added;
+ }
+
+ if (!check (new_bfd))
+ return FALSE;
+
+ AR_EMUL_APPEND_PRINT_VERBOSE (verbose, new_bfd->filename);
+
+ new_bfd->archive_next = *after_bfd;
+ *after_bfd = new_bfd;
+
+ return TRUE;
+}
+
+bfd_boolean
+ar_emul_default_append (bfd **after_bfd, char *file_name,
+ const char *target, bfd_boolean verbose,
+ bfd_boolean flatten)
+{
+ bfd *new_bfd;
+
+ new_bfd = bfd_openr (file_name, target);
+ AR_EMUL_ELEMENT_CHECK (new_bfd, file_name);
+ return do_ar_emul_append (after_bfd, new_bfd, verbose, flatten, any_ok);
+}
+
+bfd_boolean
+ar_emul_replace (bfd **after_bfd, char *file_name, const char *target,
+ bfd_boolean verbose)
+{
+ if (bin_dummy_emulation.ar_replace)
+ return bin_dummy_emulation.ar_replace (after_bfd, file_name,
+ target, verbose);
+
+ return FALSE;
+}
+
+bfd_boolean
+ar_emul_default_replace (bfd **after_bfd, char *file_name,
+ const char *target, bfd_boolean verbose)
+{
+ bfd *new_bfd;
+
+ new_bfd = bfd_openr (file_name, target);
+ AR_EMUL_ELEMENT_CHECK (new_bfd, file_name);
+
+ AR_EMUL_REPLACE_PRINT_VERBOSE (verbose, file_name);
+
+ new_bfd->archive_next = *after_bfd;
+ *after_bfd = new_bfd;
+
+ return TRUE;
+}
+
+bfd_boolean
+ar_emul_parse_arg (char *arg)
+{
+ if (bin_dummy_emulation.ar_parse_arg)
+ return bin_dummy_emulation.ar_parse_arg (arg);
+
+ return FALSE;
+}
+
+bfd_boolean
+ar_emul_default_parse_arg (char *arg ATTRIBUTE_UNUSED)
+{
+ return FALSE;
+}
diff --git a/binutils-2.24/binutils/binemul.h b/binutils-2.24/binutils/binemul.h
new file mode 100644
index 00000000..a93b7b0b
--- /dev/null
+++ b/binutils-2.24/binutils/binemul.h
@@ -0,0 +1,71 @@
+/* Binutils emulation layer.
+ Copyright 2002, 2003, 2005, 2007, 2008 Free Software Foundation, Inc.
+ Written by Tom Rix, Red Hat 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 3 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. */
+
+#ifndef BINEMUL_H
+#define BINEMUL_H
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+
+extern void ar_emul_usage (FILE *);
+extern void ar_emul_default_usage (FILE *);
+extern bfd_boolean ar_emul_append (bfd **, char *, const char *,
+ bfd_boolean, bfd_boolean);
+extern bfd_boolean ar_emul_default_append (bfd **, char *, const char *,
+ bfd_boolean, bfd_boolean);
+extern bfd_boolean do_ar_emul_append (bfd **, bfd *,
+ bfd_boolean, bfd_boolean,
+ bfd_boolean (*)(bfd *));
+extern bfd_boolean ar_emul_replace (bfd **, char *, const char *,
+ bfd_boolean);
+extern bfd_boolean ar_emul_default_replace (bfd **, char *,
+ const char *, bfd_boolean);
+extern bfd_boolean ar_emul_parse_arg (char *);
+extern bfd_boolean ar_emul_default_parse_arg (char *);
+
+/* Macros for common output. */
+
+#define AR_EMUL_USAGE_PRINT_OPTION_HEADER(fp) \
+ /* xgettext:c-format */ \
+ fprintf (fp, _(" emulation options: \n"))
+
+#define AR_EMUL_ELEMENT_CHECK(abfd, file_name) \
+ do { if ((abfd) == NULL) bfd_fatal (file_name); } while (0)
+
+#define AR_EMUL_APPEND_PRINT_VERBOSE(verbose, file_name) \
+ do { if (verbose) printf ("a - %s\n", file_name); } while (0)
+
+#define AR_EMUL_REPLACE_PRINT_VERBOSE(verbose, file_name) \
+ do { if (verbose) printf ("r - %s\n", file_name); } while (0)
+
+typedef struct bin_emulation_xfer_struct
+{
+ /* Print out the extra options. */
+ void (* ar_usage) (FILE *fp);
+ bfd_boolean (* ar_append) (bfd **, char *, const char *, bfd_boolean,
+ bfd_boolean);
+ bfd_boolean (* ar_replace) (bfd **, char *, const char *, bfd_boolean);
+ bfd_boolean (* ar_parse_arg) (char *);
+}
+bin_emulation_xfer_type;
+
+#endif
diff --git a/binutils-2.24/binutils/bucomm.c b/binutils-2.24/binutils/bucomm.c
new file mode 100644
index 00000000..bb3fb3f9
--- /dev/null
+++ b/binutils-2.24/binutils/bucomm.c
@@ -0,0 +1,626 @@
+/* bucomm.c -- Bin Utils COMmon code.
+ Copyright 1991, 1992, 1993, 1994, 1995, 1997, 1998, 2000, 2001, 2002,
+ 2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+ 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 3 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. */
+
+/* We might put this in a library someday so it could be dynamically
+ loaded, but for now it's not necessary. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "filenames.h"
+#include "libbfd.h"
+
+#include <time.h> /* ctime, maybe time_t */
+#include <assert.h>
+#include "bucomm.h"
+
+#ifndef HAVE_TIME_T_IN_TIME_H
+#ifndef HAVE_TIME_T_IN_TYPES_H
+typedef long time_t;
+#endif
+#endif
+
+static const char * endian_string (enum bfd_endian);
+static int display_target_list (void);
+static int display_info_table (int, int);
+static int display_target_tables (void);
+
+/* Error reporting. */
+
+char *program_name;
+
+void
+bfd_nonfatal (const char *string)
+{
+ const char *errmsg;
+
+ errmsg = bfd_errmsg (bfd_get_error ());
+ fflush (stdout);
+ if (string)
+ fprintf (stderr, "%s: %s: %s\n", program_name, string, errmsg);
+ else
+ fprintf (stderr, "%s: %s\n", program_name, errmsg);
+}
+
+/* Issue a non fatal error message. FILENAME, or if NULL then BFD,
+ are used to indicate the problematic file. SECTION, if non NULL,
+ is used to provide a section name. If FORMAT is non-null, then it
+ is used to print additional information via vfprintf. Finally the
+ bfd error message is printed. In summary, error messages are of
+ one of the following forms:
+
+ PROGRAM:file: bfd-error-message
+ PROGRAM:file[section]: bfd-error-message
+ PROGRAM:file: printf-message: bfd-error-message
+ PROGRAM:file[section]: printf-message: bfd-error-message. */
+
+void
+bfd_nonfatal_message (const char *filename,
+ const bfd *abfd,
+ const asection *section,
+ const char *format, ...)
+{
+ const char *errmsg;
+ const char *section_name;
+ va_list args;
+
+ errmsg = bfd_errmsg (bfd_get_error ());
+ fflush (stdout);
+ section_name = NULL;
+ va_start (args, format);
+ fprintf (stderr, "%s", program_name);
+
+ if (abfd)
+ {
+ if (!filename)
+ filename = bfd_get_archive_filename (abfd);
+ if (section)
+ section_name = bfd_get_section_name (abfd, section);
+ }
+ if (section_name)
+ fprintf (stderr, ":%s[%s]", filename, section_name);
+ else
+ fprintf (stderr, ":%s", filename);
+
+ if (format)
+ {
+ fprintf (stderr, ": ");
+ vfprintf (stderr, format, args);
+ }
+ fprintf (stderr, ": %s\n", errmsg);
+ va_end (args);
+}
+
+void
+bfd_fatal (const char *string)
+{
+ bfd_nonfatal (string);
+ xexit (1);
+}
+
+void
+report (const char * format, va_list args)
+{
+ fflush (stdout);
+ fprintf (stderr, "%s: ", program_name);
+ vfprintf (stderr, format, args);
+ putc ('\n', stderr);
+}
+
+void
+fatal VPARAMS ((const char *format, ...))
+{
+ VA_OPEN (args, format);
+ VA_FIXEDARG (args, const char *, format);
+
+ report (format, args);
+ VA_CLOSE (args);
+ xexit (1);
+}
+
+void
+non_fatal VPARAMS ((const char *format, ...))
+{
+ VA_OPEN (args, format);
+ VA_FIXEDARG (args, const char *, format);
+
+ report (format, args);
+ VA_CLOSE (args);
+}
+
+/* Set the default BFD target based on the configured target. Doing
+ this permits the binutils to be configured for a particular target,
+ and linked against a shared BFD library which was configured for a
+ different target. */
+
+void
+set_default_bfd_target (void)
+{
+ /* The macro TARGET is defined by Makefile. */
+ const char *target = TARGET;
+
+ if (! bfd_set_default_target (target))
+ fatal (_("can't set BFD default target to `%s': %s"),
+ target, bfd_errmsg (bfd_get_error ()));
+}
+
+/* After a FALSE return from bfd_check_format_matches with
+ bfd_get_error () == bfd_error_file_ambiguously_recognized, print
+ the possible matching targets. */
+
+void
+list_matching_formats (char **p)
+{
+ fflush (stdout);
+ fprintf (stderr, _("%s: Matching formats:"), program_name);
+ while (*p)
+ fprintf (stderr, " %s", *p++);
+ fputc ('\n', stderr);
+}
+
+/* List the supported targets. */
+
+void
+list_supported_targets (const char *name, FILE *f)
+{
+ int t;
+ const char **targ_names;
+
+ if (name == NULL)
+ fprintf (f, _("Supported targets:"));
+ else
+ fprintf (f, _("%s: supported targets:"), name);
+
+ targ_names = bfd_target_list ();
+ for (t = 0; targ_names[t] != NULL; t++)
+ fprintf (f, " %s", targ_names[t]);
+ fprintf (f, "\n");
+ free (targ_names);
+}
+
+/* List the supported architectures. */
+
+void
+list_supported_architectures (const char *name, FILE *f)
+{
+ const char ** arch;
+ const char ** arches;
+
+ if (name == NULL)
+ fprintf (f, _("Supported architectures:"));
+ else
+ fprintf (f, _("%s: supported architectures:"), name);
+
+ for (arch = arches = bfd_arch_list (); *arch; arch++)
+ fprintf (f, " %s", *arch);
+ fprintf (f, "\n");
+ free (arches);
+}
+
+/* The length of the longest architecture name + 1. */
+#define LONGEST_ARCH sizeof ("powerpc:common")
+
+static const char *
+endian_string (enum bfd_endian endian)
+{
+ switch (endian)
+ {
+ case BFD_ENDIAN_BIG: return _("big endian");
+ case BFD_ENDIAN_LITTLE: return _("little endian");
+ default: return _("endianness unknown");
+ }
+}
+
+/* List the targets that BFD is configured to support, each followed
+ by its endianness and the architectures it supports. */
+
+static int
+display_target_list (void)
+{
+ char *dummy_name;
+ int t;
+ int ret = 1;
+
+ dummy_name = make_temp_file (NULL);
+ for (t = 0; bfd_target_vector[t]; t++)
+ {
+ const bfd_target *p = bfd_target_vector[t];
+ bfd *abfd = bfd_openw (dummy_name, p->name);
+ int a;
+
+ printf (_("%s\n (header %s, data %s)\n"), p->name,
+ endian_string (p->header_byteorder),
+ endian_string (p->byteorder));
+
+ if (abfd == NULL)
+ {
+ bfd_nonfatal (dummy_name);
+ ret = 0;
+ continue;
+ }
+
+ if (! bfd_set_format (abfd, bfd_object))
+ {
+ if (bfd_get_error () != bfd_error_invalid_operation)
+ {
+ bfd_nonfatal (p->name);
+ ret = 0;
+ }
+ bfd_close_all_done (abfd);
+ continue;
+ }
+
+ for (a = bfd_arch_obscure + 1; a < bfd_arch_last; a++)
+ if (bfd_set_arch_mach (abfd, (enum bfd_architecture) a, 0))
+ printf (" %s\n",
+ bfd_printable_arch_mach ((enum bfd_architecture) a, 0));
+ bfd_close_all_done (abfd);
+ }
+ unlink (dummy_name);
+ free (dummy_name);
+
+ return ret;
+}
+
+/* Print a table showing which architectures are supported for entries
+ FIRST through LAST-1 of bfd_target_vector (targets across,
+ architectures down). */
+
+static int
+display_info_table (int first, int last)
+{
+ int t;
+ int ret = 1;
+ char *dummy_name;
+ int a;
+
+ /* Print heading of target names. */
+ printf ("\n%*s", (int) LONGEST_ARCH, " ");
+ for (t = first; t < last && bfd_target_vector[t]; t++)
+ printf ("%s ", bfd_target_vector[t]->name);
+ putchar ('\n');
+
+ dummy_name = make_temp_file (NULL);
+ for (a = bfd_arch_obscure + 1; a < bfd_arch_last; a++)
+ if (strcmp (bfd_printable_arch_mach ((enum bfd_architecture) a, 0),
+ "UNKNOWN!") != 0)
+ {
+ printf ("%*s ", (int) LONGEST_ARCH - 1,
+ bfd_printable_arch_mach ((enum bfd_architecture) a, 0));
+ for (t = first; t < last && bfd_target_vector[t]; t++)
+ {
+ const bfd_target *p = bfd_target_vector[t];
+ bfd_boolean ok = TRUE;
+ bfd *abfd = bfd_openw (dummy_name, p->name);
+
+ if (abfd == NULL)
+ {
+ bfd_nonfatal (p->name);
+ ret = 0;
+ ok = FALSE;
+ }
+
+ if (ok)
+ {
+ if (! bfd_set_format (abfd, bfd_object))
+ {
+ if (bfd_get_error () != bfd_error_invalid_operation)
+ {
+ bfd_nonfatal (p->name);
+ ret = 0;
+ }
+ ok = FALSE;
+ }
+ }
+
+ if (ok)
+ {
+ if (! bfd_set_arch_mach (abfd, (enum bfd_architecture) a, 0))
+ ok = FALSE;
+ }
+
+ if (ok)
+ printf ("%s ", p->name);
+ else
+ {
+ int l = strlen (p->name);
+ while (l--)
+ putchar ('-');
+ putchar (' ');
+ }
+ if (abfd != NULL)
+ bfd_close_all_done (abfd);
+ }
+ putchar ('\n');
+ }
+ unlink (dummy_name);
+ free (dummy_name);
+
+ return ret;
+}
+
+/* Print tables of all the target-architecture combinations that
+ BFD has been configured to support. */
+
+static int
+display_target_tables (void)
+{
+ int t;
+ int columns;
+ int ret = 1;
+ char *colum;
+
+ columns = 0;
+ colum = getenv ("COLUMNS");
+ if (colum != NULL)
+ columns = atoi (colum);
+ if (columns == 0)
+ columns = 80;
+
+ t = 0;
+ while (bfd_target_vector[t] != NULL)
+ {
+ int oldt = t, wid;
+
+ wid = LONGEST_ARCH + strlen (bfd_target_vector[t]->name) + 1;
+ ++t;
+ while (wid < columns && bfd_target_vector[t] != NULL)
+ {
+ int newwid;
+
+ newwid = wid + strlen (bfd_target_vector[t]->name) + 1;
+ if (newwid >= columns)
+ break;
+ wid = newwid;
+ ++t;
+ }
+ if (! display_info_table (oldt, t))
+ ret = 0;
+ }
+
+ return ret;
+}
+
+int
+display_info (void)
+{
+ printf (_("BFD header file version %s\n"), BFD_VERSION_STRING);
+ if (! display_target_list () || ! display_target_tables ())
+ return 1;
+ else
+ return 0;
+}
+
+/* Display the archive header for an element as if it were an ls -l listing:
+
+ Mode User\tGroup\tSize\tDate Name */
+
+void
+print_arelt_descr (FILE *file, bfd *abfd, bfd_boolean verbose)
+{
+ struct stat buf;
+
+ if (verbose)
+ {
+ if (bfd_stat_arch_elt (abfd, &buf) == 0)
+ {
+ char modebuf[11];
+ char timebuf[40];
+ time_t when = buf.st_mtime;
+ const char *ctime_result = (const char *) ctime (&when);
+ bfd_size_type size;
+
+ /* POSIX format: skip weekday and seconds from ctime output. */
+ sprintf (timebuf, "%.12s %.4s", ctime_result + 4, ctime_result + 20);
+
+ mode_string (buf.st_mode, modebuf);
+ modebuf[10] = '\0';
+ size = buf.st_size;
+ /* POSIX 1003.2/D11 says to skip first character (entry type). */
+ fprintf (file, "%s %ld/%ld %6" BFD_VMA_FMT "u %s ", modebuf + 1,
+ (long) buf.st_uid, (long) buf.st_gid,
+ size, timebuf);
+ }
+ }
+
+ fprintf (file, "%s\n", bfd_get_filename (abfd));
+}
+
+/* Return a path for a new temporary file in the same directory
+ as file PATH. */
+
+static char *
+template_in_dir (const char *path)
+{
+#define template "stXXXXXX"
+ const char *slash = strrchr (path, '/');
+ char *tmpname;
+ size_t len;
+
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ {
+ /* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
+ char *bslash = strrchr (path, '\\');
+
+ if (slash == NULL || (bslash != NULL && bslash > slash))
+ slash = bslash;
+ if (slash == NULL && path[0] != '\0' && path[1] == ':')
+ slash = path + 1;
+ }
+#endif
+
+ if (slash != (char *) NULL)
+ {
+ len = slash - path;
+ tmpname = (char *) xmalloc (len + sizeof (template) + 2);
+ memcpy (tmpname, path, len);
+
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ /* If tmpname is "X:", appending a slash will make it a root
+ directory on drive X, which is NOT the same as the current
+ directory on drive X. */
+ if (len == 2 && tmpname[1] == ':')
+ tmpname[len++] = '.';
+#endif
+ tmpname[len++] = '/';
+ }
+ else
+ {
+ tmpname = (char *) xmalloc (sizeof (template));
+ len = 0;
+ }
+
+ memcpy (tmpname + len, template, sizeof (template));
+ return tmpname;
+#undef template
+}
+
+/* Return the name of a created temporary file in the same directory
+ as FILENAME. */
+
+char *
+make_tempname (char *filename)
+{
+ char *tmpname = template_in_dir (filename);
+ int fd;
+
+#ifdef HAVE_MKSTEMP
+ fd = mkstemp (tmpname);
+#else
+ tmpname = mktemp (tmpname);
+ if (tmpname == NULL)
+ return NULL;
+ fd = open (tmpname, O_RDWR | O_CREAT | O_EXCL, 0600);
+#endif
+ if (fd == -1)
+ {
+ free (tmpname);
+ return NULL;
+ }
+ close (fd);
+ return tmpname;
+}
+
+/* Return the name of a created temporary directory inside the
+ directory containing FILENAME. */
+
+char *
+make_tempdir (char *filename)
+{
+ char *tmpname = template_in_dir (filename);
+
+#ifdef HAVE_MKDTEMP
+ return mkdtemp (tmpname);
+#else
+ tmpname = mktemp (tmpname);
+ if (tmpname == NULL)
+ return NULL;
+#if defined (_WIN32) && !defined (__CYGWIN32__)
+ if (mkdir (tmpname) != 0)
+ return NULL;
+#else
+ if (mkdir (tmpname, 0700) != 0)
+ return NULL;
+#endif
+ return tmpname;
+#endif
+}
+
+/* Parse a string into a VMA, with a fatal error if it can't be
+ parsed. */
+
+bfd_vma
+parse_vma (const char *s, const char *arg)
+{
+ bfd_vma ret;
+ const char *end;
+
+ ret = bfd_scan_vma (s, &end, 0);
+
+ if (*end != '\0')
+ fatal (_("%s: bad number: %s"), arg, s);
+
+ return ret;
+}
+
+/* Returns the size of the named file. If the file does not
+ exist, or if it is not a real file, then a suitable non-fatal
+ error message is printed and (off_t) -1 is returned. */
+
+off_t
+get_file_size (const char * file_name)
+{
+ struct stat statbuf;
+
+ if (stat (file_name, &statbuf) < 0)
+ {
+ if (errno == ENOENT)
+ non_fatal (_("'%s': No such file"), file_name);
+ else
+ non_fatal (_("Warning: could not locate '%s'. reason: %s"),
+ file_name, strerror (errno));
+ }
+ else if (! S_ISREG (statbuf.st_mode))
+ non_fatal (_("Warning: '%s' is not an ordinary file"), file_name);
+ else if (statbuf.st_size < 0)
+ non_fatal (_("Warning: '%s' has negative size, probably it is too large"),
+ file_name);
+ else
+ return statbuf.st_size;
+
+ return (off_t) -1;
+}
+
+/* Return the filename in a static buffer. */
+
+const char *
+bfd_get_archive_filename (const bfd *abfd)
+{
+ static size_t curr = 0;
+ static char *buf;
+ size_t needed;
+
+ assert (abfd != NULL);
+
+ if (!abfd->my_archive)
+ return bfd_get_filename (abfd);
+
+ needed = (strlen (bfd_get_filename (abfd->my_archive))
+ + strlen (bfd_get_filename (abfd)) + 3);
+ if (needed > curr)
+ {
+ if (curr)
+ free (buf);
+ curr = needed + (needed >> 1);
+ buf = (char *) bfd_malloc (curr);
+ /* If we can't malloc, fail safe by returning just the file name.
+ This function is only used when building error messages. */
+ if (!buf)
+ {
+ curr = 0;
+ return bfd_get_filename (abfd);
+ }
+ }
+ sprintf (buf, "%s(%s)", bfd_get_filename (abfd->my_archive),
+ bfd_get_filename (abfd));
+ return buf;
+}
diff --git a/binutils-2.24/binutils/bucomm.h b/binutils-2.24/binutils/bucomm.h
new file mode 100644
index 00000000..fcbc32b7
--- /dev/null
+++ b/binutils-2.24/binutils/bucomm.h
@@ -0,0 +1,79 @@
+/* bucomm.h -- binutils common include file.
+ Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
+ 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 3 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. */
+
+#ifndef _BUCOMM_H
+#define _BUCOMM_H
+
+/* Return the filename in a static buffer. */
+const char *bfd_get_archive_filename (const bfd *);
+
+void bfd_nonfatal (const char *);
+
+void bfd_nonfatal_message (const char *, const bfd *, const asection *,
+ const char *, ...);
+
+void bfd_fatal (const char *) ATTRIBUTE_NORETURN;
+
+void report (const char *, va_list) ATTRIBUTE_PRINTF(1,0);
+
+void fatal (const char *, ...) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
+
+void non_fatal (const char *, ...) ATTRIBUTE_PRINTF_1;
+
+void set_default_bfd_target (void);
+
+void list_matching_formats (char **);
+
+void list_supported_targets (const char *, FILE *);
+
+void list_supported_architectures (const char *, FILE *);
+
+int display_info (void);
+
+void print_arelt_descr (FILE *, bfd *, bfd_boolean);
+
+char *make_tempname (char *);
+char *make_tempdir (char *);
+
+bfd_vma parse_vma (const char *, const char *);
+
+off_t get_file_size (const char *);
+
+extern char *program_name;
+
+/* filemode.c */
+void mode_string (unsigned long, char *);
+
+/* version.c */
+extern void print_version (const char *);
+
+/* rename.c */
+extern void set_times (const char *, const struct stat *);
+
+extern int smart_rename (const char *, const char *, int);
+
+/* libiberty. */
+void *xmalloc (size_t);
+
+void *xrealloc (void *, size_t);
+
+#endif /* _BUCOMM_H */
diff --git a/binutils-2.24/binutils/budbg.h b/binutils-2.24/binutils/budbg.h
new file mode 100644
index 00000000..b87defbd
--- /dev/null
+++ b/binutils-2.24/binutils/budbg.h
@@ -0,0 +1,57 @@
+/* budbg.c -- Interfaces to the generic debugging information routines.
+ Copyright 1995, 1996, 2002, 2003, 2005, 2007, 2008, 2012
+ Free Software Foundation, Inc.
+ Written by Ian Lance Taylor <ian@cygnus.com>.
+
+ 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 3 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. */
+
+#ifndef BUDBG_H
+#define BUDBG_H
+
+/* Routine used to read generic debugging information. */
+
+extern void *read_debugging_info (bfd *, asymbol **, long, bfd_boolean);
+
+/* Routine used to print generic debugging information. */
+
+extern bfd_boolean print_debugging_info
+ (FILE *, void *, bfd *, asymbol **, void *, bfd_boolean);
+
+/* Routines used to read and write stabs information. */
+
+extern void *start_stab (void *, bfd *, bfd_boolean, asymbol **, long);
+
+extern bfd_boolean finish_stab (void *, void *);
+
+extern bfd_boolean parse_stab
+ (void *, void *, int, int, bfd_vma, const char *);
+
+extern bfd_boolean write_stabs_in_sections_debugging_info
+ (bfd *, void *, bfd_byte **, bfd_size_type *, bfd_byte **, bfd_size_type *);
+
+/* Routines used to read and write IEEE debugging information. */
+
+extern bfd_boolean parse_ieee (void *, bfd *, const bfd_byte *, bfd_size_type);
+
+extern bfd_boolean write_ieee_debugging_info (bfd *, void *);
+
+/* Routine used to read COFF debugging information. */
+
+extern bfd_boolean parse_coff (bfd *, asymbol **, long, void *);
+
+#endif
diff --git a/binutils-2.24/binutils/coffdump.c b/binutils-2.24/binutils/coffdump.c
new file mode 100644
index 00000000..d871e1eb
--- /dev/null
+++ b/binutils-2.24/binutils/coffdump.c
@@ -0,0 +1,558 @@
+/* Coff file dumper.
+ Copyright 1994, 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007,
+ 2011 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 3 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 Steve Chamberlain <sac@cygnus.com>
+
+ This module reads a type tree generated by coffgrok and prints
+ it out so we can test the grokker. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bfd_stdint.h"
+#include "libiberty.h"
+#include "bucomm.h"
+
+#include "coffgrok.h"
+#include "getopt.h"
+
+static int atnl;
+
+static void tab (int);
+static void nl (void);
+static void dump_coff_lines (struct coff_line *);
+static void dump_coff_type (struct coff_type *);
+static void dump_coff_where (struct coff_where *);
+static void dump_coff_visible (struct coff_visible *);
+static void dump_coff_scope (struct coff_scope *);
+static void dump_coff_sfile (struct coff_sfile *);
+static void dump_coff_section (struct coff_section *);
+static void show_usage (FILE *, int);
+extern int main (int, char **);
+
+static void
+tab (int x)
+{
+ static int indent;
+ int i;
+
+ if (atnl)
+ {
+ if (x < 0)
+ {
+ printf (")");
+ indent += x;
+
+ return;
+ }
+ else
+ {
+ printf ("\n");
+ atnl = 0;
+ }
+ }
+
+ if (x == -1)
+ {
+ for (i = 0; i < indent; i++)
+ printf (" ");
+
+ indent += x;
+ printf (")");
+ return;
+ }
+
+ indent += x;
+
+ for (i = 0; i < indent; i++)
+ printf (" ");
+
+ if (x)
+ {
+ printf ("(");
+ }
+}
+
+static void
+nl (void)
+{
+ atnl = 1;
+}
+
+static void
+dump_coff_lines (struct coff_line *p)
+{
+ int i;
+ int online = 0;
+
+ tab (1);
+ printf (_("#lines %d "),p->nlines);
+
+ for (i = 0; i < p->nlines; i++)
+ {
+ printf ("(%d 0x%x)", p->lines[i], p->addresses[i]);
+
+ online++;
+
+ if (online > 6)
+ {
+ nl ();
+ tab (0);
+ online = 0;
+ }
+ }
+ nl ();
+ tab (-1);
+}
+
+static void
+dump_coff_type (struct coff_type *p)
+{
+ tab (1);
+ printf (_("size %d "), p->size);
+
+ switch (p->type)
+ {
+ case coff_secdef_type:
+ printf (_("section definition at %x size %x\n"),
+ p->u.asecdef.address,
+ p->u.asecdef.size);
+ nl ();
+ break;
+ case coff_pointer_type:
+ printf (_("pointer to"));
+ nl ();
+ dump_coff_type (p->u.pointer.points_to);
+ break;
+ case coff_array_type:
+ printf (_("array [%d] of"), p->u.array.dim);
+ nl ();
+ dump_coff_type (p->u.array.array_of);
+ break;
+ case coff_function_type:
+ printf (_("function returning"));
+ nl ();
+ dump_coff_type (p->u.function.function_returns);
+ dump_coff_lines (p->u.function.lines);
+ printf (_("arguments"));
+ nl ();
+ dump_coff_scope (p->u.function.parameters);
+ tab (0);
+ printf (_("code"));
+ nl ();
+ dump_coff_scope (p->u.function.code);
+ tab(0);
+ break;
+ case coff_structdef_type:
+ printf (_("structure definition"));
+ nl ();
+ dump_coff_scope (p->u.astructdef.elements);
+ break;
+ case coff_structref_type:
+ if (!p->u.aenumref.ref)
+ printf (_("structure ref to UNKNOWN struct"));
+ else
+ printf (_("structure ref to %s"), p->u.aenumref.ref->name);
+ break;
+ case coff_enumref_type:
+ printf (_("enum ref to %s"), p->u.astructref.ref->name);
+ break;
+ case coff_enumdef_type:
+ printf (_("enum definition"));
+ nl ();
+ dump_coff_scope (p->u.aenumdef.elements);
+ break;
+ case coff_basic_type:
+ switch (p->u.basic)
+ {
+ case T_NULL:
+ printf ("NULL");
+ break;
+ case T_VOID:
+ printf ("VOID");
+ break;
+ case T_CHAR:
+ printf ("CHAR");
+ break;
+ case T_SHORT:
+ printf ("SHORT");
+ break;
+ case T_INT:
+ printf ("INT ");
+ break;
+ case T_LONG:
+ printf ("LONG");
+ break;
+ case T_FLOAT:
+ printf ("FLOAT");
+ break;
+ case T_DOUBLE:
+ printf ("DOUBLE");
+ break;
+ case T_STRUCT:
+ printf ("STRUCT");
+ break;
+ case T_UNION:
+ printf ("UNION");
+ break;
+ case T_ENUM:
+ printf ("ENUM");
+ break;
+ case T_MOE:
+ printf ("MOE ");
+ break;
+ case T_UCHAR:
+ printf ("UCHAR");
+ break;
+ case T_USHORT:
+ printf ("USHORT");
+ break;
+ case T_UINT:
+ printf ("UINT");
+ break;
+ case T_ULONG:
+ printf ("ULONG");
+ break;
+ case T_LNGDBL:
+ printf ("LNGDBL");
+ break;
+ default:
+ abort ();
+ }
+ }
+ nl ();
+ tab (-1);
+}
+
+static void
+dump_coff_where (struct coff_where *p)
+{
+ tab (1);
+ switch (p->where)
+ {
+ case coff_where_stack:
+ printf (_("Stack offset %x"), p->offset);
+ break;
+ case coff_where_memory:
+ printf (_("Memory section %s+%x"), p->section->name, p->offset);
+ break;
+ case coff_where_register:
+ printf (_("Register %d"), p->offset);
+ break;
+ case coff_where_member_of_struct:
+ printf (_("Struct Member offset %x"), p->offset);
+ break;
+ case coff_where_member_of_enum:
+ printf (_("Enum Member offset %x"), p->offset);
+ break;
+ case coff_where_unknown:
+ printf (_("Undefined symbol"));
+ break;
+ case coff_where_strtag:
+ printf ("STRTAG");
+ case coff_where_entag:
+ printf ("ENTAG");
+ break;
+ case coff_where_typedef:
+ printf ("TYPEDEF");
+ break;
+ default:
+ abort ();
+ }
+ nl ();
+ tab (-1);
+}
+
+static void
+dump_coff_visible (struct coff_visible *p)
+{
+ tab (1);
+ switch (p->type)
+ {
+ case coff_vis_ext_def:
+ printf ("coff_vis_ext_def");
+ break;
+ case coff_vis_ext_ref:
+ printf ("coff_vis_ext_ref");
+ break;
+ case coff_vis_int_def:
+ printf ("coff_vis_int_def");
+ break;
+ case coff_vis_common:
+ printf ("coff_vis_common");
+ break;
+ case coff_vis_auto:
+ printf ("coff_vis_auto");
+ break;
+ case coff_vis_autoparam:
+ printf ("coff_vis_autoparam");
+ break;
+ case coff_vis_regparam:
+ printf ("coff_vis_regparam");
+ break;
+ case coff_vis_register:
+ printf ("coff_vis_register");
+ break;
+ case coff_vis_tag:
+ printf ("coff_vis_tag");
+ break;
+ case coff_vis_member_of_struct:
+ printf ("coff_vis_member_of_struct");
+ break;
+ case coff_vis_member_of_enum:
+ printf ("coff_vis_member_of_enum");
+ break;
+ default:
+ abort ();
+ }
+ nl ();
+ tab (-1);
+}
+
+static void
+dump_coff_symbol (struct coff_symbol *p)
+{
+ tab (1);
+ printf (_("List of symbols"));
+ nl ();
+
+ while (p)
+ {
+ tab (1);
+ tab (1);
+ printf (_("Symbol %s, tag %d, number %d"), p->name, p->tag, p->number);
+ nl ();
+ tab (-1);
+ tab (1);
+ printf (_("Type"));
+ nl ();
+ dump_coff_type (p->type);
+ tab (-1);
+ tab (1);
+ printf (_("Where"));
+ dump_coff_where (p->where);
+ tab (-1);
+ tab (1);
+ printf (_("Visible"));
+ dump_coff_visible (p->visible);
+ tab (-1);
+ p = p->next;
+ tab (-1);
+ }
+ tab (-1);
+}
+
+static void
+dump_coff_scope (struct coff_scope *p)
+{
+ if (p)
+ {
+ tab (1);
+ printf ("%s %" BFD_VMA_FMT "x ",
+ _("List of blocks "), (bfd_vma) (uintptr_t) p);
+
+ if (p->sec)
+ printf( " %s %x..%x", p->sec->name,p->offset, p->offset + p->size -1);
+
+ nl ();
+ tab (0);
+ printf ("*****************");
+ nl ();
+
+ while (p)
+ {
+ tab (0);
+ printf (_("vars %d"), p->nvars);
+ nl ();
+ dump_coff_symbol (p->vars_head);
+ printf (_("blocks"));
+ nl ();
+ dump_coff_scope (p->list_head);
+ nl ();
+ p = p->next;
+ }
+
+ tab (0);
+ printf ("*****************");
+ nl ();
+ tab (-1);
+ }
+}
+
+static void
+dump_coff_sfile (struct coff_sfile *p)
+{
+ tab (1);
+ printf (_("List of source files"));
+ nl ();
+
+ while (p)
+ {
+ tab (0);
+ printf (_("Source file %s"), p->name);
+ nl ();
+ dump_coff_scope (p->scope);
+ p = p->next;
+ }
+ tab (-1);
+}
+
+static void
+dump_coff_section (struct coff_section *ptr)
+{
+ int i;
+
+ tab (1);
+ printf (_("section %s %d %d address %x size %x number %d nrelocs %d"),
+ ptr->name, ptr->code, ptr->data, ptr->address,ptr->size,
+ ptr->number, ptr->nrelocs);
+ nl ();
+
+ for (i = 0; i < ptr->nrelocs; i++)
+ {
+ tab (0);
+ printf ("(%x %s %x)",
+ ptr->relocs[i].offset,
+ ptr->relocs[i].symbol->name,
+ ptr->relocs[i].addend);
+ nl ();
+ }
+
+ tab (-1);
+}
+
+static void
+coff_dump (struct coff_ofile *ptr)
+{
+ int i;
+
+ printf ("Coff dump");
+ nl ();
+ printf (_("#sources %d"), ptr->nsources);
+ nl ();
+ dump_coff_sfile (ptr->source_head);
+
+ for (i = 0; i < ptr->nsections; i++)
+ dump_coff_section (ptr->sections + i);
+}
+
+char * program_name;
+
+static void
+show_usage (FILE *file, int status)
+{
+ fprintf (file, _("Usage: %s [option(s)] in-file\n"), program_name);
+ fprintf (file, _(" Print a human readable interpretation of a COFF object file\n"));
+ fprintf (file, _(" 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"));
+
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+
+ exit (status);
+}
+
+int
+main (int ac, char **av)
+{
+ bfd *abfd;
+ struct coff_ofile *tree;
+ char **matching;
+ char *input_file = NULL;
+ int opt;
+ static struct option long_options[] =
+ {
+ { "help", no_argument, 0, 'h' },
+ { "version", no_argument, 0, 'V' },
+ { NULL, no_argument, 0, 0 }
+ };
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = av[0];
+ xmalloc_set_program_name (program_name);
+
+ expandargv (&ac, &av);
+
+ while ((opt = getopt_long (ac, av, "HhVv", long_options,
+ (int *) NULL))
+ != EOF)
+ {
+ switch (opt)
+ {
+ case 'H':
+ case 'h':
+ show_usage (stdout, 0);
+ break;
+ case 'v':
+ case 'V':
+ print_version ("coffdump");
+ exit (0);
+ case 0:
+ break;
+ default:
+ show_usage (stderr, 1);
+ break;
+ }
+ }
+
+ if (optind < ac)
+ {
+ input_file = av[optind];
+ }
+
+ if (!input_file)
+ fatal (_("no input file specified"));
+
+ abfd = bfd_openr (input_file, 0);
+
+ if (!abfd)
+ bfd_fatal (input_file);
+
+ if (! bfd_check_format_matches (abfd, bfd_object, &matching))
+ {
+ bfd_nonfatal (input_file);
+
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ {
+ list_matching_formats (matching);
+ free (matching);
+ }
+ exit (1);
+ }
+
+ tree = coff_grok (abfd);
+
+ coff_dump (tree);
+ printf ("\n");
+
+ return 0;
+}
diff --git a/binutils-2.24/binutils/coffgrok.c b/binutils-2.24/binutils/coffgrok.c
new file mode 100644
index 00000000..746edc1f
--- /dev/null
+++ b/binutils-2.24/binutils/coffgrok.c
@@ -0,0 +1,744 @@
+/* coffgrok.c
+ Copyright 1994, 1995, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005,
+ 2007, 2009 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 3 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 Steve Chamberlain (sac@cygnus.com)
+
+ This module reads a coff file and builds a really simple type tree
+ which can be read by other programs. The first application is a
+ coff->sysroff converter. It can be tested with coffdump.c. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+
+#include "coff/internal.h"
+#include "../bfd/libcoff.h"
+#include "bucomm.h"
+#include "coffgrok.h"
+
+static int lofile = 1;
+static struct coff_scope *top_scope;
+static struct coff_scope *file_scope;
+static struct coff_ofile *ofile;
+
+static struct coff_symbol *last_function_symbol;
+static struct coff_type *last_function_type;
+static struct coff_type *last_struct;
+static struct coff_type *last_enum;
+static struct coff_sfile *cur_sfile;
+
+static struct coff_symbol **tindex;
+
+
+static asymbol **syms;
+static long symcount;
+
+#define N(x) ((x)->_n._n_nptr[1])
+
+static struct coff_ptr_struct *rawsyms;
+static int rawcount;
+static bfd *abfd;
+
+#define PTR_SIZE 4
+#define SHORT_SIZE 2
+#define INT_SIZE 4
+#define LONG_SIZE 4
+#define FLOAT_SIZE 4
+#define DOUBLE_SIZE 8
+
+#define INDEXOF(p) ((struct coff_ptr_struct *)(p)-(rawsyms))
+
+static struct coff_scope *empty_scope (void);
+static struct coff_symbol *empty_symbol (void);
+static void push_scope (int);
+static void pop_scope (void);
+static void do_sections_p1 (struct coff_ofile *);
+static void do_sections_p2 (struct coff_ofile *);
+static struct coff_where *do_where (int);
+static struct coff_line *do_lines (int, char *);
+static struct coff_type *do_type (int);
+static struct coff_visible *do_visible (int);
+static int do_define (int, struct coff_scope *);
+static struct coff_ofile *doit (void);
+
+static struct coff_scope *
+empty_scope (void)
+{
+ struct coff_scope *l;
+ l = (struct coff_scope *) (xcalloc (sizeof (struct coff_scope), 1));
+ return l;
+}
+
+static struct coff_symbol *
+empty_symbol (void)
+{
+ return (struct coff_symbol *) (xcalloc (sizeof (struct coff_symbol), 1));
+}
+
+/*int l;*/
+static void
+push_scope (int slink)
+{
+ struct coff_scope *n = empty_scope ();
+
+ if (slink)
+ {
+ if (top_scope)
+ {
+ if (top_scope->list_tail)
+ {
+ top_scope->list_tail->next = n;
+ }
+ else
+ {
+ top_scope->list_head = n;
+ }
+ top_scope->list_tail = n;
+ }
+ }
+ n->parent = top_scope;
+
+ top_scope = n;
+}
+
+static void
+pop_scope (void)
+{
+ top_scope = top_scope->parent;
+}
+
+static void
+do_sections_p1 (struct coff_ofile *head)
+{
+ asection *section;
+ int idx;
+ struct coff_section *all = (struct coff_section *) (xcalloc (abfd->section_count + 1,
+ sizeof (struct coff_section)));
+ head->nsections = abfd->section_count + 1;
+ head->sections = all;
+
+ for (idx = 0, section = abfd->sections; section; section = section->next, idx++)
+ {
+ long relsize;
+ int i = section->target_index;
+ arelent **relpp;
+ long relcount;
+
+ relsize = bfd_get_reloc_upper_bound (abfd, section);
+ if (relsize < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+ if (relsize == 0)
+ continue;
+ relpp = (arelent **) xmalloc (relsize);
+ relcount = bfd_canonicalize_reloc (abfd, section, relpp, syms);
+ if (relcount < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ head->sections[i].name = (char *) (section->name);
+ head->sections[i].code = section->flags & SEC_CODE;
+ head->sections[i].data = section->flags & SEC_DATA;
+ if (strcmp (section->name, ".bss") == 0)
+ head->sections[i].data = 1;
+ head->sections[i].address = section->lma;
+ head->sections[i].size = bfd_get_section_size (section);
+ head->sections[i].number = idx;
+ head->sections[i].nrelocs = section->reloc_count;
+ head->sections[i].relocs =
+ (struct coff_reloc *) (xcalloc (section->reloc_count,
+ sizeof (struct coff_reloc)));
+ head->sections[i].bfd_section = section;
+ }
+ head->sections[0].name = "ABSOLUTE";
+ head->sections[0].code = 0;
+ head->sections[0].data = 0;
+ head->sections[0].address = 0;
+ head->sections[0].size = 0;
+ head->sections[0].number = 0;
+}
+
+static void
+do_sections_p2 (struct coff_ofile *head)
+{
+ asection *section;
+ for (section = abfd->sections; section; section = section->next)
+ {
+ unsigned int j;
+
+ for (j = 0; j < section->reloc_count; j++)
+ {
+ int idx;
+ int i = section->target_index;
+ struct coff_reloc *r = head->sections[i].relocs + j;
+ arelent *sr = section->relocation + j;
+ r->offset = sr->address;
+ r->addend = sr->addend;
+ idx = ((coff_symbol_type *) (sr->sym_ptr_ptr[0]))->native - rawsyms;
+ r->symbol = tindex[idx];
+ }
+ }
+}
+
+static struct coff_where *
+do_where (int i)
+{
+ struct internal_syment *sym = &rawsyms[i].u.syment;
+ struct coff_where *where =
+ (struct coff_where *) (xmalloc (sizeof (struct coff_where)));
+ where->offset = sym->n_value;
+
+ if (sym->n_scnum == -1)
+ sym->n_scnum = 0;
+
+ switch (sym->n_sclass)
+ {
+ case C_FIELD:
+ where->where = coff_where_member_of_struct;
+ where->offset = sym->n_value / 8;
+ where->bitoffset = sym->n_value % 8;
+ where->bitsize = rawsyms[i + 1].u.auxent.x_sym.x_misc.x_lnsz.x_size;
+ break;
+ case C_MOE:
+ where->where = coff_where_member_of_enum;
+ break;
+ case C_MOS:
+ case C_MOU:
+ where->where = coff_where_member_of_struct;
+ break;
+ case C_AUTO:
+ case C_ARG:
+ where->where = coff_where_stack;
+ break;
+ case C_EXT:
+ case C_STAT:
+ case C_EXTDEF:
+ case C_LABEL:
+ where->where = coff_where_memory;
+ where->section = &ofile->sections[sym->n_scnum];
+ break;
+ case C_REG:
+ case C_REGPARM:
+ where->where = coff_where_register;
+ break;
+ case C_ENTAG:
+ where->where = coff_where_entag;
+ break;
+ case C_STRTAG:
+ case C_UNTAG:
+ where->where = coff_where_strtag;
+ break;
+ case C_TPDEF:
+ where->where = coff_where_typedef;
+ break;
+ default:
+ abort ();
+ break;
+ }
+ return where;
+}
+
+static
+struct coff_line *
+do_lines (int i, char *name ATTRIBUTE_UNUSED)
+{
+ struct coff_line *res = (struct coff_line *) xcalloc (sizeof (struct coff_line), 1);
+ asection *s;
+ unsigned int l;
+
+ /* Find out if this function has any line numbers in the table */
+ for (s = abfd->sections; s; s = s->next)
+ {
+ for (l = 0; l < s->lineno_count; l++)
+ {
+ if (s->lineno[l].line_number == 0)
+ {
+ if (rawsyms + i == ((coff_symbol_type *) (&(s->lineno[l].u.sym[0])))->native)
+ {
+ /* These lines are for this function - so count them and stick them on */
+ int c = 0;
+ /* Find the linenumber of the top of the function, since coff linenumbers
+ are relative to the start of the function. */
+ int start_line = rawsyms[i + 3].u.auxent.x_sym.x_misc.x_lnsz.x_lnno;
+
+ l++;
+ for (c = 0; s->lineno[l + c + 1].line_number; c++)
+ ;
+
+ /* Add two extra records, one for the prologue and one for the epilogue */
+ c += 1;
+ res->nlines = c;
+ res->lines = (int *) (xcalloc (sizeof (int), c));
+ res->addresses = (int *) (xcalloc (sizeof (int), c));
+ res->lines[0] = start_line;
+ res->addresses[0] = rawsyms[i].u.syment.n_value - s->vma;
+ for (c = 0; s->lineno[l + c + 1].line_number; c++)
+ {
+ res->lines[c + 1] = s->lineno[l + c].line_number + start_line - 1;
+ res->addresses[c + 1] = s->lineno[l + c].u.offset;
+ }
+ return res;
+ }
+ }
+ }
+ }
+ return res;
+}
+
+static
+struct coff_type *
+do_type (int i)
+{
+ struct internal_syment *sym = &rawsyms[i].u.syment;
+ union internal_auxent *aux = &rawsyms[i + 1].u.auxent;
+ struct coff_type *res =
+ (struct coff_type *) xmalloc (sizeof (struct coff_type));
+ int type = sym->n_type;
+ int which_dt = 0;
+ int dimind = 0;
+
+ res->type = coff_basic_type;
+ res->u.basic = type & 0xf;
+
+ switch (type & 0xf)
+ {
+ case T_NULL:
+ case T_VOID:
+ if (sym->n_numaux && sym->n_sclass == C_STAT)
+ {
+ /* This is probably a section definition */
+ res->type = coff_secdef_type;
+ res->size = aux->x_scn.x_scnlen;
+ }
+ else
+ {
+ if (type == 0)
+ {
+ /* Don't know what this is, let's make it a simple int */
+ res->size = INT_SIZE;
+ res->u.basic = T_UINT;
+ }
+ else
+ {
+ /* Else it could be a function or pointer to void */
+ res->size = 0;
+ }
+ }
+ break;
+
+
+ break;
+ case T_UCHAR:
+ case T_CHAR:
+ res->size = 1;
+ break;
+ case T_USHORT:
+ case T_SHORT:
+ res->size = SHORT_SIZE;
+ break;
+ case T_UINT:
+ case T_INT:
+ res->size = INT_SIZE;
+ break;
+ case T_ULONG:
+ case T_LONG:
+ res->size = LONG_SIZE;
+ break;
+ case T_FLOAT:
+ res->size = FLOAT_SIZE;
+ break;
+ case T_DOUBLE:
+ res->size = DOUBLE_SIZE;
+ break;
+ case T_STRUCT:
+ case T_UNION:
+ if (sym->n_numaux)
+ {
+ if (aux->x_sym.x_tagndx.p)
+ {
+ /* Referring to a struct defined elsewhere */
+ res->type = coff_structref_type;
+ res->u.astructref.ref = tindex[INDEXOF (aux->x_sym.x_tagndx.p)];
+ res->size = res->u.astructref.ref ?
+ res->u.astructref.ref->type->size : 0;
+ }
+ else
+ {
+ /* A definition of a struct */
+ last_struct = res;
+ res->type = coff_structdef_type;
+ res->u.astructdef.elements = empty_scope ();
+ res->u.astructdef.idx = 0;
+ res->u.astructdef.isstruct = (type & 0xf) == T_STRUCT;
+ res->size = aux->x_sym.x_misc.x_lnsz.x_size;
+ }
+ }
+ else
+ {
+ /* No auxents - it's anonymous */
+ res->type = coff_structref_type;
+ res->u.astructref.ref = 0;
+ res->size = 0;
+ }
+ break;
+ case T_ENUM:
+ if (aux->x_sym.x_tagndx.p)
+ {
+ /* Referring to a enum defined elsewhere */
+ res->type = coff_enumref_type;
+ res->u.aenumref.ref = tindex[INDEXOF (aux->x_sym.x_tagndx.p)];
+ res->size = res->u.aenumref.ref->type->size;
+ }
+ else
+ {
+ /* A definition of an enum */
+ last_enum = res;
+ res->type = coff_enumdef_type;
+ res->u.aenumdef.elements = empty_scope ();
+ res->size = aux->x_sym.x_misc.x_lnsz.x_size;
+ }
+ break;
+ case T_MOE:
+ break;
+ }
+
+ for (which_dt = 5; which_dt >= 0; which_dt--)
+ {
+ switch ((type >> ((which_dt * 2) + 4)) & 0x3)
+ {
+ case 0:
+ break;
+ case DT_ARY:
+ {
+ struct coff_type *ptr = ((struct coff_type *)
+ xmalloc (sizeof (struct coff_type)));
+ int els = (dimind < DIMNUM
+ ? aux->x_sym.x_fcnary.x_ary.x_dimen[dimind]
+ : 0);
+ ++dimind;
+ ptr->type = coff_array_type;
+ ptr->size = els * res->size;
+ ptr->u.array.dim = els;
+ ptr->u.array.array_of = res;
+ res = ptr;
+ break;
+ }
+ case DT_PTR:
+ {
+ struct coff_type *ptr =
+ (struct coff_type *) xmalloc (sizeof (struct coff_type));
+ ptr->size = PTR_SIZE;
+ ptr->type = coff_pointer_type;
+ ptr->u.pointer.points_to = res;
+ res = ptr;
+ break;
+ }
+ case DT_FCN:
+ {
+ struct coff_type *ptr
+ = (struct coff_type *) xmalloc (sizeof (struct coff_type));
+ ptr->size = 0;
+ ptr->type = coff_function_type;
+ ptr->u.function.function_returns = res;
+ ptr->u.function.parameters = empty_scope ();
+ ptr->u.function.lines = do_lines (i, sym->_n._n_nptr[1]);
+ ptr->u.function.code = 0;
+ last_function_type = ptr;
+ res = ptr;
+ break;
+ }
+ }
+ }
+ return res;
+}
+
+static struct coff_visible *
+do_visible (int i)
+{
+ struct internal_syment *sym = &rawsyms[i].u.syment;
+ struct coff_visible *visible =
+ (struct coff_visible *) (xmalloc (sizeof (struct coff_visible)));
+ enum coff_vis_type t;
+ switch (sym->n_sclass)
+ {
+ case C_MOS:
+ case C_MOU:
+ case C_FIELD:
+ t = coff_vis_member_of_struct;
+ break;
+ case C_MOE:
+ t = coff_vis_member_of_enum;
+ break;
+
+ case C_REGPARM:
+ t = coff_vis_regparam;
+ break;
+
+ case C_REG:
+ t = coff_vis_register;
+ break;
+ case C_STRTAG:
+ case C_UNTAG:
+ case C_ENTAG:
+ case C_TPDEF:
+ t = coff_vis_tag;
+ break;
+ case C_AUTOARG:
+ case C_ARG:
+ t = coff_vis_autoparam;
+ break;
+ case C_AUTO:
+
+
+ t = coff_vis_auto;
+ break;
+ case C_LABEL:
+ case C_STAT:
+ t = coff_vis_int_def;
+ break;
+ case C_EXT:
+ if (sym->n_scnum == N_UNDEF)
+ {
+ if (sym->n_value)
+ t = coff_vis_common;
+ else
+ t = coff_vis_ext_ref;
+ }
+ else
+ t = coff_vis_ext_def;
+ break;
+ default:
+ abort ();
+ break;
+
+ }
+ visible->type = t;
+ return visible;
+}
+
+static int
+do_define (int i, struct coff_scope *b)
+{
+ static int symbol_index;
+ struct internal_syment *sym = &rawsyms[i].u.syment;
+
+ /* Define a symbol and attach to block b */
+ struct coff_symbol *s = empty_symbol ();
+
+ s->number = ++symbol_index;
+ s->name = sym->_n._n_nptr[1];
+ s->sfile = cur_sfile;
+ /* Glue onto the ofile list */
+ if (lofile >= 0)
+ {
+ if (ofile->symbol_list_tail)
+ ofile->symbol_list_tail->next_in_ofile_list = s;
+ else
+ ofile->symbol_list_head = s;
+ ofile->symbol_list_tail = s;
+ /* And the block list */
+ }
+ if (b->vars_tail)
+ b->vars_tail->next = s;
+ else
+ b->vars_head = s;
+
+ b->vars_tail = s;
+ b->nvars++;
+ s->type = do_type (i);
+ s->where = do_where (i);
+ s->visible = do_visible (i);
+
+ tindex[i] = s;
+
+ /* We remember the lowest address in each section for each source file */
+
+ if (s->where->where == coff_where_memory
+ && s->type->type == coff_secdef_type)
+ {
+ struct coff_isection *is = cur_sfile->section + s->where->section->number;
+
+ if (!is->init)
+ {
+ is->low = s->where->offset;
+ is->high = s->where->offset + s->type->size;
+ is->init = 1;
+ is->parent = s->where->section;
+ }
+
+ }
+
+ if (s->type->type == coff_function_type)
+ last_function_symbol = s;
+
+ return i + sym->n_numaux + 1;
+}
+
+
+static
+struct coff_ofile *
+doit (void)
+{
+ int i;
+ int infile = 0;
+ struct coff_ofile *head =
+ (struct coff_ofile *) xmalloc (sizeof (struct coff_ofile));
+ ofile = head;
+ head->source_head = 0;
+ head->source_tail = 0;
+ head->nsources = 0;
+ head->symbol_list_tail = 0;
+ head->symbol_list_head = 0;
+ do_sections_p1 (head);
+ push_scope (1);
+
+ for (i = 0; i < rawcount;)
+ {
+ struct internal_syment *sym = &rawsyms[i].u.syment;
+ switch (sym->n_sclass)
+ {
+ case C_FILE:
+ {
+ /* new source file announced */
+ struct coff_sfile *n =
+ (struct coff_sfile *) xmalloc (sizeof (struct coff_sfile));
+ n->section = (struct coff_isection *) xcalloc (sizeof (struct coff_isection), abfd->section_count + 1);
+ cur_sfile = n;
+ n->name = sym->_n._n_nptr[1];
+ n->next = 0;
+
+ if (infile)
+ {
+ pop_scope ();
+ }
+ infile = 1;
+ push_scope (1);
+ file_scope = n->scope = top_scope;
+
+ if (head->source_tail)
+ head->source_tail->next = n;
+ else
+ head->source_head = n;
+ head->source_tail = n;
+ head->nsources++;
+ i += sym->n_numaux + 1;
+ }
+ break;
+ case C_FCN:
+ {
+ char *name = sym->_n._n_nptr[1];
+ if (name[1] == 'b')
+ {
+ /* Function start */
+ push_scope (0);
+ last_function_type->u.function.code = top_scope;
+ top_scope->sec = ofile->sections + sym->n_scnum;
+ top_scope->offset = sym->n_value;
+ }
+ else
+ {
+ top_scope->size = sym->n_value - top_scope->offset + 1;
+ pop_scope ();
+
+ }
+ i += sym->n_numaux + 1;
+ }
+ break;
+
+ case C_BLOCK:
+ {
+ char *name = sym->_n._n_nptr[1];
+ if (name[1] == 'b')
+ {
+ /* Block start */
+ push_scope (1);
+ top_scope->sec = ofile->sections + sym->n_scnum;
+ top_scope->offset = sym->n_value;
+
+ }
+ else
+ {
+ top_scope->size = sym->n_value - top_scope->offset + 1;
+ pop_scope ();
+ }
+ i += sym->n_numaux + 1;
+ }
+ break;
+ case C_REGPARM:
+ case C_ARG:
+ i = do_define (i, last_function_symbol->type->u.function.parameters);
+ break;
+ case C_MOS:
+ case C_MOU:
+ case C_FIELD:
+ i = do_define (i, last_struct->u.astructdef.elements);
+ break;
+ case C_MOE:
+ i = do_define (i, last_enum->u.aenumdef.elements);
+ break;
+ case C_STRTAG:
+ case C_ENTAG:
+ case C_UNTAG:
+ /* Various definition */
+ i = do_define (i, top_scope);
+ break;
+ case C_EXT:
+ case C_LABEL:
+ i = do_define (i, file_scope);
+ break;
+ case C_STAT:
+ case C_TPDEF:
+ case C_AUTO:
+ case C_REG:
+ i = do_define (i, top_scope);
+ break;
+ default:
+ abort ();
+ case C_EOS:
+ i += sym->n_numaux + 1;
+ break;
+ }
+ }
+ do_sections_p2 (head);
+ return head;
+}
+
+struct coff_ofile *
+coff_grok (bfd *inabfd)
+{
+ long storage;
+ struct coff_ofile *p;
+ abfd = inabfd;
+ storage = bfd_get_symtab_upper_bound (abfd);
+
+ if (storage < 0)
+ bfd_fatal (abfd->filename);
+
+ syms = (asymbol **) xmalloc (storage);
+ symcount = bfd_canonicalize_symtab (abfd, syms);
+ if (symcount < 0)
+ bfd_fatal (abfd->filename);
+ rawsyms = obj_raw_syments (abfd);
+ rawcount = obj_raw_syment_count (abfd);
+ tindex = (struct coff_symbol **) (xcalloc (sizeof (struct coff_symbol *), rawcount));
+
+ p = doit ();
+ return p;
+}
diff --git a/binutils-2.24/binutils/coffgrok.h b/binutils-2.24/binutils/coffgrok.h
new file mode 100644
index 00000000..44a49e20
--- /dev/null
+++ b/binutils-2.24/binutils/coffgrok.h
@@ -0,0 +1,226 @@
+/* coffgrok.h
+ Copyright 2001, 2002, 2003, 2005, 2007 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 3 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. */
+
+#define T_NULL 0
+#define T_VOID 1 /* function argument (only used by compiler) */
+#define T_CHAR 2 /* character */
+#define T_SHORT 3 /* short integer */
+#define T_INT 4 /* integer */
+#define T_LONG 5 /* long integer */
+#define T_FLOAT 6 /* floating point */
+#define T_DOUBLE 7 /* double word */
+#define T_STRUCT 8 /* structure */
+#define T_UNION 9 /* union */
+#define T_ENUM 10 /* enumeration */
+#define T_MOE 11 /* member of enumeration*/
+#define T_UCHAR 12 /* unsigned character */
+#define T_USHORT 13 /* unsigned short */
+#define T_UINT 14 /* unsigned integer */
+#define T_ULONG 15 /* unsigned long */
+#define T_LNGDBL 16 /* long double */
+
+
+struct coff_reloc
+{
+ int offset;
+ struct coff_symbol *symbol;
+ int addend;
+};
+
+struct coff_section
+{
+ char *name;
+ int code;
+ int data;
+ int address;
+ int number; /* 0..n, .text = 0 */
+ int nrelocs;
+ int size;
+ struct coff_reloc *relocs;
+ struct bfd_section *bfd_section;
+};
+
+struct coff_ofile
+{
+ int nsources;
+ struct coff_sfile *source_head;
+ struct coff_sfile *source_tail;
+ int nsections;
+ struct coff_section *sections;
+ struct coff_symbol *symbol_list_head;
+ struct coff_symbol *symbol_list_tail;
+};
+
+struct coff_isection {
+ int low;
+ int high;
+ int init;
+ struct coff_section *parent;
+};
+
+struct coff_sfile
+{
+ char *name;
+ struct coff_scope *scope;
+ struct coff_sfile *next;
+
+ /* Vector which maps where in each output section
+ the input file has it's data */
+ struct coff_isection *section;
+
+};
+
+
+ struct coff_type
+{
+ int size;
+ enum
+ {
+ coff_pointer_type, coff_function_type, coff_array_type, coff_structdef_type, coff_basic_type,
+ coff_structref_type, coff_enumref_type, coff_enumdef_type, coff_secdef_type
+ } type;
+ union
+ {
+ struct
+ {
+ int address;
+ int size;
+ } asecdef;
+
+ struct
+ {
+ int isstruct;
+ struct coff_scope *elements;
+ int idx;
+ }
+ astructdef;
+ struct
+ {
+ struct coff_symbol *ref;
+ } astructref;
+
+ struct
+ {
+ struct coff_scope *elements;
+ int idx;
+ } aenumdef;
+ struct
+ {
+ struct coff_symbol *ref;
+ } aenumref;
+
+ struct
+ {
+ struct coff_type *points_to;
+ } pointer;
+ struct
+ {
+ int dim;
+ struct coff_type *array_of;
+ } array;
+
+ struct
+ {
+ struct coff_type *function_returns;
+ struct coff_scope *parameters;
+ struct coff_scope *code;
+ struct coff_line *lines;
+ } function;
+ int basic; /* One of T_VOID.. T_UINT */
+ } u;
+};
+
+
+ struct coff_line
+ {
+ int nlines;
+ int *lines;
+ int *addresses;
+ };
+
+
+ struct coff_scope
+ {
+ struct coff_section *sec; /* What section */
+ int offset; /* where */
+ int size; /* How big */
+ struct coff_scope *parent; /* one up */
+
+ struct coff_scope *next; /*next along */
+
+ int nvars;
+
+ struct coff_symbol *vars_head; /* symbols */
+ struct coff_symbol *vars_tail;
+
+ struct coff_scope *list_head; /* children */
+ struct coff_scope *list_tail;
+
+ };
+
+
+ struct coff_visible
+ {
+ enum coff_vis_type
+ {
+ coff_vis_ext_def,
+ coff_vis_ext_ref,
+ coff_vis_int_def,
+ coff_vis_common,
+ coff_vis_auto,
+ coff_vis_register,
+ coff_vis_tag,
+ coff_vis_member_of_struct,
+ coff_vis_member_of_enum,
+ coff_vis_autoparam,
+ coff_vis_regparam,
+ } type;
+ };
+
+ struct coff_where
+ {
+ enum
+ {
+ coff_where_stack, coff_where_memory, coff_where_register, coff_where_unknown,
+ coff_where_strtag, coff_where_member_of_struct,
+ coff_where_member_of_enum, coff_where_entag, coff_where_typedef
+
+ } where;
+ int offset;
+ int bitoffset;
+ int bitsize;
+ struct coff_section *section;
+ };
+
+ struct coff_symbol
+ {
+ char *name;
+ int tag;
+ struct coff_type *type;
+ struct coff_where *where;
+ struct coff_visible *visible;
+ struct coff_symbol *next;
+ struct coff_symbol *next_in_ofile_list; /* For the ofile list */
+ int number;
+ int er_number;
+ struct coff_sfile *sfile;
+ };
+
+struct coff_ofile *coff_grok PARAMS ((bfd *));
diff --git a/binutils-2.24/binutils/config.in b/binutils-2.24/binutils/config.in
new file mode 100644
index 00000000..0a8551ff
--- /dev/null
+++ b/binutils-2.24/binutils/config.in
@@ -0,0 +1,271 @@
+/* config.in. Generated from configure.in by autoheader. */
+
+/* Check that config.h is #included before system headers
+ (this works only for glibc, but that should be enough). */
+#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
+# error config.h must be #included before system headers
+#endif
+#define __CONFIG_H__ 1
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+ systems. This function is required for `alloca.c' support on those systems.
+ */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Should ar and ranlib use -D behavior by default? */
+#undef DEFAULT_AR_DETERMINISTIC
+
+/* Define to 1 if translation of program messages to the user's native
+ language is requested. */
+#undef ENABLE_NLS
+
+/* Suffix used for executables, if any. */
+#undef EXECUTABLE_SUFFIX
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+ */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the declaration of `environ', and to 0 if you
+ don't. */
+#undef HAVE_DECL_ENVIRON
+
+/* Define to 1 if you have the declaration of `fprintf', and to 0 if you
+ don't. */
+#undef HAVE_DECL_FPRINTF
+
+/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
+ don't. */
+#undef HAVE_DECL_GETC_UNLOCKED
+
+/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
+ */
+#undef HAVE_DECL_GETENV
+
+/* Is the prototype for getopt in <unistd.h> in the expected format? */
+#undef HAVE_DECL_GETOPT
+
+/* Define to 1 if you have the declaration of `sbrk', and to 0 if you don't.
+ */
+#undef HAVE_DECL_SBRK
+
+/* Define to 1 if you have the declaration of `snprintf', and to 0 if you
+ don't. */
+#undef HAVE_DECL_SNPRINTF
+
+/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't.
+ */
+#undef HAVE_DECL_STPCPY
+
+/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRNLEN
+
+/* Define to 1 if you have the declaration of `strstr', and to 0 if you don't.
+ */
+#undef HAVE_DECL_STRSTR
+
+/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you
+ don't. */
+#undef HAVE_DECL_VSNPRINTF
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Does the platform use an executable suffix? */
+#undef HAVE_EXECUTABLE_SUFFIX
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `getc_unlocked' function. */
+#undef HAVE_GETC_UNLOCKED
+
+/* Does <utime.h> define struct utimbuf? */
+#undef HAVE_GOOD_UTIME_H
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define if mbstate_t exists in wchar.h. */
+#undef HAVE_MBSTATE_T
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mkdtemp' function. */
+#undef HAVE_MKDTEMP
+
+/* Define to 1 if you have the `mkstemp' function. */
+#undef HAVE_MKSTEMP
+
+/* Define to 1 if you have the `sbrk' function. */
+#undef HAVE_SBRK
+
+/* Define to 1 if you have the `setlocale' function. */
+#undef HAVE_SETLOCALE
+
+/* Define to 1 if you have the `setmode' function. */
+#undef HAVE_SETMODE
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strcoll' function. */
+#undef HAVE_STRCOLL
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
+
+/* Is the type time_t defined in <time.h>? */
+#undef HAVE_TIME_T_IN_TIME_H
+
+/* Is the type time_t defined in <sys/types.h>? */
+#undef HAVE_TIME_T_IN_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `utimes' function. */
+#undef HAVE_UTIMES
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* Define to 1 if you have the <zlib.h> header file. */
+#undef HAVE_ZLIB_H
+
+/* Define as const if the declaration of iconv() needs const. */
+#undef ICONV_CONST
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* If using the C implementation of alloca, define if you know the
+ direction of stack growth for your system; otherwise it will be
+ automatically deduced at runtime.
+ STACK_DIRECTION > 0 => grows toward higher addresses
+ STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define if you can safely include both <string.h> and <strings.h>. */
+#undef STRING_WITH_STRINGS
+
+/* Configured target name. */
+#undef TARGET
+
+/* Define to 1 if user symbol names have a leading underscore, 0 if not. */
+#undef TARGET_PREPENDS_UNDERSCORE
+
+/* Use b modifier when opening binary files? */
+#undef USE_BINARY_FOPEN
+
+/* Enable extensions on AIX 3, Interix. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris. */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop. */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+ `char[]'. */
+#undef YYTEXT_POINTER
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+ this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
diff --git a/binutils-2.24/binutils/configure b/binutils-2.24/binutils/configure
new file mode 100755
index 00000000..fcf9784b
--- /dev/null
+++ b/binutils-2.24/binutils/configure
@@ -0,0 +1,16653 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.64.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
+# Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1
+
+ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+ PATH=/empty FPATH=/empty; export PATH FPATH
+ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$?; test $as_status -eq 0 && as_status=1
+ if test "$3"; then
+ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ fi
+ $as_echo "$as_me: error: $1" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+PACKAGE_URL=
+
+ac_unique_file="ar.c"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+EMULATION_VECTOR
+EMULATION
+OBJDUMP_PRIVATE_OFILES
+OBJDUMP_DEFS
+BUILD_INSTALL_MISC
+BUILD_MISC
+BUILD_DLLWRAP
+BUILD_WINDMC
+BUILD_WINDRES
+DLLTOOL_DEFS
+BUILD_DLLTOOL
+BUILD_SRCONV
+BUILD_NLMCONV
+NLMCONV_DEFS
+LTLIBICONV
+LIBICONV
+ALLOCA
+DEMANGLER_NAME
+EXEEXT_FOR_BUILD
+CC_FOR_BUILD
+HDEFINES
+GENINSRC_NEVER_FALSE
+GENINSRC_NEVER_TRUE
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+MSGMERGE
+MSGFMT
+MKINSTALLDIRS
+CATOBJEXT
+GENCAT
+INSTOBJEXT
+DATADIRNAME
+CATALOGS
+POSUB
+GMSGFMT
+XGETTEXT
+INCINTL
+LIBINTL_DEP
+LIBINTL
+USE_NLS
+LEXLIB
+LEX_OUTPUT_ROOT
+LEX
+YFLAGS
+YACC
+NO_WERROR
+WARN_CFLAGS
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+RANLIB
+AR
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+SED
+LIBTOOL
+EGREP
+GREP
+CPP
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_dependency_tracking
+enable_plugins
+enable_largefile
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+enable_libtool_lock
+enable_targets
+enable_deterministic_archives
+enable_werror
+enable_build_warnings
+enable_nls
+enable_maintainer_mode
+with_zlib
+enable_rpath
+with_libiconv_prefix
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+YACC
+YFLAGS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information."
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+ --target=TARGET configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-plugins Enable support for plugins (defaults no)
+ --disable-largefile omit support for large files
+ --enable-shared[=PKGS] build shared libraries [default=yes]
+ --enable-static[=PKGS] build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+ --enable-targets alternative target configurations
+ --enable-deterministic-archives
+ ar and ranlib default to -D behavior
+ --enable-werror treat compile warnings as errors
+ --enable-build-warnings enable build-time compiler warnings
+ --disable-nls do not use Native Language Support
+ --enable-maintainer-mode enable make rules and dependencies not useful
+ (and sometimes confusing) to the casual installer
+ --disable-rpath do not hardcode runtime library paths
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-zlib include zlib support (auto/yes/no) default=auto
+ --with-gnu-ld assume the C compiler uses GNU ld default=no
+ --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
+ --without-libiconv-prefix don't search for libiconv in includedir and libdir
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ YACC The `Yet Another C Compiler' implementation to use. Defaults to
+ the first program found out of: `bison -y', `byacc', `yacc'.
+ YFLAGS The list of arguments that will be passed by default to $YACC.
+ This script will default YFLAGS to the empty string to avoid a
+ default value of `-d' given by some make applications.
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+configure
+generated by GNU Autoconf 2.64
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ return $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ return $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ return $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ return $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR
+# ------------------------------------
+# Tests whether SYMBOL is declared, setting cache variable VAR accordingly.
+ac_fn_c_check_decl ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ as_decl_name=`echo $2|sed 's/ *(.*//'`
+ as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+ (void) $as_decl_use;
+#else
+ (void) $as_decl_name;
+#endif
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_decl
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.64. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ for ac_t in install-sh install.sh shtool; do
+ if test -f "$ac_dir/$ac_t"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/$ac_t -c"
+ break 2
+ fi
+ done
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if test "${ac_cv_target+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$target_alias" = x; then
+ ac_cv_target=$ac_cv_host
+else
+ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+ as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ rm -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+if test -z "$ac_file"; then :
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ as_fn_set_status 77
+as_fn_error "C compiler cannot create executables
+See \`config.log' for more details." "$LINENO" 5; }; }
+fi
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
+$as_echo_n "checking for library containing strerror... " >&6; }
+if test "${ac_cv_search_strerror+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char strerror ();
+int
+main ()
+{
+return strerror ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' cposix; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_strerror=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if test "${ac_cv_search_strerror+set}" = set; then :
+ break
+fi
+done
+if test "${ac_cv_search_strerror+set}" = set; then :
+
+else
+ ac_cv_search_strerror=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
+$as_echo "$ac_cv_search_strerror" >&6; }
+ac_res=$ac_cv_search_strerror
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+BFD_VERSION=`${srcdir}/../bfd/configure --version | sed -n -e '1s,.* ,,p'`
+am__api_version='1.11'
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name. Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+ *[\\\"\#\$\&\'\`$am_lf]*)
+ as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*)
+ as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+ if test "$*" = "X"; then
+ # -L didn't work.
+ set X `ls -t "$srcdir/configure" conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$*" != "X $srcdir/configure conftest.file" \
+ && test "$*" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ as_fn_error "ls -t appears to fail. Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ as_fn_error "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+ program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+ *)
+ MISSING="\${SHELL} $am_aux_dir/missing" ;;
+ esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+ case $am_aux_dir in
+ *\ * | *\ *)
+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+ *)
+ install_sh="\${SHELL} $am_aux_dir/install-sh"
+ esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
+
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+ [\\/$]* | ?:[\\/]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+ @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+ *@@@%%%=?*=@@@%%%*)
+ eval ac_cv_prog_make_${ac_make}_set=yes;;
+ *)
+ eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ SET_MAKE=
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ am__isrc=' -I$(srcdir)'
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE=binutils
+ VERSION=${BFD_VERSION}
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+depcc="$CC" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CC_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvisualcpp | msvcmsys)
+ # This compiler won't grok `-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CC_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+ am__fastdepCC_TRUE=
+ am__fastdepCC_FALSE='#'
+else
+ am__fastdepCC_TRUE='#'
+ am__fastdepCC_FALSE=
+fi
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "no acceptable C compiler found in \$PATH
+See \`config.log' for more details." "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ rm -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+eval as_val=\$$as_ac_Header
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+ ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = x""yes; then :
+ MINIX=yes
+else
+ MINIX=
+fi
+
+
+ if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+# define __EXTENSIONS__ 1
+ $ac_includes_default
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_safe_to_define___extensions__=yes
+else
+ ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+ test $ac_cv_safe_to_define___extensions__ = yes &&
+ $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+ $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+ $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+ $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+ $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+
+
+
+
+
+# The tests for host and target for $enable_largefile require
+# canonical names.
+
+
+
+# As the $enable_largefile decision depends on --enable-plugins we must set it
+# even in directories otherwise not depending on the $plugins option.
+
+
+# Check whether --enable-plugins was given.
+if test "${enable_plugins+set}" = set; then :
+ enableval=$enable_plugins; case "${enableval}" in
+ yes | "") plugins=yes ;;
+ no) plugins=no ;;
+ *) plugins=yes ;;
+ esac
+else
+ plugins=no
+fi
+
+
+
+case "${host}" in
+ sparc-*-solaris*|i[3-7]86-*-solaris*)
+ # On native 32bit sparc and ia32 solaris, large-file and procfs support
+ # are mutually exclusive; and without procfs support, the bfd/ elf module
+ # cannot provide certain routines such as elfcore_write_prpsinfo
+ # or elfcore_write_prstatus. So unless the user explicitly requested
+ # large-file support through the --enable-largefile switch, disable
+ # large-file support in favor of procfs support.
+ test "${target}" = "${host}" -a "x$plugins" = xno \
+ && : ${enable_largefile="no"}
+ ;;
+esac
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+ enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if test "${ac_cv_sys_largefile_CC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ if ac_fn_c_try_compile "$LINENO"; then :
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_file_offset_bits=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test "${ac_cv_sys_large_files+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
+ break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+ no | unknown) ;;
+ *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+ fi
+fi
+
+
+case `pwd` in
+ *\ * | *\ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.2.7a'
+macro_revision='1.3134'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`print -r -- -n 2>/dev/null`" = X-n && \
+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+ ECHO='printf %s\n'
+else
+ # Use this function as a fallback that always works.
+ func_fallback_echo ()
+ {
+ eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+ }
+ ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+ $ECHO ""
+}
+
+case "$ECHO" in
+ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if test "${ac_cv_path_SED+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if test "${ac_cv_path_FGREP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in fgrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_FGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_FGREP"; then
+ as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_FGREP=$FGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if test "${lt_cv_path_NM+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_nm_to_check="${ac_tool_prefix}nm"
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ lt_nm_to_check="$lt_nm_to_check nm"
+ fi
+ for lt_tmp_nm in $lt_nm_to_check; do
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/$lt_tmp_nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+ NM="$lt_cv_path_NM"
+else
+ # Didn't find any BSD compatible name lister, look for dumpbin.
+ if test -n "$DUMPBIN"; then :
+ # Let the user override the test.
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in dumpbin "link -dump"
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DUMPBIN+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DUMPBIN"; then
+ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DUMPBIN" && break
+ done
+fi
+if test -z "$DUMPBIN"; then
+ ac_ct_DUMPBIN=$DUMPBIN
+ for ac_prog in dumpbin "link -dump"
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DUMPBIN"; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_DUMPBIN" && break
+done
+
+ if test "x$ac_ct_DUMPBIN" = x; then
+ DUMPBIN=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DUMPBIN=$ac_ct_DUMPBIN
+ fi
+fi
+
+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+ *COFF*)
+ DUMPBIN="$DUMPBIN -symbols"
+ ;;
+ *)
+ DUMPBIN=:
+ ;;
+ esac
+ fi
+
+ if test "$DUMPBIN" != ":"; then
+ NM="$DUMPBIN"
+ fi
+fi
+test -z "$NM" && NM=nm
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if test "${lt_cv_nm_interface+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_nm_interface="BSD nm"
+ echo "int some_variable = 0;" > conftest.$ac_ext
+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+ (eval "$ac_compile" 2>conftest.err)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+ cat conftest.err >&5
+ (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+ cat conftest.out >&5
+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+ lt_cv_nm_interface="MS dumpbin"
+ fi
+ rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw* | cegcc*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ mint*)
+ # On MiNT this can take a long time and run out of memory.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+
+ interix*)
+ # We know the value 262144 and hardcode it with a safety zone (like BSD)
+ lt_cv_sys_max_cmd_len=196608
+ ;;
+
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ sco3.2v5*)
+ lt_cv_sys_max_cmd_len=102400
+ ;;
+ sysv5* | sco5v6* | sysv4.2uw2*)
+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+ if test -n "$kargmax"; then
+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'`
+ else
+ lt_cv_sys_max_cmd_len=32768
+ fi
+ ;;
+ *)
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ # Make teststring a little bigger before we do anything with it.
+ # a 1K string should be a reasonable start.
+ for i in 1 2 3 4 5 6 7 8 ; do
+ teststring=$teststring$teststring
+ done
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+ = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ # Only check the string length outside the loop.
+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on
+ # massive amounts of additional arguments before passing them to the
+ # linker. It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+ = c,a/b,, \
+ && eval 'test $(( 1 + 1 )) -eq 2 \
+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+ && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+ >/dev/null 2>&1 \
+ && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ lt_unset=unset
+else
+ lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ lt_SP2NL='tr \040 \012'
+ lt_NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ lt_SP2NL='tr \100 \n'
+ lt_NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if test "${lt_cv_ld_reload_flag+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OBJDUMP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OBJDUMP="objdump"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+else
+ OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if test "${lt_cv_deplibs_check_method+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
+ ;;
+
+cegcc*)
+ # use the weaker test based on 'objdump'. See mingw*.
+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | dragonfly*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+haiku*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+interix[3-9]*)
+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+*nto* | *qnx*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.3*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ pc)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+tpf*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_AR="ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+ ;;
+ *)
+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+case $host_os in
+ darwin*)
+ lock_old_archive_extraction=yes ;;
+ *)
+ lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32* | cegcc*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris*)
+ symcode='[BDRT]'
+ ;;
+sco3.2v5*)
+ symcode='[DT]'
+ ;;
+sysv4.2uw2*)
+ symcode='[DT]'
+ ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+ symcode='[ABDT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+ # Fake it for dumpbin and say T for any non-static function
+ # and D for any global variable.
+ # Also find C++ and __fastcall symbols from MSVC++,
+ # which start with @ or ?.
+ lt_cv_sys_global_symbol_pipe="$AWK '"\
+" {last_section=section; section=\$ 3};"\
+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+" \$ 0!~/External *\|/{next};"\
+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+" {if(hide[section]) next};"\
+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+" s[1]~/^[@?]/{print s[1], s[1]; next};"\
+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+" ' prfx=^$ac_symprfx"
+ else
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+ fi
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+ (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+ cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ void *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+ { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+ cat <<\_LT_EOF >> conftest.$ac_ext
+ {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -rf conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+ enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
+ x86_64-*linux*)
+ case `/usr/bin/file conftest.o` in
+ *x86-64*)
+ LD="${LD-ld} -m elf32_x86_64"
+ ;;
+ *)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ esac
+ ;;
+ powerpc64le-*linux*)
+ LD="${LD-ld} -m elf32lppclinux"
+ ;;
+ powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ powerpcle-*linux*)
+ LD="${LD-ld} -m elf64lppc"
+ ;;
+ powerpc-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*|s390*-*tpf*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if test "${lt_cv_cc_needs_belf+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_cc_needs_belf=yes
+else
+ lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+sparc*-*solaris*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+ case $host_os in
+ rhapsody* | darwin*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_DSYMUTIL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DSYMUTIL"; then
+ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+ ac_ct_DSYMUTIL=$DSYMUTIL
+ # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_DSYMUTIL"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_DSYMUTIL" = x; then
+ DSYMUTIL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ DSYMUTIL=$ac_ct_DSYMUTIL
+ fi
+else
+ DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_NMEDIT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NMEDIT"; then
+ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+ ac_ct_NMEDIT=$NMEDIT
+ # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NMEDIT"; then
+ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_NMEDIT="nmedit"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_NMEDIT" = x; then
+ NMEDIT=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NMEDIT=$ac_ct_NMEDIT
+ fi
+else
+ NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_LIPO+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LIPO"; then
+ ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+ ac_ct_LIPO=$LIPO
+ # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_LIPO"; then
+ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_LIPO="lipo"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_LIPO" = x; then
+ LIPO=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ LIPO=$ac_ct_LIPO
+ fi
+else
+ LIPO="$ac_cv_prog_LIPO"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL"; then
+ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+ ac_ct_OTOOL=$OTOOL
+ # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL"; then
+ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OTOOL="otool"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL" = x; then
+ OTOOL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL=$ac_ct_OTOOL
+ fi
+else
+ OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_OTOOL64+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OTOOL64"; then
+ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+ ac_ct_OTOOL64=$OTOOL64
+ # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OTOOL64"; then
+ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_OTOOL64="otool64"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_OTOOL64" = x; then
+ OTOOL64=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OTOOL64=$ac_ct_OTOOL64
+ fi
+else
+ OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if test "${lt_cv_apple_cc_single_mod+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ rm -rf libconftest.dylib*
+ echo "int foo(void){return 1;}" > conftest.c
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+ _lt_result=$?
+ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+ lt_cv_apple_cc_single_mod=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -rf libconftest.dylib*
+ rm -f conftest.*
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if test "${lt_cv_ld_exported_symbols_list+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ lt_cv_ld_exported_symbols_list=yes
+else
+ lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if test "${lt_cv_ld_force_load+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_ld_force_load=no
+ cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+ echo "$AR cru libconftest.a conftest.o" >&5
+ $AR cru libconftest.a conftest.o 2>&5
+ cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+ _lt_result=$?
+ if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+ lt_cv_ld_force_load=yes
+ else
+ cat conftest.err >&5
+ fi
+ rm -f conftest.err libconftest.a conftest conftest.c
+ rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*) # darwin 5.x on
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[012]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+ _lt_dsymutil='~$DSYMUTIL $lib || :'
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+
+for ac_header in dlfcn.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Set options
+
+
+
+ enable_dlopen=no
+
+
+ enable_win32_dll=no
+
+
+ # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+ enableval=$enable_shared; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+ # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+ enableval=$enable_static; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+ withval=$with_pic; pic_mode="$withval"
+else
+ pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+ # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+ enableval=$enable_fast_install; p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if test "${lt_cv_objdir+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+# Use C for the default configuration in the libtool script
+
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ case $cc_basename in
+ nvcc*)
+ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+ *)
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+ esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+
+
+
+
+
+ lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ m68k)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ esac
+ ;;
+
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ haiku*)
+ # PIC is the default for Haiku.
+ # The "-static" flag exists, but is broken.
+ lt_prog_compiler_static=
+ ;;
+
+ hpux*)
+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag
+ # sets the default TLS model and affects inlining.
+ case $host_cpu in
+ hppa*64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ interix[3-9]*)
+ # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+ # Instead, we relocate shared libraries at runtime.
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+
+ case $cc_basename in
+ nvcc*) # Cuda Compiler Driver 2.2
+ lt_prog_compiler_wl='-Xlinker '
+ lt_prog_compiler_pic='-Xcompiler -fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ # old Intel for x86_64 which still supported -KPIC.
+ ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # icc used to be incompatible with GCC.
+ # ICC 10 doesn't accept -KPIC any more.
+ icc* | ifort*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ # Lahey Fortran 8.1.
+ lf95*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='--shared'
+ lt_prog_compiler_static='--static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-qpic'
+ lt_prog_compiler_static='-qstaticlink'
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ F* | *Sun*Fortran*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl=''
+ ;;
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *nto* | *qnx*)
+ # QNX uses GNU C++, but need to define -shared option too, otherwise
+ # it will coredump.
+ lt_prog_compiler_pic='-fPIC -shared'
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ rdos*)
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+$as_echo "$lt_prog_compiler_pic" >&6; }
+
+
+
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if test "${lt_cv_prog_compiler_pic_works+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_pic_works=yes
+ fi
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test "${lt_cv_prog_compiler_static_works+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ else
+ lt_cv_prog_compiler_static_works=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $RM -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $RM conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+ $RM out/* && rmdir out
+ cd ..
+ $RM -r conftest
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+ hard_links=yes
+ $RM conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+ runpath_var=
+ allow_undefined_flag=
+ always_export_symbols=no
+ archive_cmds=
+ archive_expsym_cmds=
+ compiler_needs_object=no
+ enable_shared_with_static_runtimes=no
+ export_dynamic_flag_spec=
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ hardcode_automatic=no
+ hardcode_direct=no
+ hardcode_direct_absolute=no
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ inherit_rpath=no
+ link_all_deplibs=unknown
+ module_cmds=
+ module_expsym_cmds=
+ old_archive_from_new_cmds=
+ old_archive_from_expsyms_cmds=
+ thread_safe_flag_spec=
+ whole_archive_flag_spec=
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+ extract_expsyms_cmds=
+
+ case $host_os in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+
+ # On some targets, GNU ld is compatible enough with the native linker
+ # that we're better off using the native interface for both.
+ lt_use_gnu_ld_interface=no
+ if test "$with_gnu_ld" = yes; then
+ case $host_os in
+ aix*)
+ # The AIX port of GNU ld has always aspired to compatibility
+ # with the native linker. However, as the warning in the GNU ld
+ # block says, versions before 2.19.5* couldn't really create working
+ # shared libraries, regardless of the interface used.
+ case `$LD -v 2>&1` in
+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+ *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ ;;
+ *)
+ lt_use_gnu_ld_interface=yes
+ ;;
+ esac
+ fi
+
+ if test "$lt_use_gnu_ld_interface" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>&1` in
+ *GNU\ gold*) supports_anon_versioning=yes ;;
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ export_dynamic_flag_spec='${wl}--export-all-symbols'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ haiku*)
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ link_all_deplibs=yes
+ ;;
+
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+ # Instead, shared libraries are loaded at an image base (0x10000000 by
+ # default) and relocated if they conflict, which is a slow very memory
+ # consuming and fragmenting process. To avoid this, we pick a random,
+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+ # time. Moving up from 0x10000000 also allows more sbrk(2) space.
+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+ ;;
+
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ tmp_diet=no
+ if test "$host_os" = linux-dietlibc; then
+ case $cc_basename in
+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn)
+ esac
+ fi
+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+ && test "$tmp_diet" = no
+ then
+ tmp_addflag=
+ tmp_sharedflag='-shared'
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95* | pgfortran*)
+ # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ lf95*) # Lahey Fortran 8.1
+ whole_archive_flag_spec=
+ tmp_sharedflag='--shared' ;;
+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+ tmp_sharedflag='-qmkshrobj'
+ tmp_addflag= ;;
+ nvcc*) # Cuda Compiler Driver 2.2
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ ;;
+ esac
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+ compiler_needs_object=yes
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ esac
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+
+ case $cc_basename in
+ xlf* | bgf* | bgxlf* | mpixlf*)
+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+ if test "x$supports_anon_versioning" = xyes; then
+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ echo "local: *; };" >> $output_objdir/$libname.ver~
+ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+ fi
+ ;;
+ esac
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+ ;;
+ *)
+ # For security reasons, it is highly recommended that you always
+ # use absolute paths for naming shared libraries, and exclude the
+ # DT_RUNPATH tag from executables and libraries. But doing so
+ # requires that you compile everything twice, which is a pain.
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ # Also, AIX nm treats weak defined symbols like other global
+ # defined symbols, whereas GNU nm marks them as "W".
+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ file_list_spec='${wl}-f,'
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" &&
+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ export_dynamic_flag_spec='${wl}-bexpall'
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an
+ # empty executable.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
+ if test "$with_gnu_ld" = yes; then
+ # We only use this code for GNU lds that support --whole-archive.
+ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ else
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ fi
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ case $host_cpu in
+ powerpc)
+ # see comment about AmigaOS4 .so support
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds=''
+ ;;
+ m68k)
+ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_from_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ darwin* | rhapsody*)
+
+
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ if test "$lt_cv_ld_force_load" = "yes"; then
+ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+ else
+ whole_archive_flag_spec=''
+ fi
+ link_all_deplibs=yes
+ allow_undefined_flag="$_lt_dar_allow_undefined"
+ case $cc_basename in
+ ifort*) _lt_dar_can_shared=yes ;;
+ *) _lt_dar_can_shared=$GCC ;;
+ esac
+ if test "$_lt_dar_can_shared" = "yes"; then
+ output_verbose_link_cmd=func_echo_all
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+ else
+ ld_shlibs=no
+ fi
+
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2.*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | dragonfly*)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+
+ # Older versions of the 11.00 compiler do not understand -b yet
+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if test "${lt_cv_prog_compiler__b+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_prog_compiler__b=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -b"
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler__b=yes
+ fi
+ else
+ lt_cv_prog_compiler__b=yes
+ fi
+ fi
+ $RM -r conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=yes
+ hardcode_direct_absolute=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ # Try to use the -exported_symbol ld option, if it does not
+ # work, assume that -exports_file does not work either and
+ # implicitly export all symbols.
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int foo(void) {}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ inherit_rpath=yes
+ link_all_deplibs=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ *nto* | *qnx*)
+ ;;
+
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ hardcode_direct_absolute=yes
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ archive_cmds_need_lc='no'
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z defs'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ else
+ case `$CC -V 2>&1` in
+ *"Compilers 5.0"*)
+ wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+ ;;
+ *)
+ wlarc='${wl}'
+ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+ ;;
+ esac
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag='${wl}-z,text'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6*)
+ # Note: We can NOT use -z defs as we might desire, because we do not
+ # link with -lc, and that would cause any symbols used from libc to
+ # always be unresolved, which means just about no library would
+ # ever link correctly. If we're not using GNU ld we use -z text
+ # though, which does catch some bad symbols but isn't as heavy-handed
+ # as -z defs.
+ no_undefined_flag='${wl}-z,text'
+ allow_undefined_flag='${wl}-z,nodefs'
+ archive_cmds_need_lc=no
+ hardcode_shlibpath_var=no
+ hardcode_libdir_flag_spec='${wl}-R,$libdir'
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+
+ if test x$host_vendor = xsni; then
+ case $host in
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ ;;
+ esac
+ fi
+ fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if test "${lt_cv_archive_cmds_need_lc+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ $RM conftest*
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ pic_flag=$lt_prog_compiler_pic
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ then
+ lt_cv_archive_cmds_need_lc=no
+ else
+ lt_cv_archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ case $host_os in
+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+ *) lt_sed_strip_eq="s,=/,/,g" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+ case $lt_search_path_spec in
+ *\;*)
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+ ;;
+ *)
+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+ ;;
+ esac
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[lt_foo]++; }
+ if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+ # AWK program above erroneously prepends '/' to C:/dos/paths
+ # for these hosts.
+ case $host_os in
+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+ $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+ esac
+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix[4-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ case $host_cpu in
+ powerpc)
+ # Since July 2007 AmigaOS4 officially supports .so libraries.
+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ ;;
+ m68k)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+ esac
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname~
+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+ fi'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $RM \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+ ;;
+ mingw* | cegcc*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[23].*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2.*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ *) # from 4.6 on, and DragonFly
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+haiku*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ dynamic_linker="$host_os runtime_loader"
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+ postinstall_cmds='chmod 555 $lib'
+ # or fails outright, so override atomically:
+ install_override_mode=555
+ ;;
+
+interix[3-9]*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+
+ # Some binutils ld are patched to set DT_RUNPATH
+ if test "${lt_cv_shlibpath_overrides_runpath+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ lt_cv_shlibpath_overrides_runpath=no
+ save_LDFLAGS=$LDFLAGS
+ save_libdir=$libdir
+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+ lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$save_LDFLAGS
+ libdir=$save_libdir
+
+fi
+
+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+*nto* | *qnx*)
+ version_type=qnx
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='ldqnx.so'
+ ;;
+
+openbsd*)
+ version_type=sunos
+ sys_lib_dlsearch_path_spec="/usr/lib"
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+rdos*)
+ dynamic_linker=no
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ version_type=freebsd-elf
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ if test "$with_gnu_ld" = yes; then
+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ case $host_os in
+ sco3.2v5*)
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+ ;;
+ esac
+ fi
+ sys_lib_dlsearch_path_spec='/usr/lib'
+ ;;
+
+tpf*)
+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux.
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+ test -n "$runpath_var" ||
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existent directories.
+ if test "$hardcode_direct" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+ test "$inherit_rpath" = yes; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+
+
+
+
+
+ if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32* | cegcc*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = x""yes; then :
+ lt_cv_dlopen="shl_load"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_shl_load=yes
+else
+ ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = x""yes; then :
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = x""yes; then :
+ lt_cv_dlopen="dlopen"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = x""yes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_svld_dlopen=yes
+else
+ ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = x""yes; then :
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_dld_dld_link=yes
+else
+ ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = x""yes; then :
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line 11221 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+void fnord () __attribute__((visibility("default")));
+#endif
+
+void fnord () { int i=42; }
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if test "${lt_cv_dlopen_self_static+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<_LT_EOF
+#line 11327 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+ correspondingly for the symbols needed. */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+void fnord () __attribute__((visibility("default")));
+#endif
+
+void fnord () { int i=42; }
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else
+ {
+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ else puts (dlerror ());
+ }
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ return status;
+}
+_LT_EOF
+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ ;;
+ *)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ;;
+ esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+ # Report which library types will actually be built
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+ test "$can_build_shared" = "no" && enable_shared=no
+
+ # On AIX, shared libraries and static libraries use the same namespace, and
+ # are all built from PIC.
+ case $host_os in
+ aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+ aix[4-9]*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+ # Make sure either enable_shared or enable_static is yes.
+ test "$enable_shared" = yes || enable_static=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
+
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+
+# Check whether --enable-targets was given.
+if test "${enable_targets+set}" = set; then :
+ enableval=$enable_targets; case "${enableval}" in
+ yes | "") as_fn_error "enable-targets option must specify target names or 'all'" "$LINENO" 5
+ ;;
+ no) enable_targets= ;;
+ *) enable_targets=$enableval ;;
+esac
+fi
+
+# Check whether --enable-deterministic-archives was given.
+if test "${enable_deterministic_archives+set}" = set; then :
+ enableval=$enable_deterministic_archives;
+if test "${enableval}" = no; then
+ default_ar_deterministic=0
+else
+ default_ar_deterministic=1
+fi
+else
+ default_ar_deterministic=0
+fi
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_AR_DETERMINISTIC $default_ar_deterministic
+_ACEOF
+
+
+
+GCC_WARN_CFLAGS="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+__GNUC__
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "^[0-3]$" >/dev/null 2>&1; then :
+
+else
+ GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wshadow"
+fi
+rm -f conftest*
+
+
+# Check whether --enable-werror was given.
+if test "${enable_werror+set}" = set; then :
+ enableval=$enable_werror; case "${enableval}" in
+ yes | y) ERROR_ON_WARNING="yes" ;;
+ no | n) ERROR_ON_WARNING="no" ;;
+ *) as_fn_error "bad value ${enableval} for --enable-werror" "$LINENO" 5 ;;
+ esac
+fi
+
+
+# Disable -Wformat by default when using gcc on mingw
+case "${host}" in
+ *-*-mingw32*)
+ if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
+ GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wno-format"
+ fi
+ ;;
+ *) ;;
+esac
+
+# Enable -Werror by default when using gcc
+if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
+ ERROR_ON_WARNING=yes
+fi
+
+NO_WERROR=
+if test "${ERROR_ON_WARNING}" = yes ; then
+ GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Werror"
+ NO_WERROR="-Wno-error"
+fi
+
+if test "${GCC}" = yes ; then
+ WARN_CFLAGS="${GCC_WARN_CFLAGS}"
+fi
+
+# Check whether --enable-build-warnings was given.
+if test "${enable_build_warnings+set}" = set; then :
+ enableval=$enable_build_warnings; case "${enableval}" in
+ yes) WARN_CFLAGS="${GCC_WARN_CFLAGS}";;
+ no) if test "${GCC}" = yes ; then
+ WARN_CFLAGS="-w"
+ fi;;
+ ,*) t=`echo "${enableval}" | sed -e "s/,/ /g"`
+ WARN_CFLAGS="${GCC_WARN_CFLAGS} ${t}";;
+ *,) t=`echo "${enableval}" | sed -e "s/,/ /g"`
+ WARN_CFLAGS="${t} ${GCC_WARN_CFLAGS}";;
+ *) WARN_CFLAGS=`echo "${enableval}" | sed -e "s/,/ /g"`;;
+esac
+fi
+
+
+if test x"$silent" != x"yes" && test x"$WARN_CFLAGS" != x""; then
+ echo "Setting warning flags = $WARN_CFLAGS" 6>&1
+fi
+
+
+
+
+
+ac_config_headers="$ac_config_headers config.h:config.in"
+
+
+
+
+if test -z "$target" ; then
+ as_fn_error "Unrecognized target system type; please check config.sub." "$LINENO" 5
+fi
+if test -z "$host" ; then
+ as_fn_error "Unrecognized host system type; please check config.sub." "$LINENO" 5
+fi
+
+for ac_prog in 'bison -y' byacc
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_YACC+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$YACC"; then
+ ac_cv_prog_YACC="$YACC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_YACC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+YACC=$ac_cv_prog_YACC
+if test -n "$YACC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
+$as_echo "$YACC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$YACC" && break
+done
+test -n "$YACC" || YACC="yacc"
+
+for ac_prog in flex lex
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_LEX+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LEX"; then
+ ac_cv_prog_LEX="$LEX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_LEX="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LEX=$ac_cv_prog_LEX
+if test -n "$LEX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5
+$as_echo "$LEX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LEX" && break
+done
+test -n "$LEX" || LEX=":"
+
+if test "x$LEX" != "x:"; then
+ cat >conftest.l <<_ACEOF
+%%
+a { ECHO; }
+b { REJECT; }
+c { yymore (); }
+d { yyless (1); }
+e { yyless (input () != 0); }
+f { unput (yytext[0]); }
+. { BEGIN INITIAL; }
+%%
+#ifdef YYTEXT_POINTER
+extern char *yytext;
+#endif
+int
+main (void)
+{
+ return ! yylex () + ! yywrap ();
+}
+_ACEOF
+{ { ac_try="$LEX conftest.l"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$LEX conftest.l") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5
+$as_echo_n "checking lex output file root... " >&6; }
+if test "${ac_cv_prog_lex_root+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+if test -f lex.yy.c; then
+ ac_cv_prog_lex_root=lex.yy
+elif test -f lexyy.c; then
+ ac_cv_prog_lex_root=lexyy
+else
+ as_fn_error "cannot find output from $LEX; giving up" "$LINENO" 5
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5
+$as_echo "$ac_cv_prog_lex_root" >&6; }
+LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
+
+if test -z "${LEXLIB+set}"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5
+$as_echo_n "checking lex library... " >&6; }
+if test "${ac_cv_lib_lex+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ ac_save_LIBS=$LIBS
+ ac_cv_lib_lex='none needed'
+ for ac_lib in '' -lfl -ll; do
+ LIBS="$ac_lib $ac_save_LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+`cat $LEX_OUTPUT_ROOT.c`
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_lex=$ac_lib
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ test "$ac_cv_lib_lex" != 'none needed' && break
+ done
+ LIBS=$ac_save_LIBS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5
+$as_echo "$ac_cv_lib_lex" >&6; }
+ test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5
+$as_echo_n "checking whether yytext is a pointer... " >&6; }
+if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # POSIX says lex can declare yytext either as a pointer or an array; the
+# default is implementation-dependent. Figure out which it is, since
+# not all implementations provide the %pointer and %array declarations.
+ac_cv_prog_lex_yytext_pointer=no
+ac_save_LIBS=$LIBS
+LIBS="$LEXLIB $ac_save_LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define YYTEXT_POINTER 1
+`cat $LEX_OUTPUT_ROOT.c`
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_prog_lex_yytext_pointer=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_save_LIBS
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5
+$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; }
+if test $ac_cv_prog_lex_yytext_pointer = yes; then
+
+$as_echo "#define YYTEXT_POINTER 1" >>confdefs.h
+
+fi
+rm -f conftest.l $LEX_OUTPUT_ROOT.c
+
+fi
+if test "$LEX" = :; then
+ LEX=${am_missing_run}flex
+fi
+
+ALL_LINGUAS="bg da es fi fr id it ja ro ru rw sk sv tr uk vi zh_CN zh_TW hr"
+# If we haven't got the data from the intl directory,
+# assume NLS is disabled.
+USE_NLS=no
+LIBINTL=
+LIBINTL_DEP=
+INCINTL=
+XGETTEXT=
+GMSGFMT=
+POSUB=
+
+if test -f ../intl/config.intl; then
+ . ../intl/config.intl
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+if test x"$USE_NLS" != xyes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5
+$as_echo_n "checking for catalogs to be installed... " >&6; }
+ # Look for .po and .gmo files in the source directory.
+ CATALOGS=
+ XLINGUAS=
+ for cat in $srcdir/po/*.gmo $srcdir/po/*.po; do
+ # If there aren't any .gmo files the shell will give us the
+ # literal string "../path/to/srcdir/po/*.gmo" which has to be
+ # weeded out.
+ case "$cat" in *\**)
+ continue;;
+ esac
+ # The quadruple backslash is collapsed to a double backslash
+ # by the backticks, then collapsed again by the double quotes,
+ # leaving us with one backslash in the sed expression (right
+ # before the dot that mustn't act as a wildcard).
+ cat=`echo $cat | sed -e "s!$srcdir/po/!!" -e "s!\\\\.po!.gmo!"`
+ lang=`echo $cat | sed -e "s!\\\\.gmo!!"`
+ # The user is allowed to set LINGUAS to a list of languages to
+ # install catalogs for. If it's empty that means "all of them."
+ if test "x$LINGUAS" = x; then
+ CATALOGS="$CATALOGS $cat"
+ XLINGUAS="$XLINGUAS $lang"
+ else
+ case "$LINGUAS" in *$lang*)
+ CATALOGS="$CATALOGS $cat"
+ XLINGUAS="$XLINGUAS $lang"
+ ;;
+ esac
+ fi
+ done
+ LINGUAS="$XLINGUAS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5
+$as_echo "$LINGUAS" >&6; }
+
+
+ DATADIRNAME=share
+
+ INSTOBJEXT=.mo
+
+ GENCAT=gencat
+
+ CATOBJEXT=.gmo
+
+fi
+
+ MKINSTALLDIRS=
+ if test -n "$ac_aux_dir"; then
+ case "$ac_aux_dir" in
+ /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
+ *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
+ esac
+ fi
+ if test -z "$MKINSTALLDIRS"; then
+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+ fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+ # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then :
+ enableval=$enable_nls; USE_NLS=$enableval
+else
+ USE_NLS=yes
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+
+
+
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGFMT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$MSGFMT" in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+ test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
+ ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_GMSGFMT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GMSGFMT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+ ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_XGETTEXT+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$XGETTEXT" in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+ test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+ ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ rm -f messages.po
+
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_MSGMERGE+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$MSGMERGE" in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then
+ ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+ test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
+ ;;
+esac
+fi
+MSGMERGE="$ac_cv_path_MSGMERGE"
+if test "$MSGMERGE" != ":"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "$GMSGFMT" != ":"; then
+ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
+ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ : ;
+ else
+ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5
+$as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; }
+ GMSGFMT=":"
+ fi
+ fi
+
+ if test "$XGETTEXT" != ":"; then
+ if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
+ (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+ : ;
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
+$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
+ XGETTEXT=":"
+ fi
+ rm -f messages.po
+ fi
+
+ ac_config_commands="$ac_config_commands default-1"
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+ # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+ USE_MAINTAINER_MODE=no
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+ if test $USE_MAINTAINER_MODE = yes; then
+ MAINTAINER_MODE_TRUE=
+ MAINTAINER_MODE_FALSE='#'
+else
+ MAINTAINER_MODE_TRUE='#'
+ MAINTAINER_MODE_FALSE=
+fi
+
+ MAINT=$MAINTAINER_MODE_TRUE
+
+
+ if false; then
+ GENINSRC_NEVER_TRUE=
+ GENINSRC_NEVER_FALSE='#'
+else
+ GENINSRC_NEVER_TRUE='#'
+ GENINSRC_NEVER_FALSE=
+fi
+
+
+if test -n "$EXEEXT"; then
+
+$as_echo "#define HAVE_EXECUTABLE_SUFFIX 1" >>confdefs.h
+
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define EXECUTABLE_SUFFIX "${EXEEXT}"
+_ACEOF
+
+
+# host-specific stuff:
+
+HDEFINES=
+
+. ${srcdir}/../bfd/configure.host
+
+
+AR=${AR-ar}
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+
+# Put a plausible default for CC_FOR_BUILD in Makefile.
+if test -z "$CC_FOR_BUILD"; then
+ if test "x$cross_compiling" = "xno"; then
+ CC_FOR_BUILD='$(CC)'
+ else
+ CC_FOR_BUILD=gcc
+ fi
+fi
+
+# Also set EXEEXT_FOR_BUILD.
+if test "x$cross_compiling" = "xno"; then
+ EXEEXT_FOR_BUILD='$(EXEEXT)'
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for build system executable suffix" >&5
+$as_echo_n "checking for build system executable suffix... " >&6; }
+if test "${bfd_cv_build_exeext+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ rm -f conftest*
+ echo 'int main () { return 0; }' > conftest.c
+ bfd_cv_build_exeext=
+ ${CC_FOR_BUILD} -o conftest conftest.c 1>&5 2>&5
+ for file in conftest.*; do
+ case $file in
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
+ *) bfd_cv_build_exeext=`echo $file | sed -e s/conftest//` ;;
+ esac
+ done
+ rm -f conftest*
+ test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_build_exeext" >&5
+$as_echo "$bfd_cv_build_exeext" >&6; }
+ EXEEXT_FOR_BUILD=""
+ test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext}
+fi
+
+
+DEMANGLER_NAME=c++filt
+case "${host}" in
+ *-*-go32* | *-*-msdos*)
+ DEMANGLER_NAME=cxxfilt
+esac
+
+
+for ac_header in string.h strings.h stdlib.h unistd.h fcntl.h sys/file.h limits.h locale.h sys/param.h wchar.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+eval as_val=\$$as_ac_Header
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
+$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
+if test "${ac_cv_header_sys_wait_h+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <sys/wait.h>
+#ifndef WEXITSTATUS
+# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
+#endif
+#ifndef WIFEXITED
+# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
+#endif
+
+int
+main ()
+{
+ int s;
+ wait (&s);
+ s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_sys_wait_h=yes
+else
+ ac_cv_header_sys_wait_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5
+$as_echo "$ac_cv_header_sys_wait_h" >&6; }
+if test $ac_cv_header_sys_wait_h = yes; then
+
+$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether string.h and strings.h may both be included" >&5
+$as_echo_n "checking whether string.h and strings.h may both be included... " >&6; }
+if test "${gcc_cv_header_string+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+#include <strings.h>
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gcc_cv_header_string=yes
+else
+ gcc_cv_header_string=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_header_string" >&5
+$as_echo "$gcc_cv_header_string" >&6; }
+if test $gcc_cv_header_string = yes; then
+
+$as_echo "#define STRING_WITH_STRINGS 1" >>confdefs.h
+
+fi
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments. Useless!
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if test "${ac_cv_working_alloca_h+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+ if (p) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_working_alloca_h=yes
+else
+ ac_cv_working_alloca_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if test "${ac_cv_func_alloca_works+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+# include <malloc.h>
+# define alloca _alloca
+# else
+# ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+# endif
+# endif
+# endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+ if (p) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_func_alloca_works=yes
+else
+ ac_cv_func_alloca_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+
+else
+ # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble. Some versions do not even contain alloca or
+# contain a buggy version. If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+$as_echo "#define C_ALLOCA 1" >>confdefs.h
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if test "${ac_cv_os_cray+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "webecray" >/dev/null 2>&1; then :
+ ac_cv_os_cray=yes
+else
+ ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+ if test "x$as_val" = x""yes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+ break
+fi
+
+ done
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if test "${ac_cv_c_stack_direction+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ ac_cv_c_stack_direction=0
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+find_stack_direction ()
+{
+ static char *addr = 0;
+ auto char dummy;
+ if (addr == 0)
+ {
+ addr = &dummy;
+ return find_stack_direction ();
+ }
+ else
+ return (&dummy > addr) ? 1 : -1;
+}
+
+int
+main ()
+{
+ return find_stack_direction () < 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ ac_cv_c_stack_direction=1
+else
+ ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+for ac_func in sbrk utimes setmode getc_unlocked strcoll setlocale
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp"
+if test "x$ac_cv_func_mkstemp" = x""yes; then :
+
+$as_echo "#define HAVE_MKSTEMP 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "mkdtemp" "ac_cv_func_mkdtemp"
+if test "x$ac_cv_func_mkdtemp" = x""yes; then :
+
+$as_echo "#define HAVE_MKDTEMP 1" >>confdefs.h
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mbstate_t" >&5
+$as_echo_n "checking for mbstate_t... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <wchar.h>
+int
+main ()
+{
+mbstate_t teststate;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ have_mbstate_t=yes
+else
+ have_mbstate_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_mbstate_t" >&5
+$as_echo "$have_mbstate_t" >&6; }
+ if test x"$have_mbstate_t" = xyes; then
+
+$as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h
+
+ fi
+
+# Some systems have frexp only in -lm, not in -lc.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing frexp" >&5
+$as_echo_n "checking for library containing frexp... " >&6; }
+if test "${ac_cv_search_frexp+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char frexp ();
+int
+main ()
+{
+return frexp ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' m; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_frexp=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if test "${ac_cv_search_frexp+set}" = set; then :
+ break
+fi
+done
+if test "${ac_cv_search_frexp+set}" = set; then :
+
+else
+ ac_cv_search_frexp=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_frexp" >&5
+$as_echo "$ac_cv_search_frexp" >&6; }
+ac_res=$ac_cv_search_frexp
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
+$as_echo_n "checking for LC_MESSAGES... " >&6; }
+if test "${am_cv_val_LC_MESSAGES+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <locale.h>
+int
+main ()
+{
+return LC_MESSAGES
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ am_cv_val_LC_MESSAGES=yes
+else
+ am_cv_val_LC_MESSAGES=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5
+$as_echo "$am_cv_val_LC_MESSAGES" >&6; }
+ if test $am_cv_val_LC_MESSAGES = yes; then
+
+$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
+
+ fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for time_t in time.h" >&5
+$as_echo_n "checking for time_t in time.h... " >&6; }
+if test "${bu_cv_decl_time_t_time_h+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <time.h>
+int
+main ()
+{
+time_t i;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ bu_cv_decl_time_t_time_h=yes
+else
+ bu_cv_decl_time_t_time_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bu_cv_decl_time_t_time_h" >&5
+$as_echo "$bu_cv_decl_time_t_time_h" >&6; }
+if test $bu_cv_decl_time_t_time_h = yes; then
+
+$as_echo "#define HAVE_TIME_T_IN_TIME_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for time_t in sys/types.h" >&5
+$as_echo_n "checking for time_t in sys/types.h... " >&6; }
+if test "${bu_cv_decl_time_t_types_h+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+int
+main ()
+{
+time_t i;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ bu_cv_decl_time_t_types_h=yes
+else
+ bu_cv_decl_time_t_types_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bu_cv_decl_time_t_types_h" >&5
+$as_echo "$bu_cv_decl_time_t_types_h" >&6; }
+if test $bu_cv_decl_time_t_types_h = yes; then
+
+$as_echo "#define HAVE_TIME_T_IN_TYPES_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a known getopt prototype in unistd.h" >&5
+$as_echo_n "checking for a known getopt prototype in unistd.h... " >&6; }
+if test "${bu_cv_decl_getopt_unistd_h+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <unistd.h>
+int
+main ()
+{
+extern int getopt (int, char *const*, const char *);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ bu_cv_decl_getopt_unistd_h=yes
+else
+ bu_cv_decl_getopt_unistd_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bu_cv_decl_getopt_unistd_h" >&5
+$as_echo "$bu_cv_decl_getopt_unistd_h" >&6; }
+if test $bu_cv_decl_getopt_unistd_h = yes; then
+
+$as_echo "#define HAVE_DECL_GETOPT 1" >>confdefs.h
+
+fi
+
+# Under Next 3.2 <utime.h> apparently does not define struct utimbuf
+# by default.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for utime.h" >&5
+$as_echo_n "checking for utime.h... " >&6; }
+if test "${bu_cv_header_utime_h+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+#include <utime.h>
+int
+main ()
+{
+struct utimbuf s;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ bu_cv_header_utime_h=yes
+else
+ bu_cv_header_utime_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bu_cv_header_utime_h" >&5
+$as_echo "$bu_cv_header_utime_h" >&6; }
+if test $bu_cv_header_utime_h = yes; then
+
+$as_echo "#define HAVE_GOOD_UTIME_H 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_decl "$LINENO" "environ" "ac_cv_have_decl_environ" "$ac_includes_default"
+if test "x$ac_cv_have_decl_environ" = x""yes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ENVIRON $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "fprintf" "ac_cv_have_decl_fprintf" "$ac_includes_default"
+if test "x$ac_cv_have_decl_fprintf" = x""yes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FPRINTF $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getc_unlocked" = x""yes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "getenv" "ac_cv_have_decl_getenv" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getenv" = x""yes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETENV $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "sbrk" "ac_cv_have_decl_sbrk" "$ac_includes_default"
+if test "x$ac_cv_have_decl_sbrk" = x""yes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SBRK $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "snprintf" "ac_cv_have_decl_snprintf" "$ac_includes_default"
+if test "x$ac_cv_have_decl_snprintf" = x""yes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SNPRINTF $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "stpcpy" "ac_cv_have_decl_stpcpy" "$ac_includes_default"
+if test "x$ac_cv_have_decl_stpcpy" = x""yes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STPCPY $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "strnlen" "ac_cv_have_decl_strnlen" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strnlen" = x""yes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNLEN $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "strstr" "ac_cv_have_decl_strstr" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strstr" = x""yes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRSTR $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "vsnprintf" "ac_cv_have_decl_vsnprintf" "$ac_includes_default"
+if test "x$ac_cv_have_decl_vsnprintf" = x""yes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VSNPRINTF $ac_have_decl
+_ACEOF
+
+
+# Link in zlib if we can. This allows us to read compressed debug
+# sections. This is used only by readelf.c (objdump uses bfd for
+# reading compressed sections).
+
+ # See if the user specified whether he wants zlib support or not.
+
+# Check whether --with-zlib was given.
+if test "${with_zlib+set}" = set; then :
+ withval=$with_zlib;
+else
+ with_zlib=auto
+fi
+
+
+ if test "$with_zlib" != "no"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing zlibVersion" >&5
+$as_echo_n "checking for library containing zlibVersion... " >&6; }
+if test "${ac_cv_search_zlibVersion+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char zlibVersion ();
+int
+main ()
+{
+return zlibVersion ();
+ ;
+ return 0;
+}
+_ACEOF
+for ac_lib in '' z; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_zlibVersion=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext
+ if test "${ac_cv_search_zlibVersion+set}" = set; then :
+ break
+fi
+done
+if test "${ac_cv_search_zlibVersion+set}" = set; then :
+
+else
+ ac_cv_search_zlibVersion=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_zlibVersion" >&5
+$as_echo "$ac_cv_search_zlibVersion" >&6; }
+ac_res=$ac_cv_search_zlibVersion
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+ for ac_header in zlib.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_zlib_h" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_ZLIB_H 1
+_ACEOF
+
+fi
+
+done
+
+fi
+
+ if test "$with_zlib" = "yes" -a "$ac_cv_header_zlib_h" != "yes"; then
+ as_fn_error "zlib (libz) library was explicitly requested but not found" "$LINENO" 5
+ fi
+ fi
+
+
+
+case "${host}" in
+*-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*)
+
+$as_echo "#define USE_BINARY_FOPEN 1" >>confdefs.h
+ ;;
+esac
+
+# target-specific stuff:
+
+# Canonicalize the secondary target names.
+if test -n "$enable_targets"; then
+ for targ in `echo $enable_targets | sed 's/,/ /g'`
+ do
+ result=`$ac_config_sub $targ 2>/dev/null`
+ if test -n "$result"; then
+ canon_targets="$canon_targets $result"
+ else
+ # Allow targets that config.sub doesn't recognize, like "all".
+ canon_targets="$canon_targets $targ"
+ fi
+ done
+fi
+
+ac_fn_c_check_header_mongrel "$LINENO" "iconv.h" "ac_cv_header_iconv_h" "$ac_includes_default"
+if test "x$ac_cv_header_iconv_h" = x""yes; then :
+
+fi
+
+
+
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
+$as_echo_n "checking for ld used by GCC... " >&6; }
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | [A-Za-z]:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the path of ld
+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if test "${acl_cv_path_LD+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$LD"; then
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+ for ac_dir in $PATH; do
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some GNU ld's only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+ test "$with_gnu_ld" != no && break
+ else
+ test "$with_gnu_ld" != yes && break
+ fi
+ fi
+ done
+ IFS="$ac_save_ifs"
+else
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$acl_cv_path_LD"
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if test "${acl_cv_prog_gnu_ld+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+ acl_cv_prog_gnu_ld=yes
+else
+ acl_cv_prog_gnu_ld=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
+$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
+$as_echo_n "checking for shared library run path origin... " >&6; }
+if test "${acl_cv_rpath+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
+$as_echo "$acl_cv_rpath" >&6; }
+ wl="$acl_cv_wl"
+ libext="$acl_cv_libext"
+ shlibext="$acl_cv_shlibext"
+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ hardcode_direct="$acl_cv_hardcode_direct"
+ hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ # Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then :
+ enableval=$enable_rpath; :
+else
+ enable_rpath=yes
+fi
+
+
+
+
+
+
+
+
+ use_additional=yes
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then :
+ withval=$with_libiconv_prefix;
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/lib"
+ fi
+ fi
+
+fi
+
+ LIBICONV=
+ LTLIBICONV=
+ INCICONV=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='iconv '
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value"
+ else
+ :
+ fi
+ else
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ if test $use_additional = yes; then
+ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+ found_dir="$additional_libdir"
+ found_so="$additional_libdir/lib$name.$shlibext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ else
+ if test -f "$additional_libdir/lib$name.$libext"; then
+ found_dir="$additional_libdir"
+ found_a="$additional_libdir/lib$name.$libext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
+ fi
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
+ found_dir="$dir"
+ found_so="$dir/lib$name.$shlibext"
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ else
+ if test -f "$dir/lib$name.$libext"; then
+ found_dir="$dir"
+ found_a="$dir/lib$name.$libext"
+ if test -f "$dir/lib$name.la"; then
+ found_la="$dir/lib$name.la"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ if test "$hardcode_direct" = yes; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ haveit=
+ for x in $LDFLAGS $LIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
+ fi
+ if test "$hardcode_minus_L" != no; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name"
+ fi
+ fi
+ additional_includedir=
+ case "$found_dir" in
+ */lib | */lib/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INCICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ if test -n "$found_la"; then
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ if test "X$additional_libdir" != "X/usr/lib"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/lib"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIBICONV; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$hardcode_libdir_separator"; then
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+ else
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ for found_dir in $ltrpathdirs; do
+ LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
+ done
+ fi
+
+
+
+
+
+
+
+ am_save_CPPFLAGS="$CPPFLAGS"
+
+ for element in $INCICONV; do
+ haveit=
+ for x in $CPPFLAGS; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+ fi
+ done
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if test "${am_cv_func_iconv+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <iconv.h>
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ am_cv_lib_iconv=yes
+ am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$am_save_LIBS"
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+ if test "$am_cv_func_iconv" = yes; then
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+ else
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+
+
+
+ if test "$am_cv_func_iconv" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
+$as_echo_n "checking for iconv declaration... " >&6; }
+ if test "${am_cv_proto_iconv+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ am_cv_proto_iconv_arg1=""
+else
+ am_cv_proto_iconv_arg1="const"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
+fi
+
+ am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:-
+ }$am_cv_proto_iconv" >&5
+$as_echo "${ac_t:-
+ }$am_cv_proto_iconv" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ICONV_CONST $am_cv_proto_iconv_arg1
+_ACEOF
+
+ fi
+
+
+all_targets=false
+BUILD_NLMCONV=
+NLMCONV_DEFS=
+BUILD_SRCONV=
+BUILD_DLLTOOL=
+DLLTOOL_DEFS=
+DLLTOOL_DEFAULT=
+BUILD_WINDRES=
+BUILD_WINDMC=
+BUILD_DLLWRAP=
+BUILD_MISC=
+BUILD_INSTALL_MISC=
+OBJDUMP_DEFS=
+OBJDUMP_PRIVATE_VECTORS=
+OBJDUMP_PRIVATE_OFILES=
+od_vectors=
+
+for targ in $target $canon_targets
+do
+ if test "x$targ" = "xall"; then
+ all_targets=true
+ BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
+ BUILD_SRCONV='$(SRCONV_PROG)'
+ NLMCONV_DEFS="-DNLMCONV_I386 -DNLMCONV_ALPHA -DNLMCONV_POWERPC -DNLMCONV_SPARC"
+ BUILD_MISC="${BUILD_MISC} "'bin2c$(EXEEXT_FOR_BUILD)'
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_I386"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
+ BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)'
+ od_vectors="$od_vectors objdump_private_desc_xcoff"
+ else
+ case $targ in
+ i[3-7]86*-*-netware*)
+ BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
+ NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_I386"
+ ;;
+ alpha*-*-netware*)
+ BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
+ NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_ALPHA"
+ ;;
+ powerpc*-*-netware*)
+ BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
+ NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_POWERPC"
+ ;;
+ sparc*-*-netware*)
+ BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
+ NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_SPARC"
+ ;;
+ esac
+
+ case $targ in
+ *-*-hms*) BUILD_SRCONV='$(SRCONV_PROG)' ;;
+ esac
+
+ case $targ in
+ arm-epoc-pe*)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_ARM_EPOC"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_EPOC -DDLLTOOL_ARM"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ arm-wince-pe* | arm-*-wince | arm*-*-cegcc* | arm*-*-mingw32ce*)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_ARM_WINCE"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_WINCE -DDLLTOOL_ARM"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ arm-*-pe*)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_ARM"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ x86_64-*-mingw* | x86_64-*-cygwin*)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_MX86_64"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MX86_64"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)'
+ ;;
+ i[3-7]86-*-pe* | i[3-7]86-*-cygwin* | i[3-7]86-*-mingw32** | i[3-7]86-*-netbsdpe*)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_I386"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)'
+ ;;
+ i[3-7]86-*-interix)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_I386"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
+ ;;
+ powerpc*-aix5.[01])
+ ;;
+ powerpc*-aix[5-9].*)
+ OBJDUMP_DEFS="-DAIX_WEAK_SUPPORT"
+ ;;
+ powerpc*-*-pe* | powerpc*-*-cygwin*)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_PPC"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_PPC"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ powerpc*-*-linux* | powerpc*-*-elf* | powerpc*-*-eabi*)
+ case "$BUILD_INSTALL_MISC" in
+ *embedspu*) ;;
+ *) BUILD_INSTALL_MISC="${BUILD_INSTALL_MISC} embedspu"
+ esac
+ ;;
+ sh*-*-pe)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_SH"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_SH"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ spu-*-*)
+ BUILD_MISC="${BUILD_MISC} "'bin2c$(EXEEXT_FOR_BUILD)'
+ ;;
+ mips*-*-pe)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_MIPS"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MIPS"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ mcore-*-pe)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_MCORE"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ mcore-*-elf)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_MCORE_ELF"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE_ELF"
+ ;;
+ mep-*)
+ OBJDUMP_DEFS="-DSKIP_ZEROES=256 -DSKIP_ZEROES_AT_END=0"
+ ;;
+ esac
+
+ # Add objdump private vectors.
+ case $targ in
+ powerpc-*-aix*)
+ od_vectors="$od_vectors objdump_private_desc_xcoff"
+ ;;
+ *-*-darwin*)
+ od_vectors="$od_vectors objdump_private_desc_mach_o"
+ ;;
+ esac
+ fi
+done
+
+# Uniq objdump private vector, build objdump target ofiles.
+od_files=
+f=""
+for i in $od_vectors ; do
+ case " $f " in
+ *" $i "*) ;;
+ *)
+ f="$f $i"
+ OBJDUMP_PRIVATE_VECTORS="$OBJDUMP_PRIVATE_VECTORS &$i,"
+ case $i in
+ objdump_private_desc_xcoff)
+ od_files="$od_files od-xcoff" ;;
+ objdump_private_desc_mach_o)
+ od_files="$od_files od-macho" ;;
+ *) as_fn_error "*** unknown private vector $i" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+done
+
+# Uniq objdump target ofiles
+f=""
+for i in $od_files ; do
+ case " $f " in
+ *" $i "*) ;;
+ *)
+ f="$f $i"
+ OBJDUMP_PRIVATE_OFILES="$OBJDUMP_PRIVATE_OFILES $i.$objext"
+ ;;
+ esac
+done
+
+DLLTOOL_DEFS="$DLLTOOL_DEFS $DLLTOOL_DEFAULT"
+
+if test "${with_windres+set}" = set; then
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+fi
+
+if test "${with_windmc+set}" = set; then
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+fi
+
+OBJDUMP_DEFS="${OBJDUMP_DEFS} -DOBJDUMP_PRIVATE_VECTORS=\"${OBJDUMP_PRIVATE_VECTORS}\""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define TARGET "${target}"
+_ACEOF
+
+
+targ=$target
+. $srcdir/../bfd/config.bfd
+if test "x$targ_underscore" = "xyes"; then
+ UNDERSCORE=1
+else
+ UNDERSCORE=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define TARGET_PREPENDS_UNDERSCORE $UNDERSCORE
+_ACEOF
+
+
+# Emulation
+targ=$target
+. ${srcdir}/configure.tgt
+EMULATION=$targ_emul
+EMULATION_VECTOR=$targ_emul_vector
+
+
+
+
+# Required for html and install-html
+
+
+
+
+
+ac_config_files="$ac_config_files Makefile doc/Makefile po/Makefile.in:po/Make-in"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ test "x$cache_file" != "x/dev/null" &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ as_fn_error "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ as_fn_error "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+ if test -n "$EXEEXT"; then
+ am__EXEEXT_TRUE=
+ am__EXEEXT_FALSE='#'
+else
+ am__EXEEXT_TRUE='#'
+ am__EXEEXT_FALSE=
+fi
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+ as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${GENINSRC_NEVER_TRUE}" && test -z "${GENINSRC_NEVER_FALSE}"; then
+ as_fn_error "conditional \"GENINSRC_NEVER\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error ERROR [LINENO LOG_FD]
+# ---------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with status $?, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$?; test $as_status -eq 0 && as_status=1
+ if test "$3"; then
+ as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+ fi
+ $as_echo "$as_me: error: $1" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -p'
+ fi
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.64. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.64,
+ with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ as_fn_error "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+ --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+ eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+AR \
+AR_FLAGS \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_wl \
+lt_prog_compiler_pic \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+fix_srcfile_path \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec; do
+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+ *[\\\\\\\`\\"\\\$]*)
+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+ ;;
+ *)
+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+ ;;
+ esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+
+ PACKAGE='$PACKAGE'
+ VERSION='$VERSION'
+ TIMESTAMP='$TIMESTAMP'
+ RM='$RM'
+ ofile='$ofile'
+
+
+
+# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+ # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
+ # from automake.
+ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+ # Capture the value of LINGUAS because we need it to compute CATALOGS.
+ LINGUAS="${LINGUAS-%UNSET%}"
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
+ "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+ "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;;
+
+ *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp=
+ trap 'exit_status=$?
+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+ || as_fn_error "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[ ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+ ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_t"; then
+ break
+ elif $ac_last_try; then
+ as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any. Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[ ]*#[ ]*define[ ][ ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ for (key in D) D_is_set[key] = 1
+ FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+ line = \$ 0
+ split(line, arg, " ")
+ if (arg[1] == "#") {
+ defundef = arg[2]
+ mac1 = arg[3]
+ } else {
+ defundef = substr(arg[1], 2)
+ mac1 = arg[2]
+ }
+ split(mac1, mac2, "(") #)
+ macro = mac2[1]
+ prefix = substr(line, 1, index(line, defundef) - 1)
+ if (D_is_set[macro]) {
+ # Preserve the white space surrounding the "#".
+ print prefix "define", macro P[macro] D[macro]
+ next
+ } else {
+ # Replace #undef with comments. This is necessary, for example,
+ # in the case of _POSIX_SOURCE, which is predefined and required
+ # on some systems where configure will not decide to define it.
+ if (defundef == "undef") {
+ print "/*", prefix defundef, macro, "*/"
+ next
+ }
+ }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ as_fn_error "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&2;}
+
+ rm -f "$tmp/stdin"
+ case $ac_file in
+ -) cat "$tmp/out" && rm -f "$tmp/out";;
+ *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+ if test x"$ac_file" != x-; then
+ {
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+ } >"$tmp/config.h" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f "$ac_file"
+ mv "$tmp/config.h" "$ac_file" \
+ || as_fn_error "could not create $ac_file" "$LINENO" 5
+ fi
+ else
+ $as_echo "/* $configure_input */" \
+ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+ || as_fn_error "could not create -" "$LINENO" 5
+ fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $_am_arg | $_am_arg:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$_am_arg" : 'X\(//\)[^/]' \| \
+ X"$_am_arg" : 'X\(//\)$' \| \
+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+ # Autoconf 2.62 quotes --file arguments for eval, but not when files
+ # are listed without --file. Let's play safe and only enable the eval
+ # if we detect the quoting.
+ case $CONFIG_FILES in
+ *\'*) eval set x "$CONFIG_FILES" ;;
+ *) set x $CONFIG_FILES ;;
+ esac
+ shift
+ for mf
+ do
+ # Strip MF so we end up with the name of the file.
+ mf=`echo "$mf" | sed -e 's/:.*$//'`
+ # Check whether this is an Automake generated Makefile or not.
+ # We used to match only the files named `Makefile.in', but
+ # some people rename them; so instead we look at the file content.
+ # Grep'ing the first line is not enough: some people post-process
+ # each Makefile.in and add a new line on top of each file to say so.
+ # Grep'ing the whole file is not good either: AIX grep has a line
+ # limit of 2048, but all sed's we know have understand at least 4000.
+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+ dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ else
+ continue
+ fi
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+ test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+ # When using ansi2knr, U may be empty or an underscore; expand it
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+ # Make sure the directory exists.
+ test -f "$dirpart/$file" && continue
+ fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir=$dirpart/$fdir; as_fn_mkdir_p
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+ done
+}
+ ;;
+ "libtool":C)
+
+ # See if we are running on zsh, and set the options which allow our
+ # commands through without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+
+ cfgfile="${ofile}T"
+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+ $RM "$cfgfile"
+
+ cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# Written by Gordon Matzigkeit, 1996
+#
+# This file is part of GNU Libtool.
+#
+# GNU Libtool 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool 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 Libtool; see the file COPYING. If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags=""
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking. This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+ case $host_os in
+ aix3*)
+ cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+_LT_EOF
+ ;;
+ esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ case $xsi_shell in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+# dirname: Compute the dirname of FILE. If nonempty,
+# add APPEND to the result, otherwise set result
+# to NONDIR_REPLACEMENT.
+# value returned in "$func_dirname_result"
+# basename: Compute filename of FILE.
+# value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+ case ${1} in
+ */*) func_dirname_result="${1%/*}${2}" ;;
+ * ) func_dirname_result="${3}" ;;
+ esac
+ func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+ # positional parameters, so assign one to ordinary parameter first.
+ func_stripname_result=${3}
+ func_stripname_result=${func_stripname_result#"${1}"}
+ func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=${1%%=*}
+ func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ case ${1} in
+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+ *) func_lo2o_result=${1} ;;
+ esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=$(( $* ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=${#1}
+}
+
+_LT_EOF
+ ;;
+ *) # Bourne compatible functions.
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE. If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+ # Extract subdirectory from the argument.
+ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+ if test "X$func_dirname_result" = "X${1}"; then
+ func_dirname_result="${3}"
+ else
+ func_dirname_result="$func_dirname_result${2}"
+ fi
+}
+
+# func_basename file
+func_basename ()
+{
+ func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+}
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+ case ${2} in
+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+ esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[^=]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+ func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+ func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+ func_arith_result=`expr "$@"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+ yes)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$1+=\$2"
+}
+_LT_EOF
+ ;;
+ *)
+ cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+ eval "$1=\$$1\$2"
+}
+
+_LT_EOF
+ ;;
+ esac
+
+
+ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+ || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" ||
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+ ;;
+ "default-1":C)
+ for ac_file in $CONFIG_FILES; do
+ # Support "outfile[:infile[:infile...]]"
+ case "$ac_file" in
+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ esac
+ # PO directories have a Makefile.in generated from Makefile.in.in.
+ case "$ac_file" in */Makefile.in)
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+ rm -f "$ac_dir/POTFILES"
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+ POMAKEFILEDEPS="POTFILES.in"
+ # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
+ # on $ac_dir but don't depend on user-specified configuration
+ # parameters.
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ # Hide the ALL_LINGUAS assigment from automake.
+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+ else
+ # The set of available languages was given in configure.in.
+ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+ fi
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ GMOFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ done
+ fi
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+ if test -f "$f"; then
+ case "$f" in
+ *.orig | *.bak | *~) ;;
+ *) cat "$f" >> "$ac_dir/Makefile" ;;
+ esac
+ fi
+ done
+ fi
+ ;;
+ esac
+ done ;;
+
+ esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit $?
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/binutils-2.24/binutils/configure.com b/binutils-2.24/binutils/configure.com
new file mode 100644
index 00000000..baf987c0
--- /dev/null
+++ b/binutils-2.24/binutils/configure.com
@@ -0,0 +1,146 @@
+$!
+$! This file configures binutils for use with openVMS/Alpha
+$! We do not use the configure script, since we do not have /bin/sh
+$! to execute it.
+$!
+$! Copyright 2012 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 3 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; see the file COPYING3. If not see
+$! <http://www.gnu.org/licenses/>.
+$!
+$! Written by Klaus K"ampf (kkaempf@rmi.de)
+$!
+$ arch=F$GETSYI("ARCH_NAME")
+$ arch=F$EDIT(arch,"LOWERCASE")
+$ write sys$output "Configuring binutils for ''arch' target"
+$!
+$! Generate config.h
+$!
+$ create config.h
+/* config.h. Generated automatically by configure.com */
+/* Is the type time_t defined in <time.h>? */
+#define HAVE_TIME_T_IN_TIME_H 1
+/* Is the type time_t defined in <sys/types.h>? */
+#define HAVE_TIME_T_IN_TYPES_H 1
+/* Does <utime.h> define struct utimbuf? */
+#define HAVE_GOOD_UTIME_H 1
+/* Whether fprintf must be declared even if <stdio.h> is included. */
+#define NEED_DECLARATION_FPRINTF 1
+/* Do we need to use the b modifier when opening binary files? */
+/* #undef USE_BINARY_FOPEN */
+/* Define if you have the utimes function. */
+#define HAVE_UTIMES 1
+/* Define if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+/* Define if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+/* Define if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+/* Define if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+/* Define if you have the <sys/file.h> header file. */
+#define HAVE_SYS_FILE_H 1
+/* Define if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Alloca. */
+#ifdef __DECC
+#include <builtins.h>
+#define C_alloca(x) __ALLOCA(x)
+#endif
+/* Name of package */
+#define PACKAGE "binutils"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME ""
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING ""
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME ""
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION ""
+$!
+$! Add TARGET.
+$!
+$ if arch .eqs. "ia64" then target = "elf64-ia64-vms"
+$ if arch .eqs. "alpha" then target = "vms-alpha"
+$ if arch .eqs. "vax" then target = "vms-vax"
+$!
+$ open/append tfile config.h
+$ write tfile "#define TARGET """ + target + """"
+$ close tfile
+$ write sys$output "Created `config.h'"
+$!
+$ write sys$output "Generate binutils build.com"
+$!
+$ create build.com
+$DECK
+$ DEFS=""
+$ OPT="/noopt/debug"
+$ CFLAGS=OPT + "/include=([],""../include"",[-.bfd])" +-
+ "/name=(as_is,shortened)" +-
+ "/prefix=(all,exc=(""getopt"",""optarg"",""optopt"",""optind"",""opterr""))"
+$ BFDLIB = ",[-.bfd]libbfd.olb/lib"
+$ LIBIBERTY = ",[-.libiberty]libiberty.olb/lib"
+$ OPCODES = ",[-.opcodes]libopcodes.olb/lib"
+$ DEBUG_FILES = ",rddbg,debug,stabs,ieee,rdcoff,dwarf"
+$ BULIBS_FILES = ",bucomm,version,filemode"
+$ ALL_FILES="nm,strings,addr2line,size,objdump,prdbg" +-
+ BULIBS_FILES + DEBUG_FILES
+$!
+$ write sys$output "CFLAGS=",CFLAGS
+$ if p1.nes."LINK"
+$ then
+$ NUM = 0
+$ LOOP:
+$ F = F$ELEMENT(NUM,",",ALL_FILES)
+$ IF F.EQS."," THEN GOTO END
+$ write sys$output "Compiling ", F, ".c"
+$ cc 'CFLAGS 'F.c
+$ NUM = NUM + 1
+$ GOTO LOOP
+$ END:
+$ endif
+$ purge
+$!
+$ write sys$output "Building nm.exe"
+$ NM_OBJS="nm.obj" + BULIBS_FILES + BFDLIB + LIBIBERTY
+$ link/exe=nm 'NM_OBJS
+$!
+$ write sys$output "Building strings.exe"
+$ STRINGS_OBJS="strings.obj" + BULIBS_FILES + BFDLIB + LIBIBERTY
+$ link/exe=strings 'STRINGS_OBJS
+$!
+$ write sys$output "Building size.exe"
+$ SIZE_OBJS="size.obj" + BULIBS_FILES + BFDLIB + LIBIBERTY
+$ link/exe=size 'SIZE_OBJS
+$!
+$ write sys$output "Building addr2line.exe"
+$ ADDR2LINE_OBJS="addr2line.obj" + BULIBS_FILES + BFDLIB + LIBIBERTY
+$ link/exe=addr2line 'ADDR2LINE_OBJS
+$!
+$ write sys$output "Building objdump.exe"
+$ OBJDUMP_OBJS="objdump.obj,prdbg.obj" + DEBUG_FILES + BULIBS_FILES +-
+ BFDLIB + OPCODES + LIBIBERTY
+$ link/exe=objdump 'OBJDUMP_OBJS
+$EOD
diff --git a/binutils-2.24/binutils/configure.in b/binutils-2.24/binutils/configure.in
new file mode 100644
index 00000000..4072178e
--- /dev/null
+++ b/binutils-2.24/binutils/configure.in
@@ -0,0 +1,499 @@
+dnl Process this file with autoconf to produce a configure script.
+dnl
+dnl Copyright 2012 Free Software Foundation
+dnl
+dnl This file is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 3 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; see the file COPYING3. If not see
+dnl <http://www.gnu.org/licenses/>.
+dnl
+
+AC_PREREQ(2.59)
+AC_INIT
+AC_CONFIG_SRCDIR(ar.c)
+
+AC_CANONICAL_TARGET
+AC_ISC_POSIX
+
+changequote(,)dnl
+BFD_VERSION=`${srcdir}/../bfd/configure --version | sed -n -e '1s,.* ,,p'`
+changequote([,])dnl
+AM_INIT_AUTOMAKE(binutils, ${BFD_VERSION})
+
+AC_PROG_CC
+AC_GNU_SOURCE
+AC_USE_SYSTEM_EXTENSIONS
+
+ACX_LARGEFILE
+LT_INIT
+
+AC_ARG_ENABLE(targets,
+[ --enable-targets alternative target configurations],
+[case "${enableval}" in
+ yes | "") AC_MSG_ERROR(enable-targets option must specify target names or 'all')
+ ;;
+ no) enable_targets= ;;
+ *) enable_targets=$enableval ;;
+esac])dnl
+
+AC_ARG_ENABLE(deterministic-archives,
+[AS_HELP_STRING([--enable-deterministic-archives],
+ [ar and ranlib default to -D behavior])], [
+if test "${enableval}" = no; then
+ default_ar_deterministic=0
+else
+ default_ar_deterministic=1
+fi], [default_ar_deterministic=0])
+
+AC_DEFINE_UNQUOTED(DEFAULT_AR_DETERMINISTIC, $default_ar_deterministic,
+ [Should ar and ranlib use -D behavior by default?])
+
+AM_BINUTILS_WARNINGS
+
+AC_CONFIG_HEADERS(config.h:config.in)
+
+AH_VERBATIM([00_CONFIG_H_CHECK],
+[/* Check that config.h is #included before system headers
+ (this works only for glibc, but that should be enough). */
+#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
+# error config.h must be #included before system headers
+#endif
+#define __CONFIG_H__ 1])
+
+if test -z "$target" ; then
+ AC_MSG_ERROR(Unrecognized target system type; please check config.sub.)
+fi
+if test -z "$host" ; then
+ AC_MSG_ERROR(Unrecognized host system type; please check config.sub.)
+fi
+
+AC_PROG_YACC
+AM_PROG_LEX
+
+ALL_LINGUAS="bg da es fi fr id it ja ro ru rw sk sv tr uk vi zh_CN zh_TW hr"
+ZW_GNU_GETTEXT_SISTER_DIR
+AM_PO_SUBDIRS
+
+AM_MAINTAINER_MODE
+AM_CONDITIONAL(GENINSRC_NEVER, false)
+AC_EXEEXT
+if test -n "$EXEEXT"; then
+ AC_DEFINE(HAVE_EXECUTABLE_SUFFIX, 1,
+ [Does the platform use an executable suffix?])
+fi
+AC_DEFINE_UNQUOTED(EXECUTABLE_SUFFIX, "${EXEEXT}",
+ [Suffix used for executables, if any.])
+
+# host-specific stuff:
+
+HDEFINES=
+
+. ${srcdir}/../bfd/configure.host
+
+AC_SUBST(HDEFINES)
+AR=${AR-ar}
+AC_SUBST(AR)
+AC_PROG_RANLIB
+AC_PROG_INSTALL
+
+BFD_CC_FOR_BUILD
+
+DEMANGLER_NAME=c++filt
+case "${host}" in
+ *-*-go32* | *-*-msdos*)
+ DEMANGLER_NAME=cxxfilt
+esac
+AC_SUBST(DEMANGLER_NAME)
+
+AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h fcntl.h sys/file.h limits.h locale.h sys/param.h wchar.h)
+AC_HEADER_SYS_WAIT
+ACX_HEADER_STRING
+AC_FUNC_ALLOCA
+AC_CHECK_FUNCS(sbrk utimes setmode getc_unlocked strcoll setlocale)
+AC_CHECK_FUNC([mkstemp],
+ AC_DEFINE([HAVE_MKSTEMP], 1,
+ [Define to 1 if you have the `mkstemp' function.]))
+AC_CHECK_FUNC([mkdtemp],
+ AC_DEFINE([HAVE_MKDTEMP], 1,
+ [Define to 1 if you have the `mkdtemp' function.]))
+ AC_MSG_CHECKING([for mbstate_t])
+ AC_TRY_COMPILE([#include <wchar.h>],
+ [mbstate_t teststate;],
+ have_mbstate_t=yes, have_mbstate_t=no)
+ AC_MSG_RESULT($have_mbstate_t)
+ if test x"$have_mbstate_t" = xyes; then
+ AC_DEFINE(HAVE_MBSTATE_T,1,[Define if mbstate_t exists in wchar.h.])
+ fi
+
+# Some systems have frexp only in -lm, not in -lc.
+AC_SEARCH_LIBS(frexp, m)
+
+AM_LC_MESSAGES
+
+AC_MSG_CHECKING(for time_t in time.h)
+AC_CACHE_VAL(bu_cv_decl_time_t_time_h,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <time.h>], [time_t i;])],
+bu_cv_decl_time_t_time_h=yes, bu_cv_decl_time_t_time_h=no)])
+AC_MSG_RESULT($bu_cv_decl_time_t_time_h)
+if test $bu_cv_decl_time_t_time_h = yes; then
+ AC_DEFINE([HAVE_TIME_T_IN_TIME_H], 1,
+ [Is the type time_t defined in <time.h>?])
+fi
+
+AC_MSG_CHECKING(for time_t in sys/types.h)
+AC_CACHE_VAL(bu_cv_decl_time_t_types_h,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>], [time_t i;])],
+bu_cv_decl_time_t_types_h=yes, bu_cv_decl_time_t_types_h=no)])
+AC_MSG_RESULT($bu_cv_decl_time_t_types_h)
+if test $bu_cv_decl_time_t_types_h = yes; then
+ AC_DEFINE([HAVE_TIME_T_IN_TYPES_H], 1,
+ [Is the type time_t defined in <sys/types.h>?])
+fi
+
+AC_MSG_CHECKING(for a known getopt prototype in unistd.h)
+AC_CACHE_VAL(bu_cv_decl_getopt_unistd_h,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <unistd.h>], [extern int getopt (int, char *const*, const char *);])],
+bu_cv_decl_getopt_unistd_h=yes, bu_cv_decl_getopt_unistd_h=no)])
+AC_MSG_RESULT($bu_cv_decl_getopt_unistd_h)
+if test $bu_cv_decl_getopt_unistd_h = yes; then
+ AC_DEFINE([HAVE_DECL_GETOPT], 1,
+ [Is the prototype for getopt in <unistd.h> in the expected format?])
+fi
+
+# Under Next 3.2 <utime.h> apparently does not define struct utimbuf
+# by default.
+AC_MSG_CHECKING([for utime.h])
+AC_CACHE_VAL(bu_cv_header_utime_h,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+#include <utime.h>],
+[struct utimbuf s;])],
+bu_cv_header_utime_h=yes, bu_cv_header_utime_h=no)])
+AC_MSG_RESULT($bu_cv_header_utime_h)
+if test $bu_cv_header_utime_h = yes; then
+ AC_DEFINE(HAVE_GOOD_UTIME_H, 1, [Does <utime.h> define struct utimbuf?])
+fi
+
+AC_CHECK_DECLS([environ, fprintf, getc_unlocked, getenv,
+ sbrk, snprintf, stpcpy, strnlen, strstr, vsnprintf])
+
+# Link in zlib if we can. This allows us to read compressed debug
+# sections. This is used only by readelf.c (objdump uses bfd for
+# reading compressed sections).
+AM_ZLIB
+
+BFD_BINARY_FOPEN
+
+# target-specific stuff:
+
+# Canonicalize the secondary target names.
+if test -n "$enable_targets"; then
+ for targ in `echo $enable_targets | sed 's/,/ /g'`
+ do
+ result=`$ac_config_sub $targ 2>/dev/null`
+ if test -n "$result"; then
+ canon_targets="$canon_targets $result"
+ else
+ # Allow targets that config.sub doesn't recognize, like "all".
+ canon_targets="$canon_targets $targ"
+ fi
+ done
+fi
+
+AC_CHECK_HEADER(iconv.h)
+AM_ICONV
+
+all_targets=false
+BUILD_NLMCONV=
+NLMCONV_DEFS=
+BUILD_SRCONV=
+BUILD_DLLTOOL=
+DLLTOOL_DEFS=
+DLLTOOL_DEFAULT=
+BUILD_WINDRES=
+BUILD_WINDMC=
+BUILD_DLLWRAP=
+BUILD_MISC=
+BUILD_INSTALL_MISC=
+OBJDUMP_DEFS=
+OBJDUMP_PRIVATE_VECTORS=
+OBJDUMP_PRIVATE_OFILES=
+od_vectors=
+
+for targ in $target $canon_targets
+do
+ if test "x$targ" = "xall"; then
+ all_targets=true
+ BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
+ BUILD_SRCONV='$(SRCONV_PROG)'
+ NLMCONV_DEFS="-DNLMCONV_I386 -DNLMCONV_ALPHA -DNLMCONV_POWERPC -DNLMCONV_SPARC"
+ BUILD_MISC="${BUILD_MISC} "'bin2c$(EXEEXT_FOR_BUILD)'
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_I386"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
+ BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)'
+ od_vectors="$od_vectors objdump_private_desc_xcoff"
+ else
+ case $targ in
+changequote(,)dnl
+ i[3-7]86*-*-netware*)
+changequote([,])dnl
+ BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
+ NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_I386"
+ ;;
+ alpha*-*-netware*)
+ BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
+ NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_ALPHA"
+ ;;
+ powerpc*-*-netware*)
+ BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
+ NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_POWERPC"
+ ;;
+ sparc*-*-netware*)
+ BUILD_NLMCONV='$(NLMCONV_PROG)$(EXEEXT)'
+ NLMCONV_DEFS="$NLMCONV_DEFS -DNLMCONV_SPARC"
+ ;;
+ esac
+
+ case $targ in
+ *-*-hms*) BUILD_SRCONV='$(SRCONV_PROG)' ;;
+ esac
+
+ case $targ in
+ arm-epoc-pe*)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_ARM_EPOC"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_EPOC -DDLLTOOL_ARM"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ arm-wince-pe* | arm-*-wince | arm*-*-cegcc* | arm*-*-mingw32ce*)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_ARM_WINCE"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM_WINCE -DDLLTOOL_ARM"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ arm-*-pe*)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_ARM"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ x86_64-*-mingw* | x86_64-*-cygwin*)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_MX86_64"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MX86_64"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)'
+ ;;
+changequote(,)dnl
+ i[3-7]86-*-pe* | i[3-7]86-*-cygwin* | i[3-7]86-*-mingw32** | i[3-7]86-*-netbsdpe*)
+changequote([,])dnl
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_I386"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ BUILD_DLLWRAP='$(DLLWRAP_PROG)$(EXEEXT)'
+ ;;
+changequote(,)dnl
+ i[3-7]86-*-interix)
+changequote([,])dnl
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_I386"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
+ ;;
+changequote(,)dnl
+ powerpc*-aix5.[01])
+changequote([,])dnl
+ ;;
+changequote(,)dnl
+ powerpc*-aix[5-9].*)
+changequote([,])dnl
+ OBJDUMP_DEFS="-DAIX_WEAK_SUPPORT"
+ ;;
+ powerpc*-*-pe* | powerpc*-*-cygwin*)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_PPC"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_PPC"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ powerpc*-*-linux* | powerpc*-*-elf* | powerpc*-*-eabi*)
+ case "$BUILD_INSTALL_MISC" in
+ *embedspu*) ;;
+ *) BUILD_INSTALL_MISC="${BUILD_INSTALL_MISC} embedspu"
+ esac
+ ;;
+ sh*-*-pe)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_SH"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_SH"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ spu-*-*)
+ BUILD_MISC="${BUILD_MISC} "'bin2c$(EXEEXT_FOR_BUILD)'
+ ;;
+ mips*-*-pe)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_MIPS"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MIPS"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ mcore-*-pe)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_MCORE"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE"
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+ ;;
+ mcore-*-elf)
+ BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
+ if test -z "$DLLTOOL_DEFAULT"; then
+ DLLTOOL_DEFAULT="-DDLLTOOL_DEFAULT_MCORE_ELF"
+ fi
+ DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_MCORE_ELF"
+ ;;
+ mep-*)
+ OBJDUMP_DEFS="-DSKIP_ZEROES=256 -DSKIP_ZEROES_AT_END=0"
+ ;;
+ esac
+
+ # Add objdump private vectors.
+ case $targ in
+ powerpc-*-aix*)
+ od_vectors="$od_vectors objdump_private_desc_xcoff"
+ ;;
+ *-*-darwin*)
+ od_vectors="$od_vectors objdump_private_desc_mach_o"
+ ;;
+ esac
+ fi
+done
+
+# Uniq objdump private vector, build objdump target ofiles.
+od_files=
+f=""
+for i in $od_vectors ; do
+ case " $f " in
+ *" $i "*) ;;
+ *)
+ f="$f $i"
+ OBJDUMP_PRIVATE_VECTORS="$OBJDUMP_PRIVATE_VECTORS &$i,"
+ case $i in
+ objdump_private_desc_xcoff)
+ od_files="$od_files od-xcoff" ;;
+ objdump_private_desc_mach_o)
+ od_files="$od_files od-macho" ;;
+ *) AC_MSG_ERROR(*** unknown private vector $i) ;;
+ esac
+ ;;
+ esac
+done
+
+# Uniq objdump target ofiles
+f=""
+for i in $od_files ; do
+ case " $f " in
+ *" $i "*) ;;
+ *)
+ f="$f $i"
+ OBJDUMP_PRIVATE_OFILES="$OBJDUMP_PRIVATE_OFILES $i.$objext"
+ ;;
+ esac
+done
+
+DLLTOOL_DEFS="$DLLTOOL_DEFS $DLLTOOL_DEFAULT"
+
+if test "${with_windres+set}" = set; then
+ BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
+fi
+
+if test "${with_windmc+set}" = set; then
+ BUILD_WINDMC='$(WINDMC_PROG)$(EXEEXT)'
+fi
+
+OBJDUMP_DEFS="${OBJDUMP_DEFS} -DOBJDUMP_PRIVATE_VECTORS=\"${OBJDUMP_PRIVATE_VECTORS}\""
+
+AC_SUBST(NLMCONV_DEFS)
+AC_SUBST(BUILD_NLMCONV)
+AC_SUBST(BUILD_SRCONV)
+AC_SUBST(BUILD_DLLTOOL)
+AC_SUBST(DLLTOOL_DEFS)
+AC_SUBST(BUILD_WINDRES)
+AC_SUBST(BUILD_WINDMC)
+AC_SUBST(BUILD_DLLWRAP)
+AC_SUBST(BUILD_MISC)
+AC_SUBST(BUILD_INSTALL_MISC)
+AC_SUBST(OBJDUMP_DEFS)
+AC_SUBST(OBJDUMP_PRIVATE_OFILES)
+
+AC_DEFINE_UNQUOTED(TARGET, "${target}", [Configured target name.])
+
+targ=$target
+. $srcdir/../bfd/config.bfd
+if test "x$targ_underscore" = "xyes"; then
+ UNDERSCORE=1
+else
+ UNDERSCORE=0
+fi
+AC_DEFINE_UNQUOTED(TARGET_PREPENDS_UNDERSCORE, $UNDERSCORE,
+ [Define to 1 if user symbol names have a leading underscore, 0 if not.])
+
+# Emulation
+targ=$target
+. ${srcdir}/configure.tgt
+EMULATION=$targ_emul
+EMULATION_VECTOR=$targ_emul_vector
+
+AC_SUBST(EMULATION)
+AC_SUBST(EMULATION_VECTOR)
+
+# Required for html and install-html
+AC_SUBST(datarootdir)
+AC_SUBST(docdir)
+AC_SUBST(htmldir)
+AC_SUBST(pdfdir)
+
+AC_CONFIG_FILES(Makefile doc/Makefile po/Makefile.in:po/Make-in)
+AC_OUTPUT
diff --git a/binutils-2.24/binutils/configure.tgt b/binutils-2.24/binutils/configure.tgt
new file mode 100644
index 00000000..90f735b6
--- /dev/null
+++ b/binutils-2.24/binutils/configure.tgt
@@ -0,0 +1,42 @@
+# This is the binutils target specific file. This is invoked by the
+# autoconf generated configure script. Putting it in a separate shell
+# file lets us skip running autoconf when modifying target specific
+# information.
+
+# Copyright 2012 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 3 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; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# This file switches on the shell variable ${targ}, and sets the
+# following shell variables:
+# targ_emul name of emulation to use
+# targ_emul_vector name of vector to use
+
+case "${targ}" in
+ powerpc-*-aix[5-9]* | rs6000-*-aix[5-9]*)
+ targ_emul=aix
+ targ_emul_vector=bin_aix_emulation
+ ;;
+
+ powerpc-*-aix4.3* | rs6000-*-aix4.3*)
+ targ_emul=aix
+ targ_emul_vector=bin_aix_emulation
+ ;;
+
+ *)
+ targ_emul=vanilla
+ targ_emul_vector=bin_vanilla_emulation
+ ;;
+esac
diff --git a/binutils-2.24/binutils/cxxfilt.c b/binutils-2.24/binutils/cxxfilt.c
new file mode 100644
index 00000000..770df9ba
--- /dev/null
+++ b/binutils-2.24/binutils/cxxfilt.c
@@ -0,0 +1,289 @@
+/* Demangler for GNU C++ - main program
+ Copyright 1989, 1991, 1994, 1995, 1996, 1997, 1998, 1999,
+ 2000, 2001, 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+ Written by James Clark (jjc@jclark.uucp)
+ Rewritten by Fred Fish (fnf@cygnus.com) for ARM and Lucid demangling
+ Modified by Satish Pai (pai@apollo.hp.com) for HP demangling
+
+ 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 3 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 GCC; see the file COPYING. If not, write to the Free
+ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "demangle.h"
+#include "getopt.h"
+#include "safe-ctype.h"
+#include "bucomm.h"
+
+static int flags = DMGL_PARAMS | DMGL_ANSI | DMGL_VERBOSE;
+static int strip_underscore = TARGET_PREPENDS_UNDERSCORE;
+
+static const struct option long_options[] =
+{
+ {"strip-underscore", no_argument, NULL, '_'},
+ {"format", required_argument, NULL, 's'},
+ {"help", no_argument, NULL, 'h'},
+ {"no-params", no_argument, NULL, 'p'},
+ {"no-strip-underscores", no_argument, NULL, 'n'},
+ {"no-verbose", no_argument, NULL, 'i'},
+ {"types", no_argument, NULL, 't'},
+ {"version", no_argument, NULL, 'v'},
+ {NULL, no_argument, NULL, 0}
+};
+
+static void
+demangle_it (char *mangled_name)
+{
+ char *result;
+ unsigned int skip_first = 0;
+
+ /* _ and $ are sometimes found at the start of function names
+ in assembler sources in order to distinguish them from other
+ names (eg register names). So skip them here. */
+ if (mangled_name[0] == '.' || mangled_name[0] == '$')
+ ++skip_first;
+ if (strip_underscore && mangled_name[skip_first] == '_')
+ ++skip_first;
+
+ result = cplus_demangle (mangled_name + skip_first, flags);
+
+ if (result == NULL)
+ printf ("%s", mangled_name);
+ else
+ {
+ if (mangled_name[0] == '.')
+ putchar ('.');
+ printf ("%s", result);
+ free (result);
+ }
+}
+
+static void
+print_demangler_list (FILE *stream)
+{
+ const struct demangler_engine *demangler;
+
+ fprintf (stream, "{%s", libiberty_demanglers->demangling_style_name);
+
+ for (demangler = libiberty_demanglers + 1;
+ demangler->demangling_style != unknown_demangling;
+ ++demangler)
+ fprintf (stream, ",%s", demangler->demangling_style_name);
+
+ fprintf (stream, "}");
+}
+
+static void
+usage (FILE *stream, int status)
+{
+ fprintf (stream, "\
+Usage: %s [options] [mangled names]\n", program_name);
+ fprintf (stream, "\
+Options are:\n\
+ [-_|--strip-underscore] Ignore first leading underscore%s\n",
+ TARGET_PREPENDS_UNDERSCORE ? " (default)" : "");
+ fprintf (stream, "\
+ [-n|--no-strip-underscore] Do not ignore a leading underscore%s\n",
+ TARGET_PREPENDS_UNDERSCORE ? "" : " (default)");
+ fprintf (stream, "\
+ [-p|--no-params] Do not display function arguments\n\
+ [-i|--no-verbose] Do not show implementation details (if any)\n\
+ [-t|--types] Also attempt to demangle type encodings\n\
+ [-s|--format ");
+ print_demangler_list (stream);
+ fprintf (stream, "]\n");
+
+ fprintf (stream, "\
+ [@<file>] Read extra options from <file>\n\
+ [-h|--help] Display this information\n\
+ [-v|--version] Show the version information\n\
+Demangled names are displayed to stdout.\n\
+If a name cannot be demangled it is just echoed to stdout.\n\
+If no names are provided on the command line, stdin is read.\n");
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (stream, _("Report bugs to %s.\n"), REPORT_BUGS_TO);
+ exit (status);
+}
+
+/* Return the string of non-alnum characters that may occur
+ as a valid symbol component, in the standard assembler symbol
+ syntax. */
+
+static const char *
+standard_symbol_characters (void)
+{
+ return "_$.";
+}
+
+/* Return the string of non-alnum characters that may occur
+ as a valid symbol name component in an HP object file.
+
+ Note that, since HP's compiler generates object code straight from
+ C++ source, without going through an assembler, its mangled
+ identifiers can use all sorts of characters that no assembler would
+ tolerate, so the alphabet this function creates is a little odd.
+ Here are some sample mangled identifiers offered by HP:
+
+ typeid*__XT24AddressIndExpClassMember_
+ [Vftptr]key:__dt__32OrdinaryCompareIndExpClassMemberFv
+ __ct__Q2_9Elf64_Dyn18{unnamed.union.#1}Fv
+
+ This still seems really weird to me, since nowhere else in this
+ file is there anything to recognize curly brackets, parens, etc.
+ I've talked with Srikanth <srikanth@cup.hp.com>, and he assures me
+ this is right, but I still strongly suspect that there's a
+ misunderstanding here.
+
+ If we decide it's better for c++filt to use HP's assembler syntax
+ to scrape identifiers out of its input, here's the definition of
+ the symbol name syntax from the HP assembler manual:
+
+ Symbols are composed of uppercase and lowercase letters, decimal
+ digits, dollar symbol, period (.), ampersand (&), pound sign(#) and
+ underscore (_). A symbol can begin with a letter, digit underscore or
+ dollar sign. If a symbol begins with a digit, it must contain a
+ non-digit character.
+
+ So have fun. */
+static const char *
+hp_symbol_characters (void)
+{
+ return "_$.<>#,*&[]:(){}";
+}
+
+extern int main (int, char **);
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ const char *valid_symbols;
+ enum demangling_styles style = auto_demangling;
+
+ program_name = argv[0];
+ xmalloc_set_program_name (program_name);
+
+ expandargv (&argc, &argv);
+
+ while ((c = getopt_long (argc, argv, "_hinps:tv", long_options, (int *) 0)) != EOF)
+ {
+ switch (c)
+ {
+ case '?':
+ usage (stderr, 1);
+ break;
+ case 'h':
+ usage (stdout, 0);
+ case 'n':
+ strip_underscore = 0;
+ break;
+ case 'p':
+ flags &= ~ DMGL_PARAMS;
+ break;
+ case 't':
+ flags |= DMGL_TYPES;
+ break;
+ case 'i':
+ flags &= ~ DMGL_VERBOSE;
+ break;
+ case 'v':
+ print_version ("c++filt");
+ return 0;
+ case '_':
+ strip_underscore = 1;
+ break;
+ case 's':
+ style = cplus_demangle_name_to_style (optarg);
+ if (style == unknown_demangling)
+ {
+ fprintf (stderr, "%s: unknown demangling style `%s'\n",
+ program_name, optarg);
+ return 1;
+ }
+ cplus_demangle_set_style (style);
+ break;
+ }
+ }
+
+ if (optind < argc)
+ {
+ for ( ; optind < argc; optind++)
+ {
+ demangle_it (argv[optind]);
+ putchar ('\n');
+ }
+
+ return 0;
+ }
+
+ switch (current_demangling_style)
+ {
+ case gnu_demangling:
+ case lucid_demangling:
+ case arm_demangling:
+ case java_demangling:
+ case edg_demangling:
+ case gnat_demangling:
+ case gnu_v3_demangling:
+ case auto_demangling:
+ valid_symbols = standard_symbol_characters ();
+ break;
+ case hp_demangling:
+ valid_symbols = hp_symbol_characters ();
+ break;
+ default:
+ /* Folks should explicitly indicate the appropriate alphabet for
+ each demangling. Providing a default would allow the
+ question to go unconsidered. */
+ fatal ("Internal error: no symbol alphabet for current style");
+ }
+
+ for (;;)
+ {
+ static char mbuffer[32767];
+ unsigned i = 0;
+
+ c = getchar ();
+ /* Try to read a mangled name. */
+ while (c != EOF && (ISALNUM (c) || strchr (valid_symbols, c)))
+ {
+ if (i >= sizeof (mbuffer) - 1)
+ break;
+ mbuffer[i++] = c;
+ c = getchar ();
+ }
+
+ if (i > 0)
+ {
+ mbuffer[i] = 0;
+ demangle_it (mbuffer);
+ }
+
+ if (c == EOF)
+ break;
+
+ /* Echo the whitespace characters so that the output looks
+ like the input, only with the mangled names demangled. */
+ putchar (c);
+ if (c == '\n')
+ fflush (stdout);
+ }
+
+ fflush (stdout);
+ return 0;
+}
diff --git a/binutils-2.24/binutils/debug.c b/binutils-2.24/binutils/debug.c
new file mode 100644
index 00000000..ee0d62e8
--- /dev/null
+++ b/binutils-2.24/binutils/debug.c
@@ -0,0 +1,3371 @@
+/* debug.c -- Handle generic debugging information.
+ Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2005, 2007,
+ 2009 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor <ian@cygnus.com>.
+
+ 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 3 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 file implements a generic debugging format. We may eventually
+ have readers which convert different formats into this generic
+ format, and writers which write it out. The initial impetus for
+ this was writing a converter from stabs to HP IEEE-695 debugging
+ format. */
+
+#include "sysdep.h"
+#include <assert.h>
+#include "bfd.h"
+#include "libiberty.h"
+#include "filenames.h"
+#include "debug.h"
+
+/* Global information we keep for debugging. A pointer to this
+ structure is the debugging handle passed to all the routines. */
+
+struct debug_handle
+{
+ /* A linked list of compilation units. */
+ struct debug_unit *units;
+ /* The current compilation unit. */
+ struct debug_unit *current_unit;
+ /* The current source file. */
+ struct debug_file *current_file;
+ /* The current function. */
+ struct debug_function *current_function;
+ /* The current block. */
+ struct debug_block *current_block;
+ /* The current line number information for the current unit. */
+ struct debug_lineno *current_lineno;
+ /* Mark. This is used by debug_write. */
+ unsigned int mark;
+ /* A struct/class ID used by debug_write. */
+ unsigned int class_id;
+ /* The base for class_id for this call to debug_write. */
+ unsigned int base_id;
+ /* The current line number in debug_write. */
+ struct debug_lineno *current_write_lineno;
+ unsigned int current_write_lineno_index;
+ /* A list of classes which have assigned ID's during debug_write.
+ This is linked through the next_id field of debug_class_type. */
+ struct debug_class_id *id_list;
+ /* A list used to avoid recursion during debug_type_samep. */
+ struct debug_type_compare_list *compare_list;
+};
+
+/* Information we keep for a single compilation unit. */
+
+struct debug_unit
+{
+ /* The next compilation unit. */
+ struct debug_unit *next;
+ /* A list of files included in this compilation unit. The first
+ file is always the main one, and that is where the main file name
+ is stored. */
+ struct debug_file *files;
+ /* Line number information for this compilation unit. This is not
+ stored by function, because assembler code may have line number
+ information without function information. */
+ struct debug_lineno *linenos;
+};
+
+/* Information kept for a single source file. */
+
+struct debug_file
+{
+ /* The next source file in this compilation unit. */
+ struct debug_file *next;
+ /* The name of the source file. */
+ const char *filename;
+ /* Global functions, variables, types, etc. */
+ struct debug_namespace *globals;
+};
+
+/* A type. */
+
+struct debug_type_s
+{
+ /* Kind of type. */
+ enum debug_type_kind kind;
+ /* Size of type (0 if not known). */
+ unsigned int size;
+ /* Type which is a pointer to this type. */
+ debug_type pointer;
+ /* Tagged union with additional information about the type. */
+ union
+ {
+ /* DEBUG_KIND_INDIRECT. */
+ struct debug_indirect_type *kindirect;
+ /* DEBUG_KIND_INT. */
+ /* Whether the integer is unsigned. */
+ bfd_boolean kint;
+ /* DEBUG_KIND_STRUCT, DEBUG_KIND_UNION, DEBUG_KIND_CLASS,
+ DEBUG_KIND_UNION_CLASS. */
+ struct debug_class_type *kclass;
+ /* DEBUG_KIND_ENUM. */
+ struct debug_enum_type *kenum;
+ /* DEBUG_KIND_POINTER. */
+ struct debug_type_s *kpointer;
+ /* DEBUG_KIND_FUNCTION. */
+ struct debug_function_type *kfunction;
+ /* DEBUG_KIND_REFERENCE. */
+ struct debug_type_s *kreference;
+ /* DEBUG_KIND_RANGE. */
+ struct debug_range_type *krange;
+ /* DEBUG_KIND_ARRAY. */
+ struct debug_array_type *karray;
+ /* DEBUG_KIND_SET. */
+ struct debug_set_type *kset;
+ /* DEBUG_KIND_OFFSET. */
+ struct debug_offset_type *koffset;
+ /* DEBUG_KIND_METHOD. */
+ struct debug_method_type *kmethod;
+ /* DEBUG_KIND_CONST. */
+ struct debug_type_s *kconst;
+ /* DEBUG_KIND_VOLATILE. */
+ struct debug_type_s *kvolatile;
+ /* DEBUG_KIND_NAMED, DEBUG_KIND_TAGGED. */
+ struct debug_named_type *knamed;
+ } u;
+};
+
+/* Information kept for an indirect type. */
+
+struct debug_indirect_type
+{
+ /* Slot where the final type will appear. */
+ debug_type *slot;
+ /* Tag. */
+ const char *tag;
+};
+
+/* Information kept for a struct, union, or class. */
+
+struct debug_class_type
+{
+ /* NULL terminated array of fields. */
+ debug_field *fields;
+ /* A mark field which indicates whether the struct has already been
+ printed. */
+ unsigned int mark;
+ /* This is used to uniquely identify unnamed structs when printing. */
+ unsigned int id;
+ /* The remaining fields are only used for DEBUG_KIND_CLASS and
+ DEBUG_KIND_UNION_CLASS. */
+ /* NULL terminated array of base classes. */
+ debug_baseclass *baseclasses;
+ /* NULL terminated array of methods. */
+ debug_method *methods;
+ /* The type of the class providing the virtual function table for
+ this class. This may point to the type itself. */
+ debug_type vptrbase;
+};
+
+/* Information kept for an enum. */
+
+struct debug_enum_type
+{
+ /* NULL terminated array of names. */
+ const char **names;
+ /* Array of corresponding values. */
+ bfd_signed_vma *values;
+};
+
+/* Information kept for a function. FIXME: We should be able to
+ record the parameter types. */
+
+struct debug_function_type
+{
+ /* Return type. */
+ debug_type return_type;
+ /* NULL terminated array of argument types. */
+ debug_type *arg_types;
+ /* Whether the function takes a variable number of arguments. */
+ bfd_boolean varargs;
+};
+
+/* Information kept for a range. */
+
+struct debug_range_type
+{
+ /* Range base type. */
+ debug_type type;
+ /* Lower bound. */
+ bfd_signed_vma lower;
+ /* Upper bound. */
+ bfd_signed_vma upper;
+};
+
+/* Information kept for an array. */
+
+struct debug_array_type
+{
+ /* Element type. */
+ debug_type element_type;
+ /* Range type. */
+ debug_type range_type;
+ /* Lower bound. */
+ bfd_signed_vma lower;
+ /* Upper bound. */
+ bfd_signed_vma upper;
+ /* Whether this array is really a string. */
+ bfd_boolean stringp;
+};
+
+/* Information kept for a set. */
+
+struct debug_set_type
+{
+ /* Base type. */
+ debug_type type;
+ /* Whether this set is really a bitstring. */
+ bfd_boolean bitstringp;
+};
+
+/* Information kept for an offset type (a based pointer). */
+
+struct debug_offset_type
+{
+ /* The type the pointer is an offset from. */
+ debug_type base_type;
+ /* The type the pointer points to. */
+ debug_type target_type;
+};
+
+/* Information kept for a method type. */
+
+struct debug_method_type
+{
+ /* The return type. */
+ debug_type return_type;
+ /* The object type which this method is for. */
+ debug_type domain_type;
+ /* A NULL terminated array of argument types. */
+ debug_type *arg_types;
+ /* Whether the method takes a variable number of arguments. */
+ bfd_boolean varargs;
+};
+
+/* Information kept for a named type. */
+
+struct debug_named_type
+{
+ /* Name. */
+ struct debug_name *name;
+ /* Real type. */
+ debug_type type;
+};
+
+/* A field in a struct or union. */
+
+struct debug_field_s
+{
+ /* Name of the field. */
+ const char *name;
+ /* Type of the field. */
+ struct debug_type_s *type;
+ /* Visibility of the field. */
+ enum debug_visibility visibility;
+ /* Whether this is a static member. */
+ bfd_boolean static_member;
+ union
+ {
+ /* If static_member is false. */
+ struct
+ {
+ /* Bit position of the field in the struct. */
+ unsigned int bitpos;
+ /* Size of the field in bits. */
+ unsigned int bitsize;
+ } f;
+ /* If static_member is true. */
+ struct
+ {
+ const char *physname;
+ } s;
+ } u;
+};
+
+/* A base class for an object. */
+
+struct debug_baseclass_s
+{
+ /* Type of the base class. */
+ struct debug_type_s *type;
+ /* Bit position of the base class in the object. */
+ unsigned int bitpos;
+ /* Whether the base class is virtual. */
+ bfd_boolean is_virtual;
+ /* Visibility of the base class. */
+ enum debug_visibility visibility;
+};
+
+/* A method of an object. */
+
+struct debug_method_s
+{
+ /* The name of the method. */
+ const char *name;
+ /* A NULL terminated array of different types of variants. */
+ struct debug_method_variant_s **variants;
+};
+
+/* The variants of a method function of an object. These indicate
+ which method to run. */
+
+struct debug_method_variant_s
+{
+ /* The physical name of the function. */
+ const char *physname;
+ /* The type of the function. */
+ struct debug_type_s *type;
+ /* The visibility of the function. */
+ enum debug_visibility visibility;
+ /* Whether the function is const. */
+ bfd_boolean constp;
+ /* Whether the function is volatile. */
+ bfd_boolean volatilep;
+ /* The offset to the function in the virtual function table. */
+ bfd_vma voffset;
+ /* If voffset is VOFFSET_STATIC_METHOD, this is a static method. */
+#define VOFFSET_STATIC_METHOD ((bfd_vma) -1)
+ /* Context of a virtual method function. */
+ struct debug_type_s *context;
+};
+
+/* A variable. This is the information we keep for a variable object.
+ This has no name; a name is associated with a variable in a
+ debug_name structure. */
+
+struct debug_variable
+{
+ /* Kind of variable. */
+ enum debug_var_kind kind;
+ /* Type. */
+ debug_type type;
+ /* Value. The interpretation of the value depends upon kind. */
+ bfd_vma val;
+};
+
+/* A function. This has no name; a name is associated with a function
+ in a debug_name structure. */
+
+struct debug_function
+{
+ /* Return type. */
+ debug_type return_type;
+ /* Parameter information. */
+ struct debug_parameter *parameters;
+ /* Block information. The first structure on the list is the main
+ block of the function, and describes function local variables. */
+ struct debug_block *blocks;
+};
+
+/* A function parameter. */
+
+struct debug_parameter
+{
+ /* Next parameter. */
+ struct debug_parameter *next;
+ /* Name. */
+ const char *name;
+ /* Type. */
+ debug_type type;
+ /* Kind. */
+ enum debug_parm_kind kind;
+ /* Value (meaning depends upon kind). */
+ bfd_vma val;
+};
+
+/* A typed constant. */
+
+struct debug_typed_constant
+{
+ /* Type. */
+ debug_type type;
+ /* Value. FIXME: We may eventually need to support non-integral
+ values. */
+ bfd_vma val;
+};
+
+/* Information about a block within a function. */
+
+struct debug_block
+{
+ /* Next block with the same parent. */
+ struct debug_block *next;
+ /* Parent block. */
+ struct debug_block *parent;
+ /* List of child blocks. */
+ struct debug_block *children;
+ /* Start address of the block. */
+ bfd_vma start;
+ /* End address of the block. */
+ bfd_vma end;
+ /* Local variables. */
+ struct debug_namespace *locals;
+};
+
+/* Line number information we keep for a compilation unit. FIXME:
+ This structure is easy to create, but can be very space
+ inefficient. */
+
+struct debug_lineno
+{
+ /* More line number information for this block. */
+ struct debug_lineno *next;
+ /* Source file. */
+ struct debug_file *file;
+ /* Line numbers, terminated by a -1 or the end of the array. */
+#define DEBUG_LINENO_COUNT 10
+ unsigned long linenos[DEBUG_LINENO_COUNT];
+ /* Addresses for the line numbers. */
+ bfd_vma addrs[DEBUG_LINENO_COUNT];
+};
+
+/* A namespace. This is a mapping from names to objects. FIXME: This
+ should be implemented as a hash table. */
+
+struct debug_namespace
+{
+ /* List of items in this namespace. */
+ struct debug_name *list;
+ /* Pointer to where the next item in this namespace should go. */
+ struct debug_name **tail;
+};
+
+/* Kinds of objects that appear in a namespace. */
+
+enum debug_object_kind
+{
+ /* A type. */
+ DEBUG_OBJECT_TYPE,
+ /* A tagged type (really a different sort of namespace). */
+ DEBUG_OBJECT_TAG,
+ /* A variable. */
+ DEBUG_OBJECT_VARIABLE,
+ /* A function. */
+ DEBUG_OBJECT_FUNCTION,
+ /* An integer constant. */
+ DEBUG_OBJECT_INT_CONSTANT,
+ /* A floating point constant. */
+ DEBUG_OBJECT_FLOAT_CONSTANT,
+ /* A typed constant. */
+ DEBUG_OBJECT_TYPED_CONSTANT
+};
+
+/* Linkage of an object that appears in a namespace. */
+
+enum debug_object_linkage
+{
+ /* Local variable. */
+ DEBUG_LINKAGE_AUTOMATIC,
+ /* Static--either file static or function static, depending upon the
+ namespace is. */
+ DEBUG_LINKAGE_STATIC,
+ /* Global. */
+ DEBUG_LINKAGE_GLOBAL,
+ /* No linkage. */
+ DEBUG_LINKAGE_NONE
+};
+
+/* A name in a namespace. */
+
+struct debug_name
+{
+ /* Next name in this namespace. */
+ struct debug_name *next;
+ /* Name. */
+ const char *name;
+ /* Mark. This is used by debug_write. */
+ unsigned int mark;
+ /* Kind of object. */
+ enum debug_object_kind kind;
+ /* Linkage of object. */
+ enum debug_object_linkage linkage;
+ /* Tagged union with additional information about the object. */
+ union
+ {
+ /* DEBUG_OBJECT_TYPE. */
+ struct debug_type_s *type;
+ /* DEBUG_OBJECT_TAG. */
+ struct debug_type_s *tag;
+ /* DEBUG_OBJECT_VARIABLE. */
+ struct debug_variable *variable;
+ /* DEBUG_OBJECT_FUNCTION. */
+ struct debug_function *function;
+ /* DEBUG_OBJECT_INT_CONSTANT. */
+ bfd_vma int_constant;
+ /* DEBUG_OBJECT_FLOAT_CONSTANT. */
+ double float_constant;
+ /* DEBUG_OBJECT_TYPED_CONSTANT. */
+ struct debug_typed_constant *typed_constant;
+ } u;
+};
+
+/* During debug_write, a linked list of these structures is used to
+ keep track of ID numbers that have been assigned to classes. */
+
+struct debug_class_id
+{
+ /* Next ID number. */
+ struct debug_class_id *next;
+ /* The type with the ID. */
+ struct debug_type_s *type;
+ /* The tag; NULL if no tag. */
+ const char *tag;
+};
+
+/* During debug_type_samep, a linked list of these structures is kept
+ on the stack to avoid infinite recursion. */
+
+struct debug_type_compare_list
+{
+ /* Next type on list. */
+ struct debug_type_compare_list *next;
+ /* The types we are comparing. */
+ struct debug_type_s *t1;
+ struct debug_type_s *t2;
+};
+
+/* During debug_get_real_type, a linked list of these structures is
+ kept on the stack to avoid infinite recursion. */
+
+struct debug_type_real_list
+{
+ /* Next type on list. */
+ struct debug_type_real_list *next;
+ /* The type we are checking. */
+ struct debug_type_s *t;
+};
+
+/* Local functions. */
+
+static void debug_error (const char *);
+static struct debug_name *debug_add_to_namespace
+ (struct debug_handle *, struct debug_namespace **, const char *,
+ enum debug_object_kind, enum debug_object_linkage);
+static struct debug_name *debug_add_to_current_namespace
+ (struct debug_handle *, const char *, enum debug_object_kind,
+ enum debug_object_linkage);
+static struct debug_type_s *debug_make_type
+ (struct debug_handle *, enum debug_type_kind, unsigned int);
+static struct debug_type_s *debug_get_real_type
+ (void *, debug_type, struct debug_type_real_list *);
+static bfd_boolean debug_write_name
+ (struct debug_handle *, const struct debug_write_fns *, void *,
+ struct debug_name *);
+static bfd_boolean debug_write_type
+ (struct debug_handle *, const struct debug_write_fns *, void *,
+ struct debug_type_s *, struct debug_name *);
+static bfd_boolean debug_write_class_type
+ (struct debug_handle *, const struct debug_write_fns *, void *,
+ struct debug_type_s *, const char *);
+static bfd_boolean debug_write_function
+ (struct debug_handle *, const struct debug_write_fns *, void *,
+ const char *, enum debug_object_linkage, struct debug_function *);
+static bfd_boolean debug_write_block
+ (struct debug_handle *, const struct debug_write_fns *, void *,
+ struct debug_block *);
+static bfd_boolean debug_write_linenos
+ (struct debug_handle *, const struct debug_write_fns *, void *, bfd_vma);
+static bfd_boolean debug_set_class_id
+ (struct debug_handle *, const char *, struct debug_type_s *);
+static bfd_boolean debug_type_samep
+ (struct debug_handle *, struct debug_type_s *, struct debug_type_s *);
+static bfd_boolean debug_class_type_samep
+ (struct debug_handle *, struct debug_type_s *, struct debug_type_s *);
+
+/* Issue an error message. */
+
+static void
+debug_error (const char *message)
+{
+ fprintf (stderr, "%s\n", message);
+}
+
+/* Add an object to a namespace. */
+
+static struct debug_name *
+debug_add_to_namespace (struct debug_handle *info ATTRIBUTE_UNUSED,
+ struct debug_namespace **nsp, const char *name,
+ enum debug_object_kind kind,
+ enum debug_object_linkage linkage)
+{
+ struct debug_name *n;
+ struct debug_namespace *ns;
+
+ n = (struct debug_name *) xmalloc (sizeof *n);
+ memset (n, 0, sizeof *n);
+
+ n->name = name;
+ n->kind = kind;
+ n->linkage = linkage;
+
+ ns = *nsp;
+ if (ns == NULL)
+ {
+ ns = (struct debug_namespace *) xmalloc (sizeof *ns);
+ memset (ns, 0, sizeof *ns);
+
+ ns->tail = &ns->list;
+
+ *nsp = ns;
+ }
+
+ *ns->tail = n;
+ ns->tail = &n->next;
+
+ return n;
+}
+
+/* Add an object to the current namespace. */
+
+static struct debug_name *
+debug_add_to_current_namespace (struct debug_handle *info, const char *name,
+ enum debug_object_kind kind,
+ enum debug_object_linkage linkage)
+{
+ struct debug_namespace **nsp;
+
+ if (info->current_unit == NULL
+ || info->current_file == NULL)
+ {
+ debug_error (_("debug_add_to_current_namespace: no current file"));
+ return NULL;
+ }
+
+ if (info->current_block != NULL)
+ nsp = &info->current_block->locals;
+ else
+ nsp = &info->current_file->globals;
+
+ return debug_add_to_namespace (info, nsp, name, kind, linkage);
+}
+
+/* Return a handle for debugging information. */
+
+void *
+debug_init (void)
+{
+ struct debug_handle *ret;
+
+ ret = (struct debug_handle *) xmalloc (sizeof *ret);
+ memset (ret, 0, sizeof *ret);
+ return (void *) ret;
+}
+
+/* Set the source filename. This implicitly starts a new compilation
+ unit. */
+
+bfd_boolean
+debug_set_filename (void *handle, const char *name)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_file *nfile;
+ struct debug_unit *nunit;
+
+ if (name == NULL)
+ name = "";
+
+ nfile = (struct debug_file *) xmalloc (sizeof *nfile);
+ memset (nfile, 0, sizeof *nfile);
+
+ nfile->filename = name;
+
+ nunit = (struct debug_unit *) xmalloc (sizeof *nunit);
+ memset (nunit, 0, sizeof *nunit);
+
+ nunit->files = nfile;
+ info->current_file = nfile;
+
+ if (info->current_unit != NULL)
+ info->current_unit->next = nunit;
+ else
+ {
+ assert (info->units == NULL);
+ info->units = nunit;
+ }
+
+ info->current_unit = nunit;
+
+ info->current_function = NULL;
+ info->current_block = NULL;
+ info->current_lineno = NULL;
+
+ return TRUE;
+}
+
+/* Change source files to the given file name. This is used for
+ include files in a single compilation unit. */
+
+bfd_boolean
+debug_start_source (void *handle, const char *name)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_file *f, **pf;
+
+ if (name == NULL)
+ name = "";
+
+ if (info->current_unit == NULL)
+ {
+ debug_error (_("debug_start_source: no debug_set_filename call"));
+ return FALSE;
+ }
+
+ for (f = info->current_unit->files; f != NULL; f = f->next)
+ {
+ if (filename_cmp (f->filename, name) == 0)
+ {
+ info->current_file = f;
+ return TRUE;
+ }
+ }
+
+ f = (struct debug_file *) xmalloc (sizeof *f);
+ memset (f, 0, sizeof *f);
+
+ f->filename = name;
+
+ for (pf = &info->current_file->next;
+ *pf != NULL;
+ pf = &(*pf)->next)
+ ;
+ *pf = f;
+
+ info->current_file = f;
+
+ return TRUE;
+}
+
+/* Record a function definition. This implicitly starts a function
+ block. The debug_type argument is the type of the return value.
+ The boolean indicates whether the function is globally visible.
+ The bfd_vma is the address of the start of the function. Currently
+ the parameter types are specified by calls to
+ debug_record_parameter. FIXME: There is no way to specify nested
+ functions. */
+
+bfd_boolean
+debug_record_function (void *handle, const char *name,
+ debug_type return_type, bfd_boolean global,
+ bfd_vma addr)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_function *f;
+ struct debug_block *b;
+ struct debug_name *n;
+
+ if (name == NULL)
+ name = "";
+ if (return_type == NULL)
+ return FALSE;
+
+ if (info->current_unit == NULL)
+ {
+ debug_error (_("debug_record_function: no debug_set_filename call"));
+ return FALSE;
+ }
+
+ f = (struct debug_function *) xmalloc (sizeof *f);
+ memset (f, 0, sizeof *f);
+
+ f->return_type = return_type;
+
+ b = (struct debug_block *) xmalloc (sizeof *b);
+ memset (b, 0, sizeof *b);
+
+ b->start = addr;
+ b->end = (bfd_vma) -1;
+
+ f->blocks = b;
+
+ info->current_function = f;
+ info->current_block = b;
+
+ /* FIXME: If we could handle nested functions, this would be the
+ place: we would want to use a different namespace. */
+ n = debug_add_to_namespace (info,
+ &info->current_file->globals,
+ name,
+ DEBUG_OBJECT_FUNCTION,
+ (global
+ ? DEBUG_LINKAGE_GLOBAL
+ : DEBUG_LINKAGE_STATIC));
+ if (n == NULL)
+ return FALSE;
+
+ n->u.function = f;
+
+ return TRUE;
+}
+
+/* Record a parameter for the current function. */
+
+bfd_boolean
+debug_record_parameter (void *handle, const char *name, debug_type type,
+ enum debug_parm_kind kind, bfd_vma val)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_parameter *p, **pp;
+
+ if (name == NULL || type == NULL)
+ return FALSE;
+
+ if (info->current_unit == NULL
+ || info->current_function == NULL)
+ {
+ debug_error (_("debug_record_parameter: no current function"));
+ return FALSE;
+ }
+
+ p = (struct debug_parameter *) xmalloc (sizeof *p);
+ memset (p, 0, sizeof *p);
+
+ p->name = name;
+ p->type = type;
+ p->kind = kind;
+ p->val = val;
+
+ for (pp = &info->current_function->parameters;
+ *pp != NULL;
+ pp = &(*pp)->next)
+ ;
+ *pp = p;
+
+ return TRUE;
+}
+
+/* End a function. FIXME: This should handle function nesting. */
+
+bfd_boolean
+debug_end_function (void *handle, bfd_vma addr)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+
+ if (info->current_unit == NULL
+ || info->current_block == NULL
+ || info->current_function == NULL)
+ {
+ debug_error (_("debug_end_function: no current function"));
+ return FALSE;
+ }
+
+ if (info->current_block->parent != NULL)
+ {
+ debug_error (_("debug_end_function: some blocks were not closed"));
+ return FALSE;
+ }
+
+ info->current_block->end = addr;
+
+ info->current_function = NULL;
+ info->current_block = NULL;
+
+ return TRUE;
+}
+
+/* Start a block in a function. All local information will be
+ recorded in this block, until the matching call to debug_end_block.
+ debug_start_block and debug_end_block may be nested. The bfd_vma
+ argument is the address at which this block starts. */
+
+bfd_boolean
+debug_start_block (void *handle, bfd_vma addr)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_block *b, **pb;
+
+ /* We must always have a current block: debug_record_function sets
+ one up. */
+ if (info->current_unit == NULL
+ || info->current_block == NULL)
+ {
+ debug_error (_("debug_start_block: no current block"));
+ return FALSE;
+ }
+
+ b = (struct debug_block *) xmalloc (sizeof *b);
+ memset (b, 0, sizeof *b);
+
+ b->parent = info->current_block;
+ b->start = addr;
+ b->end = (bfd_vma) -1;
+
+ /* This new block is a child of the current block. */
+ for (pb = &info->current_block->children;
+ *pb != NULL;
+ pb = &(*pb)->next)
+ ;
+ *pb = b;
+
+ info->current_block = b;
+
+ return TRUE;
+}
+
+/* Finish a block in a function. This matches the call to
+ debug_start_block. The argument is the address at which this block
+ ends. */
+
+bfd_boolean
+debug_end_block (void *handle, bfd_vma addr)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_block *parent;
+
+ if (info->current_unit == NULL
+ || info->current_block == NULL)
+ {
+ debug_error (_("debug_end_block: no current block"));
+ return FALSE;
+ }
+
+ parent = info->current_block->parent;
+ if (parent == NULL)
+ {
+ debug_error (_("debug_end_block: attempt to close top level block"));
+ return FALSE;
+ }
+
+ info->current_block->end = addr;
+
+ info->current_block = parent;
+
+ return TRUE;
+}
+
+/* Associate a line number in the current source file and function
+ with a given address. */
+
+bfd_boolean
+debug_record_line (void *handle, unsigned long lineno, bfd_vma addr)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_lineno *l;
+ unsigned int i;
+
+ if (info->current_unit == NULL)
+ {
+ debug_error (_("debug_record_line: no current unit"));
+ return FALSE;
+ }
+
+ l = info->current_lineno;
+ if (l != NULL && l->file == info->current_file)
+ {
+ for (i = 0; i < DEBUG_LINENO_COUNT; i++)
+ {
+ if (l->linenos[i] == (unsigned long) -1)
+ {
+ l->linenos[i] = lineno;
+ l->addrs[i] = addr;
+ return TRUE;
+ }
+ }
+ }
+
+ /* If we get here, then either 1) there is no current_lineno
+ structure, which means this is the first line number in this
+ compilation unit, 2) the current_lineno structure is for a
+ different file, or 3) the current_lineno structure is full.
+ Regardless, we want to allocate a new debug_lineno structure, put
+ it in the right place, and make it the new current_lineno
+ structure. */
+
+ l = (struct debug_lineno *) xmalloc (sizeof *l);
+ memset (l, 0, sizeof *l);
+
+ l->file = info->current_file;
+ l->linenos[0] = lineno;
+ l->addrs[0] = addr;
+ for (i = 1; i < DEBUG_LINENO_COUNT; i++)
+ l->linenos[i] = (unsigned long) -1;
+
+ if (info->current_lineno != NULL)
+ info->current_lineno->next = l;
+ else
+ info->current_unit->linenos = l;
+
+ info->current_lineno = l;
+
+ return TRUE;
+}
+
+/* Start a named common block. This is a block of variables that may
+ move in memory. */
+
+bfd_boolean
+debug_start_common_block (void *handle ATTRIBUTE_UNUSED,
+ const char *name ATTRIBUTE_UNUSED)
+{
+ /* FIXME */
+ debug_error (_("debug_start_common_block: not implemented"));
+ return FALSE;
+}
+
+/* End a named common block. */
+
+bfd_boolean
+debug_end_common_block (void *handle ATTRIBUTE_UNUSED,
+ const char *name ATTRIBUTE_UNUSED)
+{
+ /* FIXME */
+ debug_error (_("debug_end_common_block: not implemented"));
+ return FALSE;
+}
+
+/* Record a named integer constant. */
+
+bfd_boolean
+debug_record_int_const (void *handle, const char *name, bfd_vma val)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_name *n;
+
+ if (name == NULL)
+ return FALSE;
+
+ n = debug_add_to_current_namespace (info, name, DEBUG_OBJECT_INT_CONSTANT,
+ DEBUG_LINKAGE_NONE);
+ if (n == NULL)
+ return FALSE;
+
+ n->u.int_constant = val;
+
+ return TRUE;
+}
+
+/* Record a named floating point constant. */
+
+bfd_boolean
+debug_record_float_const (void *handle, const char *name, double val)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_name *n;
+
+ if (name == NULL)
+ return FALSE;
+
+ n = debug_add_to_current_namespace (info, name, DEBUG_OBJECT_FLOAT_CONSTANT,
+ DEBUG_LINKAGE_NONE);
+ if (n == NULL)
+ return FALSE;
+
+ n->u.float_constant = val;
+
+ return TRUE;
+}
+
+/* Record a typed constant with an integral value. */
+
+bfd_boolean
+debug_record_typed_const (void *handle, const char *name, debug_type type,
+ bfd_vma val)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_name *n;
+ struct debug_typed_constant *tc;
+
+ if (name == NULL || type == NULL)
+ return FALSE;
+
+ n = debug_add_to_current_namespace (info, name, DEBUG_OBJECT_TYPED_CONSTANT,
+ DEBUG_LINKAGE_NONE);
+ if (n == NULL)
+ return FALSE;
+
+ tc = (struct debug_typed_constant *) xmalloc (sizeof *tc);
+ memset (tc, 0, sizeof *tc);
+
+ tc->type = type;
+ tc->val = val;
+
+ n->u.typed_constant = tc;
+
+ return TRUE;
+}
+
+/* Record a label. */
+
+bfd_boolean
+debug_record_label (void *handle ATTRIBUTE_UNUSED,
+ const char *name ATTRIBUTE_UNUSED,
+ debug_type type ATTRIBUTE_UNUSED,
+ bfd_vma addr ATTRIBUTE_UNUSED)
+{
+ /* FIXME. */
+ debug_error (_("debug_record_label: not implemented"));
+ return FALSE;
+}
+
+/* Record a variable. */
+
+bfd_boolean
+debug_record_variable (void *handle, const char *name, debug_type type,
+ enum debug_var_kind kind, bfd_vma val)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_namespace **nsp;
+ enum debug_object_linkage linkage;
+ struct debug_name *n;
+ struct debug_variable *v;
+
+ if (name == NULL || type == NULL)
+ return FALSE;
+
+ if (info->current_unit == NULL
+ || info->current_file == NULL)
+ {
+ debug_error (_("debug_record_variable: no current file"));
+ return FALSE;
+ }
+
+ if (kind == DEBUG_GLOBAL || kind == DEBUG_STATIC)
+ {
+ nsp = &info->current_file->globals;
+ if (kind == DEBUG_GLOBAL)
+ linkage = DEBUG_LINKAGE_GLOBAL;
+ else
+ linkage = DEBUG_LINKAGE_STATIC;
+ }
+ else
+ {
+ if (info->current_block == NULL)
+ nsp = &info->current_file->globals;
+ else
+ nsp = &info->current_block->locals;
+ linkage = DEBUG_LINKAGE_AUTOMATIC;
+ }
+
+ n = debug_add_to_namespace (info, nsp, name, DEBUG_OBJECT_VARIABLE, linkage);
+ if (n == NULL)
+ return FALSE;
+
+ v = (struct debug_variable *) xmalloc (sizeof *v);
+ memset (v, 0, sizeof *v);
+
+ v->kind = kind;
+ v->type = type;
+ v->val = val;
+
+ n->u.variable = v;
+
+ return TRUE;
+}
+
+/* Make a type with a given kind and size. */
+
+static struct debug_type_s *
+debug_make_type (struct debug_handle *info ATTRIBUTE_UNUSED,
+ enum debug_type_kind kind, unsigned int size)
+{
+ struct debug_type_s *t;
+
+ t = (struct debug_type_s *) xmalloc (sizeof *t);
+ memset (t, 0, sizeof *t);
+
+ t->kind = kind;
+ t->size = size;
+
+ return t;
+}
+
+/* Make an indirect type which may be used as a placeholder for a type
+ which is referenced before it is defined. */
+
+debug_type
+debug_make_indirect_type (void *handle, debug_type *slot, const char *tag)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+ struct debug_indirect_type *i;
+
+ t = debug_make_type (info, DEBUG_KIND_INDIRECT, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ i = (struct debug_indirect_type *) xmalloc (sizeof *i);
+ memset (i, 0, sizeof *i);
+
+ i->slot = slot;
+ i->tag = tag;
+
+ t->u.kindirect = i;
+
+ return t;
+}
+
+/* Make a void type. There is only one of these. */
+
+debug_type
+debug_make_void_type (void *handle)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+
+ return debug_make_type (info, DEBUG_KIND_VOID, 0);
+}
+
+/* Make an integer type of a given size. The boolean argument is true
+ if the integer is unsigned. */
+
+debug_type
+debug_make_int_type (void *handle, unsigned int size, bfd_boolean unsignedp)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+
+ t = debug_make_type (info, DEBUG_KIND_INT, size);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t->u.kint = unsignedp;
+
+ return t;
+}
+
+/* Make a floating point type of a given size. FIXME: On some
+ platforms, like an Alpha, you probably need to be able to specify
+ the format. */
+
+debug_type
+debug_make_float_type (void *handle, unsigned int size)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+
+ return debug_make_type (info, DEBUG_KIND_FLOAT, size);
+}
+
+/* Make a boolean type of a given size. */
+
+debug_type
+debug_make_bool_type (void *handle, unsigned int size)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+
+ return debug_make_type (info, DEBUG_KIND_BOOL, size);
+}
+
+/* Make a complex type of a given size. */
+
+debug_type
+debug_make_complex_type (void *handle, unsigned int size)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+
+ return debug_make_type (info, DEBUG_KIND_COMPLEX, size);
+}
+
+/* Make a structure type. The second argument is true for a struct,
+ false for a union. The third argument is the size of the struct.
+ The fourth argument is a NULL terminated array of fields. */
+
+debug_type
+debug_make_struct_type (void *handle, bfd_boolean structp, bfd_vma size,
+ debug_field *fields)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+ struct debug_class_type *c;
+
+ t = debug_make_type (info,
+ structp ? DEBUG_KIND_STRUCT : DEBUG_KIND_UNION,
+ size);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ c = (struct debug_class_type *) xmalloc (sizeof *c);
+ memset (c, 0, sizeof *c);
+
+ c->fields = fields;
+
+ t->u.kclass = c;
+
+ return t;
+}
+
+/* Make an object type. The first three arguments after the handle
+ are the same as for debug_make_struct_type. The next arguments are
+ a NULL terminated array of base classes, a NULL terminated array of
+ methods, the type of the object holding the virtual function table
+ if it is not this object, and a boolean which is true if this
+ object has its own virtual function table. */
+
+debug_type
+debug_make_object_type (void *handle, bfd_boolean structp, bfd_vma size,
+ debug_field *fields, debug_baseclass *baseclasses,
+ debug_method *methods, debug_type vptrbase,
+ bfd_boolean ownvptr)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+ struct debug_class_type *c;
+
+ t = debug_make_type (info,
+ structp ? DEBUG_KIND_CLASS : DEBUG_KIND_UNION_CLASS,
+ size);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ c = (struct debug_class_type *) xmalloc (sizeof *c);
+ memset (c, 0, sizeof *c);
+
+ c->fields = fields;
+ c->baseclasses = baseclasses;
+ c->methods = methods;
+ if (ownvptr)
+ c->vptrbase = t;
+ else
+ c->vptrbase = vptrbase;
+
+ t->u.kclass = c;
+
+ return t;
+}
+
+/* Make an enumeration type. The arguments are a null terminated
+ array of strings, and an array of corresponding values. */
+
+debug_type
+debug_make_enum_type (void *handle, const char **names,
+ bfd_signed_vma *values)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+ struct debug_enum_type *e;
+
+ t = debug_make_type (info, DEBUG_KIND_ENUM, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ e = (struct debug_enum_type *) xmalloc (sizeof *e);
+ memset (e, 0, sizeof *e);
+
+ e->names = names;
+ e->values = values;
+
+ t->u.kenum = e;
+
+ return t;
+}
+
+/* Make a pointer to a given type. */
+
+debug_type
+debug_make_pointer_type (void *handle, debug_type type)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+
+ if (type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ if (type->pointer != DEBUG_TYPE_NULL)
+ return type->pointer;
+
+ t = debug_make_type (info, DEBUG_KIND_POINTER, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t->u.kpointer = type;
+
+ type->pointer = t;
+
+ return t;
+}
+
+/* Make a function returning a given type. FIXME: We should be able
+ to record the parameter types. */
+
+debug_type
+debug_make_function_type (void *handle, debug_type type,
+ debug_type *arg_types, bfd_boolean varargs)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+ struct debug_function_type *f;
+
+ if (type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t = debug_make_type (info, DEBUG_KIND_FUNCTION, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ f = (struct debug_function_type *) xmalloc (sizeof *f);
+ memset (f, 0, sizeof *f);
+
+ f->return_type = type;
+ f->arg_types = arg_types;
+ f->varargs = varargs;
+
+ t->u.kfunction = f;
+
+ return t;
+}
+
+/* Make a reference to a given type. */
+
+debug_type
+debug_make_reference_type (void *handle, debug_type type)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+
+ if (type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t = debug_make_type (info, DEBUG_KIND_REFERENCE, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t->u.kreference = type;
+
+ return t;
+}
+
+/* Make a range of a given type from a lower to an upper bound. */
+
+debug_type
+debug_make_range_type (void *handle, debug_type type, bfd_signed_vma lower,
+ bfd_signed_vma upper)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+ struct debug_range_type *r;
+
+ if (type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t = debug_make_type (info, DEBUG_KIND_RANGE, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ r = (struct debug_range_type *) xmalloc (sizeof *r);
+ memset (r, 0, sizeof *r);
+
+ r->type = type;
+ r->lower = lower;
+ r->upper = upper;
+
+ t->u.krange = r;
+
+ return t;
+}
+
+/* Make an array type. The second argument is the type of an element
+ of the array. The third argument is the type of a range of the
+ array. The fourth and fifth argument are the lower and upper
+ bounds, respectively. The sixth argument is true if this array is
+ actually a string, as in C. */
+
+debug_type
+debug_make_array_type (void *handle, debug_type element_type,
+ debug_type range_type, bfd_signed_vma lower,
+ bfd_signed_vma upper, bfd_boolean stringp)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+ struct debug_array_type *a;
+
+ if (element_type == NULL || range_type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t = debug_make_type (info, DEBUG_KIND_ARRAY, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ a = (struct debug_array_type *) xmalloc (sizeof *a);
+ memset (a, 0, sizeof *a);
+
+ a->element_type = element_type;
+ a->range_type = range_type;
+ a->lower = lower;
+ a->upper = upper;
+ a->stringp = stringp;
+
+ t->u.karray = a;
+
+ return t;
+}
+
+/* Make a set of a given type. For example, a Pascal set type. The
+ boolean argument is true if this set is actually a bitstring, as in
+ CHILL. */
+
+debug_type
+debug_make_set_type (void *handle, debug_type type, bfd_boolean bitstringp)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+ struct debug_set_type *s;
+
+ if (type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t = debug_make_type (info, DEBUG_KIND_SET, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ s = (struct debug_set_type *) xmalloc (sizeof *s);
+ memset (s, 0, sizeof *s);
+
+ s->type = type;
+ s->bitstringp = bitstringp;
+
+ t->u.kset = s;
+
+ return t;
+}
+
+/* Make a type for a pointer which is relative to an object. The
+ second argument is the type of the object to which the pointer is
+ relative. The third argument is the type that the pointer points
+ to. */
+
+debug_type
+debug_make_offset_type (void *handle, debug_type base_type,
+ debug_type target_type)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+ struct debug_offset_type *o;
+
+ if (base_type == NULL || target_type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t = debug_make_type (info, DEBUG_KIND_OFFSET, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ o = (struct debug_offset_type *) xmalloc (sizeof *o);
+ memset (o, 0, sizeof *o);
+
+ o->base_type = base_type;
+ o->target_type = target_type;
+
+ t->u.koffset = o;
+
+ return t;
+}
+
+/* Make a type for a method function. The second argument is the
+ return type, the third argument is the domain, and the fourth
+ argument is a NULL terminated array of argument types. */
+
+debug_type
+debug_make_method_type (void *handle, debug_type return_type,
+ debug_type domain_type, debug_type *arg_types,
+ bfd_boolean varargs)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+ struct debug_method_type *m;
+
+ if (return_type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t = debug_make_type (info, DEBUG_KIND_METHOD, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ m = (struct debug_method_type *) xmalloc (sizeof *m);
+ memset (m, 0, sizeof *m);
+
+ m->return_type = return_type;
+ m->domain_type = domain_type;
+ m->arg_types = arg_types;
+ m->varargs = varargs;
+
+ t->u.kmethod = m;
+
+ return t;
+}
+
+/* Make a const qualified version of a given type. */
+
+debug_type
+debug_make_const_type (void *handle, debug_type type)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+
+ if (type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t = debug_make_type (info, DEBUG_KIND_CONST, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t->u.kconst = type;
+
+ return t;
+}
+
+/* Make a volatile qualified version of a given type. */
+
+debug_type
+debug_make_volatile_type (void *handle, debug_type type)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+
+ if (type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t = debug_make_type (info, DEBUG_KIND_VOLATILE, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ t->u.kvolatile = type;
+
+ return t;
+}
+
+/* Make an undefined tagged type. For example, a struct which has
+ been mentioned, but not defined. */
+
+debug_type
+debug_make_undefined_tagged_type (void *handle, const char *name,
+ enum debug_type_kind kind)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+
+ if (name == NULL)
+ return DEBUG_TYPE_NULL;
+
+ switch (kind)
+ {
+ case DEBUG_KIND_STRUCT:
+ case DEBUG_KIND_UNION:
+ case DEBUG_KIND_CLASS:
+ case DEBUG_KIND_UNION_CLASS:
+ case DEBUG_KIND_ENUM:
+ break;
+
+ default:
+ debug_error (_("debug_make_undefined_type: unsupported kind"));
+ return DEBUG_TYPE_NULL;
+ }
+
+ t = debug_make_type (info, kind, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ return debug_tag_type (handle, name, t);
+}
+
+/* Make a base class for an object. The second argument is the base
+ class type. The third argument is the bit position of this base
+ class in the object (always 0 unless doing multiple inheritance).
+ The fourth argument is whether this is a virtual class. The fifth
+ argument is the visibility of the base class. */
+
+debug_baseclass
+debug_make_baseclass (void *handle ATTRIBUTE_UNUSED, debug_type type,
+ bfd_vma bitpos, bfd_boolean is_virtual,
+ enum debug_visibility visibility)
+{
+ struct debug_baseclass_s *b;
+
+ b = (struct debug_baseclass_s *) xmalloc (sizeof *b);
+ memset (b, 0, sizeof *b);
+
+ b->type = type;
+ b->bitpos = bitpos;
+ b->is_virtual = is_virtual;
+ b->visibility = visibility;
+
+ return b;
+}
+
+/* Make a field for a struct. The second argument is the name. The
+ third argument is the type of the field. The fourth argument is
+ the bit position of the field. The fifth argument is the size of
+ the field (it may be zero). The sixth argument is the visibility
+ of the field. */
+
+debug_field
+debug_make_field (void *handle ATTRIBUTE_UNUSED, const char *name,
+ debug_type type, bfd_vma bitpos, bfd_vma bitsize,
+ enum debug_visibility visibility)
+{
+ struct debug_field_s *f;
+
+ f = (struct debug_field_s *) xmalloc (sizeof *f);
+ memset (f, 0, sizeof *f);
+
+ f->name = name;
+ f->type = type;
+ f->static_member = FALSE;
+ f->u.f.bitpos = bitpos;
+ f->u.f.bitsize = bitsize;
+ f->visibility = visibility;
+
+ return f;
+}
+
+/* Make a static member of an object. The second argument is the
+ name. The third argument is the type of the member. The fourth
+ argument is the physical name of the member (i.e., the name as a
+ global variable). The fifth argument is the visibility of the
+ member. */
+
+debug_field
+debug_make_static_member (void *handle ATTRIBUTE_UNUSED, const char *name,
+ debug_type type, const char *physname,
+ enum debug_visibility visibility)
+{
+ struct debug_field_s *f;
+
+ f = (struct debug_field_s *) xmalloc (sizeof *f);
+ memset (f, 0, sizeof *f);
+
+ f->name = name;
+ f->type = type;
+ f->static_member = TRUE;
+ f->u.s.physname = physname;
+ f->visibility = visibility;
+
+ return f;
+}
+
+/* Make a method. The second argument is the name, and the third
+ argument is a NULL terminated array of method variants. */
+
+debug_method
+debug_make_method (void *handle ATTRIBUTE_UNUSED, const char *name,
+ debug_method_variant *variants)
+{
+ struct debug_method_s *m;
+
+ m = (struct debug_method_s *) xmalloc (sizeof *m);
+ memset (m, 0, sizeof *m);
+
+ m->name = name;
+ m->variants = variants;
+
+ return m;
+}
+
+/* Make a method argument. The second argument is the real name of
+ the function. The third argument is the type of the function. The
+ fourth argument is the visibility. The fifth argument is whether
+ this is a const function. The sixth argument is whether this is a
+ volatile function. The seventh argument is the offset in the
+ virtual function table, if any. The eighth argument is the virtual
+ function context. FIXME: Are the const and volatile arguments
+ necessary? Could we just use debug_make_const_type? */
+
+debug_method_variant
+debug_make_method_variant (void *handle ATTRIBUTE_UNUSED,
+ const char *physname, debug_type type,
+ enum debug_visibility visibility,
+ bfd_boolean constp, bfd_boolean volatilep,
+ bfd_vma voffset, debug_type context)
+{
+ struct debug_method_variant_s *m;
+
+ m = (struct debug_method_variant_s *) xmalloc (sizeof *m);
+ memset (m, 0, sizeof *m);
+
+ m->physname = physname;
+ m->type = type;
+ m->visibility = visibility;
+ m->constp = constp;
+ m->volatilep = volatilep;
+ m->voffset = voffset;
+ m->context = context;
+
+ return m;
+}
+
+/* Make a static method argument. The arguments are the same as for
+ debug_make_method_variant, except that the last two are omitted
+ since a static method can not also be virtual. */
+
+debug_method_variant
+debug_make_static_method_variant (void *handle ATTRIBUTE_UNUSED,
+ const char *physname, debug_type type,
+ enum debug_visibility visibility,
+ bfd_boolean constp, bfd_boolean volatilep)
+{
+ struct debug_method_variant_s *m;
+
+ m = (struct debug_method_variant_s *) xmalloc (sizeof *m);
+ memset (m, 0, sizeof *m);
+
+ m->physname = physname;
+ m->type = type;
+ m->visibility = visibility;
+ m->constp = constp;
+ m->volatilep = volatilep;
+ m->voffset = VOFFSET_STATIC_METHOD;
+
+ return m;
+}
+
+/* Name a type. */
+
+debug_type
+debug_name_type (void *handle, const char *name, debug_type type)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+ struct debug_named_type *n;
+ struct debug_name *nm;
+
+ if (name == NULL || type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ if (info->current_unit == NULL
+ || info->current_file == NULL)
+ {
+ debug_error (_("debug_name_type: no current file"));
+ return DEBUG_TYPE_NULL;
+ }
+
+ t = debug_make_type (info, DEBUG_KIND_NAMED, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ n = (struct debug_named_type *) xmalloc (sizeof *n);
+ memset (n, 0, sizeof *n);
+
+ n->type = type;
+
+ t->u.knamed = n;
+
+ /* We always add the name to the global namespace. This is probably
+ wrong in some cases, but it seems to be right for stabs. FIXME. */
+
+ nm = debug_add_to_namespace (info, &info->current_file->globals, name,
+ DEBUG_OBJECT_TYPE, DEBUG_LINKAGE_NONE);
+ if (nm == NULL)
+ return DEBUG_TYPE_NULL;
+
+ nm->u.type = t;
+
+ n->name = nm;
+
+ return t;
+}
+
+/* Tag a type. */
+
+debug_type
+debug_tag_type (void *handle, const char *name, debug_type type)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_type_s *t;
+ struct debug_named_type *n;
+ struct debug_name *nm;
+
+ if (name == NULL || type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ if (info->current_file == NULL)
+ {
+ debug_error (_("debug_tag_type: no current file"));
+ return DEBUG_TYPE_NULL;
+ }
+
+ if (type->kind == DEBUG_KIND_TAGGED)
+ {
+ if (strcmp (type->u.knamed->name->name, name) == 0)
+ return type;
+ debug_error (_("debug_tag_type: extra tag attempted"));
+ return DEBUG_TYPE_NULL;
+ }
+
+ t = debug_make_type (info, DEBUG_KIND_TAGGED, 0);
+ if (t == NULL)
+ return DEBUG_TYPE_NULL;
+
+ n = (struct debug_named_type *) xmalloc (sizeof *n);
+ memset (n, 0, sizeof *n);
+
+ n->type = type;
+
+ t->u.knamed = n;
+
+ /* We keep a global namespace of tags for each compilation unit. I
+ don't know if that is the right thing to do. */
+
+ nm = debug_add_to_namespace (info, &info->current_file->globals, name,
+ DEBUG_OBJECT_TAG, DEBUG_LINKAGE_NONE);
+ if (nm == NULL)
+ return DEBUG_TYPE_NULL;
+
+ nm->u.tag = t;
+
+ n->name = nm;
+
+ return t;
+}
+
+/* Record the size of a given type. */
+
+bfd_boolean
+debug_record_type_size (void *handle ATTRIBUTE_UNUSED, debug_type type,
+ unsigned int size)
+{
+ if (type->size != 0 && type->size != size)
+ fprintf (stderr, _("Warning: changing type size from %d to %d\n"),
+ type->size, size);
+
+ type->size = size;
+
+ return TRUE;
+}
+
+/* Find a named type. */
+
+debug_type
+debug_find_named_type (void *handle, const char *name)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_block *b;
+ struct debug_file *f;
+
+ /* We only search the current compilation unit. I don't know if
+ this is right or not. */
+
+ if (info->current_unit == NULL)
+ {
+ debug_error (_("debug_find_named_type: no current compilation unit"));
+ return DEBUG_TYPE_NULL;
+ }
+
+ for (b = info->current_block; b != NULL; b = b->parent)
+ {
+ if (b->locals != NULL)
+ {
+ struct debug_name *n;
+
+ for (n = b->locals->list; n != NULL; n = n->next)
+ {
+ if (n->kind == DEBUG_OBJECT_TYPE
+ && n->name[0] == name[0]
+ && strcmp (n->name, name) == 0)
+ return n->u.type;
+ }
+ }
+ }
+
+ for (f = info->current_unit->files; f != NULL; f = f->next)
+ {
+ if (f->globals != NULL)
+ {
+ struct debug_name *n;
+
+ for (n = f->globals->list; n != NULL; n = n->next)
+ {
+ if (n->kind == DEBUG_OBJECT_TYPE
+ && n->name[0] == name[0]
+ && strcmp (n->name, name) == 0)
+ return n->u.type;
+ }
+ }
+ }
+
+ return DEBUG_TYPE_NULL;
+}
+
+/* Find a tagged type. */
+
+debug_type
+debug_find_tagged_type (void *handle, const char *name,
+ enum debug_type_kind kind)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_unit *u;
+
+ /* We search the globals of all the compilation units. I don't know
+ if this is correct or not. It would be easy to change. */
+
+ for (u = info->units; u != NULL; u = u->next)
+ {
+ struct debug_file *f;
+
+ for (f = u->files; f != NULL; f = f->next)
+ {
+ struct debug_name *n;
+
+ if (f->globals != NULL)
+ {
+ for (n = f->globals->list; n != NULL; n = n->next)
+ {
+ if (n->kind == DEBUG_OBJECT_TAG
+ && (kind == DEBUG_KIND_ILLEGAL
+ || n->u.tag->kind == kind)
+ && n->name[0] == name[0]
+ && strcmp (n->name, name) == 0)
+ return n->u.tag;
+ }
+ }
+ }
+ }
+
+ return DEBUG_TYPE_NULL;
+}
+
+/* Get a base type. We build a linked list on the stack to avoid
+ crashing if the type is defined circularly. */
+
+static struct debug_type_s *
+debug_get_real_type (void *handle, debug_type type,
+ struct debug_type_real_list *list)
+{
+ struct debug_type_real_list *l;
+ struct debug_type_real_list rl;
+
+ switch (type->kind)
+ {
+ default:
+ return type;
+
+ case DEBUG_KIND_INDIRECT:
+ case DEBUG_KIND_NAMED:
+ case DEBUG_KIND_TAGGED:
+ break;
+ }
+
+ for (l = list; l != NULL; l = l->next)
+ {
+ if (l->t == type || l == l->next)
+ {
+ fprintf (stderr,
+ _("debug_get_real_type: circular debug information for %s\n"),
+ debug_get_type_name (handle, type));
+ return NULL;
+ }
+ }
+
+ rl.next = list;
+ rl.t = type;
+
+ switch (type->kind)
+ {
+ /* The default case is just here to avoid warnings. */
+ default:
+ case DEBUG_KIND_INDIRECT:
+ if (*type->u.kindirect->slot != NULL)
+ return debug_get_real_type (handle, *type->u.kindirect->slot, &rl);
+ return type;
+ case DEBUG_KIND_NAMED:
+ case DEBUG_KIND_TAGGED:
+ return debug_get_real_type (handle, type->u.knamed->type, &rl);
+ }
+ /*NOTREACHED*/
+}
+
+/* Get the kind of a type. */
+
+enum debug_type_kind
+debug_get_type_kind (void *handle, debug_type type)
+{
+ if (type == NULL)
+ return DEBUG_KIND_ILLEGAL;
+ type = debug_get_real_type (handle, type, NULL);
+ if (type == NULL)
+ return DEBUG_KIND_ILLEGAL;
+ return type->kind;
+}
+
+/* Get the name of a type. */
+
+const char *
+debug_get_type_name (void *handle, debug_type type)
+{
+ if (type->kind == DEBUG_KIND_INDIRECT)
+ {
+ if (*type->u.kindirect->slot != NULL)
+ return debug_get_type_name (handle, *type->u.kindirect->slot);
+ return type->u.kindirect->tag;
+ }
+ if (type->kind == DEBUG_KIND_NAMED
+ || type->kind == DEBUG_KIND_TAGGED)
+ return type->u.knamed->name->name;
+ return NULL;
+}
+
+/* Get the size of a type. */
+
+bfd_vma
+debug_get_type_size (void *handle, debug_type type)
+{
+ if (type == NULL)
+ return 0;
+
+ /* We don't call debug_get_real_type, because somebody might have
+ called debug_record_type_size on a named or indirect type. */
+
+ if (type->size != 0)
+ return type->size;
+
+ switch (type->kind)
+ {
+ default:
+ return 0;
+ case DEBUG_KIND_INDIRECT:
+ if (*type->u.kindirect->slot != NULL)
+ return debug_get_type_size (handle, *type->u.kindirect->slot);
+ return 0;
+ case DEBUG_KIND_NAMED:
+ case DEBUG_KIND_TAGGED:
+ return debug_get_type_size (handle, type->u.knamed->type);
+ }
+ /*NOTREACHED*/
+}
+
+/* Get the return type of a function or method type. */
+
+debug_type
+debug_get_return_type (void *handle, debug_type type)
+{
+ if (type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ type = debug_get_real_type (handle, type, NULL);
+ if (type == NULL)
+ return DEBUG_TYPE_NULL;
+
+ switch (type->kind)
+ {
+ default:
+ return DEBUG_TYPE_NULL;
+ case DEBUG_KIND_FUNCTION:
+ return type->u.kfunction->return_type;
+ case DEBUG_KIND_METHOD:
+ return type->u.kmethod->return_type;
+ }
+ /*NOTREACHED*/
+}
+
+/* Get the parameter types of a function or method type (except that
+ we don't currently store the parameter types of a function). */
+
+const debug_type *
+debug_get_parameter_types (void *handle, debug_type type,
+ bfd_boolean *pvarargs)
+{
+ if (type == NULL)
+ return NULL;
+
+ type = debug_get_real_type (handle, type, NULL);
+ if (type == NULL)
+ return NULL;
+
+ switch (type->kind)
+ {
+ default:
+ return NULL;
+ case DEBUG_KIND_FUNCTION:
+ *pvarargs = type->u.kfunction->varargs;
+ return type->u.kfunction->arg_types;
+ case DEBUG_KIND_METHOD:
+ *pvarargs = type->u.kmethod->varargs;
+ return type->u.kmethod->arg_types;
+ }
+ /*NOTREACHED*/
+}
+
+/* Get the target type of a type. */
+
+debug_type
+debug_get_target_type (void *handle, debug_type type)
+{
+ if (type == NULL)
+ return NULL;
+
+ type = debug_get_real_type (handle, type, NULL);
+ if (type == NULL)
+ return NULL;
+
+ switch (type->kind)
+ {
+ default:
+ return NULL;
+ case DEBUG_KIND_POINTER:
+ return type->u.kpointer;
+ case DEBUG_KIND_REFERENCE:
+ return type->u.kreference;
+ case DEBUG_KIND_CONST:
+ return type->u.kconst;
+ case DEBUG_KIND_VOLATILE:
+ return type->u.kvolatile;
+ }
+ /*NOTREACHED*/
+}
+
+/* Get the NULL terminated array of fields for a struct, union, or
+ class. */
+
+const debug_field *
+debug_get_fields (void *handle, debug_type type)
+{
+ if (type == NULL)
+ return NULL;
+
+ type = debug_get_real_type (handle, type, NULL);
+ if (type == NULL)
+ return NULL;
+
+ switch (type->kind)
+ {
+ default:
+ return NULL;
+ case DEBUG_KIND_STRUCT:
+ case DEBUG_KIND_UNION:
+ case DEBUG_KIND_CLASS:
+ case DEBUG_KIND_UNION_CLASS:
+ return type->u.kclass->fields;
+ }
+ /*NOTREACHED*/
+}
+
+/* Get the type of a field. */
+
+debug_type
+debug_get_field_type (void *handle ATTRIBUTE_UNUSED, debug_field field)
+{
+ if (field == NULL)
+ return NULL;
+ return field->type;
+}
+
+/* Get the name of a field. */
+
+const char *
+debug_get_field_name (void *handle ATTRIBUTE_UNUSED, debug_field field)
+{
+ if (field == NULL)
+ return NULL;
+ return field->name;
+}
+
+/* Get the bit position of a field. */
+
+bfd_vma
+debug_get_field_bitpos (void *handle ATTRIBUTE_UNUSED, debug_field field)
+{
+ if (field == NULL || field->static_member)
+ return (bfd_vma) -1;
+ return field->u.f.bitpos;
+}
+
+/* Get the bit size of a field. */
+
+bfd_vma
+debug_get_field_bitsize (void *handle ATTRIBUTE_UNUSED, debug_field field)
+{
+ if (field == NULL || field->static_member)
+ return (bfd_vma) -1;
+ return field->u.f.bitsize;
+}
+
+/* Get the visibility of a field. */
+
+enum debug_visibility
+debug_get_field_visibility (void *handle ATTRIBUTE_UNUSED, debug_field field)
+{
+ if (field == NULL)
+ return DEBUG_VISIBILITY_IGNORE;
+ return field->visibility;
+}
+
+/* Get the physical name of a field. */
+
+const char *
+debug_get_field_physname (void *handle ATTRIBUTE_UNUSED, debug_field field)
+{
+ if (field == NULL || ! field->static_member)
+ return NULL;
+ return field->u.s.physname;
+}
+
+/* Write out the debugging information. This is given a handle to
+ debugging information, and a set of function pointers to call. */
+
+bfd_boolean
+debug_write (void *handle, const struct debug_write_fns *fns, void *fhandle)
+{
+ struct debug_handle *info = (struct debug_handle *) handle;
+ struct debug_unit *u;
+
+ /* We use a mark to tell whether we have already written out a
+ particular name. We use an integer, so that we don't have to
+ clear the mark fields if we happen to write out the same
+ information more than once. */
+ ++info->mark;
+
+ /* The base_id field holds an ID value which will never be used, so
+ that we can tell whether we have assigned an ID during this call
+ to debug_write. */
+ info->base_id = info->class_id;
+
+ /* We keep a linked list of classes for which was have assigned ID's
+ during this call to debug_write. */
+ info->id_list = NULL;
+
+ for (u = info->units; u != NULL; u = u->next)
+ {
+ struct debug_file *f;
+ bfd_boolean first_file;
+
+ info->current_write_lineno = u->linenos;
+ info->current_write_lineno_index = 0;
+
+ if (! (*fns->start_compilation_unit) (fhandle, u->files->filename))
+ return FALSE;
+
+ first_file = TRUE;
+ for (f = u->files; f != NULL; f = f->next)
+ {
+ struct debug_name *n;
+
+ if (first_file)
+ first_file = FALSE;
+ else if (! (*fns->start_source) (fhandle, f->filename))
+ return FALSE;
+
+ if (f->globals != NULL)
+ for (n = f->globals->list; n != NULL; n = n->next)
+ if (! debug_write_name (info, fns, fhandle, n))
+ return FALSE;
+ }
+
+ /* Output any line number information which hasn't already been
+ handled. */
+ if (! debug_write_linenos (info, fns, fhandle, (bfd_vma) -1))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Write out an element in a namespace. */
+
+static bfd_boolean
+debug_write_name (struct debug_handle *info,
+ const struct debug_write_fns *fns, void *fhandle,
+ struct debug_name *n)
+{
+ switch (n->kind)
+ {
+ case DEBUG_OBJECT_TYPE:
+ if (! debug_write_type (info, fns, fhandle, n->u.type, n)
+ || ! (*fns->typdef) (fhandle, n->name))
+ return FALSE;
+ return TRUE;
+ case DEBUG_OBJECT_TAG:
+ if (! debug_write_type (info, fns, fhandle, n->u.tag, n))
+ return FALSE;
+ return (*fns->tag) (fhandle, n->name);
+ case DEBUG_OBJECT_VARIABLE:
+ if (! debug_write_type (info, fns, fhandle, n->u.variable->type,
+ (struct debug_name *) NULL))
+ return FALSE;
+ return (*fns->variable) (fhandle, n->name, n->u.variable->kind,
+ n->u.variable->val);
+ case DEBUG_OBJECT_FUNCTION:
+ return debug_write_function (info, fns, fhandle, n->name,
+ n->linkage, n->u.function);
+ case DEBUG_OBJECT_INT_CONSTANT:
+ return (*fns->int_constant) (fhandle, n->name, n->u.int_constant);
+ case DEBUG_OBJECT_FLOAT_CONSTANT:
+ return (*fns->float_constant) (fhandle, n->name, n->u.float_constant);
+ case DEBUG_OBJECT_TYPED_CONSTANT:
+ if (! debug_write_type (info, fns, fhandle, n->u.typed_constant->type,
+ (struct debug_name *) NULL))
+ return FALSE;
+ return (*fns->typed_constant) (fhandle, n->name,
+ n->u.typed_constant->val);
+ default:
+ abort ();
+ return FALSE;
+ }
+ /*NOTREACHED*/
+}
+
+/* Write out a type. If the type is DEBUG_KIND_NAMED or
+ DEBUG_KIND_TAGGED, then the name argument is the name for which we
+ are about to call typedef or tag. If the type is anything else,
+ then the name argument is a tag from a DEBUG_KIND_TAGGED type which
+ points to this one. */
+
+static bfd_boolean
+debug_write_type (struct debug_handle *info,
+ const struct debug_write_fns *fns, void *fhandle,
+ struct debug_type_s *type, struct debug_name *name)
+{
+ unsigned int i;
+ int is;
+ const char *tag = NULL;
+
+ /* If we have a name for this type, just output it. We only output
+ typedef names after they have been defined. We output type tags
+ whenever we are not actually defining them. */
+ if ((type->kind == DEBUG_KIND_NAMED
+ || type->kind == DEBUG_KIND_TAGGED)
+ && (type->u.knamed->name->mark == info->mark
+ || (type->kind == DEBUG_KIND_TAGGED
+ && type->u.knamed->name != name)))
+ {
+ if (type->kind == DEBUG_KIND_NAMED)
+ return (*fns->typedef_type) (fhandle, type->u.knamed->name->name);
+ else
+ {
+ struct debug_type_s *real;
+ unsigned int id;
+
+ real = debug_get_real_type ((void *) info, type, NULL);
+ if (real == NULL)
+ return (*fns->empty_type) (fhandle);
+ id = 0;
+ if ((real->kind == DEBUG_KIND_STRUCT
+ || real->kind == DEBUG_KIND_UNION
+ || real->kind == DEBUG_KIND_CLASS
+ || real->kind == DEBUG_KIND_UNION_CLASS)
+ && real->u.kclass != NULL)
+ {
+ if (real->u.kclass->id <= info->base_id)
+ {
+ if (! debug_set_class_id (info,
+ type->u.knamed->name->name,
+ real))
+ return FALSE;
+ }
+ id = real->u.kclass->id;
+ }
+
+ return (*fns->tag_type) (fhandle, type->u.knamed->name->name, id,
+ real->kind);
+ }
+ }
+
+ /* Mark the name after we have already looked for a known name, so
+ that we don't just define a type in terms of itself. We need to
+ mark the name here so that a struct containing a pointer to
+ itself will work. */
+ if (name != NULL)
+ name->mark = info->mark;
+
+ if (name != NULL
+ && type->kind != DEBUG_KIND_NAMED
+ && type->kind != DEBUG_KIND_TAGGED)
+ {
+ assert (name->kind == DEBUG_OBJECT_TAG);
+ tag = name->name;
+ }
+
+ switch (type->kind)
+ {
+ case DEBUG_KIND_ILLEGAL:
+ debug_error (_("debug_write_type: illegal type encountered"));
+ return FALSE;
+ case DEBUG_KIND_INDIRECT:
+ if (*type->u.kindirect->slot == DEBUG_TYPE_NULL)
+ return (*fns->empty_type) (fhandle);
+ return debug_write_type (info, fns, fhandle, *type->u.kindirect->slot,
+ name);
+ case DEBUG_KIND_VOID:
+ return (*fns->void_type) (fhandle);
+ case DEBUG_KIND_INT:
+ return (*fns->int_type) (fhandle, type->size, type->u.kint);
+ case DEBUG_KIND_FLOAT:
+ return (*fns->float_type) (fhandle, type->size);
+ case DEBUG_KIND_COMPLEX:
+ return (*fns->complex_type) (fhandle, type->size);
+ case DEBUG_KIND_BOOL:
+ return (*fns->bool_type) (fhandle, type->size);
+ case DEBUG_KIND_STRUCT:
+ case DEBUG_KIND_UNION:
+ if (type->u.kclass != NULL)
+ {
+ if (type->u.kclass->id <= info->base_id)
+ {
+ if (! debug_set_class_id (info, tag, type))
+ return FALSE;
+ }
+
+ if (info->mark == type->u.kclass->mark)
+ {
+ /* We are currently outputting this struct, or we have
+ already output it. I don't know if this can happen,
+ but it can happen for a class. */
+ assert (type->u.kclass->id > info->base_id);
+ return (*fns->tag_type) (fhandle, tag, type->u.kclass->id,
+ type->kind);
+ }
+ type->u.kclass->mark = info->mark;
+ }
+
+ if (! (*fns->start_struct_type) (fhandle, tag,
+ (type->u.kclass != NULL
+ ? type->u.kclass->id
+ : 0),
+ type->kind == DEBUG_KIND_STRUCT,
+ type->size))
+ return FALSE;
+ if (type->u.kclass != NULL
+ && type->u.kclass->fields != NULL)
+ {
+ for (i = 0; type->u.kclass->fields[i] != NULL; i++)
+ {
+ struct debug_field_s *f;
+
+ f = type->u.kclass->fields[i];
+ if (! debug_write_type (info, fns, fhandle, f->type,
+ (struct debug_name *) NULL)
+ || ! (*fns->struct_field) (fhandle, f->name, f->u.f.bitpos,
+ f->u.f.bitsize, f->visibility))
+ return FALSE;
+ }
+ }
+ return (*fns->end_struct_type) (fhandle);
+ case DEBUG_KIND_CLASS:
+ case DEBUG_KIND_UNION_CLASS:
+ return debug_write_class_type (info, fns, fhandle, type, tag);
+ case DEBUG_KIND_ENUM:
+ if (type->u.kenum == NULL)
+ return (*fns->enum_type) (fhandle, tag, (const char **) NULL,
+ (bfd_signed_vma *) NULL);
+ return (*fns->enum_type) (fhandle, tag, type->u.kenum->names,
+ type->u.kenum->values);
+ case DEBUG_KIND_POINTER:
+ if (! debug_write_type (info, fns, fhandle, type->u.kpointer,
+ (struct debug_name *) NULL))
+ return FALSE;
+ return (*fns->pointer_type) (fhandle);
+ case DEBUG_KIND_FUNCTION:
+ if (! debug_write_type (info, fns, fhandle,
+ type->u.kfunction->return_type,
+ (struct debug_name *) NULL))
+ return FALSE;
+ if (type->u.kfunction->arg_types == NULL)
+ is = -1;
+ else
+ {
+ for (is = 0; type->u.kfunction->arg_types[is] != NULL; is++)
+ if (! debug_write_type (info, fns, fhandle,
+ type->u.kfunction->arg_types[is],
+ (struct debug_name *) NULL))
+ return FALSE;
+ }
+ return (*fns->function_type) (fhandle, is,
+ type->u.kfunction->varargs);
+ case DEBUG_KIND_REFERENCE:
+ if (! debug_write_type (info, fns, fhandle, type->u.kreference,
+ (struct debug_name *) NULL))
+ return FALSE;
+ return (*fns->reference_type) (fhandle);
+ case DEBUG_KIND_RANGE:
+ if (! debug_write_type (info, fns, fhandle, type->u.krange->type,
+ (struct debug_name *) NULL))
+ return FALSE;
+ return (*fns->range_type) (fhandle, type->u.krange->lower,
+ type->u.krange->upper);
+ case DEBUG_KIND_ARRAY:
+ if (! debug_write_type (info, fns, fhandle, type->u.karray->element_type,
+ (struct debug_name *) NULL)
+ || ! debug_write_type (info, fns, fhandle,
+ type->u.karray->range_type,
+ (struct debug_name *) NULL))
+ return FALSE;
+ return (*fns->array_type) (fhandle, type->u.karray->lower,
+ type->u.karray->upper,
+ type->u.karray->stringp);
+ case DEBUG_KIND_SET:
+ if (! debug_write_type (info, fns, fhandle, type->u.kset->type,
+ (struct debug_name *) NULL))
+ return FALSE;
+ return (*fns->set_type) (fhandle, type->u.kset->bitstringp);
+ case DEBUG_KIND_OFFSET:
+ if (! debug_write_type (info, fns, fhandle, type->u.koffset->base_type,
+ (struct debug_name *) NULL)
+ || ! debug_write_type (info, fns, fhandle,
+ type->u.koffset->target_type,
+ (struct debug_name *) NULL))
+ return FALSE;
+ return (*fns->offset_type) (fhandle);
+ case DEBUG_KIND_METHOD:
+ if (! debug_write_type (info, fns, fhandle,
+ type->u.kmethod->return_type,
+ (struct debug_name *) NULL))
+ return FALSE;
+ if (type->u.kmethod->arg_types == NULL)
+ is = -1;
+ else
+ {
+ for (is = 0; type->u.kmethod->arg_types[is] != NULL; is++)
+ if (! debug_write_type (info, fns, fhandle,
+ type->u.kmethod->arg_types[is],
+ (struct debug_name *) NULL))
+ return FALSE;
+ }
+ if (type->u.kmethod->domain_type != NULL)
+ {
+ if (! debug_write_type (info, fns, fhandle,
+ type->u.kmethod->domain_type,
+ (struct debug_name *) NULL))
+ return FALSE;
+ }
+ return (*fns->method_type) (fhandle,
+ type->u.kmethod->domain_type != NULL,
+ is,
+ type->u.kmethod->varargs);
+ case DEBUG_KIND_CONST:
+ if (! debug_write_type (info, fns, fhandle, type->u.kconst,
+ (struct debug_name *) NULL))
+ return FALSE;
+ return (*fns->const_type) (fhandle);
+ case DEBUG_KIND_VOLATILE:
+ if (! debug_write_type (info, fns, fhandle, type->u.kvolatile,
+ (struct debug_name *) NULL))
+ return FALSE;
+ return (*fns->volatile_type) (fhandle);
+ case DEBUG_KIND_NAMED:
+ return debug_write_type (info, fns, fhandle, type->u.knamed->type,
+ (struct debug_name *) NULL);
+ case DEBUG_KIND_TAGGED:
+ return debug_write_type (info, fns, fhandle, type->u.knamed->type,
+ type->u.knamed->name);
+ default:
+ abort ();
+ return FALSE;
+ }
+}
+
+/* Write out a class type. */
+
+static bfd_boolean
+debug_write_class_type (struct debug_handle *info,
+ const struct debug_write_fns *fns, void *fhandle,
+ struct debug_type_s *type, const char *tag)
+{
+ unsigned int i;
+ unsigned int id;
+ struct debug_type_s *vptrbase;
+
+ if (type->u.kclass == NULL)
+ {
+ id = 0;
+ vptrbase = NULL;
+ }
+ else
+ {
+ if (type->u.kclass->id <= info->base_id)
+ {
+ if (! debug_set_class_id (info, tag, type))
+ return FALSE;
+ }
+
+ if (info->mark == type->u.kclass->mark)
+ {
+ /* We are currently outputting this class, or we have
+ already output it. This can happen when there are
+ methods for an anonymous class. */
+ assert (type->u.kclass->id > info->base_id);
+ return (*fns->tag_type) (fhandle, tag, type->u.kclass->id,
+ type->kind);
+ }
+ type->u.kclass->mark = info->mark;
+ id = type->u.kclass->id;
+
+ vptrbase = type->u.kclass->vptrbase;
+ if (vptrbase != NULL && vptrbase != type)
+ {
+ if (! debug_write_type (info, fns, fhandle, vptrbase,
+ (struct debug_name *) NULL))
+ return FALSE;
+ }
+ }
+
+ if (! (*fns->start_class_type) (fhandle, tag, id,
+ type->kind == DEBUG_KIND_CLASS,
+ type->size,
+ vptrbase != NULL,
+ vptrbase == type))
+ return FALSE;
+
+ if (type->u.kclass != NULL)
+ {
+ if (type->u.kclass->fields != NULL)
+ {
+ for (i = 0; type->u.kclass->fields[i] != NULL; i++)
+ {
+ struct debug_field_s *f;
+
+ f = type->u.kclass->fields[i];
+ if (! debug_write_type (info, fns, fhandle, f->type,
+ (struct debug_name *) NULL))
+ return FALSE;
+ if (f->static_member)
+ {
+ if (! (*fns->class_static_member) (fhandle, f->name,
+ f->u.s.physname,
+ f->visibility))
+ return FALSE;
+ }
+ else
+ {
+ if (! (*fns->struct_field) (fhandle, f->name, f->u.f.bitpos,
+ f->u.f.bitsize, f->visibility))
+ return FALSE;
+ }
+ }
+ }
+
+ if (type->u.kclass->baseclasses != NULL)
+ {
+ for (i = 0; type->u.kclass->baseclasses[i] != NULL; i++)
+ {
+ struct debug_baseclass_s *b;
+
+ b = type->u.kclass->baseclasses[i];
+ if (! debug_write_type (info, fns, fhandle, b->type,
+ (struct debug_name *) NULL))
+ return FALSE;
+ if (! (*fns->class_baseclass) (fhandle, b->bitpos, b->is_virtual,
+ b->visibility))
+ return FALSE;
+ }
+ }
+
+ if (type->u.kclass->methods != NULL)
+ {
+ for (i = 0; type->u.kclass->methods[i] != NULL; i++)
+ {
+ struct debug_method_s *m;
+ unsigned int j;
+
+ m = type->u.kclass->methods[i];
+ if (! (*fns->class_start_method) (fhandle, m->name))
+ return FALSE;
+ for (j = 0; m->variants[j] != NULL; j++)
+ {
+ struct debug_method_variant_s *v;
+
+ v = m->variants[j];
+ if (v->context != NULL)
+ {
+ if (! debug_write_type (info, fns, fhandle, v->context,
+ (struct debug_name *) NULL))
+ return FALSE;
+ }
+ if (! debug_write_type (info, fns, fhandle, v->type,
+ (struct debug_name *) NULL))
+ return FALSE;
+ if (v->voffset != VOFFSET_STATIC_METHOD)
+ {
+ if (! (*fns->class_method_variant) (fhandle, v->physname,
+ v->visibility,
+ v->constp,
+ v->volatilep,
+ v->voffset,
+ v->context != NULL))
+ return FALSE;
+ }
+ else
+ {
+ if (! (*fns->class_static_method_variant) (fhandle,
+ v->physname,
+ v->visibility,
+ v->constp,
+ v->volatilep))
+ return FALSE;
+ }
+ }
+ if (! (*fns->class_end_method) (fhandle))
+ return FALSE;
+ }
+ }
+ }
+
+ return (*fns->end_class_type) (fhandle);
+}
+
+/* Write out information for a function. */
+
+static bfd_boolean
+debug_write_function (struct debug_handle *info,
+ const struct debug_write_fns *fns, void *fhandle,
+ const char *name, enum debug_object_linkage linkage,
+ struct debug_function *function)
+{
+ struct debug_parameter *p;
+ struct debug_block *b;
+
+ if (! debug_write_linenos (info, fns, fhandle, function->blocks->start))
+ return FALSE;
+
+ if (! debug_write_type (info, fns, fhandle, function->return_type,
+ (struct debug_name *) NULL))
+ return FALSE;
+
+ if (! (*fns->start_function) (fhandle, name,
+ linkage == DEBUG_LINKAGE_GLOBAL))
+ return FALSE;
+
+ for (p = function->parameters; p != NULL; p = p->next)
+ {
+ if (! debug_write_type (info, fns, fhandle, p->type,
+ (struct debug_name *) NULL)
+ || ! (*fns->function_parameter) (fhandle, p->name, p->kind, p->val))
+ return FALSE;
+ }
+
+ for (b = function->blocks; b != NULL; b = b->next)
+ {
+ if (! debug_write_block (info, fns, fhandle, b))
+ return FALSE;
+ }
+
+ return (*fns->end_function) (fhandle);
+}
+
+/* Write out information for a block. */
+
+static bfd_boolean
+debug_write_block (struct debug_handle *info,
+ const struct debug_write_fns *fns, void *fhandle,
+ struct debug_block *block)
+{
+ struct debug_name *n;
+ struct debug_block *b;
+
+ if (! debug_write_linenos (info, fns, fhandle, block->start))
+ return FALSE;
+
+ /* I can't see any point to writing out a block with no local
+ variables, so we don't bother, except for the top level block. */
+ if (block->locals != NULL || block->parent == NULL)
+ {
+ if (! (*fns->start_block) (fhandle, block->start))
+ return FALSE;
+ }
+
+ if (block->locals != NULL)
+ {
+ for (n = block->locals->list; n != NULL; n = n->next)
+ {
+ if (! debug_write_name (info, fns, fhandle, n))
+ return FALSE;
+ }
+ }
+
+ for (b = block->children; b != NULL; b = b->next)
+ {
+ if (! debug_write_block (info, fns, fhandle, b))
+ return FALSE;
+ }
+
+ if (! debug_write_linenos (info, fns, fhandle, block->end))
+ return FALSE;
+
+ if (block->locals != NULL || block->parent == NULL)
+ {
+ if (! (*fns->end_block) (fhandle, block->end))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Write out line number information up to ADDRESS. */
+
+static bfd_boolean
+debug_write_linenos (struct debug_handle *info,
+ const struct debug_write_fns *fns, void *fhandle,
+ bfd_vma address)
+{
+ while (info->current_write_lineno != NULL)
+ {
+ struct debug_lineno *l;
+
+ l = info->current_write_lineno;
+
+ while (info->current_write_lineno_index < DEBUG_LINENO_COUNT)
+ {
+ if (l->linenos[info->current_write_lineno_index]
+ == (unsigned long) -1)
+ break;
+
+ if (l->addrs[info->current_write_lineno_index] >= address)
+ return TRUE;
+
+ if (! (*fns->lineno) (fhandle, l->file->filename,
+ l->linenos[info->current_write_lineno_index],
+ l->addrs[info->current_write_lineno_index]))
+ return FALSE;
+
+ ++info->current_write_lineno_index;
+ }
+
+ info->current_write_lineno = l->next;
+ info->current_write_lineno_index = 0;
+ }
+
+ return TRUE;
+}
+
+/* Get the ID number for a class. If during the same call to
+ debug_write we find a struct with the same definition with the same
+ name, we use the same ID. This type of things happens because the
+ same struct will be defined by multiple compilation units. */
+
+static bfd_boolean
+debug_set_class_id (struct debug_handle *info, const char *tag,
+ struct debug_type_s *type)
+{
+ struct debug_class_type *c;
+ struct debug_class_id *l;
+
+ assert (type->kind == DEBUG_KIND_STRUCT
+ || type->kind == DEBUG_KIND_UNION
+ || type->kind == DEBUG_KIND_CLASS
+ || type->kind == DEBUG_KIND_UNION_CLASS);
+
+ c = type->u.kclass;
+
+ if (c->id > info->base_id)
+ return TRUE;
+
+ for (l = info->id_list; l != NULL; l = l->next)
+ {
+ if (l->type->kind != type->kind)
+ continue;
+
+ if (tag == NULL)
+ {
+ if (l->tag != NULL)
+ continue;
+ }
+ else
+ {
+ if (l->tag == NULL
+ || l->tag[0] != tag[0]
+ || strcmp (l->tag, tag) != 0)
+ continue;
+ }
+
+ if (debug_type_samep (info, l->type, type))
+ {
+ c->id = l->type->u.kclass->id;
+ return TRUE;
+ }
+ }
+
+ /* There are no identical types. Use a new ID, and add it to the
+ list. */
+ ++info->class_id;
+ c->id = info->class_id;
+
+ l = (struct debug_class_id *) xmalloc (sizeof *l);
+ memset (l, 0, sizeof *l);
+
+ l->type = type;
+ l->tag = tag;
+
+ l->next = info->id_list;
+ info->id_list = l;
+
+ return TRUE;
+}
+
+/* See if two types are the same. At this point, we don't care about
+ tags and the like. */
+
+static bfd_boolean
+debug_type_samep (struct debug_handle *info, struct debug_type_s *t1,
+ struct debug_type_s *t2)
+{
+ struct debug_type_compare_list *l;
+ struct debug_type_compare_list top;
+ bfd_boolean ret;
+
+ if (t1 == NULL)
+ return t2 == NULL;
+ if (t2 == NULL)
+ return FALSE;
+
+ while (t1->kind == DEBUG_KIND_INDIRECT)
+ {
+ t1 = *t1->u.kindirect->slot;
+ if (t1 == NULL)
+ return FALSE;
+ }
+ while (t2->kind == DEBUG_KIND_INDIRECT)
+ {
+ t2 = *t2->u.kindirect->slot;
+ if (t2 == NULL)
+ return FALSE;
+ }
+
+ if (t1 == t2)
+ return TRUE;
+
+ /* As a special case, permit a typedef to match a tag, since C++
+ debugging output will sometimes add a typedef where C debugging
+ output will not. */
+ if (t1->kind == DEBUG_KIND_NAMED
+ && t2->kind == DEBUG_KIND_TAGGED)
+ return debug_type_samep (info, t1->u.knamed->type, t2);
+ else if (t1->kind == DEBUG_KIND_TAGGED
+ && t2->kind == DEBUG_KIND_NAMED)
+ return debug_type_samep (info, t1, t2->u.knamed->type);
+
+ if (t1->kind != t2->kind
+ || t1->size != t2->size)
+ return FALSE;
+
+ /* Get rid of the trivial cases first. */
+ switch (t1->kind)
+ {
+ default:
+ break;
+ case DEBUG_KIND_VOID:
+ case DEBUG_KIND_FLOAT:
+ case DEBUG_KIND_COMPLEX:
+ case DEBUG_KIND_BOOL:
+ return TRUE;
+ case DEBUG_KIND_INT:
+ return t1->u.kint == t2->u.kint;
+ }
+
+ /* We have to avoid an infinite recursion. We do this by keeping a
+ list of types which we are comparing. We just keep the list on
+ the stack. If we encounter a pair of types we are currently
+ comparing, we just assume that they are equal. */
+ for (l = info->compare_list; l != NULL; l = l->next)
+ {
+ if (l->t1 == t1 && l->t2 == t2)
+ return TRUE;
+ }
+
+ top.t1 = t1;
+ top.t2 = t2;
+ top.next = info->compare_list;
+ info->compare_list = &top;
+
+ switch (t1->kind)
+ {
+ default:
+ abort ();
+ ret = FALSE;
+ break;
+
+ case DEBUG_KIND_STRUCT:
+ case DEBUG_KIND_UNION:
+ case DEBUG_KIND_CLASS:
+ case DEBUG_KIND_UNION_CLASS:
+ if (t1->u.kclass == NULL)
+ ret = t2->u.kclass == NULL;
+ else if (t2->u.kclass == NULL)
+ ret = FALSE;
+ else if (t1->u.kclass->id > info->base_id
+ && t1->u.kclass->id == t2->u.kclass->id)
+ ret = TRUE;
+ else
+ ret = debug_class_type_samep (info, t1, t2);
+ break;
+
+ case DEBUG_KIND_ENUM:
+ if (t1->u.kenum == NULL)
+ ret = t2->u.kenum == NULL;
+ else if (t2->u.kenum == NULL)
+ ret = FALSE;
+ else
+ {
+ const char **pn1, **pn2;
+ bfd_signed_vma *pv1, *pv2;
+
+ pn1 = t1->u.kenum->names;
+ pn2 = t2->u.kenum->names;
+ pv1 = t1->u.kenum->values;
+ pv2 = t2->u.kenum->values;
+ while (*pn1 != NULL && *pn2 != NULL)
+ {
+ if (**pn1 != **pn2
+ || *pv1 != *pv2
+ || strcmp (*pn1, *pn2) != 0)
+ break;
+ ++pn1;
+ ++pn2;
+ ++pv1;
+ ++pv2;
+ }
+ ret = *pn1 == NULL && *pn2 == NULL;
+ }
+ break;
+
+ case DEBUG_KIND_POINTER:
+ ret = debug_type_samep (info, t1->u.kpointer, t2->u.kpointer);
+ break;
+
+ case DEBUG_KIND_FUNCTION:
+ if (t1->u.kfunction->varargs != t2->u.kfunction->varargs
+ || ! debug_type_samep (info, t1->u.kfunction->return_type,
+ t2->u.kfunction->return_type)
+ || ((t1->u.kfunction->arg_types == NULL)
+ != (t2->u.kfunction->arg_types == NULL)))
+ ret = FALSE;
+ else if (t1->u.kfunction->arg_types == NULL)
+ ret = TRUE;
+ else
+ {
+ struct debug_type_s **a1, **a2;
+
+ a1 = t1->u.kfunction->arg_types;
+ a2 = t2->u.kfunction->arg_types;
+ while (*a1 != NULL && *a2 != NULL)
+ {
+ if (! debug_type_samep (info, *a1, *a2))
+ break;
+ ++a1;
+ ++a2;
+ }
+ ret = *a1 == NULL && *a2 == NULL;
+ }
+ break;
+
+ case DEBUG_KIND_REFERENCE:
+ ret = debug_type_samep (info, t1->u.kreference, t2->u.kreference);
+ break;
+
+ case DEBUG_KIND_RANGE:
+ ret = (t1->u.krange->lower == t2->u.krange->lower
+ && t1->u.krange->upper == t2->u.krange->upper
+ && debug_type_samep (info, t1->u.krange->type,
+ t2->u.krange->type));
+
+ case DEBUG_KIND_ARRAY:
+ ret = (t1->u.karray->lower == t2->u.karray->lower
+ && t1->u.karray->upper == t2->u.karray->upper
+ && t1->u.karray->stringp == t2->u.karray->stringp
+ && debug_type_samep (info, t1->u.karray->element_type,
+ t2->u.karray->element_type));
+ break;
+
+ case DEBUG_KIND_SET:
+ ret = (t1->u.kset->bitstringp == t2->u.kset->bitstringp
+ && debug_type_samep (info, t1->u.kset->type, t2->u.kset->type));
+ break;
+
+ case DEBUG_KIND_OFFSET:
+ ret = (debug_type_samep (info, t1->u.koffset->base_type,
+ t2->u.koffset->base_type)
+ && debug_type_samep (info, t1->u.koffset->target_type,
+ t2->u.koffset->target_type));
+ break;
+
+ case DEBUG_KIND_METHOD:
+ if (t1->u.kmethod->varargs != t2->u.kmethod->varargs
+ || ! debug_type_samep (info, t1->u.kmethod->return_type,
+ t2->u.kmethod->return_type)
+ || ! debug_type_samep (info, t1->u.kmethod->domain_type,
+ t2->u.kmethod->domain_type)
+ || ((t1->u.kmethod->arg_types == NULL)
+ != (t2->u.kmethod->arg_types == NULL)))
+ ret = FALSE;
+ else if (t1->u.kmethod->arg_types == NULL)
+ ret = TRUE;
+ else
+ {
+ struct debug_type_s **a1, **a2;
+
+ a1 = t1->u.kmethod->arg_types;
+ a2 = t2->u.kmethod->arg_types;
+ while (*a1 != NULL && *a2 != NULL)
+ {
+ if (! debug_type_samep (info, *a1, *a2))
+ break;
+ ++a1;
+ ++a2;
+ }
+ ret = *a1 == NULL && *a2 == NULL;
+ }
+ break;
+
+ case DEBUG_KIND_CONST:
+ ret = debug_type_samep (info, t1->u.kconst, t2->u.kconst);
+ break;
+
+ case DEBUG_KIND_VOLATILE:
+ ret = debug_type_samep (info, t1->u.kvolatile, t2->u.kvolatile);
+ break;
+
+ case DEBUG_KIND_NAMED:
+ case DEBUG_KIND_TAGGED:
+ ret = (strcmp (t1->u.knamed->name->name, t2->u.knamed->name->name) == 0
+ && debug_type_samep (info, t1->u.knamed->type,
+ t2->u.knamed->type));
+ break;
+ }
+
+ info->compare_list = top.next;
+
+ return ret;
+}
+
+/* See if two classes are the same. This is a subroutine of
+ debug_type_samep. */
+
+static bfd_boolean
+debug_class_type_samep (struct debug_handle *info, struct debug_type_s *t1,
+ struct debug_type_s *t2)
+{
+ struct debug_class_type *c1, *c2;
+
+ c1 = t1->u.kclass;
+ c2 = t2->u.kclass;
+
+ if ((c1->fields == NULL) != (c2->fields == NULL)
+ || (c1->baseclasses == NULL) != (c2->baseclasses == NULL)
+ || (c1->methods == NULL) != (c2->methods == NULL)
+ || (c1->vptrbase == NULL) != (c2->vptrbase == NULL))
+ return FALSE;
+
+ if (c1->fields != NULL)
+ {
+ struct debug_field_s **pf1, **pf2;
+
+ for (pf1 = c1->fields, pf2 = c2->fields;
+ *pf1 != NULL && *pf2 != NULL;
+ pf1++, pf2++)
+ {
+ struct debug_field_s *f1, *f2;
+
+ f1 = *pf1;
+ f2 = *pf2;
+ if (f1->name[0] != f2->name[0]
+ || f1->visibility != f2->visibility
+ || f1->static_member != f2->static_member)
+ return FALSE;
+ if (f1->static_member)
+ {
+ if (strcmp (f1->u.s.physname, f2->u.s.physname) != 0)
+ return FALSE;
+ }
+ else
+ {
+ if (f1->u.f.bitpos != f2->u.f.bitpos
+ || f1->u.f.bitsize != f2->u.f.bitsize)
+ return FALSE;
+ }
+ /* We do the checks which require function calls last. We
+ don't require that the types of fields have the same
+ names, since that sometimes fails in the presence of
+ typedefs and we really don't care. */
+ if (strcmp (f1->name, f2->name) != 0
+ || ! debug_type_samep (info,
+ debug_get_real_type ((void *) info,
+ f1->type, NULL),
+ debug_get_real_type ((void *) info,
+ f2->type, NULL)))
+ return FALSE;
+ }
+ if (*pf1 != NULL || *pf2 != NULL)
+ return FALSE;
+ }
+
+ if (c1->vptrbase != NULL)
+ {
+ if (! debug_type_samep (info, c1->vptrbase, c2->vptrbase))
+ return FALSE;
+ }
+
+ if (c1->baseclasses != NULL)
+ {
+ struct debug_baseclass_s **pb1, **pb2;
+
+ for (pb1 = c1->baseclasses, pb2 = c2->baseclasses;
+ *pb1 != NULL && *pb2 != NULL;
+ ++pb1, ++pb2)
+ {
+ struct debug_baseclass_s *b1, *b2;
+
+ b1 = *pb1;
+ b2 = *pb2;
+ if (b1->bitpos != b2->bitpos
+ || b1->is_virtual != b2->is_virtual
+ || b1->visibility != b2->visibility
+ || ! debug_type_samep (info, b1->type, b2->type))
+ return FALSE;
+ }
+ if (*pb1 != NULL || *pb2 != NULL)
+ return FALSE;
+ }
+
+ if (c1->methods != NULL)
+ {
+ struct debug_method_s **pm1, **pm2;
+
+ for (pm1 = c1->methods, pm2 = c2->methods;
+ *pm1 != NULL && *pm2 != NULL;
+ ++pm1, ++pm2)
+ {
+ struct debug_method_s *m1, *m2;
+
+ m1 = *pm1;
+ m2 = *pm2;
+ if (m1->name[0] != m2->name[0]
+ || strcmp (m1->name, m2->name) != 0
+ || (m1->variants == NULL) != (m2->variants == NULL))
+ return FALSE;
+ if (m1->variants == NULL)
+ {
+ struct debug_method_variant_s **pv1, **pv2;
+
+ for (pv1 = m1->variants, pv2 = m2->variants;
+ *pv1 != NULL && *pv2 != NULL;
+ ++pv1, ++pv2)
+ {
+ struct debug_method_variant_s *v1, *v2;
+
+ v1 = *pv1;
+ v2 = *pv2;
+ if (v1->physname[0] != v2->physname[0]
+ || v1->visibility != v2->visibility
+ || v1->constp != v2->constp
+ || v1->volatilep != v2->volatilep
+ || v1->voffset != v2->voffset
+ || (v1->context == NULL) != (v2->context == NULL)
+ || strcmp (v1->physname, v2->physname) != 0
+ || ! debug_type_samep (info, v1->type, v2->type))
+ return FALSE;
+ if (v1->context != NULL)
+ {
+ if (! debug_type_samep (info, v1->context,
+ v2->context))
+ return FALSE;
+ }
+ }
+ if (*pv1 != NULL || *pv2 != NULL)
+ return FALSE;
+ }
+ }
+ if (*pm1 != NULL || *pm2 != NULL)
+ return FALSE;
+ }
+
+ return TRUE;
+}
diff --git a/binutils-2.24/binutils/debug.h b/binutils-2.24/binutils/debug.h
new file mode 100644
index 00000000..1846119b
--- /dev/null
+++ b/binutils-2.24/binutils/debug.h
@@ -0,0 +1,793 @@
+/* debug.h -- Describe generic debugging information.
+ Copyright 1995, 1996, 2002, 2003, 2005, 2007, 2009
+ Free Software Foundation, Inc.
+ Written by Ian Lance Taylor <ian@cygnus.com>.
+
+ 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 3 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. */
+
+#ifndef DEBUG_H
+#define DEBUG_H
+
+/* This header file describes a generic debugging information format.
+ We may eventually have readers which convert different formats into
+ this generic format, and writers which write it out. The initial
+ impetus for this was writing a converter from stabs to HP IEEE-695
+ debugging format. */
+
+/* Different kinds of types. */
+
+enum debug_type_kind
+{
+ /* Not used. */
+ DEBUG_KIND_ILLEGAL,
+ /* Indirect via a pointer. */
+ DEBUG_KIND_INDIRECT,
+ /* Void. */
+ DEBUG_KIND_VOID,
+ /* Integer. */
+ DEBUG_KIND_INT,
+ /* Floating point. */
+ DEBUG_KIND_FLOAT,
+ /* Complex. */
+ DEBUG_KIND_COMPLEX,
+ /* Boolean. */
+ DEBUG_KIND_BOOL,
+ /* Struct. */
+ DEBUG_KIND_STRUCT,
+ /* Union. */
+ DEBUG_KIND_UNION,
+ /* Class. */
+ DEBUG_KIND_CLASS,
+ /* Union class (can this really happen?). */
+ DEBUG_KIND_UNION_CLASS,
+ /* Enumeration type. */
+ DEBUG_KIND_ENUM,
+ /* Pointer. */
+ DEBUG_KIND_POINTER,
+ /* Function. */
+ DEBUG_KIND_FUNCTION,
+ /* Reference. */
+ DEBUG_KIND_REFERENCE,
+ /* Range. */
+ DEBUG_KIND_RANGE,
+ /* Array. */
+ DEBUG_KIND_ARRAY,
+ /* Set. */
+ DEBUG_KIND_SET,
+ /* Based pointer. */
+ DEBUG_KIND_OFFSET,
+ /* Method. */
+ DEBUG_KIND_METHOD,
+ /* Const qualified type. */
+ DEBUG_KIND_CONST,
+ /* Volatile qualified type. */
+ DEBUG_KIND_VOLATILE,
+ /* Named type. */
+ DEBUG_KIND_NAMED,
+ /* Tagged type. */
+ DEBUG_KIND_TAGGED
+};
+
+/* Different kinds of variables. */
+
+enum debug_var_kind
+{
+ /* Not used. */
+ DEBUG_VAR_ILLEGAL,
+ /* A global variable. */
+ DEBUG_GLOBAL,
+ /* A static variable. */
+ DEBUG_STATIC,
+ /* A local static variable. */
+ DEBUG_LOCAL_STATIC,
+ /* A local variable. */
+ DEBUG_LOCAL,
+ /* A register variable. */
+ DEBUG_REGISTER
+};
+
+/* Different kinds of function parameters. */
+
+enum debug_parm_kind
+{
+ /* Not used. */
+ DEBUG_PARM_ILLEGAL,
+ /* A stack based parameter. */
+ DEBUG_PARM_STACK,
+ /* A register parameter. */
+ DEBUG_PARM_REG,
+ /* A stack based reference parameter. */
+ DEBUG_PARM_REFERENCE,
+ /* A register reference parameter. */
+ DEBUG_PARM_REF_REG
+};
+
+/* Different kinds of visibility. */
+
+enum debug_visibility
+{
+ /* A public field (e.g., a field in a C struct). */
+ DEBUG_VISIBILITY_PUBLIC,
+ /* A protected field. */
+ DEBUG_VISIBILITY_PROTECTED,
+ /* A private field. */
+ DEBUG_VISIBILITY_PRIVATE,
+ /* A field which should be ignored. */
+ DEBUG_VISIBILITY_IGNORE
+};
+
+/* A type. */
+
+typedef struct debug_type_s *debug_type;
+
+#define DEBUG_TYPE_NULL ((debug_type) NULL)
+
+/* A field in a struct or union. */
+
+typedef struct debug_field_s *debug_field;
+
+#define DEBUG_FIELD_NULL ((debug_field) NULL)
+
+/* A base class for an object. */
+
+typedef struct debug_baseclass_s *debug_baseclass;
+
+#define DEBUG_BASECLASS_NULL ((debug_baseclass) NULL)
+
+/* A method of an object. */
+
+typedef struct debug_method_s *debug_method;
+
+#define DEBUG_METHOD_NULL ((debug_method) NULL)
+
+/* The arguments to a method function of an object. These indicate
+ which method to run. */
+
+typedef struct debug_method_variant_s *debug_method_variant;
+
+#define DEBUG_METHOD_VARIANT_NULL ((debug_method_variant) NULL)
+
+/* This structure is passed to debug_write. It holds function
+ pointers that debug_write will call based on the accumulated
+ debugging information. */
+
+struct debug_write_fns
+{
+ /* This is called at the start of each new compilation unit with the
+ name of the main file in the new unit. */
+ bfd_boolean (*start_compilation_unit) (void *, const char *);
+
+ /* This is called at the start of each source file within a
+ compilation unit, before outputting any global information for
+ that file. The argument is the name of the file. */
+ bfd_boolean (*start_source) (void *, const char *);
+
+ /* Each writer must keep a stack of types. */
+
+ /* Push an empty type onto the type stack. This type can appear if
+ there is a reference to a type which is never defined. */
+ bfd_boolean (*empty_type) (void *);
+
+ /* Push a void type onto the type stack. */
+ bfd_boolean (*void_type) (void *);
+
+ /* Push an integer type onto the type stack, given the size and
+ whether it is unsigned. */
+ bfd_boolean (*int_type) (void *, unsigned int, bfd_boolean);
+
+ /* Push a floating type onto the type stack, given the size. */
+ bfd_boolean (*float_type) (void *, unsigned int);
+
+ /* Push a complex type onto the type stack, given the size. */
+ bfd_boolean (*complex_type) (void *, unsigned int);
+
+ /* Push a bfd_boolean type onto the type stack, given the size. */
+ bfd_boolean (*bool_type) (void *, unsigned int);
+
+ /* Push an enum type onto the type stack, given the tag, a NULL
+ terminated array of names and the associated values. If there is
+ no tag, the tag argument will be NULL. If this is an undefined
+ enum, the names and values arguments will be NULL. */
+ bfd_boolean (*enum_type)
+ (void *, const char *, const char **, bfd_signed_vma *);
+
+ /* Pop the top type on the type stack, and push a pointer to that
+ type onto the type stack. */
+ bfd_boolean (*pointer_type) (void *);
+
+ /* Push a function type onto the type stack. The second argument
+ indicates the number of argument types that have been pushed onto
+ the stack. If the number of argument types is passed as -1, then
+ the argument types of the function are unknown, and no types have
+ been pushed onto the stack. The third argument is TRUE if the
+ function takes a variable number of arguments. The return type
+ of the function is pushed onto the type stack below the argument
+ types, if any. */
+ bfd_boolean (*function_type) (void *, int, bfd_boolean);
+
+ /* Pop the top type on the type stack, and push a reference to that
+ type onto the type stack. */
+ bfd_boolean (*reference_type) (void *);
+
+ /* Pop the top type on the type stack, and push a range of that type
+ with the given lower and upper bounds onto the type stack. */
+ bfd_boolean (*range_type) (void *, bfd_signed_vma, bfd_signed_vma);
+
+ /* Push an array type onto the type stack. The top type on the type
+ stack is the range, and the next type on the type stack is the
+ element type. These should be popped before the array type is
+ pushed. The arguments are the lower bound, the upper bound, and
+ whether the array is a string. */
+ bfd_boolean (*array_type)
+ (void *, bfd_signed_vma, bfd_signed_vma, bfd_boolean);
+
+ /* Pop the top type on the type stack, and push a set of that type
+ onto the type stack. The argument indicates whether this set is
+ a bitstring. */
+ bfd_boolean (*set_type) (void *, bfd_boolean);
+
+ /* Push an offset type onto the type stack. The top type on the
+ type stack is the target type, and the next type on the type
+ stack is the base type. These should be popped before the offset
+ type is pushed. */
+ bfd_boolean (*offset_type) (void *);
+
+ /* Push a method type onto the type stack. If the second argument
+ is TRUE, the top type on the stack is the class to which the
+ method belongs; otherwise, the class must be determined by the
+ class to which the method is attached. The third argument is the
+ number of argument types; these are pushed onto the type stack in
+ reverse order (the first type popped is the last argument to the
+ method). A value of -1 for the third argument means that no
+ argument information is available. The fourth argument is TRUE
+ if the function takes a variable number of arguments. The next
+ type on the type stack below the domain and the argument types is
+ the return type of the method. All these types must be popped,
+ and then the method type must be pushed. */
+ bfd_boolean (*method_type) (void *, bfd_boolean, int, bfd_boolean);
+
+ /* Pop the top type off the type stack, and push a const qualified
+ version of that type onto the type stack. */
+ bfd_boolean (*const_type) (void *);
+
+ /* Pop the top type off the type stack, and push a volatile
+ qualified version of that type onto the type stack. */
+ bfd_boolean (*volatile_type) (void *);
+
+ /* Start building a struct. This is followed by calls to the
+ struct_field function, and finished by a call to the
+ end_struct_type function. The second argument is the tag; this
+ will be NULL if there isn't one. If the second argument is NULL,
+ the third argument is a constant identifying this struct for use
+ with tag_type. The fourth argument is TRUE for a struct, FALSE
+ for a union. The fifth argument is the size. If this is an
+ undefined struct or union, the size will be 0 and struct_field
+ will not be called before end_struct_type is called. */
+ bfd_boolean (*start_struct_type)
+ (void *, const char *, unsigned int, bfd_boolean, unsigned int);
+
+ /* Add a field to the struct type currently being built. The type
+ of the field should be popped off the type stack. The arguments
+ are the name, the bit position, the bit size (may be zero if the
+ field is not packed), and the visibility. */
+ bfd_boolean (*struct_field)
+ (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
+
+ /* Finish building a struct, and push it onto the type stack. */
+ bfd_boolean (*end_struct_type) (void *);
+
+ /* Start building a class. This is followed by calls to several
+ functions: struct_field, class_static_member, class_baseclass,
+ class_start_method, class_method_variant,
+ class_static_method_variant, and class_end_method. The class is
+ finished by a call to end_class_type. The first five arguments
+ are the same as for start_struct_type. The sixth argument is
+ TRUE if there is a virtual function table; if there is, the
+ seventh argument is TRUE if the virtual function table can be
+ found in the type itself, and is FALSE if the type of the object
+ holding the virtual function table should be popped from the type
+ stack. */
+ bfd_boolean (*start_class_type)
+ (void *, const char *, unsigned int, bfd_boolean, unsigned int,
+ bfd_boolean, bfd_boolean);
+
+ /* Add a static member to the class currently being built. The
+ arguments are the field name, the physical name, and the
+ visibility. The type must be popped off the type stack. */
+ bfd_boolean (*class_static_member)
+ (void *, const char *, const char *, enum debug_visibility);
+
+ /* Add a baseclass to the class currently being built. The type of
+ the baseclass must be popped off the type stack. The arguments
+ are the bit position, whether the class is virtual, and the
+ visibility. */
+ bfd_boolean (*class_baseclass)
+ (void *, bfd_vma, bfd_boolean, enum debug_visibility);
+
+ /* Start adding a method to the class currently being built. This
+ is followed by calls to class_method_variant and
+ class_static_method_variant to describe different variants of the
+ method which take different arguments. The method is finished
+ with a call to class_end_method. The argument is the method
+ name. */
+ bfd_boolean (*class_start_method) (void *, const char *);
+
+ /* Describe a variant to the class method currently being built.
+ The type of the variant must be popped off the type stack. The
+ second argument is the physical name of the function. The
+ following arguments are the visibility, whether the variant is
+ const, whether the variant is volatile, the offset in the virtual
+ function table, and whether the context is on the type stack
+ (below the variant type). */
+ bfd_boolean (*class_method_variant)
+ (void *, const char *, enum debug_visibility, bfd_boolean,
+ bfd_boolean, bfd_vma, bfd_boolean);
+
+ /* Describe a static variant to the class method currently being
+ built. The arguments are the same as for class_method_variant,
+ except that the last two arguments are omitted. The type of the
+ variant must be popped off the type stack. */
+ bfd_boolean (*class_static_method_variant)
+ (void *, const char *, enum debug_visibility, bfd_boolean,
+ bfd_boolean);
+
+ /* Finish describing a class method. */
+ bfd_boolean (*class_end_method) (void *);
+
+ /* Finish describing a class, and push it onto the type stack. */
+ bfd_boolean (*end_class_type) (void *);
+
+ /* Push a type on the stack which was given a name by an earlier
+ call to typdef. */
+ bfd_boolean (*typedef_type) (void *, const char *);
+
+ /* Push a tagged type on the stack which was defined earlier. If
+ the second argument is not NULL, the type was defined by a call
+ to tag. If the second argument is NULL, the type was defined by
+ a call to start_struct_type or start_class_type with a tag of
+ NULL and the number of the third argument. Either way, the
+ fourth argument is the tag kind. Note that this may be called
+ for a struct (class) being defined, in between the call to
+ start_struct_type (start_class_type) and the call to
+ end_struct_type (end_class_type). */
+ bfd_boolean (*tag_type)
+ (void *, const char *, unsigned int, enum debug_type_kind);
+
+ /* Pop the type stack, and typedef it to the given name. */
+ bfd_boolean (*typdef) (void *, const char *);
+
+ /* Pop the type stack, and declare it as a tagged struct or union or
+ enum or whatever. The tag passed down here is redundant, since
+ was also passed when enum_type, start_struct_type, or
+ start_class_type was called. */
+ bfd_boolean (*tag) (void *, const char *);
+
+ /* This is called to record a named integer constant. */
+ bfd_boolean (*int_constant) (void *, const char *, bfd_vma);
+
+ /* This is called to record a named floating point constant. */
+ bfd_boolean (*float_constant) (void *, const char *, double);
+
+ /* This is called to record a typed integer constant. The type is
+ popped off the type stack. */
+ bfd_boolean (*typed_constant) (void *, const char *, bfd_vma);
+
+ /* This is called to record a variable. The type is popped off the
+ type stack. */
+ bfd_boolean (*variable)
+ (void *, const char *, enum debug_var_kind, bfd_vma);
+
+ /* Start writing out a function. The return type must be popped off
+ the stack. The bfd_boolean is TRUE if the function is global. This
+ is followed by calls to function_parameter, followed by block
+ information. */
+ bfd_boolean (*start_function) (void *, const char *, bfd_boolean);
+
+ /* Record a function parameter for the current function. The type
+ must be popped off the stack. */
+ bfd_boolean (*function_parameter)
+ (void *, const char *, enum debug_parm_kind, bfd_vma);
+
+ /* Start writing out a block. There is at least one top level block
+ per function. Blocks may be nested. The argument is the
+ starting address of the block. */
+ bfd_boolean (*start_block) (void *, bfd_vma);
+
+ /* Finish writing out a block. The argument is the ending address
+ of the block. */
+ bfd_boolean (*end_block) (void *, bfd_vma);
+
+ /* Finish writing out a function. */
+ bfd_boolean (*end_function) (void *);
+
+ /* Record line number information for the current compilation unit. */
+ bfd_boolean (*lineno) (void *, const char *, unsigned long, bfd_vma);
+};
+
+/* Exported functions. */
+
+/* The first argument to most of these functions is a handle. This
+ handle is returned by the debug_init function. The purpose of the
+ handle is to permit the debugging routines to not use static
+ variables, and hence to be reentrant. This would be useful for a
+ program which wanted to handle two executables simultaneously. */
+
+/* Return a debugging handle. */
+
+extern void *debug_init (void);
+
+/* Set the source filename. This implicitly starts a new compilation
+ unit. */
+
+extern bfd_boolean debug_set_filename (void *, const char *);
+
+/* Change source files to the given file name. This is used for
+ include files in a single compilation unit. */
+
+extern bfd_boolean debug_start_source (void *, const char *);
+
+/* Record a function definition. This implicitly starts a function
+ block. The debug_type argument is the type of the return value.
+ The bfd_boolean indicates whether the function is globally visible.
+ The bfd_vma is the address of the start of the function. Currently
+ the parameter types are specified by calls to
+ debug_record_parameter. */
+
+extern bfd_boolean debug_record_function
+ (void *, const char *, debug_type, bfd_boolean, bfd_vma);
+
+/* Record a parameter for the current function. */
+
+extern bfd_boolean debug_record_parameter
+ (void *, const char *, debug_type, enum debug_parm_kind, bfd_vma);
+
+/* End a function definition. The argument is the address where the
+ function ends. */
+
+extern bfd_boolean debug_end_function (void *, bfd_vma);
+
+/* Start a block in a function. All local information will be
+ recorded in this block, until the matching call to debug_end_block.
+ debug_start_block and debug_end_block may be nested. The argument
+ is the address at which this block starts. */
+
+extern bfd_boolean debug_start_block (void *, bfd_vma);
+
+/* Finish a block in a function. This matches the call to
+ debug_start_block. The argument is the address at which this block
+ ends. */
+
+extern bfd_boolean debug_end_block (void *, bfd_vma);
+
+/* Associate a line number in the current source file with a given
+ address. */
+
+extern bfd_boolean debug_record_line (void *, unsigned long, bfd_vma);
+
+/* Start a named common block. This is a block of variables that may
+ move in memory. */
+
+extern bfd_boolean debug_start_common_block (void *, const char *);
+
+/* End a named common block. */
+
+extern bfd_boolean debug_end_common_block (void *, const char *);
+
+/* Record a named integer constant. */
+
+extern bfd_boolean debug_record_int_const (void *, const char *, bfd_vma);
+
+/* Record a named floating point constant. */
+
+extern bfd_boolean debug_record_float_const (void *, const char *, double);
+
+/* Record a typed constant with an integral value. */
+
+extern bfd_boolean debug_record_typed_const
+ (void *, const char *, debug_type, bfd_vma);
+
+/* Record a label. */
+
+extern bfd_boolean debug_record_label
+ (void *, const char *, debug_type, bfd_vma);
+
+/* Record a variable. */
+
+extern bfd_boolean debug_record_variable
+ (void *, const char *, debug_type, enum debug_var_kind, bfd_vma);
+
+/* Make an indirect type. The first argument is a pointer to the
+ location where the real type will be placed. The second argument
+ is the type tag, if there is one; this may be NULL; the only
+ purpose of this argument is so that debug_get_type_name can return
+ something useful. This function may be used when a type is
+ referenced before it is defined. */
+
+extern debug_type debug_make_indirect_type
+ (void *, debug_type *, const char *);
+
+/* Make a void type. */
+
+extern debug_type debug_make_void_type (void *);
+
+/* Make an integer type of a given size. The bfd_boolean argument is TRUE
+ if the integer is unsigned. */
+
+extern debug_type debug_make_int_type (void *, unsigned int, bfd_boolean);
+
+/* Make a floating point type of a given size. FIXME: On some
+ platforms, like an Alpha, you probably need to be able to specify
+ the format. */
+
+extern debug_type debug_make_float_type (void *, unsigned int);
+
+/* Make a boolean type of a given size. */
+
+extern debug_type debug_make_bool_type (void *, unsigned int);
+
+/* Make a complex type of a given size. */
+
+extern debug_type debug_make_complex_type (void *, unsigned int);
+
+/* Make a structure type. The second argument is TRUE for a struct,
+ FALSE for a union. The third argument is the size of the struct.
+ The fourth argument is a NULL terminated array of fields. */
+
+extern debug_type debug_make_struct_type
+ (void *, bfd_boolean, bfd_vma, debug_field *);
+
+/* Make an object type. The first three arguments after the handle
+ are the same as for debug_make_struct_type. The next arguments are
+ a NULL terminated array of base classes, a NULL terminated array of
+ methods, the type of the object holding the virtual function table
+ if it is not this object, and a bfd_boolean which is TRUE if this
+ object has its own virtual function table. */
+
+extern debug_type debug_make_object_type
+ (void *, bfd_boolean, bfd_vma, debug_field *, debug_baseclass *,
+ debug_method *, debug_type, bfd_boolean);
+
+/* Make an enumeration type. The arguments are a null terminated
+ array of strings, and an array of corresponding values. */
+
+extern debug_type debug_make_enum_type
+ (void *, const char **, bfd_signed_vma *);
+
+/* Make a pointer to a given type. */
+
+extern debug_type debug_make_pointer_type (void *, debug_type);
+
+/* Make a function type. The second argument is the return type. The
+ third argument is a NULL terminated array of argument types. The
+ fourth argument is TRUE if the function takes a variable number of
+ arguments. If the third argument is NULL, then the argument types
+ are unknown. */
+
+extern debug_type debug_make_function_type
+ (void *, debug_type, debug_type *, bfd_boolean);
+
+/* Make a reference to a given type. */
+
+extern debug_type debug_make_reference_type (void *, debug_type);
+
+/* Make a range of a given type from a lower to an upper bound. */
+
+extern debug_type debug_make_range_type
+ (void *, debug_type, bfd_signed_vma, bfd_signed_vma);
+
+/* Make an array type. The second argument is the type of an element
+ of the array. The third argument is the type of a range of the
+ array. The fourth and fifth argument are the lower and upper
+ bounds, respectively (if the bounds are not known, lower should be
+ 0 and upper should be -1). The sixth argument is TRUE if this
+ array is actually a string, as in C. */
+
+extern debug_type debug_make_array_type
+ (void *, debug_type, debug_type, bfd_signed_vma, bfd_signed_vma,
+ bfd_boolean);
+
+/* Make a set of a given type. For example, a Pascal set type. The
+ bfd_boolean argument is TRUE if this set is actually a bitstring, as in
+ CHILL. */
+
+extern debug_type debug_make_set_type (void *, debug_type, bfd_boolean);
+
+/* Make a type for a pointer which is relative to an object. The
+ second argument is the type of the object to which the pointer is
+ relative. The third argument is the type that the pointer points
+ to. */
+
+extern debug_type debug_make_offset_type (void *, debug_type, debug_type);
+
+/* Make a type for a method function. The second argument is the
+ return type. The third argument is the domain. The fourth
+ argument is a NULL terminated array of argument types. The fifth
+ argument is TRUE if the function takes a variable number of
+ arguments, in which case the array of argument types indicates the
+ types of the first arguments. The domain and the argument array
+ may be NULL, in which case this is a stub method and that
+ information is not available. Stabs debugging uses this, and gets
+ the argument types from the mangled name. */
+
+extern debug_type debug_make_method_type
+ (void *, debug_type, debug_type, debug_type *, bfd_boolean);
+
+/* Make a const qualified version of a given type. */
+
+extern debug_type debug_make_const_type (void *, debug_type);
+
+/* Make a volatile qualified version of a given type. */
+
+extern debug_type debug_make_volatile_type (void *, debug_type);
+
+/* Make an undefined tagged type. For example, a struct which has
+ been mentioned, but not defined. */
+
+extern debug_type debug_make_undefined_tagged_type
+ (void *, const char *, enum debug_type_kind);
+
+/* Make a base class for an object. The second argument is the base
+ class type. The third argument is the bit position of this base
+ class in the object. The fourth argument is whether this is a
+ virtual class. The fifth argument is the visibility of the base
+ class. */
+
+extern debug_baseclass debug_make_baseclass
+ (void *, debug_type, bfd_vma, bfd_boolean, enum debug_visibility);
+
+/* Make a field for a struct. The second argument is the name. The
+ third argument is the type of the field. The fourth argument is
+ the bit position of the field. The fifth argument is the size of
+ the field (it may be zero). The sixth argument is the visibility
+ of the field. */
+
+extern debug_field debug_make_field
+ (void *, const char *, debug_type, bfd_vma, bfd_vma, enum debug_visibility);
+
+/* Make a static member of an object. The second argument is the
+ name. The third argument is the type of the member. The fourth
+ argument is the physical name of the member (i.e., the name as a
+ global variable). The fifth argument is the visibility of the
+ member. */
+
+extern debug_field debug_make_static_member
+ (void *, const char *, debug_type, const char *, enum debug_visibility);
+
+/* Make a method. The second argument is the name, and the third
+ argument is a NULL terminated array of method variants. Each
+ method variant is a method with this name but with different
+ argument types. */
+
+extern debug_method debug_make_method
+ (void *, const char *, debug_method_variant *);
+
+/* Make a method variant. The second argument is the physical name of
+ the function. The third argument is the type of the function,
+ probably constructed by debug_make_method_type. The fourth
+ argument is the visibility. The fifth argument is whether this is
+ a const function. The sixth argument is whether this is a volatile
+ function. The seventh argument is the index in the virtual
+ function table, if any. The eighth argument is the virtual
+ function context. */
+
+extern debug_method_variant debug_make_method_variant
+ (void *, const char *, debug_type, enum debug_visibility, bfd_boolean,
+ bfd_boolean, bfd_vma, debug_type);
+
+/* Make a static method argument. The arguments are the same as for
+ debug_make_method_variant, except that the last two are omitted
+ since a static method can not also be virtual. */
+
+extern debug_method_variant debug_make_static_method_variant
+ (void *, const char *, debug_type, enum debug_visibility, bfd_boolean,
+ bfd_boolean);
+
+/* Name a type. This returns a new type with an attached name. */
+
+extern debug_type debug_name_type (void *, const char *, debug_type);
+
+/* Give a tag to a type, such as a struct or union. This returns a
+ new type with an attached tag. */
+
+extern debug_type debug_tag_type (void *, const char *, debug_type);
+
+/* Record the size of a given type. */
+
+extern bfd_boolean debug_record_type_size (void *, debug_type, unsigned int);
+
+/* Find a named type. */
+
+extern debug_type debug_find_named_type (void *, const char *);
+
+/* Find a tagged type. */
+
+extern debug_type debug_find_tagged_type
+ (void *, const char *, enum debug_type_kind);
+
+/* Get the kind of a type. */
+
+extern enum debug_type_kind debug_get_type_kind (void *, debug_type);
+
+/* Get the name of a type. */
+
+extern const char *debug_get_type_name (void *, debug_type);
+
+/* Get the size of a type. */
+
+extern bfd_vma debug_get_type_size (void *, debug_type);
+
+/* Get the return type of a function or method type. */
+
+extern debug_type debug_get_return_type (void *, debug_type);
+
+/* Get the NULL terminated array of parameter types for a function or
+ method type (actually, parameter types are not currently stored for
+ function types). This may be used to determine whether a method
+ type is a stub method or not. The last argument points to a
+ bfd_boolean which is set to TRUE if the function takes a variable
+ number of arguments. */
+
+extern const debug_type *debug_get_parameter_types
+ (void *, debug_type, bfd_boolean *);
+
+/* Get the target type of a pointer or reference or const or volatile
+ type. */
+
+extern debug_type debug_get_target_type (void *, debug_type);
+
+/* Get the NULL terminated array of fields for a struct, union, or
+ class. */
+
+extern const debug_field *debug_get_fields (void *, debug_type);
+
+/* Get the type of a field. */
+
+extern debug_type debug_get_field_type (void *, debug_field);
+
+/* Get the name of a field. */
+
+extern const char *debug_get_field_name (void *, debug_field);
+
+/* Get the bit position of a field within the containing structure.
+ If the field is a static member, this will return (bfd_vma) -1. */
+
+extern bfd_vma debug_get_field_bitpos (void *, debug_field);
+
+/* Get the bit size of a field. If the field is a static member, this
+ will return (bfd_vma) -1. */
+
+extern bfd_vma debug_get_field_bitsize (void *, debug_field);
+
+/* Get the visibility of a field. */
+
+extern enum debug_visibility debug_get_field_visibility (void *, debug_field);
+
+/* Get the physical name of a field, if it is a static member. If the
+ field is not a static member, this will return NULL. */
+
+extern const char *debug_get_field_physname (void *, debug_field);
+
+/* Write out the recorded debugging information. This takes a set of
+ function pointers which are called to do the actual writing. The
+ first void * is the debugging handle. The second void * is a handle
+ which is passed to the functions. */
+
+extern bfd_boolean debug_write
+ (void *, const struct debug_write_fns *, void *);
+
+#endif /* DEBUG_H */
diff --git a/binutils-2.24/binutils/deflex.c b/binutils-2.24/binutils/deflex.c
new file mode 100644
index 00000000..9729106c
--- /dev/null
+++ b/binutils-2.24/binutils/deflex.c
@@ -0,0 +1,2105 @@
+
+#line 3 "deflex.c"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+typedef uint64_t flex_uint64_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#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. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t yyleng;
+
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = (yy_hold_char); \
+ YY_RESTORE_YY_MORE_OFFSET \
+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr) )
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+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.
+ */
+ yy_size_t 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;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* 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
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* 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".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
+yy_size_t yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0; /* 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 (FILE *input_file );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
+void yy_delete_buffer (YY_BUFFER_STATE b );
+void yy_flush_buffer (YY_BUFFER_STATE b );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
+void yypop_buffer_state (void );
+
+static void yyensure_buffer_stack (void );
+static void yy_load_buffer_state (void );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
+
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len );
+
+void *yyalloc (yy_size_t );
+void *yyrealloc (void *,yy_size_t );
+void yyfree (void * );
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ yyensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer(yyin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ yyensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer(yyin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+typedef unsigned char YY_CHAR;
+
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int yylineno;
+
+int yylineno = 1;
+
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (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 = (yy_size_t) (yy_cp - yy_bp); \
+ (yy_hold_char) = *yy_cp; \
+ *yy_cp = '\0'; \
+ (yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 42
+#define YY_END_OF_BUFFER 43
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int16_t yy_accept[199] =
+ { 0,
+ 0, 0, 43, 42, 34, 36, 35, 33, 42, 28,
+ 42, 31, 41, 39, 27, 32, 38, 40, 28, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+ 28, 28, 28, 0, 29, 28, 0, 30, 31, 27,
+ 32, 37, 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 flex_int32_t 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, 12,
+ 15, 12, 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 flex_int32_t 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 flex_int16_t yy_base[206] =
+ { 0,
+ 0, 0, 230, 231, 231, 231, 231, 231, 223, 0,
+ 220, 0, 231, 231, 0, 0, 212, 0, 209, 195,
+ 24, 186, 202, 14, 197, 186, 27, 188, 198, 25,
+ 197, 196, 184, 209, 231, 0, 206, 231, 0, 0,
+ 0, 231, 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, 231, 67, 71,
+
+ 77, 83, 85, 91, 95
+ } ;
+
+static yyconst flex_int16_t yy_def[206] =
+ { 0,
+ 198, 1, 198, 198, 198, 198, 198, 198, 199, 200,
+ 201, 202, 198, 198, 203, 204, 198, 205, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 199, 198, 200, 201, 198, 202, 203,
+ 204, 198, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 0, 198, 198,
+
+ 198, 198, 198, 198, 198
+ } ;
+
+static yyconst flex_int16_t yy_nxt[272] =
+ { 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,
+ 46, 50, 51, 54, 47, 58, 66, 70, 59, 60,
+ 101, 118, 129, 119, 130, 67, 55, 71, 61, 197,
+ 196, 195, 194, 193, 192, 191, 102, 34, 34, 34,
+ 34, 34, 34, 36, 36, 36, 36, 37, 37, 37,
+ 37, 37, 37, 39, 190, 39, 39, 39, 39, 40,
+ 40, 41, 189, 41, 41, 41, 41, 43, 188, 187,
+
+ 43, 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, 145, 144, 143, 142, 141, 140, 139, 138,
+ 137, 136, 135, 134, 133, 132, 131, 128, 127, 126,
+ 125, 124, 123, 122, 121, 120, 117, 116, 115, 114,
+ 113, 112, 111, 110, 109, 108, 107, 106, 105, 104,
+ 103, 100, 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,
+ 69, 68, 65, 38, 35, 64, 63, 62, 57, 56,
+ 53, 52, 49, 48, 45, 44, 42, 38, 35, 198,
+ 3, 198, 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
+ 198
+ } ;
+
+static yyconst flex_int16_t yy_chk[272] =
+ { 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, 45, 48, 30, 30,
+ 78, 97, 109, 97, 109, 45, 27, 48, 30, 195,
+ 194, 192, 190, 188, 187, 186, 78, 199, 199, 199,
+ 199, 199, 199, 200, 200, 200, 200, 201, 201, 201,
+ 201, 201, 201, 202, 183, 202, 202, 202, 202, 203,
+ 203, 204, 182, 204, 204, 204, 204, 205, 181, 180,
+
+ 205, 179, 178, 176, 174, 173, 171, 168, 167, 166,
+ 165, 163, 162, 160, 159, 157, 154, 153, 152, 151,
+ 150, 149, 146, 145, 144, 142, 141, 140, 139, 138,
+ 137, 136, 135, 134, 133, 131, 130, 129, 128, 127,
+ 126, 125, 124, 123, 122, 121, 120, 119, 118, 117,
+ 116, 115, 114, 113, 112, 111, 110, 108, 107, 106,
+ 105, 103, 102, 101, 99, 98, 96, 95, 94, 93,
+ 92, 90, 87, 86, 85, 84, 83, 82, 81, 80,
+ 79, 77, 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,
+ 47, 46, 44, 37, 34, 33, 32, 31, 29, 28,
+ 26, 25, 23, 22, 20, 19, 17, 11, 9, 3,
+ 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
+ 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
+ 198
+ } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+extern int yy_flex_debug;
+int yy_flex_debug = 0;
+
+/* 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"
+#line 2 "deflex.l"
+
+/* Copyright 1995, 1997, 1998, 1999, 2002, 2003, 2004, 2005, 2007
+ 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 3 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@cygnus.com */
+
+#define DONTDECLARE_MALLOC
+#include "libiberty.h"
+#include "defparse.h"
+#include "dlltool.h"
+
+#define YY_NO_UNPUT
+
+int linenumber;
+
+#line 610 "deflex.c"
+
+#define INITIAL 0
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy (void );
+
+int yyget_debug (void );
+
+void yyset_debug (int debug_flag );
+
+YY_EXTRA_TYPE yyget_extra (void );
+
+void yyset_extra (YY_EXTRA_TYPE user_defined );
+
+FILE *yyget_in (void );
+
+void yyset_in (FILE * in_str );
+
+FILE *yyget_out (void );
+
+void yyset_out (FILE * out_str );
+
+yy_size_t yyget_leng (void );
+
+char *yyget_text (void );
+
+int yyget_lineno (void );
+
+void yyset_lineno (int line_number );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap (void );
+#else
+extern int yywrap (void );
+#endif
+#endif
+
+ static void yyunput (int c,char *buf_ptr );
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#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 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_LVALUE->yy_is_interactive ) \
+ { \
+ int c = '*'; \
+ yy_size_t 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
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex (void);
+
+#define YY_DECL int yylex (void)
+#endif /* !YY_DECL */
+
+/* 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
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+#line 36 "deflex.l"
+
+#line 794 "deflex.c"
+
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#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 ) {
+ yyensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ 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 >= 199 )
+ 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] != 231 );
+
+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 37 "deflex.l"
+{ return NAME;}
+ YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 38 "deflex.l"
+{ return LIBRARY;}
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 39 "deflex.l"
+{ return DESCRIPTION;}
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 40 "deflex.l"
+{ return STACKSIZE;}
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 41 "deflex.l"
+{ return HEAPSIZE;}
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 42 "deflex.l"
+{ return CODE;}
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 43 "deflex.l"
+{ return DATA;}
+ YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 44 "deflex.l"
+{ return SECTIONS;}
+ YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 45 "deflex.l"
+{ return EXPORTS;}
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 46 "deflex.l"
+{ return IMPORTS;}
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 47 "deflex.l"
+{ return VERSIONK;}
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 48 "deflex.l"
+{ return BASE;}
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 49 "deflex.l"
+{ return CONSTANT; }
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 50 "deflex.l"
+{ return NONAME; }
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 51 "deflex.l"
+{ return PRIVATE; }
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 52 "deflex.l"
+{ return READ;}
+ YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 53 "deflex.l"
+{ return WRITE;}
+ YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 54 "deflex.l"
+{ return EXECUTE;}
+ YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 55 "deflex.l"
+{ return SHARED;}
+ YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 56 "deflex.l"
+{ return NONSHARED;}
+ YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 57 "deflex.l"
+{ return SINGLE;}
+ YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 58 "deflex.l"
+{ return MULTIPLE;}
+ YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 59 "deflex.l"
+{ return INITINSTANCE;}
+ YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 60 "deflex.l"
+{ return INITGLOBAL;}
+ YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 61 "deflex.l"
+{ return TERMINSTANCE;}
+ YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 62 "deflex.l"
+{ return TERMGLOBAL;}
+ YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 64 "deflex.l"
+{ yylval.number = strtol (yytext,0,0);
+ return NUMBER; }
+ YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 67 "deflex.l"
+{
+ yylval.id = xstrdup (yytext);
+ return ID;
+ }
+ YY_BREAK
+case 29:
+/* rule 29 can match eol */
+YY_RULE_SETUP
+#line 72 "deflex.l"
+{
+ yylval.id = xstrdup (yytext+1);
+ yylval.id[yyleng-2] = 0;
+ return ID;
+ }
+ YY_BREAK
+case 30:
+/* rule 30 can match eol */
+YY_RULE_SETUP
+#line 78 "deflex.l"
+{
+ yylval.id = xstrdup (yytext+1);
+ yylval.id[yyleng-2] = 0;
+ return ID;
+ }
+ YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 83 "deflex.l"
+{ }
+ YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 84 "deflex.l"
+{ }
+ YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 85 "deflex.l"
+{ }
+ YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 86 "deflex.l"
+{ }
+ YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 87 "deflex.l"
+{ }
+ YY_BREAK
+case 36:
+/* rule 36 can match eol */
+YY_RULE_SETUP
+#line 88 "deflex.l"
+{ linenumber ++ ;}
+ YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 89 "deflex.l"
+{ return EQUAL;}
+ YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 90 "deflex.l"
+{ return '=';}
+ YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 91 "deflex.l"
+{ return '.';}
+ YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 92 "deflex.l"
+{ return '@';}
+ YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 93 "deflex.l"
+{ return ',';}
+ YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 94 "deflex.l"
+ECHO;
+ YY_BREAK
+#line 1102 "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_LVALUE->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_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+ YY_CURRENT_BUFFER_LVALUE->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_LVALUE->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_LVALUE->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 (void)
+{
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->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_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->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_LVALUE->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_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+ else
+ {
+ yy_size_t num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* 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 )
+ {
+ yy_size_t 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. */
+ yyrealloc((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_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ (yy_n_chars), num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->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_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ (yy_n_chars) += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->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 (void)
+{
+ 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 >= 199 )
+ 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 );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
+{
+ 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 >= 199 )
+ 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 == 198);
+
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+ static void yyunput (int c, register char * yy_bp )
+{
+ register char *yy_cp;
+
+ yy_cp = (yy_c_buf_p);
+
+ /* undo effects of setting up yytext */
+ *yy_cp = (yy_hold_char);
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ { /* need to shift things up to make room */
+ /* +2 for EOB chars. */
+ register yy_size_t number_to_move = (yy_n_chars) + 2;
+ register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+ register char *source =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+ while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ *--dest = *--source;
+
+ yy_cp += (int) (dest - source);
+ yy_bp += (int) (dest - source);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->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;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (void)
+#else
+ static int input (void)
+#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_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ /* This was really a NUL. */
+ *(yy_c_buf_p) = '\0';
+
+ else
+ { /* need more input */
+ yy_size_t 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 );
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( yywrap( ) )
+ return 0;
+
+ 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;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void yyrestart (FILE * input_file )
+{
+
+ if ( ! YY_CURRENT_BUFFER ){
+ yyensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer(yyin,YY_BUF_SIZE );
+ }
+
+ yy_init_buffer(YY_CURRENT_BUFFER,input_file );
+ yy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
+{
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * yypop_buffer_state();
+ * yypush_buffer_state(new_buffer);
+ */
+ yyensure_buffer_stack ();
+ 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_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = 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;
+}
+
+static void yy_load_buffer_state (void)
+{
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) yyalloc(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 *) yyalloc(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;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ *
+ */
+ void yy_delete_buffer (YY_BUFFER_STATE b )
+{
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ yyfree((void *) b->yy_ch_buf );
+
+ yyfree((void *) b );
+}
+
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
+
+{
+ int oerrno = errno;
+
+ yy_flush_buffer(b );
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then yy_init_buffer was _probably_
+ * called from yyrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+ void yy_flush_buffer (YY_BUFFER_STATE b )
+{
+ 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( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ *
+ */
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+ if (new_buffer == NULL)
+ return;
+
+ yyensure_buffer_stack();
+
+ /* This block is copied from yy_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ (yy_buffer_stack_top)++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from yy_switch_to_buffer. */
+ yy_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ *
+ */
+void yypop_buffer_state (void)
+{
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ yy_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if ((yy_buffer_stack_top) > 0)
+ --(yy_buffer_stack_top);
+
+ if (YY_CURRENT_BUFFER) {
+ yy_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void yyensure_buffer_stack (void)
+{
+ yy_size_t num_to_alloc;
+
+ if (!(yy_buffer_stack)) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ (yy_buffer_stack_max) = num_to_alloc;
+ (yy_buffer_stack_top) = 0;
+ return;
+ }
+
+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
+ (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+ ((yy_buffer_stack),
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+ (yy_buffer_stack_max) = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
+{
+ 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) yyalloc(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;
+}
+
+/** Setup the input buffer state to scan a string. The next call to yylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * yy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
+{
+
+ return yy_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n, i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) yyalloc(n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_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;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+ (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. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ yytext[yyleng] = (yy_hold_char); \
+ (yy_c_buf_p) = yytext + yyless_macro_arg; \
+ (yy_hold_char) = *(yy_c_buf_p); \
+ *(yy_c_buf_p) = '\0'; \
+ yyleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int yyget_lineno (void)
+{
+
+ return yylineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *yyget_in (void)
+{
+ return yyin;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *yyget_out (void)
+{
+ return yyout;
+}
+
+/** Get the length of the current token.
+ *
+ */
+yy_size_t yyget_leng (void)
+{
+ return yyleng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *yyget_text (void)
+{
+ return yytext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void yyset_lineno (int line_number )
+{
+
+ yylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see yy_switch_to_buffer
+ */
+void yyset_in (FILE * in_str )
+{
+ yyin = in_str ;
+}
+
+void yyset_out (FILE * out_str )
+{
+ yyout = out_str ;
+}
+
+int yyget_debug (void)
+{
+ return yy_flex_debug;
+}
+
+void yyset_debug (int bdebug )
+{
+ yy_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from yylex_destroy(), so don't allocate here.
+ */
+
+ (yy_buffer_stack) = 0;
+ (yy_buffer_stack_top) = 0;
+ (yy_buffer_stack_max) = 0;
+ (yy_c_buf_p) = (char *) 0;
+ (yy_init) = 0;
+ (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ yyin = stdin;
+ yyout = stdout;
+#else
+ yyin = (FILE *) 0;
+ yyout = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * yylex_init()
+ */
+ return 0;
+}
+
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy (void)
+{
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ yy_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ yypop_buffer_state();
+ }
+
+ /* Destroy the stack itself. */
+ yyfree((yy_buffer_stack) );
+ (yy_buffer_stack) = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * yylex() is called, initialization will occur. */
+ yy_init_globals( );
+
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *yyalloc (yy_size_t size )
+{
+ return (void *) malloc( size );
+}
+
+void *yyrealloc (void * ptr, yy_size_t size )
+{
+ /* 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 );
+}
+
+void yyfree (void * ptr )
+{
+ free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 94 "deflex.l"
+
+
+#ifndef yywrap
+/* Needed for lex, though not flex. */
+int yywrap(void) { return 1; }
+#endif
+
diff --git a/binutils-2.24/binutils/deflex.l b/binutils-2.24/binutils/deflex.l
new file mode 100644
index 00000000..317f6bec
--- /dev/null
+++ b/binutils-2.24/binutils/deflex.l
@@ -0,0 +1,98 @@
+%{/* deflex.l - Lexer for .def files */
+
+/* Copyright 1995, 1997, 1998, 1999, 2002, 2003, 2004, 2005, 2007
+ 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 3 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@cygnus.com */
+
+#define DONTDECLARE_MALLOC
+#include "libiberty.h"
+#include "defparse.h"
+#include "dlltool.h"
+
+#define YY_NO_UNPUT
+
+int linenumber;
+
+%}
+%%
+"NAME" { return NAME;}
+"LIBRARY" { return LIBRARY;}
+"DESCRIPTION" { return DESCRIPTION;}
+"STACKSIZE" { return STACKSIZE;}
+"HEAPSIZE" { return HEAPSIZE;}
+"CODE" { return CODE;}
+"DATA" { return DATA;}
+"SECTIONS" { return SECTIONS;}
+"EXPORTS" { return EXPORTS;}
+"IMPORTS" { return IMPORTS;}
+"VERSION" { return VERSIONK;}
+"BASE" { return BASE;}
+"CONSTANT" { return CONSTANT; }
+"NONAME" { return NONAME; }
+"PRIVATE" { return PRIVATE; }
+"READ" { return READ;}
+"WRITE" { return WRITE;}
+"EXECUTE" { return EXECUTE;}
+"SHARED" { return SHARED;}
+"NONSHARED" { return NONSHARED;}
+"SINGLE" { return SINGLE;}
+"MULTIPLE" { return MULTIPLE;}
+"INITINSTANCE" { return INITINSTANCE;}
+"INITGLOBAL" { return INITGLOBAL;}
+"TERMINSTANCE" { return TERMINSTANCE;}
+"TERMGLOBAL" { return TERMGLOBAL;}
+
+[0-9][x0-9A-Fa-f]* { yylval.number = strtol (yytext,0,0);
+ return NUMBER; }
+
+(@)?[A-Za-z$:\-\_?][A-Za-z0-9/$:\<\>\-\_@?]* {
+ yylval.id = xstrdup (yytext);
+ return ID;
+ }
+
+"\""[^\"]*"\"" {
+ yylval.id = xstrdup (yytext+1);
+ yylval.id[yyleng-2] = 0;
+ return ID;
+ }
+
+"\'"[^\']*"\'" {
+ yylval.id = xstrdup (yytext+1);
+ yylval.id[yyleng-2] = 0;
+ return ID;
+ }
+"*".* { }
+";".* { }
+" " { }
+"\t" { }
+"\r" { }
+"\n" { linenumber ++ ;}
+"==" { return EQUAL;}
+"=" { return '=';}
+"." { return '.';}
+"@" { return '@';}
+"," { return ',';}
+%%
+#ifndef yywrap
+/* Needed for lex, though not flex. */
+int yywrap(void) { return 1; }
+#endif
diff --git a/binutils-2.24/binutils/defparse.c b/binutils-2.24/binutils/defparse.c
new file mode 100644
index 00000000..263278e4
--- /dev/null
+++ b/binutils-2.24/binutils/defparse.c
@@ -0,0 +1,2142 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton 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.3"
+
+/* 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,
+ EQUAL = 284,
+ ID = 285,
+ NUMBER = 286
+ };
+#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 EQUAL 284
+#define ID 285
+#define NUMBER 286
+
+
+
+
+/* Copy the first part of user declarations. */
+#line 1 "defparse.y"
+ /* defparse.y - parser for .def files */
+
+/* Copyright 1995, 1997, 1998, 1999, 2001, 2004, 2005, 2007
+ 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 3 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 "sysdep.h"
+#include "bfd.h"
+#include "libiberty.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
+typedef union YYSTYPE
+#line 29 "defparse.y"
+{
+ char *id;
+ const char *id_const;
+ int number;
+}
+/* Line 193 of yacc.c. */
+#line 192 "defparse.c"
+ YYSTYPE;
+# 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 216 of yacc.c. */
+#line 205 "defparse.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && 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
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+ int i;
+#endif
+{
+ return i;
+}
+#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
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (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 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# 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
+{
+ yytype_int16 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 (yytype_int16) + 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 (YYID (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 (YYID (0))
+
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 66
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 141
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 36
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 26
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 98
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 139
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 286
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const yytype_uint8 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, 34, 2, 32, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 33, 2, 2, 35, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 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
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const yytype_uint16 yyprhs[] =
+{
+ 0, 0, 3, 6, 8, 12, 17, 20, 23, 27,
+ 31, 34, 37, 40, 43, 46, 51, 52, 55, 64,
+ 67, 69, 78, 87, 94, 101, 108, 115, 120, 125,
+ 128, 130, 133, 137, 139, 141, 142, 145, 146, 148,
+ 150, 152, 154, 156, 158, 160, 162, 163, 165, 166,
+ 168, 169, 171, 172, 174, 176, 178, 180, 182, 184,
+ 186, 188, 190, 192, 194, 196, 198, 200, 202, 204,
+ 206, 208, 210, 212, 214, 216, 218, 220, 222, 224,
+ 227, 230, 234, 238, 240, 241, 244, 245, 248, 249,
+ 252, 253, 257, 258, 259, 263, 265, 267, 269
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yytype_int8 yyrhs[] =
+{
+ 37, 0, -1, 37, 38, -1, 38, -1, 3, 55,
+ 59, -1, 4, 55, 59, 60, -1, 11, 39, -1,
+ 5, 30, -1, 6, 31, 47, -1, 7, 31, 47,
+ -1, 8, 45, -1, 9, 45, -1, 10, 43, -1,
+ 12, 41, -1, 13, 31, -1, 13, 31, 32, 31,
+ -1, -1, 39, 40, -1, 30, 58, 56, 50, 49,
+ 51, 52, 57, -1, 41, 42, -1, 42, -1, 30,
+ 33, 30, 32, 30, 32, 30, 57, -1, 30, 33,
+ 30, 32, 30, 32, 31, 57, -1, 30, 33, 30,
+ 32, 30, 57, -1, 30, 33, 30, 32, 31, 57,
+ -1, 30, 32, 30, 32, 30, 57, -1, 30, 32,
+ 30, 32, 31, 57, -1, 30, 32, 30, 57, -1,
+ 30, 32, 31, 57, -1, 43, 44, -1, 44, -1,
+ 30, 45, -1, 45, 46, 48, -1, 48, -1, 34,
+ -1, -1, 34, 31, -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, 3, -1, 5, -1, 6, -1, 7, -1,
+ 8, -1, 9, -1, 10, -1, 11, -1, 12, -1,
+ 13, -1, 14, -1, 15, -1, 21, -1, 22, -1,
+ 16, -1, 17, -1, 18, -1, 19, -1, 20, -1,
+ 23, -1, 24, -1, 25, -1, 26, -1, 27, -1,
+ 28, -1, 30, -1, 32, 53, -1, 32, 54, -1,
+ 53, 32, 54, -1, 30, 32, 54, -1, 54, -1,
+ -1, 35, 31, -1, -1, 29, 54, -1, -1, 33,
+ 54, -1, -1, 14, 33, 31, -1, -1, -1, 60,
+ 46, 61, -1, 25, -1, 26, -1, 27, -1, 28,
+ -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const yytype_uint8 yyrline[] =
+{
+ 0, 49, 49, 50, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 69, 71, 75, 80,
+ 81, 85, 87, 89, 91, 93, 95, 97, 99, 104,
+ 105, 109, 113, 114, 118, 119, 121, 122, 126, 127,
+ 128, 129, 130, 131, 132, 136, 137, 141, 142, 146,
+ 147, 151, 152, 155, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 186, 187,
+ 193, 199, 205, 212, 213, 217, 218, 222, 223, 227,
+ 228, 231, 232, 235, 237, 241, 242, 243, 244
+};
+#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", "EQUAL",
+ "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",
+ "keyword_as_name", "opt_name2", "opt_name", "opt_ordinal",
+ "opt_import_name", "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 yytype_uint16 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, 46, 61, 44, 64
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 36, 37, 37, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 38, 38, 38, 39, 39, 40, 41,
+ 41, 42, 42, 42, 42, 42, 42, 42, 42, 43,
+ 43, 44, 45, 45, 46, 46, 47, 47, 48, 48,
+ 48, 48, 48, 48, 48, 49, 49, 50, 50, 51,
+ 51, 52, 52, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
+ 53, 53, 53, 53, 53, 53, 53, 53, 54, 54,
+ 54, 54, 54, 55, 55, 56, 56, 57, 57, 58,
+ 58, 59, 59, 60, 60, 61, 61, 61, 61
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 2, 1, 3, 4, 2, 2, 3, 3,
+ 2, 2, 2, 2, 2, 4, 0, 2, 8, 2,
+ 1, 8, 8, 6, 6, 6, 6, 4, 4, 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, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 3, 3, 1, 0, 2, 0, 2, 0, 2,
+ 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 yytype_uint8 yydefact[] =
+{
+ 0, 84, 84, 0, 0, 0, 0, 0, 0, 16,
+ 0, 0, 0, 3, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 67, 68, 69, 70,
+ 71, 65, 66, 72, 73, 74, 75, 76, 77, 78,
+ 0, 0, 83, 92, 92, 7, 37, 37, 38, 39,
+ 40, 41, 42, 43, 44, 10, 33, 11, 0, 12,
+ 30, 6, 0, 13, 20, 14, 1, 2, 0, 79,
+ 80, 0, 0, 4, 93, 0, 8, 9, 34, 0,
+ 31, 29, 90, 17, 0, 0, 19, 0, 82, 81,
+ 0, 5, 36, 32, 0, 86, 88, 88, 0, 15,
+ 91, 0, 89, 0, 48, 0, 0, 27, 28, 0,
+ 95, 96, 97, 98, 94, 85, 47, 46, 87, 88,
+ 88, 88, 88, 45, 50, 25, 26, 0, 23, 24,
+ 49, 52, 88, 88, 51, 88, 21, 22, 18
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 12, 13, 61, 83, 63, 64, 59, 60, 55,
+ 79, 76, 56, 124, 117, 131, 135, 41, 42, 43,
+ 104, 107, 95, 73, 91, 114
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -96
+static const yytype_int8 yypact[] =
+{
+ 38, 61, 61, -22, -1, 8, 39, 39, -7, -96,
+ 23, 59, 92, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, -96,
+ -96, -96, -96, -96, -96, -96, -96, -96, -96, 62,
+ 61, 79, -96, 96, 96, -96, 80, 80, -96, -96,
+ -96, -96, -96, -96, -96, -13, -96, -13, 39, -7,
+ -96, 82, 1, 23, -96, 81, -96, -96, 61, 79,
+ -96, 61, 83, -96, -96, 84, -96, -96, -96, 39,
+ -13, -96, 85, -96, 5, 87, -96, 88, -96, -96,
+ 89, -12, -96, -96, 61, 86, -20, 93, 91, -96,
+ -96, -8, -96, 94, 103, 61, 30, -96, -96, 76,
+ -96, -96, -96, -96, -96, -96, -96, 111, -96, 93,
+ 93, 0, 93, -96, 118, -96, -96, 78, -96, -96,
+ -96, 106, 93, 93, -96, 93, -96, -96, -96
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yytype_int16 yypgoto[] =
+{
+ -96, -96, 117, -96, -96, -96, 67, -96, 72, -6,
+ 41, 90, 54, -96, -96, -96, -96, 95, -40, 132,
+ -96, -95, -96, 97, -96, -96
+};
+
+/* 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 yytype_int16 yytable[] =
+{
+ 70, 57, 108, -35, -35, -35, -35, -35, 45, 105,
+ -35, -35, 106, -35, -35, -35, -35, 110, 111, 112,
+ 113, 78, 78, 58, 125, 126, 128, 129, 88, 105,
+ 46, 89, 127, 84, 85, 96, 97, 136, 137, 47,
+ 138, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 80, 62, 102, 48, 49, 50, 51, 52,
+ 119, 120, 53, 54, 14, 118, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 65, 39, 66, 40, 68, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 121, 122, 132, 133,
+ 72, 71, 82, 87, 75, 92, 90, 98, 94, 99,
+ 100, 103, 105, 109, 116, 115, 123, 130, 134, 67,
+ 86, 81, 101, 93, 44, 69, 0, 77, 0, 0,
+ 0, 74
+};
+
+static const yytype_int16 yycheck[] =
+{
+ 40, 7, 97, 16, 17, 18, 19, 20, 30, 29,
+ 23, 24, 32, 25, 26, 27, 28, 25, 26, 27,
+ 28, 34, 34, 30, 119, 120, 121, 122, 68, 29,
+ 31, 71, 32, 32, 33, 30, 31, 132, 133, 31,
+ 135, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 58, 30, 94, 16, 17, 18, 19, 20,
+ 30, 31, 23, 24, 3, 105, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 31, 30, 0, 32, 32, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 30, 31, 30, 31,
+ 14, 32, 30, 32, 34, 31, 33, 30, 33, 31,
+ 31, 35, 29, 32, 21, 31, 15, 9, 22, 12,
+ 63, 59, 91, 79, 2, 40, -1, 47, -1, -1,
+ -1, 44
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint8 yystos[] =
+{
+ 0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 37, 38, 3, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 30,
+ 32, 53, 54, 55, 55, 30, 31, 31, 16, 17,
+ 18, 19, 20, 23, 24, 45, 48, 45, 30, 43,
+ 44, 39, 30, 41, 42, 31, 0, 38, 32, 53,
+ 54, 32, 14, 59, 59, 34, 47, 47, 34, 46,
+ 45, 44, 30, 40, 32, 33, 42, 32, 54, 54,
+ 33, 60, 31, 48, 33, 58, 30, 31, 30, 31,
+ 31, 46, 54, 35, 56, 29, 32, 57, 57, 32,
+ 25, 26, 27, 28, 61, 31, 21, 50, 54, 30,
+ 31, 30, 31, 15, 49, 57, 57, 32, 57, 57,
+ 9, 51, 30, 31, 22, 52, 57, 57, 57
+};
+
+#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 (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (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 (YYID (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 (YYID (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 defined YYLTYPE_IS_TRIVIAL && 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 (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ yytype_int16 *bottom;
+ yytype_int16 *top;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; 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 (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+ YYSTYPE *yyvsp;
+ int yyrule;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
+ fprintf (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule); \
+} while (YYID (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. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# 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. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+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 == '"')
+ {
+ YYSIZE_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
+
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
+ else
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { 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 + 1;
+ 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)
+ return YYSIZE_MAXIMUM;
+
+ if (yyresult)
+ {
+ /* 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 = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+#endif /* YYERROR_VERBOSE */
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+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
+{
+ YYUSE (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 __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+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;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+ /* 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. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ 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;
+ yytype_int16 *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;
+
+ {
+ yytype_int16 *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. */
+
+ /* 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;
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ 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 54 "defparse.y"
+ { def_name ((yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].number)); }
+ break;
+
+ case 5:
+#line 55 "defparse.y"
+ { def_library ((yyvsp[(2) - (4)].id), (yyvsp[(3) - (4)].number)); }
+ break;
+
+ case 7:
+#line 57 "defparse.y"
+ { def_description ((yyvsp[(2) - (2)].id));}
+ break;
+
+ case 8:
+#line 58 "defparse.y"
+ { def_stacksize ((yyvsp[(2) - (3)].number), (yyvsp[(3) - (3)].number));}
+ break;
+
+ case 9:
+#line 59 "defparse.y"
+ { def_heapsize ((yyvsp[(2) - (3)].number), (yyvsp[(3) - (3)].number));}
+ break;
+
+ case 10:
+#line 60 "defparse.y"
+ { def_code ((yyvsp[(2) - (2)].number));}
+ break;
+
+ case 11:
+#line 61 "defparse.y"
+ { def_data ((yyvsp[(2) - (2)].number));}
+ break;
+
+ case 14:
+#line 64 "defparse.y"
+ { def_version ((yyvsp[(2) - (2)].number),0);}
+ break;
+
+ case 15:
+#line 65 "defparse.y"
+ { def_version ((yyvsp[(2) - (4)].number),(yyvsp[(4) - (4)].number));}
+ break;
+
+ case 18:
+#line 77 "defparse.y"
+ { def_exports ((yyvsp[(1) - (8)].id), (yyvsp[(2) - (8)].id), (yyvsp[(3) - (8)].number), (yyvsp[(4) - (8)].number), (yyvsp[(5) - (8)].number), (yyvsp[(6) - (8)].number), (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].id));}
+ break;
+
+ case 21:
+#line 86 "defparse.y"
+ { def_import ((yyvsp[(1) - (8)].id),(yyvsp[(3) - (8)].id),(yyvsp[(5) - (8)].id),(yyvsp[(7) - (8)].id), 0, (yyvsp[(8) - (8)].id)); }
+ break;
+
+ case 22:
+#line 88 "defparse.y"
+ { def_import ((yyvsp[(1) - (8)].id),(yyvsp[(3) - (8)].id),(yyvsp[(5) - (8)].id), 0,(yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].id)); }
+ break;
+
+ case 23:
+#line 90 "defparse.y"
+ { def_import ((yyvsp[(1) - (6)].id),(yyvsp[(3) - (6)].id), 0,(yyvsp[(5) - (6)].id), 0, (yyvsp[(6) - (6)].id)); }
+ break;
+
+ case 24:
+#line 92 "defparse.y"
+ { def_import ((yyvsp[(1) - (6)].id),(yyvsp[(3) - (6)].id), 0, 0,(yyvsp[(5) - (6)].number), (yyvsp[(6) - (6)].id)); }
+ break;
+
+ case 25:
+#line 94 "defparse.y"
+ { def_import ( 0,(yyvsp[(1) - (6)].id),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].id), 0, (yyvsp[(6) - (6)].id)); }
+ break;
+
+ case 26:
+#line 96 "defparse.y"
+ { def_import ( 0,(yyvsp[(1) - (6)].id),(yyvsp[(3) - (6)].id), 0,(yyvsp[(5) - (6)].number), (yyvsp[(6) - (6)].id)); }
+ break;
+
+ case 27:
+#line 98 "defparse.y"
+ { def_import ( 0,(yyvsp[(1) - (4)].id), 0,(yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id)); }
+ break;
+
+ case 28:
+#line 100 "defparse.y"
+ { def_import ( 0,(yyvsp[(1) - (4)].id), 0, 0,(yyvsp[(3) - (4)].number), (yyvsp[(4) - (4)].id)); }
+ break;
+
+ case 31:
+#line 109 "defparse.y"
+ { def_section ((yyvsp[(1) - (2)].id),(yyvsp[(2) - (2)].number));}
+ break;
+
+ case 36:
+#line 121 "defparse.y"
+ { (yyval.number)=(yyvsp[(2) - (2)].number);}
+ break;
+
+ case 37:
+#line 122 "defparse.y"
+ { (yyval.number)=-1;}
+ break;
+
+ case 38:
+#line 126 "defparse.y"
+ { (yyval.number) = 1; }
+ break;
+
+ case 39:
+#line 127 "defparse.y"
+ { (yyval.number) = 2; }
+ break;
+
+ case 40:
+#line 128 "defparse.y"
+ { (yyval.number) = 4; }
+ break;
+
+ case 41:
+#line 129 "defparse.y"
+ { (yyval.number) = 8; }
+ break;
+
+ case 42:
+#line 130 "defparse.y"
+ { (yyval.number) = 0; }
+ break;
+
+ case 43:
+#line 131 "defparse.y"
+ { (yyval.number) = 0; }
+ break;
+
+ case 44:
+#line 132 "defparse.y"
+ { (yyval.number) = 0; }
+ break;
+
+ case 45:
+#line 136 "defparse.y"
+ {(yyval.number)=1;}
+ break;
+
+ case 46:
+#line 137 "defparse.y"
+ {(yyval.number)=0;}
+ break;
+
+ case 47:
+#line 141 "defparse.y"
+ {(yyval.number)=1;}
+ break;
+
+ case 48:
+#line 142 "defparse.y"
+ {(yyval.number)=0;}
+ break;
+
+ case 49:
+#line 146 "defparse.y"
+ { (yyval.number) = 1; }
+ break;
+
+ case 50:
+#line 147 "defparse.y"
+ { (yyval.number) = 0; }
+ break;
+
+ case 51:
+#line 151 "defparse.y"
+ { (yyval.number) = 1; }
+ break;
+
+ case 52:
+#line 152 "defparse.y"
+ { (yyval.number) = 0; }
+ break;
+
+ case 53:
+#line 155 "defparse.y"
+ { (yyval.id_const) = "NAME"; }
+ break;
+
+ case 54:
+#line 160 "defparse.y"
+ { (yyval.id_const) = "DESCRIPTION"; }
+ break;
+
+ case 55:
+#line 161 "defparse.y"
+ { (yyval.id_const) = "STACKSIZE"; }
+ break;
+
+ case 56:
+#line 162 "defparse.y"
+ { (yyval.id_const) = "HEAPSIZE"; }
+ break;
+
+ case 57:
+#line 163 "defparse.y"
+ { (yyval.id_const) = "CODE"; }
+ break;
+
+ case 58:
+#line 164 "defparse.y"
+ { (yyval.id_const) = "DATA"; }
+ break;
+
+ case 59:
+#line 165 "defparse.y"
+ { (yyval.id_const) = "SECTIONS"; }
+ break;
+
+ case 60:
+#line 166 "defparse.y"
+ { (yyval.id_const) = "EXPORTS"; }
+ break;
+
+ case 61:
+#line 167 "defparse.y"
+ { (yyval.id_const) = "IMPORTS"; }
+ break;
+
+ case 62:
+#line 168 "defparse.y"
+ { (yyval.id_const) = "VERSION"; }
+ break;
+
+ case 63:
+#line 169 "defparse.y"
+ { (yyval.id_const) = "BASE"; }
+ break;
+
+ case 64:
+#line 170 "defparse.y"
+ { (yyval.id_const) = "CONSTANT"; }
+ break;
+
+ case 65:
+#line 171 "defparse.y"
+ { (yyval.id_const) = "NONAME"; }
+ break;
+
+ case 66:
+#line 172 "defparse.y"
+ { (yyval.id_const) = "PRIVATE"; }
+ break;
+
+ case 67:
+#line 173 "defparse.y"
+ { (yyval.id_const) = "READ"; }
+ break;
+
+ case 68:
+#line 174 "defparse.y"
+ { (yyval.id_const) = "WRITE"; }
+ break;
+
+ case 69:
+#line 175 "defparse.y"
+ { (yyval.id_const) = "EXECUTE"; }
+ break;
+
+ case 70:
+#line 176 "defparse.y"
+ { (yyval.id_const) = "SHARED"; }
+ break;
+
+ case 71:
+#line 177 "defparse.y"
+ { (yyval.id_const) = "NONSHARED"; }
+ break;
+
+ case 72:
+#line 178 "defparse.y"
+ { (yyval.id_const) = "SINGLE"; }
+ break;
+
+ case 73:
+#line 179 "defparse.y"
+ { (yyval.id_const) = "MULTIPLE"; }
+ break;
+
+ case 74:
+#line 180 "defparse.y"
+ { (yyval.id_const) = "INITINSTANCE"; }
+ break;
+
+ case 75:
+#line 181 "defparse.y"
+ { (yyval.id_const) = "INITGLOBAL"; }
+ break;
+
+ case 76:
+#line 182 "defparse.y"
+ { (yyval.id_const) = "TERMINSTANCE"; }
+ break;
+
+ case 77:
+#line 183 "defparse.y"
+ { (yyval.id_const) = "TERMGLOBAL"; }
+ break;
+
+ case 78:
+#line 186 "defparse.y"
+ { (yyval.id) = (yyvsp[(1) - (1)].id); }
+ break;
+
+ case 79:
+#line 188 "defparse.y"
+ {
+ char *name = xmalloc (strlen ((yyvsp[(2) - (2)].id_const)) + 2);
+ sprintf (name, ".%s", (yyvsp[(2) - (2)].id_const));
+ (yyval.id) = name;
+ }
+ break;
+
+ case 80:
+#line 194 "defparse.y"
+ {
+ char *name = xmalloc (strlen ((yyvsp[(2) - (2)].id)) + 2);
+ sprintf (name, ".%s", (yyvsp[(2) - (2)].id));
+ (yyval.id) = name;
+ }
+ break;
+
+ case 81:
+#line 200 "defparse.y"
+ {
+ char *name = xmalloc (strlen ((yyvsp[(1) - (3)].id_const)) + 1 + strlen ((yyvsp[(3) - (3)].id)) + 1);
+ sprintf (name, "%s.%s", (yyvsp[(1) - (3)].id_const), (yyvsp[(3) - (3)].id));
+ (yyval.id) = name;
+ }
+ break;
+
+ case 82:
+#line 206 "defparse.y"
+ {
+ char *name = xmalloc (strlen ((yyvsp[(1) - (3)].id)) + 1 + strlen ((yyvsp[(3) - (3)].id)) + 1);
+ sprintf (name, "%s.%s", (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id));
+ (yyval.id) = name;
+ }
+ break;
+
+ case 83:
+#line 212 "defparse.y"
+ { (yyval.id) =(yyvsp[(1) - (1)].id); }
+ break;
+
+ case 84:
+#line 213 "defparse.y"
+ { (yyval.id)=""; }
+ break;
+
+ case 85:
+#line 217 "defparse.y"
+ { (yyval.number)=(yyvsp[(2) - (2)].number);}
+ break;
+
+ case 86:
+#line 218 "defparse.y"
+ { (yyval.number)=-1;}
+ break;
+
+ case 87:
+#line 222 "defparse.y"
+ { (yyval.id) = (yyvsp[(2) - (2)].id); }
+ break;
+
+ case 88:
+#line 223 "defparse.y"
+ { (yyval.id) = 0; }
+ break;
+
+ case 89:
+#line 227 "defparse.y"
+ { (yyval.id) = (yyvsp[(2) - (2)].id); }
+ break;
+
+ case 90:
+#line 228 "defparse.y"
+ { (yyval.id) = 0; }
+ break;
+
+ case 91:
+#line 231 "defparse.y"
+ { (yyval.number)= (yyvsp[(3) - (3)].number);}
+ break;
+
+ case 92:
+#line 232 "defparse.y"
+ { (yyval.number)=-1;}
+ break;
+
+
+/* Line 1267 of yacc.c. */
+#line 1929 "defparse.c"
+ default: break;
+ }
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ 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
+ yyerror (YY_("syntax error"));
+#else
+ {
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+#endif
+ }
+
+
+
+ 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 (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ 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 (1);
+ 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);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+
+
diff --git a/binutils-2.24/binutils/defparse.h b/binutils-2.24/binutils/defparse.h
new file mode 100644
index 00000000..e4b6c59f
--- /dev/null
+++ b/binutils-2.24/binutils/defparse.h
@@ -0,0 +1,124 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 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,
+ EQUAL = 284,
+ ID = 285,
+ NUMBER = 286
+ };
+#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 EQUAL 284
+#define ID 285
+#define NUMBER 286
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+#line 29 "defparse.y"
+{
+ char *id;
+ const char *id_const;
+ int number;
+}
+/* Line 1529 of yacc.c. */
+#line 117 "defparse.h"
+ YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
diff --git a/binutils-2.24/binutils/defparse.y b/binutils-2.24/binutils/defparse.y
new file mode 100644
index 00000000..a4e73eb3
--- /dev/null
+++ b/binutils-2.24/binutils/defparse.y
@@ -0,0 +1,245 @@
+%{ /* defparse.y - parser for .def files */
+
+/* Copyright 1995, 1997, 1998, 1999, 2001, 2004, 2005, 2007
+ 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 3 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 "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "dlltool.h"
+%}
+
+%union {
+ char *id;
+ const char *id_const;
+ int number;
+};
+
+%token NAME LIBRARY DESCRIPTION STACKSIZE HEAPSIZE CODE DATA
+%token SECTIONS EXPORTS IMPORTS VERSIONK BASE CONSTANT
+%token READ WRITE EXECUTE SHARED NONSHARED NONAME PRIVATE
+%token SINGLE MULTIPLE INITINSTANCE INITGLOBAL TERMINSTANCE TERMGLOBAL
+%token EQUAL
+%token <id> ID
+%token <number> NUMBER
+%type <number> opt_base opt_ordinal opt_NONAME opt_CONSTANT opt_DATA opt_PRIVATE
+%type <number> attr attr_list opt_number
+%type <id> opt_name opt_name2 opt_equal_name opt_import_name
+%type <id_const> keyword_as_name
+
+%%
+
+start: start command
+ | command
+ ;
+
+command:
+ NAME opt_name opt_base { def_name ($2, $3); }
+ | LIBRARY opt_name opt_base option_list { def_library ($2, $3); }
+ | EXPORTS explist
+ | DESCRIPTION ID { def_description ($2);}
+ | STACKSIZE NUMBER opt_number { def_stacksize ($2, $3);}
+ | HEAPSIZE NUMBER opt_number { def_heapsize ($2, $3);}
+ | CODE attr_list { def_code ($2);}
+ | DATA attr_list { def_data ($2);}
+ | SECTIONS seclist
+ | IMPORTS implist
+ | VERSIONK NUMBER { def_version ($2,0);}
+ | VERSIONK NUMBER '.' NUMBER { def_version ($2,$4);}
+ ;
+
+
+explist:
+ /* EMPTY */
+ | explist expline
+ ;
+
+expline:
+ ID opt_equal_name opt_ordinal opt_NONAME opt_CONSTANT opt_DATA opt_PRIVATE
+ opt_import_name
+ { def_exports ($1, $2, $3, $4, $5, $6, $7, $8);}
+ ;
+implist:
+ implist impline
+ | impline
+ ;
+
+impline:
+ ID '=' ID '.' ID '.' ID opt_import_name
+ { def_import ($1,$3,$5,$7, 0, $8); }
+ | ID '=' ID '.' ID '.' NUMBER opt_import_name
+ { def_import ($1,$3,$5, 0,$7, $8); }
+ | ID '=' ID '.' ID opt_import_name
+ { def_import ($1,$3, 0,$5, 0, $6); }
+ | ID '=' ID '.' NUMBER opt_import_name
+ { def_import ($1,$3, 0, 0,$5, $6); }
+ | ID '.' ID '.' ID opt_import_name
+ { def_import ( 0,$1,$3,$5, 0, $6); }
+ | ID '.' ID '.' NUMBER opt_import_name
+ { def_import ( 0,$1,$3, 0,$5, $6); }
+ | ID '.' ID opt_import_name
+ { def_import ( 0,$1, 0,$3, 0, $4); }
+ | ID '.' NUMBER opt_import_name
+ { def_import ( 0,$1, 0, 0,$3, $4); }
+;
+
+seclist:
+ seclist secline
+ | secline
+ ;
+
+secline:
+ ID attr_list { def_section ($1,$2);}
+ ;
+
+attr_list:
+ attr_list opt_comma attr
+ | attr
+ ;
+
+opt_comma:
+ ','
+ |
+ ;
+opt_number: ',' NUMBER { $$=$2;}
+ | { $$=-1;}
+ ;
+
+attr:
+ READ { $$ = 1; }
+ | WRITE { $$ = 2; }
+ | EXECUTE { $$ = 4; }
+ | SHARED { $$ = 8; }
+ | NONSHARED { $$ = 0; }
+ | SINGLE { $$ = 0; }
+ | MULTIPLE { $$ = 0; }
+ ;
+
+opt_CONSTANT:
+ CONSTANT {$$=1;}
+ | {$$=0;}
+ ;
+
+opt_NONAME:
+ NONAME {$$=1;}
+ | {$$=0;}
+ ;
+
+opt_DATA:
+ DATA { $$ = 1; }
+ | { $$ = 0; }
+ ;
+
+opt_PRIVATE:
+ PRIVATE { $$ = 1; }
+ | { $$ = 0; }
+ ;
+
+keyword_as_name: NAME { $$ = "NAME"; }
+/* Disabled LIBRARY keyword for a quirk in libtool. It places LIBRARY
+ command after EXPORTS list, which is illegal by specification.
+ See PR binutils/13710
+ | LIBRARY { $$ = "LIBRARY"; } */
+ | DESCRIPTION { $$ = "DESCRIPTION"; }
+ | STACKSIZE { $$ = "STACKSIZE"; }
+ | HEAPSIZE { $$ = "HEAPSIZE"; }
+ | CODE { $$ = "CODE"; }
+ | DATA { $$ = "DATA"; }
+ | SECTIONS { $$ = "SECTIONS"; }
+ | EXPORTS { $$ = "EXPORTS"; }
+ | IMPORTS { $$ = "IMPORTS"; }
+ | VERSIONK { $$ = "VERSION"; }
+ | BASE { $$ = "BASE"; }
+ | CONSTANT { $$ = "CONSTANT"; }
+ | NONAME { $$ = "NONAME"; }
+ | PRIVATE { $$ = "PRIVATE"; }
+ | READ { $$ = "READ"; }
+ | WRITE { $$ = "WRITE"; }
+ | EXECUTE { $$ = "EXECUTE"; }
+ | SHARED { $$ = "SHARED"; }
+ | NONSHARED { $$ = "NONSHARED"; }
+ | SINGLE { $$ = "SINGLE"; }
+ | MULTIPLE { $$ = "MULTIPLE"; }
+ | INITINSTANCE { $$ = "INITINSTANCE"; }
+ | INITGLOBAL { $$ = "INITGLOBAL"; }
+ | TERMINSTANCE { $$ = "TERMINSTANCE"; }
+ | TERMGLOBAL { $$ = "TERMGLOBAL"; }
+ ;
+
+opt_name2: ID { $$ = $1; }
+ | '.' keyword_as_name
+ {
+ char *name = xmalloc (strlen ($2) + 2);
+ sprintf (name, ".%s", $2);
+ $$ = name;
+ }
+ | '.' opt_name2
+ {
+ char *name = xmalloc (strlen ($2) + 2);
+ sprintf (name, ".%s", $2);
+ $$ = name;
+ }
+ | keyword_as_name '.' opt_name2
+ {
+ char *name = xmalloc (strlen ($1) + 1 + strlen ($3) + 1);
+ sprintf (name, "%s.%s", $1, $3);
+ $$ = name;
+ }
+ | ID '.' opt_name2
+ {
+ char *name = xmalloc (strlen ($1) + 1 + strlen ($3) + 1);
+ sprintf (name, "%s.%s", $1, $3);
+ $$ = name;
+ }
+ ;
+opt_name: opt_name2 { $$ =$1; }
+ | { $$=""; }
+ ;
+
+opt_ordinal:
+ '@' NUMBER { $$=$2;}
+ | { $$=-1;}
+ ;
+
+opt_import_name:
+ EQUAL opt_name2 { $$ = $2; }
+ | { $$ = 0; }
+ ;
+
+opt_equal_name:
+ '=' opt_name2 { $$ = $2; }
+ | { $$ = 0; }
+ ;
+
+opt_base: BASE '=' NUMBER { $$= $3;}
+ | { $$=-1;}
+ ;
+
+option_list:
+ /* empty */
+ | option_list opt_comma option
+ ;
+
+option:
+ INITINSTANCE
+ | INITGLOBAL
+ | TERMINSTANCE
+ | TERMGLOBAL
+ ;
diff --git a/binutils-2.24/binutils/dep-in.sed b/binutils-2.24/binutils/dep-in.sed
new file mode 100644
index 00000000..4823f1e3
--- /dev/null
+++ b/binutils-2.24/binutils/dep-in.sed
@@ -0,0 +1,20 @@
+:loop
+/\\$/N
+s/\\\n */ /g
+t loop
+
+s! \./! !g
+s!@INCDIR@!$(INCDIR)!g
+s!@TOPDIR@/include!$(INCDIR)!g
+s!@BFDDIR@!$(BFDDIR)!g
+s!@TOPDIR@/bfd!$(BFDDIR)!g
+s!@SRCDIR@/!!g
+s!@OBJDIR@/!!g
+s! \.\./intl/libintl\.h!!g
+
+s/ *$//
+s/ */ /g
+s/^ */A/
+s/ / \\\
+B/g
+$s/$/ \\/
diff --git a/binutils-2.24/binutils/dlltool.c b/binutils-2.24/binutils/dlltool.c
new file mode 100644
index 00000000..0da0011e
--- /dev/null
+++ b/binutils-2.24/binutils/dlltool.c
@@ -0,0 +1,4547 @@
+/* dlltool.c -- tool to generate stuff for PE style DLLs
+ Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006, 2007, 2008, 2009, 2011, 2012 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 3 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 program allows you to build the files necessary to create
+ DLLs to run on a system which understands PE format image files.
+ (eg, Windows NT)
+
+ See "Peering Inside the PE: A Tour of the Win32 Portable Executable
+ File Format", MSJ 1994, Volume 9 for more information.
+ Also see "Microsoft Portable Executable and Common Object File Format,
+ Specification 4.1" for more information.
+
+ A DLL contains an export table which contains the information
+ which the runtime loader needs to tie up 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.
+
+ A DEF file contains any number of the following commands:
+
+
+ NAME <name> [ , <base> ]
+ The result is going to be <name>.EXE
+
+ LIBRARY <name> [ , <base> ]
+ The result is going to be <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 refereed to in the body of the DLL.
+
+ DESCRIPTION <string>
+ Puts <string> into output .exp file in the .rdata section
+
+ [STACKSIZE|HEAPSIZE] <number-reserve> [ , <number-commit> ]
+ Generates --stack|--heap <number-reserve>,<number-commit>
+ in the output .drectve section. The linker will
+ see this and act upon it.
+
+ [CODE|DATA] <attr>+
+ SECTIONS ( <sectionname> <attr>+ )*
+ <attr> = READ | WRITE | EXECUTE | SHARED
+ Generates --attr <sectionname> <attr> in the output
+ .drectve section. The linker will see this and act
+ upon it.
+
+
+ A -export:<name> in a .drectve section in an input .o or .a
+ file to this program is equivalent to a EXPORTS <name>
+ in a .DEF file.
+
+
+
+ The program generates output files with the prefix supplied
+ on the command line, or in the def file, or taken from the first
+ supplied argument.
+
+ The .exp.s file contains the information necessary to export
+ the routines in the DLL. The .lib.s file contains the information
+ necessary to use the DLL's routines from a referencing program.
+
+
+
+ Example:
+
+ file1.c:
+ asm (".section .drectve");
+ asm (".ascii \"-export:adef\"");
+
+ void adef (char * s)
+ {
+ printf ("hello from the dll %s\n", s);
+ }
+
+ void bdef (char * s)
+ {
+ printf ("hello from the dll and the other entry point %s\n", s);
+ }
+
+ file2.c:
+ asm (".section .drectve");
+ asm (".ascii \"-export:cdef\"");
+ asm (".ascii \"-export:ddef\"");
+
+ void cdef (char * s)
+ {
+ printf ("hello from the dll %s\n", s);
+ }
+
+ void ddef (char * s)
+ {
+ printf ("hello from the dll and the other entry point %s\n", s);
+ }
+
+ int printf (void)
+ {
+ return 9;
+ }
+
+ themain.c:
+ int main (void)
+ {
+ cdef ();
+ return 0;
+ }
+
+ thedll.def
+
+ LIBRARY thedll
+ HEAPSIZE 0x40000, 0x2000
+ EXPORTS bdef @ 20
+ cdef @ 30 NONAME
+
+ SECTIONS donkey READ WRITE
+ aardvark EXECUTE
+
+ # Compile up the parts of the dll and the program
+
+ gcc -c file1.c file2.c themain.c
+
+ # Optional: put the dll objects into a library
+ # (you don't have to, you could name all the object
+ # files on the dlltool line)
+
+ ar qcv thedll.in file1.o file2.o
+ ranlib thedll.in
+
+ # Run this tool over the DLL's .def file and generate an exports
+ # file (thedll.o) and an imports file (thedll.a).
+ # (You may have to use -S to tell dlltool where to find the assembler).
+
+ dlltool --def thedll.def --output-exp thedll.o --output-lib thedll.a
+
+ # Build the dll with the library and the export table
+
+ ld -o thedll.dll thedll.o thedll.in
+
+ # Link the executable with the import library
+
+ gcc -o themain.exe themain.o thedll.a
+
+ This example can be extended if relocations are needed in the DLL:
+
+ # Compile up the parts of the dll and the program
+
+ gcc -c file1.c file2.c themain.c
+
+ # Run this tool over the DLL's .def file and generate an imports file.
+
+ dlltool --def thedll.def --output-lib thedll.lib
+
+ # Link the executable with the import library and generate a base file
+ # at the same time
+
+ gcc -o themain.exe themain.o thedll.lib -Wl,--base-file -Wl,themain.base
+
+ # Run this tool over the DLL's .def file and generate an exports file
+ # which includes the relocations from the base file.
+
+ dlltool --def thedll.def --base-file themain.base --output-exp thedll.exp
+
+ # Build the dll with file1.o, file2.o and the export table
+
+ ld -o thedll.dll thedll.exp file1.o file2.o */
+
+/* .idata section description
+
+ The .idata section is the import table. It is a collection of several
+ subsections used to keep the pieces for each dll together: .idata$[234567].
+ IE: Each dll's .idata$2's are catenated together, each .idata$3's, etc.
+
+ .idata$2 = Import Directory Table
+ = array of IMAGE_IMPORT_DESCRIPTOR's.
+
+ DWORD Import Lookup Table; - pointer to .idata$4
+ DWORD TimeDateStamp; - currently always 0
+ DWORD ForwarderChain; - currently always 0
+ DWORD Name; - pointer to dll's name
+ PIMAGE_THUNK_DATA FirstThunk; - pointer to .idata$5
+
+ .idata$3 = null terminating entry for .idata$2.
+
+ .idata$4 = Import Lookup Table
+ = array of array of pointers to hint name table.
+ There is one for each dll being imported from, and each dll's set is
+ terminated by a trailing NULL.
+
+ .idata$5 = Import Address Table
+ = array of array of pointers to hint name table.
+ There is one for each dll being imported from, and each dll's set is
+ terminated by a trailing NULL.
+ Initially, this table is identical to the Import Lookup Table. However,
+ at load time, the loader overwrites the entries with the address of the
+ function.
+
+ .idata$6 = Hint Name Table
+ = Array of { short, asciz } entries, one for each imported function.
+ The `short' is the function's ordinal number.
+
+ .idata$7 = dll name (eg: "kernel32.dll"). (.idata$6 for ppc). */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "getopt.h"
+#include "demangle.h"
+#include "dyn-string.h"
+#include "bucomm.h"
+#include "dlltool.h"
+#include "safe-ctype.h"
+
+#include <time.h>
+#include <assert.h>
+
+#ifdef DLLTOOL_ARM
+#include "coff/arm.h"
+#include "coff/internal.h"
+#endif
+#ifdef DLLTOOL_DEFAULT_MX86_64
+#include "coff/x86_64.h"
+#endif
+#ifdef DLLTOOL_DEFAULT_I386
+#include "coff/i386.h"
+#endif
+
+#ifndef COFF_PAGE_SIZE
+#define COFF_PAGE_SIZE ((bfd_vma) 4096)
+#endif
+
+#ifndef PAGE_MASK
+#define PAGE_MASK ((bfd_vma) (- COFF_PAGE_SIZE))
+#endif
+
+/* Get current BFD error message. */
+#define bfd_get_errmsg() (bfd_errmsg (bfd_get_error ()))
+
+/* Forward references. */
+static char *look_for_prog (const char *, const char *, int);
+static char *deduce_name (const char *);
+
+#ifdef DLLTOOL_MCORE_ELF
+static void mcore_elf_cache_filename (const char *);
+static void mcore_elf_gen_out_file (void);
+#endif
+
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#else /* ! HAVE_SYS_WAIT_H */
+#if ! defined (_WIN32) || defined (__CYGWIN32__)
+#ifndef WIFEXITED
+#define WIFEXITED(w) (((w) & 0377) == 0)
+#endif
+#ifndef WIFSIGNALED
+#define WIFSIGNALED(w) (((w) & 0377) != 0177 && ((w) & ~0377) == 0)
+#endif
+#ifndef WTERMSIG
+#define WTERMSIG(w) ((w) & 0177)
+#endif
+#ifndef WEXITSTATUS
+#define WEXITSTATUS(w) (((w) >> 8) & 0377)
+#endif
+#else /* defined (_WIN32) && ! defined (__CYGWIN32__) */
+#ifndef WIFEXITED
+#define WIFEXITED(w) (((w) & 0xff) == 0)
+#endif
+#ifndef WIFSIGNALED
+#define WIFSIGNALED(w) (((w) & 0xff) != 0 && ((w) & 0xff) != 0x7f)
+#endif
+#ifndef WTERMSIG
+#define WTERMSIG(w) ((w) & 0x7f)
+#endif
+#ifndef WEXITSTATUS
+#define WEXITSTATUS(w) (((w) & 0xff00) >> 8)
+#endif
+#endif /* defined (_WIN32) && ! defined (__CYGWIN32__) */
+#endif /* ! HAVE_SYS_WAIT_H */
+
+#define show_allnames 0
+
+/* ifunc and ihead data structures: ttk@cygnus.com 1997
+
+ When IMPORT declarations are encountered in a .def file the
+ function import information is stored in a structure referenced by
+ the global variable IMPORT_LIST. The structure is a linked list
+ containing the names of the dll files each function is imported
+ from and a linked list of functions being imported from that dll
+ file. This roughly parallels the structure of the .idata section
+ in the PE object file.
+
+ The contents of .def file are interpreted from within the
+ process_def_file function. Every time an IMPORT declaration is
+ encountered, it is broken up into its component parts and passed to
+ def_import. IMPORT_LIST is initialized to NULL in function main. */
+
+typedef struct ifunct
+{
+ char * name; /* Name of function being imported. */
+ char * its_name; /* Optional import table symbol name. */
+ int ord; /* Two-byte ordinal value associated with function. */
+ struct ifunct *next;
+} ifunctype;
+
+typedef struct iheadt
+{
+ char * dllname; /* Name of dll file imported from. */
+ long nfuncs; /* Number of functions in list. */
+ struct ifunct *funchead; /* First function in list. */
+ struct ifunct *functail; /* Last function in list. */
+ struct iheadt *next; /* Next dll file in list. */
+} iheadtype;
+
+/* Structure containing all import information as defined in .def file
+ (qv "ihead structure"). */
+
+static iheadtype *import_list = NULL;
+static char *as_name = NULL;
+static char * as_flags = "";
+static char *tmp_prefix;
+static int no_idata4;
+static int no_idata5;
+static char *exp_name;
+static char *imp_name;
+static char *delayimp_name;
+static char *identify_imp_name;
+static bfd_boolean identify_strict;
+
+/* Types used to implement a linked list of dllnames associated
+ with the specified import lib. Used by the identify_* code.
+ The head entry is acts as a sentinal node and is always empty
+ (head->dllname is NULL). */
+typedef struct dll_name_list_node_t
+{
+ char * dllname;
+ struct dll_name_list_node_t * next;
+} dll_name_list_node_type;
+
+typedef struct dll_name_list_t
+{
+ dll_name_list_node_type * head;
+ dll_name_list_node_type * tail;
+} dll_name_list_type;
+
+/* Types used to pass data to iterator functions. */
+typedef struct symname_search_data_t
+{
+ const char * symname;
+ bfd_boolean found;
+} symname_search_data_type;
+
+typedef struct identify_data_t
+{
+ dll_name_list_type * list;
+ bfd_boolean ms_style_implib;
+} identify_data_type;
+
+
+static char *head_label;
+static char *imp_name_lab;
+static char *dll_name;
+static int dll_name_set_by_exp_name;
+static int add_indirect = 0;
+static int add_underscore = 0;
+static int add_stdcall_underscore = 0;
+/* This variable can hold three different values. The value
+ -1 (default) means that default underscoring should be used,
+ zero means that no underscoring should be done, and one
+ indicates that underscoring should be done. */
+static int leading_underscore = -1;
+static int dontdeltemps = 0;
+
+/* TRUE if we should export all symbols. Otherwise, we only export
+ symbols listed in .drectve sections or in the def file. */
+static bfd_boolean export_all_symbols;
+
+/* TRUE if we should exclude the symbols in DEFAULT_EXCLUDES when
+ exporting all symbols. */
+static bfd_boolean do_default_excludes = TRUE;
+
+static bfd_boolean use_nul_prefixed_import_tables = FALSE;
+
+/* Default symbols to exclude when exporting all the symbols. */
+static const char *default_excludes = "DllMain@12,DllEntryPoint@0,impure_ptr";
+
+/* TRUE if we should add __imp_<SYMBOL> to import libraries for backward
+ compatibility to old Cygwin releases. */
+static bfd_boolean create_compat_implib;
+
+/* TRUE if we have to write PE+ import libraries. */
+static bfd_boolean create_for_pep;
+
+static char *def_file;
+
+extern char * program_name;
+
+static int machine;
+static int killat;
+static int add_stdcall_alias;
+static const char *ext_prefix_alias;
+static int verbose;
+static FILE *output_def;
+static FILE *base_file;
+
+#ifdef DLLTOOL_DEFAULT_ARM
+static const char *mname = "arm";
+#endif
+
+#ifdef DLLTOOL_DEFAULT_ARM_EPOC
+static const char *mname = "arm-epoc";
+#endif
+
+#ifdef DLLTOOL_DEFAULT_ARM_WINCE
+static const char *mname = "arm-wince";
+#endif
+
+#ifdef DLLTOOL_DEFAULT_I386
+static const char *mname = "i386";
+#endif
+
+#ifdef DLLTOOL_DEFAULT_MX86_64
+static const char *mname = "i386:x86-64";
+#endif
+
+#ifdef DLLTOOL_DEFAULT_PPC
+static const char *mname = "ppc";
+#endif
+
+#ifdef DLLTOOL_DEFAULT_SH
+static const char *mname = "sh";
+#endif
+
+#ifdef DLLTOOL_DEFAULT_MIPS
+static const char *mname = "mips";
+#endif
+
+#ifdef DLLTOOL_DEFAULT_MCORE
+static const char * mname = "mcore-le";
+#endif
+
+#ifdef DLLTOOL_DEFAULT_MCORE_ELF
+static const char * mname = "mcore-elf";
+static char * mcore_elf_out_file = NULL;
+static char * mcore_elf_linker = NULL;
+static char * mcore_elf_linker_flags = NULL;
+
+#define DRECTVE_SECTION_NAME ((machine == MMCORE_ELF || machine == MMCORE_ELF_LE) ? ".exports" : ".drectve")
+#endif
+
+#ifndef DRECTVE_SECTION_NAME
+#define DRECTVE_SECTION_NAME ".drectve"
+#endif
+
+/* What's the right name for this ? */
+#define PATHMAX 250
+
+/* External name alias numbering starts here. */
+#define PREFIX_ALIAS_BASE 20000
+
+char *tmp_asm_buf;
+char *tmp_head_s_buf;
+char *tmp_head_o_buf;
+char *tmp_tail_s_buf;
+char *tmp_tail_o_buf;
+char *tmp_stub_buf;
+
+#define TMP_ASM dlltmp (&tmp_asm_buf, "%sc.s")
+#define TMP_HEAD_S dlltmp (&tmp_head_s_buf, "%sh.s")
+#define TMP_HEAD_O dlltmp (&tmp_head_o_buf, "%sh.o")
+#define TMP_TAIL_S dlltmp (&tmp_tail_s_buf, "%st.s")
+#define TMP_TAIL_O dlltmp (&tmp_tail_o_buf, "%st.o")
+#define TMP_STUB dlltmp (&tmp_stub_buf, "%ss")
+
+/* This bit of assembly does jmp * .... */
+static const unsigned char i386_jtab[] =
+{
+ 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x90, 0x90
+};
+
+static const unsigned char i386_dljtab[] =
+{
+ 0xFF, 0x25, 0x00, 0x00, 0x00, 0x00, /* jmp __imp__function */
+ 0xB8, 0x00, 0x00, 0x00, 0x00, /* mov eax, offset __imp__function */
+ 0xE9, 0x00, 0x00, 0x00, 0x00 /* jmp __tailMerge__dllname */
+};
+
+static const unsigned char i386_x64_dljtab[] =
+{
+ 0xFF, 0x25, 0x00, 0x00, 0x00, 0x00, /* jmp __imp__function */
+ 0x48, 0x8d, 0x05, /* leaq rax, (__imp__function) */
+ 0x00, 0x00, 0x00, 0x00,
+ 0xE9, 0x00, 0x00, 0x00, 0x00 /* jmp __tailMerge__dllname */
+};
+
+static const unsigned char arm_jtab[] =
+{
+ 0x00, 0xc0, 0x9f, 0xe5, /* ldr ip, [pc] */
+ 0x00, 0xf0, 0x9c, 0xe5, /* ldr pc, [ip] */
+ 0, 0, 0, 0
+};
+
+static const unsigned char arm_interwork_jtab[] =
+{
+ 0x04, 0xc0, 0x9f, 0xe5, /* ldr ip, [pc] */
+ 0x00, 0xc0, 0x9c, 0xe5, /* ldr ip, [ip] */
+ 0x1c, 0xff, 0x2f, 0xe1, /* bx ip */
+ 0, 0, 0, 0
+};
+
+static const unsigned char thumb_jtab[] =
+{
+ 0x40, 0xb4, /* push {r6} */
+ 0x02, 0x4e, /* ldr r6, [pc, #8] */
+ 0x36, 0x68, /* ldr r6, [r6] */
+ 0xb4, 0x46, /* mov ip, r6 */
+ 0x40, 0xbc, /* pop {r6} */
+ 0x60, 0x47, /* bx ip */
+ 0, 0, 0, 0
+};
+
+static const unsigned char mcore_be_jtab[] =
+{
+ 0x71, 0x02, /* lrw r1,2 */
+ 0x81, 0x01, /* ld.w r1,(r1,0) */
+ 0x00, 0xC1, /* jmp r1 */
+ 0x12, 0x00, /* nop */
+ 0x00, 0x00, 0x00, 0x00 /* <address> */
+};
+
+static const unsigned char mcore_le_jtab[] =
+{
+ 0x02, 0x71, /* lrw r1,2 */
+ 0x01, 0x81, /* ld.w r1,(r1,0) */
+ 0xC1, 0x00, /* jmp r1 */
+ 0x00, 0x12, /* nop */
+ 0x00, 0x00, 0x00, 0x00 /* <address> */
+};
+
+/* This is the glue sequence for PowerPC PE. There is a
+ tocrel16-tocdefn reloc against the first instruction.
+ We also need a IMGLUE reloc against the glue function
+ to restore the toc saved by the third instruction in
+ the glue. */
+static const unsigned char ppc_jtab[] =
+{
+ 0x00, 0x00, 0x62, 0x81, /* lwz r11,0(r2) */
+ /* Reloc TOCREL16 __imp_xxx */
+ 0x00, 0x00, 0x8B, 0x81, /* lwz r12,0(r11) */
+ 0x04, 0x00, 0x41, 0x90, /* stw r2,4(r1) */
+ 0xA6, 0x03, 0x89, 0x7D, /* mtctr r12 */
+ 0x04, 0x00, 0x4B, 0x80, /* lwz r2,4(r11) */
+ 0x20, 0x04, 0x80, 0x4E /* bctr */
+};
+
+#ifdef DLLTOOL_PPC
+/* The glue instruction, picks up the toc from the stw in
+ the above code: "lwz r2,4(r1)". */
+static bfd_vma ppc_glue_insn = 0x80410004;
+#endif
+
+static const char i386_trampoline[] =
+ "\tpushl %%ecx\n"
+ "\tpushl %%edx\n"
+ "\tpushl %%eax\n"
+ "\tpushl $__DELAY_IMPORT_DESCRIPTOR_%s\n"
+ "\tcall ___delayLoadHelper2@8\n"
+ "\tpopl %%edx\n"
+ "\tpopl %%ecx\n"
+ "\tjmp *%%eax\n";
+
+static const char i386_x64_trampoline[] =
+ "\tpushq %%rcx\n"
+ "\tpushq %%rdx\n"
+ "\tpushq %%r8\n"
+ "\tpushq %%r9\n"
+ "\tsubq $40, %%rsp\n"
+ "\tmovq %%rax, %%rdx\n"
+ "\tleaq __DELAY_IMPORT_DESCRIPTOR_%s(%%rip), %%rcx\n"
+ "\tcall __delayLoadHelper2\n"
+ "\taddq $40, %%rsp\n"
+ "\tpopq %%r9\n"
+ "\tpopq %%r8\n"
+ "\tpopq %%rdx\n"
+ "\tpopq %%rcx\n"
+ "\tjmp *%%rax\n";
+
+struct mac
+{
+ const char *type;
+ const char *how_byte;
+ const char *how_short;
+ const char *how_long;
+ const char *how_asciz;
+ const char *how_comment;
+ const char *how_jump;
+ const char *how_global;
+ const char *how_space;
+ const char *how_align_short;
+ const char *how_align_long;
+ const char *how_default_as_switches;
+ const char *how_bfd_target;
+ enum bfd_architecture how_bfd_arch;
+ const unsigned char *how_jtab;
+ int how_jtab_size; /* Size of the jtab entry. */
+ int how_jtab_roff; /* Offset into it for the ind 32 reloc into idata 5. */
+ const unsigned char *how_dljtab;
+ int how_dljtab_size; /* Size of the dljtab entry. */
+ int how_dljtab_roff1; /* Offset for the ind 32 reloc into idata 5. */
+ int how_dljtab_roff2; /* Offset for the ind 32 reloc into idata 5. */
+ int how_dljtab_roff3; /* Offset for the ind 32 reloc into idata 5. */
+ const char *trampoline;
+};
+
+static const struct mac
+mtable[] =
+{
+ {
+#define MARM 0
+ "arm", ".byte", ".short", ".long", ".asciz", "@",
+ "ldr\tip,[pc]\n\tldr\tpc,[ip]\n\t.long",
+ ".global", ".space", ".align\t2",".align\t4", "-mapcs-32",
+ "pe-arm-little", bfd_arch_arm,
+ arm_jtab, sizeof (arm_jtab), 8,
+ 0, 0, 0, 0, 0, 0
+ }
+ ,
+ {
+#define M386 1
+ "i386", ".byte", ".short", ".long", ".asciz", "#",
+ "jmp *", ".global", ".space", ".align\t2",".align\t4", "",
+ "pe-i386",bfd_arch_i386,
+ i386_jtab, sizeof (i386_jtab), 2,
+ i386_dljtab, sizeof (i386_dljtab), 2, 7, 12, i386_trampoline
+ }
+ ,
+ {
+#define MPPC 2
+ "ppc", ".byte", ".short", ".long", ".asciz", "#",
+ "jmp *", ".global", ".space", ".align\t2",".align\t4", "",
+ "pe-powerpcle",bfd_arch_powerpc,
+ ppc_jtab, sizeof (ppc_jtab), 0,
+ 0, 0, 0, 0, 0, 0
+ }
+ ,
+ {
+#define MTHUMB 3
+ "thumb", ".byte", ".short", ".long", ".asciz", "@",
+ "push\t{r6}\n\tldr\tr6, [pc, #8]\n\tldr\tr6, [r6]\n\tmov\tip, r6\n\tpop\t{r6}\n\tbx\tip",
+ ".global", ".space", ".align\t2",".align\t4", "-mthumb-interwork",
+ "pe-arm-little", bfd_arch_arm,
+ thumb_jtab, sizeof (thumb_jtab), 12,
+ 0, 0, 0, 0, 0, 0
+ }
+ ,
+#define MARM_INTERWORK 4
+ {
+ "arm_interwork", ".byte", ".short", ".long", ".asciz", "@",
+ "ldr\tip,[pc]\n\tldr\tip,[ip]\n\tbx\tip\n\t.long",
+ ".global", ".space", ".align\t2",".align\t4", "-mthumb-interwork",
+ "pe-arm-little", bfd_arch_arm,
+ arm_interwork_jtab, sizeof (arm_interwork_jtab), 12,
+ 0, 0, 0, 0, 0, 0
+ }
+ ,
+ {
+#define MMCORE_BE 5
+ "mcore-be", ".byte", ".short", ".long", ".asciz", "//",
+ "lrw r1,[1f]\n\tld.w r1,(r1,0)\n\tjmp r1\n\tnop\n1:.long",
+ ".global", ".space", ".align\t2",".align\t4", "",
+ "pe-mcore-big", bfd_arch_mcore,
+ mcore_be_jtab, sizeof (mcore_be_jtab), 8,
+ 0, 0, 0, 0, 0, 0
+ }
+ ,
+ {
+#define MMCORE_LE 6
+ "mcore-le", ".byte", ".short", ".long", ".asciz", "//",
+ "lrw r1,[1f]\n\tld.w r1,(r1,0)\n\tjmp r1\n\tnop\n1:.long",
+ ".global", ".space", ".align\t2",".align\t4", "-EL",
+ "pe-mcore-little", bfd_arch_mcore,
+ mcore_le_jtab, sizeof (mcore_le_jtab), 8,
+ 0, 0, 0, 0, 0, 0
+ }
+ ,
+ {
+#define MMCORE_ELF 7
+ "mcore-elf-be", ".byte", ".short", ".long", ".asciz", "//",
+ "lrw r1,[1f]\n\tld.w r1,(r1,0)\n\tjmp r1\n\tnop\n1:.long",
+ ".global", ".space", ".align\t2",".align\t4", "",
+ "elf32-mcore-big", bfd_arch_mcore,
+ mcore_be_jtab, sizeof (mcore_be_jtab), 8,
+ 0, 0, 0, 0, 0, 0
+ }
+ ,
+ {
+#define MMCORE_ELF_LE 8
+ "mcore-elf-le", ".byte", ".short", ".long", ".asciz", "//",
+ "lrw r1,[1f]\n\tld.w r1,(r1,0)\n\tjmp r1\n\tnop\n1:.long",
+ ".global", ".space", ".align\t2",".align\t4", "-EL",
+ "elf32-mcore-little", bfd_arch_mcore,
+ mcore_le_jtab, sizeof (mcore_le_jtab), 8,
+ 0, 0, 0, 0, 0, 0
+ }
+ ,
+ {
+#define MARM_EPOC 9
+ "arm-epoc", ".byte", ".short", ".long", ".asciz", "@",
+ "ldr\tip,[pc]\n\tldr\tpc,[ip]\n\t.long",
+ ".global", ".space", ".align\t2",".align\t4", "",
+ "epoc-pe-arm-little", bfd_arch_arm,
+ arm_jtab, sizeof (arm_jtab), 8,
+ 0, 0, 0, 0, 0, 0
+ }
+ ,
+ {
+#define MARM_WINCE 10
+ "arm-wince", ".byte", ".short", ".long", ".asciz", "@",
+ "ldr\tip,[pc]\n\tldr\tpc,[ip]\n\t.long",
+ ".global", ".space", ".align\t2",".align\t4", "-mapcs-32",
+ "pe-arm-wince-little", bfd_arch_arm,
+ arm_jtab, sizeof (arm_jtab), 8,
+ 0, 0, 0, 0, 0, 0
+ }
+ ,
+ {
+#define MX86 11
+ "i386:x86-64", ".byte", ".short", ".long", ".asciz", "#",
+ "jmp *", ".global", ".space", ".align\t2",".align\t4", "",
+ "pe-x86-64",bfd_arch_i386,
+ i386_jtab, sizeof (i386_jtab), 2,
+ i386_x64_dljtab, sizeof (i386_x64_dljtab), 2, 9, 14, i386_x64_trampoline
+ }
+ ,
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+typedef struct dlist
+{
+ char *text;
+ struct dlist *next;
+}
+dlist_type;
+
+typedef struct export
+{
+ const char *name;
+ const char *internal_name;
+ const char *import_name;
+ const char *its_name;
+ int ordinal;
+ int constant;
+ int noname; /* Don't put name in image file. */
+ int private; /* Don't put reference in import lib. */
+ int data;
+ int hint;
+ int forward; /* Number of forward label, 0 means no forward. */
+ struct export *next;
+}
+export_type;
+
+/* A list of symbols which we should not export. */
+
+struct string_list
+{
+ struct string_list *next;
+ char *string;
+};
+
+static struct string_list *excludes;
+
+static const char *rvaafter (int);
+static const char *rvabefore (int);
+static const char *asm_prefix (int, const char *);
+static void process_def_file (const char *);
+static void new_directive (char *);
+static void append_import (const char *, const char *, int, const char *);
+static void run (const char *, char *);
+static void scan_drectve_symbols (bfd *);
+static void scan_filtered_symbols (bfd *, void *, long, unsigned int);
+static void add_excludes (const char *);
+static bfd_boolean match_exclude (const char *);
+static void set_default_excludes (void);
+static long filter_symbols (bfd *, void *, long, unsigned int);
+static void scan_all_symbols (bfd *);
+static void scan_open_obj_file (bfd *);
+static void scan_obj_file (const char *);
+static void dump_def_info (FILE *);
+static int sfunc (const void *, const void *);
+static void flush_page (FILE *, bfd_vma *, bfd_vma, int);
+static void gen_def_file (void);
+static void generate_idata_ofile (FILE *);
+static void assemble_file (const char *, const char *);
+static void gen_exp_file (void);
+static const char *xlate (const char *);
+static char *make_label (const char *, const char *);
+static char *make_imp_label (const char *, const char *);
+static bfd *make_one_lib_file (export_type *, int, int);
+static bfd *make_head (void);
+static bfd *make_tail (void);
+static bfd *make_delay_head (void);
+static void gen_lib_file (int);
+static void dll_name_list_append (dll_name_list_type *, bfd_byte *);
+static int dll_name_list_count (dll_name_list_type *);
+static void dll_name_list_print (dll_name_list_type *);
+static void dll_name_list_free_contents (dll_name_list_node_type *);
+static void dll_name_list_free (dll_name_list_type *);
+static dll_name_list_type * dll_name_list_create (void);
+static void identify_dll_for_implib (void);
+static void identify_search_archive
+ (bfd *, void (*) (bfd *, bfd *, void *), void *);
+static void identify_search_member (bfd *, bfd *, void *);
+static bfd_boolean identify_process_section_p (asection *, bfd_boolean);
+static void identify_search_section (bfd *, asection *, void *);
+static void identify_member_contains_symname (bfd *, bfd *, void *);
+
+static int pfunc (const void *, const void *);
+static int nfunc (const void *, const void *);
+static void remove_null_names (export_type **);
+static void process_duplicates (export_type **);
+static void fill_ordinals (export_type **);
+static void mangle_defs (void);
+static void usage (FILE *, int);
+static void inform (const char *, ...) ATTRIBUTE_PRINTF_1;
+static void set_dll_name_from_def (const char *name, char is_dll);
+
+static char *
+prefix_encode (char *start, unsigned code)
+{
+ static char alpha[26] = "abcdefghijklmnopqrstuvwxyz";
+ static char buf[32];
+ char *p;
+ strcpy (buf, start);
+ p = strchr (buf, '\0');
+ do
+ *p++ = alpha[code % sizeof (alpha)];
+ while ((code /= sizeof (alpha)) != 0);
+ *p = '\0';
+ return buf;
+}
+
+static char *
+dlltmp (char **buf, const char *fmt)
+{
+ if (!*buf)
+ {
+ *buf = malloc (strlen (tmp_prefix) + 64);
+ sprintf (*buf, fmt, tmp_prefix);
+ }
+ return *buf;
+}
+
+static void
+inform VPARAMS ((const char * message, ...))
+{
+ VA_OPEN (args, message);
+ VA_FIXEDARG (args, const char *, message);
+
+ if (!verbose)
+ return;
+
+ report (message, args);
+
+ VA_CLOSE (args);
+}
+
+static const char *
+rvaafter (int mach)
+{
+ switch (mach)
+ {
+ case MARM:
+ case M386:
+ case MX86:
+ case MPPC:
+ case MTHUMB:
+ case MARM_INTERWORK:
+ case MMCORE_BE:
+ case MMCORE_LE:
+ case MMCORE_ELF:
+ case MMCORE_ELF_LE:
+ case MARM_EPOC:
+ case MARM_WINCE:
+ break;
+ default:
+ /* xgettext:c-format */
+ fatal (_("Internal error: Unknown machine type: %d"), mach);
+ break;
+ }
+ return "";
+}
+
+static const char *
+rvabefore (int mach)
+{
+ switch (mach)
+ {
+ case MARM:
+ case M386:
+ case MX86:
+ case MPPC:
+ case MTHUMB:
+ case MARM_INTERWORK:
+ case MMCORE_BE:
+ case MMCORE_LE:
+ case MMCORE_ELF:
+ case MMCORE_ELF_LE:
+ case MARM_EPOC:
+ case MARM_WINCE:
+ return ".rva\t";
+ default:
+ /* xgettext:c-format */
+ fatal (_("Internal error: Unknown machine type: %d"), mach);
+ break;
+ }
+ return "";
+}
+
+static const char *
+asm_prefix (int mach, const char *name)
+{
+ switch (mach)
+ {
+ case MARM:
+ case MPPC:
+ case MTHUMB:
+ case MARM_INTERWORK:
+ case MMCORE_BE:
+ case MMCORE_LE:
+ case MMCORE_ELF:
+ case MMCORE_ELF_LE:
+ case MARM_EPOC:
+ case MARM_WINCE:
+ break;
+ case M386:
+ case MX86:
+ /* Symbol names starting with ? do not have a leading underscore. */
+ if ((name && *name == '?') || leading_underscore == 0)
+ break;
+ else
+ return "_";
+ default:
+ /* xgettext:c-format */
+ fatal (_("Internal error: Unknown machine type: %d"), mach);
+ break;
+ }
+ return "";
+}
+
+#define ASM_BYTE mtable[machine].how_byte
+#define ASM_SHORT mtable[machine].how_short
+#define ASM_LONG mtable[machine].how_long
+#define ASM_TEXT mtable[machine].how_asciz
+#define ASM_C mtable[machine].how_comment
+#define ASM_JUMP mtable[machine].how_jump
+#define ASM_GLOBAL mtable[machine].how_global
+#define ASM_SPACE mtable[machine].how_space
+#define ASM_ALIGN_SHORT mtable[machine].how_align_short
+#define ASM_RVA_BEFORE rvabefore (machine)
+#define ASM_RVA_AFTER rvaafter (machine)
+#define ASM_PREFIX(NAME) asm_prefix (machine, (NAME))
+#define ASM_ALIGN_LONG mtable[machine].how_align_long
+#define HOW_BFD_READ_TARGET 0 /* Always default. */
+#define HOW_BFD_WRITE_TARGET mtable[machine].how_bfd_target
+#define HOW_BFD_ARCH mtable[machine].how_bfd_arch
+#define HOW_JTAB (delay ? mtable[machine].how_dljtab \
+ : mtable[machine].how_jtab)
+#define HOW_JTAB_SIZE (delay ? mtable[machine].how_dljtab_size \
+ : mtable[machine].how_jtab_size)
+#define HOW_JTAB_ROFF (delay ? mtable[machine].how_dljtab_roff1 \
+ : mtable[machine].how_jtab_roff)
+#define HOW_JTAB_ROFF2 (delay ? mtable[machine].how_dljtab_roff2 : 0)
+#define HOW_JTAB_ROFF3 (delay ? mtable[machine].how_dljtab_roff3 : 0)
+#define ASM_SWITCHES mtable[machine].how_default_as_switches
+
+static char **oav;
+
+static void
+process_def_file (const char *name)
+{
+ FILE *f = fopen (name, FOPEN_RT);
+
+ if (!f)
+ /* xgettext:c-format */
+ fatal (_("Can't open def file: %s"), name);
+
+ yyin = f;
+
+ /* xgettext:c-format */
+ inform (_("Processing def file: %s"), name);
+
+ yyparse ();
+
+ inform (_("Processed def file"));
+}
+
+/**********************************************************************/
+
+/* Communications with the parser. */
+
+static int d_nfuncs; /* Number of functions exported. */
+static int d_named_nfuncs; /* Number of named functions exported. */
+static int d_low_ord; /* Lowest ordinal index. */
+static int d_high_ord; /* Highest ordinal index. */
+static export_type *d_exports; /* List of exported functions. */
+static export_type **d_exports_lexically; /* Vector of exported functions in alpha order. */
+static dlist_type *d_list; /* Descriptions. */
+static dlist_type *a_list; /* Stuff to go in directives. */
+static int d_nforwards = 0; /* Number of forwarded exports. */
+
+static int d_is_dll;
+static int d_is_exe;
+
+int
+yyerror (const char * err ATTRIBUTE_UNUSED)
+{
+ /* xgettext:c-format */
+ non_fatal (_("Syntax error in def file %s:%d"), def_file, linenumber);
+
+ return 0;
+}
+
+void
+def_exports (const char *name, const char *internal_name, int ordinal,
+ int noname, int constant, int data, int private,
+ const char *its_name)
+{
+ struct export *p = (struct export *) xmalloc (sizeof (*p));
+
+ p->name = name;
+ p->internal_name = internal_name ? internal_name : name;
+ p->its_name = its_name;
+ p->import_name = name;
+ p->ordinal = ordinal;
+ p->constant = constant;
+ p->noname = noname;
+ p->private = private;
+ p->data = data;
+ p->next = d_exports;
+ d_exports = p;
+ d_nfuncs++;
+
+ if ((internal_name != NULL)
+ && (strchr (internal_name, '.') != NULL))
+ p->forward = ++d_nforwards;
+ else
+ p->forward = 0; /* no forward */
+}
+
+static void
+set_dll_name_from_def (const char *name, char is_dll)
+{
+ const char *image_basename = lbasename (name);
+ if (image_basename != name)
+ non_fatal (_("%s: Path components stripped from image name, '%s'."),
+ def_file, name);
+ /* Append the default suffix, if none specified. */
+ if (strchr (image_basename, '.') == 0)
+ {
+ const char * suffix = is_dll ? ".dll" : ".exe";
+
+ dll_name = xmalloc (strlen (image_basename) + strlen (suffix) + 1);
+ sprintf (dll_name, "%s%s", image_basename, suffix);
+ }
+ else
+ dll_name = xstrdup (image_basename);
+}
+
+void
+def_name (const char *name, int base)
+{
+ /* xgettext:c-format */
+ inform (_("NAME: %s base: %x"), name, base);
+
+ if (d_is_dll)
+ non_fatal (_("Can't have LIBRARY and NAME"));
+
+ if (dll_name_set_by_exp_name && name && *name != 0)
+ {
+ dll_name = NULL;
+ dll_name_set_by_exp_name = 0;
+ }
+ /* If --dllname not provided, use the one in the DEF file.
+ FIXME: Is this appropriate for executables? */
+ if (!dll_name)
+ set_dll_name_from_def (name, 0);
+ d_is_exe = 1;
+}
+
+void
+def_library (const char *name, int base)
+{
+ /* xgettext:c-format */
+ inform (_("LIBRARY: %s base: %x"), name, base);
+
+ if (d_is_exe)
+ non_fatal (_("Can't have LIBRARY and NAME"));
+
+ if (dll_name_set_by_exp_name && name && *name != 0)
+ {
+ dll_name = NULL;
+ dll_name_set_by_exp_name = 0;
+ }
+
+ /* If --dllname not provided, use the one in the DEF file. */
+ if (!dll_name)
+ set_dll_name_from_def (name, 1);
+ d_is_dll = 1;
+}
+
+void
+def_description (const char *desc)
+{
+ dlist_type *d = (dlist_type *) xmalloc (sizeof (dlist_type));
+ d->text = xstrdup (desc);
+ d->next = d_list;
+ d_list = d;
+}
+
+static void
+new_directive (char *dir)
+{
+ dlist_type *d = (dlist_type *) xmalloc (sizeof (dlist_type));
+ d->text = xstrdup (dir);
+ d->next = a_list;
+ a_list = d;
+}
+
+void
+def_heapsize (int reserve, int commit)
+{
+ char b[200];
+ if (commit > 0)
+ sprintf (b, "-heap 0x%x,0x%x ", reserve, commit);
+ else
+ sprintf (b, "-heap 0x%x ", reserve);
+ new_directive (xstrdup (b));
+}
+
+void
+def_stacksize (int reserve, int commit)
+{
+ char b[200];
+ if (commit > 0)
+ sprintf (b, "-stack 0x%x,0x%x ", reserve, commit);
+ else
+ sprintf (b, "-stack 0x%x ", reserve);
+ new_directive (xstrdup (b));
+}
+
+/* append_import simply adds the given import definition to the global
+ import_list. It is used by def_import. */
+
+static void
+append_import (const char *symbol_name, const char *dllname, int func_ordinal,
+ const char *its_name)
+{
+ iheadtype **pq;
+ iheadtype *q;
+
+ for (pq = &import_list; *pq != NULL; pq = &(*pq)->next)
+ {
+ if (strcmp ((*pq)->dllname, dllname) == 0)
+ {
+ q = *pq;
+ q->functail->next = xmalloc (sizeof (ifunctype));
+ q->functail = q->functail->next;
+ q->functail->ord = func_ordinal;
+ q->functail->name = xstrdup (symbol_name);
+ q->functail->its_name = (its_name ? xstrdup (its_name) : NULL);
+ q->functail->next = NULL;
+ q->nfuncs++;
+ return;
+ }
+ }
+
+ q = xmalloc (sizeof (iheadtype));
+ q->dllname = xstrdup (dllname);
+ q->nfuncs = 1;
+ q->funchead = xmalloc (sizeof (ifunctype));
+ q->functail = q->funchead;
+ q->next = NULL;
+ q->functail->name = xstrdup (symbol_name);
+ q->functail->its_name = (its_name ? xstrdup (its_name) : NULL);
+ q->functail->ord = func_ordinal;
+ q->functail->next = NULL;
+
+ *pq = q;
+}
+
+/* def_import is called from within defparse.y when an IMPORT
+ declaration is encountered. Depending on the form of the
+ declaration, the module name may or may not need ".dll" to be
+ appended to it, the name of the function may be stored in internal
+ or entry, and there may or may not be an ordinal value associated
+ with it. */
+
+/* A note regarding the parse modes:
+ In defparse.y we have to accept import declarations which follow
+ any one of the following forms:
+ <func_name_in_app> = <dll_name>.<func_name_in_dll>
+ <func_name_in_app> = <dll_name>.<number>
+ <dll_name>.<func_name_in_dll>
+ <dll_name>.<number>
+ Furthermore, the dll's name may or may not end with ".dll", which
+ complicates the parsing a little. Normally the dll's name is
+ passed to def_import() in the "module" parameter, but when it ends
+ with ".dll" it gets passed in "module" sans ".dll" and that needs
+ to be reappended.
+
+ def_import gets five parameters:
+ APP_NAME - the name of the function in the application, if
+ present, or NULL if not present.
+ MODULE - the name of the dll, possibly sans extension (ie, '.dll').
+ DLLEXT - the extension of the dll, if present, NULL if not present.
+ ENTRY - the name of the function in the dll, if present, or NULL.
+ ORD_VAL - the numerical tag of the function in the dll, if present,
+ or NULL. Exactly one of <entry> or <ord_val> must be
+ present (i.e., not NULL). */
+
+void
+def_import (const char *app_name, const char *module, const char *dllext,
+ const char *entry, int ord_val, const char *its_name)
+{
+ const char *application_name;
+ char *buf;
+
+ if (entry != NULL)
+ application_name = entry;
+ else
+ {
+ if (app_name != NULL)
+ application_name = app_name;
+ else
+ application_name = "";
+ }
+
+ if (dllext != NULL)
+ {
+ buf = (char *) alloca (strlen (module) + strlen (dllext) + 2);
+ sprintf (buf, "%s.%s", module, dllext);
+ module = buf;
+ }
+
+ append_import (application_name, module, ord_val, its_name);
+}
+
+void
+def_version (int major, int minor)
+{
+ printf (_("VERSION %d.%d\n"), major, minor);
+}
+
+void
+def_section (const char *name, int attr)
+{
+ char buf[200];
+ char atts[5];
+ char *d = atts;
+ if (attr & 1)
+ *d++ = 'R';
+
+ if (attr & 2)
+ *d++ = 'W';
+ if (attr & 4)
+ *d++ = 'X';
+ if (attr & 8)
+ *d++ = 'S';
+ *d++ = 0;
+ sprintf (buf, "-attr %s %s", name, atts);
+ new_directive (xstrdup (buf));
+}
+
+void
+def_code (int attr)
+{
+
+ def_section ("CODE", attr);
+}
+
+void
+def_data (int attr)
+{
+ def_section ("DATA", attr);
+}
+
+/**********************************************************************/
+
+static void
+run (const char *what, char *args)
+{
+ char *s;
+ int pid, wait_status;
+ int i;
+ const char **argv;
+ char *errmsg_fmt, *errmsg_arg;
+ char *temp_base = choose_temp_base ();
+
+ inform (_("run: %s %s"), what, args);
+
+ /* Count the args */
+ i = 0;
+ for (s = args; *s; s++)
+ if (*s == ' ')
+ i++;
+ i++;
+ argv = alloca (sizeof (char *) * (i + 3));
+ i = 0;
+ argv[i++] = what;
+ s = args;
+ while (1)
+ {
+ while (*s == ' ')
+ ++s;
+ argv[i++] = s;
+ while (*s != ' ' && *s != 0)
+ s++;
+ if (*s == 0)
+ break;
+ *s++ = 0;
+ }
+ argv[i++] = NULL;
+
+ pid = pexecute (argv[0], (char * const *) argv, program_name, temp_base,
+ &errmsg_fmt, &errmsg_arg, PEXECUTE_ONE | PEXECUTE_SEARCH);
+
+ if (pid == -1)
+ {
+ inform ("%s", strerror (errno));
+
+ fatal (errmsg_fmt, errmsg_arg);
+ }
+
+ pid = pwait (pid, & wait_status, 0);
+
+ if (pid == -1)
+ {
+ /* xgettext:c-format */
+ fatal (_("wait: %s"), strerror (errno));
+ }
+ else if (WIFSIGNALED (wait_status))
+ {
+ /* xgettext:c-format */
+ fatal (_("subprocess got fatal signal %d"), WTERMSIG (wait_status));
+ }
+ else if (WIFEXITED (wait_status))
+ {
+ if (WEXITSTATUS (wait_status) != 0)
+ /* xgettext:c-format */
+ non_fatal (_("%s exited with status %d"),
+ what, WEXITSTATUS (wait_status));
+ }
+ else
+ abort ();
+}
+
+/* Look for a list of symbols to export in the .drectve section of
+ ABFD. Pass each one to def_exports. */
+
+static void
+scan_drectve_symbols (bfd *abfd)
+{
+ asection * s;
+ int size;
+ char * buf;
+ char * p;
+ char * e;
+
+ /* Look for .drectve's */
+ s = bfd_get_section_by_name (abfd, DRECTVE_SECTION_NAME);
+
+ if (s == NULL)
+ return;
+
+ size = bfd_get_section_size (s);
+ buf = xmalloc (size);
+
+ bfd_get_section_contents (abfd, s, buf, 0, size);
+
+ /* xgettext:c-format */
+ inform (_("Sucking in info from %s section in %s"),
+ DRECTVE_SECTION_NAME, bfd_get_filename (abfd));
+
+ /* Search for -export: strings. The exported symbols can optionally
+ have type tags (eg., -export:foo,data), so handle those as well.
+ Currently only data tag is supported. */
+ p = buf;
+ e = buf + size;
+ while (p < e)
+ {
+ if (p[0] == '-'
+ && CONST_STRNEQ (p, "-export:"))
+ {
+ char * name;
+ char * c;
+ flagword flags = BSF_FUNCTION;
+
+ p += 8;
+ /* Do we have a quoted export? */
+ if (*p == '"')
+ {
+ p++;
+ name = p;
+ while (p < e && *p != '"')
+ ++p;
+ }
+ else
+ {
+ name = p;
+ while (p < e && *p != ',' && *p != ' ' && *p != '-')
+ p++;
+ }
+ c = xmalloc (p - name + 1);
+ memcpy (c, name, p - name);
+ c[p - name] = 0;
+ /* Advance over trailing quote. */
+ if (p < e && *p == '"')
+ ++p;
+ if (p < e && *p == ',') /* found type tag. */
+ {
+ char *tag_start = ++p;
+ while (p < e && *p != ' ' && *p != '-')
+ p++;
+ if (CONST_STRNEQ (tag_start, "data"))
+ flags &= ~BSF_FUNCTION;
+ }
+
+ /* FIXME: The 5th arg is for the `constant' field.
+ What should it be? Not that it matters since it's not
+ currently useful. */
+ def_exports (c, 0, -1, 0, 0, ! (flags & BSF_FUNCTION), 0, NULL);
+
+ if (add_stdcall_alias && strchr (c, '@'))
+ {
+ int lead_at = (*c == '@') ;
+ char *exported_name = xstrdup (c + lead_at);
+ char *atsym = strchr (exported_name, '@');
+ *atsym = '\0';
+ /* Note: stdcall alias symbols can never be data. */
+ def_exports (exported_name, xstrdup (c), -1, 0, 0, 0, 0, NULL);
+ }
+ }
+ else
+ p++;
+ }
+ free (buf);
+}
+
+/* Look through the symbols in MINISYMS, and add each one to list of
+ symbols to export. */
+
+static void
+scan_filtered_symbols (bfd *abfd, void *minisyms, long symcount,
+ unsigned int size)
+{
+ asymbol *store;
+ bfd_byte *from, *fromend;
+
+ store = bfd_make_empty_symbol (abfd);
+ if (store == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ from = (bfd_byte *) minisyms;
+ fromend = from + symcount * size;
+ for (; from < fromend; from += size)
+ {
+ asymbol *sym;
+ const char *symbol_name;
+
+ sym = bfd_minisymbol_to_symbol (abfd, FALSE, from, store);
+ if (sym == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ symbol_name = bfd_asymbol_name (sym);
+ if (bfd_get_symbol_leading_char (abfd) == symbol_name[0])
+ ++symbol_name;
+
+ def_exports (xstrdup (symbol_name) , 0, -1, 0, 0,
+ ! (sym->flags & BSF_FUNCTION), 0, NULL);
+
+ if (add_stdcall_alias && strchr (symbol_name, '@'))
+ {
+ int lead_at = (*symbol_name == '@');
+ char *exported_name = xstrdup (symbol_name + lead_at);
+ char *atsym = strchr (exported_name, '@');
+ *atsym = '\0';
+ /* Note: stdcall alias symbols can never be data. */
+ def_exports (exported_name, xstrdup (symbol_name), -1, 0, 0, 0, 0, NULL);
+ }
+ }
+}
+
+/* Add a list of symbols to exclude. */
+
+static void
+add_excludes (const char *new_excludes)
+{
+ char *local_copy;
+ char *exclude_string;
+
+ local_copy = xstrdup (new_excludes);
+
+ exclude_string = strtok (local_copy, ",:");
+ for (; exclude_string; exclude_string = strtok (NULL, ",:"))
+ {
+ struct string_list *new_exclude;
+
+ new_exclude = ((struct string_list *)
+ xmalloc (sizeof (struct string_list)));
+ new_exclude->string = (char *) xmalloc (strlen (exclude_string) + 2);
+ /* Don't add a leading underscore for fastcall symbols. */
+ if (*exclude_string == '@')
+ sprintf (new_exclude->string, "%s", exclude_string);
+ else
+ sprintf (new_exclude->string, "%s%s", (!leading_underscore ? "" : "_"),
+ exclude_string);
+ new_exclude->next = excludes;
+ excludes = new_exclude;
+
+ /* xgettext:c-format */
+ inform (_("Excluding symbol: %s"), exclude_string);
+ }
+
+ free (local_copy);
+}
+
+/* See if STRING is on the list of symbols to exclude. */
+
+static bfd_boolean
+match_exclude (const char *string)
+{
+ struct string_list *excl_item;
+
+ for (excl_item = excludes; excl_item; excl_item = excl_item->next)
+ if (strcmp (string, excl_item->string) == 0)
+ return TRUE;
+ return FALSE;
+}
+
+/* Add the default list of symbols to exclude. */
+
+static void
+set_default_excludes (void)
+{
+ add_excludes (default_excludes);
+}
+
+/* Choose which symbols to export. */
+
+static long
+filter_symbols (bfd *abfd, void *minisyms, long symcount, unsigned int size)
+{
+ bfd_byte *from, *fromend, *to;
+ asymbol *store;
+
+ store = bfd_make_empty_symbol (abfd);
+ if (store == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ from = (bfd_byte *) minisyms;
+ fromend = from + symcount * size;
+ to = (bfd_byte *) minisyms;
+
+ for (; from < fromend; from += size)
+ {
+ int keep = 0;
+ asymbol *sym;
+
+ sym = bfd_minisymbol_to_symbol (abfd, FALSE, (const void *) from, store);
+ if (sym == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ /* Check for external and defined only symbols. */
+ keep = (((sym->flags & BSF_GLOBAL) != 0
+ || (sym->flags & BSF_WEAK) != 0
+ || bfd_is_com_section (sym->section))
+ && ! bfd_is_und_section (sym->section));
+
+ keep = keep && ! match_exclude (sym->name);
+
+ if (keep)
+ {
+ memcpy (to, from, size);
+ to += size;
+ }
+ }
+
+ return (to - (bfd_byte *) minisyms) / size;
+}
+
+/* Export all symbols in ABFD, except for ones we were told not to
+ export. */
+
+static void
+scan_all_symbols (bfd *abfd)
+{
+ long symcount;
+ void *minisyms;
+ unsigned int size;
+
+ /* Ignore bfds with an import descriptor table. We assume that any
+ such BFD contains symbols which are exported from another DLL,
+ and we don't want to reexport them from here. */
+ if (bfd_get_section_by_name (abfd, ".idata$4"))
+ return;
+
+ if (! (bfd_get_file_flags (abfd) & HAS_SYMS))
+ {
+ /* xgettext:c-format */
+ non_fatal (_("%s: no symbols"), bfd_get_filename (abfd));
+ return;
+ }
+
+ symcount = bfd_read_minisymbols (abfd, FALSE, &minisyms, &size);
+ if (symcount < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ if (symcount == 0)
+ {
+ /* xgettext:c-format */
+ non_fatal (_("%s: no symbols"), bfd_get_filename (abfd));
+ return;
+ }
+
+ /* Discard the symbols we don't want to export. It's OK to do this
+ in place; we'll free the storage anyway. */
+
+ symcount = filter_symbols (abfd, minisyms, symcount, size);
+ scan_filtered_symbols (abfd, minisyms, symcount, size);
+
+ free (minisyms);
+}
+
+/* Look at the object file to decide which symbols to export. */
+
+static void
+scan_open_obj_file (bfd *abfd)
+{
+ if (export_all_symbols)
+ scan_all_symbols (abfd);
+ else
+ scan_drectve_symbols (abfd);
+
+ /* FIXME: we ought to read in and block out the base relocations. */
+
+ /* xgettext:c-format */
+ inform (_("Done reading %s"), bfd_get_filename (abfd));
+}
+
+static void
+scan_obj_file (const char *filename)
+{
+ bfd * f = bfd_openr (filename, 0);
+
+ if (!f)
+ /* xgettext:c-format */
+ fatal (_("Unable to open object file: %s: %s"), filename, bfd_get_errmsg ());
+
+ /* xgettext:c-format */
+ inform (_("Scanning object file %s"), filename);
+
+ if (bfd_check_format (f, bfd_archive))
+ {
+ bfd *arfile = bfd_openr_next_archived_file (f, 0);
+ while (arfile)
+ {
+ bfd *next;
+ if (bfd_check_format (arfile, bfd_object))
+ scan_open_obj_file (arfile);
+ next = bfd_openr_next_archived_file (f, arfile);
+ bfd_close (arfile);
+ arfile = next;
+ }
+
+#ifdef DLLTOOL_MCORE_ELF
+ if (mcore_elf_out_file)
+ inform (_("Cannot produce mcore-elf dll from archive file: %s"), filename);
+#endif
+ }
+ else if (bfd_check_format (f, bfd_object))
+ {
+ scan_open_obj_file (f);
+
+#ifdef DLLTOOL_MCORE_ELF
+ if (mcore_elf_out_file)
+ mcore_elf_cache_filename (filename);
+#endif
+ }
+
+ bfd_close (f);
+}
+
+
+
+static void
+dump_def_info (FILE *f)
+{
+ int i;
+ export_type *exp;
+ fprintf (f, "%s ", ASM_C);
+ for (i = 0; oav[i]; i++)
+ fprintf (f, "%s ", oav[i]);
+ fprintf (f, "\n");
+ for (i = 0, exp = d_exports; exp; i++, exp = exp->next)
+ {
+ fprintf (f, "%s %d = %s %s @ %d %s%s%s%s%s%s\n",
+ ASM_C,
+ i,
+ exp->name,
+ exp->internal_name,
+ exp->ordinal,
+ exp->noname ? "NONAME " : "",
+ exp->private ? "PRIVATE " : "",
+ exp->constant ? "CONSTANT" : "",
+ exp->data ? "DATA" : "",
+ exp->its_name ? " ==" : "",
+ exp->its_name ? exp->its_name : "");
+ }
+}
+
+/* Generate the .exp file. */
+
+static int
+sfunc (const void *a, const void *b)
+{
+ if (*(const bfd_vma *) a == *(const bfd_vma *) b)
+ return 0;
+
+ return ((*(const bfd_vma *) a > *(const bfd_vma *) b) ? 1 : -1);
+}
+
+static void
+flush_page (FILE *f, bfd_vma *need, bfd_vma page_addr, int on_page)
+{
+ int i;
+
+ /* Flush this page. */
+ fprintf (f, "\t%s\t0x%08x\t%s Starting RVA for chunk\n",
+ ASM_LONG,
+ (int) page_addr,
+ ASM_C);
+ fprintf (f, "\t%s\t0x%x\t%s Size of block\n",
+ ASM_LONG,
+ (on_page * 2) + (on_page & 1) * 2 + 8,
+ ASM_C);
+
+ for (i = 0; i < on_page; i++)
+ {
+ bfd_vma needed = need[i];
+
+ if (needed)
+ {
+ if (!create_for_pep)
+ {
+ /* Relocation via HIGHLOW. */
+ needed = ((needed - page_addr) | 0x3000) & 0xffff;
+ }
+ else
+ {
+ /* Relocation via DIR64. */
+ needed = ((needed - page_addr) | 0xa000) & 0xffff;
+ }
+ }
+
+ fprintf (f, "\t%s\t0x%lx\n", ASM_SHORT, (long) needed);
+ }
+
+ /* And padding */
+ if (on_page & 1)
+ fprintf (f, "\t%s\t0x%x\n", ASM_SHORT, 0 | 0x0000);
+}
+
+static void
+gen_def_file (void)
+{
+ int i;
+ export_type *exp;
+
+ inform (_("Adding exports to output file"));
+
+ fprintf (output_def, ";");
+ for (i = 0; oav[i]; i++)
+ fprintf (output_def, " %s", oav[i]);
+
+ fprintf (output_def, "\nEXPORTS\n");
+
+ for (i = 0, exp = d_exports; exp; i++, exp = exp->next)
+ {
+ char *quote = strchr (exp->name, '.') ? "\"" : "";
+ char *res = cplus_demangle (exp->internal_name, DMGL_ANSI | DMGL_PARAMS);
+
+ if (res)
+ {
+ fprintf (output_def,";\t%s\n", res);
+ free (res);
+ }
+
+ if (strcmp (exp->name, exp->internal_name) == 0)
+ {
+ fprintf (output_def, "\t%s%s%s @ %d%s%s%s%s%s\n",
+ quote,
+ exp->name,
+ quote,
+ exp->ordinal,
+ exp->noname ? " NONAME" : "",
+ exp->private ? "PRIVATE " : "",
+ exp->data ? " DATA" : "",
+ exp->its_name ? " ==" : "",
+ exp->its_name ? exp->its_name : "");
+ }
+ else
+ {
+ char * quote1 = strchr (exp->internal_name, '.') ? "\"" : "";
+ /* char *alias = */
+ fprintf (output_def, "\t%s%s%s = %s%s%s @ %d%s%s%s%s%s\n",
+ quote,
+ exp->name,
+ quote,
+ quote1,
+ exp->internal_name,
+ quote1,
+ exp->ordinal,
+ exp->noname ? " NONAME" : "",
+ exp->private ? "PRIVATE " : "",
+ exp->data ? " DATA" : "",
+ exp->its_name ? " ==" : "",
+ exp->its_name ? exp->its_name : "");
+ }
+ }
+
+ inform (_("Added exports to output file"));
+}
+
+/* generate_idata_ofile generates the portable assembly source code
+ for the idata sections. It appends the source code to the end of
+ the file. */
+
+static void
+generate_idata_ofile (FILE *filvar)
+{
+ iheadtype *headptr;
+ ifunctype *funcptr;
+ int headindex;
+ int funcindex;
+ int nheads;
+
+ if (import_list == NULL)
+ return;
+
+ fprintf (filvar, "%s Import data sections\n", ASM_C);
+ fprintf (filvar, "\n\t.section\t.idata$2\n");
+ fprintf (filvar, "\t%s\tdoi_idata\n", ASM_GLOBAL);
+ fprintf (filvar, "doi_idata:\n");
+
+ nheads = 0;
+ for (headptr = import_list; headptr != NULL; headptr = headptr->next)
+ {
+ fprintf (filvar, "\t%slistone%d%s\t%s %s\n",
+ ASM_RVA_BEFORE, nheads, ASM_RVA_AFTER,
+ ASM_C, headptr->dllname);
+ fprintf (filvar, "\t%s\t0\n", ASM_LONG);
+ fprintf (filvar, "\t%s\t0\n", ASM_LONG);
+ fprintf (filvar, "\t%sdllname%d%s\n",
+ ASM_RVA_BEFORE, nheads, ASM_RVA_AFTER);
+ fprintf (filvar, "\t%slisttwo%d%s\n\n",
+ ASM_RVA_BEFORE, nheads, ASM_RVA_AFTER);
+ nheads++;
+ }
+
+ fprintf (filvar, "\t%s\t0\n", ASM_LONG); /* NULL record at */
+ fprintf (filvar, "\t%s\t0\n", ASM_LONG); /* end of idata$2 */
+ fprintf (filvar, "\t%s\t0\n", ASM_LONG); /* section */
+ fprintf (filvar, "\t%s\t0\n", ASM_LONG);
+ fprintf (filvar, "\t%s\t0\n", ASM_LONG);
+
+ fprintf (filvar, "\n\t.section\t.idata$4\n");
+ headindex = 0;
+ for (headptr = import_list; headptr != NULL; headptr = headptr->next)
+ {
+ fprintf (filvar, "listone%d:\n", headindex);
+ for (funcindex = 0; funcindex < headptr->nfuncs; funcindex++)
+ {
+ if (create_for_pep)
+ fprintf (filvar, "\t%sfuncptr%d_%d%s\n%s\t0\n",
+ ASM_RVA_BEFORE, headindex, funcindex, ASM_RVA_AFTER,
+ ASM_LONG);
+ else
+ fprintf (filvar, "\t%sfuncptr%d_%d%s\n",
+ ASM_RVA_BEFORE, headindex, funcindex, ASM_RVA_AFTER);
+ }
+ if (create_for_pep)
+ fprintf (filvar, "\t%s\t0\n\t%s\t0\n", ASM_LONG, ASM_LONG);
+ else
+ fprintf (filvar, "\t%s\t0\n", ASM_LONG); /* NULL terminating list. */
+ headindex++;
+ }
+
+ fprintf (filvar, "\n\t.section\t.idata$5\n");
+ headindex = 0;
+ for (headptr = import_list; headptr != NULL; headptr = headptr->next)
+ {
+ fprintf (filvar, "listtwo%d:\n", headindex);
+ for (funcindex = 0; funcindex < headptr->nfuncs; funcindex++)
+ {
+ if (create_for_pep)
+ fprintf (filvar, "\t%sfuncptr%d_%d%s\n%s\t0\n",
+ ASM_RVA_BEFORE, headindex, funcindex, ASM_RVA_AFTER,
+ ASM_LONG);
+ else
+ fprintf (filvar, "\t%sfuncptr%d_%d%s\n",
+ ASM_RVA_BEFORE, headindex, funcindex, ASM_RVA_AFTER);
+ }
+ if (create_for_pep)
+ fprintf (filvar, "\t%s\t0\n\t%s\t0\n", ASM_LONG, ASM_LONG);
+ else
+ fprintf (filvar, "\t%s\t0\n", ASM_LONG); /* NULL terminating list. */
+ headindex++;
+ }
+
+ fprintf (filvar, "\n\t.section\t.idata$6\n");
+ headindex = 0;
+ for (headptr = import_list; headptr != NULL; headptr = headptr->next)
+ {
+ funcindex = 0;
+ for (funcptr = headptr->funchead; funcptr != NULL;
+ funcptr = funcptr->next)
+ {
+ fprintf (filvar,"funcptr%d_%d:\n", headindex, funcindex);
+ fprintf (filvar,"\t%s\t%d\n", ASM_SHORT,
+ ((funcptr->ord) & 0xFFFF));
+ fprintf (filvar,"\t%s\t\"%s\"\n", ASM_TEXT,
+ (funcptr->its_name ? funcptr->its_name : funcptr->name));
+ fprintf (filvar,"\t%s\t0\n", ASM_BYTE);
+ funcindex++;
+ }
+ headindex++;
+ }
+
+ fprintf (filvar, "\n\t.section\t.idata$7\n");
+ headindex = 0;
+ for (headptr = import_list; headptr != NULL; headptr = headptr->next)
+ {
+ fprintf (filvar,"dllname%d:\n", headindex);
+ fprintf (filvar,"\t%s\t\"%s\"\n", ASM_TEXT, headptr->dllname);
+ fprintf (filvar,"\t%s\t0\n", ASM_BYTE);
+ headindex++;
+ }
+}
+
+/* Assemble the specified file. */
+static void
+assemble_file (const char * source, const char * dest)
+{
+ char * cmd;
+
+ cmd = (char *) alloca (strlen (ASM_SWITCHES) + strlen (as_flags)
+ + strlen (source) + strlen (dest) + 50);
+
+ sprintf (cmd, "%s %s -o %s %s", ASM_SWITCHES, as_flags, dest, source);
+
+ run (as_name, cmd);
+}
+
+static void
+gen_exp_file (void)
+{
+ FILE *f;
+ int i;
+ export_type *exp;
+ dlist_type *dl;
+
+ /* xgettext:c-format */
+ inform (_("Generating export file: %s"), exp_name);
+
+ f = fopen (TMP_ASM, FOPEN_WT);
+ if (!f)
+ /* xgettext:c-format */
+ fatal (_("Unable to open temporary assembler file: %s"), TMP_ASM);
+
+ /* xgettext:c-format */
+ inform (_("Opened temporary file: %s"), TMP_ASM);
+
+ dump_def_info (f);
+
+ if (d_exports)
+ {
+ fprintf (f, "\t.section .edata\n\n");
+ fprintf (f, "\t%s 0 %s Allways 0\n", ASM_LONG, ASM_C);
+ fprintf (f, "\t%s 0x%lx %s Time and date\n", ASM_LONG,
+ (unsigned long) time(0), ASM_C);
+ fprintf (f, "\t%s 0 %s Major and Minor version\n", ASM_LONG, ASM_C);
+ fprintf (f, "\t%sname%s %s Ptr to name of dll\n", ASM_RVA_BEFORE, ASM_RVA_AFTER, ASM_C);
+ fprintf (f, "\t%s %d %s Starting ordinal of exports\n", ASM_LONG, d_low_ord, ASM_C);
+
+
+ fprintf (f, "\t%s %d %s Number of functions\n", ASM_LONG, d_high_ord - d_low_ord + 1, ASM_C);
+ fprintf(f,"\t%s named funcs %d, low ord %d, high ord %d\n",
+ ASM_C,
+ d_named_nfuncs, d_low_ord, d_high_ord);
+ fprintf (f, "\t%s %d %s Number of names\n", ASM_LONG,
+ show_allnames ? d_high_ord - d_low_ord + 1 : d_named_nfuncs, ASM_C);
+ fprintf (f, "\t%safuncs%s %s Address of functions\n", ASM_RVA_BEFORE, ASM_RVA_AFTER, ASM_C);
+
+ fprintf (f, "\t%sanames%s %s Address of Name Pointer Table\n",
+ ASM_RVA_BEFORE, ASM_RVA_AFTER, ASM_C);
+
+ fprintf (f, "\t%sanords%s %s Address of ordinals\n", ASM_RVA_BEFORE, ASM_RVA_AFTER, ASM_C);
+
+ fprintf (f, "name: %s \"%s\"\n", ASM_TEXT, dll_name);
+
+
+ fprintf(f,"%s Export address Table\n", ASM_C);
+ fprintf(f,"\t%s\n", ASM_ALIGN_LONG);
+ fprintf (f, "afuncs:\n");
+ i = d_low_ord;
+
+ for (exp = d_exports; exp; exp = exp->next)
+ {
+ if (exp->ordinal != i)
+ {
+ while (i < exp->ordinal)
+ {
+ fprintf(f,"\t%s\t0\n", ASM_LONG);
+ i++;
+ }
+ }
+
+ if (exp->forward == 0)
+ {
+ if (exp->internal_name[0] == '@')
+ fprintf (f, "\t%s%s%s\t%s %d\n", ASM_RVA_BEFORE,
+ exp->internal_name, ASM_RVA_AFTER, ASM_C, exp->ordinal);
+ else
+ fprintf (f, "\t%s%s%s%s\t%s %d\n", ASM_RVA_BEFORE,
+ ASM_PREFIX (exp->internal_name),
+ exp->internal_name, ASM_RVA_AFTER, ASM_C, exp->ordinal);
+ }
+ else
+ fprintf (f, "\t%sf%d%s\t%s %d\n", ASM_RVA_BEFORE,
+ exp->forward, ASM_RVA_AFTER, ASM_C, exp->ordinal);
+ i++;
+ }
+
+ fprintf (f,"%s Export Name Pointer Table\n", ASM_C);
+ fprintf (f, "anames:\n");
+
+ for (i = 0; (exp = d_exports_lexically[i]); i++)
+ {
+ if (!exp->noname || show_allnames)
+ fprintf (f, "\t%sn%d%s\n",
+ ASM_RVA_BEFORE, exp->ordinal, ASM_RVA_AFTER);
+ }
+
+ fprintf (f,"%s Export Ordinal Table\n", ASM_C);
+ fprintf (f, "anords:\n");
+ for (i = 0; (exp = d_exports_lexically[i]); i++)
+ {
+ if (!exp->noname || show_allnames)
+ fprintf (f, "\t%s %d\n", ASM_SHORT, exp->ordinal - d_low_ord);
+ }
+
+ fprintf(f,"%s Export Name Table\n", ASM_C);
+ for (i = 0; (exp = d_exports_lexically[i]); i++)
+ {
+ if (!exp->noname || show_allnames)
+ fprintf (f, "n%d: %s \"%s\"\n",
+ exp->ordinal, ASM_TEXT,
+ (exp->its_name ? exp->its_name : xlate (exp->name)));
+ if (exp->forward != 0)
+ fprintf (f, "f%d: %s \"%s\"\n",
+ exp->forward, ASM_TEXT, exp->internal_name);
+ }
+
+ if (a_list)
+ {
+ fprintf (f, "\t.section %s\n", DRECTVE_SECTION_NAME);
+ for (dl = a_list; dl; dl = dl->next)
+ {
+ fprintf (f, "\t%s\t\"%s\"\n", ASM_TEXT, dl->text);
+ }
+ }
+
+ if (d_list)
+ {
+ fprintf (f, "\t.section .rdata\n");
+ for (dl = d_list; dl; dl = dl->next)
+ {
+ char *p;
+ int l;
+
+ /* We don't output as ascii because there can
+ be quote characters in the string. */
+ l = 0;
+ for (p = dl->text; *p; p++)
+ {
+ if (l == 0)
+ fprintf (f, "\t%s\t", ASM_BYTE);
+ else
+ fprintf (f, ",");
+ fprintf (f, "%d", *p);
+ if (p[1] == 0)
+ {
+ fprintf (f, ",0\n");
+ break;
+ }
+ if (++l == 10)
+ {
+ fprintf (f, "\n");
+ l = 0;
+ }
+ }
+ }
+ }
+ }
+
+
+ /* Add to the output file a way of getting to the exported names
+ without using the import library. */
+ if (add_indirect)
+ {
+ fprintf (f, "\t.section\t.rdata\n");
+ for (i = 0, exp = d_exports; exp; i++, exp = exp->next)
+ if (!exp->noname || show_allnames)
+ {
+ /* We use a single underscore for MS compatibility, and a
+ double underscore for backward compatibility with old
+ cygwin releases. */
+ if (create_compat_implib)
+ fprintf (f, "\t%s\t__imp_%s\n", ASM_GLOBAL, exp->name);
+ fprintf (f, "\t%s\t_imp_%s%s\n", ASM_GLOBAL,
+ (!leading_underscore ? "" : "_"), exp->name);
+ if (create_compat_implib)
+ fprintf (f, "__imp_%s:\n", exp->name);
+ fprintf (f, "_imp_%s%s:\n", (!leading_underscore ? "" : "_"), exp->name);
+ fprintf (f, "\t%s\t%s\n", ASM_LONG, exp->name);
+ }
+ }
+
+ /* Dump the reloc section if a base file is provided. */
+ if (base_file)
+ {
+ bfd_vma addr;
+ bfd_vma need[COFF_PAGE_SIZE];
+ bfd_vma page_addr;
+ bfd_size_type numbytes;
+ int num_entries;
+ bfd_vma *copy;
+ int j;
+ int on_page;
+ fprintf (f, "\t.section\t.init\n");
+ fprintf (f, "lab:\n");
+
+ fseek (base_file, 0, SEEK_END);
+ numbytes = ftell (base_file);
+ fseek (base_file, 0, SEEK_SET);
+ copy = xmalloc (numbytes);
+ if (fread (copy, 1, numbytes, base_file) < numbytes)
+ fatal (_("failed to read the number of entries from base file"));
+ num_entries = numbytes / sizeof (bfd_vma);
+
+
+ fprintf (f, "\t.section\t.reloc\n");
+ if (num_entries)
+ {
+ int src;
+ int dst = 0;
+ bfd_vma last = (bfd_vma) -1;
+ qsort (copy, num_entries, sizeof (bfd_vma), sfunc);
+ /* Delete duplicates */
+ for (src = 0; src < num_entries; src++)
+ {
+ if (last != copy[src])
+ last = copy[dst++] = copy[src];
+ }
+ num_entries = dst;
+ addr = copy[0];
+ page_addr = addr & PAGE_MASK; /* work out the page addr */
+ on_page = 0;
+ for (j = 0; j < num_entries; j++)
+ {
+ addr = copy[j];
+ if ((addr & PAGE_MASK) != page_addr)
+ {
+ flush_page (f, need, page_addr, on_page);
+ on_page = 0;
+ page_addr = addr & PAGE_MASK;
+ }
+ need[on_page++] = addr;
+ }
+ flush_page (f, need, page_addr, on_page);
+
+/* fprintf (f, "\t%s\t0,0\t%s End\n", ASM_LONG, ASM_C);*/
+ }
+ }
+
+ generate_idata_ofile (f);
+
+ fclose (f);
+
+ /* Assemble the file. */
+ assemble_file (TMP_ASM, exp_name);
+
+ if (dontdeltemps == 0)
+ unlink (TMP_ASM);
+
+ inform (_("Generated exports file"));
+}
+
+static const char *
+xlate (const char *name)
+{
+ int lead_at = (*name == '@');
+ int is_stdcall = (!lead_at && strchr (name, '@') != NULL);
+
+ if (!lead_at && (add_underscore
+ || (add_stdcall_underscore && is_stdcall)))
+ {
+ char *copy = xmalloc (strlen (name) + 2);
+
+ copy[0] = '_';
+ strcpy (copy + 1, name);
+ name = copy;
+ }
+
+ if (killat)
+ {
+ char *p;
+
+ name += lead_at;
+ /* PR 9766: Look for the last @ sign in the name. */
+ p = strrchr (name, '@');
+ if (p && ISDIGIT (p[1]))
+ *p = 0;
+ }
+ return name;
+}
+
+typedef struct
+{
+ int id;
+ const char *name;
+ int flags;
+ int align;
+ asection *sec;
+ asymbol *sym;
+ asymbol **sympp;
+ int size;
+ unsigned char *data;
+} sinfo;
+
+#define INIT_SEC_DATA(id, name, flags, align) \
+ { id, name, flags, align, NULL, NULL, NULL, 0, NULL }
+
+#ifndef DLLTOOL_PPC
+
+#define TEXT 0
+#define DATA 1
+#define BSS 2
+#define IDATA7 3
+#define IDATA5 4
+#define IDATA4 5
+#define IDATA6 6
+
+#define NSECS 7
+
+#define TEXT_SEC_FLAGS \
+ (SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_READONLY | SEC_HAS_CONTENTS)
+#define DATA_SEC_FLAGS (SEC_ALLOC | SEC_LOAD | SEC_DATA)
+#define BSS_SEC_FLAGS SEC_ALLOC
+
+static sinfo secdata[NSECS] =
+{
+ INIT_SEC_DATA (TEXT, ".text", TEXT_SEC_FLAGS, 2),
+ INIT_SEC_DATA (DATA, ".data", DATA_SEC_FLAGS, 2),
+ INIT_SEC_DATA (BSS, ".bss", BSS_SEC_FLAGS, 2),
+ INIT_SEC_DATA (IDATA7, ".idata$7", SEC_HAS_CONTENTS, 2),
+ INIT_SEC_DATA (IDATA5, ".idata$5", SEC_HAS_CONTENTS, 2),
+ INIT_SEC_DATA (IDATA4, ".idata$4", SEC_HAS_CONTENTS, 2),
+ INIT_SEC_DATA (IDATA6, ".idata$6", SEC_HAS_CONTENTS, 1)
+};
+
+#else
+
+/* Sections numbered to make the order the same as other PowerPC NT
+ compilers. This also keeps funny alignment thingies from happening. */
+#define TEXT 0
+#define PDATA 1
+#define RDATA 2
+#define IDATA5 3
+#define IDATA4 4
+#define IDATA6 5
+#define IDATA7 6
+#define DATA 7
+#define BSS 8
+
+#define NSECS 9
+
+static sinfo secdata[NSECS] =
+{
+ INIT_SEC_DATA (TEXT, ".text", SEC_CODE | SEC_HAS_CONTENTS, 3),
+ INIT_SEC_DATA (PDATA, ".pdata", SEC_HAS_CONTENTS, 2),
+ INIT_SEC_DATA (RDATA, ".reldata", SEC_HAS_CONTENTS, 2),
+ INIT_SEC_DATA (IDATA5, ".idata$5", SEC_HAS_CONTENTS, 2),
+ INIT_SEC_DATA (IDATA4, ".idata$4", SEC_HAS_CONTENTS, 2),
+ INIT_SEC_DATA (IDATA6, ".idata$6", SEC_HAS_CONTENTS, 1),
+ INIT_SEC_DATA (IDATA7, ".idata$7", SEC_HAS_CONTENTS, 2),
+ INIT_SEC_DATA (DATA, ".data", SEC_DATA, 2),
+ INIT_SEC_DATA (BSS, ".bss", 0, 2)
+};
+
+#endif
+
+/* This is what we're trying to make. We generate the imp symbols with
+ both single and double underscores, for compatibility.
+
+ .text
+ .global _GetFileVersionInfoSizeW@8
+ .global __imp_GetFileVersionInfoSizeW@8
+_GetFileVersionInfoSizeW@8:
+ jmp * __imp_GetFileVersionInfoSizeW@8
+ .section .idata$7 # To force loading of head
+ .long __version_a_head
+# Import Address Table
+ .section .idata$5
+__imp_GetFileVersionInfoSizeW@8:
+ .rva ID2
+
+# Import Lookup Table
+ .section .idata$4
+ .rva ID2
+# Hint/Name table
+ .section .idata$6
+ID2: .short 2
+ .asciz "GetFileVersionInfoSizeW"
+
+
+ For the PowerPC, here's the variation on the above scheme:
+
+# Rather than a simple "jmp *", the code to get to the dll function
+# looks like:
+ .text
+ lwz r11,[tocv]__imp_function_name(r2)
+# RELOC: 00000000 TOCREL16,TOCDEFN __imp_function_name
+ lwz r12,0(r11)
+ stw r2,4(r1)
+ mtctr r12
+ lwz r2,4(r11)
+ bctr */
+
+static char *
+make_label (const char *prefix, const char *name)
+{
+ int len = strlen (ASM_PREFIX (name)) + strlen (prefix) + strlen (name);
+ char *copy = xmalloc (len + 1);
+
+ strcpy (copy, ASM_PREFIX (name));
+ strcat (copy, prefix);
+ strcat (copy, name);
+ return copy;
+}
+
+static char *
+make_imp_label (const char *prefix, const char *name)
+{
+ int len;
+ char *copy;
+
+ if (name[0] == '@')
+ {
+ len = strlen (prefix) + strlen (name);
+ copy = xmalloc (len + 1);
+ strcpy (copy, prefix);
+ strcat (copy, name);
+ }
+ else
+ {
+ len = strlen (ASM_PREFIX (name)) + strlen (prefix) + strlen (name);
+ copy = xmalloc (len + 1);
+ strcpy (copy, prefix);
+ strcat (copy, ASM_PREFIX (name));
+ strcat (copy, name);
+ }
+ return copy;
+}
+
+static bfd *
+make_one_lib_file (export_type *exp, int i, int delay)
+{
+ bfd * abfd;
+ asymbol * exp_label;
+ asymbol * iname = 0;
+ asymbol * iname2;
+ asymbol * iname_lab;
+ asymbol ** iname_lab_pp;
+ asymbol ** iname_pp;
+#ifdef DLLTOOL_PPC
+ asymbol ** fn_pp;
+ asymbol ** toc_pp;
+#define EXTRA 2
+#endif
+#ifndef EXTRA
+#define EXTRA 0
+#endif
+ asymbol * ptrs[NSECS + 4 + EXTRA + 1];
+ flagword applicable;
+ char * outname = xmalloc (strlen (TMP_STUB) + 10);
+ int oidx = 0;
+
+
+ sprintf (outname, "%s%05d.o", TMP_STUB, i);
+
+ abfd = bfd_openw (outname, HOW_BFD_WRITE_TARGET);
+
+ if (!abfd)
+ /* xgettext:c-format */
+ fatal (_("bfd_open failed open stub file: %s: %s"),
+ outname, bfd_get_errmsg ());
+
+ /* xgettext:c-format */
+ inform (_("Creating stub file: %s"), outname);
+
+ bfd_set_format (abfd, bfd_object);
+ bfd_set_arch_mach (abfd, HOW_BFD_ARCH, 0);
+
+#ifdef DLLTOOL_ARM
+ if (machine == MARM_INTERWORK || machine == MTHUMB)
+ bfd_set_private_flags (abfd, F_INTERWORK);
+#endif
+
+ applicable = bfd_applicable_section_flags (abfd);
+
+ /* First make symbols for the sections. */
+ for (i = 0; i < NSECS; i++)
+ {
+ sinfo *si = secdata + i;
+
+ if (si->id != i)
+ abort ();
+ si->sec = bfd_make_section_old_way (abfd, si->name);
+ bfd_set_section_flags (abfd,
+ si->sec,
+ si->flags & applicable);
+
+ bfd_set_section_alignment(abfd, si->sec, si->align);
+ si->sec->output_section = si->sec;
+ si->sym = bfd_make_empty_symbol(abfd);
+ si->sym->name = si->sec->name;
+ si->sym->section = si->sec;
+ si->sym->flags = BSF_LOCAL;
+ si->sym->value = 0;
+ ptrs[oidx] = si->sym;
+ si->sympp = ptrs + oidx;
+ si->size = 0;
+ si->data = NULL;
+
+ oidx++;
+ }
+
+ if (! exp->data)
+ {
+ exp_label = bfd_make_empty_symbol (abfd);
+ exp_label->name = make_imp_label ("", exp->name);
+
+ /* On PowerPC, the function name points to a descriptor in
+ the rdata section, the first element of which is a
+ pointer to the code (..function_name), and the second
+ points to the .toc. */
+#ifdef DLLTOOL_PPC
+ if (machine == MPPC)
+ exp_label->section = secdata[RDATA].sec;
+ else
+#endif
+ exp_label->section = secdata[TEXT].sec;
+
+ exp_label->flags = BSF_GLOBAL;
+ exp_label->value = 0;
+
+#ifdef DLLTOOL_ARM
+ if (machine == MTHUMB)
+ bfd_coff_set_symbol_class (abfd, exp_label, C_THUMBEXTFUNC);
+#endif
+ ptrs[oidx++] = exp_label;
+ }
+
+ /* Generate imp symbols with one underscore for Microsoft
+ compatibility, and with two underscores for backward
+ compatibility with old versions of cygwin. */
+ if (create_compat_implib)
+ {
+ iname = bfd_make_empty_symbol (abfd);
+ iname->name = make_imp_label ("___imp", exp->name);
+ iname->section = secdata[IDATA5].sec;
+ iname->flags = BSF_GLOBAL;
+ iname->value = 0;
+ }
+
+ iname2 = bfd_make_empty_symbol (abfd);
+ iname2->name = make_imp_label ("__imp_", exp->name);
+ iname2->section = secdata[IDATA5].sec;
+ iname2->flags = BSF_GLOBAL;
+ iname2->value = 0;
+
+ iname_lab = bfd_make_empty_symbol (abfd);
+
+ iname_lab->name = head_label;
+ iname_lab->section = bfd_und_section_ptr;
+ iname_lab->flags = 0;
+ iname_lab->value = 0;
+
+ iname_pp = ptrs + oidx;
+ if (create_compat_implib)
+ ptrs[oidx++] = iname;
+ ptrs[oidx++] = iname2;
+
+ iname_lab_pp = ptrs + oidx;
+ ptrs[oidx++] = iname_lab;
+
+#ifdef DLLTOOL_PPC
+ /* The symbol referring to the code (.text). */
+ {
+ asymbol *function_name;
+
+ function_name = bfd_make_empty_symbol(abfd);
+ function_name->name = make_label ("..", exp->name);
+ function_name->section = secdata[TEXT].sec;
+ function_name->flags = BSF_GLOBAL;
+ function_name->value = 0;
+
+ fn_pp = ptrs + oidx;
+ ptrs[oidx++] = function_name;
+ }
+
+ /* The .toc symbol. */
+ {
+ asymbol *toc_symbol;
+
+ toc_symbol = bfd_make_empty_symbol (abfd);
+ toc_symbol->name = make_label (".", "toc");
+ toc_symbol->section = bfd_und_section_ptr;
+ toc_symbol->flags = BSF_GLOBAL;
+ toc_symbol->value = 0;
+
+ toc_pp = ptrs + oidx;
+ ptrs[oidx++] = toc_symbol;
+ }
+#endif
+
+ ptrs[oidx] = 0;
+
+ for (i = 0; i < NSECS; i++)
+ {
+ sinfo *si = secdata + i;
+ asection *sec = si->sec;
+ arelent *rel, *rel2 = 0, *rel3 = 0;
+ arelent **rpp;
+
+ switch (i)
+ {
+ case TEXT:
+ if (! exp->data)
+ {
+ si->size = HOW_JTAB_SIZE;
+ si->data = xmalloc (HOW_JTAB_SIZE);
+ memcpy (si->data, HOW_JTAB, HOW_JTAB_SIZE);
+
+ /* Add the reloc into idata$5. */
+ rel = xmalloc (sizeof (arelent));
+
+ rpp = xmalloc (sizeof (arelent *) * (delay ? 4 : 2));
+ rpp[0] = rel;
+ rpp[1] = 0;
+
+ rel->address = HOW_JTAB_ROFF;
+ rel->addend = 0;
+
+ if (delay)
+ {
+ rel2 = xmalloc (sizeof (arelent));
+ rpp[1] = rel2;
+ rel2->address = HOW_JTAB_ROFF2;
+ rel2->addend = 0;
+ rel3 = xmalloc (sizeof (arelent));
+ rpp[2] = rel3;
+ rel3->address = HOW_JTAB_ROFF3;
+ rel3->addend = 0;
+ rpp[3] = 0;
+ }
+
+ if (machine == MPPC)
+ {
+ rel->howto = bfd_reloc_type_lookup (abfd,
+ BFD_RELOC_16_GOTOFF);
+ rel->sym_ptr_ptr = iname_pp;
+ }
+ else if (machine == MX86)
+ {
+ rel->howto = bfd_reloc_type_lookup (abfd,
+ BFD_RELOC_32_PCREL);
+ rel->sym_ptr_ptr = iname_pp;
+ }
+ else
+ {
+ rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_32);
+ rel->sym_ptr_ptr = secdata[IDATA5].sympp;
+ }
+
+ if (delay)
+ {
+ if (machine == MX86)
+ rel2->howto = bfd_reloc_type_lookup (abfd,
+ BFD_RELOC_32_PCREL);
+ else
+ rel2->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_32);
+ rel2->sym_ptr_ptr = rel->sym_ptr_ptr;
+ rel3->howto = bfd_reloc_type_lookup (abfd,
+ BFD_RELOC_32_PCREL);
+ rel3->sym_ptr_ptr = iname_lab_pp;
+ }
+
+ sec->orelocation = rpp;
+ sec->reloc_count = delay ? 3 : 1;
+ }
+ break;
+
+ case IDATA5:
+ if (delay)
+ {
+ si->size = create_for_pep ? 8 : 4;
+ si->data = xmalloc (si->size);
+ sec->reloc_count = 1;
+ memset (si->data, 0, si->size);
+ /* Point after jmp [__imp_...] instruction. */
+ si->data[0] = 6;
+ rel = xmalloc (sizeof (arelent));
+ rpp = xmalloc (sizeof (arelent *) * 2);
+ rpp[0] = rel;
+ rpp[1] = 0;
+ rel->address = 0;
+ rel->addend = 0;
+ if (create_for_pep)
+ rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_64);
+ else
+ rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_32);
+ rel->sym_ptr_ptr = secdata[TEXT].sympp;
+ sec->orelocation = rpp;
+ break;
+ }
+ /* else fall through */
+ case IDATA4:
+ /* An idata$4 or idata$5 is one word long, and has an
+ rva to idata$6. */
+
+ if (create_for_pep)
+ {
+ si->data = xmalloc (8);
+ si->size = 8;
+ if (exp->noname)
+ {
+ si->data[0] = exp->ordinal ;
+ si->data[1] = exp->ordinal >> 8;
+ si->data[2] = exp->ordinal >> 16;
+ si->data[3] = exp->ordinal >> 24;
+ si->data[4] = 0;
+ si->data[5] = 0;
+ si->data[6] = 0;
+ si->data[7] = 0x80;
+ }
+ else
+ {
+ sec->reloc_count = 1;
+ memset (si->data, 0, si->size);
+ rel = xmalloc (sizeof (arelent));
+ rpp = xmalloc (sizeof (arelent *) * 2);
+ rpp[0] = rel;
+ rpp[1] = 0;
+ rel->address = 0;
+ rel->addend = 0;
+ rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_RVA);
+ rel->sym_ptr_ptr = secdata[IDATA6].sympp;
+ sec->orelocation = rpp;
+ }
+ }
+ else
+ {
+ si->data = xmalloc (4);
+ si->size = 4;
+
+ if (exp->noname)
+ {
+ si->data[0] = exp->ordinal ;
+ si->data[1] = exp->ordinal >> 8;
+ si->data[2] = exp->ordinal >> 16;
+ si->data[3] = 0x80;
+ }
+ else
+ {
+ sec->reloc_count = 1;
+ memset (si->data, 0, si->size);
+ rel = xmalloc (sizeof (arelent));
+ rpp = xmalloc (sizeof (arelent *) * 2);
+ rpp[0] = rel;
+ rpp[1] = 0;
+ rel->address = 0;
+ rel->addend = 0;
+ rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_RVA);
+ rel->sym_ptr_ptr = secdata[IDATA6].sympp;
+ sec->orelocation = rpp;
+ }
+ }
+ break;
+
+ case IDATA6:
+ if (!exp->noname)
+ {
+ /* This used to add 1 to exp->hint. I don't know
+ why it did that, and it does not match what I see
+ in programs compiled with the MS tools. */
+ int idx = exp->hint;
+ if (exp->its_name)
+ si->size = strlen (exp->its_name) + 3;
+ else
+ si->size = strlen (xlate (exp->import_name)) + 3;
+ si->data = xmalloc (si->size);
+ si->data[0] = idx & 0xff;
+ si->data[1] = idx >> 8;
+ if (exp->its_name)
+ strcpy ((char *) si->data + 2, exp->its_name);
+ else
+ strcpy ((char *) si->data + 2, xlate (exp->import_name));
+ }
+ break;
+ case IDATA7:
+ if (delay)
+ break;
+ si->size = 4;
+ si->data = xmalloc (4);
+ memset (si->data, 0, si->size);
+ rel = xmalloc (sizeof (arelent));
+ rpp = xmalloc (sizeof (arelent *) * 2);
+ rpp[0] = rel;
+ rel->address = 0;
+ rel->addend = 0;
+ rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_RVA);
+ rel->sym_ptr_ptr = iname_lab_pp;
+ sec->orelocation = rpp;
+ sec->reloc_count = 1;
+ break;
+
+#ifdef DLLTOOL_PPC
+ case PDATA:
+ {
+ /* The .pdata section is 5 words long.
+ Think of it as:
+ struct
+ {
+ bfd_vma BeginAddress, [0x00]
+ EndAddress, [0x04]
+ ExceptionHandler, [0x08]
+ HandlerData, [0x0c]
+ PrologEndAddress; [0x10]
+ }; */
+
+ /* So this pdata section setups up this as a glue linkage to
+ a dll routine. There are a number of house keeping things
+ we need to do:
+
+ 1. In the name of glue trickery, the ADDR32 relocs for 0,
+ 4, and 0x10 are set to point to the same place:
+ "..function_name".
+ 2. There is one more reloc needed in the pdata section.
+ The actual glue instruction to restore the toc on
+ return is saved as the offset in an IMGLUE reloc.
+ So we need a total of four relocs for this section.
+
+ 3. Lastly, the HandlerData field is set to 0x03, to indicate
+ that this is a glue routine. */
+ arelent *imglue, *ba_rel, *ea_rel, *pea_rel;
+
+ /* Alignment must be set to 2**2 or you get extra stuff. */
+ bfd_set_section_alignment(abfd, sec, 2);
+
+ si->size = 4 * 5;
+ si->data = xmalloc (si->size);
+ memset (si->data, 0, si->size);
+ rpp = xmalloc (sizeof (arelent *) * 5);
+ rpp[0] = imglue = xmalloc (sizeof (arelent));
+ rpp[1] = ba_rel = xmalloc (sizeof (arelent));
+ rpp[2] = ea_rel = xmalloc (sizeof (arelent));
+ rpp[3] = pea_rel = xmalloc (sizeof (arelent));
+ rpp[4] = 0;
+
+ /* Stick the toc reload instruction in the glue reloc. */
+ bfd_put_32(abfd, ppc_glue_insn, (char *) &imglue->address);
+
+ imglue->addend = 0;
+ imglue->howto = bfd_reloc_type_lookup (abfd,
+ BFD_RELOC_32_GOTOFF);
+ imglue->sym_ptr_ptr = fn_pp;
+
+ ba_rel->address = 0;
+ ba_rel->addend = 0;
+ ba_rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_32);
+ ba_rel->sym_ptr_ptr = fn_pp;
+
+ bfd_put_32 (abfd, 0x18, si->data + 0x04);
+ ea_rel->address = 4;
+ ea_rel->addend = 0;
+ ea_rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_32);
+ ea_rel->sym_ptr_ptr = fn_pp;
+
+ /* Mark it as glue. */
+ bfd_put_32 (abfd, 0x03, si->data + 0x0c);
+
+ /* Mark the prolog end address. */
+ bfd_put_32 (abfd, 0x0D, si->data + 0x10);
+ pea_rel->address = 0x10;
+ pea_rel->addend = 0;
+ pea_rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_32);
+ pea_rel->sym_ptr_ptr = fn_pp;
+
+ sec->orelocation = rpp;
+ sec->reloc_count = 4;
+ break;
+ }
+ case RDATA:
+ /* Each external function in a PowerPC PE file has a two word
+ descriptor consisting of:
+ 1. The address of the code.
+ 2. The address of the appropriate .toc
+ We use relocs to build this. */
+ si->size = 8;
+ si->data = xmalloc (8);
+ memset (si->data, 0, si->size);
+
+ rpp = xmalloc (sizeof (arelent *) * 3);
+ rpp[0] = rel = xmalloc (sizeof (arelent));
+ rpp[1] = xmalloc (sizeof (arelent));
+ rpp[2] = 0;
+
+ rel->address = 0;
+ rel->addend = 0;
+ rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_32);
+ rel->sym_ptr_ptr = fn_pp;
+
+ rel = rpp[1];
+
+ rel->address = 4;
+ rel->addend = 0;
+ rel->howto = bfd_reloc_type_lookup (abfd, BFD_RELOC_32);
+ rel->sym_ptr_ptr = toc_pp;
+
+ sec->orelocation = rpp;
+ sec->reloc_count = 2;
+ break;
+#endif /* DLLTOOL_PPC */
+ }
+ }
+
+ {
+ bfd_vma vma = 0;
+ /* Size up all the sections. */
+ for (i = 0; i < NSECS; i++)
+ {
+ sinfo *si = secdata + i;
+
+ bfd_set_section_size (abfd, si->sec, si->size);
+ bfd_set_section_vma (abfd, si->sec, vma);
+ }
+ }
+ /* Write them out. */
+ for (i = 0; i < NSECS; i++)
+ {
+ sinfo *si = secdata + i;
+
+ if (i == IDATA5 && no_idata5)
+ continue;
+
+ if (i == IDATA4 && no_idata4)
+ continue;
+
+ bfd_set_section_contents (abfd, si->sec,
+ si->data, 0,
+ si->size);
+ }
+
+ bfd_set_symtab (abfd, ptrs, oidx);
+ bfd_close (abfd);
+ abfd = bfd_openr (outname, HOW_BFD_READ_TARGET);
+ if (!abfd)
+ /* xgettext:c-format */
+ fatal (_("bfd_open failed reopen stub file: %s: %s"),
+ outname, bfd_get_errmsg ());
+
+ return abfd;
+}
+
+static bfd *
+make_head (void)
+{
+ FILE *f = fopen (TMP_HEAD_S, FOPEN_WT);
+ bfd *abfd;
+
+ if (f == NULL)
+ {
+ fatal (_("failed to open temporary head file: %s"), TMP_HEAD_S);
+ return NULL;
+ }
+
+ fprintf (f, "%s IMAGE_IMPORT_DESCRIPTOR\n", ASM_C);
+ fprintf (f, "\t.section\t.idata$2\n");
+
+ fprintf (f,"\t%s\t%s\n", ASM_GLOBAL, head_label);
+
+ fprintf (f, "%s:\n", head_label);
+
+ fprintf (f, "\t%shname%s\t%sPtr to image import by name list\n",
+ ASM_RVA_BEFORE, ASM_RVA_AFTER, ASM_C);
+
+ fprintf (f, "\t%sthis should be the timestamp, but NT sometimes\n", ASM_C);
+ fprintf (f, "\t%sdoesn't load DLLs when this is set.\n", ASM_C);
+ fprintf (f, "\t%s\t0\t%s loaded time\n", ASM_LONG, ASM_C);
+ fprintf (f, "\t%s\t0\t%s Forwarder chain\n", ASM_LONG, ASM_C);
+ fprintf (f, "\t%s__%s_iname%s\t%s imported dll's name\n",
+ ASM_RVA_BEFORE,
+ imp_name_lab,
+ ASM_RVA_AFTER,
+ ASM_C);
+ fprintf (f, "\t%sfthunk%s\t%s pointer to firstthunk\n",
+ ASM_RVA_BEFORE,
+ ASM_RVA_AFTER, ASM_C);
+
+ fprintf (f, "%sStuff for compatibility\n", ASM_C);
+
+ if (!no_idata5)
+ {
+ fprintf (f, "\t.section\t.idata$5\n");
+ if (use_nul_prefixed_import_tables)
+ {
+ if (create_for_pep)
+ fprintf (f,"\t%s\t0\n\t%s\t0\n", ASM_LONG, ASM_LONG);
+ else
+ fprintf (f,"\t%s\t0\n", ASM_LONG);
+ }
+ fprintf (f, "fthunk:\n");
+ }
+
+ if (!no_idata4)
+ {
+ fprintf (f, "\t.section\t.idata$4\n");
+ if (use_nul_prefixed_import_tables)
+ {
+ if (create_for_pep)
+ fprintf (f,"\t%s\t0\n\t%s\t0\n", ASM_LONG, ASM_LONG);
+ else
+ fprintf (f,"\t%s\t0\n", ASM_LONG);
+ }
+ fprintf (f, "hname:\n");
+ }
+
+ fclose (f);
+
+ assemble_file (TMP_HEAD_S, TMP_HEAD_O);
+
+ abfd = bfd_openr (TMP_HEAD_O, HOW_BFD_READ_TARGET);
+ if (abfd == NULL)
+ /* xgettext:c-format */
+ fatal (_("failed to open temporary head file: %s: %s"),
+ TMP_HEAD_O, bfd_get_errmsg ());
+
+ return abfd;
+}
+
+bfd *
+make_delay_head (void)
+{
+ FILE *f = fopen (TMP_HEAD_S, FOPEN_WT);
+ bfd *abfd;
+
+ if (f == NULL)
+ {
+ fatal (_("failed to open temporary head file: %s"), TMP_HEAD_S);
+ return NULL;
+ }
+
+ /* Output the __tailMerge__xxx function */
+ fprintf (f, "%s Import trampoline\n", ASM_C);
+ fprintf (f, "\t.section\t.text\n");
+ fprintf(f,"\t%s\t%s\n", ASM_GLOBAL, head_label);
+ fprintf (f, "%s:\n", head_label);
+ fprintf (f, mtable[machine].trampoline, imp_name_lab);
+
+ /* Output the delay import descriptor */
+ fprintf (f, "\n%s DELAY_IMPORT_DESCRIPTOR\n", ASM_C);
+ fprintf (f, ".section\t.text$2\n");
+ fprintf (f,"%s __DELAY_IMPORT_DESCRIPTOR_%s\n", ASM_GLOBAL,imp_name_lab);
+ fprintf (f, "__DELAY_IMPORT_DESCRIPTOR_%s:\n", imp_name_lab);
+ fprintf (f, "\t%s 1\t%s grAttrs\n", ASM_LONG, ASM_C);
+ fprintf (f, "\t%s__%s_iname%s\t%s rvaDLLName\n",
+ ASM_RVA_BEFORE, imp_name_lab, ASM_RVA_AFTER, ASM_C);
+ fprintf (f, "\t%s__DLL_HANDLE_%s%s\t%s rvaHmod\n",
+ ASM_RVA_BEFORE, imp_name_lab, ASM_RVA_AFTER, ASM_C);
+ fprintf (f, "\t%s__IAT_%s%s\t%s rvaIAT\n",
+ ASM_RVA_BEFORE, imp_name_lab, ASM_RVA_AFTER, ASM_C);
+ fprintf (f, "\t%s__INT_%s%s\t%s rvaINT\n",
+ ASM_RVA_BEFORE, imp_name_lab, ASM_RVA_AFTER, ASM_C);
+ fprintf (f, "\t%s\t0\t%s rvaBoundIAT\n", ASM_LONG, ASM_C);
+ fprintf (f, "\t%s\t0\t%s rvaUnloadIAT\n", ASM_LONG, ASM_C);
+ fprintf (f, "\t%s\t0\t%s dwTimeStamp\n", ASM_LONG, ASM_C);
+
+ /* Output the dll_handle */
+ fprintf (f, "\n.section .data\n");
+ fprintf (f, "__DLL_HANDLE_%s:\n", imp_name_lab);
+ fprintf (f, "\t%s\t0\t%s Handle\n", ASM_LONG, ASM_C);
+ if (create_for_pep)
+ fprintf (f, "\t%s\t0\n", ASM_LONG);
+ fprintf (f, "\n");
+
+ fprintf (f, "%sStuff for compatibility\n", ASM_C);
+
+ if (!no_idata5)
+ {
+ fprintf (f, "\t.section\t.idata$5\n");
+ /* NULL terminating list. */
+ if (create_for_pep)
+ fprintf (f,"\t%s\t0\n\t%s\t0\n", ASM_LONG, ASM_LONG);
+ else
+ fprintf (f,"\t%s\t0\n", ASM_LONG);
+ fprintf (f, "__IAT_%s:\n", imp_name_lab);
+ }
+
+ if (!no_idata4)
+ {
+ fprintf (f, "\t.section\t.idata$4\n");
+ fprintf (f, "\t%s\t0\n", ASM_LONG);
+ if (create_for_pep)
+ fprintf (f, "\t%s\t0\n", ASM_LONG);
+ fprintf (f, "\t.section\t.idata$4\n");
+ fprintf (f, "__INT_%s:\n", imp_name_lab);
+ }
+
+ fprintf (f, "\t.section\t.idata$2\n");
+
+ fclose (f);
+
+ assemble_file (TMP_HEAD_S, TMP_HEAD_O);
+
+ abfd = bfd_openr (TMP_HEAD_O, HOW_BFD_READ_TARGET);
+ if (abfd == NULL)
+ /* xgettext:c-format */
+ fatal (_("failed to open temporary head file: %s: %s"),
+ TMP_HEAD_O, bfd_get_errmsg ());
+
+ return abfd;
+}
+
+static bfd *
+make_tail (void)
+{
+ FILE *f = fopen (TMP_TAIL_S, FOPEN_WT);
+ bfd *abfd;
+
+ if (f == NULL)
+ {
+ fatal (_("failed to open temporary tail file: %s"), TMP_TAIL_S);
+ return NULL;
+ }
+
+ if (!no_idata4)
+ {
+ fprintf (f, "\t.section\t.idata$4\n");
+ if (create_for_pep)
+ fprintf (f,"\t%s\t0\n\t%s\t0\n", ASM_LONG, ASM_LONG);
+ else
+ fprintf (f,"\t%s\t0\n", ASM_LONG); /* NULL terminating list. */
+ }
+
+ if (!no_idata5)
+ {
+ fprintf (f, "\t.section\t.idata$5\n");
+ if (create_for_pep)
+ fprintf (f,"\t%s\t0\n\t%s\t0\n", ASM_LONG, ASM_LONG);
+ else
+ fprintf (f,"\t%s\t0\n", ASM_LONG); /* NULL terminating list. */
+ }
+
+#ifdef DLLTOOL_PPC
+ /* Normally, we need to see a null descriptor built in idata$3 to
+ act as the terminator for the list. The ideal way, I suppose,
+ would be to mark this section as a comdat type 2 section, so
+ only one would appear in the final .exe (if our linker supported
+ comdat, that is) or cause it to be inserted by something else (say
+ crt0). */
+
+ fprintf (f, "\t.section\t.idata$3\n");
+ fprintf (f, "\t%s\t0\n", ASM_LONG);
+ fprintf (f, "\t%s\t0\n", ASM_LONG);
+ fprintf (f, "\t%s\t0\n", ASM_LONG);
+ fprintf (f, "\t%s\t0\n", ASM_LONG);
+ fprintf (f, "\t%s\t0\n", ASM_LONG);
+#endif
+
+#ifdef DLLTOOL_PPC
+ /* Other PowerPC NT compilers use idata$6 for the dllname, so I
+ do too. Original, huh? */
+ fprintf (f, "\t.section\t.idata$6\n");
+#else
+ fprintf (f, "\t.section\t.idata$7\n");
+#endif
+
+ fprintf (f, "\t%s\t__%s_iname\n", ASM_GLOBAL, imp_name_lab);
+ fprintf (f, "__%s_iname:\t%s\t\"%s\"\n",
+ imp_name_lab, ASM_TEXT, dll_name);
+
+ fclose (f);
+
+ assemble_file (TMP_TAIL_S, TMP_TAIL_O);
+
+ abfd = bfd_openr (TMP_TAIL_O, HOW_BFD_READ_TARGET);
+ if (abfd == NULL)
+ /* xgettext:c-format */
+ fatal (_("failed to open temporary tail file: %s: %s"),
+ TMP_TAIL_O, bfd_get_errmsg ());
+
+ return abfd;
+}
+
+static void
+gen_lib_file (int delay)
+{
+ int i;
+ export_type *exp;
+ bfd *ar_head;
+ bfd *ar_tail;
+ bfd *outarch;
+ bfd * head = 0;
+
+ unlink (imp_name);
+
+ outarch = bfd_openw (imp_name, HOW_BFD_WRITE_TARGET);
+
+ if (!outarch)
+ /* xgettext:c-format */
+ fatal (_("Can't create .lib file: %s: %s"),
+ imp_name, bfd_get_errmsg ());
+
+ /* xgettext:c-format */
+ inform (_("Creating library file: %s"), imp_name);
+
+ bfd_set_format (outarch, bfd_archive);
+ outarch->has_armap = 1;
+ outarch->is_thin_archive = 0;
+
+ /* Work out a reasonable size of things to put onto one line. */
+ if (delay)
+ {
+ ar_head = make_delay_head ();
+ }
+ else
+ {
+ ar_head = make_head ();
+ }
+ ar_tail = make_tail();
+
+ if (ar_head == NULL || ar_tail == NULL)
+ return;
+
+ for (i = 0; (exp = d_exports_lexically[i]); i++)
+ {
+ bfd *n;
+ /* Don't add PRIVATE entries to import lib. */
+ if (exp->private)
+ continue;
+ n = make_one_lib_file (exp, i, delay);
+ n->archive_next = head;
+ head = n;
+ if (ext_prefix_alias)
+ {
+ export_type alias_exp;
+
+ assert (i < PREFIX_ALIAS_BASE);
+ alias_exp.name = make_imp_label (ext_prefix_alias, exp->name);
+ alias_exp.internal_name = exp->internal_name;
+ alias_exp.its_name = exp->its_name;
+ alias_exp.import_name = exp->name;
+ alias_exp.ordinal = exp->ordinal;
+ alias_exp.constant = exp->constant;
+ alias_exp.noname = exp->noname;
+ alias_exp.private = exp->private;
+ alias_exp.data = exp->data;
+ alias_exp.hint = exp->hint;
+ alias_exp.forward = exp->forward;
+ alias_exp.next = exp->next;
+ n = make_one_lib_file (&alias_exp, i + PREFIX_ALIAS_BASE, delay);
+ n->archive_next = head;
+ head = n;
+ }
+ }
+
+ /* Now stick them all into the archive. */
+ ar_head->archive_next = head;
+ ar_tail->archive_next = ar_head;
+ head = ar_tail;
+
+ if (! bfd_set_archive_head (outarch, head))
+ bfd_fatal ("bfd_set_archive_head");
+
+ if (! bfd_close (outarch))
+ bfd_fatal (imp_name);
+
+ while (head != NULL)
+ {
+ bfd *n = head->archive_next;
+ bfd_close (head);
+ head = n;
+ }
+
+ /* Delete all the temp files. */
+ if (dontdeltemps == 0)
+ {
+ unlink (TMP_HEAD_O);
+ unlink (TMP_HEAD_S);
+ unlink (TMP_TAIL_O);
+ unlink (TMP_TAIL_S);
+ }
+
+ if (dontdeltemps < 2)
+ {
+ char *name;
+
+ name = (char *) alloca (strlen (TMP_STUB) + 10);
+ for (i = 0; (exp = d_exports_lexically[i]); i++)
+ {
+ /* Don't delete non-existent stubs for PRIVATE entries. */
+ if (exp->private)
+ continue;
+ sprintf (name, "%s%05d.o", TMP_STUB, i);
+ if (unlink (name) < 0)
+ /* xgettext:c-format */
+ non_fatal (_("cannot delete %s: %s"), name, strerror (errno));
+ if (ext_prefix_alias)
+ {
+ sprintf (name, "%s%05d.o", TMP_STUB, i + PREFIX_ALIAS_BASE);
+ if (unlink (name) < 0)
+ /* xgettext:c-format */
+ non_fatal (_("cannot delete %s: %s"), name, strerror (errno));
+ }
+ }
+ }
+
+ inform (_("Created lib file"));
+}
+
+/* Append a copy of data (cast to char *) to list. */
+
+static void
+dll_name_list_append (dll_name_list_type * list, bfd_byte * data)
+{
+ dll_name_list_node_type * entry;
+
+ /* Error checking. */
+ if (! list || ! list->tail)
+ return;
+
+ /* Allocate new node. */
+ entry = ((dll_name_list_node_type *)
+ xmalloc (sizeof (dll_name_list_node_type)));
+
+ /* Initialize its values. */
+ entry->dllname = xstrdup ((char *) data);
+ entry->next = NULL;
+
+ /* Add to tail, and move tail. */
+ list->tail->next = entry;
+ list->tail = entry;
+}
+
+/* Count the number of entries in list. */
+
+static int
+dll_name_list_count (dll_name_list_type * list)
+{
+ dll_name_list_node_type * p;
+ int count = 0;
+
+ /* Error checking. */
+ if (! list || ! list->head)
+ return 0;
+
+ p = list->head;
+
+ while (p && p->next)
+ {
+ count++;
+ p = p->next;
+ }
+ return count;
+}
+
+/* Print each entry in list to stdout. */
+
+static void
+dll_name_list_print (dll_name_list_type * list)
+{
+ dll_name_list_node_type * p;
+
+ /* Error checking. */
+ if (! list || ! list->head)
+ return;
+
+ p = list->head;
+
+ while (p && p->next && p->next->dllname && *(p->next->dllname))
+ {
+ printf ("%s\n", p->next->dllname);
+ p = p->next;
+ }
+}
+
+/* Free all entries in list, and list itself. */
+
+static void
+dll_name_list_free (dll_name_list_type * list)
+{
+ if (list)
+ {
+ dll_name_list_free_contents (list->head);
+ list->head = NULL;
+ list->tail = NULL;
+ free (list);
+ }
+}
+
+/* Recursive function to free all nodes entry->next->next...
+ as well as entry itself. */
+
+static void
+dll_name_list_free_contents (dll_name_list_node_type * entry)
+{
+ if (entry)
+ {
+ if (entry->next)
+ {
+ dll_name_list_free_contents (entry->next);
+ entry->next = NULL;
+ }
+ if (entry->dllname)
+ {
+ free (entry->dllname);
+ entry->dllname = NULL;
+ }
+ free (entry);
+ }
+}
+
+/* Allocate and initialize a dll_name_list_type object,
+ including its sentinel node. Caller is responsible
+ for calling dll_name_list_free when finished with
+ the list. */
+
+static dll_name_list_type *
+dll_name_list_create (void)
+{
+ /* Allocate list. */
+ dll_name_list_type * list = xmalloc (sizeof (dll_name_list_type));
+
+ /* Allocate and initialize sentinel node. */
+ list->head = xmalloc (sizeof (dll_name_list_node_type));
+ list->head->dllname = NULL;
+ list->head->next = NULL;
+
+ /* Bookkeeping for empty list. */
+ list->tail = list->head;
+
+ return list;
+}
+
+/* Search the symbol table of the suppled BFD for a symbol whose name matches
+ OBJ (where obj is cast to const char *). If found, set global variable
+ identify_member_contains_symname_result TRUE. It is the caller's
+ responsibility to set the result variable FALSE before iterating with
+ this function. */
+
+static void
+identify_member_contains_symname (bfd * abfd,
+ bfd * archive_bfd ATTRIBUTE_UNUSED,
+ void * obj)
+{
+ long storage_needed;
+ asymbol ** symbol_table;
+ long number_of_symbols;
+ long i;
+ symname_search_data_type * search_data = (symname_search_data_type *) obj;
+
+ /* If we already found the symbol in a different member,
+ short circuit. */
+ if (search_data->found)
+ return;
+
+ storage_needed = bfd_get_symtab_upper_bound (abfd);
+ if (storage_needed <= 0)
+ return;
+
+ symbol_table = xmalloc (storage_needed);
+ number_of_symbols = bfd_canonicalize_symtab (abfd, symbol_table);
+ if (number_of_symbols < 0)
+ {
+ free (symbol_table);
+ return;
+ }
+
+ for (i = 0; i < number_of_symbols; i++)
+ {
+ if (strncmp (symbol_table[i]->name,
+ search_data->symname,
+ strlen (search_data->symname)) == 0)
+ {
+ search_data->found = TRUE;
+ break;
+ }
+ }
+ free (symbol_table);
+}
+
+/* This is the main implementation for the --identify option.
+ Given the name of an import library in identify_imp_name, first determine
+ if the import library is a GNU binutils-style one (where the DLL name is
+ stored in an .idata$7 (.idata$6 on PPC) section, or if it is a MS-style
+ one (where the DLL name, along with much other data, is stored in the
+ .idata$6 section). We determine the style of import library by searching
+ for the DLL-structure symbol inserted by MS tools:
+ __NULL_IMPORT_DESCRIPTOR.
+
+ Once we know which section to search, evaluate each section for the
+ appropriate properties that indicate it may contain the name of the
+ associated DLL (this differs depending on the style). Add the contents
+ of all sections which meet the criteria to a linked list of dll names.
+
+ Finally, print them all to stdout. (If --identify-strict, an error is
+ reported if more than one match was found). */
+
+static void
+identify_dll_for_implib (void)
+{
+ bfd * abfd = NULL;
+ int count = 0;
+ identify_data_type identify_data;
+ symname_search_data_type search_data;
+
+ /* Initialize identify_data. */
+ identify_data.list = dll_name_list_create ();
+ identify_data.ms_style_implib = FALSE;
+
+ /* Initialize search_data. */
+ search_data.symname = "__NULL_IMPORT_DESCRIPTOR";
+ search_data.found = FALSE;
+
+ bfd_init ();
+
+ abfd = bfd_openr (identify_imp_name, 0);
+ if (abfd == NULL)
+ /* xgettext:c-format */
+ fatal (_("Can't open .lib file: %s: %s"),
+ identify_imp_name, bfd_get_errmsg ());
+
+ if (! bfd_check_format (abfd, bfd_archive))
+ {
+ if (! bfd_close (abfd))
+ bfd_fatal (identify_imp_name);
+
+ fatal (_("%s is not a library"), identify_imp_name);
+ }
+
+ /* Detect if this a Microsoft import library. */
+ identify_search_archive (abfd,
+ identify_member_contains_symname,
+ (void *)(& search_data));
+ if (search_data.found)
+ identify_data.ms_style_implib = TRUE;
+
+ /* Rewind the bfd. */
+ if (! bfd_close (abfd))
+ bfd_fatal (identify_imp_name);
+ abfd = bfd_openr (identify_imp_name, 0);
+ if (abfd == NULL)
+ bfd_fatal (identify_imp_name);
+
+ if (!bfd_check_format (abfd, bfd_archive))
+ {
+ if (!bfd_close (abfd))
+ bfd_fatal (identify_imp_name);
+
+ fatal (_("%s is not a library"), identify_imp_name);
+ }
+
+ /* Now search for the dll name. */
+ identify_search_archive (abfd,
+ identify_search_member,
+ (void *)(& identify_data));
+
+ if (! bfd_close (abfd))
+ bfd_fatal (identify_imp_name);
+
+ count = dll_name_list_count (identify_data.list);
+ if (count > 0)
+ {
+ if (identify_strict && count > 1)
+ {
+ dll_name_list_free (identify_data.list);
+ identify_data.list = NULL;
+ fatal (_("Import library `%s' specifies two or more dlls"),
+ identify_imp_name);
+ }
+ dll_name_list_print (identify_data.list);
+ dll_name_list_free (identify_data.list);
+ identify_data.list = NULL;
+ }
+ else
+ {
+ dll_name_list_free (identify_data.list);
+ identify_data.list = NULL;
+ fatal (_("Unable to determine dll name for `%s' (not an import library?)"),
+ identify_imp_name);
+ }
+}
+
+/* Loop over all members of the archive, applying the supplied function to
+ each member that is a bfd_object. The function will be called as if:
+ func (member_bfd, abfd, user_storage) */
+
+static void
+identify_search_archive (bfd * abfd,
+ void (* operation) (bfd *, bfd *, void *),
+ void * user_storage)
+{
+ bfd * arfile = NULL;
+ bfd * last_arfile = NULL;
+ char ** matching;
+
+ while (1)
+ {
+ arfile = bfd_openr_next_archived_file (abfd, arfile);
+
+ if (arfile == NULL)
+ {
+ if (bfd_get_error () != bfd_error_no_more_archived_files)
+ bfd_fatal (bfd_get_filename (abfd));
+ break;
+ }
+
+ if (bfd_check_format_matches (arfile, bfd_object, &matching))
+ (*operation) (arfile, abfd, user_storage);
+ else
+ {
+ bfd_nonfatal (bfd_get_filename (arfile));
+ free (matching);
+ }
+
+ if (last_arfile != NULL)
+ bfd_close (last_arfile);
+
+ last_arfile = arfile;
+ }
+
+ if (last_arfile != NULL)
+ {
+ bfd_close (last_arfile);
+ }
+}
+
+/* Call the identify_search_section() function for each section of this
+ archive member. */
+
+static void
+identify_search_member (bfd *abfd,
+ bfd *archive_bfd ATTRIBUTE_UNUSED,
+ void *obj)
+{
+ bfd_map_over_sections (abfd, identify_search_section, obj);
+}
+
+/* This predicate returns true if section->name matches the desired value.
+ By default, this is .idata$7 (.idata$6 on PPC, or if the import
+ library is ms-style). */
+
+static bfd_boolean
+identify_process_section_p (asection * section, bfd_boolean ms_style_implib)
+{
+ static const char * SECTION_NAME =
+#ifdef DLLTOOL_PPC
+ /* dllname is stored in idata$6 on PPC */
+ ".idata$6";
+#else
+ ".idata$7";
+#endif
+ static const char * MS_SECTION_NAME = ".idata$6";
+
+ const char * section_name =
+ (ms_style_implib ? MS_SECTION_NAME : SECTION_NAME);
+
+ if (strcmp (section_name, section->name) == 0)
+ return TRUE;
+ return FALSE;
+}
+
+/* If *section has contents and its name is .idata$7 (.data$6 on PPC or if
+ import lib ms-generated) -- and it satisfies several other constraints
+ -- then add the contents of the section to obj->list. */
+
+static void
+identify_search_section (bfd * abfd, asection * section, void * obj)
+{
+ bfd_byte *data = 0;
+ bfd_size_type datasize;
+ identify_data_type * identify_data = (identify_data_type *)obj;
+ bfd_boolean ms_style = identify_data->ms_style_implib;
+
+ if ((section->flags & SEC_HAS_CONTENTS) == 0)
+ return;
+
+ if (! identify_process_section_p (section, ms_style))
+ return;
+
+ /* Binutils import libs seem distinguish the .idata$7 section that contains
+ the DLL name from other .idata$7 sections by the absence of the
+ SEC_RELOC flag. */
+ if (!ms_style && ((section->flags & SEC_RELOC) == SEC_RELOC))
+ return;
+
+ /* MS import libs seem to distinguish the .idata$6 section
+ that contains the DLL name from other .idata$6 sections
+ by the presence of the SEC_DATA flag. */
+ if (ms_style && ((section->flags & SEC_DATA) == 0))
+ return;
+
+ if ((datasize = bfd_section_size (abfd, section)) == 0)
+ return;
+
+ data = (bfd_byte *) xmalloc (datasize + 1);
+ data[0] = '\0';
+
+ bfd_get_section_contents (abfd, section, data, 0, datasize);
+ data[datasize] = '\0';
+
+ /* Use a heuristic to determine if data is a dll name.
+ Possible to defeat this if (a) the library has MANY
+ (more than 0x302f) imports, (b) it is an ms-style
+ import library, but (c) it is buggy, in that the SEC_DATA
+ flag is set on the "wrong" sections. This heuristic might
+ also fail to record a valid dll name if the dllname uses
+ a multibyte or unicode character set (is that valid?).
+
+ This heuristic is based on the fact that symbols names in
+ the chosen section -- as opposed to the dll name -- begin
+ at offset 2 in the data. The first two bytes are a 16bit
+ little-endian count, and start at 0x0000. However, the dll
+ name begins at offset 0 in the data. We assume that the
+ dll name does not contain unprintable characters. */
+ if (data[0] != '\0' && ISPRINT (data[0])
+ && ((datasize < 2) || ISPRINT (data[1])))
+ dll_name_list_append (identify_data->list, data);
+
+ free (data);
+}
+
+/* Run through the information gathered from the .o files and the
+ .def file and work out the best stuff. */
+
+static int
+pfunc (const void *a, const void *b)
+{
+ export_type *ap = *(export_type **) a;
+ export_type *bp = *(export_type **) b;
+
+ if (ap->ordinal == bp->ordinal)
+ return 0;
+
+ /* Unset ordinals go to the bottom. */
+ if (ap->ordinal == -1)
+ return 1;
+ if (bp->ordinal == -1)
+ return -1;
+ return (ap->ordinal - bp->ordinal);
+}
+
+static int
+nfunc (const void *a, const void *b)
+{
+ export_type *ap = *(export_type **) a;
+ export_type *bp = *(export_type **) b;
+ const char *an = ap->name;
+ const char *bn = bp->name;
+ if (ap->its_name)
+ an = ap->its_name;
+ if (bp->its_name)
+ an = bp->its_name;
+ if (killat)
+ {
+ an = (an[0] == '@') ? an + 1 : an;
+ bn = (bn[0] == '@') ? bn + 1 : bn;
+ }
+
+ return (strcmp (an, bn));
+}
+
+static void
+remove_null_names (export_type **ptr)
+{
+ int src;
+ int dst;
+
+ for (dst = src = 0; src < d_nfuncs; src++)
+ {
+ if (ptr[src])
+ {
+ ptr[dst] = ptr[src];
+ dst++;
+ }
+ }
+ d_nfuncs = dst;
+}
+
+static void
+process_duplicates (export_type **d_export_vec)
+{
+ int more = 1;
+ int i;
+
+ while (more)
+ {
+ more = 0;
+ /* Remove duplicates. */
+ qsort (d_export_vec, d_nfuncs, sizeof (export_type *), nfunc);
+
+ for (i = 0; i < d_nfuncs - 1; i++)
+ {
+ if (strcmp (d_export_vec[i]->name,
+ d_export_vec[i + 1]->name) == 0)
+ {
+ export_type *a = d_export_vec[i];
+ export_type *b = d_export_vec[i + 1];
+
+ more = 1;
+
+ /* xgettext:c-format */
+ inform (_("Warning, ignoring duplicate EXPORT %s %d,%d"),
+ a->name, a->ordinal, b->ordinal);
+
+ if (a->ordinal != -1
+ && b->ordinal != -1)
+ /* xgettext:c-format */
+ fatal (_("Error, duplicate EXPORT with ordinals: %s"),
+ a->name);
+
+ /* Merge attributes. */
+ b->ordinal = a->ordinal > 0 ? a->ordinal : b->ordinal;
+ b->constant |= a->constant;
+ b->noname |= a->noname;
+ b->data |= a->data;
+ d_export_vec[i] = 0;
+ }
+
+ remove_null_names (d_export_vec);
+ }
+ }
+
+ /* Count the names. */
+ for (i = 0; i < d_nfuncs; i++)
+ if (!d_export_vec[i]->noname)
+ d_named_nfuncs++;
+}
+
+static void
+fill_ordinals (export_type **d_export_vec)
+{
+ int lowest = -1;
+ int i;
+ char *ptr;
+ int size = 65536;
+
+ qsort (d_export_vec, d_nfuncs, sizeof (export_type *), pfunc);
+
+ /* Fill in the unset ordinals with ones from our range. */
+ ptr = (char *) xmalloc (size);
+
+ memset (ptr, 0, size);
+
+ /* Mark in our large vector all the numbers that are taken. */
+ for (i = 0; i < d_nfuncs; i++)
+ {
+ if (d_export_vec[i]->ordinal != -1)
+ {
+ ptr[d_export_vec[i]->ordinal] = 1;
+
+ if (lowest == -1 || d_export_vec[i]->ordinal < lowest)
+ lowest = d_export_vec[i]->ordinal;
+ }
+ }
+
+ /* Start at 1 for compatibility with MS toolchain. */
+ if (lowest == -1)
+ lowest = 1;
+
+ /* Now fill in ordinals where the user wants us to choose. */
+ for (i = 0; i < d_nfuncs; i++)
+ {
+ if (d_export_vec[i]->ordinal == -1)
+ {
+ int j;
+
+ /* First try within or after any user supplied range. */
+ for (j = lowest; j < size; j++)
+ if (ptr[j] == 0)
+ {
+ ptr[j] = 1;
+ d_export_vec[i]->ordinal = j;
+ goto done;
+ }
+
+ /* Then try before the range. */
+ for (j = lowest; j >0; j--)
+ if (ptr[j] == 0)
+ {
+ ptr[j] = 1;
+ d_export_vec[i]->ordinal = j;
+ goto done;
+ }
+ done:;
+ }
+ }
+
+ free (ptr);
+
+ /* And resort. */
+ qsort (d_export_vec, d_nfuncs, sizeof (export_type *), pfunc);
+
+ /* Work out the lowest and highest ordinal numbers. */
+ if (d_nfuncs)
+ {
+ if (d_export_vec[0])
+ d_low_ord = d_export_vec[0]->ordinal;
+ if (d_export_vec[d_nfuncs-1])
+ d_high_ord = d_export_vec[d_nfuncs-1]->ordinal;
+ }
+}
+
+static void
+mangle_defs (void)
+{
+ /* First work out the minimum ordinal chosen. */
+ export_type *exp;
+
+ int i;
+ int hint = 0;
+ export_type **d_export_vec = xmalloc (sizeof (export_type *) * d_nfuncs);
+
+ inform (_("Processing definitions"));
+
+ for (i = 0, exp = d_exports; exp; i++, exp = exp->next)
+ d_export_vec[i] = exp;
+
+ process_duplicates (d_export_vec);
+ fill_ordinals (d_export_vec);
+
+ /* Put back the list in the new order. */
+ d_exports = 0;
+ for (i = d_nfuncs - 1; i >= 0; i--)
+ {
+ d_export_vec[i]->next = d_exports;
+ d_exports = d_export_vec[i];
+ }
+
+ /* Build list in alpha order. */
+ d_exports_lexically = (export_type **)
+ xmalloc (sizeof (export_type *) * (d_nfuncs + 1));
+
+ for (i = 0, exp = d_exports; exp; i++, exp = exp->next)
+ d_exports_lexically[i] = exp;
+
+ d_exports_lexically[i] = 0;
+
+ qsort (d_exports_lexically, i, sizeof (export_type *), nfunc);
+
+ /* Fill exp entries with their hint values. */
+ for (i = 0; i < d_nfuncs; i++)
+ if (!d_exports_lexically[i]->noname || show_allnames)
+ d_exports_lexically[i]->hint = hint++;
+
+ inform (_("Processed definitions"));
+}
+
+static void
+usage (FILE *file, int status)
+{
+ /* xgetext:c-format */
+ fprintf (file, _("Usage %s <option(s)> <object-file(s)>\n"), program_name);
+ /* xgetext:c-format */
+ fprintf (file, _(" -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"), mname);
+ fprintf (file, _(" possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"));
+ fprintf (file, _(" -e --output-exp <outname> Generate an export file.\n"));
+ fprintf (file, _(" -l --output-lib <outname> Generate an interface library.\n"));
+ fprintf (file, _(" -y --output-delaylib <outname> Create a delay-import library.\n"));
+ fprintf (file, _(" -a --add-indirect Add dll indirects to export file.\n"));
+ fprintf (file, _(" -D --dllname <name> Name of input dll to put into interface lib.\n"));
+ fprintf (file, _(" -d --input-def <deffile> Name of .def file to be read in.\n"));
+ fprintf (file, _(" -z --output-def <deffile> Name of .def file to be created.\n"));
+ fprintf (file, _(" --export-all-symbols Export all symbols to .def\n"));
+ fprintf (file, _(" --no-export-all-symbols Only export listed symbols\n"));
+ fprintf (file, _(" --exclude-symbols <list> Don't export <list>\n"));
+ fprintf (file, _(" --no-default-excludes Clear default exclude symbols\n"));
+ fprintf (file, _(" -b --base-file <basefile> Read linker generated base file.\n"));
+ fprintf (file, _(" -x --no-idata4 Don't generate idata$4 section.\n"));
+ fprintf (file, _(" -c --no-idata5 Don't generate idata$5 section.\n"));
+ fprintf (file, _(" --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"));
+ fprintf (file, _(" -U --add-underscore Add underscores to all symbols in interface library.\n"));
+ fprintf (file, _(" --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"));
+ fprintf (file, _(" --no-leading-underscore All symbols shouldn't be prefixed by an underscore.\n"));
+ fprintf (file, _(" --leading-underscore All symbols should be prefixed by an underscore.\n"));
+ fprintf (file, _(" -k --kill-at Kill @<n> from exported names.\n"));
+ fprintf (file, _(" -A --add-stdcall-alias Add aliases without @<n>.\n"));
+ fprintf (file, _(" -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"));
+ fprintf (file, _(" -S --as <name> Use <name> for assembler.\n"));
+ fprintf (file, _(" -f --as-flags <flags> Pass <flags> to the assembler.\n"));
+ fprintf (file, _(" -C --compat-implib Create backward compatible import library.\n"));
+ fprintf (file, _(" -n --no-delete Keep temp files (repeat for extra preservation).\n"));
+ fprintf (file, _(" -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"));
+ fprintf (file, _(" -I --identify <implib> Report the name of the DLL associated with <implib>.\n"));
+ fprintf (file, _(" --identify-strict Causes --identify to report error when multiple DLLs.\n"));
+ fprintf (file, _(" -v --verbose Be verbose.\n"));
+ fprintf (file, _(" -V --version Display the program version.\n"));
+ fprintf (file, _(" -h --help Display this information.\n"));
+ fprintf (file, _(" @<file> Read options from <file>.\n"));
+#ifdef DLLTOOL_MCORE_ELF
+ fprintf (file, _(" -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"));
+ fprintf (file, _(" -L --linker <name> Use <name> as the linker.\n"));
+ fprintf (file, _(" -F --linker-flags <flags> Pass <flags> to the linker.\n"));
+#endif
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+ exit (status);
+}
+
+#define OPTION_EXPORT_ALL_SYMS 150
+#define OPTION_NO_EXPORT_ALL_SYMS (OPTION_EXPORT_ALL_SYMS + 1)
+#define OPTION_EXCLUDE_SYMS (OPTION_NO_EXPORT_ALL_SYMS + 1)
+#define OPTION_NO_DEFAULT_EXCLUDES (OPTION_EXCLUDE_SYMS + 1)
+#define OPTION_ADD_STDCALL_UNDERSCORE (OPTION_NO_DEFAULT_EXCLUDES + 1)
+#define OPTION_USE_NUL_PREFIXED_IMPORT_TABLES \
+ (OPTION_ADD_STDCALL_UNDERSCORE + 1)
+#define OPTION_IDENTIFY_STRICT (OPTION_USE_NUL_PREFIXED_IMPORT_TABLES + 1)
+#define OPTION_NO_LEADING_UNDERSCORE (OPTION_IDENTIFY_STRICT + 1)
+#define OPTION_LEADING_UNDERSCORE (OPTION_NO_LEADING_UNDERSCORE + 1)
+
+static const struct option long_options[] =
+{
+ {"no-delete", no_argument, NULL, 'n'},
+ {"dllname", required_argument, NULL, 'D'},
+ {"no-idata4", no_argument, NULL, 'x'},
+ {"no-idata5", no_argument, NULL, 'c'},
+ {"use-nul-prefixed-import-tables", no_argument, NULL,
+ OPTION_USE_NUL_PREFIXED_IMPORT_TABLES},
+ {"output-exp", required_argument, NULL, 'e'},
+ {"output-def", required_argument, NULL, 'z'},
+ {"export-all-symbols", no_argument, NULL, OPTION_EXPORT_ALL_SYMS},
+ {"no-export-all-symbols", no_argument, NULL, OPTION_NO_EXPORT_ALL_SYMS},
+ {"exclude-symbols", required_argument, NULL, OPTION_EXCLUDE_SYMS},
+ {"no-default-excludes", no_argument, NULL, OPTION_NO_DEFAULT_EXCLUDES},
+ {"output-lib", required_argument, NULL, 'l'},
+ {"def", required_argument, NULL, 'd'}, /* for compatibility with older versions */
+ {"input-def", required_argument, NULL, 'd'},
+ {"add-underscore", no_argument, NULL, 'U'},
+ {"add-stdcall-underscore", no_argument, NULL, OPTION_ADD_STDCALL_UNDERSCORE},
+ {"no-leading-underscore", no_argument, NULL, OPTION_NO_LEADING_UNDERSCORE},
+ {"leading-underscore", no_argument, NULL, OPTION_LEADING_UNDERSCORE},
+ {"kill-at", no_argument, NULL, 'k'},
+ {"add-stdcall-alias", no_argument, NULL, 'A'},
+ {"ext-prefix-alias", required_argument, NULL, 'p'},
+ {"identify", required_argument, NULL, 'I'},
+ {"identify-strict", no_argument, NULL, OPTION_IDENTIFY_STRICT},
+ {"verbose", no_argument, NULL, 'v'},
+ {"version", no_argument, NULL, 'V'},
+ {"help", no_argument, NULL, 'h'},
+ {"machine", required_argument, NULL, 'm'},
+ {"add-indirect", no_argument, NULL, 'a'},
+ {"base-file", required_argument, NULL, 'b'},
+ {"as", required_argument, NULL, 'S'},
+ {"as-flags", required_argument, NULL, 'f'},
+ {"mcore-elf", required_argument, NULL, 'M'},
+ {"compat-implib", no_argument, NULL, 'C'},
+ {"temp-prefix", required_argument, NULL, 't'},
+ {"output-delaylib", required_argument, NULL, 'y'},
+ {NULL,0,NULL,0}
+};
+
+int main (int, char **);
+
+int
+main (int ac, char **av)
+{
+ int c;
+ int i;
+ char *firstarg = 0;
+ program_name = av[0];
+ oav = av;
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ expandargv (&ac, &av);
+
+ while ((c = getopt_long (ac, av,
+#ifdef DLLTOOL_MCORE_ELF
+ "m:e:l:aD:d:z:b:xp:cCuUkAS:f:nI:vVHhM:L:F:",
+#else
+ "m:e:l:y:aD:d:z:b:xp:cCuUkAS:f:nI:vVHh",
+#endif
+ long_options, 0))
+ != EOF)
+ {
+ switch (c)
+ {
+ case OPTION_EXPORT_ALL_SYMS:
+ export_all_symbols = TRUE;
+ break;
+ case OPTION_NO_EXPORT_ALL_SYMS:
+ export_all_symbols = FALSE;
+ break;
+ case OPTION_EXCLUDE_SYMS:
+ add_excludes (optarg);
+ break;
+ case OPTION_NO_DEFAULT_EXCLUDES:
+ do_default_excludes = FALSE;
+ break;
+ case OPTION_USE_NUL_PREFIXED_IMPORT_TABLES:
+ use_nul_prefixed_import_tables = TRUE;
+ break;
+ case OPTION_ADD_STDCALL_UNDERSCORE:
+ add_stdcall_underscore = 1;
+ break;
+ case OPTION_NO_LEADING_UNDERSCORE:
+ leading_underscore = 0;
+ break;
+ case OPTION_LEADING_UNDERSCORE:
+ leading_underscore = 1;
+ break;
+ case OPTION_IDENTIFY_STRICT:
+ identify_strict = 1;
+ break;
+ case 'x':
+ no_idata4 = 1;
+ break;
+ case 'c':
+ no_idata5 = 1;
+ break;
+ case 'S':
+ as_name = optarg;
+ break;
+ case 't':
+ tmp_prefix = optarg;
+ break;
+ case 'f':
+ as_flags = optarg;
+ break;
+
+ /* Ignored for compatibility. */
+ case 'u':
+ break;
+ case 'a':
+ add_indirect = 1;
+ break;
+ case 'z':
+ output_def = fopen (optarg, FOPEN_WT);
+ break;
+ case 'D':
+ dll_name = (char*) lbasename (optarg);
+ if (dll_name != optarg)
+ non_fatal (_("Path components stripped from dllname, '%s'."),
+ optarg);
+ break;
+ case 'l':
+ imp_name = optarg;
+ break;
+ case 'e':
+ exp_name = optarg;
+ break;
+ case 'H':
+ case 'h':
+ usage (stdout, 0);
+ break;
+ case 'm':
+ mname = optarg;
+ break;
+ case 'I':
+ identify_imp_name = optarg;
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ case 'V':
+ print_version (program_name);
+ break;
+ case 'U':
+ add_underscore = 1;
+ break;
+ case 'k':
+ killat = 1;
+ break;
+ case 'A':
+ add_stdcall_alias = 1;
+ break;
+ case 'p':
+ ext_prefix_alias = optarg;
+ break;
+ case 'd':
+ def_file = optarg;
+ break;
+ case 'n':
+ dontdeltemps++;
+ break;
+ case 'b':
+ base_file = fopen (optarg, FOPEN_RB);
+
+ if (!base_file)
+ /* xgettext:c-format */
+ fatal (_("Unable to open base-file: %s"), optarg);
+
+ break;
+#ifdef DLLTOOL_MCORE_ELF
+ case 'M':
+ mcore_elf_out_file = optarg;
+ break;
+ case 'L':
+ mcore_elf_linker = optarg;
+ break;
+ case 'F':
+ mcore_elf_linker_flags = optarg;
+ break;
+#endif
+ case 'C':
+ create_compat_implib = 1;
+ break;
+ case 'y':
+ delayimp_name = optarg;
+ break;
+ default:
+ usage (stderr, 1);
+ break;
+ }
+ }
+
+ if (!tmp_prefix)
+ tmp_prefix = prefix_encode ("d", getpid ());
+
+ for (i = 0; mtable[i].type; i++)
+ if (strcmp (mtable[i].type, mname) == 0)
+ break;
+
+ if (!mtable[i].type)
+ /* xgettext:c-format */
+ fatal (_("Machine '%s' not supported"), mname);
+
+ machine = i;
+
+ /* Check if we generated PE+. */
+ create_for_pep = strcmp (mname, "i386:x86-64") == 0;
+
+ {
+ /* Check the default underscore */
+ int u = leading_underscore; /* Underscoring mode. -1 for use default. */
+ if (u == -1)
+ bfd_get_target_info (mtable[machine].how_bfd_target, NULL,
+ NULL, &u, NULL);
+ if (u != -1)
+ leading_underscore = (u != 0 ? TRUE : FALSE);
+ }
+
+ if (!dll_name && exp_name)
+ {
+ /* If we are inferring dll_name from exp_name,
+ strip off any path components, without emitting
+ a warning. */
+ const char* exp_basename = lbasename (exp_name);
+ const int len = strlen (exp_basename) + 5;
+ dll_name = xmalloc (len);
+ strcpy (dll_name, exp_basename);
+ strcat (dll_name, ".dll");
+ dll_name_set_by_exp_name = 1;
+ }
+
+ if (as_name == NULL)
+ as_name = deduce_name ("as");
+
+ /* Don't use the default exclude list if we're reading only the
+ symbols in the .drectve section. The default excludes are meant
+ to avoid exporting DLL entry point and Cygwin32 impure_ptr. */
+ if (! export_all_symbols)
+ do_default_excludes = FALSE;
+
+ if (do_default_excludes)
+ set_default_excludes ();
+
+ if (def_file)
+ process_def_file (def_file);
+
+ while (optind < ac)
+ {
+ if (!firstarg)
+ firstarg = av[optind];
+ scan_obj_file (av[optind]);
+ optind++;
+ }
+
+ mangle_defs ();
+
+ if (exp_name)
+ gen_exp_file ();
+
+ if (imp_name)
+ {
+ /* Make imp_name safe for use as a label. */
+ char *p;
+
+ imp_name_lab = xstrdup (imp_name);
+ for (p = imp_name_lab; *p; p++)
+ {
+ if (!ISALNUM (*p))
+ *p = '_';
+ }
+ head_label = make_label("_head_", imp_name_lab);
+ gen_lib_file (0);
+ }
+
+ if (delayimp_name)
+ {
+ /* Make delayimp_name safe for use as a label. */
+ char *p;
+
+ if (mtable[machine].how_dljtab == 0)
+ {
+ inform (_("Warning, machine type (%d) not supported for "
+ "delayimport."), machine);
+ }
+ else
+ {
+ killat = 1;
+ imp_name = delayimp_name;
+ imp_name_lab = xstrdup (imp_name);
+ for (p = imp_name_lab; *p; p++)
+ {
+ if (!ISALNUM (*p))
+ *p = '_';
+ }
+ head_label = make_label("__tailMerge_", imp_name_lab);
+ gen_lib_file (1);
+ }
+ }
+
+ if (output_def)
+ gen_def_file ();
+
+ if (identify_imp_name)
+ {
+ identify_dll_for_implib ();
+ }
+
+#ifdef DLLTOOL_MCORE_ELF
+ if (mcore_elf_out_file)
+ mcore_elf_gen_out_file ();
+#endif
+
+ return 0;
+}
+
+/* Look for the program formed by concatenating PROG_NAME and the
+ string running from PREFIX to END_PREFIX. If the concatenated
+ string contains a '/', try appending EXECUTABLE_SUFFIX if it is
+ appropriate. */
+
+static char *
+look_for_prog (const char *prog_name, const char *prefix, int end_prefix)
+{
+ struct stat s;
+ char *cmd;
+
+ cmd = xmalloc (strlen (prefix)
+ + strlen (prog_name)
+#ifdef HAVE_EXECUTABLE_SUFFIX
+ + strlen (EXECUTABLE_SUFFIX)
+#endif
+ + 10);
+ strcpy (cmd, prefix);
+
+ sprintf (cmd + end_prefix, "%s", prog_name);
+
+ if (strchr (cmd, '/') != NULL)
+ {
+ int found;
+
+ found = (stat (cmd, &s) == 0
+#ifdef HAVE_EXECUTABLE_SUFFIX
+ || stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0
+#endif
+ );
+
+ if (! found)
+ {
+ /* xgettext:c-format */
+ inform (_("Tried file: %s"), cmd);
+ free (cmd);
+ return NULL;
+ }
+ }
+
+ /* xgettext:c-format */
+ inform (_("Using file: %s"), cmd);
+
+ return cmd;
+}
+
+/* Deduce the name of the program we are want to invoke.
+ PROG_NAME is the basic name of the program we want to run,
+ eg "as" or "ld". The catch is that we might want actually
+ run "i386-pe-as" or "ppc-pe-ld".
+
+ If argv[0] contains the full path, then try to find the program
+ in the same place, with and then without a target-like prefix.
+
+ Given, argv[0] = /usr/local/bin/i586-cygwin32-dlltool,
+ deduce_name("as") uses the following search order:
+
+ /usr/local/bin/i586-cygwin32-as
+ /usr/local/bin/as
+ as
+
+ If there's an EXECUTABLE_SUFFIX, it'll use that as well; for each
+ name, it'll try without and then with EXECUTABLE_SUFFIX.
+
+ Given, argv[0] = i586-cygwin32-dlltool, it will not even try "as"
+ as the fallback, but rather return i586-cygwin32-as.
+
+ Oh, and given, argv[0] = dlltool, it'll return "as".
+
+ Returns a dynamically allocated string. */
+
+static char *
+deduce_name (const char *prog_name)
+{
+ char *cmd;
+ char *dash, *slash, *cp;
+
+ dash = NULL;
+ slash = NULL;
+ for (cp = program_name; *cp != '\0'; ++cp)
+ {
+ if (*cp == '-')
+ dash = cp;
+ if (
+#if defined(__DJGPP__) || defined (__CYGWIN__) || defined(__WIN32__)
+ *cp == ':' || *cp == '\\' ||
+#endif
+ *cp == '/')
+ {
+ slash = cp;
+ dash = NULL;
+ }
+ }
+
+ cmd = NULL;
+
+ if (dash != NULL)
+ {
+ /* First, try looking for a prefixed PROG_NAME in the
+ PROGRAM_NAME directory, with the same prefix as PROGRAM_NAME. */
+ cmd = look_for_prog (prog_name, program_name, dash - program_name + 1);
+ }
+
+ if (slash != NULL && cmd == NULL)
+ {
+ /* Next, try looking for a PROG_NAME in the same directory as
+ that of this program. */
+ cmd = look_for_prog (prog_name, program_name, slash - program_name + 1);
+ }
+
+ if (cmd == NULL)
+ {
+ /* Just return PROG_NAME as is. */
+ cmd = xstrdup (prog_name);
+ }
+
+ return cmd;
+}
+
+#ifdef DLLTOOL_MCORE_ELF
+typedef struct fname_cache
+{
+ const char * filename;
+ struct fname_cache * next;
+}
+fname_cache;
+
+static fname_cache fnames;
+
+static void
+mcore_elf_cache_filename (const char * filename)
+{
+ fname_cache * ptr;
+
+ ptr = & fnames;
+
+ while (ptr->next != NULL)
+ ptr = ptr->next;
+
+ ptr->filename = filename;
+ ptr->next = (fname_cache *) malloc (sizeof (fname_cache));
+ if (ptr->next != NULL)
+ ptr->next->next = NULL;
+}
+
+#define MCORE_ELF_TMP_OBJ "mcoreelf.o"
+#define MCORE_ELF_TMP_EXP "mcoreelf.exp"
+#define MCORE_ELF_TMP_LIB "mcoreelf.lib"
+
+static void
+mcore_elf_gen_out_file (void)
+{
+ fname_cache * ptr;
+ dyn_string_t ds;
+
+ /* Step one. Run 'ld -r' on the input object files in order to resolve
+ any internal references and to generate a single .exports section. */
+ ptr = & fnames;
+
+ ds = dyn_string_new (100);
+ dyn_string_append_cstr (ds, "-r ");
+
+ if (mcore_elf_linker_flags != NULL)
+ dyn_string_append_cstr (ds, mcore_elf_linker_flags);
+
+ while (ptr->next != NULL)
+ {
+ dyn_string_append_cstr (ds, ptr->filename);
+ dyn_string_append_cstr (ds, " ");
+
+ ptr = ptr->next;
+ }
+
+ dyn_string_append_cstr (ds, "-o ");
+ dyn_string_append_cstr (ds, MCORE_ELF_TMP_OBJ);
+
+ if (mcore_elf_linker == NULL)
+ mcore_elf_linker = deduce_name ("ld");
+
+ run (mcore_elf_linker, ds->s);
+
+ dyn_string_delete (ds);
+
+ /* Step two. Create a .exp file and a .lib file from the temporary file.
+ Do this by recursively invoking dlltool... */
+ ds = dyn_string_new (100);
+
+ dyn_string_append_cstr (ds, "-S ");
+ dyn_string_append_cstr (ds, as_name);
+
+ dyn_string_append_cstr (ds, " -e ");
+ dyn_string_append_cstr (ds, MCORE_ELF_TMP_EXP);
+ dyn_string_append_cstr (ds, " -l ");
+ dyn_string_append_cstr (ds, MCORE_ELF_TMP_LIB);
+ dyn_string_append_cstr (ds, " " );
+ dyn_string_append_cstr (ds, MCORE_ELF_TMP_OBJ);
+
+ if (verbose)
+ dyn_string_append_cstr (ds, " -v");
+
+ if (dontdeltemps)
+ {
+ dyn_string_append_cstr (ds, " -n");
+
+ if (dontdeltemps > 1)
+ dyn_string_append_cstr (ds, " -n");
+ }
+
+ /* XXX - FIME: ought to check/copy other command line options as well. */
+ run (program_name, ds->s);
+
+ dyn_string_delete (ds);
+
+ /* Step four. Feed the .exp and object files to ld -shared to create the dll. */
+ ds = dyn_string_new (100);
+
+ dyn_string_append_cstr (ds, "-shared ");
+
+ if (mcore_elf_linker_flags)
+ dyn_string_append_cstr (ds, mcore_elf_linker_flags);
+
+ dyn_string_append_cstr (ds, " ");
+ dyn_string_append_cstr (ds, MCORE_ELF_TMP_EXP);
+ dyn_string_append_cstr (ds, " ");
+ dyn_string_append_cstr (ds, MCORE_ELF_TMP_OBJ);
+ dyn_string_append_cstr (ds, " -o ");
+ dyn_string_append_cstr (ds, mcore_elf_out_file);
+
+ run (mcore_elf_linker, ds->s);
+
+ dyn_string_delete (ds);
+
+ if (dontdeltemps == 0)
+ unlink (MCORE_ELF_TMP_EXP);
+
+ if (dontdeltemps < 2)
+ unlink (MCORE_ELF_TMP_OBJ);
+}
+#endif /* DLLTOOL_MCORE_ELF */
diff --git a/binutils-2.24/binutils/dlltool.h b/binutils-2.24/binutils/dlltool.h
new file mode 100644
index 00000000..f3b203ba
--- /dev/null
+++ b/binutils-2.24/binutils/dlltool.h
@@ -0,0 +1,40 @@
+/* dlltool.h -- header file for dlltool
+ Copyright 1997, 1998, 2003, 2004, 2005, 2007, 2009, 2012
+ 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 3 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. */
+
+extern void def_code (int);
+extern void def_data (int);
+extern void def_description (const char *);
+extern void def_exports (const char *, const char *, int, int, int, int, int, const char *);
+extern void def_heapsize (int, int);
+extern void def_import
+ (const char *, const char *, const char *, const char *, int, const char *);
+extern void def_library (const char *, int);
+extern void def_name (const char *, int);
+extern void def_section (const char *, int);
+extern void def_stacksize (int, int);
+extern void def_version (int, int);
+extern int yyparse (void);
+extern int yyerror (const char *);
+extern int yylex (void);
+
+extern int yydebug;
+extern FILE *yyin;
+extern int linenumber;
diff --git a/binutils-2.24/binutils/dllwrap.c b/binutils-2.24/binutils/dllwrap.c
new file mode 100644
index 00000000..a6dae902
--- /dev/null
+++ b/binutils-2.24/binutils/dllwrap.c
@@ -0,0 +1,1252 @@
+/* dllwrap.c -- wrapper for DLLTOOL and GCC to generate PE style DLLs
+ Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2009,
+ 2011, 2012 Free Software Foundation, Inc.
+ Contributed by Mumit Khan (khan@xraylith.wisc.edu).
+
+ 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 3 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 "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "getopt.h"
+#include "dyn-string.h"
+#include "bucomm.h"
+
+#include <time.h>
+
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#else /* ! HAVE_SYS_WAIT_H */
+#if ! defined (_WIN32) || defined (__CYGWIN32__)
+#ifndef WIFEXITED
+#define WIFEXITED(w) (((w)&0377) == 0)
+#endif
+#ifndef WIFSIGNALED
+#define WIFSIGNALED(w) (((w)&0377) != 0177 && ((w)&~0377) == 0)
+#endif
+#ifndef WTERMSIG
+#define WTERMSIG(w) ((w) & 0177)
+#endif
+#ifndef WEXITSTATUS
+#define WEXITSTATUS(w) (((w) >> 8) & 0377)
+#endif
+#else /* defined (_WIN32) && ! defined (__CYGWIN32__) */
+#ifndef WIFEXITED
+#define WIFEXITED(w) (((w) & 0xff) == 0)
+#endif
+#ifndef WIFSIGNALED
+#define WIFSIGNALED(w) (((w) & 0xff) != 0 && ((w) & 0xff) != 0x7f)
+#endif
+#ifndef WTERMSIG
+#define WTERMSIG(w) ((w) & 0x7f)
+#endif
+#ifndef WEXITSTATUS
+#define WEXITSTATUS(w) (((w) & 0xff00) >> 8)
+#endif
+#endif /* defined (_WIN32) && ! defined (__CYGWIN32__) */
+#endif /* ! HAVE_SYS_WAIT_H */
+
+static char *driver_name = NULL;
+static char *cygwin_driver_flags =
+ "-Wl,--dll -nostartfiles";
+static char *mingw32_driver_flags = "-mdll";
+static char *generic_driver_flags = "-Wl,--dll";
+
+static char *entry_point;
+
+static char *dlltool_name = NULL;
+
+static char *target = TARGET;
+
+/* -1: use default, 0: no underscoring, 1: underscore. */
+static int is_leading_underscore = -1;
+
+typedef enum {
+ UNKNOWN_TARGET,
+ CYGWIN_TARGET,
+ MINGW_TARGET
+}
+target_type;
+
+typedef enum {
+ UNKNOWN_CPU,
+ X86_CPU,
+ X64_CPU,
+ ARM_CPU
+}
+target_cpu;
+
+static target_type which_target = UNKNOWN_TARGET;
+static target_cpu which_cpu = UNKNOWN_CPU;
+
+static int dontdeltemps = 0;
+static int dry_run = 0;
+
+static char *prog_name;
+
+static int verbose = 0;
+
+static char *dll_file_name;
+static char *dll_name;
+static char *base_file_name;
+static char *exp_file_name;
+static char *def_file_name;
+static int delete_base_file = 1;
+static int delete_exp_file = 1;
+static int delete_def_file = 1;
+
+static int run (const char *, char *);
+static char *mybasename (const char *);
+static int strhash (const char *);
+static void usage (FILE *, int);
+static void display (const char *, va_list) ATTRIBUTE_PRINTF(1,0);
+static void inform (const char *, ...) ATTRIBUTE_PRINTF_1;
+static void warn (const char *, ...) ATTRIBUTE_PRINTF_1;
+static char *look_for_prog (const char *, const char *, int);
+static char *deduce_name (const char *);
+static void delete_temp_files (void);
+static void cleanup_and_exit (int);
+
+/**********************************************************************/
+
+/* Please keep the following 4 routines in sync with dlltool.c:
+ display ()
+ inform ()
+ look_for_prog ()
+ deduce_name ()
+ It's not worth the hassle to break these out since dllwrap will
+ (hopefully) soon be retired in favor of `ld --shared. */
+
+static void
+display (const char * message, va_list args)
+{
+ if (prog_name != NULL)
+ fprintf (stderr, "%s: ", prog_name);
+
+ vfprintf (stderr, message, args);
+ fputc ('\n', stderr);
+}
+
+
+static void
+inform VPARAMS ((const char *message, ...))
+{
+ VA_OPEN (args, message);
+ VA_FIXEDARG (args, const char *, message);
+
+ if (!verbose)
+ return;
+
+ display (message, args);
+
+ VA_CLOSE (args);
+}
+
+static void
+warn VPARAMS ((const char *format, ...))
+{
+ VA_OPEN (args, format);
+ VA_FIXEDARG (args, const char *, format);
+
+ display (format, args);
+
+ VA_CLOSE (args);
+}
+
+/* Look for the program formed by concatenating PROG_NAME and the
+ string running from PREFIX to END_PREFIX. If the concatenated
+ string contains a '/', try appending EXECUTABLE_SUFFIX if it is
+ appropriate. */
+
+static char *
+look_for_prog (const char *progname, const char *prefix, int end_prefix)
+{
+ struct stat s;
+ char *cmd;
+
+ cmd = xmalloc (strlen (prefix)
+ + strlen (progname)
+#ifdef HAVE_EXECUTABLE_SUFFIX
+ + strlen (EXECUTABLE_SUFFIX)
+#endif
+ + 10);
+ strcpy (cmd, prefix);
+
+ sprintf (cmd + end_prefix, "%s", progname);
+
+ if (strchr (cmd, '/') != NULL)
+ {
+ int found;
+
+ found = (stat (cmd, &s) == 0
+#ifdef HAVE_EXECUTABLE_SUFFIX
+ || stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0
+#endif
+ );
+
+ if (! found)
+ {
+ /* xgettext:c-format */
+ inform (_("Tried file: %s"), cmd);
+ free (cmd);
+ return NULL;
+ }
+ }
+
+ /* xgettext:c-format */
+ inform (_("Using file: %s"), cmd);
+
+ return cmd;
+}
+
+/* Deduce the name of the program we are want to invoke.
+ PROG_NAME is the basic name of the program we want to run,
+ eg "as" or "ld". The catch is that we might want actually
+ run "i386-pe-as" or "ppc-pe-ld".
+
+ If argv[0] contains the full path, then try to find the program
+ in the same place, with and then without a target-like prefix.
+
+ Given, argv[0] = /usr/local/bin/i586-cygwin32-dlltool,
+ deduce_name("as") uses the following search order:
+
+ /usr/local/bin/i586-cygwin32-as
+ /usr/local/bin/as
+ as
+
+ If there's an EXECUTABLE_SUFFIX, it'll use that as well; for each
+ name, it'll try without and then with EXECUTABLE_SUFFIX.
+
+ Given, argv[0] = i586-cygwin32-dlltool, it will not even try "as"
+ as the fallback, but rather return i586-cygwin32-as.
+
+ Oh, and given, argv[0] = dlltool, it'll return "as".
+
+ Returns a dynamically allocated string. */
+
+static char *
+deduce_name (const char * name)
+{
+ char *cmd;
+ const char *dash;
+ const char *slash;
+ const char *cp;
+
+ dash = NULL;
+ slash = NULL;
+ for (cp = prog_name; *cp != '\0'; ++cp)
+ {
+ if (*cp == '-')
+ dash = cp;
+
+ if (
+#if defined(__DJGPP__) || defined (__CYGWIN__) || defined(__WIN32__)
+ *cp == ':' || *cp == '\\' ||
+#endif
+ *cp == '/')
+ {
+ slash = cp;
+ dash = NULL;
+ }
+ }
+
+ cmd = NULL;
+
+ if (dash != NULL)
+ /* First, try looking for a prefixed NAME in the
+ PROG_NAME directory, with the same prefix as PROG_NAME. */
+ cmd = look_for_prog (name, prog_name, dash - prog_name + 1);
+
+ if (slash != NULL && cmd == NULL)
+ /* Next, try looking for a NAME in the same directory as
+ that of this program. */
+ cmd = look_for_prog (name, prog_name, slash - prog_name + 1);
+
+ if (cmd == NULL)
+ /* Just return NAME as is. */
+ cmd = xstrdup (name);
+
+ return cmd;
+}
+
+static void
+delete_temp_files (void)
+{
+ if (delete_base_file && base_file_name)
+ {
+ if (verbose)
+ {
+ if (dontdeltemps)
+ warn (_("Keeping temporary base file %s"), base_file_name);
+ else
+ warn (_("Deleting temporary base file %s"), base_file_name);
+ }
+ if (! dontdeltemps)
+ {
+ unlink (base_file_name);
+ free (base_file_name);
+ }
+ }
+
+ if (delete_exp_file && exp_file_name)
+ {
+ if (verbose)
+ {
+ if (dontdeltemps)
+ warn (_("Keeping temporary exp file %s"), exp_file_name);
+ else
+ warn (_("Deleting temporary exp file %s"), exp_file_name);
+ }
+ if (! dontdeltemps)
+ {
+ unlink (exp_file_name);
+ free (exp_file_name);
+ }
+ }
+ if (delete_def_file && def_file_name)
+ {
+ if (verbose)
+ {
+ if (dontdeltemps)
+ warn (_("Keeping temporary def file %s"), def_file_name);
+ else
+ warn (_("Deleting temporary def file %s"), def_file_name);
+ }
+ if (! dontdeltemps)
+ {
+ unlink (def_file_name);
+ free (def_file_name);
+ }
+ }
+}
+
+static void
+cleanup_and_exit (int status)
+{
+ delete_temp_files ();
+ exit (status);
+}
+
+static int
+run (const char *what, char *args)
+{
+ char *s;
+ int pid, wait_status, retcode;
+ int i;
+ const char **argv;
+ char *errmsg_fmt, *errmsg_arg;
+ char *temp_base = choose_temp_base ();
+ int in_quote;
+ char sep;
+
+ if (verbose || dry_run)
+ fprintf (stderr, "%s %s\n", what, args);
+
+ /* Count the args */
+ i = 0;
+ for (s = args; *s; s++)
+ if (*s == ' ')
+ i++;
+ i++;
+ argv = alloca (sizeof (char *) * (i + 3));
+ i = 0;
+ argv[i++] = what;
+ s = args;
+ while (1)
+ {
+ while (*s == ' ' && *s != 0)
+ s++;
+ if (*s == 0)
+ break;
+ in_quote = (*s == '\'' || *s == '"');
+ sep = (in_quote) ? *s++ : ' ';
+ argv[i++] = s;
+ while (*s != sep && *s != 0)
+ s++;
+ if (*s == 0)
+ break;
+ *s++ = 0;
+ if (in_quote)
+ s++;
+ }
+ argv[i++] = NULL;
+
+ if (dry_run)
+ return 0;
+
+ pid = pexecute (argv[0], (char * const *) argv, prog_name, temp_base,
+ &errmsg_fmt, &errmsg_arg, PEXECUTE_ONE | PEXECUTE_SEARCH);
+
+ if (pid == -1)
+ {
+ int errno_val = errno;
+
+ fprintf (stderr, "%s: ", prog_name);
+ fprintf (stderr, errmsg_fmt, errmsg_arg);
+ fprintf (stderr, ": %s\n", strerror (errno_val));
+ return 1;
+ }
+
+ retcode = 0;
+ pid = pwait (pid, &wait_status, 0);
+ if (pid == -1)
+ {
+ warn (_("pwait returns: %s"), strerror (errno));
+ retcode = 1;
+ }
+ else if (WIFSIGNALED (wait_status))
+ {
+ warn (_("subprocess got fatal signal %d"), WTERMSIG (wait_status));
+ retcode = 1;
+ }
+ else if (WIFEXITED (wait_status))
+ {
+ if (WEXITSTATUS (wait_status) != 0)
+ {
+ warn (_("%s exited with status %d"), what, WEXITSTATUS (wait_status));
+ retcode = 1;
+ }
+ }
+ else
+ retcode = 1;
+
+ return retcode;
+}
+
+static char *
+mybasename (const char *name)
+{
+ const char *base = name;
+
+ while (*name)
+ {
+ if (*name == '/' || *name == '\\')
+ {
+ base = name + 1;
+ }
+ ++name;
+ }
+ return (char *) base;
+}
+
+static int
+strhash (const char *str)
+{
+ const unsigned char *s;
+ unsigned long hash;
+ unsigned int c;
+ unsigned int len;
+
+ hash = 0;
+ len = 0;
+ s = (const unsigned char *) str;
+ while ((c = *s++) != '\0')
+ {
+ hash += c + (c << 17);
+ hash ^= hash >> 2;
+ ++len;
+ }
+ hash += len + (len << 17);
+ hash ^= hash >> 2;
+
+ return hash;
+}
+
+/**********************************************************************/
+
+static void
+usage (FILE *file, int status)
+{
+ fprintf (file, _("Usage %s <option(s)> <object-file(s)>\n"), prog_name);
+ fprintf (file, _(" Generic options:\n"));
+ fprintf (file, _(" @<file> Read options from <file>\n"));
+ fprintf (file, _(" --quiet, -q Work quietly\n"));
+ fprintf (file, _(" --verbose, -v Verbose\n"));
+ fprintf (file, _(" --version Print dllwrap version\n"));
+ fprintf (file, _(" --implib <outname> Synonym for --output-lib\n"));
+ fprintf (file, _(" Options for %s:\n"), prog_name);
+ fprintf (file, _(" --driver-name <driver> Defaults to \"gcc\"\n"));
+ fprintf (file, _(" --driver-flags <flags> Override default ld flags\n"));
+ fprintf (file, _(" --dlltool-name <dlltool> Defaults to \"dlltool\"\n"));
+ fprintf (file, _(" --entry <entry> Specify alternate DLL entry point\n"));
+ fprintf (file, _(" --image-base <base> Specify image base address\n"));
+ fprintf (file, _(" --target <machine> i386-cygwin32 or i386-mingw32\n"));
+ fprintf (file, _(" --dry-run Show what needs to be run\n"));
+ fprintf (file, _(" --mno-cygwin Create Mingw DLL\n"));
+ fprintf (file, _(" Options passed to DLLTOOL:\n"));
+ fprintf (file, _(" --machine <machine>\n"));
+ fprintf (file, _(" --output-exp <outname> Generate export file.\n"));
+ fprintf (file, _(" --output-lib <outname> Generate input library.\n"));
+ fprintf (file, _(" --add-indirect Add dll indirects to export file.\n"));
+ fprintf (file, _(" --dllname <name> Name of input dll to put into output lib.\n"));
+ fprintf (file, _(" --def <deffile> Name input .def file\n"));
+ fprintf (file, _(" --output-def <deffile> Name output .def file\n"));
+ fprintf (file, _(" --export-all-symbols Export all symbols to .def\n"));
+ fprintf (file, _(" --no-export-all-symbols Only export .drectve symbols\n"));
+ fprintf (file, _(" --exclude-symbols <list> Exclude <list> from .def\n"));
+ fprintf (file, _(" --no-default-excludes Zap default exclude symbols\n"));
+ fprintf (file, _(" --base-file <basefile> Read linker generated base file\n"));
+ fprintf (file, _(" --no-idata4 Don't generate idata$4 section\n"));
+ fprintf (file, _(" --no-idata5 Don't generate idata$5 section\n"));
+ fprintf (file, _(" -U Add underscores to .lib\n"));
+ fprintf (file, _(" -k Kill @<n> from exported names\n"));
+ fprintf (file, _(" --add-stdcall-alias Add aliases without @<n>\n"));
+ fprintf (file, _(" --as <name> Use <name> for assembler\n"));
+ fprintf (file, _(" --nodelete Keep temp files.\n"));
+ fprintf (file, _(" --no-leading-underscore Entrypoint without underscore\n"));
+ fprintf (file, _(" --leading-underscore Entrypoint with underscore.\n"));
+ fprintf (file, _(" Rest are passed unmodified to the language driver\n"));
+ fprintf (file, "\n\n");
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+ exit (status);
+}
+
+#define OPTION_START 149
+
+/* GENERIC options. */
+#define OPTION_QUIET (OPTION_START + 1)
+#define OPTION_VERBOSE (OPTION_QUIET + 1)
+#define OPTION_VERSION (OPTION_VERBOSE + 1)
+
+/* DLLWRAP options. */
+#define OPTION_DRY_RUN (OPTION_VERSION + 1)
+#define OPTION_DRIVER_NAME (OPTION_DRY_RUN + 1)
+#define OPTION_DRIVER_FLAGS (OPTION_DRIVER_NAME + 1)
+#define OPTION_DLLTOOL_NAME (OPTION_DRIVER_FLAGS + 1)
+#define OPTION_ENTRY (OPTION_DLLTOOL_NAME + 1)
+#define OPTION_IMAGE_BASE (OPTION_ENTRY + 1)
+#define OPTION_TARGET (OPTION_IMAGE_BASE + 1)
+#define OPTION_MNO_CYGWIN (OPTION_TARGET + 1)
+#define OPTION_NO_LEADING_UNDERSCORE (OPTION_MNO_CYGWIN + 1)
+#define OPTION_LEADING_UNDERSCORE (OPTION_NO_LEADING_UNDERSCORE + 1)
+
+/* DLLTOOL options. */
+#define OPTION_NODELETE (OPTION_LEADING_UNDERSCORE + 1)
+#define OPTION_DLLNAME (OPTION_NODELETE + 1)
+#define OPTION_NO_IDATA4 (OPTION_DLLNAME + 1)
+#define OPTION_NO_IDATA5 (OPTION_NO_IDATA4 + 1)
+#define OPTION_OUTPUT_EXP (OPTION_NO_IDATA5 + 1)
+#define OPTION_OUTPUT_DEF (OPTION_OUTPUT_EXP + 1)
+#define OPTION_EXPORT_ALL_SYMS (OPTION_OUTPUT_DEF + 1)
+#define OPTION_NO_EXPORT_ALL_SYMS (OPTION_EXPORT_ALL_SYMS + 1)
+#define OPTION_EXCLUDE_SYMS (OPTION_NO_EXPORT_ALL_SYMS + 1)
+#define OPTION_NO_DEFAULT_EXCLUDES (OPTION_EXCLUDE_SYMS + 1)
+#define OPTION_OUTPUT_LIB (OPTION_NO_DEFAULT_EXCLUDES + 1)
+#define OPTION_DEF (OPTION_OUTPUT_LIB + 1)
+#define OPTION_ADD_UNDERSCORE (OPTION_DEF + 1)
+#define OPTION_KILLAT (OPTION_ADD_UNDERSCORE + 1)
+#define OPTION_HELP (OPTION_KILLAT + 1)
+#define OPTION_MACHINE (OPTION_HELP + 1)
+#define OPTION_ADD_INDIRECT (OPTION_MACHINE + 1)
+#define OPTION_BASE_FILE (OPTION_ADD_INDIRECT + 1)
+#define OPTION_AS (OPTION_BASE_FILE + 1)
+
+static const struct option long_options[] =
+{
+ /* generic options. */
+ {"quiet", no_argument, NULL, 'q'},
+ {"verbose", no_argument, NULL, 'v'},
+ {"version", no_argument, NULL, OPTION_VERSION},
+ {"implib", required_argument, NULL, OPTION_OUTPUT_LIB},
+
+ /* dllwrap options. */
+ {"dry-run", no_argument, NULL, OPTION_DRY_RUN},
+ {"driver-name", required_argument, NULL, OPTION_DRIVER_NAME},
+ {"driver-flags", required_argument, NULL, OPTION_DRIVER_FLAGS},
+ {"dlltool-name", required_argument, NULL, OPTION_DLLTOOL_NAME},
+ {"entry", required_argument, NULL, 'e'},
+ {"image-base", required_argument, NULL, OPTION_IMAGE_BASE},
+ {"target", required_argument, NULL, OPTION_TARGET},
+ {"no-leading-underscore", no_argument, NULL, OPTION_NO_LEADING_UNDERSCORE},
+ {"leading-underscore", no_argument, NULL, OPTION_NO_LEADING_UNDERSCORE},
+
+ /* dlltool options. */
+ {"no-delete", no_argument, NULL, 'n'},
+ {"dllname", required_argument, NULL, OPTION_DLLNAME},
+ {"no-idata4", no_argument, NULL, OPTION_NO_IDATA4},
+ {"no-idata5", no_argument, NULL, OPTION_NO_IDATA5},
+ {"output-exp", required_argument, NULL, OPTION_OUTPUT_EXP},
+ {"output-def", required_argument, NULL, OPTION_OUTPUT_DEF},
+ {"export-all-symbols", no_argument, NULL, OPTION_EXPORT_ALL_SYMS},
+ {"no-export-all-symbols", no_argument, NULL, OPTION_NO_EXPORT_ALL_SYMS},
+ {"exclude-symbols", required_argument, NULL, OPTION_EXCLUDE_SYMS},
+ {"no-default-excludes", no_argument, NULL, OPTION_NO_DEFAULT_EXCLUDES},
+ {"output-lib", required_argument, NULL, OPTION_OUTPUT_LIB},
+ {"def", required_argument, NULL, OPTION_DEF},
+ {"add-underscore", no_argument, NULL, 'U'},
+ {"killat", no_argument, NULL, 'k'},
+ {"add-stdcall-alias", no_argument, NULL, 'A'},
+ {"help", no_argument, NULL, 'h'},
+ {"machine", required_argument, NULL, OPTION_MACHINE},
+ {"add-indirect", no_argument, NULL, OPTION_ADD_INDIRECT},
+ {"base-file", required_argument, NULL, OPTION_BASE_FILE},
+ {"as", required_argument, NULL, OPTION_AS},
+ {0, 0, 0, 0}
+};
+
+int main (int, char **);
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ int i;
+
+ char **saved_argv = 0;
+ int cmdline_len = 0;
+
+ int export_all = 0;
+
+ int *dlltool_arg_indices;
+ int *driver_arg_indices;
+
+ char *driver_flags = 0;
+ char *output_lib_file_name = 0;
+
+ dyn_string_t dlltool_cmdline;
+ dyn_string_t driver_cmdline;
+
+ int def_file_seen = 0;
+
+ char *image_base_str = 0;
+
+ prog_name = argv[0];
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ expandargv (&argc, &argv);
+
+ saved_argv = (char **) xmalloc (argc * sizeof (char*));
+ dlltool_arg_indices = (int *) xmalloc (argc * sizeof (int));
+ driver_arg_indices = (int *) xmalloc (argc * sizeof (int));
+ for (i = 0; i < argc; ++i)
+ {
+ size_t len = strlen (argv[i]);
+ char *arg = (char *) xmalloc (len + 1);
+ strcpy (arg, argv[i]);
+ cmdline_len += len;
+ saved_argv[i] = arg;
+ dlltool_arg_indices[i] = 0;
+ driver_arg_indices[i] = 1;
+ }
+ cmdline_len++;
+
+ /* We recognize dllwrap and dlltool options, and everything else is
+ passed onto the language driver (eg., to GCC). We collect options
+ to dlltool and driver in dlltool_args and driver_args. */
+
+ opterr = 0;
+ while ((c = getopt_long_only (argc, argv, "nkAqve:Uho:l:L:I:",
+ long_options, (int *) 0)) != EOF)
+ {
+ int dlltool_arg;
+ int driver_arg;
+ int single_word_option_value_pair;
+
+ dlltool_arg = 0;
+ driver_arg = 1;
+ single_word_option_value_pair = 0;
+
+ if (c != '?')
+ {
+ /* We recognize this option, so it has to be either dllwrap or
+ dlltool option. Do not pass to driver unless it's one of the
+ generic options that are passed to all the tools (such as -v)
+ which are dealt with later. */
+ driver_arg = 0;
+ }
+
+ /* deal with generic and dllwrap options first. */
+ switch (c)
+ {
+ case 'h':
+ usage (stdout, 0);
+ break;
+ case 'q':
+ verbose = 0;
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ case OPTION_VERSION:
+ print_version (prog_name);
+ break;
+ case 'e':
+ entry_point = optarg;
+ break;
+ case OPTION_IMAGE_BASE:
+ image_base_str = optarg;
+ break;
+ case OPTION_DEF:
+ def_file_name = optarg;
+ def_file_seen = 1;
+ delete_def_file = 0;
+ break;
+ case 'n':
+ dontdeltemps = 1;
+ dlltool_arg = 1;
+ break;
+ case 'o':
+ dll_file_name = optarg;
+ break;
+ case 'I':
+ case 'l':
+ case 'L':
+ driver_arg = 1;
+ break;
+ case OPTION_DLLNAME:
+ dll_name = optarg;
+ break;
+ case OPTION_DRY_RUN:
+ dry_run = 1;
+ break;
+ case OPTION_DRIVER_NAME:
+ driver_name = optarg;
+ break;
+ case OPTION_DRIVER_FLAGS:
+ driver_flags = optarg;
+ break;
+ case OPTION_DLLTOOL_NAME:
+ dlltool_name = optarg;
+ break;
+ case OPTION_TARGET:
+ target = optarg;
+ break;
+ case OPTION_MNO_CYGWIN:
+ target = "i386-mingw32";
+ break;
+ case OPTION_NO_LEADING_UNDERSCORE:
+ is_leading_underscore = 0;
+ break;
+ case OPTION_LEADING_UNDERSCORE:
+ is_leading_underscore = 1;
+ break;
+ case OPTION_BASE_FILE:
+ base_file_name = optarg;
+ delete_base_file = 0;
+ break;
+ case OPTION_OUTPUT_EXP:
+ exp_file_name = optarg;
+ delete_exp_file = 0;
+ break;
+ case OPTION_EXPORT_ALL_SYMS:
+ export_all = 1;
+ break;
+ case OPTION_OUTPUT_LIB:
+ output_lib_file_name = optarg;
+ break;
+ case '?':
+ break;
+ default:
+ dlltool_arg = 1;
+ break;
+ }
+
+ /* Handle passing through --option=value case. */
+ if (optarg
+ && saved_argv[optind-1][0] == '-'
+ && saved_argv[optind-1][1] == '-'
+ && strchr (saved_argv[optind-1], '='))
+ single_word_option_value_pair = 1;
+
+ if (dlltool_arg)
+ {
+ dlltool_arg_indices[optind-1] = 1;
+ if (optarg && ! single_word_option_value_pair)
+ {
+ dlltool_arg_indices[optind-2] = 1;
+ }
+ }
+
+ if (! driver_arg)
+ {
+ driver_arg_indices[optind-1] = 0;
+ if (optarg && ! single_word_option_value_pair)
+ {
+ driver_arg_indices[optind-2] = 0;
+ }
+ }
+ }
+
+ /* Sanity checks. */
+ if (! dll_name && ! dll_file_name)
+ {
+ warn (_("Must provide at least one of -o or --dllname options"));
+ exit (1);
+ }
+ else if (! dll_name)
+ {
+ dll_name = xstrdup (mybasename (dll_file_name));
+ }
+ else if (! dll_file_name)
+ {
+ dll_file_name = xstrdup (dll_name);
+ }
+
+ /* Deduce driver-name and dlltool-name from our own. */
+ if (driver_name == NULL)
+ driver_name = deduce_name ("gcc");
+
+ if (dlltool_name == NULL)
+ dlltool_name = deduce_name ("dlltool");
+
+ if (! def_file_seen)
+ {
+ char *fileprefix = choose_temp_base ();
+
+ def_file_name = (char *) xmalloc (strlen (fileprefix) + 5);
+ sprintf (def_file_name, "%s.def",
+ (dontdeltemps) ? mybasename (fileprefix) : fileprefix);
+ delete_def_file = 1;
+ free (fileprefix);
+ delete_def_file = 1;
+ warn (_("no export definition file provided.\n\
+Creating one, but that may not be what you want"));
+ }
+
+ /* Set the target platform. */
+ if (strstr (target, "cygwin"))
+ which_target = CYGWIN_TARGET;
+ else if (strstr (target, "mingw"))
+ which_target = MINGW_TARGET;
+ else
+ which_target = UNKNOWN_TARGET;
+
+ if (! strncmp (target, "arm", 3))
+ which_cpu = ARM_CPU;
+ else if (!strncmp (target, "x86_64", 6)
+ || !strncmp (target, "athlon64", 8)
+ || !strncmp (target, "amd64", 5))
+ which_cpu = X64_CPU;
+ else if (target[0] == 'i' && (target[1] >= '3' && target[1] <= '6')
+ && target[2] == '8' && target[3] == '6')
+ which_cpu = X86_CPU;
+ else
+ which_cpu = UNKNOWN_CPU;
+
+ if (is_leading_underscore == -1)
+ is_leading_underscore = (which_cpu != X64_CPU && which_cpu != ARM_CPU);
+
+ /* Re-create the command lines as a string, taking care to quote stuff. */
+ dlltool_cmdline = dyn_string_new (cmdline_len);
+ if (verbose)
+ dyn_string_append_cstr (dlltool_cmdline, " -v");
+
+ dyn_string_append_cstr (dlltool_cmdline, " --dllname ");
+ dyn_string_append_cstr (dlltool_cmdline, dll_name);
+
+ for (i = 1; i < argc; ++i)
+ {
+ if (dlltool_arg_indices[i])
+ {
+ char *arg = saved_argv[i];
+ int quote = (strchr (arg, ' ') || strchr (arg, '\t'));
+ dyn_string_append_cstr (dlltool_cmdline,
+ (quote) ? " \"" : " ");
+ dyn_string_append_cstr (dlltool_cmdline, arg);
+ dyn_string_append_cstr (dlltool_cmdline,
+ (quote) ? "\"" : "");
+ }
+ }
+
+ driver_cmdline = dyn_string_new (cmdline_len);
+ if (! driver_flags || strlen (driver_flags) == 0)
+ {
+ switch (which_target)
+ {
+ case CYGWIN_TARGET:
+ driver_flags = cygwin_driver_flags;
+ break;
+
+ case MINGW_TARGET:
+ driver_flags = mingw32_driver_flags;
+ break;
+
+ default:
+ driver_flags = generic_driver_flags;
+ break;
+ }
+ }
+ dyn_string_append_cstr (driver_cmdline, driver_flags);
+ dyn_string_append_cstr (driver_cmdline, " -o ");
+ dyn_string_append_cstr (driver_cmdline, dll_file_name);
+
+ if (is_leading_underscore == 0)
+ dyn_string_append_cstr (driver_cmdline, " --no-leading-underscore");
+ else if (is_leading_underscore == 1)
+ dyn_string_append_cstr (driver_cmdline, " --leading-underscore");
+
+ if (! entry_point || strlen (entry_point) == 0)
+ {
+ const char *prefix = (is_leading_underscore != 0 ? "_" : "");
+ const char *postfix = "";
+ const char *name_entry;
+
+ if (which_cpu == X86_CPU || which_cpu == UNKNOWN_CPU)
+ postfix = "@12";
+
+ switch (which_target)
+ {
+ case CYGWIN_TARGET:
+ name_entry = "_cygwin_dll_entry";
+ break;
+
+ case MINGW_TARGET:
+ name_entry = "DllMainCRTStartup";
+ break;
+
+ default:
+ name_entry = "DllMain";
+ break;
+ }
+ entry_point =
+ (char *) malloc (strlen (name_entry) + strlen (prefix)
+ + strlen (postfix) + 1);
+ sprintf (entry_point, "%s%s%s", prefix, name_entry, postfix);
+ }
+ dyn_string_append_cstr (driver_cmdline, " -Wl,-e,");
+ dyn_string_append_cstr (driver_cmdline, entry_point);
+ dyn_string_append_cstr (dlltool_cmdline, " --exclude-symbol=");
+ dyn_string_append_cstr (dlltool_cmdline,
+ (entry_point[0] == '_') ? entry_point+1 : entry_point);
+
+ if (! image_base_str || strlen (image_base_str) == 0)
+ {
+ char *tmpbuf = (char *) xmalloc (sizeof ("0x12345678") + 1);
+ unsigned long hash = strhash (dll_file_name);
+ sprintf (tmpbuf, "0x%.8lX", 0x60000000|((hash<<16)&0xFFC0000));
+ image_base_str = tmpbuf;
+ }
+
+ dyn_string_append_cstr (driver_cmdline, " -Wl,--image-base,");
+ dyn_string_append_cstr (driver_cmdline, image_base_str);
+
+ if (verbose)
+ {
+ dyn_string_append_cstr (driver_cmdline, " -v");
+ }
+
+ for (i = 1; i < argc; ++i)
+ {
+ if (driver_arg_indices[i])
+ {
+ char *arg = saved_argv[i];
+ int quote = (strchr (arg, ' ') || strchr (arg, '\t'));
+ dyn_string_append_cstr (driver_cmdline,
+ (quote) ? " \"" : " ");
+ dyn_string_append_cstr (driver_cmdline, arg);
+ dyn_string_append_cstr (driver_cmdline,
+ (quote) ? "\"" : "");
+ }
+ }
+
+ /* Step pre-1. If no --def <EXPORT_DEF> is specified,
+ then create it and then pass it on. */
+
+ if (! def_file_seen)
+ {
+ dyn_string_t step_pre1;
+
+ step_pre1 = dyn_string_new (1024);
+
+ dyn_string_append_cstr (step_pre1, dlltool_cmdline->s);
+ if (export_all)
+ {
+ dyn_string_append_cstr (step_pre1, " --export-all --exclude-symbol=");
+ dyn_string_append_cstr (step_pre1,
+ "_cygwin_dll_entry@12,DllMainCRTStartup@12,DllMain@12,DllEntryPoint@12");
+ }
+ dyn_string_append_cstr (step_pre1, " --output-def ");
+ dyn_string_append_cstr (step_pre1, def_file_name);
+
+ for (i = 1; i < argc; ++i)
+ {
+ if (driver_arg_indices[i])
+ {
+ char *arg = saved_argv[i];
+ size_t len = strlen (arg);
+ if (len >= 2 && arg[len-2] == '.'
+ && (arg[len-1] == 'o' || arg[len-1] == 'a'))
+ {
+ int quote = (strchr (arg, ' ') || strchr (arg, '\t'));
+ dyn_string_append_cstr (step_pre1,
+ (quote) ? " \"" : " ");
+ dyn_string_append_cstr (step_pre1, arg);
+ dyn_string_append_cstr (step_pre1,
+ (quote) ? "\"" : "");
+ }
+ }
+ }
+
+ if (run (dlltool_name, step_pre1->s))
+ cleanup_and_exit (1);
+
+ dyn_string_delete (step_pre1);
+ }
+
+ dyn_string_append_cstr (dlltool_cmdline, " --def ");
+ dyn_string_append_cstr (dlltool_cmdline, def_file_name);
+
+ if (verbose)
+ {
+ fprintf (stderr, _("DLLTOOL name : %s\n"), dlltool_name);
+ fprintf (stderr, _("DLLTOOL options : %s\n"), dlltool_cmdline->s);
+ fprintf (stderr, _("DRIVER name : %s\n"), driver_name);
+ fprintf (stderr, _("DRIVER options : %s\n"), driver_cmdline->s);
+ }
+
+ /* Step 1. Call GCC/LD to create base relocation file. If using GCC, the
+ driver command line will look like the following:
+
+ % gcc -Wl,--dll --Wl,--base-file,foo.base [rest of command line]
+
+ If the user does not specify a base name, create temporary one that
+ is deleted at exit. */
+
+ if (! base_file_name)
+ {
+ char *fileprefix = choose_temp_base ();
+ base_file_name = (char *) xmalloc (strlen (fileprefix) + 6);
+ sprintf (base_file_name, "%s.base",
+ (dontdeltemps) ? mybasename (fileprefix) : fileprefix);
+ delete_base_file = 1;
+ free (fileprefix);
+ }
+
+ {
+ int quote;
+
+ dyn_string_t step1 = dyn_string_new (driver_cmdline->length
+ + strlen (base_file_name)
+ + 20);
+ dyn_string_append_cstr (step1, "-Wl,--base-file,");
+ quote = (strchr (base_file_name, ' ')
+ || strchr (base_file_name, '\t'));
+ dyn_string_append_cstr (step1,
+ (quote) ? "\"" : "");
+ dyn_string_append_cstr (step1, base_file_name);
+ dyn_string_append_cstr (step1,
+ (quote) ? "\"" : "");
+ if (driver_cmdline->length)
+ {
+ dyn_string_append_cstr (step1, " ");
+ dyn_string_append_cstr (step1, driver_cmdline->s);
+ }
+
+ if (run (driver_name, step1->s))
+ cleanup_and_exit (1);
+
+ dyn_string_delete (step1);
+ }
+
+ /* Step 2. generate the exp file by running dlltool.
+ dlltool command line will look like the following:
+
+ % dlltool -Wl,--dll --Wl,--base-file,foo.base [rest of command line]
+
+ If the user does not specify a base name, create temporary one that
+ is deleted at exit. */
+
+ if (! exp_file_name)
+ {
+ char *p = strrchr (dll_name, '.');
+ size_t prefix_len = (p) ? (size_t) (p - dll_name) : strlen (dll_name);
+
+ exp_file_name = (char *) xmalloc (prefix_len + 4 + 1);
+ strncpy (exp_file_name, dll_name, prefix_len);
+ exp_file_name[prefix_len] = '\0';
+ strcat (exp_file_name, ".exp");
+ delete_exp_file = 1;
+ }
+
+ {
+ int quote;
+
+ dyn_string_t step2 = dyn_string_new (dlltool_cmdline->length
+ + strlen (base_file_name)
+ + strlen (exp_file_name)
+ + 20);
+
+ dyn_string_append_cstr (step2, "--base-file ");
+ quote = (strchr (base_file_name, ' ')
+ || strchr (base_file_name, '\t'));
+ dyn_string_append_cstr (step2,
+ (quote) ? "\"" : "");
+ dyn_string_append_cstr (step2, base_file_name);
+ dyn_string_append_cstr (step2,
+ (quote) ? "\" " : " ");
+
+ dyn_string_append_cstr (step2, "--output-exp ");
+ quote = (strchr (exp_file_name, ' ')
+ || strchr (exp_file_name, '\t'));
+ dyn_string_append_cstr (step2,
+ (quote) ? "\"" : "");
+ dyn_string_append_cstr (step2, exp_file_name);
+ dyn_string_append_cstr (step2,
+ (quote) ? "\"" : "");
+
+ if (dlltool_cmdline->length)
+ {
+ dyn_string_append_cstr (step2, " ");
+ dyn_string_append_cstr (step2, dlltool_cmdline->s);
+ }
+
+ if (run (dlltool_name, step2->s))
+ cleanup_and_exit (1);
+
+ dyn_string_delete (step2);
+ }
+
+ /*
+ * Step 3. Call GCC/LD to again, adding the exp file this time.
+ * driver command line will look like the following:
+ *
+ * % gcc -Wl,--dll --Wl,--base-file,foo.base foo.exp [rest ...]
+ */
+
+ {
+ int quote;
+
+ dyn_string_t step3 = dyn_string_new (driver_cmdline->length
+ + strlen (exp_file_name)
+ + strlen (base_file_name)
+ + 20);
+ dyn_string_append_cstr (step3, "-Wl,--base-file,");
+ quote = (strchr (base_file_name, ' ')
+ || strchr (base_file_name, '\t'));
+ dyn_string_append_cstr (step3,
+ (quote) ? "\"" : "");
+ dyn_string_append_cstr (step3, base_file_name);
+ dyn_string_append_cstr (step3,
+ (quote) ? "\" " : " ");
+
+ quote = (strchr (exp_file_name, ' ')
+ || strchr (exp_file_name, '\t'));
+ dyn_string_append_cstr (step3,
+ (quote) ? "\"" : "");
+ dyn_string_append_cstr (step3, exp_file_name);
+ dyn_string_append_cstr (step3,
+ (quote) ? "\"" : "");
+
+ if (driver_cmdline->length)
+ {
+ dyn_string_append_cstr (step3, " ");
+ dyn_string_append_cstr (step3, driver_cmdline->s);
+ }
+
+ if (run (driver_name, step3->s))
+ cleanup_and_exit (1);
+
+ dyn_string_delete (step3);
+ }
+
+
+ /*
+ * Step 4. Run DLLTOOL again using the same command line.
+ */
+
+ {
+ int quote;
+ dyn_string_t step4 = dyn_string_new (dlltool_cmdline->length
+ + strlen (base_file_name)
+ + strlen (exp_file_name)
+ + 20);
+
+ dyn_string_append_cstr (step4, "--base-file ");
+ quote = (strchr (base_file_name, ' ')
+ || strchr (base_file_name, '\t'));
+ dyn_string_append_cstr (step4,
+ (quote) ? "\"" : "");
+ dyn_string_append_cstr (step4, base_file_name);
+ dyn_string_append_cstr (step4,
+ (quote) ? "\" " : " ");
+
+ dyn_string_append_cstr (step4, "--output-exp ");
+ quote = (strchr (exp_file_name, ' ')
+ || strchr (exp_file_name, '\t'));
+ dyn_string_append_cstr (step4,
+ (quote) ? "\"" : "");
+ dyn_string_append_cstr (step4, exp_file_name);
+ dyn_string_append_cstr (step4,
+ (quote) ? "\"" : "");
+
+ if (dlltool_cmdline->length)
+ {
+ dyn_string_append_cstr (step4, " ");
+ dyn_string_append_cstr (step4, dlltool_cmdline->s);
+ }
+
+ if (output_lib_file_name)
+ {
+ dyn_string_append_cstr (step4, " --output-lib ");
+ dyn_string_append_cstr (step4, output_lib_file_name);
+ }
+
+ if (run (dlltool_name, step4->s))
+ cleanup_and_exit (1);
+
+ dyn_string_delete (step4);
+ }
+
+
+ /*
+ * Step 5. Link it all together and be done with it.
+ * driver command line will look like the following:
+ *
+ * % gcc -Wl,--dll foo.exp [rest ...]
+ *
+ */
+
+ {
+ int quote;
+
+ dyn_string_t step5 = dyn_string_new (driver_cmdline->length
+ + strlen (exp_file_name)
+ + 20);
+ quote = (strchr (exp_file_name, ' ')
+ || strchr (exp_file_name, '\t'));
+ dyn_string_append_cstr (step5,
+ (quote) ? "\"" : "");
+ dyn_string_append_cstr (step5, exp_file_name);
+ dyn_string_append_cstr (step5,
+ (quote) ? "\"" : "");
+
+ if (driver_cmdline->length)
+ {
+ dyn_string_append_cstr (step5, " ");
+ dyn_string_append_cstr (step5, driver_cmdline->s);
+ }
+
+ if (run (driver_name, step5->s))
+ cleanup_and_exit (1);
+
+ dyn_string_delete (step5);
+ }
+
+ cleanup_and_exit (0);
+
+ return 0;
+}
diff --git a/binutils-2.24/binutils/doc/Makefile.am b/binutils-2.24/binutils/doc/Makefile.am
new file mode 100644
index 00000000..51fa0a01
--- /dev/null
+++ b/binutils-2.24/binutils/doc/Makefile.am
@@ -0,0 +1,201 @@
+## Process this file with automake to generate Makefile.in
+#
+# Copyright 2012 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 3 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; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+#
+
+AUTOMAKE_OPTIONS = cygnus
+
+# What version of the manual you want; "all" includes everything
+CONFIG=all
+
+# Options to extract the man page from as.texinfo
+MANCONF = -Dman
+
+TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
+
+POD2MAN = pod2man --center="GNU Development Tools" \
+ --release="binutils-$(VERSION)" --section=1
+
+# List of man pages generated from binutils.texi
+man_MANS = \
+ addr2line.1 \
+ ar.1 \
+ dlltool.1 \
+ nlmconv.1 \
+ nm.1 \
+ objcopy.1 \
+ objdump.1 \
+ ranlib.1 \
+ readelf.1 \
+ size.1 \
+ strings.1 \
+ strip.1 \
+ elfedit.1 \
+ windres.1 \
+ windmc.1 \
+ $(DEMANGLER_NAME).1
+
+info_TEXINFOS = binutils.texi
+binutils_TEXI = $(srcdir)/binutils.texi
+
+AM_MAKEINFOFLAGS = -I "$(srcdir)" -I "$(top_srcdir)/../libiberty" \
+ -I "$(top_srcdir)/../bfd/doc" -I ../../bfd/doc
+TEXI2DVI = texi2dvi -I "$(srcdir)" -I "$(top_srcdir)/../libiberty" \
+ -I "$(top_srcdir)/../bfd/doc" -I ../../bfd/doc
+
+# Man page generation from texinfo
+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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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
+
+elfedit.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ touch $@
+ -$(TEXI2POD) $(MANCONF) -Delfedit < $(binutils_TEXI) > elfedit.pod
+ -($(POD2MAN) elfedit.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
+ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
+ rm -f elfedit.pod
+
+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
+
+windmc.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ touch $@
+ -$(TEXI2POD) $(MANCONF) -Dwindmc < $(binutils_TEXI) > windmc.pod
+ -($(POD2MAN) windmc.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
+ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
+ rm -f windmc.pod
+
+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$$$$ && \
+ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
+ rm -f $(DEMANGLER_NAME).pod
+
+MOSTLYCLEANFILES = $(DEMANGLER_NAME).1
+
+$(DEMANGLER_NAME).1: cxxfilt.man Makefile
+ if test -f cxxfilt.man; then \
+ man=cxxfilt.man; \
+ else \
+ man=$(srcdir)/cxxfilt.man; \
+ fi; \
+ sed -e 's/@PROGRAM@/$(DEMANGLER_NAME)/' \
+ -e 's/cxxfilt/$(DEMANGLER_NAME)/' < $$man \
+ > $(DEMANGLER_NAME).1
+
+# We want install to imply install-info as per GNU standards, despite the
+# cygnus option.
+install-data-local: install-info
+
+MAINTAINERCLEANFILES = binutils.info
+
+# Automake 1.9 will only build info files in the objdir if they are
+# mentioned in DISTCLEANFILES. It doesn't have to be unconditional,
+# though, so we use a bogus condition.
+if GENINSRC_NEVER
+DISTCLEANFILES = binutils.info
+endif
+
+# Maintenance
+
+# We need it for the taz target in ../../Makefile.in.
+info-local: $(MANS)
diff --git a/binutils-2.24/binutils/doc/Makefile.in b/binutils-2.24/binutils/doc/Makefile.in
new file mode 100644
index 00000000..596dbda3
--- /dev/null
+++ b/binutils-2.24/binutils/doc/Makefile.in
@@ -0,0 +1,888 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+#
+# Copyright 2012 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 3 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; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+#
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \
+ $(top_srcdir)/../config/zlib.m4 \
+ $(top_srcdir)/../bfd/warning.m4 $(top_srcdir)/../config/acx.m4 \
+ $(top_srcdir)/../config/depstand.m4 \
+ $(top_srcdir)/../config/gettext-sister.m4 \
+ $(top_srcdir)/../config/iconv.m4 \
+ $(top_srcdir)/../config/largefile.m4 \
+ $(top_srcdir)/../config/lcmessage.m4 \
+ $(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/lib-link.m4 \
+ $(top_srcdir)/../config/lib-prefix.m4 \
+ $(top_srcdir)/../config/nls.m4 \
+ $(top_srcdir)/../config/override.m4 \
+ $(top_srcdir)/../config/plugins.m4 \
+ $(top_srcdir)/../config/po.m4 \
+ $(top_srcdir)/../config/progtest.m4 \
+ $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \
+ $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \
+ $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+depcomp =
+am__depfiles_maybe =
+SOURCES =
+INFO_DEPS = binutils.info
+TEXINFO_TEX = $(top_srcdir)/../texinfo/texinfo.tex
+am__TEXINFO_TEX_DIR = $(top_srcdir)/../texinfo
+DVIS = binutils.dvi
+PDFS = binutils.pdf
+PSS = binutils.ps
+HTMLS = binutils.html
+TEXINFOS = binutils.texi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+DVIPS = dvips
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)"
+NROFF = nroff
+MANS = $(man_MANS)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BUILD_DLLTOOL = @BUILD_DLLTOOL@
+BUILD_DLLWRAP = @BUILD_DLLWRAP@
+BUILD_INSTALL_MISC = @BUILD_INSTALL_MISC@
+BUILD_MISC = @BUILD_MISC@
+BUILD_NLMCONV = @BUILD_NLMCONV@
+BUILD_SRCONV = @BUILD_SRCONV@
+BUILD_WINDMC = @BUILD_WINDMC@
+BUILD_WINDRES = @BUILD_WINDRES@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CC_FOR_BUILD = @CC_FOR_BUILD@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEMANGLER_NAME = @DEMANGLER_NAME@
+DEPDIR = @DEPDIR@
+DLLTOOL_DEFS = @DLLTOOL_DEFS@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EMULATION = @EMULATION@
+EMULATION_VECTOR = @EMULATION_VECTOR@
+EXEEXT = @EXEEXT@
+EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
+FGREP = @FGREP@
+GENCAT = @GENCAT@
+GMSGFMT = @GMSGFMT@
+GREP = @GREP@
+HDEFINES = @HDEFINES@
+INCINTL = @INCINTL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBINTL_DEP = @LIBINTL_DEP@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+NLMCONV_DEFS = @NLMCONV_DEFS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NO_WERROR = @NO_WERROR@
+OBJDUMP = @OBJDUMP@
+OBJDUMP_DEFS = @OBJDUMP_DEFS@
+OBJDUMP_PRIVATE_OFILES = @OBJDUMP_PRIVATE_OFILES@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+YFLAGS = @YFLAGS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = cygnus
+
+# What version of the manual you want; "all" includes everything
+CONFIG = all
+
+# Options to extract the man page from as.texinfo
+MANCONF = -Dman
+TEXI2POD = perl $(top_srcdir)/../etc/texi2pod.pl $(AM_MAKEINFOFLAGS)
+POD2MAN = pod2man --center="GNU Development Tools" \
+ --release="binutils-$(VERSION)" --section=1
+
+
+# List of man pages generated from binutils.texi
+man_MANS = \
+ addr2line.1 \
+ ar.1 \
+ dlltool.1 \
+ nlmconv.1 \
+ nm.1 \
+ objcopy.1 \
+ objdump.1 \
+ ranlib.1 \
+ readelf.1 \
+ size.1 \
+ strings.1 \
+ strip.1 \
+ elfedit.1 \
+ windres.1 \
+ windmc.1 \
+ $(DEMANGLER_NAME).1
+
+info_TEXINFOS = binutils.texi
+binutils_TEXI = $(srcdir)/binutils.texi
+AM_MAKEINFOFLAGS = -I "$(srcdir)" -I "$(top_srcdir)/../libiberty" \
+ -I "$(top_srcdir)/../bfd/doc" -I ../../bfd/doc
+
+TEXI2DVI = texi2dvi -I "$(srcdir)" -I "$(top_srcdir)/../libiberty" \
+ -I "$(top_srcdir)/../bfd/doc" -I ../../bfd/doc
+
+MOSTLYCLEANFILES = $(DEMANGLER_NAME).1
+MAINTAINERCLEANFILES = binutils.info
+
+# Automake 1.9 will only build info files in the objdir if they are
+# mentioned in DISTCLEANFILES. It doesn't have to be unconditional,
+# though, so we use a bogus condition.
+@GENINSRC_NEVER_TRUE@DISTCLEANFILES = binutils.info
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .dvi .ps
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+binutils.info: binutils.texi
+ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+ rm -rf $$backupdir && mkdir $$backupdir && \
+ 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 && \
+ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $@ `test -f 'binutils.texi' || echo '$(srcdir)/'`binutils.texi; \
+ then \
+ rc=0; \
+ else \
+ rc=$$?; \
+ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+ fi; \
+ rm -rf $$backupdir; exit $$rc
+
+binutils.dvi: binutils.texi
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2DVI) -o $@ `test -f 'binutils.texi' || echo '$(srcdir)/'`binutils.texi
+
+binutils.pdf: binutils.texi
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2PDF) -o $@ `test -f 'binutils.texi' || echo '$(srcdir)/'`binutils.texi
+
+binutils.html: binutils.texi
+ rm -rf $(@:.html=.htp)
+ if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+ -o $(@:.html=.htp) `test -f 'binutils.texi' || echo '$(srcdir)/'`binutils.texi; \
+ then \
+ rm -rf $@; \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
+ else \
+ if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
+ rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
+ exit 1; \
+ fi
+.dvi.ps:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ $(DVIPS) -o $@ $<
+
+uninstall-dvi-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+ rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+ done
+
+uninstall-html-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+ done
+
+uninstall-info-am:
+ @$(PRE_UNINSTALL)
+ @if test -d '$(DESTDIR)$(infodir)' && \
+ (install-info --version && \
+ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+ list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
+ done; \
+ else :; fi
+ @$(NORMAL_UNINSTALL)
+ @list='$(INFO_DEPS)'; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+ else :; fi); \
+ done
+
+uninstall-pdf-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+ done
+
+uninstall-ps-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PSS)'; test -n "$(psdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(psdir)/$$f"; \
+ done
+
+dist-info: $(INFO_DEPS)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ list='$(INFO_DEPS)'; \
+ for base in $$list; do \
+ case $$base in \
+ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$base; then d=.; else d=$(srcdir); fi; \
+ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+ if test -f $$file; then \
+ relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+ test -f "$(distdir)/$$relfile" || \
+ cp -p $$file "$(distdir)/$$relfile"; \
+ else :; fi; \
+ done; \
+ done
+
+mostlyclean-aminfo:
+ -rm -rf binutils.aux binutils.cp binutils.cps binutils.fn binutils.fns \
+ binutils.ky binutils.log binutils.pg binutils.pgs \
+ binutils.tmp binutils.toc binutils.tp binutils.tps \
+ binutils.vr binutils.vrs
+
+clean-aminfo:
+ -test -z "binutils.dvi binutils.pdf binutils.ps binutils.html" \
+ || rm -rf binutils.dvi binutils.pdf binutils.ps binutils.html
+
+maintainer-clean-aminfo:
+ @list='$(INFO_DEPS)'; for i in $$list; do \
+ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+ done
+
+clean-info: mostlyclean-aminfo clean-aminfo
+install-man1: $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ { for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | while read p; do \
+ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; echo "$$p"; \
+ done | \
+ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+ sed 'N;N;s,\n, ,g' | { \
+ list=; while read file base inst; do \
+ if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+ fi; \
+ done; \
+ for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+ while read files; do \
+ test -z "$$files" || { \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+ done; }
+
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list=''; test -n "$(man1dir)" || exit 0; \
+ files=`{ for i in $$list; do echo "$$i"; done; \
+ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+ sed -n '/\.1[a-z]*$$/p'; \
+ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+ test -z "$$files" || { \
+ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+check-am:
+check: check-am
+all-am: Makefile $(MANS)
+installdirs:
+ for dir in "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+ -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am: $(DVIS)
+
+html: html-am
+
+html-am: $(HTMLS)
+
+info: info-am
+
+info-am: $(INFO_DEPS) info-local
+
+install-data-am: install-data-local install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am: $(DVIS)
+ @$(NORMAL_INSTALL)
+ test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
+ @list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
+ done
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am: $(HTMLS)
+ @$(NORMAL_INSTALL)
+ test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+ @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ $(am__strip_dir) \
+ if test -d "$$d$$p"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+ else \
+ list2="$$list2 $$d$$p"; \
+ fi; \
+ done; \
+ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+ done; }
+install-info: install-info-am
+
+install-info-am: $(INFO_DEPS)
+ @$(NORMAL_INSTALL)
+ test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+ for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ esac; \
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
+ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+ if test -f $$ifile; then \
+ echo "$$ifile"; \
+ else : ; fi; \
+ done; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
+ @$(POST_INSTALL)
+ @if (install-info --version && \
+ install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+ for file in $$list; do \
+ relfile=`echo "$$file" | sed 's|^.*/||'`; \
+ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+ done; \
+ else : ; fi
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-pdf-am: $(PDFS)
+ @$(NORMAL_INSTALL)
+ test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
+ @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
+install-ps: install-ps-am
+
+install-ps-am: $(PSS)
+ @$(NORMAL_INSTALL)
+ test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
+ @list='$(PSS)'; test -n "$(psdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+ maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am: $(PDFS)
+
+ps: ps-am
+
+ps-am: $(PSS)
+
+uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
+ uninstall-man uninstall-pdf-am uninstall-ps-am
+
+uninstall-man: uninstall-man1
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-aminfo clean-generic \
+ clean-info clean-libtool dist-info distclean distclean-generic \
+ distclean-libtool dvi dvi-am html html-am info info-am \
+ info-local install install-am install-data install-data-am \
+ install-data-local install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-man1 install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-aminfo maintainer-clean-generic mostlyclean \
+ mostlyclean-aminfo mostlyclean-generic mostlyclean-libtool pdf \
+ pdf-am ps ps-am uninstall uninstall-am uninstall-dvi-am \
+ uninstall-html-am uninstall-info-am uninstall-man \
+ uninstall-man1 uninstall-pdf-am uninstall-ps-am
+
+
+# Man page generation from texinfo
+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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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) $(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
+
+elfedit.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ touch $@
+ -$(TEXI2POD) $(MANCONF) -Delfedit < $(binutils_TEXI) > elfedit.pod
+ -($(POD2MAN) elfedit.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
+ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
+ rm -f elfedit.pod
+
+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
+
+windmc.1: $(binutils_TEXI) $(binutils_TEXINFOS)
+ touch $@
+ -$(TEXI2POD) $(MANCONF) -Dwindmc < $(binutils_TEXI) > windmc.pod
+ -($(POD2MAN) windmc.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
+ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
+ rm -f windmc.pod
+
+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$$$$ && \
+ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
+ rm -f $(DEMANGLER_NAME).pod
+
+$(DEMANGLER_NAME).1: cxxfilt.man Makefile
+ if test -f cxxfilt.man; then \
+ man=cxxfilt.man; \
+ else \
+ man=$(srcdir)/cxxfilt.man; \
+ fi; \
+ sed -e 's/@PROGRAM@/$(DEMANGLER_NAME)/' \
+ -e 's/cxxfilt/$(DEMANGLER_NAME)/' < $$man \
+ > $(DEMANGLER_NAME).1
+
+# We want install to imply install-info as per GNU standards, despite the
+# cygnus option.
+install-data-local: install-info
+
+# Maintenance
+
+# We need it for the taz target in ../../Makefile.in.
+info-local: $(MANS)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/binutils-2.24/binutils/doc/addr2line.1 b/binutils-2.24/binutils/doc/addr2line.1
new file mode 100644
index 00000000..0d60c7e0
--- /dev/null
+++ b/binutils-2.24/binutils/doc/addr2line.1
@@ -0,0 +1,299 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+addr2line \- convert addresses into file names and line numbers.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+addr2line [\fB\-a\fR|\fB\-\-addresses\fR]
+ [\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\-p\fR|\fB\-\-pretty\-print\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 input address is printed on separate lines.
+.PP
+If the \fB\-f\fR option is used, then each \fB\s-1FILENAME:LINENO\s0\fR
+line is preceded by \fB\s-1FUNCTIONNAME\s0\fR which is the name of the
+function containing the address.
+.PP
+If the \fB\-i\fR option is used and the code at the given address is
+present there because of inlining by the compiler then the
+\&\fB{\s-1FUNCTIONNAME\s0} \s-1FILENAME:LINENO\s0\fR information for the inlining
+function will be displayed afterwards. This continues recursively
+until there is no more inlining to report.
+.PP
+If the \fB\-a\fR option is used then the output is prefixed by the
+input address.
+.PP
+If the \fB\-p\fR option is used then the output for each input
+address is displayed on one, possibly quite long, line. If
+\&\fB\-p\fR is not used then the output is broken up into multiple
+lines, based on the paragraphs above.
+.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\-a\fR" 4
+.IX Item "-a"
+.PD 0
+.IP "\fB\-\-addresses\fR" 4
+.IX Item "--addresses"
+.PD
+Display the address before the function name, file and line number
+information. The address is printed with a \fB0x\fR prefix to easily
+identify it.
+.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\-p\fR" 4
+.IX Item "-p"
+.PD 0
+.IP "\fB\-\-pretty\-print\fR" 4
+.IX Item "--pretty-print"
+.PD
+Make the output more human friendly: each location are printed on one line.
+If option \fB\-i\fR is specified, lines for all enclosing scopes are
+prefixed with \fB(inlined by)\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"
+Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/ar.1 b/binutils-2.24/binutils/doc/ar.1
new file mode 100644
index 00000000..f3d02f82
--- /dev/null
+++ b/binutils-2.24/binutils/doc/ar.1
@@ -0,0 +1,461 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+ar \- create, modify, and extract from archives
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+ar [\fB\-\-plugin\fR \fIname\fR] [\fB\-X32_64\fR] [\fB\-\fR]\fIp\fR[\fImod\fR [\fIrelpos\fR] [\fIcount\fR]] [\fB\-\-target\fR \fIbfdname\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 can optionally create a \fIthin\fR archive,
+which contains a symbol index and references to the original copies
+of the member files of the archive. This is useful for building
+libraries for use within a local build tree, where the relocatable
+objects are expected to remain available, and copying the contents of
+each object would only waste time and space.
+.PP
+An archive can either be \fIthin\fR or it can be normal. It cannot
+be both at the same time. Once an archive is created its format
+cannot be changed without first deleting it and then creating a new
+archive in its place.
+.PP
+Thin archives are also \fIflattened\fR, so that adding one thin
+archive to another thin archive does not nest it, as would happen with
+a normal archive. Instead the elements of the first archive are added
+individually to the second archive.
+.PP
+The paths to the elements of the archive are stored relative to the
+archive itself.
+.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, implementations of
+\&\fBar\fR have the option of not updating the archive's symbol
+table if one exists. Too many different systems however assume that
+symbol tables are always up-to-date, so \s-1GNU\s0 \fBar\fR will
+rebuild the table even with a quick append.
+.Sp
+Note \- \s-1GNU\s0 \fBar\fR treats the command \fBqs\fR as a
+synonym for \fBr\fR \- replacing already existing files in the
+archive and appending new ones at the end.
+.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 "\fBs\fR" 4
+.IX Item "s"
+Add an index to the archive, or update it if it already exists. Note
+this command is an exception to the rule that there can only be one
+command letter, as it is possible to use it as either a command or a
+modifier. In either case it does the same thing.
+.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.
+.Sp
+Files cannot be extracted from a thin archive.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Displays the list of command line options supported by \fBar\fR
+and then exits.
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+Displays the version information of \fBar\fR and then exits.
+.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 "\fBD\fR" 4
+.IX Item "D"
+Operate in \fIdeterministic\fR mode. When adding files and the archive
+index use zero for UIDs, GIDs, timestamps, and use consistent file modes
+for all files. When this option is used, if \fBar\fR is used with
+identical options and identical input files, multiple runs will create
+identical output files regardless of the input files' owners, groups,
+file modes, or modification times.
+.Sp
+If \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by default.
+It can be disabled with the \fBU\fR modifier, below.
+.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 "\fBT\fR" 4
+.IX Item "T"
+Make the specified \fIarchive\fR a \fIthin\fR archive. If it already
+exists and is a regular archive, the existing members must be present
+in the same directory as \fIarchive\fR.
+.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 "\fBU\fR" 4
+.IX Item "U"
+Do \fInot\fR operate in \fIdeterministic\fR mode. This is the inverse
+of the \fBD\fR modifier, above: added files and the archive index will
+get their actual \s-1UID\s0, \s-1GID\s0, timestamp, and file mode values.
+.Sp
+This is the default unless \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\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.
+.PP
+The optional command line switch \fB\-\-plugin\fR \fIname\fR causes
+\&\fBar\fR to load the plugin called \fIname\fR which adds support
+for more file formats. This option is only available if the toolchain
+has been built with plugin support enabled.
+.PP
+The optional command line switch \fB\-\-target\fR \fIbfdname\fR
+specifies that the archive members are in an object code format
+different from your system's default format. See
+.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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/binutils.info b/binutils-2.24/binutils/doc/binutils.info
new file mode 100644
index 00000000..f7d09766
--- /dev/null
+++ b/binutils-2.24/binutils/doc/binutils.info
@@ -0,0 +1,4898 @@
+This is binutils.info, produced by makeinfo version 4.8 from
+binutils.texi.
+
+ Copyright (C) 1991-2013 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.3 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".
+
+INFO-DIR-SECTION Software development
+START-INFO-DIR-ENTRY
+* Binutils: (binutils). The GNU binary utilities.
+END-INFO-DIR-ENTRY
+
+INFO-DIR-SECTION Individual utilities
+START-INFO-DIR-ENTRY
+* addr2line: (binutils)addr2line. Convert addresses to file and line.
+* ar: (binutils)ar. Create, modify, and extract from archives.
+* c++filt: (binutils)c++filt. Filter to demangle encoded C++ symbols.
+* cxxfilt: (binutils)c++filt. MS-DOS name for c++filt.
+* dlltool: (binutils)dlltool. Create files needed to build and use DLLs.
+* nlmconv: (binutils)nlmconv. Converts object code into an NLM.
+* nm: (binutils)nm. List symbols from object files.
+* objcopy: (binutils)objcopy. Copy and translate object files.
+* objdump: (binutils)objdump. Display information from object files.
+* ranlib: (binutils)ranlib. Generate index to archive contents.
+* readelf: (binutils)readelf. Display the contents of ELF format files.
+* size: (binutils)size. List section sizes and total size.
+* strings: (binutils)strings. List printable strings from files.
+* strip: (binutils)strip. Discard symbols.
+* elfedit: (binutils)elfedit. Update the ELF header of ELF files.
+* windmc: (binutils)windmc. Generator for Windows message resources.
+* windres: (binutils)windres. Manipulate Windows resources.
+END-INFO-DIR-ENTRY
+
+
+File: binutils.info, Node: Top, Next: ar, Up: (dir)
+
+Introduction
+************
+
+This brief manual contains documentation for the GNU binary utilities
+(GNU Binutils) version 2.23.91:
+
+ This document is distributed under the terms of the GNU Free
+Documentation License version 1.3. 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
+* 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
+* windmc:: Generator for Windows message resources
+* windres:: Manipulate Windows resources
+* dlltool:: Create files needed to build and use DLLs
+* readelf:: Display the contents of ELF format files
+* elfedit:: Update the ELF header of ELF files
+* 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
+* Binutils Index:: Binutils Index
+
+
+File: binutils.info, Node: ar, Next: nm, Prev: Top, Up: Top
+
+1 ar
+****
+
+ ar [`--plugin' NAME] [-]P[MOD [RELPOS] [COUNT]] [`--target' BFDNAME] 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' can optionally create a _thin_ archive, which contains a
+symbol index and references to the original copies of the member files
+of the archive. This is useful for building libraries for use within a
+local build tree, where the relocatable objects are expected to remain
+available, and copying the contents of each object would only waste
+time and space.
+
+ An archive can either be _thin_ or it can be normal. It cannot be
+both at the same time. Once an archive is created its format cannot be
+changed without first deleting it and then creating a new archive in
+its place.
+
+ Thin archives are also _flattened_, so that adding one thin archive
+to another thin archive does not nest it, as would happen with a normal
+archive. Instead the elements of the first archive are added
+individually to the second archive.
+
+ The paths to the elements of the archive are stored relative to the
+archive itself.
+
+ 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 [`--plugin' NAME] [`-X32_64'] [`-']P[MOD [RELPOS] [COUNT]] [`--target' BFDNAME] 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, implementations of
+ `ar' have the option of not updating the archive's symbol table if
+ one exists. Too many different systems however assume that symbol
+ tables are always up-to-date, so GNU `ar' will rebuild the table
+ even with a quick append.
+
+ Note - GNU `ar' treats the command `qs' as a synonym for `r' -
+ replacing already existing files in the archive and appending new
+ ones at the end.
+
+`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.
+
+`s'
+ Add an index to the archive, or update it if it already exists.
+ Note this command is an exception to the rule that there can only
+ be one command letter, as it is possible to use it as either a
+ command or a modifier. In either case it does the same thing.
+
+`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.
+
+ Files cannot be extracted from a thin archive.
+
+`--help'
+ Displays the list of command line options supported by `ar' and
+ then exits.
+
+`--version'
+ Displays the version information of `ar' and then exits.
+
+
+ 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.
+
+`D'
+ Operate in _deterministic_ mode. When adding files and the archive
+ index use zero for UIDs, GIDs, timestamps, and use consistent file
+ modes for all files. When this option is used, if `ar' is used
+ with identical options and identical input files, multiple runs
+ will create identical output files regardless of the input files'
+ owners, groups, file modes, or modification times.
+
+ If `binutils' was configured with
+ `--enable-deterministic-archives', then this mode is on by default.
+ It can be disabled with the `U' modifier, below.
+
+`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.
+
+`T'
+ Make the specified ARCHIVE a _thin_ archive. If it already exists
+ and is a regular archive, the existing members must be present in
+ the same directory as 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'.
+
+`U'
+ Do _not_ operate in _deterministic_ mode. This is the inverse of
+ the `D' modifier, above: added files and the archive index will
+ get their actual UID, GID, timestamp, and file mode values.
+
+ This is the default unless `binutils' was configured with
+ `--enable-deterministic-archives'.
+
+`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'.
+
+ The optional command line switch `--plugin' NAME causes `ar' to load
+the plugin called NAME which adds support for more file formats. This
+option is only available if the toolchain has been built with plugin
+support enabled.
+
+ The optional command line switch `--target' BFDNAME specifies that
+the archive members are in an object code format different from your
+system's default format. See *Note Target Selection::, for more
+information.
+
+
+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'|`-o'|`--print-file-name'] [`-a'|`--debug-syms']
+ [`-B'|`--format=bsd'] [`-C'|`--demangle'[=STYLE]]
+ [`-D'|`--dynamic'] [`-f'FORMAT|`--format='FORMAT]
+ [`-g'|`--extern-only'] [`-h'|`--help']
+ [`-l'|`--line-numbers'] [`-n'|`-v'|`--numeric-sort']
+ [`-P'|`--portability'] [`-p'|`--no-sort']
+ [`-r'|`--reverse-sort'] [`-S'|`--print-size']
+ [`-s'|`--print-armap'] [`-t' RADIX|`--radix='RADIX]
+ [`-u'|`--undefined-only'] [`-V'|`--version']
+ [`-X 32_64'] [`--defined-only'] [`--no-demangle']
+ [`--plugin' NAME] [`--size-sort'] [`--special-syms']
+ [`--synthetic'] [`--target='BFDNAME]
+ [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 usually local; if uppercase, the symbol is global
+ (external). There are however a few lowercase symbols that are
+ shown for special global symbols (`u', `v' and `w').
+
+ `A'
+ The symbol's value is absolute, and will not be changed by
+ further linking.
+
+ `B'
+ `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'
+ `d'
+ The symbol is in the initialized data section.
+
+ `G'
+ `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'
+ For PE format files this indicates that the symbol is in a
+ section specific to the implementation of DLLs. For ELF
+ format files this indicates that the symbol is an indirect
+ function. This is a GNU extension to the standard set of ELF
+ symbol types. It indicates a symbol which if referenced by a
+ relocation does not evaluate to its address, but instead must
+ be invoked at runtime. The runtime execution will then
+ return the value to be used in the relocation.
+
+ `I'
+ The symbol is an indirect reference to another symbol.
+
+ `N'
+ The symbol is a debugging symbol.
+
+ `p'
+ The symbols is in a stack unwind section.
+
+ `R'
+ `r'
+ The symbol is in a read only data section.
+
+ `S'
+ `s'
+ The symbol is in an uninitialized data section for small
+ objects.
+
+ `T'
+ `t'
+ The symbol is in the text (code) section.
+
+ `U'
+ The symbol is undefined.
+
+ `u'
+ The symbol is a unique global symbol. This is a GNU
+ extension to the standard set of ELF symbol bindings. For
+ such a symbol the dynamic linker will make sure that in the
+ entire process there is just one symbol with this name and
+ type in use.
+
+ `V'
+ `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. On some systems,
+ uppercase indicates that a default value has been specified.
+
+ `W'
+ `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.
+
+ `?'
+ 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.
+
+`-h'
+`--help'
+ Show a summary of the options to `nm' and exit.
+
+`-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'.
+
+`-r'
+`--reverse-sort'
+ Reverse the order of the sort (whether numeric or alphabetic); let
+ the last come first.
+
+`-S'
+`--print-size'
+ Print both value and size of defined symbols for the `bsd' output
+ style. This option has no effect for object formats that do not
+ record symbol sizes, unless `--size-sort' is also used in which
+ case a calculated size is displayed.
+
+`-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.
+
+`-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.
+
+`-u'
+`--undefined-only'
+ Display only undefined symbols (those external to 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'.
+
+`--defined-only'
+ Display only defined symbols for each object file.
+
+`--plugin NAME'
+ Load the plugin called NAME to add support for extra target types.
+ This option is only available if the toolchain has been built
+ with plugin support enabled.
+
+`--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 in the
+ normal symbol lists. For example for ARM targets this option
+ would skip the mapping symbols used to mark transitions between
+ ARM code, THUMB code and data.
+
+`--synthetic'
+ Include synthetic symbols in the output. These are special symbols
+ created by the linker for various purposes. They are not shown by
+ default since they are not part of the binary's original source
+ code.
+
+`--target=BFDNAME'
+ Specify an object code format other than your system's default
+ format. *Note Target Selection::, for more information.
+
+
+
+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]
+ [`--localize-hidden']
+ [`-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' [BREADTH]|`--interleave'[=BREADTH]]
+ [`--interleave-width='WIDTH]
+ [`-j' SECTIONPATTERN|`--only-section='SECTIONPATTERN]
+ [`-R' SECTIONPATTERN|`--remove-section='SECTIONPATTERN]
+ [`-p'|`--preserve-dates']
+ [`-D'|`--enable-deterministic-archives']
+ [`-U'|`--disable-deterministic-archives']
+ [`--debugging']
+ [`--gap-fill='VAL]
+ [`--pad-to='ADDRESS]
+ [`--set-start='VAL]
+ [`--adjust-start='INCR]
+ [`--change-addresses='INCR]
+ [`--change-section-address' SECTIONPATTERN{=,+,-}VAL]
+ [`--change-section-lma' SECTIONPATTERN{=,+,-}VAL]
+ [`--change-section-vma' SECTIONPATTERN{=,+,-}VAL]
+ [`--change-warnings'] [`--no-change-warnings']
+ [`--set-section-flags' SECTIONPATTERN=FLAGS]
+ [`--add-section' SECTIONNAME=FILENAME]
+ [`--rename-section' OLDNAME=NEWNAME[,FLAGS]]
+ [`--long-section-names' {enable,disable,keep}]
+ [`--change-leading-char'] [`--remove-leading-char']
+ [`--reverse-bytes='NUM]
+ [`--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']
+ [`--strip-dwo']
+ [`--extract-dwo']
+ [`--extract-symbol']
+ [`--writable-text']
+ [`--readonly-text']
+ [`--pure']
+ [`--impure']
+ [`--file-alignment='NUM]
+ [`--heap='SIZE]
+ [`--image-base='ADDRESS]
+ [`--section-alignment='NUM]
+ [`--stack='SIZE]
+ [`--subsystem='WHICH:MAJOR.MINOR]
+ [`--compress-debug-sections']
+ [`--decompress-debug-sections']
+ [`--dwarf-depth=N']
+ [`--dwarf-start=N']
+ [`-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'). (However, see
+the `--reverse-bytes' option.)
+
+`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 architecture-less 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 SECTIONPATTERN'
+`--only-section=SECTIONPATTERN'
+ Copy only the indicated sections 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.
+ Wildcard characters are accepted in SECTIONPATTERN.
+
+`-R SECTIONPATTERN'
+`--remove-section=SECTIONPATTERN'
+ Remove any section matching SECTIONPATTERN from the output file.
+ This option may be given more than once. Note that using this
+ option inappropriately may make the output file unusable. Wildcard
+ characters are accepted in SECTIONPATTERN. Using both the `-j'
+ and `-R' options together results in undefined behaviour.
+
+`-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.
+
+`--localize-hidden'
+ In an ELF object, mark all symbols that have hidden or internal
+ visibility as local. This option applies on top of
+ symbol-specific localization options such as `-L'.
+
+`-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'
+ If interleaving has been enabled via the `--interleave' option
+ then start the range of bytes to keep at the BYTEth byte. BYTE
+ can be in the range from 0 to BREADTH-1, where BREADTH is the
+ value given by the `--interleave' option.
+
+`-i [BREADTH]'
+`--interleave[=BREADTH]'
+ Only copy a range out of every BREADTH bytes. (Header data is not
+ affected). Select which byte in the range begins the copy with
+ the `--byte' option. Select the width of the range with the
+ `--interleave-width' option.
+
+ This option is useful for creating files to program ROM. It is
+ typically used with an `srec' output target. Note that `objcopy'
+ will complain if you do not specify the `--byte' option as well.
+
+ The default interleave breadth is 4, so with `--byte' set to 0,
+ `objcopy' would copy the first byte out of every four bytes from
+ the input to the output.
+
+`--interleave-width=WIDTH'
+ When used with the `--interleave' option, copy WIDTH bytes at a
+ time. The start of the range of bytes to be copied is set by the
+ `--byte' option, and the extent of the range is set with the
+ `--interleave' option.
+
+ The default value for this option is 1. The value of WIDTH plus
+ the BYTE value set by the `--byte' option must not exceed the
+ interleave breadth set by the `--interleave' option.
+
+ This option can be used to create images for two 16-bit flashes
+ interleaved in a 32-bit bus by passing `-b 0 -i 4
+ --interleave-width=2' and `-b 2 -i 4 --interleave-width=2' to two
+ `objcopy' commands. If the input was '12345678' then the outputs
+ would be '1256' and '3478' respectively.
+
+`-p'
+`--preserve-dates'
+ Set the access and modification dates of the output file to be the
+ same as those of the input file.
+
+`-D'
+`--enable-deterministic-archives'
+ Operate in _deterministic_ mode. When copying archive members and
+ writing the archive index, use zero for UIDs, GIDs, timestamps,
+ and use consistent file modes for all files.
+
+ If `binutils' was configured with
+ `--enable-deterministic-archives', then this mode is on by default.
+ It can be disabled with the `-U' option, below.
+
+`-U'
+`--disable-deterministic-archives'
+ Do _not_ operate in _deterministic_ mode. This is the inverse of
+ the `-D' option, above: when copying archive members and writing
+ the archive index, use their actual UID, GID, timestamp, and file
+ mode values.
+
+ This is the default unless `binutils' was configured with
+ `--enable-deterministic-archives'.
+
+`--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 SECTIONPATTERN{=,+,-}VAL'
+`--adjust-section-vma SECTIONPATTERN{=,+,-}VAL'
+ Set or change both the VMA address and the LMA address of any
+ section matching SECTIONPATTERN. 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 SECTIONPATTERN does not match any
+ sections in the input file, a warning will be issued, unless
+ `--no-change-warnings' is used.
+
+`--change-section-lma SECTIONPATTERN{=,+,-}VAL'
+ Set or change the LMA address of any sections matching
+ SECTIONPATTERN. 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 SECTIONPATTERN does not match any
+ sections in the input file, a warning will be issued, unless
+ `--no-change-warnings' is used.
+
+`--change-section-vma SECTIONPATTERN{=,+,-}VAL'
+ Set or change the VMA address of any section matching
+ SECTIONPATTERN. 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
+ SECTIONPATTERN does not match any sections 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 section pattern does not
+ match any sections, 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 section pattern does not match any sections.
+
+`--set-section-flags SECTIONPATTERN=FLAGS'
+ Set the flags for any sections matching SECTIONPATTERN. 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>
+
+`--long-section-names {enable,disable,keep}'
+ Controls the handling of long section names when processing `COFF'
+ and `PE-COFF' object formats. The default behaviour, `keep', is
+ to preserve long section names if any are present in the input
+ file. The `enable' and `disable' options forcibly enable or
+ disable the use of long section names in the output object; when
+ `disable' is in effect, any long section names in the input object
+ will be truncated. The `enable' option will only emit long
+ section names if any are present in the inputs; this is mostly the
+ same as `keep', but it is left undefined whether the `enable'
+ option might force the creation of an empty string table in the
+ output 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.
+
+`--reverse-bytes=NUM'
+ Reverse the bytes in a section with output contents. A section
+ length must be evenly divisible by the value given in order for
+ the swap to be able to take place. Reversing takes place before
+ the interleaving is performed.
+
+ This option is used typically in generating ROM images for
+ problematic target systems. For example, on some target boards,
+ the 32-bit words fetched from 8-bit ROMs are re-assembled in
+ little-endian byte order regardless of the CPU byte order.
+ Depending on the programming model, the endianness of the ROM may
+ need to be modified.
+
+ Consider a simple file with a section containing the following
+ eight bytes: `12345678'.
+
+ Using `--reverse-bytes=2' for the above example, the bytes in the
+ output file would be ordered `21436587'.
+
+ Using `--reverse-bytes=4' for the above example, the bytes in the
+ output file would be ordered `43218765'.
+
+ By using `--reverse-bytes=2' for the above example, followed by
+ `--reverse-bytes=4' on the output file, the bytes in the second
+ output file would be ordered `34127856'.
+
+`--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. In ELF files, this preserves all note sections in the
+ output.
+
+ 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.
+
+ Note--this switch is only intended for use on fully linked files.
+ It does not make sense to use it on object files where the
+ debugging information may be incomplete. Besides the
+ gnu_debuglink feature currently only supports the presence of one
+ filename containing debugging information, not multiple filenames
+ on a one-per-object-file basis.
+
+`--strip-dwo'
+ Remove the contents of all DWARF .dwo sections, leaving the
+ remaining debugging sections and all symbols intact. This option
+ is intended for use by the compiler as part of the `-gsplit-dwarf'
+ option, which splits debug information between the .o file and a
+ separate .dwo file. The compiler generates all debug information
+ in the same file, then uses the `--extract-dwo' option to copy the
+ .dwo sections to the .dwo file, then the `--strip-dwo' option to
+ remove those sections from the original .o file.
+
+`--extract-dwo'
+ Extract the contents of all DWARF .dwo sections. See the
+ `--strip-dwo' option for more information.
+
+`--file-alignment NUM'
+ 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 PE targets.]
+
+`--heap RESERVE'
+`--heap RESERVE,COMMIT'
+ Specify the number of bytes of memory to reserve (and optionally
+ commit) to be used as heap for this program. [This option is
+ specific to PE targets.]
+
+`--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 PE targets.]
+
+`--section-alignment NUM'
+ 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 PE targets.]
+
+`--stack RESERVE'
+`--stack RESERVE,COMMIT'
+ Specify the number of bytes of memory to reserve (and optionally
+ commit) to be used as stack for this program. [This option is
+ specific to PE targets.]
+
+`--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', `efi-app', `efi-bsd', `efi-rtd', `sal-rtd', and `xbox'.
+ You may optionally set the subsystem version also. Numeric values
+ are also accepted for WHICH. [This option is specific to PE
+ targets.]
+
+`--extract-symbol'
+ Keep the file's section flags and symbols but remove all section
+ data. Specifically, the option:
+
+ * removes the contents of all sections;
+
+ * sets the size of every section to zero; and
+
+ * sets the file's start address to zero.
+
+ This option is used to build a `.sym' file for a VxWorks kernel.
+ It can also be a useful way of reducing the size of a
+ `--just-symbols' linker input file.
+
+`--compress-debug-sections'
+ Compress DWARF debug sections using zlib.
+
+`--decompress-debug-sections'
+ Decompress DWARF debug sections using zlib.
+
+`-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']
+ [`-F'|`--file-offsets']
+ [`--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']
+ [`-P' OPTIONS|`--private='OPTIONS]
+ [`-r'|`--reloc']
+ [`-R'|`--dynamic-reloc']
+ [`-s'|`--full-contents']
+ [`-W[lLiaprmfFsoRt]'|
+ `--dwarf'[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]]
+ [`-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']
+ [`--prefix='PREFIX]
+ [`--prefix-strip='LEVEL]
+ [`--insn-width='WIDTH]
+ [`-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,-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 STABS and
+ IEEE debugging format information stored in the file and print it
+ out using a C like syntax. If neither of these formats are found
+ this option falls back on the `-W' option to print any DWARF
+ information in the file.
+
+`-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.
+
+ If the target is an ARM architecture this switch also has the
+ effect of forcing the disassembler to decode pieces of data found
+ in code sections as if they were 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.
+
+`-F'
+`--file-offsets'
+ When disassembling sections, whenever a symbol is displayed, also
+ display the file offset of the region of data that is about to be
+ dumped. If zeroes are being skipped, then when disassembly
+ resumes, tell the user how many zeroes were skipped and the file
+ offset of the location from where the disassembly resumes. When
+ dumping sections, display the file offset of the location from
+ where the dump starts.
+
+`--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.
+
+ If the target is an ARM architecture then this switch has an
+ additional effect. It restricts the disassembly to only those
+ instructions supported by the architecture specified by MACHINE.
+ If it is necessary to use this switch because the input file does
+ not contain any architecture information, but it is also desired to
+ disassemble all the instructions use `-marm'.
+
+`-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. `intel-mnemonic' and `att-mnemonic' select
+ between intel mnemonic mode and AT&T mnemonic mode.
+ `intel-mnemonic' implies `intel' and `att-mnemonic' implies `att'.
+ `addr64', `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 PowerPC, `booke' controls the disassembly of BookE
+ instructions. `32' and `64' select PowerPC and PowerPC64
+ disassembly, respectively. `e300' selects disassembly for the
+ e300 family. `440' selects disassembly for the PowerPC 440.
+ `ppcps' selects disassembly for the paired single instructions of
+ the PPC750CL.
+
+ For MIPS, this option controls the printing of instruction mnemonic
+ 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 mnemonic instead of some pseudo
+ instruction mnemonic. I.e., print 'daddu' or 'or' instead of
+ 'move', 'sll' instead of 'nop', etc.
+
+ `virt'
+ Disassemble the virtualization ASE instructions.
+
+ `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 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.
+
+`-P OPTIONS'
+`--private=OPTIONS'
+ Print information that is specific to the object file format. The
+ argument OPTIONS is a comma separated list that depends on the
+ format (the lists of options is displayed with the help).
+
+ For XCOFF, the available options are: `header', `aout',
+ `sections', `syms', `relocs', `lineno', `loader', `except',
+ `typchk', `traceback', `toc' and `ldinfo'.
+
+`-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. As for `-r', if used with `-d' or `-D', the
+ relocations are printed interspersed with the disassembly.
+
+`-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'.
+
+`--prefix=PREFIX'
+ Specify PREFIX to add to the absolute paths when used with `-S'.
+
+`--prefix-strip=LEVEL'
+ Indicate how many initial directory names to strip off the
+ hardwired absolute paths. It has no effect without
+ `--prefix='PREFIX.
+
+`--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.
+
+`--insn-width=WIDTH'
+ Display WIDTH bytes on a single line when disassembling
+ instructions.
+
+`-W[lLiaprmfFsoRt]'
+`--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]'
+ 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.
+
+ Note that there is no single letter option to display the content
+ of trace sections or .gdb_index.
+
+ Note: the output from the `=info' option can also be affected by
+ the options `--dwarf-depth', the `--dwarf-start' and the
+ `--dwarf-check'.
+
+`--dwarf-depth=N'
+ Limit the dump of the `.debug_info' section to N children. This
+ is only useful with `--dwarf=info'. The default is to print all
+ DIEs; the special value 0 for N will also have this effect.
+
+ With a non-zero value for N, DIEs at or deeper than N levels will
+ not be printed. The range for N is zero-based.
+
+`--dwarf-start=N'
+ Print only DIEs beginning with the DIE numbered N. This is only
+ useful with `--dwarf=info'.
+
+ If specified, this option will suppress printing of any header
+ information and all DIEs before the DIE numbered N. Only siblings
+ and children of the specified DIE will be printed.
+
+ This can be used in conjunction with `--dwarf-depth'.
+
+`--dwarf-check'
+ Enable additional checks for consistency of Dwarf information.
+
+`-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.
+
+`--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, although the display
+ format is different. The format of the output depends upon the
+ format of the file being dumped, but there are two main types.
+ One looks like this:
+
+ [ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss
+ [ 6](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fred
+
+ where the number inside the square brackets is the number of the
+ entry in the symbol table, the SEC number is the section number,
+ the FL value are the symbol's flag bits, the TY number is the
+ symbol's type, the SCL number is the symbol's storage class and
+ the NX value is the number of auxilary entries associated with the
+ symbol. The last two fields are the symbol's value and its name.
+
+ The other common output format, usually seen with ELF based files,
+ looks like this:
+
+ 00000000 l d .bss 00000000 .bss
+ 00000000 g .text 00000000 fred
+
+ Here the first number is the symbol's value (sometimes refered to
+ as its address). The next field is actually a set of characters
+ and spaces indicating the flag bits that are set on the symbol.
+ These characters are described below. Next is the section with
+ which the symbol is associated or _*ABS*_ if the section is
+ absolute (ie not connected with any section), or _*UND*_ if the
+ section is referenced in the file being dumped, but not defined
+ there.
+
+ After the section name comes another field, a number, which for
+ common symbols is the alignment and for other symbol is the size.
+ Finally the symbol's name is displayed.
+
+ The flag characters are divided into 7 groups as follows:
+ `l'
+ `g'
+ `u'
+ `!'
+ The symbol is a local (l), global (g), unique global (u),
+ neither global nor local (a space) or both global and local
+ (!). A symbol can be neither local or global for a variety
+ of reasons, e.g., because it is used for debugging, but it is
+ probably an indication of a bug if it is ever both local and
+ global. Unique global symbols are a GNU extension to the
+ standard set of ELF symbol bindings. For such a symbol the
+ dynamic linker will make sure that in the entire process
+ there is just one symbol with this name and type in use.
+
+ `w'
+ The symbol is weak (w) or strong (a space).
+
+ `C'
+ The symbol denotes a constructor (C) or an ordinary symbol (a
+ space).
+
+ `W'
+ The symbol is a warning (W) or a normal symbol (a space). A
+ warning symbol's name is a message to be displayed if the
+ symbol following the warning symbol is ever referenced.
+
+ `I'
+
+ `i'
+ The symbol is an indirect reference to another symbol (I), a
+ function to be evaluated during reloc processing (i) or a
+ normal symbol (a space).
+
+ `d'
+ `D'
+ The symbol is a debugging symbol (d) or a dynamic symbol (D)
+ or a normal symbol (a space).
+
+ `F'
+
+ `f'
+
+ `O'
+ The symbol is the name of a function (F) or a file (f) or an
+ object (O) or just a normal symbol (a space).
+
+`-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: size, Prev: objdump, Up: Top
+
+5 ranlib
+********
+
+ ranlib [`--plugin' NAME] [`-DhHvVt'] 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::.
+
+`-h'
+`-H'
+`--help'
+ Show usage information for `ranlib'.
+
+`-v'
+`-V'
+`--version'
+ Show the version number of `ranlib'.
+
+`-D'
+ Operate in _deterministic_ mode. The symbol map archive member's
+ header will show zero for the UID, GID, and timestamp. When this
+ option is used, multiple runs will produce identical output files.
+
+ If `binutils' was configured with
+ `--enable-deterministic-archives', then this mode is on by
+ default. It can be disabled with the `-U' option, described below.
+
+`-t'
+ Update the timestamp of the symbol map of an archive.
+
+`-U'
+ Do _not_ operate in _deterministic_ mode. This is the inverse of
+ the `-D' option, above: the archive index will get actual UID,
+ GID, timestamp, and file mode values.
+
+ If `binutils' was configured _without_
+ `--enable-deterministic-archives', then this mode is on by default.
+
+
+
+File: binutils.info, Node: size, Next: strings, Prev: ranlib, Up: Top
+
+6 size
+******
+
+ size [`-A'|`-B'|`--format='COMPATIBILITY]
+ [`--help']
+ [`-d'|`-o'|`-x'|`--radix='NUMBER]
+ [`--common']
+ [`-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'.
+
+`--common'
+ Print total size of common symbols in each file. When using
+ Berkeley format these are included in the bss size.
+
+`-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 [`-afovV'] [`-'MIN-LEN]
+ [`-n' MIN-LEN] [`--bytes='MIN-LEN]
+ [`-t' RADIX] [`--radix='RADIX]
+ [`-e' ENCODING] [`--encoding='ENCODING]
+ [`-'] [`--all'] [`--print-file-name']
+ [`-T' BFDNAME] [`--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. (`l' and `b' apply to,
+ for example, Unicode UTF-16/UCS-2 encodings).
+
+`-T BFDNAME'
+`--target=BFDNAME'
+ Specify an object code format other than your system's default
+ format. *Note Target Selection::, for more information.
+
+`-v'
+`-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']
+ [`--strip-dwo']
+ [`-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']
+ [`-D'|`--enable-deterministic-archives']
+ [`-U'|`--disable-deterministic-archives']
+ [`--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. The wildcard
+ character `*' may be given at the end of SECTIONNAME. If so, then
+ any section starting with SECTIONNAME will be removed.
+
+`-s'
+`--strip-all'
+ Remove all symbols.
+
+`-g'
+`-S'
+`-d'
+`--strip-debug'
+ Remove debugging symbols only.
+
+`--strip-dwo'
+ Remove the contents of all DWARF .dwo sections, leaving the
+ remaining debugging sections and all symbols intact. See the
+ description of this option in the `objcopy' section for more
+ information.
+
+`--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.
+
+`-D'
+`--enable-deterministic-archives'
+ Operate in _deterministic_ mode. When copying archive members and
+ writing the archive index, use zero for UIDs, GIDs, timestamps,
+ and use consistent file modes for all files.
+
+ If `binutils' was configured with
+ `--enable-deterministic-archives', then this mode is on by default.
+ It can be disabled with the `-U' option, below.
+
+`-U'
+`--disable-deterministic-archives'
+ Do _not_ operate in _deterministic_ mode. This is the inverse of
+ the `-D' option, above: when copying archive members and writing
+ the archive index, use their actual UID, GID, timestamp, and file
+ mode values.
+
+ This is the default unless `binutils' was configured with
+ `--enable-deterministic-archives'.
+
+`-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 contents of any sections that would not be
+ stripped by `--strip-debug' and leaving the debugging sections
+ intact. In ELF files, this preserves all note sections in the
+ output.
+
+ 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'
+
+ 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.
+
+ Note--this switch is only intended for use on fully linked files.
+ It does not make sense to use it on object files where the
+ debugging information may be incomplete. Besides the
+ gnu_debuglink feature currently only supports the presence of one
+ filename containing debugging information, not multiple filenames
+ on a one-per-object-file basis.
+
+`-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-underscore']
+ [`-n'|`--no-strip-underscore']
+ [`-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 separate 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(),", i.e., 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. For example:
+
+ .type _Z1fv, @function
+
+`-_'
+`--strip-underscore'
+ 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.
+
+`-n'
+`--no-strip-underscore'
+ 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. For example, 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 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 [`-a'|`--addresses']
+ [`-b' BFDNAME|`--target='BFDNAME]
+ [`-C'|`--demangle'[=STYLE]]
+ [`-e' FILENAME|`--exe='FILENAME]
+ [`-f'|`--functions'] [`-s'|`--basename']
+ [`-i'|`--inlines']
+ [`-p'|`--pretty-print']
+ [`-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 input address is printed on separate lines.
+
+ If the `-f' option is used, then each `FILENAME:LINENO' line is
+preceded by `FUNCTIONNAME' which is the name of the function containing
+the address.
+
+ If the `-i' option is used and the code at the given address is
+present there because of inlining by the compiler then the
+`{FUNCTIONNAME} FILENAME:LINENO' information for the inlining function
+will be displayed afterwards. This continues recursively until there
+is no more inlining to report.
+
+ If the `-a' option is used then the output is prefixed by the input
+address.
+
+ If the `-p' option is used then the output for each input address is
+displayed on one, possibly quite long, line. If `-p' is not used then
+the output is broken up into multiple lines, based on the paragraphs
+above.
+
+ 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.
+
+`-a'
+`--addresses'
+ Display the address before the function name, file and line number
+ information. The address is printed with a `0x' prefix to easily
+ identify it.
+
+`-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.
+
+`-p'
+`--pretty-print'
+ Make the output more human friendly: each location are printed on
+ one line. If option `-i' is specified, lines for all enclosing
+ scopes are prefixed with `(inlined by)'.
+
+
+File: binutils.info, Node: nlmconv, Next: windmc, 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: windmc, Next: windres, Prev: nlmconv, Up: Top
+
+12 windmc
+*********
+
+`windmc' may be used to generator Windows message resources.
+
+ _Warning:_ `windmc' is not always built as part of the binary
+ utilities, since it is only useful for Windows targets.
+
+ windmc [options] input-file
+
+ `windmc' reads message definitions from an input file (.mc) and
+translate them into a set of output files. The output files may be of
+four kinds:
+
+`h'
+ A C header file containing the message definitions.
+
+`rc'
+ A resource file compilable by the `windres' tool.
+
+`bin'
+ One or more binary files containing the resource data for a
+ specific message language.
+
+`dbg'
+ A C include file that maps message id's to their symbolic name.
+
+ The exact description of these different formats is available in
+documentation from Microsoft.
+
+ When `windmc' converts from the `mc' format to the `bin' format,
+`rc', `h', and optional `dbg' it is acting like the Windows Message
+Compiler.
+
+`-a'
+`--ascii_in'
+ Specifies that the input file specified is ASCII. This is the
+ default behaviour.
+
+`-A'
+`--ascii_out'
+ Specifies that messages in the output `bin' files should be in
+ ASCII format.
+
+`-b'
+`--binprefix'
+ Specifies that `bin' filenames should have to be prefixed by the
+ basename of the source file.
+
+`-c'
+`--customflag'
+ Sets the customer bit in all message id's.
+
+`-C CODEPAGE'
+`--codepage_in CODEPAGE'
+ Sets the default codepage to be used to convert input file to
+ UTF16. The default is ocdepage 1252.
+
+`-d'
+`--decimal_values'
+ Outputs the constants in the header file in decimal. Default is
+ using hexadecimal output.
+
+`-e EXT'
+`--extension EXT'
+ The extension for the header file. The default is .h extension.
+
+`-F TARGET'
+`--target TARGET'
+ Specify the BFD format to use for a bin file as output. This is a
+ BFD target name; you can use the `--help' option to see a list of
+ supported targets. Normally `windmc' will use the default format,
+ which is the first one listed by the `--help' option. *Note
+ Target Selection::.
+
+`-h PATH'
+`--headerdir PATH'
+ The target directory of the generated header file. The default is
+ the current directory.
+
+`-H'
+`--help'
+ Displays a list of command line options and then exits.
+
+`-m CHARACTERS'
+`--maxlength CHARACTERS'
+ Instructs `windmc' to generate a warning if the length of any
+ message exceeds the number specified.
+
+`-n'
+`--nullterminate'
+ Terminate message text in `bin' files by zero. By default they are
+ terminated by CR/LF.
+
+`-o'
+`--hresult_use'
+ Not yet implemented. Instructs `windmc' to generate an OLE2 header
+ file, using HRESULT definitions. Status codes are used if the flag
+ is not specified.
+
+`-O CODEPAGE'
+`--codepage_out CODEPAGE'
+ Sets the default codepage to be used to output text files. The
+ default is ocdepage 1252.
+
+`-r PATH'
+`--rcdir PATH'
+ The target directory for the generated `rc' script and the
+ generated `bin' files that the resource compiler script includes.
+ The default is the current directory.
+
+`-u'
+`--unicode_in'
+ Specifies that the input file is UTF16.
+
+`-U'
+`--unicode_out'
+ Specifies that messages in the output `bin' file should be in UTF16
+ format. This is the default behaviour.
+
+`-v'
+
+`--verbose'
+ Enable verbose mode.
+
+`-V'
+
+`--version'
+ Prints the version number for `windmc'.
+
+`-x PATH'
+`--xdgb PATH'
+ The path of the `dbg' C include file that maps message id's to the
+ symbolic name. No such file is generated without specifying the
+ switch.
+
+
+File: binutils.info, Node: windres, Next: dlltool, Prev: windmc, Up: Top
+
+13 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
+ compatibility 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'.
+
+`--preprocessor-arg OPTION'
+ When `windres' reads an `rc' file, it runs it through the C
+ preprocessor first. This option may be used to specify additional
+ text to be passed to preprocessor on its command line. This
+ option can be used multiple times to add multiple options to the
+ preprocessor command line.
+
+`-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 described 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.
+
+`-c VAL'
+
+`--codepage VAL'
+ Specify the default codepage to use when reading an `rc' file.
+ VAL should be a hexadecimal prefixed by `0x' or decimal codepage
+ code. The valid range is from zero up to 0xffff, but the validity
+ of the codepage is host and configuration dependent.
+
+`-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: readelf, Prev: windres, Up: Top
+
+14 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]
+ [`-y'|`--output-delaylib' 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']
+ [`--use-nul-prefixed-import-tables']
+ [`-I'|`--identify' LIBRARY-FILE-NAME] [`--identify-strict']
+ [`-i'|`--interwork']
+ [`-n'|`--nodelete'] [`-t'|`--temp-prefix' PREFIX]
+ [`-v'|`--verbose']
+ [`-h'|`--help'] [`-V'|`--version']
+ [`--no-leading-underscore'] [`--leading-underscore']
+ [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 (an
+`import library'). This file can be created by giving the `-l' option
+to dlltool when it is creating or reading in a `.def' file.
+
+ If the `-y' option is specified, dlltool generates a delay-import
+library that can be used instead of the normal import library to allow
+a program to link to the dll only as soon as an imported function is
+called for the first time. The resulting executable will need to be
+linked to the static delayimp library containing __delayLoadHelper2(),
+which in turn will import LoadLibraryA and GetProcAddress from kernel32.
+
+ `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
+
+ `dlltool' may also be used to query an existing import library to
+determine the name of the DLL to which it is associated. See the
+description of the `-I' or `--identify' option.
+
+ 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.
+
+`-y FILENAME'
+`--output-delaylib FILENAME'
+ Specifies the name of the delay-import 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@12', `DllEntryPoint@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.
+
+`--no-leading-underscore'
+
+`--leading-underscore'
+ Specifies whether standard symbol should be forced to be prefixed,
+ or not.
+
+`--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.
+
+`--use-nul-prefixed-import-tables'
+ Specifies that when `dlltool' is creating the exports and library
+ files it should prefix the `.idata4' and `.idata5' by zero an
+ element. This emulates old gnu import library generation of
+ `dlltool'. By default this option is turned off.
+
+`-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 FILENAME'
+`--identify FILENAME'
+ Specifies that `dlltool' should inspect the import library
+ indicated by FILENAME and report, on `stdout', the name(s) of the
+ associated DLL(s). This can be performed in addition to any other
+ operations indicated by the other options and arguments.
+ `dlltool' fails if the import library does not exist or is not
+ actually an import library. See also `--identify-strict'.
+
+`--identify-strict'
+ Modifies the behavior of the `--identify' option, such that an
+ error is reported if FILENAME is associated with more than one DLL.
+
+`-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
+
+14.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'. Note: If you want to
+ use LIBRARY as name then you need to quote. Otherwise this will
+ fail due a necessary hack for libtool (see PR binutils/13710 for
+ more details).
+
+`EXPORTS ( ( (' NAME1 `[ = ' NAME2 `] ) | ( ' NAME1 `=' MODULE-NAME `.' EXTERNAL-NAME `) ) [ == ' ITS_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. If ITS_NAME is specified,
+ this name is used as string in export table. MODULE-NAME. Note:
+ The `EXPORTS' has to be the last command in .def file, as keywords
+ are treated - beside `LIBRARY' - as simple name-identifiers. If
+ you want to use LIBRARY as name then you need to quote it.
+
+`IMPORTS ( (' INTERNAL-NAME `=' MODULE-NAME `.' INTEGER `) | [' INTERNAL-NAME `= ]' MODULE-NAME `.' EXTERNAL-NAME `) [ == ) ITS_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. If ITS_NAME
+ is specified, this name is used as string in import table. Note:
+ The `IMPORTS' has to be the last command in .def file, as keywords
+ are treated - beside `LIBRARY' - as simple name-identifiers. If
+ you want to use LIBRARY as name then you need to quote it.
+
+`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: elfedit, Prev: dlltool, Up: Top
+
+15 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']
+ [`--dyn-syms']
+ [`-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>]
+ [`-p' <number or name>|`--string-dump='<number or name>]
+ [`-R' <number or name>|`--relocated-dump='<number or name>]
+ [`-c'|`--archive-index']
+ [`-w[lLiaprmfFsoRt]'|
+ `--debug-dump'[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]]
+ [`--dwarf-depth=N']
+ [`--dwarf-start=N']
+ [`-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 specifying `--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.
+
+`--dyn-syms'
+ Displays the entries in dynamic 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, as well as ARM
+ unwind tables (`.ARM.exidx' / `.ARM.extab') 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 hash tables in the file's dynamic section, rather than the
+ symbol table sections.
+
+`-x <number or name>'
+`--hex-dump=<number or name>'
+ Displays the contents of the indicated section as a hexadecimal
+ bytes. 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.
+
+`-R <number or name>'
+`--relocated-dump=<number or name>'
+ Displays the contents of the indicated section as a hexadecimal
+ bytes. 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. The contents of the section will be
+ relocated before they are displayed.
+
+`-p <number or name>'
+`--string-dump=<number or name>'
+ Displays the contents of the indicated section as printable
+ strings. 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.
+
+`-c'
+`--archive-index'
+ Displays the file symbol index information contained in the header
+ part of binary archives. Performs the same function as the `t'
+ command to `ar', but without using the BFD library. *Note ar::.
+
+`-w[lLiaprmfFsoRt]'
+`--debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]'
+ 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.
+
+ Note that there is no single letter option to display the content
+ of trace sections or .gdb_index.
+
+ Note: the `=decodedline' option will display the interpreted
+ contents of a .debug_line section whereas the `=rawline' option
+ dumps the contents in a raw format.
+
+ Note: the `=frames-interp' option will display the interpreted
+ contents of a .debug_frame section whereas the `=frames' option
+ dumps the contents in a raw format.
+
+ Note: the output from the `=info' option can also be affected by
+ the options `--dwarf-depth' and `--dwarf-start'.
+
+`--dwarf-depth=N'
+ Limit the dump of the `.debug_info' section to N children. This
+ is only useful with `--debug-dump=info'. The default is to print
+ all DIEs; the special value 0 for N will also have this effect.
+
+ With a non-zero value for N, DIEs at or deeper than N levels will
+ not be printed. The range for N is zero-based.
+
+`--dwarf-start=N'
+ Print only DIEs beginning with the DIE numbered N. This is only
+ useful with `--debug-dump=info'.
+
+ If specified, this option will suppress printing of any header
+ information and all DIEs before the DIE numbered N. Only siblings
+ and children of the specified DIE will be printed.
+
+ This can be used in conjunction with `--dwarf-depth'.
+
+`-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: elfedit, Next: Common Options, Prev: readelf, Up: Top
+
+16 elfedit
+**********
+
+ elfedit [`--input-mach='MACHINE]
+ [`--input-type='TYPE]
+ [`--input-osabi='OSABI]
+ `--output-mach='MACHINE
+ `--output-type='TYPE
+ `--output-osabi='OSABI
+ [`-v'|`--version']
+ [`-h'|`--help']
+ ELFFILE...
+
+ `elfedit' updates the ELF header of ELF files which have the
+matching ELF machine and file types. The options control how and which
+fields in the ELF header should be updated.
+
+ ELFFILE... are the ELF files to be updated. 32-bit and 64-bit ELF
+files are supported, as are archives containing ELF files.
+
+ The long and short forms of options, shown here as alternatives, are
+equivalent. At least one of the `--output-mach', `--output-type' and
+`--output-osabi' options must be given.
+
+`--input-mach=MACHINE'
+ Set the matching input ELF machine type to MACHINE. If
+ `--input-mach' isn't specified, it will match any ELF machine
+ types.
+
+ The supported ELF machine types are, L1OM, K1OM and X86-64.
+
+`--output-mach=MACHINE'
+ Change the ELF machine type in the ELF header to MACHINE. The
+ supported ELF machine types are the same as `--input-mach'.
+
+`--input-type=TYPE'
+ Set the matching input ELF file type to TYPE. If `--input-type'
+ isn't specified, it will match any ELF file types.
+
+ The supported ELF file types are, REL, EXEC and DYN.
+
+`--output-type=TYPE'
+ Change the ELF file type in the ELF header to TYPE. The supported
+ ELF types are the same as `--input-type'.
+
+`--input-osabi=OSABI'
+ Set the matching input ELF file OSABI to OSABI. If
+ `--input-osabi' isn't specified, it will match any ELF OSABIs.
+
+ The supported ELF OSABIs are, NONE, HPUX, NETBSD, GNU, LINUX
+ (alias for GNU), SOLARIS, AIX, IRIX, FREEBSD, TRU64, MODESTO,
+ OPENBSD, OPENVMS, NSK, AROS and FENIXOS.
+
+`--output-osabi=OSABI'
+ Change the ELF OSABI in the ELF header to OSABI. The supported
+ ELF OSABI are the same as `--input-osabi'.
+
+`-v'
+`--version'
+ Display the version number of `elfedit'.
+
+`-h'
+`--help'
+ Display the command line options understood by `elfedit'.
+
+
+
+File: binutils.info, Node: Common Options, Next: Selecting the Target System, Prev: elfedit, Up: Top
+
+17 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
+
+18 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
+
+18.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
+
+18.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
+
+19 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
+
+19.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
+
+19.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 `http://www.sourceware.org/bugzilla/'.
+
+ 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.
+
+ 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 sync, 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: Binutils Index, Prev: Reporting Bugs, Up: Top
+
+Appendix A GNU Free Documentation License
+*****************************************
+
+ Version 1.3, 3 November 2008
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ `http://fsf.org/'
+
+ 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
+ functional and useful 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, in any medium,
+ that contains a notice placed by the copyright holder saying it
+ can be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You
+ accept the license if you copy, modify or distribute the work in a
+ way requiring permission under copyright law.
+
+ 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. (Thus, 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. If a section does not fit the above definition of
+ Secondary then it is not allowed to be designated as Invariant.
+ The Document may contain zero Invariant Sections. If the Document
+ does not identify any Invariant Sections then there are none.
+
+ 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
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ 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, or absence of
+ markup, has been arranged to thwart or discourage subsequent
+ modification by readers is not Transparent. An image format is
+ not Transparent if used for any substantial amount of text. 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, PostScript or PDF designed for
+ human modification. Examples of transparent image formats include
+ PNG, XCF and JPG. Opaque formats include 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, PostScript or PDF
+ 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.
+
+ The "publisher" means any person or entity that distributes copies
+ of the Document to the public.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 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 (or copies in media that commonly
+ have printed covers) 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 computer-network location from
+ which the general network-using public has access to download
+ using public-standard network protocols a complete Transparent
+ copy of the Document, free of added material. 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 fewer than five), unless they release you
+ from this requirement.
+
+ 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", Preserve 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. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, 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 to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ 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, and that you preserve all
+ their Warranty Disclaimers.
+
+ 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, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ 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 half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ 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, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense, or distribute it is void,
+ and will automatically terminate your rights under this License.
+
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly
+ and finally terminates your license, and (b) permanently, if the
+ copyright holder fails to notify you of the violation by some
+ reasonable means prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from
+ that copyright holder, and you cure the violation prior to 30 days
+ after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate
+ the licenses of parties who have received copies or rights from
+ you under this License. If your rights have been terminated and
+ not permanently reinstated, receipt of a copy of some or all of
+ the same material does not give you any rights to use it.
+
+ 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. If the Document specifies that a proxy
+ can decide which future versions of this License can be used, that
+ proxy's public statement of acceptance of a version permanently
+ authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+ "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+ World Wide Web server that publishes copyrightable works and also
+ provides prominent facilities for anybody to edit those works. A
+ public wiki that anybody can edit is an example of such a server.
+ A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+ site means any set of copyrightable works thus published on the MMC
+ site.
+
+ "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+ license published by Creative Commons Corporation, a not-for-profit
+ corporation with a principal place of business in San Francisco,
+ California, as well as future copyleft versions of that license
+ published by that same organization.
+
+ "Incorporate" means to publish or republish a Document, in whole or
+ in part, as part of another Document.
+
+ An MMC is "eligible for relicensing" if it is licensed under this
+ License, and if all works that were first published under this
+ License somewhere other than this MMC, and subsequently
+ incorporated in whole or in part into the MMC, (1) had no cover
+ texts or invariant sections, and (2) were thus incorporated prior
+ to November 1, 2008.
+
+ The operator of an MMC Site may republish an MMC contained in the
+ site under CC-BY-SA on the same site at any time before August 1,
+ 2009, provided the MMC is eligible for relicensing.
+
+
+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.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+ If you have Invariant Sections, Front-Cover Texts and Back-Cover
+Texts, replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+ If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+ 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: Binutils Index, Prev: GNU Free Documentation License, Up: Top
+
+Binutils Index
+**************
+
+
+* Menu:
+
+* --enable-deterministic-archives <1>: objcopy. (line 302)
+* --enable-deterministic-archives <2>: ranlib. (line 44)
+* --enable-deterministic-archives <3>: ar cmdline. (line 151)
+* --enable-deterministic-archives <4>: strip. (line 115)
+* --enable-deterministic-archives <5>: ar cmdline. (line 224)
+* --enable-deterministic-archives: objcopy. (line 292)
+* .stab: objdump. (line 413)
+* Add prefix to absolute paths: objdump. (line 356)
+* addr2line: addr2line. (line 6)
+* address to file name and line number: addr2line. (line 6)
+* all header information, object file: objdump. (line 531)
+* ar: ar. (line 6)
+* ar compatibility: ar. (line 60)
+* architecture: objdump. (line 197)
+* architectures available: objdump. (line 182)
+* archive contents: ranlib. (line 6)
+* Archive file symbol index information: readelf. (line 155)
+* archive headers: objdump. (line 67)
+* archives: ar. (line 6)
+* base files: dlltool. (line 124)
+* 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 337)
+* changing section address: objcopy. (line 347)
+* changing section LMA: objcopy. (line 356)
+* changing section VMA: objcopy. (line 369)
+* changing start address: objcopy. (line 332)
+* collections of files: ar. (line 6)
+* compatibility, ar: ar. (line 60)
+* contents of archive: ar cmdline. (line 97)
+* crash: Bug Criteria. (line 9)
+* creating archives: ar cmdline. (line 145)
+* creating thin archive: ar cmdline. (line 210)
+* cxxfilt: c++filt. (line 14)
+* dates in archive: ar cmdline. (line 184)
+* debug symbols: objdump. (line 413)
+* debugging symbols: nm. (line 147)
+* deleting from archive: ar cmdline. (line 26)
+* demangling C++ symbols: c++filt. (line 6)
+* demangling in nm: nm. (line 155)
+* demangling in objdump <1>: objdump. (line 95)
+* demangling in objdump: addr2line. (line 78)
+* deterministic archives <1>: ranlib. (line 32)
+* deterministic archives <2>: objcopy. (line 292)
+* deterministic archives <3>: ar cmdline. (line 224)
+* deterministic archives <4>: strip. (line 105)
+* deterministic archives <5>: ar cmdline. (line 151)
+* deterministic archives <6>: ranlib. (line 44)
+* deterministic archives: objcopy. (line 302)
+* disassembling object code: objdump. (line 117)
+* disassembly architecture: objdump. (line 197)
+* disassembly endianness: objdump. (line 137)
+* disassembly, with source: objdump. (line 352)
+* discarding symbols: strip. (line 6)
+* DLL: dlltool. (line 6)
+* dlltool: dlltool. (line 6)
+* DWARF: objdump. (line 378)
+* dynamic relocation entries, in object file: objdump. (line 340)
+* dynamic symbol table entries, printing: objdump. (line 515)
+* dynamic symbols: nm. (line 167)
+* ELF dynamic section information: readelf. (line 113)
+* ELF dynamic symbol table information: readelf. (line 88)
+* ELF file header information: readelf. (line 57)
+* ELF file information: readelf. (line 6)
+* ELF notes: readelf. (line 97)
+* ELF object file format: objdump. (line 413)
+* ELF program header information: readelf. (line 63)
+* ELF reloc information: readelf. (line 101)
+* ELF section group information: readelf. (line 74)
+* ELF section information: readelf. (line 79)
+* ELF segment information: readelf. (line 63)
+* ELF symbol table information: readelf. (line 84)
+* ELF version sections information: readelf. (line 117)
+* elfedit: elfedit. (line 6)
+* endianness: objdump. (line 137)
+* error on valid input: Bug Criteria. (line 12)
+* external symbols: nm. (line 179)
+* extract from archive: ar cmdline. (line 112)
+* fatal signal: Bug Criteria. (line 9)
+* file name: nm. (line 141)
+* header information, all: objdump. (line 531)
+* input .def file: dlltool. (line 120)
+* input file name: nm. (line 141)
+* Instruction width: objdump. (line 373)
+* libraries: ar. (line 25)
+* listings strings: strings. (line 6)
+* load plugin: nm. (line 252)
+* machine instructions: objdump. (line 117)
+* moving in archive: ar cmdline. (line 34)
+* MRI compatibility, ar: ar scripts. (line 8)
+* name duplication in archive: ar cmdline. (line 106)
+* name length: ar. (line 18)
+* nm: nm. (line 6)
+* nm compatibility: nm. (line 173)
+* nm format: nm. (line 173)
+* not writing archive index: ar cmdline. (line 203)
+* objdump: objdump. (line 6)
+* object code format <1>: strings. (line 67)
+* object code format <2>: nm. (line 278)
+* object code format <3>: addr2line. (line 73)
+* object code format <4>: objdump. (line 81)
+* object code format: size. (line 84)
+* object file header: objdump. (line 143)
+* object file information: objdump. (line 6)
+* object file offsets: objdump. (line 148)
+* object file sections: objdump. (line 347)
+* object formats available: objdump. (line 182)
+* 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 66)
+* ranlib <1>: ranlib. (line 6)
+* ranlib: ar cmdline. (line 91)
+* readelf: readelf. (line 6)
+* relative placement in archive: ar cmdline. (line 133)
+* relocation entries, in object file: objdump. (line 334)
+* removing symbols: strip. (line 6)
+* repeated names in archive: ar cmdline. (line 106)
+* replacement in archive: ar cmdline. (line 73)
+* reporting bugs: Reporting Bugs. (line 6)
+* scripts, ar: ar scripts. (line 8)
+* section addresses in objdump: objdump. (line 73)
+* section headers: objdump. (line 164)
+* section information: objdump. (line 187)
+* section sizes: size. (line 6)
+* sections, full contents: objdump. (line 347)
+* size: size. (line 6)
+* size display format: size. (line 27)
+* size number format: size. (line 66)
+* sorting symbols: nm. (line 202)
+* source code context: objdump. (line 157)
+* source disassembly: objdump. (line 352)
+* source file name: nm. (line 141)
+* source filenames for object files: objdump. (line 191)
+* stab: objdump. (line 413)
+* start-address: objdump. (line 422)
+* stop-address: objdump. (line 426)
+* strings: strings. (line 6)
+* strings, printing: strings. (line 6)
+* strip: strip. (line 6)
+* Strip absolute paths: objdump. (line 359)
+* symbol index <1>: ar. (line 28)
+* symbol index: ranlib. (line 6)
+* symbol index, listing: nm. (line 224)
+* symbol line numbers: nm. (line 187)
+* symbol table entries, printing: objdump. (line 431)
+* symbols: nm. (line 6)
+* symbols, discarding: strip. (line 6)
+* thin archives: ar. (line 40)
+* undefined symbols: nm. (line 235)
+* Unix compatibility, ar: ar cmdline. (line 8)
+* unwind information: readelf. (line 106)
+* Update ELF header: elfedit. (line 6)
+* updating an archive: ar cmdline. (line 215)
+* version: Top. (line 6)
+* VMA in objdump: objdump. (line 73)
+* wide output, printing: objdump. (line 537)
+* writing archive index: ar cmdline. (line 197)
+
+
+
+Tag Table:
+Node: Top1896
+Node: ar3609
+Node: ar cmdline6747
+Node: ar scripts17089
+Node: nm22777
+Node: objcopy32671
+Node: objdump64440
+Node: ranlib86571
+Node: size88176
+Node: strings91180
+Node: strip93638
+Node: c++filt100870
+Ref: c++filt-Footnote-1105711
+Node: addr2line105817
+Node: nlmconv110154
+Node: windmc112759
+Node: windres116408
+Node: dlltool122769
+Node: def file format135649
+Node: readelf138188
+Node: elfedit145743
+Node: Common Options147997
+Node: Selecting the Target System149037
+Node: Target Selection149969
+Node: Architecture Selection151951
+Node: Reporting Bugs152779
+Node: Bug Criteria153558
+Node: Bug Reporting154111
+Node: GNU Free Documentation License160981
+Node: Binutils Index186160
+
+End Tag Table
diff --git a/binutils-2.24/binutils/doc/binutils.texi b/binutils-2.24/binutils/doc/binutils.texi
new file mode 100644
index 00000000..9176d9b5
--- /dev/null
+++ b/binutils-2.24/binutils/doc/binutils.texi
@@ -0,0 +1,4885 @@
+\input texinfo @c -*- Texinfo -*-
+@setfilename binutils.info
+@settitle @sc{gnu} Binary Utilities
+@finalout
+@synindex ky cp
+
+@c man begin INCLUDE
+@include bfdver.texi
+@c man end
+
+@copying
+@c man begin COPYRIGHT
+Copyright @copyright{} 1991-2013 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.3
+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''.
+
+@c man end
+@end copying
+
+@dircategory Software development
+@direntry
+* Binutils: (binutils). The GNU binary utilities.
+@end direntry
+
+@dircategory Individual utilities
+@direntry
+* addr2line: (binutils)addr2line. Convert addresses to file and line.
+* ar: (binutils)ar. Create, modify, and extract from archives.
+* c++filt: (binutils)c++filt. Filter to demangle encoded C++ symbols.
+* cxxfilt: (binutils)c++filt. MS-DOS name for c++filt.
+* dlltool: (binutils)dlltool. Create files needed to build and use DLLs.
+* nlmconv: (binutils)nlmconv. Converts object code into an NLM.
+* nm: (binutils)nm. List symbols from object files.
+* objcopy: (binutils)objcopy. Copy and translate object files.
+* objdump: (binutils)objdump. Display information from object files.
+* ranlib: (binutils)ranlib. Generate index to archive contents.
+* readelf: (binutils)readelf. Display the contents of ELF format files.
+* size: (binutils)size. List section sizes and total size.
+* strings: (binutils)strings. List printable strings from files.
+* strip: (binutils)strip. Discard symbols.
+* elfedit: (binutils)elfedit. Update the ELF header of ELF files.
+* windmc: (binutils)windmc. Generator for Windows message resources.
+* windres: (binutils)windres. Manipulate Windows resources.
+@end direntry
+
+@titlepage
+@title The @sc{gnu} Binary Utilities
+@ifset VERSION_PACKAGE
+@subtitle @value{VERSION_PACKAGE}
+@end ifset
+@subtitle Version @value{VERSION}
+@sp 1
+@subtitle @value{UPDATED}
+@author Roland H. Pesch
+@author Jeffrey M. Osier
+@author Cygnus Support
+@page
+
+@tex
+{\parskip=0pt \hfill Cygnus Support\par \hfill
+Texinfo \texinfoversion\par }
+@end tex
+
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+@contents
+
+@node Top
+@top Introduction
+
+@cindex version
+This brief manual contains documentation for the @sc{gnu} binary
+utilities
+@ifset VERSION_PACKAGE
+@value{VERSION_PACKAGE}
+@end ifset
+version @value{VERSION}:
+
+@iftex
+@table @code
+@item ar
+Create, modify, and extract from archives
+
+@item nm
+List symbols from object files
+
+@item objcopy
+Copy and translate object files
+
+@item objdump
+Display information from object files
+
+@item ranlib
+Generate index to archive contents
+
+@item readelf
+Display the contents of ELF format files.
+
+@item size
+List file section sizes and total size
+
+@item strings
+List printable strings from files
+
+@item strip
+Discard symbols
+
+@item elfedit
+Update the ELF header of ELF files.
+
+@item c++filt
+Demangle encoded C++ symbols (on MS-DOS, this program is named
+@code{cxxfilt})
+
+@item addr2line
+Convert addresses into file names and line numbers
+
+@item nlmconv
+Convert object code into a Netware Loadable Module
+
+@item windres
+Manipulate Windows resources
+
+@item windmc
+Generator for Windows message resources
+
+@item dlltool
+Create the files needed to build and use Dynamic Link Libraries
+@end table
+@end iftex
+
+This document is distributed under the terms of the GNU Free
+Documentation License version 1.3. 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
+* 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
+* windmc:: Generator for Windows message resources
+* windres:: Manipulate Windows resources
+* dlltool:: Create files needed to build and use DLLs
+* readelf:: Display the contents of ELF format files
+* elfedit:: Update the ELF header of ELF files
+* 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
+* Binutils Index:: Binutils Index
+@end menu
+
+@node ar
+@chapter ar
+
+@kindex ar
+@cindex archives
+@cindex collections of files
+
+@c man title ar create, modify, and extract from archives
+
+@smallexample
+ar [@option{--plugin} @var{name}] [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] [@option{--target} @var{bfdname}] @var{archive} [@var{member}@dots{}]
+ar -M [ <mri-script ]
+@end smallexample
+
+@c man begin DESCRIPTION ar
+
+The @sc{gnu} @command{ar} program creates, modifies, and extracts from
+archives. An @dfn{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 @dfn{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.
+
+@cindex name length
+@sc{gnu} @command{ar} can maintain archives whose members have names of any
+length; however, depending on how @command{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).
+
+@cindex libraries
+@command{ar} is considered a binary utility because archives of this sort
+are most often used as @dfn{libraries} holding commonly needed
+subroutines.
+
+@cindex symbol index
+@command{ar} creates an index to the symbols defined in relocatable
+object modules in the archive when you specify the modifier @samp{s}.
+Once created, this index is updated in the archive whenever @command{ar}
+makes a change to its contents (save for the @samp{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 @samp{nm -s} or @samp{nm --print-armap} to list this index
+table. If an archive lacks the table, another form of @command{ar} called
+@command{ranlib} can be used to add just the table.
+
+@cindex thin archives
+@sc{gnu} @command{ar} can optionally create a @emph{thin} archive,
+which contains a symbol index and references to the original copies
+of the member files of the archive. This is useful for building
+libraries for use within a local build tree, where the relocatable
+objects are expected to remain available, and copying the contents of
+each object would only waste time and space.
+
+An archive can either be @emph{thin} or it can be normal. It cannot
+be both at the same time. Once an archive is created its format
+cannot be changed without first deleting it and then creating a new
+archive in its place.
+
+Thin archives are also @emph{flattened}, so that adding one thin
+archive to another thin archive does not nest it, as would happen with
+a normal archive. Instead the elements of the first archive are added
+individually to the second archive.
+
+The paths to the elements of the archive are stored relative to the
+archive itself.
+
+@cindex compatibility, @command{ar}
+@cindex @command{ar} compatibility
+@sc{gnu} @command{ar} is designed to be compatible with two different
+facilities. You can control its activity using command-line options,
+like the different varieties of @command{ar} on Unix systems; or, if you
+specify the single command-line option @option{-M}, you can control it
+with a script supplied via standard input, like the MRI ``librarian''
+program.
+
+@c man end
+
+@menu
+* ar cmdline:: Controlling @command{ar} on the command line
+* ar scripts:: Controlling @command{ar} with a script
+@end menu
+
+@page
+@node ar cmdline
+@section Controlling @command{ar} on the Command Line
+
+@smallexample
+@c man begin SYNOPSIS ar
+ar [@option{--plugin} @var{name}] [@option{-X32_64}] [@option{-}]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] [@option{--target} @var{bfdname}] @var{archive} [@var{member}@dots{}]
+@c man end
+@end smallexample
+
+@cindex Unix compatibility, @command{ar}
+When you use @command{ar} in the Unix style, @command{ar} insists on at least two
+arguments to execute: one keyletter specifying the @emph{operation}
+(optionally accompanied by other keyletters specifying
+@emph{modifiers}), and the archive name to act on.
+
+Most operations can also accept further @var{member} arguments,
+specifying particular files to operate on.
+
+@c man begin OPTIONS ar
+
+@sc{gnu} @command{ar} allows you to mix the operation code @var{p} and modifier
+flags @var{mod} in any order, within the first command-line argument.
+
+If you wish, you may begin the first command-line argument with a
+dash.
+
+@cindex operations on archive
+The @var{p} keyletter specifies what operation to execute; it may be
+any of the following, but you must specify only one of them:
+
+@table @samp
+@item d
+@cindex deleting from archive
+@emph{Delete} modules from the archive. Specify the names of modules to
+be deleted as @var{member}@dots{}; the archive is untouched if you
+specify no files to delete.
+
+If you specify the @samp{v} modifier, @command{ar} lists each module
+as it is deleted.
+
+@item m
+@cindex moving in archive
+Use this operation to @emph{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 @code{m}, any members you name in the
+@var{member} arguments are moved to the @emph{end} of the archive;
+you can use the @samp{a}, @samp{b}, or @samp{i} modifiers to move them to a
+specified place instead.
+
+@item p
+@cindex printing from archive
+@emph{Print} the specified members of the archive, to the standard
+output file. If the @samp{v} modifier is specified, show the member
+name before copying its contents to standard output.
+
+If you specify no @var{member} arguments, all the files in the archive are
+printed.
+
+@item q
+@cindex quick append to archive
+@emph{Quick append}; Historically, add the files @var{member}@dots{} to the end of
+@var{archive}, without checking for replacement.
+
+The modifiers @samp{a}, @samp{b}, and @samp{i} do @emph{not} affect this
+operation; new members are always placed at the end of the archive.
+
+The modifier @samp{v} makes @command{ar} list each file as it is appended.
+
+Since the point of this operation is speed, implementations of
+@command{ar} have the option of not updating the archive's symbol
+table if one exists. Too many different systems however assume that
+symbol tables are always up-to-date, so @sc{gnu} @command{ar} will
+rebuild the table even with a quick append.
+
+Note - @sc{gnu} @command{ar} treats the command @samp{qs} as a
+synonym for @samp{r} - replacing already existing files in the
+archive and appending new ones at the end.
+
+@item r
+@cindex replacement in archive
+Insert the files @var{member}@dots{} into @var{archive} (with
+@emph{replacement}). This operation differs from @samp{q} in that any
+previously existing members are deleted if their names match those being
+added.
+
+If one of the files named in @var{member}@dots{} does not exist, @command{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 @samp{a}, @samp{b}, or @samp{i} to request
+placement relative to some existing member.
+
+The modifier @samp{v} used with this operation elicits a line of
+output for each file inserted, along with one of the letters @samp{a} or
+@samp{r} to indicate whether the file was appended (no old member
+deleted) or replaced.
+
+@item s
+@cindex ranlib
+Add an index to the archive, or update it if it already exists. Note
+this command is an exception to the rule that there can only be one
+command letter, as it is possible to use it as either a command or a
+modifier. In either case it does the same thing.
+
+@item t
+@cindex contents of archive
+Display a @emph{table} listing the contents of @var{archive}, or those
+of the files listed in @var{member}@dots{} 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 @samp{v} modifier.
+
+If you do not specify a @var{member}, all files in the archive
+are listed.
+
+@cindex repeated names in archive
+@cindex name duplication in archive
+If there is more than one file with the same name (say, @samp{fie}) in
+an archive (say @samp{b.a}), @samp{ar t b.a fie} lists only the
+first instance; to see them all, you must ask for a complete
+listing---in our example, @samp{ar t b.a}.
+@c WRS only; per Gumby, this is implementation-dependent, and in a more
+@c recent case in fact works the other way.
+
+@item x
+@cindex extract from archive
+@emph{Extract} members (named @var{member}) from the archive. You can
+use the @samp{v} modifier with this operation, to request that
+@command{ar} list each name as it extracts it.
+
+If you do not specify a @var{member}, all files in the archive
+are extracted.
+
+Files cannot be extracted from a thin archive.
+
+@item --help
+Displays the list of command line options supported by @command{ar}
+and then exits.
+
+@item --version
+Displays the version information of @command{ar} and then exits.
+
+@end table
+
+A number of modifiers (@var{mod}) may immediately follow the @var{p}
+keyletter, to specify variations on an operation's behavior:
+
+@table @samp
+@item a
+@cindex relative placement in archive
+Add new files @emph{after} an existing member of the
+archive. If you use the modifier @samp{a}, the name of an existing archive
+member must be present as the @var{relpos} argument, before the
+@var{archive} specification.
+
+@item b
+Add new files @emph{before} an existing member of the
+archive. If you use the modifier @samp{b}, the name of an existing archive
+member must be present as the @var{relpos} argument, before the
+@var{archive} specification. (same as @samp{i}).
+
+@item c
+@cindex creating archives
+@emph{Create} the archive. The specified @var{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.
+
+@item D
+@cindex deterministic archives
+@kindex --enable-deterministic-archives
+Operate in @emph{deterministic} mode. When adding files and the archive
+index use zero for UIDs, GIDs, timestamps, and use consistent file modes
+for all files. When this option is used, if @command{ar} is used with
+identical options and identical input files, multiple runs will create
+identical output files regardless of the input files' owners, groups,
+file modes, or modification times.
+
+If @file{binutils} was configured with
+@option{--enable-deterministic-archives}, then this mode is on by default.
+It can be disabled with the @samp{U} modifier, below.
+
+@item f
+Truncate names in the archive. @sc{gnu} @command{ar} will normally permit file
+names of any length. This will cause it to create archives which are
+not compatible with the native @command{ar} program on some systems. If
+this is a concern, the @samp{f} modifier may be used to truncate file
+names when putting them in the archive.
+
+@item i
+Insert new files @emph{before} an existing member of the
+archive. If you use the modifier @samp{i}, the name of an existing archive
+member must be present as the @var{relpos} argument, before the
+@var{archive} specification. (same as @samp{b}).
+
+@item l
+This modifier is accepted but not used.
+@c whaffor ar l modifier??? presumably compat; with
+@c what???---doc@@cygnus.com, 25jan91
+
+@item N
+Uses the @var{count} parameter. This is used if there are multiple
+entries in the archive with the same name. Extract or delete instance
+@var{count} of the given name from the archive.
+
+@item o
+@cindex dates in archive
+Preserve the @emph{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.
+
+@item P
+Use the full path name when matching names in the archive. @sc{gnu}
+@command{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 @sc{gnu} @command{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.
+
+@item s
+@cindex writing archive index
+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 @samp{ar s} on an
+archive is equivalent to running @samp{ranlib} on it.
+
+@item S
+@cindex not writing archive index
+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
+@samp{S} modifier on the last execution of @samp{ar}, or you must run
+@samp{ranlib} on the archive.
+
+@item T
+@cindex creating thin archive
+Make the specified @var{archive} a @emph{thin} archive. If it already
+exists and is a regular archive, the existing members must be present
+in the same directory as @var{archive}.
+
+@item u
+@cindex updating an archive
+Normally, @samp{ar r}@dots{} inserts all files
+listed into the archive. If you would like to insert @emph{only} those
+of the files you list that are newer than existing members of the same
+names, use this modifier. The @samp{u} modifier is allowed only for the
+operation @samp{r} (replace). In particular, the combination @samp{qu} is
+not allowed, since checking the timestamps would lose any speed
+advantage from the operation @samp{q}.
+
+@item U
+@cindex deterministic archives
+@kindex --enable-deterministic-archives
+Do @emph{not} operate in @emph{deterministic} mode. This is the inverse
+of the @samp{D} modifier, above: added files and the archive index will
+get their actual UID, GID, timestamp, and file mode values.
+
+This is the default unless @file{binutils} was configured with
+@option{--enable-deterministic-archives}.
+
+@item v
+This modifier requests the @emph{verbose} version of an operation. Many
+operations display additional information, such as filenames processed,
+when the modifier @samp{v} is appended.
+
+@item V
+This modifier shows the version number of @command{ar}.
+@end table
+
+@command{ar} ignores an initial option spelt @samp{-X32_64}, for
+compatibility with AIX. The behaviour produced by this option is the
+default for @sc{gnu} @command{ar}. @command{ar} does not support any of the other
+@samp{-X} options; in particular, it does not support @option{-X32}
+which is the default for AIX @command{ar}.
+
+The optional command line switch @option{--plugin} @var{name} causes
+@command{ar} to load the plugin called @var{name} which adds support
+for more file formats. This option is only available if the toolchain
+has been built with plugin support enabled.
+
+The optional command line switch @option{--target} @var{bfdname}
+specifies that the archive members are in an object code format
+different from your system's default format. See
+@xref{Target Selection}, for more information.
+
+@c man end
+
+@ignore
+@c man begin SEEALSO ar
+nm(1), ranlib(1), and the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node ar scripts
+@section Controlling @command{ar} with a Script
+
+@smallexample
+ar -M [ <@var{script} ]
+@end smallexample
+
+@cindex MRI compatibility, @command{ar}
+@cindex scripts, @command{ar}
+If you use the single command-line option @samp{-M} with @command{ar}, you
+can control its operation with a rudimentary command language. This
+form of @command{ar} operates interactively if standard input is coming
+directly from a terminal. During interactive use, @command{ar} prompts for
+input (the prompt is @samp{AR >}), and continues executing even after
+errors. If you redirect standard input to a script file, no prompts are
+issued, and @command{ar} abandons execution (with a nonzero exit code)
+on any error.
+
+The @command{ar} command language is @emph{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 @sc{gnu} @command{ar} for developers who already have scripts
+written for the MRI ``librarian'' program.
+
+The syntax for the @command{ar} command language is straightforward:
+@itemize @bullet
+@item
+commands are recognized in upper or lower case; for example, @code{LIST}
+is the same as @code{list}. In the following descriptions, commands are
+shown in upper case for clarity.
+
+@item
+a single command may appear on each line; it is the first word on the
+line.
+
+@item
+empty lines are allowed, and have no effect.
+
+@item
+comments are allowed; text after either of the characters @samp{*}
+or @samp{;} is ignored.
+
+@item
+Whenever you use a list of names as part of the argument to an @command{ar}
+command, you can separate the individual names with either commas or
+blanks. Commas are shown in the explanations below, for clarity.
+
+@item
+@samp{+} is used as a line continuation character; if @samp{+} appears
+at the end of a line, the text on the following line is considered part
+of the current command.
+@end itemize
+
+Here are the commands you can use in @command{ar} scripts, or when using
+@command{ar} interactively. Three of them have special significance:
+
+@code{OPEN} or @code{CREATE} specify a @dfn{current archive}, which is
+a temporary file required for most of the other commands.
+
+@code{SAVE} commits the changes so far specified by the script. Prior
+to @code{SAVE}, commands affect only the temporary copy of the current
+archive.
+
+@table @code
+@item ADDLIB @var{archive}
+@itemx ADDLIB @var{archive} (@var{module}, @var{module}, @dots{} @var{module})
+Add all the contents of @var{archive} (or, if specified, each named
+@var{module} from @var{archive}) to the current archive.
+
+Requires prior use of @code{OPEN} or @code{CREATE}.
+
+@item ADDMOD @var{member}, @var{member}, @dots{} @var{member}
+@c FIXME! w/Replacement?? If so, like "ar r @var{archive} @var{names}"
+@c else like "ar q..."
+Add each named @var{member} as a module in the current archive.
+
+Requires prior use of @code{OPEN} or @code{CREATE}.
+
+@item CLEAR
+Discard the contents of the current archive, canceling the effect of
+any operations since the last @code{SAVE}. May be executed (with no
+effect) even if no current archive is specified.
+
+@item CREATE @var{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 @var{archive} until you use @code{SAVE}.
+You can overwrite existing archives; similarly, the contents of any
+existing file named @var{archive} will not be destroyed until @code{SAVE}.
+
+@item DELETE @var{module}, @var{module}, @dots{} @var{module}
+Delete each listed @var{module} from the current archive; equivalent to
+@samp{ar -d @var{archive} @var{module} @dots{} @var{module}}.
+
+Requires prior use of @code{OPEN} or @code{CREATE}.
+
+@item DIRECTORY @var{archive} (@var{module}, @dots{} @var{module})
+@itemx DIRECTORY @var{archive} (@var{module}, @dots{} @var{module}) @var{outputfile}
+List each named @var{module} present in @var{archive}. The separate
+command @code{VERBOSE} specifies the form of the output: when verbose
+output is off, output is like that of @samp{ar -t @var{archive}
+@var{module}@dots{}}. When verbose output is on, the listing is like
+@samp{ar -tv @var{archive} @var{module}@dots{}}.
+
+Output normally goes to the standard output stream; however, if you
+specify @var{outputfile} as a final argument, @command{ar} directs the
+output to that file.
+
+@item END
+Exit from @command{ar}, with a @code{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 @code{SAVE} command, those
+changes are lost.
+
+@item EXTRACT @var{module}, @var{module}, @dots{} @var{module}
+Extract each named @var{module} from the current archive, writing them
+into the current directory as separate files. Equivalent to @samp{ar -x
+@var{archive} @var{module}@dots{}}.
+
+Requires prior use of @code{OPEN} or @code{CREATE}.
+
+@ignore
+@c FIXME Tokens but no commands???
+@item FULLDIR
+
+@item HELP
+@end ignore
+
+@item LIST
+Display full contents of the current archive, in ``verbose'' style
+regardless of the state of @code{VERBOSE}. The effect is like @samp{ar
+tv @var{archive}}. (This single command is a @sc{gnu} @command{ar}
+enhancement, rather than present for MRI compatibility.)
+
+Requires prior use of @code{OPEN} or @code{CREATE}.
+
+@item OPEN @var{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 @var{archive} until you next use @code{SAVE}.
+
+@item REPLACE @var{module}, @var{module}, @dots{} @var{module}
+In the current archive, replace each existing @var{module} (named in
+the @code{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 @code{OPEN} or @code{CREATE}.
+
+@item VERBOSE
+Toggle an internal flag governing the output from @code{DIRECTORY}.
+When the flag is on, @code{DIRECTORY} output matches output from
+@samp{ar -tv }@dots{}.
+
+@item SAVE
+Commit your changes to the current archive, and actually save it as a
+file with the name specified in the last @code{CREATE} or @code{OPEN}
+command.
+
+Requires prior use of @code{OPEN} or @code{CREATE}.
+
+@end table
+
+@iftex
+@node ld
+@chapter ld
+@cindex linker
+@kindex ld
+The @sc{gnu} linker @command{ld} is now described in a separate manual.
+@xref{Top,, Overview,, Using LD: the @sc{gnu} linker}.
+@end iftex
+
+@node nm
+@chapter nm
+@cindex symbols
+@kindex nm
+
+@c man title nm list symbols from object files
+
+@smallexample
+@c man begin SYNOPSIS nm
+nm [@option{-A}|@option{-o}|@option{--print-file-name}] [@option{-a}|@option{--debug-syms}]
+ [@option{-B}|@option{--format=bsd}] [@option{-C}|@option{--demangle}[=@var{style}]]
+ [@option{-D}|@option{--dynamic}] [@option{-f}@var{format}|@option{--format=}@var{format}]
+ [@option{-g}|@option{--extern-only}] [@option{-h}|@option{--help}]
+ [@option{-l}|@option{--line-numbers}] [@option{-n}|@option{-v}|@option{--numeric-sort}]
+ [@option{-P}|@option{--portability}] [@option{-p}|@option{--no-sort}]
+ [@option{-r}|@option{--reverse-sort}] [@option{-S}|@option{--print-size}]
+ [@option{-s}|@option{--print-armap}] [@option{-t} @var{radix}|@option{--radix=}@var{radix}]
+ [@option{-u}|@option{--undefined-only}] [@option{-V}|@option{--version}]
+ [@option{-X 32_64}] [@option{--defined-only}] [@option{--no-demangle}]
+ [@option{--plugin} @var{name}] [@option{--size-sort}] [@option{--special-syms}]
+ [@option{--synthetic}] [@option{--target=}@var{bfdname}]
+ [@var{objfile}@dots{}]
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION nm
+@sc{gnu} @command{nm} lists the symbols from object files @var{objfile}@dots{}.
+If no object files are listed as arguments, @command{nm} assumes the file
+@file{a.out}.
+
+For each symbol, @command{nm} shows:
+
+@itemize @bullet
+@item
+The symbol value, in the radix selected by options (see below), or
+hexadecimal by default.
+
+@item
+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
+usually local; if uppercase, the symbol is global (external). There
+are however a few lowercase symbols that are shown for special global
+symbols (@code{u}, @code{v} and @code{w}).
+
+@c Some more detail on exactly what these symbol types are used for
+@c would be nice.
+@table @code
+@item A
+The symbol's value is absolute, and will not be changed by further
+linking.
+
+@item B
+@itemx b
+The symbol is in the uninitialized data section (known as BSS).
+
+@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.
+@ifclear man
+For more details on common symbols, see the discussion of
+--warn-common in @ref{Options,,Linker options,ld.info,The GNU linker}.
+@end ifclear
+
+@item D
+@itemx d
+The symbol is in the initialized data section.
+
+@item G
+@itemx 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.
+
+@item i
+For PE format files this indicates that the symbol is in a section
+specific to the implementation of DLLs. For ELF format files this
+indicates that the symbol is an indirect function. This is a GNU
+extension to the standard set of ELF symbol types. It indicates a
+symbol which if referenced by a relocation does not evaluate to its
+address, but instead must be invoked at runtime. The runtime
+execution will then return the value to be used in the relocation.
+
+@item I
+The symbol is an indirect reference to another symbol.
+
+@item N
+The symbol is a debugging symbol.
+
+@item p
+The symbols is in a stack unwind section.
+
+@item R
+@itemx r
+The symbol is in a read only data section.
+
+@item S
+@itemx s
+The symbol is in an uninitialized data section for small objects.
+
+@item T
+@itemx t
+The symbol is in the text (code) section.
+
+@item U
+The symbol is undefined.
+
+@item u
+The symbol is a unique global symbol. This is a GNU extension to the
+standard set of ELF symbol bindings. For such a symbol the dynamic linker
+will make sure that in the entire process there is just one symbol with
+this name and type in use.
+
+@item V
+@itemx 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. On some
+systems, uppercase indicates that a default value has been specified.
+
+@item W
+@itemx 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.
+
+@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.
+
+@item ?
+The symbol type is unknown, or object file format specific.
+@end table
+
+@item
+The symbol name.
+@end itemize
+
+@c man end
+
+@c man begin OPTIONS nm
+The long and short forms of options, shown here as alternatives, are
+equivalent.
+
+@table @env
+@item -A
+@itemx -o
+@itemx --print-file-name
+@cindex input file name
+@cindex file name
+@cindex source 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.
+
+@item -a
+@itemx --debug-syms
+@cindex debugging symbols
+Display all symbols, even debugger-only symbols; normally these are not
+listed.
+
+@item -B
+@cindex @command{nm} format
+@cindex @command{nm} compatibility
+The same as @option{--format=bsd} (for compatibility with the MIPS @command{nm}).
+
+@item -C
+@itemx --demangle[=@var{style}]
+@cindex demangling in nm
+Decode (@dfn{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. @xref{c++filt},
+for more information on demangling.
+
+@item --no-demangle
+Do not demangle low-level symbol names. This is the default.
+
+@item -D
+@itemx --dynamic
+@cindex dynamic symbols
+Display the dynamic symbols rather than the normal symbols. This is
+only meaningful for dynamic objects, such as certain types of shared
+libraries.
+
+@item -f @var{format}
+@itemx --format=@var{format}
+@cindex @command{nm} format
+@cindex @command{nm} compatibility
+Use the output format @var{format}, which can be @code{bsd},
+@code{sysv}, or @code{posix}. The default is @code{bsd}.
+Only the first character of @var{format} is significant; it can be
+either upper or lower case.
+
+@item -g
+@itemx --extern-only
+@cindex external symbols
+Display only external symbols.
+
+@item -h
+@itemx --help
+Show a summary of the options to @command{nm} and exit.
+
+@item -l
+@itemx --line-numbers
+@cindex symbol 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.
+
+@item -n
+@itemx -v
+@itemx --numeric-sort
+Sort symbols numerically by their addresses, rather than alphabetically
+by their names.
+
+@item -p
+@itemx --no-sort
+@cindex sorting symbols
+Do not bother to sort the symbols in any order; print them in the order
+encountered.
+
+@item -P
+@itemx --portability
+Use the POSIX.2 standard output format instead of the default format.
+Equivalent to @samp{-f posix}.
+
+@item -r
+@itemx --reverse-sort
+Reverse the order of the sort (whether numeric or alphabetic); let the
+last come first.
+
+@item -S
+@itemx --print-size
+Print both value and size of defined symbols for the @code{bsd} output style.
+This option has no effect for object formats that do not record symbol
+sizes, unless @samp{--size-sort} is also used in which case a
+calculated size is displayed.
+
+@item -s
+@itemx --print-armap
+@cindex symbol index, listing
+When listing symbols from archive members, include the index: a mapping
+(stored in the archive by @command{ar} or @command{ranlib}) of which modules
+contain definitions for which names.
+
+@item -t @var{radix}
+@itemx --radix=@var{radix}
+Use @var{radix} as the radix for printing the symbol values. It must be
+@samp{d} for decimal, @samp{o} for octal, or @samp{x} for hexadecimal.
+
+@item -u
+@itemx --undefined-only
+@cindex external symbols
+@cindex undefined symbols
+Display only undefined symbols (those external to each object file).
+
+@item -V
+@itemx --version
+Show the version number of @command{nm} and exit.
+
+@item -X
+This option is ignored for compatibility with the AIX version of
+@command{nm}. It takes one parameter which must be the string
+@option{32_64}. The default mode of AIX @command{nm} corresponds
+to @option{-X 32}, which is not supported by @sc{gnu} @command{nm}.
+
+@item --defined-only
+@cindex external symbols
+@cindex undefined symbols
+Display only defined symbols for each object file.
+
+@item --plugin @var{name}
+@cindex load plugin
+Load the plugin called @var{name} to add support for extra target
+types. This option is only available if the toolchain has been built
+with plugin support enabled.
+
+@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 @code{bsd} output format is used the size of the symbol
+is printed, rather than the value, and @samp{-S} must be used in order
+both size and value to be printed.
+
+@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 in the normal symbol lists.
+For example for ARM targets this option would skip the mapping symbols
+used to mark transitions between ARM code, THUMB code and data.
+
+@item --synthetic
+Include synthetic symbols in the output. These are special symbols
+created by the linker for various purposes. They are not shown by
+default since they are not part of the binary's original source code.
+
+@item --target=@var{bfdname}
+@cindex object code format
+Specify an object code format other than your system's default format.
+@xref{Target Selection}, for more information.
+
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO nm
+ar(1), objdump(1), ranlib(1), and the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node objcopy
+@chapter objcopy
+
+@c man title objcopy copy and translate object files
+
+@smallexample
+@c man begin SYNOPSIS objcopy
+objcopy [@option{-F} @var{bfdname}|@option{--target=}@var{bfdname}]
+ [@option{-I} @var{bfdname}|@option{--input-target=}@var{bfdname}]
+ [@option{-O} @var{bfdname}|@option{--output-target=}@var{bfdname}]
+ [@option{-B} @var{bfdarch}|@option{--binary-architecture=}@var{bfdarch}]
+ [@option{-S}|@option{--strip-all}]
+ [@option{-g}|@option{--strip-debug}]
+ [@option{-K} @var{symbolname}|@option{--keep-symbol=}@var{symbolname}]
+ [@option{-N} @var{symbolname}|@option{--strip-symbol=}@var{symbolname}]
+ [@option{--strip-unneeded-symbol=}@var{symbolname}]
+ [@option{-G} @var{symbolname}|@option{--keep-global-symbol=}@var{symbolname}]
+ [@option{--localize-hidden}]
+ [@option{-L} @var{symbolname}|@option{--localize-symbol=}@var{symbolname}]
+ [@option{--globalize-symbol=}@var{symbolname}]
+ [@option{-W} @var{symbolname}|@option{--weaken-symbol=}@var{symbolname}]
+ [@option{-w}|@option{--wildcard}]
+ [@option{-x}|@option{--discard-all}]
+ [@option{-X}|@option{--discard-locals}]
+ [@option{-b} @var{byte}|@option{--byte=}@var{byte}]
+ [@option{-i} [@var{breadth}]|@option{--interleave}[=@var{breadth}]]
+ [@option{--interleave-width=}@var{width}]
+ [@option{-j} @var{sectionpattern}|@option{--only-section=}@var{sectionpattern}]
+ [@option{-R} @var{sectionpattern}|@option{--remove-section=}@var{sectionpattern}]
+ [@option{-p}|@option{--preserve-dates}]
+ [@option{-D}|@option{--enable-deterministic-archives}]
+ [@option{-U}|@option{--disable-deterministic-archives}]
+ [@option{--debugging}]
+ [@option{--gap-fill=}@var{val}]
+ [@option{--pad-to=}@var{address}]
+ [@option{--set-start=}@var{val}]
+ [@option{--adjust-start=}@var{incr}]
+ [@option{--change-addresses=}@var{incr}]
+ [@option{--change-section-address} @var{sectionpattern}@{=,+,-@}@var{val}]
+ [@option{--change-section-lma} @var{sectionpattern}@{=,+,-@}@var{val}]
+ [@option{--change-section-vma} @var{sectionpattern}@{=,+,-@}@var{val}]
+ [@option{--change-warnings}] [@option{--no-change-warnings}]
+ [@option{--set-section-flags} @var{sectionpattern}=@var{flags}]
+ [@option{--add-section} @var{sectionname}=@var{filename}]
+ [@option{--rename-section} @var{oldname}=@var{newname}[,@var{flags}]]
+ [@option{--long-section-names} @{enable,disable,keep@}]
+ [@option{--change-leading-char}] [@option{--remove-leading-char}]
+ [@option{--reverse-bytes=}@var{num}]
+ [@option{--srec-len=}@var{ival}] [@option{--srec-forceS3}]
+ [@option{--redefine-sym} @var{old}=@var{new}]
+ [@option{--redefine-syms=}@var{filename}]
+ [@option{--weaken}]
+ [@option{--keep-symbols=}@var{filename}]
+ [@option{--strip-symbols=}@var{filename}]
+ [@option{--strip-unneeded-symbols=}@var{filename}]
+ [@option{--keep-global-symbols=}@var{filename}]
+ [@option{--localize-symbols=}@var{filename}]
+ [@option{--globalize-symbols=}@var{filename}]
+ [@option{--weaken-symbols=}@var{filename}]
+ [@option{--alt-machine-code=}@var{index}]
+ [@option{--prefix-symbols=}@var{string}]
+ [@option{--prefix-sections=}@var{string}]
+ [@option{--prefix-alloc-sections=}@var{string}]
+ [@option{--add-gnu-debuglink=}@var{path-to-file}]
+ [@option{--keep-file-symbols}]
+ [@option{--only-keep-debug}]
+ [@option{--strip-dwo}]
+ [@option{--extract-dwo}]
+ [@option{--extract-symbol}]
+ [@option{--writable-text}]
+ [@option{--readonly-text}]
+ [@option{--pure}]
+ [@option{--impure}]
+ [@option{--file-alignment=}@var{num}]
+ [@option{--heap=}@var{size}]
+ [@option{--image-base=}@var{address}]
+ [@option{--section-alignment=}@var{num}]
+ [@option{--stack=}@var{size}]
+ [@option{--subsystem=}@var{which}:@var{major}.@var{minor}]
+ [@option{--compress-debug-sections}]
+ [@option{--decompress-debug-sections}]
+ [@option{--dwarf-depth=@var{n}}]
+ [@option{--dwarf-start=@var{n}}]
+ [@option{-v}|@option{--verbose}]
+ [@option{-V}|@option{--version}]
+ [@option{--help}] [@option{--info}]
+ @var{infile} [@var{outfile}]
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION objcopy
+The @sc{gnu} @command{objcopy} utility copies the contents of an object
+file to another. @command{objcopy} uses the @sc{gnu} @sc{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 @command{objcopy} is controlled by command-line options.
+Note that @command{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.
+
+@command{objcopy} creates temporary files to do its translations and
+deletes them afterward. @command{objcopy} uses @sc{bfd} to do all its
+translation work; it has access to all the formats described in @sc{bfd}
+and thus is able to recognize most formats without being told
+explicitly. @xref{BFD,,BFD,ld.info,Using LD}.
+
+@command{objcopy} can be used to generate S-records by using an output
+target of @samp{srec} (e.g., use @samp{-O srec}).
+
+@command{objcopy} can be used to generate a raw binary file by using an
+output target of @samp{binary} (e.g., use @option{-O binary}). When
+@command{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 @option{-S} to remove sections containing debugging information. In
+some cases @option{-R} will be useful to remove sections which contain
+information that is not needed by the binary file.
+
+Note---@command{objcopy} is not able to change the endianness of its input
+files. If the input format has an endianness (some formats do not),
+@command{objcopy} can only copy the inputs into file formats that have the
+same endianness or which have no endianness (e.g., @samp{srec}).
+(However, see the @option{--reverse-bytes} option.)
+
+@c man end
+
+@c man begin OPTIONS objcopy
+
+@table @env
+@item @var{infile}
+@itemx @var{outfile}
+The input and output files, respectively.
+If you do not specify @var{outfile}, @command{objcopy} creates a
+temporary file and destructively renames the result with
+the name of @var{infile}.
+
+@item -I @var{bfdname}
+@itemx --input-target=@var{bfdname}
+Consider the source file's object format to be @var{bfdname}, rather than
+attempting to deduce it. @xref{Target Selection}, for more information.
+
+@item -O @var{bfdname}
+@itemx --output-target=@var{bfdname}
+Write the output file using the object format @var{bfdname}.
+@xref{Target Selection}, for more information.
+
+@item -F @var{bfdname}
+@itemx --target=@var{bfdname}
+Use @var{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. @xref{Target Selection}, for more information.
+
+@item -B @var{bfdarch}
+@itemx --binary-architecture=@var{bfdarch}
+Useful when transforming a architecture-less input file into an object file.
+In this case the output architecture can be set to @var{bfdarch}. This
+option will be ignored if the input file has a known @var{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_@var{objfile}_start, _binary_@var{objfile}_end and
+_binary_@var{objfile}_size. e.g. you can transform a picture file into
+an object file and then access it in your code using these symbols.
+
+@item -j @var{sectionpattern}
+@itemx --only-section=@var{sectionpattern}
+Copy only the indicated sections 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. Wildcard
+characters are accepted in @var{sectionpattern}.
+
+@item -R @var{sectionpattern}
+@itemx --remove-section=@var{sectionpattern}
+Remove any section matching @var{sectionpattern} from the output file.
+This option may be given more than once. Note that using this option
+inappropriately may make the output file unusable. Wildcard
+characters are accepted in @var{sectionpattern}. Using both the
+@option{-j} and @option{-R} options together results in undefined
+behaviour.
+
+@item -S
+@itemx --strip-all
+Do not copy relocation and symbol information from the source file.
+
+@item -g
+@itemx --strip-debug
+Do not copy debugging symbols or sections from the source file.
+
+@item --strip-unneeded
+Strip all symbols that are not needed for relocation processing.
+
+@item -K @var{symbolname}
+@itemx --keep-symbol=@var{symbolname}
+When stripping symbols, keep symbol @var{symbolname} even if it would
+normally be stripped. This option may be given more than once.
+
+@item -N @var{symbolname}
+@itemx --strip-symbol=@var{symbolname}
+Do not copy symbol @var{symbolname} from the source file. This option
+may be given more than once.
+
+@item --strip-unneeded-symbol=@var{symbolname}
+Do not copy symbol @var{symbolname} from the source file unless it is needed
+by a relocation. This option may be given more than once.
+
+@item -G @var{symbolname}
+@itemx --keep-global-symbol=@var{symbolname}
+Keep only symbol @var{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.
+
+@item --localize-hidden
+In an ELF object, mark all symbols that have hidden or internal visibility
+as local. This option applies on top of symbol-specific localization options
+such as @option{-L}.
+
+@item -L @var{symbolname}
+@itemx --localize-symbol=@var{symbolname}
+Make symbol @var{symbolname} local to the file, so that it is not
+visible externally. This option may be given more than once.
+
+@item -W @var{symbolname}
+@itemx --weaken-symbol=@var{symbolname}
+Make symbol @var{symbolname} weak. This option may be given more than once.
+
+@item --globalize-symbol=@var{symbolname}
+Give symbol @var{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.
+
+@item -w
+@itemx --wildcard
+Permit regular expressions in @var{symbolname}s 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:
+
+@smallexample
+ -w -W !foo -W fo*
+@end smallexample
+
+would cause objcopy to weaken all symbols that start with ``fo''
+except for the symbol ``foo''.
+
+@item -x
+@itemx --discard-all
+Do not copy non-global symbols from the source file.
+@c FIXME any reason to prefer "non-global" to "local" here?
+
+@item -X
+@itemx --discard-locals
+Do not copy compiler-generated local symbols.
+(These usually start with @samp{L} or @samp{.}.)
+
+@item -b @var{byte}
+@itemx --byte=@var{byte}
+If interleaving has been enabled via the @option{--interleave} option
+then start the range of bytes to keep at the @var{byte}th byte.
+@var{byte} can be in the range from 0 to @var{breadth}-1, where
+@var{breadth} is the value given by the @option{--interleave} option.
+
+@item -i [@var{breadth}]
+@itemx --interleave[=@var{breadth}]
+Only copy a range out of every @var{breadth} bytes. (Header data is
+not affected). Select which byte in the range begins the copy with
+the @option{--byte} option. Select the width of the range with the
+@option{--interleave-width} option.
+
+This option is useful for creating files to program @sc{rom}. It is
+typically used with an @code{srec} output target. Note that
+@command{objcopy} will complain if you do not specify the
+@option{--byte} option as well.
+
+The default interleave breadth is 4, so with @option{--byte} set to 0,
+@command{objcopy} would copy the first byte out of every four bytes
+from the input to the output.
+
+@item --interleave-width=@var{width}
+When used with the @option{--interleave} option, copy @var{width}
+bytes at a time. The start of the range of bytes to be copied is set
+by the @option{--byte} option, and the extent of the range is set with
+the @option{--interleave} option.
+
+The default value for this option is 1. The value of @var{width} plus
+the @var{byte} value set by the @option{--byte} option must not exceed
+the interleave breadth set by the @option{--interleave} option.
+
+This option can be used to create images for two 16-bit flashes interleaved
+in a 32-bit bus by passing @option{-b 0 -i 4 --interleave-width=2}
+and @option{-b 2 -i 4 --interleave-width=2} to two @command{objcopy}
+commands. If the input was '12345678' then the outputs would be
+'1256' and '3478' respectively.
+
+@item -p
+@itemx --preserve-dates
+Set the access and modification dates of the output file to be the same
+as those of the input file.
+
+@item -D
+@itemx --enable-deterministic-archives
+@cindex deterministic archives
+@kindex --enable-deterministic-archives
+Operate in @emph{deterministic} mode. When copying archive members
+and writing the archive index, use zero for UIDs, GIDs, timestamps,
+and use consistent file modes for all files.
+
+If @file{binutils} was configured with
+@option{--enable-deterministic-archives}, then this mode is on by default.
+It can be disabled with the @samp{-U} option, below.
+
+@item -U
+@itemx --disable-deterministic-archives
+@cindex deterministic archives
+@kindex --enable-deterministic-archives
+Do @emph{not} operate in @emph{deterministic} mode. This is the
+inverse of the @option{-D} option, above: when copying archive members
+and writing the archive index, use their actual UID, GID, timestamp,
+and file mode values.
+
+This is the default unless @file{binutils} was configured with
+@option{--enable-deterministic-archives}.
+
+@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.
+
+@item --gap-fill @var{val}
+Fill gaps between sections with @var{val}. This operation applies to
+the @emph{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 @var{val}.
+
+@item --pad-to @var{address}
+Pad the output file up to the load address @var{address}. This is
+done by increasing the size of the last section. The extra space is
+filled in with the value specified by @option{--gap-fill} (default zero).
+
+@item --set-start @var{val}
+Set the start address of the new file to @var{val}. Not all object file
+formats support setting the start address.
+
+@item --change-start @var{incr}
+@itemx --adjust-start @var{incr}
+@cindex changing start address
+Change the start address by adding @var{incr}. Not all object file
+formats support setting the start address.
+
+@item --change-addresses @var{incr}
+@itemx --adjust-vma @var{incr}
+@cindex changing object addresses
+Change the VMA and LMA addresses of all sections, as well as the start
+address, by adding @var{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.
+
+@item --change-section-address @var{sectionpattern}@{=,+,-@}@var{val}
+@itemx --adjust-section-vma @var{sectionpattern}@{=,+,-@}@var{val}
+@cindex changing section address
+Set or change both the VMA address and the LMA address of any section
+matching @var{sectionpattern}. If @samp{=} is used, the section
+address is set to @var{val}. Otherwise, @var{val} is added to or
+subtracted from the section address. See the comments under
+@option{--change-addresses}, above. If @var{sectionpattern} does not
+match any sections in the input file, a warning will be issued, unless
+@option{--no-change-warnings} is used.
+
+@item --change-section-lma @var{sectionpattern}@{=,+,-@}@var{val}
+@cindex changing section LMA
+Set or change the LMA address of any sections matching
+@var{sectionpattern}. 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 @samp{=}
+is used, the section address is set to @var{val}. Otherwise,
+@var{val} is added to or subtracted from the section address. See the
+comments under @option{--change-addresses}, above. If
+@var{sectionpattern} does not match any sections in the input file, a
+warning will be issued, unless @option{--no-change-warnings} is used.
+
+@item --change-section-vma @var{sectionpattern}@{=,+,-@}@var{val}
+@cindex changing section VMA
+Set or change the VMA address of any section matching
+@var{sectionpattern}. 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 @samp{=} is used, the section address is set to
+@var{val}. Otherwise, @var{val} is added to or subtracted from the
+section address. See the comments under @option{--change-addresses},
+above. If @var{sectionpattern} does not match any sections in the
+input file, a warning will be issued, unless
+@option{--no-change-warnings} is used.
+
+@item --change-warnings
+@itemx --adjust-warnings
+If @option{--change-section-address} or @option{--change-section-lma} or
+@option{--change-section-vma} is used, and the section pattern does not
+match any sections, issue a warning. This is the default.
+
+@item --no-change-warnings
+@itemx --no-adjust-warnings
+Do not issue a warning if @option{--change-section-address} or
+@option{--adjust-section-lma} or @option{--adjust-section-vma} is used, even
+if the section pattern does not match any sections.
+
+@item --set-section-flags @var{sectionpattern}=@var{flags}
+Set the flags for any sections matching @var{sectionpattern}. The
+@var{flags} argument is a comma separated string of flag names. The
+recognized names are @samp{alloc}, @samp{contents}, @samp{load},
+@samp{noload}, @samp{readonly}, @samp{code}, @samp{data}, @samp{rom},
+@samp{share}, and @samp{debug}. You can set the @samp{contents} flag
+for a section which does not have contents, but it is not meaningful
+to clear the @samp{contents} flag of a section which does have
+contents--just remove the section instead. Not all flags are
+meaningful for all object file formats.
+
+@item --add-section @var{sectionname}=@var{filename}
+Add a new section named @var{sectionname} while copying the file. The
+contents of the new section are taken from the file @var{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.
+
+@item --rename-section @var{oldname}=@var{newname}[,@var{flags}]
+Rename a section from @var{oldname} to @var{newname}, optionally
+changing the section's flags to @var{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:
+
+@smallexample
+ objcopy -I binary -O <output_format> -B <architecture> \
+ --rename-section .data=.rodata,alloc,load,readonly,data,contents \
+ <input_binary_file> <output_object_file>
+@end smallexample
+
+@item --long-section-names @{enable,disable,keep@}
+Controls the handling of long section names when processing @code{COFF}
+and @code{PE-COFF} object formats. The default behaviour, @samp{keep},
+is to preserve long section names if any are present in the input file.
+The @samp{enable} and @samp{disable} options forcibly enable or disable
+the use of long section names in the output object; when @samp{disable}
+is in effect, any long section names in the input object will be truncated.
+The @samp{enable} option will only emit long section names if any are
+present in the inputs; this is mostly the same as @samp{keep}, but it
+is left undefined whether the @samp{enable} option might force the
+creation of an empty string table in the output file.
+
+@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 @command{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.
+
+@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
+@option{--change-leading-char} because it always changes the symbol name
+when appropriate, regardless of the object file format of the output
+file.
+
+@item --reverse-bytes=@var{num}
+Reverse the bytes in a section with output contents. A section length must
+be evenly divisible by the value given in order for the swap to be able to
+take place. Reversing takes place before the interleaving is performed.
+
+This option is used typically in generating ROM images for problematic
+target systems. For example, on some target boards, the 32-bit words
+fetched from 8-bit ROMs are re-assembled in little-endian byte order
+regardless of the CPU byte order. Depending on the programming model, the
+endianness of the ROM may need to be modified.
+
+Consider a simple file with a section containing the following eight
+bytes: @code{12345678}.
+
+Using @samp{--reverse-bytes=2} for the above example, the bytes in the
+output file would be ordered @code{21436587}.
+
+Using @samp{--reverse-bytes=4} for the above example, the bytes in the
+output file would be ordered @code{43218765}.
+
+By using @samp{--reverse-bytes=2} for the above example, followed by
+@samp{--reverse-bytes=4} on the output file, the bytes in the second
+output file would be ordered @code{34127856}.
+
+@item --srec-len=@var{ival}
+Meaningful only for srec output. Set the maximum length of the Srecords
+being produced to @var{ival}. This length covers both address, data and
+crc fields.
+
+@item --srec-forceS3
+Meaningful only for srec output. Avoid generation of S1/S2 records,
+creating S3-only record format.
+
+@item --redefine-sym @var{old}=@var{new}
+Change the name of a symbol @var{old}, to @var{new}. This can be useful
+when one is trying link two things together for which you have no
+source, and there are name collisions.
+
+@item --redefine-syms=@var{filename}
+Apply @option{--redefine-sym} to each symbol pair "@var{old} @var{new}"
+listed in the file @var{filename}. @var{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.
+
+@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 @option{-R} option to the linker. This option is only effective when
+using an object file format which supports weak symbols.
+
+@item --keep-symbols=@var{filename}
+Apply @option{--keep-symbol} option to each symbol listed in the file
+@var{filename}. @var{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.
+
+@item --strip-symbols=@var{filename}
+Apply @option{--strip-symbol} option to each symbol listed in the file
+@var{filename}. @var{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.
+
+@item --strip-unneeded-symbols=@var{filename}
+Apply @option{--strip-unneeded-symbol} option to each symbol listed in
+the file @var{filename}. @var{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.
+
+@item --keep-global-symbols=@var{filename}
+Apply @option{--keep-global-symbol} option to each symbol listed in the
+file @var{filename}. @var{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.
+
+@item --localize-symbols=@var{filename}
+Apply @option{--localize-symbol} option to each symbol listed in the file
+@var{filename}. @var{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.
+
+@item --globalize-symbols=@var{filename}
+Apply @option{--globalize-symbol} option to each symbol listed in the file
+@var{filename}. @var{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.
+
+@item --weaken-symbols=@var{filename}
+Apply @option{--weaken-symbol} option to each symbol listed in the file
+@var{filename}. @var{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.
+
+@item --alt-machine-code=@var{index}
+If the output architecture has alternate machine codes, use the
+@var{index}th 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 @var{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.
+
+@item --writable-text
+Mark the output text as writable. This option isn't meaningful for all
+object file formats.
+
+@item --readonly-text
+Make the output text write protected. This option isn't meaningful for all
+object file formats.
+
+@item --pure
+Mark the output file as demand paged. This option isn't meaningful for all
+object file formats.
+
+@item --impure
+Mark the output file as impure. This option isn't meaningful for all
+object file formats.
+
+@item --prefix-symbols=@var{string}
+Prefix all symbols in the output file with @var{string}.
+
+@item --prefix-sections=@var{string}
+Prefix all section names in the output file with @var{string}.
+
+@item --prefix-alloc-sections=@var{string}
+Prefix all the names of all allocated sections in the output file with
+@var{string}.
+
+@item --add-gnu-debuglink=@var{path-to-file}
+Creates a .gnu_debuglink section which contains a reference to @var{path-to-file}
+and adds it to the output file.
+
+@item --keep-file-symbols
+When stripping a file, perhaps with @option{--strip-debug} or
+@option{--strip-unneeded}, retain any symbols specifying source file names,
+which would otherwise get stripped.
+
+@item --only-keep-debug
+Strip a file, removing contents of any sections that would not be
+stripped by @option{--strip-debug} and leaving the debugging sections
+intact. In ELF files, this preserves all note sections in the output.
+
+The intention is that this option will be used in conjunction with
+@option{--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:
+
+@enumerate
+@item Link the executable as normal. Assuming that is is called
+@code{foo} then...
+@item Run @code{objcopy --only-keep-debug foo foo.dbg} to
+create a file containing the debugging info.
+@item Run @code{objcopy --strip-debug foo} to create a
+stripped executable.
+@item Run @code{objcopy --add-gnu-debuglink=foo.dbg foo}
+to add a link to the debugging info into the stripped executable.
+@end enumerate
+
+Note---the choice of @code{.dbg} as an extension for the debug info
+file is arbitrary. Also the @code{--only-keep-debug} step is
+optional. You could instead do this:
+
+@enumerate
+@item Link the executable as normal.
+@item Copy @code{foo} to @code{foo.full}
+@item Run @code{objcopy --strip-debug foo}
+@item Run @code{objcopy --add-gnu-debuglink=foo.full foo}
+@end enumerate
+
+i.e., the file pointed to by the @option{--add-gnu-debuglink} can be the
+full executable. It does not have to be a file created by the
+@option{--only-keep-debug} switch.
+
+Note---this switch is only intended for use on fully linked files. It
+does not make sense to use it on object files where the debugging
+information may be incomplete. Besides the gnu_debuglink feature
+currently only supports the presence of one filename containing
+debugging information, not multiple filenames on a one-per-object-file
+basis.
+
+@item --strip-dwo
+Remove the contents of all DWARF .dwo sections, leaving the
+remaining debugging sections and all symbols intact.
+This option is intended for use by the compiler as part of
+the @option{-gsplit-dwarf} option, which splits debug information
+between the .o file and a separate .dwo file. The compiler
+generates all debug information in the same file, then uses
+the @option{--extract-dwo} option to copy the .dwo sections to
+the .dwo file, then the @option{--strip-dwo} option to remove
+those sections from the original .o file.
+
+@item --extract-dwo
+Extract the contents of all DWARF .dwo sections. See the
+@option{--strip-dwo} option for more information.
+
+@item --file-alignment @var{num}
+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 PE targets.]
+
+@item --heap @var{reserve}
+@itemx --heap @var{reserve},@var{commit}
+Specify the number of bytes of memory to reserve (and optionally commit)
+to be used as heap for this program.
+[This option is specific to PE targets.]
+
+@item --image-base @var{value}
+Use @var{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 PE targets.]
+
+@item --section-alignment @var{num}
+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 PE targets.]
+
+@item --stack @var{reserve}
+@itemx --stack @var{reserve},@var{commit}
+Specify the number of bytes of memory to reserve (and optionally commit)
+to be used as stack for this program.
+[This option is specific to PE targets.]
+
+@item --subsystem @var{which}
+@itemx --subsystem @var{which}:@var{major}
+@itemx --subsystem @var{which}:@var{major}.@var{minor}
+Specifies the subsystem under which your program will execute. The
+legal values for @var{which} are @code{native}, @code{windows},
+@code{console}, @code{posix}, @code{efi-app}, @code{efi-bsd},
+@code{efi-rtd}, @code{sal-rtd}, and @code{xbox}. You may optionally set
+the subsystem version also. Numeric values are also accepted for
+@var{which}.
+[This option is specific to PE targets.]
+
+@item --extract-symbol
+Keep the file's section flags and symbols but remove all section data.
+Specifically, the option:
+
+@itemize
+@item removes the contents of all sections;
+@item sets the size of every section to zero; and
+@item sets the file's start address to zero.
+@end itemize
+
+This option is used to build a @file{.sym} file for a VxWorks kernel.
+It can also be a useful way of reducing the size of a @option{--just-symbols}
+linker input file.
+
+@item --compress-debug-sections
+Compress DWARF debug sections using zlib.
+
+@item --decompress-debug-sections
+Decompress DWARF debug sections using zlib.
+
+@item -V
+@itemx --version
+Show the version number of @command{objcopy}.
+
+@item -v
+@itemx --verbose
+Verbose output: list all object files modified. In the case of
+archives, @samp{objcopy -V} lists all members of the archive.
+
+@item --help
+Show a summary of the options to @command{objcopy}.
+
+@item --info
+Display a list showing all architectures and object formats available.
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO objcopy
+ld(1), objdump(1), and the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node objdump
+@chapter objdump
+
+@cindex object file information
+@kindex objdump
+
+@c man title objdump display information from object files.
+
+@smallexample
+@c man begin SYNOPSIS objdump
+objdump [@option{-a}|@option{--archive-headers}]
+ [@option{-b} @var{bfdname}|@option{--target=@var{bfdname}}]
+ [@option{-C}|@option{--demangle}[=@var{style}] ]
+ [@option{-d}|@option{--disassemble}]
+ [@option{-D}|@option{--disassemble-all}]
+ [@option{-z}|@option{--disassemble-zeroes}]
+ [@option{-EB}|@option{-EL}|@option{--endian=}@{big | little @}]
+ [@option{-f}|@option{--file-headers}]
+ [@option{-F}|@option{--file-offsets}]
+ [@option{--file-start-context}]
+ [@option{-g}|@option{--debugging}]
+ [@option{-e}|@option{--debugging-tags}]
+ [@option{-h}|@option{--section-headers}|@option{--headers}]
+ [@option{-i}|@option{--info}]
+ [@option{-j} @var{section}|@option{--section=}@var{section}]
+ [@option{-l}|@option{--line-numbers}]
+ [@option{-S}|@option{--source}]
+ [@option{-m} @var{machine}|@option{--architecture=}@var{machine}]
+ [@option{-M} @var{options}|@option{--disassembler-options=}@var{options}]
+ [@option{-p}|@option{--private-headers}]
+ [@option{-P} @var{options}|@option{--private=}@var{options}]
+ [@option{-r}|@option{--reloc}]
+ [@option{-R}|@option{--dynamic-reloc}]
+ [@option{-s}|@option{--full-contents}]
+ [@option{-W[lLiaprmfFsoRt]}|
+ @option{--dwarf}[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]]
+ [@option{-G}|@option{--stabs}]
+ [@option{-t}|@option{--syms}]
+ [@option{-T}|@option{--dynamic-syms}]
+ [@option{-x}|@option{--all-headers}]
+ [@option{-w}|@option{--wide}]
+ [@option{--start-address=}@var{address}]
+ [@option{--stop-address=}@var{address}]
+ [@option{--prefix-addresses}]
+ [@option{--[no-]show-raw-insn}]
+ [@option{--adjust-vma=}@var{offset}]
+ [@option{--special-syms}]
+ [@option{--prefix=}@var{prefix}]
+ [@option{--prefix-strip=}@var{level}]
+ [@option{--insn-width=}@var{width}]
+ [@option{-V}|@option{--version}]
+ [@option{-H}|@option{--help}]
+ @var{objfile}@dots{}
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION objdump
+
+@command{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.
+
+@var{objfile}@dots{} are the object files to be examined. When you
+specify archives, @command{objdump} shows information on each of the member
+object files.
+
+@c man end
+
+@c man begin OPTIONS objdump
+
+The long and short forms of options, shown here as alternatives, are
+equivalent. At least one option from the list
+@option{-a,-d,-D,-e,-f,-g,-G,-h,-H,-p,-P,-r,-R,-s,-S,-t,-T,-V,-x} must be given.
+
+@table @env
+@item -a
+@itemx --archive-header
+@cindex archive headers
+If any of the @var{objfile} files are archives, display the archive
+header information (in a format similar to @samp{ls -l}). Besides the
+information you could list with @samp{ar tv}, @samp{objdump -a} shows
+the object file format of each archive member.
+
+@item --adjust-vma=@var{offset}
+@cindex section addresses in objdump
+@cindex VMA in objdump
+When dumping information, first add @var{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.
+
+@item -b @var{bfdname}
+@itemx --target=@var{bfdname}
+@cindex object code format
+Specify that the object-code format for the object files is
+@var{bfdname}. This option may not be necessary; @var{objdump} can
+automatically recognize many formats.
+
+For example,
+@example
+objdump -b oasys -m vax -h fu.o
+@end example
+@noindent
+displays summary information from the section headers (@option{-h}) of
+@file{fu.o}, which is explicitly identified (@option{-m}) as a VAX object
+file in the format produced by Oasys compilers. You can list the
+formats available with the @option{-i} option.
+@xref{Target Selection}, for more information.
+
+@item -C
+@itemx --demangle[=@var{style}]
+@cindex demangling in objdump
+Decode (@dfn{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. @xref{c++filt},
+for more information on demangling.
+
+@item -g
+@itemx --debugging
+Display debugging information. This attempts to parse STABS and IEEE
+debugging format information stored in the file and print it out using
+a C like syntax. If neither of these formats are found this option
+falls back on the @option{-W} option to print any DWARF information in
+the file.
+
+@item -e
+@itemx --debugging-tags
+Like @option{-g}, but the information is generated in a format compatible
+with ctags tool.
+
+@item -d
+@itemx --disassemble
+@cindex disassembling object code
+@cindex machine instructions
+Display the assembler mnemonics for the machine instructions from
+@var{objfile}. This option only disassembles those sections which are
+expected to contain instructions.
+
+@item -D
+@itemx --disassemble-all
+Like @option{-d}, but disassemble the contents of all sections, not just
+those expected to contain instructions.
+
+If the target is an ARM architecture this switch also has the effect
+of forcing the disassembler to decode pieces of data found in code
+sections as if they were instructions.
+
+@item --prefix-addresses
+When disassembling, print the complete address on each line. This is
+the older disassembly format.
+
+@item -EB
+@itemx -EL
+@itemx --endian=@{big|little@}
+@cindex endianness
+@cindex disassembly endianness
+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.
+
+@item -f
+@itemx --file-headers
+@cindex object file header
+Display summary information from the overall header of
+each of the @var{objfile} files.
+
+@item -F
+@itemx --file-offsets
+@cindex object file offsets
+When disassembling sections, whenever a symbol is displayed, also
+display the file offset of the region of data that is about to be
+dumped. If zeroes are being skipped, then when disassembly resumes,
+tell the user how many zeroes were skipped and the file offset of the
+location from where the disassembly resumes. When dumping sections,
+display the file offset of the location from where the dump starts.
+
+@item --file-start-context
+@cindex source code context
+Specify that when displaying interlisted source code/disassembly
+(assumes @option{-S}) from a file that has not yet been displayed, extend the
+context to the start of the file.
+
+@item -h
+@itemx --section-headers
+@itemx --headers
+@cindex section 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 @option{-Ttext}, @option{-Tdata}, or @option{-Tbss} options to
+@command{ld}. However, some object file formats, such as a.out, do not
+store the starting address of the file segments. In those situations,
+although @command{ld} relocates the sections correctly, using @samp{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.
+
+@item -H
+@itemx --help
+Print a summary of the options to @command{objdump} and exit.
+
+@item -i
+@itemx --info
+@cindex architectures available
+@cindex object formats available
+Display a list showing all architectures and object formats available
+for specification with @option{-b} or @option{-m}.
+
+@item -j @var{name}
+@itemx --section=@var{name}
+@cindex section information
+Display information only for section @var{name}.
+
+@item -l
+@itemx --line-numbers
+@cindex source filenames for object files
+Label the display (using debugging information) with the filename and
+source line numbers corresponding to the object code or relocs shown.
+Only useful with @option{-d}, @option{-D}, or @option{-r}.
+
+@item -m @var{machine}
+@itemx --architecture=@var{machine}
+@cindex architecture
+@cindex disassembly architecture
+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 @option{-i} option.
+
+If the target is an ARM architecture then this switch has an
+additional effect. It restricts the disassembly to only those
+instructions supported by the architecture specified by @var{machine}.
+If it is necessary to use this switch because the input file does not
+contain any architecture information, but it is also desired to
+disassemble all the instructions use @option{-marm}.
+
+@item -M @var{options}
+@itemx --disassembler-options=@var{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 @option{-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
+@option{-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
+@option{-M reg-names-apcs} will select the name set used by the ARM
+Procedure Call Standard, whilst specifying @option{-M reg-names-raw} will
+just use @samp{r} followed by the register number.
+
+There are also two variants on the APCS register naming scheme enabled
+by @option{-M reg-names-atpcs} and @option{-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 @option{--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 @option{-m}
+switch, but allow finer grained control. Multiple selections from the
+following may be specified as a comma separated string.
+@option{x86-64}, @option{i386} and @option{i8086} select disassembly for
+the given architecture. @option{intel} and @option{att} select between
+intel syntax mode and AT&T syntax mode.
+@option{intel-mnemonic} and @option{att-mnemonic} select between
+intel mnemonic mode and AT&T mnemonic mode. @option{intel-mnemonic}
+implies @option{intel} and @option{att-mnemonic} implies @option{att}.
+@option{addr64}, @option{addr32},
+@option{addr16}, @option{data32} and @option{data16} specify the default
+address size and operand size. These four options will be overridden if
+@option{x86-64}, @option{i386} or @option{i8086} appear later in the
+option string. Lastly, @option{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 PowerPC, @option{booke} controls the disassembly of BookE
+instructions. @option{32} and @option{64} select PowerPC and
+PowerPC64 disassembly, respectively. @option{e300} selects
+disassembly for the e300 family. @option{440} selects disassembly for
+the PowerPC 440. @option{ppcps} selects disassembly for the paired
+single instructions of the PPC750CL.
+
+For MIPS, this option controls the printing of instruction mnemonic
+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:
+
+@table @code
+@item no-aliases
+Print the 'raw' instruction mnemonic instead of some pseudo
+instruction mnemonic. I.e., print 'daddu' or 'or' instead of 'move',
+'sll' instead of 'nop', etc.
+
+@item virt
+Disassemble the virtualization ASE instructions.
+
+@item gpr-names=@var{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.
+
+@item fpr-names=@var{ABI}
+Print FPR (floating-point register) names as
+appropriate for the specified ABI. By default, FPR numbers are printed
+rather than names.
+
+@item cp0-names=@var{ARCH}
+Print CP0 (system control coprocessor; coprocessor 0) register names
+as appropriate for the CPU or architecture specified by
+@var{ARCH}. By default, CP0 register names are selected according to
+the architecture and CPU of the binary being disassembled.
+
+@item hwr-names=@var{ARCH}
+Print HWR (hardware register, used by the @code{rdhwr} instruction) names
+as appropriate for the CPU or architecture specified by
+@var{ARCH}. By default, HWR names are selected according to
+the architecture and CPU of the binary being disassembled.
+
+@item reg-names=@var{ABI}
+Print GPR and FPR names as appropriate for the selected ABI.
+
+@item reg-names=@var{ARCH}
+Print CPU-specific register names (CP0 register and HWR names)
+as appropriate for the selected CPU or architecture.
+@end table
+
+For any of the options listed above, @var{ABI} or
+@var{ARCH} may be specified as @samp{numeric} to have numbers printed
+rather than names, for the selected types of registers.
+You can list the available values of @var{ABI} and @var{ARCH} using
+the @option{--help} option.
+
+For VAX, you can specify function entry addresses with @option{-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 rest
+of the function being wrongly disassembled.
+
+@item -p
+@itemx --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.
+
+@item -P @var{options}
+@itemx --private=@var{options}
+Print information that is specific to the object file format. The
+argument @var{options} is a comma separated list that depends on the
+format (the lists of options is displayed with the help).
+
+For XCOFF, the available options are: @option{header}, @option{aout},
+@option{sections}, @option{syms}, @option{relocs}, @option{lineno},
+@option{loader}, @option{except}, @option{typchk}, @option{traceback},
+@option{toc} and @option{ldinfo}.
+
+@item -r
+@itemx --reloc
+@cindex relocation entries, in object file
+Print the relocation entries of the file. If used with @option{-d} or
+@option{-D}, the relocations are printed interspersed with the
+disassembly.
+
+@item -R
+@itemx --dynamic-reloc
+@cindex dynamic relocation entries, in object file
+Print the dynamic relocation entries of the file. This is only
+meaningful for dynamic objects, such as certain types of shared
+libraries. As for @option{-r}, if used with @option{-d} or
+@option{-D}, the relocations are printed interspersed with the
+disassembly.
+
+@item -s
+@itemx --full-contents
+@cindex sections, full contents
+@cindex object file sections
+Display the full contents of any sections requested. By default all
+non-empty sections are displayed.
+
+@item -S
+@itemx --source
+@cindex source disassembly
+@cindex disassembly, with source
+Display source code intermixed with disassembly, if possible. Implies
+@option{-d}.
+
+@item --prefix=@var{prefix}
+@cindex Add prefix to absolute paths
+Specify @var{prefix} to add to the absolute paths when used with
+@option{-S}.
+
+@item --prefix-strip=@var{level}
+@cindex Strip absolute paths
+Indicate how many initial directory names to strip off the hardwired
+absolute paths. It has no effect without @option{--prefix=}@var{prefix}.
+
+@item --show-raw-insn
+When disassembling instructions, print the instruction in hex as well as
+in symbolic form. This is the default except when
+@option{--prefix-addresses} is used.
+
+@item --no-show-raw-insn
+When disassembling instructions, do not print the instruction bytes.
+This is the default when @option{--prefix-addresses} is used.
+
+@item --insn-width=@var{width}
+@cindex Instruction width
+Display @var{width} bytes on a single line when disassembling
+instructions.
+
+@item -W[lLiaprmfFsoRt]
+@itemx --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]
+@cindex DWARF
+@cindex debug symbols
+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.
+
+Note that there is no single letter option to display the content of
+trace sections or .gdb_index.
+
+Note: the output from the @option{=info} option can also be affected
+by the options @option{--dwarf-depth}, the @option{--dwarf-start} and
+the @option{--dwarf-check}.
+
+@item --dwarf-depth=@var{n}
+Limit the dump of the @code{.debug_info} section to @var{n} children.
+This is only useful with @option{--dwarf=info}. The default is
+to print all DIEs; the special value 0 for @var{n} will also have this
+effect.
+
+With a non-zero value for @var{n}, DIEs at or deeper than @var{n}
+levels will not be printed. The range for @var{n} is zero-based.
+
+@item --dwarf-start=@var{n}
+Print only DIEs beginning with the DIE numbered @var{n}. This is only
+useful with @option{--dwarf=info}.
+
+If specified, this option will suppress printing of any header
+information and all DIEs before the DIE numbered @var{n}. Only
+siblings and children of the specified DIE will be printed.
+
+This can be used in conjunction with @option{--dwarf-depth}.
+
+@item --dwarf-check
+Enable additional checks for consistency of Dwarf information.
+
+@item -G
+@itemx --stabs
+@cindex stab
+@cindex .stab
+@cindex debug symbols
+@cindex ELF object file format
+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
+@code{.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 @option{--syms}
+output.
+
+@item --start-address=@var{address}
+@cindex start-address
+Start displaying data at the specified address. This affects the output
+of the @option{-d}, @option{-r} and @option{-s} options.
+
+@item --stop-address=@var{address}
+@cindex stop-address
+Stop displaying data at the specified address. This affects the output
+of the @option{-d}, @option{-r} and @option{-s} options.
+
+@item -t
+@itemx --syms
+@cindex symbol table entries, printing
+Print the symbol table entries of the file.
+This is similar to the information provided by the @samp{nm} program,
+although the display format is different. The format of the output
+depends upon the format of the file being dumped, but there are two main
+types. One looks like this:
+
+@smallexample
+[ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss
+[ 6](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fred
+@end smallexample
+
+where the number inside the square brackets is the number of the entry
+in the symbol table, the @var{sec} number is the section number, the
+@var{fl} value are the symbol's flag bits, the @var{ty} number is the
+symbol's type, the @var{scl} number is the symbol's storage class and
+the @var{nx} value is the number of auxilary entries associated with
+the symbol. The last two fields are the symbol's value and its name.
+
+The other common output format, usually seen with ELF based files,
+looks like this:
+
+@smallexample
+00000000 l d .bss 00000000 .bss
+00000000 g .text 00000000 fred
+@end smallexample
+
+Here the first number is the symbol's value (sometimes refered to as
+its address). The next field is actually a set of characters and
+spaces indicating the flag bits that are set on the symbol. These
+characters are described below. Next is the section with which the
+symbol is associated or @emph{*ABS*} if the section is absolute (ie
+not connected with any section), or @emph{*UND*} if the section is
+referenced in the file being dumped, but not defined there.
+
+After the section name comes another field, a number, which for common
+symbols is the alignment and for other symbol is the size. Finally
+the symbol's name is displayed.
+
+The flag characters are divided into 7 groups as follows:
+@table @code
+@item l
+@itemx g
+@itemx u
+@itemx !
+The symbol is a local (l), global (g), unique global (u), neither
+global nor local (a space) or both global and local (!). A
+symbol can be neither local or global for a variety of reasons, e.g.,
+because it is used for debugging, but it is probably an indication of
+a bug if it is ever both local and global. Unique global symbols are
+a GNU extension to the standard set of ELF symbol bindings. For such
+a symbol the dynamic linker will make sure that in the entire process
+there is just one symbol with this name and type in use.
+
+@item w
+The symbol is weak (w) or strong (a space).
+
+@item C
+The symbol denotes a constructor (C) or an ordinary symbol (a space).
+
+@item W
+The symbol is a warning (W) or a normal symbol (a space). A warning
+symbol's name is a message to be displayed if the symbol following the
+warning symbol is ever referenced.
+
+@item I
+@item i
+The symbol is an indirect reference to another symbol (I), a function
+to be evaluated during reloc processing (i) or a normal symbol (a
+space).
+
+@item d
+@itemx D
+The symbol is a debugging symbol (d) or a dynamic symbol (D) or a
+normal symbol (a space).
+
+@item F
+@item f
+@item O
+The symbol is the name of a function (F) or a file (f) or an object
+(O) or just a normal symbol (a space).
+@end table
+
+@item -T
+@itemx --dynamic-syms
+@cindex dynamic symbol table entries, printing
+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 @samp{nm}
+program when given the @option{-D} (@option{--dynamic}) option.
+
+@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.
+
+@item -V
+@itemx --version
+Print the version number of @command{objdump} and exit.
+
+@item -x
+@itemx --all-headers
+@cindex all header information, object file
+@cindex header information, all
+Display all available header information, including the symbol table and
+relocation entries. Using @option{-x} is equivalent to specifying all of
+@option{-a -f -h -p -r -t}.
+
+@item -w
+@itemx --wide
+@cindex wide output, printing
+Format some lines for output devices that have more than 80 columns.
+Also do not truncate symbol names when they are displayed.
+
+@item -z
+@itemx --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.
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO objdump
+nm(1), readelf(1), and the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node ranlib
+@chapter ranlib
+
+@kindex ranlib
+@cindex archive contents
+@cindex symbol index
+
+@c man title ranlib generate index to archive.
+
+@smallexample
+@c man begin SYNOPSIS ranlib
+ranlib [@option{--plugin} @var{name}] [@option{-DhHvVt}] @var{archive}
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION ranlib
+
+@command{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 @samp{nm -s} or @samp{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 @sc{gnu} @command{ranlib} program is another form of @sc{gnu} @command{ar}; running
+@command{ranlib} is completely equivalent to executing @samp{ar -s}.
+@xref{ar}.
+
+@c man end
+
+@c man begin OPTIONS ranlib
+
+@table @env
+@item -h
+@itemx -H
+@itemx --help
+Show usage information for @command{ranlib}.
+
+@item -v
+@itemx -V
+@itemx --version
+Show the version number of @command{ranlib}.
+
+@item -D
+@cindex deterministic archives
+@kindex --enable-deterministic-archives
+Operate in @emph{deterministic} mode. The symbol map archive member's
+header will show zero for the UID, GID, and timestamp. When this
+option is used, multiple runs will produce identical output files.
+
+If @file{binutils} was configured with
+@option{--enable-deterministic-archives}, then this mode is on by
+default. It can be disabled with the @samp{-U} option, described
+below.
+
+@item -t
+Update the timestamp of the symbol map of an archive.
+
+@item -U
+@cindex deterministic archives
+@kindex --enable-deterministic-archives
+Do @emph{not} operate in @emph{deterministic} mode. This is the
+inverse of the @samp{-D} option, above: the archive index will get
+actual UID, GID, timestamp, and file mode values.
+
+If @file{binutils} was configured @emph{without}
+@option{--enable-deterministic-archives}, then this mode is on by
+default.
+
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO ranlib
+ar(1), nm(1), and the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node size
+@chapter size
+
+@kindex size
+@cindex section sizes
+
+@c man title size list section sizes and total size.
+
+@smallexample
+@c man begin SYNOPSIS size
+size [@option{-A}|@option{-B}|@option{--format=}@var{compatibility}]
+ [@option{--help}]
+ [@option{-d}|@option{-o}|@option{-x}|@option{--radix=}@var{number}]
+ [@option{--common}]
+ [@option{-t}|@option{--totals}]
+ [@option{--target=}@var{bfdname}] [@option{-V}|@option{--version}]
+ [@var{objfile}@dots{}]
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION size
+
+The @sc{gnu} @command{size} utility lists the section sizes---and the total
+size---for each of the object or archive files @var{objfile} in its
+argument list. By default, one line of output is generated for each
+object file or each module in an archive.
+
+@var{objfile}@dots{} are the object files to be examined.
+If none are specified, the file @code{a.out} will be used.
+
+@c man end
+
+@c man begin OPTIONS size
+
+The command line options have the following meanings:
+
+@table @env
+@item -A
+@itemx -B
+@itemx --format=@var{compatibility}
+@cindex @command{size} display format
+Using one of these options, you can choose whether the output from @sc{gnu}
+@command{size} resembles output from System V @command{size} (using @option{-A},
+or @option{--format=sysv}), or Berkeley @command{size} (using @option{-B}, or
+@option{--format=berkeley}). The default is the one-line format similar to
+Berkeley's.
+@c Bonus for doc-source readers: you can also say --format=strange (or
+@c anything else that starts with 's') for sysv, and --format=boring (or
+@c anything else that starts with 'b') for Berkeley.
+
+Here is an example of the Berkeley (default) format of output from
+@command{size}:
+@smallexample
+$ size --format=Berkeley ranlib size
+text data bss dec hex filename
+294880 81920 11592 388392 5ed28 ranlib
+294880 81920 11888 388688 5ee50 size
+@end smallexample
+
+@noindent
+This is the same data, but displayed closer to System V conventions:
+
+@smallexample
+$ 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
+@end smallexample
+
+@item --help
+Show a summary of acceptable arguments and options.
+
+@item -d
+@itemx -o
+@itemx -x
+@itemx --radix=@var{number}
+@cindex @command{size} number format
+@cindex radix for section sizes
+Using one of these options, you can control whether the size of each
+section is given in decimal (@option{-d}, or @option{--radix=10}); octal
+(@option{-o}, or @option{--radix=8}); or hexadecimal (@option{-x}, or
+@option{--radix=16}). In @option{--radix=@var{number}}, only the three
+values (8, 10, 16) are supported. The total size is always given in two
+radices; decimal and hexadecimal for @option{-d} or @option{-x} output, or
+octal and hexadecimal if you're using @option{-o}.
+
+@item --common
+Print total size of common symbols in each file. When using Berkeley
+format these are included in the bss size.
+
+@item -t
+@itemx --totals
+Show totals of all objects listed (Berkeley format listing mode only).
+
+@item --target=@var{bfdname}
+@cindex object code format
+Specify that the object-code format for @var{objfile} is
+@var{bfdname}. This option may not be necessary; @command{size} can
+automatically recognize many formats.
+@xref{Target Selection}, for more information.
+
+@item -V
+@itemx --version
+Display the version number of @command{size}.
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO size
+ar(1), objdump(1), readelf(1), and the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node strings
+@chapter strings
+@kindex strings
+@cindex listings strings
+@cindex printing strings
+@cindex strings, printing
+
+@c man title strings print the strings of printable characters in files.
+
+@smallexample
+@c man begin SYNOPSIS strings
+strings [@option{-afovV}] [@option{-}@var{min-len}]
+ [@option{-n} @var{min-len}] [@option{--bytes=}@var{min-len}]
+ [@option{-t} @var{radix}] [@option{--radix=}@var{radix}]
+ [@option{-e} @var{encoding}] [@option{--encoding=}@var{encoding}]
+ [@option{-}] [@option{--all}] [@option{--print-file-name}]
+ [@option{-T} @var{bfdname}] [@option{--target=}@var{bfdname}]
+ [@option{--help}] [@option{--version}] @var{file}@dots{}
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION strings
+
+For each @var{file} given, @sc{gnu} @command{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.
+
+@command{strings} is mainly useful for determining the contents of non-text
+files.
+
+@c man end
+
+@c man begin OPTIONS strings
+
+@table @env
+@item -a
+@itemx --all
+@itemx -
+Do not scan only the initialized and loaded sections of object files;
+scan the whole files.
+
+@item -f
+@itemx --print-file-name
+Print the name of the file before each string.
+
+@item --help
+Print a summary of the program usage on the standard output and exit.
+
+@item -@var{min-len}
+@itemx -n @var{min-len}
+@itemx --bytes=@var{min-len}
+Print sequences of characters that are at least @var{min-len} characters
+long, instead of the default 4.
+
+@item -o
+Like @samp{-t o}. Some other versions of @command{strings} have @option{-o}
+act like @samp{-t d} instead. Since we can not be compatible with both
+ways, we simply chose one.
+
+@item -t @var{radix}
+@itemx --radix=@var{radix}
+Print the offset within the file before each string. The single
+character argument specifies the radix of the offset---@samp{o} for
+octal, @samp{x} for hexadecimal, or @samp{d} for decimal.
+
+@item -e @var{encoding}
+@itemx --encoding=@var{encoding}
+Select the character encoding of the strings that are to be found.
+Possible values for @var{encoding} are: @samp{s} = single-7-bit-byte
+characters (ASCII, ISO 8859, etc., default), @samp{S} =
+single-8-bit-byte characters, @samp{b} = 16-bit bigendian, @samp{l} =
+16-bit littleendian, @samp{B} = 32-bit bigendian, @samp{L} = 32-bit
+littleendian. Useful for finding wide character strings. (@samp{l}
+and @samp{b} apply to, for example, Unicode UTF-16/UCS-2 encodings).
+
+@item -T @var{bfdname}
+@itemx --target=@var{bfdname}
+@cindex object code format
+Specify an object code format other than your system's default format.
+@xref{Target Selection}, for more information.
+
+@item -v
+@itemx -V
+@itemx --version
+Print the program version number on the standard output and exit.
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO strings
+ar(1), nm(1), objdump(1), ranlib(1), readelf(1)
+and the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node strip
+@chapter strip
+
+@kindex strip
+@cindex removing symbols
+@cindex discarding symbols
+@cindex symbols, discarding
+
+@c man title strip Discard symbols from object files.
+
+@smallexample
+@c man begin SYNOPSIS strip
+strip [@option{-F} @var{bfdname} |@option{--target=}@var{bfdname}]
+ [@option{-I} @var{bfdname} |@option{--input-target=}@var{bfdname}]
+ [@option{-O} @var{bfdname} |@option{--output-target=}@var{bfdname}]
+ [@option{-s}|@option{--strip-all}]
+ [@option{-S}|@option{-g}|@option{-d}|@option{--strip-debug}]
+ [@option{--strip-dwo}]
+ [@option{-K} @var{symbolname} |@option{--keep-symbol=}@var{symbolname}]
+ [@option{-N} @var{symbolname} |@option{--strip-symbol=}@var{symbolname}]
+ [@option{-w}|@option{--wildcard}]
+ [@option{-x}|@option{--discard-all}] [@option{-X} |@option{--discard-locals}]
+ [@option{-R} @var{sectionname} |@option{--remove-section=}@var{sectionname}]
+ [@option{-o} @var{file}] [@option{-p}|@option{--preserve-dates}]
+ [@option{-D}|@option{--enable-deterministic-archives}]
+ [@option{-U}|@option{--disable-deterministic-archives}]
+ [@option{--keep-file-symbols}]
+ [@option{--only-keep-debug}]
+ [@option{-v} |@option{--verbose}] [@option{-V}|@option{--version}]
+ [@option{--help}] [@option{--info}]
+ @var{objfile}@dots{}
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION strip
+
+@sc{gnu} @command{strip} discards all symbols from object files
+@var{objfile}. The list of object files may include archives.
+At least one object file must be given.
+
+@command{strip} modifies the files named in its argument,
+rather than writing modified copies under different names.
+
+@c man end
+
+@c man begin OPTIONS strip
+
+@table @env
+@item -F @var{bfdname}
+@itemx --target=@var{bfdname}
+Treat the original @var{objfile} as a file with the object
+code format @var{bfdname}, and rewrite it in the same format.
+@xref{Target Selection}, for more information.
+
+@item --help
+Show a summary of the options to @command{strip} and exit.
+
+@item --info
+Display a list showing all architectures and object formats available.
+
+@item -I @var{bfdname}
+@itemx --input-target=@var{bfdname}
+Treat the original @var{objfile} as a file with the object
+code format @var{bfdname}.
+@xref{Target Selection}, for more information.
+
+@item -O @var{bfdname}
+@itemx --output-target=@var{bfdname}
+Replace @var{objfile} with a file in the output format @var{bfdname}.
+@xref{Target Selection}, for more information.
+
+@item -R @var{sectionname}
+@itemx --remove-section=@var{sectionname}
+Remove any section named @var{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. The wildcard
+character @samp{*} may be given at the end of @var{sectionname}. If
+so, then any section starting with @var{sectionname} will be removed.
+
+@item -s
+@itemx --strip-all
+Remove all symbols.
+
+@item -g
+@itemx -S
+@itemx -d
+@itemx --strip-debug
+Remove debugging symbols only.
+
+@item --strip-dwo
+Remove the contents of all DWARF .dwo sections, leaving the
+remaining debugging sections and all symbols intact.
+See the description of this option in the @command{objcopy} section
+for more information.
+
+@item --strip-unneeded
+Remove all symbols that are not needed for relocation processing.
+
+@item -K @var{symbolname}
+@itemx --keep-symbol=@var{symbolname}
+When stripping symbols, keep symbol @var{symbolname} even if it would
+normally be stripped. This option may be given more than once.
+
+@item -N @var{symbolname}
+@itemx --strip-symbol=@var{symbolname}
+Remove symbol @var{symbolname} from the source file. This option may be
+given more than once, and may be combined with strip options other than
+@option{-K}.
+
+@item -o @var{file}
+Put the stripped output in @var{file}, rather than replacing the
+existing file. When this argument is used, only one @var{objfile}
+argument may be specified.
+
+@item -p
+@itemx --preserve-dates
+Preserve the access and modification dates of the file.
+
+@item -D
+@itemx --enable-deterministic-archives
+@cindex deterministic archives
+@kindex --enable-deterministic-archives
+Operate in @emph{deterministic} mode. When copying archive members
+and writing the archive index, use zero for UIDs, GIDs, timestamps,
+and use consistent file modes for all files.
+
+If @file{binutils} was configured with
+@option{--enable-deterministic-archives}, then this mode is on by default.
+It can be disabled with the @samp{-U} option, below.
+
+@item -U
+@itemx --disable-deterministic-archives
+@cindex deterministic archives
+@kindex --enable-deterministic-archives
+Do @emph{not} operate in @emph{deterministic} mode. This is the
+inverse of the @option{-D} option, above: when copying archive members
+and writing the archive index, use their actual UID, GID, timestamp,
+and file mode values.
+
+This is the default unless @file{binutils} was configured with
+@option{--enable-deterministic-archives}.
+
+@item -w
+@itemx --wildcard
+Permit regular expressions in @var{symbolname}s 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:
+
+@smallexample
+ -w -K !foo -K fo*
+@end smallexample
+
+would cause strip to only keep symbols that start with the letters
+``fo'', but to discard the symbol ``foo''.
+
+@item -x
+@itemx --discard-all
+Remove non-global symbols.
+
+@item -X
+@itemx --discard-locals
+Remove compiler-generated local symbols.
+(These usually start with @samp{L} or @samp{.}.)
+
+@item --keep-file-symbols
+When stripping a file, perhaps with @option{--strip-debug} or
+@option{--strip-unneeded}, retain any symbols specifying source file names,
+which would otherwise get stripped.
+
+@item --only-keep-debug
+Strip a file, removing contents of any sections that would not be
+stripped by @option{--strip-debug} and leaving the debugging sections
+intact. In ELF files, this preserves all note sections in the output.
+
+The intention is that this option will be used in conjunction with
+@option{--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:
+
+@enumerate
+@item Link the executable as normal. Assuming that is is called
+@code{foo} then...
+@item Run @code{objcopy --only-keep-debug foo foo.dbg} to
+create a file containing the debugging info.
+@item Run @code{objcopy --strip-debug foo} to create a
+stripped executable.
+@item Run @code{objcopy --add-gnu-debuglink=foo.dbg foo}
+to add a link to the debugging info into the stripped executable.
+@end enumerate
+
+Note---the choice of @code{.dbg} as an extension for the debug info
+file is arbitrary. Also the @code{--only-keep-debug} step is
+optional. You could instead do this:
+
+@enumerate
+@item Link the executable as normal.
+@item Copy @code{foo} to @code{foo.full}
+@item Run @code{strip --strip-debug foo}
+@item Run @code{objcopy --add-gnu-debuglink=foo.full foo}
+@end enumerate
+
+i.e., the file pointed to by the @option{--add-gnu-debuglink} can be the
+full executable. It does not have to be a file created by the
+@option{--only-keep-debug} switch.
+
+Note---this switch is only intended for use on fully linked files. It
+does not make sense to use it on object files where the debugging
+information may be incomplete. Besides the gnu_debuglink feature
+currently only supports the presence of one filename containing
+debugging information, not multiple filenames on a one-per-object-file
+basis.
+
+@item -V
+@itemx --version
+Show the version number for @command{strip}.
+
+@item -v
+@itemx --verbose
+Verbose output: list all object files modified. In the case of
+archives, @samp{strip -v} lists all members of the archive.
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO strip
+the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node c++filt, addr2line, strip, Top
+@chapter c++filt
+
+@kindex c++filt
+@cindex demangling C++ symbols
+
+@c man title cxxfilt Demangle C++ and Java symbols.
+
+@smallexample
+@c man begin SYNOPSIS cxxfilt
+c++filt [@option{-_}|@option{--strip-underscore}]
+ [@option{-n}|@option{--no-strip-underscore}]
+ [@option{-p}|@option{--no-params}]
+ [@option{-t}|@option{--types}]
+ [@option{-i}|@option{--no-verbose}]
+ [@option{-s} @var{format}|@option{--format=}@var{format}]
+ [@option{--help}] [@option{--version}] [@var{symbol}@dots{}]
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION cxxfilt
+
+@kindex cxxfilt
+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 @dfn{mangling}. The
+@command{c++filt}
+@footnote{MS-DOS does not allow @kbd{+} characters in file names, so on
+MS-DOS this program is named @command{CXXFILT}.}
+program does the inverse mapping: it decodes (@dfn{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 @command{c++filt} and see the same source file
+containing demangled names.
+
+You can also use @command{c++filt} to decipher individual symbols by
+passing them on the command line:
+
+@example
+c++filt @var{symbol}
+@end example
+
+If no @var{symbol} arguments are given, @command{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 separate them from surrounding text. Thus
+for example:
+
+@smallexample
+c++filt -n _Z1fv
+@end smallexample
+
+will work and demangle the name to ``f()'' whereas:
+
+@smallexample
+c++filt -n _Z1fv,
+@end smallexample
+
+will not work. (Note the extra comma at the end of the mangled
+name which makes it invalid). This command however will work:
+
+@smallexample
+echo _Z1fv, | c++filt -n
+@end smallexample
+
+and will display ``f(),'', i.e., 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. For example:
+
+@smallexample
+ .type _Z1fv, @@function
+@end smallexample
+
+@c man end
+
+@c man begin OPTIONS cxxfilt
+
+@table @env
+@item -_
+@itemx --strip-underscore
+On some systems, both the C and C++ compilers put an underscore in front
+of every name. For example, the C name @code{foo} gets the low-level
+name @code{_foo}. This option removes the initial underscore. Whether
+@command{c++filt} removes the underscore by default is target dependent.
+
+@item -n
+@itemx --no-strip-underscore
+Do not remove the initial underscore.
+
+@item -p
+@itemx --no-params
+When demangling the name of a function, do not display the types of
+the function's parameters.
+
+@item -t
+@itemx --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. For example,
+a function called ``a'' treated as a mangled type name would be
+demangled to ``signed char''.
+
+@item -i
+@itemx --no-verbose
+Do not include implementation details (if any) in the demangled
+output.
+
+@item -s @var{format}
+@itemx --format=@var{format}
+@command{c++filt} can decode various methods of mangling, used by
+different compilers. The argument to this option selects which
+method it uses:
+
+@table @code
+@item auto
+Automatic selection based on executable (the default method)
+@item gnu
+the one used by the @sc{gnu} C++ compiler (g++)
+@item lucid
+the one used by the Lucid compiler (lcc)
+@item arm
+the one specified by the C++ Annotated Reference Manual
+@item hp
+the one used by the HP compiler (aCC)
+@item edg
+the one used by the EDG compiler
+@item gnu-v3
+the one used by the @sc{gnu} C++ compiler (g++) with the V3 ABI.
+@item java
+the one used by the @sc{gnu} Java compiler (gcj)
+@item gnat
+the one used by the @sc{gnu} Ada compiler (GNAT).
+@end table
+
+@item --help
+Print a summary of the options to @command{c++filt} and exit.
+
+@item --version
+Print the version number of @command{c++filt} and exit.
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO cxxfilt
+the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@quotation
+@emph{Warning:} @command{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 future to decode a name
+passed as an argument on the command line; in other words,
+
+@example
+c++filt @var{symbol}
+@end example
+
+@noindent
+may in a future release become
+
+@example
+c++filt @var{option} @var{symbol}
+@end example
+@end quotation
+
+@node addr2line
+@chapter addr2line
+
+@kindex addr2line
+@cindex address to file name and line number
+
+@c man title addr2line convert addresses into file names and line numbers.
+
+@smallexample
+@c man begin SYNOPSIS addr2line
+addr2line [@option{-a}|@option{--addresses}]
+ [@option{-b} @var{bfdname}|@option{--target=}@var{bfdname}]
+ [@option{-C}|@option{--demangle}[=@var{style}]]
+ [@option{-e} @var{filename}|@option{--exe=}@var{filename}]
+ [@option{-f}|@option{--functions}] [@option{-s}|@option{--basename}]
+ [@option{-i}|@option{--inlines}]
+ [@option{-p}|@option{--pretty-print}]
+ [@option{-j}|@option{--section=}@var{name}]
+ [@option{-H}|@option{--help}] [@option{-V}|@option{--version}]
+ [addr addr @dots{}]
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION addr2line
+
+@command{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 @option{-e}
+option. The default is the file @file{a.out}. The section in the relocatable
+object to use is specified with the @option{-j} option.
+
+@command{addr2line} has two modes of operation.
+
+In the first, hexadecimal addresses are specified on the command line,
+and @command{addr2line} displays the file name and line number for each
+address.
+
+In the second, @command{addr2line} reads hexadecimal addresses from
+standard input, and prints the file name and line number for each
+address on standard output. In this mode, @command{addr2line} may be used
+in a pipe to convert dynamically chosen addresses.
+
+The format of the output is @samp{FILENAME:LINENO}. The file name and
+line number for each input address is printed on separate lines.
+
+If the @option{-f} option is used, then each @samp{FILENAME:LINENO}
+line is preceded by @samp{FUNCTIONNAME} which is the name of the
+function containing the address.
+
+If the @option{-i} option is used and the code at the given address is
+present there because of inlining by the compiler then the
+@samp{@{FUNCTIONNAME@} FILENAME:LINENO} information for the inlining
+function will be displayed afterwards. This continues recursively
+until there is no more inlining to report.
+
+If the @option{-a} option is used then the output is prefixed by the
+input address.
+
+If the @option{-p} option is used then the output for each input
+address is displayed on one, possibly quite long, line. If
+@option{-p} is not used then the output is broken up into multiple
+lines, based on the paragraphs above.
+
+If the file name or function name can not be determined,
+@command{addr2line} will print two question marks in their place. If the
+line number can not be determined, @command{addr2line} will print 0.
+
+@c man end
+
+@c man begin OPTIONS addr2line
+
+The long and short forms of options, shown here as alternatives, are
+equivalent.
+
+@table @env
+@item -a
+@itemx --addresses
+Display the address before the function name, file and line number
+information. The address is printed with a @samp{0x} prefix to easily
+identify it.
+
+@item -b @var{bfdname}
+@itemx --target=@var{bfdname}
+@cindex object code format
+Specify that the object-code format for the object files is
+@var{bfdname}.
+
+@item -C
+@itemx --demangle[=@var{style}]
+@cindex demangling in objdump
+Decode (@dfn{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. @xref{c++filt},
+for more information on demangling.
+
+@item -e @var{filename}
+@itemx --exe=@var{filename}
+Specify the name of the executable for which addresses should be
+translated. The default file is @file{a.out}.
+
+@item -f
+@itemx --functions
+Display function names as well as file and line number information.
+
+@item -s
+@itemx --basenames
+Display only the base of each file name.
+
+@item -i
+@itemx --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 @code{main} inlines
+@code{callee1} which inlines @code{callee2}, and address is from
+@code{callee2}, the source information for @code{callee1} and @code{main}
+will also be printed.
+
+@item -j
+@itemx --section
+Read offsets relative to the specified section instead of absolute addresses.
+
+@item -p
+@itemx --pretty-print
+Make the output more human friendly: each location are printed on one line.
+If option @option{-i} is specified, lines for all enclosing scopes are
+prefixed with @samp{(inlined by)}.
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO addr2line
+Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node nlmconv
+@chapter nlmconv
+
+@command{nlmconv} converts a relocatable object file into a NetWare
+Loadable Module.
+
+@ignore
+@command{nlmconv} currently works with @samp{i386} object
+files in @code{coff}, @sc{elf}, or @code{a.out} format, and @sc{SPARC}
+object files in @sc{elf}, or @code{a.out} format@footnote{
+@command{nlmconv} should work with any @samp{i386} or @sc{sparc} object
+format in the Binary File Descriptor library. It has only been tested
+with the above formats.}.
+@end ignore
+
+@quotation
+@emph{Warning:} @command{nlmconv} is not always built as part of the binary
+utilities, since it is only useful for NLM targets.
+@end quotation
+
+@c man title nlmconv converts object code into an NLM.
+
+@smallexample
+@c man begin SYNOPSIS nlmconv
+nlmconv [@option{-I} @var{bfdname}|@option{--input-target=}@var{bfdname}]
+ [@option{-O} @var{bfdname}|@option{--output-target=}@var{bfdname}]
+ [@option{-T} @var{headerfile}|@option{--header-file=}@var{headerfile}]
+ [@option{-d}|@option{--debug}] [@option{-l} @var{linker}|@option{--linker=}@var{linker}]
+ [@option{-h}|@option{--help}] [@option{-V}|@option{--version}]
+ @var{infile} @var{outfile}
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION nlmconv
+
+@command{nlmconv} converts the relocatable @samp{i386} object file
+@var{infile} into the NetWare Loadable Module @var{outfile}, optionally
+reading @var{headerfile} for NLM header information. For instructions
+on writing the NLM command file language used in header files, see the
+@samp{linkers} section, @samp{NLMLINK} in particular, of the @cite{NLM
+Development and Tools Overview}, which is part of the NLM Software
+Developer's Kit (``NLM SDK''), available from Novell, Inc.
+@command{nlmconv} uses the @sc{gnu} Binary File Descriptor library to read
+@var{infile};
+@ifclear man
+see @ref{BFD,,BFD,ld.info,Using LD}, for more information.
+@end ifclear
+
+@command{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, @command{nlmconv} calls the linker for you.
+
+@c man end
+
+@c man begin OPTIONS nlmconv
+
+@table @env
+@item -I @var{bfdname}
+@itemx --input-target=@var{bfdname}
+Object format of the input file. @command{nlmconv} can usually determine
+the format of a given file (so no default is necessary).
+@xref{Target Selection}, for more information.
+
+@item -O @var{bfdname}
+@itemx --output-target=@var{bfdname}
+Object format of the output file. @command{nlmconv} infers the output
+format based on the input format, e.g. for a @samp{i386} input file the
+output format is @samp{nlm32-i386}.
+@xref{Target Selection}, for more information.
+
+@item -T @var{headerfile}
+@itemx --header-file=@var{headerfile}
+Reads @var{headerfile} for NLM header information. For instructions on
+writing the NLM command file language used in header files, see@ see the
+@samp{linkers} section, of the @cite{NLM Development and Tools
+Overview}, which is part of the NLM Software Developer's Kit, available
+from Novell, Inc.
+
+@item -d
+@itemx --debug
+Displays (on standard error) the linker command line used by @command{nlmconv}.
+
+@item -l @var{linker}
+@itemx --linker=@var{linker}
+Use @var{linker} for any linking. @var{linker} can be an absolute or a
+relative pathname.
+
+@item -h
+@itemx --help
+Prints a usage summary.
+
+@item -V
+@itemx --version
+Prints the version number for @command{nlmconv}.
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO nlmconv
+the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node windmc
+@chapter windmc
+
+@command{windmc} may be used to generator Windows message resources.
+
+@quotation
+@emph{Warning:} @command{windmc} is not always built as part of the binary
+utilities, since it is only useful for Windows targets.
+@end quotation
+
+@c man title windmc generates Windows message resources.
+
+@smallexample
+@c man begin SYNOPSIS windmc
+windmc [options] input-file
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION windmc
+
+@command{windmc} reads message definitions from an input file (.mc) and
+translate them into a set of output files. The output files may be of
+four kinds:
+
+@table @code
+@item h
+A C header file containing the message definitions.
+
+@item rc
+A resource file compilable by the @command{windres} tool.
+
+@item bin
+One or more binary files containing the resource data for a specific
+message language.
+
+@item dbg
+A C include file that maps message id's to their symbolic name.
+@end table
+
+The exact description of these different formats is available in
+documentation from Microsoft.
+
+When @command{windmc} converts from the @code{mc} format to the @code{bin}
+format, @code{rc}, @code{h}, and optional @code{dbg} it is acting like the
+Windows Message Compiler.
+
+@c man end
+
+@c man begin OPTIONS windmc
+
+@table @env
+@item -a
+@itemx --ascii_in
+Specifies that the input file specified is ASCII. This is the default
+behaviour.
+
+@item -A
+@itemx --ascii_out
+Specifies that messages in the output @code{bin} files should be in ASCII
+format.
+
+@item -b
+@itemx --binprefix
+Specifies that @code{bin} filenames should have to be prefixed by the
+basename of the source file.
+
+@item -c
+@itemx --customflag
+Sets the customer bit in all message id's.
+
+@item -C @var{codepage}
+@itemx --codepage_in @var{codepage}
+Sets the default codepage to be used to convert input file to UTF16. The
+default is ocdepage 1252.
+
+@item -d
+@itemx --decimal_values
+Outputs the constants in the header file in decimal. Default is using
+hexadecimal output.
+
+@item -e @var{ext}
+@itemx --extension @var{ext}
+The extension for the header file. The default is .h extension.
+
+@item -F @var{target}
+@itemx --target @var{target}
+Specify the BFD format to use for a bin file as output. This
+is a BFD target name; you can use the @option{--help} option to see a list
+of supported targets. Normally @command{windmc} will use the default
+format, which is the first one listed by the @option{--help} option.
+@ifclear man
+@ref{Target Selection}.
+@end ifclear
+
+@item -h @var{path}
+@itemx --headerdir @var{path}
+The target directory of the generated header file. The default is the
+current directory.
+
+@item -H
+@itemx --help
+Displays a list of command line options and then exits.
+
+@item -m @var{characters}
+@itemx --maxlength @var{characters}
+Instructs @command{windmc} to generate a warning if the length
+of any message exceeds the number specified.
+
+@item -n
+@itemx --nullterminate
+Terminate message text in @code{bin} files by zero. By default they are
+terminated by CR/LF.
+
+@item -o
+@itemx --hresult_use
+Not yet implemented. Instructs @code{windmc} to generate an OLE2 header
+file, using HRESULT definitions. Status codes are used if the flag is not
+specified.
+
+@item -O @var{codepage}
+@itemx --codepage_out @var{codepage}
+Sets the default codepage to be used to output text files. The default
+is ocdepage 1252.
+
+@item -r @var{path}
+@itemx --rcdir @var{path}
+The target directory for the generated @code{rc} script and the generated
+@code{bin} files that the resource compiler script includes. The default
+is the current directory.
+
+@item -u
+@itemx --unicode_in
+Specifies that the input file is UTF16.
+
+@item -U
+@itemx --unicode_out
+Specifies that messages in the output @code{bin} file should be in UTF16
+format. This is the default behaviour.
+
+@item -v
+@item --verbose
+Enable verbose mode.
+
+@item -V
+@item --version
+Prints the version number for @command{windmc}.
+
+@item -x @var{path}
+@itemx --xdgb @var{path}
+The path of the @code{dbg} C include file that maps message id's to the
+symbolic name. No such file is generated without specifying the switch.
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO windmc
+the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node windres
+@chapter windres
+
+@command{windres} may be used to manipulate Windows resources.
+
+@quotation
+@emph{Warning:} @command{windres} is not always built as part of the binary
+utilities, since it is only useful for Windows targets.
+@end quotation
+
+@c man title windres manipulate Windows resources.
+
+@smallexample
+@c man begin SYNOPSIS windres
+windres [options] [input-file] [output-file]
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION windres
+
+@command{windres} reads resources from an input file and copies them into
+an output file. Either file may be in one of three formats:
+
+@table @code
+@item rc
+A text format read by the Resource Compiler.
+
+@item res
+A binary format generated by the Resource Compiler.
+
+@item coff
+A COFF object or executable.
+@end table
+
+The exact description of these different formats is available in
+documentation from Microsoft.
+
+When @command{windres} converts from the @code{rc} format to the @code{res}
+format, it is acting like the Windows Resource Compiler. When
+@command{windres} converts from the @code{res} format to the @code{coff}
+format, it is acting like the Windows @code{CVTRES} program.
+
+When @command{windres} generates an @code{rc} file, the output is similar
+but not identical to the format expected for the input. When an input
+@code{rc} file refers to an external filename, an output @code{rc} file
+will instead include the file contents.
+
+If the input or output format is not specified, @command{windres} will
+guess based on the file name, or, for the input file, the file contents.
+A file with an extension of @file{.rc} will be treated as an @code{rc}
+file, a file with an extension of @file{.res} will be treated as a
+@code{res} file, and a file with an extension of @file{.o} or
+@file{.exe} will be treated as a @code{coff} file.
+
+If no output file is specified, @command{windres} will print the resources
+in @code{rc} format to standard output.
+
+The normal use is for you to write an @code{rc} file, use @command{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
+@code{rc} file available to Windows.
+
+@c man end
+
+@c man begin OPTIONS windres
+
+@table @env
+@item -i @var{filename}
+@itemx --input @var{filename}
+The name of the input file. If this option is not used, then
+@command{windres} will use the first non-option argument as the input file
+name. If there are no non-option arguments, then @command{windres} will
+read from standard input. @command{windres} can not read a COFF file from
+standard input.
+
+@item -o @var{filename}
+@itemx --output @var{filename}
+The name of the output file. If this option is not used, then
+@command{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 @command{windres} will write to standard output.
+@command{windres} can not write a COFF file to standard output. Note,
+for compatibility with @command{rc} the option @option{-fo} is also
+accepted, but its use is not recommended.
+
+@item -J @var{format}
+@itemx --input-format @var{format}
+The input format to read. @var{format} may be @samp{res}, @samp{rc}, or
+@samp{coff}. If no input format is specified, @command{windres} will
+guess, as described above.
+
+@item -O @var{format}
+@itemx --output-format @var{format}
+The output format to generate. @var{format} may be @samp{res},
+@samp{rc}, or @samp{coff}. If no output format is specified,
+@command{windres} will guess, as described above.
+
+@item -F @var{target}
+@itemx --target @var{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 @option{--help} option to see a list
+of supported targets. Normally @command{windres} will use the default
+format, which is the first one listed by the @option{--help} option.
+@ifclear man
+@ref{Target Selection}.
+@end ifclear
+
+@item --preprocessor @var{program}
+When @command{windres} reads an @code{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 @code{gcc -E -xc-header -DRC_INVOKED}.
+
+@item --preprocessor-arg @var{option}
+When @command{windres} reads an @code{rc} file, it runs it through
+the C preprocessor first. This option may be used to specify additional
+text to be passed to preprocessor on its command line.
+This option can be used multiple times to add multiple options to the
+preprocessor command line.
+
+@item -I @var{directory}
+@itemx --include-dir @var{directory}
+Specify an include directory to use when reading an @code{rc} file.
+@command{windres} will pass this to the preprocessor as an @option{-I}
+option. @command{windres} will also search this directory when looking for
+files named in the @code{rc} file. If the argument passed to this command
+matches any of the supported @var{formats} (as described in the @option{-J}
+option), it will issue a deprecation warning, and behave just like the
+@option{-J} option. New programs should not use this behaviour. If a
+directory happens to match a @var{format}, simple prefix it with @samp{./}
+to disable the backward compatibility.
+
+@item -D @var{target}
+@itemx --define @var{sym}[=@var{val}]
+Specify a @option{-D} option to pass to the preprocessor when reading an
+@code{rc} file.
+
+@item -U @var{target}
+@itemx --undefine @var{sym}
+Specify a @option{-U} option to pass to the preprocessor when reading an
+@code{rc} file.
+
+@item -r
+Ignored for compatibility with rc.
+
+@item -v
+Enable verbose mode. This tells you what the preprocessor is if you
+didn't specify one.
+
+@item -c @var{val}
+@item --codepage @var{val}
+Specify the default codepage to use when reading an @code{rc} file.
+@var{val} should be a hexadecimal prefixed by @samp{0x} or decimal
+codepage code. The valid range is from zero up to 0xffff, but the
+validity of the codepage is host and configuration dependent.
+
+@item -l @var{val}
+@item --language @var{val}
+Specify the default language to use when reading an @code{rc} file.
+@var{val} should be a hexadecimal language code. The low eight bits are
+the language, and the high eight bits are the sublanguage.
+
+@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).
+
+@item --no-use-temp-file
+Use popen, not a temporary file, to read the output of the preprocessor.
+This is the default behaviour.
+
+@item -h
+@item --help
+Prints a usage summary.
+
+@item -V
+@item --version
+Prints the version number for @command{windres}.
+
+@item --yydebug
+If @command{windres} is compiled with @code{YYDEBUG} defined as @code{1},
+this will turn on parser debugging.
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO windres
+the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node dlltool
+@chapter dlltool
+@cindex DLL
+@kindex dlltool
+
+@command{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
+@file{.def} file or scanning the @file{.a} and @file{.o} files which
+will be in the DLL. A @file{.o} file can contain information in
+special @samp{.drectve} sections with export information.
+
+@quotation
+@emph{Note:} @command{dlltool} is not always built as part of the
+binary utilities, since it is only useful for those targets which
+support DLLs.
+@end quotation
+
+@c man title dlltool Create files needed to build and use DLLs.
+
+@smallexample
+@c man begin SYNOPSIS dlltool
+dlltool [@option{-d}|@option{--input-def} @var{def-file-name}]
+ [@option{-b}|@option{--base-file} @var{base-file-name}]
+ [@option{-e}|@option{--output-exp} @var{exports-file-name}]
+ [@option{-z}|@option{--output-def} @var{def-file-name}]
+ [@option{-l}|@option{--output-lib} @var{library-file-name}]
+ [@option{-y}|@option{--output-delaylib} @var{library-file-name}]
+ [@option{--export-all-symbols}] [@option{--no-export-all-symbols}]
+ [@option{--exclude-symbols} @var{list}]
+ [@option{--no-default-excludes}]
+ [@option{-S}|@option{--as} @var{path-to-assembler}] [@option{-f}|@option{--as-flags} @var{options}]
+ [@option{-D}|@option{--dllname} @var{name}] [@option{-m}|@option{--machine} @var{machine}]
+ [@option{-a}|@option{--add-indirect}]
+ [@option{-U}|@option{--add-underscore}] [@option{--add-stdcall-underscore}]
+ [@option{-k}|@option{--kill-at}] [@option{-A}|@option{--add-stdcall-alias}]
+ [@option{-p}|@option{--ext-prefix-alias} @var{prefix}]
+ [@option{-x}|@option{--no-idata4}] [@option{-c}|@option{--no-idata5}]
+ [@option{--use-nul-prefixed-import-tables}]
+ [@option{-I}|@option{--identify} @var{library-file-name}] [@option{--identify-strict}]
+ [@option{-i}|@option{--interwork}]
+ [@option{-n}|@option{--nodelete}] [@option{-t}|@option{--temp-prefix} @var{prefix}]
+ [@option{-v}|@option{--verbose}]
+ [@option{-h}|@option{--help}] [@option{-V}|@option{--version}]
+ [@option{--no-leading-underscore}] [@option{--leading-underscore}]
+ [object-file @dots{}]
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION dlltool
+
+@command{dlltool} reads its inputs, which can come from the @option{-d} and
+@option{-b} options as well as object files specified on the command
+line. It then processes these inputs and if the @option{-e} option has
+been specified it creates a exports file. If the @option{-l} option
+has been specified it creates a library file and if the @option{-z} option
+has been specified it creates a def file. Any or all of the @option{-e},
+@option{-l} and @option{-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. @command{dlltool} can help with the creation of
+these files.
+
+The first file is a @file{.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 @command{dlltool} can be used
+to create it using the @option{-z} option. In this case @command{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 @file{.def} file it creates.
+
+In order to mark a function as being exported from a DLL, it needs to
+have an @option{-export:<name_of_function>} entry in the @samp{.drectve}
+section of the object file. This can be done in C by using the
+asm() operator:
+
+@smallexample
+ asm (".section .drectve");
+ asm (".ascii \"-export:my_func\"");
+
+ int my_func (void) @{ @dots{} @}
+@end smallexample
+
+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 @option{-e} option to
+@command{dlltool} when it is creating or reading in a @file{.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 (an `import
+library'). This file can be created by giving the @option{-l} option to
+dlltool when it is creating or reading in a @file{.def} file.
+
+If the @option{-y} option is specified, dlltool generates a delay-import
+library that can be used instead of the normal import library to allow
+a program to link to the dll only as soon as an imported function is
+called for the first time. The resulting executable will need to be
+linked to the static delayimp library containing __delayLoadHelper2(),
+which in turn will import LoadLibraryA and GetProcAddress from kernel32.
+
+@command{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 @option{-S} command line option can be
+used to specify the path to the assembler that dlltool will use,
+and the @option{-f} option can be used to pass specific flags to that
+assembler. The @option{-n} can be used to prevent dlltool from deleting
+these temporary assembler files when it is done, and if @option{-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 @samp{dll.c} and
+also creating a program (from an object file called @samp{program.o})
+that uses that DLL:
+
+@smallexample
+ 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
+@end smallexample
+
+
+@command{dlltool} may also be used to query an existing import library
+to determine the name of the DLL to which it is associated. See the
+description of the @option{-I} or @option{--identify} option.
+
+@c man end
+
+@c man begin OPTIONS dlltool
+
+The command line options have the following meanings:
+
+@table @env
+
+@item -d @var{filename}
+@itemx --input-def @var{filename}
+@cindex input .def file
+Specifies the name of a @file{.def} file to be read in and processed.
+
+@item -b @var{filename}
+@itemx --base-file @var{filename}
+@cindex base files
+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.
+
+@item -e @var{filename}
+@itemx --output-exp @var{filename}
+Specifies the name of the export file to be created by dlltool.
+
+@item -z @var{filename}
+@itemx --output-def @var{filename}
+Specifies the name of the @file{.def} file to be created by dlltool.
+
+@item -l @var{filename}
+@itemx --output-lib @var{filename}
+Specifies the name of the library file to be created by dlltool.
+
+@item -y @var{filename}
+@itemx --output-delaylib @var{filename}
+Specifies the name of the delay-import library file to be created by dlltool.
+
+@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 @option{--no-default-excludes}
+option. You may add to the list of symbols to not export by using the
+@option{--exclude-symbols} option.
+
+@item --no-export-all-symbols
+Only export symbols explicitly listed in an input @file{.def} file or in
+@samp{.drectve} sections in the input object files. This is the default
+behaviour. The @samp{.drectve} sections are created by @samp{dllexport}
+attributes in the source code.
+
+@item --exclude-symbols @var{list}
+Do not export the symbols in @var{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
+@option{--export-all-symbols} is used.
+
+@item --no-default-excludes
+When @option{--export-all-symbols} is used, it will by default avoid
+exporting certain special symbols. The current list of symbols to avoid
+exporting is @samp{DllMain@@12}, @samp{DllEntryPoint@@0},
+@samp{impure_ptr}. You may use the @option{--no-default-excludes} option
+to go ahead and export these special symbols. This is only meaningful
+when @option{--export-all-symbols} is used.
+
+@item -S @var{path}
+@itemx --as @var{path}
+Specifies the path, including the filename, of the assembler to be used
+to create the exports file.
+
+@item -f @var{options}
+@itemx --as-flags @var{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 @option{-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.
+
+@item -D @var{name}
+@itemx --dll-name @var{name}
+Specifies the name to be stored in the @file{.def} file as the name of
+the DLL when the @option{-e} option is used. If this option is not
+present, then the filename given to the @option{-e} option will be
+used as the name of the DLL.
+
+@item -m @var{machine}
+@itemx -machine @var{machine}
+Specifies the type of machine for which the library file should be
+built. @command{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.
+
+@item -a
+@itemx --add-indirect
+Specifies that when @command{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!
+
+@item -U
+@itemx --add-underscore
+Specifies that when @command{dlltool} is creating the exports file it
+should prepend an underscore to the names of @emph{all} exported symbols.
+
+@item --no-leading-underscore
+@item --leading-underscore
+Specifies whether standard symbol should be forced to be prefixed, or
+not.
+
+@item --add-stdcall-underscore
+Specifies that when @command{dlltool} is creating the exports file it
+should prepend an underscore to the names of exported @emph{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.
+
+@item -k
+@itemx --kill-at
+Specifies that when @command{dlltool} is creating the exports file it
+should not append the string @samp{@@ <number>}. These numbers are
+called ordinal numbers and they represent another way of accessing the
+function in a DLL, other than by name.
+
+@item -A
+@itemx --add-stdcall-alias
+Specifies that when @command{dlltool} is creating the exports file it
+should add aliases for stdcall symbols without @samp{@@ <number>}
+in addition to the symbols with @samp{@@ <number>}.
+
+@item -p
+@itemx --ext-prefix-alias @var{prefix}
+Causes @command{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.
+
+@item -x
+@itemx --no-idata4
+Specifies that when @command{dlltool} is creating the exports and library
+files it should omit the @code{.idata4} section. This is for compatibility
+with certain operating systems.
+
+@item --use-nul-prefixed-import-tables
+Specifies that when @command{dlltool} is creating the exports and library
+files it should prefix the @code{.idata4} and @code{.idata5} by zero an
+element. This emulates old gnu import library generation of
+@code{dlltool}. By default this option is turned off.
+
+@item -c
+@itemx --no-idata5
+Specifies that when @command{dlltool} is creating the exports and library
+files it should omit the @code{.idata5} section. This is for compatibility
+with certain operating systems.
+
+@item -I @var{filename}
+@itemx --identify @var{filename}
+Specifies that @command{dlltool} should inspect the import library
+indicated by @var{filename} and report, on @code{stdout}, the name(s)
+of the associated DLL(s). This can be performed in addition to any
+other operations indicated by the other options and arguments.
+@command{dlltool} fails if the import library does not exist or is not
+actually an import library. See also @option{--identify-strict}.
+
+@item --identify-strict
+Modifies the behavior of the @option{--identify} option, such
+that an error is reported if @var{filename} is associated with
+more than one DLL.
+
+@item -i
+@itemx --interwork
+Specifies that @command{dlltool} should mark the objects in the library
+file and exports file that it produces as supporting interworking
+between ARM and Thumb code.
+
+@item -n
+@itemx --nodelete
+Makes @command{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.
+
+@item -t @var{prefix}
+@itemx --temp-prefix @var{prefix}
+Makes @command{dlltool} use @var{prefix} when constructing the names of
+temporary assembler and object files. By default, the temp file prefix
+is generated from the pid.
+
+@item -v
+@itemx --verbose
+Make dlltool describe what it is doing.
+
+@item -h
+@itemx --help
+Displays a list of command line options and then exits.
+
+@item -V
+@itemx --version
+Displays dlltool's version number and then exits.
+
+@end table
+
+@c man end
+
+@menu
+* def file format:: The format of the dlltool @file{.def} file
+@end menu
+
+@node def file format
+@section The format of the @command{dlltool} @file{.def} file
+
+A @file{.def} file contains any number of the following commands:
+
+@table @asis
+
+@item @code{NAME} @var{name} @code{[ ,} @var{base} @code{]}
+The result is going to be named @var{name}@code{.exe}.
+
+@item @code{LIBRARY} @var{name} @code{[ ,} @var{base} @code{]}
+The result is going to be named @var{name}@code{.dll}.
+Note: If you want to use LIBRARY as name then you need to quote. Otherwise
+this will fail due a necessary hack for libtool (see PR binutils/13710 for more
+details).
+
+@item @code{EXPORTS ( ( (} @var{name1} @code{[ = } @var{name2} @code{] ) | ( } @var{name1} @code{=} @var{module-name} @code{.} @var{external-name} @code{) ) [ == } @var{its_name} @code{]}
+@item @code{[} @var{integer} @code{] [ NONAME ] [ CONSTANT ] [ DATA ] [ PRIVATE ] ) *}
+Declares @var{name1} as an exported symbol from the DLL, with optional
+ordinal number @var{integer}, or declares @var{name1} as an alias
+(forward) of the function @var{external-name} in the DLL.
+If @var{its_name} is specified, this name is used as string in export table.
+@var{module-name}.
+Note: The @code{EXPORTS} has to be the last command in .def file, as keywords
+are treated - beside @code{LIBRARY} - as simple name-identifiers.
+If you want to use LIBRARY as name then you need to quote it.
+
+@item @code{IMPORTS ( (} @var{internal-name} @code{=} @var{module-name} @code{.} @var{integer} @code{) | [} @var{internal-name} @code{= ]} @var{module-name} @code{.} @var{external-name} @code{) [ == ) @var{its_name} @code{]} *}
+Declares that @var{external-name} or the exported function whose
+ordinal number is @var{integer} is to be imported from the file
+@var{module-name}. If @var{internal-name} is specified then this is
+the name that the imported function will be referred to in the body of
+the DLL.
+If @var{its_name} is specified, this name is used as string in import table.
+Note: The @code{IMPORTS} has to be the last command in .def file, as keywords
+are treated - beside @code{LIBRARY} - as simple name-identifiers.
+If you want to use LIBRARY as name then you need to quote it.
+
+@item @code{DESCRIPTION} @var{string}
+Puts @var{string} into the output @file{.exp} file in the
+@code{.rdata} section.
+
+@item @code{STACKSIZE} @var{number-reserve} @code{[, } @var{number-commit} @code{]}
+@item @code{HEAPSIZE} @var{number-reserve} @code{[, } @var{number-commit} @code{]}
+Generates @code{--stack} or @code{--heap}
+@var{number-reserve},@var{number-commit} in the output @code{.drectve}
+section. The linker will see this and act upon it.
+
+@item @code{CODE} @var{attr} @code{+}
+@item @code{DATA} @var{attr} @code{+}
+@item @code{SECTIONS (} @var{section-name} @var{attr}@code{ + ) *}
+Generates @code{--attr} @var{section-name} @var{attr} in the output
+@code{.drectve} section, where @var{attr} is one of @code{READ},
+@code{WRITE}, @code{EXECUTE} or @code{SHARED}. The linker will see
+this and act upon it.
+
+@end table
+
+@ignore
+@c man begin SEEALSO dlltool
+The Info pages for @file{binutils}.
+@c man end
+@end ignore
+
+@node readelf
+@chapter readelf
+
+@cindex ELF file information
+@kindex readelf
+
+@c man title readelf Displays information about ELF files.
+
+@smallexample
+@c man begin SYNOPSIS readelf
+readelf [@option{-a}|@option{--all}]
+ [@option{-h}|@option{--file-header}]
+ [@option{-l}|@option{--program-headers}|@option{--segments}]
+ [@option{-S}|@option{--section-headers}|@option{--sections}]
+ [@option{-g}|@option{--section-groups}]
+ [@option{-t}|@option{--section-details}]
+ [@option{-e}|@option{--headers}]
+ [@option{-s}|@option{--syms}|@option{--symbols}]
+ [@option{--dyn-syms}]
+ [@option{-n}|@option{--notes}]
+ [@option{-r}|@option{--relocs}]
+ [@option{-u}|@option{--unwind}]
+ [@option{-d}|@option{--dynamic}]
+ [@option{-V}|@option{--version-info}]
+ [@option{-A}|@option{--arch-specific}]
+ [@option{-D}|@option{--use-dynamic}]
+ [@option{-x} <number or name>|@option{--hex-dump=}<number or name>]
+ [@option{-p} <number or name>|@option{--string-dump=}<number or name>]
+ [@option{-R} <number or name>|@option{--relocated-dump=}<number or name>]
+ [@option{-c}|@option{--archive-index}]
+ [@option{-w[lLiaprmfFsoRt]}|
+ @option{--debug-dump}[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]]
+ [@option{--dwarf-depth=@var{n}}]
+ [@option{--dwarf-start=@var{n}}]
+ [@option{-I}|@option{--histogram}]
+ [@option{-v}|@option{--version}]
+ [@option{-W}|@option{--wide}]
+ [@option{-H}|@option{--help}]
+ @var{elffile}@dots{}
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION readelf
+
+@command{readelf} displays information about one or more ELF format object
+files. The options control what particular information to display.
+
+@var{elffile}@dots{} 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 @command{objdump} but it
+goes into more detail and it exists independently of the @sc{bfd}
+library, so if there is a bug in @sc{bfd} then readelf will not be
+affected.
+
+@c man end
+
+@c man begin OPTIONS readelf
+
+The long and short forms of options, shown here as alternatives, are
+equivalent. At least one option besides @samp{-v} or @samp{-H} must be
+given.
+
+@table @env
+@item -a
+@itemx --all
+Equivalent to specifying @option{--file-header},
+@option{--program-headers}, @option{--sections}, @option{--symbols},
+@option{--relocs}, @option{--dynamic}, @option{--notes} and
+@option{--version-info}.
+
+@item -h
+@itemx --file-header
+@cindex ELF file header information
+Displays the information contained in the ELF header at the start of the
+file.
+
+@item -l
+@itemx --program-headers
+@itemx --segments
+@cindex ELF program header information
+@cindex ELF segment information
+Displays the information contained in the file's segment headers, if it
+has any.
+
+@item -S
+@itemx --sections
+@itemx --section-headers
+@cindex ELF section information
+Displays the information contained in the file's section headers, if it
+has any.
+
+@item -g
+@itemx --section-groups
+@cindex ELF section group information
+Displays the information contained in the file's section groups, if it
+has any.
+
+@item -t
+@itemx --section-details
+@cindex ELF section information
+Displays the detailed section information. Implies @option{-S}.
+
+@item -s
+@itemx --symbols
+@itemx --syms
+@cindex ELF symbol table information
+Displays the entries in symbol table section of the file, if it has one.
+
+@item --dyn-syms
+@cindex ELF dynamic symbol table information
+Displays the entries in dynamic symbol table section of the file, if it
+has one.
+
+@item -e
+@itemx --headers
+Display all the headers in the file. Equivalent to @option{-h -l -S}.
+
+@item -n
+@itemx --notes
+@cindex ELF notes
+Displays the contents of the NOTE segments and/or sections, if any.
+
+@item -r
+@itemx --relocs
+@cindex ELF reloc information
+Displays the contents of the file's relocation section, if it has one.
+
+@item -u
+@itemx --unwind
+@cindex unwind information
+Displays the contents of the file's unwind section, if it has one. Only
+the unwind sections for IA64 ELF files, as well as ARM unwind tables
+(@code{.ARM.exidx} / @code{.ARM.extab}) are currently supported.
+
+@item -d
+@itemx --dynamic
+@cindex ELF dynamic section information
+Displays the contents of the file's dynamic section, if it has one.
+
+@item -V
+@itemx --version-info
+@cindex ELF version sections information
+Displays the contents of the version sections in the file, it they
+exist.
+
+@item -A
+@itemx --arch-specific
+Displays architecture-specific information in the file, if there
+is any.
+
+@item -D
+@itemx --use-dynamic
+When displaying symbols, this option makes @command{readelf} use the
+symbol hash tables in the file's dynamic section, rather than the
+symbol table sections.
+
+@item -x <number or name>
+@itemx --hex-dump=<number or name>
+Displays the contents of the indicated section as a hexadecimal bytes.
+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.
+
+@item -R <number or name>
+@itemx --relocated-dump=<number or name>
+Displays the contents of the indicated section as a hexadecimal
+bytes. 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. The contents of the section will be relocated
+before they are displayed.
+
+@item -p <number or name>
+@itemx --string-dump=<number or name>
+Displays the contents of the indicated section as printable strings.
+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.
+
+@item -c
+@itemx --archive-index
+@cindex Archive file symbol index information
+Displays the file symbol index information contained in the header part
+of binary archives. Performs the same function as the @option{t}
+command to @command{ar}, but without using the BFD library. @xref{ar}.
+
+@item -w[lLiaprmfFsoRt]
+@itemx --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]
+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.
+
+Note that there is no single letter option to display the content of
+trace sections or .gdb_index.
+
+Note: the @option{=decodedline} option will display the interpreted
+contents of a .debug_line section whereas the @option{=rawline} option
+dumps the contents in a raw format.
+
+Note: the @option{=frames-interp} option will display the interpreted
+contents of a .debug_frame section whereas the @option{=frames} option
+dumps the contents in a raw format.
+
+Note: the output from the @option{=info} option can also be affected
+by the options @option{--dwarf-depth} and @option{--dwarf-start}.
+
+@item --dwarf-depth=@var{n}
+Limit the dump of the @code{.debug_info} section to @var{n} children.
+This is only useful with @option{--debug-dump=info}. The default is
+to print all DIEs; the special value 0 for @var{n} will also have this
+effect.
+
+With a non-zero value for @var{n}, DIEs at or deeper than @var{n}
+levels will not be printed. The range for @var{n} is zero-based.
+
+@item --dwarf-start=@var{n}
+Print only DIEs beginning with the DIE numbered @var{n}. This is only
+useful with @option{--debug-dump=info}.
+
+If specified, this option will suppress printing of any header
+information and all DIEs before the DIE numbered @var{n}. Only
+siblings and children of the specified DIE will be printed.
+
+This can be used in conjunction with @option{--dwarf-depth}.
+
+@item -I
+@itemx --histogram
+Display a histogram of bucket list lengths when displaying the contents
+of the symbol tables.
+
+@item -v
+@itemx --version
+Display the version number of readelf.
+
+@item -W
+@itemx --wide
+Don't break output lines to fit into 80 columns. By default
+@command{readelf} breaks section header and segment listing lines for
+64-bit ELF files, so that they fit into 80 columns. This option causes
+@command{readelf} to print each section header resp. each segment one a
+single line, which is far more readable on terminals wider than 80 columns.
+
+@item -H
+@itemx --help
+Display the command line options understood by @command{readelf}.
+
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO readelf
+objdump(1), and the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node elfedit
+@chapter elfedit
+
+@cindex Update ELF header
+@kindex elfedit
+
+@c man title elfedit Update the ELF header of ELF files.
+
+@smallexample
+@c man begin SYNOPSIS elfedit
+elfedit [@option{--input-mach=}@var{machine}]
+ [@option{--input-type=}@var{type}]
+ [@option{--input-osabi=}@var{osabi}]
+ @option{--output-mach=}@var{machine}
+ @option{--output-type=}@var{type}
+ @option{--output-osabi=}@var{osabi}
+ [@option{-v}|@option{--version}]
+ [@option{-h}|@option{--help}]
+ @var{elffile}@dots{}
+@c man end
+@end smallexample
+
+@c man begin DESCRIPTION elfedit
+
+@command{elfedit} updates the ELF header of ELF files which have
+the matching ELF machine and file types. The options control how and
+which fields in the ELF header should be updated.
+
+@var{elffile}@dots{} are the ELF files to be updated. 32-bit and
+64-bit ELF files are supported, as are archives containing ELF files.
+@c man end
+
+@c man begin OPTIONS elfedit
+
+The long and short forms of options, shown here as alternatives, are
+equivalent. At least one of the @option{--output-mach},
+@option{--output-type} and @option{--output-osabi} options must be given.
+
+@table @env
+
+@item --input-mach=@var{machine}
+Set the matching input ELF machine type to @var{machine}. If
+@option{--input-mach} isn't specified, it will match any ELF
+machine types.
+
+The supported ELF machine types are, @var{L1OM}, @var{K1OM} and
+@var{x86-64}.
+
+@item --output-mach=@var{machine}
+Change the ELF machine type in the ELF header to @var{machine}. The
+supported ELF machine types are the same as @option{--input-mach}.
+
+@item --input-type=@var{type}
+Set the matching input ELF file type to @var{type}. If
+@option{--input-type} isn't specified, it will match any ELF file types.
+
+The supported ELF file types are, @var{rel}, @var{exec} and @var{dyn}.
+
+@item --output-type=@var{type}
+Change the ELF file type in the ELF header to @var{type}. The
+supported ELF types are the same as @option{--input-type}.
+
+@item --input-osabi=@var{osabi}
+Set the matching input ELF file OSABI to @var{osabi}. If
+@option{--input-osabi} isn't specified, it will match any ELF OSABIs.
+
+The supported ELF OSABIs are, @var{none}, @var{HPUX}, @var{NetBSD},
+@var{GNU}, @var{Linux} (alias for @var{GNU}),
+@var{Solaris}, @var{AIX}, @var{Irix},
+@var{FreeBSD}, @var{TRU64}, @var{Modesto}, @var{OpenBSD}, @var{OpenVMS},
+@var{NSK}, @var{AROS} and @var{FenixOS}.
+
+@item --output-osabi=@var{osabi}
+Change the ELF OSABI in the ELF header to @var{osabi}. The
+supported ELF OSABI are the same as @option{--input-osabi}.
+
+@item -v
+@itemx --version
+Display the version number of @command{elfedit}.
+
+@item -h
+@itemx --help
+Display the command line options understood by @command{elfedit}.
+
+@end table
+
+@c man end
+
+@ignore
+@c man begin SEEALSO elfedit
+readelf(1), and the Info entries for @file{binutils}.
+@c man end
+@end ignore
+
+@node Common Options
+@chapter Common Options
+
+The following command-line options are supported by all of the
+programs described in this manual.
+
+@c man begin OPTIONS
+@table @env
+@include at-file.texi
+@c man end
+
+@item --help
+Display the command-line options supported by the program.
+
+@item --version
+Display the version number of the program.
+
+@c man begin OPTIONS
+@end table
+@c man end
+
+@node Selecting the Target System
+@chapter Selecting the Target System
+
+You can specify two aspects of the target system to the @sc{gnu}
+binary file utilities, each in several ways:
+
+@itemize @bullet
+@item
+the target
+
+@item
+the architecture
+@end itemize
+
+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
+@option{--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 @dfn{native} (on hosts
+with the same type as the target system).
+
+@menu
+* Target Selection::
+* Architecture Selection::
+@end menu
+
+@node Target Selection
+@section Target Selection
+
+A @dfn{target} is an object file format. A given target may be
+supported for multiple architectures (@pxref{Architecture Selection}).
+A target selection may also have variations for different operating
+systems or architectures.
+
+The command to list valid target values is @samp{objdump -i}
+(the first column of output contains the relevant information).
+
+Some sample values are: @samp{a.out-hp300bsd}, @samp{ecoff-littlemips},
+@samp{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 @file{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 @file{config.sub} which is included with the
+sources.
+
+Some sample configuration triplets are: @samp{m68k-hp-bsd},
+@samp{mips-dec-ultrix}, @samp{sparc-sun-sunos}.
+
+@subheading @command{objdump} Target
+
+Ways to specify:
+
+@enumerate
+@item
+command line option: @option{-b} or @option{--target}
+
+@item
+environment variable @code{GNUTARGET}
+
+@item
+deduced from the input file
+@end enumerate
+
+@subheading @command{objcopy} and @command{strip} Input Target
+
+Ways to specify:
+
+@enumerate
+@item
+command line options: @option{-I} or @option{--input-target}, or @option{-F} or @option{--target}
+
+@item
+environment variable @code{GNUTARGET}
+
+@item
+deduced from the input file
+@end enumerate
+
+@subheading @command{objcopy} and @command{strip} Output Target
+
+Ways to specify:
+
+@enumerate
+@item
+command line options: @option{-O} or @option{--output-target}, or @option{-F} or @option{--target}
+
+@item
+the input target (see ``@command{objcopy} and @command{strip} Input Target'' above)
+
+@item
+environment variable @code{GNUTARGET}
+
+@item
+deduced from the input file
+@end enumerate
+
+@subheading @command{nm}, @command{size}, and @command{strings} Target
+
+Ways to specify:
+
+@enumerate
+@item
+command line option: @option{--target}
+
+@item
+environment variable @code{GNUTARGET}
+
+@item
+deduced from the input file
+@end enumerate
+
+@node Architecture Selection
+@section Architecture Selection
+
+An @dfn{architecture} is a type of @sc{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 @sc{cpu}.
+
+The command to list valid architecture values is @samp{objdump -i} (the
+second column contains the relevant information).
+
+Sample values: @samp{m68k:68020}, @samp{mips:3000}, @samp{sparc}.
+
+@subheading @command{objdump} Architecture
+
+Ways to specify:
+
+@enumerate
+@item
+command line option: @option{-m} or @option{--architecture}
+
+@item
+deduced from the input file
+@end enumerate
+
+@subheading @command{objcopy}, @command{nm}, @command{size}, @command{strings} Architecture
+
+Ways to specify:
+
+@enumerate
+@item
+deduced from the input file
+@end enumerate
+
+@node Reporting Bugs
+@chapter Reporting Bugs
+@cindex bugs
+@cindex 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
+@end menu
+
+@node Bug Criteria
+@section Have You Found a Bug?
+@cindex bug criteria
+
+If you are not sure whether you have found a bug, here are some guidelines:
+
+@itemize @bullet
+@cindex fatal signal
+@cindex crash
+@item
+If a binary utility gets a fatal signal, for any input whatever, that is
+a bug. Reliable utilities never crash.
+
+@cindex error on valid input
+@item
+If a binary utility produces an error message for valid input, that is a
+bug.
+
+@item
+If you are an experienced user of binary utilities, your suggestions for
+improvement are welcome in any case.
+@end itemize
+
+@node Bug Reporting
+@section How to Report Bugs
+@cindex bug reports
+@cindex bugs, reporting
+
+A number of companies and individuals offer support for @sc{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 @file{etc/SERVICE} in the @sc{gnu} Emacs
+distribution.
+
+@ifset BUGURL
+In any event, we also recommend that you send bug reports for the binary
+utilities to @value{BUGURL}.
+@end ifset
+
+The fundamental principle of reporting bugs usefully is this:
+@strong{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:
+
+@itemize @bullet
+@item
+The version of the utility. Each utility announces it if you start it
+with the @option{--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.
+
+@item
+Any patches you may have applied to the source, including any patches
+made to the @code{BFD} library.
+
+@item
+The type of machine you are using, and the operating system name and
+version number.
+
+@item
+What compiler (and its version) was used to compile the utilities---e.g.
+``@code{gcc-2.7}''.
+
+@item
+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.
+
+@item
+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.
+
+If the source files were produced exclusively using @sc{gnu} programs
+(e.g., @command{gcc}, @command{gas}, and/or the @sc{gnu} @command{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 @command{gcc}, or
+whatever, was used to produce the object files. Also say how
+@command{gcc}, or whatever, was configured.
+
+@item
+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 sync, 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.
+
+@item
+If you wish to suggest changes to the source, send us context diffs, as
+generated by @command{diff} with the @option{-u}, @option{-c}, or @option{-p}
+option. Always send diffs from the old file to the new file. If you
+wish to discuss something in the @command{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.
+@end itemize
+
+Here are some things that are not necessary:
+
+@itemize @bullet
+@item
+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 @emph{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.
+
+@item
+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.
+
+@item
+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.
+@end itemize
+
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+
+@include fdl.texi
+
+@node Binutils Index
+@unnumbered Binutils Index
+
+@printindex cp
+
+@bye
diff --git a/binutils-2.24/binutils/doc/cxxfilt.man b/binutils-2.24/binutils/doc/cxxfilt.man
new file mode 100644
index 00000000..772982e8
--- /dev/null
+++ b/binutils-2.24/binutils/doc/cxxfilt.man
@@ -0,0 +1,336 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+cxxfilt \- Demangle C++ and Java symbols.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+c++filt [\fB\-_\fR|\fB\-\-strip\-underscore\fR]
+ [\fB\-n\fR|\fB\-\-no\-strip\-underscore\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 separate 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", i.e., 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. For example:
+.PP
+.Vb 1
+\& .type _Z1fv, @function
+.Ve
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-_\fR" 4
+.IX Item "-_"
+.PD 0
+.IP "\fB\-\-strip\-underscore\fR" 4
+.IX Item "--strip-underscore"
+.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\-n\fR" 4
+.IX Item "-n"
+.PD 0
+.IP "\fB\-\-no\-strip\-underscore\fR" 4
+.IX Item "--no-strip-underscore"
+.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. For example,
+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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/dlltool.1 b/binutils-2.24/binutils/doc/dlltool.1
new file mode 100644
index 00000000..796f690e
--- /dev/null
+++ b/binutils-2.24/binutils/doc/dlltool.1
@@ -0,0 +1,529 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.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\-y\fR|\fB\-\-output\-delaylib\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\-\-use\-nul\-prefixed\-import\-tables\fR]
+ [\fB\-I\fR|\fB\-\-identify\fR \fIlibrary-file-name\fR] [\fB\-\-identify\-strict\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]
+ [\fB\-\-no\-leading\-underscore\fR] [\fB\-\-leading\-underscore\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"");
+\&
+\& 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 (an `import
+library'). 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
+If the \fB\-y\fR option is specified, dlltool generates a delay-import
+library that can be used instead of the normal import library to allow
+a program to link to the dll only as soon as an imported function is
+called for the first time. The resulting executable will need to be
+linked to the static delayimp library containing _\|\fI_delayLoadHelper2()\fR,
+which in turn will import LoadLibraryA and GetProcAddress from kernel32.
+.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
+.PP
+\&\fBdlltool\fR may also be used to query an existing import library
+to determine the name of the \s-1DLL\s0 to which it is associated. See the
+description of the \fB\-I\fR or \fB\-\-identify\fR option.
+.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\-y\fR \fIfilename\fR" 4
+.IX Item "-y filename"
+.PD 0
+.IP "\fB\-\-output\-delaylib\fR \fIfilename\fR" 4
+.IX Item "--output-delaylib filename"
+.PD
+Specifies the name of the delay-import 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@12\fR, \fBDllEntryPoint@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\-\-no\-leading\-underscore\fR" 4
+.IX Item "--no-leading-underscore"
+.PD 0
+.IP "\fB\-\-leading\-underscore\fR" 4
+.IX Item "--leading-underscore"
+.PD
+Specifies whether standard symbol should be forced to be prefixed, or
+not.
+.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\-\-use\-nul\-prefixed\-import\-tables\fR" 4
+.IX Item "--use-nul-prefixed-import-tables"
+Specifies that when \fBdlltool\fR is creating the exports and library
+files it should prefix the \f(CW\*(C`.idata4\*(C'\fR and \f(CW\*(C`.idata5\*(C'\fR by zero an
+element. This emulates old gnu import library generation of
+\&\f(CW\*(C`dlltool\*(C'\fR. By default this option is turned off.
+.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 \fIfilename\fR" 4
+.IX Item "-I filename"
+.PD 0
+.IP "\fB\-\-identify\fR \fIfilename\fR" 4
+.IX Item "--identify filename"
+.PD
+Specifies that \fBdlltool\fR should inspect the import library
+indicated by \fIfilename\fR and report, on \f(CW\*(C`stdout\*(C'\fR, the name(s)
+of the associated \s-1DLL\s0(s). This can be performed in addition to any
+other operations indicated by the other options and arguments.
+\&\fBdlltool\fR fails if the import library does not exist or is not
+actually an import library. See also \fB\-\-identify\-strict\fR.
+.IP "\fB\-\-identify\-strict\fR" 4
+.IX Item "--identify-strict"
+Modifies the behavior of the \fB\-\-identify\fR option, such
+that an error is reported if \fIfilename\fR is associated with
+more than one \s-1DLL\s0.
+.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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/elfedit.1 b/binutils-2.24/binutils/doc/elfedit.1
new file mode 100644
index 00000000..16f2cbba
--- /dev/null
+++ b/binutils-2.24/binutils/doc/elfedit.1
@@ -0,0 +1,233 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "ELFEDIT 1"
+.TH ELFEDIT 1 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+elfedit \- Update the ELF header of ELF files.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+elfedit [\fB\-\-input\-mach=\fR\fImachine\fR]
+ [\fB\-\-input\-type=\fR\fItype\fR]
+ [\fB\-\-input\-osabi=\fR\fIosabi\fR]
+ \fB\-\-output\-mach=\fR\fImachine\fR
+ \fB\-\-output\-type=\fR\fItype\fR
+ \fB\-\-output\-osabi=\fR\fIosabi\fR
+ [\fB\-v\fR|\fB\-\-version\fR]
+ [\fB\-h\fR|\fB\-\-help\fR]
+ \fIelffile\fR...
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBelfedit\fR updates the \s-1ELF\s0 header of \s-1ELF\s0 files which have
+the matching \s-1ELF\s0 machine and file types. The options control how and
+which fields in the \s-1ELF\s0 header should be updated.
+.PP
+\&\fIelffile\fR... are the \s-1ELF\s0 files to be updated. 32\-bit and
+64\-bit \s-1ELF\s0 files are supported, as are archives containing \s-1ELF\s0 files.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+The long and short forms of options, shown here as alternatives, are
+equivalent. At least one of the \fB\-\-output\-mach\fR,
+\&\fB\-\-output\-type\fR and \fB\-\-output\-osabi\fR options must be given.
+.IP "\fB\-\-input\-mach=\fR\fImachine\fR" 4
+.IX Item "--input-mach=machine"
+Set the matching input \s-1ELF\s0 machine type to \fImachine\fR. If
+\&\fB\-\-input\-mach\fR isn't specified, it will match any \s-1ELF\s0
+machine types.
+.Sp
+The supported \s-1ELF\s0 machine types are, \fIL1OM\fR, \fIK1OM\fR and
+\&\fIx86\-64\fR.
+.IP "\fB\-\-output\-mach=\fR\fImachine\fR" 4
+.IX Item "--output-mach=machine"
+Change the \s-1ELF\s0 machine type in the \s-1ELF\s0 header to \fImachine\fR. The
+supported \s-1ELF\s0 machine types are the same as \fB\-\-input\-mach\fR.
+.IP "\fB\-\-input\-type=\fR\fItype\fR" 4
+.IX Item "--input-type=type"
+Set the matching input \s-1ELF\s0 file type to \fItype\fR. If
+\&\fB\-\-input\-type\fR isn't specified, it will match any \s-1ELF\s0 file types.
+.Sp
+The supported \s-1ELF\s0 file types are, \fIrel\fR, \fIexec\fR and \fIdyn\fR.
+.IP "\fB\-\-output\-type=\fR\fItype\fR" 4
+.IX Item "--output-type=type"
+Change the \s-1ELF\s0 file type in the \s-1ELF\s0 header to \fItype\fR. The
+supported \s-1ELF\s0 types are the same as \fB\-\-input\-type\fR.
+.IP "\fB\-\-input\-osabi=\fR\fIosabi\fR" 4
+.IX Item "--input-osabi=osabi"
+Set the matching input \s-1ELF\s0 file \s-1OSABI\s0 to \fIosabi\fR. If
+\&\fB\-\-input\-osabi\fR isn't specified, it will match any \s-1ELF\s0 OSABIs.
+.Sp
+The supported \s-1ELF\s0 OSABIs are, \fInone\fR, \fI\s-1HPUX\s0\fR, \fINetBSD\fR,
+\&\fI\s-1GNU\s0\fR, \fILinux\fR (alias for \fI\s-1GNU\s0\fR),
+\&\fISolaris\fR, \fI\s-1AIX\s0\fR, \fIIrix\fR,
+\&\fIFreeBSD\fR, \fI\s-1TRU64\s0\fR, \fIModesto\fR, \fIOpenBSD\fR, \fIOpenVMS\fR,
+\&\fI\s-1NSK\s0\fR, \fI\s-1AROS\s0\fR and \fIFenixOS\fR.
+.IP "\fB\-\-output\-osabi=\fR\fIosabi\fR" 4
+.IX Item "--output-osabi=osabi"
+Change the \s-1ELF\s0 \s-1OSABI\s0 in the \s-1ELF\s0 header to \fIosabi\fR. The
+supported \s-1ELF\s0 \s-1OSABI\s0 are the same as \fB\-\-input\-osabi\fR.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Display the version number of \fBelfedit\fR.
+.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 \fBelfedit\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"
+\&\fIreadelf\fR\|(1), and the Info entries for \fIbinutils\fR.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+Copyright (c) 1991\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/fdl.texi b/binutils-2.24/binutils/doc/fdl.texi
new file mode 100644
index 00000000..8805f1a4
--- /dev/null
+++ b/binutils-2.24/binutils/doc/fdl.texi
@@ -0,0 +1,506 @@
+@c The GNU Free Documentation License.
+@center Version 1.3, 3 November 2008
+
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
+@display
+Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+@uref{http://fsf.org/}
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{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.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The ``Document'', below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as ``you''. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+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. (Thus, 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. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+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 Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+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, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification. Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
+@acronym{JPG}. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} 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.
+
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+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.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) 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 computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+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.
+
+@item
+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:
+
+@enumerate A
+@item
+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.
+
+@item
+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 fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+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.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve 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.
+
+@item
+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.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+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.
+
+@item
+Delete any section Entitled ``Endorsements''. Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+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.
+
+@item
+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, and that you preserve all their Warranty Disclaimers.
+
+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.''
+
+@item
+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.
+
+@item
+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, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which 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 half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+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, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
+@item
+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
+@uref{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. If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
+@item
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works. A
+public wiki that anybody can edit is an example of such a server. A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
+@end enumerate
+
+@page
+@heading 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:
+
+@smallexample
+@group
+ Copyright (C) @var{year} @var{your name}.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+@end group
+@end smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the ``with@dots{}Texts.'' line with this:
+
+@smallexample
+@group
+ with the Invariant Sections being @var{list their titles}, with
+ the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+ being @var{list}.
+@end group
+@end smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+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.
+
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
diff --git a/binutils-2.24/binutils/doc/nlmconv.1 b/binutils-2.24/binutils/doc/nlmconv.1
new file mode 100644
index 00000000..26b22f3c
--- /dev/null
+++ b/binutils-2.24/binutils/doc/nlmconv.1
@@ -0,0 +1,242 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/nm.1 b/binutils-2.24/binutils/doc/nm.1
new file mode 100644
index 00000000..793b5f3a
--- /dev/null
+++ b/binutils-2.24/binutils/doc/nm.1
@@ -0,0 +1,530 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+nm \- list symbols from object files
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+nm [\fB\-A\fR|\fB\-o\fR|\fB\-\-print\-file\-name\fR] [\fB\-a\fR|\fB\-\-debug\-syms\fR]
+ [\fB\-B\fR|\fB\-\-format=bsd\fR] [\fB\-C\fR|\fB\-\-demangle\fR[=\fIstyle\fR]]
+ [\fB\-D\fR|\fB\-\-dynamic\fR] [\fB\-f\fR\fIformat\fR|\fB\-\-format=\fR\fIformat\fR]
+ [\fB\-g\fR|\fB\-\-extern\-only\fR] [\fB\-h\fR|\fB\-\-help\fR]
+ [\fB\-l\fR|\fB\-\-line\-numbers\fR] [\fB\-n\fR|\fB\-v\fR|\fB\-\-numeric\-sort\fR]
+ [\fB\-P\fR|\fB\-\-portability\fR] [\fB\-p\fR|\fB\-\-no\-sort\fR]
+ [\fB\-r\fR|\fB\-\-reverse\-sort\fR] [\fB\-S\fR|\fB\-\-print\-size\fR]
+ [\fB\-s\fR|\fB\-\-print\-armap\fR] [\fB\-t\fR \fIradix\fR|\fB\-\-radix=\fR\fIradix\fR]
+ [\fB\-u\fR|\fB\-\-undefined\-only\fR] [\fB\-V\fR|\fB\-\-version\fR]
+ [\fB\-X 32_64\fR] [\fB\-\-defined\-only\fR] [\fB\-\-no\-demangle\fR]
+ [\fB\-\-plugin\fR \fIname\fR] [\fB\-\-size\-sort\fR] [\fB\-\-special\-syms\fR]
+ [\fB\-\-synthetic\fR] [\fB\-\-target=\fR\fIbfdname\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
+usually local; if uppercase, the symbol is global (external). There
+are however a few lowercase symbols that are shown for special global
+symbols (\f(CW\*(C`u\*(C'\fR, \f(CW\*(C`v\*(C'\fR and \f(CW\*(C`w\*(C'\fR).
+.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"
+.PD 0
+.ie n .IP """b""" 4
+.el .IP "\f(CWb\fR" 4
+.IX Item "b"
+.PD
+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"
+.PD 0
+.ie n .IP """d""" 4
+.el .IP "\f(CWd\fR" 4
+.IX Item "d"
+.PD
+The symbol is in the initialized data section.
+.ie n .IP """G""" 4
+.el .IP "\f(CWG\fR" 4
+.IX Item "G"
+.PD 0
+.ie n .IP """g""" 4
+.el .IP "\f(CWg\fR" 4
+.IX Item "g"
+.PD
+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"
+For \s-1PE\s0 format files this indicates that the symbol is in a section
+specific to the implementation of DLLs. For \s-1ELF\s0 format files this
+indicates that the symbol is an indirect function. This is a \s-1GNU\s0
+extension to the standard set of \s-1ELF\s0 symbol types. It indicates a
+symbol which if referenced by a relocation does not evaluate to its
+address, but instead must be invoked at runtime. The runtime
+execution will then return the value to be used in the relocation.
+.ie n .IP """I""" 4
+.el .IP "\f(CWI\fR" 4
+.IX Item "I"
+The symbol is an indirect reference to another symbol.
+.ie n .IP """N""" 4
+.el .IP "\f(CWN\fR" 4
+.IX Item "N"
+The symbol is a debugging symbol.
+.ie n .IP """p""" 4
+.el .IP "\f(CWp\fR" 4
+.IX Item "p"
+The symbols is in a stack unwind section.
+.ie n .IP """R""" 4
+.el .IP "\f(CWR\fR" 4
+.IX Item "R"
+.PD 0
+.ie n .IP """r""" 4
+.el .IP "\f(CWr\fR" 4
+.IX Item "r"
+.PD
+The symbol is in a read only data section.
+.ie n .IP """S""" 4
+.el .IP "\f(CWS\fR" 4
+.IX Item "S"
+.PD 0
+.ie n .IP """s""" 4
+.el .IP "\f(CWs\fR" 4
+.IX Item "s"
+.PD
+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"
+.PD 0
+.ie n .IP """t""" 4
+.el .IP "\f(CWt\fR" 4
+.IX Item "t"
+.PD
+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 """u""" 4
+.el .IP "\f(CWu\fR" 4
+.IX Item "u"
+The symbol is a unique global symbol. This is a \s-1GNU\s0 extension to the
+standard set of \s-1ELF\s0 symbol bindings. For such a symbol the dynamic linker
+will make sure that in the entire process there is just one symbol with
+this name and type in use.
+.ie n .IP """V""" 4
+.el .IP "\f(CWV\fR" 4
+.IX Item "V"
+.PD 0
+.ie n .IP """v""" 4
+.el .IP "\f(CWv\fR" 4
+.IX Item "v"
+.PD
+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. On some
+systems, uppercase indicates that a default value has been specified.
+.ie n .IP """W""" 4
+.el .IP "\f(CWW\fR" 4
+.IX Item "W"
+.PD 0
+.ie n .IP """w""" 4
+.el .IP "\f(CWw\fR" 4
+.IX Item "w"
+.PD
+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\-h\fR" 4
+.IX Item "-h"
+.PD 0
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+.PD
+Show a summary of the options to \fBnm\fR and exit.
+.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\-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\-S\fR" 4
+.IX Item "-S"
+.PD 0
+.IP "\fB\-\-print\-size\fR" 4
+.IX Item "--print-size"
+.PD
+Print both value and size of defined symbols for the \f(CW\*(C`bsd\*(C'\fR output style.
+This option has no effect for object formats that do not record symbol
+sizes, unless \fB\-\-size\-sort\fR is also used in which case a
+calculated size is displayed.
+.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\-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\-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\-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\-\-defined\-only\fR" 4
+.IX Item "--defined-only"
+Display only defined symbols for each object file.
+.IP "\fB\-\-plugin\fR \fIname\fR" 4
+.IX Item "--plugin name"
+Load the plugin called \fIname\fR to add support for extra target
+types. This option is only available if the toolchain has been built
+with plugin support enabled.
+.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 in the normal symbol lists.
+For example for \s-1ARM\s0 targets this option would skip the mapping symbols
+used to mark transitions between \s-1ARM\s0 code, \s-1THUMB\s0 code and data.
+.IP "\fB\-\-synthetic\fR" 4
+.IX Item "--synthetic"
+Include synthetic symbols in the output. These are special symbols
+created by the linker for various purposes. They are not shown by
+default since they are not part of the binary's original source code.
+.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@\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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/objcopy.1 b/binutils-2.24/binutils/doc/objcopy.1
new file mode 100644
index 00000000..25004e03
--- /dev/null
+++ b/binutils-2.24/binutils/doc/objcopy.1
@@ -0,0 +1,1012 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.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\-\-localize\-hidden\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 [\fIbreadth\fR]|\fB\-\-interleave\fR[=\fIbreadth\fR]]
+ [\fB\-\-interleave\-width=\fR\fIwidth\fR]
+ [\fB\-j\fR \fIsectionpattern\fR|\fB\-\-only\-section=\fR\fIsectionpattern\fR]
+ [\fB\-R\fR \fIsectionpattern\fR|\fB\-\-remove\-section=\fR\fIsectionpattern\fR]
+ [\fB\-p\fR|\fB\-\-preserve\-dates\fR]
+ [\fB\-D\fR|\fB\-\-enable\-deterministic\-archives\fR]
+ [\fB\-U\fR|\fB\-\-disable\-deterministic\-archives\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 \fIsectionpattern\fR{=,+,\-}\fIval\fR]
+ [\fB\-\-change\-section\-lma\fR \fIsectionpattern\fR{=,+,\-}\fIval\fR]
+ [\fB\-\-change\-section\-vma\fR \fIsectionpattern\fR{=,+,\-}\fIval\fR]
+ [\fB\-\-change\-warnings\fR] [\fB\-\-no\-change\-warnings\fR]
+ [\fB\-\-set\-section\-flags\fR \fIsectionpattern\fR=\fIflags\fR]
+ [\fB\-\-add\-section\fR \fIsectionname\fR=\fIfilename\fR]
+ [\fB\-\-rename\-section\fR \fIoldname\fR=\fInewname\fR[,\fIflags\fR]]
+ [\fB\-\-long\-section\-names\fR {enable,disable,keep}]
+ [\fB\-\-change\-leading\-char\fR] [\fB\-\-remove\-leading\-char\fR]
+ [\fB\-\-reverse\-bytes=\fR\fInum\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\-\-strip\-dwo\fR]
+ [\fB\-\-extract\-dwo\fR]
+ [\fB\-\-extract\-symbol\fR]
+ [\fB\-\-writable\-text\fR]
+ [\fB\-\-readonly\-text\fR]
+ [\fB\-\-pure\fR]
+ [\fB\-\-impure\fR]
+ [\fB\-\-file\-alignment=\fR\fInum\fR]
+ [\fB\-\-heap=\fR\fIsize\fR]
+ [\fB\-\-image\-base=\fR\fIaddress\fR]
+ [\fB\-\-section\-alignment=\fR\fInum\fR]
+ [\fB\-\-stack=\fR\fIsize\fR]
+ [\fB\-\-subsystem=\fR\fIwhich\fR:\fImajor\fR.\fIminor\fR]
+ [\fB\-\-compress\-debug\-sections\fR]
+ [\fB\-\-decompress\-debug\-sections\fR]
+ [\fB\-\-dwarf\-depth=\fR\fIn\fR]
+ [\fB\-\-dwarf\-start=\fR\fIn\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).
+(However, see the \fB\-\-reverse\-bytes\fR option.)
+.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 architecture-less 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 \fIsectionpattern\fR" 4
+.IX Item "-j sectionpattern"
+.PD 0
+.IP "\fB\-\-only\-section=\fR\fIsectionpattern\fR" 4
+.IX Item "--only-section=sectionpattern"
+.PD
+Copy only the indicated sections 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. Wildcard
+characters are accepted in \fIsectionpattern\fR.
+.IP "\fB\-R\fR \fIsectionpattern\fR" 4
+.IX Item "-R sectionpattern"
+.PD 0
+.IP "\fB\-\-remove\-section=\fR\fIsectionpattern\fR" 4
+.IX Item "--remove-section=sectionpattern"
+.PD
+Remove any section matching \fIsectionpattern\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. Wildcard
+characters are accepted in \fIsectionpattern\fR. Using both the
+\&\fB\-j\fR and \fB\-R\fR options together results in undefined
+behaviour.
+.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\-\-localize\-hidden\fR" 4
+.IX Item "--localize-hidden"
+In an \s-1ELF\s0 object, mark all symbols that have hidden or internal visibility
+as local. This option applies on top of symbol-specific localization options
+such as \fB\-L\fR.
+.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
+If interleaving has been enabled via the \fB\-\-interleave\fR option
+then start the range of bytes to keep at the \fIbyte\fRth byte.
+\&\fIbyte\fR can be in the range from 0 to \fIbreadth\fR\-1, where
+\&\fIbreadth\fR is the value given by the \fB\-\-interleave\fR option.
+.IP "\fB\-i [\fR\fIbreadth\fR\fB]\fR" 4
+.IX Item "-i [breadth]"
+.PD 0
+.IP "\fB\-\-interleave[=\fR\fIbreadth\fR\fB]\fR" 4
+.IX Item "--interleave[=breadth]"
+.PD
+Only copy a range out of every \fIbreadth\fR bytes. (Header data is
+not affected). Select which byte in the range begins the copy with
+the \fB\-\-byte\fR option. Select the width of the range with the
+\&\fB\-\-interleave\-width\fR option.
+.Sp
+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. Note that
+\&\fBobjcopy\fR will complain if you do not specify the
+\&\fB\-\-byte\fR option as well.
+.Sp
+The default interleave breadth is 4, so with \fB\-\-byte\fR set to 0,
+\&\fBobjcopy\fR would copy the first byte out of every four bytes
+from the input to the output.
+.IP "\fB\-\-interleave\-width=\fR\fIwidth\fR" 4
+.IX Item "--interleave-width=width"
+When used with the \fB\-\-interleave\fR option, copy \fIwidth\fR
+bytes at a time. The start of the range of bytes to be copied is set
+by the \fB\-\-byte\fR option, and the extent of the range is set with
+the \fB\-\-interleave\fR option.
+.Sp
+The default value for this option is 1. The value of \fIwidth\fR plus
+the \fIbyte\fR value set by the \fB\-\-byte\fR option must not exceed
+the interleave breadth set by the \fB\-\-interleave\fR option.
+.Sp
+This option can be used to create images for two 16\-bit flashes interleaved
+in a 32\-bit bus by passing \fB\-b 0 \-i 4 \-\-interleave\-width=2\fR
+and \fB\-b 2 \-i 4 \-\-interleave\-width=2\fR to two \fBobjcopy\fR
+commands. If the input was '12345678' then the outputs would be
+\&'1256' and '3478' respectively.
+.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\-D\fR" 4
+.IX Item "-D"
+.PD 0
+.IP "\fB\-\-enable\-deterministic\-archives\fR" 4
+.IX Item "--enable-deterministic-archives"
+.PD
+Operate in \fIdeterministic\fR mode. When copying archive members
+and writing the archive index, use zero for UIDs, GIDs, timestamps,
+and use consistent file modes for all files.
+.Sp
+If \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by default.
+It can be disabled with the \fB\-U\fR option, below.
+.IP "\fB\-U\fR" 4
+.IX Item "-U"
+.PD 0
+.IP "\fB\-\-disable\-deterministic\-archives\fR" 4
+.IX Item "--disable-deterministic-archives"
+.PD
+Do \fInot\fR operate in \fIdeterministic\fR mode. This is the
+inverse of the \fB\-D\fR option, above: when copying archive members
+and writing the archive index, use their actual \s-1UID\s0, \s-1GID\s0, timestamp,
+and file mode values.
+.Sp
+This is the default unless \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR.
+.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 \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4
+.IX Item "--change-section-address sectionpattern{=,+,-}val"
+.PD 0
+.IP "\fB\-\-adjust\-section\-vma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4
+.IX Item "--adjust-section-vma sectionpattern{=,+,-}val"
+.PD
+Set or change both the \s-1VMA\s0 address and the \s-1LMA\s0 address of any section
+matching \fIsectionpattern\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 \fIsectionpattern\fR does not
+match any sections in the input file, a warning will be issued, unless
+\&\fB\-\-no\-change\-warnings\fR is used.
+.IP "\fB\-\-change\-section\-lma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4
+.IX Item "--change-section-lma sectionpattern{=,+,-}val"
+Set or change the \s-1LMA\s0 address of any sections matching
+\&\fIsectionpattern\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
+\&\fIsectionpattern\fR does not match any sections in the input file, a
+warning will be issued, unless \fB\-\-no\-change\-warnings\fR is used.
+.IP "\fB\-\-change\-section\-vma\fR \fIsectionpattern\fR\fB{=,+,\-}\fR\fIval\fR" 4
+.IX Item "--change-section-vma sectionpattern{=,+,-}val"
+Set or change the \s-1VMA\s0 address of any section matching
+\&\fIsectionpattern\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 \fIsectionpattern\fR does not match any sections 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 section pattern does not
+match any sections, 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 section pattern does not match any sections.
+.IP "\fB\-\-set\-section\-flags\fR \fIsectionpattern\fR\fB=\fR\fIflags\fR" 4
+.IX Item "--set-section-flags sectionpattern=flags"
+Set the flags for any sections matching \fIsectionpattern\fR. 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\-\-long\-section\-names {enable,disable,keep}\fR" 4
+.IX Item "--long-section-names {enable,disable,keep}"
+Controls the handling of long section names when processing \f(CW\*(C`COFF\*(C'\fR
+and \f(CW\*(C`PE\-COFF\*(C'\fR object formats. The default behaviour, \fBkeep\fR,
+is to preserve long section names if any are present in the input file.
+The \fBenable\fR and \fBdisable\fR options forcibly enable or disable
+the use of long section names in the output object; when \fBdisable\fR
+is in effect, any long section names in the input object will be truncated.
+The \fBenable\fR option will only emit long section names if any are
+present in the inputs; this is mostly the same as \fBkeep\fR, but it
+is left undefined whether the \fBenable\fR option might force the
+creation of an empty string table in the output file.
+.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\-\-reverse\-bytes=\fR\fInum\fR" 4
+.IX Item "--reverse-bytes=num"
+Reverse the bytes in a section with output contents. A section length must
+be evenly divisible by the value given in order for the swap to be able to
+take place. Reversing takes place before the interleaving is performed.
+.Sp
+This option is used typically in generating \s-1ROM\s0 images for problematic
+target systems. For example, on some target boards, the 32\-bit words
+fetched from 8\-bit ROMs are re-assembled in little-endian byte order
+regardless of the \s-1CPU\s0 byte order. Depending on the programming model, the
+endianness of the \s-1ROM\s0 may need to be modified.
+.Sp
+Consider a simple file with a section containing the following eight
+bytes: \f(CW12345678\fR.
+.Sp
+Using \fB\-\-reverse\-bytes=2\fR for the above example, the bytes in the
+output file would be ordered \f(CW21436587\fR.
+.Sp
+Using \fB\-\-reverse\-bytes=4\fR for the above example, the bytes in the
+output file would be ordered \f(CW43218765\fR.
+.Sp
+By using \fB\-\-reverse\-bytes=2\fR for the above example, followed by
+\&\fB\-\-reverse\-bytes=4\fR on the output file, the bytes in the second
+output file would be ordered \f(CW34127856\fR.
+.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. In \s-1ELF\s0 files, this preserves all note sections in the output.
+.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"" to ""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.
+.Sp
+Note\-\-\-this switch is only intended for use on fully linked files. It
+does not make sense to use it on object files where the debugging
+information may be incomplete. Besides the gnu_debuglink feature
+currently only supports the presence of one filename containing
+debugging information, not multiple filenames on a one-per-object-file
+basis.
+.RE
+.IP "\fB\-\-strip\-dwo\fR" 4
+.IX Item "--strip-dwo"
+Remove the contents of all \s-1DWARF\s0 .dwo sections, leaving the
+remaining debugging sections and all symbols intact.
+This option is intended for use by the compiler as part of
+the \fB\-gsplit\-dwarf\fR option, which splits debug information
+between the .o file and a separate .dwo file. The compiler
+generates all debug information in the same file, then uses
+the \fB\-\-extract\-dwo\fR option to copy the .dwo sections to
+the .dwo file, then the \fB\-\-strip\-dwo\fR option to remove
+those sections from the original .o file.
+.IP "\fB\-\-extract\-dwo\fR" 4
+.IX Item "--extract-dwo"
+Extract the contents of all \s-1DWARF\s0 .dwo sections. See the
+\&\fB\-\-strip\-dwo\fR option for more information.
+.IP "\fB\-\-file\-alignment\fR \fInum\fR" 4
+.IX Item "--file-alignment num"
+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 \s-1PE\s0 targets.]
+.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 number of bytes of memory to reserve (and optionally commit)
+to be used as heap for this program.
+[This option is specific to \s-1PE\s0 targets.]
+.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 \s-1PE\s0 targets.]
+.IP "\fB\-\-section\-alignment\fR \fInum\fR" 4
+.IX Item "--section-alignment num"
+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 \s-1PE\s0 targets.]
+.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 number of bytes of memory to reserve (and optionally commit)
+to be used as stack for this program.
+[This option is specific to \s-1PE\s0 targets.]
+.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, \f(CW\*(C`efi\-app\*(C'\fR, \f(CW\*(C`efi\-bsd\*(C'\fR,
+\&\f(CW\*(C`efi\-rtd\*(C'\fR, \f(CW\*(C`sal\-rtd\*(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 \s-1PE\s0 targets.]
+.IP "\fB\-\-extract\-symbol\fR" 4
+.IX Item "--extract-symbol"
+Keep the file's section flags and symbols but remove all section data.
+Specifically, the option:
+.RS 4
+.IP "*<removes the contents of all sections;>" 4
+.IX Item "*<removes the contents of all sections;>"
+.PD 0
+.IP "*<sets the size of every section to zero; and>" 4
+.IX Item "*<sets the size of every section to zero; and>"
+.IP "*<sets the file's start address to zero.>" 4
+.IX Item "*<sets the file's start address to zero.>"
+.RE
+.RS 4
+.PD
+.Sp
+This option is used to build a \fI.sym\fR file for a VxWorks kernel.
+It can also be a useful way of reducing the size of a \fB\-\-just\-symbols\fR
+linker input file.
+.RE
+.IP "\fB\-\-compress\-debug\-sections\fR" 4
+.IX Item "--compress-debug-sections"
+Compress \s-1DWARF\s0 debug sections using zlib.
+.IP "\fB\-\-decompress\-debug\-sections\fR" 4
+.IX Item "--decompress-debug-sections"
+Decompress \s-1DWARF\s0 debug sections using zlib.
+.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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/objdump.1 b/binutils-2.24/binutils/doc/objdump.1
new file mode 100644
index 00000000..4170414d
--- /dev/null
+++ b/binutils-2.24/binutils/doc/objdump.1
@@ -0,0 +1,842 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.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\-F\fR|\fB\-\-file\-offsets\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\-P\fR \fIoptions\fR|\fB\-\-private=\fR\fIoptions\fR]
+ [\fB\-r\fR|\fB\-\-reloc\fR]
+ [\fB\-R\fR|\fB\-\-dynamic\-reloc\fR]
+ [\fB\-s\fR|\fB\-\-full\-contents\fR]
+ [\fB\-W[lLiaprmfFsoRt]\fR|
+ \fB\-\-dwarf\fR[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames\-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]]
+ [\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\-\-prefix=\fR\fIprefix\fR]
+ [\fB\-\-prefix\-strip=\fR\fIlevel\fR]
+ [\fB\-\-insn\-width=\fR\fIwidth\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,\-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 \s-1STABS\s0 and \s-1IEEE\s0
+debugging format information stored in the file and print it out using
+a C like syntax. If neither of these formats are found this option
+falls back on the \fB\-W\fR option to print any \s-1DWARF\s0 information in
+the file.
+.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.
+.Sp
+If the target is an \s-1ARM\s0 architecture this switch also has the effect
+of forcing the disassembler to decode pieces of data found in code
+sections as if they were 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\-F\fR" 4
+.IX Item "-F"
+.PD 0
+.IP "\fB\-\-file\-offsets\fR" 4
+.IX Item "--file-offsets"
+.PD
+When disassembling sections, whenever a symbol is displayed, also
+display the file offset of the region of data that is about to be
+dumped. If zeroes are being skipped, then when disassembly resumes,
+tell the user how many zeroes were skipped and the file offset of the
+location from where the disassembly resumes. When dumping sections,
+display the file offset of the location from where the dump starts.
+.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.
+.Sp
+If the target is an \s-1ARM\s0 architecture then this switch has an
+additional effect. It restricts the disassembly to only those
+instructions supported by the architecture specified by \fImachine\fR.
+If it is necessary to use this switch because the input file does not
+contain any architecture information, but it is also desired to
+disassemble all the instructions use \fB\-marm\fR.
+.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.
+\&\fBintel-mnemonic\fR and \fBatt-mnemonic\fR select between
+intel mnemonic mode and \s-1AT&T\s0 mnemonic mode. \fBintel-mnemonic\fR
+implies \fBintel\fR and \fBatt-mnemonic\fR implies \fBatt\fR.
+\&\fBaddr64\fR, \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 PowerPC, \fBbooke\fR controls the disassembly of BookE
+instructions. \fB32\fR and \fB64\fR select PowerPC and
+PowerPC64 disassembly, respectively. \fBe300\fR selects
+disassembly for the e300 family. \fB440\fR selects disassembly for
+the PowerPC 440. \fBppcps\fR selects disassembly for the paired
+single instructions of the \s-1PPC750CL\s0.
+.Sp
+For \s-1MIPS\s0, this option controls the printing of instruction mnemonic
+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 mnemonic instead of some pseudo
+instruction mnemonic. I.e., print 'daddu' or 'or' instead of 'move',
+\&'sll' instead of 'nop', etc.
+.ie n .IP """virt""" 4
+.el .IP "\f(CWvirt\fR" 4
+.IX Item "virt"
+Disassemble the virtualization \s-1ASE\s0 instructions.
+.ie n .IP """gpr\-names=\f(CIABI\f(CW""" 4
+.el .IP "\f(CWgpr\-names=\f(CIABI\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(CIABI\f(CW""" 4
+.el .IP "\f(CWfpr\-names=\f(CIABI\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(CIARCH\f(CW""" 4
+.el .IP "\f(CWcp0\-names=\f(CIARCH\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(CIARCH\f(CW""" 4
+.el .IP "\f(CWhwr\-names=\f(CIARCH\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(CIABI\f(CW""" 4
+.el .IP "\f(CWreg\-names=\f(CIABI\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(CIARCH\f(CW""" 4
+.el .IP "\f(CWreg\-names=\f(CIARCH\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 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\-P\fR \fIoptions\fR" 4
+.IX Item "-P options"
+.PD 0
+.IP "\fB\-\-private=\fR\fIoptions\fR" 4
+.IX Item "--private=options"
+.PD
+Print information that is specific to the object file format. The
+argument \fIoptions\fR is a comma separated list that depends on the
+format (the lists of options is displayed with the help).
+.Sp
+For \s-1XCOFF\s0, the available options are: \fBheader\fR, \fBaout\fR,
+\&\fBsections\fR, \fBsyms\fR, \fBrelocs\fR, \fBlineno\fR,
+\&\fBloader\fR, \fBexcept\fR, \fBtypchk\fR, \fBtraceback\fR,
+\&\fBtoc\fR and \fBldinfo\fR.
+.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. As for \fB\-r\fR, if used with \fB\-d\fR or
+\&\fB\-D\fR, the relocations are printed interspersed with the
+disassembly.
+.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\-\-prefix=\fR\fIprefix\fR" 4
+.IX Item "--prefix=prefix"
+Specify \fIprefix\fR to add to the absolute paths when used with
+\&\fB\-S\fR.
+.IP "\fB\-\-prefix\-strip=\fR\fIlevel\fR" 4
+.IX Item "--prefix-strip=level"
+Indicate how many initial directory names to strip off the hardwired
+absolute paths. It has no effect without \fB\-\-prefix=\fR\fIprefix\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\-\-insn\-width=\fR\fIwidth\fR" 4
+.IX Item "--insn-width=width"
+Display \fIwidth\fR bytes on a single line when disassembling
+instructions.
+.IP "\fB\-W[lLiaprmfFsoRt]\fR" 4
+.IX Item "-W[lLiaprmfFsoRt]"
+.PD 0
+.IP "\fB\-\-dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames\-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]\fR" 4
+.IX Item "--dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]"
+.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.
+.Sp
+Note that there is no single letter option to display the content of
+trace sections or .gdb_index.
+.Sp
+Note: the output from the \fB=info\fR option can also be affected
+by the options \fB\-\-dwarf\-depth\fR, the \fB\-\-dwarf\-start\fR and
+the \fB\-\-dwarf\-check\fR.
+.IP "\fB\-\-dwarf\-depth=\fR\fIn\fR" 4
+.IX Item "--dwarf-depth=n"
+Limit the dump of the \f(CW\*(C`.debug_info\*(C'\fR section to \fIn\fR children.
+This is only useful with \fB\-\-dwarf=info\fR. The default is
+to print all DIEs; the special value 0 for \fIn\fR will also have this
+effect.
+.Sp
+With a non-zero value for \fIn\fR, DIEs at or deeper than \fIn\fR
+levels will not be printed. The range for \fIn\fR is zero-based.
+.IP "\fB\-\-dwarf\-start=\fR\fIn\fR" 4
+.IX Item "--dwarf-start=n"
+Print only DIEs beginning with the \s-1DIE\s0 numbered \fIn\fR. This is only
+useful with \fB\-\-dwarf=info\fR.
+.Sp
+If specified, this option will suppress printing of any header
+information and all DIEs before the \s-1DIE\s0 numbered \fIn\fR. Only
+siblings and children of the specified \s-1DIE\s0 will be printed.
+.Sp
+This can be used in conjunction with \fB\-\-dwarf\-depth\fR.
+.IP "\fB\-\-dwarf\-check\fR" 4
+.IX Item "--dwarf-check"
+Enable additional checks for consistency of Dwarf information.
+.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,
+although the display format is different. The format of the output
+depends upon the format of the file being dumped, but there are two main
+types. One looks like this:
+.Sp
+.Vb 2
+\& [ 4](sec 3)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00000000 .bss
+\& [ 6](sec 1)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 fred
+.Ve
+.Sp
+where the number inside the square brackets is the number of the entry
+in the symbol table, the \fIsec\fR number is the section number, the
+\&\fIfl\fR value are the symbol's flag bits, the \fIty\fR number is the
+symbol's type, the \fIscl\fR number is the symbol's storage class and
+the \fInx\fR value is the number of auxilary entries associated with
+the symbol. The last two fields are the symbol's value and its name.
+.Sp
+The other common output format, usually seen with \s-1ELF\s0 based files,
+looks like this:
+.Sp
+.Vb 2
+\& 00000000 l d .bss 00000000 .bss
+\& 00000000 g .text 00000000 fred
+.Ve
+.Sp
+Here the first number is the symbol's value (sometimes refered to as
+its address). The next field is actually a set of characters and
+spaces indicating the flag bits that are set on the symbol. These
+characters are described below. Next is the section with which the
+symbol is associated or \fI*ABS*\fR if the section is absolute (ie
+not connected with any section), or \fI*UND*\fR if the section is
+referenced in the file being dumped, but not defined there.
+.Sp
+After the section name comes another field, a number, which for common
+symbols is the alignment and for other symbol is the size. Finally
+the symbol's name is displayed.
+.Sp
+The flag characters are divided into 7 groups as follows:
+.RS 4
+.ie n .IP """l""" 4
+.el .IP "\f(CWl\fR" 4
+.IX Item "l"
+.PD 0
+.ie n .IP """g""" 4
+.el .IP "\f(CWg\fR" 4
+.IX Item "g"
+.ie n .IP """u""" 4
+.el .IP "\f(CWu\fR" 4
+.IX Item "u"
+.ie n .IP """!""" 4
+.el .IP "\f(CW!\fR" 4
+.IX Item "!"
+.PD
+The symbol is a local (l), global (g), unique global (u), neither
+global nor local (a space) or both global and local (!). A
+symbol can be neither local or global for a variety of reasons, e.g.,
+because it is used for debugging, but it is probably an indication of
+a bug if it is ever both local and global. Unique global symbols are
+a \s-1GNU\s0 extension to the standard set of \s-1ELF\s0 symbol bindings. For such
+a symbol the dynamic linker will make sure that in the entire process
+there is just one symbol with this name and type in use.
+.ie n .IP """w""" 4
+.el .IP "\f(CWw\fR" 4
+.IX Item "w"
+The symbol is weak (w) or strong (a space).
+.ie n .IP """C""" 4
+.el .IP "\f(CWC\fR" 4
+.IX Item "C"
+The symbol denotes a constructor (C) or an ordinary symbol (a space).
+.ie n .IP """W""" 4
+.el .IP "\f(CWW\fR" 4
+.IX Item "W"
+The symbol is a warning (W) or a normal symbol (a space). A warning
+symbol's name is a message to be displayed if the symbol following the
+warning symbol is ever referenced.
+.ie n .IP """I""" 4
+.el .IP "\f(CWI\fR" 4
+.IX Item "I"
+.PD 0
+.ie n .IP """i""" 4
+.el .IP "\f(CWi\fR" 4
+.IX Item "i"
+.PD
+The symbol is an indirect reference to another symbol (I), a function
+to be evaluated during reloc processing (i) or a normal symbol (a
+space).
+.ie n .IP """d""" 4
+.el .IP "\f(CWd\fR" 4
+.IX Item "d"
+.PD 0
+.ie n .IP """D""" 4
+.el .IP "\f(CWD\fR" 4
+.IX Item "D"
+.PD
+The symbol is a debugging symbol (d) or a dynamic symbol (D) or a
+normal symbol (a space).
+.ie n .IP """F""" 4
+.el .IP "\f(CWF\fR" 4
+.IX Item "F"
+.PD 0
+.ie n .IP """f""" 4
+.el .IP "\f(CWf\fR" 4
+.IX Item "f"
+.ie n .IP """O""" 4
+.el .IP "\f(CWO\fR" 4
+.IX Item "O"
+.PD
+The symbol is the name of a function (F) or a file (f) or an object
+(O) or just a normal symbol (a space).
+.RE
+.RS 4
+.RE
+.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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/ranlib.1 b/binutils-2.24/binutils/doc/ranlib.1
new file mode 100644
index 00000000..718f5bd3
--- /dev/null
+++ b/binutils-2.24/binutils/doc/ranlib.1
@@ -0,0 +1,218 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+ranlib \- generate index to archive.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+ranlib [\fB\-\-plugin\fR \fIname\fR] [\fB\-DhHvVt\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\-h\fR" 4
+.IX Item "-h"
+.PD 0
+.IP "\fB\-H\fR" 4
+.IX Item "-H"
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+.PD
+Show usage information for \fBranlib\fR.
+.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\-D\fR" 4
+.IX Item "-D"
+Operate in \fIdeterministic\fR mode. The symbol map archive member's
+header will show zero for the \s-1UID\s0, \s-1GID\s0, and timestamp. When this
+option is used, multiple runs will produce identical output files.
+.Sp
+If \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by
+default. It can be disabled with the \fB\-U\fR option, described
+below.
+.IP "\fB\-t\fR" 4
+.IX Item "-t"
+Update the timestamp of the symbol map of an archive.
+.IP "\fB\-U\fR" 4
+.IX Item "-U"
+Do \fInot\fR operate in \fIdeterministic\fR mode. This is the
+inverse of the \fB\-D\fR option, above: the archive index will get
+actual \s-1UID\s0, \s-1GID\s0, timestamp, and file mode values.
+.Sp
+If \fIbinutils\fR was configured \fIwithout\fR
+\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by
+default.
+.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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/readelf.1 b/binutils-2.24/binutils/doc/readelf.1
new file mode 100644
index 00000000..2cbec0f6
--- /dev/null
+++ b/binutils-2.24/binutils/doc/readelf.1
@@ -0,0 +1,448 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.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\-\-dyn\-syms\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\-p\fR <number or name>|\fB\-\-string\-dump=\fR<number or name>]
+ [\fB\-R\fR <number or name>|\fB\-\-relocated\-dump=\fR<number or name>]
+ [\fB\-c\fR|\fB\-\-archive\-index\fR]
+ [\fB\-w[lLiaprmfFsoRt]\fR|
+ \fB\-\-debug\-dump\fR[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames\-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]]
+ [\fB\-\-dwarf\-depth=\fR\fIn\fR]
+ [\fB\-\-dwarf\-start=\fR\fIn\fR]
+ [\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 specifying \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\-\-dyn\-syms\fR" 4
+.IX Item "--dyn-syms"
+Displays the entries in dynamic 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, as well as \s-1ARM\s0 unwind tables
+(\f(CW\*(C`.ARM.exidx\*(C'\fR / \f(CW\*(C`.ARM.extab\*(C'\fR) 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 hash tables in the file's dynamic section, rather than the
+symbol table sections.
+.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 bytes.
+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\-R <number or name>\fR" 4
+.IX Item "-R <number or name>"
+.PD 0
+.IP "\fB\-\-relocated\-dump=<number or name>\fR" 4
+.IX Item "--relocated-dump=<number or name>"
+.PD
+Displays the contents of the indicated section as a hexadecimal
+bytes. 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. The contents of the section will be relocated
+before they are displayed.
+.IP "\fB\-p <number or name>\fR" 4
+.IX Item "-p <number or name>"
+.PD 0
+.IP "\fB\-\-string\-dump=<number or name>\fR" 4
+.IX Item "--string-dump=<number or name>"
+.PD
+Displays the contents of the indicated section as printable strings.
+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\-c\fR" 4
+.IX Item "-c"
+.PD 0
+.IP "\fB\-\-archive\-index\fR" 4
+.IX Item "--archive-index"
+.PD
+Displays the file symbol index information contained in the header part
+of binary archives. Performs the same function as the \fBt\fR
+command to \fBar\fR, but without using the \s-1BFD\s0 library.
+.IP "\fB\-w[lLiaprmfFsoRt]\fR" 4
+.IX Item "-w[lLiaprmfFsoRt]"
+.PD 0
+.IP "\fB\-\-debug\-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames\-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]\fR" 4
+.IX Item "--debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=trace_info,=trace_abbrev,=trace_aranges,=gdb_index]"
+.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.
+.Sp
+Note that there is no single letter option to display the content of
+trace sections or .gdb_index.
+.Sp
+Note: the \fB=decodedline\fR option will display the interpreted
+contents of a .debug_line section whereas the \fB=rawline\fR option
+dumps the contents in a raw format.
+.Sp
+Note: the \fB=frames\-interp\fR option will display the interpreted
+contents of a .debug_frame section whereas the \fB=frames\fR option
+dumps the contents in a raw format.
+.Sp
+Note: the output from the \fB=info\fR option can also be affected
+by the options \fB\-\-dwarf\-depth\fR and \fB\-\-dwarf\-start\fR.
+.IP "\fB\-\-dwarf\-depth=\fR\fIn\fR" 4
+.IX Item "--dwarf-depth=n"
+Limit the dump of the \f(CW\*(C`.debug_info\*(C'\fR section to \fIn\fR children.
+This is only useful with \fB\-\-debug\-dump=info\fR. The default is
+to print all DIEs; the special value 0 for \fIn\fR will also have this
+effect.
+.Sp
+With a non-zero value for \fIn\fR, DIEs at or deeper than \fIn\fR
+levels will not be printed. The range for \fIn\fR is zero-based.
+.IP "\fB\-\-dwarf\-start=\fR\fIn\fR" 4
+.IX Item "--dwarf-start=n"
+Print only DIEs beginning with the \s-1DIE\s0 numbered \fIn\fR. This is only
+useful with \fB\-\-debug\-dump=info\fR.
+.Sp
+If specified, this option will suppress printing of any header
+information and all DIEs before the \s-1DIE\s0 numbered \fIn\fR. Only
+siblings and children of the specified \s-1DIE\s0 will be printed.
+.Sp
+This can be used in conjunction with \fB\-\-dwarf\-depth\fR.
+.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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/size.1 b/binutils-2.24/binutils/doc/size.1
new file mode 100644
index 00000000..96f7b22c
--- /dev/null
+++ b/binutils-2.24/binutils/doc/size.1
@@ -0,0 +1,266 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.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\-\-common\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
+\&
+\&
+\& 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\-\-common\fR" 4
+.IX Item "--common"
+Print total size of common symbols in each file. When using Berkeley
+format these are included in the bss size.
+.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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/strings.1 b/binutils-2.24/binutils/doc/strings.1
new file mode 100644
index 00000000..fc8e1459
--- /dev/null
+++ b/binutils-2.24/binutils/doc/strings.1
@@ -0,0 +1,255 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+strings \- print the strings of printable characters in files.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+strings [\fB\-afovV\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\-T\fR \fIbfdname\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. (\fBl\fR
+and \fBb\fR apply to, for example, Unicode \s-1UTF\-16/UCS\-2\s0 encodings).
+.IP "\fB\-T\fR \fIbfdname\fR" 4
+.IX Item "-T bfdname"
+.PD 0
+.IP "\fB\-\-target=\fR\fIbfdname\fR" 4
+.IX Item "--target=bfdname"
+.PD
+Specify an object code format other than your system's default format.
+.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
+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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/strip.1 b/binutils-2.24/binutils/doc/strip.1
new file mode 100644
index 00000000..c6d64404
--- /dev/null
+++ b/binutils-2.24/binutils/doc/strip.1
@@ -0,0 +1,427 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.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\-\-strip\-dwo\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\-D\fR|\fB\-\-enable\-deterministic\-archives\fR]
+ [\fB\-U\fR|\fB\-\-disable\-deterministic\-archives\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. The wildcard
+character \fB*\fR may be given at the end of \fIsectionname\fR. If
+so, then any section starting with \fIsectionname\fR will be removed.
+.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\-dwo\fR" 4
+.IX Item "--strip-dwo"
+Remove the contents of all \s-1DWARF\s0 .dwo sections, leaving the
+remaining debugging sections and all symbols intact.
+See the description of this option in the \fBobjcopy\fR section
+for more information.
+.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\-D\fR" 4
+.IX Item "-D"
+.PD 0
+.IP "\fB\-\-enable\-deterministic\-archives\fR" 4
+.IX Item "--enable-deterministic-archives"
+.PD
+Operate in \fIdeterministic\fR mode. When copying archive members
+and writing the archive index, use zero for UIDs, GIDs, timestamps,
+and use consistent file modes for all files.
+.Sp
+If \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR, then this mode is on by default.
+It can be disabled with the \fB\-U\fR option, below.
+.IP "\fB\-U\fR" 4
+.IX Item "-U"
+.PD 0
+.IP "\fB\-\-disable\-deterministic\-archives\fR" 4
+.IX Item "--disable-deterministic-archives"
+.PD
+Do \fInot\fR operate in \fIdeterministic\fR mode. This is the
+inverse of the \fB\-D\fR option, above: when copying archive members
+and writing the archive index, use their actual \s-1UID\s0, \s-1GID\s0, timestamp,
+and file mode values.
+.Sp
+This is the default unless \fIbinutils\fR was configured with
+\&\fB\-\-enable\-deterministic\-archives\fR.
+.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 contents of any sections that would not be
+stripped by \fB\-\-strip\-debug\fR and leaving the debugging sections
+intact. In \s-1ELF\s0 files, this preserves all note sections in the output.
+.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"" to ""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
+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.
+.Sp
+Note\-\-\-this switch is only intended for use on fully linked files. It
+does not make sense to use it on object files where the debugging
+information may be incomplete. Besides the gnu_debuglink feature
+currently only supports the presence of one filename containing
+debugging information, not multiple filenames on a one-per-object-file
+basis.
+.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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/windmc.1 b/binutils-2.24/binutils/doc/windmc.1
new file mode 100644
index 00000000..f4bf4bc4
--- /dev/null
+++ b/binutils-2.24/binutils/doc/windmc.1
@@ -0,0 +1,351 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "WINDMC 1"
+.TH WINDMC 1 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+windmc \- generates Windows message resources.
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+windmc [options] input-file
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBwindmc\fR reads message definitions from an input file (.mc) and
+translate them into a set of output files. The output files may be of
+four kinds:
+.ie n .IP """h""" 4
+.el .IP "\f(CWh\fR" 4
+.IX Item "h"
+A C header file containing the message definitions.
+.ie n .IP """rc""" 4
+.el .IP "\f(CWrc\fR" 4
+.IX Item "rc"
+A resource file compilable by the \fBwindres\fR tool.
+.ie n .IP """bin""" 4
+.el .IP "\f(CWbin\fR" 4
+.IX Item "bin"
+One or more binary files containing the resource data for a specific
+message language.
+.ie n .IP """dbg""" 4
+.el .IP "\f(CWdbg\fR" 4
+.IX Item "dbg"
+A C include file that maps message id's to their symbolic name.
+.PP
+The exact description of these different formats is available in
+documentation from Microsoft.
+.PP
+When \fBwindmc\fR converts from the \f(CW\*(C`mc\*(C'\fR format to the \f(CW\*(C`bin\*(C'\fR
+format, \f(CW\*(C`rc\*(C'\fR, \f(CW\*(C`h\*(C'\fR, and optional \f(CW\*(C`dbg\*(C'\fR it is acting like the
+Windows Message Compiler.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-a\fR" 4
+.IX Item "-a"
+.PD 0
+.IP "\fB\-\-ascii_in\fR" 4
+.IX Item "--ascii_in"
+.PD
+Specifies that the input file specified is \s-1ASCII\s0. This is the default
+behaviour.
+.IP "\fB\-A\fR" 4
+.IX Item "-A"
+.PD 0
+.IP "\fB\-\-ascii_out\fR" 4
+.IX Item "--ascii_out"
+.PD
+Specifies that messages in the output \f(CW\*(C`bin\*(C'\fR files should be in \s-1ASCII\s0
+format.
+.IP "\fB\-b\fR" 4
+.IX Item "-b"
+.PD 0
+.IP "\fB\-\-binprefix\fR" 4
+.IX Item "--binprefix"
+.PD
+Specifies that \f(CW\*(C`bin\*(C'\fR filenames should have to be prefixed by the
+basename of the source file.
+.IP "\fB\-c\fR" 4
+.IX Item "-c"
+.PD 0
+.IP "\fB\-\-customflag\fR" 4
+.IX Item "--customflag"
+.PD
+Sets the customer bit in all message id's.
+.IP "\fB\-C\fR \fIcodepage\fR" 4
+.IX Item "-C codepage"
+.PD 0
+.IP "\fB\-\-codepage_in\fR \fIcodepage\fR" 4
+.IX Item "--codepage_in codepage"
+.PD
+Sets the default codepage to be used to convert input file to \s-1UTF16\s0. The
+default is ocdepage 1252.
+.IP "\fB\-d\fR" 4
+.IX Item "-d"
+.PD 0
+.IP "\fB\-\-decimal_values\fR" 4
+.IX Item "--decimal_values"
+.PD
+Outputs the constants in the header file in decimal. Default is using
+hexadecimal output.
+.IP "\fB\-e\fR \fIext\fR" 4
+.IX Item "-e ext"
+.PD 0
+.IP "\fB\-\-extension\fR \fIext\fR" 4
+.IX Item "--extension ext"
+.PD
+The extension for the header file. The default is .h extension.
+.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 bin file as 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 \fBwindmc\fR will use the default
+format, which is the first one listed by the \fB\-\-help\fR option.
+.IP "\fB\-h\fR \fIpath\fR" 4
+.IX Item "-h path"
+.PD 0
+.IP "\fB\-\-headerdir\fR \fIpath\fR" 4
+.IX Item "--headerdir path"
+.PD
+The target directory of the generated header file. The default is the
+current directory.
+.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\-m\fR \fIcharacters\fR" 4
+.IX Item "-m characters"
+.PD 0
+.IP "\fB\-\-maxlength\fR \fIcharacters\fR" 4
+.IX Item "--maxlength characters"
+.PD
+Instructs \fBwindmc\fR to generate a warning if the length
+of any message exceeds the number specified.
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+.PD 0
+.IP "\fB\-\-nullterminate\fR" 4
+.IX Item "--nullterminate"
+.PD
+Terminate message text in \f(CW\*(C`bin\*(C'\fR files by zero. By default they are
+terminated by \s-1CR/LF\s0.
+.IP "\fB\-o\fR" 4
+.IX Item "-o"
+.PD 0
+.IP "\fB\-\-hresult_use\fR" 4
+.IX Item "--hresult_use"
+.PD
+Not yet implemented. Instructs \f(CW\*(C`windmc\*(C'\fR to generate an \s-1OLE2\s0 header
+file, using \s-1HRESULT\s0 definitions. Status codes are used if the flag is not
+specified.
+.IP "\fB\-O\fR \fIcodepage\fR" 4
+.IX Item "-O codepage"
+.PD 0
+.IP "\fB\-\-codepage_out\fR \fIcodepage\fR" 4
+.IX Item "--codepage_out codepage"
+.PD
+Sets the default codepage to be used to output text files. The default
+is ocdepage 1252.
+.IP "\fB\-r\fR \fIpath\fR" 4
+.IX Item "-r path"
+.PD 0
+.IP "\fB\-\-rcdir\fR \fIpath\fR" 4
+.IX Item "--rcdir path"
+.PD
+The target directory for the generated \f(CW\*(C`rc\*(C'\fR script and the generated
+\&\f(CW\*(C`bin\*(C'\fR files that the resource compiler script includes. The default
+is the current directory.
+.IP "\fB\-u\fR" 4
+.IX Item "-u"
+.PD 0
+.IP "\fB\-\-unicode_in\fR" 4
+.IX Item "--unicode_in"
+.PD
+Specifies that the input file is \s-1UTF16\s0.
+.IP "\fB\-U\fR" 4
+.IX Item "-U"
+.PD 0
+.IP "\fB\-\-unicode_out\fR" 4
+.IX Item "--unicode_out"
+.PD
+Specifies that messages in the output \f(CW\*(C`bin\*(C'\fR file should be in \s-1UTF16\s0
+format. This is the default behaviour.
+.IP "\fB\-v\fR" 4
+.IX Item "-v"
+.PD 0
+.IP "\fB\-\-verbose\fR" 4
+.IX Item "--verbose"
+.PD
+Enable verbose mode.
+.IP "\fB\-V\fR" 4
+.IX Item "-V"
+.PD 0
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+.PD
+Prints the version number for \fBwindmc\fR.
+.IP "\fB\-x\fR \fIpath\fR" 4
+.IX Item "-x path"
+.PD 0
+.IP "\fB\-\-xdgb\fR \fIpath\fR" 4
+.IX Item "--xdgb path"
+.PD
+The path of the \f(CW\*(C`dbg\*(C'\fR C include file that maps message id's to the
+symbolic name. No such file is generated without specifying the switch.
+.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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/doc/windres.1 b/binutils-2.24/binutils/doc/windres.1
new file mode 100644
index 00000000..9767e07d
--- /dev/null
+++ b/binutils-2.24/binutils/doc/windres.1
@@ -0,0 +1,359 @@
+.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.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\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.el \{\
+. de IX
+..
+.\}
+.\"
+.\" 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 "2013-11-18" "binutils-2.23.91" "GNU Development Tools"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.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 compatibility 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\-\-preprocessor\-arg\fR \fIoption\fR" 4
+.IX Item "--preprocessor-arg option"
+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 additional
+text to be passed to preprocessor on its command line.
+This option can be used multiple times to add multiple options to the
+preprocessor command line.
+.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 described 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\-c\fR \fIval\fR" 4
+.IX Item "-c val"
+.PD 0
+.IP "\fB\-\-codepage\fR \fIval\fR" 4
+.IX Item "--codepage val"
+.PD
+Specify the default codepage to use when reading an \f(CW\*(C`rc\*(C'\fR file.
+\&\fIval\fR should be a hexadecimal prefixed by \fB0x\fR or decimal
+codepage code. The valid range is from zero up to 0xffff, but the
+validity of the codepage is host and configuration dependent.
+.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\-2013 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.3
+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".
diff --git a/binutils-2.24/binutils/dwarf-mode.el b/binutils-2.24/binutils/dwarf-mode.el
new file mode 100644
index 00000000..c20c8d7d
--- /dev/null
+++ b/binutils-2.24/binutils/dwarf-mode.el
@@ -0,0 +1,170 @@
+;;; dwarf-mode.el --- Browser for DWARF information.
+
+;; Version: 1.2
+
+;; Copyright (C) 2012, 2013 Free Software Foundation, Inc.
+
+;; This file is not part of GNU Emacs, but is distributed under the
+;; same terms:
+
+;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(defvar dwarf-objdump-program "objdump")
+
+(defconst dwarf-font-lock-keywords
+ '(
+ ;; Name and linkage name.
+ ("DW_AT_[a-z_]*name\\s *: .*:\\(.*\\)\\s *$"
+ (1 font-lock-function-name-face))
+
+ ("Compilation Unit @ offset 0x[0-9a-f]+"
+ (0 font-lock-string-face))
+ ))
+
+(defvar dwarf-file nil
+ "Buffer-local variable holding the file name passed to objdump.")
+
+;; Expand a "..." to show all the child DIES. NEW-DEPTH controls how
+;; deep to display the new dies; `nil' means display all of them.
+(defun dwarf-do-insert-substructure (new-depth die)
+ (let ((inhibit-read-only t))
+ (beginning-of-line)
+ (delete-region (point) (progn
+ (end-of-line)
+ (forward-char)
+ (point)))
+ (save-excursion
+ (apply #'call-process dwarf-objdump-program nil (current-buffer) nil
+ "-Wi" (concat "--dwarf-start=0x" die)
+ (expand-file-name dwarf-file)
+ (if new-depth (list (concat "--dwarf-depth="
+ (int-to-string new-depth))))))
+ (set-buffer-modified-p nil)))
+
+(defun dwarf-insert-substructure-button (die)
+ (beginning-of-line)
+ (unless (looking-at "^ <\\([0-9]+\\)>")
+ (error "Unrecognized line."))
+ (let ((new-depth (1+ (string-to-number (match-string 1)))))
+ (dwarf-do-insert-substructure new-depth die)))
+
+(defun dwarf-insert-substructure (arg)
+ "Expand a `...' to show children of the current DIE.
+By default, expands just one level of children.
+A prefix argument means expand all children."
+ (interactive "P")
+ (beginning-of-line)
+ (unless (looking-at "^ <\\([0-9]+\\)><\\([0-9a-f]+\\)>")
+ (error "Unrecognized line."))
+ (let ((die (match-string 2)))
+ (if arg
+ (dwarf-do-insert-substructure nil die)
+ (dwarf-insert-substructure-button die))))
+
+;; Called when a button is pressed.
+;; Either follows a DIE reference, or expands a "...".
+(defun dwarf-die-button-action (button)
+ (let* ((die (button-get button 'die))
+ ;; Note that the first number can only be decimal.
+ (die-rx (concat "^\\s *\\(<[0-9]+>\\)?<"
+ die ">[^<]"))
+ (old (point))
+ (is-ref (button-get button 'die-ref)))
+ (if is-ref
+ (progn
+ (goto-char (point-min))
+ (if (re-search-forward die-rx nil 'move)
+ (push-mark old)
+ (goto-char old)
+ (error "Could not find DIE <0x%s>" die)))
+ (dwarf-insert-substructure-button die))))
+
+;; Button definition.
+(define-button-type 'dwarf-die-button
+ 'follow-link t
+ 'action #'dwarf-die-button-action)
+
+;; Helper regexp to match a DIE reference.
+(defconst dwarf-die-reference "\\(<0x\\([0-9a-f]+\\)>\\)")
+
+;; Helper regexp to match a `...' indicating that there are hidden
+;; children.
+(defconst dwarf-die-more "^ <[0-9]+><\\([0-9a-z]+\\)>: \\([.][.][.]\\)")
+
+;; jit-lock callback function to fontify a region. This applies the
+;; buttons, since AFAICT there is no good way to apply buttons via
+;; font-lock.
+(defun dwarf-fontify-region (start end)
+ (save-excursion
+ (let ((beg-line (progn (goto-char start) (line-beginning-position)))
+ (end-line (progn (goto-char end) (line-end-position))))
+ (goto-char beg-line)
+ (while (re-search-forward dwarf-die-reference end-line 'move)
+ (let ((b-start (match-beginning 1))
+ (b-end (match-end 1))
+ (hex (match-string-no-properties 2)))
+ (make-text-button b-start b-end :type 'dwarf-die-button
+ 'die hex 'die-ref t)))
+ ;; This is a bogus approach. Why can't we make buttons from the
+ ;; font-lock defaults?
+ (goto-char beg-line)
+ (while (re-search-forward dwarf-die-more end-line 'move)
+ (let ((hex (match-string-no-properties 1))
+ (b-start (match-beginning 2))
+ (b-end (match-end 2)))
+ (make-text-button b-start b-end :type 'dwarf-die-button
+ 'die hex 'die-ref nil))))))
+
+;; Run objdump and insert the contents into the buffer. The arguments
+;; are the way they are because this is also called as a
+;; revert-buffer-function.
+(defun dwarf-do-refresh (&rest ignore)
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (save-excursion
+ (call-process dwarf-objdump-program
+ nil (current-buffer) nil
+ "-Wi" "--dwarf-depth=1"
+ (expand-file-name dwarf-file)))
+ (set-buffer-modified-p nil)))
+
+(define-derived-mode dwarf-mode special-mode "DWARF"
+ "Major mode for browsing DWARF output.
+
+\\{dwarf-mode-map}"
+
+ (set (make-local-variable 'font-lock-defaults) '(dwarf-font-lock-keywords))
+ ;; FIXME: we could be smarter and check the file time.
+ (set (make-local-variable 'revert-buffer-function) #'dwarf-do-refresh)
+ (jit-lock-register #'dwarf-fontify-region))
+
+(define-key dwarf-mode-map [(control ?m)] #'dwarf-insert-substructure)
+
+;;;###autoload
+(defun dwarf-browse (file)
+ "Invoke `objdump' and put output into a `dwarf-mode' buffer.
+This is the main interface to `dwarf-mode'."
+ (interactive "fFile name: ")
+ (let* ((base-name (file-name-nondirectory file))
+ (buffer (generate-new-buffer (concat "*DWARF for " base-name "*"))))
+ (pop-to-buffer buffer)
+ (dwarf-mode)
+ (set (make-local-variable 'dwarf-file) file)
+ (dwarf-do-refresh)))
+
+(provide 'dwarf-mode)
+
+;;; dwarf-mode.el ends here
diff --git a/binutils-2.24/binutils/dwarf.c b/binutils-2.24/binutils/dwarf.c
new file mode 100644
index 00000000..ae50a65f
--- /dev/null
+++ b/binutils-2.24/binutils/dwarf.c
@@ -0,0 +1,6855 @@
+/* dwarf.c -- display DWARF contents of a BFD binary file
+ Copyright 2005-2013 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 3 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 "sysdep.h"
+#include "libiberty.h"
+#include "bfd.h"
+#include "bfd_stdint.h"
+#include "bucomm.h"
+#include "elfcomm.h"
+#include "elf/common.h"
+#include "dwarf2.h"
+#include "dwarf.h"
+#include "gdb/gdb-index.h"
+
+#if !HAVE_DECL_STRNLEN
+size_t strnlen (const char *, size_t);
+#endif
+
+static const char *regname (unsigned int regno, int row);
+
+static int have_frame_base;
+static int need_base_address;
+
+static unsigned int last_pointer_size = 0;
+static int warned_about_missing_comp_units = FALSE;
+
+static unsigned int num_debug_info_entries = 0;
+static debug_info *debug_information = NULL;
+/* Special value for num_debug_info_entries to indicate
+ that the .debug_info section could not be loaded/parsed. */
+#define DEBUG_INFO_UNAVAILABLE (unsigned int) -1
+
+int eh_addr_size;
+
+int do_debug_info;
+int do_debug_abbrevs;
+int do_debug_lines;
+int do_debug_pubnames;
+int do_debug_pubtypes;
+int do_debug_aranges;
+int do_debug_ranges;
+int do_debug_frames;
+int do_debug_frames_interp;
+int do_debug_macinfo;
+int do_debug_str;
+int do_debug_loc;
+int do_gdb_index;
+int do_trace_info;
+int do_trace_abbrevs;
+int do_trace_aranges;
+int do_debug_addr;
+int do_debug_cu_index;
+int do_wide;
+
+int dwarf_cutoff_level = -1;
+unsigned long dwarf_start_die;
+
+int dwarf_check = 0;
+
+/* Collection of CU/TU section sets from .debug_cu_index and .debug_tu_index
+ sections. For version 1 package files, each set is stored in SHNDX_POOL
+ as a zero-terminated list of section indexes comprising one set of debug
+ sections from a .dwo file. */
+
+static int cu_tu_indexes_read = 0;
+static unsigned int *shndx_pool = NULL;
+static unsigned int shndx_pool_size = 0;
+static unsigned int shndx_pool_used = 0;
+
+/* For version 2 package files, each set contains an array of section offsets
+ and an array of section sizes, giving the offset and size of the
+ contribution from a CU or TU within one of the debug sections.
+ When displaying debug info from a package file, we need to use these
+ tables to locate the corresponding contributions to each section. */
+
+struct cu_tu_set
+{
+ uint64_t signature;
+ dwarf_vma section_offsets[DW_SECT_MAX];
+ size_t section_sizes[DW_SECT_MAX];
+};
+
+static int cu_count = 0;
+static int tu_count = 0;
+static struct cu_tu_set *cu_sets = NULL;
+static struct cu_tu_set *tu_sets = NULL;
+
+static void load_cu_tu_indexes (void *file);
+
+/* Values for do_debug_lines. */
+#define FLAG_DEBUG_LINES_RAW 1
+#define FLAG_DEBUG_LINES_DECODED 2
+
+static int
+size_of_encoded_value (int encoding)
+{
+ switch (encoding & 0x7)
+ {
+ default: /* ??? */
+ case 0: return eh_addr_size;
+ case 2: return 2;
+ case 3: return 4;
+ case 4: return 8;
+ }
+}
+
+static dwarf_vma
+get_encoded_value (unsigned char *data,
+ int encoding,
+ struct dwarf_section *section)
+{
+ int size = size_of_encoded_value (encoding);
+ dwarf_vma val;
+
+ if (encoding & DW_EH_PE_signed)
+ val = byte_get_signed (data, size);
+ else
+ val = byte_get (data, size);
+
+ if ((encoding & 0x70) == DW_EH_PE_pcrel)
+ val += section->address + (data - section->start);
+ return val;
+}
+
+#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
+#ifndef __MINGW32__
+#define DWARF_VMA_FMT "ll"
+#define DWARF_VMA_FMT_LONG "%16.16llx"
+#else
+#define DWARF_VMA_FMT "I64"
+#define DWARF_VMA_FMT_LONG "%016I64x"
+#endif
+#else
+#define DWARF_VMA_FMT "l"
+#define DWARF_VMA_FMT_LONG "%16.16lx"
+#endif
+
+/* Convert a dwarf vma value into a string. Returns a pointer to a static
+ buffer containing the converted VALUE. The value is converted according
+ to the printf formating character FMTCH. If NUM_BYTES is non-zero then
+ it specifies the maximum number of bytes to be displayed in the converted
+ value and FMTCH is ignored - hex is always used. */
+
+static const char *
+dwarf_vmatoa_1 (const char *fmtch, dwarf_vma value, unsigned num_bytes)
+{
+ /* As dwarf_vmatoa is used more then once in a printf call
+ for output, we are cycling through an fixed array of pointers
+ for return address. */
+ static int buf_pos = 0;
+ static struct dwarf_vmatoa_buf
+ {
+ char place[64];
+ } buf[16];
+ char *ret;
+
+ ret = buf[buf_pos++].place;
+ buf_pos %= ARRAY_SIZE (buf);
+
+ if (num_bytes)
+ {
+ /* Printf does not have a way of specifiying a maximum field width for an
+ integer value, so we print the full value into a buffer and then select
+ the precision we need. */
+ snprintf (ret, sizeof (buf[0].place), DWARF_VMA_FMT_LONG, value);
+ if (num_bytes > 8)
+ num_bytes = 8;
+ return ret + (16 - 2 * num_bytes);
+ }
+ else
+ {
+ char fmt[32];
+
+ sprintf (fmt, "%%%s%s", DWARF_VMA_FMT, fmtch);
+ snprintf (ret, sizeof (buf[0].place), fmt, value);
+ return ret;
+ }
+}
+
+static inline const char *
+dwarf_vmatoa (const char * fmtch, dwarf_vma value)
+{
+ return dwarf_vmatoa_1 (fmtch, value, 0);
+}
+
+/* Print a dwarf_vma value (typically an address, offset or length) in
+ hexadecimal format, followed by a space. The length of the VALUE (and
+ hence the precision displayed) is determined by the NUM_BYTES parameter. */
+
+static void
+print_dwarf_vma (dwarf_vma value, unsigned num_bytes)
+{
+ printf ("%s ", dwarf_vmatoa_1 (NULL, value, num_bytes));
+}
+
+/* Format a 64-bit value, given as two 32-bit values, in hex.
+ For reentrancy, this uses a buffer provided by the caller. */
+
+static const char *
+dwarf_vmatoa64 (dwarf_vma hvalue, dwarf_vma lvalue, char *buf,
+ unsigned int buf_len)
+{
+ int len = 0;
+
+ if (hvalue == 0)
+ snprintf (buf, buf_len, "%" DWARF_VMA_FMT "x", lvalue);
+ else
+ {
+ len = snprintf (buf, buf_len, "%" DWARF_VMA_FMT "x", hvalue);
+ snprintf (buf + len, buf_len - len,
+ "%08" DWARF_VMA_FMT "x", lvalue);
+ }
+
+ return buf;
+}
+
+/* Read in a LEB128 encoded value starting at address DATA.
+ If SIGN is true, return a signed LEB128 value.
+ If LENGTH_RETURN is not NULL, return in it the number of bytes read.
+ No bytes will be read at address END or beyond. */
+
+dwarf_vma
+read_leb128 (unsigned char *data,
+ unsigned int *length_return,
+ bfd_boolean sign,
+ const unsigned char * const end)
+{
+ dwarf_vma result = 0;
+ unsigned int num_read = 0;
+ unsigned int shift = 0;
+ unsigned char byte = 0;
+
+ while (data < end)
+ {
+ byte = *data++;
+ num_read++;
+
+ result |= ((dwarf_vma) (byte & 0x7f)) << shift;
+
+ shift += 7;
+ if ((byte & 0x80) == 0)
+ break;
+ }
+
+ if (length_return != NULL)
+ *length_return = num_read;
+
+ if (sign && (shift < 8 * sizeof (result)) && (byte & 0x40))
+ result |= -1L << shift;
+
+ return result;
+}
+
+/* Create a signed version to avoid painful typecasts. */
+static inline dwarf_signed_vma
+read_sleb128 (unsigned char * data,
+ unsigned int * length_return,
+ const unsigned char * const end)
+{
+ return (dwarf_signed_vma) read_leb128 (data, length_return, TRUE, end);
+}
+
+static inline dwarf_vma
+read_uleb128 (unsigned char * data,
+ unsigned int * length_return,
+ const unsigned char * const end)
+{
+ return read_leb128 (data, length_return, FALSE, end);
+}
+
+#define SAFE_BYTE_GET(VAL, PTR, AMOUNT, END) \
+ do \
+ { \
+ int dummy [sizeof (VAL) < (AMOUNT) ? -1 : 1] ATTRIBUTE_UNUSED ; \
+ unsigned int amount = (AMOUNT); \
+ if (((PTR) + amount) >= (END)) \
+ { \
+ if ((PTR) < (END)) \
+ amount = (END) - (PTR); \
+ else \
+ amount = 0; \
+ } \
+ if (amount) \
+ VAL = byte_get ((PTR), amount); \
+ else \
+ VAL = 0; \
+ } \
+ while (0)
+
+#define SAFE_BYTE_GET_AND_INC(VAL, PTR, AMOUNT, END) \
+ do \
+ { \
+ SAFE_BYTE_GET (VAL, PTR, AMOUNT, END); \
+ PTR += AMOUNT; \
+ } \
+ while (0)
+
+#define SAFE_SIGNED_BYTE_GET(VAL, PTR, AMOUNT, END) \
+ do \
+ { \
+ unsigned int amount = (AMOUNT); \
+ if (((PTR) + amount) >= (END)) \
+ { \
+ if ((PTR) < (END)) \
+ amount = (END) - (PTR); \
+ else \
+ amount = 0; \
+ } \
+ if (amount) \
+ VAL = byte_get_signed ((PTR), amount); \
+ else \
+ VAL = 0; \
+ } \
+ while (0)
+
+#define SAFE_SIGNED_BYTE_GET_AND_INC(VAL, PTR, AMOUNT, END) \
+ do \
+ { \
+ SAFE_SIGNED_BYTE_GET (VAL, PTR, AMOUNT, END); \
+ PTR += AMOUNT; \
+ } \
+ while (0)
+
+#define SAFE_BYTE_GET64(PTR, HIGH, LOW, END) \
+ do \
+ { \
+ if (((PTR) + 8) <= (END)) \
+ { \
+ byte_get_64 ((PTR), (HIGH), (LOW)); \
+ } \
+ else \
+ { \
+ * (LOW) = * (HIGH) = 0; \
+ } \
+ } \
+ while (0)
+
+typedef struct State_Machine_Registers
+{
+ dwarf_vma address;
+ unsigned int file;
+ unsigned int line;
+ unsigned int column;
+ int is_stmt;
+ int basic_block;
+ unsigned char op_index;
+ unsigned char end_sequence;
+/* This variable hold the number of the last entry seen
+ in the File Table. */
+ unsigned int last_file_entry;
+} SMR;
+
+static SMR state_machine_regs;
+
+static void
+reset_state_machine (int is_stmt)
+{
+ state_machine_regs.address = 0;
+ state_machine_regs.op_index = 0;
+ state_machine_regs.file = 1;
+ state_machine_regs.line = 1;
+ state_machine_regs.column = 0;
+ state_machine_regs.is_stmt = is_stmt;
+ state_machine_regs.basic_block = 0;
+ state_machine_regs.end_sequence = 0;
+ state_machine_regs.last_file_entry = 0;
+}
+
+/* Handled an extend line op.
+ Returns the number of bytes read. */
+
+static int
+process_extended_line_op (unsigned char * data,
+ int is_stmt,
+ unsigned char * end)
+{
+ unsigned char op_code;
+ unsigned int bytes_read;
+ unsigned int len;
+ unsigned char *name;
+ unsigned char *orig_data = data;
+ dwarf_vma adr;
+
+ len = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+
+ if (len == 0 || data == end)
+ {
+ warn (_("badly formed extended line op encountered!\n"));
+ return bytes_read;
+ }
+
+ len += bytes_read;
+ op_code = *data++;
+
+ printf (_(" Extended opcode %d: "), op_code);
+
+ switch (op_code)
+ {
+ case DW_LNE_end_sequence:
+ printf (_("End of Sequence\n\n"));
+ reset_state_machine (is_stmt);
+ break;
+
+ case DW_LNE_set_address:
+ SAFE_BYTE_GET (adr, data, len - bytes_read - 1, end);
+ printf (_("set Address to 0x%s\n"), dwarf_vmatoa ("x", adr));
+ state_machine_regs.address = adr;
+ state_machine_regs.op_index = 0;
+ break;
+
+ case DW_LNE_define_file:
+ printf (_("define new File Table entry\n"));
+ printf (_(" Entry\tDir\tTime\tSize\tName\n"));
+ printf (" %d\t", ++state_machine_regs.last_file_entry);
+
+ name = data;
+ data += strnlen ((char *) data, end - data) + 1;
+ printf ("%s\t", dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
+ data += bytes_read;
+ printf ("%s\t", dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
+ data += bytes_read;
+ printf ("%s\t", dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
+ data += bytes_read;
+ printf ("%s\n\n", name);
+
+ if (((unsigned int) (data - orig_data) != len) || data == end)
+ warn (_("DW_LNE_define_file: Bad opcode length\n"));
+ break;
+
+ case DW_LNE_set_discriminator:
+ printf (_("set Discriminator to %s\n"),
+ dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
+ break;
+
+ /* HP extensions. */
+ case DW_LNE_HP_negate_is_UV_update:
+ printf ("DW_LNE_HP_negate_is_UV_update\n");
+ break;
+ case DW_LNE_HP_push_context:
+ printf ("DW_LNE_HP_push_context\n");
+ break;
+ case DW_LNE_HP_pop_context:
+ printf ("DW_LNE_HP_pop_context\n");
+ break;
+ case DW_LNE_HP_set_file_line_column:
+ printf ("DW_LNE_HP_set_file_line_column\n");
+ break;
+ case DW_LNE_HP_set_routine_name:
+ printf ("DW_LNE_HP_set_routine_name\n");
+ break;
+ case DW_LNE_HP_set_sequence:
+ printf ("DW_LNE_HP_set_sequence\n");
+ break;
+ case DW_LNE_HP_negate_post_semantics:
+ printf ("DW_LNE_HP_negate_post_semantics\n");
+ break;
+ case DW_LNE_HP_negate_function_exit:
+ printf ("DW_LNE_HP_negate_function_exit\n");
+ break;
+ case DW_LNE_HP_negate_front_end_logical:
+ printf ("DW_LNE_HP_negate_front_end_logical\n");
+ break;
+ case DW_LNE_HP_define_proc:
+ printf ("DW_LNE_HP_define_proc\n");
+ break;
+ case DW_LNE_HP_source_file_correlation:
+ {
+ unsigned char *edata = data + len - bytes_read - 1;
+
+ printf ("DW_LNE_HP_source_file_correlation\n");
+
+ while (data < edata)
+ {
+ unsigned int opc;
+
+ opc = read_uleb128 (data, & bytes_read, edata);
+ data += bytes_read;
+
+ switch (opc)
+ {
+ case DW_LNE_HP_SFC_formfeed:
+ printf (" DW_LNE_HP_SFC_formfeed\n");
+ break;
+ case DW_LNE_HP_SFC_set_listing_line:
+ printf (" DW_LNE_HP_SFC_set_listing_line (%s)\n",
+ dwarf_vmatoa ("u",
+ read_uleb128 (data, & bytes_read, edata)));
+ data += bytes_read;
+ break;
+ case DW_LNE_HP_SFC_associate:
+ printf (" DW_LNE_HP_SFC_associate ");
+ printf ("(%s",
+ dwarf_vmatoa ("u",
+ read_uleb128 (data, & bytes_read, edata)));
+ data += bytes_read;
+ printf (",%s",
+ dwarf_vmatoa ("u",
+ read_uleb128 (data, & bytes_read, edata)));
+ data += bytes_read;
+ printf (",%s)\n",
+ dwarf_vmatoa ("u",
+ read_uleb128 (data, & bytes_read, edata)));
+ data += bytes_read;
+ break;
+ default:
+ printf (_(" UNKNOWN DW_LNE_HP_SFC opcode (%u)\n"), opc);
+ data = edata;
+ break;
+ }
+ }
+ }
+ break;
+
+ default:
+ {
+ unsigned int rlen = len - bytes_read - 1;
+
+ if (op_code >= DW_LNE_lo_user
+ /* The test against DW_LNW_hi_user is redundant due to
+ the limited range of the unsigned char data type used
+ for op_code. */
+ /*&& op_code <= DW_LNE_hi_user*/)
+ printf (_("user defined: "));
+ else
+ printf (_("UNKNOWN: "));
+ printf (_("length %d ["), rlen);
+ for (; rlen; rlen--)
+ printf (" %02x", *data++);
+ printf ("]\n");
+ }
+ break;
+ }
+
+ return len;
+}
+
+static const unsigned char *
+fetch_indirect_string (dwarf_vma offset)
+{
+ struct dwarf_section *section = &debug_displays [str].section;
+
+ if (section->start == NULL)
+ return (const unsigned char *) _("<no .debug_str section>");
+
+ /* DWARF sections under Mach-O have non-zero addresses. */
+ offset -= section->address;
+ if (offset > section->size)
+ {
+ warn (_("DW_FORM_strp offset too big: %s\n"),
+ dwarf_vmatoa ("x", offset));
+ return (const unsigned char *) _("<offset is too big>");
+ }
+
+ return (const unsigned char *) section->start + offset;
+}
+
+static const char *
+fetch_indexed_string (dwarf_vma idx, struct cu_tu_set *this_set,
+ dwarf_vma offset_size, int dwo)
+{
+ enum dwarf_section_display_enum str_sec_idx = dwo ? str_dwo : str;
+ enum dwarf_section_display_enum idx_sec_idx = dwo ? str_index_dwo : str_index;
+ struct dwarf_section *index_section = &debug_displays [idx_sec_idx].section;
+ struct dwarf_section *str_section = &debug_displays [str_sec_idx].section;
+ dwarf_vma index_offset = idx * offset_size;
+ dwarf_vma str_offset;
+
+ if (index_section->start == NULL)
+ return (dwo ? _("<no .debug_str_offsets.dwo section>")
+ : _("<no .debug_str_offsets section>"));
+
+ /* DWARF sections under Mach-O have non-zero addresses. */
+ index_offset -= index_section->address;
+ if (this_set != NULL)
+ index_offset += this_set->section_offsets [DW_SECT_STR_OFFSETS];
+ if (index_offset > index_section->size)
+ {
+ warn (_("DW_FORM_GNU_str_index offset too big: %s\n"),
+ dwarf_vmatoa ("x", index_offset));
+ return _("<index offset is too big>");
+ }
+
+ if (str_section->start == NULL)
+ return (dwo ? _("<no .debug_str.dwo section>")
+ : _("<no .debug_str section>"));
+
+ str_offset = byte_get (index_section->start + index_offset, offset_size);
+ str_offset -= str_section->address;
+ if (str_offset > str_section->size)
+ {
+ warn (_("DW_FORM_GNU_str_index indirect offset too big: %s\n"),
+ dwarf_vmatoa ("x", str_offset));
+ return _("<indirect index offset is too big>");
+ }
+
+ return (const char *) str_section->start + str_offset;
+}
+
+static const char *
+fetch_indexed_value (dwarf_vma offset, dwarf_vma bytes)
+{
+ struct dwarf_section *section = &debug_displays [debug_addr].section;
+
+ if (section->start == NULL)
+ return (_("<no .debug_addr section>"));
+
+ if (offset + bytes > section->size)
+ {
+ warn (_("Offset into section %s too big: %s\n"),
+ section->name, dwarf_vmatoa ("x", offset));
+ return "<offset too big>";
+ }
+
+ return dwarf_vmatoa ("x", byte_get (section->start + offset, bytes));
+}
+
+
+/* FIXME: There are better and more efficient ways to handle
+ these structures. For now though, I just want something that
+ is simple to implement. */
+typedef struct abbrev_attr
+{
+ unsigned long attribute;
+ unsigned long form;
+ struct abbrev_attr *next;
+}
+abbrev_attr;
+
+typedef struct abbrev_entry
+{
+ unsigned long entry;
+ unsigned long tag;
+ int children;
+ struct abbrev_attr *first_attr;
+ struct abbrev_attr *last_attr;
+ struct abbrev_entry *next;
+}
+abbrev_entry;
+
+static abbrev_entry *first_abbrev = NULL;
+static abbrev_entry *last_abbrev = NULL;
+
+static void
+free_abbrevs (void)
+{
+ abbrev_entry *abbrv;
+
+ for (abbrv = first_abbrev; abbrv;)
+ {
+ abbrev_entry *next_abbrev = abbrv->next;
+ abbrev_attr *attr;
+
+ for (attr = abbrv->first_attr; attr;)
+ {
+ abbrev_attr *next_attr = attr->next;
+
+ free (attr);
+ attr = next_attr;
+ }
+
+ free (abbrv);
+ abbrv = next_abbrev;
+ }
+
+ last_abbrev = first_abbrev = NULL;
+}
+
+static void
+add_abbrev (unsigned long number, unsigned long tag, int children)
+{
+ abbrev_entry *entry;
+
+ entry = (abbrev_entry *) malloc (sizeof (*entry));
+ if (entry == NULL)
+ /* ugg */
+ return;
+
+ entry->entry = number;
+ entry->tag = tag;
+ entry->children = children;
+ entry->first_attr = NULL;
+ entry->last_attr = NULL;
+ entry->next = NULL;
+
+ if (first_abbrev == NULL)
+ first_abbrev = entry;
+ else
+ last_abbrev->next = entry;
+
+ last_abbrev = entry;
+}
+
+static void
+add_abbrev_attr (unsigned long attribute, unsigned long form)
+{
+ abbrev_attr *attr;
+
+ attr = (abbrev_attr *) malloc (sizeof (*attr));
+ if (attr == NULL)
+ /* ugg */
+ return;
+
+ attr->attribute = attribute;
+ attr->form = form;
+ attr->next = NULL;
+
+ if (last_abbrev->first_attr == NULL)
+ last_abbrev->first_attr = attr;
+ else
+ last_abbrev->last_attr->next = attr;
+
+ last_abbrev->last_attr = attr;
+}
+
+/* Processes the (partial) contents of a .debug_abbrev section.
+ Returns NULL if the end of the section was encountered.
+ Returns the address after the last byte read if the end of
+ an abbreviation set was found. */
+
+static unsigned char *
+process_abbrev_section (unsigned char *start, unsigned char *end)
+{
+ if (first_abbrev != NULL)
+ return NULL;
+
+ while (start < end)
+ {
+ unsigned int bytes_read;
+ unsigned long entry;
+ unsigned long tag;
+ unsigned long attribute;
+ int children;
+
+ entry = read_uleb128 (start, & bytes_read, end);
+ start += bytes_read;
+
+ /* A single zero is supposed to end the section according
+ to the standard. If there's more, then signal that to
+ the caller. */
+ if (start == end)
+ return NULL;
+ if (entry == 0)
+ return start;
+
+ tag = read_uleb128 (start, & bytes_read, end);
+ start += bytes_read;
+ if (start == end)
+ return NULL;
+
+ children = *start++;
+
+ add_abbrev (entry, tag, children);
+
+ do
+ {
+ unsigned long form;
+
+ attribute = read_uleb128 (start, & bytes_read, end);
+ start += bytes_read;
+ if (start == end)
+ break;
+
+ form = read_uleb128 (start, & bytes_read, end);
+ start += bytes_read;
+ if (start == end)
+ break;
+
+ add_abbrev_attr (attribute, form);
+ }
+ while (attribute != 0);
+ }
+
+ /* Report the missing single zero which ends the section. */
+ error (_(".debug_abbrev section not zero terminated\n"));
+
+ return NULL;
+}
+
+static const char *
+get_TAG_name (unsigned long tag)
+{
+ const char *name = get_DW_TAG_name ((unsigned int)tag);
+
+ if (name == NULL)
+ {
+ static char buffer[100];
+
+ snprintf (buffer, sizeof (buffer), _("Unknown TAG value: %lx"), tag);
+ return buffer;
+ }
+
+ return name;
+}
+
+static const char *
+get_FORM_name (unsigned long form)
+{
+ const char *name;
+
+ if (form == 0)
+ return "DW_FORM value: 0";
+
+ name = get_DW_FORM_name (form);
+ if (name == NULL)
+ {
+ static char buffer[100];
+
+ snprintf (buffer, sizeof (buffer), _("Unknown FORM value: %lx"), form);
+ return buffer;
+ }
+
+ return name;
+}
+
+static unsigned char *
+display_block (unsigned char *data,
+ dwarf_vma length,
+ const unsigned char * const end)
+{
+ dwarf_vma maxlen;
+
+ printf (_(" %s byte block: "), dwarf_vmatoa ("u", length));
+
+ maxlen = (dwarf_vma) (end - data);
+ length = length > maxlen ? maxlen : length;
+
+ while (length --)
+ printf ("%lx ", (unsigned long) byte_get (data++, 1));
+
+ return data;
+}
+
+static int
+decode_location_expression (unsigned char * data,
+ unsigned int pointer_size,
+ unsigned int offset_size,
+ int dwarf_version,
+ dwarf_vma length,
+ dwarf_vma cu_offset,
+ struct dwarf_section * section)
+{
+ unsigned op;
+ unsigned int bytes_read;
+ dwarf_vma uvalue;
+ dwarf_signed_vma svalue;
+ unsigned char *end = data + length;
+ int need_frame_base = 0;
+
+ while (data < end)
+ {
+ op = *data++;
+
+ switch (op)
+ {
+ case DW_OP_addr:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end);
+ printf ("DW_OP_addr: %s", dwarf_vmatoa ("x", uvalue));
+ break;
+ case DW_OP_deref:
+ printf ("DW_OP_deref");
+ break;
+ case DW_OP_const1u:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 1, end);
+ printf ("DW_OP_const1u: %lu", (unsigned long) uvalue);
+ break;
+ case DW_OP_const1s:
+ SAFE_SIGNED_BYTE_GET_AND_INC (svalue, data, 1, end);
+ printf ("DW_OP_const1s: %ld", (long) svalue);
+ break;
+ case DW_OP_const2u:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 2, end);
+ printf ("DW_OP_const2u: %lu", (unsigned long) uvalue);
+ break;
+ case DW_OP_const2s:
+ SAFE_SIGNED_BYTE_GET_AND_INC (svalue, data, 2, end);
+ printf ("DW_OP_const2s: %ld", (long) svalue);
+ break;
+ case DW_OP_const4u:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 4, end);
+ printf ("DW_OP_const4u: %lu", (unsigned long) uvalue);
+ break;
+ case DW_OP_const4s:
+ SAFE_SIGNED_BYTE_GET_AND_INC (svalue, data, 4, end);
+ printf ("DW_OP_const4s: %ld", (long) svalue);
+ break;
+ case DW_OP_const8u:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 4, end);
+ printf ("DW_OP_const8u: %lu ", (unsigned long) uvalue);
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 4, end);
+ printf ("%lu", (unsigned long) uvalue);
+ break;
+ case DW_OP_const8s:
+ SAFE_SIGNED_BYTE_GET_AND_INC (svalue, data, 4, end);
+ printf ("DW_OP_const8s: %ld ", (long) svalue);
+ SAFE_SIGNED_BYTE_GET_AND_INC (svalue, data, 4, end);
+ printf ("%ld", (long) svalue);
+ break;
+ case DW_OP_constu:
+ printf ("DW_OP_constu: %s",
+ dwarf_vmatoa ("u", read_uleb128 (data, &bytes_read, end)));
+ data += bytes_read;
+ break;
+ case DW_OP_consts:
+ printf ("DW_OP_consts: %s",
+ dwarf_vmatoa ("d", read_sleb128 (data, &bytes_read, end)));
+ data += bytes_read;
+ break;
+ case DW_OP_dup:
+ printf ("DW_OP_dup");
+ break;
+ case DW_OP_drop:
+ printf ("DW_OP_drop");
+ break;
+ case DW_OP_over:
+ printf ("DW_OP_over");
+ break;
+ case DW_OP_pick:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 1, end);
+ printf ("DW_OP_pick: %ld", (unsigned long) uvalue);
+ break;
+ case DW_OP_swap:
+ printf ("DW_OP_swap");
+ break;
+ case DW_OP_rot:
+ printf ("DW_OP_rot");
+ break;
+ case DW_OP_xderef:
+ printf ("DW_OP_xderef");
+ break;
+ case DW_OP_abs:
+ printf ("DW_OP_abs");
+ break;
+ case DW_OP_and:
+ printf ("DW_OP_and");
+ break;
+ case DW_OP_div:
+ printf ("DW_OP_div");
+ break;
+ case DW_OP_minus:
+ printf ("DW_OP_minus");
+ break;
+ case DW_OP_mod:
+ printf ("DW_OP_mod");
+ break;
+ case DW_OP_mul:
+ printf ("DW_OP_mul");
+ break;
+ case DW_OP_neg:
+ printf ("DW_OP_neg");
+ break;
+ case DW_OP_not:
+ printf ("DW_OP_not");
+ break;
+ case DW_OP_or:
+ printf ("DW_OP_or");
+ break;
+ case DW_OP_plus:
+ printf ("DW_OP_plus");
+ break;
+ case DW_OP_plus_uconst:
+ printf ("DW_OP_plus_uconst: %s",
+ dwarf_vmatoa ("u", read_uleb128 (data, &bytes_read, end)));
+ data += bytes_read;
+ break;
+ case DW_OP_shl:
+ printf ("DW_OP_shl");
+ break;
+ case DW_OP_shr:
+ printf ("DW_OP_shr");
+ break;
+ case DW_OP_shra:
+ printf ("DW_OP_shra");
+ break;
+ case DW_OP_xor:
+ printf ("DW_OP_xor");
+ break;
+ case DW_OP_bra:
+ SAFE_SIGNED_BYTE_GET_AND_INC (svalue, data, 2, end);
+ printf ("DW_OP_bra: %ld", (long) svalue);
+ break;
+ case DW_OP_eq:
+ printf ("DW_OP_eq");
+ break;
+ case DW_OP_ge:
+ printf ("DW_OP_ge");
+ break;
+ case DW_OP_gt:
+ printf ("DW_OP_gt");
+ break;
+ case DW_OP_le:
+ printf ("DW_OP_le");
+ break;
+ case DW_OP_lt:
+ printf ("DW_OP_lt");
+ break;
+ case DW_OP_ne:
+ printf ("DW_OP_ne");
+ break;
+ case DW_OP_skip:
+ SAFE_SIGNED_BYTE_GET_AND_INC (svalue, data, 2, end);
+ printf ("DW_OP_skip: %ld", (long) svalue);
+ break;
+
+ case DW_OP_lit0:
+ case DW_OP_lit1:
+ case DW_OP_lit2:
+ case DW_OP_lit3:
+ case DW_OP_lit4:
+ case DW_OP_lit5:
+ case DW_OP_lit6:
+ case DW_OP_lit7:
+ case DW_OP_lit8:
+ case DW_OP_lit9:
+ case DW_OP_lit10:
+ case DW_OP_lit11:
+ case DW_OP_lit12:
+ case DW_OP_lit13:
+ case DW_OP_lit14:
+ case DW_OP_lit15:
+ case DW_OP_lit16:
+ case DW_OP_lit17:
+ case DW_OP_lit18:
+ case DW_OP_lit19:
+ case DW_OP_lit20:
+ case DW_OP_lit21:
+ case DW_OP_lit22:
+ case DW_OP_lit23:
+ case DW_OP_lit24:
+ case DW_OP_lit25:
+ case DW_OP_lit26:
+ case DW_OP_lit27:
+ case DW_OP_lit28:
+ case DW_OP_lit29:
+ case DW_OP_lit30:
+ case DW_OP_lit31:
+ printf ("DW_OP_lit%d", op - DW_OP_lit0);
+ break;
+
+ case DW_OP_reg0:
+ case DW_OP_reg1:
+ case DW_OP_reg2:
+ case DW_OP_reg3:
+ case DW_OP_reg4:
+ case DW_OP_reg5:
+ case DW_OP_reg6:
+ case DW_OP_reg7:
+ case DW_OP_reg8:
+ case DW_OP_reg9:
+ case DW_OP_reg10:
+ case DW_OP_reg11:
+ case DW_OP_reg12:
+ case DW_OP_reg13:
+ case DW_OP_reg14:
+ case DW_OP_reg15:
+ case DW_OP_reg16:
+ case DW_OP_reg17:
+ case DW_OP_reg18:
+ case DW_OP_reg19:
+ case DW_OP_reg20:
+ case DW_OP_reg21:
+ case DW_OP_reg22:
+ case DW_OP_reg23:
+ case DW_OP_reg24:
+ case DW_OP_reg25:
+ case DW_OP_reg26:
+ case DW_OP_reg27:
+ case DW_OP_reg28:
+ case DW_OP_reg29:
+ case DW_OP_reg30:
+ case DW_OP_reg31:
+ printf ("DW_OP_reg%d (%s)", op - DW_OP_reg0,
+ regname (op - DW_OP_reg0, 1));
+ break;
+
+ case DW_OP_breg0:
+ case DW_OP_breg1:
+ case DW_OP_breg2:
+ case DW_OP_breg3:
+ case DW_OP_breg4:
+ case DW_OP_breg5:
+ case DW_OP_breg6:
+ case DW_OP_breg7:
+ case DW_OP_breg8:
+ case DW_OP_breg9:
+ case DW_OP_breg10:
+ case DW_OP_breg11:
+ case DW_OP_breg12:
+ case DW_OP_breg13:
+ case DW_OP_breg14:
+ case DW_OP_breg15:
+ case DW_OP_breg16:
+ case DW_OP_breg17:
+ case DW_OP_breg18:
+ case DW_OP_breg19:
+ case DW_OP_breg20:
+ case DW_OP_breg21:
+ case DW_OP_breg22:
+ case DW_OP_breg23:
+ case DW_OP_breg24:
+ case DW_OP_breg25:
+ case DW_OP_breg26:
+ case DW_OP_breg27:
+ case DW_OP_breg28:
+ case DW_OP_breg29:
+ case DW_OP_breg30:
+ case DW_OP_breg31:
+ printf ("DW_OP_breg%d (%s): %s",
+ op - DW_OP_breg0,
+ regname (op - DW_OP_breg0, 1),
+ dwarf_vmatoa ("d", read_sleb128 (data, &bytes_read, end)));
+ data += bytes_read;
+ break;
+
+ case DW_OP_regx:
+ uvalue = read_uleb128 (data, &bytes_read, end);
+ data += bytes_read;
+ printf ("DW_OP_regx: %s (%s)",
+ dwarf_vmatoa ("u", uvalue), regname (uvalue, 1));
+ break;
+ case DW_OP_fbreg:
+ need_frame_base = 1;
+ printf ("DW_OP_fbreg: %s",
+ dwarf_vmatoa ("d", read_sleb128 (data, &bytes_read, end)));
+ data += bytes_read;
+ break;
+ case DW_OP_bregx:
+ uvalue = read_uleb128 (data, &bytes_read, end);
+ data += bytes_read;
+ printf ("DW_OP_bregx: %s (%s) %s",
+ dwarf_vmatoa ("u", uvalue), regname (uvalue, 1),
+ dwarf_vmatoa ("d", read_sleb128 (data, &bytes_read, end)));
+ data += bytes_read;
+ break;
+ case DW_OP_piece:
+ printf ("DW_OP_piece: %s",
+ dwarf_vmatoa ("u", read_uleb128 (data, &bytes_read, end)));
+ data += bytes_read;
+ break;
+ case DW_OP_deref_size:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 1, end);
+ printf ("DW_OP_deref_size: %ld", (long) uvalue);
+ break;
+ case DW_OP_xderef_size:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 1, end);
+ printf ("DW_OP_xderef_size: %ld", (long) uvalue);
+ break;
+ case DW_OP_nop:
+ printf ("DW_OP_nop");
+ break;
+
+ /* DWARF 3 extensions. */
+ case DW_OP_push_object_address:
+ printf ("DW_OP_push_object_address");
+ break;
+ case DW_OP_call2:
+ /* XXX: Strictly speaking for 64-bit DWARF3 files
+ this ought to be an 8-byte wide computation. */
+ SAFE_SIGNED_BYTE_GET_AND_INC (svalue, data, 2, end);
+ printf ("DW_OP_call2: <0x%s>",
+ dwarf_vmatoa ("x", svalue + cu_offset));
+ break;
+ case DW_OP_call4:
+ /* XXX: Strictly speaking for 64-bit DWARF3 files
+ this ought to be an 8-byte wide computation. */
+ SAFE_SIGNED_BYTE_GET_AND_INC (svalue, data, 4, end);
+ printf ("DW_OP_call4: <0x%s>",
+ dwarf_vmatoa ("x", svalue + cu_offset));
+ break;
+ case DW_OP_call_ref:
+ /* XXX: Strictly speaking for 64-bit DWARF3 files
+ this ought to be an 8-byte wide computation. */
+ if (dwarf_version == -1)
+ {
+ printf (_("(DW_OP_call_ref in frame info)"));
+ /* No way to tell where the next op is, so just bail. */
+ return need_frame_base;
+ }
+ if (dwarf_version == 2)
+ {
+ SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end);
+ }
+ else
+ {
+ SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end);
+ }
+ printf ("DW_OP_call_ref: <0x%s>", dwarf_vmatoa ("x", uvalue));
+ break;
+ case DW_OP_form_tls_address:
+ printf ("DW_OP_form_tls_address");
+ break;
+ case DW_OP_call_frame_cfa:
+ printf ("DW_OP_call_frame_cfa");
+ break;
+ case DW_OP_bit_piece:
+ printf ("DW_OP_bit_piece: ");
+ printf (_("size: %s "),
+ dwarf_vmatoa ("u", read_uleb128 (data, &bytes_read, end)));
+ data += bytes_read;
+ printf (_("offset: %s "),
+ dwarf_vmatoa ("u", read_uleb128 (data, &bytes_read, end)));
+ data += bytes_read;
+ break;
+
+ /* DWARF 4 extensions. */
+ case DW_OP_stack_value:
+ printf ("DW_OP_stack_value");
+ break;
+
+ case DW_OP_implicit_value:
+ printf ("DW_OP_implicit_value");
+ uvalue = read_uleb128 (data, &bytes_read, end);
+ data += bytes_read;
+ display_block (data, uvalue, end);
+ data += uvalue;
+ break;
+
+ /* GNU extensions. */
+ case DW_OP_GNU_push_tls_address:
+ printf (_("DW_OP_GNU_push_tls_address or DW_OP_HP_unknown"));
+ break;
+ case DW_OP_GNU_uninit:
+ printf ("DW_OP_GNU_uninit");
+ /* FIXME: Is there data associated with this OP ? */
+ break;
+ case DW_OP_GNU_encoded_addr:
+ {
+ int encoding;
+ dwarf_vma addr;
+
+ encoding = *data++;
+ addr = get_encoded_value (data, encoding, section);
+ data += size_of_encoded_value (encoding);
+
+ printf ("DW_OP_GNU_encoded_addr: fmt:%02x addr:", encoding);
+ print_dwarf_vma (addr, pointer_size);
+ }
+ break;
+ case DW_OP_GNU_implicit_pointer:
+ /* XXX: Strictly speaking for 64-bit DWARF3 files
+ this ought to be an 8-byte wide computation. */
+ if (dwarf_version == -1)
+ {
+ printf (_("(DW_OP_GNU_implicit_pointer in frame info)"));
+ /* No way to tell where the next op is, so just bail. */
+ return need_frame_base;
+ }
+ if (dwarf_version == 2)
+ {
+ SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end);
+ }
+ else
+ {
+ SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end);
+ }
+ printf ("DW_OP_GNU_implicit_pointer: <0x%s> %s",
+ dwarf_vmatoa ("x", uvalue),
+ dwarf_vmatoa ("d", read_sleb128 (data,
+ &bytes_read, end)));
+ data += bytes_read;
+ break;
+ case DW_OP_GNU_entry_value:
+ uvalue = read_uleb128 (data, &bytes_read, end);
+ data += bytes_read;
+ printf ("DW_OP_GNU_entry_value: (");
+ if (decode_location_expression (data, pointer_size, offset_size,
+ dwarf_version, uvalue,
+ cu_offset, section))
+ need_frame_base = 1;
+ putchar (')');
+ data += uvalue;
+ break;
+ case DW_OP_GNU_const_type:
+ uvalue = read_uleb128 (data, &bytes_read, end);
+ data += bytes_read;
+ printf ("DW_OP_GNU_const_type: <0x%s> ",
+ dwarf_vmatoa ("x", cu_offset + uvalue));
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 1, end);
+ display_block (data, uvalue, end);
+ data += uvalue;
+ break;
+ case DW_OP_GNU_regval_type:
+ uvalue = read_uleb128 (data, &bytes_read, end);
+ data += bytes_read;
+ printf ("DW_OP_GNU_regval_type: %s (%s)",
+ dwarf_vmatoa ("u", uvalue), regname (uvalue, 1));
+ uvalue = read_uleb128 (data, &bytes_read, end);
+ data += bytes_read;
+ printf (" <0x%s>", dwarf_vmatoa ("x", cu_offset + uvalue));
+ break;
+ case DW_OP_GNU_deref_type:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 1, end);
+ printf ("DW_OP_GNU_deref_type: %ld", (long) uvalue);
+ uvalue = read_uleb128 (data, &bytes_read, end);
+ data += bytes_read;
+ printf (" <0x%s>", dwarf_vmatoa ("x", cu_offset + uvalue));
+ break;
+ case DW_OP_GNU_convert:
+ uvalue = read_uleb128 (data, &bytes_read, end);
+ data += bytes_read;
+ printf ("DW_OP_GNU_convert <0x%s>",
+ dwarf_vmatoa ("x", uvalue ? cu_offset + uvalue : 0));
+ break;
+ case DW_OP_GNU_reinterpret:
+ uvalue = read_uleb128 (data, &bytes_read, end);
+ data += bytes_read;
+ printf ("DW_OP_GNU_reinterpret <0x%s>",
+ dwarf_vmatoa ("x", uvalue ? cu_offset + uvalue : 0));
+ break;
+ case DW_OP_GNU_parameter_ref:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 4, end);
+ printf ("DW_OP_GNU_parameter_ref: <0x%s>",
+ dwarf_vmatoa ("x", cu_offset + uvalue));
+ break;
+ case DW_OP_GNU_addr_index:
+ uvalue = read_uleb128 (data, &bytes_read, end);
+ data += bytes_read;
+ printf ("DW_OP_GNU_addr_index <0x%s>", dwarf_vmatoa ("x", uvalue));
+ break;
+ case DW_OP_GNU_const_index:
+ uvalue = read_uleb128 (data, &bytes_read, end);
+ data += bytes_read;
+ printf ("DW_OP_GNU_const_index <0x%s>", dwarf_vmatoa ("x", uvalue));
+ break;
+
+ /* HP extensions. */
+ case DW_OP_HP_is_value:
+ printf ("DW_OP_HP_is_value");
+ /* FIXME: Is there data associated with this OP ? */
+ break;
+ case DW_OP_HP_fltconst4:
+ printf ("DW_OP_HP_fltconst4");
+ /* FIXME: Is there data associated with this OP ? */
+ break;
+ case DW_OP_HP_fltconst8:
+ printf ("DW_OP_HP_fltconst8");
+ /* FIXME: Is there data associated with this OP ? */
+ break;
+ case DW_OP_HP_mod_range:
+ printf ("DW_OP_HP_mod_range");
+ /* FIXME: Is there data associated with this OP ? */
+ break;
+ case DW_OP_HP_unmod_range:
+ printf ("DW_OP_HP_unmod_range");
+ /* FIXME: Is there data associated with this OP ? */
+ break;
+ case DW_OP_HP_tls:
+ printf ("DW_OP_HP_tls");
+ /* FIXME: Is there data associated with this OP ? */
+ break;
+
+ /* PGI (STMicroelectronics) extensions. */
+ case DW_OP_PGI_omp_thread_num:
+ /* Pushes the thread number for the current thread as it would be
+ returned by the standard OpenMP library function:
+ omp_get_thread_num(). The "current thread" is the thread for
+ which the expression is being evaluated. */
+ printf ("DW_OP_PGI_omp_thread_num");
+ break;
+
+ default:
+ if (op >= DW_OP_lo_user
+ && op <= DW_OP_hi_user)
+ printf (_("(User defined location op)"));
+ else
+ printf (_("(Unknown location op)"));
+ /* No way to tell where the next op is, so just bail. */
+ return need_frame_base;
+ }
+
+ /* Separate the ops. */
+ if (data < end)
+ printf ("; ");
+ }
+
+ return need_frame_base;
+}
+
+/* Find the CU or TU set corresponding to the given CU_OFFSET.
+ This is used for DWARF package files. */
+
+static struct cu_tu_set *
+find_cu_tu_set_v2 (dwarf_vma cu_offset, int do_types)
+{
+ struct cu_tu_set *p;
+ unsigned int nsets;
+ unsigned int dw_sect;
+
+ if (do_types)
+ {
+ p = tu_sets;
+ nsets = tu_count;
+ dw_sect = DW_SECT_TYPES;
+ }
+ else
+ {
+ p = cu_sets;
+ nsets = cu_count;
+ dw_sect = DW_SECT_INFO;
+ }
+ while (nsets > 0)
+ {
+ if (p->section_offsets [dw_sect] == cu_offset)
+ return p;
+ p++;
+ nsets--;
+ }
+ return NULL;
+}
+
+/* Add INC to HIGH_BITS:LOW_BITS. */
+static void
+add64 (dwarf_vma * high_bits, dwarf_vma * low_bits, dwarf_vma inc)
+{
+ dwarf_vma tmp = * low_bits;
+
+ tmp += inc;
+
+ /* FIXME: There is probably a better way of handling this:
+
+ We need to cope with dwarf_vma being a 32-bit or 64-bit
+ type. Plus regardless of its size LOW_BITS is meant to
+ only hold 32-bits, so if there is overflow or wrap around
+ we must propagate into HIGH_BITS. */
+ if (tmp < * low_bits)
+ {
+ ++ * high_bits;
+ }
+ else if (sizeof (tmp) > 8
+ && (tmp >> 31) > 1)
+ {
+ ++ * high_bits;
+ tmp &= 0xFFFFFFFF;
+ }
+
+ * low_bits = tmp;
+}
+
+static unsigned char *
+read_and_display_attr_value (unsigned long attribute,
+ unsigned long form,
+ unsigned char * data,
+ unsigned char * end,
+ dwarf_vma cu_offset,
+ dwarf_vma pointer_size,
+ dwarf_vma offset_size,
+ int dwarf_version,
+ debug_info * debug_info_p,
+ int do_loc,
+ struct dwarf_section * section,
+ struct cu_tu_set * this_set)
+{
+ dwarf_vma uvalue = 0;
+ unsigned char *block_start = NULL;
+ unsigned char * orig_data = data;
+ unsigned int bytes_read;
+
+ if (data == end)
+ {
+ warn (_("corrupt attribute\n"));
+ return data;
+ }
+
+ switch (form)
+ {
+ default:
+ break;
+
+ case DW_FORM_ref_addr:
+ if (dwarf_version == 2)
+ SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end);
+ else if (dwarf_version == 3 || dwarf_version == 4)
+ SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end);
+ else
+ error (_("Internal error: DWARF version is not 2, 3 or 4.\n"));
+
+ break;
+
+ case DW_FORM_addr:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, pointer_size, end);
+ break;
+
+ case DW_FORM_strp:
+ case DW_FORM_sec_offset:
+ case DW_FORM_GNU_ref_alt:
+ case DW_FORM_GNU_strp_alt:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, offset_size, end);
+ break;
+
+ case DW_FORM_flag_present:
+ uvalue = 1;
+ break;
+
+ case DW_FORM_ref1:
+ case DW_FORM_flag:
+ case DW_FORM_data1:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 1, end);
+ break;
+
+ case DW_FORM_ref2:
+ case DW_FORM_data2:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 2, end);
+ break;
+
+ case DW_FORM_ref4:
+ case DW_FORM_data4:
+ SAFE_BYTE_GET_AND_INC (uvalue, data, 4, end);
+ break;
+
+ case DW_FORM_sdata:
+ uvalue = read_sleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ break;
+
+ case DW_FORM_GNU_str_index:
+ uvalue = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ break;
+
+ case DW_FORM_ref_udata:
+ case DW_FORM_udata:
+ uvalue = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ break;
+
+ case DW_FORM_indirect:
+ form = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ if (!do_loc)
+ printf (" %s", get_FORM_name (form));
+ return read_and_display_attr_value (attribute, form, data, end,
+ cu_offset, pointer_size,
+ offset_size, dwarf_version,
+ debug_info_p, do_loc,
+ section, this_set);
+ case DW_FORM_GNU_addr_index:
+ uvalue = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ break;
+ }
+
+ switch (form)
+ {
+ case DW_FORM_ref_addr:
+ if (!do_loc)
+ printf (" <0x%s>", dwarf_vmatoa ("x",uvalue));
+ break;
+
+ case DW_FORM_GNU_ref_alt:
+ if (!do_loc)
+ printf (" <alt 0x%s>", dwarf_vmatoa ("x",uvalue));
+ break;
+
+ case DW_FORM_ref1:
+ case DW_FORM_ref2:
+ case DW_FORM_ref4:
+ case DW_FORM_ref_udata:
+ if (!do_loc)
+ printf (" <0x%s>", dwarf_vmatoa ("x", uvalue + cu_offset));
+ break;
+
+ case DW_FORM_data4:
+ case DW_FORM_addr:
+ case DW_FORM_sec_offset:
+ if (!do_loc)
+ printf (" 0x%s", dwarf_vmatoa ("x", uvalue));
+ break;
+
+ case DW_FORM_flag_present:
+ case DW_FORM_flag:
+ case DW_FORM_data1:
+ case DW_FORM_data2:
+ case DW_FORM_sdata:
+ case DW_FORM_udata:
+ if (!do_loc)
+ printf (" %s", dwarf_vmatoa ("d", uvalue));
+ break;
+
+ case DW_FORM_ref8:
+ case DW_FORM_data8:
+ if (!do_loc)
+ {
+ dwarf_vma high_bits;
+ dwarf_vma utmp;
+ char buf[64];
+
+ SAFE_BYTE_GET64 (data, &high_bits, &uvalue, end);
+ utmp = uvalue;
+ if (form == DW_FORM_ref8)
+ add64 (& high_bits, & utmp, cu_offset);
+ printf (" 0x%s",
+ dwarf_vmatoa64 (high_bits, utmp, buf, sizeof (buf)));
+ }
+
+ if ((do_loc || do_debug_loc || do_debug_ranges)
+ && num_debug_info_entries == 0)
+ {
+ if (sizeof (uvalue) == 8)
+ SAFE_BYTE_GET (uvalue, data, 8, end);
+ else
+ error (_("DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"));
+ }
+
+ data += 8;
+ break;
+
+ case DW_FORM_string:
+ if (!do_loc)
+ printf (" %.*s", (int) (end - data), data);
+ data += strnlen ((char *) data, end - data) + 1;
+ break;
+
+ case DW_FORM_block:
+ case DW_FORM_exprloc:
+ uvalue = read_uleb128 (data, & bytes_read, end);
+ block_start = data + bytes_read;
+ if (do_loc)
+ data = block_start + uvalue;
+ else
+ data = display_block (block_start, uvalue, end);
+ break;
+
+ case DW_FORM_block1:
+ SAFE_BYTE_GET (uvalue, data, 1, end);
+ block_start = data + 1;
+ if (do_loc)
+ data = block_start + uvalue;
+ else
+ data = display_block (block_start, uvalue, end);
+ break;
+
+ case DW_FORM_block2:
+ SAFE_BYTE_GET (uvalue, data, 2, end);
+ block_start = data + 2;
+ if (do_loc)
+ data = block_start + uvalue;
+ else
+ data = display_block (block_start, uvalue, end);
+ break;
+
+ case DW_FORM_block4:
+ SAFE_BYTE_GET (uvalue, data, 4, end);
+ block_start = data + 4;
+ if (do_loc)
+ data = block_start + uvalue;
+ else
+ data = display_block (block_start, uvalue, end);
+ break;
+
+ case DW_FORM_strp:
+ if (!do_loc)
+ printf (_(" (indirect string, offset: 0x%s): %s"),
+ dwarf_vmatoa ("x", uvalue),
+ fetch_indirect_string (uvalue));
+ break;
+
+ case DW_FORM_GNU_str_index:
+ if (!do_loc)
+ {
+ const char *suffix = strrchr (section->name, '.');
+ int dwo = (suffix && strcmp (suffix, ".dwo") == 0) ? 1 : 0;
+
+ printf (_(" (indexed string: 0x%s): %s"),
+ dwarf_vmatoa ("x", uvalue),
+ fetch_indexed_string (uvalue, this_set, offset_size, dwo));
+ }
+ break;
+
+ case DW_FORM_GNU_strp_alt:
+ if (!do_loc)
+ printf (_(" (alt indirect string, offset: 0x%s)"),
+ dwarf_vmatoa ("x", uvalue));
+ break;
+
+ case DW_FORM_indirect:
+ /* Handled above. */
+ break;
+
+ case DW_FORM_ref_sig8:
+ if (!do_loc)
+ {
+ dwarf_vma high_bits;
+ char buf[64];
+
+ SAFE_BYTE_GET64 (data, &high_bits, &uvalue, end);
+ printf (" signature: 0x%s",
+ dwarf_vmatoa64 (high_bits, uvalue, buf, sizeof (buf)));
+ }
+ data += 8;
+ break;
+
+ case DW_FORM_GNU_addr_index:
+ if (!do_loc)
+ printf (_(" (addr_index: 0x%s): %s"),
+ dwarf_vmatoa ("x", uvalue),
+ fetch_indexed_value (uvalue * pointer_size, pointer_size));
+ break;
+
+ default:
+ warn (_("Unrecognized form: %lu\n"), form);
+ break;
+ }
+
+ if ((do_loc || do_debug_loc || do_debug_ranges)
+ && num_debug_info_entries == 0
+ && debug_info_p != NULL)
+ {
+ switch (attribute)
+ {
+ case DW_AT_frame_base:
+ have_frame_base = 1;
+ case DW_AT_location:
+ case DW_AT_string_length:
+ case DW_AT_return_addr:
+ case DW_AT_data_member_location:
+ case DW_AT_vtable_elem_location:
+ case DW_AT_segment:
+ case DW_AT_static_link:
+ case DW_AT_use_location:
+ case DW_AT_GNU_call_site_value:
+ case DW_AT_GNU_call_site_data_value:
+ case DW_AT_GNU_call_site_target:
+ case DW_AT_GNU_call_site_target_clobbered:
+ if ((dwarf_version < 4
+ && (form == DW_FORM_data4 || form == DW_FORM_data8))
+ || form == DW_FORM_sec_offset)
+ {
+ /* Process location list. */
+ unsigned int lmax = debug_info_p->max_loc_offsets;
+ unsigned int num = debug_info_p->num_loc_offsets;
+
+ if (lmax == 0 || num >= lmax)
+ {
+ lmax += 1024;
+ debug_info_p->loc_offsets = (dwarf_vma *)
+ xcrealloc (debug_info_p->loc_offsets,
+ lmax, sizeof (*debug_info_p->loc_offsets));
+ debug_info_p->have_frame_base = (int *)
+ xcrealloc (debug_info_p->have_frame_base,
+ lmax, sizeof (*debug_info_p->have_frame_base));
+ debug_info_p->max_loc_offsets = lmax;
+ }
+ if (this_set != NULL)
+ uvalue += this_set->section_offsets [DW_SECT_LOC];
+ debug_info_p->loc_offsets [num] = uvalue;
+ debug_info_p->have_frame_base [num] = have_frame_base;
+ debug_info_p->num_loc_offsets++;
+ }
+ break;
+
+ case DW_AT_low_pc:
+ if (need_base_address)
+ debug_info_p->base_address = uvalue;
+ break;
+
+ case DW_AT_GNU_addr_base:
+ debug_info_p->addr_base = uvalue;
+ break;
+
+ case DW_AT_GNU_ranges_base:
+ debug_info_p->ranges_base = uvalue;
+ break;
+
+ case DW_AT_ranges:
+ if ((dwarf_version < 4
+ && (form == DW_FORM_data4 || form == DW_FORM_data8))
+ || form == DW_FORM_sec_offset)
+ {
+ /* Process range list. */
+ unsigned int lmax = debug_info_p->max_range_lists;
+ unsigned int num = debug_info_p->num_range_lists;
+
+ if (lmax == 0 || num >= lmax)
+ {
+ lmax += 1024;
+ debug_info_p->range_lists = (dwarf_vma *)
+ xcrealloc (debug_info_p->range_lists,
+ lmax, sizeof (*debug_info_p->range_lists));
+ debug_info_p->max_range_lists = lmax;
+ }
+ debug_info_p->range_lists [num] = uvalue;
+ debug_info_p->num_range_lists++;
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ if (do_loc || attribute == 0)
+ return data;
+
+ /* For some attributes we can display further information. */
+ printf ("\t");
+
+ switch (attribute)
+ {
+ case DW_AT_inline:
+ switch (uvalue)
+ {
+ case DW_INL_not_inlined:
+ printf (_("(not inlined)"));
+ break;
+ case DW_INL_inlined:
+ printf (_("(inlined)"));
+ break;
+ case DW_INL_declared_not_inlined:
+ printf (_("(declared as inline but ignored)"));
+ break;
+ case DW_INL_declared_inlined:
+ printf (_("(declared as inline and inlined)"));
+ break;
+ default:
+ printf (_(" (Unknown inline attribute value: %s)"),
+ dwarf_vmatoa ("x", uvalue));
+ break;
+ }
+ break;
+
+ case DW_AT_language:
+ switch (uvalue)
+ {
+ /* Ordered by the numeric value of these constants. */
+ case DW_LANG_C89: printf ("(ANSI C)"); break;
+ case DW_LANG_C: printf ("(non-ANSI C)"); break;
+ case DW_LANG_Ada83: printf ("(Ada)"); break;
+ case DW_LANG_C_plus_plus: printf ("(C++)"); break;
+ case DW_LANG_Cobol74: printf ("(Cobol 74)"); break;
+ case DW_LANG_Cobol85: printf ("(Cobol 85)"); break;
+ case DW_LANG_Fortran77: printf ("(FORTRAN 77)"); break;
+ case DW_LANG_Fortran90: printf ("(Fortran 90)"); break;
+ case DW_LANG_Pascal83: printf ("(ANSI Pascal)"); break;
+ case DW_LANG_Modula2: printf ("(Modula 2)"); break;
+ /* DWARF 2.1 values. */
+ case DW_LANG_Java: printf ("(Java)"); break;
+ case DW_LANG_C99: printf ("(ANSI C99)"); break;
+ case DW_LANG_Ada95: printf ("(ADA 95)"); break;
+ case DW_LANG_Fortran95: printf ("(Fortran 95)"); break;
+ /* DWARF 3 values. */
+ case DW_LANG_PLI: printf ("(PLI)"); break;
+ case DW_LANG_ObjC: printf ("(Objective C)"); break;
+ case DW_LANG_ObjC_plus_plus: printf ("(Objective C++)"); break;
+ case DW_LANG_UPC: printf ("(Unified Parallel C)"); break;
+ case DW_LANG_D: printf ("(D)"); break;
+ /* DWARF 4 values. */
+ case DW_LANG_Python: printf ("(Python)"); break;
+ /* DWARF 5 values. */
+ case DW_LANG_Go: printf ("(Go)"); break;
+ /* MIPS extension. */
+ case DW_LANG_Mips_Assembler: printf ("(MIPS assembler)"); break;
+ /* UPC extension. */
+ case DW_LANG_Upc: printf ("(Unified Parallel C)"); break;
+ default:
+ if (uvalue >= DW_LANG_lo_user && uvalue <= DW_LANG_hi_user)
+ printf (_("(implementation defined: %s)"),
+ dwarf_vmatoa ("x", uvalue));
+ else
+ printf (_("(Unknown: %s)"), dwarf_vmatoa ("x", uvalue));
+ break;
+ }
+ break;
+
+ case DW_AT_encoding:
+ switch (uvalue)
+ {
+ case DW_ATE_void: printf ("(void)"); break;
+ case DW_ATE_address: printf ("(machine address)"); break;
+ case DW_ATE_boolean: printf ("(boolean)"); break;
+ case DW_ATE_complex_float: printf ("(complex float)"); break;
+ case DW_ATE_float: printf ("(float)"); break;
+ case DW_ATE_signed: printf ("(signed)"); break;
+ case DW_ATE_signed_char: printf ("(signed char)"); break;
+ case DW_ATE_unsigned: printf ("(unsigned)"); break;
+ case DW_ATE_unsigned_char: printf ("(unsigned char)"); break;
+ /* DWARF 2.1 values: */
+ case DW_ATE_imaginary_float: printf ("(imaginary float)"); break;
+ case DW_ATE_decimal_float: printf ("(decimal float)"); break;
+ /* DWARF 3 values: */
+ case DW_ATE_packed_decimal: printf ("(packed_decimal)"); break;
+ case DW_ATE_numeric_string: printf ("(numeric_string)"); break;
+ case DW_ATE_edited: printf ("(edited)"); break;
+ case DW_ATE_signed_fixed: printf ("(signed_fixed)"); break;
+ case DW_ATE_unsigned_fixed: printf ("(unsigned_fixed)"); break;
+ /* HP extensions: */
+ case DW_ATE_HP_float80: printf ("(HP_float80)"); break;
+ case DW_ATE_HP_complex_float80: printf ("(HP_complex_float80)"); break;
+ case DW_ATE_HP_float128: printf ("(HP_float128)"); break;
+ case DW_ATE_HP_complex_float128:printf ("(HP_complex_float128)"); break;
+ case DW_ATE_HP_floathpintel: printf ("(HP_floathpintel)"); break;
+ case DW_ATE_HP_imaginary_float80: printf ("(HP_imaginary_float80)"); break;
+ case DW_ATE_HP_imaginary_float128: printf ("(HP_imaginary_float128)"); break;
+
+ default:
+ if (uvalue >= DW_ATE_lo_user
+ && uvalue <= DW_ATE_hi_user)
+ printf (_("(user defined type)"));
+ else
+ printf (_("(unknown type)"));
+ break;
+ }
+ break;
+
+ case DW_AT_accessibility:
+ switch (uvalue)
+ {
+ case DW_ACCESS_public: printf ("(public)"); break;
+ case DW_ACCESS_protected: printf ("(protected)"); break;
+ case DW_ACCESS_private: printf ("(private)"); break;
+ default:
+ printf (_("(unknown accessibility)"));
+ break;
+ }
+ break;
+
+ case DW_AT_visibility:
+ switch (uvalue)
+ {
+ case DW_VIS_local: printf ("(local)"); break;
+ case DW_VIS_exported: printf ("(exported)"); break;
+ case DW_VIS_qualified: printf ("(qualified)"); break;
+ default: printf (_("(unknown visibility)")); break;
+ }
+ break;
+
+ case DW_AT_virtuality:
+ switch (uvalue)
+ {
+ case DW_VIRTUALITY_none: printf ("(none)"); break;
+ case DW_VIRTUALITY_virtual: printf ("(virtual)"); break;
+ case DW_VIRTUALITY_pure_virtual:printf ("(pure_virtual)"); break;
+ default: printf (_("(unknown virtuality)")); break;
+ }
+ break;
+
+ case DW_AT_identifier_case:
+ switch (uvalue)
+ {
+ case DW_ID_case_sensitive: printf ("(case_sensitive)"); break;
+ case DW_ID_up_case: printf ("(up_case)"); break;
+ case DW_ID_down_case: printf ("(down_case)"); break;
+ case DW_ID_case_insensitive: printf ("(case_insensitive)"); break;
+ default: printf (_("(unknown case)")); break;
+ }
+ break;
+
+ case DW_AT_calling_convention:
+ switch (uvalue)
+ {
+ case DW_CC_normal: printf ("(normal)"); break;
+ case DW_CC_program: printf ("(program)"); break;
+ case DW_CC_nocall: printf ("(nocall)"); break;
+ default:
+ if (uvalue >= DW_CC_lo_user
+ && uvalue <= DW_CC_hi_user)
+ printf (_("(user defined)"));
+ else
+ printf (_("(unknown convention)"));
+ }
+ break;
+
+ case DW_AT_ordering:
+ switch (uvalue)
+ {
+ case -1: printf (_("(undefined)")); break;
+ case 0: printf ("(row major)"); break;
+ case 1: printf ("(column major)"); break;
+ }
+ break;
+
+ case DW_AT_frame_base:
+ have_frame_base = 1;
+ case DW_AT_location:
+ case DW_AT_string_length:
+ case DW_AT_return_addr:
+ case DW_AT_data_member_location:
+ case DW_AT_vtable_elem_location:
+ case DW_AT_segment:
+ case DW_AT_static_link:
+ case DW_AT_use_location:
+ case DW_AT_GNU_call_site_value:
+ case DW_AT_GNU_call_site_data_value:
+ case DW_AT_GNU_call_site_target:
+ case DW_AT_GNU_call_site_target_clobbered:
+ if ((dwarf_version < 4
+ && (form == DW_FORM_data4 || form == DW_FORM_data8))
+ || form == DW_FORM_sec_offset)
+ printf (_("(location list)"));
+ /* Fall through. */
+ case DW_AT_allocated:
+ case DW_AT_associated:
+ case DW_AT_data_location:
+ case DW_AT_stride:
+ case DW_AT_upper_bound:
+ case DW_AT_lower_bound:
+ if (block_start)
+ {
+ int need_frame_base;
+
+ printf ("(");
+ need_frame_base = decode_location_expression (block_start,
+ pointer_size,
+ offset_size,
+ dwarf_version,
+ uvalue,
+ cu_offset, section);
+ printf (")");
+ if (need_frame_base && !have_frame_base)
+ printf (_(" [without DW_AT_frame_base]"));
+ }
+ break;
+
+ case DW_AT_import:
+ {
+ if (form == DW_FORM_ref_sig8
+ || form == DW_FORM_GNU_ref_alt)
+ break;
+
+ if (form == DW_FORM_ref1
+ || form == DW_FORM_ref2
+ || form == DW_FORM_ref4
+ || form == DW_FORM_ref_udata)
+ uvalue += cu_offset;
+
+ if (uvalue >= section->size)
+ warn (_("Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"),
+ dwarf_vmatoa ("x", uvalue),
+ (unsigned long) (orig_data - section->start));
+ else
+ {
+ unsigned long abbrev_number;
+ abbrev_entry * entry;
+
+ abbrev_number = read_uleb128 (section->start + uvalue, NULL, end);
+
+ printf (_("[Abbrev Number: %ld"), abbrev_number);
+ /* Don't look up abbrev for DW_FORM_ref_addr, as it very often will
+ use different abbrev table, and we don't track .debug_info chunks
+ yet. */
+ if (form != DW_FORM_ref_addr)
+ {
+ for (entry = first_abbrev; entry != NULL; entry = entry->next)
+ if (entry->entry == abbrev_number)
+ break;
+ if (entry != NULL)
+ printf (" (%s)", get_TAG_name (entry->tag));
+ }
+ printf ("]");
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return data;
+}
+
+static const char *
+get_AT_name (unsigned long attribute)
+{
+ const char *name;
+
+ if (attribute == 0)
+ return "DW_AT value: 0";
+
+ /* One value is shared by the MIPS and HP extensions: */
+ if (attribute == DW_AT_MIPS_fde)
+ return "DW_AT_MIPS_fde or DW_AT_HP_unmodifiable";
+
+ name = get_DW_AT_name (attribute);
+
+ if (name == NULL)
+ {
+ static char buffer[100];
+
+ snprintf (buffer, sizeof (buffer), _("Unknown AT value: %lx"),
+ attribute);
+ return buffer;
+ }
+
+ return name;
+}
+
+static unsigned char *
+read_and_display_attr (unsigned long attribute,
+ unsigned long form,
+ unsigned char * data,
+ unsigned char * end,
+ dwarf_vma cu_offset,
+ dwarf_vma pointer_size,
+ dwarf_vma offset_size,
+ int dwarf_version,
+ debug_info * debug_info_p,
+ int do_loc,
+ struct dwarf_section * section,
+ struct cu_tu_set * this_set)
+{
+ if (!do_loc)
+ printf (" %-18s:", get_AT_name (attribute));
+ data = read_and_display_attr_value (attribute, form, data, end,
+ cu_offset, pointer_size, offset_size,
+ dwarf_version, debug_info_p,
+ do_loc, section, this_set);
+ if (!do_loc)
+ printf ("\n");
+ return data;
+}
+
+/* Process the contents of a .debug_info section. If do_loc is non-zero
+ then we are scanning for location lists and we do not want to display
+ anything to the user. If do_types is non-zero, we are processing
+ a .debug_types section instead of a .debug_info section. */
+
+static int
+process_debug_info (struct dwarf_section *section,
+ void *file,
+ enum dwarf_section_display_enum abbrev_sec,
+ int do_loc,
+ int do_types)
+{
+ unsigned char *start = section->start;
+ unsigned char *end = start + section->size;
+ unsigned char *section_begin;
+ unsigned int unit;
+ unsigned int num_units = 0;
+
+ if ((do_loc || do_debug_loc || do_debug_ranges)
+ && num_debug_info_entries == 0
+ && ! do_types)
+ {
+ dwarf_vma length;
+
+ /* First scan the section to get the number of comp units. */
+ for (section_begin = start, num_units = 0; section_begin < end;
+ num_units ++)
+ {
+ /* Read the first 4 bytes. For a 32-bit DWARF section, this
+ will be the length. For a 64-bit DWARF section, it'll be
+ the escape code 0xffffffff followed by an 8 byte length. */
+ SAFE_BYTE_GET (length, section_begin, 4, end);
+
+ if (length == 0xffffffff)
+ {
+ SAFE_BYTE_GET (length, section_begin + 4, 8, end);
+ section_begin += length + 12;
+ }
+ else if (length >= 0xfffffff0 && length < 0xffffffff)
+ {
+ warn (_("Reserved length value (0x%s) found in section %s\n"),
+ dwarf_vmatoa ("x", length), section->name);
+ return 0;
+ }
+ else
+ section_begin += length + 4;
+
+ /* Negative values are illegal, they may even cause infinite
+ looping. This can happen if we can't accurately apply
+ relocations to an object file. */
+ if ((signed long) length <= 0)
+ {
+ warn (_("Corrupt unit length (0x%s) found in section %s\n"),
+ dwarf_vmatoa ("x", length), section->name);
+ return 0;
+ }
+ }
+
+ if (num_units == 0)
+ {
+ error (_("No comp units in %s section ?"), section->name);
+ return 0;
+ }
+
+ /* Then allocate an array to hold the information. */
+ debug_information = (debug_info *) cmalloc (num_units,
+ sizeof (* debug_information));
+ if (debug_information == NULL)
+ {
+ error (_("Not enough memory for a debug info array of %u entries"),
+ num_units);
+ return 0;
+ }
+ }
+
+ if (!do_loc)
+ {
+ if (dwarf_start_die == 0)
+ printf (_("Contents of the %s section:\n\n"), section->name);
+
+ load_debug_section (str, file);
+ load_debug_section (str_dwo, file);
+ load_debug_section (str_index, file);
+ load_debug_section (str_index_dwo, file);
+ load_debug_section (debug_addr, file);
+ }
+
+ load_debug_section (abbrev_sec, file);
+ if (debug_displays [abbrev_sec].section.start == NULL)
+ {
+ warn (_("Unable to locate %s section!\n"),
+ debug_displays [abbrev_sec].section.name);
+ return 0;
+ }
+
+ for (section_begin = start, unit = 0; start < end; unit++)
+ {
+ DWARF2_Internal_CompUnit compunit;
+ unsigned char *hdrptr;
+ unsigned char *tags;
+ int level, last_level, saved_level;
+ dwarf_vma cu_offset;
+ unsigned int offset_size;
+ int initial_length_size;
+ dwarf_vma signature_high = 0;
+ dwarf_vma signature_low = 0;
+ dwarf_vma type_offset = 0;
+ struct cu_tu_set *this_set;
+ dwarf_vma abbrev_base;
+ size_t abbrev_size;
+
+ hdrptr = start;
+
+ SAFE_BYTE_GET_AND_INC (compunit.cu_length, hdrptr, 4, end);
+
+ if (compunit.cu_length == 0xffffffff)
+ {
+ SAFE_BYTE_GET_AND_INC (compunit.cu_length, hdrptr, 8, end);
+ offset_size = 8;
+ initial_length_size = 12;
+ }
+ else
+ {
+ offset_size = 4;
+ initial_length_size = 4;
+ }
+
+ SAFE_BYTE_GET_AND_INC (compunit.cu_version, hdrptr, 2, end);
+
+ cu_offset = start - section_begin;
+
+ this_set = find_cu_tu_set_v2 (cu_offset, do_types);
+
+ SAFE_BYTE_GET_AND_INC (compunit.cu_abbrev_offset, hdrptr, offset_size, end);
+
+ if (this_set == NULL)
+ {
+ abbrev_base = 0;
+ abbrev_size = debug_displays [abbrev_sec].section.size;
+ }
+ else
+ {
+ abbrev_base = this_set->section_offsets [DW_SECT_ABBREV];
+ abbrev_size = this_set->section_sizes [DW_SECT_ABBREV];
+ }
+
+ SAFE_BYTE_GET_AND_INC (compunit.cu_pointer_size, hdrptr, 1, end);
+
+ if (do_types)
+ {
+ SAFE_BYTE_GET64 (hdrptr, &signature_high, &signature_low, end);
+ hdrptr += 8;
+ SAFE_BYTE_GET_AND_INC (type_offset, hdrptr, offset_size, end);
+ }
+
+ if ((do_loc || do_debug_loc || do_debug_ranges)
+ && num_debug_info_entries == 0
+ && ! do_types)
+ {
+ debug_information [unit].cu_offset = cu_offset;
+ debug_information [unit].pointer_size
+ = compunit.cu_pointer_size;
+ debug_information [unit].offset_size = offset_size;
+ debug_information [unit].dwarf_version = compunit.cu_version;
+ debug_information [unit].base_address = 0;
+ debug_information [unit].addr_base = DEBUG_INFO_UNAVAILABLE;
+ debug_information [unit].ranges_base = DEBUG_INFO_UNAVAILABLE;
+ debug_information [unit].loc_offsets = NULL;
+ debug_information [unit].have_frame_base = NULL;
+ debug_information [unit].max_loc_offsets = 0;
+ debug_information [unit].num_loc_offsets = 0;
+ debug_information [unit].range_lists = NULL;
+ debug_information [unit].max_range_lists= 0;
+ debug_information [unit].num_range_lists = 0;
+ }
+
+ if (!do_loc && dwarf_start_die == 0)
+ {
+ printf (_(" Compilation Unit @ offset 0x%s:\n"),
+ dwarf_vmatoa ("x", cu_offset));
+ printf (_(" Length: 0x%s (%s)\n"),
+ dwarf_vmatoa ("x", compunit.cu_length),
+ offset_size == 8 ? "64-bit" : "32-bit");
+ printf (_(" Version: %d\n"), compunit.cu_version);
+ printf (_(" Abbrev Offset: 0x%s\n"),
+ dwarf_vmatoa ("x", compunit.cu_abbrev_offset));
+ printf (_(" Pointer Size: %d\n"), compunit.cu_pointer_size);
+ if (do_types)
+ {
+ char buf[64];
+
+ printf (_(" Signature: 0x%s\n"),
+ dwarf_vmatoa64 (signature_high, signature_low,
+ buf, sizeof (buf)));
+ printf (_(" Type Offset: 0x%s\n"),
+ dwarf_vmatoa ("x", type_offset));
+ }
+ if (this_set != NULL)
+ {
+ dwarf_vma *offsets = this_set->section_offsets;
+ size_t *sizes = this_set->section_sizes;
+
+ printf (_(" Section contributions:\n"));
+ printf (_(" .debug_abbrev.dwo: 0x%s 0x%s\n"),
+ dwarf_vmatoa ("x", offsets [DW_SECT_ABBREV]),
+ dwarf_vmatoa ("x", sizes [DW_SECT_ABBREV]));
+ printf (_(" .debug_line.dwo: 0x%s 0x%s\n"),
+ dwarf_vmatoa ("x", offsets [DW_SECT_LINE]),
+ dwarf_vmatoa ("x", sizes [DW_SECT_LINE]));
+ printf (_(" .debug_loc.dwo: 0x%s 0x%s\n"),
+ dwarf_vmatoa ("x", offsets [DW_SECT_LOC]),
+ dwarf_vmatoa ("x", sizes [DW_SECT_LOC]));
+ printf (_(" .debug_str_offsets.dwo: 0x%s 0x%s\n"),
+ dwarf_vmatoa ("x", offsets [DW_SECT_STR_OFFSETS]),
+ dwarf_vmatoa ("x", sizes [DW_SECT_STR_OFFSETS]));
+ }
+ }
+
+ if (cu_offset + compunit.cu_length + initial_length_size
+ > section->size)
+ {
+ warn (_("Debug info is corrupted, length of CU at %s"
+ " extends beyond end of section (length = %s)\n"),
+ dwarf_vmatoa ("x", cu_offset),
+ dwarf_vmatoa ("x", compunit.cu_length));
+ break;
+ }
+ tags = hdrptr;
+ start += compunit.cu_length + initial_length_size;
+
+ if (compunit.cu_version != 2
+ && compunit.cu_version != 3
+ && compunit.cu_version != 4)
+ {
+ warn (_("CU at offset %s contains corrupt or "
+ "unsupported version number: %d.\n"),
+ dwarf_vmatoa ("x", cu_offset), compunit.cu_version);
+ continue;
+ }
+
+ free_abbrevs ();
+
+ /* Process the abbrevs used by this compilation unit. DWARF
+ sections under Mach-O have non-zero addresses. */
+ if (compunit.cu_abbrev_offset >= abbrev_size)
+ warn (_("Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"),
+ (unsigned long) compunit.cu_abbrev_offset,
+ (unsigned long) abbrev_size);
+ else
+ process_abbrev_section
+ (((unsigned char *) debug_displays [abbrev_sec].section.start
+ + abbrev_base + compunit.cu_abbrev_offset),
+ ((unsigned char *) debug_displays [abbrev_sec].section.start
+ + abbrev_base + abbrev_size));
+
+ level = 0;
+ last_level = level;
+ saved_level = -1;
+ while (tags < start)
+ {
+ unsigned int bytes_read;
+ unsigned long abbrev_number;
+ unsigned long die_offset;
+ abbrev_entry *entry;
+ abbrev_attr *attr;
+ int do_printing = 1;
+
+ die_offset = tags - section_begin;
+
+ abbrev_number = read_uleb128 (tags, & bytes_read, start);
+ tags += bytes_read;
+
+ /* A null DIE marks the end of a list of siblings or it may also be
+ a section padding. */
+ if (abbrev_number == 0)
+ {
+ /* Check if it can be a section padding for the last CU. */
+ if (level == 0 && start == end)
+ {
+ unsigned char *chk;
+
+ for (chk = tags; chk < start; chk++)
+ if (*chk != 0)
+ break;
+ if (chk == start)
+ break;
+ }
+
+ if (!do_loc && die_offset >= dwarf_start_die
+ && (dwarf_cutoff_level == -1
+ || level < dwarf_cutoff_level))
+ printf (_(" <%d><%lx>: Abbrev Number: 0\n"),
+ level, die_offset);
+
+ --level;
+ if (level < 0)
+ {
+ static unsigned num_bogus_warns = 0;
+
+ if (num_bogus_warns < 3)
+ {
+ warn (_("Bogus end-of-siblings marker detected at offset %lx in %s section\n"),
+ die_offset, section->name);
+ num_bogus_warns ++;
+ if (num_bogus_warns == 3)
+ warn (_("Further warnings about bogus end-of-sibling markers suppressed\n"));
+ }
+ }
+ if (dwarf_start_die != 0 && level < saved_level)
+ return 1;
+ continue;
+ }
+
+ if (!do_loc)
+ {
+ if (dwarf_start_die != 0 && die_offset < dwarf_start_die)
+ do_printing = 0;
+ else
+ {
+ if (dwarf_start_die != 0 && die_offset == dwarf_start_die)
+ saved_level = level;
+ do_printing = (dwarf_cutoff_level == -1
+ || level < dwarf_cutoff_level);
+ if (do_printing)
+ printf (_(" <%d><%lx>: Abbrev Number: %lu"),
+ level, die_offset, abbrev_number);
+ else if (dwarf_cutoff_level == -1
+ || last_level < dwarf_cutoff_level)
+ printf (_(" <%d><%lx>: ...\n"), level, die_offset);
+ last_level = level;
+ }
+ }
+
+ /* Scan through the abbreviation list until we reach the
+ correct entry. */
+ for (entry = first_abbrev;
+ entry && entry->entry != abbrev_number;
+ entry = entry->next)
+ continue;
+
+ if (entry == NULL)
+ {
+ if (!do_loc && do_printing)
+ {
+ printf ("\n");
+ fflush (stdout);
+ }
+ warn (_("DIE at offset %lx refers to abbreviation number %lu which does not exist\n"),
+ die_offset, abbrev_number);
+ return 0;
+ }
+
+ if (!do_loc && do_printing)
+ printf (" (%s)\n", get_TAG_name (entry->tag));
+
+ switch (entry->tag)
+ {
+ default:
+ need_base_address = 0;
+ break;
+ case DW_TAG_compile_unit:
+ need_base_address = 1;
+ break;
+ case DW_TAG_entry_point:
+ case DW_TAG_subprogram:
+ need_base_address = 0;
+ /* Assuming that there is no DW_AT_frame_base. */
+ have_frame_base = 0;
+ break;
+ }
+
+ for (attr = entry->first_attr;
+ attr && attr->attribute;
+ attr = attr->next)
+ {
+ debug_info *arg;
+
+ if (! do_loc && do_printing)
+ /* Show the offset from where the tag was extracted. */
+ printf (" <%lx>", (unsigned long)(tags - section_begin));
+
+ arg = debug_information;
+ if (debug_information)
+ arg += unit;
+
+ tags = read_and_display_attr (attr->attribute,
+ attr->form,
+ tags,
+ end,
+ cu_offset,
+ compunit.cu_pointer_size,
+ offset_size,
+ compunit.cu_version,
+ arg,
+ do_loc || ! do_printing,
+ section,
+ this_set);
+ }
+
+ if (entry->children)
+ ++level;
+ }
+ }
+
+ /* Set num_debug_info_entries here so that it can be used to check if
+ we need to process .debug_loc and .debug_ranges sections. */
+ if ((do_loc || do_debug_loc || do_debug_ranges)
+ && num_debug_info_entries == 0
+ && ! do_types)
+ num_debug_info_entries = num_units;
+
+ if (!do_loc)
+ printf ("\n");
+
+ return 1;
+}
+
+/* Locate and scan the .debug_info section in the file and record the pointer
+ sizes and offsets for the compilation units in it. Usually an executable
+ will have just one pointer size, but this is not guaranteed, and so we try
+ not to make any assumptions. Returns zero upon failure, or the number of
+ compilation units upon success. */
+
+static unsigned int
+load_debug_info (void * file)
+{
+ /* Reset the last pointer size so that we can issue correct error
+ messages if we are displaying the contents of more than one section. */
+ last_pointer_size = 0;
+ warned_about_missing_comp_units = FALSE;
+
+ /* If we have already tried and failed to load the .debug_info
+ section then do not bother to repeat the task. */
+ if (num_debug_info_entries == DEBUG_INFO_UNAVAILABLE)
+ return 0;
+
+ /* If we already have the information there is nothing else to do. */
+ if (num_debug_info_entries > 0)
+ return num_debug_info_entries;
+
+ /* If this is a DWARF package file, load the CU and TU indexes. */
+ load_cu_tu_indexes (file);
+
+ if (load_debug_section (info, file)
+ && process_debug_info (&debug_displays [info].section, file, abbrev, 1, 0))
+ return num_debug_info_entries;
+ else if (load_debug_section (info_dwo, file)
+ && process_debug_info (&debug_displays [info_dwo].section, file,
+ abbrev_dwo, 1, 0))
+ return num_debug_info_entries;
+
+ num_debug_info_entries = DEBUG_INFO_UNAVAILABLE;
+ return 0;
+}
+
+/* Read a DWARF .debug_line section header starting at DATA.
+ Upon success returns an updated DATA pointer and the LINFO
+ structure and the END_OF_SEQUENCE pointer will be filled in.
+ Otherwise returns NULL. */
+
+static unsigned char *
+read_debug_line_header (struct dwarf_section * section,
+ unsigned char * data,
+ unsigned char * end,
+ DWARF2_Internal_LineInfo * linfo,
+ unsigned char ** end_of_sequence)
+{
+ unsigned char *hdrptr;
+ unsigned int offset_size;
+ unsigned int initial_length_size;
+
+ /* Extract information from the Line Number Program Header.
+ (section 6.2.4 in the Dwarf3 doc). */
+ hdrptr = data;
+
+ /* Get and check the length of the block. */
+ SAFE_BYTE_GET_AND_INC (linfo->li_length, hdrptr, 4, end);
+
+ if (linfo->li_length == 0xffffffff)
+ {
+ /* This section is 64-bit DWARF 3. */
+ SAFE_BYTE_GET_AND_INC (linfo->li_length, hdrptr, 8, end);
+ offset_size = 8;
+ initial_length_size = 12;
+ }
+ else
+ {
+ offset_size = 4;
+ initial_length_size = 4;
+ }
+
+ if (linfo->li_length + initial_length_size > section->size)
+ {
+ /* If the length is just a bias against the initial_length_size then
+ this means that the field has a relocation against it which has not
+ been applied. (Ie we are dealing with an object file, not a linked
+ binary). Do not complain but instead assume that the rest of the
+ section applies to this particular header. */
+ if (linfo->li_length == - initial_length_size)
+ {
+ linfo->li_length = section->size - initial_length_size;
+ }
+ else
+ {
+ warn (_("The line info appears to be corrupt - "
+ "the section is too small\n"));
+ return NULL;
+ }
+ }
+
+ /* Get and check the version number. */
+ SAFE_BYTE_GET_AND_INC (linfo->li_version, hdrptr, 2, end);
+
+ if (linfo->li_version != 2
+ && linfo->li_version != 3
+ && linfo->li_version != 4)
+ {
+ warn (_("Only DWARF version 2, 3 and 4 line info is currently supported.\n"));
+ return NULL;
+ }
+
+ SAFE_BYTE_GET_AND_INC (linfo->li_prologue_length, hdrptr, offset_size, end);
+ SAFE_BYTE_GET_AND_INC (linfo->li_min_insn_length, hdrptr, 1, end);
+
+ if (linfo->li_version >= 4)
+ {
+ SAFE_BYTE_GET_AND_INC (linfo->li_max_ops_per_insn, hdrptr, 1, end);
+
+ if (linfo->li_max_ops_per_insn == 0)
+ {
+ warn (_("Invalid maximum operations per insn.\n"));
+ return NULL;
+ }
+ }
+ else
+ linfo->li_max_ops_per_insn = 1;
+
+ SAFE_BYTE_GET_AND_INC (linfo->li_default_is_stmt, hdrptr, 1, end);
+ SAFE_BYTE_GET_AND_INC (linfo->li_line_base, hdrptr, 1, end);
+ SAFE_BYTE_GET_AND_INC (linfo->li_line_range, hdrptr, 1, end);
+ SAFE_BYTE_GET_AND_INC (linfo->li_opcode_base, hdrptr, 1, end);
+
+ /* Sign extend the line base field. */
+ linfo->li_line_base <<= 24;
+ linfo->li_line_base >>= 24;
+
+ * end_of_sequence = data + linfo->li_length + initial_length_size;
+ return hdrptr;
+}
+
+static int
+display_debug_lines_raw (struct dwarf_section *section,
+ unsigned char *data,
+ unsigned char *end)
+{
+ unsigned char *start = section->start;
+
+ printf (_("Raw dump of debug contents of section %s:\n\n"),
+ section->name);
+
+ while (data < end)
+ {
+ static DWARF2_Internal_LineInfo saved_linfo;
+ DWARF2_Internal_LineInfo linfo;
+ unsigned char *standard_opcodes;
+ unsigned char *end_of_sequence;
+ unsigned int last_dir_entry = 0;
+ int i;
+
+ if (const_strneq (section->name, ".debug_line.")
+ /* Note: the following does not apply to .debug_line.dwo sections.
+ These are full debug_line sections. */
+ && strcmp (section->name, ".debug_line.dwo") != 0)
+ {
+ /* Sections named .debug_line.<foo> are fragments of a .debug_line
+ section containing just the Line Number Statements. They are
+ created by the assembler and intended to be used alongside gcc's
+ -ffunction-sections command line option. When the linker's
+ garbage collection decides to discard a .text.<foo> section it
+ can then also discard the line number information in .debug_line.<foo>.
+
+ Since the section is a fragment it does not have the details
+ needed to fill out a LineInfo structure, so instead we use the
+ details from the last full debug_line section that we processed. */
+ end_of_sequence = end;
+ standard_opcodes = NULL;
+ linfo = saved_linfo;
+ reset_state_machine (linfo.li_default_is_stmt);
+ }
+ else
+ {
+ unsigned char * hdrptr;
+
+ if ((hdrptr = read_debug_line_header (section, data, end, & linfo,
+ & end_of_sequence)) == NULL)
+ return 0;
+
+ printf (_(" Offset: 0x%lx\n"), (long)(data - start));
+ printf (_(" Length: %ld\n"), (long) linfo.li_length);
+ printf (_(" DWARF Version: %d\n"), linfo.li_version);
+ printf (_(" Prologue Length: %d\n"), linfo.li_prologue_length);
+ printf (_(" Minimum Instruction Length: %d\n"), linfo.li_min_insn_length);
+ if (linfo.li_version >= 4)
+ printf (_(" Maximum Ops per Instruction: %d\n"), linfo.li_max_ops_per_insn);
+ printf (_(" Initial value of 'is_stmt': %d\n"), linfo.li_default_is_stmt);
+ printf (_(" Line Base: %d\n"), linfo.li_line_base);
+ printf (_(" Line Range: %d\n"), linfo.li_line_range);
+ printf (_(" Opcode Base: %d\n"), linfo.li_opcode_base);
+
+ reset_state_machine (linfo.li_default_is_stmt);
+
+ /* Display the contents of the Opcodes table. */
+ standard_opcodes = hdrptr;
+
+ printf (_("\n Opcodes:\n"));
+
+ for (i = 1; i < linfo.li_opcode_base; i++)
+ printf (_(" Opcode %d has %d args\n"), i, standard_opcodes[i - 1]);
+
+ /* Display the contents of the Directory table. */
+ data = standard_opcodes + linfo.li_opcode_base - 1;
+
+ if (*data == 0)
+ printf (_("\n The Directory Table is empty.\n"));
+ else
+ {
+ printf (_("\n The Directory Table (offset 0x%lx):\n"),
+ (long)(data - start));
+
+ while (*data != 0)
+ {
+ printf (" %d\t%s\n", ++last_dir_entry, data);
+
+ data += strnlen ((char *) data, end - data) + 1;
+ }
+ }
+
+ /* Skip the NUL at the end of the table. */
+ data++;
+
+ /* Display the contents of the File Name table. */
+ if (*data == 0)
+ printf (_("\n The File Name Table is empty.\n"));
+ else
+ {
+ printf (_("\n The File Name Table (offset 0x%lx):\n"),
+ (long)(data - start));
+ printf (_(" Entry\tDir\tTime\tSize\tName\n"));
+
+ while (*data != 0)
+ {
+ unsigned char *name;
+ unsigned int bytes_read;
+
+ printf (" %d\t", ++state_machine_regs.last_file_entry);
+ name = data;
+ data += strnlen ((char *) data, end - data) + 1;
+
+ printf ("%s\t",
+ dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
+ data += bytes_read;
+ printf ("%s\t",
+ dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
+ data += bytes_read;
+ printf ("%s\t",
+ dwarf_vmatoa ("u", read_uleb128 (data, & bytes_read, end)));
+ data += bytes_read;
+ printf ("%s\n", name);
+
+ if (data == end)
+ {
+ warn (_("Corrupt file name table entry\n"));
+ break;
+ }
+ }
+ }
+
+ /* Skip the NUL at the end of the table. */
+ data++;
+ putchar ('\n');
+ saved_linfo = linfo;
+ }
+
+ /* Now display the statements. */
+ if (data >= end_of_sequence)
+ printf (_(" No Line Number Statements.\n"));
+ else
+ {
+ printf (_(" Line Number Statements:\n"));
+
+ while (data < end_of_sequence)
+ {
+ unsigned char op_code;
+ dwarf_signed_vma adv;
+ dwarf_vma uladv;
+ unsigned int bytes_read;
+
+ printf (" [0x%08lx]", (long)(data - start));
+
+ op_code = *data++;
+
+ if (op_code >= linfo.li_opcode_base)
+ {
+ op_code -= linfo.li_opcode_base;
+ uladv = (op_code / linfo.li_line_range);
+ if (linfo.li_max_ops_per_insn == 1)
+ {
+ uladv *= linfo.li_min_insn_length;
+ state_machine_regs.address += uladv;
+ printf (_(" Special opcode %d: "
+ "advance Address by %s to 0x%s"),
+ op_code, dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address));
+ }
+ else
+ {
+ state_machine_regs.address
+ += ((state_machine_regs.op_index + uladv)
+ / linfo.li_max_ops_per_insn)
+ * linfo.li_min_insn_length;
+ state_machine_regs.op_index
+ = (state_machine_regs.op_index + uladv)
+ % linfo.li_max_ops_per_insn;
+ printf (_(" Special opcode %d: "
+ "advance Address by %s to 0x%s[%d]"),
+ op_code, dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address),
+ state_machine_regs.op_index);
+ }
+ adv = (op_code % linfo.li_line_range) + linfo.li_line_base;
+ state_machine_regs.line += adv;
+ printf (_(" and Line by %s to %d\n"),
+ dwarf_vmatoa ("d", adv), state_machine_regs.line);
+ }
+ else switch (op_code)
+ {
+ case DW_LNS_extended_op:
+ data += process_extended_line_op (data, linfo.li_default_is_stmt, end);
+ break;
+
+ case DW_LNS_copy:
+ printf (_(" Copy\n"));
+ break;
+
+ case DW_LNS_advance_pc:
+ uladv = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ if (linfo.li_max_ops_per_insn == 1)
+ {
+ uladv *= linfo.li_min_insn_length;
+ state_machine_regs.address += uladv;
+ printf (_(" Advance PC by %s to 0x%s\n"),
+ dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address));
+ }
+ else
+ {
+ state_machine_regs.address
+ += ((state_machine_regs.op_index + uladv)
+ / linfo.li_max_ops_per_insn)
+ * linfo.li_min_insn_length;
+ state_machine_regs.op_index
+ = (state_machine_regs.op_index + uladv)
+ % linfo.li_max_ops_per_insn;
+ printf (_(" Advance PC by %s to 0x%s[%d]\n"),
+ dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address),
+ state_machine_regs.op_index);
+ }
+ break;
+
+ case DW_LNS_advance_line:
+ adv = read_sleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ state_machine_regs.line += adv;
+ printf (_(" Advance Line by %s to %d\n"),
+ dwarf_vmatoa ("d", adv),
+ state_machine_regs.line);
+ break;
+
+ case DW_LNS_set_file:
+ adv = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ printf (_(" Set File Name to entry %s in the File Name Table\n"),
+ dwarf_vmatoa ("d", adv));
+ state_machine_regs.file = adv;
+ break;
+
+ case DW_LNS_set_column:
+ uladv = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ printf (_(" Set column to %s\n"),
+ dwarf_vmatoa ("u", uladv));
+ state_machine_regs.column = uladv;
+ break;
+
+ case DW_LNS_negate_stmt:
+ adv = state_machine_regs.is_stmt;
+ adv = ! adv;
+ printf (_(" Set is_stmt to %s\n"), dwarf_vmatoa ("d", adv));
+ state_machine_regs.is_stmt = adv;
+ break;
+
+ case DW_LNS_set_basic_block:
+ printf (_(" Set basic block\n"));
+ state_machine_regs.basic_block = 1;
+ break;
+
+ case DW_LNS_const_add_pc:
+ uladv = ((255 - linfo.li_opcode_base) / linfo.li_line_range);
+ if (linfo.li_max_ops_per_insn)
+ {
+ uladv *= linfo.li_min_insn_length;
+ state_machine_regs.address += uladv;
+ printf (_(" Advance PC by constant %s to 0x%s\n"),
+ dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address));
+ }
+ else
+ {
+ state_machine_regs.address
+ += ((state_machine_regs.op_index + uladv)
+ / linfo.li_max_ops_per_insn)
+ * linfo.li_min_insn_length;
+ state_machine_regs.op_index
+ = (state_machine_regs.op_index + uladv)
+ % linfo.li_max_ops_per_insn;
+ printf (_(" Advance PC by constant %s to 0x%s[%d]\n"),
+ dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address),
+ state_machine_regs.op_index);
+ }
+ break;
+
+ case DW_LNS_fixed_advance_pc:
+ SAFE_BYTE_GET_AND_INC (uladv, data, 2, end);
+ state_machine_regs.address += uladv;
+ state_machine_regs.op_index = 0;
+ printf (_(" Advance PC by fixed size amount %s to 0x%s\n"),
+ dwarf_vmatoa ("u", uladv),
+ dwarf_vmatoa ("x", state_machine_regs.address));
+ break;
+
+ case DW_LNS_set_prologue_end:
+ printf (_(" Set prologue_end to true\n"));
+ break;
+
+ case DW_LNS_set_epilogue_begin:
+ printf (_(" Set epilogue_begin to true\n"));
+ break;
+
+ case DW_LNS_set_isa:
+ uladv = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ printf (_(" Set ISA to %s\n"), dwarf_vmatoa ("u", uladv));
+ break;
+
+ default:
+ printf (_(" Unknown opcode %d with operands: "), op_code);
+
+ if (standard_opcodes != NULL)
+ for (i = standard_opcodes[op_code - 1]; i > 0 ; --i)
+ {
+ printf ("0x%s%s", dwarf_vmatoa ("x", read_uleb128 (data,
+ &bytes_read, end)),
+ i == 1 ? "" : ", ");
+ data += bytes_read;
+ }
+ putchar ('\n');
+ break;
+ }
+ }
+ putchar ('\n');
+ }
+ }
+
+ return 1;
+}
+
+typedef struct
+{
+ unsigned char *name;
+ unsigned int directory_index;
+ unsigned int modification_date;
+ unsigned int length;
+} File_Entry;
+
+/* Output a decoded representation of the .debug_line section. */
+
+static int
+display_debug_lines_decoded (struct dwarf_section *section,
+ unsigned char *data,
+ unsigned char *end)
+{
+ static DWARF2_Internal_LineInfo saved_linfo;
+
+ printf (_("Decoded dump of debug contents of section %s:\n\n"),
+ section->name);
+
+ while (data < end)
+ {
+ /* This loop amounts to one iteration per compilation unit. */
+ DWARF2_Internal_LineInfo linfo;
+ unsigned char *standard_opcodes;
+ unsigned char *end_of_sequence;
+ int i;
+ File_Entry *file_table = NULL;
+ unsigned int n_files = 0;
+ unsigned char **directory_table = NULL;
+ unsigned int n_directories = 0;
+
+ if (const_strneq (section->name, ".debug_line.")
+ /* Note: the following does not apply to .debug_line.dwo sections.
+ These are full debug_line sections. */
+ && strcmp (section->name, ".debug_line.dwo") != 0)
+ {
+ /* See comment in display_debug_lines_raw(). */
+ end_of_sequence = end;
+ standard_opcodes = NULL;
+ linfo = saved_linfo;
+ reset_state_machine (linfo.li_default_is_stmt);
+ }
+ else
+ {
+ unsigned char *hdrptr;
+
+ if ((hdrptr = read_debug_line_header (section, data, end, & linfo,
+ & end_of_sequence)) == NULL)
+ return 0;
+
+ reset_state_machine (linfo.li_default_is_stmt);
+
+ /* Save a pointer to the contents of the Opcodes table. */
+ standard_opcodes = hdrptr;
+
+ /* Traverse the Directory table just to count entries. */
+ data = standard_opcodes + linfo.li_opcode_base - 1;
+ if (*data != 0)
+ {
+ unsigned char *ptr_directory_table = data;
+
+ while (*data != 0)
+ {
+ data += strnlen ((char *) data, end - data) + 1;
+ n_directories++;
+ }
+
+ /* Go through the directory table again to save the directories. */
+ directory_table = (unsigned char **)
+ xmalloc (n_directories * sizeof (unsigned char *));
+
+ i = 0;
+ while (*ptr_directory_table != 0)
+ {
+ directory_table[i] = ptr_directory_table;
+ ptr_directory_table += strnlen ((char *) ptr_directory_table,
+ ptr_directory_table - end) + 1;
+ i++;
+ }
+ }
+ /* Skip the NUL at the end of the table. */
+ data++;
+
+ /* Traverse the File Name table just to count the entries. */
+ if (*data != 0)
+ {
+ unsigned char *ptr_file_name_table = data;
+
+ while (*data != 0)
+ {
+ unsigned int bytes_read;
+
+ /* Skip Name, directory index, last modification time and length
+ of file. */
+ data += strnlen ((char *) data, end - data) + 1;
+ read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+
+ n_files++;
+ }
+
+ /* Go through the file table again to save the strings. */
+ file_table = (File_Entry *) xmalloc (n_files * sizeof (File_Entry));
+
+ i = 0;
+ while (*ptr_file_name_table != 0)
+ {
+ unsigned int bytes_read;
+
+ file_table[i].name = ptr_file_name_table;
+ ptr_file_name_table += strnlen ((char *) ptr_file_name_table,
+ end - ptr_file_name_table) + 1;
+
+ /* We are not interested in directory, time or size. */
+ file_table[i].directory_index = read_uleb128 (ptr_file_name_table,
+ & bytes_read, end);
+ ptr_file_name_table += bytes_read;
+ file_table[i].modification_date = read_uleb128 (ptr_file_name_table,
+ & bytes_read, end);
+ ptr_file_name_table += bytes_read;
+ file_table[i].length = read_uleb128 (ptr_file_name_table, & bytes_read, end);
+ ptr_file_name_table += bytes_read;
+ i++;
+ }
+ i = 0;
+
+ /* Print the Compilation Unit's name and a header. */
+ if (directory_table == NULL)
+ {
+ printf (_("CU: %s:\n"), file_table[0].name);
+ printf (_("File name Line number Starting address\n"));
+ }
+ else
+ {
+ unsigned int ix = file_table[0].directory_index;
+ const char *directory = ix ? (char *)directory_table[ix - 1] : ".";
+
+ if (do_wide || strlen (directory) < 76)
+ printf (_("CU: %s/%s:\n"), directory, file_table[0].name);
+ else
+ printf ("%s:\n", file_table[0].name);
+
+ printf (_("File name Line number Starting address\n"));
+ }
+ }
+
+ /* Skip the NUL at the end of the table. */
+ data++;
+
+ saved_linfo = linfo;
+ }
+
+ /* This loop iterates through the Dwarf Line Number Program. */
+ while (data < end_of_sequence)
+ {
+ unsigned char op_code;
+ int adv;
+ unsigned long int uladv;
+ unsigned int bytes_read;
+ int is_special_opcode = 0;
+
+ op_code = *data++;
+
+ if (op_code >= linfo.li_opcode_base)
+ {
+ op_code -= linfo.li_opcode_base;
+ uladv = (op_code / linfo.li_line_range);
+ if (linfo.li_max_ops_per_insn == 1)
+ {
+ uladv *= linfo.li_min_insn_length;
+ state_machine_regs.address += uladv;
+ }
+ else
+ {
+ state_machine_regs.address
+ += ((state_machine_regs.op_index + uladv)
+ / linfo.li_max_ops_per_insn)
+ * linfo.li_min_insn_length;
+ state_machine_regs.op_index
+ = (state_machine_regs.op_index + uladv)
+ % linfo.li_max_ops_per_insn;
+ }
+
+ adv = (op_code % linfo.li_line_range) + linfo.li_line_base;
+ state_machine_regs.line += adv;
+ is_special_opcode = 1;
+ }
+ else switch (op_code)
+ {
+ case DW_LNS_extended_op:
+ {
+ unsigned int ext_op_code_len;
+ unsigned char ext_op_code;
+ unsigned char *op_code_data = data;
+
+ ext_op_code_len = read_uleb128 (op_code_data, &bytes_read,
+ end_of_sequence);
+ op_code_data += bytes_read;
+
+ if (ext_op_code_len == 0)
+ {
+ warn (_("badly formed extended line op encountered!\n"));
+ break;
+ }
+ ext_op_code_len += bytes_read;
+ ext_op_code = *op_code_data++;
+
+ switch (ext_op_code)
+ {
+ case DW_LNE_end_sequence:
+ reset_state_machine (linfo.li_default_is_stmt);
+ break;
+ case DW_LNE_set_address:
+ SAFE_BYTE_GET_AND_INC (state_machine_regs.address,
+ op_code_data,
+ ext_op_code_len - bytes_read - 1,
+ end);
+ state_machine_regs.op_index = 0;
+ break;
+ case DW_LNE_define_file:
+ {
+ file_table = (File_Entry *) xrealloc
+ (file_table, (n_files + 1) * sizeof (File_Entry));
+
+ ++state_machine_regs.last_file_entry;
+ /* Source file name. */
+ file_table[n_files].name = op_code_data;
+ op_code_data += strlen ((char *) op_code_data) + 1;
+ /* Directory index. */
+ file_table[n_files].directory_index =
+ read_uleb128 (op_code_data, & bytes_read,
+ end_of_sequence);
+ op_code_data += bytes_read;
+ /* Last modification time. */
+ file_table[n_files].modification_date =
+ read_uleb128 (op_code_data, & bytes_read,
+ end_of_sequence);
+ op_code_data += bytes_read;
+ /* File length. */
+ file_table[n_files].length =
+ read_uleb128 (op_code_data, & bytes_read,
+ end_of_sequence);
+
+ n_files++;
+ break;
+ }
+ case DW_LNE_set_discriminator:
+ case DW_LNE_HP_set_sequence:
+ /* Simply ignored. */
+ break;
+
+ default:
+ printf (_("UNKNOWN (%u): length %d\n"),
+ ext_op_code, ext_op_code_len - bytes_read);
+ break;
+ }
+ data += ext_op_code_len;
+ break;
+ }
+ case DW_LNS_copy:
+ break;
+
+ case DW_LNS_advance_pc:
+ uladv = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ if (linfo.li_max_ops_per_insn == 1)
+ {
+ uladv *= linfo.li_min_insn_length;
+ state_machine_regs.address += uladv;
+ }
+ else
+ {
+ state_machine_regs.address
+ += ((state_machine_regs.op_index + uladv)
+ / linfo.li_max_ops_per_insn)
+ * linfo.li_min_insn_length;
+ state_machine_regs.op_index
+ = (state_machine_regs.op_index + uladv)
+ % linfo.li_max_ops_per_insn;
+ }
+ break;
+
+ case DW_LNS_advance_line:
+ adv = read_sleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ state_machine_regs.line += adv;
+ break;
+
+ case DW_LNS_set_file:
+ adv = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ state_machine_regs.file = adv;
+
+ if (file_table == NULL)
+ printf (_("\n [Use file table entry %d]\n"), state_machine_regs.file - 1);
+ else if (file_table[state_machine_regs.file - 1].directory_index == 0)
+ /* If directory index is 0, that means current directory. */
+ printf ("\n./%s:[++]\n",
+ file_table[state_machine_regs.file - 1].name);
+ else if (directory_table == NULL)
+ printf (_("\n [Use directory table entry %d]\n"),
+ file_table[state_machine_regs.file - 1].directory_index - 1);
+ else
+ /* The directory index starts counting at 1. */
+ printf ("\n%s/%s:\n",
+ directory_table[file_table[state_machine_regs.file - 1].directory_index - 1],
+ file_table[state_machine_regs.file - 1].name);
+ break;
+
+ case DW_LNS_set_column:
+ uladv = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ state_machine_regs.column = uladv;
+ break;
+
+ case DW_LNS_negate_stmt:
+ adv = state_machine_regs.is_stmt;
+ adv = ! adv;
+ state_machine_regs.is_stmt = adv;
+ break;
+
+ case DW_LNS_set_basic_block:
+ state_machine_regs.basic_block = 1;
+ break;
+
+ case DW_LNS_const_add_pc:
+ uladv = ((255 - linfo.li_opcode_base) / linfo.li_line_range);
+ if (linfo.li_max_ops_per_insn == 1)
+ {
+ uladv *= linfo.li_min_insn_length;
+ state_machine_regs.address += uladv;
+ }
+ else
+ {
+ state_machine_regs.address
+ += ((state_machine_regs.op_index + uladv)
+ / linfo.li_max_ops_per_insn)
+ * linfo.li_min_insn_length;
+ state_machine_regs.op_index
+ = (state_machine_regs.op_index + uladv)
+ % linfo.li_max_ops_per_insn;
+ }
+ break;
+
+ case DW_LNS_fixed_advance_pc:
+ SAFE_BYTE_GET_AND_INC (uladv, data, 2, end);
+ state_machine_regs.address += uladv;
+ state_machine_regs.op_index = 0;
+ break;
+
+ case DW_LNS_set_prologue_end:
+ break;
+
+ case DW_LNS_set_epilogue_begin:
+ break;
+
+ case DW_LNS_set_isa:
+ uladv = read_uleb128 (data, & bytes_read, end);
+ data += bytes_read;
+ printf (_(" Set ISA to %lu\n"), uladv);
+ break;
+
+ default:
+ printf (_(" Unknown opcode %d with operands: "), op_code);
+
+ if (standard_opcodes != NULL)
+ for (i = standard_opcodes[op_code - 1]; i > 0 ; --i)
+ {
+ printf ("0x%s%s", dwarf_vmatoa ("x", read_uleb128 (data,
+ &bytes_read, end)),
+ i == 1 ? "" : ", ");
+ data += bytes_read;
+ }
+ putchar ('\n');
+ break;
+ }
+
+ /* Only Special opcodes, DW_LNS_copy and DW_LNE_end_sequence adds a row
+ to the DWARF address/line matrix. */
+ if ((is_special_opcode) || (op_code == DW_LNE_end_sequence)
+ || (op_code == DW_LNS_copy))
+ {
+ const unsigned int MAX_FILENAME_LENGTH = 35;
+ char *fileName;
+ char *newFileName = NULL;
+ size_t fileNameLength;
+
+ if (file_table)
+ fileName = (char *) file_table[state_machine_regs.file - 1].name;
+ else
+ fileName = "<unknown>";
+
+ fileNameLength = strlen (fileName);
+
+ if ((fileNameLength > MAX_FILENAME_LENGTH) && (!do_wide))
+ {
+ newFileName = (char *) xmalloc (MAX_FILENAME_LENGTH + 1);
+ /* Truncate file name */
+ strncpy (newFileName,
+ fileName + fileNameLength - MAX_FILENAME_LENGTH,
+ MAX_FILENAME_LENGTH + 1);
+ }
+ else
+ {
+ newFileName = (char *) xmalloc (fileNameLength + 1);
+ strncpy (newFileName, fileName, fileNameLength + 1);
+ }
+
+ if (!do_wide || (fileNameLength <= MAX_FILENAME_LENGTH))
+ {
+ if (linfo.li_max_ops_per_insn == 1)
+ printf ("%-35s %11d %#18" DWARF_VMA_FMT "x\n",
+ newFileName, state_machine_regs.line,
+ state_machine_regs.address);
+ else
+ printf ("%-35s %11d %#18" DWARF_VMA_FMT "x[%d]\n",
+ newFileName, state_machine_regs.line,
+ state_machine_regs.address,
+ state_machine_regs.op_index);
+ }
+ else
+ {
+ if (linfo.li_max_ops_per_insn == 1)
+ printf ("%s %11d %#18" DWARF_VMA_FMT "x\n",
+ newFileName, state_machine_regs.line,
+ state_machine_regs.address);
+ else
+ printf ("%s %11d %#18" DWARF_VMA_FMT "x[%d]\n",
+ newFileName, state_machine_regs.line,
+ state_machine_regs.address,
+ state_machine_regs.op_index);
+ }
+
+ if (op_code == DW_LNE_end_sequence)
+ printf ("\n");
+
+ free (newFileName);
+ }
+ }
+
+ if (file_table)
+ {
+ free (file_table);
+ file_table = NULL;
+ n_files = 0;
+ }
+
+ if (directory_table)
+ {
+ free (directory_table);
+ directory_table = NULL;
+ n_directories = 0;
+ }
+
+ putchar ('\n');
+ }
+
+ return 1;
+}
+
+static int
+display_debug_lines (struct dwarf_section *section, void *file ATTRIBUTE_UNUSED)
+{
+ unsigned char *data = section->start;
+ unsigned char *end = data + section->size;
+ int retValRaw = 1;
+ int retValDecoded = 1;
+
+ if (do_debug_lines == 0)
+ do_debug_lines |= FLAG_DEBUG_LINES_RAW;
+
+ if (do_debug_lines & FLAG_DEBUG_LINES_RAW)
+ retValRaw = display_debug_lines_raw (section, data, end);
+
+ if (do_debug_lines & FLAG_DEBUG_LINES_DECODED)
+ retValDecoded = display_debug_lines_decoded (section, data, end);
+
+ if (!retValRaw || !retValDecoded)
+ return 0;
+
+ return 1;
+}
+
+static debug_info *
+find_debug_info_for_offset (unsigned long offset)
+{
+ unsigned int i;
+
+ if (num_debug_info_entries == DEBUG_INFO_UNAVAILABLE)
+ return NULL;
+
+ for (i = 0; i < num_debug_info_entries; i++)
+ if (debug_information[i].cu_offset == offset)
+ return debug_information + i;
+
+ return NULL;
+}
+
+static int
+display_debug_pubnames (struct dwarf_section *section,
+ void *file ATTRIBUTE_UNUSED)
+{
+ DWARF2_Internal_PubNames names;
+ unsigned char *start = section->start;
+ unsigned char *end = start + section->size;
+
+ /* It does not matter if this load fails,
+ we test for that later on. */
+ load_debug_info (file);
+
+ printf (_("Contents of the %s section:\n\n"), section->name);
+
+ while (start < end)
+ {
+ unsigned char *data;
+ unsigned long offset;
+ unsigned int offset_size, initial_length_size;
+
+ data = start;
+
+ SAFE_BYTE_GET_AND_INC (names.pn_length, data, 4, end);
+ if (names.pn_length == 0xffffffff)
+ {
+ SAFE_BYTE_GET_AND_INC (names.pn_length, data, 8, end);
+ offset_size = 8;
+ initial_length_size = 12;
+ }
+ else
+ {
+ offset_size = 4;
+ initial_length_size = 4;
+ }
+
+ SAFE_BYTE_GET_AND_INC (names.pn_version, data, 2, end);
+ SAFE_BYTE_GET_AND_INC (names.pn_offset, data, offset_size, end);
+
+ if (num_debug_info_entries != DEBUG_INFO_UNAVAILABLE
+ && num_debug_info_entries > 0
+ && find_debug_info_for_offset (names.pn_offset) == NULL)
+ warn (_(".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"),
+ (unsigned long) names.pn_offset, section->name);
+
+ SAFE_BYTE_GET_AND_INC (names.pn_size, data, offset_size, end);
+
+ start += names.pn_length + initial_length_size;
+
+ if (names.pn_version != 2 && names.pn_version != 3)
+ {
+ static int warned = 0;
+
+ if (! warned)
+ {
+ warn (_("Only DWARF 2 and 3 pubnames are currently supported\n"));
+ warned = 1;
+ }
+
+ continue;
+ }
+
+ printf (_(" Length: %ld\n"),
+ (long) names.pn_length);
+ printf (_(" Version: %d\n"),
+ names.pn_version);
+ printf (_(" Offset into .debug_info section: 0x%lx\n"),
+ (unsigned long) names.pn_offset);
+ printf (_(" Size of area in .debug_info section: %ld\n"),
+ (long) names.pn_size);
+
+ printf (_("\n Offset\tName\n"));
+
+ do
+ {
+ SAFE_BYTE_GET (offset, data, offset_size, end);
+
+ if (offset != 0)
+ {
+ data += offset_size;
+ printf (" %-6lx\t%s\n", offset, data);
+ data += strnlen ((char *) data, end - data) + 1;
+ }
+ }
+ while (offset != 0);
+ }
+
+ printf ("\n");
+ return 1;
+}
+
+static int
+display_debug_macinfo (struct dwarf_section *section,
+ void *file ATTRIBUTE_UNUSED)
+{
+ unsigned char *start = section->start;
+ unsigned char *end = start + section->size;
+ unsigned char *curr = start;
+ unsigned int bytes_read;
+ enum dwarf_macinfo_record_type op;
+
+ printf (_("Contents of the %s section:\n\n"), section->name);
+
+ while (curr < end)
+ {
+ unsigned int lineno;
+ const unsigned char *string;
+
+ op = (enum dwarf_macinfo_record_type) *curr;
+ curr++;
+
+ switch (op)
+ {
+ case DW_MACINFO_start_file:
+ {
+ unsigned int filenum;
+
+ lineno = read_uleb128 (curr, & bytes_read, end);
+ curr += bytes_read;
+ filenum = read_uleb128 (curr, & bytes_read, end);
+ curr += bytes_read;
+
+ printf (_(" DW_MACINFO_start_file - lineno: %d filenum: %d\n"),
+ lineno, filenum);
+ }
+ break;
+
+ case DW_MACINFO_end_file:
+ printf (_(" DW_MACINFO_end_file\n"));
+ break;
+
+ case DW_MACINFO_define:
+ lineno = read_uleb128 (curr, & bytes_read, end);
+ curr += bytes_read;
+ string = curr;
+ curr += strnlen ((char *) string, end - string) + 1;
+ printf (_(" DW_MACINFO_define - lineno : %d macro : %s\n"),
+ lineno, string);
+ break;
+
+ case DW_MACINFO_undef:
+ lineno = read_uleb128 (curr, & bytes_read, end);
+ curr += bytes_read;
+ string = curr;
+ curr += strnlen ((char *) string, end - string) + 1;
+ printf (_(" DW_MACINFO_undef - lineno : %d macro : %s\n"),
+ lineno, string);
+ break;
+
+ case DW_MACINFO_vendor_ext:
+ {
+ unsigned int constant;
+
+ constant = read_uleb128 (curr, & bytes_read, end);
+ curr += bytes_read;
+ string = curr;
+ curr += strnlen ((char *) string, end - string) + 1;
+ printf (_(" DW_MACINFO_vendor_ext - constant : %d string : %s\n"),
+ constant, string);
+ }
+ break;
+ }
+ }
+
+ return 1;
+}
+
+/* Given LINE_OFFSET into the .debug_line section, attempt to return
+ filename and dirname corresponding to file name table entry with index
+ FILEIDX. Return NULL on failure. */
+
+static unsigned char *
+get_line_filename_and_dirname (dwarf_vma line_offset,
+ dwarf_vma fileidx,
+ unsigned char **dir_name)
+{
+ struct dwarf_section *section = &debug_displays [line].section;
+ unsigned char *hdrptr, *dirtable, *file_name;
+ unsigned int offset_size, initial_length_size;
+ unsigned int version, opcode_base, bytes_read;
+ dwarf_vma length, diridx;
+ const unsigned char * end;
+
+ *dir_name = NULL;
+ if (section->start == NULL
+ || line_offset >= section->size
+ || fileidx == 0)
+ return NULL;
+
+ hdrptr = section->start + line_offset;
+ end = section->start + section->size;
+
+ SAFE_BYTE_GET_AND_INC (length, hdrptr, 4, end);
+ if (length == 0xffffffff)
+ {
+ /* This section is 64-bit DWARF 3. */
+ SAFE_BYTE_GET_AND_INC (length, hdrptr, 8, end);
+ offset_size = 8;
+ initial_length_size = 12;
+ }
+ else
+ {
+ offset_size = 4;
+ initial_length_size = 4;
+ }
+ if (length + initial_length_size > section->size)
+ return NULL;
+
+ SAFE_BYTE_GET_AND_INC (version, hdrptr, 2, end);
+ if (version != 2 && version != 3 && version != 4)
+ return NULL;
+ hdrptr += offset_size + 1;/* Skip prologue_length and min_insn_length. */
+ if (version >= 4)
+ hdrptr++; /* Skip max_ops_per_insn. */
+ hdrptr += 3; /* Skip default_is_stmt, line_base, line_range. */
+
+ SAFE_BYTE_GET_AND_INC (opcode_base, hdrptr, 1, end);
+ if (opcode_base == 0)
+ return NULL;
+
+ hdrptr += opcode_base - 1;
+ dirtable = hdrptr;
+ /* Skip over dirname table. */
+ while (*hdrptr != '\0')
+ hdrptr += strnlen ((char *) hdrptr, end - hdrptr) + 1;
+ hdrptr++; /* Skip the NUL at the end of the table. */
+ /* Now skip over preceding filename table entries. */
+ for (; *hdrptr != '\0' && fileidx > 1; fileidx--)
+ {
+ hdrptr += strnlen ((char *) hdrptr, end - hdrptr) + 1;
+ read_uleb128 (hdrptr, &bytes_read, end);
+ hdrptr += bytes_read;
+ read_uleb128 (hdrptr, &bytes_read, end);
+ hdrptr += bytes_read;
+ read_uleb128 (hdrptr, &bytes_read, end);
+ hdrptr += bytes_read;
+ }
+ if (hdrptr == end || *hdrptr == '\0')
+ return NULL;
+ file_name = hdrptr;
+ hdrptr += strnlen ((char *) hdrptr, end - hdrptr) + 1;
+ diridx = read_uleb128 (hdrptr, &bytes_read, end);
+ if (diridx == 0)
+ return file_name;
+ for (; *dirtable != '\0' && diridx > 1; diridx--)
+ dirtable += strnlen ((char *) dirtable, end - dirtable) + 1;
+ if (*dirtable == '\0')
+ return NULL;
+ *dir_name = dirtable;
+ return file_name;
+}
+
+static int
+display_debug_macro (struct dwarf_section *section,
+ void *file)
+{
+ unsigned char *start = section->start;
+ unsigned char *end = start + section->size;
+ unsigned char *curr = start;
+ unsigned char *extended_op_buf[256];
+ unsigned int bytes_read;
+
+ load_debug_section (str, file);
+ load_debug_section (line, file);
+
+ printf (_("Contents of the %s section:\n\n"), section->name);
+
+ while (curr < end)
+ {
+ unsigned int lineno, version, flags;
+ unsigned int offset_size = 4;
+ const unsigned char *string;
+ dwarf_vma line_offset = 0, sec_offset = curr - start, offset;
+ unsigned char **extended_ops = NULL;
+
+ SAFE_BYTE_GET_AND_INC (version, curr, 2, end);
+ if (version != 4)
+ {
+ error (_("Only GNU extension to DWARF 4 of %s is currently supported.\n"),
+ section->name);
+ return 0;
+ }
+
+ SAFE_BYTE_GET_AND_INC (flags, curr, 1, end);
+ if (flags & 1)
+ offset_size = 8;
+ printf (_(" Offset: 0x%lx\n"),
+ (unsigned long) sec_offset);
+ printf (_(" Version: %d\n"), version);
+ printf (_(" Offset size: %d\n"), offset_size);
+ if (flags & 2)
+ {
+ SAFE_BYTE_GET_AND_INC (line_offset, curr, offset_size, end);
+ printf (_(" Offset into .debug_line: 0x%lx\n"),
+ (unsigned long) line_offset);
+ }
+ if (flags & 4)
+ {
+ unsigned int i, count, op;
+ dwarf_vma nargs, n;
+
+ SAFE_BYTE_GET_AND_INC (count, curr, 1, end);
+
+ memset (extended_op_buf, 0, sizeof (extended_op_buf));
+ extended_ops = extended_op_buf;
+ if (count)
+ {
+ printf (_(" Extension opcode arguments:\n"));
+ for (i = 0; i < count; i++)
+ {
+ SAFE_BYTE_GET_AND_INC (op, curr, 1, end);
+ extended_ops[op] = curr;
+ nargs = read_uleb128 (curr, &bytes_read, end);
+ curr += bytes_read;
+ if (nargs == 0)
+ printf (_(" DW_MACRO_GNU_%02x has no arguments\n"), op);
+ else
+ {
+ printf (_(" DW_MACRO_GNU_%02x arguments: "), op);
+ for (n = 0; n < nargs; n++)
+ {
+ unsigned int form;
+
+ SAFE_BYTE_GET_AND_INC (form, curr, 1, end);
+ printf ("%s%s", get_FORM_name (form),
+ n == nargs - 1 ? "\n" : ", ");
+ switch (form)
+ {
+ case DW_FORM_data1:
+ case DW_FORM_data2:
+ case DW_FORM_data4:
+ case DW_FORM_data8:
+ case DW_FORM_sdata:
+ case DW_FORM_udata:
+ case DW_FORM_block:
+ case DW_FORM_block1:
+ case DW_FORM_block2:
+ case DW_FORM_block4:
+ case DW_FORM_flag:
+ case DW_FORM_string:
+ case DW_FORM_strp:
+ case DW_FORM_sec_offset:
+ break;
+ default:
+ error (_("Invalid extension opcode form %s\n"),
+ get_FORM_name (form));
+ return 0;
+ }
+ }
+ }
+ }
+ }
+ }
+ printf ("\n");
+
+ while (1)
+ {
+ unsigned int op;
+
+ if (curr >= end)
+ {
+ error (_(".debug_macro section not zero terminated\n"));
+ return 0;
+ }
+
+ SAFE_BYTE_GET_AND_INC (op, curr, 1, end);
+ if (op == 0)
+ break;
+
+ switch (op)
+ {
+ case DW_MACRO_GNU_start_file:
+ {
+ unsigned int filenum;
+ unsigned char *file_name = NULL, *dir_name = NULL;
+
+ lineno = read_uleb128 (curr, &bytes_read, end);
+ curr += bytes_read;
+ filenum = read_uleb128 (curr, &bytes_read, end);
+ curr += bytes_read;
+
+ if ((flags & 2) == 0)
+ error (_("DW_MACRO_GNU_start_file used, but no .debug_line offset provided.\n"));
+ else
+ file_name
+ = get_line_filename_and_dirname (line_offset, filenum,
+ &dir_name);
+ if (file_name == NULL)
+ printf (_(" DW_MACRO_GNU_start_file - lineno: %d filenum: %d\n"),
+ lineno, filenum);
+ else
+ printf (_(" DW_MACRO_GNU_start_file - lineno: %d filenum: %d filename: %s%s%s\n"),
+ lineno, filenum,
+ dir_name != NULL ? (const char *) dir_name : "",
+ dir_name != NULL ? "/" : "", file_name);
+ }
+ break;
+
+ case DW_MACRO_GNU_end_file:
+ printf (_(" DW_MACRO_GNU_end_file\n"));
+ break;
+
+ case DW_MACRO_GNU_define:
+ lineno = read_uleb128 (curr, &bytes_read, end);
+ curr += bytes_read;
+ string = curr;
+ curr += strnlen ((char *) string, end - string) + 1;
+ printf (_(" DW_MACRO_GNU_define - lineno : %d macro : %s\n"),
+ lineno, string);
+ break;
+
+ case DW_MACRO_GNU_undef:
+ lineno = read_uleb128 (curr, &bytes_read, end);
+ curr += bytes_read;
+ string = curr;
+ curr += strnlen ((char *) string, end - string) + 1;
+ printf (_(" DW_MACRO_GNU_undef - lineno : %d macro : %s\n"),
+ lineno, string);
+ break;
+
+ case DW_MACRO_GNU_define_indirect:
+ lineno = read_uleb128 (curr, &bytes_read, end);
+ curr += bytes_read;
+ SAFE_BYTE_GET_AND_INC (offset, curr, offset_size, end);
+ string = fetch_indirect_string (offset);
+ printf (_(" DW_MACRO_GNU_define_indirect - lineno : %d macro : %s\n"),
+ lineno, string);
+ break;
+
+ case DW_MACRO_GNU_undef_indirect:
+ lineno = read_uleb128 (curr, &bytes_read, end);
+ curr += bytes_read;
+ SAFE_BYTE_GET_AND_INC (offset, curr, offset_size, end);
+ string = fetch_indirect_string (offset);
+ printf (_(" DW_MACRO_GNU_undef_indirect - lineno : %d macro : %s\n"),
+ lineno, string);
+ break;
+
+ case DW_MACRO_GNU_transparent_include:
+ SAFE_BYTE_GET_AND_INC (offset, curr, offset_size, end);
+ printf (_(" DW_MACRO_GNU_transparent_include - offset : 0x%lx\n"),
+ (unsigned long) offset);
+ break;
+
+ case DW_MACRO_GNU_define_indirect_alt:
+ lineno = read_uleb128 (curr, &bytes_read, end);
+ curr += bytes_read;
+ SAFE_BYTE_GET_AND_INC (offset, curr, offset_size, end);
+ printf (_(" DW_MACRO_GNU_define_indirect_alt - lineno : %d macro offset : 0x%lx\n"),
+ lineno, (unsigned long) offset);
+ break;
+
+ case DW_MACRO_GNU_undef_indirect_alt:
+ lineno = read_uleb128 (curr, &bytes_read, end);
+ curr += bytes_read;
+ SAFE_BYTE_GET_AND_INC (offset, curr, offset_size, end);
+ printf (_(" DW_MACRO_GNU_undef_indirect_alt - lineno : %d macro offset : 0x%lx\n"),
+ lineno, (unsigned long) offset);
+ break;
+
+ case DW_MACRO_GNU_transparent_include_alt:
+ SAFE_BYTE_GET_AND_INC (offset, curr, offset_size, end);
+ printf (_(" DW_MACRO_GNU_transparent_include_alt - offset : 0x%lx\n"),
+ (unsigned long) offset);
+ break;
+
+ default:
+ if (extended_ops == NULL || extended_ops[op] == NULL)
+ {
+ error (_(" Unknown macro opcode %02x seen\n"), op);
+ return 0;
+ }
+ else
+ {
+ /* Skip over unhandled opcodes. */
+ dwarf_vma nargs, n;
+ unsigned char *desc = extended_ops[op];
+ nargs = read_uleb128 (desc, &bytes_read, end);
+ desc += bytes_read;
+ if (nargs == 0)
+ {
+ printf (_(" DW_MACRO_GNU_%02x\n"), op);
+ break;
+ }
+ printf (_(" DW_MACRO_GNU_%02x -"), op);
+ for (n = 0; n < nargs; n++)
+ {
+ int val;
+
+ SAFE_BYTE_GET_AND_INC (val, desc, 1, end);
+ curr
+ = read_and_display_attr_value (0, val,
+ curr, end, 0, 0, offset_size,
+ version, NULL, 0, NULL,
+ NULL);
+ if (n != nargs - 1)
+ printf (",");
+ }
+ printf ("\n");
+ }
+ break;
+ }
+ }
+
+ printf ("\n");
+ }
+
+ return 1;
+}
+
+static int
+display_debug_abbrev (struct dwarf_section *section,
+ void *file ATTRIBUTE_UNUSED)
+{
+ abbrev_entry *entry;
+ unsigned char *start = section->start;
+ unsigned char *end = start + section->size;
+
+ printf (_("Contents of the %s section:\n\n"), section->name);
+
+ do
+ {
+ unsigned char *last;
+
+ free_abbrevs ();
+
+ last = start;
+ start = process_abbrev_section (start, end);
+
+ if (first_abbrev == NULL)
+ continue;
+
+ printf (_(" Number TAG (0x%lx)\n"), (long) (last - section->start));
+
+ for (entry = first_abbrev; entry; entry = entry->next)
+ {
+ abbrev_attr *attr;
+
+ printf (" %ld %s [%s]\n",
+ entry->entry,
+ get_TAG_name (entry->tag),
+ entry->children ? _("has children") : _("no children"));
+
+ for (attr = entry->first_attr; attr; attr = attr->next)
+ printf (" %-18s %s\n",
+ get_AT_name (attr->attribute),
+ get_FORM_name (attr->form));
+ }
+ }
+ while (start);
+
+ printf ("\n");
+
+ return 1;
+}
+
+/* Display a location list from a normal (ie, non-dwo) .debug_loc section. */
+
+static void
+display_loc_list (struct dwarf_section *section,
+ unsigned char **start_ptr,
+ int debug_info_entry,
+ unsigned long offset,
+ unsigned long base_address,
+ int has_frame_base)
+{
+ unsigned char *start = *start_ptr;
+ unsigned char *section_end = section->start + section->size;
+ unsigned long cu_offset = debug_information [debug_info_entry].cu_offset;
+ unsigned int pointer_size = debug_information [debug_info_entry].pointer_size;
+ unsigned int offset_size = debug_information [debug_info_entry].offset_size;
+ int dwarf_version = debug_information [debug_info_entry].dwarf_version;
+
+ dwarf_vma begin;
+ dwarf_vma end;
+ unsigned short length;
+ int need_frame_base;
+
+ while (1)
+ {
+ if (start + 2 * pointer_size > section_end)
+ {
+ warn (_("Location list starting at offset 0x%lx is not terminated.\n"),
+ offset);
+ break;
+ }
+
+ printf (" %8.8lx ", offset + (start - *start_ptr));
+
+ /* Note: we use sign extension here in order to be sure that we can detect
+ the -1 escape value. Sign extension into the top 32 bits of a 32-bit
+ address will not affect the values that we display since we always show
+ hex values, and always the bottom 32-bits. */
+ SAFE_BYTE_GET_AND_INC (begin, start, pointer_size, section_end);
+ SAFE_BYTE_GET_AND_INC (end, start, pointer_size, section_end);
+
+ if (begin == 0 && end == 0)
+ {
+ printf (_("<End of list>\n"));
+ break;
+ }
+
+ /* Check base address specifiers. */
+ if (begin == (dwarf_vma) -1 && end != (dwarf_vma) -1)
+ {
+ base_address = end;
+ print_dwarf_vma (begin, pointer_size);
+ print_dwarf_vma (end, pointer_size);
+ printf (_("(base address)\n"));
+ continue;
+ }
+
+ if (start + 2 > section_end)
+ {
+ warn (_("Location list starting at offset 0x%lx is not terminated.\n"),
+ offset);
+ break;
+ }
+
+ SAFE_BYTE_GET_AND_INC (length, start, 2, section_end);
+
+ if (start + length > section_end)
+ {
+ warn (_("Location list starting at offset 0x%lx is not terminated.\n"),
+ offset);
+ break;
+ }
+
+ print_dwarf_vma (begin + base_address, pointer_size);
+ print_dwarf_vma (end + base_address, pointer_size);
+
+ putchar ('(');
+ need_frame_base = decode_location_expression (start,
+ pointer_size,
+ offset_size,
+ dwarf_version,
+ length,
+ cu_offset, section);
+ putchar (')');
+
+ if (need_frame_base && !has_frame_base)
+ printf (_(" [without DW_AT_frame_base]"));
+
+ if (begin == end)
+ fputs (_(" (start == end)"), stdout);
+ else if (begin > end)
+ fputs (_(" (start > end)"), stdout);
+
+ putchar ('\n');
+
+ start += length;
+ }
+
+ *start_ptr = start;
+}
+
+/* Print a .debug_addr table index in decimal, surrounded by square brackets,
+ right-adjusted in a field of length LEN, and followed by a space. */
+
+static void
+print_addr_index (unsigned int idx, unsigned int len)
+{
+ static char buf[15];
+ snprintf (buf, sizeof (buf), "[%d]", idx);
+ printf ("%*s ", len, buf);
+}
+
+/* Display a location list from a .dwo section. It uses address indexes rather
+ than embedded addresses. This code closely follows display_loc_list, but the
+ two are sufficiently different that combining things is very ugly. */
+
+static void
+display_loc_list_dwo (struct dwarf_section *section,
+ unsigned char **start_ptr,
+ int debug_info_entry,
+ unsigned long offset,
+ int has_frame_base)
+{
+ unsigned char *start = *start_ptr;
+ unsigned char *section_end = section->start + section->size;
+ unsigned long cu_offset = debug_information [debug_info_entry].cu_offset;
+ unsigned int pointer_size = debug_information [debug_info_entry].pointer_size;
+ unsigned int offset_size = debug_information [debug_info_entry].offset_size;
+ int dwarf_version = debug_information [debug_info_entry].dwarf_version;
+ int entry_type;
+ unsigned short length;
+ int need_frame_base;
+ unsigned int idx;
+ unsigned int bytes_read;
+
+ while (1)
+ {
+ printf (" %8.8lx ", offset + (start - *start_ptr));
+
+ if (start >= section_end)
+ {
+ warn (_("Location list starting at offset 0x%lx is not terminated.\n"),
+ offset);
+ break;
+ }
+
+ SAFE_BYTE_GET_AND_INC (entry_type, start, 1, section_end);
+ switch (entry_type)
+ {
+ case 0: /* A terminating entry. */
+ *start_ptr = start;
+ printf (_("<End of list>\n"));
+ return;
+ case 1: /* A base-address entry. */
+ idx = read_uleb128 (start, &bytes_read, section_end);
+ start += bytes_read;
+ print_addr_index (idx, 8);
+ printf (" ");
+ printf (_("(base address selection entry)\n"));
+ continue;
+ case 2: /* A start/end entry. */
+ idx = read_uleb128 (start, &bytes_read, section_end);
+ start += bytes_read;
+ print_addr_index (idx, 8);
+ idx = read_uleb128 (start, &bytes_read, section_end);
+ start += bytes_read;
+ print_addr_index (idx, 8);
+ break;
+ case 3: /* A start/length entry. */
+ idx = read_uleb128 (start, &bytes_read, section_end);
+ start += bytes_read;
+ print_addr_index (idx, 8);
+ SAFE_BYTE_GET_AND_INC (idx, start, 4, section_end);
+ printf ("%08x ", idx);
+ break;
+ case 4: /* An offset pair entry. */
+ SAFE_BYTE_GET_AND_INC (idx, start, 4, section_end);
+ printf ("%08x ", idx);
+ SAFE_BYTE_GET_AND_INC (idx, start, 4, section_end);
+ printf ("%08x ", idx);
+ break;
+ default:
+ warn (_("Unknown location list entry type 0x%x.\n"), entry_type);
+ *start_ptr = start;
+ return;
+ }
+
+ if (start + 2 > section_end)
+ {
+ warn (_("Location list starting at offset 0x%lx is not terminated.\n"),
+ offset);
+ break;
+ }
+
+ SAFE_BYTE_GET_AND_INC (length, start, 2, section_end);
+ if (start + length > section_end)
+ {
+ warn (_("Location list starting at offset 0x%lx is not terminated.\n"),
+ offset);
+ break;
+ }
+
+ putchar ('(');
+ need_frame_base = decode_location_expression (start,
+ pointer_size,
+ offset_size,
+ dwarf_version,
+ length,
+ cu_offset, section);
+ putchar (')');
+
+ if (need_frame_base && !has_frame_base)
+ printf (_(" [without DW_AT_frame_base]"));
+
+ putchar ('\n');
+
+ start += length;
+ }
+
+ *start_ptr = start;
+}
+
+/* Sort array of indexes in ascending order of loc_offsets[idx]. */
+
+static dwarf_vma *loc_offsets;
+
+static int
+loc_offsets_compar (const void *ap, const void *bp)
+{
+ dwarf_vma a = loc_offsets[*(const unsigned int *) ap];
+ dwarf_vma b = loc_offsets[*(const unsigned int *) bp];
+
+ return (a > b) - (b > a);
+}
+
+static int
+display_debug_loc (struct dwarf_section *section, void *file)
+{
+ unsigned char *start = section->start;
+ unsigned long bytes;
+ unsigned char *section_begin = start;
+ unsigned int num_loc_list = 0;
+ unsigned long last_offset = 0;
+ unsigned int first = 0;
+ unsigned int i;
+ unsigned int j;
+ unsigned int k;
+ int seen_first_offset = 0;
+ int locs_sorted = 1;
+ unsigned char *next;
+ unsigned int *array = NULL;
+ const char *suffix = strrchr (section->name, '.');
+ int is_dwo = 0;
+
+ if (suffix && strcmp (suffix, ".dwo") == 0)
+ is_dwo = 1;
+
+ bytes = section->size;
+
+ if (bytes == 0)
+ {
+ printf (_("\nThe %s section is empty.\n"), section->name);
+ return 0;
+ }
+
+ if (load_debug_info (file) == 0)
+ {
+ warn (_("Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"),
+ section->name);
+ return 0;
+ }
+
+ /* Check the order of location list in .debug_info section. If
+ offsets of location lists are in the ascending order, we can
+ use `debug_information' directly. */
+ for (i = 0; i < num_debug_info_entries; i++)
+ {
+ unsigned int num;
+
+ num = debug_information [i].num_loc_offsets;
+ if (num > num_loc_list)
+ num_loc_list = num;
+
+ /* Check if we can use `debug_information' directly. */
+ if (locs_sorted && num != 0)
+ {
+ if (!seen_first_offset)
+ {
+ /* This is the first location list. */
+ last_offset = debug_information [i].loc_offsets [0];
+ first = i;
+ seen_first_offset = 1;
+ j = 1;
+ }
+ else
+ j = 0;
+
+ for (; j < num; j++)
+ {
+ if (last_offset >
+ debug_information [i].loc_offsets [j])
+ {
+ locs_sorted = 0;
+ break;
+ }
+ last_offset = debug_information [i].loc_offsets [j];
+ }
+ }
+ }
+
+ if (!seen_first_offset)
+ error (_("No location lists in .debug_info section!\n"));
+
+ /* DWARF sections under Mach-O have non-zero addresses. */
+ if (debug_information [first].num_loc_offsets > 0
+ && debug_information [first].loc_offsets [0] != section->address)
+ warn (_("Location lists in %s section start at 0x%s\n"),
+ section->name,
+ dwarf_vmatoa ("x", debug_information [first].loc_offsets [0]));
+
+ if (!locs_sorted)
+ array = (unsigned int *) xcmalloc (num_loc_list, sizeof (unsigned int));
+ printf (_("Contents of the %s section:\n\n"), section->name);
+ printf (_(" Offset Begin End Expression\n"));
+
+ seen_first_offset = 0;
+ for (i = first; i < num_debug_info_entries; i++)
+ {
+ unsigned long offset;
+ unsigned long base_address;
+ int has_frame_base;
+
+ if (!locs_sorted)
+ {
+ for (k = 0; k < debug_information [i].num_loc_offsets; k++)
+ array[k] = k;
+ loc_offsets = debug_information [i].loc_offsets;
+ qsort (array, debug_information [i].num_loc_offsets,
+ sizeof (*array), loc_offsets_compar);
+ }
+
+ for (k = 0; k < debug_information [i].num_loc_offsets; k++)
+ {
+ j = locs_sorted ? k : array[k];
+ if (k
+ && debug_information [i].loc_offsets [locs_sorted
+ ? k - 1 : array [k - 1]]
+ == debug_information [i].loc_offsets [j])
+ continue;
+ has_frame_base = debug_information [i].have_frame_base [j];
+ /* DWARF sections under Mach-O have non-zero addresses. */
+ offset = debug_information [i].loc_offsets [j] - section->address;
+ next = section_begin + offset;
+ base_address = debug_information [i].base_address;
+
+ if (!seen_first_offset)
+ seen_first_offset = 1;
+ else
+ {
+ if (start < next)
+ warn (_("There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"),
+ (unsigned long) (start - section_begin),
+ (unsigned long) (next - section_begin));
+ else if (start > next)
+ warn (_("There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"),
+ (unsigned long) (start - section_begin),
+ (unsigned long) (next - section_begin));
+ }
+ start = next;
+
+ if (offset >= bytes)
+ {
+ warn (_("Offset 0x%lx is bigger than .debug_loc section size.\n"),
+ offset);
+ continue;
+ }
+
+ if (is_dwo)
+ display_loc_list_dwo (section, &start, i, offset, has_frame_base);
+ else
+ display_loc_list (section, &start, i, offset, base_address,
+ has_frame_base);
+ }
+ }
+
+ if (start < section->start + section->size)
+ warn (_("There are %ld unused bytes at the end of section %s\n"),
+ (long) (section->start + section->size - start), section->name);
+ putchar ('\n');
+ free (array);
+ return 1;
+}
+
+static int
+display_debug_str (struct dwarf_section *section,
+ void *file ATTRIBUTE_UNUSED)
+{
+ unsigned char *start = section->start;
+ unsigned long bytes = section->size;
+ dwarf_vma addr = section->address;
+
+ if (bytes == 0)
+ {
+ printf (_("\nThe %s section is empty.\n"), section->name);
+ return 0;
+ }
+
+ printf (_("Contents of the %s section:\n\n"), section->name);
+
+ while (bytes)
+ {
+ int j;
+ int k;
+ int lbytes;
+
+ lbytes = (bytes > 16 ? 16 : bytes);
+
+ printf (" 0x%8.8lx ", (unsigned long) addr);
+
+ for (j = 0; j < 16; j++)
+ {
+ if (j < lbytes)
+ printf ("%2.2x", start[j]);
+ else
+ printf (" ");
+
+ if ((j & 3) == 3)
+ printf (" ");
+ }
+
+ for (j = 0; j < lbytes; j++)
+ {
+ k = start[j];
+ if (k >= ' ' && k < 0x80)
+ printf ("%c", k);
+ else
+ printf (".");
+ }
+
+ putchar ('\n');
+
+ start += lbytes;
+ addr += lbytes;
+ bytes -= lbytes;
+ }
+
+ putchar ('\n');
+
+ return 1;
+}
+
+static int
+display_debug_info (struct dwarf_section *section, void *file)
+{
+ return process_debug_info (section, file, section->abbrev_sec, 0, 0);
+}
+
+static int
+display_debug_types (struct dwarf_section *section, void *file)
+{
+ return process_debug_info (section, file, section->abbrev_sec, 0, 1);
+}
+
+static int
+display_trace_info (struct dwarf_section *section, void *file)
+{
+ return process_debug_info (section, file, section->abbrev_sec, 0, 0);
+}
+
+static int
+display_debug_aranges (struct dwarf_section *section,
+ void *file ATTRIBUTE_UNUSED)
+{
+ unsigned char *start = section->start;
+ unsigned char *end = start + section->size;
+
+ printf (_("Contents of the %s section:\n\n"), section->name);
+
+ /* It does not matter if this load fails,
+ we test for that later on. */
+ load_debug_info (file);
+
+ while (start < end)
+ {
+ unsigned char *hdrptr;
+ DWARF2_Internal_ARange arange;
+ unsigned char *addr_ranges;
+ dwarf_vma length;
+ dwarf_vma address;
+ unsigned char address_size;
+ int excess;
+ unsigned int offset_size;
+ unsigned int initial_length_size;
+
+ hdrptr = start;
+
+ SAFE_BYTE_GET_AND_INC (arange.ar_length, hdrptr, 4, end);
+ if (arange.ar_length == 0xffffffff)
+ {
+ SAFE_BYTE_GET_AND_INC (arange.ar_length, hdrptr, 8, end);
+ offset_size = 8;
+ initial_length_size = 12;
+ }
+ else
+ {
+ offset_size = 4;
+ initial_length_size = 4;
+ }
+
+ SAFE_BYTE_GET_AND_INC (arange.ar_version, hdrptr, 2, end);
+ SAFE_BYTE_GET_AND_INC (arange.ar_info_offset, hdrptr, offset_size, end);
+
+ if (num_debug_info_entries != DEBUG_INFO_UNAVAILABLE
+ && num_debug_info_entries > 0
+ && find_debug_info_for_offset (arange.ar_info_offset) == NULL)
+ warn (_(".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"),
+ (unsigned long) arange.ar_info_offset, section->name);
+
+ SAFE_BYTE_GET_AND_INC (arange.ar_pointer_size, hdrptr, 1, end);
+ SAFE_BYTE_GET_AND_INC (arange.ar_segment_size, hdrptr, 1, end);
+
+ if (arange.ar_version != 2 && arange.ar_version != 3)
+ {
+ warn (_("Only DWARF 2 and 3 aranges are currently supported.\n"));
+ break;
+ }
+
+ printf (_(" Length: %ld\n"),
+ (long) arange.ar_length);
+ printf (_(" Version: %d\n"), arange.ar_version);
+ printf (_(" Offset into .debug_info: 0x%lx\n"),
+ (unsigned long) arange.ar_info_offset);
+ printf (_(" Pointer Size: %d\n"), arange.ar_pointer_size);
+ printf (_(" Segment Size: %d\n"), arange.ar_segment_size);
+
+ address_size = arange.ar_pointer_size + arange.ar_segment_size;
+
+ if (address_size == 0)
+ {
+ error (_("Invalid address size in %s section!\n"),
+ section->name);
+ break;
+ }
+
+ /* The DWARF spec does not require that the address size be a power
+ of two, but we do. This will have to change if we ever encounter
+ an uneven architecture. */
+ if ((address_size & (address_size - 1)) != 0)
+ {
+ warn (_("Pointer size + Segment size is not a power of two.\n"));
+ break;
+ }
+
+ if (address_size > 4)
+ printf (_("\n Address Length\n"));
+ else
+ printf (_("\n Address Length\n"));
+
+ addr_ranges = hdrptr;
+
+ /* Must pad to an alignment boundary that is twice the address size. */
+ excess = (hdrptr - start) % (2 * address_size);
+ if (excess)
+ addr_ranges += (2 * address_size) - excess;
+
+ start += arange.ar_length + initial_length_size;
+
+ while (addr_ranges + 2 * address_size <= start)
+ {
+ SAFE_BYTE_GET_AND_INC (address, addr_ranges, address_size, end);
+ SAFE_BYTE_GET_AND_INC (length, addr_ranges, address_size, end);
+
+ printf (" ");
+ print_dwarf_vma (address, address_size);
+ print_dwarf_vma (length, address_size);
+ putchar ('\n');
+ }
+ }
+
+ printf ("\n");
+
+ return 1;
+}
+
+/* Comparison function for qsort. */
+static int
+comp_addr_base (const void * v0, const void * v1)
+{
+ debug_info * info0 = (debug_info *) v0;
+ debug_info * info1 = (debug_info *) v1;
+ return info0->addr_base - info1->addr_base;
+}
+
+/* Display the debug_addr section. */
+static int
+display_debug_addr (struct dwarf_section *section,
+ void *file)
+{
+ debug_info **debug_addr_info;
+ unsigned char *entry;
+ unsigned char *end;
+ unsigned int i;
+ unsigned int count;
+
+ if (section->size == 0)
+ {
+ printf (_("\nThe %s section is empty.\n"), section->name);
+ return 0;
+ }
+
+ if (load_debug_info (file) == 0)
+ {
+ warn (_("Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"),
+ section->name);
+ return 0;
+ }
+
+ printf (_("Contents of the %s section:\n\n"), section->name);
+
+ debug_addr_info = (debug_info **) xmalloc ((num_debug_info_entries + 1)
+ * sizeof (debug_info *));
+
+ count = 0;
+ for (i = 0; i < num_debug_info_entries; i++)
+ {
+ if (debug_information [i].addr_base != DEBUG_INFO_UNAVAILABLE)
+ debug_addr_info [count++] = &debug_information [i];
+ }
+
+ /* Add a sentinel to make iteration convenient. */
+ debug_addr_info [count] = (debug_info *) xmalloc (sizeof (debug_info));
+ debug_addr_info [count]->addr_base = section->size;
+
+ qsort (debug_addr_info, count, sizeof (debug_info *), comp_addr_base);
+ for (i = 0; i < count; i++)
+ {
+ unsigned int idx;
+ unsigned int address_size = debug_addr_info [i]->pointer_size;
+
+ printf (_(" For compilation unit at offset 0x%s:\n"),
+ dwarf_vmatoa ("x", debug_addr_info [i]->cu_offset));
+
+ printf (_("\tIndex\tAddress\n"));
+ entry = section->start + debug_addr_info [i]->addr_base;
+ end = section->start + debug_addr_info [i + 1]->addr_base;
+ idx = 0;
+ while (entry < end)
+ {
+ dwarf_vma base = byte_get (entry, address_size);
+ printf (_("\t%d:\t"), idx);
+ print_dwarf_vma (base, address_size);
+ printf ("\n");
+ entry += address_size;
+ idx++;
+ }
+ }
+ printf ("\n");
+
+ free (debug_addr_info);
+ return 1;
+}
+
+/* Display the .debug_str_offsets and .debug_str_offsets.dwo sections. */
+static int
+display_debug_str_offsets (struct dwarf_section *section,
+ void *file ATTRIBUTE_UNUSED)
+{
+ if (section->size == 0)
+ {
+ printf (_("\nThe %s section is empty.\n"), section->name);
+ return 0;
+ }
+ /* TODO: Dump the contents. This is made somewhat difficult by not knowing
+ what the offset size is for this section. */
+ return 1;
+}
+
+/* Each debug_information[x].range_lists[y] gets this representation for
+ sorting purposes. */
+
+struct range_entry
+{
+ /* The debug_information[x].range_lists[y] value. */
+ unsigned long ranges_offset;
+
+ /* Original debug_information to find parameters of the data. */
+ debug_info *debug_info_p;
+};
+
+/* Sort struct range_entry in ascending order of its RANGES_OFFSET. */
+
+static int
+range_entry_compar (const void *ap, const void *bp)
+{
+ const struct range_entry *a_re = (const struct range_entry *) ap;
+ const struct range_entry *b_re = (const struct range_entry *) bp;
+ const unsigned long a = a_re->ranges_offset;
+ const unsigned long b = b_re->ranges_offset;
+
+ return (a > b) - (b > a);
+}
+
+static int
+display_debug_ranges (struct dwarf_section *section,
+ void *file ATTRIBUTE_UNUSED)
+{
+ unsigned char *start = section->start;
+ unsigned char *last_start = start;
+ unsigned long bytes = section->size;
+ unsigned char *section_begin = start;
+ unsigned char *finish = start + bytes;
+ unsigned int num_range_list, i;
+ struct range_entry *range_entries, *range_entry_fill;
+
+ if (bytes == 0)
+ {
+ printf (_("\nThe %s section is empty.\n"), section->name);
+ return 0;
+ }
+
+ if (load_debug_info (file) == 0)
+ {
+ warn (_("Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"),
+ section->name);
+ return 0;
+ }
+
+ num_range_list = 0;
+ for (i = 0; i < num_debug_info_entries; i++)
+ num_range_list += debug_information [i].num_range_lists;
+
+ if (num_range_list == 0)
+ {
+ /* This can happen when the file was compiled with -gsplit-debug
+ which removes references to range lists from the primary .o file. */
+ printf (_("No range lists in .debug_info section.\n"));
+ return 1;
+ }
+
+ range_entries = (struct range_entry *)
+ xmalloc (sizeof (*range_entries) * num_range_list);
+ range_entry_fill = range_entries;
+
+ for (i = 0; i < num_debug_info_entries; i++)
+ {
+ debug_info *debug_info_p = &debug_information[i];
+ unsigned int j;
+
+ for (j = 0; j < debug_info_p->num_range_lists; j++)
+ {
+ range_entry_fill->ranges_offset = debug_info_p->range_lists[j];
+ range_entry_fill->debug_info_p = debug_info_p;
+ range_entry_fill++;
+ }
+ }
+
+ qsort (range_entries, num_range_list, sizeof (*range_entries),
+ range_entry_compar);
+
+ /* DWARF sections under Mach-O have non-zero addresses. */
+ if (dwarf_check != 0 && range_entries[0].ranges_offset != section->address)
+ warn (_("Range lists in %s section start at 0x%lx\n"),
+ section->name, range_entries[0].ranges_offset);
+
+ printf (_("Contents of the %s section:\n\n"), section->name);
+ printf (_(" Offset Begin End\n"));
+
+ for (i = 0; i < num_range_list; i++)
+ {
+ struct range_entry *range_entry = &range_entries[i];
+ debug_info *debug_info_p = range_entry->debug_info_p;
+ unsigned int pointer_size;
+ unsigned long offset;
+ unsigned char *next;
+ unsigned long base_address;
+
+ pointer_size = debug_info_p->pointer_size;
+
+ /* DWARF sections under Mach-O have non-zero addresses. */
+ offset = range_entry->ranges_offset - section->address;
+ next = section_begin + offset;
+ base_address = debug_info_p->base_address;
+
+ if (dwarf_check != 0 && i > 0)
+ {
+ if (start < next)
+ warn (_("There is a hole [0x%lx - 0x%lx] in %s section.\n"),
+ (unsigned long) (start - section_begin),
+ (unsigned long) (next - section_begin), section->name);
+ else if (start > next)
+ {
+ if (next == last_start)
+ continue;
+ warn (_("There is an overlap [0x%lx - 0x%lx] in %s section.\n"),
+ (unsigned long) (start - section_begin),
+ (unsigned long) (next - section_begin), section->name);
+ }
+ }
+ start = next;
+ last_start = next;
+
+ while (start < finish)
+ {
+ dwarf_vma begin;
+ dwarf_vma end;
+
+ /* Note: we use sign extension here in order to be sure that
+ we can detect the -1 escape value. Sign extension into the
+ top 32 bits of a 32-bit address will not affect the values
+ that we display since we always show hex values, and always
+ the bottom 32-bits. */
+ SAFE_BYTE_GET_AND_INC (begin, start, pointer_size, finish);
+ if (start >= finish)
+ break;
+ SAFE_SIGNED_BYTE_GET_AND_INC (end, start, pointer_size, finish);
+
+ printf (" %8.8lx ", offset);
+
+ if (begin == 0 && end == 0)
+ {
+ printf (_("<End of list>\n"));
+ break;
+ }
+
+ /* Check base address specifiers. */
+ if (begin == (dwarf_vma) -1 && end != (dwarf_vma) -1)
+ {
+ base_address = end;
+ print_dwarf_vma (begin, pointer_size);
+ print_dwarf_vma (end, pointer_size);
+ printf ("(base address)\n");
+ continue;
+ }
+
+ print_dwarf_vma (begin + base_address, pointer_size);
+ print_dwarf_vma (end + base_address, pointer_size);
+
+ if (begin == end)
+ fputs (_("(start == end)"), stdout);
+ else if (begin > end)
+ fputs (_("(start > end)"), stdout);
+
+ putchar ('\n');
+ }
+ }
+ putchar ('\n');
+
+ free (range_entries);
+
+ return 1;
+}
+
+typedef struct Frame_Chunk
+{
+ struct Frame_Chunk *next;
+ unsigned char *chunk_start;
+ int ncols;
+ /* DW_CFA_{undefined,same_value,offset,register,unreferenced} */
+ short int *col_type;
+ int *col_offset;
+ char *augmentation;
+ unsigned int code_factor;
+ int data_factor;
+ dwarf_vma pc_begin;
+ dwarf_vma pc_range;
+ int cfa_reg;
+ int cfa_offset;
+ int ra;
+ unsigned char fde_encoding;
+ unsigned char cfa_exp;
+ unsigned char ptr_size;
+ unsigned char segment_size;
+}
+Frame_Chunk;
+
+static const char *const *dwarf_regnames;
+static unsigned int dwarf_regnames_count;
+
+/* A marker for a col_type that means this column was never referenced
+ in the frame info. */
+#define DW_CFA_unreferenced (-1)
+
+/* Return 0 if not more space is needed, 1 if more space is needed,
+ -1 for invalid reg. */
+
+static int
+frame_need_space (Frame_Chunk *fc, unsigned int reg)
+{
+ int prev = fc->ncols;
+
+ if (reg < (unsigned int) fc->ncols)
+ return 0;
+
+ if (dwarf_regnames_count
+ && reg > dwarf_regnames_count)
+ return -1;
+
+ fc->ncols = reg + 1;
+ fc->col_type = (short int *) xcrealloc (fc->col_type, fc->ncols,
+ sizeof (short int));
+ fc->col_offset = (int *) xcrealloc (fc->col_offset, fc->ncols, sizeof (int));
+
+ while (prev < fc->ncols)
+ {
+ fc->col_type[prev] = DW_CFA_unreferenced;
+ fc->col_offset[prev] = 0;
+ prev++;
+ }
+ return 1;
+}
+
+static const char *const dwarf_regnames_i386[] =
+{
+ "eax", "ecx", "edx", "ebx", /* 0 - 3 */
+ "esp", "ebp", "esi", "edi", /* 4 - 7 */
+ "eip", "eflags", NULL, /* 8 - 10 */
+ "st0", "st1", "st2", "st3", /* 11 - 14 */
+ "st4", "st5", "st6", "st7", /* 15 - 18 */
+ NULL, NULL, /* 19 - 20 */
+ "xmm0", "xmm1", "xmm2", "xmm3", /* 21 - 24 */
+ "xmm4", "xmm5", "xmm6", "xmm7", /* 25 - 28 */
+ "mm0", "mm1", "mm2", "mm3", /* 29 - 32 */
+ "mm4", "mm5", "mm6", "mm7", /* 33 - 36 */
+ "fcw", "fsw", "mxcsr", /* 37 - 39 */
+ "es", "cs", "ss", "ds", "fs", "gs", NULL, NULL, /* 40 - 47 */
+ "tr", "ldtr", /* 48 - 49 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 50 - 57 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 58 - 65 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 66 - 73 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 74 - 81 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 82 - 89 */
+ NULL, NULL, NULL, /* 90 - 92 */
+ "k0", "k1", "k2", "k3", "k4", "k5", "k6", "k7" /* 93 - 100 */
+};
+
+void
+init_dwarf_regnames_i386 (void)
+{
+ dwarf_regnames = dwarf_regnames_i386;
+ dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_i386);
+}
+
+static const char *const dwarf_regnames_x86_64[] =
+{
+ "rax", "rdx", "rcx", "rbx",
+ "rsi", "rdi", "rbp", "rsp",
+ "r8", "r9", "r10", "r11",
+ "r12", "r13", "r14", "r15",
+ "rip",
+ "xmm0", "xmm1", "xmm2", "xmm3",
+ "xmm4", "xmm5", "xmm6", "xmm7",
+ "xmm8", "xmm9", "xmm10", "xmm11",
+ "xmm12", "xmm13", "xmm14", "xmm15",
+ "st0", "st1", "st2", "st3",
+ "st4", "st5", "st6", "st7",
+ "mm0", "mm1", "mm2", "mm3",
+ "mm4", "mm5", "mm6", "mm7",
+ "rflags",
+ "es", "cs", "ss", "ds", "fs", "gs", NULL, NULL,
+ "fs.base", "gs.base", NULL, NULL,
+ "tr", "ldtr",
+ "mxcsr", "fcw", "fsw",
+ "xmm16", "xmm17", "xmm18", "xmm19",
+ "xmm20", "xmm21", "xmm22", "xmm23",
+ "xmm24", "xmm25", "xmm26", "xmm27",
+ "xmm28", "xmm29", "xmm30", "xmm31",
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 83 - 90 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 91 - 98 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 99 - 106 */
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 107 - 114 */
+ NULL, NULL, NULL, /* 115 - 117 */
+ "k0", "k1", "k2", "k3", "k4", "k5", "k6", "k7"
+};
+
+void
+init_dwarf_regnames_x86_64 (void)
+{
+ dwarf_regnames = dwarf_regnames_x86_64;
+ dwarf_regnames_count = ARRAY_SIZE (dwarf_regnames_x86_64);
+}
+
+void
+init_dwarf_regnames (unsigned int e_machine)
+{
+ switch (e_machine)
+ {
+ case EM_386:
+ case EM_486:
+ init_dwarf_regnames_i386 ();
+ break;
+
+ case EM_X86_64:
+ case EM_L1OM:
+ case EM_K1OM:
+ init_dwarf_regnames_x86_64 ();
+ break;
+
+ default:
+ break;
+ }
+}
+
+static const char *
+regname (unsigned int regno, int row)
+{
+ static char reg[64];
+ if (dwarf_regnames
+ && regno < dwarf_regnames_count
+ && dwarf_regnames [regno] != NULL)
+ {
+ if (row)
+ return dwarf_regnames [regno];
+ snprintf (reg, sizeof (reg), "r%d (%s)", regno,
+ dwarf_regnames [regno]);
+ }
+ else
+ snprintf (reg, sizeof (reg), "r%d", regno);
+ return reg;
+}
+
+static void
+frame_display_row (Frame_Chunk *fc, int *need_col_headers, int *max_regs)
+{
+ int r;
+ char tmp[100];
+
+ if (*max_regs < fc->ncols)
+ *max_regs = fc->ncols;
+
+ if (*need_col_headers)
+ {
+ static const char *sloc = " LOC";
+
+ *need_col_headers = 0;
+
+ printf ("%-*s CFA ", eh_addr_size * 2, sloc);
+
+ for (r = 0; r < *max_regs; r++)
+ if (fc->col_type[r] != DW_CFA_unreferenced)
+ {
+ if (r == fc->ra)
+ printf ("ra ");
+ else
+ printf ("%-5s ", regname (r, 1));
+ }
+
+ printf ("\n");
+ }
+
+ print_dwarf_vma (fc->pc_begin, eh_addr_size);
+ if (fc->cfa_exp)
+ strcpy (tmp, "exp");
+ else
+ sprintf (tmp, "%s%+d", regname (fc->cfa_reg, 1), fc->cfa_offset);
+ printf ("%-8s ", tmp);
+
+ for (r = 0; r < fc->ncols; r++)
+ {
+ if (fc->col_type[r] != DW_CFA_unreferenced)
+ {
+ switch (fc->col_type[r])
+ {
+ case DW_CFA_undefined:
+ strcpy (tmp, "u");
+ break;
+ case DW_CFA_same_value:
+ strcpy (tmp, "s");
+ break;
+ case DW_CFA_offset:
+ sprintf (tmp, "c%+d", fc->col_offset[r]);
+ break;
+ case DW_CFA_val_offset:
+ sprintf (tmp, "v%+d", fc->col_offset[r]);
+ break;
+ case DW_CFA_register:
+ sprintf (tmp, "%s", regname (fc->col_offset[r], 0));
+ break;
+ case DW_CFA_expression:
+ strcpy (tmp, "exp");
+ break;
+ case DW_CFA_val_expression:
+ strcpy (tmp, "vexp");
+ break;
+ default:
+ strcpy (tmp, "n/a");
+ break;
+ }
+ printf ("%-5s ", tmp);
+ }
+ }
+ printf ("\n");
+}
+
+#define GET(VAR, N) SAFE_BYTE_GET_AND_INC (VAR, start, N, end);
+#define LEB() read_uleb128 (start, & length_return, end); start += length_return
+#define SLEB() read_sleb128 (start, & length_return, end); start += length_return
+
+static int
+display_debug_frames (struct dwarf_section *section,
+ void *file ATTRIBUTE_UNUSED)
+{
+ unsigned char *start = section->start;
+ unsigned char *end = start + section->size;
+ unsigned char *section_start = start;
+ Frame_Chunk *chunks = 0;
+ Frame_Chunk *remembered_state = 0;
+ Frame_Chunk *rs;
+ int is_eh = strcmp (section->name, ".eh_frame") == 0;
+ unsigned int length_return;
+ int max_regs = 0;
+ const char *bad_reg = _("bad register: ");
+ int saved_eh_addr_size = eh_addr_size;
+
+ printf (_("Contents of the %s section:\n"), section->name);
+
+ while (start < end)
+ {
+ unsigned char *saved_start;
+ unsigned char *block_end;
+ dwarf_vma length;
+ dwarf_vma cie_id;
+ Frame_Chunk *fc;
+ Frame_Chunk *cie;
+ int need_col_headers = 1;
+ unsigned char *augmentation_data = NULL;
+ unsigned long augmentation_data_len = 0;
+ unsigned int encoded_ptr_size = saved_eh_addr_size;
+ unsigned int offset_size;
+ unsigned int initial_length_size;
+
+ saved_start = start;
+
+ SAFE_BYTE_GET_AND_INC (length, start, 4, end);
+ if (length == 0)
+ {
+ printf ("\n%08lx ZERO terminator\n\n",
+ (unsigned long)(saved_start - section_start));
+ continue;
+ }
+
+ if (length == 0xffffffff)
+ {
+ SAFE_BYTE_GET_AND_INC (length, start, 8, end);
+ offset_size = 8;
+ initial_length_size = 12;
+ }
+ else
+ {
+ offset_size = 4;
+ initial_length_size = 4;
+ }
+
+ block_end = saved_start + length + initial_length_size;
+ if (block_end > end)
+ {
+ warn ("Invalid length 0x%s in FDE at %#08lx\n",
+ dwarf_vmatoa_1 (NULL, length, offset_size),
+ (unsigned long) (saved_start - section_start));
+ block_end = end;
+ }
+
+ SAFE_BYTE_GET_AND_INC (cie_id, start, offset_size, end);
+
+ if (is_eh ? (cie_id == 0) : ((offset_size == 4 && cie_id == DW_CIE_ID)
+ || (offset_size == 8 && cie_id == DW64_CIE_ID)))
+ {
+ int version;
+
+ fc = (Frame_Chunk *) xmalloc (sizeof (Frame_Chunk));
+ memset (fc, 0, sizeof (Frame_Chunk));
+
+ fc->next = chunks;
+ chunks = fc;
+ fc->chunk_start = saved_start;
+ fc->ncols = 0;
+ fc->col_type = (short int *) xmalloc (sizeof (short int));
+ fc->col_offset = (int *) xmalloc (sizeof (int));
+ frame_need_space (fc, max_regs - 1);
+
+ version = *start++;
+
+ fc->augmentation = (char *) start;
+ start = (unsigned char *) strchr ((char *) start, '\0') + 1;
+
+ if (strcmp (fc->augmentation, "eh") == 0)
+ start += eh_addr_size;
+
+ if (version >= 4)
+ {
+ GET (fc->ptr_size, 1);
+ GET (fc->segment_size, 1);
+ eh_addr_size = fc->ptr_size;
+ }
+ else
+ {
+ fc->ptr_size = eh_addr_size;
+ fc->segment_size = 0;
+ }
+ fc->code_factor = LEB ();
+ fc->data_factor = SLEB ();
+ if (version == 1)
+ {
+ GET (fc->ra, 1);
+ }
+ else
+ {
+ fc->ra = LEB ();
+ }
+
+ if (fc->augmentation[0] == 'z')
+ {
+ augmentation_data_len = LEB ();
+ augmentation_data = start;
+ start += augmentation_data_len;
+ }
+ cie = fc;
+
+ printf ("\n%08lx ", (unsigned long) (saved_start - section_start));
+ print_dwarf_vma (length, fc->ptr_size);
+ print_dwarf_vma (cie_id, offset_size);
+
+ if (do_debug_frames_interp)
+ {
+ printf ("CIE \"%s\" cf=%d df=%d ra=%d\n", fc->augmentation,
+ fc->code_factor, fc->data_factor, fc->ra);
+ }
+ else
+ {
+ printf ("CIE\n");
+ printf (" Version: %d\n", version);
+ printf (" Augmentation: \"%s\"\n", fc->augmentation);
+ if (version >= 4)
+ {
+ printf (" Pointer Size: %u\n", fc->ptr_size);
+ printf (" Segment Size: %u\n", fc->segment_size);
+ }
+ printf (" Code alignment factor: %u\n", fc->code_factor);
+ printf (" Data alignment factor: %d\n", fc->data_factor);
+ printf (" Return address column: %d\n", fc->ra);
+
+ if (augmentation_data_len)
+ {
+ unsigned long i;
+ printf (" Augmentation data: ");
+ for (i = 0; i < augmentation_data_len; ++i)
+ printf (" %02x", augmentation_data[i]);
+ putchar ('\n');
+ }
+ putchar ('\n');
+ }
+
+ if (augmentation_data_len)
+ {
+ unsigned char *p, *q;
+ p = (unsigned char *) fc->augmentation + 1;
+ q = augmentation_data;
+
+ while (1)
+ {
+ if (*p == 'L')
+ q++;
+ else if (*p == 'P')
+ q += 1 + size_of_encoded_value (*q);
+ else if (*p == 'R')
+ fc->fde_encoding = *q++;
+ else if (*p == 'S')
+ ;
+ else
+ break;
+ p++;
+ }
+
+ if (fc->fde_encoding)
+ encoded_ptr_size = size_of_encoded_value (fc->fde_encoding);
+ }
+
+ frame_need_space (fc, fc->ra);
+ }
+ else
+ {
+ unsigned char *look_for;
+ static Frame_Chunk fde_fc;
+ unsigned long segment_selector;
+
+ fc = & fde_fc;
+ memset (fc, 0, sizeof (Frame_Chunk));
+
+ look_for = is_eh ? start - 4 - cie_id : section_start + cie_id;
+
+ for (cie = chunks; cie ; cie = cie->next)
+ if (cie->chunk_start == look_for)
+ break;
+
+ if (!cie)
+ {
+ warn ("Invalid CIE pointer 0x%s in FDE at %#08lx\n",
+ dwarf_vmatoa_1 (NULL, cie_id, offset_size),
+ (unsigned long) (saved_start - section_start));
+ fc->ncols = 0;
+ fc->col_type = (short int *) xmalloc (sizeof (short int));
+ fc->col_offset = (int *) xmalloc (sizeof (int));
+ frame_need_space (fc, max_regs - 1);
+ cie = fc;
+ fc->augmentation = "";
+ fc->fde_encoding = 0;
+ fc->ptr_size = eh_addr_size;
+ fc->segment_size = 0;
+ }
+ else
+ {
+ fc->ncols = cie->ncols;
+ fc->col_type = (short int *) xcmalloc (fc->ncols, sizeof (short int));
+ fc->col_offset = (int *) xcmalloc (fc->ncols, sizeof (int));
+ memcpy (fc->col_type, cie->col_type, fc->ncols * sizeof (short int));
+ memcpy (fc->col_offset, cie->col_offset, fc->ncols * sizeof (int));
+ fc->augmentation = cie->augmentation;
+ fc->ptr_size = cie->ptr_size;
+ eh_addr_size = cie->ptr_size;
+ fc->segment_size = cie->segment_size;
+ fc->code_factor = cie->code_factor;
+ fc->data_factor = cie->data_factor;
+ fc->cfa_reg = cie->cfa_reg;
+ fc->cfa_offset = cie->cfa_offset;
+ fc->ra = cie->ra;
+ frame_need_space (fc, max_regs - 1);
+ fc->fde_encoding = cie->fde_encoding;
+ }
+
+ if (fc->fde_encoding)
+ encoded_ptr_size = size_of_encoded_value (fc->fde_encoding);
+
+ segment_selector = 0;
+ if (fc->segment_size)
+ {
+ SAFE_BYTE_GET_AND_INC (segment_selector, start, fc->segment_size, end);
+ }
+ fc->pc_begin = get_encoded_value (start, fc->fde_encoding, section);
+ start += encoded_ptr_size;
+
+ /* FIXME: It appears that sometimes the final pc_range value is
+ encoded in less than encoded_ptr_size bytes. See the x86_64
+ run of the "objcopy on compressed debug sections" test for an
+ example of this. */
+ SAFE_BYTE_GET_AND_INC (fc->pc_range, start, encoded_ptr_size, end);
+
+ if (cie->augmentation[0] == 'z')
+ {
+ augmentation_data_len = LEB ();
+ augmentation_data = start;
+ start += augmentation_data_len;
+ }
+
+ printf ("\n%08lx %s %s FDE cie=%08lx pc=",
+ (unsigned long)(saved_start - section_start),
+ dwarf_vmatoa_1 (NULL, length, fc->ptr_size),
+ dwarf_vmatoa_1 (NULL, cie_id, offset_size),
+ (unsigned long)(cie->chunk_start - section_start));
+
+ if (fc->segment_size)
+ printf ("%04lx:", segment_selector);
+
+ printf ("%s..%s\n",
+ dwarf_vmatoa_1 (NULL, fc->pc_begin, fc->ptr_size),
+ dwarf_vmatoa_1 (NULL, fc->pc_begin + fc->pc_range, fc->ptr_size));
+
+ if (! do_debug_frames_interp && augmentation_data_len)
+ {
+ unsigned long i;
+
+ printf (" Augmentation data: ");
+ for (i = 0; i < augmentation_data_len; ++i)
+ printf (" %02x", augmentation_data[i]);
+ putchar ('\n');
+ putchar ('\n');
+ }
+ }
+
+ /* At this point, fc is the current chunk, cie (if any) is set, and
+ we're about to interpret instructions for the chunk. */
+ /* ??? At present we need to do this always, since this sizes the
+ fc->col_type and fc->col_offset arrays, which we write into always.
+ We should probably split the interpreted and non-interpreted bits
+ into two different routines, since there's so much that doesn't
+ really overlap between them. */
+ if (1 || do_debug_frames_interp)
+ {
+ /* Start by making a pass over the chunk, allocating storage
+ and taking note of what registers are used. */
+ unsigned char *tmp = start;
+
+ while (start < block_end)
+ {
+ unsigned op, opa;
+ unsigned long reg, temp;
+
+ op = *start++;
+ opa = op & 0x3f;
+ if (op & 0xc0)
+ op &= 0xc0;
+
+ /* Warning: if you add any more cases to this switch, be
+ sure to add them to the corresponding switch below. */
+ switch (op)
+ {
+ case DW_CFA_advance_loc:
+ break;
+ case DW_CFA_offset:
+ LEB ();
+ if (frame_need_space (fc, opa) >= 0)
+ fc->col_type[opa] = DW_CFA_undefined;
+ break;
+ case DW_CFA_restore:
+ if (frame_need_space (fc, opa) >= 0)
+ fc->col_type[opa] = DW_CFA_undefined;
+ break;
+ case DW_CFA_set_loc:
+ start += encoded_ptr_size;
+ break;
+ case DW_CFA_advance_loc1:
+ start += 1;
+ break;
+ case DW_CFA_advance_loc2:
+ start += 2;
+ break;
+ case DW_CFA_advance_loc4:
+ start += 4;
+ break;
+ case DW_CFA_offset_extended:
+ case DW_CFA_val_offset:
+ reg = LEB (); LEB ();
+ if (frame_need_space (fc, reg) >= 0)
+ fc->col_type[reg] = DW_CFA_undefined;
+ break;
+ case DW_CFA_restore_extended:
+ reg = LEB ();
+ frame_need_space (fc, reg);
+ if (frame_need_space (fc, reg) >= 0)
+ fc->col_type[reg] = DW_CFA_undefined;
+ break;
+ case DW_CFA_undefined:
+ reg = LEB ();
+ if (frame_need_space (fc, reg) >= 0)
+ fc->col_type[reg] = DW_CFA_undefined;
+ break;
+ case DW_CFA_same_value:
+ reg = LEB ();
+ if (frame_need_space (fc, reg) >= 0)
+ fc->col_type[reg] = DW_CFA_undefined;
+ break;
+ case DW_CFA_register:
+ reg = LEB (); LEB ();
+ if (frame_need_space (fc, reg) >= 0)
+ fc->col_type[reg] = DW_CFA_undefined;
+ break;
+ case DW_CFA_def_cfa:
+ LEB (); LEB ();
+ break;
+ case DW_CFA_def_cfa_register:
+ LEB ();
+ break;
+ case DW_CFA_def_cfa_offset:
+ LEB ();
+ break;
+ case DW_CFA_def_cfa_expression:
+ temp = LEB ();
+ start += temp;
+ break;
+ case DW_CFA_expression:
+ case DW_CFA_val_expression:
+ reg = LEB ();
+ temp = LEB ();
+ start += temp;
+ if (frame_need_space (fc, reg) >= 0)
+ fc->col_type[reg] = DW_CFA_undefined;
+ break;
+ case DW_CFA_offset_extended_sf:
+ case DW_CFA_val_offset_sf:
+ reg = LEB (); SLEB ();
+ if (frame_need_space (fc, reg) >= 0)
+ fc->col_type[reg] = DW_CFA_undefined;
+ break;
+ case DW_CFA_def_cfa_sf:
+ LEB (); SLEB ();
+ break;
+ case DW_CFA_def_cfa_offset_sf:
+ SLEB ();
+ break;
+ case DW_CFA_MIPS_advance_loc8:
+ start += 8;
+ break;
+ case DW_CFA_GNU_args_size:
+ LEB ();
+ break;
+ case DW_CFA_GNU_negative_offset_extended:
+ reg = LEB (); LEB ();
+ if (frame_need_space (fc, reg) >= 0)
+ fc->col_type[reg] = DW_CFA_undefined;
+ break;
+ default:
+ break;
+ }
+ }
+ start = tmp;
+ }
+
+ /* Now we know what registers are used, make a second pass over
+ the chunk, this time actually printing out the info. */
+
+ while (start < block_end)
+ {
+ unsigned op, opa;
+ unsigned long ul, reg, roffs;
+ long l;
+ dwarf_vma ofs;
+ dwarf_vma vma;
+ const char *reg_prefix = "";
+
+ op = *start++;
+ opa = op & 0x3f;
+ if (op & 0xc0)
+ op &= 0xc0;
+
+ /* Warning: if you add any more cases to this switch, be
+ sure to add them to the corresponding switch above. */
+ switch (op)
+ {
+ case DW_CFA_advance_loc:
+ if (do_debug_frames_interp)
+ frame_display_row (fc, &need_col_headers, &max_regs);
+ else
+ printf (" DW_CFA_advance_loc: %d to %s\n",
+ opa * fc->code_factor,
+ dwarf_vmatoa_1 (NULL,
+ fc->pc_begin + opa * fc->code_factor,
+ fc->ptr_size));
+ fc->pc_begin += opa * fc->code_factor;
+ break;
+
+ case DW_CFA_offset:
+ roffs = LEB ();
+ if (opa >= (unsigned int) fc->ncols)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ printf (" DW_CFA_offset: %s%s at cfa%+ld\n",
+ reg_prefix, regname (opa, 0),
+ roffs * fc->data_factor);
+ if (*reg_prefix == '\0')
+ {
+ fc->col_type[opa] = DW_CFA_offset;
+ fc->col_offset[opa] = roffs * fc->data_factor;
+ }
+ break;
+
+ case DW_CFA_restore:
+ if (opa >= (unsigned int) cie->ncols
+ || opa >= (unsigned int) fc->ncols)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ printf (" DW_CFA_restore: %s%s\n",
+ reg_prefix, regname (opa, 0));
+ if (*reg_prefix == '\0')
+ {
+ fc->col_type[opa] = cie->col_type[opa];
+ fc->col_offset[opa] = cie->col_offset[opa];
+ if (do_debug_frames_interp
+ && fc->col_type[opa] == DW_CFA_unreferenced)
+ fc->col_type[opa] = DW_CFA_undefined;
+ }
+ break;
+
+ case DW_CFA_set_loc:
+ vma = get_encoded_value (start, fc->fde_encoding, section);
+ start += encoded_ptr_size;
+ if (do_debug_frames_interp)
+ frame_display_row (fc, &need_col_headers, &max_regs);
+ else
+ printf (" DW_CFA_set_loc: %s\n",
+ dwarf_vmatoa_1 (NULL, vma, fc->ptr_size));
+ fc->pc_begin = vma;
+ break;
+
+ case DW_CFA_advance_loc1:
+ SAFE_BYTE_GET_AND_INC (ofs, start, 1, end);
+ if (do_debug_frames_interp)
+ frame_display_row (fc, &need_col_headers, &max_regs);
+ else
+ printf (" DW_CFA_advance_loc1: %ld to %s\n",
+ (unsigned long) (ofs * fc->code_factor),
+ dwarf_vmatoa_1 (NULL,
+ fc->pc_begin + ofs * fc->code_factor,
+ fc->ptr_size));
+ fc->pc_begin += ofs * fc->code_factor;
+ break;
+
+ case DW_CFA_advance_loc2:
+ SAFE_BYTE_GET_AND_INC (ofs, start, 2, end);
+ if (do_debug_frames_interp)
+ frame_display_row (fc, &need_col_headers, &max_regs);
+ else
+ printf (" DW_CFA_advance_loc2: %ld to %s\n",
+ (unsigned long) (ofs * fc->code_factor),
+ dwarf_vmatoa_1 (NULL,
+ fc->pc_begin + ofs * fc->code_factor,
+ fc->ptr_size));
+ fc->pc_begin += ofs * fc->code_factor;
+ break;
+
+ case DW_CFA_advance_loc4:
+ SAFE_BYTE_GET_AND_INC (ofs, start, 4, end);
+ if (do_debug_frames_interp)
+ frame_display_row (fc, &need_col_headers, &max_regs);
+ else
+ printf (" DW_CFA_advance_loc4: %ld to %s\n",
+ (unsigned long) (ofs * fc->code_factor),
+ dwarf_vmatoa_1 (NULL,
+ fc->pc_begin + ofs * fc->code_factor,
+ fc->ptr_size));
+ fc->pc_begin += ofs * fc->code_factor;
+ break;
+
+ case DW_CFA_offset_extended:
+ reg = LEB ();
+ roffs = LEB ();
+ if (reg >= (unsigned int) fc->ncols)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ printf (" DW_CFA_offset_extended: %s%s at cfa%+ld\n",
+ reg_prefix, regname (reg, 0),
+ roffs * fc->data_factor);
+ if (*reg_prefix == '\0')
+ {
+ fc->col_type[reg] = DW_CFA_offset;
+ fc->col_offset[reg] = roffs * fc->data_factor;
+ }
+ break;
+
+ case DW_CFA_val_offset:
+ reg = LEB ();
+ roffs = LEB ();
+ if (reg >= (unsigned int) fc->ncols)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ printf (" DW_CFA_val_offset: %s%s at cfa%+ld\n",
+ reg_prefix, regname (reg, 0),
+ roffs * fc->data_factor);
+ if (*reg_prefix == '\0')
+ {
+ fc->col_type[reg] = DW_CFA_val_offset;
+ fc->col_offset[reg] = roffs * fc->data_factor;
+ }
+ break;
+
+ case DW_CFA_restore_extended:
+ reg = LEB ();
+ if (reg >= (unsigned int) cie->ncols
+ || reg >= (unsigned int) fc->ncols)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ printf (" DW_CFA_restore_extended: %s%s\n",
+ reg_prefix, regname (reg, 0));
+ if (*reg_prefix == '\0')
+ {
+ fc->col_type[reg] = cie->col_type[reg];
+ fc->col_offset[reg] = cie->col_offset[reg];
+ }
+ break;
+
+ case DW_CFA_undefined:
+ reg = LEB ();
+ if (reg >= (unsigned int) fc->ncols)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ printf (" DW_CFA_undefined: %s%s\n",
+ reg_prefix, regname (reg, 0));
+ if (*reg_prefix == '\0')
+ {
+ fc->col_type[reg] = DW_CFA_undefined;
+ fc->col_offset[reg] = 0;
+ }
+ break;
+
+ case DW_CFA_same_value:
+ reg = LEB ();
+ if (reg >= (unsigned int) fc->ncols)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ printf (" DW_CFA_same_value: %s%s\n",
+ reg_prefix, regname (reg, 0));
+ if (*reg_prefix == '\0')
+ {
+ fc->col_type[reg] = DW_CFA_same_value;
+ fc->col_offset[reg] = 0;
+ }
+ break;
+
+ case DW_CFA_register:
+ reg = LEB ();
+ roffs = LEB ();
+ if (reg >= (unsigned int) fc->ncols)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ {
+ printf (" DW_CFA_register: %s%s in ",
+ reg_prefix, regname (reg, 0));
+ puts (regname (roffs, 0));
+ }
+ if (*reg_prefix == '\0')
+ {
+ fc->col_type[reg] = DW_CFA_register;
+ fc->col_offset[reg] = roffs;
+ }
+ break;
+
+ case DW_CFA_remember_state:
+ if (! do_debug_frames_interp)
+ printf (" DW_CFA_remember_state\n");
+ rs = (Frame_Chunk *) xmalloc (sizeof (Frame_Chunk));
+ rs->ncols = fc->ncols;
+ rs->col_type = (short int *) xcmalloc (rs->ncols,
+ sizeof (short int));
+ rs->col_offset = (int *) xcmalloc (rs->ncols, sizeof (int));
+ memcpy (rs->col_type, fc->col_type, rs->ncols);
+ memcpy (rs->col_offset, fc->col_offset, rs->ncols * sizeof (int));
+ rs->next = remembered_state;
+ remembered_state = rs;
+ break;
+
+ case DW_CFA_restore_state:
+ if (! do_debug_frames_interp)
+ printf (" DW_CFA_restore_state\n");
+ rs = remembered_state;
+ if (rs)
+ {
+ remembered_state = rs->next;
+ frame_need_space (fc, rs->ncols - 1);
+ memcpy (fc->col_type, rs->col_type, rs->ncols);
+ memcpy (fc->col_offset, rs->col_offset,
+ rs->ncols * sizeof (int));
+ free (rs->col_type);
+ free (rs->col_offset);
+ free (rs);
+ }
+ else if (do_debug_frames_interp)
+ printf ("Mismatched DW_CFA_restore_state\n");
+ break;
+
+ case DW_CFA_def_cfa:
+ fc->cfa_reg = LEB ();
+ fc->cfa_offset = LEB ();
+ fc->cfa_exp = 0;
+ if (! do_debug_frames_interp)
+ printf (" DW_CFA_def_cfa: %s ofs %d\n",
+ regname (fc->cfa_reg, 0), fc->cfa_offset);
+ break;
+
+ case DW_CFA_def_cfa_register:
+ fc->cfa_reg = LEB ();
+ fc->cfa_exp = 0;
+ if (! do_debug_frames_interp)
+ printf (" DW_CFA_def_cfa_register: %s\n",
+ regname (fc->cfa_reg, 0));
+ break;
+
+ case DW_CFA_def_cfa_offset:
+ fc->cfa_offset = LEB ();
+ if (! do_debug_frames_interp)
+ printf (" DW_CFA_def_cfa_offset: %d\n", fc->cfa_offset);
+ break;
+
+ case DW_CFA_nop:
+ if (! do_debug_frames_interp)
+ printf (" DW_CFA_nop\n");
+ break;
+
+ case DW_CFA_def_cfa_expression:
+ ul = LEB ();
+ if (! do_debug_frames_interp)
+ {
+ printf (" DW_CFA_def_cfa_expression (");
+ decode_location_expression (start, eh_addr_size, 0, -1,
+ ul, 0, section);
+ printf (")\n");
+ }
+ fc->cfa_exp = 1;
+ start += ul;
+ break;
+
+ case DW_CFA_expression:
+ reg = LEB ();
+ ul = LEB ();
+ if (reg >= (unsigned int) fc->ncols)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ {
+ printf (" DW_CFA_expression: %s%s (",
+ reg_prefix, regname (reg, 0));
+ decode_location_expression (start, eh_addr_size, 0, -1,
+ ul, 0, section);
+ printf (")\n");
+ }
+ if (*reg_prefix == '\0')
+ fc->col_type[reg] = DW_CFA_expression;
+ start += ul;
+ break;
+
+ case DW_CFA_val_expression:
+ reg = LEB ();
+ ul = LEB ();
+ if (reg >= (unsigned int) fc->ncols)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ {
+ printf (" DW_CFA_val_expression: %s%s (",
+ reg_prefix, regname (reg, 0));
+ decode_location_expression (start, eh_addr_size, 0, -1,
+ ul, 0, section);
+ printf (")\n");
+ }
+ if (*reg_prefix == '\0')
+ fc->col_type[reg] = DW_CFA_val_expression;
+ start += ul;
+ break;
+
+ case DW_CFA_offset_extended_sf:
+ reg = LEB ();
+ l = SLEB ();
+ if (frame_need_space (fc, reg) < 0)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ printf (" DW_CFA_offset_extended_sf: %s%s at cfa%+ld\n",
+ reg_prefix, regname (reg, 0),
+ l * fc->data_factor);
+ if (*reg_prefix == '\0')
+ {
+ fc->col_type[reg] = DW_CFA_offset;
+ fc->col_offset[reg] = l * fc->data_factor;
+ }
+ break;
+
+ case DW_CFA_val_offset_sf:
+ reg = LEB ();
+ l = SLEB ();
+ if (frame_need_space (fc, reg) < 0)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ printf (" DW_CFA_val_offset_sf: %s%s at cfa%+ld\n",
+ reg_prefix, regname (reg, 0),
+ l * fc->data_factor);
+ if (*reg_prefix == '\0')
+ {
+ fc->col_type[reg] = DW_CFA_val_offset;
+ fc->col_offset[reg] = l * fc->data_factor;
+ }
+ break;
+
+ case DW_CFA_def_cfa_sf:
+ fc->cfa_reg = LEB ();
+ fc->cfa_offset = SLEB ();
+ fc->cfa_offset = fc->cfa_offset * fc->data_factor;
+ fc->cfa_exp = 0;
+ if (! do_debug_frames_interp)
+ printf (" DW_CFA_def_cfa_sf: %s ofs %d\n",
+ regname (fc->cfa_reg, 0), fc->cfa_offset);
+ break;
+
+ case DW_CFA_def_cfa_offset_sf:
+ fc->cfa_offset = SLEB ();
+ fc->cfa_offset = fc->cfa_offset * fc->data_factor;
+ if (! do_debug_frames_interp)
+ printf (" DW_CFA_def_cfa_offset_sf: %d\n", fc->cfa_offset);
+ break;
+
+ case DW_CFA_MIPS_advance_loc8:
+ SAFE_BYTE_GET_AND_INC (ofs, start, 8, end);
+ if (do_debug_frames_interp)
+ frame_display_row (fc, &need_col_headers, &max_regs);
+ else
+ printf (" DW_CFA_MIPS_advance_loc8: %ld to %s\n",
+ (unsigned long) (ofs * fc->code_factor),
+ dwarf_vmatoa_1 (NULL,
+ fc->pc_begin + ofs * fc->code_factor,
+ fc->ptr_size));
+ fc->pc_begin += ofs * fc->code_factor;
+ break;
+
+ case DW_CFA_GNU_window_save:
+ if (! do_debug_frames_interp)
+ printf (" DW_CFA_GNU_window_save\n");
+ break;
+
+ case DW_CFA_GNU_args_size:
+ ul = LEB ();
+ if (! do_debug_frames_interp)
+ printf (" DW_CFA_GNU_args_size: %ld\n", ul);
+ break;
+
+ case DW_CFA_GNU_negative_offset_extended:
+ reg = LEB ();
+ l = - LEB ();
+ if (frame_need_space (fc, reg) < 0)
+ reg_prefix = bad_reg;
+ if (! do_debug_frames_interp || *reg_prefix != '\0')
+ printf (" DW_CFA_GNU_negative_offset_extended: %s%s at cfa%+ld\n",
+ reg_prefix, regname (reg, 0),
+ l * fc->data_factor);
+ if (*reg_prefix == '\0')
+ {
+ fc->col_type[reg] = DW_CFA_offset;
+ fc->col_offset[reg] = l * fc->data_factor;
+ }
+ break;
+
+ default:
+ if (op >= DW_CFA_lo_user && op <= DW_CFA_hi_user)
+ printf (_(" DW_CFA_??? (User defined call frame op: %#x)\n"), op);
+ else
+ warn (_("unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"), op);
+ start = block_end;
+ }
+ }
+
+ if (do_debug_frames_interp)
+ frame_display_row (fc, &need_col_headers, &max_regs);
+
+ start = block_end;
+ eh_addr_size = saved_eh_addr_size;
+ }
+
+ printf ("\n");
+
+ return 1;
+}
+
+#undef GET
+#undef LEB
+#undef SLEB
+
+static int
+display_gdb_index (struct dwarf_section *section,
+ void *file ATTRIBUTE_UNUSED)
+{
+ unsigned char *start = section->start;
+ uint32_t version;
+ uint32_t cu_list_offset, tu_list_offset;
+ uint32_t address_table_offset, symbol_table_offset, constant_pool_offset;
+ unsigned int cu_list_elements, tu_list_elements;
+ unsigned int address_table_size, symbol_table_slots;
+ unsigned char *cu_list, *tu_list;
+ unsigned char *address_table, *symbol_table, *constant_pool;
+ unsigned int i;
+
+ /* The documentation for the format of this file is in gdb/dwarf2read.c. */
+
+ printf (_("Contents of the %s section:\n"), section->name);
+
+ if (section->size < 6 * sizeof (uint32_t))
+ {
+ warn (_("Truncated header in the %s section.\n"), section->name);
+ return 0;
+ }
+
+ version = byte_get_little_endian (start, 4);
+ printf (_("Version %ld\n"), (long) version);
+
+ /* Prior versions are obsolete, and future versions may not be
+ backwards compatible. */
+ if (version < 3 || version > 8)
+ {
+ warn (_("Unsupported version %lu.\n"), (unsigned long) version);
+ return 0;
+ }
+ if (version < 4)
+ warn (_("The address table data in version 3 may be wrong.\n"));
+ if (version < 5)
+ warn (_("Version 4 does not support case insensitive lookups.\n"));
+ if (version < 6)
+ warn (_("Version 5 does not include inlined functions.\n"));
+ if (version < 7)
+ warn (_("Version 6 does not include symbol attributes.\n"));
+ /* Version 7 indices generated by Gold have bad type unit references,
+ PR binutils/15021. But we don't know if the index was generated by
+ Gold or not, so to avoid worrying users with gdb-generated indices
+ we say nothing for version 7 here. */
+
+ cu_list_offset = byte_get_little_endian (start + 4, 4);
+ tu_list_offset = byte_get_little_endian (start + 8, 4);
+ address_table_offset = byte_get_little_endian (start + 12, 4);
+ symbol_table_offset = byte_get_little_endian (start + 16, 4);
+ constant_pool_offset = byte_get_little_endian (start + 20, 4);
+
+ if (cu_list_offset > section->size
+ || tu_list_offset > section->size
+ || address_table_offset > section->size
+ || symbol_table_offset > section->size
+ || constant_pool_offset > section->size)
+ {
+ warn (_("Corrupt header in the %s section.\n"), section->name);
+ return 0;
+ }
+
+ cu_list_elements = (tu_list_offset - cu_list_offset) / 8;
+ tu_list_elements = (address_table_offset - tu_list_offset) / 8;
+ address_table_size = symbol_table_offset - address_table_offset;
+ symbol_table_slots = (constant_pool_offset - symbol_table_offset) / 8;
+
+ cu_list = start + cu_list_offset;
+ tu_list = start + tu_list_offset;
+ address_table = start + address_table_offset;
+ symbol_table = start + symbol_table_offset;
+ constant_pool = start + constant_pool_offset;
+
+ printf (_("\nCU table:\n"));
+ for (i = 0; i < cu_list_elements; i += 2)
+ {
+ uint64_t cu_offset = byte_get_little_endian (cu_list + i * 8, 8);
+ uint64_t cu_length = byte_get_little_endian (cu_list + i * 8 + 8, 8);
+
+ printf (_("[%3u] 0x%lx - 0x%lx\n"), i / 2,
+ (unsigned long) cu_offset,
+ (unsigned long) (cu_offset + cu_length - 1));
+ }
+
+ printf (_("\nTU table:\n"));
+ for (i = 0; i < tu_list_elements; i += 3)
+ {
+ uint64_t tu_offset = byte_get_little_endian (tu_list + i * 8, 8);
+ uint64_t type_offset = byte_get_little_endian (tu_list + i * 8 + 8, 8);
+ uint64_t signature = byte_get_little_endian (tu_list + i * 8 + 16, 8);
+
+ printf (_("[%3u] 0x%lx 0x%lx "), i / 3,
+ (unsigned long) tu_offset,
+ (unsigned long) type_offset);
+ print_dwarf_vma (signature, 8);
+ printf ("\n");
+ }
+
+ printf (_("\nAddress table:\n"));
+ for (i = 0; i < address_table_size; i += 2 * 8 + 4)
+ {
+ uint64_t low = byte_get_little_endian (address_table + i, 8);
+ uint64_t high = byte_get_little_endian (address_table + i + 8, 8);
+ uint32_t cu_index = byte_get_little_endian (address_table + i + 16, 4);
+
+ print_dwarf_vma (low, 8);
+ print_dwarf_vma (high, 8);
+ printf (_("%lu\n"), (unsigned long) cu_index);
+ }
+
+ printf (_("\nSymbol table:\n"));
+ for (i = 0; i < symbol_table_slots; ++i)
+ {
+ uint32_t name_offset = byte_get_little_endian (symbol_table + i * 8, 4);
+ uint32_t cu_vector_offset = byte_get_little_endian (symbol_table + i * 8 + 4, 4);
+ uint32_t num_cus, cu;
+
+ if (name_offset != 0
+ || cu_vector_offset != 0)
+ {
+ unsigned int j;
+
+ printf ("[%3u] %s:", i, constant_pool + name_offset);
+ num_cus = byte_get_little_endian (constant_pool + cu_vector_offset, 4);
+ if (num_cus > 1)
+ printf ("\n");
+ for (j = 0; j < num_cus; ++j)
+ {
+ int is_static;
+ gdb_index_symbol_kind kind;
+
+ cu = byte_get_little_endian (constant_pool + cu_vector_offset + 4 + j * 4, 4);
+ is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu);
+ kind = GDB_INDEX_SYMBOL_KIND_VALUE (cu);
+ cu = GDB_INDEX_CU_VALUE (cu);
+ /* Convert to TU number if it's for a type unit. */
+ if (cu >= cu_list_elements / 2)
+ printf ("%cT%lu", num_cus > 1 ? '\t' : ' ',
+ (unsigned long) (cu - cu_list_elements / 2));
+ else
+ printf ("%c%lu", num_cus > 1 ? '\t' : ' ', (unsigned long) cu);
+
+ switch (kind)
+ {
+ case GDB_INDEX_SYMBOL_KIND_NONE:
+ printf (_(" [no symbol information]"));
+ break;
+ case GDB_INDEX_SYMBOL_KIND_TYPE:
+ printf (is_static
+ ? _(" [static type]")
+ : _(" [global type]"));
+ break;
+ case GDB_INDEX_SYMBOL_KIND_VARIABLE:
+ printf (is_static
+ ? _(" [static variable]")
+ : _(" [global variable]"));
+ break;
+ case GDB_INDEX_SYMBOL_KIND_FUNCTION:
+ printf (is_static
+ ? _(" [static function]")
+ : _(" [global function]"));
+ break;
+ case GDB_INDEX_SYMBOL_KIND_OTHER:
+ printf (is_static
+ ? _(" [static other]")
+ : _(" [global other]"));
+ break;
+ default:
+ printf (is_static
+ ? _(" [static unknown: %d]")
+ : _(" [global unknown: %d]"),
+ kind);
+ break;
+ }
+ if (num_cus > 1)
+ printf ("\n");
+ }
+ if (num_cus <= 1)
+ printf ("\n");
+ }
+ }
+
+ return 1;
+}
+
+/* Pre-allocate enough space for the CU/TU sets needed. */
+
+static void
+prealloc_cu_tu_list (unsigned int nshndx)
+{
+ if (shndx_pool == NULL)
+ {
+ shndx_pool_size = nshndx;
+ shndx_pool_used = 0;
+ shndx_pool = (unsigned int *) xcmalloc (shndx_pool_size,
+ sizeof (unsigned int));
+ }
+ else
+ {
+ shndx_pool_size = shndx_pool_used + nshndx;
+ shndx_pool = (unsigned int *) xcrealloc (shndx_pool, shndx_pool_size,
+ sizeof (unsigned int));
+ }
+}
+
+static void
+add_shndx_to_cu_tu_entry (unsigned int shndx)
+{
+ if (shndx_pool_used >= shndx_pool_size)
+ {
+ error (_("Internal error: out of space in the shndx pool.\n"));
+ return;
+ }
+ shndx_pool [shndx_pool_used++] = shndx;
+}
+
+static void
+end_cu_tu_entry (void)
+{
+ if (shndx_pool_used >= shndx_pool_size)
+ {
+ error (_("Internal error: out of space in the shndx pool.\n"));
+ return;
+ }
+ shndx_pool [shndx_pool_used++] = 0;
+}
+
+/* Return the short name of a DWARF section given by a DW_SECT enumerator. */
+
+static const char *
+get_DW_SECT_short_name (unsigned int dw_sect)
+{
+ static char buf[16];
+
+ switch (dw_sect)
+ {
+ case DW_SECT_INFO:
+ return "info";
+ case DW_SECT_TYPES:
+ return "types";
+ case DW_SECT_ABBREV:
+ return "abbrev";
+ case DW_SECT_LINE:
+ return "line";
+ case DW_SECT_LOC:
+ return "loc";
+ case DW_SECT_STR_OFFSETS:
+ return "str_off";
+ case DW_SECT_MACINFO:
+ return "macinfo";
+ case DW_SECT_MACRO:
+ return "macro";
+ default:
+ break;
+ }
+
+ snprintf (buf, sizeof (buf), "%d", dw_sect);
+ return buf;
+}
+
+/* Process a CU or TU index. If DO_DISPLAY is true, print the contents.
+ These sections are extensions for Fission.
+ See http://gcc.gnu.org/wiki/DebugFissionDWP. */
+
+static int
+process_cu_tu_index (struct dwarf_section *section, int do_display)
+{
+ unsigned char *phdr = section->start;
+ unsigned char *limit = phdr + section->size;
+ unsigned char *phash;
+ unsigned char *pindex;
+ unsigned char *ppool;
+ unsigned int version;
+ unsigned int ncols = 0;
+ unsigned int nused;
+ unsigned int nslots;
+ unsigned int i;
+ unsigned int j;
+ dwarf_vma signature_high;
+ dwarf_vma signature_low;
+ char buf[64];
+
+ version = byte_get (phdr, 4);
+ if (version >= 2)
+ ncols = byte_get (phdr + 4, 4);
+ nused = byte_get (phdr + 8, 4);
+ nslots = byte_get (phdr + 12, 4);
+ phash = phdr + 16;
+ pindex = phash + nslots * 8;
+ ppool = pindex + nslots * 4;
+
+ if (do_display)
+ {
+ printf (_("Contents of the %s section:\n\n"), section->name);
+ printf (_(" Version: %d\n"), version);
+ if (version >= 2)
+ printf (_(" Number of columns: %d\n"), ncols);
+ printf (_(" Number of used entries: %d\n"), nused);
+ printf (_(" Number of slots: %d\n\n"), nslots);
+ }
+
+ if (ppool > limit)
+ {
+ warn (_("Section %s too small for %d hash table entries\n"),
+ section->name, nslots);
+ return 0;
+ }
+
+ if (version == 1)
+ {
+ if (!do_display)
+ prealloc_cu_tu_list ((limit - ppool) / 4);
+ for (i = 0; i < nslots; i++)
+ {
+ unsigned char *shndx_list;
+ unsigned int shndx;
+
+ byte_get_64 (phash, &signature_high, &signature_low);
+ if (signature_high != 0 || signature_low != 0)
+ {
+ j = byte_get (pindex, 4);
+ shndx_list = ppool + j * 4;
+ if (do_display)
+ printf (_(" [%3d] Signature: 0x%s Sections: "),
+ i, dwarf_vmatoa64 (signature_high, signature_low,
+ buf, sizeof (buf)));
+ for (;;)
+ {
+ if (shndx_list >= limit)
+ {
+ warn (_("Section %s too small for shndx pool\n"),
+ section->name);
+ return 0;
+ }
+ shndx = byte_get (shndx_list, 4);
+ if (shndx == 0)
+ break;
+ if (do_display)
+ printf (" %d", shndx);
+ else
+ add_shndx_to_cu_tu_entry (shndx);
+ shndx_list += 4;
+ }
+ if (do_display)
+ printf ("\n");
+ else
+ end_cu_tu_entry ();
+ }
+ phash += 8;
+ pindex += 4;
+ }
+ }
+ else if (version == 2)
+ {
+ unsigned int val;
+ unsigned int dw_sect;
+ unsigned char *ph = phash;
+ unsigned char *pi = pindex;
+ unsigned char *poffsets = ppool + ncols * 4;
+ unsigned char *psizes = poffsets + nused * ncols * 4;
+ unsigned char *pend = psizes + nused * ncols * 4;
+ bfd_boolean is_tu_index;
+ struct cu_tu_set *this_set = NULL;
+ unsigned int row;
+ unsigned char *prow;
+
+ is_tu_index = strcmp (section->name, ".debug_tu_index") == 0;
+
+ if (pend > limit)
+ {
+ warn (_("Section %s too small for offset and size tables\n"),
+ section->name);
+ return 0;
+ }
+
+ if (do_display)
+ {
+ printf (_(" Offset table\n"));
+ printf (" slot %-16s ",
+ is_tu_index ? _("signature") : _("dwo_id"));
+ }
+ else
+ {
+ if (is_tu_index)
+ {
+ tu_count = nused;
+ tu_sets = xcmalloc (nused, sizeof (struct cu_tu_set));
+ this_set = tu_sets;
+ }
+ else
+ {
+ cu_count = nused;
+ cu_sets = xcmalloc (nused, sizeof (struct cu_tu_set));
+ this_set = cu_sets;
+ }
+ }
+ if (do_display)
+ {
+ for (j = 0; j < ncols; j++)
+ {
+ dw_sect = byte_get (ppool + j * 4, 4);
+ printf (" %8s", get_DW_SECT_short_name (dw_sect));
+ }
+ printf ("\n");
+ }
+ for (i = 0; i < nslots; i++)
+ {
+ byte_get_64 (ph, &signature_high, &signature_low);
+ row = byte_get (pi, 4);
+ if (row != 0)
+ {
+ if (!do_display)
+ memcpy (&this_set[row - 1].signature, ph, sizeof (uint64_t));
+ prow = poffsets + (row - 1) * ncols * 4;
+ if (do_display)
+ printf (_(" [%3d] 0x%s"),
+ i, dwarf_vmatoa64 (signature_high, signature_low,
+ buf, sizeof (buf)));
+ for (j = 0; j < ncols; j++)
+ {
+ val = byte_get (prow + j * 4, 4);
+ if (do_display)
+ printf (" %8d", val);
+ else
+ {
+ dw_sect = byte_get (ppool + j * 4, 4);
+ this_set [row - 1].section_offsets [dw_sect] = val;
+ }
+ }
+ if (do_display)
+ printf ("\n");
+ }
+ ph += 8;
+ pi += 4;
+ }
+
+ ph = phash;
+ pi = pindex;
+ if (do_display)
+ {
+ printf ("\n");
+ printf (_(" Size table\n"));
+ printf (" slot %-16s ",
+ is_tu_index ? _("signature") : _("dwo_id"));
+ }
+ for (j = 0; j < ncols; j++)
+ {
+ val = byte_get (ppool + j * 4, 4);
+ if (do_display)
+ printf (" %8s", get_DW_SECT_short_name (val));
+ }
+ if (do_display)
+ printf ("\n");
+ for (i = 0; i < nslots; i++)
+ {
+ byte_get_64 (ph, &signature_high, &signature_low);
+ row = byte_get (pi, 4);
+ if (row != 0)
+ {
+ prow = psizes + (row - 1) * ncols * 4;
+ if (do_display)
+ printf (_(" [%3d] 0x%s"),
+ i, dwarf_vmatoa64 (signature_high, signature_low,
+ buf, sizeof (buf)));
+ for (j = 0; j < ncols; j++)
+ {
+ val = byte_get (prow + j * 4, 4);
+ if (do_display)
+ printf (" %8d", val);
+ else
+ {
+ dw_sect = byte_get (ppool + j * 4, 4);
+ this_set [row - 1].section_sizes [dw_sect] = val;
+ }
+ }
+ if (do_display)
+ printf ("\n");
+ }
+ ph += 8;
+ pi += 4;
+ }
+ }
+ else if (do_display)
+ printf (_(" Unsupported version\n"));
+
+ if (do_display)
+ printf ("\n");
+
+ return 1;
+}
+
+/* Load the CU and TU indexes if present. This will build a list of
+ section sets that we can use to associate a .debug_info.dwo section
+ with its associated .debug_abbrev.dwo section in a .dwp file. */
+
+static void
+load_cu_tu_indexes (void *file)
+{
+ /* If we have already loaded (or tried to load) the CU and TU indexes
+ then do not bother to repeat the task. */
+ if (cu_tu_indexes_read)
+ return;
+
+ if (load_debug_section (dwp_cu_index, file))
+ process_cu_tu_index (&debug_displays [dwp_cu_index].section, 0);
+
+ if (load_debug_section (dwp_tu_index, file))
+ process_cu_tu_index (&debug_displays [dwp_tu_index].section, 0);
+
+ cu_tu_indexes_read = 1;
+}
+
+/* Find the set of sections that includes section SHNDX. */
+
+unsigned int *
+find_cu_tu_set (void *file, unsigned int shndx)
+{
+ unsigned int i;
+
+ load_cu_tu_indexes (file);
+
+ /* Find SHNDX in the shndx pool. */
+ for (i = 0; i < shndx_pool_used; i++)
+ if (shndx_pool [i] == shndx)
+ break;
+
+ if (i >= shndx_pool_used)
+ return NULL;
+
+ /* Now backup to find the first entry in the set. */
+ while (i > 0 && shndx_pool [i - 1] != 0)
+ i--;
+
+ return shndx_pool + i;
+}
+
+/* Display a .debug_cu_index or .debug_tu_index section. */
+
+static int
+display_cu_index (struct dwarf_section *section, void *file ATTRIBUTE_UNUSED)
+{
+ return process_cu_tu_index (section, 1);
+}
+
+static int
+display_debug_not_supported (struct dwarf_section *section,
+ void *file ATTRIBUTE_UNUSED)
+{
+ printf (_("Displaying the debug contents of section %s is not yet supported.\n"),
+ section->name);
+
+ return 1;
+}
+
+void *
+cmalloc (size_t nmemb, size_t size)
+{
+ /* Check for overflow. */
+ if (nmemb >= ~(size_t) 0 / size)
+ return NULL;
+ else
+ return malloc (nmemb * size);
+}
+
+void *
+xcmalloc (size_t nmemb, size_t size)
+{
+ /* Check for overflow. */
+ if (nmemb >= ~(size_t) 0 / size)
+ return NULL;
+ else
+ return xmalloc (nmemb * size);
+}
+
+void *
+xcrealloc (void *ptr, size_t nmemb, size_t size)
+{
+ /* Check for overflow. */
+ if (nmemb >= ~(size_t) 0 / size)
+ return NULL;
+ else
+ return xrealloc (ptr, nmemb * size);
+}
+
+void
+free_debug_memory (void)
+{
+ unsigned int i;
+
+ free_abbrevs ();
+
+ for (i = 0; i < max; i++)
+ free_debug_section ((enum dwarf_section_display_enum) i);
+
+ if (debug_information != NULL)
+ {
+ if (num_debug_info_entries != DEBUG_INFO_UNAVAILABLE)
+ {
+ for (i = 0; i < num_debug_info_entries; i++)
+ {
+ if (!debug_information [i].max_loc_offsets)
+ {
+ free (debug_information [i].loc_offsets);
+ free (debug_information [i].have_frame_base);
+ }
+ if (!debug_information [i].max_range_lists)
+ free (debug_information [i].range_lists);
+ }
+ }
+
+ free (debug_information);
+ debug_information = NULL;
+ num_debug_info_entries = 0;
+ }
+}
+
+void
+dwarf_select_sections_by_names (const char *names)
+{
+ typedef struct
+ {
+ const char * option;
+ int * variable;
+ int val;
+ }
+ debug_dump_long_opts;
+
+ static const debug_dump_long_opts opts_table [] =
+ {
+ /* Please keep this table alpha- sorted. */
+ { "Ranges", & do_debug_ranges, 1 },
+ { "abbrev", & do_debug_abbrevs, 1 },
+ { "addr", & do_debug_addr, 1 },
+ { "aranges", & do_debug_aranges, 1 },
+ { "cu_index", & do_debug_cu_index, 1 },
+ { "decodedline", & do_debug_lines, FLAG_DEBUG_LINES_DECODED },
+ { "frames", & do_debug_frames, 1 },
+ { "frames-interp", & do_debug_frames_interp, 1 },
+ /* The special .gdb_index section. */
+ { "gdb_index", & do_gdb_index, 1 },
+ { "info", & do_debug_info, 1 },
+ { "line", & do_debug_lines, FLAG_DEBUG_LINES_RAW }, /* For backwards compatibility. */
+ { "loc", & do_debug_loc, 1 },
+ { "macro", & do_debug_macinfo, 1 },
+ { "pubnames", & do_debug_pubnames, 1 },
+ { "pubtypes", & do_debug_pubtypes, 1 },
+ /* This entry is for compatability
+ with earlier versions of readelf. */
+ { "ranges", & do_debug_aranges, 1 },
+ { "rawline", & do_debug_lines, FLAG_DEBUG_LINES_RAW },
+ { "str", & do_debug_str, 1 },
+ /* These trace_* sections are used by Itanium VMS. */
+ { "trace_abbrev", & do_trace_abbrevs, 1 },
+ { "trace_aranges", & do_trace_aranges, 1 },
+ { "trace_info", & do_trace_info, 1 },
+ { NULL, NULL, 0 }
+ };
+
+ const char *p;
+
+ p = names;
+ while (*p)
+ {
+ const debug_dump_long_opts * entry;
+
+ for (entry = opts_table; entry->option; entry++)
+ {
+ size_t len = strlen (entry->option);
+
+ if (strncmp (p, entry->option, len) == 0
+ && (p[len] == ',' || p[len] == '\0'))
+ {
+ * entry->variable |= entry->val;
+
+ /* The --debug-dump=frames-interp option also
+ enables the --debug-dump=frames option. */
+ if (do_debug_frames_interp)
+ do_debug_frames = 1;
+
+ p += len;
+ break;
+ }
+ }
+
+ if (entry->option == NULL)
+ {
+ warn (_("Unrecognized debug option '%s'\n"), p);
+ p = strchr (p, ',');
+ if (p == NULL)
+ break;
+ }
+
+ if (*p == ',')
+ p++;
+ }
+}
+
+void
+dwarf_select_sections_by_letters (const char *letters)
+{
+ unsigned int lindex = 0;
+
+ while (letters[lindex])
+ switch (letters[lindex++])
+ {
+ case 'i':
+ do_debug_info = 1;
+ break;
+
+ case 'a':
+ do_debug_abbrevs = 1;
+ break;
+
+ case 'l':
+ do_debug_lines |= FLAG_DEBUG_LINES_RAW;
+ break;
+
+ case 'L':
+ do_debug_lines |= FLAG_DEBUG_LINES_DECODED;
+ break;
+
+ case 'p':
+ do_debug_pubnames = 1;
+ break;
+
+ case 't':
+ do_debug_pubtypes = 1;
+ break;
+
+ case 'r':
+ do_debug_aranges = 1;
+ break;
+
+ case 'R':
+ do_debug_ranges = 1;
+ break;
+
+ case 'F':
+ do_debug_frames_interp = 1;
+ case 'f':
+ do_debug_frames = 1;
+ break;
+
+ case 'm':
+ do_debug_macinfo = 1;
+ break;
+
+ case 's':
+ do_debug_str = 1;
+ break;
+
+ case 'o':
+ do_debug_loc = 1;
+ break;
+
+ default:
+ warn (_("Unrecognized debug option '%s'\n"), optarg);
+ break;
+ }
+}
+
+void
+dwarf_select_sections_all (void)
+{
+ do_debug_info = 1;
+ do_debug_abbrevs = 1;
+ do_debug_lines = FLAG_DEBUG_LINES_RAW;
+ do_debug_pubnames = 1;
+ do_debug_pubtypes = 1;
+ do_debug_aranges = 1;
+ do_debug_ranges = 1;
+ do_debug_frames = 1;
+ do_debug_macinfo = 1;
+ do_debug_str = 1;
+ do_debug_loc = 1;
+ do_gdb_index = 1;
+ do_trace_info = 1;
+ do_trace_abbrevs = 1;
+ do_trace_aranges = 1;
+ do_debug_addr = 1;
+ do_debug_cu_index = 1;
+}
+
+struct dwarf_section_display debug_displays[] =
+{
+ { { ".debug_abbrev", ".zdebug_abbrev", NULL, NULL, 0, 0, 0 },
+ display_debug_abbrev, &do_debug_abbrevs, 0 },
+ { { ".debug_aranges", ".zdebug_aranges", NULL, NULL, 0, 0, 0 },
+ display_debug_aranges, &do_debug_aranges, 1 },
+ { { ".debug_frame", ".zdebug_frame", NULL, NULL, 0, 0, 0 },
+ display_debug_frames, &do_debug_frames, 1 },
+ { { ".debug_info", ".zdebug_info", NULL, NULL, 0, 0, abbrev },
+ display_debug_info, &do_debug_info, 1 },
+ { { ".debug_line", ".zdebug_line", NULL, NULL, 0, 0, 0 },
+ display_debug_lines, &do_debug_lines, 1 },
+ { { ".debug_pubnames", ".zdebug_pubnames", NULL, NULL, 0, 0, 0 },
+ display_debug_pubnames, &do_debug_pubnames, 0 },
+ { { ".eh_frame", "", NULL, NULL, 0, 0, 0 },
+ display_debug_frames, &do_debug_frames, 1 },
+ { { ".debug_macinfo", ".zdebug_macinfo", NULL, NULL, 0, 0, 0 },
+ display_debug_macinfo, &do_debug_macinfo, 0 },
+ { { ".debug_macro", ".zdebug_macro", NULL, NULL, 0, 0, 0 },
+ display_debug_macro, &do_debug_macinfo, 1 },
+ { { ".debug_str", ".zdebug_str", NULL, NULL, 0, 0, 0 },
+ display_debug_str, &do_debug_str, 0 },
+ { { ".debug_loc", ".zdebug_loc", NULL, NULL, 0, 0, 0 },
+ display_debug_loc, &do_debug_loc, 1 },
+ { { ".debug_pubtypes", ".zdebug_pubtypes", NULL, NULL, 0, 0, 0 },
+ display_debug_pubnames, &do_debug_pubtypes, 0 },
+ { { ".debug_ranges", ".zdebug_ranges", NULL, NULL, 0, 0, 0 },
+ display_debug_ranges, &do_debug_ranges, 1 },
+ { { ".debug_static_func", ".zdebug_static_func", NULL, NULL, 0, 0, 0 },
+ display_debug_not_supported, NULL, 0 },
+ { { ".debug_static_vars", ".zdebug_static_vars", NULL, NULL, 0, 0, 0 },
+ display_debug_not_supported, NULL, 0 },
+ { { ".debug_types", ".zdebug_types", NULL, NULL, 0, 0, abbrev },
+ display_debug_types, &do_debug_info, 1 },
+ { { ".debug_weaknames", ".zdebug_weaknames", NULL, NULL, 0, 0, 0 },
+ display_debug_not_supported, NULL, 0 },
+ { { ".gdb_index", "", NULL, NULL, 0, 0, 0 },
+ display_gdb_index, &do_gdb_index, 0 },
+ { { ".trace_info", "", NULL, NULL, 0, 0, trace_abbrev },
+ display_trace_info, &do_trace_info, 1 },
+ { { ".trace_abbrev", "", NULL, NULL, 0, 0, 0 },
+ display_debug_abbrev, &do_trace_abbrevs, 0 },
+ { { ".trace_aranges", "", NULL, NULL, 0, 0, 0 },
+ display_debug_aranges, &do_trace_aranges, 0 },
+ { { ".debug_info.dwo", ".zdebug_info.dwo", NULL, NULL, 0, 0, abbrev_dwo },
+ display_debug_info, &do_debug_info, 1 },
+ { { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo", NULL, NULL, 0, 0, 0 },
+ display_debug_abbrev, &do_debug_abbrevs, 0 },
+ { { ".debug_types.dwo", ".zdebug_types.dwo", NULL, NULL, 0, 0, abbrev_dwo },
+ display_debug_types, &do_debug_info, 1 },
+ { { ".debug_line.dwo", ".zdebug_line.dwo", NULL, NULL, 0, 0, 0 },
+ display_debug_lines, &do_debug_lines, 1 },
+ { { ".debug_loc.dwo", ".zdebug_loc.dwo", NULL, NULL, 0, 0, 0 },
+ display_debug_loc, &do_debug_loc, 1 },
+ { { ".debug_macro.dwo", ".zdebug_macro.dwo", NULL, NULL, 0, 0, 0 },
+ display_debug_macro, &do_debug_macinfo, 1 },
+ { { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo", NULL, NULL, 0, 0, 0 },
+ display_debug_macinfo, &do_debug_macinfo, 0 },
+ { { ".debug_str.dwo", ".zdebug_str.dwo", NULL, NULL, 0, 0, 0 },
+ display_debug_str, &do_debug_str, 1 },
+ { { ".debug_str_offsets", ".zdebug_str_offsets", NULL, NULL, 0, 0, 0 },
+ display_debug_str_offsets, NULL, 0 },
+ { { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo", NULL, NULL, 0, 0, 0 },
+ display_debug_str_offsets, NULL, 0 },
+ { { ".debug_addr", ".zdebug_addr", NULL, NULL, 0, 0, 0 },
+ display_debug_addr, &do_debug_addr, 1 },
+ { { ".debug_cu_index", "", NULL, NULL, 0, 0, 0 },
+ display_cu_index, &do_debug_cu_index, 0 },
+ { { ".debug_tu_index", "", NULL, NULL, 0, 0, 0 },
+ display_cu_index, &do_debug_cu_index, 0 },
+};
diff --git a/binutils-2.24/binutils/dwarf.h b/binutils-2.24/binutils/dwarf.h
new file mode 100644
index 00000000..68e93f1c
--- /dev/null
+++ b/binutils-2.24/binutils/dwarf.h
@@ -0,0 +1,250 @@
+/* dwarf.h - DWARF support header file
+ Copyright 2005-2013 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 3 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. */
+
+typedef unsigned HOST_WIDEST_INT dwarf_vma;
+typedef HOST_WIDEST_INT dwarf_signed_vma;
+typedef unsigned HOST_WIDEST_INT dwarf_size_type;
+
+/* Structure found in the .debug_line section. */
+typedef struct
+{
+ unsigned char li_length [4];
+ unsigned char li_version [2];
+ unsigned char li_prologue_length [4];
+ unsigned char li_min_insn_length [1];
+ unsigned char li_default_is_stmt [1];
+ unsigned char li_line_base [1];
+ unsigned char li_line_range [1];
+ unsigned char li_opcode_base [1];
+}
+DWARF2_External_LineInfo;
+
+typedef struct
+{
+ dwarf_vma li_length;
+ unsigned short li_version;
+ unsigned int li_prologue_length;
+ unsigned char li_min_insn_length;
+ unsigned char li_max_ops_per_insn;
+ unsigned char li_default_is_stmt;
+ int li_line_base;
+ unsigned char li_line_range;
+ unsigned char li_opcode_base;
+}
+DWARF2_Internal_LineInfo;
+
+/* Structure found in .debug_pubnames section. */
+typedef struct
+{
+ unsigned char pn_length [4];
+ unsigned char pn_version [2];
+ unsigned char pn_offset [4];
+ unsigned char pn_size [4];
+}
+DWARF2_External_PubNames;
+
+typedef struct
+{
+ dwarf_vma pn_length;
+ unsigned short pn_version;
+ dwarf_vma pn_offset;
+ dwarf_vma pn_size;
+}
+DWARF2_Internal_PubNames;
+
+/* Structure found in .debug_info section. */
+typedef struct
+{
+ unsigned char cu_length [4];
+ unsigned char cu_version [2];
+ unsigned char cu_abbrev_offset [4];
+ unsigned char cu_pointer_size [1];
+}
+DWARF2_External_CompUnit;
+
+typedef struct
+{
+ dwarf_vma cu_length;
+ unsigned short cu_version;
+ dwarf_vma cu_abbrev_offset;
+ unsigned char cu_pointer_size;
+}
+DWARF2_Internal_CompUnit;
+
+typedef struct
+{
+ unsigned char ar_length [4];
+ unsigned char ar_version [2];
+ unsigned char ar_info_offset [4];
+ unsigned char ar_pointer_size [1];
+ unsigned char ar_segment_size [1];
+}
+DWARF2_External_ARange;
+
+typedef struct
+{
+ dwarf_vma ar_length;
+ unsigned short ar_version;
+ dwarf_vma ar_info_offset;
+ unsigned char ar_pointer_size;
+ unsigned char ar_segment_size;
+}
+DWARF2_Internal_ARange;
+
+enum dwarf_section_display_enum
+{
+ abbrev = 0,
+ aranges,
+ frame,
+ info,
+ line,
+ pubnames,
+ eh_frame,
+ macinfo,
+ macro,
+ str,
+ loc,
+ pubtypes,
+ ranges,
+ static_func,
+ static_vars,
+ types,
+ weaknames,
+ gdb_index,
+ trace_info,
+ trace_abbrev,
+ trace_aranges,
+ info_dwo,
+ abbrev_dwo,
+ types_dwo,
+ line_dwo,
+ loc_dwo,
+ macro_dwo,
+ macinfo_dwo,
+ str_dwo,
+ str_index,
+ str_index_dwo,
+ debug_addr,
+ dwp_cu_index,
+ dwp_tu_index,
+ max
+};
+
+struct dwarf_section
+{
+ /* A debug section has a different name when it's stored compressed
+ or not. COMPRESSED_NAME and UNCOMPRESSED_NAME are the two
+ possibilities. NAME is set to whichever one is used for this
+ input file, as determined by load_debug_section(). */
+ const char *uncompressed_name;
+ const char *compressed_name;
+ const char *name;
+ unsigned char *start;
+ dwarf_vma address;
+ dwarf_size_type size;
+ enum dwarf_section_display_enum abbrev_sec;
+};
+
+/* A structure containing the name of a debug section
+ and a pointer to a function that can decode it. */
+struct dwarf_section_display
+{
+ struct dwarf_section section;
+ int (*display) (struct dwarf_section *, void *);
+ int *enabled;
+ unsigned int relocate : 1;
+};
+
+extern struct dwarf_section_display debug_displays [];
+
+/* This structure records the information that
+ we extract from the.debug_info section. */
+typedef struct
+{
+ unsigned int pointer_size;
+ unsigned int offset_size;
+ int dwarf_version;
+ dwarf_vma cu_offset;
+ dwarf_vma base_address;
+ /* This field is filled in when reading the attribute DW_AT_GNU_addr_base and
+ is used with the form DW_AT_GNU_FORM_addr_index. */
+ dwarf_vma addr_base;
+ /* This field is filled in when reading the attribute DW_AT_GNU_ranges_base and
+ is used when calculating ranges. */
+ dwarf_vma ranges_base;
+ /* This is an array of offsets to the location list table. */
+ dwarf_vma * loc_offsets;
+ int * have_frame_base;
+ unsigned int num_loc_offsets;
+ unsigned int max_loc_offsets;
+ /* List of .debug_ranges offsets seen in this .debug_info. */
+ dwarf_vma * range_lists;
+ unsigned int num_range_lists;
+ unsigned int max_range_lists;
+}
+debug_info;
+
+extern int eh_addr_size;
+
+extern int do_debug_info;
+extern int do_debug_abbrevs;
+extern int do_debug_lines;
+extern int do_debug_pubnames;
+extern int do_debug_pubtypes;
+extern int do_debug_aranges;
+extern int do_debug_ranges;
+extern int do_debug_frames;
+extern int do_debug_frames_interp;
+extern int do_debug_macinfo;
+extern int do_debug_str;
+extern int do_debug_loc;
+extern int do_gdb_index;
+extern int do_trace_info;
+extern int do_trace_abbrevs;
+extern int do_trace_aranges;
+extern int do_debug_addr;
+extern int do_debug_cu_index;
+extern int do_wide;
+
+extern int dwarf_cutoff_level;
+extern unsigned long dwarf_start_die;
+
+extern int dwarf_check;
+
+extern void init_dwarf_regnames (unsigned int);
+extern void init_dwarf_regnames_i386 (void);
+extern void init_dwarf_regnames_x86_64 (void);
+
+extern int load_debug_section (enum dwarf_section_display_enum, void *);
+extern void free_debug_section (enum dwarf_section_display_enum);
+
+extern void free_debug_memory (void);
+
+extern void dwarf_select_sections_by_names (const char *);
+extern void dwarf_select_sections_by_letters (const char *);
+extern void dwarf_select_sections_all (void);
+
+unsigned int * find_cu_tu_set (void *, unsigned int);
+
+void * cmalloc (size_t, size_t);
+void * xcmalloc (size_t, size_t);
+void * xcrealloc (void *, size_t, size_t);
+
+extern dwarf_vma read_leb128 (unsigned char *, unsigned int *, bfd_boolean, const unsigned char * const);
diff --git a/binutils-2.24/binutils/elfcomm.c b/binutils-2.24/binutils/elfcomm.c
new file mode 100644
index 00000000..d5b43138
--- /dev/null
+++ b/binutils-2.24/binutils/elfcomm.c
@@ -0,0 +1,853 @@
+/* elfcomm.c -- common code for ELF format file.
+ Copyright 2010-2013 Free Software Foundation, Inc.
+
+ Originally developed by Eric Youngdale <eric@andante.jic.com>
+ Modifications by Nick Clifton <nickc@redhat.com>
+
+ 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 3 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 "sysdep.h"
+#include "libiberty.h"
+#include "filenames.h"
+#include "bfd.h"
+#include "aout/ar.h"
+#include "bucomm.h"
+#include "elfcomm.h"
+#include <assert.h>
+
+void
+error (const char *message, ...)
+{
+ va_list args;
+
+ /* Try to keep error messages in sync with the program's normal output. */
+ fflush (stdout);
+
+ va_start (args, message);
+ fprintf (stderr, _("%s: Error: "), program_name);
+ vfprintf (stderr, message, args);
+ va_end (args);
+}
+
+void
+warn (const char *message, ...)
+{
+ va_list args;
+
+ /* Try to keep warning messages in sync with the program's normal output. */
+ fflush (stdout);
+
+ va_start (args, message);
+ fprintf (stderr, _("%s: Warning: "), program_name);
+ vfprintf (stderr, message, args);
+ va_end (args);
+}
+
+void (*byte_put) (unsigned char *, elf_vma, int);
+
+void
+byte_put_little_endian (unsigned char * field, elf_vma value, int size)
+{
+ switch (size)
+ {
+ case 8:
+ field[7] = (((value >> 24) >> 24) >> 8) & 0xff;
+ field[6] = ((value >> 24) >> 24) & 0xff;
+ field[5] = ((value >> 24) >> 16) & 0xff;
+ field[4] = ((value >> 24) >> 8) & 0xff;
+ /* Fall through. */
+ case 4:
+ field[3] = (value >> 24) & 0xff;
+ /* Fall through. */
+ case 3:
+ field[2] = (value >> 16) & 0xff;
+ /* Fall through. */
+ case 2:
+ field[1] = (value >> 8) & 0xff;
+ /* Fall through. */
+ case 1:
+ field[0] = value & 0xff;
+ break;
+
+ default:
+ error (_("Unhandled data length: %d\n"), size);
+ abort ();
+ }
+}
+
+void
+byte_put_big_endian (unsigned char * field, elf_vma value, int size)
+{
+ switch (size)
+ {
+ case 8:
+ field[7] = value & 0xff;
+ field[6] = (value >> 8) & 0xff;
+ field[5] = (value >> 16) & 0xff;
+ field[4] = (value >> 24) & 0xff;
+ value >>= 16;
+ value >>= 16;
+ /* Fall through. */
+ case 4:
+ field[3] = value & 0xff;
+ value >>= 8;
+ /* Fall through. */
+ case 3:
+ field[2] = value & 0xff;
+ value >>= 8;
+ /* Fall through. */
+ case 2:
+ field[1] = value & 0xff;
+ value >>= 8;
+ /* Fall through. */
+ case 1:
+ field[0] = value & 0xff;
+ break;
+
+ default:
+ error (_("Unhandled data length: %d\n"), size);
+ abort ();
+ }
+}
+
+elf_vma (*byte_get) (unsigned char *, int);
+
+elf_vma
+byte_get_little_endian (unsigned char *field, int size)
+{
+ switch (size)
+ {
+ case 1:
+ return *field;
+
+ case 2:
+ return ((unsigned int) (field[0]))
+ | (((unsigned int) (field[1])) << 8);
+
+ case 3:
+ return ((unsigned long) (field[0]))
+ | (((unsigned long) (field[1])) << 8)
+ | (((unsigned long) (field[2])) << 16);
+
+ case 4:
+ return ((unsigned long) (field[0]))
+ | (((unsigned long) (field[1])) << 8)
+ | (((unsigned long) (field[2])) << 16)
+ | (((unsigned long) (field[3])) << 24);
+
+ case 5:
+ if (sizeof (elf_vma) == 8)
+ return ((elf_vma) (field[0]))
+ | (((elf_vma) (field[1])) << 8)
+ | (((elf_vma) (field[2])) << 16)
+ | (((elf_vma) (field[3])) << 24)
+ | (((elf_vma) (field[4])) << 32);
+ else if (sizeof (elf_vma) == 4)
+ /* We want to extract data from an 8 byte wide field and
+ place it into a 4 byte wide field. Since this is a little
+ endian source we can just use the 4 byte extraction code. */
+ return ((unsigned long) (field[0]))
+ | (((unsigned long) (field[1])) << 8)
+ | (((unsigned long) (field[2])) << 16)
+ | (((unsigned long) (field[3])) << 24);
+
+ case 6:
+ if (sizeof (elf_vma) == 8)
+ return ((elf_vma) (field[0]))
+ | (((elf_vma) (field[1])) << 8)
+ | (((elf_vma) (field[2])) << 16)
+ | (((elf_vma) (field[3])) << 24)
+ | (((elf_vma) (field[4])) << 32)
+ | (((elf_vma) (field[5])) << 40);
+ else if (sizeof (elf_vma) == 4)
+ /* We want to extract data from an 8 byte wide field and
+ place it into a 4 byte wide field. Since this is a little
+ endian source we can just use the 4 byte extraction code. */
+ return ((unsigned long) (field[0]))
+ | (((unsigned long) (field[1])) << 8)
+ | (((unsigned long) (field[2])) << 16)
+ | (((unsigned long) (field[3])) << 24);
+
+ case 7:
+ if (sizeof (elf_vma) == 8)
+ return ((elf_vma) (field[0]))
+ | (((elf_vma) (field[1])) << 8)
+ | (((elf_vma) (field[2])) << 16)
+ | (((elf_vma) (field[3])) << 24)
+ | (((elf_vma) (field[4])) << 32)
+ | (((elf_vma) (field[5])) << 40)
+ | (((elf_vma) (field[6])) << 48);
+ else if (sizeof (elf_vma) == 4)
+ /* We want to extract data from an 8 byte wide field and
+ place it into a 4 byte wide field. Since this is a little
+ endian source we can just use the 4 byte extraction code. */
+ return ((unsigned long) (field[0]))
+ | (((unsigned long) (field[1])) << 8)
+ | (((unsigned long) (field[2])) << 16)
+ | (((unsigned long) (field[3])) << 24);
+
+ case 8:
+ if (sizeof (elf_vma) == 8)
+ return ((elf_vma) (field[0]))
+ | (((elf_vma) (field[1])) << 8)
+ | (((elf_vma) (field[2])) << 16)
+ | (((elf_vma) (field[3])) << 24)
+ | (((elf_vma) (field[4])) << 32)
+ | (((elf_vma) (field[5])) << 40)
+ | (((elf_vma) (field[6])) << 48)
+ | (((elf_vma) (field[7])) << 56);
+ else if (sizeof (elf_vma) == 4)
+ /* We want to extract data from an 8 byte wide field and
+ place it into a 4 byte wide field. Since this is a little
+ endian source we can just use the 4 byte extraction code. */
+ return ((unsigned long) (field[0]))
+ | (((unsigned long) (field[1])) << 8)
+ | (((unsigned long) (field[2])) << 16)
+ | (((unsigned long) (field[3])) << 24);
+
+ default:
+ error (_("Unhandled data length: %d\n"), size);
+ abort ();
+ }
+}
+
+elf_vma
+byte_get_big_endian (unsigned char *field, int size)
+{
+ switch (size)
+ {
+ case 1:
+ return *field;
+
+ case 2:
+ return ((unsigned int) (field[1])) | (((int) (field[0])) << 8);
+
+ case 3:
+ return ((unsigned long) (field[2]))
+ | (((unsigned long) (field[1])) << 8)
+ | (((unsigned long) (field[0])) << 16);
+
+ case 4:
+ return ((unsigned long) (field[3]))
+ | (((unsigned long) (field[2])) << 8)
+ | (((unsigned long) (field[1])) << 16)
+ | (((unsigned long) (field[0])) << 24);
+
+ case 5:
+ if (sizeof (elf_vma) == 8)
+ return ((elf_vma) (field[4]))
+ | (((elf_vma) (field[3])) << 8)
+ | (((elf_vma) (field[2])) << 16)
+ | (((elf_vma) (field[1])) << 24)
+ | (((elf_vma) (field[0])) << 32);
+ else if (sizeof (elf_vma) == 4)
+ {
+ /* Although we are extracting data from an 8 byte wide field,
+ we are returning only 4 bytes of data. */
+ field += 1;
+ return ((unsigned long) (field[3]))
+ | (((unsigned long) (field[2])) << 8)
+ | (((unsigned long) (field[1])) << 16)
+ | (((unsigned long) (field[0])) << 24);
+ }
+
+ case 6:
+ if (sizeof (elf_vma) == 8)
+ return ((elf_vma) (field[5]))
+ | (((elf_vma) (field[4])) << 8)
+ | (((elf_vma) (field[3])) << 16)
+ | (((elf_vma) (field[2])) << 24)
+ | (((elf_vma) (field[1])) << 32)
+ | (((elf_vma) (field[0])) << 40);
+ else if (sizeof (elf_vma) == 4)
+ {
+ /* Although we are extracting data from an 8 byte wide field,
+ we are returning only 4 bytes of data. */
+ field += 2;
+ return ((unsigned long) (field[3]))
+ | (((unsigned long) (field[2])) << 8)
+ | (((unsigned long) (field[1])) << 16)
+ | (((unsigned long) (field[0])) << 24);
+ }
+
+ case 7:
+ if (sizeof (elf_vma) == 8)
+ return ((elf_vma) (field[6]))
+ | (((elf_vma) (field[5])) << 8)
+ | (((elf_vma) (field[4])) << 16)
+ | (((elf_vma) (field[3])) << 24)
+ | (((elf_vma) (field[2])) << 32)
+ | (((elf_vma) (field[1])) << 40)
+ | (((elf_vma) (field[0])) << 48);
+ else if (sizeof (elf_vma) == 4)
+ {
+ /* Although we are extracting data from an 8 byte wide field,
+ we are returning only 4 bytes of data. */
+ field += 3;
+ return ((unsigned long) (field[3]))
+ | (((unsigned long) (field[2])) << 8)
+ | (((unsigned long) (field[1])) << 16)
+ | (((unsigned long) (field[0])) << 24);
+ }
+
+ case 8:
+ if (sizeof (elf_vma) == 8)
+ return ((elf_vma) (field[7]))
+ | (((elf_vma) (field[6])) << 8)
+ | (((elf_vma) (field[5])) << 16)
+ | (((elf_vma) (field[4])) << 24)
+ | (((elf_vma) (field[3])) << 32)
+ | (((elf_vma) (field[2])) << 40)
+ | (((elf_vma) (field[1])) << 48)
+ | (((elf_vma) (field[0])) << 56);
+ else if (sizeof (elf_vma) == 4)
+ {
+ /* Although we are extracting data from an 8 byte wide field,
+ we are returning only 4 bytes of data. */
+ field += 4;
+ return ((unsigned long) (field[3]))
+ | (((unsigned long) (field[2])) << 8)
+ | (((unsigned long) (field[1])) << 16)
+ | (((unsigned long) (field[0])) << 24);
+ }
+
+ default:
+ error (_("Unhandled data length: %d\n"), size);
+ abort ();
+ }
+}
+
+elf_vma
+byte_get_signed (unsigned char *field, int size)
+{
+ elf_vma x = byte_get (field, size);
+
+ switch (size)
+ {
+ case 1:
+ return (x ^ 0x80) - 0x80;
+ case 2:
+ return (x ^ 0x8000) - 0x8000;
+ case 3:
+ return (x ^ 0x800000) - 0x800000;
+ case 4:
+ return (x ^ 0x80000000) - 0x80000000;
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ /* Reads of 5-, 6-, and 7-byte numbers are the result of
+ trying to read past the end of a buffer, and will therefore
+ not have meaningful values, so we don't try to deal with
+ the sign in these cases. */
+ return x;
+ default:
+ abort ();
+ }
+}
+
+/* Return the high-order 32-bits and the low-order 32-bits
+ of an 8-byte value separately. */
+
+void
+byte_get_64 (unsigned char *field, elf_vma *high, elf_vma *low)
+{
+ if (byte_get == byte_get_big_endian)
+ {
+ *high = byte_get_big_endian (field, 4);
+ *low = byte_get_big_endian (field + 4, 4);
+ }
+ else
+ {
+ *high = byte_get_little_endian (field + 4, 4);
+ *low = byte_get_little_endian (field, 4);
+ }
+ return;
+}
+
+/* Return the path name for a proxy entry in a thin archive, adjusted
+ relative to the path name of the thin archive itself if necessary.
+ Always returns a pointer to malloc'ed memory. */
+
+char *
+adjust_relative_path (const char *file_name, const char *name,
+ int name_len)
+{
+ char * member_file_name;
+ const char * base_name = lbasename (file_name);
+
+ /* This is a proxy entry for a thin archive member.
+ If the extended name table contains an absolute path
+ name, or if the archive is in the current directory,
+ use the path name as given. Otherwise, we need to
+ find the member relative to the directory where the
+ archive is located. */
+ if (IS_ABSOLUTE_PATH (name) || base_name == file_name)
+ {
+ member_file_name = (char *) malloc (name_len + 1);
+ if (member_file_name == NULL)
+ {
+ error (_("Out of memory\n"));
+ return NULL;
+ }
+ memcpy (member_file_name, name, name_len);
+ member_file_name[name_len] = '\0';
+ }
+ else
+ {
+ /* Concatenate the path components of the archive file name
+ to the relative path name from the extended name table. */
+ size_t prefix_len = base_name - file_name;
+ member_file_name = (char *) malloc (prefix_len + name_len + 1);
+ if (member_file_name == NULL)
+ {
+ error (_("Out of memory\n"));
+ return NULL;
+ }
+ memcpy (member_file_name, file_name, prefix_len);
+ memcpy (member_file_name + prefix_len, name, name_len);
+ member_file_name[prefix_len + name_len] = '\0';
+ }
+ return member_file_name;
+}
+
+/* Processes the archive index table and symbol table in ARCH.
+ Entries in the index table are SIZEOF_AR_INDEX bytes long.
+ Fills in ARCH->next_arhdr_offset and ARCH->arhdr.
+ If READ_SYMBOLS is true then fills in ARCH->index_num, ARCH->index_array,
+ ARCH->sym_size and ARCH->sym_table.
+ It is the caller's responsibility to free ARCH->index_array and
+ ARCH->sym_table.
+ Returns TRUE upon success, FALSE otherwise.
+ If failure occurs an error message is printed. */
+
+static bfd_boolean
+process_archive_index_and_symbols (struct archive_info * arch,
+ unsigned int sizeof_ar_index,
+ bfd_boolean read_symbols)
+{
+ size_t got;
+ unsigned long size;
+
+ size = strtoul (arch->arhdr.ar_size, NULL, 10);
+ size = size + (size & 1);
+
+ arch->next_arhdr_offset += sizeof arch->arhdr + size;
+
+ if (! read_symbols)
+ {
+ if (fseek (arch->file, size, SEEK_CUR) != 0)
+ {
+ error (_("%s: failed to skip archive symbol table\n"),
+ arch->file_name);
+ return FALSE;
+ }
+ }
+ else
+ {
+ unsigned long i;
+ /* A buffer used to hold numbers read in from an archive index.
+ These are always SIZEOF_AR_INDEX bytes long and stored in
+ big-endian format. */
+ unsigned char integer_buffer[sizeof arch->index_num];
+ unsigned char * index_buffer;
+
+ assert (sizeof_ar_index <= sizeof integer_buffer);
+
+ /* Check the size of the archive index. */
+ if (size < sizeof_ar_index)
+ {
+ error (_("%s: the archive index is empty\n"), arch->file_name);
+ return FALSE;
+ }
+
+ /* Read the number of entries in the archive index. */
+ got = fread (integer_buffer, 1, sizeof_ar_index, arch->file);
+ if (got != sizeof_ar_index)
+ {
+ error (_("%s: failed to read archive index\n"), arch->file_name);
+ return FALSE;
+ }
+
+ arch->index_num = byte_get_big_endian (integer_buffer, sizeof_ar_index);
+ size -= sizeof_ar_index;
+
+ if (size < arch->index_num * sizeof_ar_index)
+ {
+ error (_("%s: the archive index is supposed to have %ld entries of %d bytes, but the size is only %ld\n"),
+ arch->file_name, (long) arch->index_num, sizeof_ar_index, size);
+ return FALSE;
+ }
+
+ /* Read in the archive index. */
+ index_buffer = (unsigned char *)
+ malloc (arch->index_num * sizeof_ar_index);
+ if (index_buffer == NULL)
+ {
+ error (_("Out of memory whilst trying to read archive symbol index\n"));
+ return FALSE;
+ }
+
+ got = fread (index_buffer, sizeof_ar_index, arch->index_num, arch->file);
+ if (got != arch->index_num)
+ {
+ free (index_buffer);
+ error (_("%s: failed to read archive index\n"), arch->file_name);
+ return FALSE;
+ }
+
+ size -= arch->index_num * sizeof_ar_index;
+
+ /* Convert the index numbers into the host's numeric format. */
+ arch->index_array = (elf_vma *)
+ malloc (arch->index_num * sizeof (* arch->index_array));
+ if (arch->index_array == NULL)
+ {
+ free (index_buffer);
+ error (_("Out of memory whilst trying to convert the archive symbol index\n"));
+ return FALSE;
+ }
+
+ for (i = 0; i < arch->index_num; i++)
+ arch->index_array[i] =
+ byte_get_big_endian ((unsigned char *) (index_buffer + (i * sizeof_ar_index)),
+ sizeof_ar_index);
+ free (index_buffer);
+
+ /* The remaining space in the header is taken up by the symbol table. */
+ if (size < 1)
+ {
+ error (_("%s: the archive has an index but no symbols\n"),
+ arch->file_name);
+ return FALSE;
+ }
+
+ arch->sym_table = (char *) malloc (size);
+ if (arch->sym_table == NULL)
+ {
+ error (_("Out of memory whilst trying to read archive index symbol table\n"));
+ return FALSE;
+ }
+
+ arch->sym_size = size;
+ got = fread (arch->sym_table, 1, size, arch->file);
+ if (got != size)
+ {
+ error (_("%s: failed to read archive index symbol table\n"),
+ arch->file_name);
+ return FALSE;
+ }
+ }
+
+ /* Read the next archive header. */
+ got = fread (&arch->arhdr, 1, sizeof arch->arhdr, arch->file);
+ if (got != sizeof arch->arhdr && got != 0)
+ {
+ error (_("%s: failed to read archive header following archive index\n"),
+ arch->file_name);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Read the symbol table and long-name table from an archive. */
+
+int
+setup_archive (struct archive_info *arch, const char *file_name,
+ FILE *file, bfd_boolean is_thin_archive,
+ bfd_boolean read_symbols)
+{
+ size_t got;
+
+ arch->file_name = strdup (file_name);
+ arch->file = file;
+ arch->index_num = 0;
+ arch->index_array = NULL;
+ arch->sym_table = NULL;
+ arch->sym_size = 0;
+ arch->longnames = NULL;
+ arch->longnames_size = 0;
+ arch->nested_member_origin = 0;
+ arch->is_thin_archive = is_thin_archive;
+ arch->uses_64bit_indicies = FALSE;
+ arch->next_arhdr_offset = SARMAG;
+
+ /* Read the first archive member header. */
+ if (fseek (file, SARMAG, SEEK_SET) != 0)
+ {
+ error (_("%s: failed to seek to first archive header\n"), file_name);
+ return 1;
+ }
+ got = fread (&arch->arhdr, 1, sizeof arch->arhdr, file);
+ if (got != sizeof arch->arhdr)
+ {
+ if (got == 0)
+ return 0;
+
+ error (_("%s: failed to read archive header\n"), file_name);
+ return 1;
+ }
+
+ /* See if this is the archive symbol table. */
+ if (const_strneq (arch->arhdr.ar_name, "/ "))
+ {
+ if (! process_archive_index_and_symbols (arch, 4, read_symbols))
+ return 1;
+ }
+ else if (const_strneq (arch->arhdr.ar_name, "/SYM64/ "))
+ {
+ arch->uses_64bit_indicies = TRUE;
+ if (! process_archive_index_and_symbols (arch, 8, read_symbols))
+ return 1;
+ }
+ else if (read_symbols)
+ printf (_("%s has no archive index\n"), file_name);
+
+ if (const_strneq (arch->arhdr.ar_name, "// "))
+ {
+ /* This is the archive string table holding long member names. */
+ arch->longnames_size = strtoul (arch->arhdr.ar_size, NULL, 10);
+ arch->next_arhdr_offset += sizeof arch->arhdr + arch->longnames_size;
+
+ arch->longnames = (char *) malloc (arch->longnames_size);
+ if (arch->longnames == NULL)
+ {
+ error (_("Out of memory reading long symbol names in archive\n"));
+ return 1;
+ }
+
+ if (fread (arch->longnames, arch->longnames_size, 1, file) != 1)
+ {
+ free (arch->longnames);
+ arch->longnames = NULL;
+ error (_("%s: failed to read long symbol name string table\n"),
+ file_name);
+ return 1;
+ }
+
+ if ((arch->longnames_size & 1) != 0)
+ getc (file);
+ }
+
+ return 0;
+}
+
+/* Open and setup a nested archive, if not already open. */
+
+int
+setup_nested_archive (struct archive_info *nested_arch,
+ const char *member_file_name)
+{
+ FILE * member_file;
+
+ /* Have we already setup this archive? */
+ if (nested_arch->file_name != NULL
+ && streq (nested_arch->file_name, member_file_name))
+ return 0;
+
+ /* Close previous file and discard cached information. */
+ if (nested_arch->file != NULL)
+ fclose (nested_arch->file);
+ release_archive (nested_arch);
+
+ member_file = fopen (member_file_name, "rb");
+ if (member_file == NULL)
+ return 1;
+ return setup_archive (nested_arch, member_file_name, member_file,
+ FALSE, FALSE);
+}
+
+/* Release the memory used for the archive information. */
+
+void
+release_archive (struct archive_info * arch)
+{
+ if (arch->file_name != NULL)
+ free (arch->file_name);
+ if (arch->index_array != NULL)
+ free (arch->index_array);
+ if (arch->sym_table != NULL)
+ free (arch->sym_table);
+ if (arch->longnames != NULL)
+ free (arch->longnames);
+}
+
+/* Get the name of an archive member from the current archive header.
+ For simple names, this will modify the ar_name field of the current
+ archive header. For long names, it will return a pointer to the
+ longnames table. For nested archives, it will open the nested archive
+ and get the name recursively. NESTED_ARCH is a single-entry cache so
+ we don't keep rereading the same information from a nested archive. */
+
+char *
+get_archive_member_name (struct archive_info *arch,
+ struct archive_info *nested_arch)
+{
+ unsigned long j, k;
+
+ if (arch->arhdr.ar_name[0] == '/')
+ {
+ /* We have a long name. */
+ char *endp;
+ char *member_file_name;
+ char *member_name;
+
+ if (arch->longnames == NULL || arch->longnames_size == 0)
+ {
+ error (_("Archive member uses long names, but no longname table found\n"));
+ return NULL;
+ }
+
+ arch->nested_member_origin = 0;
+ k = j = strtoul (arch->arhdr.ar_name + 1, &endp, 10);
+ if (arch->is_thin_archive && endp != NULL && * endp == ':')
+ arch->nested_member_origin = strtoul (endp + 1, NULL, 10);
+
+ while ((j < arch->longnames_size)
+ && (arch->longnames[j] != '\n')
+ && (arch->longnames[j] != '\0'))
+ j++;
+ if (arch->longnames[j-1] == '/')
+ j--;
+ arch->longnames[j] = '\0';
+
+ if (!arch->is_thin_archive || arch->nested_member_origin == 0)
+ return arch->longnames + k;
+
+ /* This is a proxy for a member of a nested archive.
+ Find the name of the member in that archive. */
+ member_file_name = adjust_relative_path (arch->file_name,
+ arch->longnames + k, j - k);
+ if (member_file_name != NULL
+ && setup_nested_archive (nested_arch, member_file_name) == 0)
+ {
+ member_name = get_archive_member_name_at (nested_arch,
+ arch->nested_member_origin,
+ NULL);
+ if (member_name != NULL)
+ {
+ free (member_file_name);
+ return member_name;
+ }
+ }
+ free (member_file_name);
+
+ /* Last resort: just return the name of the nested archive. */
+ return arch->longnames + k;
+ }
+
+ /* We have a normal (short) name. */
+ for (j = 0; j < sizeof (arch->arhdr.ar_name); j++)
+ if (arch->arhdr.ar_name[j] == '/')
+ {
+ arch->arhdr.ar_name[j] = '\0';
+ return arch->arhdr.ar_name;
+ }
+
+ /* The full ar_name field is used. Don't rely on ar_date starting
+ with a zero byte. */
+ {
+ char *name = xmalloc (sizeof (arch->arhdr.ar_name) + 1);
+ memcpy (name, arch->arhdr.ar_name, sizeof (arch->arhdr.ar_name));
+ name[sizeof (arch->arhdr.ar_name)] = '\0';
+ return name;
+ }
+}
+
+/* Get the name of an archive member at a given OFFSET within an archive
+ ARCH. */
+
+char *
+get_archive_member_name_at (struct archive_info *arch,
+ unsigned long offset,
+ struct archive_info *nested_arch)
+{
+ size_t got;
+
+ if (fseek (arch->file, offset, SEEK_SET) != 0)
+ {
+ error (_("%s: failed to seek to next file name\n"), arch->file_name);
+ return NULL;
+ }
+ got = fread (&arch->arhdr, 1, sizeof arch->arhdr, arch->file);
+ if (got != sizeof arch->arhdr)
+ {
+ error (_("%s: failed to read archive header\n"), arch->file_name);
+ return NULL;
+ }
+ if (memcmp (arch->arhdr.ar_fmag, ARFMAG, 2) != 0)
+ {
+ error (_("%s: did not find a valid archive header\n"),
+ arch->file_name);
+ return NULL;
+ }
+
+ return get_archive_member_name (arch, nested_arch);
+}
+
+/* Construct a string showing the name of the archive member, qualified
+ with the name of the containing archive file. For thin archives, we
+ use square brackets to denote the indirection. For nested archives,
+ we show the qualified name of the external member inside the square
+ brackets (e.g., "thin.a[normal.a(foo.o)]"). */
+
+char *
+make_qualified_name (struct archive_info * arch,
+ struct archive_info * nested_arch,
+ const char *member_name)
+{
+ const char * error_name = _("<corrupt>");
+ size_t len;
+ char * name;
+
+ len = strlen (arch->file_name) + strlen (member_name) + 3;
+ if (arch->is_thin_archive
+ && arch->nested_member_origin != 0)
+ {
+ /* PR 15140: Allow for corrupt thin archives. */
+ if (nested_arch->file_name)
+ len += strlen (nested_arch->file_name) + 2;
+ else
+ len += strlen (error_name) + 2;
+ }
+
+ name = (char *) malloc (len);
+ if (name == NULL)
+ {
+ error (_("Out of memory\n"));
+ return NULL;
+ }
+
+ if (arch->is_thin_archive
+ && arch->nested_member_origin != 0)
+ {
+ if (nested_arch->file_name)
+ snprintf (name, len, "%s[%s(%s)]", arch->file_name,
+ nested_arch->file_name, member_name);
+ else
+ snprintf (name, len, "%s[%s(%s)]", arch->file_name,
+ error_name, member_name);
+ }
+ else if (arch->is_thin_archive)
+ snprintf (name, len, "%s[%s]", arch->file_name, member_name);
+ else
+ snprintf (name, len, "%s(%s)", arch->file_name, member_name);
+
+ return name;
+}
diff --git a/binutils-2.24/binutils/elfcomm.h b/binutils-2.24/binutils/elfcomm.h
new file mode 100644
index 00000000..a8c3aa30
--- /dev/null
+++ b/binutils-2.24/binutils/elfcomm.h
@@ -0,0 +1,112 @@
+/* elfcomm.h -- include file of common code for ELF format file.
+ Copyright 2010
+ Free Software Foundation, Inc.
+
+ Originally developed by Eric Youngdale <eric@andante.jic.com>
+ Modifications by Nick Clifton <nickc@redhat.com>
+
+ 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 3 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. */
+
+#ifndef _ELFCOMM_H
+#define _ELFCOMM_H
+
+#include "aout/ar.h"
+
+void error (const char *, ...) ATTRIBUTE_PRINTF_1;
+void warn (const char *, ...) ATTRIBUTE_PRINTF_1;
+
+#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
+/* We can't use any bfd types here since readelf may define BFD64 and
+ objdump may not. */
+#define HOST_WIDEST_INT long long
+#else
+#define HOST_WIDEST_INT long
+#endif
+typedef unsigned HOST_WIDEST_INT elf_vma;
+
+extern void (*byte_put) (unsigned char *, elf_vma, int);
+extern void byte_put_little_endian (unsigned char *, elf_vma, int);
+extern void byte_put_big_endian (unsigned char *, elf_vma, int);
+
+extern elf_vma (*byte_get) (unsigned char *, int);
+extern elf_vma byte_get_signed (unsigned char *, int);
+extern elf_vma byte_get_little_endian (unsigned char *, int);
+extern elf_vma byte_get_big_endian (unsigned char *, int);
+extern void byte_get_64 (unsigned char *, elf_vma *, elf_vma *);
+
+#define BYTE_PUT(field, val) byte_put (field, val, sizeof (field))
+#define BYTE_GET(field) byte_get (field, sizeof (field))
+#define BYTE_GET_SIGNED(field) byte_get_signed (field, sizeof (field))
+
+/* This is just a bit of syntatic sugar. */
+#define streq(a,b) (strcmp ((a), (b)) == 0)
+#define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
+#define const_strneq(a,b) (strncmp ((a), (b), sizeof (b) - 1) == 0)
+
+/* Structure to hold information about an archive file. */
+
+struct archive_info
+{
+ char * file_name; /* Archive file name. */
+ FILE * file; /* Open file descriptor. */
+ elf_vma index_num; /* Number of symbols in table. */
+ elf_vma * index_array; /* The array of member offsets. */
+ char * sym_table; /* The symbol table. */
+ unsigned long sym_size; /* Size of the symbol table. */
+ char * longnames; /* The long file names table. */
+ unsigned long longnames_size; /* Size of the long file names table. */
+ unsigned long nested_member_origin; /* Origin in the nested archive of the current member. */
+ unsigned long next_arhdr_offset; /* Offset of the next archive header. */
+ bfd_boolean is_thin_archive; /* TRUE if this is a thin archive. */
+ bfd_boolean uses_64bit_indicies; /* TRUE if the index table uses 64bit entries. */
+ struct ar_hdr arhdr; /* Current archive header. */
+};
+
+/* Return the path name for a proxy entry in a thin archive. */
+extern char *adjust_relative_path (const char *, const char *, int);
+
+/* Read the symbol table and long-name table from an archive. */
+extern int setup_archive (struct archive_info *, const char *, FILE *,
+ bfd_boolean, bfd_boolean);
+
+/* Open and setup a nested archive, if not already open. */
+extern int setup_nested_archive (struct archive_info *, const char *);
+
+/* Release the memory used for the archive information. */
+extern void release_archive (struct archive_info *);
+
+/* Get the name of an archive member from the current archive header. */
+
+extern char *get_archive_member_name (struct archive_info *,
+ struct archive_info *);
+
+/* Get the name of an archive member at a given offset within an
+ archive. */
+
+extern char *get_archive_member_name_at (struct archive_info *,
+ unsigned long,
+ struct archive_info *);
+
+/* Construct a string showing the name of the archive member, qualified
+ with the name of the containing archive file. */
+
+extern char *make_qualified_name (struct archive_info *,
+ struct archive_info *,
+ const char *);
+
+#endif /* _ELFCOMM_H */
diff --git a/binutils-2.24/binutils/elfedit.c b/binutils-2.24/binutils/elfedit.c
new file mode 100644
index 00000000..d9e23a12
--- /dev/null
+++ b/binutils-2.24/binutils/elfedit.c
@@ -0,0 +1,738 @@
+/* elfedit.c -- Update the ELF header of an ELF format file
+ Copyright 2010, 2011, 2012
+ 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 3 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 "sysdep.h"
+#include <assert.h>
+
+#if __GNUC__ >= 2
+/* Define BFD64 here, even if our default architecture is 32 bit ELF
+ as this will allow us to read in and parse 64bit and 32bit ELF files.
+ Only do this if we believe that the compiler can support a 64 bit
+ data type. For now we only rely on GCC being able to do this. */
+#define BFD64
+#endif
+
+#include "bfd.h"
+#include "elfcomm.h"
+#include "bucomm.h"
+
+#include "elf/common.h"
+#include "elf/external.h"
+#include "elf/internal.h"
+
+#include "getopt.h"
+#include "libiberty.h"
+#include "safe-ctype.h"
+#include "filenames.h"
+
+char * program_name = "elfedit";
+static long archive_file_offset;
+static unsigned long archive_file_size;
+static Elf_Internal_Ehdr elf_header;
+static Elf32_External_Ehdr ehdr32;
+static Elf64_External_Ehdr ehdr64;
+static int input_elf_machine = -1;
+static int output_elf_machine = -1;
+static int input_elf_type = -1;
+static int output_elf_type = -1;
+static int input_elf_osabi = -1;
+static int output_elf_osabi = -1;
+static int input_elf_class = -1;
+
+static int
+update_elf_header (const char *file_name, FILE *file)
+{
+ int class, machine, type, status, osabi;
+
+ if (elf_header.e_ident[EI_MAG0] != ELFMAG0
+ || elf_header.e_ident[EI_MAG1] != ELFMAG1
+ || elf_header.e_ident[EI_MAG2] != ELFMAG2
+ || elf_header.e_ident[EI_MAG3] != ELFMAG3)
+ {
+ error
+ (_("%s: Not an ELF file - wrong magic bytes at the start\n"),
+ file_name);
+ return 0;
+ }
+
+ if (elf_header.e_ident[EI_VERSION] != EV_CURRENT)
+ {
+ error
+ (_("%s: Unsupported EI_VERSION: %d is not %d\n"),
+ file_name, elf_header.e_ident[EI_VERSION],
+ EV_CURRENT);
+ return 0;
+ }
+
+ /* Return if e_machine is the same as output_elf_machine. */
+ if (output_elf_machine == elf_header.e_machine)
+ return 1;
+
+ class = elf_header.e_ident[EI_CLASS];
+
+ /* Skip if class doesn't match. */
+ if (input_elf_class != -1 && class != input_elf_class)
+ {
+ error
+ (_("%s: Unmatched EI_CLASS: %d is not %d\n"),
+ file_name, class, input_elf_class);
+ return 0;
+ }
+
+ machine = elf_header.e_machine;
+
+ /* Skip if e_machine doesn't match. */
+ if (input_elf_machine != -1 && machine != input_elf_machine)
+ {
+ error
+ (_("%s: Unmatched e_machine: %d is not %d\n"),
+ file_name, machine, input_elf_machine);
+ return 0;
+ }
+
+ type = elf_header.e_type;
+
+ /* Skip if e_type doesn't match. */
+ if (input_elf_type != -1 && type != input_elf_type)
+ {
+ error
+ (_("%s: Unmatched e_type: %d is not %d\n"),
+ file_name, type, input_elf_type);
+ return 0;
+ }
+
+ osabi = elf_header.e_ident[EI_OSABI];
+
+ /* Skip if OSABI doesn't match. */
+ if (input_elf_osabi != -1 && osabi != input_elf_osabi)
+ {
+ error
+ (_("%s: Unmatched EI_OSABI: %d is not %d\n"),
+ file_name, osabi, input_elf_osabi);
+ return 0;
+ }
+
+ /* Update e_machine, e_type and EI_OSABI. */
+ switch (class)
+ {
+ default:
+ /* We should never get here. */
+ abort ();
+ break;
+ case ELFCLASS32:
+ if (output_elf_machine != -1)
+ BYTE_PUT (ehdr32.e_machine, output_elf_machine);
+ if (output_elf_type != -1)
+ BYTE_PUT (ehdr32.e_type, output_elf_type);
+ if (output_elf_osabi != -1)
+ ehdr32.e_ident[EI_OSABI] = output_elf_osabi;
+ status = fwrite (&ehdr32, sizeof (ehdr32), 1, file) == 1;
+ break;
+ case ELFCLASS64:
+ if (output_elf_machine != -1)
+ BYTE_PUT (ehdr64.e_machine, output_elf_machine);
+ if (output_elf_type != -1)
+ BYTE_PUT (ehdr64.e_type, output_elf_type);
+ if (output_elf_osabi != -1)
+ ehdr64.e_ident[EI_OSABI] = output_elf_osabi;
+ status = fwrite (&ehdr64, sizeof (ehdr64), 1, file) == 1;
+ break;
+ }
+
+ if (status != 1)
+ error (_("%s: Failed to update ELF header: %s\n"),
+ file_name, strerror (errno));
+
+ return status;
+}
+
+static int
+get_file_header (FILE * file)
+{
+ /* Read in the identity array. */
+ if (fread (elf_header.e_ident, EI_NIDENT, 1, file) != 1)
+ return 0;
+
+ /* Determine how to read the rest of the header. */
+ switch (elf_header.e_ident[EI_DATA])
+ {
+ default: /* fall through */
+ case ELFDATANONE: /* fall through */
+ case ELFDATA2LSB:
+ byte_get = byte_get_little_endian;
+ byte_put = byte_put_little_endian;
+ break;
+ case ELFDATA2MSB:
+ byte_get = byte_get_big_endian;
+ byte_put = byte_put_big_endian;
+ break;
+ }
+
+ /* Read in the rest of the header. For now we only support 32 bit
+ and 64 bit ELF files. */
+ switch (elf_header.e_ident[EI_CLASS])
+ {
+ default:
+ error (_("Unsupported EI_CLASS: %d\n"),
+ elf_header.e_ident[EI_CLASS]);
+ return 0;
+
+ case ELFCLASS32:
+ if (fread (ehdr32.e_type, sizeof (ehdr32) - EI_NIDENT,
+ 1, file) != 1)
+ return 0;
+
+ elf_header.e_type = BYTE_GET (ehdr32.e_type);
+ elf_header.e_machine = BYTE_GET (ehdr32.e_machine);
+ elf_header.e_version = BYTE_GET (ehdr32.e_version);
+ elf_header.e_entry = BYTE_GET (ehdr32.e_entry);
+ elf_header.e_phoff = BYTE_GET (ehdr32.e_phoff);
+ elf_header.e_shoff = BYTE_GET (ehdr32.e_shoff);
+ elf_header.e_flags = BYTE_GET (ehdr32.e_flags);
+ elf_header.e_ehsize = BYTE_GET (ehdr32.e_ehsize);
+ elf_header.e_phentsize = BYTE_GET (ehdr32.e_phentsize);
+ elf_header.e_phnum = BYTE_GET (ehdr32.e_phnum);
+ elf_header.e_shentsize = BYTE_GET (ehdr32.e_shentsize);
+ elf_header.e_shnum = BYTE_GET (ehdr32.e_shnum);
+ elf_header.e_shstrndx = BYTE_GET (ehdr32.e_shstrndx);
+
+ memcpy (&ehdr32, &elf_header, EI_NIDENT);
+ break;
+
+ case ELFCLASS64:
+ /* If we have been compiled with sizeof (bfd_vma) == 4, then
+ we will not be able to cope with the 64bit data found in
+ 64 ELF files. Detect this now and abort before we start
+ overwriting things. */
+ if (sizeof (bfd_vma) < 8)
+ {
+ error (_("This executable has been built without support for a\n\
+64 bit data type and so it cannot process 64 bit ELF files.\n"));
+ return 0;
+ }
+
+ if (fread (ehdr64.e_type, sizeof (ehdr64) - EI_NIDENT,
+ 1, file) != 1)
+ return 0;
+
+ elf_header.e_type = BYTE_GET (ehdr64.e_type);
+ elf_header.e_machine = BYTE_GET (ehdr64.e_machine);
+ elf_header.e_version = BYTE_GET (ehdr64.e_version);
+ elf_header.e_entry = BYTE_GET (ehdr64.e_entry);
+ elf_header.e_phoff = BYTE_GET (ehdr64.e_phoff);
+ elf_header.e_shoff = BYTE_GET (ehdr64.e_shoff);
+ elf_header.e_flags = BYTE_GET (ehdr64.e_flags);
+ elf_header.e_ehsize = BYTE_GET (ehdr64.e_ehsize);
+ elf_header.e_phentsize = BYTE_GET (ehdr64.e_phentsize);
+ elf_header.e_phnum = BYTE_GET (ehdr64.e_phnum);
+ elf_header.e_shentsize = BYTE_GET (ehdr64.e_shentsize);
+ elf_header.e_shnum = BYTE_GET (ehdr64.e_shnum);
+ elf_header.e_shstrndx = BYTE_GET (ehdr64.e_shstrndx);
+
+ memcpy (&ehdr64, &elf_header, EI_NIDENT);
+ break;
+ }
+ return 1;
+}
+
+/* Process one ELF object file according to the command line options.
+ This file may actually be stored in an archive. The file is
+ positioned at the start of the ELF object. */
+
+static int
+process_object (const char *file_name, FILE *file)
+{
+ /* Rememeber where we are. */
+ long offset = ftell (file);
+
+ if (! get_file_header (file))
+ {
+ error (_("%s: Failed to read ELF header\n"), file_name);
+ return 1;
+ }
+
+ /* Go to the position of the ELF header. */
+ if (fseek (file, offset, SEEK_SET) != 0)
+ {
+ error (_("%s: Failed to seek to ELF header\n"), file_name);
+ }
+
+ if (! update_elf_header (file_name, file))
+ return 1;
+
+ return 0;
+}
+
+/* Process an ELF archive.
+ On entry the file is positioned just after the ARMAG string. */
+
+static int
+process_archive (const char * file_name, FILE * file,
+ bfd_boolean is_thin_archive)
+{
+ struct archive_info arch;
+ struct archive_info nested_arch;
+ size_t got;
+ int ret;
+
+ /* The ARCH structure is used to hold information about this archive. */
+ arch.file_name = NULL;
+ arch.file = NULL;
+ arch.index_array = NULL;
+ arch.sym_table = NULL;
+ arch.longnames = NULL;
+
+ /* The NESTED_ARCH structure is used as a single-item cache of information
+ about a nested archive (when members of a thin archive reside within
+ another regular archive file). */
+ nested_arch.file_name = NULL;
+ nested_arch.file = NULL;
+ nested_arch.index_array = NULL;
+ nested_arch.sym_table = NULL;
+ nested_arch.longnames = NULL;
+
+ if (setup_archive (&arch, file_name, file, is_thin_archive, FALSE) != 0)
+ {
+ ret = 1;
+ goto out;
+ }
+
+ ret = 0;
+
+ while (1)
+ {
+ char * name;
+ size_t namelen;
+ char * qualified_name;
+
+ /* Read the next archive header. */
+ if (fseek (file, arch.next_arhdr_offset, SEEK_SET) != 0)
+ {
+ error (_("%s: failed to seek to next archive header\n"),
+ file_name);
+ return 1;
+ }
+ got = fread (&arch.arhdr, 1, sizeof arch.arhdr, file);
+ if (got != sizeof arch.arhdr)
+ {
+ if (got == 0)
+ break;
+ error (_("%s: failed to read archive header\n"),
+ file_name);
+ ret = 1;
+ break;
+ }
+ if (memcmp (arch.arhdr.ar_fmag, ARFMAG, 2) != 0)
+ {
+ error (_("%s: did not find a valid archive header\n"),
+ arch.file_name);
+ ret = 1;
+ break;
+ }
+
+ arch.next_arhdr_offset += sizeof arch.arhdr;
+
+ archive_file_size = strtoul (arch.arhdr.ar_size, NULL, 10);
+ if (archive_file_size & 01)
+ ++archive_file_size;
+
+ name = get_archive_member_name (&arch, &nested_arch);
+ if (name == NULL)
+ {
+ error (_("%s: bad archive file name\n"), file_name);
+ ret = 1;
+ break;
+ }
+ namelen = strlen (name);
+
+ qualified_name = make_qualified_name (&arch, &nested_arch, name);
+ if (qualified_name == NULL)
+ {
+ error (_("%s: bad archive file name\n"), file_name);
+ ret = 1;
+ break;
+ }
+
+ if (is_thin_archive && arch.nested_member_origin == 0)
+ {
+ /* This is a proxy for an external member of a thin archive. */
+ FILE *member_file;
+ char *member_file_name = adjust_relative_path (file_name,
+ name, namelen);
+ if (member_file_name == NULL)
+ {
+ ret = 1;
+ break;
+ }
+
+ member_file = fopen (member_file_name, "r+b");
+ if (member_file == NULL)
+ {
+ error (_("Input file '%s' is not readable\n"),
+ member_file_name);
+ free (member_file_name);
+ ret = 1;
+ break;
+ }
+
+ archive_file_offset = arch.nested_member_origin;
+
+ ret |= process_object (qualified_name, member_file);
+
+ fclose (member_file);
+ free (member_file_name);
+ }
+ else if (is_thin_archive)
+ {
+ /* This is a proxy for a member of a nested archive. */
+ archive_file_offset = arch.nested_member_origin + sizeof arch.arhdr;
+
+ /* The nested archive file will have been opened and setup by
+ get_archive_member_name. */
+ if (fseek (nested_arch.file, archive_file_offset,
+ SEEK_SET) != 0)
+ {
+ error (_("%s: failed to seek to archive member\n"),
+ nested_arch.file_name);
+ ret = 1;
+ break;
+ }
+
+ ret |= process_object (qualified_name, nested_arch.file);
+ }
+ else
+ {
+ archive_file_offset = arch.next_arhdr_offset;
+ arch.next_arhdr_offset += archive_file_size;
+
+ ret |= process_object (qualified_name, file);
+ }
+
+ free (qualified_name);
+ }
+
+ out:
+ if (nested_arch.file != NULL)
+ fclose (nested_arch.file);
+ release_archive (&nested_arch);
+ release_archive (&arch);
+
+ return ret;
+}
+
+static int
+check_file (const char *file_name, struct stat *statbuf_p)
+{
+ struct stat statbuf;
+
+ if (statbuf_p == NULL)
+ statbuf_p = &statbuf;
+
+ if (stat (file_name, statbuf_p) < 0)
+ {
+ if (errno == ENOENT)
+ error (_("'%s': No such file\n"), file_name);
+ else
+ error (_("Could not locate '%s'. System error message: %s\n"),
+ file_name, strerror (errno));
+ return 1;
+ }
+
+ if (! S_ISREG (statbuf_p->st_mode))
+ {
+ error (_("'%s' is not an ordinary file\n"), file_name);
+ return 1;
+ }
+
+ return 0;
+}
+
+static int
+process_file (const char *file_name)
+{
+ FILE * file;
+ char armag[SARMAG];
+ int ret;
+
+ if (check_file (file_name, NULL))
+ return 1;
+
+ file = fopen (file_name, "r+b");
+ if (file == NULL)
+ {
+ error (_("Input file '%s' is not readable\n"), file_name);
+ return 1;
+ }
+
+ if (fread (armag, SARMAG, 1, file) != 1)
+ {
+ error (_("%s: Failed to read file's magic number\n"),
+ file_name);
+ fclose (file);
+ return 1;
+ }
+
+ if (memcmp (armag, ARMAG, SARMAG) == 0)
+ ret = process_archive (file_name, file, FALSE);
+ else if (memcmp (armag, ARMAGT, SARMAG) == 0)
+ ret = process_archive (file_name, file, TRUE);
+ else
+ {
+ rewind (file);
+ archive_file_size = archive_file_offset = 0;
+ ret = process_object (file_name, file);
+ }
+
+ fclose (file);
+
+ return ret;
+}
+
+static const struct
+{
+ int osabi;
+ const char *name;
+}
+osabis[] =
+{
+ { ELFOSABI_NONE, "none" },
+ { ELFOSABI_HPUX, "HPUX" },
+ { ELFOSABI_NETBSD, "NetBSD" },
+ { ELFOSABI_GNU, "GNU" },
+ { ELFOSABI_GNU, "Linux" },
+ { ELFOSABI_SOLARIS, "Solaris" },
+ { ELFOSABI_AIX, "AIX" },
+ { ELFOSABI_IRIX, "Irix" },
+ { ELFOSABI_FREEBSD, "FreeBSD" },
+ { ELFOSABI_TRU64, "TRU64" },
+ { ELFOSABI_MODESTO, "Modesto" },
+ { ELFOSABI_OPENBSD, "OpenBSD" },
+ { ELFOSABI_OPENVMS, "OpenVMS" },
+ { ELFOSABI_NSK, "NSK" },
+ { ELFOSABI_AROS, "AROS" },
+ { ELFOSABI_FENIXOS, "FenixOS" }
+};
+
+/* Return ELFOSABI_XXX for an OSABI string, OSABI. */
+
+static int
+elf_osabi (const char *osabi)
+{
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE (osabis); i++)
+ if (strcasecmp (osabi, osabis[i].name) == 0)
+ return osabis[i].osabi;
+
+ error (_("Unknown OSABI: %s\n"), osabi);
+
+ return -1;
+}
+
+/* Return EM_XXX for a machine string, MACH. */
+
+static int
+elf_machine (const char *mach)
+{
+ if (strcasecmp (mach, "l1om") == 0)
+ return EM_L1OM;
+ if (strcasecmp (mach, "k1om") == 0)
+ return EM_K1OM;
+ if (strcasecmp (mach, "x86_64") == 0)
+ return EM_X86_64;
+ if (strcasecmp (mach, "x86-64") == 0)
+ return EM_X86_64;
+ if (strcasecmp (mach, "none") == 0)
+ return EM_NONE;
+
+ error (_("Unknown machine type: %s\n"), mach);
+
+ return -1;
+}
+
+/* Return ELF class for a machine type, MACH. */
+
+static int
+elf_class (int mach)
+{
+ switch (mach)
+ {
+ case EM_L1OM:
+ case EM_K1OM:
+ case EM_X86_64:
+ return ELFCLASS64;
+ case EM_NONE:
+ return ELFCLASSNONE;
+ default:
+ error (_("Unknown machine type: %d\n"), mach);
+ return -1;
+ }
+}
+
+/* Return ET_XXX for a type string, TYPE. */
+
+static int
+elf_type (const char *type)
+{
+ if (strcasecmp (type, "rel") == 0)
+ return ET_REL;
+ if (strcasecmp (type, "exec") == 0)
+ return ET_EXEC;
+ if (strcasecmp (type, "dyn") == 0)
+ return ET_DYN;
+ if (strcasecmp (type, "none") == 0)
+ return ET_NONE;
+
+ error (_("Unknown type: %s\n"), type);
+
+ return -1;
+}
+
+enum command_line_switch
+ {
+ OPTION_INPUT_MACH = 150,
+ OPTION_OUTPUT_MACH,
+ OPTION_INPUT_TYPE,
+ OPTION_OUTPUT_TYPE,
+ OPTION_INPUT_OSABI,
+ OPTION_OUTPUT_OSABI
+ };
+
+static struct option options[] =
+{
+ {"input-mach", required_argument, 0, OPTION_INPUT_MACH},
+ {"output-mach", required_argument, 0, OPTION_OUTPUT_MACH},
+ {"input-type", required_argument, 0, OPTION_INPUT_TYPE},
+ {"output-type", required_argument, 0, OPTION_OUTPUT_TYPE},
+ {"input-osabi", required_argument, 0, OPTION_INPUT_OSABI},
+ {"output-osabi", required_argument, 0, OPTION_OUTPUT_OSABI},
+ {"version", no_argument, 0, 'v'},
+ {"help", no_argument, 0, 'h'},
+ {0, no_argument, 0, 0}
+};
+
+static void
+usage (FILE *stream, int exit_status)
+{
+ fprintf (stream, _("Usage: %s <option(s)> elffile(s)\n"),
+ program_name);
+ fprintf (stream, _(" Update the ELF header of ELF files\n"));
+ fprintf (stream, _(" The options are:\n"));
+ fprintf (stream, _("\
+ --input-mach <machine> Set input machine type to <machine>\n\
+ --output-mach <machine> Set output machine type to <machine>\n\
+ --input-type <type> Set input file type to <type>\n\
+ --output-type <type> Set output file type to <type>\n\
+ --input-osabi <osabi> Set input OSABI to <osabi>\n\
+ --output-osabi <osabi> Set output OSABI to <osabi>\n\
+ -h --help Display this information\n\
+ -v --version Display the version number of %s\n\
+"),
+ program_name);
+ if (REPORT_BUGS_TO[0] && exit_status == 0)
+ fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+ exit (exit_status);
+}
+
+int
+main (int argc, char ** argv)
+{
+ int c, status;
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ expandargv (&argc, &argv);
+
+ while ((c = getopt_long (argc, argv, "hv",
+ options, (int *) 0)) != EOF)
+ {
+ switch (c)
+ {
+ case OPTION_INPUT_MACH:
+ input_elf_machine = elf_machine (optarg);
+ if (input_elf_machine < 0)
+ return 1;
+ input_elf_class = elf_class (input_elf_machine);
+ if (input_elf_class < 0)
+ return 1;
+ break;
+
+ case OPTION_OUTPUT_MACH:
+ output_elf_machine = elf_machine (optarg);
+ if (output_elf_machine < 0)
+ return 1;
+ break;
+
+ case OPTION_INPUT_TYPE:
+ input_elf_type = elf_type (optarg);
+ if (input_elf_type < 0)
+ return 1;
+ break;
+
+ case OPTION_OUTPUT_TYPE:
+ output_elf_type = elf_type (optarg);
+ if (output_elf_type < 0)
+ return 1;
+ break;
+
+ case OPTION_INPUT_OSABI:
+ input_elf_osabi = elf_osabi (optarg);
+ if (input_elf_osabi < 0)
+ return 1;
+ break;
+
+ case OPTION_OUTPUT_OSABI:
+ output_elf_osabi = elf_osabi (optarg);
+ if (output_elf_osabi < 0)
+ return 1;
+ break;
+
+ case 'h':
+ usage (stdout, 0);
+
+ case 'v':
+ print_version (program_name);
+ break;
+
+ default:
+ usage (stderr, 1);
+ }
+ }
+
+ if (optind == argc
+ || (output_elf_machine == -1
+ && output_elf_type == -1
+ && output_elf_osabi == -1))
+ usage (stderr, 1);
+
+ status = 0;
+ while (optind < argc)
+ status |= process_file (argv[optind++]);
+
+ return status;
+}
diff --git a/binutils-2.24/binutils/embedspu.sh b/binutils-2.24/binutils/embedspu.sh
new file mode 100644
index 00000000..8b19e766
--- /dev/null
+++ b/binutils-2.24/binutils/embedspu.sh
@@ -0,0 +1,260 @@
+#! /bin/sh
+# Embed an SPU ELF executable into a PowerPC object file.
+#
+# Copyright 2006, 2007, 2008 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 3 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.
+
+usage ()
+{
+ echo "Usage: embedspu [flags] symbol_name input_filename output_filename"
+ echo
+ echo " input_filename: SPU ELF executable to be embedded"
+ echo " output_filename: Resulting PowerPC object file"
+ echo " symbol_name: Name of program handle struct to be defined"
+ echo " flags: GCC flags defining PowerPC object file format"
+ echo " (e.g. -m32 or -m64)"
+ exit 1
+}
+
+program_transform_name=
+mydir=`dirname "$0"`
+
+find_prog ()
+{
+ prog=`echo $1 | sed "$program_transform_name"`
+ prog="$mydir/$prog"
+ test -x "$prog" && return 0
+ prog="$mydir/$1"
+ test -x "$prog" && return 0
+ prog=`echo $1 | sed "$program_transform_name"`
+ which $prog > /dev/null 2> /dev/null && return 0
+ return 1
+}
+
+SYMBOL=
+INFILE=
+OUTFILE=
+FLAGS=
+
+parse_args ()
+{
+ while test -n "$1"; do
+ case "$1" in
+ -*) FLAGS="${FLAGS} $1" ;;
+ *) if test -z "$SYMBOL"; then
+ SYMBOL="$1"
+ elif test -z "$INFILE"; then
+ INFILE="$1"
+ elif test -z "$OUTFILE"; then
+ OUTFILE="$1"
+ else
+ echo "Too many arguments!"
+ usage
+ fi ;;
+ esac
+ shift
+ done
+ if test -z "$OUTFILE"; then
+ usage
+ fi
+ if test ! -r "$INFILE"; then
+ echo "${INFILE}: File not found"
+ usage
+ fi
+}
+
+main ()
+{
+ parse_args "$@"
+
+ # Find a powerpc gcc. Support running from a combined tree build.
+ if test -x "$mydir/../gcc/xgcc"; then
+ CC="$mydir/../gcc/xgcc -B$mydir/../gcc/"
+ else
+ find_prog gcc
+ if test $? -ne 0; then
+ echo "Cannot find $prog"
+ exit 1
+ fi
+ CC="$prog"
+ fi
+
+ # Find readelf. Any old readelf should do.
+ find_prog readelf
+ if test $? -ne 0; then
+ if which readelf > /dev/null 2> /dev/null; then
+ prog=readelf
+ else
+ echo "Cannot find $prog"
+ exit 1
+ fi
+ fi
+ READELF="$prog"
+
+ # Sanity check the input file
+ if ! ${READELF} -h ${INFILE} | grep 'Class:.*ELF32' >/dev/null 2>/dev/null \
+ || ! ${READELF} -h ${INFILE} | grep 'Type:.*EXEC' >/dev/null 2>/dev/null \
+ || ! ${READELF} -h ${INFILE} | egrep 'Machine:.*(SPU|17)' >/dev/null 2>/dev/null
+ then
+ echo "${INFILE}: Does not appear to be an SPU executable"
+ exit 1
+ fi
+
+ toe=`${READELF} -S ${INFILE} | sed -n -e 's, *\[ *\([0-9]*\)\] *\.toe *[PROGN]*BITS *\([0-9a-f]*\).*,\1 \2,p'`
+ toe_addr=`echo $toe | sed -n -e 's,.* ,,p'`
+ toe=`echo $toe | sed -n -e 's, .*,,p'`
+ has_ea=`${READELF} -S ${INFILE} | sed -n -e 's, *\[ *\([0-9]*\)\] *\._ea *PROGBITS.*,\1,p'`
+ # For loaded sections, pick off section number, address, and file offset
+ sections=`${READELF} -S ${INFILE} | sed -n -e 's, *\[ *\([0-9]*\)\] *[^ ]* *PROGBITS *\([0-9a-f]*\) *\([0-9a-f]*\).*,\1 \2 \3,p'`
+ sections=`echo ${sections}`
+ # For relocation sections, pick off file offset and info (points to
+ # section where relocs apply)
+ relas=`${READELF} -S ${INFILE} | sed -n -e 's, *\[ *[0-9]*\] *[^ ]* *RELA *[0-9a-f]* *0*\([0-9a-f][0-9a-f]*\).* \([0-9a-f][0-9a-f]*\) *[0-9a-f][0-9a-f]*$,\1 \2,p'`
+ relas=`echo ${relas}`
+
+ # Build embedded SPU image.
+ # 1. The whole SPU ELF file is written to .rodata.speelf
+ # 2. Symbols starting with the string "_EAR_" in the SPU ELF image are
+ # special. They allow an SPU program to access corresponding symbols
+ # (ie. minus the _EAR_ prefix), in the PowerPC program. _EAR_ without
+ # a suffix is used to refer to the addrress of the SPU image in
+ # PowerPC address space. _EAR_* symbols must all be defined in .toe
+ # at 16 byte intervals, or they must be defined in other non-bss
+ # sections.
+ # Find all _EAR_ symbols in .toe using readelf, sort by address, and
+ # write the address of the corresponding PowerPC symbol in a table
+ # built in .data.spetoe. For _EAR_ symbols not in .toe, create
+ # .reloc commands to relocate their location directly.
+ # 3. Look for R_SPU_PPU32 and R_SPU_PPU64 relocations in the SPU ELF image
+ # and create .reloc commands for them.
+ # 4. Write a struct spe_program_handle to .data.
+ # 5. Write a table of _SPUEAR_ symbols.
+ ${CC} ${FLAGS} -x assembler-with-cpp -nostartfiles -nostdlib \
+ -Wa,-mbig -Wa,-noexecstack -Wl,-r -Wl,-x -o ${OUTFILE} - <<EOF
+ .section .data.spetoe,"aw",@progbits
+ .p2align 7
+__spetoe__:
+`${READELF} -s -W ${INFILE} | grep ' _EAR_' | sort -k 2 | awk \
+'BEGIN { \
+ addr = strtonum ("0x" "'${toe_addr:-0}'"); \
+ split ("'"${sections}"'", s, " "); \
+ for (i = 1; i in s; i += 3) { \
+ sec_off[s[i]] = strtonum ("0x" s[i+2]) - strtonum ("0x" s[i+1]); \
+ } \
+} \
+$7 == "'${toe}'" && strtonum ("0x" $2) != addr { \
+ print "#error Symbol " $8 " not in 16 byte element toe array!"; \
+} \
+$7 == "'${toe}'" { \
+ addr = addr + 16; \
+} \
+$7 == "'${toe}'" { \
+ print "#ifdef _LP64"; \
+ print " .quad " ($8 == "_EAR_" ? "__speelf__" : substr($8, 6)) ", 0"; \
+ print "#else"; \
+ print " .int 0, " ($8 == "_EAR_" ? "__speelf__" : substr($8, 6)) ", 0, 0"; \
+ print "#endif"; \
+} \
+$7 != "'${toe}'" && $7 in sec_off { \
+ print "#ifdef _LP64"; \
+ print " .reloc __speelf__+" strtonum ("0x" $2) + sec_off[$7] ", R_PPC64_ADDR64, " ($8 == "_EAR_" ? "__speelf__" : substr($8, 6)); \
+ print "#else"; \
+ print " .reloc __speelf__+" strtonum ("0x" $2) + sec_off[$7] + 4 ", R_PPC_ADDR32, " ($8 == "_EAR_" ? "__speelf__" : substr($8, 6)); \
+ print "#endif"; \
+ if (!donedef) { print "#define HAS_RELOCS 1"; donedef = 1; }; \
+} \
+$7 != "'${toe}'" && ! $7 in sec_off { \
+ print "#error Section not found for " $8; \
+} \
+'`
+`test -z "${relas}" || ${READELF} -r -W ${INFILE} | awk \
+'BEGIN { \
+ split ("'"${sections}"'", s, " "); \
+ for (i = 1; i in s; i += 3) { \
+ sec_off[s[i]] = strtonum ("0x" s[i+2]) - strtonum ("0x" s[i+1]); \
+ } \
+ split ("'"${relas}"'", s, " "); \
+ for (i = 1; i in s; i += 2) { \
+ rela[s[i]] = strtonum (s[i+1]); \
+ } \
+} \
+/^Relocation section/ { \
+ sec = substr($6, 3); \
+} \
+$3 ~ /R_SPU_PPU/ { \
+ print "#ifdef _LP64"; \
+ print " .reloc __speelf__+" strtonum ("0x" $1) + sec_off[rela[sec]] ", R_PPC64_ADDR" substr($3, 10) ", " ($5 != "" ? $5 "+0x" $7 : "__speelf__ + 0x" $4); \
+ print "#else"; \
+ print " .reloc __speelf__+" strtonum ("0x" $1) + sec_off[rela[sec]] + (substr($3, 10) == "64" ? 4 : 0)", R_PPC_ADDR32, " ($5 != "" ? $5 "+0x" $7 : "__speelf__ + 0x" $4); \
+ print "#endif"; \
+ if (!donedef) { print "#define HAS_RELOCS 1"; donedef = 1; }; \
+} \
+$3 ~ /unrecognized:/ { \
+ print "#ifdef _LP64"; \
+ print " .reloc __speelf__+" strtonum ("0x" $1) + sec_off[rela[sec]] ", R_PPC64_ADDR" ($4 == "f" ? "64" : "32") ", " ($6 != "" ? $6 "+0x" $8 : "__speelf__ + 0x" $5); \
+ print "#else"; \
+ print " .reloc __speelf__+" strtonum ("0x" $1) + sec_off[rela[sec]] + ($4 == "f" ? 4 : 0)", R_PPC_ADDR32, " ($6 != "" ? $6 "+0x" $8 : "__speelf__ + 0x" $5); \
+ print "#endif"; \
+ if (!donedef) { print "#define HAS_RELOCS 1"; donedef = 1; }; \
+} \
+'`
+#if ${has_ea:-0}
+ .section .data.speelf,"aw",@progbits
+#elif defined (HAS_RELOCS) && (defined (__PIC__) || defined (__PIE__))
+ .section .data.rel.ro.speelf,"a",@progbits
+#else
+ .section .rodata.speelf,"a",@progbits
+#endif
+ .p2align 7
+__speelf__:
+ .incbin "${INFILE}"
+
+ .section .data.spehandle,"aw",@progbits
+ .globl ${SYMBOL}
+ .type ${SYMBOL}, @object
+# fill in a struct spe_program_handle
+#ifdef _LP64
+ .p2align 3
+${SYMBOL}:
+ .int 24
+ .int 0
+ .quad __speelf__
+ .quad __spetoe__
+#else
+ .p2align 2
+${SYMBOL}:
+ .int 12
+ .int __speelf__
+ .int __spetoe__
+#endif
+ .size ${SYMBOL}, . - ${SYMBOL}
+
+`${READELF} -s -W ${INFILE} | grep ' _SPUEAR_' | sort -k 2 | awk \
+'{ \
+ print " .globl '${SYMBOL}'_" substr($8, 9); \
+ print " .type '${SYMBOL}'_" substr($8, 9) ", @object"; \
+ print " .size '${SYMBOL}'_" substr($8, 9) ", 4"; \
+ print "'${SYMBOL}'_" substr($8, 9) ":"; \
+ print " .int 0x" $2; \
+} \
+'`
+EOF
+}
+
+main "$@"
diff --git a/binutils-2.24/binutils/emul_aix.c b/binutils-2.24/binutils/emul_aix.c
new file mode 100644
index 00000000..2f6a3e4d
--- /dev/null
+++ b/binutils-2.24/binutils/emul_aix.c
@@ -0,0 +1,141 @@
+/* Binutils emulation layer.
+ Copyright 2002, 2003, 2005, 2006, 2007, 2008, 2010
+ Free Software Foundation, Inc.
+ Written by Tom Rix, Red Hat 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 3 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 "binemul.h"
+#include "bfdlink.h"
+#include "coff/internal.h"
+#include "coff/xcoff.h"
+#include "libcoff.h"
+#include "libxcoff.h"
+
+/* Default to <bigaf>. */
+/* FIXME: write only variable. */
+static bfd_boolean big_archive = TRUE;
+
+/* Whether to include 32 bit objects. */
+static bfd_boolean X32 = TRUE;
+
+/* Whether to include 64 bit objects. */
+static bfd_boolean X64 = FALSE;
+
+static void
+ar_emul_aix_usage (FILE *fp)
+{
+ AR_EMUL_USAGE_PRINT_OPTION_HEADER (fp);
+ /* xgettext:c-format */
+ fprintf (fp, _(" [-g] - 32 bit small archive\n"));
+ fprintf (fp, _(" [-X32] - ignores 64 bit objects\n"));
+ fprintf (fp, _(" [-X64] - ignores 32 bit objects\n"));
+ fprintf (fp, _(" [-X32_64] - accepts 32 and 64 bit objects\n"));
+}
+
+static bfd_boolean
+check_aix (bfd *try_bfd)
+{
+ extern const bfd_target rs6000coff_vec;
+ extern const bfd_target rs6000coff64_vec;
+ extern const bfd_target aix5coff64_vec;
+
+ if (bfd_check_format (try_bfd, bfd_object))
+ {
+ if (!X32 && try_bfd->xvec == &rs6000coff_vec)
+ return FALSE;
+
+ if (!X64 && (try_bfd->xvec == &rs6000coff64_vec
+ || try_bfd->xvec == &aix5coff64_vec))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static bfd_boolean
+ar_emul_aix_append (bfd **after_bfd, char *file_name, const char *target,
+ bfd_boolean verbose, bfd_boolean flatten)
+{
+ bfd *new_bfd;
+
+ new_bfd = bfd_openr (file_name, target);
+ AR_EMUL_ELEMENT_CHECK (new_bfd, file_name);
+
+ return do_ar_emul_append (after_bfd, new_bfd, verbose, flatten, check_aix);
+}
+
+static bfd_boolean
+ar_emul_aix_replace (bfd **after_bfd, char *file_name, const char *target,
+ bfd_boolean verbose)
+{
+ bfd *new_bfd;
+
+ new_bfd = bfd_openr (file_name, target);
+ AR_EMUL_ELEMENT_CHECK (new_bfd, file_name);
+
+ if (!check_aix (new_bfd))
+ return FALSE;
+
+ AR_EMUL_REPLACE_PRINT_VERBOSE (verbose, file_name);
+
+ new_bfd->archive_next = *after_bfd;
+ *after_bfd = new_bfd;
+
+ return TRUE;
+}
+
+static bfd_boolean
+ar_emul_aix_parse_arg (char *arg)
+{
+ if (CONST_STRNEQ (arg, "-X32_64"))
+ {
+ big_archive = TRUE;
+ X32 = TRUE;
+ X64 = TRUE;
+ }
+ else if (CONST_STRNEQ (arg, "-X32"))
+ {
+ big_archive = TRUE;
+ X32 = TRUE;
+ X64 = FALSE;
+ }
+ else if (CONST_STRNEQ (arg, "-X64"))
+ {
+ big_archive = TRUE;
+ X32 = FALSE;
+ X64 = TRUE;
+ }
+ else if (CONST_STRNEQ (arg, "-g"))
+ {
+ big_archive = FALSE;
+ X32 = TRUE;
+ X64 = FALSE;
+ }
+ else
+ return FALSE;
+
+ return TRUE;
+}
+
+struct bin_emulation_xfer_struct bin_aix_emulation =
+{
+ ar_emul_aix_usage,
+ ar_emul_aix_append,
+ ar_emul_aix_replace,
+ ar_emul_aix_parse_arg,
+};
diff --git a/binutils-2.24/binutils/emul_vanilla.c b/binutils-2.24/binutils/emul_vanilla.c
new file mode 100644
index 00000000..d15287d2
--- /dev/null
+++ b/binutils-2.24/binutils/emul_vanilla.c
@@ -0,0 +1,30 @@
+/* Binutils emulation layer.
+ Copyright (C) 2002, 2005, 2007 Free Software Foundation, Inc.
+ Written by Tom Rix, Red Hat 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 3 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 "binemul.h"
+
+struct bin_emulation_xfer_struct bin_vanilla_emulation =
+{
+ ar_emul_default_usage,
+ ar_emul_default_append,
+ ar_emul_default_replace,
+ ar_emul_default_parse_arg,
+};
diff --git a/binutils-2.24/binutils/filemode.c b/binutils-2.24/binutils/filemode.c
new file mode 100644
index 00000000..8b29defc
--- /dev/null
+++ b/binutils-2.24/binutils/filemode.c
@@ -0,0 +1,249 @@
+/* filemode.c -- make a string describing file modes
+ Copyright 1985, 1990, 1991, 1994, 1995, 1997, 1999, 2002, 2003, 2005,
+ 2007 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+
+static char ftypelet (unsigned long);
+static void setst (unsigned long, char *);
+
+/* filemodestring - fill in string STR with an ls-style ASCII
+ representation of the st_mode field of file stats block STATP.
+ 10 characters are stored in STR; no terminating null is added.
+ The characters stored in STR are:
+
+ 0 File type. 'd' for directory, 'c' for character
+ special, 'b' for block special, 'm' for multiplex,
+ 'l' for symbolic link, 's' for socket, 'p' for fifo,
+ '-' for any other file type
+
+ 1 'r' if the owner may read, '-' otherwise.
+
+ 2 'w' if the owner may write, '-' otherwise.
+
+ 3 'x' if the owner may execute, 's' if the file is
+ set-user-id, '-' otherwise.
+ 'S' if the file is set-user-id, but the execute
+ bit isn't set.
+
+ 4 'r' if group members may read, '-' otherwise.
+
+ 5 'w' if group members may write, '-' otherwise.
+
+ 6 'x' if group members may execute, 's' if the file is
+ set-group-id, '-' otherwise.
+ 'S' if it is set-group-id but not executable.
+
+ 7 'r' if any user may read, '-' otherwise.
+
+ 8 'w' if any user may write, '-' otherwise.
+
+ 9 'x' if any user may execute, 't' if the file is "sticky"
+ (will be retained in swap space after execution), '-'
+ otherwise.
+ 'T' if the file is sticky but not executable. */
+
+/* Get definitions for the file permission bits. */
+
+#ifndef S_IRWXU
+#define S_IRWXU 0700
+#endif
+#ifndef S_IRUSR
+#define S_IRUSR 0400
+#endif
+#ifndef S_IWUSR
+#define S_IWUSR 0200
+#endif
+#ifndef S_IXUSR
+#define S_IXUSR 0100
+#endif
+
+#ifndef S_IRWXG
+#define S_IRWXG 0070
+#endif
+#ifndef S_IRGRP
+#define S_IRGRP 0040
+#endif
+#ifndef S_IWGRP
+#define S_IWGRP 0020
+#endif
+#ifndef S_IXGRP
+#define S_IXGRP 0010
+#endif
+
+#ifndef S_IRWXO
+#define S_IRWXO 0007
+#endif
+#ifndef S_IROTH
+#define S_IROTH 0004
+#endif
+#ifndef S_IWOTH
+#define S_IWOTH 0002
+#endif
+#ifndef S_IXOTH
+#define S_IXOTH 0001
+#endif
+
+/* Like filemodestring, but only the relevant part of the `struct stat'
+ is given as an argument. */
+
+void
+mode_string (unsigned long mode, char *str)
+{
+ str[0] = ftypelet ((unsigned long) mode);
+ str[1] = (mode & S_IRUSR) != 0 ? 'r' : '-';
+ str[2] = (mode & S_IWUSR) != 0 ? 'w' : '-';
+ str[3] = (mode & S_IXUSR) != 0 ? 'x' : '-';
+ str[4] = (mode & S_IRGRP) != 0 ? 'r' : '-';
+ str[5] = (mode & S_IWGRP) != 0 ? 'w' : '-';
+ str[6] = (mode & S_IXGRP) != 0 ? 'x' : '-';
+ str[7] = (mode & S_IROTH) != 0 ? 'r' : '-';
+ str[8] = (mode & S_IWOTH) != 0 ? 'w' : '-';
+ str[9] = (mode & S_IXOTH) != 0 ? 'x' : '-';
+ setst ((unsigned long) mode, str);
+}
+
+/* Return a character indicating the type of file described by
+ file mode BITS:
+ 'd' for directories
+ 'b' for block special files
+ 'c' for character special files
+ 'm' for multiplexer files
+ 'l' for symbolic links
+ 's' for sockets
+ 'p' for fifos
+ '-' for any other file type. */
+
+#ifndef S_ISDIR
+#ifdef S_IFDIR
+#define S_ISDIR(i) (((i) & S_IFMT) == S_IFDIR)
+#else /* ! defined (S_IFDIR) */
+#define S_ISDIR(i) (((i) & 0170000) == 040000)
+#endif /* ! defined (S_IFDIR) */
+#endif /* ! defined (S_ISDIR) */
+
+#ifndef S_ISBLK
+#ifdef S_IFBLK
+#define S_ISBLK(i) (((i) & S_IFMT) == S_IFBLK)
+#else /* ! defined (S_IFBLK) */
+#define S_ISBLK(i) 0
+#endif /* ! defined (S_IFBLK) */
+#endif /* ! defined (S_ISBLK) */
+
+#ifndef S_ISCHR
+#ifdef S_IFCHR
+#define S_ISCHR(i) (((i) & S_IFMT) == S_IFCHR)
+#else /* ! defined (S_IFCHR) */
+#define S_ISCHR(i) 0
+#endif /* ! defined (S_IFCHR) */
+#endif /* ! defined (S_ISCHR) */
+
+#ifndef S_ISFIFO
+#ifdef S_IFIFO
+#define S_ISFIFO(i) (((i) & S_IFMT) == S_IFIFO)
+#else /* ! defined (S_IFIFO) */
+#define S_ISFIFO(i) 0
+#endif /* ! defined (S_IFIFO) */
+#endif /* ! defined (S_ISFIFO) */
+
+#ifndef S_ISSOCK
+#ifdef S_IFSOCK
+#define S_ISSOCK(i) (((i) & S_IFMT) == S_IFSOCK)
+#else /* ! defined (S_IFSOCK) */
+#define S_ISSOCK(i) 0
+#endif /* ! defined (S_IFSOCK) */
+#endif /* ! defined (S_ISSOCK) */
+
+#ifndef S_ISLNK
+#ifdef S_IFLNK
+#define S_ISLNK(i) (((i) & S_IFMT) == S_IFLNK)
+#else /* ! defined (S_IFLNK) */
+#define S_ISLNK(i) 0
+#endif /* ! defined (S_IFLNK) */
+#endif /* ! defined (S_ISLNK) */
+
+static char
+ftypelet (unsigned long bits)
+{
+ if (S_ISDIR (bits))
+ return 'd';
+ if (S_ISLNK (bits))
+ return 'l';
+ if (S_ISBLK (bits))
+ return 'b';
+ if (S_ISCHR (bits))
+ return 'c';
+ if (S_ISSOCK (bits))
+ return 's';
+ if (S_ISFIFO (bits))
+ return 'p';
+
+#ifdef S_IFMT
+#ifdef S_IFMPC
+ if ((bits & S_IFMT) == S_IFMPC
+ || (bits & S_IFMT) == S_IFMPB)
+ return 'm';
+#endif
+#ifdef S_IFNWK
+ if ((bits & S_IFMT) == S_IFNWK)
+ return 'n';
+#endif
+#endif
+
+ return '-';
+}
+
+/* Set the 's' and 't' flags in file attributes string CHARS,
+ according to the file mode BITS. */
+
+static void
+setst (unsigned long bits ATTRIBUTE_UNUSED, char *chars ATTRIBUTE_UNUSED)
+{
+#ifdef S_ISUID
+ if (bits & S_ISUID)
+ {
+ if (chars[3] != 'x')
+ /* Set-uid, but not executable by owner. */
+ chars[3] = 'S';
+ else
+ chars[3] = 's';
+ }
+#endif
+#ifdef S_ISGID
+ if (bits & S_ISGID)
+ {
+ if (chars[6] != 'x')
+ /* Set-gid, but not executable by group. */
+ chars[6] = 'S';
+ else
+ chars[6] = 's';
+ }
+#endif
+#ifdef S_ISVTX
+ if (bits & S_ISVTX)
+ {
+ if (chars[9] != 'x')
+ /* Sticky, but not executable by others. */
+ chars[9] = 'T';
+ else
+ chars[9] = 't';
+ }
+#endif
+}
diff --git a/binutils-2.24/binutils/ieee.c b/binutils-2.24/binutils/ieee.c
new file mode 100644
index 00000000..044da313
--- /dev/null
+++ b/binutils-2.24/binutils/ieee.c
@@ -0,0 +1,7411 @@
+/* ieee.c -- Read and write IEEE-695 debugging information.
+ Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007,
+ 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor <ian@cygnus.com>.
+
+ 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 3 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 file reads and writes IEEE-695 debugging information. */
+
+#include "sysdep.h"
+#include <assert.h>
+#include "bfd.h"
+#include "ieee.h"
+#include "libiberty.h"
+#include "debug.h"
+#include "budbg.h"
+#include "filenames.h"
+
+/* This structure holds an entry on the block stack. */
+
+struct ieee_block
+{
+ /* The kind of block. */
+ int kind;
+ /* The source file name, for a BB5 block. */
+ const char *filename;
+ /* The index of the function type, for a BB4 or BB6 block. */
+ unsigned int fnindx;
+ /* TRUE if this function is being skipped. */
+ bfd_boolean skip;
+};
+
+/* This structure is the block stack. */
+
+#define BLOCKSTACK_SIZE (16)
+
+struct ieee_blockstack
+{
+ /* The stack pointer. */
+ struct ieee_block *bsp;
+ /* The stack. */
+ struct ieee_block stack[BLOCKSTACK_SIZE];
+};
+
+/* This structure holds information for a variable. */
+
+enum ieee_var_kind
+ {
+ IEEE_UNKNOWN,
+ IEEE_EXTERNAL,
+ IEEE_GLOBAL,
+ IEEE_STATIC,
+ IEEE_LOCAL,
+ IEEE_FUNCTION
+ };
+
+struct ieee_var
+{
+ /* Start of name. */
+ const char *name;
+ /* Length of name. */
+ unsigned long namlen;
+ /* Type. */
+ debug_type type;
+ /* Slot if we make an indirect type. */
+ debug_type *pslot;
+ /* Kind of variable or function. */
+ enum ieee_var_kind kind;
+};
+
+/* This structure holds all the variables. */
+
+struct ieee_vars
+{
+ /* Number of slots allocated. */
+ unsigned int alloc;
+ /* Variables. */
+ struct ieee_var *vars;
+};
+
+/* This structure holds information for a type. We need this because
+ we don't want to represent bitfields as real types. */
+
+struct ieee_type
+{
+ /* Type. */
+ debug_type type;
+ /* Slot if this is type is referenced before it is defined. */
+ debug_type *pslot;
+ /* Slots for arguments if we make indirect types for them. */
+ debug_type *arg_slots;
+ /* If this is a bitfield, this is the size in bits. If this is not
+ a bitfield, this is zero. */
+ unsigned long bitsize;
+};
+
+/* This structure holds all the type information. */
+
+struct ieee_types
+{
+ /* Number of slots allocated. */
+ unsigned int alloc;
+ /* Types. */
+ struct ieee_type *types;
+ /* Builtin types. */
+#define BUILTIN_TYPE_COUNT (60)
+ debug_type builtins[BUILTIN_TYPE_COUNT];
+};
+
+/* This structure holds a linked last of structs with their tag names,
+ so that we can convert them to C++ classes if necessary. */
+
+struct ieee_tag
+{
+ /* Next tag. */
+ struct ieee_tag *next;
+ /* This tag name. */
+ const char *name;
+ /* The type of the tag. */
+ debug_type type;
+ /* The tagged type is an indirect type pointing at this slot. */
+ debug_type slot;
+ /* This is an array of slots used when a field type is converted
+ into a indirect type, in case it needs to be later converted into
+ a reference type. */
+ debug_type *fslots;
+};
+
+/* This structure holds the information we pass around to the parsing
+ functions. */
+
+struct ieee_info
+{
+ /* The debugging handle. */
+ void *dhandle;
+ /* The BFD. */
+ bfd *abfd;
+ /* The start of the bytes to be parsed. */
+ const bfd_byte *bytes;
+ /* The end of the bytes to be parsed. */
+ const bfd_byte *pend;
+ /* The block stack. */
+ struct ieee_blockstack blockstack;
+ /* Whether we have seen a BB1 or BB2. */
+ bfd_boolean saw_filename;
+ /* The variables. */
+ struct ieee_vars vars;
+ /* The global variables, after a global typedef block. */
+ struct ieee_vars *global_vars;
+ /* The types. */
+ struct ieee_types types;
+ /* The global types, after a global typedef block. */
+ struct ieee_types *global_types;
+ /* The list of tagged structs. */
+ struct ieee_tag *tags;
+};
+
+/* Basic builtin types, not including the pointers. */
+
+enum builtin_types
+{
+ builtin_unknown = 0,
+ builtin_void = 1,
+ builtin_signed_char = 2,
+ builtin_unsigned_char = 3,
+ builtin_signed_short_int = 4,
+ builtin_unsigned_short_int = 5,
+ builtin_signed_long = 6,
+ builtin_unsigned_long = 7,
+ builtin_signed_long_long = 8,
+ builtin_unsigned_long_long = 9,
+ builtin_float = 10,
+ builtin_double = 11,
+ builtin_long_double = 12,
+ builtin_long_long_double = 13,
+ builtin_quoted_string = 14,
+ builtin_instruction_address = 15,
+ builtin_int = 16,
+ builtin_unsigned = 17,
+ builtin_unsigned_int = 18,
+ builtin_char = 19,
+ builtin_long = 20,
+ builtin_short = 21,
+ builtin_unsigned_short = 22,
+ builtin_short_int = 23,
+ builtin_signed_short = 24,
+ builtin_bcd_float = 25
+};
+
+/* These are the values found in the derivation flags of a 'b'
+ component record of a 'T' type extension record in a C++ pmisc
+ record. These are bitmasks. */
+
+/* Set for a private base class, clear for a public base class.
+ Protected base classes are not supported. */
+#define BASEFLAGS_PRIVATE (0x1)
+/* Set for a virtual base class. */
+#define BASEFLAGS_VIRTUAL (0x2)
+/* Set for a friend class, clear for a base class. */
+#define BASEFLAGS_FRIEND (0x10)
+
+/* These are the values found in the specs flags of a 'd', 'm', or 'v'
+ component record of a 'T' type extension record in a C++ pmisc
+ record. The same flags are used for a 'M' record in a C++ pmisc
+ record. */
+
+/* The lower two bits hold visibility information. */
+#define CXXFLAGS_VISIBILITY (0x3)
+/* This value in the lower two bits indicates a public member. */
+#define CXXFLAGS_VISIBILITY_PUBLIC (0x0)
+/* This value in the lower two bits indicates a private member. */
+#define CXXFLAGS_VISIBILITY_PRIVATE (0x1)
+/* This value in the lower two bits indicates a protected member. */
+#define CXXFLAGS_VISIBILITY_PROTECTED (0x2)
+/* Set for a static member. */
+#define CXXFLAGS_STATIC (0x4)
+/* Set for a virtual override. */
+#define CXXFLAGS_OVERRIDE (0x8)
+/* Set for a friend function. */
+#define CXXFLAGS_FRIEND (0x10)
+/* Set for a const function. */
+#define CXXFLAGS_CONST (0x20)
+/* Set for a volatile function. */
+#define CXXFLAGS_VOLATILE (0x40)
+/* Set for an overloaded function. */
+#define CXXFLAGS_OVERLOADED (0x80)
+/* Set for an operator function. */
+#define CXXFLAGS_OPERATOR (0x100)
+/* Set for a constructor or destructor. */
+#define CXXFLAGS_CTORDTOR (0x400)
+/* Set for a constructor. */
+#define CXXFLAGS_CTOR (0x200)
+/* Set for an inline function. */
+#define CXXFLAGS_INLINE (0x800)
+
+/* Local functions. */
+
+static void ieee_error (struct ieee_info *, const bfd_byte *, const char *);
+static void ieee_eof (struct ieee_info *);
+static char *savestring (const char *, unsigned long);
+static bfd_boolean ieee_read_number
+ (struct ieee_info *, const bfd_byte **, bfd_vma *);
+static bfd_boolean ieee_read_optional_number
+ (struct ieee_info *, const bfd_byte **, bfd_vma *, bfd_boolean *);
+static bfd_boolean ieee_read_id
+ (struct ieee_info *, const bfd_byte **, const char **, unsigned long *);
+static bfd_boolean ieee_read_optional_id
+ (struct ieee_info *, const bfd_byte **, const char **, unsigned long *,
+ bfd_boolean *);
+static bfd_boolean ieee_read_expression
+ (struct ieee_info *, const bfd_byte **, bfd_vma *);
+static debug_type ieee_builtin_type
+ (struct ieee_info *, const bfd_byte *, unsigned int);
+static bfd_boolean ieee_alloc_type
+ (struct ieee_info *, unsigned int, bfd_boolean);
+static bfd_boolean ieee_read_type_index
+ (struct ieee_info *, const bfd_byte **, debug_type *);
+static int ieee_regno_to_genreg (bfd *, int);
+static int ieee_genreg_to_regno (bfd *, int);
+static bfd_boolean parse_ieee_bb (struct ieee_info *, const bfd_byte **);
+static bfd_boolean parse_ieee_be (struct ieee_info *, const bfd_byte **);
+static bfd_boolean parse_ieee_nn (struct ieee_info *, const bfd_byte **);
+static bfd_boolean parse_ieee_ty (struct ieee_info *, const bfd_byte **);
+static bfd_boolean parse_ieee_atn (struct ieee_info *, const bfd_byte **);
+static bfd_boolean ieee_read_cxx_misc
+ (struct ieee_info *, const bfd_byte **, unsigned long);
+static bfd_boolean ieee_read_cxx_class
+ (struct ieee_info *, const bfd_byte **, unsigned long);
+static bfd_boolean ieee_read_cxx_defaults
+ (struct ieee_info *, const bfd_byte **, unsigned long);
+static bfd_boolean ieee_read_reference
+ (struct ieee_info *, const bfd_byte **);
+static bfd_boolean ieee_require_asn
+ (struct ieee_info *, const bfd_byte **, bfd_vma *);
+static bfd_boolean ieee_require_atn65
+ (struct ieee_info *, const bfd_byte **, const char **, unsigned long *);
+
+/* Report an error in the IEEE debugging information. */
+
+static void
+ieee_error (struct ieee_info *info, const bfd_byte *p, const char *s)
+{
+ if (p != NULL)
+ fprintf (stderr, "%s: 0x%lx: %s (0x%x)\n", bfd_get_filename (info->abfd),
+ (unsigned long) (p - info->bytes), s, *p);
+ else
+ fprintf (stderr, "%s: %s\n", bfd_get_filename (info->abfd), s);
+}
+
+/* Report an unexpected EOF in the IEEE debugging information. */
+
+static void
+ieee_eof (struct ieee_info *info)
+{
+ ieee_error (info, (const bfd_byte *) NULL,
+ _("unexpected end of debugging information"));
+}
+
+/* Save a string in memory. */
+
+static char *
+savestring (const char *start, unsigned long len)
+{
+ char *ret;
+
+ ret = (char *) xmalloc (len + 1);
+ memcpy (ret, start, len);
+ ret[len] = '\0';
+ return ret;
+}
+
+/* Read a number which must be present in an IEEE file. */
+
+static bfd_boolean
+ieee_read_number (struct ieee_info *info, const bfd_byte **pp, bfd_vma *pv)
+{
+ return ieee_read_optional_number (info, pp, pv, (bfd_boolean *) NULL);
+}
+
+/* Read a number in an IEEE file. If ppresent is not NULL, the number
+ need not be there. */
+
+static bfd_boolean
+ieee_read_optional_number (struct ieee_info *info, const bfd_byte **pp,
+ bfd_vma *pv, bfd_boolean *ppresent)
+{
+ ieee_record_enum_type b;
+
+ if (*pp >= info->pend)
+ {
+ if (ppresent != NULL)
+ {
+ *ppresent = FALSE;
+ return TRUE;
+ }
+ ieee_eof (info);
+ return FALSE;
+ }
+
+ b = (ieee_record_enum_type) **pp;
+ ++*pp;
+
+ if (b <= ieee_number_end_enum)
+ {
+ *pv = (bfd_vma) b;
+ if (ppresent != NULL)
+ *ppresent = TRUE;
+ return TRUE;
+ }
+
+ if (b >= ieee_number_repeat_start_enum && b <= ieee_number_repeat_end_enum)
+ {
+ unsigned int i;
+
+ i = (int) b - (int) ieee_number_repeat_start_enum;
+ if (*pp + i - 1 >= info->pend)
+ {
+ ieee_eof (info);
+ return FALSE;
+ }
+
+ *pv = 0;
+ for (; i > 0; i--)
+ {
+ *pv <<= 8;
+ *pv += **pp;
+ ++*pp;
+ }
+
+ if (ppresent != NULL)
+ *ppresent = TRUE;
+
+ return TRUE;
+ }
+
+ if (ppresent != NULL)
+ {
+ --*pp;
+ *ppresent = FALSE;
+ return TRUE;
+ }
+
+ ieee_error (info, *pp - 1, _("invalid number"));
+ return FALSE;
+}
+
+/* Read a required string from an IEEE file. */
+
+static bfd_boolean
+ieee_read_id (struct ieee_info *info, const bfd_byte **pp,
+ const char **pname, unsigned long *pnamlen)
+{
+ return ieee_read_optional_id (info, pp, pname, pnamlen, (bfd_boolean *) NULL);
+}
+
+/* Read a string from an IEEE file. If ppresent is not NULL, the
+ string is optional. */
+
+static bfd_boolean
+ieee_read_optional_id (struct ieee_info *info, const bfd_byte **pp,
+ const char **pname, unsigned long *pnamlen,
+ bfd_boolean *ppresent)
+{
+ bfd_byte b;
+ unsigned long len;
+
+ if (*pp >= info->pend)
+ {
+ ieee_eof (info);
+ return FALSE;
+ }
+
+ b = **pp;
+ ++*pp;
+
+ if (b <= 0x7f)
+ len = b;
+ else if ((ieee_record_enum_type) b == ieee_extension_length_1_enum)
+ {
+ len = **pp;
+ ++*pp;
+ }
+ else if ((ieee_record_enum_type) b == ieee_extension_length_2_enum)
+ {
+ len = (**pp << 8) + (*pp)[1];
+ *pp += 2;
+ }
+ else
+ {
+ if (ppresent != NULL)
+ {
+ --*pp;
+ *ppresent = FALSE;
+ return TRUE;
+ }
+ ieee_error (info, *pp - 1, _("invalid string length"));
+ return FALSE;
+ }
+
+ if ((unsigned long) (info->pend - *pp) < len)
+ {
+ ieee_eof (info);
+ return FALSE;
+ }
+
+ *pname = (const char *) *pp;
+ *pnamlen = len;
+ *pp += len;
+
+ if (ppresent != NULL)
+ *ppresent = TRUE;
+
+ return TRUE;
+}
+
+/* Read an expression from an IEEE file. Since this code is only used
+ to parse debugging information, I haven't bothered to write a full
+ blown IEEE expression parser. I've only thrown in the things I've
+ seen in debugging information. This can be easily extended if
+ necessary. */
+
+static bfd_boolean
+ieee_read_expression (struct ieee_info *info, const bfd_byte **pp,
+ bfd_vma *pv)
+{
+ const bfd_byte *expr_start;
+#define EXPR_STACK_SIZE (10)
+ bfd_vma expr_stack[EXPR_STACK_SIZE];
+ bfd_vma *esp;
+
+ expr_start = *pp;
+
+ esp = expr_stack;
+
+ while (1)
+ {
+ const bfd_byte *start;
+ bfd_vma val;
+ bfd_boolean present;
+ ieee_record_enum_type c;
+
+ start = *pp;
+
+ if (! ieee_read_optional_number (info, pp, &val, &present))
+ return FALSE;
+
+ if (present)
+ {
+ if (esp - expr_stack >= EXPR_STACK_SIZE)
+ {
+ ieee_error (info, start, _("expression stack overflow"));
+ return FALSE;
+ }
+ *esp++ = val;
+ continue;
+ }
+
+ c = (ieee_record_enum_type) **pp;
+
+ if (c >= ieee_module_beginning_enum)
+ break;
+
+ ++*pp;
+
+ if (c == ieee_comma)
+ break;
+
+ switch (c)
+ {
+ default:
+ ieee_error (info, start, _("unsupported IEEE expression operator"));
+ break;
+
+ case ieee_variable_R_enum:
+ {
+ bfd_vma indx;
+ asection *s;
+
+ if (! ieee_read_number (info, pp, &indx))
+ return FALSE;
+ for (s = info->abfd->sections; s != NULL; s = s->next)
+ if ((bfd_vma) s->target_index == indx)
+ break;
+ if (s == NULL)
+ {
+ ieee_error (info, start, _("unknown section"));
+ return FALSE;
+ }
+
+ if (esp - expr_stack >= EXPR_STACK_SIZE)
+ {
+ ieee_error (info, start, _("expression stack overflow"));
+ return FALSE;
+ }
+
+ *esp++ = bfd_get_section_vma (info->abfd, s);
+ }
+ break;
+
+ case ieee_function_plus_enum:
+ case ieee_function_minus_enum:
+ {
+ bfd_vma v1, v2;
+
+ if (esp - expr_stack < 2)
+ {
+ ieee_error (info, start, _("expression stack underflow"));
+ return FALSE;
+ }
+
+ v1 = *--esp;
+ v2 = *--esp;
+ *esp++ = v1 + v2;
+ }
+ break;
+ }
+ }
+
+ if (esp - 1 != expr_stack)
+ {
+ ieee_error (info, expr_start, _("expression stack mismatch"));
+ return FALSE;
+ }
+
+ *pv = *--esp;
+
+ return TRUE;
+}
+
+/* Return an IEEE builtin type. */
+
+static debug_type
+ieee_builtin_type (struct ieee_info *info, const bfd_byte *p,
+ unsigned int indx)
+{
+ void *dhandle;
+ debug_type type;
+ const char *name;
+
+ if (indx < BUILTIN_TYPE_COUNT
+ && info->types.builtins[indx] != DEBUG_TYPE_NULL)
+ return info->types.builtins[indx];
+
+ dhandle = info->dhandle;
+
+ if (indx >= 32 && indx < 64)
+ {
+ type = debug_make_pointer_type (dhandle,
+ ieee_builtin_type (info, p, indx - 32));
+ assert (indx < BUILTIN_TYPE_COUNT);
+ info->types.builtins[indx] = type;
+ return type;
+ }
+
+ switch ((enum builtin_types) indx)
+ {
+ default:
+ ieee_error (info, p, _("unknown builtin type"));
+ return NULL;
+
+ case builtin_unknown:
+ type = debug_make_void_type (dhandle);
+ name = NULL;
+ break;
+
+ case builtin_void:
+ type = debug_make_void_type (dhandle);
+ name = "void";
+ break;
+
+ case builtin_signed_char:
+ type = debug_make_int_type (dhandle, 1, FALSE);
+ name = "signed char";
+ break;
+
+ case builtin_unsigned_char:
+ type = debug_make_int_type (dhandle, 1, TRUE);
+ name = "unsigned char";
+ break;
+
+ case builtin_signed_short_int:
+ type = debug_make_int_type (dhandle, 2, FALSE);
+ name = "signed short int";
+ break;
+
+ case builtin_unsigned_short_int:
+ type = debug_make_int_type (dhandle, 2, TRUE);
+ name = "unsigned short int";
+ break;
+
+ case builtin_signed_long:
+ type = debug_make_int_type (dhandle, 4, FALSE);
+ name = "signed long";
+ break;
+
+ case builtin_unsigned_long:
+ type = debug_make_int_type (dhandle, 4, TRUE);
+ name = "unsigned long";
+ break;
+
+ case builtin_signed_long_long:
+ type = debug_make_int_type (dhandle, 8, FALSE);
+ name = "signed long long";
+ break;
+
+ case builtin_unsigned_long_long:
+ type = debug_make_int_type (dhandle, 8, TRUE);
+ name = "unsigned long long";
+ break;
+
+ case builtin_float:
+ type = debug_make_float_type (dhandle, 4);
+ name = "float";
+ break;
+
+ case builtin_double:
+ type = debug_make_float_type (dhandle, 8);
+ name = "double";
+ break;
+
+ case builtin_long_double:
+ /* FIXME: The size for this type should depend upon the
+ processor. */
+ type = debug_make_float_type (dhandle, 12);
+ name = "long double";
+ break;
+
+ case builtin_long_long_double:
+ type = debug_make_float_type (dhandle, 16);
+ name = "long long double";
+ break;
+
+ case builtin_quoted_string:
+ type = debug_make_array_type (dhandle,
+ ieee_builtin_type (info, p,
+ ((unsigned int)
+ builtin_char)),
+ ieee_builtin_type (info, p,
+ ((unsigned int)
+ builtin_int)),
+ 0, -1, TRUE);
+ name = "QUOTED STRING";
+ break;
+
+ case builtin_instruction_address:
+ /* FIXME: This should be a code address. */
+ type = debug_make_int_type (dhandle, 4, TRUE);
+ name = "instruction address";
+ break;
+
+ case builtin_int:
+ /* FIXME: The size for this type should depend upon the
+ processor. */
+ type = debug_make_int_type (dhandle, 4, FALSE);
+ name = "int";
+ break;
+
+ case builtin_unsigned:
+ /* FIXME: The size for this type should depend upon the
+ processor. */
+ type = debug_make_int_type (dhandle, 4, TRUE);
+ name = "unsigned";
+ break;
+
+ case builtin_unsigned_int:
+ /* FIXME: The size for this type should depend upon the
+ processor. */
+ type = debug_make_int_type (dhandle, 4, TRUE);
+ name = "unsigned int";
+ break;
+
+ case builtin_char:
+ type = debug_make_int_type (dhandle, 1, FALSE);
+ name = "char";
+ break;
+
+ case builtin_long:
+ type = debug_make_int_type (dhandle, 4, FALSE);
+ name = "long";
+ break;
+
+ case builtin_short:
+ type = debug_make_int_type (dhandle, 2, FALSE);
+ name = "short";
+ break;
+
+ case builtin_unsigned_short:
+ type = debug_make_int_type (dhandle, 2, TRUE);
+ name = "unsigned short";
+ break;
+
+ case builtin_short_int:
+ type = debug_make_int_type (dhandle, 2, FALSE);
+ name = "short int";
+ break;
+
+ case builtin_signed_short:
+ type = debug_make_int_type (dhandle, 2, FALSE);
+ name = "signed short";
+ break;
+
+ case builtin_bcd_float:
+ ieee_error (info, p, _("BCD float type not supported"));
+ return DEBUG_TYPE_NULL;
+ }
+
+ if (name != NULL)
+ type = debug_name_type (dhandle, name, type);
+
+ assert (indx < BUILTIN_TYPE_COUNT);
+
+ info->types.builtins[indx] = type;
+
+ return type;
+}
+
+/* Allocate more space in the type table. If ref is TRUE, this is a
+ reference to the type; if it is not already defined, we should set
+ up an indirect type. */
+
+static bfd_boolean
+ieee_alloc_type (struct ieee_info *info, unsigned int indx, bfd_boolean ref)
+{
+ unsigned int nalloc;
+ register struct ieee_type *t;
+ struct ieee_type *tend;
+
+ if (indx >= info->types.alloc)
+ {
+ nalloc = info->types.alloc;
+ if (nalloc == 0)
+ nalloc = 4;
+ while (indx >= nalloc)
+ nalloc *= 2;
+
+ info->types.types = ((struct ieee_type *)
+ xrealloc (info->types.types,
+ nalloc * sizeof *info->types.types));
+
+ memset (info->types.types + info->types.alloc, 0,
+ (nalloc - info->types.alloc) * sizeof *info->types.types);
+
+ tend = info->types.types + nalloc;
+ for (t = info->types.types + info->types.alloc; t < tend; t++)
+ t->type = DEBUG_TYPE_NULL;
+
+ info->types.alloc = nalloc;
+ }
+
+ if (ref)
+ {
+ t = info->types.types + indx;
+ if (t->type == NULL)
+ {
+ t->pslot = (debug_type *) xmalloc (sizeof *t->pslot);
+ *t->pslot = DEBUG_TYPE_NULL;
+ t->type = debug_make_indirect_type (info->dhandle, t->pslot,
+ (const char *) NULL);
+ if (t->type == NULL)
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+/* Read a type index and return the corresponding type. */
+
+static bfd_boolean
+ieee_read_type_index (struct ieee_info *info, const bfd_byte **pp,
+ debug_type *ptype)
+{
+ const bfd_byte *start;
+ bfd_vma indx;
+
+ start = *pp;
+
+ if (! ieee_read_number (info, pp, &indx))
+ return FALSE;
+
+ if (indx < 256)
+ {
+ *ptype = ieee_builtin_type (info, start, indx);
+ if (*ptype == NULL)
+ return FALSE;
+ return TRUE;
+ }
+
+ indx -= 256;
+ if (! ieee_alloc_type (info, indx, TRUE))
+ return FALSE;
+
+ *ptype = info->types.types[indx].type;
+
+ return TRUE;
+}
+
+/* Parse IEEE debugging information for a file. This is passed the
+ bytes which compose the Debug Information Part of an IEEE file. */
+
+bfd_boolean
+parse_ieee (void *dhandle, bfd *abfd, const bfd_byte *bytes, bfd_size_type len)
+{
+ struct ieee_info info;
+ unsigned int i;
+ const bfd_byte *p, *pend;
+
+ info.dhandle = dhandle;
+ info.abfd = abfd;
+ info.bytes = bytes;
+ info.pend = bytes + len;
+ info.blockstack.bsp = info.blockstack.stack;
+ info.saw_filename = FALSE;
+ info.vars.alloc = 0;
+ info.vars.vars = NULL;
+ info.global_vars = NULL;
+ info.types.alloc = 0;
+ info.types.types = NULL;
+ info.global_types = NULL;
+ info.tags = NULL;
+ for (i = 0; i < BUILTIN_TYPE_COUNT; i++)
+ info.types.builtins[i] = DEBUG_TYPE_NULL;
+
+ p = bytes;
+ pend = info.pend;
+ while (p < pend)
+ {
+ const bfd_byte *record_start;
+ ieee_record_enum_type c;
+
+ record_start = p;
+
+ c = (ieee_record_enum_type) *p++;
+
+ if (c == ieee_at_record_enum)
+ c = (ieee_record_enum_type) (((unsigned int) c << 8) | *p++);
+
+ if (c <= ieee_number_repeat_end_enum)
+ {
+ ieee_error (&info, record_start, _("unexpected number"));
+ return FALSE;
+ }
+
+ switch (c)
+ {
+ default:
+ ieee_error (&info, record_start, _("unexpected record type"));
+ return FALSE;
+
+ case ieee_bb_record_enum:
+ if (! parse_ieee_bb (&info, &p))
+ return FALSE;
+ break;
+
+ case ieee_be_record_enum:
+ if (! parse_ieee_be (&info, &p))
+ return FALSE;
+ break;
+
+ case ieee_nn_record:
+ if (! parse_ieee_nn (&info, &p))
+ return FALSE;
+ break;
+
+ case ieee_ty_record_enum:
+ if (! parse_ieee_ty (&info, &p))
+ return FALSE;
+ break;
+
+ case ieee_atn_record_enum:
+ if (! parse_ieee_atn (&info, &p))
+ return FALSE;
+ break;
+ }
+ }
+
+ if (info.blockstack.bsp != info.blockstack.stack)
+ {
+ ieee_error (&info, (const bfd_byte *) NULL,
+ _("blocks left on stack at end"));
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Handle an IEEE BB record. */
+
+static bfd_boolean
+parse_ieee_bb (struct ieee_info *info, const bfd_byte **pp)
+{
+ const bfd_byte *block_start;
+ bfd_byte b;
+ bfd_vma size;
+ const char *name;
+ unsigned long namlen;
+ char *namcopy = NULL;
+ unsigned int fnindx;
+ bfd_boolean skip;
+
+ block_start = *pp;
+
+ b = **pp;
+ ++*pp;
+
+ if (! ieee_read_number (info, pp, &size)
+ || ! ieee_read_id (info, pp, &name, &namlen))
+ return FALSE;
+
+ fnindx = (unsigned int) -1;
+ skip = FALSE;
+
+ switch (b)
+ {
+ case 1:
+ /* BB1: Type definitions local to a module. */
+ namcopy = savestring (name, namlen);
+ if (namcopy == NULL)
+ return FALSE;
+ if (! debug_set_filename (info->dhandle, namcopy))
+ return FALSE;
+ info->saw_filename = TRUE;
+
+ /* Discard any variables or types we may have seen before. */
+ if (info->vars.vars != NULL)
+ free (info->vars.vars);
+ info->vars.vars = NULL;
+ info->vars.alloc = 0;
+ if (info->types.types != NULL)
+ free (info->types.types);
+ info->types.types = NULL;
+ info->types.alloc = 0;
+
+ /* Initialize the types to the global types. */
+ if (info->global_types != NULL)
+ {
+ info->types.alloc = info->global_types->alloc;
+ info->types.types = ((struct ieee_type *)
+ xmalloc (info->types.alloc
+ * sizeof (*info->types.types)));
+ memcpy (info->types.types, info->global_types->types,
+ info->types.alloc * sizeof (*info->types.types));
+ }
+
+ break;
+
+ case 2:
+ /* BB2: Global type definitions. The name is supposed to be
+ empty, but we don't check. */
+ if (! debug_set_filename (info->dhandle, "*global*"))
+ return FALSE;
+ info->saw_filename = TRUE;
+ break;
+
+ case 3:
+ /* BB3: High level module block begin. We don't have to do
+ anything here. The name is supposed to be the same as for
+ the BB1, but we don't check. */
+ break;
+
+ case 4:
+ /* BB4: Global function. */
+ {
+ bfd_vma stackspace, typindx, offset;
+ debug_type return_type;
+
+ if (! ieee_read_number (info, pp, &stackspace)
+ || ! ieee_read_number (info, pp, &typindx)
+ || ! ieee_read_expression (info, pp, &offset))
+ return FALSE;
+
+ /* We have no way to record the stack space. FIXME. */
+
+ if (typindx < 256)
+ {
+ return_type = ieee_builtin_type (info, block_start, typindx);
+ if (return_type == DEBUG_TYPE_NULL)
+ return FALSE;
+ }
+ else
+ {
+ typindx -= 256;
+ if (! ieee_alloc_type (info, typindx, TRUE))
+ return FALSE;
+ fnindx = typindx;
+ return_type = info->types.types[typindx].type;
+ if (debug_get_type_kind (info->dhandle, return_type)
+ == DEBUG_KIND_FUNCTION)
+ return_type = debug_get_return_type (info->dhandle,
+ return_type);
+ }
+
+ namcopy = savestring (name, namlen);
+ if (namcopy == NULL)
+ return FALSE;
+ if (! debug_record_function (info->dhandle, namcopy, return_type,
+ TRUE, offset))
+ return FALSE;
+ }
+ break;
+
+ case 5:
+ /* BB5: File name for source line numbers. */
+ {
+ unsigned int i;
+
+ /* We ignore the date and time. FIXME. */
+ for (i = 0; i < 6; i++)
+ {
+ bfd_vma ignore;
+ bfd_boolean present;
+
+ if (! ieee_read_optional_number (info, pp, &ignore, &present))
+ return FALSE;
+ if (! present)
+ break;
+ }
+
+ if (! info->saw_filename)
+ {
+ namcopy = savestring (name, namlen);
+ if (namcopy == NULL)
+ return FALSE;
+ if (! debug_set_filename (info->dhandle, namcopy))
+ return FALSE;
+ info->saw_filename = TRUE;
+ }
+
+ namcopy = savestring (name, namlen);
+ if (namcopy == NULL)
+ return FALSE;
+ if (! debug_start_source (info->dhandle, namcopy))
+ return FALSE;
+ }
+ break;
+
+ case 6:
+ /* BB6: Local function or block. */
+ {
+ bfd_vma stackspace, typindx, offset;
+
+ if (! ieee_read_number (info, pp, &stackspace)
+ || ! ieee_read_number (info, pp, &typindx)
+ || ! ieee_read_expression (info, pp, &offset))
+ return FALSE;
+
+ /* We have no way to record the stack space. FIXME. */
+
+ if (namlen == 0)
+ {
+ if (! debug_start_block (info->dhandle, offset))
+ return FALSE;
+ /* Change b to indicate that this is a block
+ rather than a function. */
+ b = 0x86;
+ }
+ else
+ {
+ /* The MRI C++ compiler will output a fake function named
+ __XRYCPP to hold C++ debugging information. We skip
+ that function. This is not crucial, but it makes
+ converting from IEEE to other debug formats work
+ better. */
+ if (strncmp (name, "__XRYCPP", namlen) == 0)
+ skip = TRUE;
+ else
+ {
+ debug_type return_type;
+
+ if (typindx < 256)
+ {
+ return_type = ieee_builtin_type (info, block_start,
+ typindx);
+ if (return_type == NULL)
+ return FALSE;
+ }
+ else
+ {
+ typindx -= 256;
+ if (! ieee_alloc_type (info, typindx, TRUE))
+ return FALSE;
+ fnindx = typindx;
+ return_type = info->types.types[typindx].type;
+ if (debug_get_type_kind (info->dhandle, return_type)
+ == DEBUG_KIND_FUNCTION)
+ return_type = debug_get_return_type (info->dhandle,
+ return_type);
+ }
+
+ namcopy = savestring (name, namlen);
+ if (namcopy == NULL)
+ return FALSE;
+ if (! debug_record_function (info->dhandle, namcopy,
+ return_type, FALSE, offset))
+ return FALSE;
+ }
+ }
+ }
+ break;
+
+ case 10:
+ /* BB10: Assembler module scope. In the normal case, we
+ completely ignore all this information. FIXME. */
+ {
+ const char *inam, *vstr;
+ unsigned long inamlen, vstrlen;
+ bfd_vma tool_type;
+ bfd_boolean present;
+ unsigned int i;
+
+ if (! info->saw_filename)
+ {
+ namcopy = savestring (name, namlen);
+ if (namcopy == NULL)
+ return FALSE;
+ if (! debug_set_filename (info->dhandle, namcopy))
+ return FALSE;
+ info->saw_filename = TRUE;
+ }
+
+ if (! ieee_read_id (info, pp, &inam, &inamlen)
+ || ! ieee_read_number (info, pp, &tool_type)
+ || ! ieee_read_optional_id (info, pp, &vstr, &vstrlen, &present))
+ return FALSE;
+ for (i = 0; i < 6; i++)
+ {
+ bfd_vma ignore;
+
+ if (! ieee_read_optional_number (info, pp, &ignore, &present))
+ return FALSE;
+ if (! present)
+ break;
+ }
+ }
+ break;
+
+ case 11:
+ /* BB11: Module section. We completely ignore all this
+ information. FIXME. */
+ {
+ bfd_vma sectype, secindx, offset, map;
+ bfd_boolean present;
+
+ if (! ieee_read_number (info, pp, &sectype)
+ || ! ieee_read_number (info, pp, &secindx)
+ || ! ieee_read_expression (info, pp, &offset)
+ || ! ieee_read_optional_number (info, pp, &map, &present))
+ return FALSE;
+ }
+ break;
+
+ default:
+ ieee_error (info, block_start, _("unknown BB type"));
+ return FALSE;
+ }
+
+
+ /* Push this block on the block stack. */
+
+ if (info->blockstack.bsp >= info->blockstack.stack + BLOCKSTACK_SIZE)
+ {
+ ieee_error (info, (const bfd_byte *) NULL, _("stack overflow"));
+ return FALSE;
+ }
+
+ info->blockstack.bsp->kind = b;
+ if (b == 5)
+ info->blockstack.bsp->filename = namcopy;
+ info->blockstack.bsp->fnindx = fnindx;
+ info->blockstack.bsp->skip = skip;
+ ++info->blockstack.bsp;
+
+ return TRUE;
+}
+
+/* Handle an IEEE BE record. */
+
+static bfd_boolean
+parse_ieee_be (struct ieee_info *info, const bfd_byte **pp)
+{
+ bfd_vma offset;
+
+ if (info->blockstack.bsp <= info->blockstack.stack)
+ {
+ ieee_error (info, *pp, _("stack underflow"));
+ return FALSE;
+ }
+ --info->blockstack.bsp;
+
+ switch (info->blockstack.bsp->kind)
+ {
+ case 2:
+ /* When we end the global typedefs block, we copy out the
+ contents of info->vars. This is because the variable indices
+ may be reused in the local blocks. However, we need to
+ preserve them so that we can locate a function returning a
+ reference variable whose type is named in the global typedef
+ block. */
+ info->global_vars = ((struct ieee_vars *)
+ xmalloc (sizeof *info->global_vars));
+ info->global_vars->alloc = info->vars.alloc;
+ info->global_vars->vars = ((struct ieee_var *)
+ xmalloc (info->vars.alloc
+ * sizeof (*info->vars.vars)));
+ memcpy (info->global_vars->vars, info->vars.vars,
+ info->vars.alloc * sizeof (*info->vars.vars));
+
+ /* We also copy out the non builtin parts of info->types, since
+ the types are discarded when we start a new block. */
+ info->global_types = ((struct ieee_types *)
+ xmalloc (sizeof *info->global_types));
+ info->global_types->alloc = info->types.alloc;
+ info->global_types->types = ((struct ieee_type *)
+ xmalloc (info->types.alloc
+ * sizeof (*info->types.types)));
+ memcpy (info->global_types->types, info->types.types,
+ info->types.alloc * sizeof (*info->types.types));
+ memset (info->global_types->builtins, 0,
+ sizeof (info->global_types->builtins));
+
+ break;
+
+ case 4:
+ case 6:
+ if (! ieee_read_expression (info, pp, &offset))
+ return FALSE;
+ if (! info->blockstack.bsp->skip)
+ {
+ if (! debug_end_function (info->dhandle, offset + 1))
+ return FALSE;
+ }
+ break;
+
+ case 0x86:
+ /* This is BE6 when BB6 started a block rather than a local
+ function. */
+ if (! ieee_read_expression (info, pp, &offset))
+ return FALSE;
+ if (! debug_end_block (info->dhandle, offset + 1))
+ return FALSE;
+ break;
+
+ case 5:
+ /* When we end a BB5, we look up the stack for the last BB5, if
+ there is one, so that we can call debug_start_source. */
+ if (info->blockstack.bsp > info->blockstack.stack)
+ {
+ struct ieee_block *bl;
+
+ bl = info->blockstack.bsp;
+ do
+ {
+ --bl;
+ if (bl->kind == 5)
+ {
+ if (! debug_start_source (info->dhandle, bl->filename))
+ return FALSE;
+ break;
+ }
+ }
+ while (bl != info->blockstack.stack);
+ }
+ break;
+
+ case 11:
+ if (! ieee_read_expression (info, pp, &offset))
+ return FALSE;
+ /* We just ignore the module size. FIXME. */
+ break;
+
+ default:
+ /* Other block types do not have any trailing information. */
+ break;
+ }
+
+ return TRUE;
+}
+
+/* Parse an NN record. */
+
+static bfd_boolean
+parse_ieee_nn (struct ieee_info *info, const bfd_byte **pp)
+{
+ const bfd_byte *nn_start;
+ bfd_vma varindx;
+ const char *name;
+ unsigned long namlen;
+
+ nn_start = *pp;
+
+ if (! ieee_read_number (info, pp, &varindx)
+ || ! ieee_read_id (info, pp, &name, &namlen))
+ return FALSE;
+
+ if (varindx < 32)
+ {
+ ieee_error (info, nn_start, _("illegal variable index"));
+ return FALSE;
+ }
+ varindx -= 32;
+
+ if (varindx >= info->vars.alloc)
+ {
+ unsigned int alloc;
+
+ alloc = info->vars.alloc;
+ if (alloc == 0)
+ alloc = 4;
+ while (varindx >= alloc)
+ alloc *= 2;
+ info->vars.vars = ((struct ieee_var *)
+ xrealloc (info->vars.vars,
+ alloc * sizeof *info->vars.vars));
+ memset (info->vars.vars + info->vars.alloc, 0,
+ (alloc - info->vars.alloc) * sizeof *info->vars.vars);
+ info->vars.alloc = alloc;
+ }
+
+ info->vars.vars[varindx].name = name;
+ info->vars.vars[varindx].namlen = namlen;
+
+ return TRUE;
+}
+
+/* Parse a TY record. */
+
+static bfd_boolean
+parse_ieee_ty (struct ieee_info *info, const bfd_byte **pp)
+{
+ const bfd_byte *ty_start, *ty_var_start, *ty_code_start;
+ bfd_vma typeindx, varindx, tc;
+ void *dhandle;
+ bfd_boolean tag, typdef;
+ debug_type *arg_slots;
+ unsigned long type_bitsize;
+ debug_type type;
+
+ ty_start = *pp;
+
+ if (! ieee_read_number (info, pp, &typeindx))
+ return FALSE;
+
+ if (typeindx < 256)
+ {
+ ieee_error (info, ty_start, _("illegal type index"));
+ return FALSE;
+ }
+
+ typeindx -= 256;
+ if (! ieee_alloc_type (info, typeindx, FALSE))
+ return FALSE;
+
+ if (**pp != 0xce)
+ {
+ ieee_error (info, *pp, _("unknown TY code"));
+ return FALSE;
+ }
+ ++*pp;
+
+ ty_var_start = *pp;
+
+ if (! ieee_read_number (info, pp, &varindx))
+ return FALSE;
+
+ if (varindx < 32)
+ {
+ ieee_error (info, ty_var_start, _("illegal variable index"));
+ return FALSE;
+ }
+ varindx -= 32;
+
+ if (varindx >= info->vars.alloc || info->vars.vars[varindx].name == NULL)
+ {
+ ieee_error (info, ty_var_start, _("undefined variable in TY"));
+ return FALSE;
+ }
+
+ ty_code_start = *pp;
+
+ if (! ieee_read_number (info, pp, &tc))
+ return FALSE;
+
+ dhandle = info->dhandle;
+
+ tag = FALSE;
+ typdef = FALSE;
+ arg_slots = NULL;
+ type_bitsize = 0;
+ switch (tc)
+ {
+ default:
+ ieee_error (info, ty_code_start, _("unknown TY code"));
+ return FALSE;
+
+ case '!':
+ /* Unknown type, with size. We treat it as int. FIXME. */
+ {
+ bfd_vma size;
+
+ if (! ieee_read_number (info, pp, &size))
+ return FALSE;
+ type = debug_make_int_type (dhandle, size, FALSE);
+ }
+ break;
+
+ case 'A': /* Array. */
+ case 'a': /* FORTRAN array in column/row order. FIXME: Not
+ distinguished from normal array. */
+ {
+ debug_type ele_type;
+ bfd_vma lower, upper;
+
+ if (! ieee_read_type_index (info, pp, &ele_type)
+ || ! ieee_read_number (info, pp, &lower)
+ || ! ieee_read_number (info, pp, &upper))
+ return FALSE;
+ type = debug_make_array_type (dhandle, ele_type,
+ ieee_builtin_type (info, ty_code_start,
+ ((unsigned int)
+ builtin_int)),
+ (bfd_signed_vma) lower,
+ (bfd_signed_vma) upper,
+ FALSE);
+ }
+ break;
+
+ case 'E':
+ /* Simple enumeration. */
+ {
+ bfd_vma size;
+ unsigned int alloc;
+ const char **names;
+ unsigned int c;
+ bfd_signed_vma *vals;
+ unsigned int i;
+
+ if (! ieee_read_number (info, pp, &size))
+ return FALSE;
+ /* FIXME: we ignore the enumeration size. */
+
+ alloc = 10;
+ names = (const char **) xmalloc (alloc * sizeof *names);
+ memset (names, 0, alloc * sizeof *names);
+ c = 0;
+ while (1)
+ {
+ const char *name;
+ unsigned long namlen;
+ bfd_boolean present;
+
+ if (! ieee_read_optional_id (info, pp, &name, &namlen, &present))
+ return FALSE;
+ if (! present)
+ break;
+
+ if (c + 1 >= alloc)
+ {
+ alloc += 10;
+ names = ((const char **)
+ xrealloc (names, alloc * sizeof *names));
+ }
+
+ names[c] = savestring (name, namlen);
+ if (names[c] == NULL)
+ return FALSE;
+ ++c;
+ }
+
+ names[c] = NULL;
+
+ vals = (bfd_signed_vma *) xmalloc (c * sizeof *vals);
+ for (i = 0; i < c; i++)
+ vals[i] = i;
+
+ type = debug_make_enum_type (dhandle, names, vals);
+ tag = TRUE;
+ }
+ break;
+
+ case 'G':
+ /* Struct with bit fields. */
+ {
+ bfd_vma size;
+ unsigned int alloc;
+ debug_field *fields;
+ unsigned int c;
+
+ if (! ieee_read_number (info, pp, &size))
+ return FALSE;
+
+ alloc = 10;
+ fields = (debug_field *) xmalloc (alloc * sizeof *fields);
+ c = 0;
+ while (1)
+ {
+ const char *name;
+ unsigned long namlen;
+ bfd_boolean present;
+ debug_type ftype;
+ bfd_vma bitpos, bitsize;
+
+ if (! ieee_read_optional_id (info, pp, &name, &namlen, &present))
+ return FALSE;
+ if (! present)
+ break;
+ if (! ieee_read_type_index (info, pp, &ftype)
+ || ! ieee_read_number (info, pp, &bitpos)
+ || ! ieee_read_number (info, pp, &bitsize))
+ return FALSE;
+
+ if (c + 1 >= alloc)
+ {
+ alloc += 10;
+ fields = ((debug_field *)
+ xrealloc (fields, alloc * sizeof *fields));
+ }
+
+ fields[c] = debug_make_field (dhandle, savestring (name, namlen),
+ ftype, bitpos, bitsize,
+ DEBUG_VISIBILITY_PUBLIC);
+ if (fields[c] == NULL)
+ return FALSE;
+ ++c;
+ }
+
+ fields[c] = NULL;
+
+ type = debug_make_struct_type (dhandle, TRUE, size, fields);
+ tag = TRUE;
+ }
+ break;
+
+ case 'N':
+ /* Enumeration. */
+ {
+ unsigned int alloc;
+ const char **names;
+ bfd_signed_vma *vals;
+ unsigned int c;
+
+ alloc = 10;
+ names = (const char **) xmalloc (alloc * sizeof *names);
+ vals = (bfd_signed_vma *) xmalloc (alloc * sizeof *names);
+ c = 0;
+ while (1)
+ {
+ const char *name;
+ unsigned long namlen;
+ bfd_boolean present;
+ bfd_vma val;
+
+ if (! ieee_read_optional_id (info, pp, &name, &namlen, &present))
+ return FALSE;
+ if (! present)
+ break;
+ if (! ieee_read_number (info, pp, &val))
+ return FALSE;
+
+ /* If the length of the name is zero, then the value is
+ actually the size of the enum. We ignore this
+ information. FIXME. */
+ if (namlen == 0)
+ continue;
+
+ if (c + 1 >= alloc)
+ {
+ alloc += 10;
+ names = ((const char **)
+ xrealloc (names, alloc * sizeof *names));
+ vals = ((bfd_signed_vma *)
+ xrealloc (vals, alloc * sizeof *vals));
+ }
+
+ names[c] = savestring (name, namlen);
+ if (names[c] == NULL)
+ return FALSE;
+ vals[c] = (bfd_signed_vma) val;
+ ++c;
+ }
+
+ names[c] = NULL;
+
+ type = debug_make_enum_type (dhandle, names, vals);
+ tag = TRUE;
+ }
+ break;
+
+ case 'O': /* Small pointer. We don't distinguish small and large
+ pointers. FIXME. */
+ case 'P': /* Large pointer. */
+ {
+ debug_type t;
+
+ if (! ieee_read_type_index (info, pp, &t))
+ return FALSE;
+ type = debug_make_pointer_type (dhandle, t);
+ }
+ break;
+
+ case 'R':
+ /* Range. */
+ {
+ bfd_vma low, high, signedp, size;
+
+ if (! ieee_read_number (info, pp, &low)
+ || ! ieee_read_number (info, pp, &high)
+ || ! ieee_read_number (info, pp, &signedp)
+ || ! ieee_read_number (info, pp, &size))
+ return FALSE;
+
+ type = debug_make_range_type (dhandle,
+ debug_make_int_type (dhandle, size,
+ ! signedp),
+ (bfd_signed_vma) low,
+ (bfd_signed_vma) high);
+ }
+ break;
+
+ case 'S': /* Struct. */
+ case 'U': /* Union. */
+ {
+ bfd_vma size;
+ unsigned int alloc;
+ debug_field *fields;
+ unsigned int c;
+
+ if (! ieee_read_number (info, pp, &size))
+ return FALSE;
+
+ alloc = 10;
+ fields = (debug_field *) xmalloc (alloc * sizeof *fields);
+ c = 0;
+ while (1)
+ {
+ const char *name;
+ unsigned long namlen;
+ bfd_boolean present;
+ bfd_vma tindx;
+ bfd_vma offset;
+ debug_type ftype;
+ bfd_vma bitsize;
+
+ if (! ieee_read_optional_id (info, pp, &name, &namlen, &present))
+ return FALSE;
+ if (! present)
+ break;
+ if (! ieee_read_number (info, pp, &tindx)
+ || ! ieee_read_number (info, pp, &offset))
+ return FALSE;
+
+ if (tindx < 256)
+ {
+ ftype = ieee_builtin_type (info, ty_code_start, tindx);
+ bitsize = 0;
+ offset *= 8;
+ }
+ else
+ {
+ struct ieee_type *t;
+
+ tindx -= 256;
+ if (! ieee_alloc_type (info, tindx, TRUE))
+ return FALSE;
+ t = info->types.types + tindx;
+ ftype = t->type;
+ bitsize = t->bitsize;
+ if (bitsize == 0)
+ offset *= 8;
+ }
+
+ if (c + 1 >= alloc)
+ {
+ alloc += 10;
+ fields = ((debug_field *)
+ xrealloc (fields, alloc * sizeof *fields));
+ }
+
+ fields[c] = debug_make_field (dhandle, savestring (name, namlen),
+ ftype, offset, bitsize,
+ DEBUG_VISIBILITY_PUBLIC);
+ if (fields[c] == NULL)
+ return FALSE;
+ ++c;
+ }
+
+ fields[c] = NULL;
+
+ type = debug_make_struct_type (dhandle, tc == 'S', size, fields);
+ tag = TRUE;
+ }
+ break;
+
+ case 'T':
+ /* Typedef. */
+ if (! ieee_read_type_index (info, pp, &type))
+ return FALSE;
+ typdef = TRUE;
+ break;
+
+ case 'X':
+ /* Procedure. FIXME: This is an extern declaration, which we
+ have no way of representing. */
+ {
+ bfd_vma attr;
+ debug_type rtype;
+ bfd_vma nargs;
+ bfd_boolean present;
+ struct ieee_var *pv;
+
+ /* FIXME: We ignore the attribute and the argument names. */
+
+ if (! ieee_read_number (info, pp, &attr)
+ || ! ieee_read_type_index (info, pp, &rtype)
+ || ! ieee_read_number (info, pp, &nargs))
+ return FALSE;
+ do
+ {
+ const char *name;
+ unsigned long namlen;
+
+ if (! ieee_read_optional_id (info, pp, &name, &namlen, &present))
+ return FALSE;
+ }
+ while (present);
+
+ pv = info->vars.vars + varindx;
+ pv->kind = IEEE_EXTERNAL;
+ if (pv->namlen > 0
+ && debug_get_type_kind (dhandle, rtype) == DEBUG_KIND_POINTER)
+ {
+ /* Set up the return type as an indirect type pointing to
+ the variable slot, so that we can change it to a
+ reference later if appropriate. */
+ pv->pslot = (debug_type *) xmalloc (sizeof *pv->pslot);
+ *pv->pslot = rtype;
+ rtype = debug_make_indirect_type (dhandle, pv->pslot,
+ (const char *) NULL);
+ }
+
+ type = debug_make_function_type (dhandle, rtype, (debug_type *) NULL,
+ FALSE);
+ }
+ break;
+
+ case 'V':
+ case 'v':
+ /* Void. This is not documented, but the MRI compiler emits it. */
+ type = debug_make_void_type (dhandle);
+ break;
+
+ case 'Z':
+ /* Array with 0 lower bound. */
+ {
+ debug_type etype;
+ bfd_vma high;
+
+ if (! ieee_read_type_index (info, pp, &etype)
+ || ! ieee_read_number (info, pp, &high))
+ return FALSE;
+
+ type = debug_make_array_type (dhandle, etype,
+ ieee_builtin_type (info, ty_code_start,
+ ((unsigned int)
+ builtin_int)),
+ 0, (bfd_signed_vma) high, FALSE);
+ }
+ break;
+
+ case 'c': /* Complex. */
+ case 'd': /* Double complex. */
+ {
+ const char *name;
+ unsigned long namlen;
+
+ /* FIXME: I don't know what the name means. */
+
+ if (! ieee_read_id (info, pp, &name, &namlen))
+ return FALSE;
+
+ type = debug_make_complex_type (dhandle, tc == 'c' ? 4 : 8);
+ }
+ break;
+
+ case 'f':
+ /* Pascal file name. FIXME. */
+ ieee_error (info, ty_code_start, _("Pascal file name not supported"));
+ return FALSE;
+
+ case 'g':
+ /* Bitfield type. */
+ {
+ bfd_vma signedp, bitsize, dummy;
+ const bfd_byte *hold;
+ bfd_boolean present;
+
+ if (! ieee_read_number (info, pp, &signedp)
+ || ! ieee_read_number (info, pp, &bitsize))
+ return FALSE;
+
+ /* I think the documentation says that there is a type index,
+ but some actual files do not have one. */
+ hold = *pp;
+ if (! ieee_read_optional_number (info, pp, &dummy, &present))
+ return FALSE;
+ if (! present)
+ {
+ /* FIXME: This is just a guess. */
+ type = debug_make_int_type (dhandle, 4,
+ signedp ? FALSE : TRUE);
+ }
+ else
+ {
+ *pp = hold;
+ if (! ieee_read_type_index (info, pp, &type))
+ return FALSE;
+ }
+ type_bitsize = bitsize;
+ }
+ break;
+
+ case 'n':
+ /* Qualifier. */
+ {
+ bfd_vma kind;
+ debug_type t;
+
+ if (! ieee_read_number (info, pp, &kind)
+ || ! ieee_read_type_index (info, pp, &t))
+ return FALSE;
+
+ switch (kind)
+ {
+ default:
+ ieee_error (info, ty_start, _("unsupported qualifier"));
+ return FALSE;
+
+ case 1:
+ type = debug_make_const_type (dhandle, t);
+ break;
+
+ case 2:
+ type = debug_make_volatile_type (dhandle, t);
+ break;
+ }
+ }
+ break;
+
+ case 's':
+ /* Set. */
+ {
+ bfd_vma size;
+ debug_type etype;
+
+ if (! ieee_read_number (info, pp, &size)
+ || ! ieee_read_type_index (info, pp, &etype))
+ return FALSE;
+
+ /* FIXME: We ignore the size. */
+
+ type = debug_make_set_type (dhandle, etype, FALSE);
+ }
+ break;
+
+ case 'x':
+ /* Procedure with compiler dependencies. */
+ {
+ struct ieee_var *pv;
+ bfd_vma attr, frame_type, push_mask, nargs, level, father;
+ debug_type rtype;
+ debug_type *arg_types;
+ bfd_boolean varargs;
+ bfd_boolean present;
+
+ /* FIXME: We ignore some of this information. */
+
+ pv = info->vars.vars + varindx;
+
+ if (! ieee_read_number (info, pp, &attr)
+ || ! ieee_read_number (info, pp, &frame_type)
+ || ! ieee_read_number (info, pp, &push_mask)
+ || ! ieee_read_type_index (info, pp, &rtype)
+ || ! ieee_read_number (info, pp, &nargs))
+ return FALSE;
+ if (nargs == (bfd_vma) -1)
+ {
+ arg_types = NULL;
+ varargs = FALSE;
+ }
+ else
+ {
+ unsigned int i;
+
+ arg_types = ((debug_type *)
+ xmalloc ((nargs + 1) * sizeof *arg_types));
+ for (i = 0; i < nargs; i++)
+ if (! ieee_read_type_index (info, pp, arg_types + i))
+ return FALSE;
+
+ /* If the last type is pointer to void, this is really a
+ varargs function. */
+ varargs = FALSE;
+ if (nargs > 0)
+ {
+ debug_type last;
+
+ last = arg_types[nargs - 1];
+ if (debug_get_type_kind (dhandle, last) == DEBUG_KIND_POINTER
+ && (debug_get_type_kind (dhandle,
+ debug_get_target_type (dhandle,
+ last))
+ == DEBUG_KIND_VOID))
+ {
+ --nargs;
+ varargs = TRUE;
+ }
+ }
+
+ /* If there are any pointer arguments, turn them into
+ indirect types in case we later need to convert them to
+ reference types. */
+ for (i = 0; i < nargs; i++)
+ {
+ if (debug_get_type_kind (dhandle, arg_types[i])
+ == DEBUG_KIND_POINTER)
+ {
+ if (arg_slots == NULL)
+ {
+ arg_slots = ((debug_type *)
+ xmalloc (nargs * sizeof *arg_slots));
+ memset (arg_slots, 0, nargs * sizeof *arg_slots);
+ }
+ arg_slots[i] = arg_types[i];
+ arg_types[i] =
+ debug_make_indirect_type (dhandle,
+ arg_slots + i,
+ (const char *) NULL);
+ }
+ }
+
+ arg_types[nargs] = DEBUG_TYPE_NULL;
+ }
+ if (! ieee_read_number (info, pp, &level)
+ || ! ieee_read_optional_number (info, pp, &father, &present))
+ return FALSE;
+
+ /* We can't distinguish between a global function and a static
+ function. */
+ pv->kind = IEEE_FUNCTION;
+
+ if (pv->namlen > 0
+ && debug_get_type_kind (dhandle, rtype) == DEBUG_KIND_POINTER)
+ {
+ /* Set up the return type as an indirect type pointing to
+ the variable slot, so that we can change it to a
+ reference later if appropriate. */
+ pv->pslot = (debug_type *) xmalloc (sizeof *pv->pslot);
+ *pv->pslot = rtype;
+ rtype = debug_make_indirect_type (dhandle, pv->pslot,
+ (const char *) NULL);
+ }
+
+ type = debug_make_function_type (dhandle, rtype, arg_types, varargs);
+ }
+ break;
+ }
+
+ /* Record the type in the table. */
+
+ if (type == DEBUG_TYPE_NULL)
+ return FALSE;
+
+ info->vars.vars[varindx].type = type;
+
+ if ((tag || typdef)
+ && info->vars.vars[varindx].namlen > 0)
+ {
+ const char *name;
+
+ name = savestring (info->vars.vars[varindx].name,
+ info->vars.vars[varindx].namlen);
+ if (typdef)
+ type = debug_name_type (dhandle, name, type);
+ else if (tc == 'E' || tc == 'N')
+ type = debug_tag_type (dhandle, name, type);
+ else
+ {
+ struct ieee_tag *it;
+
+ /* We must allocate all struct tags as indirect types, so
+ that if we later see a definition of the tag as a C++
+ record we can update the indirect slot and automatically
+ change all the existing references. */
+ it = (struct ieee_tag *) xmalloc (sizeof *it);
+ memset (it, 0, sizeof *it);
+ it->next = info->tags;
+ info->tags = it;
+ it->name = name;
+ it->slot = type;
+
+ type = debug_make_indirect_type (dhandle, &it->slot, name);
+ type = debug_tag_type (dhandle, name, type);
+
+ it->type = type;
+ }
+ if (type == NULL)
+ return FALSE;
+ }
+
+ info->types.types[typeindx].type = type;
+ info->types.types[typeindx].arg_slots = arg_slots;
+ info->types.types[typeindx].bitsize = type_bitsize;
+
+ /* We may have already allocated type as an indirect type pointing
+ to slot. It does no harm to replace the indirect type with the
+ real type. Filling in slot as well handles the indirect types
+ which are already hanging around. */
+ if (info->types.types[typeindx].pslot != NULL)
+ *info->types.types[typeindx].pslot = type;
+
+ return TRUE;
+}
+
+/* Parse an ATN record. */
+
+static bfd_boolean
+parse_ieee_atn (struct ieee_info *info, const bfd_byte **pp)
+{
+ const bfd_byte *atn_start, *atn_code_start;
+ bfd_vma varindx;
+ struct ieee_var *pvar;
+ debug_type type;
+ bfd_vma atn_code;
+ void *dhandle;
+ bfd_vma v, v2, v3, v4, v5;
+ const char *name;
+ unsigned long namlen;
+ char *namcopy;
+ bfd_boolean present;
+ int blocktype;
+
+ atn_start = *pp;
+
+ if (! ieee_read_number (info, pp, &varindx)
+ || ! ieee_read_type_index (info, pp, &type))
+ return FALSE;
+
+ atn_code_start = *pp;
+
+ if (! ieee_read_number (info, pp, &atn_code))
+ return FALSE;
+
+ if (varindx == 0)
+ {
+ pvar = NULL;
+ name = "";
+ namlen = 0;
+ }
+ else if (varindx < 32)
+ {
+ /* The MRI compiler reportedly sometimes emits variable lifetime
+ information for a register. We just ignore it. */
+ if (atn_code == 9)
+ return ieee_read_number (info, pp, &v);
+
+ ieee_error (info, atn_start, _("illegal variable index"));
+ return FALSE;
+ }
+ else
+ {
+ varindx -= 32;
+ if (varindx >= info->vars.alloc
+ || info->vars.vars[varindx].name == NULL)
+ {
+ /* The MRI compiler or linker sometimes omits the NN record
+ for a pmisc record. */
+ if (atn_code == 62)
+ {
+ if (varindx >= info->vars.alloc)
+ {
+ unsigned int alloc;
+
+ alloc = info->vars.alloc;
+ if (alloc == 0)
+ alloc = 4;
+ while (varindx >= alloc)
+ alloc *= 2;
+ info->vars.vars = ((struct ieee_var *)
+ xrealloc (info->vars.vars,
+ (alloc
+ * sizeof *info->vars.vars)));
+ memset (info->vars.vars + info->vars.alloc, 0,
+ ((alloc - info->vars.alloc)
+ * sizeof *info->vars.vars));
+ info->vars.alloc = alloc;
+ }
+
+ pvar = info->vars.vars + varindx;
+ pvar->name = "";
+ pvar->namlen = 0;
+ }
+ else
+ {
+ ieee_error (info, atn_start, _("undefined variable in ATN"));
+ return FALSE;
+ }
+ }
+
+ pvar = info->vars.vars + varindx;
+
+ pvar->type = type;
+
+ name = pvar->name;
+ namlen = pvar->namlen;
+ }
+
+ dhandle = info->dhandle;
+
+ /* If we are going to call debug_record_variable with a pointer
+ type, change the type to an indirect type so that we can later
+ change it to a reference type if we encounter a C++ pmisc 'R'
+ record. */
+ if (pvar != NULL
+ && type != DEBUG_TYPE_NULL
+ && debug_get_type_kind (dhandle, type) == DEBUG_KIND_POINTER)
+ {
+ switch (atn_code)
+ {
+ case 1:
+ case 2:
+ case 3:
+ case 5:
+ case 8:
+ case 10:
+ pvar->pslot = (debug_type *) xmalloc (sizeof *pvar->pslot);
+ *pvar->pslot = type;
+ type = debug_make_indirect_type (dhandle, pvar->pslot,
+ (const char *) NULL);
+ pvar->type = type;
+ break;
+ }
+ }
+
+ switch (atn_code)
+ {
+ default:
+ ieee_error (info, atn_code_start, _("unknown ATN type"));
+ return FALSE;
+
+ case 1:
+ /* Automatic variable. */
+ if (! ieee_read_number (info, pp, &v))
+ return FALSE;
+ namcopy = savestring (name, namlen);
+ if (type == NULL)
+ type = debug_make_void_type (dhandle);
+ if (pvar != NULL)
+ pvar->kind = IEEE_LOCAL;
+ return debug_record_variable (dhandle, namcopy, type, DEBUG_LOCAL, v);
+
+ case 2:
+ /* Register variable. */
+ if (! ieee_read_number (info, pp, &v))
+ return FALSE;
+ namcopy = savestring (name, namlen);
+ if (type == NULL)
+ type = debug_make_void_type (dhandle);
+ if (pvar != NULL)
+ pvar->kind = IEEE_LOCAL;
+ return debug_record_variable (dhandle, namcopy, type, DEBUG_REGISTER,
+ ieee_regno_to_genreg (info->abfd, v));
+
+ case 3:
+ /* Static variable. */
+ if (! ieee_require_asn (info, pp, &v))
+ return FALSE;
+ namcopy = savestring (name, namlen);
+ if (type == NULL)
+ type = debug_make_void_type (dhandle);
+ if (info->blockstack.bsp <= info->blockstack.stack)
+ blocktype = 0;
+ else
+ blocktype = info->blockstack.bsp[-1].kind;
+ if (pvar != NULL)
+ {
+ if (blocktype == 4 || blocktype == 6)
+ pvar->kind = IEEE_LOCAL;
+ else
+ pvar->kind = IEEE_STATIC;
+ }
+ return debug_record_variable (dhandle, namcopy, type,
+ (blocktype == 4 || blocktype == 6
+ ? DEBUG_LOCAL_STATIC
+ : DEBUG_STATIC),
+ v);
+
+ case 4:
+ /* External function. We don't currently record these. FIXME. */
+ if (pvar != NULL)
+ pvar->kind = IEEE_EXTERNAL;
+ return TRUE;
+
+ case 5:
+ /* External variable. We don't currently record these. FIXME. */
+ if (pvar != NULL)
+ pvar->kind = IEEE_EXTERNAL;
+ return TRUE;
+
+ case 7:
+ if (! ieee_read_number (info, pp, &v)
+ || ! ieee_read_number (info, pp, &v2)
+ || ! ieee_read_optional_number (info, pp, &v3, &present))
+ return FALSE;
+ if (present)
+ {
+ if (! ieee_read_optional_number (info, pp, &v4, &present))
+ return FALSE;
+ }
+
+ /* We just ignore the two optional fields in v3 and v4, since
+ they are not defined. */
+
+ if (! ieee_require_asn (info, pp, &v3))
+ return FALSE;
+
+ /* We have no way to record the column number. FIXME. */
+
+ return debug_record_line (dhandle, v, v3);
+
+ case 8:
+ /* Global variable. */
+ if (! ieee_require_asn (info, pp, &v))
+ return FALSE;
+ namcopy = savestring (name, namlen);
+ if (type == NULL)
+ type = debug_make_void_type (dhandle);
+ if (pvar != NULL)
+ pvar->kind = IEEE_GLOBAL;
+ return debug_record_variable (dhandle, namcopy, type, DEBUG_GLOBAL, v);
+
+ case 9:
+ /* Variable lifetime information. */
+ if (! ieee_read_number (info, pp, &v))
+ return FALSE;
+
+ /* We have no way to record this information. FIXME. */
+ return TRUE;
+
+ case 10:
+ /* Locked register. The spec says that there are two required
+ fields, but at least on occasion the MRI compiler only emits
+ one. */
+ if (! ieee_read_number (info, pp, &v)
+ || ! ieee_read_optional_number (info, pp, &v2, &present))
+ return FALSE;
+
+ /* I think this means a variable that is both in a register and
+ a frame slot. We ignore the frame slot. FIXME. */
+
+ namcopy = savestring (name, namlen);
+ if (type == NULL)
+ type = debug_make_void_type (dhandle);
+ if (pvar != NULL)
+ pvar->kind = IEEE_LOCAL;
+ return debug_record_variable (dhandle, namcopy, type, DEBUG_REGISTER, v);
+
+ case 11:
+ /* Reserved for FORTRAN common. */
+ ieee_error (info, atn_code_start, _("unsupported ATN11"));
+
+ /* Return TRUE to keep going. */
+ return TRUE;
+
+ case 12:
+ /* Based variable. */
+ v3 = 0;
+ v4 = 0x80;
+ v5 = 0;
+ if (! ieee_read_number (info, pp, &v)
+ || ! ieee_read_number (info, pp, &v2)
+ || ! ieee_read_optional_number (info, pp, &v3, &present))
+ return FALSE;
+ if (present)
+ {
+ if (! ieee_read_optional_number (info, pp, &v4, &present))
+ return FALSE;
+ if (present)
+ {
+ if (! ieee_read_optional_number (info, pp, &v5, &present))
+ return FALSE;
+ }
+ }
+
+ /* We have no way to record this information. FIXME. */
+
+ ieee_error (info, atn_code_start, _("unsupported ATN12"));
+
+ /* Return TRUE to keep going. */
+ return TRUE;
+
+ case 16:
+ /* Constant. The description of this that I have is ambiguous,
+ so I'm not going to try to implement it. */
+ if (! ieee_read_number (info, pp, &v)
+ || ! ieee_read_optional_number (info, pp, &v2, &present))
+ return FALSE;
+ if (present)
+ {
+ if (! ieee_read_optional_number (info, pp, &v2, &present))
+ return FALSE;
+ if (present)
+ {
+ if (! ieee_read_optional_id (info, pp, &name, &namlen, &present))
+ return FALSE;
+ }
+ }
+
+ if ((ieee_record_enum_type) **pp == ieee_e2_first_byte_enum)
+ {
+ if (! ieee_require_asn (info, pp, &v3))
+ return FALSE;
+ }
+
+ return TRUE;
+
+ case 19:
+ /* Static variable from assembler. */
+ v2 = 0;
+ if (! ieee_read_number (info, pp, &v)
+ || ! ieee_read_optional_number (info, pp, &v2, &present)
+ || ! ieee_require_asn (info, pp, &v3))
+ return FALSE;
+ namcopy = savestring (name, namlen);
+ /* We don't really handle this correctly. FIXME. */
+ return debug_record_variable (dhandle, namcopy,
+ debug_make_void_type (dhandle),
+ v2 != 0 ? DEBUG_GLOBAL : DEBUG_STATIC,
+ v3);
+
+ case 62:
+ /* Procedure miscellaneous information. */
+ case 63:
+ /* Variable miscellaneous information. */
+ case 64:
+ /* Module miscellaneous information. */
+ if (! ieee_read_number (info, pp, &v)
+ || ! ieee_read_number (info, pp, &v2)
+ || ! ieee_read_optional_id (info, pp, &name, &namlen, &present))
+ return FALSE;
+
+ if (atn_code == 62 && v == 80)
+ {
+ if (present)
+ {
+ ieee_error (info, atn_code_start,
+ _("unexpected string in C++ misc"));
+ return FALSE;
+ }
+ return ieee_read_cxx_misc (info, pp, v2);
+ }
+
+ /* We just ignore all of this stuff. FIXME. */
+
+ for (; v2 > 0; --v2)
+ {
+ switch ((ieee_record_enum_type) **pp)
+ {
+ default:
+ ieee_error (info, *pp, _("bad misc record"));
+ return FALSE;
+
+ case ieee_at_record_enum:
+ if (! ieee_require_atn65 (info, pp, &name, &namlen))
+ return FALSE;
+ break;
+
+ case ieee_e2_first_byte_enum:
+ if (! ieee_require_asn (info, pp, &v3))
+ return FALSE;
+ break;
+ }
+ }
+
+ return TRUE;
+ }
+
+ /*NOTREACHED*/
+}
+
+/* Handle C++ debugging miscellaneous records. This is called for
+ procedure miscellaneous records of type 80. */
+
+static bfd_boolean
+ieee_read_cxx_misc (struct ieee_info *info, const bfd_byte **pp,
+ unsigned long count)
+{
+ const bfd_byte *start;
+ bfd_vma category;
+
+ start = *pp;
+
+ /* Get the category of C++ misc record. */
+ if (! ieee_require_asn (info, pp, &category))
+ return FALSE;
+ --count;
+
+ switch (category)
+ {
+ default:
+ ieee_error (info, start, _("unrecognized C++ misc record"));
+ return FALSE;
+
+ case 'T':
+ if (! ieee_read_cxx_class (info, pp, count))
+ return FALSE;
+ break;
+
+ case 'M':
+ {
+ bfd_vma flags;
+ const char *name;
+ unsigned long namlen;
+
+ /* The IEEE spec indicates that the 'M' record only has a
+ flags field. The MRI compiler also emits the name of the
+ function. */
+
+ if (! ieee_require_asn (info, pp, &flags))
+ return FALSE;
+ if (*pp < info->pend
+ && (ieee_record_enum_type) **pp == ieee_at_record_enum)
+ {
+ if (! ieee_require_atn65 (info, pp, &name, &namlen))
+ return FALSE;
+ }
+
+ /* This is emitted for method functions, but I don't think we
+ care very much. It might help if it told us useful
+ information like the class with which this function is
+ associated, but it doesn't, so it isn't helpful. */
+ }
+ break;
+
+ case 'B':
+ if (! ieee_read_cxx_defaults (info, pp, count))
+ return FALSE;
+ break;
+
+ case 'z':
+ {
+ const char *name, *mangled, *cxx_class;
+ unsigned long namlen, mangledlen, classlen;
+ bfd_vma control;
+
+ /* Pointer to member. */
+
+ if (! ieee_require_atn65 (info, pp, &name, &namlen)
+ || ! ieee_require_atn65 (info, pp, &mangled, &mangledlen)
+ || ! ieee_require_atn65 (info, pp, &cxx_class, &classlen)
+ || ! ieee_require_asn (info, pp, &control))
+ return FALSE;
+
+ /* FIXME: We should now track down name and change its type. */
+ }
+ break;
+
+ case 'R':
+ if (! ieee_read_reference (info, pp))
+ return FALSE;
+ break;
+ }
+
+ return TRUE;
+}
+
+/* Read a C++ class definition. This is a pmisc type 80 record of
+ category 'T'. */
+
+static bfd_boolean
+ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
+ unsigned long count)
+{
+ const bfd_byte *start;
+ bfd_vma cxx_class;
+ const char *tag;
+ unsigned long taglen;
+ struct ieee_tag *it;
+ void *dhandle;
+ debug_field *fields;
+ unsigned int field_count, field_alloc;
+ debug_baseclass *baseclasses;
+ unsigned int baseclasses_count, baseclasses_alloc;
+ const debug_field *structfields;
+ struct ieee_method
+ {
+ const char *name;
+ unsigned long namlen;
+ debug_method_variant *variants;
+ unsigned count;
+ unsigned int alloc;
+ } *methods;
+ unsigned int methods_count, methods_alloc;
+ debug_type vptrbase;
+ bfd_boolean ownvptr;
+ debug_method *dmethods;
+
+ start = *pp;
+
+ if (! ieee_require_asn (info, pp, &cxx_class))
+ return FALSE;
+ --count;
+
+ if (! ieee_require_atn65 (info, pp, &tag, &taglen))
+ return FALSE;
+ --count;
+
+ /* Find the C struct with this name. */
+ for (it = info->tags; it != NULL; it = it->next)
+ if (it->name[0] == tag[0]
+ && strncmp (it->name, tag, taglen) == 0
+ && strlen (it->name) == taglen)
+ break;
+ if (it == NULL)
+ {
+ ieee_error (info, start, _("undefined C++ object"));
+ return FALSE;
+ }
+
+ dhandle = info->dhandle;
+
+ fields = NULL;
+ field_count = 0;
+ field_alloc = 0;
+ baseclasses = NULL;
+ baseclasses_count = 0;
+ baseclasses_alloc = 0;
+ methods = NULL;
+ methods_count = 0;
+ methods_alloc = 0;
+ vptrbase = DEBUG_TYPE_NULL;
+ ownvptr = FALSE;
+
+ structfields = debug_get_fields (dhandle, it->type);
+
+ while (count > 0)
+ {
+ bfd_vma id;
+ const bfd_byte *spec_start;
+
+ spec_start = *pp;
+
+ if (! ieee_require_asn (info, pp, &id))
+ return FALSE;
+ --count;
+
+ switch (id)
+ {
+ default:
+ ieee_error (info, spec_start, _("unrecognized C++ object spec"));
+ return FALSE;
+
+ case 'b':
+ {
+ bfd_vma flags, cinline;
+ const char *base, *fieldname;
+ unsigned long baselen, fieldlen;
+ char *basecopy;
+ debug_type basetype;
+ bfd_vma bitpos;
+ bfd_boolean virtualp;
+ enum debug_visibility visibility;
+ debug_baseclass baseclass;
+
+ /* This represents a base or friend class. */
+
+ if (! ieee_require_asn (info, pp, &flags)
+ || ! ieee_require_atn65 (info, pp, &base, &baselen)
+ || ! ieee_require_asn (info, pp, &cinline)
+ || ! ieee_require_atn65 (info, pp, &fieldname, &fieldlen))
+ return FALSE;
+ count -= 4;
+
+ /* We have no way of recording friend information, so we
+ just ignore it. */
+ if ((flags & BASEFLAGS_FRIEND) != 0)
+ break;
+
+ /* I assume that either all of the members of the
+ baseclass are included in the object, starting at the
+ beginning of the object, or that none of them are
+ included. */
+
+ if ((fieldlen == 0) == (cinline == 0))
+ {
+ ieee_error (info, start, _("unsupported C++ object type"));
+ return FALSE;
+ }
+
+ basecopy = savestring (base, baselen);
+ basetype = debug_find_tagged_type (dhandle, basecopy,
+ DEBUG_KIND_ILLEGAL);
+ free (basecopy);
+ if (basetype == DEBUG_TYPE_NULL)
+ {
+ ieee_error (info, start, _("C++ base class not defined"));
+ return FALSE;
+ }
+
+ if (fieldlen == 0)
+ bitpos = 0;
+ else
+ {
+ const debug_field *pf;
+
+ if (structfields == NULL)
+ {
+ ieee_error (info, start, _("C++ object has no fields"));
+ return FALSE;
+ }
+
+ for (pf = structfields; *pf != DEBUG_FIELD_NULL; pf++)
+ {
+ const char *fname;
+
+ fname = debug_get_field_name (dhandle, *pf);
+ if (fname == NULL)
+ return FALSE;
+ if (fname[0] == fieldname[0]
+ && strncmp (fname, fieldname, fieldlen) == 0
+ && strlen (fname) == fieldlen)
+ break;
+ }
+ if (*pf == DEBUG_FIELD_NULL)
+ {
+ ieee_error (info, start,
+ _("C++ base class not found in container"));
+ return FALSE;
+ }
+
+ bitpos = debug_get_field_bitpos (dhandle, *pf);
+ }
+
+ if ((flags & BASEFLAGS_VIRTUAL) != 0)
+ virtualp = TRUE;
+ else
+ virtualp = FALSE;
+ if ((flags & BASEFLAGS_PRIVATE) != 0)
+ visibility = DEBUG_VISIBILITY_PRIVATE;
+ else
+ visibility = DEBUG_VISIBILITY_PUBLIC;
+
+ baseclass = debug_make_baseclass (dhandle, basetype, bitpos,
+ virtualp, visibility);
+ if (baseclass == DEBUG_BASECLASS_NULL)
+ return FALSE;
+
+ if (baseclasses_count + 1 >= baseclasses_alloc)
+ {
+ baseclasses_alloc += 10;
+ baseclasses = ((debug_baseclass *)
+ xrealloc (baseclasses,
+ (baseclasses_alloc
+ * sizeof *baseclasses)));
+ }
+
+ baseclasses[baseclasses_count] = baseclass;
+ ++baseclasses_count;
+ baseclasses[baseclasses_count] = DEBUG_BASECLASS_NULL;
+ }
+ break;
+
+ case 'd':
+ {
+ bfd_vma flags;
+ const char *fieldname, *mangledname;
+ unsigned long fieldlen, mangledlen;
+ char *fieldcopy;
+ bfd_boolean staticp;
+ debug_type ftype;
+ const debug_field *pf = NULL;
+ enum debug_visibility visibility;
+ debug_field field;
+
+ /* This represents a data member. */
+
+ if (! ieee_require_asn (info, pp, &flags)
+ || ! ieee_require_atn65 (info, pp, &fieldname, &fieldlen)
+ || ! ieee_require_atn65 (info, pp, &mangledname, &mangledlen))
+ return FALSE;
+ count -= 3;
+
+ fieldcopy = savestring (fieldname, fieldlen);
+
+ staticp = (flags & CXXFLAGS_STATIC) != 0 ? TRUE : FALSE;
+
+ if (staticp)
+ {
+ struct ieee_var *pv, *pvend;
+
+ /* See if we can find a definition for this variable. */
+ pv = info->vars.vars;
+ pvend = pv + info->vars.alloc;
+ for (; pv < pvend; pv++)
+ if (pv->namlen == mangledlen
+ && strncmp (pv->name, mangledname, mangledlen) == 0)
+ break;
+ if (pv < pvend)
+ ftype = pv->type;
+ else
+ {
+ /* This can happen if the variable is never used. */
+ ftype = ieee_builtin_type (info, start,
+ (unsigned int) builtin_void);
+ }
+ }
+ else
+ {
+ unsigned int findx;
+
+ if (structfields == NULL)
+ {
+ ieee_error (info, start, _("C++ object has no fields"));
+ return FALSE;
+ }
+
+ for (pf = structfields, findx = 0;
+ *pf != DEBUG_FIELD_NULL;
+ pf++, findx++)
+ {
+ const char *fname;
+
+ fname = debug_get_field_name (dhandle, *pf);
+ if (fname == NULL)
+ return FALSE;
+ if (fname[0] == mangledname[0]
+ && strncmp (fname, mangledname, mangledlen) == 0
+ && strlen (fname) == mangledlen)
+ break;
+ }
+ if (*pf == DEBUG_FIELD_NULL)
+ {
+ ieee_error (info, start,
+ _("C++ data member not found in container"));
+ return FALSE;
+ }
+
+ ftype = debug_get_field_type (dhandle, *pf);
+
+ if (debug_get_type_kind (dhandle, ftype) == DEBUG_KIND_POINTER)
+ {
+ /* We might need to convert this field into a
+ reference type later on, so make it an indirect
+ type. */
+ if (it->fslots == NULL)
+ {
+ unsigned int fcnt;
+ const debug_field *pfcnt;
+
+ fcnt = 0;
+ for (pfcnt = structfields;
+ *pfcnt != DEBUG_FIELD_NULL;
+ pfcnt++)
+ ++fcnt;
+ it->fslots = ((debug_type *)
+ xmalloc (fcnt * sizeof *it->fslots));
+ memset (it->fslots, 0,
+ fcnt * sizeof *it->fslots);
+ }
+
+ if (ftype == DEBUG_TYPE_NULL)
+ return FALSE;
+ it->fslots[findx] = ftype;
+ ftype = debug_make_indirect_type (dhandle,
+ it->fslots + findx,
+ (const char *) NULL);
+ }
+ }
+ if (ftype == DEBUG_TYPE_NULL)
+ return FALSE;
+
+ switch (flags & CXXFLAGS_VISIBILITY)
+ {
+ default:
+ ieee_error (info, start, _("unknown C++ visibility"));
+ return FALSE;
+
+ case CXXFLAGS_VISIBILITY_PUBLIC:
+ visibility = DEBUG_VISIBILITY_PUBLIC;
+ break;
+
+ case CXXFLAGS_VISIBILITY_PRIVATE:
+ visibility = DEBUG_VISIBILITY_PRIVATE;
+ break;
+
+ case CXXFLAGS_VISIBILITY_PROTECTED:
+ visibility = DEBUG_VISIBILITY_PROTECTED;
+ break;
+ }
+
+ if (staticp)
+ {
+ char *mangledcopy;
+
+ mangledcopy = savestring (mangledname, mangledlen);
+
+ field = debug_make_static_member (dhandle, fieldcopy,
+ ftype, mangledcopy,
+ visibility);
+ }
+ else
+ {
+ bfd_vma bitpos, bitsize;
+
+ bitpos = debug_get_field_bitpos (dhandle, *pf);
+ bitsize = debug_get_field_bitsize (dhandle, *pf);
+ if (bitpos == (bfd_vma) -1 || bitsize == (bfd_vma) -1)
+ {
+ ieee_error (info, start, _("bad C++ field bit pos or size"));
+ return FALSE;
+ }
+ field = debug_make_field (dhandle, fieldcopy, ftype, bitpos,
+ bitsize, visibility);
+ }
+
+ if (field == DEBUG_FIELD_NULL)
+ return FALSE;
+
+ if (field_count + 1 >= field_alloc)
+ {
+ field_alloc += 10;
+ fields = ((debug_field *)
+ xrealloc (fields, field_alloc * sizeof *fields));
+ }
+
+ fields[field_count] = field;
+ ++field_count;
+ fields[field_count] = DEBUG_FIELD_NULL;
+ }
+ break;
+
+ case 'm':
+ case 'v':
+ {
+ bfd_vma flags, voffset, control;
+ const char *name, *mangled;
+ unsigned long namlen, mangledlen;
+ struct ieee_var *pv, *pvend;
+ debug_type type;
+ enum debug_visibility visibility;
+ bfd_boolean constp, volatilep;
+ char *mangledcopy;
+ debug_method_variant mv;
+ struct ieee_method *meth;
+ unsigned int im;
+
+ if (! ieee_require_asn (info, pp, &flags)
+ || ! ieee_require_atn65 (info, pp, &name, &namlen)
+ || ! ieee_require_atn65 (info, pp, &mangled, &mangledlen))
+ return FALSE;
+ count -= 3;
+ if (id != 'v')
+ voffset = 0;
+ else
+ {
+ if (! ieee_require_asn (info, pp, &voffset))
+ return FALSE;
+ --count;
+ }
+ if (! ieee_require_asn (info, pp, &control))
+ return FALSE;
+ --count;
+
+ /* We just ignore the control information. */
+
+ /* We have no way to represent friend information, so we
+ just ignore it. */
+ if ((flags & CXXFLAGS_FRIEND) != 0)
+ break;
+
+ /* We should already have seen a type for the function. */
+ pv = info->vars.vars;
+ pvend = pv + info->vars.alloc;
+ for (; pv < pvend; pv++)
+ if (pv->namlen == mangledlen
+ && strncmp (pv->name, mangled, mangledlen) == 0)
+ break;
+
+ if (pv >= pvend)
+ {
+ /* We won't have type information for this function if
+ it is not included in this file. We don't try to
+ handle this case. FIXME. */
+ type = (debug_make_function_type
+ (dhandle,
+ ieee_builtin_type (info, start,
+ (unsigned int) builtin_void),
+ (debug_type *) NULL,
+ FALSE));
+ }
+ else
+ {
+ debug_type return_type;
+ const debug_type *arg_types;
+ bfd_boolean varargs;
+
+ if (debug_get_type_kind (dhandle, pv->type)
+ != DEBUG_KIND_FUNCTION)
+ {
+ ieee_error (info, start,
+ _("bad type for C++ method function"));
+ return FALSE;
+ }
+
+ return_type = debug_get_return_type (dhandle, pv->type);
+ arg_types = debug_get_parameter_types (dhandle, pv->type,
+ &varargs);
+ if (return_type == DEBUG_TYPE_NULL || arg_types == NULL)
+ {
+ ieee_error (info, start,
+ _("no type information for C++ method function"));
+ return FALSE;
+ }
+
+ type = debug_make_method_type (dhandle, return_type, it->type,
+ (debug_type *) arg_types,
+ varargs);
+ }
+ if (type == DEBUG_TYPE_NULL)
+ return FALSE;
+
+ switch (flags & CXXFLAGS_VISIBILITY)
+ {
+ default:
+ ieee_error (info, start, _("unknown C++ visibility"));
+ return FALSE;
+
+ case CXXFLAGS_VISIBILITY_PUBLIC:
+ visibility = DEBUG_VISIBILITY_PUBLIC;
+ break;
+
+ case CXXFLAGS_VISIBILITY_PRIVATE:
+ visibility = DEBUG_VISIBILITY_PRIVATE;
+ break;
+
+ case CXXFLAGS_VISIBILITY_PROTECTED:
+ visibility = DEBUG_VISIBILITY_PROTECTED;
+ break;
+ }
+
+ constp = (flags & CXXFLAGS_CONST) != 0 ? TRUE : FALSE;
+ volatilep = (flags & CXXFLAGS_VOLATILE) != 0 ? TRUE : FALSE;
+
+ mangledcopy = savestring (mangled, mangledlen);
+
+ if ((flags & CXXFLAGS_STATIC) != 0)
+ {
+ if (id == 'v')
+ {
+ ieee_error (info, start, _("C++ static virtual method"));
+ return FALSE;
+ }
+ mv = debug_make_static_method_variant (dhandle, mangledcopy,
+ type, visibility,
+ constp, volatilep);
+ }
+ else
+ {
+ debug_type vcontext;
+
+ if (id != 'v')
+ vcontext = DEBUG_TYPE_NULL;
+ else
+ {
+ /* FIXME: How can we calculate this correctly? */
+ vcontext = it->type;
+ }
+ mv = debug_make_method_variant (dhandle, mangledcopy, type,
+ visibility, constp,
+ volatilep, voffset,
+ vcontext);
+ }
+ if (mv == DEBUG_METHOD_VARIANT_NULL)
+ return FALSE;
+
+ for (meth = methods, im = 0; im < methods_count; meth++, im++)
+ if (meth->namlen == namlen
+ && strncmp (meth->name, name, namlen) == 0)
+ break;
+ if (im >= methods_count)
+ {
+ if (methods_count >= methods_alloc)
+ {
+ methods_alloc += 10;
+ methods = ((struct ieee_method *)
+ xrealloc (methods,
+ methods_alloc * sizeof *methods));
+ }
+ methods[methods_count].name = name;
+ methods[methods_count].namlen = namlen;
+ methods[methods_count].variants = NULL;
+ methods[methods_count].count = 0;
+ methods[methods_count].alloc = 0;
+ meth = methods + methods_count;
+ ++methods_count;
+ }
+
+ if (meth->count + 1 >= meth->alloc)
+ {
+ meth->alloc += 10;
+ meth->variants = ((debug_method_variant *)
+ xrealloc (meth->variants,
+ (meth->alloc
+ * sizeof *meth->variants)));
+ }
+
+ meth->variants[meth->count] = mv;
+ ++meth->count;
+ meth->variants[meth->count] = DEBUG_METHOD_VARIANT_NULL;
+ }
+ break;
+
+ case 'o':
+ {
+ bfd_vma spec;
+
+ /* We have no way to store this information, so we just
+ ignore it. */
+ if (! ieee_require_asn (info, pp, &spec))
+ return FALSE;
+ --count;
+ if ((spec & 4) != 0)
+ {
+ const char *filename;
+ unsigned long filenamlen;
+ bfd_vma lineno;
+
+ if (! ieee_require_atn65 (info, pp, &filename, &filenamlen)
+ || ! ieee_require_asn (info, pp, &lineno))
+ return FALSE;
+ count -= 2;
+ }
+ else if ((spec & 8) != 0)
+ {
+ const char *mangled;
+ unsigned long mangledlen;
+
+ if (! ieee_require_atn65 (info, pp, &mangled, &mangledlen))
+ return FALSE;
+ --count;
+ }
+ else
+ {
+ ieee_error (info, start,
+ _("unrecognized C++ object overhead spec"));
+ return FALSE;
+ }
+ }
+ break;
+
+ case 'z':
+ {
+ const char *vname, *base;
+ unsigned long vnamelen, baselen;
+ bfd_vma vsize, control;
+
+ /* A virtual table pointer. */
+
+ if (! ieee_require_atn65 (info, pp, &vname, &vnamelen)
+ || ! ieee_require_asn (info, pp, &vsize)
+ || ! ieee_require_atn65 (info, pp, &base, &baselen)
+ || ! ieee_require_asn (info, pp, &control))
+ return FALSE;
+ count -= 4;
+
+ /* We just ignore the control number. We don't care what
+ the virtual table name is. We have no way to store the
+ virtual table size, and I don't think we care anyhow. */
+
+ /* FIXME: We can't handle multiple virtual table pointers. */
+
+ if (baselen == 0)
+ ownvptr = TRUE;
+ else
+ {
+ char *basecopy;
+
+ basecopy = savestring (base, baselen);
+ vptrbase = debug_find_tagged_type (dhandle, basecopy,
+ DEBUG_KIND_ILLEGAL);
+ free (basecopy);
+ if (vptrbase == DEBUG_TYPE_NULL)
+ {
+ ieee_error (info, start, _("undefined C++ vtable"));
+ return FALSE;
+ }
+ }
+ }
+ break;
+ }
+ }
+
+ /* Now that we have seen all the method variants, we can call
+ debug_make_method for each one. */
+
+ if (methods_count == 0)
+ dmethods = NULL;
+ else
+ {
+ unsigned int i;
+
+ dmethods = ((debug_method *)
+ xmalloc ((methods_count + 1) * sizeof *dmethods));
+ for (i = 0; i < methods_count; i++)
+ {
+ char *namcopy;
+
+ namcopy = savestring (methods[i].name, methods[i].namlen);
+ dmethods[i] = debug_make_method (dhandle, namcopy,
+ methods[i].variants);
+ if (dmethods[i] == DEBUG_METHOD_NULL)
+ return FALSE;
+ }
+ dmethods[i] = DEBUG_METHOD_NULL;
+ free (methods);
+ }
+
+ /* The struct type was created as an indirect type pointing at
+ it->slot. We update it->slot to automatically update all
+ references to this struct. */
+ it->slot = debug_make_object_type (dhandle,
+ cxx_class != 'u',
+ debug_get_type_size (dhandle,
+ it->slot),
+ fields, baseclasses, dmethods,
+ vptrbase, ownvptr);
+ if (it->slot == DEBUG_TYPE_NULL)
+ return FALSE;
+
+ return TRUE;
+}
+
+/* Read C++ default argument value and reference type information. */
+
+static bfd_boolean
+ieee_read_cxx_defaults (struct ieee_info *info, const bfd_byte **pp,
+ unsigned long count)
+{
+ const bfd_byte *start;
+ const char *fnname;
+ unsigned long fnlen;
+ bfd_vma defcount;
+
+ start = *pp;
+
+ /* Giving the function name before the argument count is an addendum
+ to the spec. The function name is demangled, though, so this
+ record must always refer to the current function. */
+
+ if (info->blockstack.bsp <= info->blockstack.stack
+ || info->blockstack.bsp[-1].fnindx == (unsigned int) -1)
+ {
+ ieee_error (info, start, _("C++ default values not in a function"));
+ return FALSE;
+ }
+
+ if (! ieee_require_atn65 (info, pp, &fnname, &fnlen)
+ || ! ieee_require_asn (info, pp, &defcount))
+ return FALSE;
+ count -= 2;
+
+ while (defcount-- > 0)
+ {
+ bfd_vma type, val;
+ const char *strval;
+ unsigned long strvallen;
+
+ if (! ieee_require_asn (info, pp, &type))
+ return FALSE;
+ --count;
+
+ switch (type)
+ {
+ case 0:
+ case 4:
+ break;
+
+ case 1:
+ case 2:
+ if (! ieee_require_asn (info, pp, &val))
+ return FALSE;
+ --count;
+ break;
+
+ case 3:
+ case 7:
+ if (! ieee_require_atn65 (info, pp, &strval, &strvallen))
+ return FALSE;
+ --count;
+ break;
+
+ default:
+ ieee_error (info, start, _("unrecognized C++ default type"));
+ return FALSE;
+ }
+
+ /* We have no way to record the default argument values, so we
+ just ignore them. FIXME. */
+ }
+
+ /* Any remaining arguments are indices of parameters that are really
+ reference type. */
+ if (count > 0)
+ {
+ void *dhandle;
+ debug_type *arg_slots;
+
+ dhandle = info->dhandle;
+ arg_slots = info->types.types[info->blockstack.bsp[-1].fnindx].arg_slots;
+ while (count-- > 0)
+ {
+ bfd_vma indx;
+ debug_type target;
+
+ if (! ieee_require_asn (info, pp, &indx))
+ return FALSE;
+ /* The index is 1 based. */
+ --indx;
+ if (arg_slots == NULL
+ || arg_slots[indx] == DEBUG_TYPE_NULL
+ || (debug_get_type_kind (dhandle, arg_slots[indx])
+ != DEBUG_KIND_POINTER))
+ {
+ ieee_error (info, start, _("reference parameter is not a pointer"));
+ return FALSE;
+ }
+
+ target = debug_get_target_type (dhandle, arg_slots[indx]);
+ arg_slots[indx] = debug_make_reference_type (dhandle, target);
+ if (arg_slots[indx] == DEBUG_TYPE_NULL)
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+/* Read a C++ reference definition. */
+
+static bfd_boolean
+ieee_read_reference (struct ieee_info *info, const bfd_byte **pp)
+{
+ const bfd_byte *start;
+ bfd_vma flags;
+ const char *cxx_class, *name;
+ unsigned long classlen, namlen;
+ debug_type *pslot;
+ debug_type target;
+
+ start = *pp;
+
+ if (! ieee_require_asn (info, pp, &flags))
+ return FALSE;
+
+ /* Giving the class name before the member name is in an addendum to
+ the spec. */
+ if (flags == 3)
+ {
+ if (! ieee_require_atn65 (info, pp, &cxx_class, &classlen))
+ return FALSE;
+ }
+
+ if (! ieee_require_atn65 (info, pp, &name, &namlen))
+ return FALSE;
+
+ pslot = NULL;
+ if (flags != 3)
+ {
+ int pass;
+
+ /* We search from the last variable indices to the first in
+ hopes of finding local variables correctly. We search the
+ local variables on the first pass, and the global variables
+ on the second. FIXME: This probably won't work in all cases.
+ On the other hand, I don't know what will. */
+ for (pass = 0; pass < 2; pass++)
+ {
+ struct ieee_vars *vars;
+ int i;
+ struct ieee_var *pv = NULL;
+
+ if (pass == 0)
+ vars = &info->vars;
+ else
+ {
+ vars = info->global_vars;
+ if (vars == NULL)
+ break;
+ }
+
+ for (i = (int) vars->alloc - 1; i >= 0; i--)
+ {
+ bfd_boolean found;
+
+ pv = vars->vars + i;
+
+ if (pv->pslot == NULL
+ || pv->namlen != namlen
+ || strncmp (pv->name, name, namlen) != 0)
+ continue;
+
+ found = FALSE;
+ switch (flags)
+ {
+ default:
+ ieee_error (info, start,
+ _("unrecognized C++ reference type"));
+ return FALSE;
+
+ case 0:
+ /* Global variable or function. */
+ if (pv->kind == IEEE_GLOBAL
+ || pv->kind == IEEE_EXTERNAL
+ || pv->kind == IEEE_FUNCTION)
+ found = TRUE;
+ break;
+
+ case 1:
+ /* Global static variable or function. */
+ if (pv->kind == IEEE_STATIC
+ || pv->kind == IEEE_FUNCTION)
+ found = TRUE;
+ break;
+
+ case 2:
+ /* Local variable. */
+ if (pv->kind == IEEE_LOCAL)
+ found = TRUE;
+ break;
+ }
+
+ if (found)
+ break;
+ }
+
+ if (i >= 0)
+ {
+ pslot = pv->pslot;
+ break;
+ }
+ }
+ }
+ else
+ {
+ struct ieee_tag *it;
+
+ for (it = info->tags; it != NULL; it = it->next)
+ {
+ if (it->name[0] == cxx_class[0]
+ && strncmp (it->name, cxx_class, classlen) == 0
+ && strlen (it->name) == classlen)
+ {
+ if (it->fslots != NULL)
+ {
+ const debug_field *pf;
+ unsigned int findx;
+
+ pf = debug_get_fields (info->dhandle, it->type);
+ if (pf == NULL)
+ {
+ ieee_error (info, start,
+ "C++ reference in class with no fields");
+ return FALSE;
+ }
+
+ for (findx = 0; *pf != DEBUG_FIELD_NULL; pf++, findx++)
+ {
+ const char *fname;
+
+ fname = debug_get_field_name (info->dhandle, *pf);
+ if (fname == NULL)
+ return FALSE;
+ if (strncmp (fname, name, namlen) == 0
+ && strlen (fname) == namlen)
+ {
+ pslot = it->fslots + findx;
+ break;
+ }
+ }
+ }
+
+ break;
+ }
+ }
+ }
+
+ if (pslot == NULL)
+ {
+ ieee_error (info, start, _("C++ reference not found"));
+ return FALSE;
+ }
+
+ /* We allocated the type of the object as an indirect type pointing
+ to *pslot, which we can now update to be a reference type. */
+ if (debug_get_type_kind (info->dhandle, *pslot) != DEBUG_KIND_POINTER)
+ {
+ ieee_error (info, start, _("C++ reference is not pointer"));
+ return FALSE;
+ }
+
+ target = debug_get_target_type (info->dhandle, *pslot);
+ *pslot = debug_make_reference_type (info->dhandle, target);
+ if (*pslot == DEBUG_TYPE_NULL)
+ return FALSE;
+
+ return TRUE;
+}
+
+/* Require an ASN record. */
+
+static bfd_boolean
+ieee_require_asn (struct ieee_info *info, const bfd_byte **pp, bfd_vma *pv)
+{
+ const bfd_byte *start;
+ ieee_record_enum_type c;
+ bfd_vma varindx;
+
+ start = *pp;
+
+ c = (ieee_record_enum_type) **pp;
+ if (c != ieee_e2_first_byte_enum)
+ {
+ ieee_error (info, start, _("missing required ASN"));
+ return FALSE;
+ }
+ ++*pp;
+
+ c = (ieee_record_enum_type) (((unsigned int) c << 8) | **pp);
+ if (c != ieee_asn_record_enum)
+ {
+ ieee_error (info, start, _("missing required ASN"));
+ return FALSE;
+ }
+ ++*pp;
+
+ /* Just ignore the variable index. */
+ if (! ieee_read_number (info, pp, &varindx))
+ return FALSE;
+
+ return ieee_read_expression (info, pp, pv);
+}
+
+/* Require an ATN65 record. */
+
+static bfd_boolean
+ieee_require_atn65 (struct ieee_info *info, const bfd_byte **pp,
+ const char **pname, unsigned long *pnamlen)
+{
+ const bfd_byte *start;
+ ieee_record_enum_type c;
+ bfd_vma name_indx, type_indx, atn_code;
+
+ start = *pp;
+
+ c = (ieee_record_enum_type) **pp;
+ if (c != ieee_at_record_enum)
+ {
+ ieee_error (info, start, _("missing required ATN65"));
+ return FALSE;
+ }
+ ++*pp;
+
+ c = (ieee_record_enum_type) (((unsigned int) c << 8) | **pp);
+ if (c != ieee_atn_record_enum)
+ {
+ ieee_error (info, start, _("missing required ATN65"));
+ return FALSE;
+ }
+ ++*pp;
+
+ if (! ieee_read_number (info, pp, &name_indx)
+ || ! ieee_read_number (info, pp, &type_indx)
+ || ! ieee_read_number (info, pp, &atn_code))
+ return FALSE;
+
+ /* Just ignore name_indx. */
+
+ if (type_indx != 0 || atn_code != 65)
+ {
+ ieee_error (info, start, _("bad ATN65 record"));
+ return FALSE;
+ }
+
+ return ieee_read_id (info, pp, pname, pnamlen);
+}
+
+/* Convert a register number in IEEE debugging information into a
+ generic register number. */
+
+static int
+ieee_regno_to_genreg (bfd *abfd, int r)
+{
+ switch (bfd_get_arch (abfd))
+ {
+ case bfd_arch_m68k:
+ /* For some reasons stabs adds 2 to the floating point register
+ numbers. */
+ if (r >= 16)
+ r += 2;
+ break;
+
+ case bfd_arch_i960:
+ /* Stabs uses 0 to 15 for r0 to r15, 16 to 31 for g0 to g15, and
+ 32 to 35 for fp0 to fp3. */
+ --r;
+ break;
+
+ default:
+ break;
+ }
+
+ return r;
+}
+
+/* Convert a generic register number to an IEEE specific one. */
+
+static int
+ieee_genreg_to_regno (bfd *abfd, int r)
+{
+ switch (bfd_get_arch (abfd))
+ {
+ case bfd_arch_m68k:
+ /* For some reason stabs add 2 to the floating point register
+ numbers. */
+ if (r >= 18)
+ r -= 2;
+ break;
+
+ case bfd_arch_i960:
+ /* Stabs uses 0 to 15 for r0 to r15, 16 to 31 for g0 to g15, and
+ 32 to 35 for fp0 to fp3. */
+ ++r;
+ break;
+
+ default:
+ break;
+ }
+
+ return r;
+}
+
+/* These routines build IEEE debugging information out of the generic
+ debugging information. */
+
+/* We build the IEEE debugging information byte by byte. Rather than
+ waste time copying data around, we use a linked list of buffers to
+ hold the data. */
+
+#define IEEE_BUFSIZE (490)
+
+struct ieee_buf
+{
+ /* Next buffer. */
+ struct ieee_buf *next;
+ /* Number of data bytes in this buffer. */
+ unsigned int c;
+ /* Bytes. */
+ bfd_byte buf[IEEE_BUFSIZE];
+};
+
+/* A list of buffers. */
+
+struct ieee_buflist
+{
+ /* Head of list. */
+ struct ieee_buf *head;
+ /* Tail--last buffer on list. */
+ struct ieee_buf *tail;
+};
+
+/* In order to generate the BB11 blocks required by the HP emulator,
+ we keep track of ranges of addresses which correspond to a given
+ compilation unit. */
+
+struct ieee_range
+{
+ /* Next range. */
+ struct ieee_range *next;
+ /* Low address. */
+ bfd_vma low;
+ /* High address. */
+ bfd_vma high;
+};
+
+/* This structure holds information for a class on the type stack. */
+
+struct ieee_type_class
+{
+ /* The name index in the debugging information. */
+ unsigned int indx;
+ /* The pmisc records for the class. */
+ struct ieee_buflist pmiscbuf;
+ /* The number of pmisc records. */
+ unsigned int pmisccount;
+ /* The name of the class holding the virtual table, if not this
+ class. */
+ const char *vclass;
+ /* Whether this class holds its own virtual table. */
+ bfd_boolean ownvptr;
+ /* The largest virtual table offset seen so far. */
+ bfd_vma voffset;
+ /* The current method. */
+ const char *method;
+ /* Additional pmisc records used to record fields of reference type. */
+ struct ieee_buflist refs;
+};
+
+/* This is how we store types for the writing routines. Most types
+ are simply represented by a type index. */
+
+struct ieee_write_type
+{
+ /* Type index. */
+ unsigned int indx;
+ /* The size of the type, if known. */
+ unsigned int size;
+ /* The name of the type, if any. */
+ const char *name;
+ /* If this is a function or method type, we build the type here, and
+ only add it to the output buffers if we need it. */
+ struct ieee_buflist fndef;
+ /* If this is a struct, this is where the struct definition is
+ built. */
+ struct ieee_buflist strdef;
+ /* If this is a class, this is where the class information is built. */
+ struct ieee_type_class *classdef;
+ /* Whether the type is unsigned. */
+ unsigned int unsignedp : 1;
+ /* Whether this is a reference type. */
+ unsigned int referencep : 1;
+ /* Whether this is in the local type block. */
+ unsigned int localp : 1;
+ /* Whether this is a duplicate struct definition which we are
+ ignoring. */
+ unsigned int ignorep : 1;
+};
+
+/* This is the type stack used by the debug writing routines. FIXME:
+ We could generate more efficient output if we remembered when we
+ have output a particular type before. */
+
+struct ieee_type_stack
+{
+ /* Next entry on stack. */
+ struct ieee_type_stack *next;
+ /* Type information. */
+ struct ieee_write_type type;
+};
+
+/* This is a list of associations between a name and some types.
+ These are used for typedefs and tags. */
+
+struct ieee_name_type
+{
+ /* Next type for this name. */
+ struct ieee_name_type *next;
+ /* ID number. For a typedef, this is the index of the type to which
+ this name is typedefed. */
+ unsigned int id;
+ /* Type. */
+ struct ieee_write_type type;
+ /* If this is a tag which has not yet been defined, this is the
+ kind. If the tag has been defined, this is DEBUG_KIND_ILLEGAL. */
+ enum debug_type_kind kind;
+};
+
+/* We use a hash table to associate names and types. */
+
+struct ieee_name_type_hash_table
+{
+ struct bfd_hash_table root;
+};
+
+struct ieee_name_type_hash_entry
+{
+ struct bfd_hash_entry root;
+ /* Information for this name. */
+ struct ieee_name_type *types;
+};
+
+/* This is a list of enums. */
+
+struct ieee_defined_enum
+{
+ /* Next enum. */
+ struct ieee_defined_enum *next;
+ /* Type index. */
+ unsigned int indx;
+ /* Whether this enum has been defined. */
+ bfd_boolean defined;
+ /* Tag. */
+ const char *tag;
+ /* Names. */
+ const char **names;
+ /* Values. */
+ bfd_signed_vma *vals;
+};
+
+/* We keep a list of modified versions of types, so that we don't
+ output them more than once. */
+
+struct ieee_modified_type
+{
+ /* Pointer to this type. */
+ unsigned int pointer;
+ /* Function with unknown arguments returning this type. */
+ unsigned int function;
+ /* Const version of this type. */
+ unsigned int const_qualified;
+ /* Volatile version of this type. */
+ unsigned int volatile_qualified;
+ /* List of arrays of this type of various bounds. */
+ struct ieee_modified_array_type *arrays;
+};
+
+/* A list of arrays bounds. */
+
+struct ieee_modified_array_type
+{
+ /* Next array bounds. */
+ struct ieee_modified_array_type *next;
+ /* Type index with these bounds. */
+ unsigned int indx;
+ /* Low bound. */
+ bfd_signed_vma low;
+ /* High bound. */
+ bfd_signed_vma high;
+};
+
+/* This is a list of pending function parameter information. We don't
+ output them until we see the first block. */
+
+struct ieee_pending_parm
+{
+ /* Next pending parameter. */
+ struct ieee_pending_parm *next;
+ /* Name. */
+ const char *name;
+ /* Type index. */
+ unsigned int type;
+ /* Whether the type is a reference. */
+ bfd_boolean referencep;
+ /* Kind. */
+ enum debug_parm_kind kind;
+ /* Value. */
+ bfd_vma val;
+};
+
+/* This is the handle passed down by debug_write. */
+
+struct ieee_handle
+{
+ /* BFD we are writing to. */
+ bfd *abfd;
+ /* Whether we got an error in a subroutine called via traverse or
+ map_over_sections. */
+ bfd_boolean error;
+ /* Current data buffer list. */
+ struct ieee_buflist *current;
+ /* Current data buffer. */
+ struct ieee_buf *curbuf;
+ /* Filename of current compilation unit. */
+ const char *filename;
+ /* Module name of current compilation unit. */
+ const char *modname;
+ /* List of buffer for global types. */
+ struct ieee_buflist global_types;
+ /* List of finished data buffers. */
+ struct ieee_buflist data;
+ /* List of buffers for typedefs in the current compilation unit. */
+ struct ieee_buflist types;
+ /* List of buffers for variables and functions in the current
+ compilation unit. */
+ struct ieee_buflist vars;
+ /* List of buffers for C++ class definitions in the current
+ compilation unit. */
+ struct ieee_buflist cxx;
+ /* List of buffers for line numbers in the current compilation unit. */
+ struct ieee_buflist linenos;
+ /* Ranges for the current compilation unit. */
+ struct ieee_range *ranges;
+ /* Ranges for all debugging information. */
+ struct ieee_range *global_ranges;
+ /* Nested pending ranges. */
+ struct ieee_range *pending_ranges;
+ /* Type stack. */
+ struct ieee_type_stack *type_stack;
+ /* Next unallocated type index. */
+ unsigned int type_indx;
+ /* Next unallocated name index. */
+ unsigned int name_indx;
+ /* Typedefs. */
+ struct ieee_name_type_hash_table typedefs;
+ /* Tags. */
+ struct ieee_name_type_hash_table tags;
+ /* Enums. */
+ struct ieee_defined_enum *enums;
+ /* Modified versions of types. */
+ struct ieee_modified_type *modified;
+ /* Number of entries allocated in modified. */
+ unsigned int modified_alloc;
+ /* 4 byte complex type. */
+ unsigned int complex_float_index;
+ /* 8 byte complex type. */
+ unsigned int complex_double_index;
+ /* The depth of block nesting. This is 0 outside a function, and 1
+ just after start_function is called. */
+ unsigned int block_depth;
+ /* The name of the current function. */
+ const char *fnname;
+ /* List of buffers for the type of the function we are currently
+ writing out. */
+ struct ieee_buflist fntype;
+ /* List of buffers for the parameters of the function we are
+ currently writing out. */
+ struct ieee_buflist fnargs;
+ /* Number of arguments written to fnargs. */
+ unsigned int fnargcount;
+ /* Pending function parameters. */
+ struct ieee_pending_parm *pending_parms;
+ /* Current line number filename. */
+ const char *lineno_filename;
+ /* Line number name index. */
+ unsigned int lineno_name_indx;
+ /* Filename of pending line number. */
+ const char *pending_lineno_filename;
+ /* Pending line number. */
+ unsigned long pending_lineno;
+ /* Address of pending line number. */
+ bfd_vma pending_lineno_addr;
+ /* Highest address seen at end of procedure. */
+ bfd_vma highaddr;
+};
+
+static bfd_boolean ieee_init_buffer
+ (struct ieee_handle *, struct ieee_buflist *);
+static bfd_boolean ieee_change_buffer
+ (struct ieee_handle *, struct ieee_buflist *);
+static bfd_boolean ieee_append_buffer
+ (struct ieee_handle *, struct ieee_buflist *, struct ieee_buflist *);
+static bfd_boolean ieee_real_write_byte (struct ieee_handle *, int);
+static bfd_boolean ieee_write_2bytes (struct ieee_handle *, int);
+static bfd_boolean ieee_write_number (struct ieee_handle *, bfd_vma);
+static bfd_boolean ieee_write_id (struct ieee_handle *, const char *);
+static bfd_boolean ieee_write_asn
+ (struct ieee_handle *, unsigned int, bfd_vma);
+static bfd_boolean ieee_write_atn65
+ (struct ieee_handle *, unsigned int, const char *);
+static bfd_boolean ieee_push_type
+ (struct ieee_handle *, unsigned int, unsigned int, bfd_boolean,
+ bfd_boolean);
+static unsigned int ieee_pop_type (struct ieee_handle *);
+static void ieee_pop_unused_type (struct ieee_handle *);
+static unsigned int ieee_pop_type_used (struct ieee_handle *, bfd_boolean);
+static bfd_boolean ieee_add_range
+ (struct ieee_handle *, bfd_boolean, bfd_vma, bfd_vma);
+static bfd_boolean ieee_start_range (struct ieee_handle *, bfd_vma);
+static bfd_boolean ieee_end_range (struct ieee_handle *, bfd_vma);
+static bfd_boolean ieee_define_type
+ (struct ieee_handle *, unsigned int, bfd_boolean, bfd_boolean);
+static bfd_boolean ieee_define_named_type
+ (struct ieee_handle *, const char *, unsigned int, unsigned int,
+ bfd_boolean, bfd_boolean, struct ieee_buflist *);
+static struct ieee_modified_type *ieee_get_modified_info
+ (struct ieee_handle *, unsigned int);
+static struct bfd_hash_entry *ieee_name_type_newfunc
+ (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
+static bfd_boolean ieee_write_undefined_tag
+ (struct ieee_name_type_hash_entry *, void *);
+static bfd_boolean ieee_finish_compilation_unit (struct ieee_handle *);
+static void ieee_add_bb11_blocks (bfd *, asection *, void *);
+static bfd_boolean ieee_add_bb11
+ (struct ieee_handle *, asection *, bfd_vma, bfd_vma);
+static bfd_boolean ieee_output_pending_parms (struct ieee_handle *);
+static unsigned int ieee_vis_to_flags (enum debug_visibility);
+static bfd_boolean ieee_class_method_var
+ (struct ieee_handle *, const char *, enum debug_visibility, bfd_boolean,
+ bfd_boolean, bfd_boolean, bfd_vma, bfd_boolean);
+
+static bfd_boolean ieee_start_compilation_unit (void *, const char *);
+static bfd_boolean ieee_start_source (void *, const char *);
+static bfd_boolean ieee_empty_type (void *);
+static bfd_boolean ieee_void_type (void *);
+static bfd_boolean ieee_int_type (void *, unsigned int, bfd_boolean);
+static bfd_boolean ieee_float_type (void *, unsigned int);
+static bfd_boolean ieee_complex_type (void *, unsigned int);
+static bfd_boolean ieee_bool_type (void *, unsigned int);
+static bfd_boolean ieee_enum_type
+ (void *, const char *, const char **, bfd_signed_vma *);
+static bfd_boolean ieee_pointer_type (void *);
+static bfd_boolean ieee_function_type (void *, int, bfd_boolean);
+static bfd_boolean ieee_reference_type (void *);
+static bfd_boolean ieee_range_type (void *, bfd_signed_vma, bfd_signed_vma);
+static bfd_boolean ieee_array_type
+ (void *, bfd_signed_vma, bfd_signed_vma, bfd_boolean);
+static bfd_boolean ieee_set_type (void *, bfd_boolean);
+static bfd_boolean ieee_offset_type (void *);
+static bfd_boolean ieee_method_type (void *, bfd_boolean, int, bfd_boolean);
+static bfd_boolean ieee_const_type (void *);
+static bfd_boolean ieee_volatile_type (void *);
+static bfd_boolean ieee_start_struct_type
+ (void *, const char *, unsigned int, bfd_boolean, unsigned int);
+static bfd_boolean ieee_struct_field
+ (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
+static bfd_boolean ieee_end_struct_type (void *);
+static bfd_boolean ieee_start_class_type
+ (void *, const char *, unsigned int, bfd_boolean, unsigned int, bfd_boolean,
+ bfd_boolean);
+static bfd_boolean ieee_class_static_member
+ (void *, const char *, const char *, enum debug_visibility);
+static bfd_boolean ieee_class_baseclass
+ (void *, bfd_vma, bfd_boolean, enum debug_visibility);
+static bfd_boolean ieee_class_start_method (void *, const char *);
+static bfd_boolean ieee_class_method_variant
+ (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean,
+ bfd_vma, bfd_boolean);
+static bfd_boolean ieee_class_static_method_variant
+ (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean);
+static bfd_boolean ieee_class_end_method (void *);
+static bfd_boolean ieee_end_class_type (void *);
+static bfd_boolean ieee_typedef_type (void *, const char *);
+static bfd_boolean ieee_tag_type
+ (void *, const char *, unsigned int, enum debug_type_kind);
+static bfd_boolean ieee_typdef (void *, const char *);
+static bfd_boolean ieee_tag (void *, const char *);
+static bfd_boolean ieee_int_constant (void *, const char *, bfd_vma);
+static bfd_boolean ieee_float_constant (void *, const char *, double);
+static bfd_boolean ieee_typed_constant (void *, const char *, bfd_vma);
+static bfd_boolean ieee_variable
+ (void *, const char *, enum debug_var_kind, bfd_vma);
+static bfd_boolean ieee_start_function (void *, const char *, bfd_boolean);
+static bfd_boolean ieee_function_parameter
+ (void *, const char *, enum debug_parm_kind, bfd_vma);
+static bfd_boolean ieee_start_block (void *, bfd_vma);
+static bfd_boolean ieee_end_block (void *, bfd_vma);
+static bfd_boolean ieee_end_function (void *);
+static bfd_boolean ieee_lineno (void *, const char *, unsigned long, bfd_vma);
+
+static const struct debug_write_fns ieee_fns =
+{
+ ieee_start_compilation_unit,
+ ieee_start_source,
+ ieee_empty_type,
+ ieee_void_type,
+ ieee_int_type,
+ ieee_float_type,
+ ieee_complex_type,
+ ieee_bool_type,
+ ieee_enum_type,
+ ieee_pointer_type,
+ ieee_function_type,
+ ieee_reference_type,
+ ieee_range_type,
+ ieee_array_type,
+ ieee_set_type,
+ ieee_offset_type,
+ ieee_method_type,
+ ieee_const_type,
+ ieee_volatile_type,
+ ieee_start_struct_type,
+ ieee_struct_field,
+ ieee_end_struct_type,
+ ieee_start_class_type,
+ ieee_class_static_member,
+ ieee_class_baseclass,
+ ieee_class_start_method,
+ ieee_class_method_variant,
+ ieee_class_static_method_variant,
+ ieee_class_end_method,
+ ieee_end_class_type,
+ ieee_typedef_type,
+ ieee_tag_type,
+ ieee_typdef,
+ ieee_tag,
+ ieee_int_constant,
+ ieee_float_constant,
+ ieee_typed_constant,
+ ieee_variable,
+ ieee_start_function,
+ ieee_function_parameter,
+ ieee_start_block,
+ ieee_end_block,
+ ieee_end_function,
+ ieee_lineno
+};
+
+/* Initialize a buffer to be empty. */
+
+static bfd_boolean
+ieee_init_buffer (struct ieee_handle *info ATTRIBUTE_UNUSED,
+ struct ieee_buflist *buflist)
+{
+ buflist->head = NULL;
+ buflist->tail = NULL;
+ return TRUE;
+}
+
+/* See whether a buffer list has any data. */
+
+#define ieee_buffer_emptyp(buflist) ((buflist)->head == NULL)
+
+/* Change the current buffer to a specified buffer chain. */
+
+static bfd_boolean
+ieee_change_buffer (struct ieee_handle *info, struct ieee_buflist *buflist)
+{
+ if (buflist->head == NULL)
+ {
+ struct ieee_buf *buf;
+
+ buf = (struct ieee_buf *) xmalloc (sizeof *buf);
+ buf->next = NULL;
+ buf->c = 0;
+ buflist->head = buf;
+ buflist->tail = buf;
+ }
+
+ info->current = buflist;
+ info->curbuf = buflist->tail;
+
+ return TRUE;
+}
+
+/* Append a buffer chain. */
+
+static bfd_boolean
+ieee_append_buffer (struct ieee_handle *info ATTRIBUTE_UNUSED,
+ struct ieee_buflist *mainbuf,
+ struct ieee_buflist *newbuf)
+{
+ if (newbuf->head != NULL)
+ {
+ if (mainbuf->head == NULL)
+ mainbuf->head = newbuf->head;
+ else
+ mainbuf->tail->next = newbuf->head;
+ mainbuf->tail = newbuf->tail;
+ }
+ return TRUE;
+}
+
+/* Write a byte into the buffer. We use a macro for speed and a
+ function for the complex cases. */
+
+#define ieee_write_byte(info, b) \
+ ((info)->curbuf->c < IEEE_BUFSIZE \
+ ? ((info)->curbuf->buf[(info)->curbuf->c++] = (b), TRUE) \
+ : ieee_real_write_byte ((info), (b)))
+
+static bfd_boolean
+ieee_real_write_byte (struct ieee_handle *info, int b)
+{
+ if (info->curbuf->c >= IEEE_BUFSIZE)
+ {
+ struct ieee_buf *n;
+
+ n = (struct ieee_buf *) xmalloc (sizeof *n);
+ n->next = NULL;
+ n->c = 0;
+ if (info->current->head == NULL)
+ info->current->head = n;
+ else
+ info->current->tail->next = n;
+ info->current->tail = n;
+ info->curbuf = n;
+ }
+
+ info->curbuf->buf[info->curbuf->c] = b;
+ ++info->curbuf->c;
+
+ return TRUE;
+}
+
+/* Write out two bytes. */
+
+static bfd_boolean
+ieee_write_2bytes (struct ieee_handle *info, int i)
+{
+ return (ieee_write_byte (info, i >> 8)
+ && ieee_write_byte (info, i & 0xff));
+}
+
+/* Write out an integer. */
+
+static bfd_boolean
+ieee_write_number (struct ieee_handle *info, bfd_vma v)
+{
+ bfd_vma t;
+ bfd_byte ab[20];
+ bfd_byte *p;
+ unsigned int c;
+
+ if (v <= (bfd_vma) ieee_number_end_enum)
+ return ieee_write_byte (info, (int) v);
+
+ t = v;
+ p = ab + sizeof ab;
+ while (t != 0)
+ {
+ *--p = t & 0xff;
+ t >>= 8;
+ }
+ c = (ab + 20) - p;
+
+ if (c > (unsigned int) (ieee_number_repeat_end_enum
+ - ieee_number_repeat_start_enum))
+ {
+ fprintf (stderr, _("IEEE numeric overflow: 0x"));
+ fprintf_vma (stderr, v);
+ fprintf (stderr, "\n");
+ return FALSE;
+ }
+
+ if (! ieee_write_byte (info, (int) ieee_number_repeat_start_enum + c))
+ return FALSE;
+ for (; c > 0; --c, ++p)
+ {
+ if (! ieee_write_byte (info, *p))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Write out a string. */
+
+static bfd_boolean
+ieee_write_id (struct ieee_handle *info, const char *s)
+{
+ unsigned int len;
+
+ len = strlen (s);
+ if (len <= 0x7f)
+ {
+ if (! ieee_write_byte (info, len))
+ return FALSE;
+ }
+ else if (len <= 0xff)
+ {
+ if (! ieee_write_byte (info, (int) ieee_extension_length_1_enum)
+ || ! ieee_write_byte (info, len))
+ return FALSE;
+ }
+ else if (len <= 0xffff)
+ {
+ if (! ieee_write_byte (info, (int) ieee_extension_length_2_enum)
+ || ! ieee_write_2bytes (info, len))
+ return FALSE;
+ }
+ else
+ {
+ fprintf (stderr, _("IEEE string length overflow: %u\n"), len);
+ return FALSE;
+ }
+
+ for (; *s != '\0'; s++)
+ if (! ieee_write_byte (info, *s))
+ return FALSE;
+
+ return TRUE;
+}
+
+/* Write out an ASN record. */
+
+static bfd_boolean
+ieee_write_asn (struct ieee_handle *info, unsigned int indx, bfd_vma val)
+{
+ return (ieee_write_2bytes (info, (int) ieee_asn_record_enum)
+ && ieee_write_number (info, indx)
+ && ieee_write_number (info, val));
+}
+
+/* Write out an ATN65 record. */
+
+static bfd_boolean
+ieee_write_atn65 (struct ieee_handle *info, unsigned int indx, const char *s)
+{
+ return (ieee_write_2bytes (info, (int) ieee_atn_record_enum)
+ && ieee_write_number (info, indx)
+ && ieee_write_number (info, 0)
+ && ieee_write_number (info, 65)
+ && ieee_write_id (info, s));
+}
+
+/* Push a type index onto the type stack. */
+
+static bfd_boolean
+ieee_push_type (struct ieee_handle *info, unsigned int indx,
+ unsigned int size, bfd_boolean unsignedp, bfd_boolean localp)
+{
+ struct ieee_type_stack *ts;
+
+ ts = (struct ieee_type_stack *) xmalloc (sizeof *ts);
+ memset (ts, 0, sizeof *ts);
+
+ ts->type.indx = indx;
+ ts->type.size = size;
+ ts->type.unsignedp = unsignedp;
+ ts->type.localp = localp;
+
+ ts->next = info->type_stack;
+ info->type_stack = ts;
+
+ return TRUE;
+}
+
+/* Pop a type index off the type stack. */
+
+static unsigned int
+ieee_pop_type (struct ieee_handle *info)
+{
+ return ieee_pop_type_used (info, TRUE);
+}
+
+/* Pop an unused type index off the type stack. */
+
+static void
+ieee_pop_unused_type (struct ieee_handle *info)
+{
+ (void) ieee_pop_type_used (info, FALSE);
+}
+
+/* Pop a used or unused type index off the type stack. */
+
+static unsigned int
+ieee_pop_type_used (struct ieee_handle *info, bfd_boolean used)
+{
+ struct ieee_type_stack *ts;
+ unsigned int ret;
+
+ ts = info->type_stack;
+ assert (ts != NULL);
+
+ /* If this is a function type, and we need it, we need to append the
+ actual definition to the typedef block now. */
+ if (used && ! ieee_buffer_emptyp (&ts->type.fndef))
+ {
+ struct ieee_buflist *buflist;
+
+ if (ts->type.localp)
+ {
+ /* Make sure we have started the types block. */
+ if (ieee_buffer_emptyp (&info->types))
+ {
+ if (! ieee_change_buffer (info, &info->types)
+ || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 1)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, info->modname))
+ return FALSE;
+ }
+ buflist = &info->types;
+ }
+ else
+ {
+ /* Make sure we started the global type block. */
+ if (ieee_buffer_emptyp (&info->global_types))
+ {
+ if (! ieee_change_buffer (info, &info->global_types)
+ || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 2)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, ""))
+ return FALSE;
+ }
+ buflist = &info->global_types;
+ }
+
+ if (! ieee_append_buffer (info, buflist, &ts->type.fndef))
+ return FALSE;
+ }
+
+ ret = ts->type.indx;
+ info->type_stack = ts->next;
+ free (ts);
+ return ret;
+}
+
+/* Add a range of bytes included in the current compilation unit. */
+
+static bfd_boolean
+ieee_add_range (struct ieee_handle *info, bfd_boolean global, bfd_vma low,
+ bfd_vma high)
+{
+ struct ieee_range **plist, *r, **pr;
+
+ if (low == (bfd_vma) -1 || high == (bfd_vma) -1 || low == high)
+ return TRUE;
+
+ if (global)
+ plist = &info->global_ranges;
+ else
+ plist = &info->ranges;
+
+ for (r = *plist; r != NULL; r = r->next)
+ {
+ if (high >= r->low && low <= r->high)
+ {
+ /* The new range overlaps r. */
+ if (low < r->low)
+ r->low = low;
+ if (high > r->high)
+ r->high = high;
+ pr = &r->next;
+ while (*pr != NULL && (*pr)->low <= r->high)
+ {
+ struct ieee_range *n;
+
+ if ((*pr)->high > r->high)
+ r->high = (*pr)->high;
+ n = (*pr)->next;
+ free (*pr);
+ *pr = n;
+ }
+ return TRUE;
+ }
+ }
+
+ r = (struct ieee_range *) xmalloc (sizeof *r);
+ memset (r, 0, sizeof *r);
+
+ r->low = low;
+ r->high = high;
+
+ /* Store the ranges sorted by address. */
+ for (pr = plist; *pr != NULL; pr = &(*pr)->next)
+ if ((*pr)->low > high)
+ break;
+ r->next = *pr;
+ *pr = r;
+
+ return TRUE;
+}
+
+/* Start a new range for which we only have the low address. */
+
+static bfd_boolean
+ieee_start_range (struct ieee_handle *info, bfd_vma low)
+{
+ struct ieee_range *r;
+
+ r = (struct ieee_range *) xmalloc (sizeof *r);
+ memset (r, 0, sizeof *r);
+ r->low = low;
+ r->next = info->pending_ranges;
+ info->pending_ranges = r;
+ return TRUE;
+}
+
+/* Finish a range started by ieee_start_range. */
+
+static bfd_boolean
+ieee_end_range (struct ieee_handle *info, bfd_vma high)
+{
+ struct ieee_range *r;
+ bfd_vma low;
+
+ assert (info->pending_ranges != NULL);
+ r = info->pending_ranges;
+ low = r->low;
+ info->pending_ranges = r->next;
+ free (r);
+ return ieee_add_range (info, FALSE, low, high);
+}
+
+/* Start defining a type. */
+
+static bfd_boolean
+ieee_define_type (struct ieee_handle *info, unsigned int size,
+ bfd_boolean unsignedp, bfd_boolean localp)
+{
+ return ieee_define_named_type (info, (const char *) NULL,
+ (unsigned int) -1, size, unsignedp,
+ localp, (struct ieee_buflist *) NULL);
+}
+
+/* Start defining a named type. */
+
+static bfd_boolean
+ieee_define_named_type (struct ieee_handle *info, const char *name,
+ unsigned int indx, unsigned int size,
+ bfd_boolean unsignedp, bfd_boolean localp,
+ struct ieee_buflist *buflist)
+{
+ unsigned int type_indx;
+ unsigned int name_indx;
+
+ if (indx != (unsigned int) -1)
+ type_indx = indx;
+ else
+ {
+ type_indx = info->type_indx;
+ ++info->type_indx;
+ }
+
+ name_indx = info->name_indx;
+ ++info->name_indx;
+
+ if (name == NULL)
+ name = "";
+
+ /* If we were given a buffer, use it; otherwise, use either the
+ local or the global type information, and make sure that the type
+ block is started. */
+ if (buflist != NULL)
+ {
+ if (! ieee_change_buffer (info, buflist))
+ return FALSE;
+ }
+ else if (localp)
+ {
+ if (! ieee_buffer_emptyp (&info->types))
+ {
+ if (! ieee_change_buffer (info, &info->types))
+ return FALSE;
+ }
+ else
+ {
+ if (! ieee_change_buffer (info, &info->types)
+ || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 1)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, info->modname))
+ return FALSE;
+ }
+ }
+ else
+ {
+ if (! ieee_buffer_emptyp (&info->global_types))
+ {
+ if (! ieee_change_buffer (info, &info->global_types))
+ return FALSE;
+ }
+ else
+ {
+ if (! ieee_change_buffer (info, &info->global_types)
+ || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 2)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, ""))
+ return FALSE;
+ }
+ }
+
+ /* Push the new type on the type stack, write out an NN record, and
+ write out the start of a TY record. The caller will then finish
+ the TY record. */
+ if (! ieee_push_type (info, type_indx, size, unsignedp, localp))
+ return FALSE;
+
+ return (ieee_write_byte (info, (int) ieee_nn_record)
+ && ieee_write_number (info, name_indx)
+ && ieee_write_id (info, name)
+ && ieee_write_byte (info, (int) ieee_ty_record_enum)
+ && ieee_write_number (info, type_indx)
+ && ieee_write_byte (info, 0xce)
+ && ieee_write_number (info, name_indx));
+}
+
+/* Get an entry to the list of modified versions of a type. */
+
+static struct ieee_modified_type *
+ieee_get_modified_info (struct ieee_handle *info, unsigned int indx)
+{
+ if (indx >= info->modified_alloc)
+ {
+ unsigned int nalloc;
+
+ nalloc = info->modified_alloc;
+ if (nalloc == 0)
+ nalloc = 16;
+ while (indx >= nalloc)
+ nalloc *= 2;
+ info->modified = ((struct ieee_modified_type *)
+ xrealloc (info->modified,
+ nalloc * sizeof *info->modified));
+ memset (info->modified + info->modified_alloc, 0,
+ (nalloc - info->modified_alloc) * sizeof *info->modified);
+ info->modified_alloc = nalloc;
+ }
+
+ return info->modified + indx;
+}
+
+/* Routines for the hash table mapping names to types. */
+
+/* Initialize an entry in the hash table. */
+
+static struct bfd_hash_entry *
+ieee_name_type_newfunc (struct bfd_hash_entry *entry,
+ struct bfd_hash_table *table, const char *string)
+{
+ struct ieee_name_type_hash_entry *ret =
+ (struct ieee_name_type_hash_entry *) entry;
+
+ /* Allocate the structure if it has not already been allocated by a
+ subclass. */
+ if (ret == NULL)
+ ret = ((struct ieee_name_type_hash_entry *)
+ bfd_hash_allocate (table, sizeof *ret));
+ if (ret == NULL)
+ return NULL;
+
+ /* Call the allocation method of the superclass. */
+ ret = ((struct ieee_name_type_hash_entry *)
+ bfd_hash_newfunc ((struct bfd_hash_entry *) ret, table, string));
+ if (ret)
+ {
+ /* Set local fields. */
+ ret->types = NULL;
+ }
+
+ return (struct bfd_hash_entry *) ret;
+}
+
+/* Look up an entry in the hash table. */
+
+#define ieee_name_type_hash_lookup(table, string, create, copy) \
+ ((struct ieee_name_type_hash_entry *) \
+ bfd_hash_lookup (&(table)->root, (string), (create), (copy)))
+
+/* Traverse the hash table. */
+
+#define ieee_name_type_hash_traverse(table, func, info) \
+ (bfd_hash_traverse \
+ (&(table)->root, \
+ (bfd_boolean (*) (struct bfd_hash_entry *, void *)) (func), \
+ (info)))
+
+/* The general routine to write out IEEE debugging information. */
+
+bfd_boolean
+write_ieee_debugging_info (bfd *abfd, void *dhandle)
+{
+ struct ieee_handle info;
+ asection *s;
+ const char *err;
+ struct ieee_buf *b;
+
+ memset (&info, 0, sizeof info);
+ info.abfd = abfd;
+ info.type_indx = 256;
+ info.name_indx = 32;
+
+ if (!bfd_hash_table_init (&info.typedefs.root, ieee_name_type_newfunc,
+ sizeof (struct ieee_name_type_hash_entry))
+ || !bfd_hash_table_init (&info.tags.root, ieee_name_type_newfunc,
+ sizeof (struct ieee_name_type_hash_entry)))
+ return FALSE;
+
+ if (! ieee_init_buffer (&info, &info.global_types)
+ || ! ieee_init_buffer (&info, &info.data)
+ || ! ieee_init_buffer (&info, &info.types)
+ || ! ieee_init_buffer (&info, &info.vars)
+ || ! ieee_init_buffer (&info, &info.cxx)
+ || ! ieee_init_buffer (&info, &info.linenos)
+ || ! ieee_init_buffer (&info, &info.fntype)
+ || ! ieee_init_buffer (&info, &info.fnargs))
+ return FALSE;
+
+ if (! debug_write (dhandle, &ieee_fns, (void *) &info))
+ return FALSE;
+
+ if (info.filename != NULL)
+ {
+ if (! ieee_finish_compilation_unit (&info))
+ return FALSE;
+ }
+
+ /* Put any undefined tags in the global typedef information. */
+ info.error = FALSE;
+ ieee_name_type_hash_traverse (&info.tags,
+ ieee_write_undefined_tag,
+ (void *) &info);
+ if (info.error)
+ return FALSE;
+
+ /* Prepend the global typedef information to the other data. */
+ if (! ieee_buffer_emptyp (&info.global_types))
+ {
+ /* The HP debugger seems to have a bug in which it ignores the
+ last entry in the global types, so we add a dummy entry. */
+ if (! ieee_change_buffer (&info, &info.global_types)
+ || ! ieee_write_byte (&info, (int) ieee_nn_record)
+ || ! ieee_write_number (&info, info.name_indx)
+ || ! ieee_write_id (&info, "")
+ || ! ieee_write_byte (&info, (int) ieee_ty_record_enum)
+ || ! ieee_write_number (&info, info.type_indx)
+ || ! ieee_write_byte (&info, 0xce)
+ || ! ieee_write_number (&info, info.name_indx)
+ || ! ieee_write_number (&info, 'P')
+ || ! ieee_write_number (&info, (int) builtin_void + 32)
+ || ! ieee_write_byte (&info, (int) ieee_be_record_enum))
+ return FALSE;
+
+ if (! ieee_append_buffer (&info, &info.global_types, &info.data))
+ return FALSE;
+ info.data = info.global_types;
+ }
+
+ /* Make sure that we have declare BB11 blocks for each range in the
+ file. They are added to info->vars. */
+ info.error = FALSE;
+ if (! ieee_init_buffer (&info, &info.vars))
+ return FALSE;
+ bfd_map_over_sections (abfd, ieee_add_bb11_blocks, (void *) &info);
+ if (info.error)
+ return FALSE;
+ if (! ieee_buffer_emptyp (&info.vars))
+ {
+ if (! ieee_change_buffer (&info, &info.vars)
+ || ! ieee_write_byte (&info, (int) ieee_be_record_enum))
+ return FALSE;
+
+ if (! ieee_append_buffer (&info, &info.data, &info.vars))
+ return FALSE;
+ }
+
+ /* Now all the data is in info.data. Write it out to the BFD. We
+ normally would need to worry about whether all the other sections
+ are set up yet, but the IEEE backend will handle this particular
+ case correctly regardless. */
+ if (ieee_buffer_emptyp (&info.data))
+ {
+ /* There is no debugging information. */
+ return TRUE;
+ }
+ err = NULL;
+ s = bfd_make_section_with_flags (abfd, ".debug",
+ SEC_DEBUGGING | SEC_HAS_CONTENTS);
+ if (s == NULL)
+ err = "bfd_make_section";
+ if (err == NULL)
+ {
+ bfd_size_type size;
+
+ size = 0;
+ for (b = info.data.head; b != NULL; b = b->next)
+ size += b->c;
+ if (! bfd_set_section_size (abfd, s, size))
+ err = "bfd_set_section_size";
+ }
+ if (err == NULL)
+ {
+ file_ptr offset;
+
+ offset = 0;
+ for (b = info.data.head; b != NULL; b = b->next)
+ {
+ if (! bfd_set_section_contents (abfd, s, b->buf, offset, b->c))
+ {
+ err = "bfd_set_section_contents";
+ break;
+ }
+ offset += b->c;
+ }
+ }
+
+ if (err != NULL)
+ {
+ fprintf (stderr, "%s: %s: %s\n", bfd_get_filename (abfd), err,
+ bfd_errmsg (bfd_get_error ()));
+ return FALSE;
+ }
+
+ bfd_hash_table_free (&info.typedefs.root);
+ bfd_hash_table_free (&info.tags.root);
+
+ return TRUE;
+}
+
+/* Write out information for an undefined tag. This is called via
+ ieee_name_type_hash_traverse. */
+
+static bfd_boolean
+ieee_write_undefined_tag (struct ieee_name_type_hash_entry *h, void *p)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ struct ieee_name_type *nt;
+
+ for (nt = h->types; nt != NULL; nt = nt->next)
+ {
+ unsigned int name_indx;
+ char code;
+
+ if (nt->kind == DEBUG_KIND_ILLEGAL)
+ continue;
+
+ if (ieee_buffer_emptyp (&info->global_types))
+ {
+ if (! ieee_change_buffer (info, &info->global_types)
+ || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 2)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, ""))
+ {
+ info->error = TRUE;
+ return FALSE;
+ }
+ }
+ else
+ {
+ if (! ieee_change_buffer (info, &info->global_types))
+ {
+ info->error = TRUE;
+ return FALSE;
+ }
+ }
+
+ name_indx = info->name_indx;
+ ++info->name_indx;
+ if (! ieee_write_byte (info, (int) ieee_nn_record)
+ || ! ieee_write_number (info, name_indx)
+ || ! ieee_write_id (info, nt->type.name)
+ || ! ieee_write_byte (info, (int) ieee_ty_record_enum)
+ || ! ieee_write_number (info, nt->type.indx)
+ || ! ieee_write_byte (info, 0xce)
+ || ! ieee_write_number (info, name_indx))
+ {
+ info->error = TRUE;
+ return FALSE;
+ }
+
+ switch (nt->kind)
+ {
+ default:
+ abort ();
+ info->error = TRUE;
+ return FALSE;
+ case DEBUG_KIND_STRUCT:
+ case DEBUG_KIND_CLASS:
+ code = 'S';
+ break;
+ case DEBUG_KIND_UNION:
+ case DEBUG_KIND_UNION_CLASS:
+ code = 'U';
+ break;
+ case DEBUG_KIND_ENUM:
+ code = 'E';
+ break;
+ }
+ if (! ieee_write_number (info, code)
+ || ! ieee_write_number (info, 0))
+ {
+ info->error = TRUE;
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+/* Start writing out information for a compilation unit. */
+
+static bfd_boolean
+ieee_start_compilation_unit (void *p, const char *filename)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ const char *modname;
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ const char *backslash;
+#endif
+ char *c, *s;
+
+ if (info->filename != NULL)
+ {
+ if (! ieee_finish_compilation_unit (info))
+ return FALSE;
+ }
+
+ info->filename = filename;
+ modname = strrchr (filename, '/');
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ /* We could have a mixed forward/back slash case. */
+ backslash = strrchr (filename, '\\');
+ if (modname == NULL || (backslash != NULL && backslash > modname))
+ modname = backslash;
+#endif
+
+ if (modname != NULL)
+ ++modname;
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ else if (filename[0] && filename[1] == ':')
+ modname = filename + 2;
+#endif
+ else
+ modname = filename;
+
+ c = xstrdup (modname);
+ s = strrchr (c, '.');
+ if (s != NULL)
+ *s = '\0';
+ info->modname = c;
+
+ if (! ieee_init_buffer (info, &info->types)
+ || ! ieee_init_buffer (info, &info->vars)
+ || ! ieee_init_buffer (info, &info->cxx)
+ || ! ieee_init_buffer (info, &info->linenos))
+ return FALSE;
+ info->ranges = NULL;
+
+ /* Always include a BB1 and a BB3 block. That is what the output of
+ the MRI linker seems to look like. */
+ if (! ieee_change_buffer (info, &info->types)
+ || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 1)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, info->modname))
+ return FALSE;
+
+ ++info->name_indx;
+ if (! ieee_change_buffer (info, &info->vars)
+ || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 3)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, info->modname))
+ return FALSE;
+
+ return TRUE;
+}
+
+/* Finish up a compilation unit. */
+
+static bfd_boolean
+ieee_finish_compilation_unit (struct ieee_handle *info)
+{
+ struct ieee_range *r;
+
+ if (! ieee_buffer_emptyp (&info->types))
+ {
+ if (! ieee_change_buffer (info, &info->types)
+ || ! ieee_write_byte (info, (int) ieee_be_record_enum))
+ return FALSE;
+ }
+
+ if (! ieee_buffer_emptyp (&info->cxx))
+ {
+ /* Append any C++ information to the global function and
+ variable information. */
+ assert (! ieee_buffer_emptyp (&info->vars));
+ if (! ieee_change_buffer (info, &info->vars))
+ return FALSE;
+
+ /* We put the pmisc records in a dummy procedure, just as the
+ MRI compiler does. */
+ if (! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 6)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, "__XRYCPP")
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, info->highaddr - 1)
+ || ! ieee_append_buffer (info, &info->vars, &info->cxx)
+ || ! ieee_change_buffer (info, &info->vars)
+ || ! ieee_write_byte (info, (int) ieee_be_record_enum)
+ || ! ieee_write_number (info, info->highaddr - 1))
+ return FALSE;
+ }
+
+ if (! ieee_buffer_emptyp (&info->vars))
+ {
+ if (! ieee_change_buffer (info, &info->vars)
+ || ! ieee_write_byte (info, (int) ieee_be_record_enum))
+ return FALSE;
+ }
+
+ if (info->pending_lineno_filename != NULL)
+ {
+ /* Force out the pending line number. */
+ if (! ieee_lineno ((void *) info, (const char *) NULL, 0, (bfd_vma) -1))
+ return FALSE;
+ }
+ if (! ieee_buffer_emptyp (&info->linenos))
+ {
+ if (! ieee_change_buffer (info, &info->linenos)
+ || ! ieee_write_byte (info, (int) ieee_be_record_enum))
+ return FALSE;
+ if (filename_cmp (info->filename, info->lineno_filename) != 0)
+ {
+ /* We were not in the main file. We just closed the
+ included line number block, and now we must close the
+ main line number block. */
+ if (! ieee_write_byte (info, (int) ieee_be_record_enum))
+ return FALSE;
+ }
+ }
+
+ if (! ieee_append_buffer (info, &info->data, &info->types)
+ || ! ieee_append_buffer (info, &info->data, &info->vars)
+ || ! ieee_append_buffer (info, &info->data, &info->linenos))
+ return FALSE;
+
+ /* Build BB10/BB11 blocks based on the ranges we recorded. */
+ if (! ieee_change_buffer (info, &info->data))
+ return FALSE;
+
+ if (! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 10)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, info->modname)
+ || ! ieee_write_id (info, "")
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, "GNU objcopy"))
+ return FALSE;
+
+ for (r = info->ranges; r != NULL; r = r->next)
+ {
+ bfd_vma low, high;
+ asection *s;
+ int kind;
+
+ low = r->low;
+ high = r->high;
+
+ /* Find the section corresponding to this range. */
+ for (s = info->abfd->sections; s != NULL; s = s->next)
+ {
+ if (bfd_get_section_vma (info->abfd, s) <= low
+ && high <= (bfd_get_section_vma (info->abfd, s)
+ + bfd_section_size (info->abfd, s)))
+ break;
+ }
+
+ if (s == NULL)
+ {
+ /* Just ignore this range. */
+ continue;
+ }
+
+ /* Coalesce ranges if it seems reasonable. */
+ while (r->next != NULL
+ && high + 0x1000 >= r->next->low
+ && (r->next->high
+ <= (bfd_get_section_vma (info->abfd, s)
+ + bfd_section_size (info->abfd, s))))
+ {
+ r = r->next;
+ high = r->high;
+ }
+
+ if ((s->flags & SEC_CODE) != 0)
+ kind = 1;
+ else if ((s->flags & SEC_READONLY) != 0)
+ kind = 3;
+ else
+ kind = 2;
+
+ if (! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 11)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, "")
+ || ! ieee_write_number (info, kind)
+ || ! ieee_write_number (info, s->index + IEEE_SECTION_NUMBER_BASE)
+ || ! ieee_write_number (info, low)
+ || ! ieee_write_byte (info, (int) ieee_be_record_enum)
+ || ! ieee_write_number (info, high - low))
+ return FALSE;
+
+ /* Add this range to the list of global ranges. */
+ if (! ieee_add_range (info, TRUE, low, high))
+ return FALSE;
+ }
+
+ if (! ieee_write_byte (info, (int) ieee_be_record_enum))
+ return FALSE;
+
+ return TRUE;
+}
+
+/* Add BB11 blocks describing each range that we have not already
+ described. */
+
+static void
+ieee_add_bb11_blocks (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *data)
+{
+ struct ieee_handle *info = (struct ieee_handle *) data;
+ bfd_vma low, high;
+ struct ieee_range *r;
+
+ low = bfd_get_section_vma (abfd, sec);
+ high = low + bfd_section_size (abfd, sec);
+
+ /* Find the first range at or after this section. The ranges are
+ sorted by address. */
+ for (r = info->global_ranges; r != NULL; r = r->next)
+ if (r->high > low)
+ break;
+
+ while (low < high)
+ {
+ if (r == NULL || r->low >= high)
+ {
+ if (! ieee_add_bb11 (info, sec, low, high))
+ info->error = TRUE;
+ return;
+ }
+
+ if (low < r->low
+ && r->low - low > 0x100)
+ {
+ if (! ieee_add_bb11 (info, sec, low, r->low))
+ {
+ info->error = TRUE;
+ return;
+ }
+ }
+ low = r->high;
+
+ r = r->next;
+ }
+}
+
+/* Add a single BB11 block for a range. We add it to info->vars. */
+
+static bfd_boolean
+ieee_add_bb11 (struct ieee_handle *info, asection *sec, bfd_vma low,
+ bfd_vma high)
+{
+ int kind;
+
+ if (! ieee_buffer_emptyp (&info->vars))
+ {
+ if (! ieee_change_buffer (info, &info->vars))
+ return FALSE;
+ }
+ else
+ {
+ const char *filename, *modname;
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ const char *backslash;
+#endif
+ char *c, *s;
+
+ /* Start the enclosing BB10 block. */
+ filename = bfd_get_filename (info->abfd);
+ modname = strrchr (filename, '/');
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ backslash = strrchr (filename, '\\');
+ if (modname == NULL || (backslash != NULL && backslash > modname))
+ modname = backslash;
+#endif
+
+ if (modname != NULL)
+ ++modname;
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ else if (filename[0] && filename[1] == ':')
+ modname = filename + 2;
+#endif
+ else
+ modname = filename;
+
+ c = xstrdup (modname);
+ s = strrchr (c, '.');
+ if (s != NULL)
+ *s = '\0';
+
+ if (! ieee_change_buffer (info, &info->vars)
+ || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 10)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, c)
+ || ! ieee_write_id (info, "")
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, "GNU objcopy"))
+ {
+ free (c);
+ return FALSE;
+ }
+
+ free (c);
+ }
+
+ if ((sec->flags & SEC_CODE) != 0)
+ kind = 1;
+ else if ((sec->flags & SEC_READONLY) != 0)
+ kind = 3;
+ else
+ kind = 2;
+
+ if (! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 11)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, "")
+ || ! ieee_write_number (info, kind)
+ || ! ieee_write_number (info, sec->index + IEEE_SECTION_NUMBER_BASE)
+ || ! ieee_write_number (info, low)
+ || ! ieee_write_byte (info, (int) ieee_be_record_enum)
+ || ! ieee_write_number (info, high - low))
+ return FALSE;
+
+ return TRUE;
+}
+
+/* Start recording information from a particular source file. This is
+ used to record which file defined which types, variables, etc. It
+ is not used for line numbers, since the lineno entry point passes
+ down the file name anyhow. IEEE debugging information doesn't seem
+ to store this information anywhere. */
+
+static bfd_boolean
+ieee_start_source (void *p ATTRIBUTE_UNUSED,
+ const char *filename ATTRIBUTE_UNUSED)
+{
+ return TRUE;
+}
+
+/* Make an empty type. */
+
+static bfd_boolean
+ieee_empty_type (void *p)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ return ieee_push_type (info, (int) builtin_unknown, 0, FALSE, FALSE);
+}
+
+/* Make a void type. */
+
+static bfd_boolean
+ieee_void_type (void *p)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ return ieee_push_type (info, (int) builtin_void, 0, FALSE, FALSE);
+}
+
+/* Make an integer type. */
+
+static bfd_boolean
+ieee_int_type (void *p, unsigned int size, bfd_boolean unsignedp)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ unsigned int indx;
+
+ switch (size)
+ {
+ case 1:
+ indx = (int) builtin_signed_char;
+ break;
+ case 2:
+ indx = (int) builtin_signed_short_int;
+ break;
+ case 4:
+ indx = (int) builtin_signed_long;
+ break;
+ case 8:
+ indx = (int) builtin_signed_long_long;
+ break;
+ default:
+ fprintf (stderr, _("IEEE unsupported integer type size %u\n"), size);
+ return FALSE;
+ }
+
+ if (unsignedp)
+ ++indx;
+
+ return ieee_push_type (info, indx, size, unsignedp, FALSE);
+}
+
+/* Make a floating point type. */
+
+static bfd_boolean
+ieee_float_type (void *p, unsigned int size)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ unsigned int indx;
+
+ switch (size)
+ {
+ case 4:
+ indx = (int) builtin_float;
+ break;
+ case 8:
+ indx = (int) builtin_double;
+ break;
+ case 12:
+ /* FIXME: This size really depends upon the processor. */
+ indx = (int) builtin_long_double;
+ break;
+ case 16:
+ indx = (int) builtin_long_long_double;
+ break;
+ default:
+ fprintf (stderr, _("IEEE unsupported float type size %u\n"), size);
+ return FALSE;
+ }
+
+ return ieee_push_type (info, indx, size, FALSE, FALSE);
+}
+
+/* Make a complex type. */
+
+static bfd_boolean
+ieee_complex_type (void *p, unsigned int size)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ char code;
+
+ switch (size)
+ {
+ case 4:
+ if (info->complex_float_index != 0)
+ return ieee_push_type (info, info->complex_float_index, size * 2,
+ FALSE, FALSE);
+ code = 'c';
+ break;
+ case 12:
+ case 16:
+ /* These cases can be output by gcc -gstabs. Outputting the
+ wrong type is better than crashing. */
+ case 8:
+ if (info->complex_double_index != 0)
+ return ieee_push_type (info, info->complex_double_index, size * 2,
+ FALSE, FALSE);
+ code = 'd';
+ break;
+ default:
+ fprintf (stderr, _("IEEE unsupported complex type size %u\n"), size);
+ return FALSE;
+ }
+
+ /* FIXME: I don't know what the string is for. */
+ if (! ieee_define_type (info, size * 2, FALSE, FALSE)
+ || ! ieee_write_number (info, code)
+ || ! ieee_write_id (info, ""))
+ return FALSE;
+
+ if (size == 4)
+ info->complex_float_index = info->type_stack->type.indx;
+ else
+ info->complex_double_index = info->type_stack->type.indx;
+
+ return TRUE;
+}
+
+/* Make a boolean type. IEEE doesn't support these, so we just make
+ an integer type instead. */
+
+static bfd_boolean
+ieee_bool_type (void *p, unsigned int size)
+{
+ return ieee_int_type (p, size, TRUE);
+}
+
+/* Make an enumeration. */
+
+static bfd_boolean
+ieee_enum_type (void *p, const char *tag, const char **names,
+ bfd_signed_vma *vals)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ struct ieee_defined_enum *e;
+ bfd_boolean localp, simple;
+ unsigned int indx;
+ int i = 0;
+
+ localp = FALSE;
+ indx = (unsigned int) -1;
+ for (e = info->enums; e != NULL; e = e->next)
+ {
+ if (tag == NULL)
+ {
+ if (e->tag != NULL)
+ continue;
+ }
+ else
+ {
+ if (e->tag == NULL
+ || tag[0] != e->tag[0]
+ || strcmp (tag, e->tag) != 0)
+ continue;
+ }
+
+ if (! e->defined)
+ {
+ /* This enum tag has been seen but not defined. */
+ indx = e->indx;
+ break;
+ }
+
+ if (names != NULL && e->names != NULL)
+ {
+ for (i = 0; names[i] != NULL && e->names[i] != NULL; i++)
+ {
+ if (names[i][0] != e->names[i][0]
+ || vals[i] != e->vals[i]
+ || strcmp (names[i], e->names[i]) != 0)
+ break;
+ }
+ }
+
+ if ((names == NULL && e->names == NULL)
+ || (names != NULL
+ && e->names != NULL
+ && names[i] == NULL
+ && e->names[i] == NULL))
+ {
+ /* We've seen this enum before. */
+ return ieee_push_type (info, e->indx, 0, TRUE, FALSE);
+ }
+
+ if (tag != NULL)
+ {
+ /* We've already seen an enum of the same name, so we must make
+ sure to output this one locally. */
+ localp = TRUE;
+ break;
+ }
+ }
+
+ /* If this is a simple enumeration, in which the values start at 0
+ and always increment by 1, we can use type E. Otherwise we must
+ use type N. */
+
+ simple = TRUE;
+ if (names != NULL)
+ {
+ for (i = 0; names[i] != NULL; i++)
+ {
+ if (vals[i] != i)
+ {
+ simple = FALSE;
+ break;
+ }
+ }
+ }
+
+ if (! ieee_define_named_type (info, tag, indx, 0, TRUE, localp,
+ (struct ieee_buflist *) NULL)
+ || ! ieee_write_number (info, simple ? 'E' : 'N'))
+ return FALSE;
+ if (simple)
+ {
+ /* FIXME: This is supposed to be the enumeration size, but we
+ don't store that. */
+ if (! ieee_write_number (info, 4))
+ return FALSE;
+ }
+ if (names != NULL)
+ {
+ for (i = 0; names[i] != NULL; i++)
+ {
+ if (! ieee_write_id (info, names[i]))
+ return FALSE;
+ if (! simple)
+ {
+ if (! ieee_write_number (info, vals[i]))
+ return FALSE;
+ }
+ }
+ }
+
+ if (! localp)
+ {
+ if (indx == (unsigned int) -1)
+ {
+ e = (struct ieee_defined_enum *) xmalloc (sizeof *e);
+ memset (e, 0, sizeof *e);
+ e->indx = info->type_stack->type.indx;
+ e->tag = tag;
+
+ e->next = info->enums;
+ info->enums = e;
+ }
+
+ e->names = names;
+ e->vals = vals;
+ e->defined = TRUE;
+ }
+
+ return TRUE;
+}
+
+/* Make a pointer type. */
+
+static bfd_boolean
+ieee_pointer_type (void *p)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ bfd_boolean localp;
+ unsigned int indx;
+ struct ieee_modified_type *m = NULL;
+
+ localp = info->type_stack->type.localp;
+ indx = ieee_pop_type (info);
+
+ /* A pointer to a simple builtin type can be obtained by adding 32.
+ FIXME: Will this be a short pointer, and will that matter? */
+ if (indx < 32)
+ return ieee_push_type (info, indx + 32, 0, TRUE, FALSE);
+
+ if (! localp)
+ {
+ m = ieee_get_modified_info ((struct ieee_handle *) p, indx);
+ if (m == NULL)
+ return FALSE;
+
+ /* FIXME: The size should depend upon the architecture. */
+ if (m->pointer > 0)
+ return ieee_push_type (info, m->pointer, 4, TRUE, FALSE);
+ }
+
+ if (! ieee_define_type (info, 4, TRUE, localp)
+ || ! ieee_write_number (info, 'P')
+ || ! ieee_write_number (info, indx))
+ return FALSE;
+
+ if (! localp)
+ m->pointer = info->type_stack->type.indx;
+
+ return TRUE;
+}
+
+/* Make a function type. This will be called for a method, but we
+ don't want to actually add it to the type table in that case. We
+ handle this by defining the type in a private buffer, and only
+ adding that buffer to the typedef block if we are going to use it. */
+
+static bfd_boolean
+ieee_function_type (void *p, int argcount, bfd_boolean varargs)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ bfd_boolean localp;
+ unsigned int *args = NULL;
+ int i;
+ unsigned int retindx;
+ struct ieee_buflist fndef;
+ struct ieee_modified_type *m;
+
+ localp = FALSE;
+
+ if (argcount > 0)
+ {
+ args = (unsigned int *) xmalloc (argcount * sizeof *args);
+ for (i = argcount - 1; i >= 0; i--)
+ {
+ if (info->type_stack->type.localp)
+ localp = TRUE;
+ args[i] = ieee_pop_type (info);
+ }
+ }
+ else if (argcount < 0)
+ varargs = FALSE;
+
+ if (info->type_stack->type.localp)
+ localp = TRUE;
+ retindx = ieee_pop_type (info);
+
+ m = NULL;
+ if (argcount < 0 && ! localp)
+ {
+ m = ieee_get_modified_info ((struct ieee_handle *) p, retindx);
+ if (m == NULL)
+ return FALSE;
+
+ if (m->function > 0)
+ return ieee_push_type (info, m->function, 0, TRUE, FALSE);
+ }
+
+ /* An attribute of 0x41 means that the frame and push mask are
+ unknown. */
+ if (! ieee_init_buffer (info, &fndef)
+ || ! ieee_define_named_type (info, (const char *) NULL,
+ (unsigned int) -1, 0, TRUE, localp,
+ &fndef)
+ || ! ieee_write_number (info, 'x')
+ || ! ieee_write_number (info, 0x41)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, retindx)
+ || ! ieee_write_number (info, (bfd_vma) argcount + (varargs ? 1 : 0)))
+ {
+ free (args);
+ return FALSE;
+ }
+ if (argcount > 0)
+ {
+ for (i = 0; i < argcount; i++)
+ if (! ieee_write_number (info, args[i]))
+ return FALSE;
+ free (args);
+ }
+ if (varargs)
+ {
+ /* A varargs function is represented by writing out the last
+ argument as type void *, although this makes little sense. */
+ if (! ieee_write_number (info, (bfd_vma) builtin_void + 32))
+ return FALSE;
+ }
+
+ if (! ieee_write_number (info, 0))
+ return FALSE;
+
+ /* We wrote the information into fndef, in case we don't need it.
+ It will be appended to info->types by ieee_pop_type. */
+ info->type_stack->type.fndef = fndef;
+
+ if (m != NULL)
+ m->function = info->type_stack->type.indx;
+
+ return TRUE;
+}
+
+/* Make a reference type. */
+
+static bfd_boolean
+ieee_reference_type (void *p)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ /* IEEE appears to record a normal pointer type, and then use a
+ pmisc record to indicate that it is really a reference. */
+
+ if (! ieee_pointer_type (p))
+ return FALSE;
+ info->type_stack->type.referencep = TRUE;
+ return TRUE;
+}
+
+/* Make a range type. */
+
+static bfd_boolean
+ieee_range_type (void *p, bfd_signed_vma low, bfd_signed_vma high)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ unsigned int size;
+ bfd_boolean unsignedp, localp;
+
+ size = info->type_stack->type.size;
+ unsignedp = info->type_stack->type.unsignedp;
+ localp = info->type_stack->type.localp;
+ ieee_pop_unused_type (info);
+ return (ieee_define_type (info, size, unsignedp, localp)
+ && ieee_write_number (info, 'R')
+ && ieee_write_number (info, (bfd_vma) low)
+ && ieee_write_number (info, (bfd_vma) high)
+ && ieee_write_number (info, unsignedp ? 0 : 1)
+ && ieee_write_number (info, size));
+}
+
+/* Make an array type. */
+
+static bfd_boolean
+ieee_array_type (void *p, bfd_signed_vma low, bfd_signed_vma high,
+ bfd_boolean stringp ATTRIBUTE_UNUSED)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ unsigned int eleindx;
+ bfd_boolean localp;
+ unsigned int size;
+ struct ieee_modified_type *m = NULL;
+ struct ieee_modified_array_type *a;
+
+ /* IEEE does not store the range, so we just ignore it. */
+ ieee_pop_unused_type (info);
+ localp = info->type_stack->type.localp;
+ size = info->type_stack->type.size;
+ eleindx = ieee_pop_type (info);
+
+ /* If we don't know the range, treat the size as exactly one
+ element. */
+ if (low < high)
+ size *= (high - low) + 1;
+
+ if (! localp)
+ {
+ m = ieee_get_modified_info (info, eleindx);
+ if (m == NULL)
+ return FALSE;
+
+ for (a = m->arrays; a != NULL; a = a->next)
+ {
+ if (a->low == low && a->high == high)
+ return ieee_push_type (info, a->indx, size, FALSE, FALSE);
+ }
+ }
+
+ if (! ieee_define_type (info, size, FALSE, localp)
+ || ! ieee_write_number (info, low == 0 ? 'Z' : 'C')
+ || ! ieee_write_number (info, eleindx))
+ return FALSE;
+ if (low != 0)
+ {
+ if (! ieee_write_number (info, low))
+ return FALSE;
+ }
+
+ if (! ieee_write_number (info, high + 1))
+ return FALSE;
+
+ if (! localp)
+ {
+ a = (struct ieee_modified_array_type *) xmalloc (sizeof *a);
+ memset (a, 0, sizeof *a);
+
+ a->indx = info->type_stack->type.indx;
+ a->low = low;
+ a->high = high;
+
+ a->next = m->arrays;
+ m->arrays = a;
+ }
+
+ return TRUE;
+}
+
+/* Make a set type. */
+
+static bfd_boolean
+ieee_set_type (void *p, bfd_boolean bitstringp ATTRIBUTE_UNUSED)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ bfd_boolean localp;
+ unsigned int eleindx;
+
+ localp = info->type_stack->type.localp;
+ eleindx = ieee_pop_type (info);
+
+ /* FIXME: We don't know the size, so we just use 4. */
+
+ return (ieee_define_type (info, 0, TRUE, localp)
+ && ieee_write_number (info, 's')
+ && ieee_write_number (info, 4)
+ && ieee_write_number (info, eleindx));
+}
+
+/* Make an offset type. */
+
+static bfd_boolean
+ieee_offset_type (void *p)
+{
+ /* FIXME: The MRI C++ compiler does not appear to generate any
+ useful type information about an offset type. It just records a
+ pointer to member as an integer. The MRI/HP IEEE spec does
+ describe a pmisc record which can be used for a pointer to
+ member. Unfortunately, it does not describe the target type,
+ which seems pretty important. I'm going to punt this for now. */
+
+ return ieee_int_type (p, 4, TRUE);
+}
+
+/* Make a method type. */
+
+static bfd_boolean
+ieee_method_type (void *p, bfd_boolean domain, int argcount,
+ bfd_boolean varargs)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ /* FIXME: The MRI/HP IEEE spec defines a pmisc record to use for a
+ method, but the definition is incomplete. We just output an 'x'
+ type. */
+
+ if (domain)
+ ieee_pop_unused_type (info);
+
+ return ieee_function_type (p, argcount, varargs);
+}
+
+/* Make a const qualified type. */
+
+static bfd_boolean
+ieee_const_type (void *p)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ unsigned int size;
+ bfd_boolean unsignedp, localp;
+ unsigned int indx;
+ struct ieee_modified_type *m = NULL;
+
+ size = info->type_stack->type.size;
+ unsignedp = info->type_stack->type.unsignedp;
+ localp = info->type_stack->type.localp;
+ indx = ieee_pop_type (info);
+
+ if (! localp)
+ {
+ m = ieee_get_modified_info (info, indx);
+ if (m == NULL)
+ return FALSE;
+
+ if (m->const_qualified > 0)
+ return ieee_push_type (info, m->const_qualified, size, unsignedp,
+ FALSE);
+ }
+
+ if (! ieee_define_type (info, size, unsignedp, localp)
+ || ! ieee_write_number (info, 'n')
+ || ! ieee_write_number (info, 1)
+ || ! ieee_write_number (info, indx))
+ return FALSE;
+
+ if (! localp)
+ m->const_qualified = info->type_stack->type.indx;
+
+ return TRUE;
+}
+
+/* Make a volatile qualified type. */
+
+static bfd_boolean
+ieee_volatile_type (void *p)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ unsigned int size;
+ bfd_boolean unsignedp, localp;
+ unsigned int indx;
+ struct ieee_modified_type *m = NULL;
+
+ size = info->type_stack->type.size;
+ unsignedp = info->type_stack->type.unsignedp;
+ localp = info->type_stack->type.localp;
+ indx = ieee_pop_type (info);
+
+ if (! localp)
+ {
+ m = ieee_get_modified_info (info, indx);
+ if (m == NULL)
+ return FALSE;
+
+ if (m->volatile_qualified > 0)
+ return ieee_push_type (info, m->volatile_qualified, size, unsignedp,
+ FALSE);
+ }
+
+ if (! ieee_define_type (info, size, unsignedp, localp)
+ || ! ieee_write_number (info, 'n')
+ || ! ieee_write_number (info, 2)
+ || ! ieee_write_number (info, indx))
+ return FALSE;
+
+ if (! localp)
+ m->volatile_qualified = info->type_stack->type.indx;
+
+ return TRUE;
+}
+
+/* Convert an enum debug_visibility into a CXXFLAGS value. */
+
+static unsigned int
+ieee_vis_to_flags (enum debug_visibility visibility)
+{
+ switch (visibility)
+ {
+ default:
+ abort ();
+ case DEBUG_VISIBILITY_PUBLIC:
+ return CXXFLAGS_VISIBILITY_PUBLIC;
+ case DEBUG_VISIBILITY_PRIVATE:
+ return CXXFLAGS_VISIBILITY_PRIVATE;
+ case DEBUG_VISIBILITY_PROTECTED:
+ return CXXFLAGS_VISIBILITY_PROTECTED;
+ }
+ /*NOTREACHED*/
+}
+
+/* Start defining a struct type. We build it in the strdef field on
+ the stack, to avoid confusing type definitions required by the
+ fields with the struct type itself. */
+
+static bfd_boolean
+ieee_start_struct_type (void *p, const char *tag, unsigned int id,
+ bfd_boolean structp, unsigned int size)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ bfd_boolean localp, ignorep;
+ bfd_boolean copy;
+ char ab[20];
+ const char *look;
+ struct ieee_name_type_hash_entry *h;
+ struct ieee_name_type *nt, *ntlook;
+ struct ieee_buflist strdef;
+
+ localp = FALSE;
+ ignorep = FALSE;
+
+ /* We need to create a tag for internal use even if we don't want
+ one for external use. This will let us refer to an anonymous
+ struct. */
+ if (tag != NULL)
+ {
+ look = tag;
+ copy = FALSE;
+ }
+ else
+ {
+ sprintf (ab, "__anon%u", id);
+ look = ab;
+ copy = TRUE;
+ }
+
+ /* If we already have references to the tag, we must use the
+ existing type index. */
+ h = ieee_name_type_hash_lookup (&info->tags, look, TRUE, copy);
+ if (h == NULL)
+ return FALSE;
+
+ nt = NULL;
+ for (ntlook = h->types; ntlook != NULL; ntlook = ntlook->next)
+ {
+ if (ntlook->id == id)
+ nt = ntlook;
+ else if (! ntlook->type.localp)
+ {
+ /* We are creating a duplicate definition of a globally
+ defined tag. Force it to be local to avoid
+ confusion. */
+ localp = TRUE;
+ }
+ }
+
+ if (nt != NULL)
+ {
+ assert (localp == nt->type.localp);
+ if (nt->kind == DEBUG_KIND_ILLEGAL && ! localp)
+ {
+ /* We've already seen a global definition of the type.
+ Ignore this new definition. */
+ ignorep = TRUE;
+ }
+ }
+ else
+ {
+ nt = (struct ieee_name_type *) xmalloc (sizeof *nt);
+ memset (nt, 0, sizeof *nt);
+ nt->id = id;
+ nt->type.name = h->root.string;
+ nt->next = h->types;
+ h->types = nt;
+ nt->type.indx = info->type_indx;
+ ++info->type_indx;
+ }
+
+ nt->kind = DEBUG_KIND_ILLEGAL;
+
+ if (! ieee_init_buffer (info, &strdef)
+ || ! ieee_define_named_type (info, tag, nt->type.indx, size, TRUE,
+ localp, &strdef)
+ || ! ieee_write_number (info, structp ? 'S' : 'U')
+ || ! ieee_write_number (info, size))
+ return FALSE;
+
+ if (! ignorep)
+ {
+ const char *hold;
+
+ /* We never want nt->type.name to be NULL. We want the rest of
+ the type to be the object set up on the type stack; it will
+ have a NULL name if tag is NULL. */
+ hold = nt->type.name;
+ nt->type = info->type_stack->type;
+ nt->type.name = hold;
+ }
+
+ info->type_stack->type.name = tag;
+ info->type_stack->type.strdef = strdef;
+ info->type_stack->type.ignorep = ignorep;
+
+ return TRUE;
+}
+
+/* Add a field to a struct. */
+
+static bfd_boolean
+ieee_struct_field (void *p, const char *name, bfd_vma bitpos, bfd_vma bitsize,
+ enum debug_visibility visibility)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ unsigned int size;
+ bfd_boolean unsignedp;
+ bfd_boolean referencep;
+ bfd_boolean localp;
+ unsigned int indx;
+ bfd_vma offset;
+
+ assert (info->type_stack != NULL
+ && info->type_stack->next != NULL
+ && ! ieee_buffer_emptyp (&info->type_stack->next->type.strdef));
+
+ /* If we are ignoring this struct definition, just pop and ignore
+ the type. */
+ if (info->type_stack->next->type.ignorep)
+ {
+ ieee_pop_unused_type (info);
+ return TRUE;
+ }
+
+ size = info->type_stack->type.size;
+ unsignedp = info->type_stack->type.unsignedp;
+ referencep = info->type_stack->type.referencep;
+ localp = info->type_stack->type.localp;
+ indx = ieee_pop_type (info);
+
+ if (localp)
+ info->type_stack->type.localp = TRUE;
+
+ if (info->type_stack->type.classdef != NULL)
+ {
+ unsigned int flags;
+ unsigned int nindx;
+
+ /* This is a class. We must add a description of this field to
+ the class records we are building. */
+
+ flags = ieee_vis_to_flags (visibility);
+ nindx = info->type_stack->type.classdef->indx;
+ if (! ieee_change_buffer (info,
+ &info->type_stack->type.classdef->pmiscbuf)
+ || ! ieee_write_asn (info, nindx, 'd')
+ || ! ieee_write_asn (info, nindx, flags)
+ || ! ieee_write_atn65 (info, nindx, name)
+ || ! ieee_write_atn65 (info, nindx, name))
+ return FALSE;
+ info->type_stack->type.classdef->pmisccount += 4;
+
+ if (referencep)
+ {
+ /* We need to output a record recording that this field is
+ really of reference type. We put this on the refs field
+ of classdef, so that it can be appended to the C++
+ records after the class is defined. */
+
+ nindx = info->name_indx;
+ ++info->name_indx;
+
+ if (! ieee_change_buffer (info,
+ &info->type_stack->type.classdef->refs)
+ || ! ieee_write_byte (info, (int) ieee_nn_record)
+ || ! ieee_write_number (info, nindx)
+ || ! ieee_write_id (info, "")
+ || ! ieee_write_2bytes (info, (int) ieee_atn_record_enum)
+ || ! ieee_write_number (info, nindx)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, 62)
+ || ! ieee_write_number (info, 80)
+ || ! ieee_write_number (info, 4)
+ || ! ieee_write_asn (info, nindx, 'R')
+ || ! ieee_write_asn (info, nindx, 3)
+ || ! ieee_write_atn65 (info, nindx, info->type_stack->type.name)
+ || ! ieee_write_atn65 (info, nindx, name))
+ return FALSE;
+ }
+ }
+
+ /* If the bitsize doesn't match the expected size, we need to output
+ a bitfield type. */
+ if (size == 0 || bitsize == 0 || bitsize == size * 8)
+ offset = bitpos / 8;
+ else
+ {
+ if (! ieee_define_type (info, 0, unsignedp,
+ info->type_stack->type.localp)
+ || ! ieee_write_number (info, 'g')
+ || ! ieee_write_number (info, unsignedp ? 0 : 1)
+ || ! ieee_write_number (info, bitsize)
+ || ! ieee_write_number (info, indx))
+ return FALSE;
+ indx = ieee_pop_type (info);
+ offset = bitpos;
+ }
+
+ /* Switch to the struct we are building in order to output this
+ field definition. */
+ return (ieee_change_buffer (info, &info->type_stack->type.strdef)
+ && ieee_write_id (info, name)
+ && ieee_write_number (info, indx)
+ && ieee_write_number (info, offset));
+}
+
+/* Finish up a struct type. */
+
+static bfd_boolean
+ieee_end_struct_type (void *p)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ struct ieee_buflist *pb;
+
+ assert (info->type_stack != NULL
+ && ! ieee_buffer_emptyp (&info->type_stack->type.strdef));
+
+ /* If we were ignoring this struct definition because it was a
+ duplicate definition, just through away whatever bytes we have
+ accumulated. Leave the type on the stack. */
+ if (info->type_stack->type.ignorep)
+ return TRUE;
+
+ /* If this is not a duplicate definition of this tag, then localp
+ will be FALSE, and we can put it in the global type block.
+ FIXME: We should avoid outputting duplicate definitions which are
+ the same. */
+ if (! info->type_stack->type.localp)
+ {
+ /* Make sure we have started the global type block. */
+ if (ieee_buffer_emptyp (&info->global_types))
+ {
+ if (! ieee_change_buffer (info, &info->global_types)
+ || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 2)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, ""))
+ return FALSE;
+ }
+ pb = &info->global_types;
+ }
+ else
+ {
+ /* Make sure we have started the types block. */
+ if (ieee_buffer_emptyp (&info->types))
+ {
+ if (! ieee_change_buffer (info, &info->types)
+ || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 1)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, info->modname))
+ return FALSE;
+ }
+ pb = &info->types;
+ }
+
+ /* Append the struct definition to the types. */
+ if (! ieee_append_buffer (info, pb, &info->type_stack->type.strdef)
+ || ! ieee_init_buffer (info, &info->type_stack->type.strdef))
+ return FALSE;
+
+ /* Leave the struct on the type stack. */
+
+ return TRUE;
+}
+
+/* Start a class type. */
+
+static bfd_boolean
+ieee_start_class_type (void *p, const char *tag, unsigned int id,
+ bfd_boolean structp, unsigned int size,
+ bfd_boolean vptr, bfd_boolean ownvptr)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ const char *vclass;
+ struct ieee_buflist pmiscbuf;
+ unsigned int indx;
+ struct ieee_type_class *classdef;
+
+ /* A C++ class is output as a C++ struct along with a set of pmisc
+ records describing the class. */
+
+ /* We need to have a name so that we can associate the struct and
+ the class. */
+ if (tag == NULL)
+ {
+ char *t;
+
+ t = (char *) xmalloc (20);
+ sprintf (t, "__anon%u", id);
+ tag = t;
+ }
+
+ /* We can't write out the virtual table information until we have
+ finished the class, because we don't know the virtual table size.
+ We get the size from the largest voffset we see. */
+ vclass = NULL;
+ if (vptr && ! ownvptr)
+ {
+ vclass = info->type_stack->type.name;
+ assert (vclass != NULL);
+ /* We don't call ieee_pop_unused_type, since the class should
+ get defined. */
+ (void) ieee_pop_type (info);
+ }
+
+ if (! ieee_start_struct_type (p, tag, id, structp, size))
+ return FALSE;
+
+ indx = info->name_indx;
+ ++info->name_indx;
+
+ /* We write out pmisc records into the classdef field. We will
+ write out the pmisc start after we know the number of records we
+ need. */
+ if (! ieee_init_buffer (info, &pmiscbuf)
+ || ! ieee_change_buffer (info, &pmiscbuf)
+ || ! ieee_write_asn (info, indx, 'T')
+ || ! ieee_write_asn (info, indx, structp ? 'o' : 'u')
+ || ! ieee_write_atn65 (info, indx, tag))
+ return FALSE;
+
+ classdef = (struct ieee_type_class *) xmalloc (sizeof *classdef);
+ memset (classdef, 0, sizeof *classdef);
+
+ classdef->indx = indx;
+ classdef->pmiscbuf = pmiscbuf;
+ classdef->pmisccount = 3;
+ classdef->vclass = vclass;
+ classdef->ownvptr = ownvptr;
+
+ info->type_stack->type.classdef = classdef;
+
+ return TRUE;
+}
+
+/* Add a static member to a class. */
+
+static bfd_boolean
+ieee_class_static_member (void *p, const char *name, const char *physname,
+ enum debug_visibility visibility)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ unsigned int flags;
+ unsigned int nindx;
+
+ /* We don't care about the type. Hopefully there will be a call to
+ ieee_variable declaring the physical name and the type, since
+ that is where an IEEE consumer must get the type. */
+ ieee_pop_unused_type (info);
+
+ assert (info->type_stack != NULL
+ && info->type_stack->type.classdef != NULL);
+
+ flags = ieee_vis_to_flags (visibility);
+ flags |= CXXFLAGS_STATIC;
+
+ nindx = info->type_stack->type.classdef->indx;
+
+ if (! ieee_change_buffer (info, &info->type_stack->type.classdef->pmiscbuf)
+ || ! ieee_write_asn (info, nindx, 'd')
+ || ! ieee_write_asn (info, nindx, flags)
+ || ! ieee_write_atn65 (info, nindx, name)
+ || ! ieee_write_atn65 (info, nindx, physname))
+ return FALSE;
+ info->type_stack->type.classdef->pmisccount += 4;
+
+ return TRUE;
+}
+
+/* Add a base class to a class. */
+
+static bfd_boolean
+ieee_class_baseclass (void *p, bfd_vma bitpos, bfd_boolean is_virtual,
+ enum debug_visibility visibility)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ const char *bname;
+ bfd_boolean localp;
+ unsigned int bindx;
+ char *fname;
+ unsigned int flags;
+ unsigned int nindx;
+
+ assert (info->type_stack != NULL
+ && info->type_stack->type.name != NULL
+ && info->type_stack->next != NULL
+ && info->type_stack->next->type.classdef != NULL
+ && ! ieee_buffer_emptyp (&info->type_stack->next->type.strdef));
+
+ bname = info->type_stack->type.name;
+ localp = info->type_stack->type.localp;
+ bindx = ieee_pop_type (info);
+
+ /* We are currently defining both a struct and a class. We must
+ write out a field definition in the struct which holds the base
+ class. The stabs debugging reader will create a field named
+ _vb$CLASS for a virtual base class, so we just use that. FIXME:
+ we should not depend upon a detail of stabs debugging. */
+ if (is_virtual)
+ {
+ fname = (char *) xmalloc (strlen (bname) + sizeof "_vb$");
+ sprintf (fname, "_vb$%s", bname);
+ flags = BASEFLAGS_VIRTUAL;
+ }
+ else
+ {
+ if (localp)
+ info->type_stack->type.localp = TRUE;
+
+ fname = (char *) xmalloc (strlen (bname) + sizeof "_b$");
+ sprintf (fname, "_b$%s", bname);
+
+ if (! ieee_change_buffer (info, &info->type_stack->type.strdef)
+ || ! ieee_write_id (info, fname)
+ || ! ieee_write_number (info, bindx)
+ || ! ieee_write_number (info, bitpos / 8))
+ {
+ free (fname);
+ return FALSE;
+ }
+ flags = 0;
+ }
+
+ if (visibility == DEBUG_VISIBILITY_PRIVATE)
+ flags |= BASEFLAGS_PRIVATE;
+
+ nindx = info->type_stack->type.classdef->indx;
+
+ if (! ieee_change_buffer (info, &info->type_stack->type.classdef->pmiscbuf)
+ || ! ieee_write_asn (info, nindx, 'b')
+ || ! ieee_write_asn (info, nindx, flags)
+ || ! ieee_write_atn65 (info, nindx, bname)
+ || ! ieee_write_asn (info, nindx, 0)
+ || ! ieee_write_atn65 (info, nindx, fname))
+ {
+ free (fname);
+ return FALSE;
+ }
+ info->type_stack->type.classdef->pmisccount += 5;
+
+ free (fname);
+
+ return TRUE;
+}
+
+/* Start building a method for a class. */
+
+static bfd_boolean
+ieee_class_start_method (void *p, const char *name)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ assert (info->type_stack != NULL
+ && info->type_stack->type.classdef != NULL
+ && info->type_stack->type.classdef->method == NULL);
+
+ info->type_stack->type.classdef->method = name;
+
+ return TRUE;
+}
+
+/* Define a new method variant, either static or not. */
+
+static bfd_boolean
+ieee_class_method_var (struct ieee_handle *info, const char *physname,
+ enum debug_visibility visibility,
+ bfd_boolean staticp, bfd_boolean constp,
+ bfd_boolean volatilep, bfd_vma voffset,
+ bfd_boolean context)
+{
+ unsigned int flags;
+ unsigned int nindx;
+ bfd_boolean is_virtual;
+
+ /* We don't need the type of the method. An IEEE consumer which
+ wants the type must track down the function by the physical name
+ and get the type from that. */
+ ieee_pop_unused_type (info);
+
+ /* We don't use the context. FIXME: We probably ought to use it to
+ adjust the voffset somehow, but I don't really know how. */
+ if (context)
+ ieee_pop_unused_type (info);
+
+ assert (info->type_stack != NULL
+ && info->type_stack->type.classdef != NULL
+ && info->type_stack->type.classdef->method != NULL);
+
+ flags = ieee_vis_to_flags (visibility);
+
+ /* FIXME: We never set CXXFLAGS_OVERRIDE, CXXFLAGS_OPERATOR,
+ CXXFLAGS_CTORDTOR, CXXFLAGS_CTOR, or CXXFLAGS_INLINE. */
+
+ if (staticp)
+ flags |= CXXFLAGS_STATIC;
+ if (constp)
+ flags |= CXXFLAGS_CONST;
+ if (volatilep)
+ flags |= CXXFLAGS_VOLATILE;
+
+ nindx = info->type_stack->type.classdef->indx;
+
+ is_virtual = context || voffset > 0;
+
+ if (! ieee_change_buffer (info,
+ &info->type_stack->type.classdef->pmiscbuf)
+ || ! ieee_write_asn (info, nindx, is_virtual ? 'v' : 'm')
+ || ! ieee_write_asn (info, nindx, flags)
+ || ! ieee_write_atn65 (info, nindx,
+ info->type_stack->type.classdef->method)
+ || ! ieee_write_atn65 (info, nindx, physname))
+ return FALSE;
+
+ if (is_virtual)
+ {
+ if (voffset > info->type_stack->type.classdef->voffset)
+ info->type_stack->type.classdef->voffset = voffset;
+ if (! ieee_write_asn (info, nindx, voffset))
+ return FALSE;
+ ++info->type_stack->type.classdef->pmisccount;
+ }
+
+ if (! ieee_write_asn (info, nindx, 0))
+ return FALSE;
+
+ info->type_stack->type.classdef->pmisccount += 5;
+
+ return TRUE;
+}
+
+/* Define a new method variant. */
+
+static bfd_boolean
+ieee_class_method_variant (void *p, const char *physname,
+ enum debug_visibility visibility,
+ bfd_boolean constp, bfd_boolean volatilep,
+ bfd_vma voffset, bfd_boolean context)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ return ieee_class_method_var (info, physname, visibility, FALSE, constp,
+ volatilep, voffset, context);
+}
+
+/* Define a new static method variant. */
+
+static bfd_boolean
+ieee_class_static_method_variant (void *p, const char *physname,
+ enum debug_visibility visibility,
+ bfd_boolean constp, bfd_boolean volatilep)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ return ieee_class_method_var (info, physname, visibility, TRUE, constp,
+ volatilep, 0, FALSE);
+}
+
+/* Finish up a method. */
+
+static bfd_boolean
+ieee_class_end_method (void *p)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ assert (info->type_stack != NULL
+ && info->type_stack->type.classdef != NULL
+ && info->type_stack->type.classdef->method != NULL);
+
+ info->type_stack->type.classdef->method = NULL;
+
+ return TRUE;
+}
+
+/* Finish up a class. */
+
+static bfd_boolean
+ieee_end_class_type (void *p)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ unsigned int nindx;
+
+ assert (info->type_stack != NULL
+ && info->type_stack->type.classdef != NULL);
+
+ /* If we were ignoring this class definition because it was a
+ duplicate definition, just through away whatever bytes we have
+ accumulated. Leave the type on the stack. */
+ if (info->type_stack->type.ignorep)
+ return TRUE;
+
+ nindx = info->type_stack->type.classdef->indx;
+
+ /* If we have a virtual table, we can write out the information now. */
+ if (info->type_stack->type.classdef->vclass != NULL
+ || info->type_stack->type.classdef->ownvptr)
+ {
+ if (! ieee_change_buffer (info,
+ &info->type_stack->type.classdef->pmiscbuf)
+ || ! ieee_write_asn (info, nindx, 'z')
+ || ! ieee_write_atn65 (info, nindx, "")
+ || ! ieee_write_asn (info, nindx,
+ info->type_stack->type.classdef->voffset))
+ return FALSE;
+ if (info->type_stack->type.classdef->ownvptr)
+ {
+ if (! ieee_write_atn65 (info, nindx, ""))
+ return FALSE;
+ }
+ else
+ {
+ if (! ieee_write_atn65 (info, nindx,
+ info->type_stack->type.classdef->vclass))
+ return FALSE;
+ }
+ if (! ieee_write_asn (info, nindx, 0))
+ return FALSE;
+ info->type_stack->type.classdef->pmisccount += 5;
+ }
+
+ /* Now that we know the number of pmisc records, we can write out
+ the atn62 which starts the pmisc records, and append them to the
+ C++ buffers. */
+
+ if (! ieee_change_buffer (info, &info->cxx)
+ || ! ieee_write_byte (info, (int) ieee_nn_record)
+ || ! ieee_write_number (info, nindx)
+ || ! ieee_write_id (info, "")
+ || ! ieee_write_2bytes (info, (int) ieee_atn_record_enum)
+ || ! ieee_write_number (info, nindx)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, 62)
+ || ! ieee_write_number (info, 80)
+ || ! ieee_write_number (info,
+ info->type_stack->type.classdef->pmisccount))
+ return FALSE;
+
+ if (! ieee_append_buffer (info, &info->cxx,
+ &info->type_stack->type.classdef->pmiscbuf))
+ return FALSE;
+ if (! ieee_buffer_emptyp (&info->type_stack->type.classdef->refs))
+ {
+ if (! ieee_append_buffer (info, &info->cxx,
+ &info->type_stack->type.classdef->refs))
+ return FALSE;
+ }
+
+ return ieee_end_struct_type (p);
+}
+
+/* Push a previously seen typedef onto the type stack. */
+
+static bfd_boolean
+ieee_typedef_type (void *p, const char *name)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ struct ieee_name_type_hash_entry *h;
+ struct ieee_name_type *nt;
+
+ h = ieee_name_type_hash_lookup (&info->typedefs, name, FALSE, FALSE);
+
+ /* h should never be NULL, since that would imply that the generic
+ debugging code has asked for a typedef which it has not yet
+ defined. */
+ assert (h != NULL);
+
+ /* We always use the most recently defined type for this name, which
+ will be the first one on the list. */
+
+ nt = h->types;
+ if (! ieee_push_type (info, nt->type.indx, nt->type.size,
+ nt->type.unsignedp, nt->type.localp))
+ return FALSE;
+
+ /* Copy over any other type information we may have. */
+ info->type_stack->type = nt->type;
+
+ return TRUE;
+}
+
+/* Push a tagged type onto the type stack. */
+
+static bfd_boolean
+ieee_tag_type (void *p, const char *name, unsigned int id,
+ enum debug_type_kind kind)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ bfd_boolean localp;
+ bfd_boolean copy;
+ char ab[20];
+ struct ieee_name_type_hash_entry *h;
+ struct ieee_name_type *nt;
+
+ if (kind == DEBUG_KIND_ENUM)
+ {
+ struct ieee_defined_enum *e;
+
+ if (name == NULL)
+ abort ();
+ for (e = info->enums; e != NULL; e = e->next)
+ if (e->tag != NULL && strcmp (e->tag, name) == 0)
+ return ieee_push_type (info, e->indx, 0, TRUE, FALSE);
+
+ e = (struct ieee_defined_enum *) xmalloc (sizeof *e);
+ memset (e, 0, sizeof *e);
+
+ e->indx = info->type_indx;
+ ++info->type_indx;
+ e->tag = name;
+ e->defined = FALSE;
+
+ e->next = info->enums;
+ info->enums = e;
+
+ return ieee_push_type (info, e->indx, 0, TRUE, FALSE);
+ }
+
+ localp = FALSE;
+
+ copy = FALSE;
+ if (name == NULL)
+ {
+ sprintf (ab, "__anon%u", id);
+ name = ab;
+ copy = TRUE;
+ }
+
+ h = ieee_name_type_hash_lookup (&info->tags, name, TRUE, copy);
+ if (h == NULL)
+ return FALSE;
+
+ for (nt = h->types; nt != NULL; nt = nt->next)
+ {
+ if (nt->id == id)
+ {
+ if (! ieee_push_type (info, nt->type.indx, nt->type.size,
+ nt->type.unsignedp, nt->type.localp))
+ return FALSE;
+ /* Copy over any other type information we may have. */
+ info->type_stack->type = nt->type;
+ return TRUE;
+ }
+
+ if (! nt->type.localp)
+ {
+ /* This is a duplicate of a global type, so it must be
+ local. */
+ localp = TRUE;
+ }
+ }
+
+ nt = (struct ieee_name_type *) xmalloc (sizeof *nt);
+ memset (nt, 0, sizeof *nt);
+
+ nt->id = id;
+ nt->type.name = h->root.string;
+ nt->type.indx = info->type_indx;
+ nt->type.localp = localp;
+ ++info->type_indx;
+ nt->kind = kind;
+
+ nt->next = h->types;
+ h->types = nt;
+
+ if (! ieee_push_type (info, nt->type.indx, 0, FALSE, localp))
+ return FALSE;
+
+ info->type_stack->type.name = h->root.string;
+
+ return TRUE;
+}
+
+/* Output a typedef. */
+
+static bfd_boolean
+ieee_typdef (void *p, const char *name)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ struct ieee_write_type type;
+ unsigned int indx;
+ bfd_boolean found;
+ bfd_boolean localp;
+ struct ieee_name_type_hash_entry *h;
+ struct ieee_name_type *nt;
+
+ type = info->type_stack->type;
+ indx = type.indx;
+
+ /* If this is a simple builtin type using a builtin name, we don't
+ want to output the typedef itself. We also want to change the
+ type index to correspond to the name being used. We recognize
+ names used in stabs debugging output even if they don't exactly
+ correspond to the names used for the IEEE builtin types. */
+ found = FALSE;
+ if (indx <= (unsigned int) builtin_bcd_float)
+ {
+ switch ((enum builtin_types) indx)
+ {
+ default:
+ break;
+
+ case builtin_void:
+ if (strcmp (name, "void") == 0)
+ found = TRUE;
+ break;
+
+ case builtin_signed_char:
+ case builtin_char:
+ if (strcmp (name, "signed char") == 0)
+ {
+ indx = (unsigned int) builtin_signed_char;
+ found = TRUE;
+ }
+ else if (strcmp (name, "char") == 0)
+ {
+ indx = (unsigned int) builtin_char;
+ found = TRUE;
+ }
+ break;
+
+ case builtin_unsigned_char:
+ if (strcmp (name, "unsigned char") == 0)
+ found = TRUE;
+ break;
+
+ case builtin_signed_short_int:
+ case builtin_short:
+ case builtin_short_int:
+ case builtin_signed_short:
+ if (strcmp (name, "signed short int") == 0)
+ {
+ indx = (unsigned int) builtin_signed_short_int;
+ found = TRUE;
+ }
+ else if (strcmp (name, "short") == 0)
+ {
+ indx = (unsigned int) builtin_short;
+ found = TRUE;
+ }
+ else if (strcmp (name, "short int") == 0)
+ {
+ indx = (unsigned int) builtin_short_int;
+ found = TRUE;
+ }
+ else if (strcmp (name, "signed short") == 0)
+ {
+ indx = (unsigned int) builtin_signed_short;
+ found = TRUE;
+ }
+ break;
+
+ case builtin_unsigned_short_int:
+ case builtin_unsigned_short:
+ if (strcmp (name, "unsigned short int") == 0
+ || strcmp (name, "short unsigned int") == 0)
+ {
+ indx = builtin_unsigned_short_int;
+ found = TRUE;
+ }
+ else if (strcmp (name, "unsigned short") == 0)
+ {
+ indx = builtin_unsigned_short;
+ found = TRUE;
+ }
+ break;
+
+ case builtin_signed_long:
+ case builtin_int: /* FIXME: Size depends upon architecture. */
+ case builtin_long:
+ if (strcmp (name, "signed long") == 0)
+ {
+ indx = builtin_signed_long;
+ found = TRUE;
+ }
+ else if (strcmp (name, "int") == 0)
+ {
+ indx = builtin_int;
+ found = TRUE;
+ }
+ else if (strcmp (name, "long") == 0
+ || strcmp (name, "long int") == 0)
+ {
+ indx = builtin_long;
+ found = TRUE;
+ }
+ break;
+
+ case builtin_unsigned_long:
+ case builtin_unsigned: /* FIXME: Size depends upon architecture. */
+ case builtin_unsigned_int: /* FIXME: Like builtin_unsigned. */
+ if (strcmp (name, "unsigned long") == 0
+ || strcmp (name, "long unsigned int") == 0)
+ {
+ indx = builtin_unsigned_long;
+ found = TRUE;
+ }
+ else if (strcmp (name, "unsigned") == 0)
+ {
+ indx = builtin_unsigned;
+ found = TRUE;
+ }
+ else if (strcmp (name, "unsigned int") == 0)
+ {
+ indx = builtin_unsigned_int;
+ found = TRUE;
+ }
+ break;
+
+ case builtin_signed_long_long:
+ if (strcmp (name, "signed long long") == 0
+ || strcmp (name, "long long int") == 0)
+ found = TRUE;
+ break;
+
+ case builtin_unsigned_long_long:
+ if (strcmp (name, "unsigned long long") == 0
+ || strcmp (name, "long long unsigned int") == 0)
+ found = TRUE;
+ break;
+
+ case builtin_float:
+ if (strcmp (name, "float") == 0)
+ found = TRUE;
+ break;
+
+ case builtin_double:
+ if (strcmp (name, "double") == 0)
+ found = TRUE;
+ break;
+
+ case builtin_long_double:
+ if (strcmp (name, "long double") == 0)
+ found = TRUE;
+ break;
+
+ case builtin_long_long_double:
+ if (strcmp (name, "long long double") == 0)
+ found = TRUE;
+ break;
+ }
+
+ if (found)
+ type.indx = indx;
+ }
+
+ h = ieee_name_type_hash_lookup (&info->typedefs, name, TRUE, FALSE);
+ if (h == NULL)
+ return FALSE;
+
+ /* See if we have already defined this type with this name. */
+ localp = type.localp;
+ for (nt = h->types; nt != NULL; nt = nt->next)
+ {
+ if (nt->id == indx)
+ {
+ /* If this is a global definition, then we don't need to
+ do anything here. */
+ if (! nt->type.localp)
+ {
+ ieee_pop_unused_type (info);
+ return TRUE;
+ }
+ }
+ else
+ {
+ /* This is a duplicate definition, so make this one local. */
+ localp = TRUE;
+ }
+ }
+
+ /* We need to add a new typedef for this type. */
+
+ nt = (struct ieee_name_type *) xmalloc (sizeof *nt);
+ memset (nt, 0, sizeof *nt);
+ nt->id = indx;
+ nt->type = type;
+ nt->type.name = name;
+ nt->type.localp = localp;
+ nt->kind = DEBUG_KIND_ILLEGAL;
+
+ nt->next = h->types;
+ h->types = nt;
+
+ if (found)
+ {
+ /* This is one of the builtin typedefs, so we don't need to
+ actually define it. */
+ ieee_pop_unused_type (info);
+ return TRUE;
+ }
+
+ indx = ieee_pop_type (info);
+
+ if (! ieee_define_named_type (info, name, (unsigned int) -1, type.size,
+ type.unsignedp, localp,
+ (struct ieee_buflist *) NULL)
+ || ! ieee_write_number (info, 'T')
+ || ! ieee_write_number (info, indx))
+ return FALSE;
+
+ /* Remove the type we just added to the type stack. This should not
+ be ieee_pop_unused_type, since the type is used, we just don't
+ need it now. */
+ (void) ieee_pop_type (info);
+
+ return TRUE;
+}
+
+/* Output a tag for a type. We don't have to do anything here. */
+
+static bfd_boolean
+ieee_tag (void *p, const char *name ATTRIBUTE_UNUSED)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ /* This should not be ieee_pop_unused_type, since we want the type
+ to be defined. */
+ (void) ieee_pop_type (info);
+ return TRUE;
+}
+
+/* Output an integer constant. */
+
+static bfd_boolean
+ieee_int_constant (void *p ATTRIBUTE_UNUSED, const char *name ATTRIBUTE_UNUSED,
+ bfd_vma val ATTRIBUTE_UNUSED)
+{
+ /* FIXME. */
+ return TRUE;
+}
+
+/* Output a floating point constant. */
+
+static bfd_boolean
+ieee_float_constant (void *p ATTRIBUTE_UNUSED,
+ const char *name ATTRIBUTE_UNUSED,
+ double val ATTRIBUTE_UNUSED)
+{
+ /* FIXME. */
+ return TRUE;
+}
+
+/* Output a typed constant. */
+
+static bfd_boolean
+ieee_typed_constant (void *p, const char *name ATTRIBUTE_UNUSED,
+ bfd_vma val ATTRIBUTE_UNUSED)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ /* FIXME. */
+ ieee_pop_unused_type (info);
+ return TRUE;
+}
+
+/* Output a variable. */
+
+static bfd_boolean
+ieee_variable (void *p, const char *name, enum debug_var_kind kind,
+ bfd_vma val)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ unsigned int name_indx;
+ unsigned int size;
+ bfd_boolean referencep;
+ unsigned int type_indx;
+ bfd_boolean asn;
+ int refflag;
+
+ size = info->type_stack->type.size;
+ referencep = info->type_stack->type.referencep;
+ type_indx = ieee_pop_type (info);
+
+ assert (! ieee_buffer_emptyp (&info->vars));
+ if (! ieee_change_buffer (info, &info->vars))
+ return FALSE;
+
+ name_indx = info->name_indx;
+ ++info->name_indx;
+
+ /* Write out an NN and an ATN record for this variable. */
+ if (! ieee_write_byte (info, (int) ieee_nn_record)
+ || ! ieee_write_number (info, name_indx)
+ || ! ieee_write_id (info, name)
+ || ! ieee_write_2bytes (info, (int) ieee_atn_record_enum)
+ || ! ieee_write_number (info, name_indx)
+ || ! ieee_write_number (info, type_indx))
+ return FALSE;
+ switch (kind)
+ {
+ default:
+ abort ();
+ return FALSE;
+ case DEBUG_GLOBAL:
+ if (! ieee_write_number (info, 8)
+ || ! ieee_add_range (info, FALSE, val, val + size))
+ return FALSE;
+ refflag = 0;
+ asn = TRUE;
+ break;
+ case DEBUG_STATIC:
+ if (! ieee_write_number (info, 3)
+ || ! ieee_add_range (info, FALSE, val, val + size))
+ return FALSE;
+ refflag = 1;
+ asn = TRUE;
+ break;
+ case DEBUG_LOCAL_STATIC:
+ if (! ieee_write_number (info, 3)
+ || ! ieee_add_range (info, FALSE, val, val + size))
+ return FALSE;
+ refflag = 2;
+ asn = TRUE;
+ break;
+ case DEBUG_LOCAL:
+ if (! ieee_write_number (info, 1)
+ || ! ieee_write_number (info, val))
+ return FALSE;
+ refflag = 2;
+ asn = FALSE;
+ break;
+ case DEBUG_REGISTER:
+ if (! ieee_write_number (info, 2)
+ || ! ieee_write_number (info,
+ ieee_genreg_to_regno (info->abfd, val)))
+ return FALSE;
+ refflag = 2;
+ asn = FALSE;
+ break;
+ }
+
+ if (asn)
+ {
+ if (! ieee_write_asn (info, name_indx, val))
+ return FALSE;
+ }
+
+ /* If this is really a reference type, then we just output it with
+ pointer type, and must now output a C++ record indicating that it
+ is really reference type. */
+ if (referencep)
+ {
+ unsigned int nindx;
+
+ nindx = info->name_indx;
+ ++info->name_indx;
+
+ /* If this is a global variable, we want to output the misc
+ record in the C++ misc record block. Otherwise, we want to
+ output it just after the variable definition, which is where
+ the current buffer is. */
+ if (refflag != 2)
+ {
+ if (! ieee_change_buffer (info, &info->cxx))
+ return FALSE;
+ }
+
+ if (! ieee_write_byte (info, (int) ieee_nn_record)
+ || ! ieee_write_number (info, nindx)
+ || ! ieee_write_id (info, "")
+ || ! ieee_write_2bytes (info, (int) ieee_atn_record_enum)
+ || ! ieee_write_number (info, nindx)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, 62)
+ || ! ieee_write_number (info, 80)
+ || ! ieee_write_number (info, 3)
+ || ! ieee_write_asn (info, nindx, 'R')
+ || ! ieee_write_asn (info, nindx, refflag)
+ || ! ieee_write_atn65 (info, nindx, name))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Start outputting information for a function. */
+
+static bfd_boolean
+ieee_start_function (void *p, const char *name, bfd_boolean global)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ bfd_boolean referencep;
+ unsigned int retindx, typeindx;
+
+ referencep = info->type_stack->type.referencep;
+ retindx = ieee_pop_type (info);
+
+ /* Besides recording a BB4 or BB6 block, we record the type of the
+ function in the BB1 typedef block. We can't write out the full
+ type until we have seen all the parameters, so we accumulate it
+ in info->fntype and info->fnargs. */
+ if (! ieee_buffer_emptyp (&info->fntype))
+ {
+ /* FIXME: This might happen someday if we support nested
+ functions. */
+ abort ();
+ }
+
+ info->fnname = name;
+
+ /* An attribute of 0x40 means that the push mask is unknown. */
+ if (! ieee_define_named_type (info, name, (unsigned int) -1, 0, FALSE, TRUE,
+ &info->fntype)
+ || ! ieee_write_number (info, 'x')
+ || ! ieee_write_number (info, 0x40)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, retindx))
+ return FALSE;
+
+ typeindx = ieee_pop_type (info);
+
+ if (! ieee_init_buffer (info, &info->fnargs))
+ return FALSE;
+ info->fnargcount = 0;
+
+ /* If the function return value is actually a reference type, we
+ must add a record indicating that. */
+ if (referencep)
+ {
+ unsigned int nindx;
+
+ nindx = info->name_indx;
+ ++info->name_indx;
+ if (! ieee_change_buffer (info, &info->cxx)
+ || ! ieee_write_byte (info, (int) ieee_nn_record)
+ || ! ieee_write_number (info, nindx)
+ || ! ieee_write_id (info, "")
+ || ! ieee_write_2bytes (info, (int) ieee_atn_record_enum)
+ || ! ieee_write_number (info, nindx)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, 62)
+ || ! ieee_write_number (info, 80)
+ || ! ieee_write_number (info, 3)
+ || ! ieee_write_asn (info, nindx, 'R')
+ || ! ieee_write_asn (info, nindx, global ? 0 : 1)
+ || ! ieee_write_atn65 (info, nindx, name))
+ return FALSE;
+ }
+
+ assert (! ieee_buffer_emptyp (&info->vars));
+ if (! ieee_change_buffer (info, &info->vars))
+ return FALSE;
+
+ /* The address is written out as the first block. */
+
+ ++info->block_depth;
+
+ return (ieee_write_byte (info, (int) ieee_bb_record_enum)
+ && ieee_write_byte (info, global ? 4 : 6)
+ && ieee_write_number (info, 0)
+ && ieee_write_id (info, name)
+ && ieee_write_number (info, 0)
+ && ieee_write_number (info, typeindx));
+}
+
+/* Add a function parameter. This will normally be called before the
+ first block, so we postpone them until we see the block. */
+
+static bfd_boolean
+ieee_function_parameter (void *p, const char *name, enum debug_parm_kind kind,
+ bfd_vma val)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+ struct ieee_pending_parm *m, **pm;
+
+ assert (info->block_depth == 1);
+
+ m = (struct ieee_pending_parm *) xmalloc (sizeof *m);
+ memset (m, 0, sizeof *m);
+
+ m->next = NULL;
+ m->name = name;
+ m->referencep = info->type_stack->type.referencep;
+ m->type = ieee_pop_type (info);
+ m->kind = kind;
+ m->val = val;
+
+ for (pm = &info->pending_parms; *pm != NULL; pm = &(*pm)->next)
+ ;
+ *pm = m;
+
+ /* Add the type to the fnargs list. */
+ if (! ieee_change_buffer (info, &info->fnargs)
+ || ! ieee_write_number (info, m->type))
+ return FALSE;
+ ++info->fnargcount;
+
+ return TRUE;
+}
+
+/* Output pending function parameters. */
+
+static bfd_boolean
+ieee_output_pending_parms (struct ieee_handle *info)
+{
+ struct ieee_pending_parm *m;
+ unsigned int refcount;
+
+ refcount = 0;
+ for (m = info->pending_parms; m != NULL; m = m->next)
+ {
+ enum debug_var_kind vkind;
+
+ switch (m->kind)
+ {
+ default:
+ abort ();
+ return FALSE;
+ case DEBUG_PARM_STACK:
+ case DEBUG_PARM_REFERENCE:
+ vkind = DEBUG_LOCAL;
+ break;
+ case DEBUG_PARM_REG:
+ case DEBUG_PARM_REF_REG:
+ vkind = DEBUG_REGISTER;
+ break;
+ }
+
+ if (! ieee_push_type (info, m->type, 0, FALSE, FALSE))
+ return FALSE;
+ info->type_stack->type.referencep = m->referencep;
+ if (m->referencep)
+ ++refcount;
+ if (! ieee_variable ((void *) info, m->name, vkind, m->val))
+ return FALSE;
+ }
+
+ /* If there are any reference parameters, we need to output a
+ miscellaneous record indicating them. */
+ if (refcount > 0)
+ {
+ unsigned int nindx, varindx;
+
+ /* FIXME: The MRI compiler outputs the demangled function name
+ here, but we are outputting the mangled name. */
+ nindx = info->name_indx;
+ ++info->name_indx;
+ if (! ieee_change_buffer (info, &info->vars)
+ || ! ieee_write_byte (info, (int) ieee_nn_record)
+ || ! ieee_write_number (info, nindx)
+ || ! ieee_write_id (info, "")
+ || ! ieee_write_2bytes (info, (int) ieee_atn_record_enum)
+ || ! ieee_write_number (info, nindx)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, 62)
+ || ! ieee_write_number (info, 80)
+ || ! ieee_write_number (info, refcount + 3)
+ || ! ieee_write_asn (info, nindx, 'B')
+ || ! ieee_write_atn65 (info, nindx, info->fnname)
+ || ! ieee_write_asn (info, nindx, 0))
+ return FALSE;
+ for (m = info->pending_parms, varindx = 1;
+ m != NULL;
+ m = m->next, varindx++)
+ {
+ if (m->referencep)
+ {
+ if (! ieee_write_asn (info, nindx, varindx))
+ return FALSE;
+ }
+ }
+ }
+
+ m = info->pending_parms;
+ while (m != NULL)
+ {
+ struct ieee_pending_parm *next;
+
+ next = m->next;
+ free (m);
+ m = next;
+ }
+
+ info->pending_parms = NULL;
+
+ return TRUE;
+}
+
+/* Start a block. If this is the first block, we output the address
+ to finish the BB4 or BB6, and then output the function parameters. */
+
+static bfd_boolean
+ieee_start_block (void *p, bfd_vma addr)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ if (! ieee_change_buffer (info, &info->vars))
+ return FALSE;
+
+ if (info->block_depth == 1)
+ {
+ if (! ieee_write_number (info, addr)
+ || ! ieee_output_pending_parms (info))
+ return FALSE;
+ }
+ else
+ {
+ if (! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 6)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, "")
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, addr))
+ return FALSE;
+ }
+
+ if (! ieee_start_range (info, addr))
+ return FALSE;
+
+ ++info->block_depth;
+
+ return TRUE;
+}
+
+/* End a block. */
+
+static bfd_boolean
+ieee_end_block (void *p, bfd_vma addr)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ /* The address we are given is the end of the block, but IEEE seems
+ to want to the address of the last byte in the block, so we
+ subtract one. */
+ if (! ieee_change_buffer (info, &info->vars)
+ || ! ieee_write_byte (info, (int) ieee_be_record_enum)
+ || ! ieee_write_number (info, addr - 1))
+ return FALSE;
+
+ if (! ieee_end_range (info, addr))
+ return FALSE;
+
+ --info->block_depth;
+
+ if (addr > info->highaddr)
+ info->highaddr = addr;
+
+ return TRUE;
+}
+
+/* End a function. */
+
+static bfd_boolean
+ieee_end_function (void *p)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ assert (info->block_depth == 1);
+
+ --info->block_depth;
+
+ /* Now we can finish up fntype, and add it to the typdef section.
+ At this point, fntype is the 'x' type up to the argument count,
+ and fnargs is the argument types. We must add the argument
+ count, and we must add the level. FIXME: We don't record varargs
+ functions correctly. In fact, stabs debugging does not give us
+ enough information to do so. */
+ if (! ieee_change_buffer (info, &info->fntype)
+ || ! ieee_write_number (info, info->fnargcount)
+ || ! ieee_change_buffer (info, &info->fnargs)
+ || ! ieee_write_number (info, 0))
+ return FALSE;
+
+ /* Make sure the typdef block has been started. */
+ if (ieee_buffer_emptyp (&info->types))
+ {
+ if (! ieee_change_buffer (info, &info->types)
+ || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 1)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, info->modname))
+ return FALSE;
+ }
+
+ if (! ieee_append_buffer (info, &info->types, &info->fntype)
+ || ! ieee_append_buffer (info, &info->types, &info->fnargs))
+ return FALSE;
+
+ info->fnname = NULL;
+ if (! ieee_init_buffer (info, &info->fntype)
+ || ! ieee_init_buffer (info, &info->fnargs))
+ return FALSE;
+ info->fnargcount = 0;
+
+ return TRUE;
+}
+
+/* Record line number information. */
+
+static bfd_boolean
+ieee_lineno (void *p, const char *filename, unsigned long lineno, bfd_vma addr)
+{
+ struct ieee_handle *info = (struct ieee_handle *) p;
+
+ assert (info->filename != NULL);
+
+ /* The HP simulator seems to get confused when more than one line is
+ listed for the same address, at least if they are in different
+ files. We handle this by always listing the last line for a
+ given address, since that seems to be the one that gdb uses. */
+ if (info->pending_lineno_filename != NULL
+ && addr != info->pending_lineno_addr)
+ {
+ /* Make sure we have a line number block. */
+ if (! ieee_buffer_emptyp (&info->linenos))
+ {
+ if (! ieee_change_buffer (info, &info->linenos))
+ return FALSE;
+ }
+ else
+ {
+ info->lineno_name_indx = info->name_indx;
+ ++info->name_indx;
+ if (! ieee_change_buffer (info, &info->linenos)
+ || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 5)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, info->filename)
+ || ! ieee_write_byte (info, (int) ieee_nn_record)
+ || ! ieee_write_number (info, info->lineno_name_indx)
+ || ! ieee_write_id (info, ""))
+ return FALSE;
+ info->lineno_filename = info->filename;
+ }
+
+ if (filename_cmp (info->pending_lineno_filename,
+ info->lineno_filename) != 0)
+ {
+ if (filename_cmp (info->filename, info->lineno_filename) != 0)
+ {
+ /* We were not in the main file. Close the block for the
+ included file. */
+ if (! ieee_write_byte (info, (int) ieee_be_record_enum))
+ return FALSE;
+ if (filename_cmp (info->filename,
+ info->pending_lineno_filename) == 0)
+ {
+ /* We need a new NN record, and we aren't about to
+ output one. */
+ info->lineno_name_indx = info->name_indx;
+ ++info->name_indx;
+ if (! ieee_write_byte (info, (int) ieee_nn_record)
+ || ! ieee_write_number (info, info->lineno_name_indx)
+ || ! ieee_write_id (info, ""))
+ return FALSE;
+ }
+ }
+ if (filename_cmp (info->filename,
+ info->pending_lineno_filename) != 0)
+ {
+ /* We are not changing to the main file. Open a block for
+ the new included file. */
+ info->lineno_name_indx = info->name_indx;
+ ++info->name_indx;
+ if (! ieee_write_byte (info, (int) ieee_bb_record_enum)
+ || ! ieee_write_byte (info, 5)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_id (info, info->pending_lineno_filename)
+ || ! ieee_write_byte (info, (int) ieee_nn_record)
+ || ! ieee_write_number (info, info->lineno_name_indx)
+ || ! ieee_write_id (info, ""))
+ return FALSE;
+ }
+ info->lineno_filename = info->pending_lineno_filename;
+ }
+
+ if (! ieee_write_2bytes (info, (int) ieee_atn_record_enum)
+ || ! ieee_write_number (info, info->lineno_name_indx)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_number (info, 7)
+ || ! ieee_write_number (info, info->pending_lineno)
+ || ! ieee_write_number (info, 0)
+ || ! ieee_write_asn (info, info->lineno_name_indx,
+ info->pending_lineno_addr))
+ return FALSE;
+ }
+
+ info->pending_lineno_filename = filename;
+ info->pending_lineno = lineno;
+ info->pending_lineno_addr = addr;
+
+ return TRUE;
+}
diff --git a/binutils-2.24/binutils/is-ranlib.c b/binutils-2.24/binutils/is-ranlib.c
new file mode 100644
index 00000000..947d8d28
--- /dev/null
+++ b/binutils-2.24/binutils/is-ranlib.c
@@ -0,0 +1,22 @@
+/* Copyright 2007 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 3 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. */
+
+/* Linked with ar.o to flag that this program is 'ranlib' (not 'ar'). */
+
+int is_ranlib = 1;
diff --git a/binutils-2.24/binutils/is-strip.c b/binutils-2.24/binutils/is-strip.c
new file mode 100644
index 00000000..1fddbe2e
--- /dev/null
+++ b/binutils-2.24/binutils/is-strip.c
@@ -0,0 +1,23 @@
+/* Copyright 2007 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 3 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. */
+
+/* Linked with objcopy.o to flag that this program is 'strip' (not
+ 'objcopy'). */
+
+int is_strip = 1;
diff --git a/binutils-2.24/binutils/makefile.vms b/binutils-2.24/binutils/makefile.vms
new file mode 100644
index 00000000..7fe2e0ce
--- /dev/null
+++ b/binutils-2.24/binutils/makefile.vms
@@ -0,0 +1,90 @@
+#
+# Makefile for binutils under openVMS (Alpha and Itanium)
+#
+# For use with gnu-make for vms
+#
+# Created by Klaus Kaempf, kkaempf@rmi.de
+#
+# Copyright 2012 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 3 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; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+#
+
+DEFS=/define=("OBJDUMP_PRIVATE_VECTORS=")
+OPT=/noopt/debug
+CFLAGS=$(OPT)/include=([],"../include",[-.bfd])$(DEFS)\
+ /name=(as_is,shortened)\
+ /prefix=(all,except=("getopt","optarg","optopt","optind","opterr"))\
+ /warns=(info=(ptrmismatch,shiftcount))
+
+LIBBFD = [-.bfd]libbfd.olb/lib
+LIBBFD_DEP = [-.bfd]libbfd.olb
+LIBIBERTY_DEP = [-.libiberty]libiberty.olb
+LIBIBERTY = [-.libiberty]libiberty.olb/lib
+OPCODES_DEP = [-.opcodes]libopcodes.olb
+OPCODES = [-.opcodes]libopcodes.olb/lib
+
+DEBUG_OBJS = rddbg.obj,debug.obj,stabs.obj,ieee.obj,rdcoff.obj,dwarf.obj,\
+ elfcomm.obj
+
+BULIBS = bucomm.obj,version.obj,filemode.obj
+
+ADDL_DEPS = $(BULIBS),$(LIBBFD_DEP),$(LIBIBERTY_DEP)
+ADDL_LIBS = $(BULIBS),$(LIBBFD),$(LIBIBERTY)
+
+SIZEOBJS = $(ADDL_DEPS),size.obj
+
+STRINGSOBJS = $(ADDL_DEPS),strings.obj
+
+NMOBJS = $(ADDL_DEPS),nm.obj
+
+ADDR2LINEOBJS = $(ADDL_DEPS),addr2line.obj
+
+OBJDUMPOBJS = objdump.obj,prdbg.obj,$(DEBUG_OBJS),$(ADDL_DEPS),$(OPCODES_DEP)
+
+READELFOBJS = readelf.obj,dwarf.obj,unwind-ia64.obj,$(ADDL_DEPS)
+
+all: config.h size.exe strings.exe objdump.exe nm.exe addr2line.exe
+
+size.exe: $(SIZEOBJS)
+ link/exe=$@ size.obj,$(ADDL_LIBS)
+
+strings.exe: $(STRINGSOBJS)
+ link/exe=$@ strings.obj,$(ADDL_LIBS)
+
+nm.exe: $(NMOBJS)
+ link/exe=$@ nm.obj,$(ADDL_LIBS)
+
+addr2line.exe: $(ADDR2LINEOBJS)
+ link/exe=$@ addr2line.obj,$(ADDL_LIBS)
+
+objdump.exe: $(OBJDUMPOBJS)
+ link/exe=$@ objdump.obj,prdbg.obj,$(DEBUG_OBJS),$(ADDL_LIBS),$(OPCODES)
+
+readelf.exe: $(READELFOBJS)
+ link/exe=$@ readelf.obj,dwarf.obj,unwind-ia64.obj,$(ADDL_LIBS)
+
+config.h:
+ $$ @configure
+ $(MAKE) -f makefile.vms "CC=$(CC)"
+
+clean:
+ $$ purge
+ $(RM) *.obj;
+ $(RM) *.exe;
+
+distclean: clean
+ $(RM) config.h;
+ $(RM) makefile.vms;
diff --git a/binutils-2.24/binutils/maybe-ranlib.c b/binutils-2.24/binutils/maybe-ranlib.c
new file mode 100644
index 00000000..64f95140
--- /dev/null
+++ b/binutils-2.24/binutils/maybe-ranlib.c
@@ -0,0 +1,23 @@
+/* Copyright 2007 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 3 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. */
+
+/* Linked with ar.o to flag that this program decides at runtime
+ (using argv[0] if it is is 'ar' or 'ranlib'. */
+
+int is_ranlib = -1;
diff --git a/binutils-2.24/binutils/maybe-strip.c b/binutils-2.24/binutils/maybe-strip.c
new file mode 100644
index 00000000..0502fbb0
--- /dev/null
+++ b/binutils-2.24/binutils/maybe-strip.c
@@ -0,0 +1,23 @@
+/* Copyright 2007 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 3 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. */
+
+/* Linked with objcopy.o to flag that this program decides at runtime
+ (using argv[0] if it is is 'strip' or 'objcopy'. */
+
+int is_strip = -1;
diff --git a/binutils-2.24/binutils/mclex.c b/binutils-2.24/binutils/mclex.c
new file mode 100644
index 00000000..2f0e144b
--- /dev/null
+++ b/binutils-2.24/binutils/mclex.c
@@ -0,0 +1,441 @@
+/* mclex.c -- lexer for Windows mc files parser.
+ Copyright 2007
+ Free Software Foundation, Inc.
+
+ Written by Kai Tietz, Onevision.
+
+ 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 3 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 lexer used by the Windows rc file parser.
+ It basically just recognized a bunch of keywords. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+#include "libiberty.h"
+#include "safe-ctype.h"
+#include "windmc.h"
+#include "mcparse.h"
+
+#include <assert.h>
+
+/* Exported globals. */
+bfd_boolean mclex_want_nl = FALSE;
+bfd_boolean mclex_want_line = FALSE;
+bfd_boolean mclex_want_filename = FALSE;
+
+/* Local globals. */
+static unichar *input_stream = NULL;
+static unichar *input_stream_pos = NULL;
+static int input_line = 1;
+static const char *input_filename = NULL;
+
+void
+mc_set_content (const unichar *src)
+{
+ if (!src)
+ return;
+ input_stream = input_stream_pos = unichar_dup (src);
+}
+
+void
+mc_set_inputfile (const char *name)
+{
+ if (! name || *name == 0)
+ input_filename = "-";
+ else
+ {
+ const char *s1 = strrchr (name, '/');
+ const char *s2 = strrchr (name, '\\');
+
+ if (! s1)
+ s1 = s2;
+ if (s1 && s2 && s1 < s2)
+ s1 = s2;
+ if (! s1)
+ s1 = name;
+ else
+ s1++;
+ s1 = xstrdup (s1);
+ input_filename = s1;
+ }
+}
+
+static void
+show_msg (const char *kind, const char *msg, va_list argp)
+{
+ fprintf (stderr, "In %s at line %d: %s: ", input_filename, input_line, kind);
+ vfprintf (stderr, msg, argp);
+ fprintf (stderr, ".\n");
+}
+
+void
+mc_warn (const char *s, ...)
+{
+ va_list argp;
+ va_start (argp, s);
+ show_msg ("warning", s, argp);
+ va_end (argp);
+}
+
+void
+mc_fatal (const char *s, ...)
+{
+ va_list argp;
+ va_start (argp, s);
+ show_msg ("fatal", s, argp);
+ va_end (argp);
+ xexit (1);
+}
+
+
+int
+yyerror (const char *s, ...)
+{
+ va_list argp;
+ va_start (argp, s);
+ show_msg ("parser", s, argp);
+ va_end (argp);
+ return 1;
+}
+
+static unichar *
+get_diff (unichar *end, unichar *start)
+{
+ unichar *ret;
+ unichar save = *end;
+
+ *end = 0;
+ ret = unichar_dup (start);
+ *end = save;
+ return ret;
+}
+
+static rc_uint_type
+parse_digit (unichar ch)
+{
+ rc_uint_type base = 10, v = 0, c;
+
+ if (ch == '0')
+ {
+ base = 8;
+ switch (input_stream_pos[0])
+ {
+ case 'x': case 'X': base = 16; input_stream_pos++; break;
+ case 'o': case 'O': base = 8; input_stream_pos++; break;
+ case 'b': case 'B': base = 2; input_stream_pos++; break;
+ }
+ }
+ else
+ v = (rc_uint_type) (ch - '0');
+
+ while ((ch = input_stream_pos[0]) != 0)
+ {
+ if (ch >= 'A' && ch <= 'F')
+ c = (rc_uint_type) (ch - 'A') + 10;
+ else if (ch >= 'a' && ch <= 'f')
+ c = (rc_uint_type) (ch - 'a') + 10;
+ else if (ch >= '0' && ch <= '9')
+ c = (rc_uint_type) (ch - '0');
+ else
+ break;
+ v *= base;
+ v += c;
+ ++input_stream_pos;
+ }
+ if (input_stream_pos[0] == 'U' || input_stream_pos[0] == 'u')
+ input_stream_pos++;
+ if (input_stream_pos[0] == 'L' || input_stream_pos[0] == 'l')
+ input_stream_pos++;
+ if (input_stream_pos[0] == 'L' || input_stream_pos[0] == 'l')
+ input_stream_pos++;
+ return v;
+}
+
+static mc_keyword *keyword_top = NULL;
+
+const mc_keyword *
+enum_facility (int e)
+{
+ mc_keyword *h = keyword_top;
+
+ while (h != NULL)
+ {
+ while (h && strcmp (h->group_name, "facility") != 0)
+ h = h->next;
+ if (e == 0)
+ return h;
+ --e;
+ if (h)
+ h = h->next;
+ }
+ return h;
+}
+
+const mc_keyword *
+enum_severity (int e)
+{
+ mc_keyword *h = keyword_top;
+
+ while (h != NULL)
+ {
+ while (h && strcmp (h->group_name, "severity") != 0)
+ h = h->next;
+ if (e == 0)
+ return h;
+ --e;
+ if (h)
+ h = h->next;
+ }
+ return h;
+}
+
+static void
+mc_add_keyword_ascii (const char *sz, int rid, const char *grp, rc_uint_type nv, const char *sv)
+{
+ unichar *usz, *usv = NULL;
+ rc_uint_type usz_len;
+
+ unicode_from_codepage (&usz_len, &usz, sz, CP_ACP);
+ if (sv)
+ unicode_from_codepage (&usz_len, &usv, sv, CP_ACP);
+ mc_add_keyword (usz, rid, grp, nv, usv);
+}
+
+void
+mc_add_keyword (unichar *usz, int rid, const char *grp, rc_uint_type nv, unichar *sv)
+{
+ mc_keyword *p, *c, *n;
+ size_t len = unichar_len (usz);
+
+ c = keyword_top;
+ p = NULL;
+ while (c != NULL)
+ {
+ if (c->len > len)
+ break;
+ if (c->len == len)
+ {
+ int e = memcmp (usz, c->usz, len * sizeof (unichar));
+
+ if (e < 0)
+ break;
+ if (! e)
+ {
+ if (! strcmp (grp, "keyword") || strcmp (c->group_name, grp) != 0)
+ fatal (_("Duplicate symbol entered into keyword list."));
+ c->rid = rid;
+ c->nval = nv;
+ c->sval = (!sv ? NULL : unichar_dup (sv));
+ if (! strcmp (grp, "language"))
+ {
+ const wind_language_t *lag = wind_find_language_by_id ((unsigned) nv);
+
+ if (lag == NULL)
+ fatal ("Language ident 0x%lx is not resolvable.\n", (long) nv);
+ memcpy (&c->lang_info, lag, sizeof (*lag));
+ }
+ return;
+ }
+ }
+ c = (p = c)->next;
+ }
+ n = xmalloc (sizeof (mc_keyword));
+ n->next = c;
+ n->len = len;
+ n->group_name = grp;
+ n->usz = usz;
+ n->rid = rid;
+ n->nval = nv;
+ n->sval = (!sv ? NULL : unichar_dup (sv));
+ if (! strcmp (grp, "language"))
+ {
+ const wind_language_t *lag = wind_find_language_by_id ((unsigned) nv);
+ if (lag == NULL)
+ fatal ("Language ident 0x%lx is not resolvable.\n", (long) nv);
+ memcpy (&n->lang_info, lag, sizeof (*lag));
+ }
+ if (! p)
+ keyword_top = n;
+ else
+ p->next = n;
+}
+
+static int
+mc_token (const unichar *t, size_t len)
+{
+ static int was_init = 0;
+ mc_keyword *k;
+
+ if (! was_init)
+ {
+ was_init = 1;
+ mc_add_keyword_ascii ("OutputBase", MCOUTPUTBASE, "keyword", 0, NULL);
+ mc_add_keyword_ascii ("MessageIdTypedef", MCMESSAGEIDTYPEDEF, "keyword", 0, NULL);
+ mc_add_keyword_ascii ("SeverityNames", MCSEVERITYNAMES, "keyword", 0, NULL);
+ mc_add_keyword_ascii ("FacilityNames", MCFACILITYNAMES, "keyword", 0, NULL);
+ mc_add_keyword_ascii ("LanguageNames", MCLANGUAGENAMES, "keyword", 0, NULL);
+ mc_add_keyword_ascii ("MessageId", MCMESSAGEID, "keyword", 0, NULL);
+ mc_add_keyword_ascii ("Severity", MCSEVERITY, "keyword", 0, NULL);
+ mc_add_keyword_ascii ("Facility", MCFACILITY, "keyword", 0, NULL);
+ mc_add_keyword_ascii ("SymbolicName", MCSYMBOLICNAME, "keyword", 0, NULL);
+ mc_add_keyword_ascii ("Language", MCLANGUAGE, "keyword", 0, NULL);
+ mc_add_keyword_ascii ("Success", MCTOKEN, "severity", 0, NULL);
+ mc_add_keyword_ascii ("Informational", MCTOKEN, "severity", 1, NULL);
+ mc_add_keyword_ascii ("Warning", MCTOKEN, "severity", 2, NULL);
+ mc_add_keyword_ascii ("Error", MCTOKEN, "severity", 3, NULL);
+ mc_add_keyword_ascii ("System", MCTOKEN, "facility", 0xff, NULL);
+ mc_add_keyword_ascii ("Application", MCTOKEN, "facility", 0xfff, NULL);
+ mc_add_keyword_ascii ("English", MCTOKEN, "language", 0x409, "MSG00001");
+ }
+ k = keyword_top;
+ if (!len || !t || *t == 0)
+ return -1;
+ while (k != NULL)
+ {
+ if (k->len > len)
+ break;
+ if (k->len == len)
+ {
+ if (! memcmp (k->usz, t, len * sizeof (unichar)))
+ {
+ if (k->rid == MCTOKEN)
+ yylval.tok = k;
+ return k->rid;
+ }
+ }
+ k = k->next;
+ }
+ return -1;
+}
+
+int
+yylex (void)
+{
+ unichar *start_token;
+ unichar ch;
+
+ if (! input_stream_pos)
+ {
+ fatal ("Input stream not setuped.\n");
+ return -1;
+ }
+ if (mclex_want_line)
+ {
+ start_token = input_stream_pos;
+ if (input_stream_pos[0] == '.'
+ && (input_stream_pos[1] == '\n'
+ || (input_stream_pos[1] == '\r' && input_stream_pos[2] == '\n')))
+ {
+ mclex_want_line = FALSE;
+ while (input_stream_pos[0] != 0 && input_stream_pos[0] != '\n')
+ ++input_stream_pos;
+ if (input_stream_pos[0] == '\n')
+ ++input_stream_pos;
+ return MCENDLINE;
+ }
+ while (input_stream_pos[0] != 0 && input_stream_pos[0] != '\n')
+ ++input_stream_pos;
+ if (input_stream_pos[0] == '\n')
+ ++input_stream_pos;
+ yylval.ustr = get_diff (input_stream_pos, start_token);
+ return MCLINE;
+ }
+ while ((ch = input_stream_pos[0]) <= 0x20)
+ {
+ if (ch == 0)
+ return -1;
+ ++input_stream_pos;
+ if (ch == '\n')
+ input_line += 1;
+ if (mclex_want_nl && ch == '\n')
+ {
+ mclex_want_nl = FALSE;
+ return NL;
+ }
+ }
+ start_token = input_stream_pos;
+ ++input_stream_pos;
+ if (mclex_want_filename)
+ {
+ mclex_want_filename = FALSE;
+ if (ch == '"')
+ {
+ start_token++;
+ while ((ch = input_stream_pos[0]) != 0)
+ {
+ if (ch == '"')
+ break;
+ ++input_stream_pos;
+ }
+ yylval.ustr = get_diff (input_stream_pos, start_token);
+ if (ch == '"')
+ ++input_stream_pos;
+ }
+ else
+ {
+ while ((ch = input_stream_pos[0]) != 0)
+ {
+ if (ch <= 0x20 || ch == ')')
+ break;
+ ++input_stream_pos;
+ }
+ yylval.ustr = get_diff (input_stream_pos, start_token);
+ }
+ return MCFILENAME;
+ }
+ switch (ch)
+ {
+ case ';':
+ ++start_token;
+ while (input_stream_pos[0] != '\n' && input_stream_pos[0] != 0)
+ ++input_stream_pos;
+ if (input_stream_pos[0] == '\n')
+ input_stream_pos++;
+ yylval.ustr = get_diff (input_stream_pos, start_token);
+ return MCCOMMENT;
+ case '=':
+ return '=';
+ case '(':
+ return '(';
+ case ')':
+ return ')';
+ case '+':
+ return '+';
+ case ':':
+ return ':';
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ yylval.ival = parse_digit (ch);
+ return MCNUMBER;
+ default:
+ if (ch >= 0x40)
+ {
+ int ret;
+ while (input_stream_pos[0] >= 0x40 || (input_stream_pos[0] >= '0' && input_stream_pos[0] <= '9'))
+ ++input_stream_pos;
+ ret = mc_token (start_token, (size_t) (input_stream_pos - start_token));
+ if (ret != -1)
+ return ret;
+ yylval.ustr = get_diff (input_stream_pos, start_token);
+ return MCIDENT;
+ }
+ yyerror ("illegal character 0x%x.", ch);
+ }
+ return -1;
+}
diff --git a/binutils-2.24/binutils/mcparse.c b/binutils-2.24/binutils/mcparse.c
new file mode 100644
index 00000000..2c936d89
--- /dev/null
+++ b/binutils-2.24/binutils/mcparse.c
@@ -0,0 +1,2156 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton 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.3"
+
+/* 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 {
+ NL = 258,
+ MCIDENT = 259,
+ MCFILENAME = 260,
+ MCLINE = 261,
+ MCCOMMENT = 262,
+ MCTOKEN = 263,
+ MCENDLINE = 264,
+ MCLANGUAGENAMES = 265,
+ MCFACILITYNAMES = 266,
+ MCSEVERITYNAMES = 267,
+ MCOUTPUTBASE = 268,
+ MCMESSAGEIDTYPEDEF = 269,
+ MCLANGUAGE = 270,
+ MCMESSAGEID = 271,
+ MCSEVERITY = 272,
+ MCFACILITY = 273,
+ MCSYMBOLICNAME = 274,
+ MCNUMBER = 275
+ };
+#endif
+/* Tokens. */
+#define NL 258
+#define MCIDENT 259
+#define MCFILENAME 260
+#define MCLINE 261
+#define MCCOMMENT 262
+#define MCTOKEN 263
+#define MCENDLINE 264
+#define MCLANGUAGENAMES 265
+#define MCFACILITYNAMES 266
+#define MCSEVERITYNAMES 267
+#define MCOUTPUTBASE 268
+#define MCMESSAGEIDTYPEDEF 269
+#define MCLANGUAGE 270
+#define MCMESSAGEID 271
+#define MCSEVERITY 272
+#define MCFACILITY 273
+#define MCSYMBOLICNAME 274
+#define MCNUMBER 275
+
+
+
+
+/* Copy the first part of user declarations. */
+#line 1 "mcparse.y"
+ /* mcparse.y -- parser for Windows mc files
+ Copyright 2007
+ Free Software Foundation, Inc.
+
+ Parser for Windows mc files
+ Written by Kai Tietz, Onevision.
+
+ 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 3 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@ixos-leipzig.de>. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+#include "libiberty.h"
+#include "windmc.h"
+#include "safe-ctype.h"
+
+static rc_uint_type mc_last_id = 0;
+static rc_uint_type mc_sefa_val = 0;
+static unichar *mc_last_symbol = NULL;
+static const mc_keyword *mc_cur_severity = NULL;
+static const mc_keyword *mc_cur_facility = NULL;
+static mc_node *cur_node = NULL;
+
+
+
+/* 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
+typedef union YYSTYPE
+#line 45 "mcparse.y"
+{
+ rc_uint_type ival;
+ unichar *ustr;
+ const mc_keyword *tok;
+ mc_node *nod;
+}
+/* Line 193 of yacc.c. */
+#line 186 "mcparse.c"
+ YYSTYPE;
+# 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 216 of yacc.c. */
+#line 199 "mcparse.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && 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
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+ int i;
+#endif
+{
+ return i;
+}
+#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
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (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 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# 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
+{
+ yytype_int16 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 (yytype_int16) + 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 (YYID (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 (YYID (0))
+
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 3
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 114
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 26
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 29
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 82
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 125
+
+/* 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 yytype_uint8 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,
+ 22, 23, 2, 25, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 24, 2,
+ 2, 21, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 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 yytype_uint16 yyprhs[] =
+{
+ 0, 0, 3, 5, 6, 9, 11, 13, 15, 17,
+ 23, 29, 33, 36, 42, 48, 52, 55, 61, 67,
+ 71, 74, 78, 82, 86, 89, 91, 94, 96, 101,
+ 105, 108, 110, 113, 115, 120, 124, 127, 129, 132,
+ 134, 141, 148, 153, 157, 160, 161, 164, 167, 168,
+ 173, 177, 181, 184, 185, 187, 190, 193, 194, 197,
+ 200, 203, 207, 211, 215, 217, 220, 225, 227, 230,
+ 232, 235, 237, 240, 246, 252, 258, 263, 266, 268,
+ 270, 271, 272
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yytype_int8 yyrhs[] =
+{
+ 27, 0, -1, 28, -1, -1, 28, 29, -1, 30,
+ -1, 38, -1, 49, -1, 1, -1, 12, 21, 22,
+ 31, 23, -1, 12, 21, 22, 31, 1, -1, 12,
+ 21, 1, -1, 12, 1, -1, 10, 21, 22, 35,
+ 23, -1, 10, 21, 22, 35, 1, -1, 10, 21,
+ 1, -1, 10, 1, -1, 11, 21, 22, 33, 23,
+ -1, 11, 21, 22, 33, 1, -1, 11, 21, 1,
+ -1, 11, 1, -1, 13, 21, 20, -1, 14, 21,
+ 4, -1, 14, 21, 1, -1, 14, 1, -1, 32,
+ -1, 31, 32, -1, 1, -1, 51, 21, 20, 37,
+ -1, 51, 21, 1, -1, 51, 1, -1, 34, -1,
+ 33, 34, -1, 1, -1, 51, 21, 20, 37, -1,
+ 51, 21, 1, -1, 51, 1, -1, 36, -1, 35,
+ 36, -1, 1, -1, 51, 21, 20, 54, 24, 5,
+ -1, 51, 21, 20, 54, 24, 1, -1, 51, 21,
+ 20, 1, -1, 51, 21, 1, -1, 51, 1, -1,
+ -1, 24, 4, -1, 24, 1, -1, -1, 40, 42,
+ 39, 46, -1, 16, 21, 41, -1, 16, 21, 1,
+ -1, 16, 1, -1, -1, 20, -1, 25, 20, -1,
+ 25, 1, -1, -1, 42, 43, -1, 42, 44, -1,
+ 42, 45, -1, 17, 21, 8, -1, 18, 21, 8,
+ -1, 19, 21, 4, -1, 47, -1, 46, 47, -1,
+ 50, 53, 48, 9, -1, 6, -1, 48, 6, -1,
+ 1, -1, 48, 1, -1, 7, -1, 49, 7, -1,
+ 15, 52, 21, 8, 3, -1, 15, 52, 21, 4,
+ 3, -1, 15, 52, 21, 51, 1, -1, 15, 52,
+ 21, 1, -1, 15, 1, -1, 4, -1, 8, -1,
+ -1, -1, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const yytype_uint16 yyrline[] =
+{
+ 0, 67, 67, 70, 72, 74, 75, 76, 81, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 103, 107, 111, 118, 119, 120, 124, 128,
+ 129, 133, 134, 135, 139, 143, 144, 148, 149, 150,
+ 154, 158, 159, 160, 161, 166, 169, 173, 178, 177,
+ 190, 191, 192, 196, 199, 203, 207, 212, 219, 225,
+ 231, 239, 247, 255, 262, 263, 267, 277, 281, 293,
+ 294, 297, 298, 312, 316, 321, 326, 331, 338, 339,
+ 343, 347, 351
+};
+#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", "NL", "MCIDENT", "MCFILENAME", "MCLINE",
+ "MCCOMMENT", "MCTOKEN", "MCENDLINE", "MCLANGUAGENAMES",
+ "MCFACILITYNAMES", "MCSEVERITYNAMES", "MCOUTPUTBASE",
+ "MCMESSAGEIDTYPEDEF", "MCLANGUAGE", "MCMESSAGEID", "MCSEVERITY",
+ "MCFACILITY", "MCSYMBOLICNAME", "MCNUMBER", "'='", "'('", "')'", "':'",
+ "'+'", "$accept", "input", "entities", "entity", "global_section",
+ "severitymaps", "severitymap", "facilitymaps", "facilitymap", "langmaps",
+ "langmap", "alias_name", "message", "@1", "id", "vid", "sefasy_def",
+ "severity", "facility", "symbol", "lang_entities", "lang_entity",
+ "lines", "comments", "lang", "token", "lex_want_nl", "lex_want_line",
+ "lex_want_filename", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const yytype_uint16 yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 61, 40, 41, 58, 43
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 26, 27, 28, 28, 29, 29, 29, 29, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 31, 31, 31, 32, 32,
+ 32, 33, 33, 33, 34, 34, 34, 35, 35, 35,
+ 36, 36, 36, 36, 36, 37, 37, 37, 39, 38,
+ 40, 40, 40, 41, 41, 41, 41, 42, 42, 42,
+ 42, 43, 44, 45, 46, 46, 47, 48, 48, 48,
+ 48, 49, 49, 50, 50, 50, 50, 50, 51, 51,
+ 52, 53, 54
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 1, 0, 2, 1, 1, 1, 1, 5,
+ 5, 3, 2, 5, 5, 3, 2, 5, 5, 3,
+ 2, 3, 3, 3, 2, 1, 2, 1, 4, 3,
+ 2, 1, 2, 1, 4, 3, 2, 1, 2, 1,
+ 6, 6, 4, 3, 2, 0, 2, 2, 0, 4,
+ 3, 3, 2, 0, 1, 2, 2, 0, 2, 2,
+ 2, 3, 3, 3, 1, 2, 4, 1, 2, 1,
+ 2, 1, 2, 5, 5, 5, 4, 2, 1, 1,
+ 0, 0, 0
+};
+
+/* 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 yytype_uint8 yydefact[] =
+{
+ 3, 0, 0, 1, 8, 71, 0, 0, 0, 0,
+ 0, 0, 4, 5, 6, 57, 7, 16, 0, 20,
+ 0, 12, 0, 0, 24, 0, 52, 0, 48, 72,
+ 15, 0, 19, 0, 11, 0, 21, 23, 22, 51,
+ 54, 0, 50, 0, 0, 0, 0, 58, 59, 60,
+ 39, 78, 79, 0, 37, 0, 33, 0, 31, 0,
+ 27, 0, 25, 0, 56, 55, 0, 0, 0, 0,
+ 49, 64, 81, 14, 13, 38, 44, 0, 18, 17,
+ 32, 36, 0, 10, 9, 26, 30, 0, 61, 62,
+ 63, 77, 0, 65, 0, 43, 0, 35, 45, 29,
+ 45, 0, 69, 67, 0, 42, 0, 0, 34, 28,
+ 76, 78, 79, 0, 70, 68, 66, 0, 47, 46,
+ 74, 73, 75, 41, 40
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int8 yydefgoto[] =
+{
+ -1, 1, 2, 12, 13, 61, 62, 57, 58, 53,
+ 54, 108, 14, 46, 15, 42, 28, 47, 48, 49,
+ 70, 71, 104, 16, 72, 55, 92, 94, 106
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -34
+static const yytype_int8 yypact[] =
+{
+ -34, 62, 70, -34, -34, -34, 15, 22, 30, -15,
+ 34, 37, -34, -34, -34, -34, 56, -34, 10, -34,
+ 12, -34, 20, 25, -34, 52, -34, 0, 80, -34,
+ -34, 71, -34, 84, -34, 86, -34, -34, -34, -34,
+ -34, 45, -34, 1, 68, 74, 76, -34, -34, -34,
+ -34, -34, -34, 4, -34, 38, -34, 6, -34, 39,
+ -34, 29, -34, 40, -34, -34, 93, 94, 99, 43,
+ 76, -34, -34, -34, -34, -34, -34, 46, -34, -34,
+ -34, -34, 47, -34, -34, -34, -34, 49, -34, -34,
+ -34, -34, 83, -34, 3, -34, 2, -34, 81, -34,
+ 81, 92, -34, -34, 48, -34, 82, 72, -34, -34,
+ -34, 104, 105, 108, -34, -34, -34, 73, -34, -34,
+ -34, -34, -34, -34, -34
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yytype_int8 yypgoto[] =
+{
+ -34, -34, -34, -34, -34, -34, 50, -34, 53, -34,
+ 59, 13, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, 44, -34, -34, -34, -33, -34, -34, -34
+};
+
+/* 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 -83
+static const yytype_int8 yytable[] =
+{
+ 59, 39, 63, 105, 102, 73, 23, 78, 51, 103,
+ 51, 30, 52, 32, 52, -53, 17, -53, -53, -53,
+ 40, 34, 66, 19, 59, 41, -82, 74, 63, 79,
+ 83, 21, 31, 51, 33, 24, 18, 52, 26, 76,
+ 81, 86, 35, 20, 91, 36, 64, 95, 97, 114,
+ 99, 22, 84, 37, 115, 25, 38, 116, 27, 77,
+ 82, 87, 3, 29, -80, 65, 96, 98, 113, 100,
+ -2, 4, 50, 118, 123, 51, 119, 5, 124, 52,
+ 6, 7, 8, 9, 10, 56, 11, 60, 51, 67,
+ 51, 69, 52, 110, 52, 68, 111, 43, 44, 45,
+ 112, 88, 89, 90, 101, 107, 117, 120, 121, 122,
+ 80, 85, 75, 109, 93
+};
+
+static const yytype_uint8 yycheck[] =
+{
+ 33, 1, 35, 1, 1, 1, 21, 1, 4, 6,
+ 4, 1, 8, 1, 8, 15, 1, 17, 18, 19,
+ 20, 1, 21, 1, 57, 25, 24, 23, 61, 23,
+ 1, 1, 22, 4, 22, 1, 21, 8, 1, 1,
+ 1, 1, 22, 21, 1, 20, 1, 1, 1, 1,
+ 1, 21, 23, 1, 6, 21, 4, 9, 21, 21,
+ 21, 21, 0, 7, 21, 20, 20, 20, 101, 20,
+ 0, 1, 1, 1, 1, 4, 4, 7, 5, 8,
+ 10, 11, 12, 13, 14, 1, 16, 1, 4, 21,
+ 4, 15, 8, 1, 8, 21, 4, 17, 18, 19,
+ 8, 8, 8, 4, 21, 24, 24, 3, 3, 1,
+ 57, 61, 53, 100, 70
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint8 yystos[] =
+{
+ 0, 27, 28, 0, 1, 7, 10, 11, 12, 13,
+ 14, 16, 29, 30, 38, 40, 49, 1, 21, 1,
+ 21, 1, 21, 21, 1, 21, 1, 21, 42, 7,
+ 1, 22, 1, 22, 1, 22, 20, 1, 4, 1,
+ 20, 25, 41, 17, 18, 19, 39, 43, 44, 45,
+ 1, 4, 8, 35, 36, 51, 1, 33, 34, 51,
+ 1, 31, 32, 51, 1, 20, 21, 21, 21, 15,
+ 46, 47, 50, 1, 23, 36, 1, 21, 1, 23,
+ 34, 1, 21, 1, 23, 32, 1, 21, 8, 8,
+ 4, 1, 52, 47, 53, 1, 20, 1, 20, 1,
+ 20, 21, 1, 6, 48, 1, 54, 24, 37, 37,
+ 1, 4, 8, 51, 1, 6, 9, 24, 1, 4,
+ 3, 3, 1, 1, 5
+};
+
+#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 (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (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 (YYID (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 (YYID (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 defined YYLTYPE_IS_TRIVIAL && 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 (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ yytype_int16 *bottom;
+ yytype_int16 *top;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; 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 (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+ YYSTYPE *yyvsp;
+ int yyrule;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
+ fprintf (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule); \
+} while (YYID (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. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# 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. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+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 == '"')
+ {
+ YYSIZE_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
+
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
+ else
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { 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 + 1;
+ 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)
+ return YYSIZE_MAXIMUM;
+
+ if (yyresult)
+ {
+ /* 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 = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+#endif /* YYERROR_VERBOSE */
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+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
+{
+ YYUSE (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 __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+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;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+ /* 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. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ 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;
+ yytype_int16 *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;
+
+ {
+ yytype_int16 *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. */
+
+ /* 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;
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ 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 77 "mcparse.y"
+ {
+ cur_node = mc_add_node ();
+ cur_node->user_text = (yyvsp[(1) - (1)].ustr);
+ }
+ break;
+
+ case 8:
+#line 81 "mcparse.y"
+ { mc_fatal ("syntax error"); }
+ break;
+
+ case 10:
+#line 86 "mcparse.y"
+ { mc_fatal ("missing ')' in SeverityNames"); }
+ break;
+
+ case 11:
+#line 87 "mcparse.y"
+ { mc_fatal ("missing '(' in SeverityNames"); }
+ break;
+
+ case 12:
+#line 88 "mcparse.y"
+ { mc_fatal ("missing '=' for SeverityNames"); }
+ break;
+
+ case 14:
+#line 90 "mcparse.y"
+ { mc_fatal ("missing ')' in LanguageNames"); }
+ break;
+
+ case 15:
+#line 91 "mcparse.y"
+ { mc_fatal ("missing '(' in LanguageNames"); }
+ break;
+
+ case 16:
+#line 92 "mcparse.y"
+ { mc_fatal ("missing '=' for LanguageNames"); }
+ break;
+
+ case 18:
+#line 94 "mcparse.y"
+ { mc_fatal ("missing ')' in FacilityNames"); }
+ break;
+
+ case 19:
+#line 95 "mcparse.y"
+ { mc_fatal ("missing '(' in FacilityNames"); }
+ break;
+
+ case 20:
+#line 96 "mcparse.y"
+ { mc_fatal ("missing '=' for FacilityNames"); }
+ break;
+
+ case 21:
+#line 98 "mcparse.y"
+ {
+ if ((yyvsp[(3) - (3)].ival) != 10 && (yyvsp[(3) - (3)].ival) != 16)
+ mc_fatal ("OutputBase allows 10 or 16 as value");
+ mcset_out_values_are_decimal = ((yyvsp[(3) - (3)].ival) == 10 ? 1 : 0);
+ }
+ break;
+
+ case 22:
+#line 104 "mcparse.y"
+ {
+ mcset_msg_id_typedef = (yyvsp[(3) - (3)].ustr);
+ }
+ break;
+
+ case 23:
+#line 108 "mcparse.y"
+ {
+ mc_fatal ("MessageIdTypedef expects an identifier");
+ }
+ break;
+
+ case 24:
+#line 112 "mcparse.y"
+ {
+ mc_fatal ("missing '=' for MessageIdTypedef");
+ }
+ break;
+
+ case 27:
+#line 120 "mcparse.y"
+ { mc_fatal ("severity ident missing"); }
+ break;
+
+ case 28:
+#line 125 "mcparse.y"
+ {
+ mc_add_keyword ((yyvsp[(1) - (4)].ustr), MCTOKEN, "severity", (yyvsp[(3) - (4)].ival), (yyvsp[(4) - (4)].ustr));
+ }
+ break;
+
+ case 29:
+#line 128 "mcparse.y"
+ { mc_fatal ("severity number missing"); }
+ break;
+
+ case 30:
+#line 129 "mcparse.y"
+ { mc_fatal ("severity missing '='"); }
+ break;
+
+ case 33:
+#line 135 "mcparse.y"
+ { mc_fatal ("missing ident in FacilityNames"); }
+ break;
+
+ case 34:
+#line 140 "mcparse.y"
+ {
+ mc_add_keyword ((yyvsp[(1) - (4)].ustr), MCTOKEN, "facility", (yyvsp[(3) - (4)].ival), (yyvsp[(4) - (4)].ustr));
+ }
+ break;
+
+ case 35:
+#line 143 "mcparse.y"
+ { mc_fatal ("facility number missing"); }
+ break;
+
+ case 36:
+#line 144 "mcparse.y"
+ { mc_fatal ("facility missing '='"); }
+ break;
+
+ case 39:
+#line 150 "mcparse.y"
+ { mc_fatal ("missing ident in LanguageNames"); }
+ break;
+
+ case 40:
+#line 155 "mcparse.y"
+ {
+ mc_add_keyword ((yyvsp[(1) - (6)].ustr), MCTOKEN, "language", (yyvsp[(3) - (6)].ival), (yyvsp[(6) - (6)].ustr));
+ }
+ break;
+
+ case 41:
+#line 158 "mcparse.y"
+ { mc_fatal ("missing filename in LanguageNames"); }
+ break;
+
+ case 42:
+#line 159 "mcparse.y"
+ { mc_fatal ("missing ':' in LanguageNames"); }
+ break;
+
+ case 43:
+#line 160 "mcparse.y"
+ { mc_fatal ("missing language code in LanguageNames"); }
+ break;
+
+ case 44:
+#line 161 "mcparse.y"
+ { mc_fatal ("missing '=' for LanguageNames"); }
+ break;
+
+ case 45:
+#line 166 "mcparse.y"
+ {
+ (yyval.ustr) = NULL;
+ }
+ break;
+
+ case 46:
+#line 170 "mcparse.y"
+ {
+ (yyval.ustr) = (yyvsp[(2) - (2)].ustr);
+ }
+ break;
+
+ case 47:
+#line 173 "mcparse.y"
+ { mc_fatal ("illegal token in identifier"); (yyval.ustr) = NULL; }
+ break;
+
+ case 48:
+#line 178 "mcparse.y"
+ {
+ cur_node = mc_add_node ();
+ cur_node->symbol = mc_last_symbol;
+ cur_node->facility = mc_cur_facility;
+ cur_node->severity = mc_cur_severity;
+ cur_node->id = ((yyvsp[(1) - (2)].ival) & 0xffffUL);
+ cur_node->vid = ((yyvsp[(1) - (2)].ival) & 0xffffUL) | mc_sefa_val;
+ mc_last_id = (yyvsp[(1) - (2)].ival);
+ }
+ break;
+
+ case 50:
+#line 190 "mcparse.y"
+ { (yyval.ival) = (yyvsp[(3) - (3)].ival); }
+ break;
+
+ case 51:
+#line 191 "mcparse.y"
+ { mc_fatal ("missing number in MessageId"); (yyval.ival) = 0; }
+ break;
+
+ case 52:
+#line 192 "mcparse.y"
+ { mc_fatal ("missing '=' for MessageId"); (yyval.ival) = 0; }
+ break;
+
+ case 53:
+#line 196 "mcparse.y"
+ {
+ (yyval.ival) = ++mc_last_id;
+ }
+ break;
+
+ case 54:
+#line 200 "mcparse.y"
+ {
+ (yyval.ival) = (yyvsp[(1) - (1)].ival);
+ }
+ break;
+
+ case 55:
+#line 204 "mcparse.y"
+ {
+ (yyval.ival) = mc_last_id + (yyvsp[(2) - (2)].ival);
+ }
+ break;
+
+ case 56:
+#line 207 "mcparse.y"
+ { mc_fatal ("missing number after MessageId '+'"); }
+ break;
+
+ case 57:
+#line 212 "mcparse.y"
+ {
+ (yyval.ival) = 0;
+ mc_sefa_val = (mcset_custom_bit ? 1 : 0) << 29;
+ mc_last_symbol = NULL;
+ mc_cur_severity = NULL;
+ mc_cur_facility = NULL;
+ }
+ break;
+
+ case 58:
+#line 220 "mcparse.y"
+ {
+ if ((yyvsp[(1) - (2)].ival) & 1)
+ mc_warn (_("duplicate definition of Severity"));
+ (yyval.ival) = (yyvsp[(1) - (2)].ival) | 1;
+ }
+ break;
+
+ case 59:
+#line 226 "mcparse.y"
+ {
+ if ((yyvsp[(1) - (2)].ival) & 2)
+ mc_warn (_("duplicate definition of Facility"));
+ (yyval.ival) = (yyvsp[(1) - (2)].ival) | 2;
+ }
+ break;
+
+ case 60:
+#line 232 "mcparse.y"
+ {
+ if ((yyvsp[(1) - (2)].ival) & 4)
+ mc_warn (_("duplicate definition of SymbolicName"));
+ (yyval.ival) = (yyvsp[(1) - (2)].ival) | 4;
+ }
+ break;
+
+ case 61:
+#line 240 "mcparse.y"
+ {
+ mc_sefa_val &= ~ (0x3UL << 30);
+ mc_sefa_val |= (((yyvsp[(3) - (3)].tok)->nval & 0x3UL) << 30);
+ mc_cur_severity = (yyvsp[(3) - (3)].tok);
+ }
+ break;
+
+ case 62:
+#line 248 "mcparse.y"
+ {
+ mc_sefa_val &= ~ (0xfffUL << 16);
+ mc_sefa_val |= (((yyvsp[(3) - (3)].tok)->nval & 0xfffUL) << 16);
+ mc_cur_facility = (yyvsp[(3) - (3)].tok);
+ }
+ break;
+
+ case 63:
+#line 256 "mcparse.y"
+ {
+ mc_last_symbol = (yyvsp[(3) - (3)].ustr);
+ }
+ break;
+
+ case 66:
+#line 268 "mcparse.y"
+ {
+ mc_node_lang *h;
+ h = mc_add_node_lang (cur_node, (yyvsp[(1) - (4)].tok), cur_node->vid);
+ h->message = (yyvsp[(3) - (4)].ustr);
+ if (mcset_max_message_length != 0 && unichar_len (h->message) > mcset_max_message_length)
+ mc_warn ("message length to long");
+ }
+ break;
+
+ case 67:
+#line 278 "mcparse.y"
+ {
+ (yyval.ustr) = (yyvsp[(1) - (1)].ustr);
+ }
+ break;
+
+ case 68:
+#line 282 "mcparse.y"
+ {
+ unichar *h;
+ rc_uint_type l1,l2;
+ l1 = unichar_len ((yyvsp[(1) - (2)].ustr));
+ l2 = unichar_len ((yyvsp[(2) - (2)].ustr));
+ h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar));
+ if (l1) memcpy (h, (yyvsp[(1) - (2)].ustr), l1 * sizeof (unichar));
+ if (l2) memcpy (&h[l1], (yyvsp[(2) - (2)].ustr), l2 * sizeof (unichar));
+ h[l1 + l2] = 0;
+ (yyval.ustr) = h;
+ }
+ break;
+
+ case 69:
+#line 293 "mcparse.y"
+ { mc_fatal ("missing end of message text"); (yyval.ustr) = NULL; }
+ break;
+
+ case 70:
+#line 294 "mcparse.y"
+ { mc_fatal ("missing end of message text"); (yyval.ustr) = (yyvsp[(1) - (2)].ustr); }
+ break;
+
+ case 71:
+#line 297 "mcparse.y"
+ { (yyval.ustr) = (yyvsp[(1) - (1)].ustr); }
+ break;
+
+ case 72:
+#line 299 "mcparse.y"
+ {
+ unichar *h;
+ rc_uint_type l1,l2;
+ l1 = unichar_len ((yyvsp[(1) - (2)].ustr));
+ l2 = unichar_len ((yyvsp[(2) - (2)].ustr));
+ h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar));
+ if (l1) memcpy (h, (yyvsp[(1) - (2)].ustr), l1 * sizeof (unichar));
+ if (l2) memcpy (&h[l1], (yyvsp[(2) - (2)].ustr), l2 * sizeof (unichar));
+ h[l1 + l2] = 0;
+ (yyval.ustr) = h;
+ }
+ break;
+
+ case 73:
+#line 313 "mcparse.y"
+ {
+ (yyval.tok) = (yyvsp[(4) - (5)].tok);
+ }
+ break;
+
+ case 74:
+#line 317 "mcparse.y"
+ {
+ (yyval.tok) = NULL;
+ mc_fatal (_("undeclared language identifier"));
+ }
+ break;
+
+ case 75:
+#line 322 "mcparse.y"
+ {
+ (yyval.tok) = NULL;
+ mc_fatal ("missing newline after Language");
+ }
+ break;
+
+ case 76:
+#line 327 "mcparse.y"
+ {
+ (yyval.tok) = NULL;
+ mc_fatal ("missing ident for Language");
+ }
+ break;
+
+ case 77:
+#line 332 "mcparse.y"
+ {
+ (yyval.tok) = NULL;
+ mc_fatal ("missing '=' for Language");
+ }
+ break;
+
+ case 78:
+#line 338 "mcparse.y"
+ { (yyval.ustr) = (yyvsp[(1) - (1)].ustr); }
+ break;
+
+ case 79:
+#line 339 "mcparse.y"
+ { (yyval.ustr) = (yyvsp[(1) - (1)].tok)->usz; }
+ break;
+
+ case 80:
+#line 343 "mcparse.y"
+ { mclex_want_nl = 1; }
+ break;
+
+ case 81:
+#line 347 "mcparse.y"
+ { mclex_want_line = 1; }
+ break;
+
+ case 82:
+#line 351 "mcparse.y"
+ { mclex_want_filename = 1; }
+ break;
+
+
+/* Line 1267 of yacc.c. */
+#line 1939 "mcparse.c"
+ default: break;
+ }
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ 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
+ yyerror (YY_("syntax error"));
+#else
+ {
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+#endif
+ }
+
+
+
+ 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 (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ 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 (1);
+ 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);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+
+#line 354 "mcparse.y"
+
+
+/* Something else. */
+
diff --git a/binutils-2.24/binutils/mcparse.h b/binutils-2.24/binutils/mcparse.h
new file mode 100644
index 00000000..ea4bfe65
--- /dev/null
+++ b/binutils-2.24/binutils/mcparse.h
@@ -0,0 +1,103 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 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 {
+ NL = 258,
+ MCIDENT = 259,
+ MCFILENAME = 260,
+ MCLINE = 261,
+ MCCOMMENT = 262,
+ MCTOKEN = 263,
+ MCENDLINE = 264,
+ MCLANGUAGENAMES = 265,
+ MCFACILITYNAMES = 266,
+ MCSEVERITYNAMES = 267,
+ MCOUTPUTBASE = 268,
+ MCMESSAGEIDTYPEDEF = 269,
+ MCLANGUAGE = 270,
+ MCMESSAGEID = 271,
+ MCSEVERITY = 272,
+ MCFACILITY = 273,
+ MCSYMBOLICNAME = 274,
+ MCNUMBER = 275
+ };
+#endif
+/* Tokens. */
+#define NL 258
+#define MCIDENT 259
+#define MCFILENAME 260
+#define MCLINE 261
+#define MCCOMMENT 262
+#define MCTOKEN 263
+#define MCENDLINE 264
+#define MCLANGUAGENAMES 265
+#define MCFACILITYNAMES 266
+#define MCSEVERITYNAMES 267
+#define MCOUTPUTBASE 268
+#define MCMESSAGEIDTYPEDEF 269
+#define MCLANGUAGE 270
+#define MCMESSAGEID 271
+#define MCSEVERITY 272
+#define MCFACILITY 273
+#define MCSYMBOLICNAME 274
+#define MCNUMBER 275
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+#line 45 "mcparse.y"
+{
+ rc_uint_type ival;
+ unichar *ustr;
+ const mc_keyword *tok;
+ mc_node *nod;
+}
+/* Line 1529 of yacc.c. */
+#line 96 "mcparse.h"
+ YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
diff --git a/binutils-2.24/binutils/mcparse.y b/binutils-2.24/binutils/mcparse.y
new file mode 100644
index 00000000..35328d17
--- /dev/null
+++ b/binutils-2.24/binutils/mcparse.y
@@ -0,0 +1,356 @@
+%{ /* mcparse.y -- parser for Windows mc files
+ Copyright 2007
+ Free Software Foundation, Inc.
+
+ Parser for Windows mc files
+ Written by Kai Tietz, Onevision.
+
+ 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 3 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@ixos-leipzig.de>. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+#include "libiberty.h"
+#include "windmc.h"
+#include "safe-ctype.h"
+
+static rc_uint_type mc_last_id = 0;
+static rc_uint_type mc_sefa_val = 0;
+static unichar *mc_last_symbol = NULL;
+static const mc_keyword *mc_cur_severity = NULL;
+static const mc_keyword *mc_cur_facility = NULL;
+static mc_node *cur_node = NULL;
+
+%}
+
+%union
+{
+ rc_uint_type ival;
+ unichar *ustr;
+ const mc_keyword *tok;
+ mc_node *nod;
+};
+
+%start input
+
+%token NL
+%token<ustr> MCIDENT MCFILENAME MCLINE MCCOMMENT
+%token<tok> MCTOKEN
+%token MCENDLINE
+%token MCLANGUAGENAMES MCFACILITYNAMES MCSEVERITYNAMES MCOUTPUTBASE MCMESSAGEIDTYPEDEF
+%token MCLANGUAGE MCMESSAGEID MCSEVERITY MCFACILITY MCSYMBOLICNAME
+%token <ival> MCNUMBER
+
+%type<ival> id vid sefasy_def
+%type<ustr> alias_name token lines comments
+%type<tok> lang
+
+%%
+input: entities
+ ;
+
+entities:
+ /* empty */
+ | entities entity
+ ;
+entity: global_section
+ | message
+ | comments
+ {
+ cur_node = mc_add_node ();
+ cur_node->user_text = $1;
+ }
+ | error { mc_fatal ("syntax error"); }
+;
+
+global_section:
+ MCSEVERITYNAMES '=' '(' severitymaps ')'
+ | MCSEVERITYNAMES '=' '(' severitymaps error { mc_fatal ("missing ')' in SeverityNames"); }
+ | MCSEVERITYNAMES '=' error { mc_fatal ("missing '(' in SeverityNames"); }
+ | MCSEVERITYNAMES error { mc_fatal ("missing '=' for SeverityNames"); }
+ | MCLANGUAGENAMES '=' '(' langmaps ')'
+ | MCLANGUAGENAMES '=' '(' langmaps error { mc_fatal ("missing ')' in LanguageNames"); }
+ | MCLANGUAGENAMES '=' error { mc_fatal ("missing '(' in LanguageNames"); }
+ | MCLANGUAGENAMES error { mc_fatal ("missing '=' for LanguageNames"); }
+ | MCFACILITYNAMES '=' '(' facilitymaps ')'
+ | MCFACILITYNAMES '=' '(' facilitymaps error { mc_fatal ("missing ')' in FacilityNames"); }
+ | MCFACILITYNAMES '=' error { mc_fatal ("missing '(' in FacilityNames"); }
+ | MCFACILITYNAMES error { mc_fatal ("missing '=' for FacilityNames"); }
+ | MCOUTPUTBASE '=' MCNUMBER
+ {
+ if ($3 != 10 && $3 != 16)
+ mc_fatal ("OutputBase allows 10 or 16 as value");
+ mcset_out_values_are_decimal = ($3 == 10 ? 1 : 0);
+ }
+ | MCMESSAGEIDTYPEDEF '=' MCIDENT
+ {
+ mcset_msg_id_typedef = $3;
+ }
+ | MCMESSAGEIDTYPEDEF '=' error
+ {
+ mc_fatal ("MessageIdTypedef expects an identifier");
+ }
+ | MCMESSAGEIDTYPEDEF error
+ {
+ mc_fatal ("missing '=' for MessageIdTypedef");
+ }
+;
+
+severitymaps:
+ severitymap
+ | severitymaps severitymap
+ | error { mc_fatal ("severity ident missing"); }
+;
+
+severitymap:
+ token '=' MCNUMBER alias_name
+ {
+ mc_add_keyword ($1, MCTOKEN, "severity", $3, $4);
+ }
+ | token '=' error { mc_fatal ("severity number missing"); }
+ | token error { mc_fatal ("severity missing '='"); }
+;
+
+facilitymaps:
+ facilitymap
+ | facilitymaps facilitymap
+ | error { mc_fatal ("missing ident in FacilityNames"); }
+;
+
+facilitymap:
+ token '=' MCNUMBER alias_name
+ {
+ mc_add_keyword ($1, MCTOKEN, "facility", $3, $4);
+ }
+ | token '=' error { mc_fatal ("facility number missing"); }
+ | token error { mc_fatal ("facility missing '='"); }
+;
+
+langmaps:
+ langmap
+ | langmaps langmap
+ | error { mc_fatal ("missing ident in LanguageNames"); }
+;
+
+langmap:
+ token '=' MCNUMBER lex_want_filename ':' MCFILENAME
+ {
+ mc_add_keyword ($1, MCTOKEN, "language", $3, $6);
+ }
+ | token '=' MCNUMBER lex_want_filename ':' error { mc_fatal ("missing filename in LanguageNames"); }
+ | token '=' MCNUMBER error { mc_fatal ("missing ':' in LanguageNames"); }
+ | token '=' error { mc_fatal ("missing language code in LanguageNames"); }
+ | token error { mc_fatal ("missing '=' for LanguageNames"); }
+;
+
+alias_name:
+ /* empty */
+ {
+ $$ = NULL;
+ }
+ | ':' MCIDENT
+ {
+ $$ = $2;
+ }
+ | ':' error { mc_fatal ("illegal token in identifier"); $$ = NULL; }
+;
+
+message:
+ id sefasy_def
+ {
+ cur_node = mc_add_node ();
+ cur_node->symbol = mc_last_symbol;
+ cur_node->facility = mc_cur_facility;
+ cur_node->severity = mc_cur_severity;
+ cur_node->id = ($1 & 0xffffUL);
+ cur_node->vid = ($1 & 0xffffUL) | mc_sefa_val;
+ mc_last_id = $1;
+ }
+ lang_entities
+;
+
+id: MCMESSAGEID '=' vid { $$ = $3; }
+ | MCMESSAGEID '=' error { mc_fatal ("missing number in MessageId"); $$ = 0; }
+ | MCMESSAGEID error { mc_fatal ("missing '=' for MessageId"); $$ = 0; }
+;
+
+vid: /* empty */
+ {
+ $$ = ++mc_last_id;
+ }
+ | MCNUMBER
+ {
+ $$ = $1;
+ }
+ | '+' MCNUMBER
+ {
+ $$ = mc_last_id + $2;
+ }
+ | '+' error { mc_fatal ("missing number after MessageId '+'"); }
+;
+
+sefasy_def:
+ /* empty */
+ {
+ $$ = 0;
+ mc_sefa_val = (mcset_custom_bit ? 1 : 0) << 29;
+ mc_last_symbol = NULL;
+ mc_cur_severity = NULL;
+ mc_cur_facility = NULL;
+ }
+ | sefasy_def severity
+ {
+ if ($1 & 1)
+ mc_warn (_("duplicate definition of Severity"));
+ $$ = $1 | 1;
+ }
+ | sefasy_def facility
+ {
+ if ($1 & 2)
+ mc_warn (_("duplicate definition of Facility"));
+ $$ = $1 | 2;
+ }
+ | sefasy_def symbol
+ {
+ if ($1 & 4)
+ mc_warn (_("duplicate definition of SymbolicName"));
+ $$ = $1 | 4;
+ }
+;
+
+severity: MCSEVERITY '=' MCTOKEN
+ {
+ mc_sefa_val &= ~ (0x3UL << 30);
+ mc_sefa_val |= (($3->nval & 0x3UL) << 30);
+ mc_cur_severity = $3;
+ }
+;
+
+facility: MCFACILITY '=' MCTOKEN
+ {
+ mc_sefa_val &= ~ (0xfffUL << 16);
+ mc_sefa_val |= (($3->nval & 0xfffUL) << 16);
+ mc_cur_facility = $3;
+ }
+;
+
+symbol: MCSYMBOLICNAME '=' MCIDENT
+ {
+ mc_last_symbol = $3;
+ }
+;
+
+lang_entities:
+ lang_entity
+ | lang_entities lang_entity
+;
+
+lang_entity:
+ lang lex_want_line lines MCENDLINE
+ {
+ mc_node_lang *h;
+ h = mc_add_node_lang (cur_node, $1, cur_node->vid);
+ h->message = $3;
+ if (mcset_max_message_length != 0 && unichar_len (h->message) > mcset_max_message_length)
+ mc_warn ("message length to long");
+ }
+;
+
+lines: MCLINE
+ {
+ $$ = $1;
+ }
+ | lines MCLINE
+ {
+ unichar *h;
+ rc_uint_type l1,l2;
+ l1 = unichar_len ($1);
+ l2 = unichar_len ($2);
+ h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar));
+ if (l1) memcpy (h, $1, l1 * sizeof (unichar));
+ if (l2) memcpy (&h[l1], $2, l2 * sizeof (unichar));
+ h[l1 + l2] = 0;
+ $$ = h;
+ }
+ | error { mc_fatal ("missing end of message text"); $$ = NULL; }
+ | lines error { mc_fatal ("missing end of message text"); $$ = $1; }
+;
+
+comments: MCCOMMENT { $$ = $1; }
+ | comments MCCOMMENT
+ {
+ unichar *h;
+ rc_uint_type l1,l2;
+ l1 = unichar_len ($1);
+ l2 = unichar_len ($2);
+ h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar));
+ if (l1) memcpy (h, $1, l1 * sizeof (unichar));
+ if (l2) memcpy (&h[l1], $2, l2 * sizeof (unichar));
+ h[l1 + l2] = 0;
+ $$ = h;
+ }
+;
+
+lang: MCLANGUAGE lex_want_nl '=' MCTOKEN NL
+ {
+ $$ = $4;
+ }
+ | MCLANGUAGE lex_want_nl '=' MCIDENT NL
+ {
+ $$ = NULL;
+ mc_fatal (_("undeclared language identifier"));
+ }
+ | MCLANGUAGE lex_want_nl '=' token error
+ {
+ $$ = NULL;
+ mc_fatal ("missing newline after Language");
+ }
+ | MCLANGUAGE lex_want_nl '=' error
+ {
+ $$ = NULL;
+ mc_fatal ("missing ident for Language");
+ }
+ | MCLANGUAGE error
+ {
+ $$ = NULL;
+ mc_fatal ("missing '=' for Language");
+ }
+;
+
+token: MCIDENT { $$ = $1; }
+ | MCTOKEN { $$ = $1->usz; }
+;
+
+lex_want_nl:
+ /* Empty */ { mclex_want_nl = 1; }
+;
+
+lex_want_line:
+ /* Empty */ { mclex_want_line = 1; }
+;
+
+lex_want_filename:
+ /* Empty */ { mclex_want_filename = 1; }
+;
+
+%%
+
+/* Something else. */
diff --git a/binutils-2.24/binutils/nlmconv.c b/binutils-2.24/binutils/nlmconv.c
new file mode 100644
index 00000000..64214e71
--- /dev/null
+++ b/binutils-2.24/binutils/nlmconv.c
@@ -0,0 +1,2138 @@
+/* nlmconv.c -- NLM conversion program
+ Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+ 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012
+ 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 3 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@cygnus.com>.
+
+ This program can be used to convert any appropriate object file
+ into a NetWare Loadable Module (an NLM). It will accept a linker
+ specification file which is identical to that accepted by the
+ NetWare linker, NLMLINK. */
+
+/* AIX requires this to be the first thing in the file. */
+#ifndef __GNUC__
+# ifdef _AIX
+ #pragma alloca
+#endif
+#endif
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "filenames.h"
+#include "safe-ctype.h"
+
+#include "ansidecl.h"
+#include <time.h>
+#include <assert.h>
+#include "getopt.h"
+
+/* Internal BFD NLM header. */
+#include "libnlm.h"
+#include "nlmconv.h"
+
+#ifdef NLMCONV_ALPHA
+#include "coff/sym.h"
+#include "coff/ecoff.h"
+#endif
+
+#include "bucomm.h"
+
+/* 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 (int);
+
+#ifndef SEEK_SET
+#define SEEK_SET 0
+#endif
+
+#ifndef R_OK
+#define R_OK 4
+#define W_OK 2
+#define X_OK 1
+#endif
+
+/* Global variables. */
+
+/* The name used to invoke the program. */
+char *program_name;
+
+/* Local variables. */
+
+/* Whether to print out debugging information (currently just controls
+ whether it prints the linker command if there is one). */
+static int debug;
+
+/* The symbol table. */
+static asymbol **symbols;
+
+/* A section we create in the output file to hold pointers to where
+ the sections of the input file end up. We will put a pointer to
+ this section in the NLM header. These is an entry for each input
+ section. The format is
+ null terminated section name
+ zeroes to adjust to 4 byte boundary
+ 4 byte section data file pointer
+ 4 byte section size
+ We don't need a version number. The way we find this information
+ is by finding a stamp in the NLM header information. If we need to
+ change the format of this information, we can simply change the
+ stamp. */
+static asection *secsec;
+
+/* A temporary file name to be unlinked on exit. Actually, for most
+ errors, we leave it around. It's not clear whether that is helpful
+ or not. */
+static char *unlink_on_exit;
+
+/* The list of long options. */
+static struct option long_options[] =
+{
+ { "debug", no_argument, 0, 'd' },
+ { "header-file", required_argument, 0, 'T' },
+ { "help", no_argument, 0, 'h' },
+ { "input-target", required_argument, 0, 'I' },
+ { "input-format", required_argument, 0, 'I' }, /* Obsolete */
+ { "linker", required_argument, 0, 'l' },
+ { "output-target", required_argument, 0, 'O' },
+ { "output-format", required_argument, 0, 'O' }, /* Obsolete */
+ { "version", no_argument, 0, 'V' },
+ { NULL, no_argument, 0, 0 }
+};
+
+/* Local routines. */
+
+int main (int, char **);
+
+static void show_usage (FILE *, int);
+static const char *select_output_format
+ (enum bfd_architecture, unsigned long, bfd_boolean);
+static void setup_sections (bfd *, asection *, void *);
+static void copy_sections (bfd *, asection *, void *);
+static void mangle_relocs
+ (bfd *, asection *, arelent ***, long *, char *, bfd_size_type);
+static void default_mangle_relocs
+ (bfd *, asection *, arelent ***, long *, char *, bfd_size_type);
+static char *link_inputs (struct string_list *, char *, char *);
+
+#ifdef NLMCONV_I386
+static void i386_mangle_relocs (bfd *, asection *, arelent ***, long *, char *, bfd_size_type);
+#endif
+
+#ifdef NLMCONV_ALPHA
+static void alpha_mangle_relocs (bfd *, asection *, arelent ***, long *, char *, bfd_size_type);
+#endif
+
+#ifdef NLMCONV_POWERPC
+static void powerpc_build_stubs (bfd *, bfd *, asymbol ***, long *);
+static void powerpc_resolve_stubs (bfd *, bfd *);
+static void powerpc_mangle_relocs (bfd *, asection *, arelent ***, long *, char *, bfd_size_type);
+#endif
+
+/* The main routine. */
+
+int
+main (int argc, char **argv)
+{
+ int opt;
+ char *input_file = NULL;
+ const char *input_format = NULL;
+ const char *output_format = NULL;
+ const char *header_file = NULL;
+ char *ld_arg = NULL;
+ Nlm_Internal_Fixed_Header fixed_hdr_struct;
+ Nlm_Internal_Variable_Header var_hdr_struct;
+ Nlm_Internal_Version_Header version_hdr_struct;
+ Nlm_Internal_Copyright_Header copyright_hdr_struct;
+ Nlm_Internal_Extended_Header extended_hdr_struct;
+ bfd *inbfd;
+ bfd *outbfd;
+ asymbol **newsyms, **outsyms;
+ long symcount, newsymalloc, newsymcount;
+ long symsize;
+ asection *text_sec, *bss_sec, *data_sec;
+ bfd_vma vma;
+ bfd_size_type align;
+ asymbol *endsym;
+ long i;
+ char inlead, outlead;
+ bfd_boolean gotstart, gotexit, gotcheck;
+ struct stat st;
+ FILE *custom_data = NULL;
+ FILE *help_data = NULL;
+ FILE *message_data = NULL;
+ FILE *rpc_data = NULL;
+ FILE *shared_data = NULL;
+ size_t custom_size = 0;
+ size_t help_size = 0;
+ size_t message_size = 0;
+ size_t module_size = 0;
+ size_t rpc_size = 0;
+ asection *custom_section = NULL;
+ asection *help_section = NULL;
+ asection *message_section = NULL;
+ asection *module_section = NULL;
+ asection *rpc_section = NULL;
+ asection *shared_section = NULL;
+ bfd *sharedbfd;
+ size_t shared_offset = 0;
+ size_t shared_size = 0;
+ static Nlm_Internal_Fixed_Header sharedhdr;
+ int len;
+ char *modname;
+ char **matching;
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = argv[0];
+ xmalloc_set_program_name (program_name);
+
+ expandargv (&argc, &argv);
+
+ bfd_init ();
+ set_default_bfd_target ();
+
+ while ((opt = getopt_long (argc, argv, "dHhI:l:O:T:Vv", long_options,
+ (int *) NULL))
+ != EOF)
+ {
+ switch (opt)
+ {
+ case 'd':
+ debug = 1;
+ break;
+ case 'H':
+ case 'h':
+ show_usage (stdout, 0);
+ break;
+ case 'I':
+ input_format = optarg;
+ break;
+ case 'l':
+ ld_arg = optarg;
+ break;
+ case 'O':
+ output_format = optarg;
+ break;
+ case 'T':
+ header_file = optarg;
+ break;
+ case 'v':
+ case 'V':
+ print_version ("nlmconv");
+ break;
+ case 0:
+ break;
+ default:
+ show_usage (stderr, 1);
+ break;
+ }
+ }
+
+ /* The input and output files may be named on the command line. */
+ output_file = NULL;
+ if (optind < argc)
+ {
+ input_file = argv[optind];
+ ++optind;
+ if (optind < argc)
+ {
+ output_file = argv[optind];
+ ++optind;
+ if (optind < argc)
+ show_usage (stderr, 1);
+ if (filename_cmp (input_file, output_file) == 0)
+ {
+ fatal (_("input and output files must be different"));
+ }
+ }
+ }
+
+ /* Initialize the header information to default values. */
+ fixed_hdr = &fixed_hdr_struct;
+ memset ((void *) &fixed_hdr_struct, 0, sizeof fixed_hdr_struct);
+ var_hdr = &var_hdr_struct;
+ memset ((void *) &var_hdr_struct, 0, sizeof var_hdr_struct);
+ version_hdr = &version_hdr_struct;
+ memset ((void *) &version_hdr_struct, 0, sizeof version_hdr_struct);
+ copyright_hdr = &copyright_hdr_struct;
+ memset ((void *) &copyright_hdr_struct, 0, sizeof copyright_hdr_struct);
+ extended_hdr = &extended_hdr_struct;
+ memset ((void *) &extended_hdr_struct, 0, sizeof extended_hdr_struct);
+ check_procedure = NULL;
+ custom_file = NULL;
+ debug_info = FALSE;
+ exit_procedure = "_Stop";
+ export_symbols = NULL;
+ map_file = NULL;
+ full_map = FALSE;
+ help_file = NULL;
+ import_symbols = NULL;
+ message_file = NULL;
+ modules = NULL;
+ sharelib_file = NULL;
+ start_procedure = "_Prelude";
+ verbose = FALSE;
+ rpc_file = NULL;
+
+ parse_errors = 0;
+
+ /* Parse the header file (if there is one). */
+ if (header_file != NULL)
+ {
+ if (! nlmlex_file (header_file)
+ || yyparse () != 0
+ || parse_errors != 0)
+ exit (1);
+ }
+
+ if (input_files != NULL)
+ {
+ if (input_file != NULL)
+ {
+ fatal (_("input file named both on command line and with INPUT"));
+ }
+ if (input_files->next == NULL)
+ input_file = input_files->string;
+ else
+ input_file = link_inputs (input_files, ld_arg, map_file);
+ }
+ else if (input_file == NULL)
+ {
+ non_fatal (_("no input file"));
+ show_usage (stderr, 1);
+ }
+
+ inbfd = bfd_openr (input_file, input_format);
+ if (inbfd == NULL)
+ bfd_fatal (input_file);
+
+ if (! bfd_check_format_matches (inbfd, bfd_object, &matching))
+ {
+ bfd_nonfatal (input_file);
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ {
+ list_matching_formats (matching);
+ free (matching);
+ }
+ exit (1);
+ }
+
+ if (output_format == NULL)
+ output_format = select_output_format (bfd_get_arch (inbfd),
+ bfd_get_mach (inbfd),
+ bfd_big_endian (inbfd));
+
+ assert (output_format != NULL);
+
+ /* Use the output file named on the command line if it exists.
+ Otherwise use the file named in the OUTPUT statement. */
+ if (output_file == NULL)
+ {
+ non_fatal (_("no name for output file"));
+ show_usage (stderr, 1);
+ }
+
+ outbfd = bfd_openw (output_file, output_format);
+ if (outbfd == NULL)
+ bfd_fatal (output_file);
+ if (! bfd_set_format (outbfd, bfd_object))
+ bfd_fatal (output_file);
+
+ assert (bfd_get_flavour (outbfd) == bfd_target_nlm_flavour);
+
+ /* XXX: Should we accept the unknown bfd format here ? */
+ if (bfd_arch_get_compatible (inbfd, outbfd, TRUE) == NULL)
+ non_fatal (_("warning: input and output formats are not compatible"));
+
+ /* Move the values read from the command file into outbfd. */
+ *nlm_fixed_header (outbfd) = fixed_hdr_struct;
+ *nlm_variable_header (outbfd) = var_hdr_struct;
+ *nlm_version_header (outbfd) = version_hdr_struct;
+ *nlm_copyright_header (outbfd) = copyright_hdr_struct;
+ *nlm_extended_header (outbfd) = extended_hdr_struct;
+
+ /* Start copying the input BFD to the output BFD. */
+ if (! bfd_set_file_flags (outbfd, bfd_get_file_flags (inbfd)))
+ bfd_fatal (bfd_get_filename (outbfd));
+
+ symsize = bfd_get_symtab_upper_bound (inbfd);
+ if (symsize < 0)
+ bfd_fatal (input_file);
+ symbols = (asymbol **) xmalloc (symsize);
+ symcount = bfd_canonicalize_symtab (inbfd, symbols);
+ if (symcount < 0)
+ bfd_fatal (input_file);
+
+ /* Make sure we have a .bss section. */
+ bss_sec = bfd_get_section_by_name (outbfd, NLM_UNINITIALIZED_DATA_NAME);
+ if (bss_sec == NULL)
+ {
+ bss_sec = bfd_make_section_with_flags (outbfd,
+ NLM_UNINITIALIZED_DATA_NAME,
+ SEC_ALLOC);
+ if (bss_sec == NULL
+ || ! bfd_set_section_alignment (outbfd, bss_sec, 1))
+ bfd_fatal (_("make .bss section"));
+ }
+
+ /* We store the original section names in the .nlmsections section,
+ so that programs which understand it can resurrect the original
+ sections from the NLM. We will put a pointer to .nlmsections in
+ the NLM header area. */
+ secsec = bfd_make_section_with_flags (outbfd, ".nlmsections",
+ SEC_HAS_CONTENTS);
+ if (secsec == NULL)
+ bfd_fatal (_("make .nlmsections section"));
+
+#ifdef NLMCONV_POWERPC
+ /* For PowerPC NetWare we need to build stubs for calls to undefined
+ symbols. Because each stub requires an entry in the TOC section
+ which must be at the same location as other entries in the TOC
+ section, we must do this before determining where the TOC section
+ goes in setup_sections. */
+ if (bfd_get_arch (inbfd) == bfd_arch_powerpc)
+ powerpc_build_stubs (inbfd, outbfd, &symbols, &symcount);
+#endif
+
+ /* Set up the sections. */
+ bfd_map_over_sections (inbfd, setup_sections, (void *) outbfd);
+
+ text_sec = bfd_get_section_by_name (outbfd, NLM_CODE_NAME);
+
+ /* The .bss section immediately follows the .data section. */
+ data_sec = bfd_get_section_by_name (outbfd, NLM_INITIALIZED_DATA_NAME);
+ if (data_sec != NULL)
+ {
+ bfd_size_type add;
+
+ vma = bfd_get_section_size (data_sec);
+ align = 1 << bss_sec->alignment_power;
+ add = ((vma + align - 1) &~ (align - 1)) - vma;
+ vma += add;
+ if (! bfd_set_section_vma (outbfd, bss_sec, vma))
+ bfd_fatal (_("set .bss vma"));
+ if (add != 0)
+ {
+ bfd_size_type data_size;
+
+ data_size = bfd_get_section_size (data_sec);
+ if (! bfd_set_section_size (outbfd, data_sec, data_size + add))
+ bfd_fatal (_("set .data size"));
+ }
+ }
+
+ /* Adjust symbol information. */
+ inlead = bfd_get_symbol_leading_char (inbfd);
+ outlead = bfd_get_symbol_leading_char (outbfd);
+ gotstart = FALSE;
+ gotexit = FALSE;
+ gotcheck = FALSE;
+ newsymalloc = 10;
+ newsyms = (asymbol **) xmalloc (newsymalloc * sizeof (asymbol *));
+ newsymcount = 0;
+ endsym = NULL;
+ for (i = 0; i < symcount; i++)
+ {
+ asymbol *sym;
+
+ sym = symbols[i];
+
+ /* Add or remove a leading underscore. */
+ if (inlead != outlead)
+ {
+ if (inlead != '\0')
+ {
+ if (bfd_asymbol_name (sym)[0] == inlead)
+ {
+ if (outlead == '\0')
+ ++sym->name;
+ else
+ {
+ char *new_name;
+
+ new_name = xmalloc (strlen (bfd_asymbol_name (sym)) + 1);
+ new_name[0] = outlead;
+ strcpy (new_name + 1, bfd_asymbol_name (sym) + 1);
+ sym->name = new_name;
+ }
+ }
+ }
+ else
+ {
+ char *new_name;
+
+ new_name = xmalloc (strlen (bfd_asymbol_name (sym)) + 2);
+ new_name[0] = outlead;
+ strcpy (new_name + 1, bfd_asymbol_name (sym));
+ sym->name = new_name;
+ }
+ }
+
+ /* NLM's have an uninitialized data section, but they do not
+ have a common section in the Unix sense. Move all common
+ symbols into the .bss section, and mark them as exported. */
+ if (bfd_is_com_section (bfd_get_section (sym)))
+ {
+ bfd_vma size = sym->value;
+
+ sym->section = bss_sec;
+ sym->value = bfd_get_section_size (bss_sec);
+ size += sym->value;
+ align = 1 << bss_sec->alignment_power;
+ size = (size + align - 1) & ~(align - 1);
+ bfd_set_section_size (outbfd, bss_sec, size);
+ sym->flags |= BSF_EXPORT | BSF_GLOBAL;
+ }
+ else if (bfd_get_section (sym)->output_section != NULL)
+ {
+ /* Move the symbol into the output section. */
+ sym->value += bfd_get_section (sym)->output_offset;
+ sym->section = bfd_get_section (sym)->output_section;
+ /* This is no longer a section symbol. */
+ sym->flags &=~ BSF_SECTION_SYM;
+ }
+
+ /* Force _edata and _end to be defined. This would normally be
+ done by the linker, but the manipulation of the common
+ symbols will confuse it. */
+ if ((sym->flags & BSF_DEBUGGING) == 0
+ && bfd_asymbol_name (sym)[0] == '_'
+ && bfd_is_und_section (bfd_get_section (sym)))
+ {
+ if (strcmp (bfd_asymbol_name (sym), "_edata") == 0)
+ {
+ sym->section = bss_sec;
+ sym->value = 0;
+ }
+ if (strcmp (bfd_asymbol_name (sym), "_end") == 0)
+ {
+ sym->section = bss_sec;
+ endsym = sym;
+ }
+
+#ifdef NLMCONV_POWERPC
+ /* For PowerPC NetWare, we define __GOT0. This is the start
+ of the .got section. */
+ if (bfd_get_arch (inbfd) == bfd_arch_powerpc
+ && strcmp (bfd_asymbol_name (sym), "__GOT0") == 0)
+ {
+ asection *got_sec;
+
+ got_sec = bfd_get_section_by_name (inbfd, ".got");
+ assert (got_sec != (asection *) NULL);
+ sym->value = got_sec->output_offset;
+ sym->section = got_sec->output_section;
+ }
+#endif
+ }
+
+ /* If this is a global symbol, check the export list. */
+ if ((sym->flags & (BSF_EXPORT | BSF_GLOBAL)) != 0)
+ {
+ struct string_list *l;
+ int found_simple;
+
+ /* Unfortunately, a symbol can appear multiple times on the
+ export list, with and without prefixes. */
+ found_simple = 0;
+ for (l = export_symbols; l != NULL; l = l->next)
+ {
+ if (strcmp (l->string, bfd_asymbol_name (sym)) == 0)
+ found_simple = 1;
+ else
+ {
+ char *zbase;
+
+ zbase = strchr (l->string, '@');
+ if (zbase != NULL
+ && strcmp (zbase + 1, bfd_asymbol_name (sym)) == 0)
+ {
+ /* We must add a symbol with this prefix. */
+ if (newsymcount >= newsymalloc)
+ {
+ newsymalloc += 10;
+ newsyms = ((asymbol **)
+ xrealloc ((void *) newsyms,
+ (newsymalloc
+ * sizeof (asymbol *))));
+ }
+ newsyms[newsymcount] =
+ (asymbol *) xmalloc (sizeof (asymbol));
+ *newsyms[newsymcount] = *sym;
+ newsyms[newsymcount]->name = l->string;
+ ++newsymcount;
+ }
+ }
+ }
+ if (! found_simple)
+ {
+ /* The unmodified symbol is actually not exported at
+ all. */
+ sym->flags &=~ (BSF_GLOBAL | BSF_EXPORT);
+ sym->flags |= BSF_LOCAL;
+ }
+ }
+
+ /* If it's an undefined symbol, see if it's on the import list.
+ Change the prefix if necessary. */
+ if (bfd_is_und_section (bfd_get_section (sym)))
+ {
+ struct string_list *l;
+
+ for (l = import_symbols; l != NULL; l = l->next)
+ {
+ if (strcmp (l->string, bfd_asymbol_name (sym)) == 0)
+ break;
+ else
+ {
+ char *zbase;
+
+ zbase = strchr (l->string, '@');
+ if (zbase != NULL
+ && strcmp (zbase + 1, bfd_asymbol_name (sym)) == 0)
+ {
+ sym->name = l->string;
+ break;
+ }
+ }
+ }
+ if (l == NULL)
+ non_fatal (_("warning: symbol %s imported but not in import list"),
+ bfd_asymbol_name (sym));
+ }
+
+ /* See if it's one of the special named symbols. */
+ if ((sym->flags & BSF_DEBUGGING) == 0)
+ {
+ bfd_vma val;
+
+ /* FIXME: If these symbols are not in the .text section, we
+ add the .text section size to the value. This may not be
+ correct for all targets. I'm not sure how this should
+ really be handled. */
+ if (strcmp (bfd_asymbol_name (sym), start_procedure) == 0)
+ {
+ val = bfd_asymbol_value (sym);
+ if (bfd_get_section (sym) == data_sec
+ && text_sec != (asection *) NULL)
+ val += bfd_section_size (outbfd, text_sec);
+ if (! bfd_set_start_address (outbfd, val))
+ bfd_fatal (_("set start address"));
+ gotstart = TRUE;
+ }
+ if (strcmp (bfd_asymbol_name (sym), exit_procedure) == 0)
+ {
+ val = bfd_asymbol_value (sym);
+ if (bfd_get_section (sym) == data_sec
+ && text_sec != (asection *) NULL)
+ val += bfd_section_size (outbfd, text_sec);
+ nlm_fixed_header (outbfd)->exitProcedureOffset = val;
+ gotexit = TRUE;
+ }
+ if (check_procedure != NULL
+ && strcmp (bfd_asymbol_name (sym), check_procedure) == 0)
+ {
+ val = bfd_asymbol_value (sym);
+ if (bfd_get_section (sym) == data_sec
+ && text_sec != (asection *) NULL)
+ val += bfd_section_size (outbfd, text_sec);
+ nlm_fixed_header (outbfd)->checkUnloadProcedureOffset = val;
+ gotcheck = TRUE;
+ }
+ }
+ }
+
+ if (endsym != NULL)
+ {
+ endsym->value = bfd_get_section_size (bss_sec);
+
+ /* FIXME: If any relocs referring to _end use inplace addends,
+ then I think they need to be updated. This is handled by
+ i386_mangle_relocs. Is it needed for any other object
+ formats? */
+ }
+
+ if (newsymcount == 0)
+ outsyms = symbols;
+ else
+ {
+ outsyms = (asymbol **) xmalloc ((symcount + newsymcount + 1)
+ * sizeof (asymbol *));
+ memcpy (outsyms, symbols, symcount * sizeof (asymbol *));
+ memcpy (outsyms + symcount, newsyms, newsymcount * sizeof (asymbol *));
+ outsyms[symcount + newsymcount] = NULL;
+ }
+
+ bfd_set_symtab (outbfd, outsyms, symcount + newsymcount);
+
+ if (! gotstart)
+ non_fatal (_("warning: START procedure %s not defined"), start_procedure);
+ if (! gotexit)
+ non_fatal (_("warning: EXIT procedure %s not defined"), exit_procedure);
+ if (check_procedure != NULL && ! gotcheck)
+ non_fatal (_("warning: CHECK procedure %s not defined"), check_procedure);
+
+ /* Add additional sections required for the header information. */
+ if (custom_file != NULL)
+ {
+ custom_data = fopen (custom_file, "r");
+ if (custom_data == NULL
+ || fstat (fileno (custom_data), &st) < 0)
+ {
+ fprintf (stderr, "%s:%s: %s\n", program_name, custom_file,
+ strerror (errno));
+ custom_file = NULL;
+ }
+ else
+ {
+ custom_size = st.st_size;
+ custom_section = bfd_make_section_with_flags (outbfd, ".nlmcustom",
+ SEC_HAS_CONTENTS);
+ if (custom_section == NULL
+ || ! bfd_set_section_size (outbfd, custom_section, custom_size))
+ bfd_fatal (_("custom section"));
+ }
+ }
+ if (help_file != NULL)
+ {
+ help_data = fopen (help_file, "r");
+ if (help_data == NULL
+ || fstat (fileno (help_data), &st) < 0)
+ {
+ fprintf (stderr, "%s:%s: %s\n", program_name, help_file,
+ strerror (errno));
+ help_file = NULL;
+ }
+ else
+ {
+ help_size = st.st_size;
+ help_section = bfd_make_section_with_flags (outbfd, ".nlmhelp",
+ SEC_HAS_CONTENTS);
+ if (help_section == NULL
+ || ! bfd_set_section_size (outbfd, help_section, help_size))
+ bfd_fatal (_("help section"));
+ LITMEMCPY (nlm_extended_header (outbfd)->stamp, "MeSsAgEs");
+ }
+ }
+ if (message_file != NULL)
+ {
+ message_data = fopen (message_file, "r");
+ if (message_data == NULL
+ || fstat (fileno (message_data), &st) < 0)
+ {
+ fprintf (stderr, "%s:%s: %s\n", program_name, message_file,
+ strerror (errno));
+ message_file = NULL;
+ }
+ else
+ {
+ message_size = st.st_size;
+ message_section = bfd_make_section_with_flags (outbfd,
+ ".nlmmessages",
+ SEC_HAS_CONTENTS);
+ if (message_section == NULL
+ || ! bfd_set_section_size (outbfd, message_section, message_size))
+ bfd_fatal (_("message section"));
+ LITMEMCPY (nlm_extended_header (outbfd)->stamp, "MeSsAgEs");
+ }
+ }
+ if (modules != NULL)
+ {
+ struct string_list *l;
+
+ module_size = 0;
+ for (l = modules; l != NULL; l = l->next)
+ module_size += strlen (l->string) + 1;
+ module_section = bfd_make_section_with_flags (outbfd, ".nlmmodules",
+ SEC_HAS_CONTENTS);
+ if (module_section == NULL
+ || ! bfd_set_section_size (outbfd, module_section, module_size))
+ bfd_fatal (_("module section"));
+ }
+ if (rpc_file != NULL)
+ {
+ rpc_data = fopen (rpc_file, "r");
+ if (rpc_data == NULL
+ || fstat (fileno (rpc_data), &st) < 0)
+ {
+ fprintf (stderr, "%s:%s: %s\n", program_name, rpc_file,
+ strerror (errno));
+ rpc_file = NULL;
+ }
+ else
+ {
+ rpc_size = st.st_size;
+ rpc_section = bfd_make_section_with_flags (outbfd, ".nlmrpc",
+ SEC_HAS_CONTENTS);
+ if (rpc_section == NULL
+ || ! bfd_set_section_size (outbfd, rpc_section, rpc_size))
+ bfd_fatal (_("rpc section"));
+ LITMEMCPY (nlm_extended_header (outbfd)->stamp, "MeSsAgEs");
+ }
+ }
+ if (sharelib_file != NULL)
+ {
+ sharedbfd = bfd_openr (sharelib_file, output_format);
+ if (sharedbfd == NULL
+ || ! bfd_check_format (sharedbfd, bfd_object))
+ {
+ fprintf (stderr, "%s:%s: %s\n", program_name, sharelib_file,
+ bfd_errmsg (bfd_get_error ()));
+ sharelib_file = NULL;
+ }
+ else
+ {
+ sharedhdr = *nlm_fixed_header (sharedbfd);
+ bfd_close (sharedbfd);
+ shared_data = fopen (sharelib_file, "r");
+ if (shared_data == NULL
+ || (fstat (fileno (shared_data), &st) < 0))
+ {
+ fprintf (stderr, "%s:%s: %s\n", program_name, sharelib_file,
+ strerror (errno));
+ sharelib_file = NULL;
+ }
+ else
+ {
+ /* If we were clever, we could just copy out the
+ sections of the shared library which we actually
+ need. However, we would have to figure out the sizes
+ of the external and public information, and that can
+ not be done without reading through them. */
+ if (sharedhdr.uninitializedDataSize > 0)
+ {
+ /* There is no place to record this information. */
+ non_fatal (_("%s: warning: shared libraries can not have uninitialized data"),
+ sharelib_file);
+ }
+ shared_offset = st.st_size;
+ if (shared_offset > (size_t) sharedhdr.codeImageOffset)
+ shared_offset = sharedhdr.codeImageOffset;
+ if (shared_offset > (size_t) sharedhdr.dataImageOffset)
+ shared_offset = sharedhdr.dataImageOffset;
+ if (shared_offset > (size_t) sharedhdr.relocationFixupOffset)
+ shared_offset = sharedhdr.relocationFixupOffset;
+ if (shared_offset > (size_t) sharedhdr.externalReferencesOffset)
+ shared_offset = sharedhdr.externalReferencesOffset;
+ if (shared_offset > (size_t) sharedhdr.publicsOffset)
+ shared_offset = sharedhdr.publicsOffset;
+ shared_size = st.st_size - shared_offset;
+ shared_section = bfd_make_section_with_flags (outbfd,
+ ".nlmshared",
+ SEC_HAS_CONTENTS);
+ if (shared_section == NULL
+ || ! bfd_set_section_size (outbfd, shared_section,
+ shared_size))
+ bfd_fatal (_("shared section"));
+ LITMEMCPY (nlm_extended_header (outbfd)->stamp, "MeSsAgEs");
+ }
+ }
+ }
+
+ /* Check whether a version was given. */
+ if (!CONST_STRNEQ (version_hdr->stamp, "VeRsIoN#"))
+ non_fatal (_("warning: No version number given"));
+
+ /* At least for now, always create an extended header, because that
+ is what NLMLINK does. */
+ LITMEMCPY (nlm_extended_header (outbfd)->stamp, "MeSsAgEs");
+
+ LITMEMCPY (nlm_cygnus_ext_header (outbfd)->stamp, "CyGnUsEx");
+
+ /* If the date was not given, force it in. */
+ if (nlm_version_header (outbfd)->month == 0
+ && nlm_version_header (outbfd)->day == 0
+ && nlm_version_header (outbfd)->year == 0)
+ {
+ time_t now;
+ struct tm *ptm;
+
+ time (&now);
+ ptm = localtime (&now);
+ nlm_version_header (outbfd)->month = ptm->tm_mon + 1;
+ nlm_version_header (outbfd)->day = ptm->tm_mday;
+ nlm_version_header (outbfd)->year = ptm->tm_year + 1900;
+ LITMEMCPY (version_hdr->stamp, "VeRsIoN#");
+ }
+
+#ifdef NLMCONV_POWERPC
+ /* Resolve the stubs we build for PowerPC NetWare. */
+ if (bfd_get_arch (inbfd) == bfd_arch_powerpc)
+ powerpc_resolve_stubs (inbfd, outbfd);
+#endif
+
+ /* Copy over the sections. */
+ bfd_map_over_sections (inbfd, copy_sections, (void *) outbfd);
+
+ /* Finish up the header information. */
+ if (custom_file != NULL)
+ {
+ void *data;
+
+ data = xmalloc (custom_size);
+ if (fread (data, 1, custom_size, custom_data) != custom_size)
+ non_fatal (_("%s: read: %s"), custom_file, strerror (errno));
+ else
+ {
+ if (! bfd_set_section_contents (outbfd, custom_section, data,
+ (file_ptr) 0, custom_size))
+ bfd_fatal (_("custom section"));
+ nlm_fixed_header (outbfd)->customDataOffset =
+ custom_section->filepos;
+ nlm_fixed_header (outbfd)->customDataSize = custom_size;
+ }
+ free (data);
+ }
+ if (! debug_info)
+ {
+ /* As a special hack, the backend recognizes a debugInfoOffset
+ of -1 to mean that it should not output any debugging
+ information. This can not be handling by fiddling with the
+ symbol table because exported symbols appear in both the
+ export information and the debugging information. */
+ nlm_fixed_header (outbfd)->debugInfoOffset = (file_ptr) -1;
+ }
+ if (full_map)
+ non_fatal (_("warning: FULLMAP is not supported; try ld -M"));
+ if (help_file != NULL)
+ {
+ void *data;
+
+ data = xmalloc (help_size);
+ if (fread (data, 1, help_size, help_data) != help_size)
+ non_fatal (_("%s: read: %s"), help_file, strerror (errno));
+ else
+ {
+ if (! bfd_set_section_contents (outbfd, help_section, data,
+ (file_ptr) 0, help_size))
+ bfd_fatal (_("help section"));
+ nlm_extended_header (outbfd)->helpFileOffset =
+ help_section->filepos;
+ nlm_extended_header (outbfd)->helpFileLength = help_size;
+ }
+ free (data);
+ }
+ if (message_file != NULL)
+ {
+ void *data;
+
+ data = xmalloc (message_size);
+ if (fread (data, 1, message_size, message_data) != message_size)
+ non_fatal (_("%s: read: %s"), message_file, strerror (errno));
+ else
+ {
+ if (! bfd_set_section_contents (outbfd, message_section, data,
+ (file_ptr) 0, message_size))
+ bfd_fatal (_("message section"));
+ nlm_extended_header (outbfd)->messageFileOffset =
+ message_section->filepos;
+ nlm_extended_header (outbfd)->messageFileLength = message_size;
+
+ /* FIXME: Are these offsets correct on all platforms? Are
+ they 32 bits on all platforms? What endianness? */
+ nlm_extended_header (outbfd)->languageID =
+ bfd_h_get_32 (outbfd, (bfd_byte *) data + 106);
+ nlm_extended_header (outbfd)->messageCount =
+ bfd_h_get_32 (outbfd, (bfd_byte *) data + 110);
+ }
+ free (data);
+ }
+ if (modules != NULL)
+ {
+ void *data;
+ unsigned char *set;
+ struct string_list *l;
+ bfd_size_type c;
+
+ data = xmalloc (module_size);
+ c = 0;
+ set = (unsigned char *) data;
+ for (l = modules; l != NULL; l = l->next)
+ {
+ *set = strlen (l->string);
+ strncpy ((char *) set + 1, l->string, *set);
+ set += *set + 1;
+ ++c;
+ }
+ if (! bfd_set_section_contents (outbfd, module_section, data,
+ (file_ptr) 0, module_size))
+ bfd_fatal (_("module section"));
+ nlm_fixed_header (outbfd)->moduleDependencyOffset =
+ module_section->filepos;
+ nlm_fixed_header (outbfd)->numberOfModuleDependencies = c;
+ }
+ if (rpc_file != NULL)
+ {
+ void *data;
+
+ data = xmalloc (rpc_size);
+ if (fread (data, 1, rpc_size, rpc_data) != rpc_size)
+ non_fatal (_("%s: read: %s"), rpc_file, strerror (errno));
+ else
+ {
+ if (! bfd_set_section_contents (outbfd, rpc_section, data,
+ (file_ptr) 0, rpc_size))
+ bfd_fatal (_("rpc section"));
+ nlm_extended_header (outbfd)->RPCDataOffset =
+ rpc_section->filepos;
+ nlm_extended_header (outbfd)->RPCDataLength = rpc_size;
+ }
+ free (data);
+ }
+ if (sharelib_file != NULL)
+ {
+ void *data;
+
+ data = xmalloc (shared_size);
+ if (fseek (shared_data, shared_offset, SEEK_SET) != 0
+ || fread (data, 1, shared_size, shared_data) != shared_size)
+ non_fatal (_("%s: read: %s"), sharelib_file, strerror (errno));
+ else
+ {
+ if (! bfd_set_section_contents (outbfd, shared_section, data,
+ (file_ptr) 0, shared_size))
+ bfd_fatal (_("shared section"));
+ }
+ nlm_extended_header (outbfd)->sharedCodeOffset =
+ sharedhdr.codeImageOffset - shared_offset + shared_section->filepos;
+ nlm_extended_header (outbfd)->sharedCodeLength =
+ sharedhdr.codeImageSize;
+ nlm_extended_header (outbfd)->sharedDataOffset =
+ sharedhdr.dataImageOffset - shared_offset + shared_section->filepos;
+ nlm_extended_header (outbfd)->sharedDataLength =
+ sharedhdr.dataImageSize;
+ nlm_extended_header (outbfd)->sharedRelocationFixupOffset =
+ (sharedhdr.relocationFixupOffset
+ - shared_offset
+ + shared_section->filepos);
+ nlm_extended_header (outbfd)->sharedRelocationFixupCount =
+ sharedhdr.numberOfRelocationFixups;
+ nlm_extended_header (outbfd)->sharedExternalReferenceOffset =
+ (sharedhdr.externalReferencesOffset
+ - shared_offset
+ + shared_section->filepos);
+ nlm_extended_header (outbfd)->sharedExternalReferenceCount =
+ sharedhdr.numberOfExternalReferences;
+ nlm_extended_header (outbfd)->sharedPublicsOffset =
+ sharedhdr.publicsOffset - shared_offset + shared_section->filepos;
+ nlm_extended_header (outbfd)->sharedPublicsCount =
+ sharedhdr.numberOfPublics;
+ nlm_extended_header (outbfd)->sharedDebugRecordOffset =
+ sharedhdr.debugInfoOffset - shared_offset + shared_section->filepos;
+ nlm_extended_header (outbfd)->sharedDebugRecordCount =
+ sharedhdr.numberOfDebugRecords;
+ nlm_extended_header (outbfd)->SharedInitializationOffset =
+ sharedhdr.codeStartOffset;
+ nlm_extended_header (outbfd)->SharedExitProcedureOffset =
+ sharedhdr.exitProcedureOffset;
+ free (data);
+ }
+
+ {
+ const int max_len = NLM_MODULE_NAME_SIZE - 2;
+ const char * filename = lbasename (output_file);
+
+ len = strlen (filename);
+ if (len > max_len)
+ len = max_len;
+ nlm_fixed_header (outbfd)->moduleName[0] = len;
+
+ strncpy (nlm_fixed_header (outbfd)->moduleName + 1, filename, max_len);
+ nlm_fixed_header (outbfd)->moduleName[max_len + 1] = '\0';
+
+ for (modname = nlm_fixed_header (outbfd)->moduleName;
+ *modname != '\0';
+ modname++)
+ *modname = TOUPPER (*modname);
+ }
+
+ strncpy (nlm_variable_header (outbfd)->oldThreadName, " LONG",
+ NLM_OLD_THREAD_NAME_LENGTH);
+
+ nlm_cygnus_ext_header (outbfd)->offset = secsec->filepos;
+ nlm_cygnus_ext_header (outbfd)->length = bfd_section_size (outbfd, secsec);
+
+ if (! bfd_close (outbfd))
+ bfd_fatal (output_file);
+ if (! bfd_close (inbfd))
+ bfd_fatal (input_file);
+
+ if (unlink_on_exit != NULL)
+ unlink (unlink_on_exit);
+
+ return 0;
+}
+
+
+/* Show a usage message and exit. */
+
+static void
+show_usage (FILE *file, int status)
+{
+ fprintf (file, _("Usage: %s [option(s)] [in-file [out-file]]\n"), program_name);
+ fprintf (file, _(" Convert an object file into a NetWare Loadable Module\n"));
+ fprintf (file, _(" The options are:\n\
+ -I --input-target=<bfdname> Set the input binary file format\n\
+ -O --output-target=<bfdname> Set the output binary file format\n\
+ -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\
+"));
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (file, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+ exit (status);
+}
+
+/* Select the output format based on the input architecture, machine,
+ and endianness. This chooses the appropriate NLM target. */
+
+static const char *
+select_output_format (enum bfd_architecture arch, unsigned long mach,
+ bfd_boolean bigendian ATTRIBUTE_UNUSED)
+{
+ switch (arch)
+ {
+#ifdef NLMCONV_I386
+ case bfd_arch_i386:
+ return "nlm32-i386";
+#endif
+#ifdef NLMCONV_SPARC
+ case bfd_arch_sparc:
+ return "nlm32-sparc";
+#endif
+#ifdef NLMCONV_ALPHA
+ case bfd_arch_alpha:
+ return "nlm32-alpha";
+#endif
+#ifdef NLMCONV_POWERPC
+ case bfd_arch_powerpc:
+ return "nlm32-powerpc";
+#endif
+ default:
+ fatal (_("support not compiled in for %s"),
+ bfd_printable_arch_mach (arch, mach));
+ }
+ /*NOTREACHED*/
+}
+
+/* The BFD sections are copied in two passes. This function selects
+ the output section for each input section, and sets up the section
+ name, size, etc. */
+
+static void
+setup_sections (bfd *inbfd ATTRIBUTE_UNUSED, asection *insec, void *data_ptr)
+{
+ bfd *outbfd = (bfd *) data_ptr;
+ flagword f;
+ const char *outname;
+ asection *outsec;
+ bfd_vma offset;
+ bfd_size_type align;
+ bfd_size_type add;
+ bfd_size_type secsecsize;
+
+ f = bfd_get_section_flags (inbfd, insec);
+ if (f & SEC_CODE)
+ outname = NLM_CODE_NAME;
+ else if ((f & SEC_LOAD) && (f & SEC_HAS_CONTENTS))
+ outname = NLM_INITIALIZED_DATA_NAME;
+ else if (f & SEC_ALLOC)
+ outname = NLM_UNINITIALIZED_DATA_NAME;
+ else
+ outname = bfd_section_name (inbfd, insec);
+
+ outsec = bfd_get_section_by_name (outbfd, outname);
+ if (outsec == NULL)
+ {
+ outsec = bfd_make_section (outbfd, outname);
+ if (outsec == NULL)
+ bfd_fatal (_("make section"));
+ }
+
+ insec->output_section = outsec;
+
+ offset = bfd_section_size (outbfd, outsec);
+ align = 1 << bfd_section_alignment (inbfd, insec);
+ add = ((offset + align - 1) &~ (align - 1)) - offset;
+ insec->output_offset = offset + add;
+
+ if (! bfd_set_section_size (outbfd, outsec,
+ (bfd_section_size (outbfd, outsec)
+ + bfd_section_size (inbfd, insec)
+ + add)))
+ bfd_fatal (_("set section size"));
+
+ if ((bfd_section_alignment (inbfd, insec)
+ > bfd_section_alignment (outbfd, outsec))
+ && ! bfd_set_section_alignment (outbfd, outsec,
+ bfd_section_alignment (inbfd, insec)))
+ bfd_fatal (_("set section alignment"));
+
+ if (! bfd_set_section_flags (outbfd, outsec,
+ f | bfd_get_section_flags (outbfd, outsec)))
+ bfd_fatal (_("set section flags"));
+
+ bfd_set_reloc (outbfd, outsec, (arelent **) NULL, 0);
+
+ /* For each input section we allocate space for an entry in
+ .nlmsections. */
+ secsecsize = bfd_section_size (outbfd, secsec);
+ secsecsize += strlen (bfd_section_name (inbfd, insec)) + 1;
+ secsecsize = (secsecsize + 3) &~ 3;
+ secsecsize += 8;
+ if (! bfd_set_section_size (outbfd, secsec, secsecsize))
+ bfd_fatal (_("set .nlmsections size"));
+}
+
+/* Copy the section contents. */
+
+static void
+copy_sections (bfd *inbfd, asection *insec, void *data_ptr)
+{
+ static bfd_size_type secsecoff = 0;
+ bfd *outbfd = (bfd *) data_ptr;
+ const char *inname;
+ asection *outsec;
+ bfd_size_type size;
+ void *contents;
+ long reloc_size;
+ bfd_byte buf[4];
+ bfd_size_type add;
+
+ inname = bfd_section_name (inbfd, insec);
+
+ outsec = insec->output_section;
+ assert (outsec != NULL);
+
+ size = bfd_get_section_size (insec);
+
+ if ((bfd_get_section_flags (inbfd, insec) & SEC_HAS_CONTENTS) == 0)
+ contents = NULL;
+ else
+ {
+ contents = xmalloc (size);
+ if (! bfd_get_section_contents (inbfd, insec, contents,
+ (file_ptr) 0, size))
+ bfd_fatal (bfd_get_filename (inbfd));
+ }
+
+ reloc_size = bfd_get_reloc_upper_bound (inbfd, insec);
+ if (reloc_size < 0)
+ bfd_fatal (bfd_get_filename (inbfd));
+ if (reloc_size != 0)
+ {
+ arelent **relocs;
+ long reloc_count;
+
+ relocs = (arelent **) xmalloc (reloc_size);
+ reloc_count = bfd_canonicalize_reloc (inbfd, insec, relocs, symbols);
+ if (reloc_count < 0)
+ bfd_fatal (bfd_get_filename (inbfd));
+ mangle_relocs (outbfd, insec, &relocs, &reloc_count, (char *) contents,
+ size);
+
+ /* FIXME: refers to internal BFD fields. */
+ if (outsec->orelocation != (arelent **) NULL)
+ {
+ bfd_size_type total_count;
+ arelent **combined;
+
+ total_count = reloc_count + outsec->reloc_count;
+ combined = (arelent **) xmalloc (total_count * sizeof (arelent *));
+ memcpy (combined, outsec->orelocation,
+ outsec->reloc_count * sizeof (arelent *));
+ memcpy (combined + outsec->reloc_count, relocs,
+ (size_t) (reloc_count * sizeof (arelent *)));
+ free (outsec->orelocation);
+ reloc_count = total_count;
+ relocs = combined;
+ }
+
+ bfd_set_reloc (outbfd, outsec, relocs, reloc_count);
+ }
+
+ if (contents != NULL)
+ {
+ if (! bfd_set_section_contents (outbfd, outsec, contents,
+ insec->output_offset, size))
+ bfd_fatal (bfd_get_filename (outbfd));
+ free (contents);
+ }
+
+ /* Add this section to .nlmsections. */
+ if (! bfd_set_section_contents (outbfd, secsec, (void *) inname, secsecoff,
+ strlen (inname) + 1))
+ bfd_fatal (_("set .nlmsection contents"));
+ secsecoff += strlen (inname) + 1;
+
+ add = ((secsecoff + 3) &~ 3) - secsecoff;
+ if (add != 0)
+ {
+ bfd_h_put_32 (outbfd, (bfd_vma) 0, buf);
+ if (! bfd_set_section_contents (outbfd, secsec, buf, secsecoff, add))
+ bfd_fatal (_("set .nlmsection contents"));
+ secsecoff += add;
+ }
+
+ if (contents != NULL)
+ bfd_h_put_32 (outbfd, (bfd_vma) outsec->filepos, buf);
+ else
+ bfd_h_put_32 (outbfd, (bfd_vma) 0, buf);
+ if (! bfd_set_section_contents (outbfd, secsec, buf, secsecoff, 4))
+ bfd_fatal (_("set .nlmsection contents"));
+ secsecoff += 4;
+
+ bfd_h_put_32 (outbfd, (bfd_vma) size, buf);
+ if (! bfd_set_section_contents (outbfd, secsec, buf, secsecoff, 4))
+ bfd_fatal (_("set .nlmsection contents"));
+ secsecoff += 4;
+}
+
+/* Some, perhaps all, NetWare targets require changing the relocs used
+ by the input formats. */
+
+static void
+mangle_relocs (bfd *outbfd, asection *insec, arelent ***relocs_ptr,
+ long *reloc_count_ptr, char *contents,
+ bfd_size_type contents_size)
+{
+ switch (bfd_get_arch (outbfd))
+ {
+#ifdef NLMCONV_I386
+ case bfd_arch_i386:
+ i386_mangle_relocs (outbfd, insec, relocs_ptr, reloc_count_ptr,
+ contents, contents_size);
+ break;
+#endif
+#ifdef NLMCONV_ALPHA
+ case bfd_arch_alpha:
+ alpha_mangle_relocs (outbfd, insec, relocs_ptr, reloc_count_ptr,
+ contents, contents_size);
+ break;
+#endif
+#ifdef NLMCONV_POWERPC
+ case bfd_arch_powerpc:
+ powerpc_mangle_relocs (outbfd, insec, relocs_ptr, reloc_count_ptr,
+ contents, contents_size);
+ break;
+#endif
+ default:
+ default_mangle_relocs (outbfd, insec, relocs_ptr, reloc_count_ptr,
+ contents, contents_size);
+ break;
+ }
+}
+
+/* By default all we need to do for relocs is change the address by
+ the output_offset. */
+
+static void
+default_mangle_relocs (bfd *outbfd ATTRIBUTE_UNUSED, asection *insec,
+ arelent ***relocs_ptr, long *reloc_count_ptr,
+ char *contents ATTRIBUTE_UNUSED,
+ bfd_size_type contents_size ATTRIBUTE_UNUSED)
+{
+ if (insec->output_offset != 0)
+ {
+ long reloc_count;
+ arelent **relocs;
+ long i;
+
+ reloc_count = *reloc_count_ptr;
+ relocs = *relocs_ptr;
+ for (i = 0; i < reloc_count; i++, relocs++)
+ (*relocs)->address += insec->output_offset;
+ }
+}
+
+#ifdef NLMCONV_I386
+
+/* NetWare on the i386 supports a restricted set of relocs, which are
+ different from those used on other i386 targets. This routine
+ converts the relocs. It is, obviously, very target dependent. At
+ the moment, the nlm32-i386 backend performs similar translations;
+ however, it is more reliable and efficient to do them here. */
+
+static reloc_howto_type nlm_i386_pcrel_howto =
+ HOWTO (1, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ TRUE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ 0, /* special_function */
+ "DISP32", /* name */
+ TRUE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ TRUE); /* pcrel_offset */
+
+static void
+i386_mangle_relocs (bfd *outbfd, asection *insec, arelent ***relocs_ptr,
+ long *reloc_count_ptr, char *contents,
+ bfd_size_type contents_size)
+{
+ long reloc_count, i;
+ arelent **relocs;
+
+ reloc_count = *reloc_count_ptr;
+ relocs = *relocs_ptr;
+ for (i = 0; i < reloc_count; i++)
+ {
+ arelent *rel;
+ asymbol *sym;
+ bfd_size_type address;
+ bfd_vma addend;
+
+ rel = *relocs++;
+ sym = *rel->sym_ptr_ptr;
+
+ /* We're moving the relocs from the input section to the output
+ section, so we must adjust the address accordingly. */
+ address = rel->address;
+ rel->address += insec->output_offset;
+
+ /* Note that no serious harm will ensue if we fail to change a
+ reloc. The backend will fail when writing out the reloc. */
+
+ /* Make sure this reloc is within the data we have. We use only
+ 4 byte relocs here, so we insist on having 4 bytes. */
+ if (address + 4 > contents_size)
+ continue;
+
+ /* A PC relative reloc entirely within a single section is
+ completely unnecessary. This can be generated by ld -r. */
+ if (sym == insec->symbol
+ && rel->howto != NULL
+ && rel->howto->pc_relative
+ && ! rel->howto->pcrel_offset)
+ {
+ --*reloc_count_ptr;
+ --relocs;
+ memmove (relocs, relocs + 1,
+ (size_t) ((reloc_count - i) * sizeof (arelent *)));
+ continue;
+ }
+
+ /* Get the amount the relocation will add in. */
+ addend = rel->addend + sym->value;
+
+ /* NetWare doesn't support PC relative relocs against defined
+ symbols, so we have to eliminate them by doing the relocation
+ now. We can only do this if the reloc is within a single
+ section. */
+ if (rel->howto != NULL
+ && rel->howto->pc_relative
+ && bfd_get_section (sym) == insec->output_section)
+ {
+ bfd_vma val;
+
+ if (rel->howto->pcrel_offset)
+ addend -= address;
+
+ val = bfd_get_32 (outbfd, (bfd_byte *) contents + address);
+ val += addend;
+ bfd_put_32 (outbfd, val, (bfd_byte *) contents + address);
+
+ --*reloc_count_ptr;
+ --relocs;
+ memmove (relocs, relocs + 1,
+ (size_t) ((reloc_count - i) * sizeof (arelent *)));
+ continue;
+ }
+
+ /* NetWare doesn't support reloc addends, so we get rid of them
+ here by simply adding them into the object data. We handle
+ the symbol value, if any, the same way. */
+ if (addend != 0
+ && rel->howto != NULL
+ && rel->howto->rightshift == 0
+ && rel->howto->size == 2
+ && rel->howto->bitsize == 32
+ && rel->howto->bitpos == 0
+ && rel->howto->src_mask == 0xffffffff
+ && rel->howto->dst_mask == 0xffffffff)
+ {
+ bfd_vma val;
+
+ val = bfd_get_32 (outbfd, (bfd_byte *) contents + address);
+ val += addend;
+ bfd_put_32 (outbfd, val, (bfd_byte *) contents + address);
+
+ /* Adjust the reloc for the changes we just made. */
+ rel->addend = 0;
+ if (! bfd_is_und_section (bfd_get_section (sym)))
+ rel->sym_ptr_ptr = bfd_get_section (sym)->symbol_ptr_ptr;
+ }
+
+ /* NetWare uses a reloc with pcrel_offset set. We adjust
+ pc_relative relocs accordingly. We are going to change the
+ howto field, so we can only do this if the current one is
+ compatible. We should check that special_function is NULL
+ here, but at the moment coff-i386 uses a special_function
+ which does not affect what we are doing here. */
+ if (rel->howto != NULL
+ && rel->howto->pc_relative
+ && ! rel->howto->pcrel_offset
+ && rel->howto->rightshift == 0
+ && rel->howto->size == 2
+ && rel->howto->bitsize == 32
+ && rel->howto->bitpos == 0
+ && rel->howto->src_mask == 0xffffffff
+ && rel->howto->dst_mask == 0xffffffff)
+ {
+ bfd_vma val;
+
+ /* When pcrel_offset is not set, it means that the negative
+ of the address of the memory location is stored in the
+ memory location. We must add it back in. */
+ val = bfd_get_32 (outbfd, (bfd_byte *) contents + address);
+ val += address;
+ bfd_put_32 (outbfd, val, (bfd_byte *) contents + address);
+
+ /* We must change to a new howto. */
+ rel->howto = &nlm_i386_pcrel_howto;
+ }
+ }
+}
+
+#endif /* NLMCONV_I386 */
+
+#ifdef NLMCONV_ALPHA
+
+/* On the Alpha the first reloc for every section must be a special
+ relocs which hold the GP address. Also, the first reloc in the
+ file must be a special reloc which holds the address of the .lita
+ section. */
+
+static reloc_howto_type nlm32_alpha_nw_howto =
+ HOWTO (ALPHA_R_NW_RELOC, /* type */
+ 0, /* rightshift */
+ 0, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ 0, /* special_function */
+ "NW_RELOC", /* name */
+ FALSE, /* partial_inplace */
+ 0, /* src_mask */
+ 0, /* dst_mask */
+ FALSE); /* pcrel_offset */
+
+static void
+alpha_mangle_relocs (bfd *outbfd, asection *insec,
+ arelent ***relocs_ptr, long *reloc_count_ptr,
+ char *contents ATTRIBUTE_UNUSED,
+ bfd_size_type contents_size ATTRIBUTE_UNUSED)
+{
+ long old_reloc_count;
+ arelent **old_relocs;
+ arelent **relocs;
+
+ old_reloc_count = *reloc_count_ptr;
+ old_relocs = *relocs_ptr;
+ relocs = (arelent **) xmalloc ((old_reloc_count + 3) * sizeof (arelent *));
+ *relocs_ptr = relocs;
+
+ if (nlm_alpha_backend_data (outbfd)->lita_address == 0)
+ {
+ bfd *inbfd;
+ asection *lita_section;
+
+ inbfd = insec->owner;
+ lita_section = bfd_get_section_by_name (inbfd, _LITA);
+ if (lita_section != (asection *) NULL)
+ {
+ nlm_alpha_backend_data (outbfd)->lita_address =
+ bfd_get_section_vma (inbfd, lita_section);
+ nlm_alpha_backend_data (outbfd)->lita_size =
+ bfd_section_size (inbfd, lita_section);
+ }
+ else
+ {
+ /* Avoid outputting this reloc again. */
+ nlm_alpha_backend_data (outbfd)->lita_address = 4;
+ }
+
+ *relocs = (arelent *) xmalloc (sizeof (arelent));
+ (*relocs)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ (*relocs)->address = nlm_alpha_backend_data (outbfd)->lita_address;
+ (*relocs)->addend = nlm_alpha_backend_data (outbfd)->lita_size + 1;
+ (*relocs)->howto = &nlm32_alpha_nw_howto;
+ ++relocs;
+ ++(*reloc_count_ptr);
+ }
+
+ /* Get the GP value from bfd. */
+ if (nlm_alpha_backend_data (outbfd)->gp == 0)
+ nlm_alpha_backend_data (outbfd)->gp =
+ bfd_ecoff_get_gp_value (insec->owner);
+
+ *relocs = (arelent *) xmalloc (sizeof (arelent));
+ (*relocs)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+ (*relocs)->address = nlm_alpha_backend_data (outbfd)->gp;
+ (*relocs)->addend = 0;
+ (*relocs)->howto = &nlm32_alpha_nw_howto;
+ ++relocs;
+ ++(*reloc_count_ptr);
+
+ memcpy (relocs, old_relocs, (size_t) old_reloc_count * sizeof (arelent *));
+ relocs[old_reloc_count] = (arelent *) NULL;
+
+ free (old_relocs);
+
+ if (insec->output_offset != 0)
+ {
+ bfd_size_type i;
+
+ for (i = 0; i < (bfd_size_type) old_reloc_count; i++, relocs++)
+ (*relocs)->address += insec->output_offset;
+ }
+}
+
+#endif /* NLMCONV_ALPHA */
+
+#ifdef NLMCONV_POWERPC
+
+/* We keep a linked list of stubs which we must build. Because BFD
+ requires us to know the sizes of all sections before we can set the
+ contents of any, we must figure out which stubs we want to build
+ before we can actually build any of them. */
+
+struct powerpc_stub
+{
+ /* Next stub in linked list. */
+ struct powerpc_stub *next;
+
+ /* Symbol whose value is the start of the stub. This is a symbol
+ whose name begins with `.'. */
+ asymbol *start;
+
+ /* Symbol we are going to create a reloc against. This is a symbol
+ with the same name as START but without the leading `.'. */
+ asymbol *reloc;
+
+ /* The TOC index for this stub. This is the index into the TOC
+ section at which the reloc is created. */
+ unsigned int toc_index;
+};
+
+/* The linked list of stubs. */
+
+static struct powerpc_stub *powerpc_stubs;
+
+/* This is what a stub looks like. The first instruction will get
+ adjusted with the correct TOC index. */
+
+static unsigned long powerpc_stub_insns[] =
+{
+ 0x81820000, /* lwz r12,0(r2) */
+ 0x90410014, /* stw r2,20(r1) */
+ 0x800c0000, /* lwz r0,0(r12) */
+ 0x804c0004, /* lwz r2,r(r12) */
+ 0x7c0903a6, /* mtctr r0 */
+ 0x4e800420, /* bctr */
+ 0, /* Traceback table. */
+ 0xc8000,
+ 0
+};
+
+#define POWERPC_STUB_INSN_COUNT \
+ (sizeof powerpc_stub_insns / sizeof powerpc_stub_insns[0])
+
+#define POWERPC_STUB_SIZE (4 * POWERPC_STUB_INSN_COUNT)
+
+/* Each stub uses a four byte TOC entry. */
+#define POWERPC_STUB_TOC_ENTRY_SIZE (4)
+
+/* The original size of the .got section. */
+static bfd_size_type powerpc_initial_got_size;
+
+/* Look for all undefined symbols beginning with `.', and prepare to
+ build a stub for each one. */
+
+static void
+powerpc_build_stubs (bfd *inbfd, bfd *outbfd ATTRIBUTE_UNUSED,
+ asymbol ***symbols_ptr, long *symcount_ptr)
+{
+ asection *stub_sec;
+ asection *got_sec;
+ unsigned int got_base;
+ long i;
+ long symcount;
+ long stubcount;
+
+ /* Make a section to hold stubs. We don't set SEC_HAS_CONTENTS for
+ the section to prevent copy_sections from reading from it. */
+ stub_sec = bfd_make_section_with_flags (inbfd, ".stubs",
+ (SEC_CODE
+ | SEC_RELOC
+ | SEC_ALLOC
+ | SEC_LOAD));
+ if (stub_sec == (asection *) NULL
+ || ! bfd_set_section_alignment (inbfd, stub_sec, 2))
+ bfd_fatal (".stubs");
+
+ /* Get the TOC section, which is named .got. */
+ got_sec = bfd_get_section_by_name (inbfd, ".got");
+ if (got_sec == (asection *) NULL)
+ {
+ got_sec = bfd_make_section_with_flags (inbfd, ".got",
+ (SEC_DATA
+ | SEC_RELOC
+ | SEC_ALLOC
+ | SEC_LOAD
+ | SEC_HAS_CONTENTS));
+ if (got_sec == (asection *) NULL
+ || ! bfd_set_section_alignment (inbfd, got_sec, 2))
+ bfd_fatal (".got");
+ }
+
+ powerpc_initial_got_size = bfd_section_size (inbfd, got_sec);
+ got_base = powerpc_initial_got_size;
+ got_base = (got_base + 3) &~ 3;
+
+ stubcount = 0;
+
+ symcount = *symcount_ptr;
+ for (i = 0; i < symcount; i++)
+ {
+ asymbol *sym;
+ asymbol *newsym;
+ char *newname;
+ struct powerpc_stub *item;
+
+ sym = (*symbols_ptr)[i];
+
+ /* We must make a stub for every undefined symbol whose name
+ starts with '.'. */
+ if (bfd_asymbol_name (sym)[0] != '.'
+ || ! bfd_is_und_section (bfd_get_section (sym)))
+ continue;
+
+ /* Make a new undefined symbol with the same name but without
+ the leading `.'. */
+ newsym = xmalloc (sizeof (asymbol));
+ *newsym = *sym;
+ newname = xmalloc (strlen (bfd_asymbol_name (sym)));
+ strcpy (newname, bfd_asymbol_name (sym) + 1);
+ newsym->name = newname;
+
+ /* Define the `.' symbol to be in the stub section. */
+ sym->section = stub_sec;
+ sym->value = stubcount * POWERPC_STUB_SIZE;
+ /* We set the BSF_DYNAMIC flag here so that we can check it when
+ we are mangling relocs. FIXME: This is a hack. */
+ sym->flags = BSF_LOCAL | BSF_DYNAMIC;
+
+ /* Add this stub to the linked list. */
+ item = (struct powerpc_stub *) xmalloc (sizeof (struct powerpc_stub));
+ item->start = sym;
+ item->reloc = newsym;
+ item->toc_index = got_base + stubcount * POWERPC_STUB_TOC_ENTRY_SIZE;
+
+ item->next = powerpc_stubs;
+ powerpc_stubs = item;
+
+ ++stubcount;
+ }
+
+ if (stubcount > 0)
+ {
+ asymbol **s;
+ struct powerpc_stub *l;
+
+ /* Add the new symbols we just created to the symbol table. */
+ *symbols_ptr = (asymbol **) xrealloc ((char *) *symbols_ptr,
+ ((symcount + stubcount)
+ * sizeof (asymbol)));
+ *symcount_ptr += stubcount;
+ s = &(*symbols_ptr)[symcount];
+ for (l = powerpc_stubs; l != (struct powerpc_stub *) NULL; l = l->next)
+ *s++ = l->reloc;
+
+ /* Set the size of the .stubs section and increase the size of
+ the .got section. */
+ if (! bfd_set_section_size (inbfd, stub_sec,
+ stubcount * POWERPC_STUB_SIZE)
+ || ! bfd_set_section_size (inbfd, got_sec,
+ (got_base
+ + (stubcount
+ * POWERPC_STUB_TOC_ENTRY_SIZE))))
+ bfd_fatal (_("stub section sizes"));
+ }
+}
+
+/* Resolve all the stubs for PowerPC NetWare. We fill in the contents
+ of the output section, and create new relocs in the TOC. */
+
+static void
+powerpc_resolve_stubs (bfd *inbfd, bfd *outbfd)
+{
+ bfd_byte buf[POWERPC_STUB_SIZE];
+ unsigned int i;
+ unsigned int stubcount;
+ arelent **relocs;
+ asection *got_sec;
+ arelent **r;
+ struct powerpc_stub *l;
+
+ if (powerpc_stubs == (struct powerpc_stub *) NULL)
+ return;
+
+ for (i = 0; i < POWERPC_STUB_INSN_COUNT; i++)
+ bfd_put_32 (outbfd, (bfd_vma) powerpc_stub_insns[i], buf + i * 4);
+
+ got_sec = bfd_get_section_by_name (inbfd, ".got");
+ assert (got_sec != (asection *) NULL);
+ assert (got_sec->output_section->orelocation == (arelent **) NULL);
+
+ stubcount = 0;
+ for (l = powerpc_stubs; l != (struct powerpc_stub *) NULL; l = l->next)
+ ++stubcount;
+ relocs = (arelent **) xmalloc (stubcount * sizeof (arelent *));
+
+ r = relocs;
+ for (l = powerpc_stubs; l != (struct powerpc_stub *) NULL; l = l->next)
+ {
+ arelent *reloc;
+
+ /* Adjust the first instruction to use the right TOC index. */
+ bfd_put_32 (outbfd, (bfd_vma) powerpc_stub_insns[0] + l->toc_index, buf);
+
+ /* Write this stub out. */
+ if (! bfd_set_section_contents (outbfd,
+ bfd_get_section (l->start),
+ buf,
+ l->start->value,
+ POWERPC_STUB_SIZE))
+ bfd_fatal (_("writing stub"));
+
+ /* Create a new reloc for the TOC entry. */
+ reloc = (arelent *) xmalloc (sizeof (arelent));
+ reloc->sym_ptr_ptr = &l->reloc;
+ reloc->address = l->toc_index + got_sec->output_offset;
+ reloc->addend = 0;
+ reloc->howto = bfd_reloc_type_lookup (inbfd, BFD_RELOC_32);
+
+ *r++ = reloc;
+ }
+
+ bfd_set_reloc (outbfd, got_sec->output_section, relocs, stubcount);
+}
+
+/* Adjust relocation entries for PowerPC NetWare. We do not output
+ TOC relocations. The object code already contains the offset from
+ the TOC pointer. When the function is called, the TOC register,
+ r2, will be set to the correct TOC value, so there is no need for
+ any further reloc. */
+
+static void
+powerpc_mangle_relocs (bfd *outbfd, asection *insec,
+ arelent ***relocs_ptr,
+ long *reloc_count_ptr, char *contents,
+ bfd_size_type contents_size ATTRIBUTE_UNUSED)
+{
+ reloc_howto_type *toc_howto;
+ long reloc_count;
+ arelent **relocs;
+ long i;
+
+ toc_howto = bfd_reloc_type_lookup (insec->owner, BFD_RELOC_PPC_TOC16);
+ if (toc_howto == (reloc_howto_type *) NULL)
+ abort ();
+
+ /* If this is the .got section, clear out all the contents beyond
+ the initial size. We must do this here because copy_sections is
+ going to write out whatever we return in the contents field. */
+ if (strcmp (bfd_get_section_name (insec->owner, insec), ".got") == 0)
+ memset (contents + powerpc_initial_got_size, 0,
+ (size_t) (bfd_get_section_size (insec) - powerpc_initial_got_size));
+
+ reloc_count = *reloc_count_ptr;
+ relocs = *relocs_ptr;
+ for (i = 0; i < reloc_count; i++)
+ {
+ arelent *rel;
+ asymbol *sym;
+ bfd_vma sym_value;
+
+ rel = *relocs++;
+ sym = *rel->sym_ptr_ptr;
+
+ /* Convert any relocs against the .bss section into relocs
+ against the .data section. */
+ if (strcmp (bfd_get_section_name (outbfd, bfd_get_section (sym)),
+ NLM_UNINITIALIZED_DATA_NAME) == 0)
+ {
+ asection *datasec;
+
+ datasec = bfd_get_section_by_name (outbfd,
+ NLM_INITIALIZED_DATA_NAME);
+ if (datasec != NULL)
+ {
+ rel->addend += (bfd_get_section_vma (outbfd,
+ bfd_get_section (sym))
+ + sym->value);
+ rel->sym_ptr_ptr = datasec->symbol_ptr_ptr;
+ sym = *rel->sym_ptr_ptr;
+ }
+ }
+
+ /* We must be able to resolve all PC relative relocs at this
+ point. If we get a branch to an undefined symbol we build a
+ stub, since NetWare will resolve undefined symbols into a
+ pointer to a function descriptor. */
+ if (rel->howto->pc_relative)
+ {
+ /* This check for whether a symbol is in the same section as
+ the reloc will be wrong if there is a PC relative reloc
+ between two sections both of which were placed in the
+ same output section. This should not happen. */
+ if (bfd_get_section (sym) != insec->output_section)
+ non_fatal (_("unresolved PC relative reloc against %s"),
+ bfd_asymbol_name (sym));
+ else
+ {
+ bfd_vma val;
+
+ assert (rel->howto->size == 2 && rel->howto->pcrel_offset);
+ val = bfd_get_32 (outbfd, (bfd_byte *) contents + rel->address);
+ val = ((val &~ rel->howto->dst_mask)
+ | (((val & rel->howto->src_mask)
+ + (sym->value - rel->address)
+ + rel->addend)
+ & rel->howto->dst_mask));
+ bfd_put_32 (outbfd, val, (bfd_byte *) contents + rel->address);
+
+ /* If this reloc is against an stubbed symbol and the
+ next instruction is
+ cror 31,31,31
+ then we replace the next instruction with
+ lwz r2,20(r1)
+ This reloads the TOC pointer after a stub call. */
+ if (bfd_asymbol_name (sym)[0] == '.'
+ && (sym->flags & BSF_DYNAMIC) != 0
+ && (bfd_get_32 (outbfd,
+ (bfd_byte *) contents + rel->address + 4)
+ == 0x4ffffb82)) /* cror 31,31,31 */
+ bfd_put_32 (outbfd, (bfd_vma) 0x80410014, /* lwz r2,20(r1) */
+ (bfd_byte *) contents + rel->address + 4);
+
+ --*reloc_count_ptr;
+ --relocs;
+ memmove (relocs, relocs + 1,
+ (size_t) ((reloc_count - 1) * sizeof (arelent *)));
+ continue;
+ }
+ }
+
+ /* When considering a TOC reloc, we do not want to include the
+ symbol value. The symbol will be start of the TOC section
+ (which is named .got). We do want to include the addend. */
+ if (rel->howto == toc_howto)
+ sym_value = 0;
+ else
+ sym_value = sym->value;
+
+ /* If this is a relocation against a symbol with a value, or
+ there is a reloc addend, we need to update the addend in the
+ object file. */
+ if (sym_value + rel->addend != 0)
+ {
+ bfd_vma val;
+
+ switch (rel->howto->size)
+ {
+ case 1:
+ val = bfd_get_16 (outbfd,
+ (bfd_byte *) contents + rel->address);
+ val = ((val &~ rel->howto->dst_mask)
+ | (((val & rel->howto->src_mask)
+ + sym_value
+ + rel->addend)
+ & rel->howto->dst_mask));
+ if ((bfd_signed_vma) val < - 0x8000
+ || (bfd_signed_vma) val >= 0x8000)
+ non_fatal (_("overflow when adjusting relocation against %s"),
+ bfd_asymbol_name (sym));
+ bfd_put_16 (outbfd, val, (bfd_byte *) contents + rel->address);
+ break;
+
+ case 2:
+ val = bfd_get_32 (outbfd,
+ (bfd_byte *) contents + rel->address);
+ val = ((val &~ rel->howto->dst_mask)
+ | (((val & rel->howto->src_mask)
+ + sym_value
+ + rel->addend)
+ & rel->howto->dst_mask));
+ bfd_put_32 (outbfd, val, (bfd_byte *) contents + rel->address);
+ break;
+
+ default:
+ abort ();
+ }
+
+ if (! bfd_is_und_section (bfd_get_section (sym)))
+ rel->sym_ptr_ptr = bfd_get_section (sym)->symbol_ptr_ptr;
+ rel->addend = 0;
+ }
+
+ /* Now that we have incorporated the addend, remove any TOC
+ relocs. */
+ if (rel->howto == toc_howto)
+ {
+ --*reloc_count_ptr;
+ --relocs;
+ memmove (relocs, relocs + 1,
+ (size_t) ((reloc_count - i) * sizeof (arelent *)));
+ continue;
+ }
+
+ rel->address += insec->output_offset;
+ }
+}
+
+#endif /* NLMCONV_POWERPC */
+
+/* Name of linker. */
+#ifndef LD_NAME
+#define LD_NAME "ld"
+#endif
+
+/* The user has specified several input files. Invoke the linker to
+ link them all together, and convert and delete the resulting output
+ file. */
+
+static char *
+link_inputs (struct string_list *inputs, char *ld, char * mfile)
+{
+ size_t c;
+ struct string_list *q;
+ char **argv;
+ size_t i;
+ int pid;
+ int status;
+ char *errfmt;
+ char *errarg;
+
+ c = 0;
+ for (q = inputs; q != NULL; q = q->next)
+ ++c;
+
+ argv = (char **) alloca ((c + 7) * sizeof (char *));
+
+#ifndef __MSDOS__
+ if (ld == NULL)
+ {
+ char *p;
+
+ /* Find the linker to invoke based on how nlmconv was run. */
+ p = program_name + strlen (program_name);
+ while (p != program_name)
+ {
+ if (p[-1] == '/')
+ {
+ ld = (char *) xmalloc (p - program_name + strlen (LD_NAME) + 1);
+ memcpy (ld, program_name, p - program_name);
+ strcpy (ld + (p - program_name), LD_NAME);
+ break;
+ }
+ --p;
+ }
+ }
+#endif
+
+ if (ld == NULL)
+ ld = (char *) LD_NAME;
+
+ unlink_on_exit = make_temp_file (".O");
+
+ argv[0] = ld;
+ argv[1] = (char *) "-Ur";
+ argv[2] = (char *) "-o";
+ argv[3] = unlink_on_exit;
+ /* If we have been given the name of a mapfile and that
+ name is not 'stderr' then pass it on to the linker. */
+ if (mfile
+ && * mfile
+ && strcmp (mfile, "stderr") == 0)
+ {
+ argv[4] = (char *) "-Map";
+ argv[5] = mfile;
+ i = 6;
+ }
+ else
+ i = 4;
+
+ for (q = inputs; q != NULL; q = q->next, i++)
+ argv[i] = q->string;
+ argv[i] = NULL;
+
+ if (debug)
+ {
+ for (i = 0; argv[i] != NULL; i++)
+ fprintf (stderr, " %s", argv[i]);
+ fprintf (stderr, "\n");
+ }
+
+ pid = pexecute (ld, argv, program_name, (char *) NULL, &errfmt, &errarg,
+ PEXECUTE_SEARCH | PEXECUTE_ONE);
+ if (pid == -1)
+ {
+ fprintf (stderr, _("%s: execution of %s failed: "), program_name, ld);
+ fprintf (stderr, errfmt, errarg);
+ unlink (unlink_on_exit);
+ exit (1);
+ }
+
+ if (pwait (pid, &status, 0) < 0)
+ {
+ perror ("pwait");
+ unlink (unlink_on_exit);
+ exit (1);
+ }
+
+ if (status != 0)
+ {
+ non_fatal (_("Execution of %s failed"), ld);
+ unlink (unlink_on_exit);
+ exit (1);
+ }
+
+ return unlink_on_exit;
+}
diff --git a/binutils-2.24/binutils/nlmconv.h b/binutils-2.24/binutils/nlmconv.h
new file mode 100644
index 00000000..7ab2dd3b
--- /dev/null
+++ b/binutils-2.24/binutils/nlmconv.h
@@ -0,0 +1,86 @@
+/* nlmconv.h -- header file for NLM conversion program
+ Copyright 1993, 2002, 2003, 2005, 2007 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 3 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@cygnus.com>.
+
+ bfd.h, nlm/common.h and nlm/internal.h must be included before this
+ file. */
+
+/* A linked list of strings. */
+
+struct string_list
+{
+ struct string_list *next;
+ char *string;
+};
+
+/* The NLM header parser in nlmheader.y stores information in the
+ following variables. */
+
+extern Nlm_Internal_Fixed_Header *fixed_hdr;
+extern Nlm_Internal_Variable_Header *var_hdr;
+extern Nlm_Internal_Version_Header *version_hdr;
+extern Nlm_Internal_Copyright_Header *copyright_hdr;
+extern Nlm_Internal_Extended_Header *extended_hdr;
+
+/* Procedure named by CHECK. */
+extern char *check_procedure;
+/* File named by CUSTOM. */
+extern char *custom_file;
+/* Whether to generate debugging information (DEBUG). */
+extern bfd_boolean debug_info;
+/* Procedure named by EXIT. */
+extern char *exit_procedure;
+/* Exported symbols (EXPORT). */
+extern struct string_list *export_symbols;
+/* List of files from INPUT. */
+extern struct string_list *input_files;
+/* Map file name (MAP, FULLMAP). */
+extern char *map_file;
+/* Whether a full map has been requested (FULLMAP). */
+extern bfd_boolean full_map;
+/* File named by HELP. */
+extern char *help_file;
+/* Imported symbols (IMPORT). */
+extern struct string_list *import_symbols;
+/* File named by MESSAGES. */
+extern char *message_file;
+/* Autoload module list (MODULE). */
+extern struct string_list *modules;
+/* File named by OUTPUT. */
+extern char *output_file;
+/* File named by SHARELIB. */
+extern char *sharelib_file;
+/* Start procedure name (START). */
+extern char *start_procedure;
+/* VERBOSE. */
+extern bfd_boolean verbose;
+/* RPC description file (XDCDATA). */
+extern char *rpc_file;
+
+/* The number of serious parse errors. */
+extern int parse_errors;
+
+/* The parser. */
+extern int yyparse (void);
+
+/* Tell the lexer what file to read. */
+extern bfd_boolean nlmlex_file (const char *);
diff --git a/binutils-2.24/binutils/nlmheader.c b/binutils-2.24/binutils/nlmheader.c
new file mode 100644
index 00000000..cd7e17d7
--- /dev/null
+++ b/binutils-2.24/binutils/nlmheader.c
@@ -0,0 +1,2698 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton 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.3"
+
+/* 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_K = 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_K 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, 2005, 2007,
+ 2010 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 3 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@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 "sysdep.h"
+#include "safe-ctype.h"
+#include "bfd.h"
+#include "nlm/common.h"
+#include "nlm/internal.h"
+#include "bucomm.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
+typedef union YYSTYPE
+#line 113 "nlmheader.y"
+{
+ char *string;
+ struct string_list *list;
+}
+/* Line 193 of yacc.c. */
+#line 286 "nlmheader.c"
+ YYSTYPE;
+# 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 216 of yacc.c. */
+#line 299 "nlmheader.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && 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
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+ int i;
+#endif
+{
+ return i;
+}
+#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
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (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 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# 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
+{
+ yytype_int16 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 (yytype_int16) + 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 (YYID (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 (YYID (0))
+
+#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 yytype_uint8 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 yytype_uint8 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 yytype_int8 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 yytype_uint16 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_K", "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 yytype_uint16 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 yytype_uint8 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 yytype_uint8 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 yytype_uint8 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 yytype_int8 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 yytype_int8 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 yytype_int8 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 yytype_uint8 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 yytype_int8 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 yytype_uint8 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 (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (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 (YYID (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 (YYID (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 defined YYLTYPE_IS_TRIVIAL && 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 (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ yytype_int16 *bottom;
+ yytype_int16 *top;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; 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 (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+ YYSTYPE *yyvsp;
+ int yyrule;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
+ fprintf (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule); \
+} while (YYID (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. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# 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. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+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 == '"')
+ {
+ YYSIZE_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
+
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
+ else
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { 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 + 1;
+ 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)
+ return YYSIZE_MAXIMUM;
+
+ if (yyresult)
+ {
+ /* 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 = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+#endif /* YYERROR_VERBOSE */
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+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
+{
+ YYUSE (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 __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+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;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+ /* 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. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ 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;
+ yytype_int16 *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;
+
+ {
+ yytype_int16 *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. */
+
+ /* 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;
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ 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[(2) - (2)].string);
+ }
+ break;
+
+ case 6:
+#line 162 "nlmheader.y"
+ {
+ nlmheader_warn (_("CODESTART is not implemented; sorry"), -1);
+ free ((yyvsp[(2) - (2)].string));
+ }
+ break;
+
+ case 7:
+#line 167 "nlmheader.y"
+ {
+ int len;
+
+ strncpy (copyright_hdr->stamp, "CoPyRiGhT=", 10);
+ len = strlen ((yyvsp[(2) - (2)].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[(2) - (2)].string), len);
+ copyright_hdr->copyrightMessage[len] = '\0';
+ free ((yyvsp[(2) - (2)].string));
+ }
+ break;
+
+ case 8:
+#line 184 "nlmheader.y"
+ {
+ custom_file = (yyvsp[(2) - (2)].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) - (4)].string));
+ version_hdr->day = nlmlex_get_number ((yyvsp[(3) - (4)].string));
+ version_hdr->year = nlmlex_get_number ((yyvsp[(4) - (4)].string));
+ free ((yyvsp[(2) - (4)].string));
+ free ((yyvsp[(3) - (4)].string));
+ free ((yyvsp[(4) - (4)].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[(2) - (2)].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[(2) - (2)].string), len);
+ var_hdr->descriptionText[len] = '\0';
+ free ((yyvsp[(2) - (2)].string));
+ }
+ break;
+
+ case 12:
+#line 226 "nlmheader.y"
+ {
+ exit_procedure = (yyvsp[(2) - (2)].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[(3) - (3)].list));
+ }
+ break;
+
+ case 15:
+#line 238 "nlmheader.y"
+ {
+ fixed_hdr->flags |= nlmlex_get_number ((yyvsp[(2) - (2)].string));
+ free ((yyvsp[(2) - (2)].string));
+ }
+ break;
+
+ case 16:
+#line 243 "nlmheader.y"
+ {
+ fixed_hdr->flags &=~ nlmlex_get_number ((yyvsp[(2) - (2)].string));
+ free ((yyvsp[(2) - (2)].string));
+ }
+ break;
+
+ case 17:
+#line 248 "nlmheader.y"
+ {
+ map_file = "";
+ full_map = TRUE;
+ }
+ break;
+
+ case 18:
+#line 253 "nlmheader.y"
+ {
+ map_file = (yyvsp[(2) - (2)].string);
+ full_map = TRUE;
+ }
+ break;
+
+ case 19:
+#line 258 "nlmheader.y"
+ {
+ help_file = (yyvsp[(2) - (2)].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[(3) - (3)].list));
+ }
+ break;
+
+ case 22:
+#line 270 "nlmheader.y"
+ {
+ input_files = string_list_append (input_files, (yyvsp[(2) - (2)].list));
+ }
+ break;
+
+ case 23:
+#line 274 "nlmheader.y"
+ {
+ map_file = "";
+ }
+ break;
+
+ case 24:
+#line 278 "nlmheader.y"
+ {
+ map_file = (yyvsp[(2) - (2)].string);
+ }
+ break;
+
+ case 25:
+#line 282 "nlmheader.y"
+ {
+ message_file = (yyvsp[(2) - (2)].string);
+ }
+ break;
+
+ case 26:
+#line 286 "nlmheader.y"
+ {
+ modules = string_list_append (modules, (yyvsp[(2) - (2)].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[(2) - (2)].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[(2) - (2)].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[(2) - (2)].string), len);
+ var_hdr->screenName[NLM_MAX_SCREEN_NAME_LENGTH] = '\0';
+ free ((yyvsp[(2) - (2)].string));
+ }
+ break;
+
+ case 33:
+#line 329 "nlmheader.y"
+ {
+ sharelib_file = (yyvsp[(2) - (2)].string);
+ }
+ break;
+
+ case 34:
+#line 333 "nlmheader.y"
+ {
+ var_hdr->stackSize = nlmlex_get_number ((yyvsp[(2) - (2)].string));
+ free ((yyvsp[(2) - (2)].string));
+ }
+ break;
+
+ case 35:
+#line 338 "nlmheader.y"
+ {
+ start_procedure = (yyvsp[(2) - (2)].string);
+ }
+ break;
+
+ case 36:
+#line 342 "nlmheader.y"
+ {
+ fixed_hdr->flags |= 0x4;
+ }
+ break;
+
+ case 37:
+#line 346 "nlmheader.y"
+ {
+ int len;
+
+ len = strlen ((yyvsp[(2) - (2)].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[(2) - (2)].string), len);
+ var_hdr->threadName[len] = '\0';
+ free ((yyvsp[(2) - (2)].string));
+ }
+ break;
+
+ case 38:
+#line 362 "nlmheader.y"
+ {
+ fixed_hdr->moduleType = nlmlex_get_number ((yyvsp[(2) - (2)].string));
+ free ((yyvsp[(2) - (2)].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) - (4)].string));
+ val = nlmlex_get_number ((yyvsp[(3) - (4)].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[(4) - (4)].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) - (4)].string));
+ free ((yyvsp[(3) - (4)].string));
+ free ((yyvsp[(4) - (4)].string));
+ }
+ break;
+
+ case 41:
+#line 395 "nlmheader.y"
+ {
+ long val;
+
+ strncpy (version_hdr->stamp, "VeRsIoN#", 8);
+ version_hdr->majorVersion = nlmlex_get_number ((yyvsp[(2) - (3)].string));
+ val = nlmlex_get_number ((yyvsp[(3) - (3)].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[(2) - (3)].string));
+ free ((yyvsp[(3) - (3)].string));
+ }
+ break;
+
+ case 42:
+#line 411 "nlmheader.y"
+ {
+ rpc_file = (yyvsp[(2) - (2)].string);
+ }
+ break;
+
+ case 43:
+#line 420 "nlmheader.y"
+ {
+ (yyval.list) = NULL;
+ }
+ break;
+
+ case 44:
+#line 424 "nlmheader.y"
+ {
+ (yyval.list) = (yyvsp[(1) - (1)].list);
+ }
+ break;
+
+ case 45:
+#line 435 "nlmheader.y"
+ {
+ (yyval.list) = string_list_cons ((yyvsp[(1) - (1)].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) - (2)].list), (yyvsp[(2) - (2)].string));
+ }
+ break;
+
+ case 48:
+#line 447 "nlmheader.y"
+ {
+ (yyval.list) = (yyvsp[(1) - (2)].list);
+ }
+ break;
+
+ case 49:
+#line 456 "nlmheader.y"
+ {
+ if (symbol_prefix != NULL)
+ free (symbol_prefix);
+ symbol_prefix = (yyvsp[(2) - (3)].string);
+ }
+ break;
+
+ case 50:
+#line 467 "nlmheader.y"
+ {
+ if (symbol_prefix == NULL)
+ (yyval.string) = (yyvsp[(1) - (1)].string);
+ else
+ {
+ (yyval.string) = xmalloc (strlen (symbol_prefix) + strlen ((yyvsp[(1) - (1)].string)) + 2);
+ sprintf ((yyval.string), "%s@%s", symbol_prefix, (yyvsp[(1) - (1)].string));
+ free ((yyvsp[(1) - (1)].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) - (2)].string), (yyvsp[(2) - (2)].list));
+ }
+ break;
+
+
+/* Line 1267 of yacc.c. */
+#line 2015 "nlmheader.c"
+ default: break;
+ }
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ 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
+ yyerror (YY_("syntax error"));
+#else
+ {
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+#endif
+ }
+
+
+
+ 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 (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ 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 (1);
+ 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);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (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_K },
+ { "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;
+}
+
diff --git a/binutils-2.24/binutils/nlmheader.h b/binutils-2.24/binutils/nlmheader.h
new file mode 100644
index 00000000..b2dcd332
--- /dev/null
+++ b/binutils-2.24/binutils/nlmheader.h
@@ -0,0 +1,135 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 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_K = 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_K 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
+typedef union YYSTYPE
+#line 113 "nlmheader.y"
+{
+ char *string;
+ struct string_list *list;
+}
+/* Line 1529 of yacc.c. */
+#line 128 "nlmheader.h"
+ YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
diff --git a/binutils-2.24/binutils/nlmheader.y b/binutils-2.24/binutils/nlmheader.y
new file mode 100644
index 00000000..86744c4c
--- /dev/null
+++ b/binutils-2.24/binutils/nlmheader.y
@@ -0,0 +1,960 @@
+%{/* nlmheader.y - parse NLM header specification keywords.
+ Copyright 1993, 1994, 1995, 1997, 1998, 2001, 2002, 2003, 2005, 2007,
+ 2010 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 3 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@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 "sysdep.h"
+#include "safe-ctype.h"
+#include "bfd.h"
+#include "nlm/common.h"
+#include "nlm/internal.h"
+#include "bucomm.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 *);
+
+%}
+
+%union
+{
+ char *string;
+ struct string_list *list;
+};
+
+/* The reserved words. */
+
+%token CHECK CODESTART COPYRIGHT CUSTOM DATE DEBUG_K DESCRIPTION EXIT
+%token EXPORT FLAG_ON FLAG_OFF FULLMAP HELP IMPORT INPUT MAP MESSAGES
+%token MODULE MULTIPLE OS_DOMAIN OUTPUT PSEUDOPREEMPTION REENTRANT
+%token SCREENNAME SHARELIB STACK START SYNCHRONIZE
+%token THREADNAME TYPE VERBOSE VERSIONK XDCDATA
+
+/* Arguments. */
+
+%token <string> STRING
+%token <string> QUOTED_STRING
+
+/* Typed non-terminals. */
+%type <list> symbol_list_opt symbol_list string_list
+%type <string> symbol
+
+%%
+
+/* Keywords must start in the leftmost column of the file. Arguments
+ may appear anywhere else. The lexer uses this to determine what
+ token to return, so we don't have to worry about it here. */
+
+/* The entire file is just a list of commands. */
+
+file:
+ commands
+ ;
+
+/* A possibly empty list of commands. */
+
+commands:
+ /* May be empty. */
+ | command commands
+ ;
+
+/* A single command. There is where most of the work takes place. */
+
+command:
+ CHECK STRING
+ {
+ check_procedure = $2;
+ }
+ | CODESTART STRING
+ {
+ nlmheader_warn (_("CODESTART is not implemented; sorry"), -1);
+ free ($2);
+ }
+ | COPYRIGHT QUOTED_STRING
+ {
+ int len;
+
+ strncpy (copyright_hdr->stamp, "CoPyRiGhT=", 10);
+ len = strlen ($2);
+ 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, $2, len);
+ copyright_hdr->copyrightMessage[len] = '\0';
+ free ($2);
+ }
+ | CUSTOM STRING
+ {
+ custom_file = $2;
+ }
+ | DATE STRING STRING STRING
+ {
+ /* 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 ($2);
+ version_hdr->day = nlmlex_get_number ($3);
+ version_hdr->year = nlmlex_get_number ($4);
+ free ($2);
+ free ($3);
+ free ($4);
+ 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);
+ }
+ | DEBUG_K
+ {
+ debug_info = TRUE;
+ }
+ | DESCRIPTION QUOTED_STRING
+ {
+ int len;
+
+ len = strlen ($2);
+ 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, $2, len);
+ var_hdr->descriptionText[len] = '\0';
+ free ($2);
+ }
+ | EXIT STRING
+ {
+ exit_procedure = $2;
+ }
+ | EXPORT
+ {
+ symbol_prefix = NULL;
+ }
+ symbol_list_opt
+ {
+ export_symbols = string_list_append (export_symbols, $3);
+ }
+ | FLAG_ON STRING
+ {
+ fixed_hdr->flags |= nlmlex_get_number ($2);
+ free ($2);
+ }
+ | FLAG_OFF STRING
+ {
+ fixed_hdr->flags &=~ nlmlex_get_number ($2);
+ free ($2);
+ }
+ | FULLMAP
+ {
+ map_file = "";
+ full_map = TRUE;
+ }
+ | FULLMAP STRING
+ {
+ map_file = $2;
+ full_map = TRUE;
+ }
+ | HELP STRING
+ {
+ help_file = $2;
+ }
+ | IMPORT
+ {
+ symbol_prefix = NULL;
+ }
+ symbol_list_opt
+ {
+ import_symbols = string_list_append (import_symbols, $3);
+ }
+ | INPUT string_list
+ {
+ input_files = string_list_append (input_files, $2);
+ }
+ | MAP
+ {
+ map_file = "";
+ }
+ | MAP STRING
+ {
+ map_file = $2;
+ }
+ | MESSAGES STRING
+ {
+ message_file = $2;
+ }
+ | MODULE string_list
+ {
+ modules = string_list_append (modules, $2);
+ }
+ | MULTIPLE
+ {
+ fixed_hdr->flags |= 0x2;
+ }
+ | OS_DOMAIN
+ {
+ fixed_hdr->flags |= 0x10;
+ }
+ | OUTPUT STRING
+ {
+ if (output_file == NULL)
+ output_file = $2;
+ else
+ nlmheader_warn (_("ignoring duplicate OUTPUT statement"), -1);
+ }
+ | PSEUDOPREEMPTION
+ {
+ fixed_hdr->flags |= 0x8;
+ }
+ | REENTRANT
+ {
+ fixed_hdr->flags |= 0x1;
+ }
+ | SCREENNAME QUOTED_STRING
+ {
+ int len;
+
+ len = strlen ($2);
+ 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, $2, len);
+ var_hdr->screenName[NLM_MAX_SCREEN_NAME_LENGTH] = '\0';
+ free ($2);
+ }
+ | SHARELIB STRING
+ {
+ sharelib_file = $2;
+ }
+ | STACK STRING
+ {
+ var_hdr->stackSize = nlmlex_get_number ($2);
+ free ($2);
+ }
+ | START STRING
+ {
+ start_procedure = $2;
+ }
+ | SYNCHRONIZE
+ {
+ fixed_hdr->flags |= 0x4;
+ }
+ | THREADNAME QUOTED_STRING
+ {
+ int len;
+
+ len = strlen ($2);
+ 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, $2, len);
+ var_hdr->threadName[len] = '\0';
+ free ($2);
+ }
+ | TYPE STRING
+ {
+ fixed_hdr->moduleType = nlmlex_get_number ($2);
+ free ($2);
+ }
+ | VERBOSE
+ {
+ verbose = TRUE;
+ }
+ | VERSIONK STRING STRING STRING
+ {
+ long val;
+
+ strncpy (version_hdr->stamp, "VeRsIoN#", 8);
+ version_hdr->majorVersion = nlmlex_get_number ($2);
+ val = nlmlex_get_number ($3);
+ 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 ($4);
+ 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 ($2);
+ free ($3);
+ free ($4);
+ }
+ | VERSIONK STRING STRING
+ {
+ long val;
+
+ strncpy (version_hdr->stamp, "VeRsIoN#", 8);
+ version_hdr->majorVersion = nlmlex_get_number ($2);
+ val = nlmlex_get_number ($3);
+ 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 ($2);
+ free ($3);
+ }
+ | XDCDATA STRING
+ {
+ rpc_file = $2;
+ }
+ ;
+
+/* A possibly empty list of symbols. */
+
+symbol_list_opt:
+ /* Empty. */
+ {
+ $$ = NULL;
+ }
+ | symbol_list
+ {
+ $$ = $1;
+ }
+ ;
+
+/* A list of symbols in an import or export list. Prefixes may appear
+ in parentheses. We need to use left recursion here to avoid
+ building up a large import list on the parser stack. */
+
+symbol_list:
+ symbol
+ {
+ $$ = string_list_cons ($1, NULL);
+ }
+ | symbol_prefix
+ {
+ $$ = NULL;
+ }
+ | symbol_list symbol
+ {
+ $$ = string_list_append1 ($1, $2);
+ }
+ | symbol_list symbol_prefix
+ {
+ $$ = $1;
+ }
+ ;
+
+/* A prefix for subsequent symbols. */
+
+symbol_prefix:
+ '(' STRING ')'
+ {
+ if (symbol_prefix != NULL)
+ free (symbol_prefix);
+ symbol_prefix = $2;
+ }
+ ;
+
+/* A single symbol. */
+
+symbol:
+ STRING
+ {
+ if (symbol_prefix == NULL)
+ $$ = $1;
+ else
+ {
+ $$ = xmalloc (strlen (symbol_prefix) + strlen ($1) + 2);
+ sprintf ($$, "%s@%s", symbol_prefix, $1);
+ free ($1);
+ }
+ }
+ ;
+
+/* A list of strings. */
+
+string_list:
+ /* May be empty. */
+ {
+ $$ = NULL;
+ }
+ | STRING string_list
+ {
+ $$ = string_list_cons ($1, $2);
+ }
+ ;
+
+%%
+
+/* 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_K },
+ { "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;
+}
diff --git a/binutils-2.24/binutils/nm.c b/binutils-2.24/binutils/nm.c
new file mode 100644
index 00000000..9b6648eb
--- /dev/null
+++ b/binutils-2.24/binutils/nm.c
@@ -0,0 +1,1706 @@
+/* nm.c -- Describe symbol table of a rel file.
+ Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+ 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012
+ 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 3 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 "sysdep.h"
+#include "bfd.h"
+#include "progress.h"
+#include "getopt.h"
+#include "aout/stab_gnu.h"
+#include "aout/ranlib.h"
+#include "demangle.h"
+#include "libiberty.h"
+#include "elf-bfd.h"
+#include "elf/common.h"
+#include "bucomm.h"
+#include "plugin.h"
+
+/* When sorting by size, we use this structure to hold the size and a
+ pointer to the minisymbol. */
+
+struct size_sym
+{
+ const void *minisym;
+ bfd_vma size;
+};
+
+/* When fetching relocs, we use this structure to pass information to
+ get_relocs. */
+
+struct get_relocs_info
+{
+ asection **secs;
+ arelent ***relocs;
+ long *relcount;
+ asymbol **syms;
+};
+
+struct extended_symbol_info
+{
+ symbol_info *sinfo;
+ bfd_vma ssize;
+ elf_symbol_type *elfinfo;
+ /* FIXME: We should add more fields for Type, Line, Section. */
+};
+#define SYM_NAME(sym) (sym->sinfo->name)
+#define SYM_VALUE(sym) (sym->sinfo->value)
+#define SYM_TYPE(sym) (sym->sinfo->type)
+#define SYM_STAB_NAME(sym) (sym->sinfo->stab_name)
+#define SYM_STAB_DESC(sym) (sym->sinfo->stab_desc)
+#define SYM_STAB_OTHER(sym) (sym->sinfo->stab_other)
+#define SYM_SIZE(sym) \
+ (sym->elfinfo ? sym->elfinfo->internal_elf_sym.st_size: sym->ssize)
+
+/* The output formatting functions. */
+static void print_object_filename_bsd (char *);
+static void print_object_filename_sysv (char *);
+static void print_object_filename_posix (char *);
+static void print_archive_filename_bsd (char *);
+static void print_archive_filename_sysv (char *);
+static void print_archive_filename_posix (char *);
+static void print_archive_member_bsd (char *, const char *);
+static void print_archive_member_sysv (char *, const char *);
+static void print_archive_member_posix (char *, const char *);
+static void print_symbol_filename_bsd (bfd *, bfd *);
+static void print_symbol_filename_sysv (bfd *, bfd *);
+static void print_symbol_filename_posix (bfd *, bfd *);
+static void print_value (bfd *, bfd_vma);
+static void print_symbol_info_bsd (struct extended_symbol_info *, bfd *);
+static void print_symbol_info_sysv (struct extended_symbol_info *, bfd *);
+static void print_symbol_info_posix (struct extended_symbol_info *, bfd *);
+
+/* Support for different output formats. */
+struct output_fns
+ {
+ /* Print the name of an object file given on the command line. */
+ void (*print_object_filename) (char *);
+
+ /* Print the name of an archive file given on the command line. */
+ void (*print_archive_filename) (char *);
+
+ /* Print the name of an archive member file. */
+ void (*print_archive_member) (char *, const char *);
+
+ /* Print the name of the file (and archive, if there is one)
+ containing a symbol. */
+ void (*print_symbol_filename) (bfd *, bfd *);
+
+ /* Print a line of information about a symbol. */
+ void (*print_symbol_info) (struct extended_symbol_info *, bfd *);
+ };
+
+static struct output_fns formats[] =
+{
+ {print_object_filename_bsd,
+ print_archive_filename_bsd,
+ print_archive_member_bsd,
+ print_symbol_filename_bsd,
+ print_symbol_info_bsd},
+ {print_object_filename_sysv,
+ print_archive_filename_sysv,
+ print_archive_member_sysv,
+ print_symbol_filename_sysv,
+ print_symbol_info_sysv},
+ {print_object_filename_posix,
+ print_archive_filename_posix,
+ print_archive_member_posix,
+ print_symbol_filename_posix,
+ print_symbol_info_posix}
+};
+
+/* Indices in `formats'. */
+#define FORMAT_BSD 0
+#define FORMAT_SYSV 1
+#define FORMAT_POSIX 2
+#define FORMAT_DEFAULT FORMAT_BSD
+
+/* The output format to use. */
+static struct output_fns *format = &formats[FORMAT_DEFAULT];
+
+/* Command options. */
+
+static int do_demangle = 0; /* Pretty print C++ symbol names. */
+static int external_only = 0; /* Print external symbols only. */
+static int defined_only = 0; /* Print defined symbols only. */
+static int no_sort = 0; /* Don't sort; print syms in order found. */
+static int print_debug_syms = 0;/* Print debugger-only symbols too. */
+static int print_armap = 0; /* Describe __.SYMDEF data in archive files. */
+static int print_size = 0; /* Print size of defined symbols. */
+static int reverse_sort = 0; /* Sort in downward(alpha or numeric) order. */
+static int sort_numerically = 0;/* Sort in numeric rather than alpha order. */
+static int sort_by_size = 0; /* Sort by size of symbol. */
+static int undefined_only = 0; /* Print undefined symbols only. */
+static int dynamic = 0; /* Print dynamic symbols. */
+static int show_version = 0; /* Show the version number. */
+static int show_stats = 0; /* Show statistics. */
+static int show_synthetic = 0; /* Display synthesized symbols too. */
+static int line_numbers = 0; /* Print line numbers for symbols. */
+static int allow_special_symbols = 0; /* Allow special symbols. */
+
+/* When to print the names of files. Not mutually exclusive in SYSV format. */
+static int filename_per_file = 0; /* Once per file, on its own line. */
+static int filename_per_symbol = 0; /* Once per symbol, at start of line. */
+
+/* Print formats for printing a symbol value. */
+static char value_format_32bit[] = "%08lx";
+#if BFD_HOST_64BIT_LONG
+static char value_format_64bit[] = "%016lx";
+#elif BFD_HOST_64BIT_LONG_LONG
+#ifndef __MSVCRT__
+static char value_format_64bit[] = "%016llx";
+#else
+static char value_format_64bit[] = "%016I64x";
+#endif
+#endif
+static int print_width = 0;
+static int print_radix = 16;
+/* Print formats for printing stab info. */
+static char other_format[] = "%02x";
+static char desc_format[] = "%04x";
+
+static char *target = NULL;
+static char *plugin_target = NULL;
+
+/* Used to cache the line numbers for a BFD. */
+static bfd *lineno_cache_bfd;
+static bfd *lineno_cache_rel_bfd;
+
+#define OPTION_TARGET 200
+#define OPTION_PLUGIN (OPTION_TARGET + 1)
+#define OPTION_SIZE_SORT (OPTION_PLUGIN + 1)
+
+static struct option long_options[] =
+{
+ {"debug-syms", no_argument, &print_debug_syms, 1},
+ {"demangle", optional_argument, 0, 'C'},
+ {"dynamic", no_argument, &dynamic, 1},
+ {"extern-only", no_argument, &external_only, 1},
+ {"format", required_argument, 0, 'f'},
+ {"help", no_argument, 0, 'h'},
+ {"line-numbers", no_argument, 0, 'l'},
+ {"no-cplus", no_argument, &do_demangle, 0}, /* Linux compatibility. */
+ {"no-demangle", no_argument, &do_demangle, 0},
+ {"no-sort", no_argument, 0, 'p'},
+ {"numeric-sort", no_argument, 0, 'n'},
+ {"plugin", required_argument, 0, OPTION_PLUGIN},
+ {"portability", no_argument, 0, 'P'},
+ {"print-armap", no_argument, &print_armap, 1},
+ {"print-file-name", no_argument, 0, 'o'},
+ {"print-size", no_argument, 0, 'S'},
+ {"radix", required_argument, 0, 't'},
+ {"reverse-sort", no_argument, &reverse_sort, 1},
+ {"size-sort", no_argument, 0, OPTION_SIZE_SORT},
+ {"special-syms", no_argument, &allow_special_symbols, 1},
+ {"stats", no_argument, &show_stats, 1},
+ {"synthetic", no_argument, &show_synthetic, 1},
+ {"target", required_argument, 0, OPTION_TARGET},
+ {"defined-only", no_argument, &defined_only, 1},
+ {"undefined-only", no_argument, &undefined_only, 1},
+ {"version", no_argument, &show_version, 1},
+ {0, no_argument, 0, 0}
+};
+
+/* Some error-reporting functions. */
+
+static void
+usage (FILE *stream, int status)
+{
+ fprintf (stream, _("Usage: %s [option(s)] [file(s)]\n"), program_name);
+ fprintf (stream, _(" List symbols in [file(s)] (a.out by default).\n"));
+ fprintf (stream, _(" The options are:\n\
+ -a, --debug-syms Display debugger-only symbols\n\
+ -A, --print-file-name Print name of the input file before every symbol\n\
+ -B Same as --format=bsd\n\
+ -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n\
+ The STYLE, if specified, can be `auto' (the default),\n\
+ `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n\
+ or `gnat'\n\
+ --no-demangle Do not demangle low-level symbol names\n\
+ -D, --dynamic Display dynamic symbols instead of normal symbols\n\
+ --defined-only Display only defined symbols\n\
+ -e (ignored)\n\
+ -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n\
+ `sysv' or `posix'. The default is `bsd'\n\
+ -g, --extern-only Display only external symbols\n\
+ -l, --line-numbers Use debugging information to find a filename and\n\
+ line number for each symbol\n\
+ -n, --numeric-sort Sort symbols numerically by address\n\
+ -o Same as -A\n\
+ -p, --no-sort Do not sort the symbols\n\
+ -P, --portability Same as --format=posix\n\
+ -r, --reverse-sort Reverse the sense of the sort\n"));
+#if BFD_SUPPORTS_PLUGINS
+ fprintf (stream, _("\
+ --plugin NAME Load the specified plugin\n"));
+#endif
+ fprintf (stream, _("\
+ -S, --print-size Print size of defined symbols\n\
+ -s, --print-armap Include index for symbols from archive members\n\
+ --size-sort Sort symbols by size\n\
+ --special-syms Include special symbols in the output\n\
+ --synthetic Display synthetic symbols as well\n\
+ -t, --radix=RADIX Use RADIX for printing symbol values\n\
+ --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"));
+ list_supported_targets (program_name, stream);
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (stream, _("Report bugs to %s.\n"), REPORT_BUGS_TO);
+ exit (status);
+}
+
+/* Set the radix for the symbol value and size according to RADIX. */
+
+static void
+set_print_radix (char *radix)
+{
+ switch (*radix)
+ {
+ case 'x':
+ break;
+ case 'd':
+ case 'o':
+ if (*radix == 'd')
+ print_radix = 10;
+ else
+ print_radix = 8;
+ value_format_32bit[4] = *radix;
+#if BFD_HOST_64BIT_LONG
+ value_format_64bit[5] = *radix;
+#elif BFD_HOST_64BIT_LONG_LONG
+#ifndef __MSVCRT__
+ value_format_64bit[6] = *radix;
+#else
+ value_format_64bit[7] = *radix;
+#endif
+#endif
+ other_format[3] = desc_format[3] = *radix;
+ break;
+ default:
+ fatal (_("%s: invalid radix"), radix);
+ }
+}
+
+static void
+set_output_format (char *f)
+{
+ int i;
+
+ switch (*f)
+ {
+ case 'b':
+ case 'B':
+ i = FORMAT_BSD;
+ break;
+ case 'p':
+ case 'P':
+ i = FORMAT_POSIX;
+ break;
+ case 's':
+ case 'S':
+ i = FORMAT_SYSV;
+ break;
+ default:
+ fatal (_("%s: invalid output format"), f);
+ }
+ format = &formats[i];
+}
+
+static const char *
+get_symbol_type (unsigned int type)
+{
+ static char buff [32];
+
+ switch (type)
+ {
+ case STT_NOTYPE: return "NOTYPE";
+ case STT_OBJECT: return "OBJECT";
+ case STT_FUNC: return "FUNC";
+ case STT_SECTION: return "SECTION";
+ case STT_FILE: return "FILE";
+ case STT_COMMON: return "COMMON";
+ case STT_TLS: return "TLS";
+ default:
+ if (type >= STT_LOPROC && type <= STT_HIPROC)
+ sprintf (buff, _("<processor specific>: %d"), type);
+ else if (type >= STT_LOOS && type <= STT_HIOS)
+ sprintf (buff, _("<OS specific>: %d"), type);
+ else
+ sprintf (buff, _("<unknown>: %d"), type);
+ return buff;
+ }
+}
+
+/* Print symbol name NAME, read from ABFD, with printf format FORM,
+ demangling it if requested. */
+
+static void
+print_symname (const char *form, const char *name, bfd *abfd)
+{
+ if (do_demangle && *name)
+ {
+ char *res = bfd_demangle (abfd, name, DMGL_ANSI | DMGL_PARAMS);
+
+ if (res != NULL)
+ {
+ printf (form, res);
+ free (res);
+ return;
+ }
+ }
+
+ printf (form, name);
+}
+
+static void
+print_symdef_entry (bfd *abfd)
+{
+ symindex idx = BFD_NO_MORE_SYMBOLS;
+ carsym *thesym;
+ bfd_boolean everprinted = FALSE;
+
+ for (idx = bfd_get_next_mapent (abfd, idx, &thesym);
+ idx != BFD_NO_MORE_SYMBOLS;
+ idx = bfd_get_next_mapent (abfd, idx, &thesym))
+ {
+ bfd *elt;
+ if (!everprinted)
+ {
+ printf (_("\nArchive index:\n"));
+ everprinted = TRUE;
+ }
+ elt = bfd_get_elt_at_index (abfd, idx);
+ if (elt == NULL)
+ bfd_fatal ("bfd_get_elt_at_index");
+ if (thesym->name != (char *) NULL)
+ {
+ print_symname ("%s", thesym->name, abfd);
+ printf (" in %s\n", bfd_get_filename (elt));
+ }
+ }
+}
+
+/* Choose which symbol entries to print;
+ compact them downward to get rid of the rest.
+ Return the number of symbols to be printed. */
+
+static long
+filter_symbols (bfd *abfd, bfd_boolean is_dynamic, void *minisyms,
+ long symcount, unsigned int size)
+{
+ bfd_byte *from, *fromend, *to;
+ asymbol *store;
+
+ store = bfd_make_empty_symbol (abfd);
+ if (store == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ from = (bfd_byte *) minisyms;
+ fromend = from + symcount * size;
+ to = (bfd_byte *) minisyms;
+
+ for (; from < fromend; from += size)
+ {
+ int keep = 0;
+ asymbol *sym;
+
+ PROGRESS (1);
+
+ sym = bfd_minisymbol_to_symbol (abfd, is_dynamic, (const void *) from, store);
+ if (sym == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ if (undefined_only)
+ keep = bfd_is_und_section (sym->section);
+ else if (external_only)
+ /* PR binutls/12753: Unique symbols are global too. */
+ keep = ((sym->flags & (BSF_GLOBAL
+ | BSF_WEAK
+ | BSF_GNU_UNIQUE)) != 0
+ || bfd_is_und_section (sym->section)
+ || bfd_is_com_section (sym->section));
+ else
+ keep = 1;
+
+ if (keep
+ && ! print_debug_syms
+ && (sym->flags & BSF_DEBUGGING) != 0)
+ keep = 0;
+
+ if (keep
+ && sort_by_size
+ && (bfd_is_abs_section (sym->section)
+ || bfd_is_und_section (sym->section)))
+ keep = 0;
+
+ if (keep
+ && defined_only)
+ {
+ if (bfd_is_und_section (sym->section))
+ keep = 0;
+ }
+
+ if (keep
+ && bfd_is_target_special_symbol (abfd, sym)
+ && ! allow_special_symbols)
+ keep = 0;
+
+ if (keep)
+ {
+ if (to != from)
+ memcpy (to, from, size);
+ to += size;
+ }
+ }
+
+ return (to - (bfd_byte *) minisyms) / size;
+}
+
+/* These globals are used to pass information into the sorting
+ routines. */
+static bfd *sort_bfd;
+static bfd_boolean sort_dynamic;
+static asymbol *sort_x;
+static asymbol *sort_y;
+
+/* Symbol-sorting predicates */
+#define valueof(x) ((x)->section->vma + (x)->value)
+
+/* Numeric sorts. Undefined symbols are always considered "less than"
+ defined symbols with zero values. Common symbols are not treated
+ specially -- i.e., their sizes are used as their "values". */
+
+static int
+non_numeric_forward (const void *P_x, const void *P_y)
+{
+ asymbol *x, *y;
+ const char *xn, *yn;
+
+ x = bfd_minisymbol_to_symbol (sort_bfd, sort_dynamic, P_x, sort_x);
+ y = bfd_minisymbol_to_symbol (sort_bfd, sort_dynamic, P_y, sort_y);
+ if (x == NULL || y == NULL)
+ bfd_fatal (bfd_get_filename (sort_bfd));
+
+ xn = bfd_asymbol_name (x);
+ yn = bfd_asymbol_name (y);
+
+ if (yn == NULL)
+ return xn != NULL;
+ if (xn == NULL)
+ return -1;
+
+#ifdef HAVE_STRCOLL
+ /* Solaris 2.5 has a bug in strcoll.
+ strcoll returns invalid values when confronted with empty strings. */
+ if (*yn == '\0')
+ return *xn != '\0';
+ if (*xn == '\0')
+ return -1;
+
+ return strcoll (xn, yn);
+#else
+ return strcmp (xn, yn);
+#endif
+}
+
+static int
+non_numeric_reverse (const void *x, const void *y)
+{
+ return - non_numeric_forward (x, y);
+}
+
+static int
+numeric_forward (const void *P_x, const void *P_y)
+{
+ asymbol *x, *y;
+ asection *xs, *ys;
+
+ x = bfd_minisymbol_to_symbol (sort_bfd, sort_dynamic, P_x, sort_x);
+ y = bfd_minisymbol_to_symbol (sort_bfd, sort_dynamic, P_y, sort_y);
+ if (x == NULL || y == NULL)
+ bfd_fatal (bfd_get_filename (sort_bfd));
+
+ xs = bfd_get_section (x);
+ ys = bfd_get_section (y);
+
+ if (bfd_is_und_section (xs))
+ {
+ if (! bfd_is_und_section (ys))
+ return -1;
+ }
+ else if (bfd_is_und_section (ys))
+ return 1;
+ else if (valueof (x) != valueof (y))
+ return valueof (x) < valueof (y) ? -1 : 1;
+
+ return non_numeric_forward (P_x, P_y);
+}
+
+static int
+numeric_reverse (const void *x, const void *y)
+{
+ return - numeric_forward (x, y);
+}
+
+static int (*(sorters[2][2])) (const void *, const void *) =
+{
+ { non_numeric_forward, non_numeric_reverse },
+ { numeric_forward, numeric_reverse }
+};
+
+/* This sort routine is used by sort_symbols_by_size. It is similar
+ to numeric_forward, but when symbols have the same value it sorts
+ by section VMA. This simplifies the sort_symbols_by_size code
+ which handles symbols at the end of sections. Also, this routine
+ tries to sort file names before other symbols with the same value.
+ That will make the file name have a zero size, which will make
+ sort_symbols_by_size choose the non file name symbol, leading to
+ more meaningful output. For similar reasons, this code sorts
+ gnu_compiled_* and gcc2_compiled before other symbols with the same
+ value. */
+
+static int
+size_forward1 (const void *P_x, const void *P_y)
+{
+ asymbol *x, *y;
+ asection *xs, *ys;
+ const char *xn, *yn;
+ size_t xnl, ynl;
+ int xf, yf;
+
+ x = bfd_minisymbol_to_symbol (sort_bfd, sort_dynamic, P_x, sort_x);
+ y = bfd_minisymbol_to_symbol (sort_bfd, sort_dynamic, P_y, sort_y);
+ if (x == NULL || y == NULL)
+ bfd_fatal (bfd_get_filename (sort_bfd));
+
+ xs = bfd_get_section (x);
+ ys = bfd_get_section (y);
+
+ if (bfd_is_und_section (xs))
+ abort ();
+ if (bfd_is_und_section (ys))
+ abort ();
+
+ if (valueof (x) != valueof (y))
+ return valueof (x) < valueof (y) ? -1 : 1;
+
+ if (xs->vma != ys->vma)
+ return xs->vma < ys->vma ? -1 : 1;
+
+ xn = bfd_asymbol_name (x);
+ yn = bfd_asymbol_name (y);
+ xnl = strlen (xn);
+ ynl = strlen (yn);
+
+ /* The symbols gnu_compiled and gcc2_compiled convey even less
+ information than the file name, so sort them out first. */
+
+ xf = (strstr (xn, "gnu_compiled") != NULL
+ || strstr (xn, "gcc2_compiled") != NULL);
+ yf = (strstr (yn, "gnu_compiled") != NULL
+ || strstr (yn, "gcc2_compiled") != NULL);
+
+ if (xf && ! yf)
+ return -1;
+ if (! xf && yf)
+ return 1;
+
+ /* We use a heuristic for the file name. It may not work on non
+ Unix systems, but it doesn't really matter; the only difference
+ is precisely which symbol names get printed. */
+
+#define file_symbol(s, sn, snl) \
+ (((s)->flags & BSF_FILE) != 0 \
+ || ((sn)[(snl) - 2] == '.' \
+ && ((sn)[(snl) - 1] == 'o' \
+ || (sn)[(snl) - 1] == 'a')))
+
+ xf = file_symbol (x, xn, xnl);
+ yf = file_symbol (y, yn, ynl);
+
+ if (xf && ! yf)
+ return -1;
+ if (! xf && yf)
+ return 1;
+
+ return non_numeric_forward (P_x, P_y);
+}
+
+/* This sort routine is used by sort_symbols_by_size. It is sorting
+ an array of size_sym structures into size order. */
+
+static int
+size_forward2 (const void *P_x, const void *P_y)
+{
+ const struct size_sym *x = (const struct size_sym *) P_x;
+ const struct size_sym *y = (const struct size_sym *) P_y;
+
+ if (x->size < y->size)
+ return reverse_sort ? 1 : -1;
+ else if (x->size > y->size)
+ return reverse_sort ? -1 : 1;
+ else
+ return sorters[0][reverse_sort] (x->minisym, y->minisym);
+}
+
+/* Sort the symbols by size. ELF provides a size but for other formats
+ we have to make a guess by assuming that the difference between the
+ address of a symbol and the address of the next higher symbol is the
+ size. */
+
+static long
+sort_symbols_by_size (bfd *abfd, bfd_boolean is_dynamic, void *minisyms,
+ long symcount, unsigned int size,
+ struct size_sym **symsizesp)
+{
+ struct size_sym *symsizes;
+ bfd_byte *from, *fromend;
+ asymbol *sym = NULL;
+ asymbol *store_sym, *store_next;
+
+ qsort (minisyms, symcount, size, size_forward1);
+
+ /* We are going to return a special set of symbols and sizes to
+ print. */
+ symsizes = (struct size_sym *) xmalloc (symcount * sizeof (struct size_sym));
+ *symsizesp = symsizes;
+
+ /* Note that filter_symbols has already removed all absolute and
+ undefined symbols. Here we remove all symbols whose size winds
+ up as zero. */
+ from = (bfd_byte *) minisyms;
+ fromend = from + symcount * size;
+
+ store_sym = sort_x;
+ store_next = sort_y;
+
+ if (from < fromend)
+ {
+ sym = bfd_minisymbol_to_symbol (abfd, is_dynamic, (const void *) from,
+ store_sym);
+ if (sym == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+ }
+
+ for (; from < fromend; from += size)
+ {
+ asymbol *next;
+ asection *sec;
+ bfd_vma sz;
+ asymbol *temp;
+
+ if (from + size < fromend)
+ {
+ next = bfd_minisymbol_to_symbol (abfd,
+ is_dynamic,
+ (const void *) (from + size),
+ store_next);
+ if (next == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+ }
+ else
+ next = NULL;
+
+ sec = bfd_get_section (sym);
+
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
+ sz = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
+ else if (bfd_is_com_section (sec))
+ sz = sym->value;
+ else
+ {
+ if (from + size < fromend
+ && sec == bfd_get_section (next))
+ sz = valueof (next) - valueof (sym);
+ else
+ sz = (bfd_get_section_vma (abfd, sec)
+ + bfd_section_size (abfd, sec)
+ - valueof (sym));
+ }
+
+ if (sz != 0)
+ {
+ symsizes->minisym = (const void *) from;
+ symsizes->size = sz;
+ ++symsizes;
+ }
+
+ sym = next;
+
+ temp = store_sym;
+ store_sym = store_next;
+ store_next = temp;
+ }
+
+ symcount = symsizes - *symsizesp;
+
+ /* We must now sort again by size. */
+ qsort ((void *) *symsizesp, symcount, sizeof (struct size_sym), size_forward2);
+
+ return symcount;
+}
+
+/* This function is used to get the relocs for a particular section.
+ It is called via bfd_map_over_sections. */
+
+static void
+get_relocs (bfd *abfd, asection *sec, void *dataarg)
+{
+ struct get_relocs_info *data = (struct get_relocs_info *) dataarg;
+
+ *data->secs = sec;
+
+ if ((sec->flags & SEC_RELOC) == 0)
+ {
+ *data->relocs = NULL;
+ *data->relcount = 0;
+ }
+ else
+ {
+ long relsize;
+
+ relsize = bfd_get_reloc_upper_bound (abfd, sec);
+ if (relsize < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ *data->relocs = (arelent **) xmalloc (relsize);
+ *data->relcount = bfd_canonicalize_reloc (abfd, sec, *data->relocs,
+ data->syms);
+ if (*data->relcount < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+ }
+
+ ++data->secs;
+ ++data->relocs;
+ ++data->relcount;
+}
+
+/* Print a single symbol. */
+
+static void
+print_symbol (bfd *abfd, asymbol *sym, bfd_vma ssize, bfd *archive_bfd)
+{
+ symbol_info syminfo;
+ struct extended_symbol_info info;
+
+ PROGRESS (1);
+
+ format->print_symbol_filename (archive_bfd, abfd);
+
+ bfd_get_symbol_info (abfd, sym, &syminfo);
+ info.sinfo = &syminfo;
+ info.ssize = ssize;
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
+ info.elfinfo = (elf_symbol_type *) sym;
+ else
+ info.elfinfo = NULL;
+ format->print_symbol_info (&info, abfd);
+
+ if (line_numbers)
+ {
+ static asymbol **syms;
+ static long symcount;
+ const char *filename, *functionname;
+ unsigned int lineno;
+
+ /* We need to get the canonical symbols in order to call
+ bfd_find_nearest_line. This is inefficient, but, then, you
+ don't have to use --line-numbers. */
+ if (abfd != lineno_cache_bfd && syms != NULL)
+ {
+ free (syms);
+ syms = NULL;
+ }
+ if (syms == NULL)
+ {
+ long symsize;
+
+ symsize = bfd_get_symtab_upper_bound (abfd);
+ if (symsize < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+ syms = (asymbol **) xmalloc (symsize);
+ symcount = bfd_canonicalize_symtab (abfd, syms);
+ if (symcount < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+ lineno_cache_bfd = abfd;
+ }
+
+ if (bfd_is_und_section (bfd_get_section (sym)))
+ {
+ static asection **secs;
+ static arelent ***relocs;
+ static long *relcount;
+ static unsigned int seccount;
+ unsigned int i;
+ const char *symname;
+
+ /* For an undefined symbol, we try to find a reloc for the
+ symbol, and print the line number of the reloc. */
+ if (abfd != lineno_cache_rel_bfd && relocs != NULL)
+ {
+ for (i = 0; i < seccount; i++)
+ if (relocs[i] != NULL)
+ free (relocs[i]);
+ free (secs);
+ free (relocs);
+ free (relcount);
+ secs = NULL;
+ relocs = NULL;
+ relcount = NULL;
+ }
+
+ if (relocs == NULL)
+ {
+ struct get_relocs_info rinfo;
+
+ seccount = bfd_count_sections (abfd);
+
+ secs = (asection **) xmalloc (seccount * sizeof *secs);
+ relocs = (arelent ***) xmalloc (seccount * sizeof *relocs);
+ relcount = (long *) xmalloc (seccount * sizeof *relcount);
+
+ rinfo.secs = secs;
+ rinfo.relocs = relocs;
+ rinfo.relcount = relcount;
+ rinfo.syms = syms;
+ bfd_map_over_sections (abfd, get_relocs, (void *) &rinfo);
+ lineno_cache_rel_bfd = abfd;
+ }
+
+ symname = bfd_asymbol_name (sym);
+ for (i = 0; i < seccount; i++)
+ {
+ long j;
+
+ for (j = 0; j < relcount[i]; j++)
+ {
+ arelent *r;
+
+ r = relocs[i][j];
+ if (r->sym_ptr_ptr != NULL
+ && (*r->sym_ptr_ptr)->section == sym->section
+ && (*r->sym_ptr_ptr)->value == sym->value
+ && strcmp (symname,
+ bfd_asymbol_name (*r->sym_ptr_ptr)) == 0
+ && bfd_find_nearest_line (abfd, secs[i], syms,
+ r->address, &filename,
+ &functionname, &lineno)
+ && filename != NULL)
+ {
+ /* We only print the first one we find. */
+ printf ("\t%s:%u", filename, lineno);
+ i = seccount;
+ break;
+ }
+ }
+ }
+ }
+ else if (bfd_get_section (sym)->owner == abfd)
+ {
+ if ((bfd_find_line (abfd, syms, sym, &filename, &lineno)
+ || bfd_find_nearest_line (abfd, bfd_get_section (sym),
+ syms, sym->value, &filename,
+ &functionname, &lineno))
+ && filename != NULL
+ && lineno != 0)
+ printf ("\t%s:%u", filename, lineno);
+ }
+ }
+
+ putchar ('\n');
+}
+
+/* Print the symbols when sorting by size. */
+
+static void
+print_size_symbols (bfd *abfd, bfd_boolean is_dynamic,
+ struct size_sym *symsizes, long symcount,
+ bfd *archive_bfd)
+{
+ asymbol *store;
+ struct size_sym *from, *fromend;
+
+ store = bfd_make_empty_symbol (abfd);
+ if (store == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ from = symsizes;
+ fromend = from + symcount;
+ for (; from < fromend; from++)
+ {
+ asymbol *sym;
+
+ sym = bfd_minisymbol_to_symbol (abfd, is_dynamic, from->minisym, store);
+ if (sym == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ print_symbol (abfd, sym, from->size, archive_bfd);
+ }
+}
+
+
+/* Print the symbols. If ARCHIVE_BFD is non-NULL, it is the archive
+ containing ABFD. */
+
+static void
+print_symbols (bfd *abfd, bfd_boolean is_dynamic, void *minisyms, long symcount,
+ unsigned int size, bfd *archive_bfd)
+{
+ asymbol *store;
+ bfd_byte *from, *fromend;
+
+ store = bfd_make_empty_symbol (abfd);
+ if (store == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ from = (bfd_byte *) minisyms;
+ fromend = from + symcount * size;
+ for (; from < fromend; from += size)
+ {
+ asymbol *sym;
+
+ sym = bfd_minisymbol_to_symbol (abfd, is_dynamic, from, store);
+ if (sym == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ print_symbol (abfd, sym, (bfd_vma) 0, archive_bfd);
+ }
+}
+
+/* If ARCHIVE_BFD is non-NULL, it is the archive containing ABFD. */
+
+static void
+display_rel_file (bfd *abfd, bfd *archive_bfd)
+{
+ long symcount;
+ void *minisyms;
+ unsigned int size;
+ struct size_sym *symsizes;
+
+ if (! dynamic)
+ {
+ if (!(bfd_get_file_flags (abfd) & HAS_SYMS))
+ {
+ non_fatal (_("%s: no symbols"), bfd_get_filename (abfd));
+ return;
+ }
+ }
+
+ symcount = bfd_read_minisymbols (abfd, dynamic, &minisyms, &size);
+ if (symcount < 0)
+ {
+ if (dynamic && bfd_get_error () == bfd_error_no_symbols)
+ {
+ non_fatal (_("%s: no symbols"), bfd_get_filename (abfd));
+ return;
+ }
+
+ bfd_fatal (bfd_get_filename (abfd));
+ }
+
+ if (symcount == 0)
+ {
+ non_fatal (_("%s: no symbols"), bfd_get_filename (abfd));
+ return;
+ }
+
+ if (show_synthetic && size == sizeof (asymbol *))
+ {
+ asymbol *synthsyms;
+ long synth_count;
+ asymbol **static_syms = NULL;
+ asymbol **dyn_syms = NULL;
+ long static_count = 0;
+ long dyn_count = 0;
+
+ if (dynamic)
+ {
+ dyn_count = symcount;
+ dyn_syms = (asymbol **) minisyms;
+ }
+ else
+ {
+ long storage = bfd_get_dynamic_symtab_upper_bound (abfd);
+
+ static_count = symcount;
+ static_syms = (asymbol **) minisyms;
+
+ if (storage > 0)
+ {
+ dyn_syms = (asymbol **) xmalloc (storage);
+ dyn_count = bfd_canonicalize_dynamic_symtab (abfd, dyn_syms);
+ if (dyn_count < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+ }
+ }
+ synth_count = bfd_get_synthetic_symtab (abfd, static_count, static_syms,
+ dyn_count, dyn_syms, &synthsyms);
+ if (synth_count > 0)
+ {
+ asymbol **symp;
+ void *new_mini;
+ long i;
+
+ new_mini = xmalloc ((symcount + synth_count + 1) * sizeof (*symp));
+ symp = (asymbol **) new_mini;
+ memcpy (symp, minisyms, symcount * sizeof (*symp));
+ symp += symcount;
+ for (i = 0; i < synth_count; i++)
+ *symp++ = synthsyms + i;
+ *symp = 0;
+ minisyms = new_mini;
+ symcount += synth_count;
+ }
+ }
+
+ /* Discard the symbols we don't want to print.
+ It's OK to do this in place; we'll free the storage anyway
+ (after printing). */
+
+ symcount = filter_symbols (abfd, dynamic, minisyms, symcount, size);
+
+ symsizes = NULL;
+ if (! no_sort)
+ {
+ sort_bfd = abfd;
+ sort_dynamic = dynamic;
+ sort_x = bfd_make_empty_symbol (abfd);
+ sort_y = bfd_make_empty_symbol (abfd);
+ if (sort_x == NULL || sort_y == NULL)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ if (! sort_by_size)
+ qsort (minisyms, symcount, size,
+ sorters[sort_numerically][reverse_sort]);
+ else
+ symcount = sort_symbols_by_size (abfd, dynamic, minisyms, symcount,
+ size, &symsizes);
+ }
+
+ if (! sort_by_size)
+ print_symbols (abfd, dynamic, minisyms, symcount, size, archive_bfd);
+ else
+ print_size_symbols (abfd, dynamic, symsizes, symcount, archive_bfd);
+
+ free (minisyms);
+ free (symsizes);
+}
+
+static void
+set_print_width (bfd *file)
+{
+ print_width = bfd_get_arch_size (file);
+
+ if (print_width == -1)
+ {
+ /* PR binutils/4292
+ Guess the target's bitsize based on its name.
+ We assume here than any 64-bit format will include
+ "64" somewhere in its name. The only known exception
+ is the MMO object file format. */
+ if (strstr (bfd_get_target (file), "64") != NULL
+ || strcmp (bfd_get_target (file), "mmo") == 0)
+ print_width = 64;
+ else
+ print_width = 32;
+ }
+}
+
+static void
+display_archive (bfd *file)
+{
+ bfd *arfile = NULL;
+ bfd *last_arfile = NULL;
+ char **matching;
+
+ format->print_archive_filename (bfd_get_filename (file));
+
+ if (print_armap)
+ print_symdef_entry (file);
+
+ for (;;)
+ {
+ PROGRESS (1);
+
+ arfile = bfd_openr_next_archived_file (file, arfile);
+
+ if (arfile == NULL)
+ {
+ if (bfd_get_error () != bfd_error_no_more_archived_files)
+ bfd_fatal (bfd_get_filename (file));
+ break;
+ }
+
+ if (bfd_check_format_matches (arfile, bfd_object, &matching))
+ {
+ set_print_width (arfile);
+ format->print_archive_member (bfd_get_filename (file),
+ bfd_get_filename (arfile));
+ display_rel_file (arfile, file);
+ }
+ else
+ {
+ bfd_nonfatal (bfd_get_filename (arfile));
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ {
+ list_matching_formats (matching);
+ free (matching);
+ }
+ }
+
+ if (last_arfile != NULL)
+ {
+ bfd_close (last_arfile);
+ lineno_cache_bfd = NULL;
+ lineno_cache_rel_bfd = NULL;
+ }
+ last_arfile = arfile;
+ }
+
+ if (last_arfile != NULL)
+ {
+ bfd_close (last_arfile);
+ lineno_cache_bfd = NULL;
+ lineno_cache_rel_bfd = NULL;
+ }
+}
+
+static bfd_boolean
+display_file (char *filename)
+{
+ bfd_boolean retval = TRUE;
+ bfd *file;
+ char **matching;
+
+ if (get_file_size (filename) < 1)
+ return FALSE;
+
+ file = bfd_openr (filename, target ? target : plugin_target);
+ if (file == NULL)
+ {
+ bfd_nonfatal (filename);
+ return FALSE;
+ }
+
+ /* If printing line numbers, decompress the debug sections. */
+ if (line_numbers)
+ file->flags |= BFD_DECOMPRESS;
+
+ if (bfd_check_format (file, bfd_archive))
+ {
+ display_archive (file);
+ }
+ else if (bfd_check_format_matches (file, bfd_object, &matching))
+ {
+ set_print_width (file);
+ format->print_object_filename (filename);
+ display_rel_file (file, NULL);
+ }
+ else
+ {
+ bfd_nonfatal (filename);
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ {
+ list_matching_formats (matching);
+ free (matching);
+ }
+ retval = FALSE;
+ }
+
+ if (!bfd_close (file))
+ bfd_fatal (filename);
+
+ lineno_cache_bfd = NULL;
+ lineno_cache_rel_bfd = NULL;
+
+ return retval;
+}
+
+/* The following 3 groups of functions are called unconditionally,
+ once at the start of processing each file of the appropriate type.
+ They should check `filename_per_file' and `filename_per_symbol',
+ as appropriate for their output format, to determine whether to
+ print anything. */
+
+/* Print the name of an object file given on the command line. */
+
+static void
+print_object_filename_bsd (char *filename)
+{
+ if (filename_per_file && !filename_per_symbol)
+ printf ("\n%s:\n", filename);
+}
+
+static void
+print_object_filename_sysv (char *filename)
+{
+ if (undefined_only)
+ printf (_("\n\nUndefined symbols from %s:\n\n"), filename);
+ else
+ printf (_("\n\nSymbols from %s:\n\n"), filename);
+ if (print_width == 32)
+ printf (_("\
+Name Value Class Type Size Line Section\n\n"));
+ else
+ printf (_("\
+Name Value Class Type Size Line Section\n\n"));
+}
+
+static void
+print_object_filename_posix (char *filename)
+{
+ if (filename_per_file && !filename_per_symbol)
+ printf ("%s:\n", filename);
+}
+
+/* Print the name of an archive file given on the command line. */
+
+static void
+print_archive_filename_bsd (char *filename)
+{
+ if (filename_per_file)
+ printf ("\n%s:\n", filename);
+}
+
+static void
+print_archive_filename_sysv (char *filename ATTRIBUTE_UNUSED)
+{
+}
+
+static void
+print_archive_filename_posix (char *filename ATTRIBUTE_UNUSED)
+{
+}
+
+/* Print the name of an archive member file. */
+
+static void
+print_archive_member_bsd (char *archive ATTRIBUTE_UNUSED,
+ const char *filename)
+{
+ if (!filename_per_symbol)
+ printf ("\n%s:\n", filename);
+}
+
+static void
+print_archive_member_sysv (char *archive, const char *filename)
+{
+ if (undefined_only)
+ printf (_("\n\nUndefined symbols from %s[%s]:\n\n"), archive, filename);
+ else
+ printf (_("\n\nSymbols from %s[%s]:\n\n"), archive, filename);
+ if (print_width == 32)
+ printf (_("\
+Name Value Class Type Size Line Section\n\n"));
+ else
+ printf (_("\
+Name Value Class Type Size Line Section\n\n"));
+}
+
+static void
+print_archive_member_posix (char *archive, const char *filename)
+{
+ if (!filename_per_symbol)
+ printf ("%s[%s]:\n", archive, filename);
+}
+
+/* Print the name of the file (and archive, if there is one)
+ containing a symbol. */
+
+static void
+print_symbol_filename_bsd (bfd *archive_bfd, bfd *abfd)
+{
+ if (filename_per_symbol)
+ {
+ if (archive_bfd)
+ printf ("%s:", bfd_get_filename (archive_bfd));
+ printf ("%s:", bfd_get_filename (abfd));
+ }
+}
+
+static void
+print_symbol_filename_sysv (bfd *archive_bfd, bfd *abfd)
+{
+ if (filename_per_symbol)
+ {
+ if (archive_bfd)
+ printf ("%s:", bfd_get_filename (archive_bfd));
+ printf ("%s:", bfd_get_filename (abfd));
+ }
+}
+
+static void
+print_symbol_filename_posix (bfd *archive_bfd, bfd *abfd)
+{
+ if (filename_per_symbol)
+ {
+ if (archive_bfd)
+ printf ("%s[%s]: ", bfd_get_filename (archive_bfd),
+ bfd_get_filename (abfd));
+ else
+ printf ("%s: ", bfd_get_filename (abfd));
+ }
+}
+
+/* Print a symbol value. */
+
+static void
+print_value (bfd *abfd ATTRIBUTE_UNUSED, bfd_vma val)
+{
+ switch (print_width)
+ {
+ case 32:
+ printf (value_format_32bit, (unsigned long) val);
+ break;
+
+ case 64:
+#if BFD_HOST_64BIT_LONG || BFD_HOST_64BIT_LONG_LONG
+ printf (value_format_64bit, val);
+#else
+ /* We have a 64 bit value to print, but the host is only 32 bit. */
+ if (print_radix == 16)
+ bfd_fprintf_vma (abfd, stdout, val);
+ else
+ {
+ char buf[30];
+ char *s;
+
+ s = buf + sizeof buf;
+ *--s = '\0';
+ while (val > 0)
+ {
+ *--s = (val % print_radix) + '0';
+ val /= print_radix;
+ }
+ while ((buf + sizeof buf - 1) - s < 16)
+ *--s = '0';
+ printf ("%s", s);
+ }
+#endif
+ break;
+
+ default:
+ fatal (_("Print width has not been initialized (%d)"), print_width);
+ break;
+ }
+}
+
+/* Print a line of information about a symbol. */
+
+static void
+print_symbol_info_bsd (struct extended_symbol_info *info, bfd *abfd)
+{
+ if (bfd_is_undefined_symclass (SYM_TYPE (info)))
+ {
+ if (print_width == 64)
+ printf (" ");
+ printf (" ");
+ }
+ else
+ {
+ /* Normally we print the value of the symbol. If we are printing the
+ size or sorting by size then we print its size, except for the
+ (weird) special case where both flags are defined, in which case we
+ print both values. This conforms to documented behaviour. */
+ if (sort_by_size && !print_size)
+ print_value (abfd, SYM_SIZE (info));
+ else
+ print_value (abfd, SYM_VALUE (info));
+
+ if (print_size && SYM_SIZE (info))
+ {
+ printf (" ");
+ print_value (abfd, SYM_SIZE (info));
+ }
+ }
+
+ printf (" %c", SYM_TYPE (info));
+
+ if (SYM_TYPE (info) == '-')
+ {
+ /* A stab. */
+ printf (" ");
+ printf (other_format, SYM_STAB_OTHER (info));
+ printf (" ");
+ printf (desc_format, SYM_STAB_DESC (info));
+ printf (" %5s", SYM_STAB_NAME (info));
+ }
+ print_symname (" %s", SYM_NAME (info), abfd);
+}
+
+static void
+print_symbol_info_sysv (struct extended_symbol_info *info, bfd *abfd)
+{
+ print_symname ("%-20s|", SYM_NAME (info), abfd);
+
+ if (bfd_is_undefined_symclass (SYM_TYPE (info)))
+ {
+ if (print_width == 32)
+ printf (" ");
+ else
+ printf (" ");
+ }
+ else
+ print_value (abfd, SYM_VALUE (info));
+
+ printf ("| %c |", SYM_TYPE (info));
+
+ if (SYM_TYPE (info) == '-')
+ {
+ /* A stab. */
+ printf ("%18s| ", SYM_STAB_NAME (info)); /* (C) Type. */
+ printf (desc_format, SYM_STAB_DESC (info)); /* Size. */
+ printf ("| |"); /* Line, Section. */
+ }
+ else
+ {
+ /* Type, Size, Line, Section */
+ if (info->elfinfo)
+ printf ("%18s|",
+ get_symbol_type (ELF_ST_TYPE (info->elfinfo->internal_elf_sym.st_info)));
+ else
+ printf (" |");
+
+ if (SYM_SIZE (info))
+ print_value (abfd, SYM_SIZE (info));
+ else
+ {
+ if (print_width == 32)
+ printf (" ");
+ else
+ printf (" ");
+ }
+
+ if (info->elfinfo)
+ printf("| |%s", info->elfinfo->symbol.section->name);
+ else
+ printf("| |");
+ }
+}
+
+static void
+print_symbol_info_posix (struct extended_symbol_info *info, bfd *abfd)
+{
+ print_symname ("%s ", SYM_NAME (info), abfd);
+ printf ("%c ", SYM_TYPE (info));
+
+ if (bfd_is_undefined_symclass (SYM_TYPE (info)))
+ printf (" ");
+ else
+ {
+ print_value (abfd, SYM_VALUE (info));
+ printf (" ");
+ if (SYM_SIZE (info))
+ print_value (abfd, SYM_SIZE (info));
+ }
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ int retval;
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+ setlocale (LC_COLLATE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = *argv;
+ xmalloc_set_program_name (program_name);
+#if BFD_SUPPORTS_PLUGINS
+ bfd_plugin_set_program_name (program_name);
+#endif
+
+ START_PROGRESS (program_name, 0);
+
+ expandargv (&argc, &argv);
+
+ bfd_init ();
+ set_default_bfd_target ();
+
+ while ((c = getopt_long (argc, argv, "aABCDef:gHhlnopPrSst:uvVvX:",
+ long_options, (int *) 0)) != EOF)
+ {
+ switch (c)
+ {
+ case 'a':
+ print_debug_syms = 1;
+ break;
+ case 'A':
+ case 'o':
+ filename_per_symbol = 1;
+ break;
+ case 'B': /* For MIPS compatibility. */
+ set_output_format ("bsd");
+ break;
+ case 'C':
+ do_demangle = 1;
+ if (optarg != NULL)
+ {
+ enum demangling_styles style;
+
+ style = cplus_demangle_name_to_style (optarg);
+ if (style == unknown_demangling)
+ fatal (_("unknown demangling style `%s'"),
+ optarg);
+
+ cplus_demangle_set_style (style);
+ }
+ break;
+ case 'D':
+ dynamic = 1;
+ break;
+ case 'e':
+ /* Ignored for HP/UX compatibility. */
+ break;
+ case 'f':
+ set_output_format (optarg);
+ break;
+ case 'g':
+ external_only = 1;
+ break;
+ case 'H':
+ case 'h':
+ usage (stdout, 0);
+ case 'l':
+ line_numbers = 1;
+ break;
+ case 'n':
+ case 'v':
+ no_sort = 0;
+ sort_numerically = 1;
+ sort_by_size = 0;
+ break;
+ case 'p':
+ no_sort = 1;
+ sort_numerically = 0;
+ sort_by_size = 0;
+ break;
+ case OPTION_SIZE_SORT:
+ no_sort = 0;
+ sort_numerically = 0;
+ sort_by_size = 1;
+ break;
+ case 'P':
+ set_output_format ("posix");
+ break;
+ case 'r':
+ reverse_sort = 1;
+ break;
+ case 's':
+ print_armap = 1;
+ break;
+ case 'S':
+ print_size = 1;
+ break;
+ case 't':
+ set_print_radix (optarg);
+ break;
+ case 'u':
+ undefined_only = 1;
+ break;
+ case 'V':
+ show_version = 1;
+ break;
+ case 'X':
+ /* Ignored for (partial) AIX compatibility. On AIX, the
+ argument has values 32, 64, or 32_64, and specifies that
+ only 32-bit, only 64-bit, or both kinds of objects should
+ be examined. The default is 32. So plain AIX nm on a
+ library archive with both kinds of objects will ignore
+ the 64-bit ones. For GNU nm, the default is and always
+ has been -X 32_64, and other options are not supported. */
+ if (strcmp (optarg, "32_64") != 0)
+ fatal (_("Only -X 32_64 is supported"));
+ break;
+
+ case OPTION_TARGET: /* --target */
+ target = optarg;
+ break;
+
+ case OPTION_PLUGIN: /* --plugin */
+#if BFD_SUPPORTS_PLUGINS
+ plugin_target = "plugin";
+ bfd_plugin_set_plugin (optarg);
+#else
+ fatal (_("sorry - this program has been built without plugin support\n"));
+#endif
+ break;
+
+ case 0: /* A long option that just sets a flag. */
+ break;
+
+ default:
+ usage (stderr, 1);
+ }
+ }
+
+ if (show_version)
+ print_version ("nm");
+
+ if (sort_by_size && undefined_only)
+ {
+ non_fatal (_("Using the --size-sort and --undefined-only options together"));
+ non_fatal (_("will produce no output, since undefined symbols have no size."));
+ return 0;
+ }
+
+ /* OK, all options now parsed. If no filename specified, do a.out. */
+ if (optind == argc)
+ return !display_file ("a.out");
+
+ retval = 0;
+
+ if (argc - optind > 1)
+ filename_per_file = 1;
+
+ /* We were given several filenames to do. */
+ while (optind < argc)
+ {
+ PROGRESS (1);
+ if (!display_file (argv[optind++]))
+ retval++;
+ }
+
+ END_PROGRESS (program_name);
+
+#ifdef HAVE_SBRK
+ if (show_stats)
+ {
+ char *lim = (char *) sbrk (0);
+
+ non_fatal (_("data size %ld"), (long) (lim - (char *) &environ));
+ }
+#endif
+
+ exit (retval);
+ return retval;
+}
diff --git a/binutils-2.24/binutils/not-ranlib.c b/binutils-2.24/binutils/not-ranlib.c
new file mode 100644
index 00000000..6431f841
--- /dev/null
+++ b/binutils-2.24/binutils/not-ranlib.c
@@ -0,0 +1,22 @@
+/* Copyright 2007 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 3 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. */
+
+/* Linked with ar.o to flag that this program is 'ar' (not 'ranlib'). */
+
+int is_ranlib = 0;
diff --git a/binutils-2.24/binutils/not-strip.c b/binutils-2.24/binutils/not-strip.c
new file mode 100644
index 00000000..8ffbba6b
--- /dev/null
+++ b/binutils-2.24/binutils/not-strip.c
@@ -0,0 +1,23 @@
+/* Copyright 2007 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 3 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. */
+
+/* Linked with objcopy.o to flag that this program is 'objcopy' (not
+ 'strip'). */
+
+int is_strip = 0;
diff --git a/binutils-2.24/binutils/objcopy.c b/binutils-2.24/binutils/objcopy.c
new file mode 100644
index 00000000..14f6b96c
--- /dev/null
+++ b/binutils-2.24/binutils/objcopy.c
@@ -0,0 +1,4290 @@
+/* objcopy.c -- copy object file from input to output, optionally massaging it.
+ Copyright 1991-2013 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 3 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 "sysdep.h"
+#include "bfd.h"
+#include "progress.h"
+#include "getopt.h"
+#include "libiberty.h"
+#include "bucomm.h"
+#include "budbg.h"
+#include "filenames.h"
+#include "fnmatch.h"
+#include "elf-bfd.h"
+#include "libbfd.h"
+#include "coff/internal.h"
+#include "libcoff.h"
+
+/* FIXME: See bfd/peXXigen.c for why we include an architecture specific
+ header in generic PE code. */
+#include "coff/i386.h"
+#include "coff/pe.h"
+
+static bfd_vma pe_file_alignment = (bfd_vma) -1;
+static bfd_vma pe_heap_commit = (bfd_vma) -1;
+static bfd_vma pe_heap_reserve = (bfd_vma) -1;
+static bfd_vma pe_image_base = (bfd_vma) -1;
+static bfd_vma pe_section_alignment = (bfd_vma) -1;
+static bfd_vma pe_stack_commit = (bfd_vma) -1;
+static bfd_vma pe_stack_reserve = (bfd_vma) -1;
+static short pe_subsystem = -1;
+static short pe_major_subsystem_version = -1;
+static short pe_minor_subsystem_version = -1;
+
+struct is_specified_symbol_predicate_data
+{
+ const char *name;
+ bfd_boolean found;
+};
+
+/* A list to support redefine_sym. */
+struct redefine_node
+{
+ char *source;
+ char *target;
+ struct redefine_node *next;
+};
+
+typedef struct section_rename
+{
+ const char * old_name;
+ const char * new_name;
+ flagword flags;
+ struct section_rename * next;
+}
+section_rename;
+
+/* List of sections to be renamed. */
+static section_rename *section_rename_list;
+
+static asymbol **isympp = NULL; /* Input symbols. */
+static asymbol **osympp = NULL; /* Output symbols that survive stripping. */
+
+/* If `copy_byte' >= 0, copy 'copy_width' byte(s) of every `interleave' bytes. */
+static int copy_byte = -1;
+static int interleave = 0; /* Initialised to 4 in copy_main(). */
+static int copy_width = 1;
+
+static bfd_boolean verbose; /* Print file and target names. */
+static bfd_boolean preserve_dates; /* Preserve input file timestamp. */
+static int deterministic = -1; /* Enable deterministic archives. */
+static int status = 0; /* Exit status. */
+
+enum strip_action
+ {
+ STRIP_UNDEF,
+ STRIP_NONE, /* Don't strip. */
+ STRIP_DEBUG, /* Strip all debugger symbols. */
+ STRIP_UNNEEDED, /* Strip unnecessary symbols. */
+ STRIP_NONDEBUG, /* Strip everything but debug info. */
+ STRIP_DWO, /* Strip all DWO info. */
+ STRIP_NONDWO, /* Strip everything but DWO info. */
+ STRIP_ALL /* Strip all symbols. */
+ };
+
+/* Which symbols to remove. */
+static enum strip_action strip_symbols = STRIP_UNDEF;
+
+enum locals_action
+ {
+ LOCALS_UNDEF,
+ LOCALS_START_L, /* Discard locals starting with L. */
+ LOCALS_ALL /* Discard all locals. */
+ };
+
+/* Which local symbols to remove. Overrides STRIP_ALL. */
+static enum locals_action discard_locals;
+
+/* Structure used to hold lists of sections and actions to take. */
+struct section_list
+{
+ struct section_list * next; /* Next section to change. */
+ const char * pattern; /* Section name pattern. */
+ bfd_boolean used; /* Whether this entry was used. */
+
+ unsigned int context; /* What to do with matching sections. */
+ /* Flag bits used in the context field.
+ COPY and REMOVE are mutually exlusive. SET and ALTER are mutually exclusive. */
+#define SECTION_CONTEXT_REMOVE (1 << 0) /* Remove this section. */
+#define SECTION_CONTEXT_COPY (1 << 1) /* Copy this section, delete all non-copied section. */
+#define SECTION_CONTEXT_SET_VMA (1 << 2) /* Set the sections' VMA address. */
+#define SECTION_CONTEXT_ALTER_VMA (1 << 3) /* Increment or decrement the section's VMA address. */
+#define SECTION_CONTEXT_SET_LMA (1 << 4) /* Set the sections' LMA address. */
+#define SECTION_CONTEXT_ALTER_LMA (1 << 5) /* Increment or decrement the section's LMA address. */
+#define SECTION_CONTEXT_SET_FLAGS (1 << 6) /* Set the section's flags. */
+
+ bfd_vma vma_val; /* Amount to change by or set to. */
+ bfd_vma lma_val; /* Amount to change by or set to. */
+ flagword flags; /* What to set the section flags to. */
+};
+
+static struct section_list *change_sections;
+
+/* TRUE if some sections are to be removed. */
+static bfd_boolean sections_removed;
+
+/* TRUE if only some sections are to be copied. */
+static bfd_boolean sections_copied;
+
+/* Changes to the start address. */
+static bfd_vma change_start = 0;
+static bfd_boolean set_start_set = FALSE;
+static bfd_vma set_start;
+
+/* Changes to section addresses. */
+static bfd_vma change_section_address = 0;
+
+/* Filling gaps between sections. */
+static bfd_boolean gap_fill_set = FALSE;
+static bfd_byte gap_fill = 0;
+
+/* Pad to a given address. */
+static bfd_boolean pad_to_set = FALSE;
+static bfd_vma pad_to;
+
+/* Use alternative machine code? */
+static unsigned long use_alt_mach_code = 0;
+
+/* Output BFD flags user wants to set or clear */
+static flagword bfd_flags_to_set;
+static flagword bfd_flags_to_clear;
+
+/* List of sections to add. */
+struct section_add
+{
+ /* Next section to add. */
+ struct section_add *next;
+ /* Name of section to add. */
+ const char *name;
+ /* Name of file holding section contents. */
+ const char *filename;
+ /* Size of file. */
+ size_t size;
+ /* Contents of file. */
+ bfd_byte *contents;
+ /* BFD section, after it has been added. */
+ asection *section;
+};
+
+/* List of sections to add to the output BFD. */
+static struct section_add *add_sections;
+
+/* If non-NULL the argument to --add-gnu-debuglink.
+ This should be the filename to store in the .gnu_debuglink section. */
+static const char * gnu_debuglink_filename = NULL;
+
+/* Whether to convert debugging information. */
+static bfd_boolean convert_debugging = FALSE;
+
+/* Whether to compress/decompress DWARF debug sections. */
+static enum
+{
+ nothing,
+ compress,
+ decompress
+} do_debug_sections = nothing;
+
+/* Whether to change the leading character in symbol names. */
+static bfd_boolean change_leading_char = FALSE;
+
+/* Whether to remove the leading character from global symbol names. */
+static bfd_boolean remove_leading_char = FALSE;
+
+/* Whether to permit wildcard in symbol comparison. */
+static bfd_boolean wildcard = FALSE;
+
+/* True if --localize-hidden is in effect. */
+static bfd_boolean localize_hidden = FALSE;
+
+/* List of symbols to strip, keep, localize, keep-global, weaken,
+ or redefine. */
+static htab_t strip_specific_htab = NULL;
+static htab_t strip_unneeded_htab = NULL;
+static htab_t keep_specific_htab = NULL;
+static htab_t localize_specific_htab = NULL;
+static htab_t globalize_specific_htab = NULL;
+static htab_t keepglobal_specific_htab = NULL;
+static htab_t weaken_specific_htab = NULL;
+static struct redefine_node *redefine_sym_list = NULL;
+
+/* If this is TRUE, we weaken global symbols (set BSF_WEAK). */
+static bfd_boolean weaken = FALSE;
+
+/* If this is TRUE, we retain BSF_FILE symbols. */
+static bfd_boolean keep_file_symbols = FALSE;
+
+/* Prefix symbols/sections. */
+static char *prefix_symbols_string = 0;
+static char *prefix_sections_string = 0;
+static char *prefix_alloc_sections_string = 0;
+
+/* True if --extract-symbol was passed on the command line. */
+static bfd_boolean extract_symbol = FALSE;
+
+/* If `reverse_bytes' is nonzero, then reverse the order of every chunk
+ of <reverse_bytes> bytes within each output section. */
+static int reverse_bytes = 0;
+
+/* For Coff objects, we may want to allow or disallow long section names,
+ or preserve them where found in the inputs. Debug info relies on them. */
+enum long_section_name_handling
+ {
+ DISABLE,
+ ENABLE,
+ KEEP
+ };
+
+/* The default long section handling mode is to preserve them.
+ This is also the only behaviour for 'strip'. */
+static enum long_section_name_handling long_section_names = KEEP;
+
+/* 150 isn't special; it's just an arbitrary non-ASCII char value. */
+enum command_line_switch
+ {
+ OPTION_ADD_SECTION=150,
+ OPTION_CHANGE_ADDRESSES,
+ OPTION_CHANGE_LEADING_CHAR,
+ OPTION_CHANGE_START,
+ OPTION_CHANGE_SECTION_ADDRESS,
+ OPTION_CHANGE_SECTION_LMA,
+ OPTION_CHANGE_SECTION_VMA,
+ OPTION_CHANGE_WARNINGS,
+ OPTION_COMPRESS_DEBUG_SECTIONS,
+ OPTION_DEBUGGING,
+ OPTION_DECOMPRESS_DEBUG_SECTIONS,
+ OPTION_GAP_FILL,
+ OPTION_NO_CHANGE_WARNINGS,
+ OPTION_PAD_TO,
+ OPTION_REMOVE_LEADING_CHAR,
+ OPTION_SET_SECTION_FLAGS,
+ OPTION_SET_START,
+ OPTION_STRIP_UNNEEDED,
+ OPTION_WEAKEN,
+ OPTION_REDEFINE_SYM,
+ OPTION_REDEFINE_SYMS,
+ OPTION_SREC_LEN,
+ OPTION_SREC_FORCES3,
+ OPTION_STRIP_SYMBOLS,
+ OPTION_STRIP_UNNEEDED_SYMBOL,
+ OPTION_STRIP_UNNEEDED_SYMBOLS,
+ OPTION_KEEP_SYMBOLS,
+ OPTION_LOCALIZE_HIDDEN,
+ OPTION_LOCALIZE_SYMBOLS,
+ OPTION_LONG_SECTION_NAMES,
+ OPTION_GLOBALIZE_SYMBOL,
+ OPTION_GLOBALIZE_SYMBOLS,
+ OPTION_KEEPGLOBAL_SYMBOLS,
+ OPTION_WEAKEN_SYMBOLS,
+ OPTION_RENAME_SECTION,
+ OPTION_ALT_MACH_CODE,
+ OPTION_PREFIX_SYMBOLS,
+ OPTION_PREFIX_SECTIONS,
+ OPTION_PREFIX_ALLOC_SECTIONS,
+ OPTION_FORMATS_INFO,
+ OPTION_ADD_GNU_DEBUGLINK,
+ OPTION_ONLY_KEEP_DEBUG,
+ OPTION_KEEP_FILE_SYMBOLS,
+ OPTION_READONLY_TEXT,
+ OPTION_WRITABLE_TEXT,
+ OPTION_PURE,
+ OPTION_IMPURE,
+ OPTION_EXTRACT_SYMBOL,
+ OPTION_REVERSE_BYTES,
+ OPTION_FILE_ALIGNMENT,
+ OPTION_HEAP,
+ OPTION_IMAGE_BASE,
+ OPTION_SECTION_ALIGNMENT,
+ OPTION_STACK,
+ OPTION_INTERLEAVE_WIDTH,
+ OPTION_SUBSYSTEM,
+ OPTION_EXTRACT_DWO,
+ OPTION_STRIP_DWO
+ };
+
+/* Options to handle if running as "strip". */
+
+static struct option strip_options[] =
+{
+ {"disable-deterministic-archives", no_argument, 0, 'U'},
+ {"discard-all", no_argument, 0, 'x'},
+ {"discard-locals", no_argument, 0, 'X'},
+ {"enable-deterministic-archives", no_argument, 0, 'D'},
+ {"format", required_argument, 0, 'F'}, /* Obsolete */
+ {"help", no_argument, 0, 'h'},
+ {"info", no_argument, 0, OPTION_FORMATS_INFO},
+ {"input-format", required_argument, 0, 'I'}, /* Obsolete */
+ {"input-target", required_argument, 0, 'I'},
+ {"keep-file-symbols", no_argument, 0, OPTION_KEEP_FILE_SYMBOLS},
+ {"keep-symbol", required_argument, 0, 'K'},
+ {"only-keep-debug", no_argument, 0, OPTION_ONLY_KEEP_DEBUG},
+ {"output-format", required_argument, 0, 'O'}, /* Obsolete */
+ {"output-target", required_argument, 0, 'O'},
+ {"output-file", required_argument, 0, 'o'},
+ {"preserve-dates", no_argument, 0, 'p'},
+ {"remove-section", required_argument, 0, 'R'},
+ {"strip-all", no_argument, 0, 's'},
+ {"strip-debug", no_argument, 0, 'S'},
+ {"strip-dwo", no_argument, 0, OPTION_STRIP_DWO},
+ {"strip-unneeded", no_argument, 0, OPTION_STRIP_UNNEEDED},
+ {"strip-symbol", required_argument, 0, 'N'},
+ {"target", required_argument, 0, 'F'},
+ {"verbose", no_argument, 0, 'v'},
+ {"version", no_argument, 0, 'V'},
+ {"wildcard", no_argument, 0, 'w'},
+ {0, no_argument, 0, 0}
+};
+
+/* Options to handle if running as "objcopy". */
+
+static struct option copy_options[] =
+{
+ {"add-gnu-debuglink", required_argument, 0, OPTION_ADD_GNU_DEBUGLINK},
+ {"add-section", required_argument, 0, OPTION_ADD_SECTION},
+ {"adjust-start", required_argument, 0, OPTION_CHANGE_START},
+ {"adjust-vma", required_argument, 0, OPTION_CHANGE_ADDRESSES},
+ {"adjust-section-vma", required_argument, 0, OPTION_CHANGE_SECTION_ADDRESS},
+ {"adjust-warnings", no_argument, 0, OPTION_CHANGE_WARNINGS},
+ {"alt-machine-code", required_argument, 0, OPTION_ALT_MACH_CODE},
+ {"binary-architecture", required_argument, 0, 'B'},
+ {"byte", required_argument, 0, 'b'},
+ {"change-addresses", required_argument, 0, OPTION_CHANGE_ADDRESSES},
+ {"change-leading-char", no_argument, 0, OPTION_CHANGE_LEADING_CHAR},
+ {"change-section-address", required_argument, 0, OPTION_CHANGE_SECTION_ADDRESS},
+ {"change-section-lma", required_argument, 0, OPTION_CHANGE_SECTION_LMA},
+ {"change-section-vma", required_argument, 0, OPTION_CHANGE_SECTION_VMA},
+ {"change-start", required_argument, 0, OPTION_CHANGE_START},
+ {"change-warnings", no_argument, 0, OPTION_CHANGE_WARNINGS},
+ {"compress-debug-sections", no_argument, 0, OPTION_COMPRESS_DEBUG_SECTIONS},
+ {"debugging", no_argument, 0, OPTION_DEBUGGING},
+ {"decompress-debug-sections", no_argument, 0, OPTION_DECOMPRESS_DEBUG_SECTIONS},
+ {"disable-deterministic-archives", no_argument, 0, 'U'},
+ {"discard-all", no_argument, 0, 'x'},
+ {"discard-locals", no_argument, 0, 'X'},
+ {"enable-deterministic-archives", no_argument, 0, 'D'},
+ {"extract-dwo", no_argument, 0, OPTION_EXTRACT_DWO},
+ {"extract-symbol", no_argument, 0, OPTION_EXTRACT_SYMBOL},
+ {"format", required_argument, 0, 'F'}, /* Obsolete */
+ {"gap-fill", required_argument, 0, OPTION_GAP_FILL},
+ {"globalize-symbol", required_argument, 0, OPTION_GLOBALIZE_SYMBOL},
+ {"globalize-symbols", required_argument, 0, OPTION_GLOBALIZE_SYMBOLS},
+ {"help", no_argument, 0, 'h'},
+ {"impure", no_argument, 0, OPTION_IMPURE},
+ {"info", no_argument, 0, OPTION_FORMATS_INFO},
+ {"input-format", required_argument, 0, 'I'}, /* Obsolete */
+ {"input-target", required_argument, 0, 'I'},
+ {"interleave", optional_argument, 0, 'i'},
+ {"interleave-width", required_argument, 0, OPTION_INTERLEAVE_WIDTH},
+ {"keep-file-symbols", no_argument, 0, OPTION_KEEP_FILE_SYMBOLS},
+ {"keep-global-symbol", required_argument, 0, 'G'},
+ {"keep-global-symbols", required_argument, 0, OPTION_KEEPGLOBAL_SYMBOLS},
+ {"keep-symbol", required_argument, 0, 'K'},
+ {"keep-symbols", required_argument, 0, OPTION_KEEP_SYMBOLS},
+ {"localize-hidden", no_argument, 0, OPTION_LOCALIZE_HIDDEN},
+ {"localize-symbol", required_argument, 0, 'L'},
+ {"localize-symbols", required_argument, 0, OPTION_LOCALIZE_SYMBOLS},
+ {"long-section-names", required_argument, 0, OPTION_LONG_SECTION_NAMES},
+ {"no-adjust-warnings", no_argument, 0, OPTION_NO_CHANGE_WARNINGS},
+ {"no-change-warnings", no_argument, 0, OPTION_NO_CHANGE_WARNINGS},
+ {"only-keep-debug", no_argument, 0, OPTION_ONLY_KEEP_DEBUG},
+ {"only-section", required_argument, 0, 'j'},
+ {"output-format", required_argument, 0, 'O'}, /* Obsolete */
+ {"output-target", required_argument, 0, 'O'},
+ {"pad-to", required_argument, 0, OPTION_PAD_TO},
+ {"prefix-symbols", required_argument, 0, OPTION_PREFIX_SYMBOLS},
+ {"prefix-sections", required_argument, 0, OPTION_PREFIX_SECTIONS},
+ {"prefix-alloc-sections", required_argument, 0, OPTION_PREFIX_ALLOC_SECTIONS},
+ {"preserve-dates", no_argument, 0, 'p'},
+ {"pure", no_argument, 0, OPTION_PURE},
+ {"readonly-text", no_argument, 0, OPTION_READONLY_TEXT},
+ {"redefine-sym", required_argument, 0, OPTION_REDEFINE_SYM},
+ {"redefine-syms", required_argument, 0, OPTION_REDEFINE_SYMS},
+ {"remove-leading-char", no_argument, 0, OPTION_REMOVE_LEADING_CHAR},
+ {"remove-section", required_argument, 0, 'R'},
+ {"rename-section", required_argument, 0, OPTION_RENAME_SECTION},
+ {"reverse-bytes", required_argument, 0, OPTION_REVERSE_BYTES},
+ {"set-section-flags", required_argument, 0, OPTION_SET_SECTION_FLAGS},
+ {"set-start", required_argument, 0, OPTION_SET_START},
+ {"srec-len", required_argument, 0, OPTION_SREC_LEN},
+ {"srec-forceS3", no_argument, 0, OPTION_SREC_FORCES3},
+ {"strip-all", no_argument, 0, 'S'},
+ {"strip-debug", no_argument, 0, 'g'},
+ {"strip-dwo", no_argument, 0, OPTION_STRIP_DWO},
+ {"strip-unneeded", no_argument, 0, OPTION_STRIP_UNNEEDED},
+ {"strip-unneeded-symbol", required_argument, 0, OPTION_STRIP_UNNEEDED_SYMBOL},
+ {"strip-unneeded-symbols", required_argument, 0, OPTION_STRIP_UNNEEDED_SYMBOLS},
+ {"strip-symbol", required_argument, 0, 'N'},
+ {"strip-symbols", required_argument, 0, OPTION_STRIP_SYMBOLS},
+ {"target", required_argument, 0, 'F'},
+ {"verbose", no_argument, 0, 'v'},
+ {"version", no_argument, 0, 'V'},
+ {"weaken", no_argument, 0, OPTION_WEAKEN},
+ {"weaken-symbol", required_argument, 0, 'W'},
+ {"weaken-symbols", required_argument, 0, OPTION_WEAKEN_SYMBOLS},
+ {"wildcard", no_argument, 0, 'w'},
+ {"writable-text", no_argument, 0, OPTION_WRITABLE_TEXT},
+ {"file-alignment", required_argument, 0, OPTION_FILE_ALIGNMENT},
+ {"heap", required_argument, 0, OPTION_HEAP},
+ {"image-base", required_argument, 0 , OPTION_IMAGE_BASE},
+ {"section-alignment", required_argument, 0, OPTION_SECTION_ALIGNMENT},
+ {"stack", required_argument, 0, OPTION_STACK},
+ {"subsystem", required_argument, 0, OPTION_SUBSYSTEM},
+ {0, no_argument, 0, 0}
+};
+
+/* IMPORTS */
+extern char *program_name;
+
+/* This flag distinguishes between strip and objcopy:
+ 1 means this is 'strip'; 0 means this is 'objcopy'.
+ -1 means if we should use argv[0] to decide. */
+extern int is_strip;
+
+/* The maximum length of an S record. This variable is declared in srec.c
+ and can be modified by the --srec-len parameter. */
+extern unsigned int Chunk;
+
+/* Restrict the generation of Srecords to type S3 only.
+ This variable is declare in bfd/srec.c and can be toggled
+ on by the --srec-forceS3 command line switch. */
+extern bfd_boolean S3Forced;
+
+/* Forward declarations. */
+static void setup_section (bfd *, asection *, void *);
+static void setup_bfd_headers (bfd *, bfd *);
+static void copy_relocations_in_section (bfd *, asection *, void *);
+static void copy_section (bfd *, asection *, void *);
+static void get_sections (bfd *, asection *, void *);
+static int compare_section_lma (const void *, const void *);
+static void mark_symbols_used_in_relocations (bfd *, asection *, void *);
+static bfd_boolean write_debugging_info (bfd *, void *, long *, asymbol ***);
+static const char *lookup_sym_redefinition (const char *);
+
+static void
+copy_usage (FILE *stream, int exit_status)
+{
+ fprintf (stream, _("Usage: %s [option(s)] in-file [out-file]\n"), program_name);
+ fprintf (stream, _(" Copies a binary file, possibly transforming it in the process\n"));
+ fprintf (stream, _(" The options are:\n"));
+ fprintf (stream, _("\
+ -I --input-target <bfdname> Assume input file is in format <bfdname>\n\
+ -O --output-target <bfdname> Create an output file in format <bfdname>\n\
+ -B --binary-architecture <arch> Set output arch, when input is arch-less\n\
+ -F --target <bfdname> Set both input and output format to <bfdname>\n\
+ --debugging Convert debugging information, if possible\n\
+ -p --preserve-dates Copy modified/access timestamps to the output\n"));
+ if (DEFAULT_AR_DETERMINISTIC)
+ fprintf (stream, _("\
+ -D --enable-deterministic-archives\n\
+ Produce deterministic output when stripping archives (default)\n\
+ -U --disable-deterministic-archives\n\
+ Disable -D behavior\n"));
+ else
+ fprintf (stream, _("\
+ -D --enable-deterministic-archives\n\
+ Produce deterministic output when stripping archives\n\
+ -U --disable-deterministic-archives\n\
+ Disable -D behavior (default)\n"));
+ fprintf (stream, _("\
+ -j --only-section <name> Only copy section <name> into the output\n\
+ --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n\
+ -R --remove-section <name> Remove section <name> from the output\n\
+ -S --strip-all Remove all symbol and relocation information\n\
+ -g --strip-debug Remove all debugging symbols & sections\n\
+ --strip-dwo Remove all DWO sections\n\
+ --strip-unneeded Remove all symbols not needed by relocations\n\
+ -N --strip-symbol <name> Do not copy symbol <name>\n\
+ --strip-unneeded-symbol <name>\n\
+ Do not copy symbol <name> unless needed by\n\
+ relocations\n\
+ --only-keep-debug Strip everything but the debug information\n\
+ --extract-dwo Copy only DWO sections\n\
+ --extract-symbol Remove section contents but keep symbols\n\
+ -K --keep-symbol <name> Do not strip symbol <name>\n\
+ --keep-file-symbols Do not strip file symbol(s)\n\
+ --localize-hidden Turn all ELF hidden symbols into locals\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\
+ -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\
+ -i --interleave [<number>] Only copy N out of every <number> bytes\n\
+ --interleave-width <number> Set N for --interleave\n\
+ -b --byte <num> Select byte <num> in every interleaved block\n\
+ --gap-fill <val> Fill gaps between sections with <val>\n\
+ --pad-to <addr> Pad the last section up to address <addr>\n\
+ --set-start <addr> Set the start address to <addr>\n\
+ {--change-start|--adjust-start} <incr>\n\
+ Add <incr> to the start address\n\
+ {--change-addresses|--adjust-vma} <incr>\n\
+ Add <incr> to LMA, VMA and start addresses\n\
+ {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n\
+ Change LMA and VMA of section <name> by <val>\n\
+ --change-section-lma <name>{=|+|-}<val>\n\
+ Change the LMA of section <name> by <val>\n\
+ --change-section-vma <name>{=|+|-}<val>\n\
+ Change the VMA of section <name> by <val>\n\
+ {--[no-]change-warnings|--[no-]adjust-warnings}\n\
+ Warn if a named section does not exist\n\
+ --set-section-flags <name>=<flags>\n\
+ Set section <name>'s properties to <flags>\n\
+ --add-section <name>=<file> Add section <name> found in <file> to output\n\
+ --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n\
+ --long-section-names {enable|disable|keep}\n\
+ Handle long section names in Coff objects.\n\
+ --change-leading-char Force output format's leading character style\n\
+ --remove-leading-char Remove leading character from global symbols\n\
+ --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n\
+ --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n\
+ --redefine-syms <file> --redefine-sym for all symbol pairs \n\
+ listed in <file>\n\
+ --srec-len <number> Restrict the length of generated Srecords\n\
+ --srec-forceS3 Restrict the type of generated Srecords to S3\n\
+ --strip-symbols <file> -N for all symbols listed in <file>\n\
+ --strip-unneeded-symbols <file>\n\
+ --strip-unneeded-symbol for all symbols listed\n\
+ 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 the target's <index>'th alternative machine\n\
+ --writable-text Mark the output text as writable\n\
+ --readonly-text Make the output text write protected\n\
+ --pure Mark the output file as demand paged\n\
+ --impure Mark the output file as impure\n\
+ --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n\
+ --prefix-sections <prefix> Add <prefix> to start of every section name\n\
+ --prefix-alloc-sections <prefix>\n\
+ Add <prefix> to start of every allocatable\n\
+ section name\n\
+ --file-alignment <num> Set PE file alignment to <num>\n\
+ --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n\
+ <commit>\n\
+ --image-base <address> Set PE image base to <address>\n\
+ --section-alignment <num> Set PE section alignment to <num>\n\
+ --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n\
+ <commit>\n\
+ --subsystem <name>[:<version>]\n\
+ Set PE subsystem to <name> [& <version>]\n\
+ --compress-debug-sections Compress DWARF debug sections using zlib\n\
+ --decompress-debug-sections Decompress DWARF debug sections using zlib\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\
+"));
+ list_supported_targets (program_name, stream);
+ if (REPORT_BUGS_TO[0] && exit_status == 0)
+ fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+ exit (exit_status);
+}
+
+static void
+strip_usage (FILE *stream, int exit_status)
+{
+ fprintf (stream, _("Usage: %s <option(s)> in-file(s)\n"), program_name);
+ fprintf (stream, _(" Removes symbols and sections from files\n"));
+ fprintf (stream, _(" The options are:\n"));
+ fprintf (stream, _("\
+ -I --input-target=<bfdname> Assume input file is in format <bfdname>\n\
+ -O --output-target=<bfdname> Create an output file in format <bfdname>\n\
+ -F --target=<bfdname> Set both input and output format to <bfdname>\n\
+ -p --preserve-dates Copy modified/access timestamps to the output\n\
+"));
+ if (DEFAULT_AR_DETERMINISTIC)
+ fprintf (stream, _("\
+ -D --enable-deterministic-archives\n\
+ Produce deterministic output when stripping archives (default)\n\
+ -U --disable-deterministic-archives\n\
+ Disable -D behavior\n"));
+ else
+ fprintf (stream, _("\
+ -D --enable-deterministic-archives\n\
+ Produce deterministic output when stripping archives\n\
+ -U --disable-deterministic-archives\n\
+ Disable -D behavior (default)\n"));
+ fprintf (stream, _("\
+ -R --remove-section=<name> Remove section <name> from the output\n\
+ -s --strip-all Remove all symbol and relocation information\n\
+ -g -S -d --strip-debug Remove all debugging symbols & sections\n\
+ --strip-dwo Remove all DWO sections\n\
+ --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> Do not strip symbol <name>\n\
+ --keep-file-symbols Do not strip file symbol(s)\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\
+ -v --verbose List all object files modified\n\
+ -V --version Display this program's version number\n\
+ -h --help Display this output\n\
+ --info List object formats & architectures supported\n\
+ -o <file> Place stripped output into <file>\n\
+"));
+
+ list_supported_targets (program_name, stream);
+ if (REPORT_BUGS_TO[0] && exit_status == 0)
+ fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+ exit (exit_status);
+}
+
+/* Parse section flags into a flagword, with a fatal error if the
+ string can't be parsed. */
+
+static flagword
+parse_flags (const char *s)
+{
+ flagword ret;
+ const char *snext;
+ int len;
+
+ ret = SEC_NO_FLAGS;
+
+ do
+ {
+ snext = strchr (s, ',');
+ if (snext == NULL)
+ len = strlen (s);
+ else
+ {
+ len = snext - s;
+ ++snext;
+ }
+
+ if (0) ;
+#define PARSE_FLAG(fname,fval) \
+ else if (strncasecmp (fname, s, len) == 0) ret |= fval
+ PARSE_FLAG ("alloc", SEC_ALLOC);
+ PARSE_FLAG ("load", SEC_LOAD);
+ PARSE_FLAG ("noload", SEC_NEVER_LOAD);
+ PARSE_FLAG ("readonly", SEC_READONLY);
+ PARSE_FLAG ("debug", SEC_DEBUGGING);
+ PARSE_FLAG ("code", SEC_CODE);
+ PARSE_FLAG ("data", SEC_DATA);
+ PARSE_FLAG ("rom", SEC_ROM);
+ PARSE_FLAG ("share", SEC_COFF_SHARED);
+ PARSE_FLAG ("contents", SEC_HAS_CONTENTS);
+ PARSE_FLAG ("merge", SEC_MERGE);
+ PARSE_FLAG ("strings", SEC_STRINGS);
+#undef PARSE_FLAG
+ else
+ {
+ char *copy;
+
+ copy = (char *) xmalloc (len + 1);
+ strncpy (copy, s, len);
+ copy[len] = '\0';
+ non_fatal (_("unrecognized section flag `%s'"), copy);
+ fatal (_("supported flags: %s"),
+ "alloc, load, noload, readonly, debug, code, data, rom, share, contents, merge, strings");
+ }
+
+ s = snext;
+ }
+ while (s != NULL);
+
+ return ret;
+}
+
+/* Find and optionally add an entry in the change_sections list.
+
+ We need to be careful in how we match section names because of the support
+ for wildcard characters. For example suppose that the user has invoked
+ objcopy like this:
+
+ --set-section-flags .debug_*=debug
+ --set-section-flags .debug_str=readonly,debug
+ --change-section-address .debug_*ranges=0x1000
+
+ With the idea that all debug sections will receive the DEBUG flag, the
+ .debug_str section will also receive the READONLY flag and the
+ .debug_ranges and .debug_aranges sections will have their address set to
+ 0x1000. (This may not make much sense, but it is just an example).
+
+ When adding the section name patterns to the section list we need to make
+ sure that previous entries do not match with the new entry, unless the
+ match is exact. (In which case we assume that the user is overriding
+ the previous entry with the new context).
+
+ When matching real section names to the section list we make use of the
+ wildcard characters, but we must do so in context. Eg if we are setting
+ section addresses then we match for .debug_ranges but not for .debug_info.
+
+ Finally, if ADD is false and we do find a match, we mark the section list
+ entry as used. */
+
+static struct section_list *
+find_section_list (const char *name, bfd_boolean add, unsigned int context)
+{
+ struct section_list *p;
+
+ /* assert ((context & ((1 << 7) - 1)) != 0); */
+
+ for (p = change_sections; p != NULL; p = p->next)
+ {
+ if (add)
+ {
+ if (strcmp (p->pattern, name) == 0)
+ {
+ /* Check for context conflicts. */
+ if (((p->context & SECTION_CONTEXT_REMOVE)
+ && (context & SECTION_CONTEXT_COPY))
+ || ((context & SECTION_CONTEXT_REMOVE)
+ && (p->context & SECTION_CONTEXT_COPY)))
+ fatal (_("error: %s both copied and removed"), name);
+
+ if (((p->context & SECTION_CONTEXT_SET_VMA)
+ && (context & SECTION_CONTEXT_ALTER_VMA))
+ || ((context & SECTION_CONTEXT_SET_VMA)
+ && (context & SECTION_CONTEXT_ALTER_VMA)))
+ fatal (_("error: %s both sets and alters VMA"), name);
+
+ if (((p->context & SECTION_CONTEXT_SET_LMA)
+ && (context & SECTION_CONTEXT_ALTER_LMA))
+ || ((context & SECTION_CONTEXT_SET_LMA)
+ && (context & SECTION_CONTEXT_ALTER_LMA)))
+ fatal (_("error: %s both sets and alters LMA"), name);
+
+ /* Extend the context. */
+ p->context |= context;
+ return p;
+ }
+ }
+ /* If we are not adding a new name/pattern then
+ only check for a match if the context applies. */
+ else if ((p->context & context)
+ /* We could check for the presence of wildchar characters
+ first and choose between calling strcmp and fnmatch,
+ but is that really worth it ? */
+ && fnmatch (p->pattern, name, 0) == 0)
+ {
+ p->used = TRUE;
+ return p;
+ }
+ }
+
+ if (! add)
+ return NULL;
+
+ p = (struct section_list *) xmalloc (sizeof (struct section_list));
+ p->pattern = name;
+ p->used = FALSE;
+ p->context = context;
+ p->vma_val = 0;
+ p->lma_val = 0;
+ p->flags = 0;
+ p->next = change_sections;
+ change_sections = p;
+
+ return p;
+}
+
+/* There is htab_hash_string but no htab_eq_string. Makes sense. */
+
+static int
+eq_string (const void *s1, const void *s2)
+{
+ return strcmp ((const char *) s1, (const char *) s2) == 0;
+}
+
+static htab_t
+create_symbol_htab (void)
+{
+ return htab_create_alloc (16, htab_hash_string, eq_string, NULL, xcalloc, free);
+}
+
+static void
+create_symbol_htabs (void)
+{
+ strip_specific_htab = create_symbol_htab ();
+ strip_unneeded_htab = create_symbol_htab ();
+ keep_specific_htab = create_symbol_htab ();
+ localize_specific_htab = create_symbol_htab ();
+ globalize_specific_htab = create_symbol_htab ();
+ keepglobal_specific_htab = create_symbol_htab ();
+ weaken_specific_htab = create_symbol_htab ();
+}
+
+/* Add a symbol to strip_specific_list. */
+
+static void
+add_specific_symbol (const char *name, htab_t htab)
+{
+ *htab_find_slot (htab, name, INSERT) = (char *) name;
+}
+
+/* Add symbols listed in `filename' to strip_specific_list. */
+
+#define IS_WHITESPACE(c) ((c) == ' ' || (c) == '\t')
+#define IS_LINE_TERMINATOR(c) ((c) == '\n' || (c) == '\r' || (c) == '\0')
+
+static void
+add_specific_symbols (const char *filename, htab_t htab)
+{
+ off_t size;
+ FILE * f;
+ char * line;
+ char * buffer;
+ unsigned int line_count;
+
+ size = get_file_size (filename);
+ if (size == 0)
+ {
+ status = 1;
+ return;
+ }
+
+ buffer = (char *) xmalloc (size + 2);
+ f = fopen (filename, FOPEN_RT);
+ if (f == NULL)
+ fatal (_("cannot open '%s': %s"), filename, strerror (errno));
+
+ if (fread (buffer, 1, size, f) == 0 || ferror (f))
+ fatal (_("%s: fread failed"), filename);
+
+ fclose (f);
+ buffer [size] = '\n';
+ buffer [size + 1] = '\0';
+
+ line_count = 1;
+
+ for (line = buffer; * line != '\0'; line ++)
+ {
+ char * eol;
+ char * name;
+ char * name_end;
+ int finished = FALSE;
+
+ for (eol = line;; eol ++)
+ {
+ switch (* eol)
+ {
+ case '\n':
+ * eol = '\0';
+ /* Cope with \n\r. */
+ if (eol[1] == '\r')
+ ++ eol;
+ finished = TRUE;
+ break;
+
+ case '\r':
+ * eol = '\0';
+ /* Cope with \r\n. */
+ if (eol[1] == '\n')
+ ++ eol;
+ finished = TRUE;
+ break;
+
+ case 0:
+ finished = TRUE;
+ break;
+
+ case '#':
+ /* Line comment, Terminate the line here, in case a
+ name is present and then allow the rest of the
+ loop to find the real end of the line. */
+ * eol = '\0';
+ break;
+
+ default:
+ break;
+ }
+
+ if (finished)
+ break;
+ }
+
+ /* A name may now exist somewhere between 'line' and 'eol'.
+ Strip off leading whitespace and trailing whitespace,
+ then add it to the list. */
+ for (name = line; IS_WHITESPACE (* name); name ++)
+ ;
+ for (name_end = name;
+ (! IS_WHITESPACE (* name_end))
+ && (! IS_LINE_TERMINATOR (* name_end));
+ name_end ++)
+ ;
+
+ if (! IS_LINE_TERMINATOR (* name_end))
+ {
+ char * extra;
+
+ for (extra = name_end + 1; IS_WHITESPACE (* extra); extra ++)
+ ;
+
+ if (! IS_LINE_TERMINATOR (* extra))
+ non_fatal (_("%s:%d: Ignoring rubbish found on this line"),
+ filename, line_count);
+ }
+
+ * name_end = '\0';
+
+ if (name_end > name)
+ add_specific_symbol (name, htab);
+
+ /* Advance line pointer to end of line. The 'eol ++' in the for
+ loop above will then advance us to the start of the next line. */
+ line = eol;
+ line_count ++;
+ }
+}
+
+/* See whether a symbol should be stripped or kept
+ based on strip_specific_list and keep_symbols. */
+
+static int
+is_specified_symbol_predicate (void **slot, void *data)
+{
+ struct is_specified_symbol_predicate_data *d =
+ (struct is_specified_symbol_predicate_data *) data;
+ const char *slot_name = (char *) *slot;
+
+ if (*slot_name != '!')
+ {
+ if (! fnmatch (slot_name, d->name, 0))
+ {
+ d->found = TRUE;
+ /* Stop traversal. */
+ return 0;
+ }
+ }
+ else
+ {
+ if (fnmatch (slot_name + 1, d->name, 0))
+ {
+ d->found = TRUE;
+ /* Stop traversal. */
+ return 0;
+ }
+ }
+
+ /* Continue traversal. */
+ return 1;
+}
+
+static bfd_boolean
+is_specified_symbol (const char *name, htab_t htab)
+{
+ if (wildcard)
+ {
+ struct is_specified_symbol_predicate_data data;
+
+ data.name = name;
+ data.found = FALSE;
+
+ htab_traverse (htab, is_specified_symbol_predicate, &data);
+
+ return data.found;
+ }
+
+ return htab_find (htab, name) != NULL;
+}
+
+/* Return a pointer to the symbol used as a signature for GROUP. */
+
+static asymbol *
+group_signature (asection *group)
+{
+ bfd *abfd = group->owner;
+ Elf_Internal_Shdr *ghdr;
+
+ if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
+ return NULL;
+
+ ghdr = &elf_section_data (group)->this_hdr;
+ if (ghdr->sh_link < elf_numsections (abfd))
+ {
+ const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+ Elf_Internal_Shdr *symhdr = elf_elfsections (abfd) [ghdr->sh_link];
+
+ if (symhdr->sh_type == SHT_SYMTAB
+ && ghdr->sh_info < symhdr->sh_size / bed->s->sizeof_sym)
+ return isympp[ghdr->sh_info - 1];
+ }
+ return NULL;
+}
+
+/* Return TRUE if the section is a DWO section. */
+
+static bfd_boolean
+is_dwo_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
+{
+ const char *name = bfd_get_section_name (abfd, sec);
+ int len = strlen (name);
+
+ return strncmp (name + len - 4, ".dwo", 4) == 0;
+}
+
+/* See if a non-group section is being removed. */
+
+static bfd_boolean
+is_strip_section_1 (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
+{
+ if (sections_removed || sections_copied)
+ {
+ struct section_list *p;
+ struct section_list *q;
+
+ p = find_section_list (bfd_get_section_name (abfd, sec), FALSE,
+ SECTION_CONTEXT_REMOVE);
+ q = find_section_list (bfd_get_section_name (abfd, sec), FALSE,
+ SECTION_CONTEXT_COPY);
+
+ if (p && q)
+ fatal (_("error: section %s matches both remove and copy options"),
+ bfd_get_section_name (abfd, sec));
+
+ if (p != NULL)
+ return TRUE;
+ if (sections_copied && q == NULL)
+ return TRUE;
+ }
+
+ if ((bfd_get_section_flags (abfd, sec) & SEC_DEBUGGING) != 0)
+ {
+ if (strip_symbols == STRIP_DEBUG
+ || strip_symbols == STRIP_UNNEEDED
+ || strip_symbols == STRIP_ALL
+ || discard_locals == LOCALS_ALL
+ || convert_debugging)
+ {
+ /* By default we don't want to strip .reloc section.
+ This section has for pe-coff special meaning. See
+ pe-dll.c file in ld, and peXXigen.c in bfd for details. */
+ if (strcmp (bfd_get_section_name (abfd, sec), ".reloc") != 0)
+ return TRUE;
+ }
+
+ if (strip_symbols == STRIP_DWO)
+ return is_dwo_section (abfd, sec);
+
+ if (strip_symbols == STRIP_NONDEBUG)
+ return FALSE;
+ }
+
+ if (strip_symbols == STRIP_NONDWO)
+ return !is_dwo_section (abfd, sec);
+
+ return FALSE;
+}
+
+/* See if a section is being removed. */
+
+static bfd_boolean
+is_strip_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
+{
+ if (is_strip_section_1 (abfd, sec))
+ return TRUE;
+
+ if ((bfd_get_section_flags (abfd, sec) & SEC_GROUP) != 0)
+ {
+ asymbol *gsym;
+ const char *gname;
+ asection *elt, *first;
+
+ /* PR binutils/3181
+ If we are going to strip the group signature symbol, then
+ strip the group section too. */
+ gsym = group_signature (sec);
+ if (gsym != NULL)
+ gname = gsym->name;
+ else
+ gname = sec->name;
+ if ((strip_symbols == STRIP_ALL
+ && !is_specified_symbol (gname, keep_specific_htab))
+ || is_specified_symbol (gname, strip_specific_htab))
+ return TRUE;
+
+ /* Remove the group section if all members are removed. */
+ first = elt = elf_next_in_group (sec);
+ while (elt != NULL)
+ {
+ if (!is_strip_section_1 (abfd, elt))
+ return FALSE;
+ elt = elf_next_in_group (elt);
+ if (elt == first)
+ break;
+ }
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+/* Return true if SYM is a hidden symbol. */
+
+static bfd_boolean
+is_hidden_symbol (asymbol *sym)
+{
+ elf_symbol_type *elf_sym;
+
+ elf_sym = elf_symbol_from (sym->the_bfd, sym);
+ if (elf_sym != NULL)
+ switch (ELF_ST_VISIBILITY (elf_sym->internal_elf_sym.st_other))
+ {
+ case STV_HIDDEN:
+ case STV_INTERNAL:
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/* Choose which symbol entries to copy; put the result in OSYMS.
+ We don't copy in place, because that confuses the relocs.
+ Return the number of symbols to print. */
+
+static unsigned int
+filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms,
+ asymbol **isyms, long symcount)
+{
+ asymbol **from = isyms, **to = osyms;
+ long src_count = 0, dst_count = 0;
+ int relocatable = (abfd->flags & (EXEC_P | DYNAMIC)) == 0;
+
+ for (; src_count < symcount; src_count++)
+ {
+ asymbol *sym = from[src_count];
+ flagword flags = sym->flags;
+ char *name = (char *) bfd_asymbol_name (sym);
+ bfd_boolean keep;
+ bfd_boolean used_in_reloc = FALSE;
+ bfd_boolean undefined;
+ bfd_boolean rem_leading_char;
+ bfd_boolean add_leading_char;
+
+ undefined = bfd_is_und_section (bfd_get_section (sym));
+
+ if (redefine_sym_list)
+ {
+ char *old_name, *new_name;
+
+ old_name = (char *) bfd_asymbol_name (sym);
+ new_name = (char *) lookup_sym_redefinition (old_name);
+ bfd_asymbol_name (sym) = new_name;
+ name = new_name;
+ }
+
+ /* Check if we will remove the current leading character. */
+ rem_leading_char =
+ (name[0] == bfd_get_symbol_leading_char (abfd))
+ && (change_leading_char
+ || (remove_leading_char
+ && ((flags & (BSF_GLOBAL | BSF_WEAK)) != 0
+ || undefined
+ || bfd_is_com_section (bfd_get_section (sym)))));
+
+ /* Check if we will add a new leading character. */
+ add_leading_char =
+ change_leading_char
+ && (bfd_get_symbol_leading_char (obfd) != '\0')
+ && (bfd_get_symbol_leading_char (abfd) == '\0'
+ || (name[0] == bfd_get_symbol_leading_char (abfd)));
+
+ /* Short circuit for change_leading_char if we can do it in-place. */
+ if (rem_leading_char && add_leading_char && !prefix_symbols_string)
+ {
+ name[0] = bfd_get_symbol_leading_char (obfd);
+ bfd_asymbol_name (sym) = name;
+ rem_leading_char = FALSE;
+ add_leading_char = FALSE;
+ }
+
+ /* Remove leading char. */
+ if (rem_leading_char)
+ bfd_asymbol_name (sym) = ++name;
+
+ /* Add new leading char and/or prefix. */
+ if (add_leading_char || prefix_symbols_string)
+ {
+ char *n, *ptr;
+
+ ptr = n = (char *) xmalloc (1 + strlen (prefix_symbols_string)
+ + strlen (name) + 1);
+ if (add_leading_char)
+ *ptr++ = bfd_get_symbol_leading_char (obfd);
+
+ if (prefix_symbols_string)
+ {
+ strcpy (ptr, prefix_symbols_string);
+ ptr += strlen (prefix_symbols_string);
+ }
+
+ strcpy (ptr, name);
+ bfd_asymbol_name (sym) = n;
+ name = n;
+ }
+
+ if (strip_symbols == STRIP_ALL)
+ keep = FALSE;
+ else if ((flags & BSF_KEEP) != 0 /* Used in relocation. */
+ || ((flags & BSF_SECTION_SYM) != 0
+ && ((*bfd_get_section (sym)->symbol_ptr_ptr)->flags
+ & BSF_KEEP) != 0))
+ {
+ keep = TRUE;
+ used_in_reloc = TRUE;
+ }
+ else if (relocatable /* Relocatable file. */
+ && ((flags & (BSF_GLOBAL | BSF_WEAK)) != 0
+ || bfd_is_com_section (bfd_get_section (sym))))
+ keep = TRUE;
+ else if (bfd_decode_symclass (sym) == 'I')
+ /* Global symbols in $idata sections need to be retained
+ even if relocatable is FALSE. External users of the
+ library containing the $idata section may reference these
+ symbols. */
+ keep = TRUE;
+ else if ((flags & BSF_GLOBAL) != 0 /* Global symbol. */
+ || (flags & BSF_WEAK) != 0
+ || undefined
+ || bfd_is_com_section (bfd_get_section (sym)))
+ keep = strip_symbols != STRIP_UNNEEDED;
+ else if ((flags & BSF_DEBUGGING) != 0) /* Debugging symbol. */
+ keep = (strip_symbols != STRIP_DEBUG
+ && strip_symbols != STRIP_UNNEEDED
+ && ! convert_debugging);
+ else if (bfd_coff_get_comdat_section (abfd, bfd_get_section (sym)))
+ /* COMDAT sections store special information in local
+ symbols, so we cannot risk stripping any of them. */
+ keep = TRUE;
+ else /* Local symbol. */
+ keep = (strip_symbols != STRIP_UNNEEDED
+ && (discard_locals != LOCALS_ALL
+ && (discard_locals != LOCALS_START_L
+ || ! bfd_is_local_label (abfd, sym))));
+
+ if (keep && is_specified_symbol (name, strip_specific_htab))
+ {
+ /* There are multiple ways to set 'keep' above, but if it
+ was the relocatable symbol case, then that's an error. */
+ if (used_in_reloc)
+ {
+ non_fatal (_("not stripping symbol `%s' because it is named in a relocation"), name);
+ status = 1;
+ }
+ else
+ keep = FALSE;
+ }
+
+ if (keep
+ && !(flags & BSF_KEEP)
+ && is_specified_symbol (name, strip_unneeded_htab))
+ keep = FALSE;
+
+ if (!keep
+ && ((keep_file_symbols && (flags & BSF_FILE))
+ || is_specified_symbol (name, keep_specific_htab)))
+ keep = TRUE;
+
+ if (keep && is_strip_section (abfd, bfd_get_section (sym)))
+ keep = FALSE;
+
+ if (keep)
+ {
+ if ((flags & BSF_GLOBAL) != 0
+ && (weaken || is_specified_symbol (name, weaken_specific_htab)))
+ {
+ sym->flags &= ~ BSF_GLOBAL;
+ sym->flags |= BSF_WEAK;
+ }
+
+ if (!undefined
+ && (flags & (BSF_GLOBAL | BSF_WEAK))
+ && (is_specified_symbol (name, localize_specific_htab)
+ || (htab_elements (keepglobal_specific_htab) != 0
+ && ! is_specified_symbol (name, keepglobal_specific_htab))
+ || (localize_hidden && is_hidden_symbol (sym))))
+ {
+ sym->flags &= ~ (BSF_GLOBAL | BSF_WEAK);
+ sym->flags |= BSF_LOCAL;
+ }
+
+ if (!undefined
+ && (flags & BSF_LOCAL)
+ && is_specified_symbol (name, globalize_specific_htab))
+ {
+ sym->flags &= ~ BSF_LOCAL;
+ sym->flags |= BSF_GLOBAL;
+ }
+
+ to[dst_count++] = sym;
+ }
+ }
+
+ to[dst_count] = NULL;
+
+ return dst_count;
+}
+
+/* Find the redefined name of symbol SOURCE. */
+
+static const char *
+lookup_sym_redefinition (const char *source)
+{
+ struct redefine_node *list;
+
+ for (list = redefine_sym_list; list != NULL; list = list->next)
+ if (strcmp (source, list->source) == 0)
+ return list->target;
+
+ return source;
+}
+
+/* Add a node to a symbol redefine list. */
+
+static void
+redefine_list_append (const char *cause, const char *source, const char *target)
+{
+ struct redefine_node **p;
+ struct redefine_node *list;
+ struct redefine_node *new_node;
+
+ for (p = &redefine_sym_list; (list = *p) != NULL; p = &list->next)
+ {
+ if (strcmp (source, list->source) == 0)
+ fatal (_("%s: Multiple redefinition of symbol \"%s\""),
+ cause, source);
+
+ if (strcmp (target, list->target) == 0)
+ fatal (_("%s: Symbol \"%s\" is target of more than one redefinition"),
+ cause, target);
+ }
+
+ new_node = (struct redefine_node *) xmalloc (sizeof (struct redefine_node));
+
+ new_node->source = strdup (source);
+ new_node->target = strdup (target);
+ new_node->next = NULL;
+
+ *p = new_node;
+}
+
+/* Handle the --redefine-syms option. Read lines containing "old new"
+ from the file, and add them to the symbol redefine list. */
+
+static void
+add_redefine_syms_file (const char *filename)
+{
+ FILE *file;
+ char *buf;
+ size_t bufsize;
+ size_t len;
+ size_t outsym_off;
+ int c, lineno;
+
+ file = fopen (filename, "r");
+ if (file == NULL)
+ fatal (_("couldn't open symbol redefinition file %s (error: %s)"),
+ filename, strerror (errno));
+
+ bufsize = 100;
+ buf = (char *) xmalloc (bufsize + 1 /* For the terminating NUL. */);
+
+ lineno = 1;
+ c = getc (file);
+ len = 0;
+ outsym_off = 0;
+ while (c != EOF)
+ {
+ /* Collect the input symbol name. */
+ while (! IS_WHITESPACE (c) && ! IS_LINE_TERMINATOR (c) && c != EOF)
+ {
+ if (c == '#')
+ goto comment;
+ buf[len++] = c;
+ if (len >= bufsize)
+ {
+ bufsize *= 2;
+ buf = (char *) xrealloc (buf, bufsize + 1);
+ }
+ c = getc (file);
+ }
+ buf[len++] = '\0';
+ if (c == EOF)
+ break;
+
+ /* Eat white space between the symbol names. */
+ while (IS_WHITESPACE (c))
+ c = getc (file);
+ if (c == '#' || IS_LINE_TERMINATOR (c))
+ goto comment;
+ if (c == EOF)
+ break;
+
+ /* Collect the output symbol name. */
+ outsym_off = len;
+ while (! IS_WHITESPACE (c) && ! IS_LINE_TERMINATOR (c) && c != EOF)
+ {
+ if (c == '#')
+ goto comment;
+ buf[len++] = c;
+ if (len >= bufsize)
+ {
+ bufsize *= 2;
+ buf = (char *) xrealloc (buf, bufsize + 1);
+ }
+ c = getc (file);
+ }
+ buf[len++] = '\0';
+ if (c == EOF)
+ break;
+
+ /* Eat white space at end of line. */
+ while (! IS_LINE_TERMINATOR(c) && c != EOF && IS_WHITESPACE (c))
+ c = getc (file);
+ if (c == '#')
+ goto comment;
+ /* Handle \r\n. */
+ if ((c == '\r' && (c = getc (file)) == '\n')
+ || c == '\n' || c == EOF)
+ {
+ end_of_line:
+ /* Append the redefinition to the list. */
+ if (buf[0] != '\0')
+ redefine_list_append (filename, &buf[0], &buf[outsym_off]);
+
+ lineno++;
+ len = 0;
+ outsym_off = 0;
+ if (c == EOF)
+ break;
+ c = getc (file);
+ continue;
+ }
+ else
+ fatal (_("%s:%d: garbage found at end of line"), filename, lineno);
+ comment:
+ if (len != 0 && (outsym_off == 0 || outsym_off == len))
+ fatal (_("%s:%d: missing new symbol name"), filename, lineno);
+ buf[len++] = '\0';
+
+ /* Eat the rest of the line and finish it. */
+ while (c != '\n' && c != EOF)
+ c = getc (file);
+ goto end_of_line;
+ }
+
+ if (len != 0)
+ fatal (_("%s:%d: premature end of file"), filename, lineno);
+
+ free (buf);
+}
+
+/* Copy unkown object file IBFD onto OBFD.
+ Returns TRUE upon success, FALSE otherwise. */
+
+static bfd_boolean
+copy_unknown_object (bfd *ibfd, bfd *obfd)
+{
+ char *cbuf;
+ int tocopy;
+ long ncopied;
+ long size;
+ struct stat buf;
+
+ if (bfd_stat_arch_elt (ibfd, &buf) != 0)
+ {
+ bfd_nonfatal_message (NULL, ibfd, NULL, NULL);
+ return FALSE;
+ }
+
+ size = buf.st_size;
+ if (size < 0)
+ {
+ non_fatal (_("stat returns negative size for `%s'"),
+ bfd_get_archive_filename (ibfd));
+ return FALSE;
+ }
+
+ if (bfd_seek (ibfd, (file_ptr) 0, SEEK_SET) != 0)
+ {
+ bfd_nonfatal (bfd_get_archive_filename (ibfd));
+ return FALSE;
+ }
+
+ if (verbose)
+ printf (_("copy from `%s' [unknown] to `%s' [unknown]\n"),
+ bfd_get_archive_filename (ibfd), bfd_get_filename (obfd));
+
+ cbuf = (char *) xmalloc (BUFSIZE);
+ ncopied = 0;
+ while (ncopied < size)
+ {
+ tocopy = size - ncopied;
+ if (tocopy > BUFSIZE)
+ tocopy = BUFSIZE;
+
+ if (bfd_bread (cbuf, (bfd_size_type) tocopy, ibfd)
+ != (bfd_size_type) tocopy)
+ {
+ bfd_nonfatal_message (NULL, ibfd, NULL, NULL);
+ free (cbuf);
+ return FALSE;
+ }
+
+ if (bfd_bwrite (cbuf, (bfd_size_type) tocopy, obfd)
+ != (bfd_size_type) tocopy)
+ {
+ bfd_nonfatal_message (NULL, obfd, NULL, NULL);
+ free (cbuf);
+ return FALSE;
+ }
+
+ ncopied += tocopy;
+ }
+
+ /* We should at least to be able to read it back when copying an
+ unknown object in an archive. */
+ chmod (bfd_get_filename (obfd), buf.st_mode | S_IRUSR);
+ free (cbuf);
+ return TRUE;
+}
+
+/* Copy object file IBFD onto OBFD.
+ Returns TRUE upon success, FALSE otherwise. */
+
+static bfd_boolean
+copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch)
+{
+ bfd_vma start;
+ long symcount;
+ asection **osections = NULL;
+ asection *gnu_debuglink_section = NULL;
+ bfd_size_type *gaps = NULL;
+ bfd_size_type max_gap = 0;
+ long symsize;
+ void *dhandle;
+ enum bfd_architecture iarch;
+ unsigned int imach;
+
+ if (ibfd->xvec->byteorder != obfd->xvec->byteorder
+ && ibfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN
+ && obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
+ fatal (_("Unable to change endianness of input file(s)"));
+
+ if (!bfd_set_format (obfd, bfd_get_format (ibfd)))
+ {
+ bfd_nonfatal_message (NULL, obfd, NULL, NULL);
+ return FALSE;
+ }
+
+ if (verbose)
+ printf (_("copy from `%s' [%s] to `%s' [%s]\n"),
+ bfd_get_archive_filename (ibfd), bfd_get_target (ibfd),
+ bfd_get_filename (obfd), bfd_get_target (obfd));
+
+ if (extract_symbol)
+ start = 0;
+ else
+ {
+ if (set_start_set)
+ start = set_start;
+ else
+ start = bfd_get_start_address (ibfd);
+ start += change_start;
+ }
+
+ /* Neither the start address nor the flags
+ need to be set for a core file. */
+ if (bfd_get_format (obfd) != bfd_core)
+ {
+ flagword flags;
+
+ flags = bfd_get_file_flags (ibfd);
+ flags |= bfd_flags_to_set;
+ flags &= ~bfd_flags_to_clear;
+ flags &= bfd_applicable_file_flags (obfd);
+
+ if (strip_symbols == STRIP_ALL)
+ flags &= ~HAS_RELOC;
+
+ if (!bfd_set_start_address (obfd, start)
+ || !bfd_set_file_flags (obfd, flags))
+ {
+ bfd_nonfatal_message (NULL, ibfd, NULL, NULL);
+ return FALSE;
+ }
+ }
+
+ /* Copy architecture of input file to output file. */
+ iarch = bfd_get_arch (ibfd);
+ imach = bfd_get_mach (ibfd);
+ if (input_arch)
+ {
+ if (bfd_get_arch_info (ibfd) == NULL
+ || bfd_get_arch_info (ibfd)->arch == bfd_arch_unknown)
+ {
+ iarch = input_arch->arch;
+ imach = input_arch->mach;
+ }
+ else
+ non_fatal (_("Input file `%s' ignores binary architecture parameter."),
+ bfd_get_archive_filename (ibfd));
+ }
+ if (!bfd_set_arch_mach (obfd, iarch, imach)
+ && (ibfd->target_defaulted
+ || bfd_get_arch (ibfd) != bfd_get_arch (obfd)))
+ {
+ if (bfd_get_arch (ibfd) == bfd_arch_unknown)
+ non_fatal (_("Unable to recognise the format of the input file `%s'"),
+ bfd_get_archive_filename (ibfd));
+ else
+ non_fatal (_("Output file cannot represent architecture `%s'"),
+ bfd_printable_arch_mach (bfd_get_arch (ibfd),
+ bfd_get_mach (ibfd)));
+ return FALSE;
+ }
+
+ if (!bfd_set_format (obfd, bfd_get_format (ibfd)))
+ {
+ bfd_nonfatal_message (NULL, ibfd, NULL, NULL);
+ return FALSE;
+ }
+
+ if (bfd_get_flavour (obfd) == bfd_target_coff_flavour
+ && bfd_pei_p (obfd))
+ {
+ /* Set up PE parameters. */
+ pe_data_type *pe = pe_data (obfd);
+
+ /* Copy PE parameters before changing them. */
+ if (ibfd->xvec->flavour == bfd_target_coff_flavour
+ && bfd_pei_p (ibfd))
+ pe->pe_opthdr = pe_data (ibfd)->pe_opthdr;
+
+ if (pe_file_alignment != (bfd_vma) -1)
+ pe->pe_opthdr.FileAlignment = pe_file_alignment;
+ else
+ pe_file_alignment = PE_DEF_FILE_ALIGNMENT;
+
+ if (pe_heap_commit != (bfd_vma) -1)
+ pe->pe_opthdr.SizeOfHeapCommit = pe_heap_commit;
+
+ if (pe_heap_reserve != (bfd_vma) -1)
+ pe->pe_opthdr.SizeOfHeapCommit = pe_heap_reserve;
+
+ if (pe_image_base != (bfd_vma) -1)
+ pe->pe_opthdr.ImageBase = pe_image_base;
+
+ if (pe_section_alignment != (bfd_vma) -1)
+ pe->pe_opthdr.SectionAlignment = pe_section_alignment;
+ else
+ pe_section_alignment = PE_DEF_SECTION_ALIGNMENT;
+
+ if (pe_stack_commit != (bfd_vma) -1)
+ pe->pe_opthdr.SizeOfStackCommit = pe_stack_commit;
+
+ if (pe_stack_reserve != (bfd_vma) -1)
+ pe->pe_opthdr.SizeOfStackCommit = pe_stack_reserve;
+
+ if (pe_subsystem != -1)
+ pe->pe_opthdr.Subsystem = pe_subsystem;
+
+ if (pe_major_subsystem_version != -1)
+ pe->pe_opthdr.MajorSubsystemVersion = pe_major_subsystem_version;
+
+ if (pe_minor_subsystem_version != -1)
+ pe->pe_opthdr.MinorSubsystemVersion = pe_minor_subsystem_version;
+
+ if (pe_file_alignment > pe_section_alignment)
+ {
+ char file_alignment[20], section_alignment[20];
+
+ sprintf_vma (file_alignment, pe_file_alignment);
+ sprintf_vma (section_alignment, pe_section_alignment);
+ non_fatal (_("warning: file alignment (0x%s) > section alignment (0x%s)"),
+
+ file_alignment, section_alignment);
+ }
+ }
+
+ if (isympp)
+ free (isympp);
+
+ if (osympp != isympp)
+ free (osympp);
+
+ isympp = NULL;
+ osympp = NULL;
+
+ symsize = bfd_get_symtab_upper_bound (ibfd);
+ if (symsize < 0)
+ {
+ bfd_nonfatal_message (NULL, ibfd, NULL, NULL);
+ return FALSE;
+ }
+
+ osympp = isympp = (asymbol **) xmalloc (symsize);
+ symcount = bfd_canonicalize_symtab (ibfd, isympp);
+ if (symcount < 0)
+ {
+ bfd_nonfatal_message (NULL, ibfd, NULL, NULL);
+ return FALSE;
+ }
+
+ /* BFD mandates that all output sections be created and sizes set before
+ any output is done. Thus, we traverse all sections multiple times. */
+ bfd_map_over_sections (ibfd, setup_section, obfd);
+
+ if (!extract_symbol)
+ setup_bfd_headers (ibfd, obfd);
+
+ if (add_sections != NULL)
+ {
+ struct section_add *padd;
+ struct section_list *pset;
+
+ for (padd = add_sections; padd != NULL; padd = padd->next)
+ {
+ flagword flags;
+
+ pset = find_section_list (padd->name, FALSE,
+ SECTION_CONTEXT_SET_FLAGS);
+ if (pset != NULL)
+ flags = pset->flags | SEC_HAS_CONTENTS;
+ else
+ flags = SEC_HAS_CONTENTS | SEC_READONLY | SEC_DATA;
+
+ /* bfd_make_section_with_flags() does not return very helpful
+ error codes, so check for the most likely user error first. */
+ if (bfd_get_section_by_name (obfd, padd->name))
+ {
+ bfd_nonfatal_message (NULL, obfd, NULL,
+ _("can't add section '%s'"), padd->name);
+ return FALSE;
+ }
+ else
+ {
+ /* We use LINKER_CREATED here so that the backend hooks
+ will create any special section type information,
+ instead of presuming we know what we're doing merely
+ because we set the flags. */
+ padd->section = bfd_make_section_with_flags
+ (obfd, padd->name, flags | SEC_LINKER_CREATED);
+ if (padd->section == NULL)
+ {
+ bfd_nonfatal_message (NULL, obfd, NULL,
+ _("can't create section `%s'"),
+ padd->name);
+ return FALSE;
+ }
+ }
+
+ if (! bfd_set_section_size (obfd, padd->section, padd->size))
+ {
+ bfd_nonfatal_message (NULL, obfd, padd->section, NULL);
+ return FALSE;
+ }
+
+ pset = find_section_list (padd->name, FALSE,
+ SECTION_CONTEXT_SET_VMA | SECTION_CONTEXT_ALTER_VMA);
+ if (pset != NULL
+ && ! bfd_set_section_vma (obfd, padd->section, pset->vma_val))
+ {
+ bfd_nonfatal_message (NULL, obfd, padd->section, NULL);
+ return FALSE;
+ }
+
+ pset = find_section_list (padd->name, FALSE,
+ SECTION_CONTEXT_SET_LMA | SECTION_CONTEXT_ALTER_LMA);
+ if (pset != NULL)
+ {
+ padd->section->lma = pset->lma_val;
+
+ if (! bfd_set_section_alignment
+ (obfd, padd->section,
+ bfd_section_alignment (obfd, padd->section)))
+ {
+ bfd_nonfatal_message (NULL, obfd, padd->section, NULL);
+ return FALSE;
+ }
+ }
+ }
+ }
+
+ if (gnu_debuglink_filename != NULL)
+ {
+ /* PR 15125: Give a helpful warning message if
+ the debuglink section already exists, and
+ allow the rest of the copy to complete. */
+ if (bfd_get_section_by_name (obfd, ".gnu_debuglink"))
+ {
+ non_fatal (_("%s: debuglink section already exists"),
+ bfd_get_filename (obfd));
+ gnu_debuglink_filename = NULL;
+ }
+ else
+ {
+ gnu_debuglink_section = bfd_create_gnu_debuglink_section
+ (obfd, gnu_debuglink_filename);
+
+ if (gnu_debuglink_section == NULL)
+ {
+ bfd_nonfatal_message (NULL, obfd, NULL,
+ _("cannot create debug link section `%s'"),
+ gnu_debuglink_filename);
+ return FALSE;
+ }
+
+ /* Special processing for PE format files. We
+ have no way to distinguish PE from COFF here. */
+ if (bfd_get_flavour (obfd) == bfd_target_coff_flavour)
+ {
+ bfd_vma debuglink_vma;
+ asection * highest_section;
+ asection * sec;
+
+ /* The PE spec requires that all sections be adjacent and sorted
+ in ascending order of VMA. It also specifies that debug
+ sections should be last. This is despite the fact that debug
+ sections are not loaded into memory and so in theory have no
+ use for a VMA.
+
+ This means that the debuglink section must be given a non-zero
+ VMA which makes it contiguous with other debug sections. So
+ walk the current section list, find the section with the
+ highest VMA and start the debuglink section after that one. */
+ for (sec = obfd->sections, highest_section = NULL;
+ sec != NULL;
+ sec = sec->next)
+ if (sec->vma > 0
+ && (highest_section == NULL
+ || sec->vma > highest_section->vma))
+ highest_section = sec;
+
+ if (highest_section)
+ debuglink_vma = BFD_ALIGN (highest_section->vma
+ + highest_section->size,
+ /* FIXME: We ought to be using
+ COFF_PAGE_SIZE here or maybe
+ bfd_get_section_alignment() (if it
+ was set) but since this is for PE
+ and we know the required alignment
+ it is easier just to hard code it. */
+ 0x1000);
+ else
+ /* Umm, not sure what to do in this case. */
+ debuglink_vma = 0x1000;
+
+ bfd_set_section_vma (obfd, gnu_debuglink_section, debuglink_vma);
+ }
+ }
+ }
+
+ if (bfd_count_sections (obfd) != 0
+ && (gap_fill_set || pad_to_set))
+ {
+ asection **set;
+ unsigned int c, i;
+
+ /* We must fill in gaps between the sections and/or we must pad
+ the last section to a specified address. We do this by
+ grabbing a list of the sections, sorting them by VMA, and
+ increasing the section sizes as required to fill the gaps.
+ We write out the gap contents below. */
+
+ c = bfd_count_sections (obfd);
+ osections = (asection **) xmalloc (c * sizeof (asection *));
+ set = osections;
+ bfd_map_over_sections (obfd, get_sections, &set);
+
+ qsort (osections, c, sizeof (asection *), compare_section_lma);
+
+ gaps = (bfd_size_type *) xmalloc (c * sizeof (bfd_size_type));
+ memset (gaps, 0, c * sizeof (bfd_size_type));
+
+ if (gap_fill_set)
+ {
+ for (i = 0; i < c - 1; i++)
+ {
+ flagword flags;
+ bfd_size_type size;
+ bfd_vma gap_start, gap_stop;
+
+ flags = bfd_get_section_flags (obfd, osections[i]);
+ if ((flags & SEC_HAS_CONTENTS) == 0
+ || (flags & SEC_LOAD) == 0)
+ continue;
+
+ size = bfd_section_size (obfd, osections[i]);
+ gap_start = bfd_section_lma (obfd, osections[i]) + size;
+ gap_stop = bfd_section_lma (obfd, osections[i + 1]);
+ if (gap_start < gap_stop)
+ {
+ if (! bfd_set_section_size (obfd, osections[i],
+ size + (gap_stop - gap_start)))
+ {
+ bfd_nonfatal_message (NULL, obfd, osections[i],
+ _("Can't fill gap after section"));
+ status = 1;
+ break;
+ }
+ gaps[i] = gap_stop - gap_start;
+ if (max_gap < gap_stop - gap_start)
+ max_gap = gap_stop - gap_start;
+ }
+ }
+ }
+
+ if (pad_to_set)
+ {
+ bfd_vma lma;
+ bfd_size_type size;
+
+ lma = bfd_section_lma (obfd, osections[c - 1]);
+ size = bfd_section_size (obfd, osections[c - 1]);
+ if (lma + size < pad_to)
+ {
+ if (! bfd_set_section_size (obfd, osections[c - 1],
+ pad_to - lma))
+ {
+ bfd_nonfatal_message (NULL, obfd, osections[c - 1],
+ _("can't add padding"));
+ status = 1;
+ }
+ else
+ {
+ gaps[c - 1] = pad_to - (lma + size);
+ if (max_gap < pad_to - (lma + size))
+ max_gap = pad_to - (lma + size);
+ }
+ }
+ }
+ }
+
+ /* Symbol filtering must happen after the output sections
+ have been created, but before their contents are set. */
+ dhandle = NULL;
+ if (convert_debugging)
+ dhandle = read_debugging_info (ibfd, isympp, symcount, FALSE);
+
+ if (strip_symbols == STRIP_DEBUG
+ || strip_symbols == STRIP_ALL
+ || strip_symbols == STRIP_UNNEEDED
+ || strip_symbols == STRIP_NONDEBUG
+ || strip_symbols == STRIP_DWO
+ || strip_symbols == STRIP_NONDWO
+ || discard_locals != LOCALS_UNDEF
+ || localize_hidden
+ || htab_elements (strip_specific_htab) != 0
+ || htab_elements (keep_specific_htab) != 0
+ || htab_elements (localize_specific_htab) != 0
+ || htab_elements (globalize_specific_htab) != 0
+ || htab_elements (keepglobal_specific_htab) != 0
+ || htab_elements (weaken_specific_htab) != 0
+ || prefix_symbols_string
+ || sections_removed
+ || sections_copied
+ || convert_debugging
+ || change_leading_char
+ || remove_leading_char
+ || redefine_sym_list
+ || weaken)
+ {
+ /* Mark symbols used in output relocations so that they
+ are kept, even if they are local labels or static symbols.
+
+ Note we iterate over the input sections examining their
+ relocations since the relocations for the output sections
+ haven't been set yet. mark_symbols_used_in_relocations will
+ ignore input sections which have no corresponding output
+ section. */
+ if (strip_symbols != STRIP_ALL)
+ bfd_map_over_sections (ibfd,
+ mark_symbols_used_in_relocations,
+ isympp);
+ osympp = (asymbol **) xmalloc ((symcount + 1) * sizeof (asymbol *));
+ symcount = filter_symbols (ibfd, obfd, osympp, isympp, symcount);
+ }
+
+ if (convert_debugging && dhandle != NULL)
+ {
+ if (! write_debugging_info (obfd, dhandle, &symcount, &osympp))
+ {
+ status = 1;
+ return FALSE;
+ }
+ }
+
+ bfd_set_symtab (obfd, osympp, symcount);
+
+ /* This has to happen before section positions are set. */
+ bfd_map_over_sections (ibfd, copy_relocations_in_section, obfd);
+
+ /* This has to happen after the symbol table has been set. */
+ bfd_map_over_sections (ibfd, copy_section, obfd);
+
+ if (add_sections != NULL)
+ {
+ struct section_add *padd;
+
+ for (padd = add_sections; padd != NULL; padd = padd->next)
+ {
+ if (! bfd_set_section_contents (obfd, padd->section, padd->contents,
+ 0, padd->size))
+ {
+ bfd_nonfatal_message (NULL, obfd, padd->section, NULL);
+ return FALSE;
+ }
+ }
+ }
+
+ if (gnu_debuglink_filename != NULL)
+ {
+ if (! bfd_fill_in_gnu_debuglink_section
+ (obfd, gnu_debuglink_section, gnu_debuglink_filename))
+ {
+ bfd_nonfatal_message (NULL, obfd, NULL,
+ _("cannot fill debug link section `%s'"),
+ gnu_debuglink_filename);
+ return FALSE;
+ }
+ }
+
+ if (gap_fill_set || pad_to_set)
+ {
+ bfd_byte *buf;
+ int c, i;
+
+ /* Fill in the gaps. */
+ if (max_gap > 8192)
+ max_gap = 8192;
+ buf = (bfd_byte *) xmalloc (max_gap);
+ memset (buf, gap_fill, max_gap);
+
+ c = bfd_count_sections (obfd);
+ for (i = 0; i < c; i++)
+ {
+ if (gaps[i] != 0)
+ {
+ bfd_size_type left;
+ file_ptr off;
+
+ left = gaps[i];
+ off = bfd_section_size (obfd, osections[i]) - left;
+
+ while (left > 0)
+ {
+ bfd_size_type now;
+
+ if (left > 8192)
+ now = 8192;
+ else
+ now = left;
+
+ if (! bfd_set_section_contents (obfd, osections[i], buf,
+ off, now))
+ {
+ bfd_nonfatal_message (NULL, obfd, osections[i], NULL);
+ return FALSE;
+ }
+
+ left -= now;
+ off += now;
+ }
+ }
+ }
+ }
+
+ /* Do not copy backend data if --extract-symbol is passed; anything
+ that needs to look at the section contents will fail. */
+ if (extract_symbol)
+ return TRUE;
+
+ /* Allow the BFD backend to copy any private data it understands
+ from the input BFD to the output BFD. This is done last to
+ permit the routine to look at the filtered symbol table, which is
+ important for the ECOFF code at least. */
+ if (! bfd_copy_private_bfd_data (ibfd, obfd))
+ {
+ bfd_nonfatal_message (NULL, obfd, NULL,
+ _("error copying private BFD data"));
+ return FALSE;
+ }
+
+ /* Switch to the alternate machine code. We have to do this at the
+ very end, because we only initialize the header when we create
+ the first section. */
+ if (use_alt_mach_code != 0)
+ {
+ if (! bfd_alt_mach_code (obfd, use_alt_mach_code))
+ {
+ non_fatal (_("this target does not support %lu alternative machine codes"),
+ use_alt_mach_code);
+ if (bfd_get_flavour (obfd) == bfd_target_elf_flavour)
+ {
+ non_fatal (_("treating that number as an absolute e_machine value instead"));
+ elf_elfheader (obfd)->e_machine = use_alt_mach_code;
+ }
+ else
+ non_fatal (_("ignoring the alternative value"));
+ }
+ }
+
+ return TRUE;
+}
+
+/* Read each archive element in turn from IBFD, copy the
+ contents to temp file, and keep the temp file handle.
+ If 'force_output_target' is TRUE then make sure that
+ all elements in the new archive are of the type
+ 'output_target'. */
+
+static void
+copy_archive (bfd *ibfd, bfd *obfd, const char *output_target,
+ bfd_boolean force_output_target,
+ const bfd_arch_info_type *input_arch)
+{
+ struct name_list
+ {
+ struct name_list *next;
+ const char *name;
+ bfd *obfd;
+ } *list, *l;
+ bfd **ptr = &obfd->archive_head;
+ bfd *this_element;
+ char *dir;
+ const char *filename;
+
+ /* Make a temp directory to hold the contents. */
+ dir = make_tempdir (bfd_get_filename (obfd));
+ if (dir == NULL)
+ fatal (_("cannot create tempdir for archive copying (error: %s)"),
+ strerror (errno));
+
+ if (strip_symbols == STRIP_ALL)
+ obfd->has_armap = FALSE;
+ else
+ obfd->has_armap = ibfd->has_armap;
+ obfd->is_thin_archive = ibfd->is_thin_archive;
+
+ if (deterministic)
+ obfd->flags |= BFD_DETERMINISTIC_OUTPUT;
+
+ list = NULL;
+
+ this_element = bfd_openr_next_archived_file (ibfd, NULL);
+
+ if (!bfd_set_format (obfd, bfd_get_format (ibfd)))
+ {
+ status = 1;
+ bfd_nonfatal_message (NULL, obfd, NULL, NULL);
+ return;
+ }
+
+ while (!status && this_element != NULL)
+ {
+ char *output_name;
+ bfd *output_bfd;
+ bfd *last_element;
+ struct stat buf;
+ int stat_status = 0;
+ bfd_boolean del = TRUE;
+ bfd_boolean ok_object;
+
+ /* Create an output file for this member. */
+ output_name = concat (dir, "/",
+ bfd_get_filename (this_element), (char *) 0);
+
+ /* If the file already exists, make another temp dir. */
+ if (stat (output_name, &buf) >= 0)
+ {
+ output_name = make_tempdir (output_name);
+ if (output_name == NULL)
+ fatal (_("cannot create tempdir for archive copying (error: %s)"),
+ strerror (errno));
+
+ l = (struct name_list *) xmalloc (sizeof (struct name_list));
+ l->name = output_name;
+ l->next = list;
+ l->obfd = NULL;
+ list = l;
+ output_name = concat (output_name, "/",
+ bfd_get_filename (this_element), (char *) 0);
+ }
+
+ if (preserve_dates)
+ {
+ stat_status = bfd_stat_arch_elt (this_element, &buf);
+
+ if (stat_status != 0)
+ non_fatal (_("internal stat error on %s"),
+ bfd_get_filename (this_element));
+ }
+
+ l = (struct name_list *) xmalloc (sizeof (struct name_list));
+ l->name = output_name;
+ l->next = list;
+ l->obfd = NULL;
+ list = l;
+
+ ok_object = bfd_check_format (this_element, bfd_object);
+ if (!ok_object)
+ bfd_nonfatal_message (NULL, this_element, NULL,
+ _("Unable to recognise the format of file"));
+
+ /* PR binutils/3110: Cope with archives
+ containing multiple target types. */
+ if (force_output_target || !ok_object)
+ output_bfd = bfd_openw (output_name, output_target);
+ else
+ output_bfd = bfd_openw (output_name, bfd_get_target (this_element));
+
+ if (output_bfd == NULL)
+ {
+ bfd_nonfatal_message (output_name, NULL, NULL, NULL);
+ status = 1;
+ return;
+ }
+
+ if (ok_object)
+ {
+ del = !copy_object (this_element, output_bfd, input_arch);
+
+ if (del && bfd_get_arch (this_element) == bfd_arch_unknown)
+ /* Try again as an unknown object file. */
+ ok_object = FALSE;
+ else if (!bfd_close (output_bfd))
+ {
+ bfd_nonfatal_message (output_name, NULL, NULL, NULL);
+ /* Error in new object file. Don't change archive. */
+ status = 1;
+ }
+ }
+
+ if (!ok_object)
+ {
+ del = !copy_unknown_object (this_element, output_bfd);
+ if (!bfd_close_all_done (output_bfd))
+ {
+ bfd_nonfatal_message (output_name, NULL, NULL, NULL);
+ /* Error in new object file. Don't change archive. */
+ status = 1;
+ }
+ }
+
+ if (del)
+ {
+ unlink (output_name);
+ status = 1;
+ }
+ else
+ {
+ if (preserve_dates && stat_status == 0)
+ set_times (output_name, &buf);
+
+ /* Open the newly output file and attach to our list. */
+ output_bfd = bfd_openr (output_name, output_target);
+
+ l->obfd = output_bfd;
+
+ *ptr = output_bfd;
+ ptr = &output_bfd->archive_next;
+
+ last_element = this_element;
+
+ this_element = bfd_openr_next_archived_file (ibfd, last_element);
+
+ bfd_close (last_element);
+ }
+ }
+ *ptr = NULL;
+
+ filename = bfd_get_filename (obfd);
+ if (!bfd_close (obfd))
+ {
+ status = 1;
+ bfd_nonfatal_message (filename, NULL, NULL, NULL);
+ return;
+ }
+
+ filename = bfd_get_filename (ibfd);
+ if (!bfd_close (ibfd))
+ {
+ status = 1;
+ bfd_nonfatal_message (filename, NULL, NULL, NULL);
+ return;
+ }
+
+ /* Delete all the files that we opened. */
+ for (l = list; l != NULL; l = l->next)
+ {
+ if (l->obfd == NULL)
+ rmdir (l->name);
+ else
+ {
+ bfd_close (l->obfd);
+ unlink (l->name);
+ }
+ }
+ rmdir (dir);
+}
+
+static void
+set_long_section_mode (bfd *output_bfd, bfd *input_bfd, enum long_section_name_handling style)
+{
+ /* This is only relevant to Coff targets. */
+ if (bfd_get_flavour (output_bfd) == bfd_target_coff_flavour)
+ {
+ if (style == KEEP
+ && bfd_get_flavour (input_bfd) == bfd_target_coff_flavour)
+ style = bfd_coff_long_section_names (input_bfd) ? ENABLE : DISABLE;
+ bfd_coff_set_long_section_names (output_bfd, style != DISABLE);
+ }
+}
+
+/* The top-level control. */
+
+static void
+copy_file (const char *input_filename, const char *output_filename,
+ const char *input_target, const char *output_target,
+ const bfd_arch_info_type *input_arch)
+{
+ bfd *ibfd;
+ char **obj_matching;
+ char **core_matching;
+ off_t size = get_file_size (input_filename);
+
+ if (size < 1)
+ {
+ if (size == 0)
+ non_fatal (_("error: the input file '%s' is empty"),
+ input_filename);
+ status = 1;
+ return;
+ }
+
+ /* To allow us to do "strip *" without dying on the first
+ non-object file, failures are nonfatal. */
+ ibfd = bfd_openr (input_filename, input_target);
+ if (ibfd == NULL)
+ {
+ bfd_nonfatal_message (input_filename, NULL, NULL, NULL);
+ status = 1;
+ return;
+ }
+
+ switch (do_debug_sections)
+ {
+ case compress:
+ ibfd->flags |= BFD_COMPRESS;
+ break;
+ case decompress:
+ ibfd->flags |= BFD_DECOMPRESS;
+ break;
+ default:
+ break;
+ }
+
+ if (bfd_check_format (ibfd, bfd_archive))
+ {
+ bfd_boolean force_output_target;
+ bfd *obfd;
+
+ /* bfd_get_target does not return the correct value until
+ bfd_check_format succeeds. */
+ if (output_target == NULL)
+ {
+ output_target = bfd_get_target (ibfd);
+ force_output_target = FALSE;
+ }
+ else
+ force_output_target = TRUE;
+
+ obfd = bfd_openw (output_filename, output_target);
+ if (obfd == NULL)
+ {
+ bfd_nonfatal_message (output_filename, NULL, NULL, NULL);
+ status = 1;
+ return;
+ }
+ /* This is a no-op on non-Coff targets. */
+ set_long_section_mode (obfd, ibfd, long_section_names);
+
+ copy_archive (ibfd, obfd, output_target, force_output_target, input_arch);
+ }
+ else if (bfd_check_format_matches (ibfd, bfd_object, &obj_matching))
+ {
+ bfd *obfd;
+ do_copy:
+
+ /* bfd_get_target does not return the correct value until
+ bfd_check_format succeeds. */
+ if (output_target == NULL)
+ output_target = bfd_get_target (ibfd);
+
+ obfd = bfd_openw (output_filename, output_target);
+ if (obfd == NULL)
+ {
+ bfd_nonfatal_message (output_filename, NULL, NULL, NULL);
+ status = 1;
+ return;
+ }
+ /* This is a no-op on non-Coff targets. */
+ set_long_section_mode (obfd, ibfd, long_section_names);
+
+ if (! copy_object (ibfd, obfd, input_arch))
+ status = 1;
+
+ if (!bfd_close (obfd))
+ {
+ status = 1;
+ bfd_nonfatal_message (output_filename, NULL, NULL, NULL);
+ return;
+ }
+
+ if (!bfd_close (ibfd))
+ {
+ status = 1;
+ bfd_nonfatal_message (input_filename, NULL, NULL, NULL);
+ return;
+ }
+ }
+ else
+ {
+ bfd_error_type obj_error = bfd_get_error ();
+ bfd_error_type core_error;
+
+ if (bfd_check_format_matches (ibfd, bfd_core, &core_matching))
+ {
+ /* This probably can't happen.. */
+ if (obj_error == bfd_error_file_ambiguously_recognized)
+ free (obj_matching);
+ goto do_copy;
+ }
+
+ core_error = bfd_get_error ();
+ /* Report the object error in preference to the core error. */
+ if (obj_error != core_error)
+ bfd_set_error (obj_error);
+
+ bfd_nonfatal_message (input_filename, NULL, NULL, NULL);
+
+ if (obj_error == bfd_error_file_ambiguously_recognized)
+ {
+ list_matching_formats (obj_matching);
+ free (obj_matching);
+ }
+ if (core_error == bfd_error_file_ambiguously_recognized)
+ {
+ list_matching_formats (core_matching);
+ free (core_matching);
+ }
+
+ status = 1;
+ }
+}
+
+/* Add a name to the section renaming list. */
+
+static void
+add_section_rename (const char * old_name, const char * new_name,
+ flagword flags)
+{
+ section_rename * srename;
+
+ /* Check for conflicts first. */
+ for (srename = section_rename_list; srename != NULL; srename = srename->next)
+ if (strcmp (srename->old_name, old_name) == 0)
+ {
+ /* Silently ignore duplicate definitions. */
+ if (strcmp (srename->new_name, new_name) == 0
+ && srename->flags == flags)
+ return;
+
+ fatal (_("Multiple renames of section %s"), old_name);
+ }
+
+ srename = (section_rename *) xmalloc (sizeof (* srename));
+
+ srename->old_name = old_name;
+ srename->new_name = new_name;
+ srename->flags = flags;
+ srename->next = section_rename_list;
+
+ section_rename_list = srename;
+}
+
+/* Check the section rename list for a new name of the input section
+ ISECTION. Return the new name if one is found.
+ Also set RETURNED_FLAGS to the flags to be used for this section. */
+
+static const char *
+find_section_rename (bfd * ibfd ATTRIBUTE_UNUSED, sec_ptr isection,
+ flagword * returned_flags)
+{
+ const char * old_name = bfd_section_name (ibfd, isection);
+ section_rename * srename;
+
+ /* Default to using the flags of the input section. */
+ * returned_flags = bfd_get_section_flags (ibfd, isection);
+
+ for (srename = section_rename_list; srename != NULL; srename = srename->next)
+ if (strcmp (srename->old_name, old_name) == 0)
+ {
+ if (srename->flags != (flagword) -1)
+ * returned_flags = srename->flags;
+
+ return srename->new_name;
+ }
+
+ return old_name;
+}
+
+/* Once each of the sections is copied, we may still need to do some
+ finalization work for private section headers. Do that here. */
+
+static void
+setup_bfd_headers (bfd *ibfd, bfd *obfd)
+{
+ /* Allow the BFD backend to copy any private data it understands
+ from the input section to the output section. */
+ if (! bfd_copy_private_header_data (ibfd, obfd))
+ {
+ status = 1;
+ bfd_nonfatal_message (NULL, ibfd, NULL,
+ _("error in private header data"));
+ return;
+ }
+
+ /* All went well. */
+ return;
+}
+
+/* Create a section in OBFD with the same
+ name and attributes as ISECTION in IBFD. */
+
+static void
+setup_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
+{
+ bfd *obfd = (bfd *) obfdarg;
+ struct section_list *p;
+ sec_ptr osection;
+ bfd_size_type size;
+ bfd_vma vma;
+ bfd_vma lma;
+ flagword flags;
+ const char *err;
+ const char * name;
+ char *prefix = NULL;
+ bfd_boolean make_nobits;
+
+ if (is_strip_section (ibfd, isection))
+ return;
+
+ /* Get the, possibly new, name of the output section. */
+ name = find_section_rename (ibfd, isection, & flags);
+
+ /* Prefix sections. */
+ if ((prefix_alloc_sections_string)
+ && (bfd_get_section_flags (ibfd, isection) & SEC_ALLOC))
+ prefix = prefix_alloc_sections_string;
+ else if (prefix_sections_string)
+ prefix = prefix_sections_string;
+
+ if (prefix)
+ {
+ char *n;
+
+ n = (char *) xmalloc (strlen (prefix) + strlen (name) + 1);
+ strcpy (n, prefix);
+ strcat (n, name);
+ name = n;
+ }
+
+ make_nobits = FALSE;
+
+ p = find_section_list (bfd_section_name (ibfd, isection), FALSE,
+ SECTION_CONTEXT_SET_FLAGS);
+ if (p != NULL)
+ flags = p->flags | (flags & (SEC_HAS_CONTENTS | SEC_RELOC));
+ else if (strip_symbols == STRIP_NONDEBUG
+ && (flags & (SEC_ALLOC | SEC_GROUP)) != 0
+ && !(ibfd->xvec->flavour == bfd_target_elf_flavour
+ && elf_section_type (isection) == SHT_NOTE))
+ {
+ flags &= ~(SEC_HAS_CONTENTS | SEC_LOAD | SEC_GROUP);
+ if (obfd->xvec->flavour == bfd_target_elf_flavour)
+ {
+ make_nobits = TRUE;
+
+ /* Twiddle the input section flags so that it seems to
+ elf.c:copy_private_bfd_data that section flags have not
+ changed between input and output sections. This hack
+ prevents wholesale rewriting of the program headers. */
+ isection->flags &= ~(SEC_HAS_CONTENTS | SEC_LOAD | SEC_GROUP);
+ }
+ }
+
+ osection = bfd_make_section_anyway_with_flags (obfd, name, flags);
+
+ if (osection == NULL)
+ {
+ err = _("failed to create output section");
+ goto loser;
+ }
+
+ if (make_nobits)
+ elf_section_type (osection) = SHT_NOBITS;
+
+ size = bfd_section_size (ibfd, isection);
+ if (copy_byte >= 0)
+ size = (size + interleave - 1) / interleave * copy_width;
+ else if (extract_symbol)
+ size = 0;
+ if (! bfd_set_section_size (obfd, osection, size))
+ {
+ err = _("failed to set size");
+ goto loser;
+ }
+
+ vma = bfd_section_vma (ibfd, isection);
+ p = find_section_list (bfd_section_name (ibfd, isection), FALSE,
+ SECTION_CONTEXT_ALTER_VMA | SECTION_CONTEXT_SET_VMA);
+ if (p != NULL)
+ {
+ if (p->context & SECTION_CONTEXT_SET_VMA)
+ vma = p->vma_val;
+ else
+ vma += p->vma_val;
+ }
+ else
+ vma += change_section_address;
+
+ if (! bfd_set_section_vma (obfd, osection, vma))
+ {
+ err = _("failed to set vma");
+ goto loser;
+ }
+
+ lma = isection->lma;
+ p = find_section_list (bfd_section_name (ibfd, isection), FALSE,
+ SECTION_CONTEXT_ALTER_LMA | SECTION_CONTEXT_SET_LMA);
+ if (p != NULL)
+ {
+ if (p->context & SECTION_CONTEXT_ALTER_LMA)
+ lma += p->lma_val;
+ else
+ lma = p->lma_val;
+ }
+ else
+ lma += change_section_address;
+
+ osection->lma = lma;
+
+ /* FIXME: This is probably not enough. If we change the LMA we
+ may have to recompute the header for the file as well. */
+ if (!bfd_set_section_alignment (obfd,
+ osection,
+ bfd_section_alignment (ibfd, isection)))
+ {
+ err = _("failed to set alignment");
+ goto loser;
+ }
+
+ /* Copy merge entity size. */
+ osection->entsize = isection->entsize;
+
+ /* This used to be mangle_section; we do here to avoid using
+ bfd_get_section_by_name since some formats allow multiple
+ sections with the same name. */
+ isection->output_section = osection;
+ isection->output_offset = 0;
+
+ /* Do not copy backend data if --extract-symbol is passed; anything
+ that needs to look at the section contents will fail. */
+ if (extract_symbol)
+ return;
+
+ if ((isection->flags & SEC_GROUP) != 0)
+ {
+ asymbol *gsym = group_signature (isection);
+
+ if (gsym != NULL)
+ {
+ gsym->flags |= BSF_KEEP;
+ if (ibfd->xvec->flavour == bfd_target_elf_flavour)
+ elf_group_id (isection) = gsym;
+ }
+ }
+
+ /* Allow the BFD backend to copy any private data it understands
+ from the input section to the output section. */
+ if (!bfd_copy_private_section_data (ibfd, isection, obfd, osection))
+ {
+ err = _("failed to copy private data");
+ goto loser;
+ }
+
+ /* All went well. */
+ return;
+
+loser:
+ status = 1;
+ bfd_nonfatal_message (NULL, obfd, osection, err);
+}
+
+/* Return TRUE if input section ISECTION should be skipped. */
+
+static bfd_boolean
+skip_section (bfd *ibfd, sec_ptr isection)
+{
+ sec_ptr osection;
+ bfd_size_type size;
+ flagword flags;
+
+ /* If we have already failed earlier on,
+ do not keep on generating complaints now. */
+ if (status != 0)
+ return TRUE;
+
+ if (extract_symbol)
+ return TRUE;
+
+ if (is_strip_section (ibfd, isection))
+ return TRUE;
+
+ flags = bfd_get_section_flags (ibfd, isection);
+ if ((flags & SEC_GROUP) != 0)
+ return TRUE;
+
+ osection = isection->output_section;
+ size = bfd_get_section_size (isection);
+
+ if (size == 0 || osection == 0)
+ return TRUE;
+
+ return FALSE;
+}
+
+/* Copy relocations in input section ISECTION of IBFD to an output
+ section with the same name in OBFDARG. If stripping then don't
+ copy any relocation info. */
+
+static void
+copy_relocations_in_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
+{
+ bfd *obfd = (bfd *) obfdarg;
+ long relsize;
+ arelent **relpp;
+ long relcount;
+ sec_ptr osection;
+
+ if (skip_section (ibfd, isection))
+ return;
+
+ osection = isection->output_section;
+
+ /* Core files and DWO files do not need to be relocated. */
+ if (bfd_get_format (obfd) == bfd_core || strip_symbols == STRIP_NONDWO)
+ relsize = 0;
+ else
+ {
+ relsize = bfd_get_reloc_upper_bound (ibfd, isection);
+
+ if (relsize < 0)
+ {
+ /* Do not complain if the target does not support relocations. */
+ if (relsize == -1 && bfd_get_error () == bfd_error_invalid_operation)
+ relsize = 0;
+ else
+ {
+ status = 1;
+ bfd_nonfatal_message (NULL, ibfd, isection, NULL);
+ return;
+ }
+ }
+ }
+
+ if (relsize == 0)
+ {
+ bfd_set_reloc (obfd, osection, NULL, 0);
+ osection->flags &= ~SEC_RELOC;
+ }
+ else
+ {
+ relpp = (arelent **) xmalloc (relsize);
+ relcount = bfd_canonicalize_reloc (ibfd, isection, relpp, isympp);
+ if (relcount < 0)
+ {
+ status = 1;
+ bfd_nonfatal_message (NULL, ibfd, isection,
+ _("relocation count is negative"));
+ return;
+ }
+
+ if (strip_symbols == STRIP_ALL)
+ {
+ /* Remove relocations which are not in
+ keep_strip_specific_list. */
+ arelent **temp_relpp;
+ long temp_relcount = 0;
+ long i;
+
+ temp_relpp = (arelent **) xmalloc (relsize);
+ for (i = 0; i < relcount; i++)
+ if (is_specified_symbol (bfd_asymbol_name (*relpp[i]->sym_ptr_ptr),
+ keep_specific_htab))
+ temp_relpp [temp_relcount++] = relpp [i];
+ relcount = temp_relcount;
+ free (relpp);
+ relpp = temp_relpp;
+ }
+
+ bfd_set_reloc (obfd, osection, relcount == 0 ? NULL : relpp, relcount);
+ if (relcount == 0)
+ {
+ osection->flags &= ~SEC_RELOC;
+ free (relpp);
+ }
+ }
+}
+
+/* Copy the data of input section ISECTION of IBFD
+ to an output section with the same name in OBFD. */
+
+static void
+copy_section (bfd *ibfd, sec_ptr isection, void *obfdarg)
+{
+ bfd *obfd = (bfd *) obfdarg;
+ struct section_list *p;
+ sec_ptr osection;
+ bfd_size_type size;
+
+ if (skip_section (ibfd, isection))
+ return;
+
+ osection = isection->output_section;
+ size = bfd_get_section_size (isection);
+
+ if (bfd_get_section_flags (ibfd, isection) & SEC_HAS_CONTENTS
+ && bfd_get_section_flags (obfd, osection) & SEC_HAS_CONTENTS)
+ {
+ bfd_byte *memhunk = NULL;
+
+ if (!bfd_get_full_section_contents (ibfd, isection, &memhunk))
+ {
+ status = 1;
+ bfd_nonfatal_message (NULL, ibfd, isection, NULL);
+ return;
+ }
+
+ if (reverse_bytes)
+ {
+ /* We don't handle leftover bytes (too many possible behaviors,
+ and we don't know what the user wants). The section length
+ must be a multiple of the number of bytes to swap. */
+ if ((size % reverse_bytes) == 0)
+ {
+ unsigned long i, j;
+ bfd_byte b;
+
+ for (i = 0; i < size; i += reverse_bytes)
+ for (j = 0; j < (unsigned long)(reverse_bytes / 2); j++)
+ {
+ bfd_byte *m = (bfd_byte *) memhunk;
+
+ b = m[i + j];
+ m[i + j] = m[(i + reverse_bytes) - (j + 1)];
+ m[(i + reverse_bytes) - (j + 1)] = b;
+ }
+ }
+ else
+ /* User must pad the section up in order to do this. */
+ fatal (_("cannot reverse bytes: length of section %s must be evenly divisible by %d"),
+ bfd_section_name (ibfd, isection), reverse_bytes);
+ }
+
+ if (copy_byte >= 0)
+ {
+ /* Keep only every `copy_byte'th byte in MEMHUNK. */
+ char *from = (char *) memhunk + copy_byte;
+ char *to = (char *) memhunk;
+ char *end = (char *) memhunk + size;
+ int i;
+
+ for (; from < end; from += interleave)
+ for (i = 0; i < copy_width; i++)
+ {
+ if (&from[i] >= end)
+ break;
+ *to++ = from[i];
+ }
+
+ size = (size + interleave - 1 - copy_byte) / interleave * copy_width;
+ osection->lma /= interleave;
+ }
+
+ if (!bfd_set_section_contents (obfd, osection, memhunk, 0, size))
+ {
+ status = 1;
+ bfd_nonfatal_message (NULL, obfd, osection, NULL);
+ return;
+ }
+ free (memhunk);
+ }
+ else if ((p = find_section_list (bfd_get_section_name (ibfd, isection),
+ FALSE, SECTION_CONTEXT_SET_FLAGS)) != NULL
+ && (p->flags & SEC_HAS_CONTENTS) != 0)
+ {
+ void *memhunk = xmalloc (size);
+
+ /* We don't permit the user to turn off the SEC_HAS_CONTENTS
+ flag--they can just remove the section entirely and add it
+ back again. However, we do permit them to turn on the
+ SEC_HAS_CONTENTS flag, and take it to mean that the section
+ contents should be zeroed out. */
+
+ memset (memhunk, 0, size);
+ if (! bfd_set_section_contents (obfd, osection, memhunk, 0, size))
+ {
+ status = 1;
+ bfd_nonfatal_message (NULL, obfd, osection, NULL);
+ return;
+ }
+ free (memhunk);
+ }
+}
+
+/* Get all the sections. This is used when --gap-fill or --pad-to is
+ used. */
+
+static void
+get_sections (bfd *obfd ATTRIBUTE_UNUSED, asection *osection, void *secppparg)
+{
+ asection ***secppp = (asection ***) secppparg;
+
+ **secppp = osection;
+ ++(*secppp);
+}
+
+/* Sort sections by VMA. This is called via qsort, and is used when
+ --gap-fill or --pad-to is used. We force non loadable or empty
+ sections to the front, where they are easier to ignore. */
+
+static int
+compare_section_lma (const void *arg1, const void *arg2)
+{
+ const asection *const *sec1 = (const asection * const *) arg1;
+ const asection *const *sec2 = (const asection * const *) arg2;
+ flagword flags1, flags2;
+
+ /* Sort non loadable sections to the front. */
+ flags1 = (*sec1)->flags;
+ flags2 = (*sec2)->flags;
+ if ((flags1 & SEC_HAS_CONTENTS) == 0
+ || (flags1 & SEC_LOAD) == 0)
+ {
+ if ((flags2 & SEC_HAS_CONTENTS) != 0
+ && (flags2 & SEC_LOAD) != 0)
+ return -1;
+ }
+ else
+ {
+ if ((flags2 & SEC_HAS_CONTENTS) == 0
+ || (flags2 & SEC_LOAD) == 0)
+ return 1;
+ }
+
+ /* Sort sections by LMA. */
+ if ((*sec1)->lma > (*sec2)->lma)
+ return 1;
+ else if ((*sec1)->lma < (*sec2)->lma)
+ return -1;
+
+ /* Sort sections with the same LMA by size. */
+ if (bfd_get_section_size (*sec1) > bfd_get_section_size (*sec2))
+ return 1;
+ else if (bfd_get_section_size (*sec1) < bfd_get_section_size (*sec2))
+ return -1;
+
+ return 0;
+}
+
+/* Mark all the symbols which will be used in output relocations with
+ the BSF_KEEP flag so that those symbols will not be stripped.
+
+ Ignore relocations which will not appear in the output file. */
+
+static void
+mark_symbols_used_in_relocations (bfd *ibfd, sec_ptr isection, void *symbolsarg)
+{
+ asymbol **symbols = (asymbol **) symbolsarg;
+ long relsize;
+ arelent **relpp;
+ long relcount, i;
+
+ /* Ignore an input section with no corresponding output section. */
+ if (isection->output_section == NULL)
+ return;
+
+ relsize = bfd_get_reloc_upper_bound (ibfd, isection);
+ if (relsize < 0)
+ {
+ /* Do not complain if the target does not support relocations. */
+ if (relsize == -1 && bfd_get_error () == bfd_error_invalid_operation)
+ return;
+ bfd_fatal (bfd_get_filename (ibfd));
+ }
+
+ if (relsize == 0)
+ return;
+
+ relpp = (arelent **) xmalloc (relsize);
+ relcount = bfd_canonicalize_reloc (ibfd, isection, relpp, symbols);
+ if (relcount < 0)
+ bfd_fatal (bfd_get_filename (ibfd));
+
+ /* Examine each symbol used in a relocation. If it's not one of the
+ special bfd section symbols, then mark it with BSF_KEEP. */
+ for (i = 0; i < relcount; i++)
+ {
+ if (*relpp[i]->sym_ptr_ptr != bfd_com_section_ptr->symbol
+ && *relpp[i]->sym_ptr_ptr != bfd_abs_section_ptr->symbol
+ && *relpp[i]->sym_ptr_ptr != bfd_und_section_ptr->symbol)
+ (*relpp[i]->sym_ptr_ptr)->flags |= BSF_KEEP;
+ }
+
+ if (relpp != NULL)
+ free (relpp);
+}
+
+/* Write out debugging information. */
+
+static bfd_boolean
+write_debugging_info (bfd *obfd, void *dhandle,
+ long *symcountp ATTRIBUTE_UNUSED,
+ asymbol ***symppp ATTRIBUTE_UNUSED)
+{
+ if (bfd_get_flavour (obfd) == bfd_target_ieee_flavour)
+ return write_ieee_debugging_info (obfd, dhandle);
+
+ if (bfd_get_flavour (obfd) == bfd_target_coff_flavour
+ || bfd_get_flavour (obfd) == bfd_target_elf_flavour)
+ {
+ bfd_byte *syms, *strings;
+ bfd_size_type symsize, stringsize;
+ asection *stabsec, *stabstrsec;
+ flagword flags;
+
+ if (! write_stabs_in_sections_debugging_info (obfd, dhandle, &syms,
+ &symsize, &strings,
+ &stringsize))
+ return FALSE;
+
+ flags = SEC_HAS_CONTENTS | SEC_READONLY | SEC_DEBUGGING;
+ stabsec = bfd_make_section_with_flags (obfd, ".stab", flags);
+ stabstrsec = bfd_make_section_with_flags (obfd, ".stabstr", flags);
+ if (stabsec == NULL
+ || stabstrsec == NULL
+ || ! bfd_set_section_size (obfd, stabsec, symsize)
+ || ! bfd_set_section_size (obfd, stabstrsec, stringsize)
+ || ! bfd_set_section_alignment (obfd, stabsec, 2)
+ || ! bfd_set_section_alignment (obfd, stabstrsec, 0))
+ {
+ bfd_nonfatal_message (NULL, obfd, NULL,
+ _("can't create debugging section"));
+ return FALSE;
+ }
+
+ /* We can get away with setting the section contents now because
+ the next thing the caller is going to do is copy over the
+ real sections. We may someday have to split the contents
+ setting out of this function. */
+ if (! bfd_set_section_contents (obfd, stabsec, syms, 0, symsize)
+ || ! bfd_set_section_contents (obfd, stabstrsec, strings, 0,
+ stringsize))
+ {
+ bfd_nonfatal_message (NULL, obfd, NULL,
+ _("can't set debugging section contents"));
+ return FALSE;
+ }
+
+ return TRUE;
+ }
+
+ bfd_nonfatal_message (NULL, obfd, NULL,
+ _("don't know how to write debugging information for %s"),
+ bfd_get_target (obfd));
+ return FALSE;
+}
+
+/* If neither -D nor -U was specified explicitly,
+ then use the configured default. */
+static void
+default_deterministic (void)
+{
+ if (deterministic < 0)
+ deterministic = DEFAULT_AR_DETERMINISTIC;
+}
+
+static int
+strip_main (int argc, char *argv[])
+{
+ char *input_target = NULL;
+ char *output_target = NULL;
+ bfd_boolean show_version = FALSE;
+ bfd_boolean formats_info = FALSE;
+ int c;
+ int i;
+ char *output_file = NULL;
+
+ while ((c = getopt_long (argc, argv, "I:O:F:K:N:R:o:sSpdgxXHhVvw",
+ strip_options, (int *) 0)) != EOF)
+ {
+ switch (c)
+ {
+ case 'I':
+ input_target = optarg;
+ break;
+ case 'O':
+ output_target = optarg;
+ break;
+ case 'F':
+ input_target = output_target = optarg;
+ break;
+ case 'R':
+ find_section_list (optarg, TRUE, SECTION_CONTEXT_REMOVE);
+ sections_removed = TRUE;
+ break;
+ case 's':
+ strip_symbols = STRIP_ALL;
+ break;
+ case 'S':
+ case 'g':
+ case 'd': /* Historic BSD alias for -g. Used by early NetBSD. */
+ strip_symbols = STRIP_DEBUG;
+ break;
+ case OPTION_STRIP_DWO:
+ strip_symbols = STRIP_DWO;
+ break;
+ case OPTION_STRIP_UNNEEDED:
+ strip_symbols = STRIP_UNNEEDED;
+ break;
+ case 'K':
+ add_specific_symbol (optarg, keep_specific_htab);
+ break;
+ case 'N':
+ add_specific_symbol (optarg, strip_specific_htab);
+ break;
+ case 'o':
+ output_file = optarg;
+ break;
+ case 'p':
+ preserve_dates = TRUE;
+ break;
+ case 'D':
+ deterministic = TRUE;
+ break;
+ case 'U':
+ deterministic = FALSE;
+ break;
+ case 'x':
+ discard_locals = LOCALS_ALL;
+ break;
+ case 'X':
+ discard_locals = LOCALS_START_L;
+ break;
+ case 'v':
+ verbose = TRUE;
+ break;
+ case 'V':
+ show_version = TRUE;
+ break;
+ case OPTION_FORMATS_INFO:
+ formats_info = TRUE;
+ break;
+ case OPTION_ONLY_KEEP_DEBUG:
+ strip_symbols = STRIP_NONDEBUG;
+ break;
+ case OPTION_KEEP_FILE_SYMBOLS:
+ keep_file_symbols = 1;
+ break;
+ case 0:
+ /* We've been given a long option. */
+ break;
+ case 'w':
+ wildcard = TRUE;
+ break;
+ case 'H':
+ case 'h':
+ strip_usage (stdout, 0);
+ default:
+ strip_usage (stderr, 1);
+ }
+ }
+
+ if (formats_info)
+ {
+ display_info ();
+ return 0;
+ }
+
+ if (show_version)
+ print_version ("strip");
+
+ default_deterministic ();
+
+ /* Default is to strip all symbols. */
+ if (strip_symbols == STRIP_UNDEF
+ && discard_locals == LOCALS_UNDEF
+ && htab_elements (strip_specific_htab) == 0)
+ strip_symbols = STRIP_ALL;
+
+ if (output_target == NULL)
+ output_target = input_target;
+
+ i = optind;
+ if (i == argc
+ || (output_file != NULL && (i + 1) < argc))
+ strip_usage (stderr, 1);
+
+ for (; i < argc; i++)
+ {
+ int hold_status = status;
+ struct stat statbuf;
+ char *tmpname;
+
+ if (get_file_size (argv[i]) < 1)
+ {
+ status = 1;
+ continue;
+ }
+
+ if (preserve_dates)
+ /* No need to check the return value of stat().
+ It has already been checked in get_file_size(). */
+ stat (argv[i], &statbuf);
+
+ if (output_file == NULL
+ || filename_cmp (argv[i], output_file) == 0)
+ tmpname = make_tempname (argv[i]);
+ else
+ tmpname = output_file;
+
+ if (tmpname == NULL)
+ {
+ bfd_nonfatal_message (argv[i], NULL, NULL,
+ _("could not create temporary file to hold stripped copy"));
+ status = 1;
+ continue;
+ }
+
+ status = 0;
+ copy_file (argv[i], tmpname, input_target, output_target, NULL);
+ if (status == 0)
+ {
+ if (preserve_dates)
+ set_times (tmpname, &statbuf);
+ if (output_file != tmpname)
+ status = (smart_rename (tmpname,
+ output_file ? output_file : argv[i],
+ preserve_dates) != 0);
+ if (status == 0)
+ status = hold_status;
+ }
+ else
+ unlink_if_ordinary (tmpname);
+ if (output_file != tmpname)
+ free (tmpname);
+ }
+
+ return status;
+}
+
+/* Set up PE subsystem. */
+
+static void
+set_pe_subsystem (const char *s)
+{
+ const char *version, *subsystem;
+ size_t i;
+ static const struct
+ {
+ const char *name;
+ const char set_def;
+ const short value;
+ }
+ v[] =
+ {
+ { "native", 0, IMAGE_SUBSYSTEM_NATIVE },
+ { "windows", 0, IMAGE_SUBSYSTEM_WINDOWS_GUI },
+ { "console", 0, IMAGE_SUBSYSTEM_WINDOWS_CUI },
+ { "posix", 0, IMAGE_SUBSYSTEM_POSIX_CUI },
+ { "wince", 0, IMAGE_SUBSYSTEM_WINDOWS_CE_GUI },
+ { "efi-app", 1, IMAGE_SUBSYSTEM_EFI_APPLICATION },
+ { "efi-bsd", 1, IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER },
+ { "efi-rtd", 1, IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER },
+ { "sal-rtd", 1, IMAGE_SUBSYSTEM_SAL_RUNTIME_DRIVER },
+ { "xbox", 0, IMAGE_SUBSYSTEM_XBOX }
+ };
+ short value;
+ char *copy;
+ int set_def = -1;
+
+ /* Check for the presence of a version number. */
+ version = strchr (s, ':');
+ if (version == NULL)
+ subsystem = s;
+ else
+ {
+ int len = version - s;
+ copy = xstrdup (s);
+ subsystem = copy;
+ copy[len] = '\0';
+ version = copy + 1 + len;
+ pe_major_subsystem_version = strtoul (version, &copy, 0);
+ if (*copy == '.')
+ pe_minor_subsystem_version = strtoul (copy + 1, &copy, 0);
+ if (*copy != '\0')
+ non_fatal (_("%s: bad version in PE subsystem"), s);
+ }
+
+ /* Check for numeric subsystem. */
+ value = (short) strtol (subsystem, &copy, 0);
+ if (*copy == '\0')
+ {
+ for (i = 0; i < ARRAY_SIZE (v); i++)
+ if (v[i].value == value)
+ {
+ pe_subsystem = value;
+ set_def = v[i].set_def;
+ break;
+ }
+ }
+ else
+ {
+ /* Search for subsystem by name. */
+ for (i = 0; i < ARRAY_SIZE (v); i++)
+ if (strcmp (subsystem, v[i].name) == 0)
+ {
+ pe_subsystem = v[i].value;
+ set_def = v[i].set_def;
+ break;
+ }
+ }
+
+ switch (set_def)
+ {
+ case -1:
+ fatal (_("unknown PE subsystem: %s"), s);
+ break;
+ case 0:
+ break;
+ default:
+ if (pe_file_alignment == (bfd_vma) -1)
+ pe_file_alignment = PE_DEF_FILE_ALIGNMENT;
+ if (pe_section_alignment == (bfd_vma) -1)
+ pe_section_alignment = PE_DEF_SECTION_ALIGNMENT;
+ break;
+ }
+ if (s != subsystem)
+ free ((char *) subsystem);
+}
+
+/* Convert EFI target to PEI target. */
+
+static void
+convert_efi_target (char *efi)
+{
+ efi[0] = 'p';
+ efi[1] = 'e';
+ efi[2] = 'i';
+
+ if (strcmp (efi + 4, "ia32") == 0)
+ {
+ /* Change ia32 to i386. */
+ efi[5]= '3';
+ efi[6]= '8';
+ efi[7]= '6';
+ }
+ else if (strcmp (efi + 4, "x86_64") == 0)
+ {
+ /* Change x86_64 to x86-64. */
+ efi[7] = '-';
+ }
+}
+
+static int
+copy_main (int argc, char *argv[])
+{
+ char *input_filename = NULL;
+ char *output_filename = NULL;
+ char *tmpname;
+ char *input_target = NULL;
+ char *output_target = NULL;
+ bfd_boolean show_version = FALSE;
+ bfd_boolean change_warn = TRUE;
+ bfd_boolean formats_info = FALSE;
+ int c;
+ struct stat statbuf;
+ const bfd_arch_info_type *input_arch = NULL;
+
+ while ((c = getopt_long (argc, argv, "b:B:i:I:j:K:N:s:O:d:F:L:G:R:SpgxXHhVvW:w",
+ copy_options, (int *) 0)) != EOF)
+ {
+ switch (c)
+ {
+ case 'b':
+ copy_byte = atoi (optarg);
+ if (copy_byte < 0)
+ fatal (_("byte number must be non-negative"));
+ break;
+
+ case 'B':
+ input_arch = bfd_scan_arch (optarg);
+ if (input_arch == NULL)
+ fatal (_("architecture %s unknown"), optarg);
+ break;
+
+ case 'i':
+ if (optarg)
+ {
+ interleave = atoi (optarg);
+ if (interleave < 1)
+ fatal (_("interleave must be positive"));
+ }
+ else
+ interleave = 4;
+ break;
+
+ case OPTION_INTERLEAVE_WIDTH:
+ copy_width = atoi (optarg);
+ if (copy_width < 1)
+ fatal(_("interleave width must be positive"));
+ break;
+
+ case 'I':
+ case 's': /* "source" - 'I' is preferred */
+ input_target = optarg;
+ break;
+
+ case 'O':
+ case 'd': /* "destination" - 'O' is preferred */
+ output_target = optarg;
+ break;
+
+ case 'F':
+ input_target = output_target = optarg;
+ break;
+
+ case 'j':
+ find_section_list (optarg, TRUE, SECTION_CONTEXT_COPY);
+ sections_copied = TRUE;
+ break;
+
+ case 'R':
+ find_section_list (optarg, TRUE, SECTION_CONTEXT_REMOVE);
+ sections_removed = TRUE;
+ break;
+
+ case 'S':
+ strip_symbols = STRIP_ALL;
+ break;
+
+ case 'g':
+ strip_symbols = STRIP_DEBUG;
+ break;
+
+ case OPTION_STRIP_DWO:
+ strip_symbols = STRIP_DWO;
+ break;
+
+ case OPTION_STRIP_UNNEEDED:
+ strip_symbols = STRIP_UNNEEDED;
+ break;
+
+ case OPTION_ONLY_KEEP_DEBUG:
+ strip_symbols = STRIP_NONDEBUG;
+ break;
+
+ case OPTION_KEEP_FILE_SYMBOLS:
+ keep_file_symbols = 1;
+ break;
+
+ case OPTION_ADD_GNU_DEBUGLINK:
+ long_section_names = ENABLE ;
+ gnu_debuglink_filename = optarg;
+ break;
+
+ case 'K':
+ add_specific_symbol (optarg, keep_specific_htab);
+ break;
+
+ case 'N':
+ add_specific_symbol (optarg, strip_specific_htab);
+ break;
+
+ case OPTION_STRIP_UNNEEDED_SYMBOL:
+ add_specific_symbol (optarg, strip_unneeded_htab);
+ break;
+
+ case 'L':
+ add_specific_symbol (optarg, localize_specific_htab);
+ break;
+
+ case OPTION_GLOBALIZE_SYMBOL:
+ add_specific_symbol (optarg, globalize_specific_htab);
+ break;
+
+ case 'G':
+ add_specific_symbol (optarg, keepglobal_specific_htab);
+ break;
+
+ case 'W':
+ add_specific_symbol (optarg, weaken_specific_htab);
+ break;
+
+ case 'p':
+ preserve_dates = TRUE;
+ break;
+
+ case 'D':
+ deterministic = TRUE;
+ break;
+
+ case 'U':
+ deterministic = FALSE;
+ break;
+
+ case 'w':
+ wildcard = TRUE;
+ break;
+
+ case 'x':
+ discard_locals = LOCALS_ALL;
+ break;
+
+ case 'X':
+ discard_locals = LOCALS_START_L;
+ break;
+
+ case 'v':
+ verbose = TRUE;
+ break;
+
+ case 'V':
+ show_version = TRUE;
+ break;
+
+ case OPTION_FORMATS_INFO:
+ formats_info = TRUE;
+ break;
+
+ case OPTION_WEAKEN:
+ weaken = TRUE;
+ break;
+
+ case OPTION_ADD_SECTION:
+ {
+ const char *s;
+ size_t off, alloc;
+ struct section_add *pa;
+ FILE *f;
+
+ s = strchr (optarg, '=');
+
+ if (s == NULL)
+ fatal (_("bad format for %s"), "--add-section");
+
+ pa = (struct section_add *) xmalloc (sizeof (struct section_add));
+ pa->name = xstrndup (optarg, s - optarg);
+ pa->filename = s + 1;
+
+ /* We don't use get_file_size so that we can do
+ --add-section .note.GNU_stack=/dev/null
+ get_file_size doesn't work on /dev/null. */
+
+ f = fopen (pa->filename, FOPEN_RB);
+ if (f == NULL)
+ fatal (_("cannot open: %s: %s"),
+ pa->filename, strerror (errno));
+
+ off = 0;
+ alloc = 4096;
+ pa->contents = (bfd_byte *) xmalloc (alloc);
+ while (!feof (f))
+ {
+ off_t got;
+
+ if (off == alloc)
+ {
+ alloc <<= 1;
+ pa->contents = (bfd_byte *) xrealloc (pa->contents, alloc);
+ }
+
+ got = fread (pa->contents + off, 1, alloc - off, f);
+ if (ferror (f))
+ fatal (_("%s: fread failed"), pa->filename);
+
+ off += got;
+ }
+
+ pa->size = off;
+
+ fclose (f);
+
+ pa->next = add_sections;
+ add_sections = pa;
+ }
+ break;
+
+ case OPTION_CHANGE_START:
+ change_start = parse_vma (optarg, "--change-start");
+ break;
+
+ case OPTION_CHANGE_SECTION_ADDRESS:
+ case OPTION_CHANGE_SECTION_LMA:
+ case OPTION_CHANGE_SECTION_VMA:
+ {
+ struct section_list * p;
+ unsigned int context = 0;
+ const char *s;
+ int len;
+ char *name;
+ char *option = NULL;
+ bfd_vma val;
+
+ switch (c)
+ {
+ case OPTION_CHANGE_SECTION_ADDRESS:
+ option = "--change-section-address";
+ context = SECTION_CONTEXT_ALTER_LMA | SECTION_CONTEXT_ALTER_VMA;
+ break;
+ case OPTION_CHANGE_SECTION_LMA:
+ option = "--change-section-lma";
+ context = SECTION_CONTEXT_ALTER_LMA;
+ break;
+ case OPTION_CHANGE_SECTION_VMA:
+ option = "--change-section-vma";
+ context = SECTION_CONTEXT_ALTER_VMA;
+ break;
+ }
+
+ s = strchr (optarg, '=');
+ if (s == NULL)
+ {
+ s = strchr (optarg, '+');
+ if (s == NULL)
+ {
+ s = strchr (optarg, '-');
+ if (s == NULL)
+ fatal (_("bad format for %s"), option);
+ }
+ }
+ else
+ {
+ /* Correct the context. */
+ switch (c)
+ {
+ case OPTION_CHANGE_SECTION_ADDRESS:
+ context = SECTION_CONTEXT_SET_LMA | SECTION_CONTEXT_SET_VMA;
+ break;
+ case OPTION_CHANGE_SECTION_LMA:
+ context = SECTION_CONTEXT_SET_LMA;
+ break;
+ case OPTION_CHANGE_SECTION_VMA:
+ context = SECTION_CONTEXT_SET_VMA;
+ break;
+ }
+ }
+
+ len = s - optarg;
+ name = (char *) xmalloc (len + 1);
+ strncpy (name, optarg, len);
+ name[len] = '\0';
+
+ p = find_section_list (name, TRUE, context);
+
+ val = parse_vma (s + 1, option);
+ if (*s == '-')
+ val = - val;
+
+ switch (c)
+ {
+ case OPTION_CHANGE_SECTION_ADDRESS:
+ p->vma_val = val;
+ /* Drop through. */
+
+ case OPTION_CHANGE_SECTION_LMA:
+ p->lma_val = val;
+ break;
+
+ case OPTION_CHANGE_SECTION_VMA:
+ p->vma_val = val;
+ break;
+ }
+ }
+ break;
+
+ case OPTION_CHANGE_ADDRESSES:
+ change_section_address = parse_vma (optarg, "--change-addresses");
+ change_start = change_section_address;
+ break;
+
+ case OPTION_CHANGE_WARNINGS:
+ change_warn = TRUE;
+ break;
+
+ case OPTION_CHANGE_LEADING_CHAR:
+ change_leading_char = TRUE;
+ break;
+
+ case OPTION_COMPRESS_DEBUG_SECTIONS:
+ do_debug_sections = compress;
+ break;
+
+ case OPTION_DEBUGGING:
+ convert_debugging = TRUE;
+ break;
+
+ case OPTION_DECOMPRESS_DEBUG_SECTIONS:
+ do_debug_sections = decompress;
+ break;
+
+ case OPTION_GAP_FILL:
+ {
+ bfd_vma gap_fill_vma;
+
+ gap_fill_vma = parse_vma (optarg, "--gap-fill");
+ gap_fill = (bfd_byte) gap_fill_vma;
+ if ((bfd_vma) gap_fill != gap_fill_vma)
+ {
+ char buff[20];
+
+ sprintf_vma (buff, gap_fill_vma);
+
+ non_fatal (_("Warning: truncating gap-fill from 0x%s to 0x%x"),
+ buff, gap_fill);
+ }
+ gap_fill_set = TRUE;
+ }
+ break;
+
+ case OPTION_NO_CHANGE_WARNINGS:
+ change_warn = FALSE;
+ break;
+
+ case OPTION_PAD_TO:
+ pad_to = parse_vma (optarg, "--pad-to");
+ pad_to_set = TRUE;
+ break;
+
+ case OPTION_REMOVE_LEADING_CHAR:
+ remove_leading_char = TRUE;
+ break;
+
+ case OPTION_REDEFINE_SYM:
+ {
+ /* Push this redefinition onto redefine_symbol_list. */
+
+ int len;
+ const char *s;
+ const char *nextarg;
+ char *source, *target;
+
+ s = strchr (optarg, '=');
+ if (s == NULL)
+ fatal (_("bad format for %s"), "--redefine-sym");
+
+ len = s - optarg;
+ source = (char *) xmalloc (len + 1);
+ strncpy (source, optarg, len);
+ source[len] = '\0';
+
+ nextarg = s + 1;
+ len = strlen (nextarg);
+ target = (char *) xmalloc (len + 1);
+ strcpy (target, nextarg);
+
+ redefine_list_append ("--redefine-sym", source, target);
+
+ free (source);
+ free (target);
+ }
+ break;
+
+ case OPTION_REDEFINE_SYMS:
+ add_redefine_syms_file (optarg);
+ break;
+
+ case OPTION_SET_SECTION_FLAGS:
+ {
+ struct section_list *p;
+ const char *s;
+ int len;
+ char *name;
+
+ s = strchr (optarg, '=');
+ if (s == NULL)
+ fatal (_("bad format for %s"), "--set-section-flags");
+
+ len = s - optarg;
+ name = (char *) xmalloc (len + 1);
+ strncpy (name, optarg, len);
+ name[len] = '\0';
+
+ p = find_section_list (name, TRUE, SECTION_CONTEXT_SET_FLAGS);
+
+ p->flags = parse_flags (s + 1);
+ }
+ break;
+
+ case OPTION_RENAME_SECTION:
+ {
+ flagword flags;
+ const char *eq, *fl;
+ char *old_name;
+ char *new_name;
+ unsigned int len;
+
+ eq = strchr (optarg, '=');
+ if (eq == NULL)
+ fatal (_("bad format for %s"), "--rename-section");
+
+ len = eq - optarg;
+ if (len == 0)
+ fatal (_("bad format for %s"), "--rename-section");
+
+ old_name = (char *) xmalloc (len + 1);
+ strncpy (old_name, optarg, len);
+ old_name[len] = 0;
+
+ eq++;
+ fl = strchr (eq, ',');
+ if (fl)
+ {
+ flags = parse_flags (fl + 1);
+ len = fl - eq;
+ }
+ else
+ {
+ flags = -1;
+ len = strlen (eq);
+ }
+
+ if (len == 0)
+ fatal (_("bad format for %s"), "--rename-section");
+
+ new_name = (char *) xmalloc (len + 1);
+ strncpy (new_name, eq, len);
+ new_name[len] = 0;
+
+ add_section_rename (old_name, new_name, flags);
+ }
+ break;
+
+ case OPTION_SET_START:
+ set_start = parse_vma (optarg, "--set-start");
+ set_start_set = TRUE;
+ break;
+
+ case OPTION_SREC_LEN:
+ Chunk = parse_vma (optarg, "--srec-len");
+ break;
+
+ case OPTION_SREC_FORCES3:
+ S3Forced = TRUE;
+ break;
+
+ case OPTION_STRIP_SYMBOLS:
+ add_specific_symbols (optarg, strip_specific_htab);
+ break;
+
+ case OPTION_STRIP_UNNEEDED_SYMBOLS:
+ add_specific_symbols (optarg, strip_unneeded_htab);
+ break;
+
+ case OPTION_KEEP_SYMBOLS:
+ add_specific_symbols (optarg, keep_specific_htab);
+ break;
+
+ case OPTION_LOCALIZE_HIDDEN:
+ localize_hidden = TRUE;
+ break;
+
+ case OPTION_LOCALIZE_SYMBOLS:
+ add_specific_symbols (optarg, localize_specific_htab);
+ break;
+
+ case OPTION_LONG_SECTION_NAMES:
+ if (!strcmp ("enable", optarg))
+ long_section_names = ENABLE;
+ else if (!strcmp ("disable", optarg))
+ long_section_names = DISABLE;
+ else if (!strcmp ("keep", optarg))
+ long_section_names = KEEP;
+ else
+ fatal (_("unknown long section names option '%s'"), optarg);
+ break;
+
+ case OPTION_GLOBALIZE_SYMBOLS:
+ add_specific_symbols (optarg, globalize_specific_htab);
+ break;
+
+ case OPTION_KEEPGLOBAL_SYMBOLS:
+ add_specific_symbols (optarg, keepglobal_specific_htab);
+ break;
+
+ case OPTION_WEAKEN_SYMBOLS:
+ add_specific_symbols (optarg, weaken_specific_htab);
+ break;
+
+ case OPTION_ALT_MACH_CODE:
+ use_alt_mach_code = strtoul (optarg, NULL, 0);
+ if (use_alt_mach_code == 0)
+ fatal (_("unable to parse alternative machine code"));
+ break;
+
+ case OPTION_PREFIX_SYMBOLS:
+ prefix_symbols_string = optarg;
+ break;
+
+ case OPTION_PREFIX_SECTIONS:
+ prefix_sections_string = optarg;
+ break;
+
+ case OPTION_PREFIX_ALLOC_SECTIONS:
+ prefix_alloc_sections_string = optarg;
+ break;
+
+ case OPTION_READONLY_TEXT:
+ bfd_flags_to_set |= WP_TEXT;
+ bfd_flags_to_clear &= ~WP_TEXT;
+ break;
+
+ case OPTION_WRITABLE_TEXT:
+ bfd_flags_to_clear |= WP_TEXT;
+ bfd_flags_to_set &= ~WP_TEXT;
+ break;
+
+ case OPTION_PURE:
+ bfd_flags_to_set |= D_PAGED;
+ bfd_flags_to_clear &= ~D_PAGED;
+ break;
+
+ case OPTION_IMPURE:
+ bfd_flags_to_clear |= D_PAGED;
+ bfd_flags_to_set &= ~D_PAGED;
+ break;
+
+ case OPTION_EXTRACT_DWO:
+ strip_symbols = STRIP_NONDWO;
+ break;
+
+ case OPTION_EXTRACT_SYMBOL:
+ extract_symbol = TRUE;
+ break;
+
+ case OPTION_REVERSE_BYTES:
+ {
+ int prev = reverse_bytes;
+
+ reverse_bytes = atoi (optarg);
+ if ((reverse_bytes <= 0) || ((reverse_bytes % 2) != 0))
+ fatal (_("number of bytes to reverse must be positive and even"));
+
+ if (prev && prev != reverse_bytes)
+ non_fatal (_("Warning: ignoring previous --reverse-bytes value of %d"),
+ prev);
+ break;
+ }
+
+ case OPTION_FILE_ALIGNMENT:
+ pe_file_alignment = parse_vma (optarg, "--file-alignment");
+ break;
+
+ case OPTION_HEAP:
+ {
+ char *end;
+ pe_heap_reserve = strtoul (optarg, &end, 0);
+ if (end == optarg
+ || (*end != '.' && *end != '\0'))
+ non_fatal (_("%s: invalid reserve value for --heap"),
+ optarg);
+ else if (*end != '\0')
+ {
+ pe_heap_commit = strtoul (end + 1, &end, 0);
+ if (*end != '\0')
+ non_fatal (_("%s: invalid commit value for --heap"),
+ optarg);
+ }
+ }
+ break;
+
+ case OPTION_IMAGE_BASE:
+ pe_image_base = parse_vma (optarg, "--image-base");
+ break;
+
+ case OPTION_SECTION_ALIGNMENT:
+ pe_section_alignment = parse_vma (optarg,
+ "--section-alignment");
+ break;
+
+ case OPTION_SUBSYSTEM:
+ set_pe_subsystem (optarg);
+ break;
+
+ case OPTION_STACK:
+ {
+ char *end;
+ pe_stack_reserve = strtoul (optarg, &end, 0);
+ if (end == optarg
+ || (*end != '.' && *end != '\0'))
+ non_fatal (_("%s: invalid reserve value for --stack"),
+ optarg);
+ else if (*end != '\0')
+ {
+ pe_stack_commit = strtoul (end + 1, &end, 0);
+ if (*end != '\0')
+ non_fatal (_("%s: invalid commit value for --stack"),
+ optarg);
+ }
+ }
+ break;
+
+ case 0:
+ /* We've been given a long option. */
+ break;
+
+ case 'H':
+ case 'h':
+ copy_usage (stdout, 0);
+
+ default:
+ copy_usage (stderr, 1);
+ }
+ }
+
+ if (formats_info)
+ {
+ display_info ();
+ return 0;
+ }
+
+ if (show_version)
+ print_version ("objcopy");
+
+ if (interleave && copy_byte == -1)
+ fatal (_("interleave start byte must be set with --byte"));
+
+ if (copy_byte >= interleave)
+ fatal (_("byte number must be less than interleave"));
+
+ if (copy_width > interleave - copy_byte)
+ fatal (_("interleave width must be less than or equal to interleave - byte`"));
+
+ if (optind == argc || optind + 2 < argc)
+ copy_usage (stderr, 1);
+
+ input_filename = argv[optind];
+ if (optind + 1 < argc)
+ output_filename = argv[optind + 1];
+
+ default_deterministic ();
+
+ /* Default is to strip no symbols. */
+ if (strip_symbols == STRIP_UNDEF && discard_locals == LOCALS_UNDEF)
+ strip_symbols = STRIP_NONE;
+
+ if (output_target == NULL)
+ output_target = input_target;
+
+ /* Convert input EFI target to PEI target. */
+ if (input_target != NULL
+ && strncmp (input_target, "efi-", 4) == 0)
+ {
+ char *efi;
+
+ efi = xstrdup (output_target + 4);
+ if (strncmp (efi, "bsdrv-", 6) == 0
+ || strncmp (efi, "rtdrv-", 6) == 0)
+ efi += 2;
+ else if (strncmp (efi, "app-", 4) != 0)
+ fatal (_("unknown input EFI target: %s"), input_target);
+
+ input_target = efi;
+ convert_efi_target (efi);
+ }
+
+ /* Convert output EFI target to PEI target. */
+ if (output_target != NULL
+ && strncmp (output_target, "efi-", 4) == 0)
+ {
+ char *efi;
+
+ efi = xstrdup (output_target + 4);
+ if (strncmp (efi, "app-", 4) == 0)
+ {
+ if (pe_subsystem == -1)
+ pe_subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
+ }
+ else if (strncmp (efi, "bsdrv-", 6) == 0)
+ {
+ if (pe_subsystem == -1)
+ pe_subsystem = IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER;
+ efi += 2;
+ }
+ else if (strncmp (efi, "rtdrv-", 6) == 0)
+ {
+ if (pe_subsystem == -1)
+ pe_subsystem = IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER;
+ efi += 2;
+ }
+ else
+ fatal (_("unknown output EFI target: %s"), output_target);
+
+ if (pe_file_alignment == (bfd_vma) -1)
+ pe_file_alignment = PE_DEF_FILE_ALIGNMENT;
+ if (pe_section_alignment == (bfd_vma) -1)
+ pe_section_alignment = PE_DEF_SECTION_ALIGNMENT;
+
+ output_target = efi;
+ convert_efi_target (efi);
+ }
+
+ if (preserve_dates)
+ if (stat (input_filename, & statbuf) < 0)
+ fatal (_("warning: could not locate '%s'. System error message: %s"),
+ input_filename, strerror (errno));
+
+ /* If there is no destination file, or the source and destination files
+ are the same, then create a temp and rename the result into the input. */
+ if (output_filename == NULL
+ || filename_cmp (input_filename, output_filename) == 0)
+ tmpname = make_tempname (input_filename);
+ else
+ tmpname = output_filename;
+
+ if (tmpname == NULL)
+ fatal (_("warning: could not create temporary file whilst copying '%s', (error: %s)"),
+ input_filename, strerror (errno));
+
+ copy_file (input_filename, tmpname, input_target, output_target, input_arch);
+ if (status == 0)
+ {
+ if (preserve_dates)
+ set_times (tmpname, &statbuf);
+ if (tmpname != output_filename)
+ status = (smart_rename (tmpname, input_filename,
+ preserve_dates) != 0);
+ }
+ else
+ unlink_if_ordinary (tmpname);
+
+ if (change_warn)
+ {
+ struct section_list *p;
+
+ for (p = change_sections; p != NULL; p = p->next)
+ {
+ if (! p->used)
+ {
+ if (p->context & (SECTION_CONTEXT_SET_VMA | SECTION_CONTEXT_ALTER_VMA))
+ {
+ char buff [20];
+
+ sprintf_vma (buff, p->vma_val);
+
+ /* xgettext:c-format */
+ non_fatal (_("%s %s%c0x%s never used"),
+ "--change-section-vma",
+ p->pattern,
+ p->context & SECTION_CONTEXT_SET_VMA ? '=' : '+',
+ buff);
+ }
+
+ if (p->context & (SECTION_CONTEXT_SET_LMA | SECTION_CONTEXT_ALTER_LMA))
+ {
+ char buff [20];
+
+ sprintf_vma (buff, p->lma_val);
+
+ /* xgettext:c-format */
+ non_fatal (_("%s %s%c0x%s never used"),
+ "--change-section-lma",
+ p->pattern,
+ p->context & SECTION_CONTEXT_SET_LMA ? '=' : '+',
+ buff);
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+
+int
+main (int argc, char *argv[])
+{
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = argv[0];
+ xmalloc_set_program_name (program_name);
+
+ START_PROGRESS (program_name, 0);
+
+ expandargv (&argc, &argv);
+
+ strip_symbols = STRIP_UNDEF;
+ discard_locals = LOCALS_UNDEF;
+
+ bfd_init ();
+ set_default_bfd_target ();
+
+ if (is_strip < 0)
+ {
+ int i = strlen (program_name);
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ /* Drop the .exe suffix, if any. */
+ if (i > 4 && FILENAME_CMP (program_name + i - 4, ".exe") == 0)
+ {
+ i -= 4;
+ program_name[i] = '\0';
+ }
+#endif
+ is_strip = (i >= 5 && FILENAME_CMP (program_name + i - 5, "strip") == 0);
+ }
+
+ create_symbol_htabs ();
+
+ if (is_strip)
+ strip_main (argc, argv);
+ else
+ copy_main (argc, argv);
+
+ END_PROGRESS (program_name);
+
+ return status;
+}
diff --git a/binutils-2.24/binutils/objdump.c b/binutils-2.24/binutils/objdump.c
new file mode 100644
index 00000000..cfd08e93
--- /dev/null
+++ b/binutils-2.24/binutils/objdump.c
@@ -0,0 +1,3698 @@
+/* objdump.c -- dump information about an object file.
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+ 2012, 2013 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+
+/* Objdump overview.
+
+ Objdump displays information about one or more object files, either on
+ their own, or inside libraries. It is commonly used as a disassembler,
+ but it can also display information about file headers, symbol tables,
+ relocations, debugging directives and more.
+
+ The flow of execution is as follows:
+
+ 1. Command line arguments are checked for control switches and the
+ information to be displayed is selected.
+
+ 2. Any remaining arguments are assumed to be object files, and they are
+ processed in order by display_bfd(). If the file is an archive each
+ of its elements is processed in turn.
+
+ 3. The file's target architecture and binary file format are determined
+ by bfd_check_format(). If they are recognised, then dump_bfd() is
+ called.
+
+ 4. dump_bfd() in turn calls separate functions to display the requested
+ item(s) of information(s). For example disassemble_data() is called if
+ a disassembly has been requested.
+
+ When disassembling the code loops through blocks of instructions bounded
+ by symbols, calling disassemble_bytes() on each block. The actual
+ disassembling is done by the libopcodes library, via a function pointer
+ supplied by the disassembler() function. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "elf-bfd.h"
+#include "progress.h"
+#include "bucomm.h"
+#include "elfcomm.h"
+#include "dwarf.h"
+#include "getopt.h"
+#include "safe-ctype.h"
+#include "dis-asm.h"
+#include "libiberty.h"
+#include "demangle.h"
+#include "filenames.h"
+#include "debug.h"
+#include "budbg.h"
+#include "objdump.h"
+
+#ifdef HAVE_MMAP
+#include <sys/mman.h>
+#endif
+
+/* Internal headers for the ELF .stab-dump code - sorry. */
+#define BYTES_IN_WORD 32
+#include "aout/aout64.h"
+
+/* Exit status. */
+static int exit_status = 0;
+
+static char *default_target = NULL; /* Default at runtime. */
+
+/* The following variables are set based on arguments passed on the
+ command line. */
+static int show_version = 0; /* Show the version number. */
+static int dump_section_contents; /* -s */
+static int dump_section_headers; /* -h */
+static bfd_boolean dump_file_header; /* -f */
+static int dump_symtab; /* -t */
+static int dump_dynamic_symtab; /* -T */
+static int dump_reloc_info; /* -r */
+static int dump_dynamic_reloc_info; /* -R */
+static int dump_ar_hdrs; /* -a */
+static int dump_private_headers; /* -p */
+static char *dump_private_options; /* -P */
+static int prefix_addresses; /* --prefix-addresses */
+static int with_line_numbers; /* -l */
+static bfd_boolean with_source_code; /* -S */
+static int show_raw_insn; /* --show-raw-insn */
+static int dump_dwarf_section_info; /* --dwarf */
+static int dump_stab_section_info; /* --stabs */
+static int do_demangle; /* -C, --demangle */
+static bfd_boolean disassemble; /* -d */
+static bfd_boolean disassemble_all; /* -D */
+static int disassemble_zeroes; /* --disassemble-zeroes */
+static bfd_boolean formats_info; /* -i */
+static int wide_output; /* -w */
+static int insn_width; /* --insn-width */
+static bfd_vma start_address = (bfd_vma) -1; /* --start-address */
+static bfd_vma stop_address = (bfd_vma) -1; /* --stop-address */
+static int dump_debugging; /* --debugging */
+static int dump_debugging_tags; /* --debugging-tags */
+static int suppress_bfd_header;
+static int dump_special_syms = 0; /* --special-syms */
+static bfd_vma adjust_section_vma = 0; /* --adjust-vma */
+static int file_start_context = 0; /* --file-start-context */
+static bfd_boolean display_file_offsets;/* -F */
+static const char *prefix; /* --prefix */
+static int prefix_strip; /* --prefix-strip */
+static size_t prefix_length;
+
+/* A structure to record the sections mentioned in -j switches. */
+struct only
+{
+ const char * name; /* The name of the section. */
+ bfd_boolean seen; /* A flag to indicate that the section has been found in one or more input files. */
+ struct only * next; /* Pointer to the next structure in the list. */
+};
+/* Pointer to an array of 'only' structures.
+ This pointer is NULL if the -j switch has not been used. */
+static struct only * only_list = NULL;
+
+/* Variables for handling include file path table. */
+static const char **include_paths;
+static int include_path_count;
+
+/* Extra info to pass to the section disassembler and address printing
+ function. */
+struct objdump_disasm_info
+{
+ bfd * abfd;
+ asection * sec;
+ bfd_boolean require_sec;
+ arelent ** dynrelbuf;
+ long dynrelcount;
+ disassembler_ftype disassemble_fn;
+ arelent * reloc;
+};
+
+/* Architecture to disassemble for, or default if NULL. */
+static char *machine = NULL;
+
+/* Target specific options to the disassembler. */
+static char *disassembler_options = NULL;
+
+/* Endianness to disassemble for, or default if BFD_ENDIAN_UNKNOWN. */
+static enum bfd_endian endian = BFD_ENDIAN_UNKNOWN;
+
+/* The symbol table. */
+static asymbol **syms;
+
+/* Number of symbols in `syms'. */
+static long symcount = 0;
+
+/* The sorted symbol table. */
+static asymbol **sorted_syms;
+
+/* Number of symbols in `sorted_syms'. */
+static long sorted_symcount = 0;
+
+/* The dynamic symbol table. */
+static asymbol **dynsyms;
+
+/* The synthetic symbol table. */
+static asymbol *synthsyms;
+static long synthcount = 0;
+
+/* Number of symbols in `dynsyms'. */
+static long dynsymcount = 0;
+
+static bfd_byte *stabs;
+static bfd_size_type stab_size;
+
+static char *strtab;
+static bfd_size_type stabstr_size;
+
+static bfd_boolean is_relocatable = FALSE;
+
+/* Handlers for -P/--private. */
+static const struct objdump_private_desc * const objdump_private_vectors[] =
+ {
+ OBJDUMP_PRIVATE_VECTORS
+ NULL
+ };
+
+static void
+usage (FILE *stream, int status)
+{
+ fprintf (stream, _("Usage: %s <option(s)> <file(s)>\n"), program_name);
+ fprintf (stream, _(" Display information from object <file(s)>.\n"));
+ fprintf (stream, _(" At least one of the following switches must be given:\n"));
+ fprintf (stream, _("\
+ -a, --archive-headers Display archive header information\n\
+ -f, --file-headers Display the contents of the overall file header\n\
+ -p, --private-headers Display object format specific file header contents\n\
+ -P, --private=OPT,OPT... Display object format specific contents\n\
+ -h, --[section-]headers Display the contents of the section headers\n\
+ -x, --all-headers Display the contents of all headers\n\
+ -d, --disassemble Display assembler contents of executable sections\n\
+ -D, --disassemble-all Display assembler contents of all sections\n\
+ -S, --source Intermix source code with disassembly\n\
+ -s, --full-contents Display the full contents of all sections requested\n\
+ -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[lLiaprmfFsoRt] or\n\
+ --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n\
+ =frames-interp,=str,=loc,=Ranges,=pubtypes,\n\
+ =gdb_index,=trace_info,=trace_abbrev,=trace_aranges,\n\
+ =addr,=cu_index]\n\
+ 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\
+"));
+ if (status != 2)
+ {
+ const struct objdump_private_desc * const *desc;
+
+ fprintf (stream, _("\n The following switches are optional:\n"));
+ fprintf (stream, _("\
+ -b, --target=BFDNAME Specify the target object format as BFDNAME\n\
+ -m, --architecture=MACHINE Specify the target architecture as MACHINE\n\
+ -j, --section=NAME Only display information for section NAME\n\
+ -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n\
+ -EB --endian=big Assume big endian format when disassembling\n\
+ -EL --endian=little Assume little endian format when disassembling\n\
+ --file-start-context Include context from start of file (with -S)\n\
+ -I, --include=DIR Add DIR to search list for source files\n\
+ -l, --line-numbers Include line numbers and filenames in output\n\
+ -F, --file-offsets Include file offsets when displaying information\n\
+ -C, --demangle[=STYLE] Decode mangled/processed symbol names\n\
+ The STYLE, if specified, can be `auto', `gnu',\n\
+ `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n\
+ or `gnat'\n\
+ -w, --wide Format output for more than 80 columns\n\
+ -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n\
+ --start-address=ADDR Only process data whose address is >= ADDR\n\
+ --stop-address=ADDR Only process data whose address is <= ADDR\n\
+ --prefix-addresses Print complete address alongside disassembly\n\
+ --[no-]show-raw-insn Display hex alongside symbolic disassembly\n\
+ --insn-width=WIDTH Display WIDTH bytes on a single line for -d\n\
+ --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n\
+ --special-syms Include special symbols in symbol dumps\n\
+ --prefix=PREFIX Add PREFIX to absolute paths for -S\n\
+ --prefix-strip=LEVEL Strip initial directory names for -S\n"));
+ fprintf (stream, _("\
+ --dwarf-depth=N Do not display DIEs at depth N or greater\n\
+ --dwarf-start=N Display DIEs starting with N, at the same depth\n\
+ or deeper\n\
+ --dwarf-check Make additional dwarf internal consistency checks.\
+ \n\n"));
+ list_supported_targets (program_name, stream);
+ list_supported_architectures (program_name, stream);
+
+ disassembler_usage (stream);
+
+ if (objdump_private_vectors[0] != NULL)
+ {
+ fprintf (stream,
+ _("\nOptions supported for -P/--private switch:\n"));
+ for (desc = objdump_private_vectors; *desc != NULL; desc++)
+ (*desc)->help (stream);
+ }
+ }
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (stream, _("Report bugs to %s.\n"), REPORT_BUGS_TO);
+ exit (status);
+}
+
+/* 150 isn't special; it's just an arbitrary non-ASCII char value. */
+enum option_values
+ {
+ OPTION_ENDIAN=150,
+ OPTION_START_ADDRESS,
+ OPTION_STOP_ADDRESS,
+ OPTION_DWARF,
+ OPTION_PREFIX,
+ OPTION_PREFIX_STRIP,
+ OPTION_INSN_WIDTH,
+ OPTION_ADJUST_VMA,
+ OPTION_DWARF_DEPTH,
+ OPTION_DWARF_CHECK,
+ OPTION_DWARF_START
+ };
+
+static struct option long_options[]=
+{
+ {"adjust-vma", required_argument, NULL, OPTION_ADJUST_VMA},
+ {"all-headers", no_argument, NULL, 'x'},
+ {"private-headers", no_argument, NULL, 'p'},
+ {"private", required_argument, NULL, 'P'},
+ {"architecture", required_argument, NULL, 'm'},
+ {"archive-headers", no_argument, NULL, 'a'},
+ {"debugging", no_argument, NULL, 'g'},
+ {"debugging-tags", no_argument, NULL, 'e'},
+ {"demangle", optional_argument, NULL, 'C'},
+ {"disassemble", no_argument, NULL, 'd'},
+ {"disassemble-all", no_argument, NULL, 'D'},
+ {"disassembler-options", required_argument, NULL, 'M'},
+ {"disassemble-zeroes", no_argument, NULL, 'z'},
+ {"dynamic-reloc", no_argument, NULL, 'R'},
+ {"dynamic-syms", no_argument, NULL, 'T'},
+ {"endian", required_argument, NULL, OPTION_ENDIAN},
+ {"file-headers", no_argument, NULL, 'f'},
+ {"file-offsets", no_argument, NULL, 'F'},
+ {"file-start-context", no_argument, &file_start_context, 1},
+ {"full-contents", no_argument, NULL, 's'},
+ {"headers", no_argument, NULL, 'h'},
+ {"help", no_argument, NULL, 'H'},
+ {"info", no_argument, NULL, 'i'},
+ {"line-numbers", no_argument, NULL, 'l'},
+ {"no-show-raw-insn", no_argument, &show_raw_insn, -1},
+ {"prefix-addresses", no_argument, &prefix_addresses, 1},
+ {"reloc", no_argument, NULL, 'r'},
+ {"section", required_argument, NULL, 'j'},
+ {"section-headers", no_argument, NULL, 'h'},
+ {"show-raw-insn", no_argument, &show_raw_insn, 1},
+ {"source", no_argument, NULL, 'S'},
+ {"special-syms", no_argument, &dump_special_syms, 1},
+ {"include", required_argument, NULL, 'I'},
+ {"dwarf", optional_argument, NULL, OPTION_DWARF},
+ {"stabs", no_argument, NULL, 'G'},
+ {"start-address", required_argument, NULL, OPTION_START_ADDRESS},
+ {"stop-address", required_argument, NULL, OPTION_STOP_ADDRESS},
+ {"syms", no_argument, NULL, 't'},
+ {"target", required_argument, NULL, 'b'},
+ {"version", no_argument, NULL, 'V'},
+ {"wide", no_argument, NULL, 'w'},
+ {"prefix", required_argument, NULL, OPTION_PREFIX},
+ {"prefix-strip", required_argument, NULL, OPTION_PREFIX_STRIP},
+ {"insn-width", required_argument, NULL, OPTION_INSN_WIDTH},
+ {"dwarf-depth", required_argument, 0, OPTION_DWARF_DEPTH},
+ {"dwarf-start", required_argument, 0, OPTION_DWARF_START},
+ {"dwarf-check", no_argument, 0, OPTION_DWARF_CHECK},
+ {0, no_argument, 0, 0}
+};
+
+static void
+nonfatal (const char *msg)
+{
+ bfd_nonfatal (msg);
+ exit_status = 1;
+}
+
+/* Returns TRUE if the specified section should be dumped. */
+
+static bfd_boolean
+process_section_p (asection * section)
+{
+ struct only * only;
+
+ if (only_list == NULL)
+ return TRUE;
+
+ for (only = only_list; only; only = only->next)
+ if (strcmp (only->name, section->name) == 0)
+ {
+ only->seen = TRUE;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+/* Add an entry to the 'only' list. */
+
+static void
+add_only (char * name)
+{
+ struct only * only;
+
+ /* First check to make sure that we do not
+ already have an entry for this name. */
+ for (only = only_list; only; only = only->next)
+ if (strcmp (only->name, name) == 0)
+ return;
+
+ only = xmalloc (sizeof * only);
+ only->name = name;
+ only->seen = FALSE;
+ only->next = only_list;
+ only_list = only;
+}
+
+/* Release the memory used by the 'only' list.
+ PR 11225: Issue a warning message for unseen sections.
+ Only do this if none of the sections were seen. This is mainly to support
+ tools like the GAS testsuite where an object file is dumped with a list of
+ generic section names known to be present in a range of different file
+ formats. */
+
+static void
+free_only_list (void)
+{
+ bfd_boolean at_least_one_seen = FALSE;
+ struct only * only;
+ struct only * next;
+
+ if (only_list == NULL)
+ return;
+
+ for (only = only_list; only; only = only->next)
+ if (only->seen)
+ {
+ at_least_one_seen = TRUE;
+ break;
+ }
+
+ for (only = only_list; only; only = next)
+ {
+ if (! at_least_one_seen)
+ {
+ non_fatal (_("section '%s' mentioned in a -j option, "
+ "but not found in any input file"),
+ only->name);
+ exit_status = 1;
+ }
+ next = only->next;
+ free (only);
+ }
+}
+
+
+static void
+dump_section_header (bfd *abfd, asection *section,
+ void *ignored ATTRIBUTE_UNUSED)
+{
+ char *comma = "";
+ unsigned int opb = bfd_octets_per_byte (abfd);
+
+ /* Ignore linker created section. See elfNN_ia64_object_p in
+ bfd/elfxx-ia64.c. */
+ if (section->flags & SEC_LINKER_CREATED)
+ return;
+
+ /* PR 10413: Skip sections that we are ignoring. */
+ if (! process_section_p (section))
+ return;
+
+ printf ("%3d %-13s %08lx ", section->index,
+ bfd_get_section_name (abfd, section),
+ (unsigned long) bfd_section_size (abfd, section) / opb);
+ bfd_printf_vma (abfd, bfd_get_section_vma (abfd, section));
+ printf (" ");
+ bfd_printf_vma (abfd, section->lma);
+ printf (" %08lx 2**%u", (unsigned long) section->filepos,
+ bfd_get_section_alignment (abfd, section));
+ if (! wide_output)
+ printf ("\n ");
+ printf (" ");
+
+#define PF(x, y) \
+ if (section->flags & x) { printf ("%s%s", comma, y); comma = ", "; }
+
+ PF (SEC_HAS_CONTENTS, "CONTENTS");
+ PF (SEC_ALLOC, "ALLOC");
+ PF (SEC_CONSTRUCTOR, "CONSTRUCTOR");
+ PF (SEC_LOAD, "LOAD");
+ PF (SEC_RELOC, "RELOC");
+ PF (SEC_READONLY, "READONLY");
+ PF (SEC_CODE, "CODE");
+ PF (SEC_DATA, "DATA");
+ PF (SEC_ROM, "ROM");
+ PF (SEC_DEBUGGING, "DEBUGGING");
+ PF (SEC_NEVER_LOAD, "NEVER_LOAD");
+ PF (SEC_EXCLUDE, "EXCLUDE");
+ PF (SEC_SORT_ENTRIES, "SORT_ENTRIES");
+ if (bfd_get_arch (abfd) == bfd_arch_tic54x)
+ {
+ PF (SEC_TIC54X_BLOCK, "BLOCK");
+ PF (SEC_TIC54X_CLINK, "CLINK");
+ }
+ PF (SEC_SMALL_DATA, "SMALL_DATA");
+ if (bfd_get_flavour (abfd) == bfd_target_coff_flavour)
+ PF (SEC_COFF_SHARED, "SHARED");
+ PF (SEC_THREAD_LOCAL, "THREAD_LOCAL");
+ PF (SEC_GROUP, "GROUP");
+
+ if ((section->flags & SEC_LINK_ONCE) != 0)
+ {
+ const char *ls;
+ struct coff_comdat_info *comdat;
+
+ switch (section->flags & SEC_LINK_DUPLICATES)
+ {
+ default:
+ abort ();
+ case SEC_LINK_DUPLICATES_DISCARD:
+ ls = "LINK_ONCE_DISCARD";
+ break;
+ case SEC_LINK_DUPLICATES_ONE_ONLY:
+ ls = "LINK_ONCE_ONE_ONLY";
+ break;
+ case SEC_LINK_DUPLICATES_SAME_SIZE:
+ ls = "LINK_ONCE_SAME_SIZE";
+ break;
+ case SEC_LINK_DUPLICATES_SAME_CONTENTS:
+ ls = "LINK_ONCE_SAME_CONTENTS";
+ break;
+ }
+ printf ("%s%s", comma, ls);
+
+ comdat = bfd_coff_get_comdat_section (abfd, section);
+ if (comdat != NULL)
+ printf (" (COMDAT %s %ld)", comdat->name, comdat->symbol);
+
+ comma = ", ";
+ }
+
+ printf ("\n");
+#undef PF
+}
+
+static void
+dump_headers (bfd *abfd)
+{
+ printf (_("Sections:\n"));
+
+#ifndef BFD64
+ printf (_("Idx Name Size VMA LMA File off Algn"));
+#else
+ /* With BFD64, non-ELF returns -1 and wants always 64 bit addresses. */
+ if (bfd_get_arch_size (abfd) == 32)
+ printf (_("Idx Name Size VMA LMA File off Algn"));
+ else
+ printf (_("Idx Name Size VMA LMA File off Algn"));
+#endif
+
+ if (wide_output)
+ printf (_(" Flags"));
+ printf ("\n");
+
+ bfd_map_over_sections (abfd, dump_section_header, NULL);
+}
+
+static asymbol **
+slurp_symtab (bfd *abfd)
+{
+ asymbol **sy = NULL;
+ long storage;
+
+ if (!(bfd_get_file_flags (abfd) & HAS_SYMS))
+ {
+ symcount = 0;
+ return NULL;
+ }
+
+ storage = bfd_get_symtab_upper_bound (abfd);
+ if (storage < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+ if (storage)
+ sy = (asymbol **) xmalloc (storage);
+
+ symcount = bfd_canonicalize_symtab (abfd, sy);
+ if (symcount < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+ return sy;
+}
+
+/* Read in the dynamic symbols. */
+
+static asymbol **
+slurp_dynamic_symtab (bfd *abfd)
+{
+ asymbol **sy = NULL;
+ long storage;
+
+ storage = bfd_get_dynamic_symtab_upper_bound (abfd);
+ if (storage < 0)
+ {
+ if (!(bfd_get_file_flags (abfd) & DYNAMIC))
+ {
+ non_fatal (_("%s: not a dynamic object"), bfd_get_filename (abfd));
+ exit_status = 1;
+ dynsymcount = 0;
+ return NULL;
+ }
+
+ bfd_fatal (bfd_get_filename (abfd));
+ }
+ if (storage)
+ sy = (asymbol **) xmalloc (storage);
+
+ dynsymcount = bfd_canonicalize_dynamic_symtab (abfd, sy);
+ if (dynsymcount < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+ return sy;
+}
+
+/* Filter out (in place) symbols that are useless for disassembly.
+ COUNT is the number of elements in SYMBOLS.
+ Return the number of useful symbols. */
+
+static long
+remove_useless_symbols (asymbol **symbols, long count)
+{
+ asymbol **in_ptr = symbols, **out_ptr = symbols;
+
+ while (--count >= 0)
+ {
+ asymbol *sym = *in_ptr++;
+
+ if (sym->name == NULL || sym->name[0] == '\0')
+ continue;
+ if (sym->flags & (BSF_DEBUGGING | BSF_SECTION_SYM))
+ continue;
+ if (bfd_is_und_section (sym->section)
+ || bfd_is_com_section (sym->section))
+ continue;
+
+ *out_ptr++ = sym;
+ }
+ return out_ptr - symbols;
+}
+
+/* Sort symbols into value order. */
+
+static int
+compare_symbols (const void *ap, const void *bp)
+{
+ const asymbol *a = * (const asymbol **) ap;
+ const asymbol *b = * (const asymbol **) bp;
+ const char *an;
+ const char *bn;
+ size_t anl;
+ size_t bnl;
+ bfd_boolean af;
+ bfd_boolean bf;
+ flagword aflags;
+ flagword bflags;
+
+ if (bfd_asymbol_value (a) > bfd_asymbol_value (b))
+ return 1;
+ else if (bfd_asymbol_value (a) < bfd_asymbol_value (b))
+ return -1;
+
+ if (a->section > b->section)
+ return 1;
+ else if (a->section < b->section)
+ return -1;
+
+ an = bfd_asymbol_name (a);
+ bn = bfd_asymbol_name (b);
+ anl = strlen (an);
+ bnl = strlen (bn);
+
+ /* The symbols gnu_compiled and gcc2_compiled convey no real
+ information, so put them after other symbols with the same value. */
+ af = (strstr (an, "gnu_compiled") != NULL
+ || strstr (an, "gcc2_compiled") != NULL);
+ bf = (strstr (bn, "gnu_compiled") != NULL
+ || strstr (bn, "gcc2_compiled") != NULL);
+
+ if (af && ! bf)
+ return 1;
+ if (! af && bf)
+ return -1;
+
+ /* We use a heuristic for the file name, to try to sort it after
+ more useful symbols. It may not work on non Unix systems, but it
+ doesn't really matter; the only difference is precisely which
+ symbol names get printed. */
+
+#define file_symbol(s, sn, snl) \
+ (((s)->flags & BSF_FILE) != 0 \
+ || ((sn)[(snl) - 2] == '.' \
+ && ((sn)[(snl) - 1] == 'o' \
+ || (sn)[(snl) - 1] == 'a')))
+
+ af = file_symbol (a, an, anl);
+ bf = file_symbol (b, bn, bnl);
+
+ if (af && ! bf)
+ return 1;
+ if (! af && bf)
+ return -1;
+
+ /* Try to sort global symbols before local symbols before function
+ symbols before debugging symbols. */
+
+ aflags = a->flags;
+ bflags = b->flags;
+
+ if ((aflags & BSF_DEBUGGING) != (bflags & BSF_DEBUGGING))
+ {
+ if ((aflags & BSF_DEBUGGING) != 0)
+ return 1;
+ else
+ return -1;
+ }
+ if ((aflags & BSF_FUNCTION) != (bflags & BSF_FUNCTION))
+ {
+ if ((aflags & BSF_FUNCTION) != 0)
+ return -1;
+ else
+ return 1;
+ }
+ if ((aflags & BSF_LOCAL) != (bflags & BSF_LOCAL))
+ {
+ if ((aflags & BSF_LOCAL) != 0)
+ return 1;
+ else
+ return -1;
+ }
+ if ((aflags & BSF_GLOBAL) != (bflags & BSF_GLOBAL))
+ {
+ if ((aflags & BSF_GLOBAL) != 0)
+ return -1;
+ else
+ return 1;
+ }
+
+ /* Symbols that start with '.' might be section names, so sort them
+ after symbols that don't start with '.'. */
+ if (an[0] == '.' && bn[0] != '.')
+ return 1;
+ if (an[0] != '.' && bn[0] == '.')
+ return -1;
+
+ /* Finally, if we can't distinguish them in any other way, try to
+ get consistent results by sorting the symbols by name. */
+ return strcmp (an, bn);
+}
+
+/* Sort relocs into address order. */
+
+static int
+compare_relocs (const void *ap, const void *bp)
+{
+ const arelent *a = * (const arelent **) ap;
+ const arelent *b = * (const arelent **) bp;
+
+ if (a->address > b->address)
+ return 1;
+ else if (a->address < b->address)
+ return -1;
+
+ /* So that associated relocations tied to the same address show up
+ in the correct order, we don't do any further sorting. */
+ if (a > b)
+ return 1;
+ else if (a < b)
+ return -1;
+ else
+ return 0;
+}
+
+/* Print an address (VMA) to the output stream in INFO.
+ If SKIP_ZEROES is TRUE, omit leading zeroes. */
+
+static void
+objdump_print_value (bfd_vma vma, struct disassemble_info *inf,
+ bfd_boolean skip_zeroes)
+{
+ char buf[30];
+ char *p;
+ struct objdump_disasm_info *aux;
+
+ aux = (struct objdump_disasm_info *) inf->application_data;
+ bfd_sprintf_vma (aux->abfd, buf, vma);
+ if (! skip_zeroes)
+ p = buf;
+ else
+ {
+ for (p = buf; *p == '0'; ++p)
+ ;
+ if (*p == '\0')
+ --p;
+ }
+ (*inf->fprintf_func) (inf->stream, "%s", p);
+}
+
+/* Print the name of a symbol. */
+
+static void
+objdump_print_symname (bfd *abfd, struct disassemble_info *inf,
+ asymbol *sym)
+{
+ char *alloc;
+ const char *name;
+
+ alloc = NULL;
+ name = bfd_asymbol_name (sym);
+ if (do_demangle && name[0] != '\0')
+ {
+ /* Demangle the name. */
+ alloc = bfd_demangle (abfd, name, DMGL_ANSI | DMGL_PARAMS);
+ if (alloc != NULL)
+ name = alloc;
+ }
+
+ if (inf != NULL)
+ (*inf->fprintf_func) (inf->stream, "%s", name);
+ else
+ printf ("%s", name);
+
+ if (alloc != NULL)
+ free (alloc);
+}
+
+/* Locate a symbol given a bfd and a section (from INFO->application_data),
+ and a VMA. If INFO->application_data->require_sec is TRUE, then always
+ require the symbol to be in the section. Returns NULL if there is no
+ suitable symbol. If PLACE is not NULL, then *PLACE is set to the index
+ of the symbol in sorted_syms. */
+
+static asymbol *
+find_symbol_for_address (bfd_vma vma,
+ struct disassemble_info *inf,
+ long *place)
+{
+ /* @@ Would it speed things up to cache the last two symbols returned,
+ and maybe their address ranges? For many processors, only one memory
+ operand can be present at a time, so the 2-entry cache wouldn't be
+ constantly churned by code doing heavy memory accesses. */
+
+ /* Indices in `sorted_syms'. */
+ long min = 0;
+ long max_count = sorted_symcount;
+ long thisplace;
+ struct objdump_disasm_info *aux;
+ bfd *abfd;
+ asection *sec;
+ unsigned int opb;
+ bfd_boolean want_section;
+
+ if (sorted_symcount < 1)
+ return NULL;
+
+ aux = (struct objdump_disasm_info *) inf->application_data;
+ abfd = aux->abfd;
+ sec = aux->sec;
+ opb = inf->octets_per_byte;
+
+ /* Perform a binary search looking for the closest symbol to the
+ required value. We are searching the range (min, max_count]. */
+ while (min + 1 < max_count)
+ {
+ asymbol *sym;
+
+ thisplace = (max_count + min) / 2;
+ sym = sorted_syms[thisplace];
+
+ if (bfd_asymbol_value (sym) > vma)
+ max_count = thisplace;
+ else if (bfd_asymbol_value (sym) < vma)
+ min = thisplace;
+ else
+ {
+ min = thisplace;
+ break;
+ }
+ }
+
+ /* The symbol we want is now in min, the low end of the range we
+ were searching. If there are several symbols with the same
+ value, we want the first one. */
+ thisplace = min;
+ while (thisplace > 0
+ && (bfd_asymbol_value (sorted_syms[thisplace])
+ == bfd_asymbol_value (sorted_syms[thisplace - 1])))
+ --thisplace;
+
+ /* Prefer a symbol in the current section if we have multple symbols
+ with the same value, as can occur with overlays or zero size
+ sections. */
+ min = thisplace;
+ while (min < max_count
+ && (bfd_asymbol_value (sorted_syms[min])
+ == bfd_asymbol_value (sorted_syms[thisplace])))
+ {
+ if (sorted_syms[min]->section == sec
+ && inf->symbol_is_valid (sorted_syms[min], inf))
+ {
+ thisplace = min;
+
+ if (place != NULL)
+ *place = thisplace;
+
+ return sorted_syms[thisplace];
+ }
+ ++min;
+ }
+
+ /* If the file is relocatable, and the symbol could be from this
+ section, prefer a symbol from this section over symbols from
+ others, even if the other symbol's value might be closer.
+
+ Note that this may be wrong for some symbol references if the
+ sections have overlapping memory ranges, but in that case there's
+ no way to tell what's desired without looking at the relocation
+ table.
+
+ Also give the target a chance to reject symbols. */
+ want_section = (aux->require_sec
+ || ((abfd->flags & HAS_RELOC) != 0
+ && vma >= bfd_get_section_vma (abfd, sec)
+ && vma < (bfd_get_section_vma (abfd, sec)
+ + bfd_section_size (abfd, sec) / opb)));
+ if ((sorted_syms[thisplace]->section != sec && want_section)
+ || ! inf->symbol_is_valid (sorted_syms[thisplace], inf))
+ {
+ long i;
+ long newplace = sorted_symcount;
+
+ for (i = min - 1; i >= 0; i--)
+ {
+ if ((sorted_syms[i]->section == sec || !want_section)
+ && inf->symbol_is_valid (sorted_syms[i], inf))
+ {
+ if (newplace == sorted_symcount)
+ newplace = i;
+
+ if (bfd_asymbol_value (sorted_syms[i])
+ != bfd_asymbol_value (sorted_syms[newplace]))
+ break;
+
+ /* Remember this symbol and keep searching until we reach
+ an earlier address. */
+ newplace = i;
+ }
+ }
+
+ if (newplace != sorted_symcount)
+ thisplace = newplace;
+ else
+ {
+ /* We didn't find a good symbol with a smaller value.
+ Look for one with a larger value. */
+ for (i = thisplace + 1; i < sorted_symcount; i++)
+ {
+ if ((sorted_syms[i]->section == sec || !want_section)
+ && inf->symbol_is_valid (sorted_syms[i], inf))
+ {
+ thisplace = i;
+ break;
+ }
+ }
+ }
+
+ if ((sorted_syms[thisplace]->section != sec && want_section)
+ || ! inf->symbol_is_valid (sorted_syms[thisplace], inf))
+ /* There is no suitable symbol. */
+ return NULL;
+ }
+
+ if (place != NULL)
+ *place = thisplace;
+
+ return sorted_syms[thisplace];
+}
+
+/* Print an address and the offset to the nearest symbol. */
+
+static void
+objdump_print_addr_with_sym (bfd *abfd, asection *sec, asymbol *sym,
+ bfd_vma vma, struct disassemble_info *inf,
+ bfd_boolean skip_zeroes)
+{
+ objdump_print_value (vma, inf, skip_zeroes);
+
+ if (sym == NULL)
+ {
+ bfd_vma secaddr;
+
+ (*inf->fprintf_func) (inf->stream, " <%s",
+ bfd_get_section_name (abfd, sec));
+ secaddr = bfd_get_section_vma (abfd, sec);
+ if (vma < secaddr)
+ {
+ (*inf->fprintf_func) (inf->stream, "-0x");
+ objdump_print_value (secaddr - vma, inf, TRUE);
+ }
+ else if (vma > secaddr)
+ {
+ (*inf->fprintf_func) (inf->stream, "+0x");
+ objdump_print_value (vma - secaddr, inf, TRUE);
+ }
+ (*inf->fprintf_func) (inf->stream, ">");
+ }
+ else
+ {
+ (*inf->fprintf_func) (inf->stream, " <");
+ objdump_print_symname (abfd, inf, sym);
+ if (bfd_asymbol_value (sym) > vma)
+ {
+ (*inf->fprintf_func) (inf->stream, "-0x");
+ objdump_print_value (bfd_asymbol_value (sym) - vma, inf, TRUE);
+ }
+ else if (vma > bfd_asymbol_value (sym))
+ {
+ (*inf->fprintf_func) (inf->stream, "+0x");
+ objdump_print_value (vma - bfd_asymbol_value (sym), inf, TRUE);
+ }
+ (*inf->fprintf_func) (inf->stream, ">");
+ }
+
+ if (display_file_offsets)
+ inf->fprintf_func (inf->stream, _(" (File Offset: 0x%lx)"),
+ (long int)(sec->filepos + (vma - sec->vma)));
+}
+
+/* Print an address (VMA), symbolically if possible.
+ If SKIP_ZEROES is TRUE, don't output leading zeroes. */
+
+static void
+objdump_print_addr (bfd_vma vma,
+ struct disassemble_info *inf,
+ bfd_boolean skip_zeroes)
+{
+ struct objdump_disasm_info *aux;
+ asymbol *sym = NULL;
+ bfd_boolean skip_find = FALSE;
+
+ aux = (struct objdump_disasm_info *) inf->application_data;
+
+ if (sorted_symcount < 1)
+ {
+ (*inf->fprintf_func) (inf->stream, "0x");
+ objdump_print_value (vma, inf, skip_zeroes);
+
+ if (display_file_offsets)
+ inf->fprintf_func (inf->stream, _(" (File Offset: 0x%lx)"),
+ (long int)(aux->sec->filepos + (vma - aux->sec->vma)));
+ return;
+ }
+
+ if (aux->reloc != NULL
+ && aux->reloc->sym_ptr_ptr != NULL
+ && * aux->reloc->sym_ptr_ptr != NULL)
+ {
+ sym = * aux->reloc->sym_ptr_ptr;
+
+ /* Adjust the vma to the reloc. */
+ vma += bfd_asymbol_value (sym);
+
+ if (bfd_is_und_section (bfd_get_section (sym)))
+ skip_find = TRUE;
+ }
+
+ if (!skip_find)
+ sym = find_symbol_for_address (vma, inf, NULL);
+
+ objdump_print_addr_with_sym (aux->abfd, aux->sec, sym, vma, inf,
+ skip_zeroes);
+}
+
+/* Print VMA to INFO. This function is passed to the disassembler
+ routine. */
+
+static void
+objdump_print_address (bfd_vma vma, struct disassemble_info *inf)
+{
+ objdump_print_addr (vma, inf, ! prefix_addresses);
+}
+
+/* Determine if the given address has a symbol associated with it. */
+
+static int
+objdump_symbol_at_address (bfd_vma vma, struct disassemble_info * inf)
+{
+ asymbol * sym;
+
+ sym = find_symbol_for_address (vma, inf, NULL);
+
+ return (sym != NULL && (bfd_asymbol_value (sym) == vma));
+}
+
+/* Hold the last function name and the last line number we displayed
+ in a disassembly. */
+
+static char *prev_functionname;
+static unsigned int prev_line;
+static unsigned int prev_discriminator;
+
+/* We keep a list of all files that we have seen when doing a
+ disassembly with source, so that we know how much of the file to
+ display. This can be important for inlined functions. */
+
+struct print_file_list
+{
+ struct print_file_list *next;
+ const char *filename;
+ const char *modname;
+ const char *map;
+ size_t mapsize;
+ const char **linemap;
+ unsigned maxline;
+ unsigned last_line;
+ int first;
+};
+
+static struct print_file_list *print_files;
+
+/* The number of preceding context lines to show when we start
+ displaying a file for the first time. */
+
+#define SHOW_PRECEDING_CONTEXT_LINES (5)
+
+/* Read a complete file into memory. */
+
+static const char *
+slurp_file (const char *fn, size_t *size)
+{
+#ifdef HAVE_MMAP
+ int ps = getpagesize ();
+ size_t msize;
+#endif
+ const char *map;
+ struct stat st;
+ int fd = open (fn, O_RDONLY | O_BINARY);
+
+ if (fd < 0)
+ return NULL;
+ if (fstat (fd, &st) < 0)
+ {
+ close (fd);
+ return NULL;
+ }
+ *size = st.st_size;
+#ifdef HAVE_MMAP
+ msize = (*size + ps - 1) & ~(ps - 1);
+ map = mmap (NULL, msize, PROT_READ, MAP_SHARED, fd, 0);
+ if (map != (char *) -1L)
+ {
+ close (fd);
+ return map;
+ }
+#endif
+ map = (const char *) malloc (*size);
+ if (!map || (size_t) read (fd, (char *) map, *size) != *size)
+ {
+ free ((void *) map);
+ map = NULL;
+ }
+ close (fd);
+ return map;
+}
+
+#define line_map_decrease 5
+
+/* Precompute array of lines for a mapped file. */
+
+static const char **
+index_file (const char *map, size_t size, unsigned int *maxline)
+{
+ const char *p, *lstart, *end;
+ int chars_per_line = 45; /* First iteration will use 40. */
+ unsigned int lineno;
+ const char **linemap = NULL;
+ unsigned long line_map_size = 0;
+
+ lineno = 0;
+ lstart = map;
+ end = map + size;
+
+ for (p = map; p < end; p++)
+ {
+ if (*p == '\n')
+ {
+ if (p + 1 < end && p[1] == '\r')
+ p++;
+ }
+ else if (*p == '\r')
+ {
+ if (p + 1 < end && p[1] == '\n')
+ p++;
+ }
+ else
+ continue;
+
+ /* End of line found. */
+
+ if (linemap == NULL || line_map_size < lineno + 1)
+ {
+ unsigned long newsize;
+
+ chars_per_line -= line_map_decrease;
+ if (chars_per_line <= 1)
+ chars_per_line = 1;
+ line_map_size = size / chars_per_line + 1;
+ if (line_map_size < lineno + 1)
+ line_map_size = lineno + 1;
+ newsize = line_map_size * sizeof (char *);
+ linemap = (const char **) xrealloc (linemap, newsize);
+ }
+
+ linemap[lineno++] = lstart;
+ lstart = p + 1;
+ }
+
+ *maxline = lineno;
+ return linemap;
+}
+
+/* Tries to open MODNAME, and if successful adds a node to print_files
+ linked list and returns that node. Returns NULL on failure. */
+
+static struct print_file_list *
+try_print_file_open (const char *origname, const char *modname)
+{
+ struct print_file_list *p;
+
+ p = (struct print_file_list *) xmalloc (sizeof (struct print_file_list));
+
+ p->map = slurp_file (modname, &p->mapsize);
+ if (p->map == NULL)
+ {
+ free (p);
+ return NULL;
+ }
+
+ p->linemap = index_file (p->map, p->mapsize, &p->maxline);
+ p->last_line = 0;
+ p->filename = origname;
+ p->modname = modname;
+ p->next = print_files;
+ p->first = 1;
+ print_files = p;
+ return p;
+}
+
+/* If the source file, as described in the symtab, is not found
+ try to locate it in one of the paths specified with -I
+ If found, add location to print_files linked list. */
+
+static struct print_file_list *
+update_source_path (const char *filename)
+{
+ struct print_file_list *p;
+ const char *fname;
+ int i;
+
+ p = try_print_file_open (filename, filename);
+ if (p != NULL)
+ return p;
+
+ if (include_path_count == 0)
+ return NULL;
+
+ /* Get the name of the file. */
+ fname = lbasename (filename);
+
+ /* If file exists under a new path, we need to add it to the list
+ so that show_line knows about it. */
+ for (i = 0; i < include_path_count; i++)
+ {
+ char *modname = concat (include_paths[i], "/", fname, (const char *) 0);
+
+ p = try_print_file_open (filename, modname);
+ if (p)
+ return p;
+
+ free (modname);
+ }
+
+ return NULL;
+}
+
+/* Print a source file line. */
+
+static void
+print_line (struct print_file_list *p, unsigned int linenum)
+{
+ const char *l;
+ size_t len;
+
+ --linenum;
+ if (linenum >= p->maxline)
+ return;
+ l = p->linemap [linenum];
+ /* Test fwrite return value to quiet glibc warning. */
+ len = strcspn (l, "\n\r");
+ if (len == 0 || fwrite (l, len, 1, stdout) == 1)
+ putchar ('\n');
+}
+
+/* Print a range of source code lines. */
+
+static void
+dump_lines (struct print_file_list *p, unsigned int start, unsigned int end)
+{
+ if (p->map == NULL)
+ return;
+ while (start <= end)
+ {
+ print_line (p, start);
+ start++;
+ }
+}
+
+/* Show the line number, or the source line, in a disassembly
+ listing. */
+
+static void
+show_line (bfd *abfd, asection *section, bfd_vma addr_offset)
+{
+ const char *filename;
+ const char *functionname;
+ unsigned int linenumber;
+ unsigned int discriminator;
+ bfd_boolean reloc;
+
+ if (! with_line_numbers && ! with_source_code)
+ return;
+
+ if (! bfd_find_nearest_line_discriminator (abfd, section, syms, addr_offset,
+ &filename, &functionname,
+ &linenumber, &discriminator))
+ return;
+
+ if (filename != NULL && *filename == '\0')
+ filename = NULL;
+ if (functionname != NULL && *functionname == '\0')
+ functionname = NULL;
+
+ if (filename
+ && IS_ABSOLUTE_PATH (filename)
+ && prefix)
+ {
+ char *path_up;
+ const char *fname = filename;
+ char *path = (char *) alloca (prefix_length + PATH_MAX + 1);
+
+ if (prefix_length)
+ memcpy (path, prefix, prefix_length);
+ path_up = path + prefix_length;
+
+ /* Build relocated filename, stripping off leading directories
+ from the initial filename if requested. */
+ if (prefix_strip > 0)
+ {
+ int level = 0;
+ const char *s;
+
+ /* Skip selected directory levels. */
+ for (s = fname + 1; *s != '\0' && level < prefix_strip; s++)
+ if (IS_DIR_SEPARATOR(*s))
+ {
+ fname = s;
+ level++;
+ }
+ }
+
+ /* Update complete filename. */
+ strncpy (path_up, fname, PATH_MAX);
+ path_up[PATH_MAX] = '\0';
+
+ filename = path;
+ reloc = TRUE;
+ }
+ else
+ reloc = FALSE;
+
+ if (with_line_numbers)
+ {
+ if (functionname != NULL
+ && (prev_functionname == NULL
+ || strcmp (functionname, prev_functionname) != 0))
+ printf ("%s():\n", functionname);
+ if (linenumber > 0 && (linenumber != prev_line ||
+ (discriminator != prev_discriminator)))
+ {
+ if (discriminator > 0)
+ printf ("%s:%u (discriminator %u)\n", filename == NULL ? "???" : filename,
+ linenumber, discriminator);
+ else
+ printf ("%s:%u\n", filename == NULL ? "???" : filename, linenumber);
+ }
+ }
+
+ if (with_source_code
+ && filename != NULL
+ && linenumber > 0)
+ {
+ struct print_file_list **pp, *p;
+ unsigned l;
+
+ for (pp = &print_files; *pp != NULL; pp = &(*pp)->next)
+ if (filename_cmp ((*pp)->filename, filename) == 0)
+ break;
+ p = *pp;
+
+ if (p == NULL)
+ {
+ if (reloc)
+ filename = xstrdup (filename);
+ p = update_source_path (filename);
+ }
+
+ if (p != NULL && linenumber != p->last_line)
+ {
+ if (file_start_context && p->first)
+ l = 1;
+ else
+ {
+ l = linenumber - SHOW_PRECEDING_CONTEXT_LINES;
+ if (l >= linenumber)
+ l = 1;
+ if (p->last_line >= l && p->last_line <= linenumber)
+ l = p->last_line + 1;
+ }
+ dump_lines (p, l, linenumber);
+ p->last_line = linenumber;
+ p->first = 0;
+ }
+ }
+
+ if (functionname != NULL
+ && (prev_functionname == NULL
+ || strcmp (functionname, prev_functionname) != 0))
+ {
+ if (prev_functionname != NULL)
+ free (prev_functionname);
+ prev_functionname = (char *) xmalloc (strlen (functionname) + 1);
+ strcpy (prev_functionname, functionname);
+ }
+
+ if (linenumber > 0 && linenumber != prev_line)
+ prev_line = linenumber;
+
+ if (discriminator != prev_discriminator)
+ prev_discriminator = discriminator;
+}
+
+/* Pseudo FILE object for strings. */
+typedef struct
+{
+ char *buffer;
+ size_t pos;
+ size_t alloc;
+} SFILE;
+
+/* sprintf to a "stream". */
+
+static int ATTRIBUTE_PRINTF_2
+objdump_sprintf (SFILE *f, const char *format, ...)
+{
+ size_t n;
+ va_list args;
+
+ while (1)
+ {
+ size_t space = f->alloc - f->pos;
+
+ va_start (args, format);
+ n = vsnprintf (f->buffer + f->pos, space, format, args);
+ va_end (args);
+
+ if (space > n)
+ break;
+
+ f->alloc = (f->alloc + n) * 2;
+ f->buffer = (char *) xrealloc (f->buffer, f->alloc);
+ }
+ f->pos += n;
+
+ return n;
+}
+
+/* The number of zeroes we want to see before we start skipping them.
+ The number is arbitrarily chosen. */
+
+#define DEFAULT_SKIP_ZEROES 8
+
+/* The number of zeroes to skip at the end of a section. If the
+ number of zeroes at the end is between SKIP_ZEROES_AT_END and
+ SKIP_ZEROES, they will be disassembled. If there are fewer than
+ SKIP_ZEROES_AT_END, they will be skipped. This is a heuristic
+ attempt to avoid disassembling zeroes inserted by section
+ alignment. */
+
+#define DEFAULT_SKIP_ZEROES_AT_END 3
+
+/* Disassemble some data in memory between given values. */
+
+static void
+disassemble_bytes (struct disassemble_info * inf,
+ disassembler_ftype disassemble_fn,
+ bfd_boolean insns,
+ bfd_byte * data,
+ bfd_vma start_offset,
+ bfd_vma stop_offset,
+ bfd_vma rel_offset,
+ arelent *** relppp,
+ arelent ** relppend)
+{
+ struct objdump_disasm_info *aux;
+ asection *section;
+ int octets_per_line;
+ int skip_addr_chars;
+ bfd_vma addr_offset;
+ unsigned int opb = inf->octets_per_byte;
+ unsigned int skip_zeroes = inf->skip_zeroes;
+ unsigned int skip_zeroes_at_end = inf->skip_zeroes_at_end;
+ int octets = opb;
+ SFILE sfile;
+
+ aux = (struct objdump_disasm_info *) inf->application_data;
+ section = aux->sec;
+
+ sfile.alloc = 120;
+ sfile.buffer = (char *) xmalloc (sfile.alloc);
+ sfile.pos = 0;
+
+ if (insn_width)
+ octets_per_line = insn_width;
+ else if (insns)
+ octets_per_line = 4;
+ else
+ octets_per_line = 16;
+
+ /* Figure out how many characters to skip at the start of an
+ address, to make the disassembly look nicer. We discard leading
+ zeroes in chunks of 4, ensuring that there is always a leading
+ zero remaining. */
+ skip_addr_chars = 0;
+ if (! prefix_addresses)
+ {
+ char buf[30];
+
+ bfd_sprintf_vma (aux->abfd, buf, section->vma + section->size / opb);
+
+ while (buf[skip_addr_chars] == '0')
+ ++skip_addr_chars;
+
+ /* Don't discard zeros on overflow. */
+ if (buf[skip_addr_chars] == '\0' && section->vma != 0)
+ skip_addr_chars = 0;
+
+ if (skip_addr_chars != 0)
+ skip_addr_chars = (skip_addr_chars - 1) & -4;
+ }
+
+ inf->insn_info_valid = 0;
+
+ addr_offset = start_offset;
+ while (addr_offset < stop_offset)
+ {
+ bfd_vma z;
+ bfd_boolean need_nl = FALSE;
+ int previous_octets;
+
+ /* Remember the length of the previous instruction. */
+ previous_octets = octets;
+ octets = 0;
+
+ /* Make sure we don't use relocs from previous instructions. */
+ aux->reloc = NULL;
+
+ /* If we see more than SKIP_ZEROES octets of zeroes, we just
+ print `...'. */
+ for (z = addr_offset * opb; z < stop_offset * opb; z++)
+ if (data[z] != 0)
+ break;
+ if (! disassemble_zeroes
+ && (inf->insn_info_valid == 0
+ || inf->branch_delay_insns == 0)
+ && (z - addr_offset * opb >= skip_zeroes
+ || (z == stop_offset * opb &&
+ z - addr_offset * opb < skip_zeroes_at_end)))
+ {
+ /* If there are more nonzero octets to follow, we only skip
+ zeroes in multiples of 4, to try to avoid running over
+ the start of an instruction which happens to start with
+ zero. */
+ if (z != stop_offset * opb)
+ z = addr_offset * opb + ((z - addr_offset * opb) &~ 3);
+
+ octets = z - addr_offset * opb;
+
+ /* If we are going to display more data, and we are displaying
+ file offsets, then tell the user how many zeroes we skip
+ and the file offset from where we resume dumping. */
+ if (display_file_offsets && ((addr_offset + (octets / opb)) < stop_offset))
+ printf ("\t... (skipping %d zeroes, resuming at file offset: 0x%lx)\n",
+ octets / opb,
+ (unsigned long) (section->filepos
+ + (addr_offset + (octets / opb))));
+ else
+ printf ("\t...\n");
+ }
+ else
+ {
+ char buf[50];
+ int bpc = 0;
+ int pb = 0;
+
+ if (with_line_numbers || with_source_code)
+ show_line (aux->abfd, section, addr_offset);
+
+ if (! prefix_addresses)
+ {
+ char *s;
+
+ bfd_sprintf_vma (aux->abfd, buf, section->vma + addr_offset);
+ for (s = buf + skip_addr_chars; *s == '0'; s++)
+ *s = ' ';
+ if (*s == '\0')
+ *--s = '0';
+ printf ("%s:\t", buf + skip_addr_chars);
+ }
+ else
+ {
+ aux->require_sec = TRUE;
+ objdump_print_address (section->vma + addr_offset, inf);
+ aux->require_sec = FALSE;
+ putchar (' ');
+ }
+
+ if (insns)
+ {
+ sfile.pos = 0;
+ inf->fprintf_func = (fprintf_ftype) objdump_sprintf;
+ inf->stream = &sfile;
+ inf->bytes_per_line = 0;
+ inf->bytes_per_chunk = 0;
+ inf->flags = disassemble_all ? DISASSEMBLE_DATA : 0;
+ if (machine)
+ inf->flags |= USER_SPECIFIED_MACHINE_TYPE;
+
+ if (inf->disassembler_needs_relocs
+ && (bfd_get_file_flags (aux->abfd) & EXEC_P) == 0
+ && (bfd_get_file_flags (aux->abfd) & DYNAMIC) == 0
+ && *relppp < relppend)
+ {
+ bfd_signed_vma distance_to_rel;
+
+ distance_to_rel = (**relppp)->address
+ - (rel_offset + addr_offset);
+
+ /* Check to see if the current reloc is associated with
+ the instruction that we are about to disassemble. */
+ if (distance_to_rel == 0
+ /* FIXME: This is wrong. We are trying to catch
+ relocs that are addressed part way through the
+ current instruction, as might happen with a packed
+ VLIW instruction. Unfortunately we do not know the
+ length of the current instruction since we have not
+ disassembled it yet. Instead we take a guess based
+ upon the length of the previous instruction. The
+ proper solution is to have a new target-specific
+ disassembler function which just returns the length
+ of an instruction at a given address without trying
+ to display its disassembly. */
+ || (distance_to_rel > 0
+ && distance_to_rel < (bfd_signed_vma) (previous_octets/ opb)))
+ {
+ inf->flags |= INSN_HAS_RELOC;
+ aux->reloc = **relppp;
+ }
+ }
+
+ octets = (*disassemble_fn) (section->vma + addr_offset, inf);
+ inf->fprintf_func = (fprintf_ftype) fprintf;
+ inf->stream = stdout;
+ if (insn_width == 0 && inf->bytes_per_line != 0)
+ octets_per_line = inf->bytes_per_line;
+ if (octets < (int) opb)
+ {
+ if (sfile.pos)
+ printf ("%s\n", sfile.buffer);
+ if (octets >= 0)
+ {
+ non_fatal (_("disassemble_fn returned length %d"),
+ octets);
+ exit_status = 1;
+ }
+ break;
+ }
+ }
+ else
+ {
+ bfd_vma j;
+
+ octets = octets_per_line;
+ if (addr_offset + octets / opb > stop_offset)
+ octets = (stop_offset - addr_offset) * opb;
+
+ for (j = addr_offset * opb; j < addr_offset * opb + octets; ++j)
+ {
+ if (ISPRINT (data[j]))
+ buf[j - addr_offset * opb] = data[j];
+ else
+ buf[j - addr_offset * opb] = '.';
+ }
+ buf[j - addr_offset * opb] = '\0';
+ }
+
+ if (prefix_addresses
+ ? show_raw_insn > 0
+ : show_raw_insn >= 0)
+ {
+ bfd_vma j;
+
+ /* If ! prefix_addresses and ! wide_output, we print
+ octets_per_line octets per line. */
+ pb = octets;
+ if (pb > octets_per_line && ! prefix_addresses && ! wide_output)
+ pb = octets_per_line;
+
+ if (inf->bytes_per_chunk)
+ bpc = inf->bytes_per_chunk;
+ else
+ bpc = 1;
+
+ for (j = addr_offset * opb; j < addr_offset * opb + pb; j += bpc)
+ {
+ int k;
+
+ if (bpc > 1 && inf->display_endian == BFD_ENDIAN_LITTLE)
+ {
+ for (k = bpc - 1; k >= 0; k--)
+ printf ("%02x", (unsigned) data[j + k]);
+ putchar (' ');
+ }
+ else
+ {
+ for (k = 0; k < bpc; k++)
+ printf ("%02x", (unsigned) data[j + k]);
+ putchar (' ');
+ }
+ }
+
+ for (; pb < octets_per_line; pb += bpc)
+ {
+ int k;
+
+ for (k = 0; k < bpc; k++)
+ printf (" ");
+ putchar (' ');
+ }
+
+ /* Separate raw data from instruction by extra space. */
+ if (insns)
+ putchar ('\t');
+ else
+ printf (" ");
+ }
+
+ if (! insns)
+ printf ("%s", buf);
+ else if (sfile.pos)
+ printf ("%s", sfile.buffer);
+
+ if (prefix_addresses
+ ? show_raw_insn > 0
+ : show_raw_insn >= 0)
+ {
+ while (pb < octets)
+ {
+ bfd_vma j;
+ char *s;
+
+ putchar ('\n');
+ j = addr_offset * opb + pb;
+
+ bfd_sprintf_vma (aux->abfd, buf, section->vma + j / opb);
+ for (s = buf + skip_addr_chars; *s == '0'; s++)
+ *s = ' ';
+ if (*s == '\0')
+ *--s = '0';
+ printf ("%s:\t", buf + skip_addr_chars);
+
+ pb += octets_per_line;
+ if (pb > octets)
+ pb = octets;
+ for (; j < addr_offset * opb + pb; j += bpc)
+ {
+ int k;
+
+ if (bpc > 1 && inf->display_endian == BFD_ENDIAN_LITTLE)
+ {
+ for (k = bpc - 1; k >= 0; k--)
+ printf ("%02x", (unsigned) data[j + k]);
+ putchar (' ');
+ }
+ else
+ {
+ for (k = 0; k < bpc; k++)
+ printf ("%02x", (unsigned) data[j + k]);
+ putchar (' ');
+ }
+ }
+ }
+ }
+
+ if (!wide_output)
+ putchar ('\n');
+ else
+ need_nl = TRUE;
+ }
+
+ while ((*relppp) < relppend
+ && (**relppp)->address < rel_offset + addr_offset + octets / opb)
+ {
+ if (dump_reloc_info || dump_dynamic_reloc_info)
+ {
+ arelent *q;
+
+ q = **relppp;
+
+ if (wide_output)
+ putchar ('\t');
+ else
+ printf ("\t\t\t");
+
+ objdump_print_value (section->vma - rel_offset + q->address,
+ inf, TRUE);
+
+ if (q->howto == NULL)
+ printf (": *unknown*\t");
+ else if (q->howto->name)
+ printf (": %s\t", q->howto->name);
+ else
+ printf (": %d\t", q->howto->type);
+
+ if (q->sym_ptr_ptr == NULL || *q->sym_ptr_ptr == NULL)
+ printf ("*unknown*");
+ else
+ {
+ const char *sym_name;
+
+ sym_name = bfd_asymbol_name (*q->sym_ptr_ptr);
+ if (sym_name != NULL && *sym_name != '\0')
+ objdump_print_symname (aux->abfd, inf, *q->sym_ptr_ptr);
+ else
+ {
+ asection *sym_sec;
+
+ sym_sec = bfd_get_section (*q->sym_ptr_ptr);
+ sym_name = bfd_get_section_name (aux->abfd, sym_sec);
+ if (sym_name == NULL || *sym_name == '\0')
+ sym_name = "*unknown*";
+ printf ("%s", sym_name);
+ }
+ }
+
+ if (q->addend)
+ {
+ bfd_signed_vma addend = q->addend;
+ if (addend < 0)
+ {
+ printf ("-0x");
+ addend = -addend;
+ }
+ else
+ printf ("+0x");
+ objdump_print_value (addend, inf, TRUE);
+ }
+
+ printf ("\n");
+ need_nl = FALSE;
+ }
+ ++(*relppp);
+ }
+
+ if (need_nl)
+ printf ("\n");
+
+ addr_offset += octets / opb;
+ }
+
+ free (sfile.buffer);
+}
+
+static void
+disassemble_section (bfd *abfd, asection *section, void *inf)
+{
+ const struct elf_backend_data * bed;
+ bfd_vma sign_adjust = 0;
+ struct disassemble_info * pinfo = (struct disassemble_info *) inf;
+ struct objdump_disasm_info * paux;
+ unsigned int opb = pinfo->octets_per_byte;
+ bfd_byte * data = NULL;
+ bfd_size_type datasize = 0;
+ arelent ** rel_pp = NULL;
+ arelent ** rel_ppstart = NULL;
+ arelent ** rel_ppend;
+ unsigned long stop_offset;
+ asymbol * sym = NULL;
+ long place = 0;
+ long rel_count;
+ bfd_vma rel_offset;
+ unsigned long addr_offset;
+
+ /* Sections that do not contain machine
+ code are not normally disassembled. */
+ if (! disassemble_all
+ && only_list == NULL
+ && ((section->flags & (SEC_CODE | SEC_HAS_CONTENTS))
+ != (SEC_CODE | SEC_HAS_CONTENTS)))
+ return;
+
+ if (! process_section_p (section))
+ return;
+
+ datasize = bfd_get_section_size (section);
+ if (datasize == 0)
+ return;
+
+ if (start_address == (bfd_vma) -1
+ || start_address < section->vma)
+ addr_offset = 0;
+ else
+ addr_offset = start_address - section->vma;
+
+ if (stop_address == (bfd_vma) -1)
+ stop_offset = datasize / opb;
+ else
+ {
+ if (stop_address < section->vma)
+ stop_offset = 0;
+ else
+ stop_offset = stop_address - section->vma;
+ if (stop_offset > datasize / opb)
+ stop_offset = datasize / opb;
+ }
+
+ if (addr_offset >= stop_offset)
+ return;
+
+ /* Decide which set of relocs to use. Load them if necessary. */
+ paux = (struct objdump_disasm_info *) pinfo->application_data;
+ if (paux->dynrelbuf)
+ {
+ rel_pp = paux->dynrelbuf;
+ rel_count = paux->dynrelcount;
+ /* Dynamic reloc addresses are absolute, non-dynamic are section
+ relative. REL_OFFSET specifies the reloc address corresponding
+ to the start of this section. */
+ rel_offset = section->vma;
+ }
+ else
+ {
+ rel_count = 0;
+ rel_pp = NULL;
+ rel_offset = 0;
+
+ if ((section->flags & SEC_RELOC) != 0
+ && (dump_reloc_info || pinfo->disassembler_needs_relocs))
+ {
+ long relsize;
+
+ relsize = bfd_get_reloc_upper_bound (abfd, section);
+ if (relsize < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ if (relsize > 0)
+ {
+ rel_ppstart = rel_pp = (arelent **) xmalloc (relsize);
+ rel_count = bfd_canonicalize_reloc (abfd, section, rel_pp, syms);
+ if (rel_count < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ /* Sort the relocs by address. */
+ qsort (rel_pp, rel_count, sizeof (arelent *), compare_relocs);
+ }
+ }
+ }
+ rel_ppend = rel_pp + rel_count;
+
+ data = (bfd_byte *) xmalloc (datasize);
+
+ bfd_get_section_contents (abfd, section, data, 0, datasize);
+
+ paux->sec = section;
+ pinfo->buffer = data;
+ pinfo->buffer_vma = section->vma;
+ pinfo->buffer_length = datasize;
+ pinfo->section = section;
+
+ /* Skip over the relocs belonging to addresses below the
+ start address. */
+ while (rel_pp < rel_ppend
+ && (*rel_pp)->address < rel_offset + addr_offset)
+ ++rel_pp;
+
+ printf (_("\nDisassembly of section %s:\n"), section->name);
+
+ /* Find the nearest symbol forwards from our current position. */
+ paux->require_sec = TRUE;
+ sym = (asymbol *) find_symbol_for_address (section->vma + addr_offset,
+ (struct disassemble_info *) inf,
+ &place);
+ paux->require_sec = FALSE;
+
+ /* PR 9774: If the target used signed addresses then we must make
+ sure that we sign extend the value that we calculate for 'addr'
+ in the loop below. */
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
+ && (bed = get_elf_backend_data (abfd)) != NULL
+ && bed->sign_extend_vma)
+ sign_adjust = (bfd_vma) 1 << (bed->s->arch_size - 1);
+
+ /* Disassemble a block of instructions up to the address associated with
+ the symbol we have just found. Then print the symbol and find the
+ next symbol on. Repeat until we have disassembled the entire section
+ or we have reached the end of the address range we are interested in. */
+ while (addr_offset < stop_offset)
+ {
+ bfd_vma addr;
+ asymbol *nextsym;
+ unsigned long nextstop_offset;
+ bfd_boolean insns;
+
+ addr = section->vma + addr_offset;
+ addr = ((addr & ((sign_adjust << 1) - 1)) ^ sign_adjust) - sign_adjust;
+
+ if (sym != NULL && bfd_asymbol_value (sym) <= addr)
+ {
+ int x;
+
+ for (x = place;
+ (x < sorted_symcount
+ && (bfd_asymbol_value (sorted_syms[x]) <= addr));
+ ++x)
+ continue;
+
+ pinfo->symbols = sorted_syms + place;
+ pinfo->num_symbols = x - place;
+ pinfo->symtab_pos = place;
+ }
+ else
+ {
+ pinfo->symbols = NULL;
+ pinfo->num_symbols = 0;
+ pinfo->symtab_pos = -1;
+ }
+
+ if (! prefix_addresses)
+ {
+ pinfo->fprintf_func (pinfo->stream, "\n");
+ objdump_print_addr_with_sym (abfd, section, sym, addr,
+ pinfo, FALSE);
+ pinfo->fprintf_func (pinfo->stream, ":\n");
+ }
+
+ if (sym != NULL && bfd_asymbol_value (sym) > addr)
+ nextsym = sym;
+ else if (sym == NULL)
+ nextsym = NULL;
+ else
+ {
+#define is_valid_next_sym(SYM) \
+ ((SYM)->section == section \
+ && (bfd_asymbol_value (SYM) > bfd_asymbol_value (sym)) \
+ && pinfo->symbol_is_valid (SYM, pinfo))
+
+ /* Search forward for the next appropriate symbol in
+ SECTION. Note that all the symbols are sorted
+ together into one big array, and that some sections
+ may have overlapping addresses. */
+ while (place < sorted_symcount
+ && ! is_valid_next_sym (sorted_syms [place]))
+ ++place;
+
+ if (place >= sorted_symcount)
+ nextsym = NULL;
+ else
+ nextsym = sorted_syms[place];
+ }
+
+ if (sym != NULL && bfd_asymbol_value (sym) > addr)
+ nextstop_offset = bfd_asymbol_value (sym) - section->vma;
+ else if (nextsym == NULL)
+ nextstop_offset = stop_offset;
+ else
+ nextstop_offset = bfd_asymbol_value (nextsym) - section->vma;
+
+ if (nextstop_offset > stop_offset
+ || nextstop_offset <= addr_offset)
+ nextstop_offset = stop_offset;
+
+ /* If a symbol is explicitly marked as being an object
+ rather than a function, just dump the bytes without
+ disassembling them. */
+ if (disassemble_all
+ || sym == NULL
+ || sym->section != section
+ || bfd_asymbol_value (sym) > addr
+ || ((sym->flags & BSF_OBJECT) == 0
+ && (strstr (bfd_asymbol_name (sym), "gnu_compiled")
+ == NULL)
+ && (strstr (bfd_asymbol_name (sym), "gcc2_compiled")
+ == NULL))
+ || (sym->flags & BSF_FUNCTION) != 0)
+ insns = TRUE;
+ else
+ insns = FALSE;
+
+ disassemble_bytes (pinfo, paux->disassemble_fn, insns, data,
+ addr_offset, nextstop_offset,
+ rel_offset, &rel_pp, rel_ppend);
+
+ addr_offset = nextstop_offset;
+ sym = nextsym;
+ }
+
+ free (data);
+
+ if (rel_ppstart != NULL)
+ free (rel_ppstart);
+}
+
+/* Disassemble the contents of an object file. */
+
+static void
+disassemble_data (bfd *abfd)
+{
+ struct disassemble_info disasm_info;
+ struct objdump_disasm_info aux;
+ long i;
+
+ print_files = NULL;
+ prev_functionname = NULL;
+ prev_line = -1;
+ prev_discriminator = 0;
+
+ /* We make a copy of syms to sort. We don't want to sort syms
+ because that will screw up the relocs. */
+ sorted_symcount = symcount ? symcount : dynsymcount;
+ sorted_syms = (asymbol **) xmalloc ((sorted_symcount + synthcount)
+ * sizeof (asymbol *));
+ memcpy (sorted_syms, symcount ? syms : dynsyms,
+ sorted_symcount * sizeof (asymbol *));
+
+ sorted_symcount = remove_useless_symbols (sorted_syms, sorted_symcount);
+
+ for (i = 0; i < synthcount; ++i)
+ {
+ sorted_syms[sorted_symcount] = synthsyms + i;
+ ++sorted_symcount;
+ }
+
+ /* Sort the symbols into section and symbol order. */
+ qsort (sorted_syms, sorted_symcount, sizeof (asymbol *), compare_symbols);
+
+ init_disassemble_info (&disasm_info, stdout, (fprintf_ftype) fprintf);
+
+ disasm_info.application_data = (void *) &aux;
+ aux.abfd = abfd;
+ aux.require_sec = FALSE;
+ aux.dynrelbuf = NULL;
+ aux.dynrelcount = 0;
+ aux.reloc = NULL;
+
+ disasm_info.print_address_func = objdump_print_address;
+ disasm_info.symbol_at_address_func = objdump_symbol_at_address;
+
+ if (machine != NULL)
+ {
+ const bfd_arch_info_type *inf = bfd_scan_arch (machine);
+
+ if (inf == NULL)
+ fatal (_("can't use supplied machine %s"), machine);
+
+ abfd->arch_info = inf;
+ }
+
+ if (endian != BFD_ENDIAN_UNKNOWN)
+ {
+ struct bfd_target *xvec;
+
+ xvec = (struct bfd_target *) xmalloc (sizeof (struct bfd_target));
+ memcpy (xvec, abfd->xvec, sizeof (struct bfd_target));
+ xvec->byteorder = endian;
+ abfd->xvec = xvec;
+ }
+
+ /* Use libopcodes to locate a suitable disassembler. */
+ aux.disassemble_fn = disassembler (abfd);
+ if (!aux.disassemble_fn)
+ {
+ non_fatal (_("can't disassemble for architecture %s\n"),
+ bfd_printable_arch_mach (bfd_get_arch (abfd), 0));
+ exit_status = 1;
+ return;
+ }
+
+ disasm_info.flavour = bfd_get_flavour (abfd);
+ disasm_info.arch = bfd_get_arch (abfd);
+ disasm_info.mach = bfd_get_mach (abfd);
+ disasm_info.disassembler_options = disassembler_options;
+ disasm_info.octets_per_byte = bfd_octets_per_byte (abfd);
+ disasm_info.skip_zeroes = DEFAULT_SKIP_ZEROES;
+ disasm_info.skip_zeroes_at_end = DEFAULT_SKIP_ZEROES_AT_END;
+ disasm_info.disassembler_needs_relocs = FALSE;
+
+ if (bfd_big_endian (abfd))
+ disasm_info.display_endian = disasm_info.endian = BFD_ENDIAN_BIG;
+ else if (bfd_little_endian (abfd))
+ disasm_info.display_endian = disasm_info.endian = BFD_ENDIAN_LITTLE;
+ else
+ /* ??? Aborting here seems too drastic. We could default to big or little
+ instead. */
+ disasm_info.endian = BFD_ENDIAN_UNKNOWN;
+
+ /* Allow the target to customize the info structure. */
+ disassemble_init_for_target (& disasm_info);
+
+ /* Pre-load the dynamic relocs if we are going
+ to be dumping them along with the disassembly. */
+ if (dump_dynamic_reloc_info)
+ {
+ long relsize = bfd_get_dynamic_reloc_upper_bound (abfd);
+
+ if (relsize < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ if (relsize > 0)
+ {
+ aux.dynrelbuf = (arelent **) xmalloc (relsize);
+ aux.dynrelcount = bfd_canonicalize_dynamic_reloc (abfd,
+ aux.dynrelbuf,
+ dynsyms);
+ if (aux.dynrelcount < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ /* Sort the relocs by address. */
+ qsort (aux.dynrelbuf, aux.dynrelcount, sizeof (arelent *),
+ compare_relocs);
+ }
+ }
+ disasm_info.symtab = sorted_syms;
+ disasm_info.symtab_size = sorted_symcount;
+
+ bfd_map_over_sections (abfd, disassemble_section, & disasm_info);
+
+ if (aux.dynrelbuf != NULL)
+ free (aux.dynrelbuf);
+ free (sorted_syms);
+}
+
+static int
+load_specific_debug_section (enum dwarf_section_display_enum debug,
+ asection *sec, void *file)
+{
+ struct dwarf_section *section = &debug_displays [debug].section;
+ bfd *abfd = (bfd *) file;
+ bfd_boolean ret;
+
+ /* If it is already loaded, do nothing. */
+ if (section->start != NULL)
+ return 1;
+
+ section->address = 0;
+ section->size = bfd_get_section_size (sec);
+ section->start = NULL;
+ ret = bfd_get_full_section_contents (abfd, sec, &section->start);
+
+ if (! ret)
+ {
+ free_debug_section (debug);
+ printf (_("\nCan't get contents for section '%s'.\n"),
+ section->name);
+ return 0;
+ }
+
+ if (is_relocatable && debug_displays [debug].relocate)
+ {
+ bfd_cache_section_contents (sec, section->start);
+
+ ret = bfd_simple_get_relocated_section_contents (abfd,
+ sec,
+ section->start,
+ syms) != NULL;
+
+ if (! ret)
+ {
+ free_debug_section (debug);
+ printf (_("\nCan't get contents for section '%s'.\n"),
+ section->name);
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+int
+load_debug_section (enum dwarf_section_display_enum debug, void *file)
+{
+ struct dwarf_section *section = &debug_displays [debug].section;
+ bfd *abfd = (bfd *) file;
+ asection *sec;
+
+ /* If it is already loaded, do nothing. */
+ if (section->start != NULL)
+ return 1;
+
+ /* Locate the debug section. */
+ sec = bfd_get_section_by_name (abfd, section->uncompressed_name);
+ if (sec != NULL)
+ section->name = section->uncompressed_name;
+ else
+ {
+ sec = bfd_get_section_by_name (abfd, section->compressed_name);
+ if (sec != NULL)
+ section->name = section->compressed_name;
+ }
+ if (sec == NULL)
+ return 0;
+
+ return load_specific_debug_section (debug, sec, file);
+}
+
+void
+free_debug_section (enum dwarf_section_display_enum debug)
+{
+ struct dwarf_section *section = &debug_displays [debug].section;
+
+ if (section->start == NULL)
+ return;
+
+ free ((char *) section->start);
+ section->start = NULL;
+ section->address = 0;
+ section->size = 0;
+}
+
+static void
+dump_dwarf_section (bfd *abfd, asection *section,
+ void *arg ATTRIBUTE_UNUSED)
+{
+ const char *name = bfd_get_section_name (abfd, section);
+ const char *match;
+ int i;
+
+ if (CONST_STRNEQ (name, ".gnu.linkonce.wi."))
+ match = ".debug_info";
+ else
+ match = name;
+
+ for (i = 0; i < max; i++)
+ if ((strcmp (debug_displays [i].section.uncompressed_name, match) == 0
+ || strcmp (debug_displays [i].section.compressed_name, match) == 0)
+ && debug_displays [i].enabled != NULL
+ && *debug_displays [i].enabled)
+ {
+ struct dwarf_section *sec = &debug_displays [i].section;
+
+ if (strcmp (sec->uncompressed_name, match) == 0)
+ sec->name = sec->uncompressed_name;
+ else
+ sec->name = sec->compressed_name;
+ if (load_specific_debug_section ((enum dwarf_section_display_enum) i,
+ section, abfd))
+ {
+ debug_displays [i].display (sec, abfd);
+
+ if (i != info && i != abbrev)
+ free_debug_section ((enum dwarf_section_display_enum) i);
+ }
+ break;
+ }
+}
+
+/* Dump the dwarf debugging information. */
+
+static void
+dump_dwarf (bfd *abfd)
+{
+ is_relocatable = (abfd->flags & (EXEC_P | DYNAMIC)) == 0;
+
+ eh_addr_size = bfd_arch_bits_per_address (abfd) / 8;
+
+ if (bfd_big_endian (abfd))
+ byte_get = byte_get_big_endian;
+ else if (bfd_little_endian (abfd))
+ byte_get = byte_get_little_endian;
+ else
+ abort ();
+
+ switch (bfd_get_arch (abfd))
+ {
+ case bfd_arch_i386:
+ switch (bfd_get_mach (abfd))
+ {
+ case bfd_mach_x86_64:
+ case bfd_mach_x86_64_intel_syntax:
+ case bfd_mach_x86_64_nacl:
+ case bfd_mach_x64_32:
+ case bfd_mach_x64_32_intel_syntax:
+ case bfd_mach_x64_32_nacl:
+ init_dwarf_regnames_x86_64 ();
+ break;
+
+ default:
+ init_dwarf_regnames_i386 ();
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ bfd_map_over_sections (abfd, dump_dwarf_section, NULL);
+
+ free_debug_memory ();
+}
+
+/* Read ABFD's stabs section STABSECT_NAME, and return a pointer to
+ it. Return NULL on failure. */
+
+static char *
+read_section_stabs (bfd *abfd, const char *sect_name, bfd_size_type *size_ptr)
+{
+ asection *stabsect;
+ bfd_size_type size;
+ char *contents;
+
+ stabsect = bfd_get_section_by_name (abfd, sect_name);
+ if (stabsect == NULL)
+ {
+ printf (_("No %s section present\n\n"), sect_name);
+ return FALSE;
+ }
+
+ size = bfd_section_size (abfd, stabsect);
+ contents = (char *) xmalloc (size);
+
+ if (! bfd_get_section_contents (abfd, stabsect, contents, 0, size))
+ {
+ non_fatal (_("reading %s section of %s failed: %s"),
+ sect_name, bfd_get_filename (abfd),
+ bfd_errmsg (bfd_get_error ()));
+ exit_status = 1;
+ free (contents);
+ return NULL;
+ }
+
+ *size_ptr = size;
+
+ return contents;
+}
+
+/* Stabs entries use a 12 byte format:
+ 4 byte string table index
+ 1 byte stab type
+ 1 byte stab other field
+ 2 byte stab desc field
+ 4 byte stab value
+ FIXME: This will have to change for a 64 bit object format. */
+
+#define STRDXOFF (0)
+#define TYPEOFF (4)
+#define OTHEROFF (5)
+#define DESCOFF (6)
+#define VALOFF (8)
+#define STABSIZE (12)
+
+/* Print ABFD's stabs section STABSECT_NAME (in `stabs'),
+ using string table section STRSECT_NAME (in `strtab'). */
+
+static void
+print_section_stabs (bfd *abfd,
+ const char *stabsect_name,
+ unsigned *string_offset_ptr)
+{
+ int i;
+ unsigned file_string_table_offset = 0;
+ unsigned next_file_string_table_offset = *string_offset_ptr;
+ bfd_byte *stabp, *stabs_end;
+
+ stabp = stabs;
+ stabs_end = stabp + stab_size;
+
+ printf (_("Contents of %s section:\n\n"), stabsect_name);
+ printf ("Symnum n_type n_othr n_desc n_value n_strx String\n");
+
+ /* Loop through all symbols and print them.
+
+ We start the index at -1 because there is a dummy symbol on
+ the front of stabs-in-{coff,elf} sections that supplies sizes. */
+ for (i = -1; stabp < stabs_end; stabp += STABSIZE, i++)
+ {
+ const char *name;
+ unsigned long strx;
+ unsigned char type, other;
+ unsigned short desc;
+ bfd_vma value;
+
+ strx = bfd_h_get_32 (abfd, stabp + STRDXOFF);
+ type = bfd_h_get_8 (abfd, stabp + TYPEOFF);
+ other = bfd_h_get_8 (abfd, stabp + OTHEROFF);
+ desc = bfd_h_get_16 (abfd, stabp + DESCOFF);
+ value = bfd_h_get_32 (abfd, stabp + VALOFF);
+
+ printf ("\n%-6d ", i);
+ /* Either print the stab name, or, if unnamed, print its number
+ again (makes consistent formatting for tools like awk). */
+ name = bfd_get_stab_name (type);
+ if (name != NULL)
+ printf ("%-6s", name);
+ else if (type == N_UNDF)
+ printf ("HdrSym");
+ else
+ printf ("%-6d", type);
+ printf (" %-6d %-6d ", other, desc);
+ bfd_printf_vma (abfd, value);
+ printf (" %-6lu", strx);
+
+ /* Symbols with type == 0 (N_UNDF) specify the length of the
+ string table associated with this file. We use that info
+ to know how to relocate the *next* file's string table indices. */
+ if (type == N_UNDF)
+ {
+ file_string_table_offset = next_file_string_table_offset;
+ next_file_string_table_offset += value;
+ }
+ else
+ {
+ /* Using the (possibly updated) string table offset, print the
+ string (if any) associated with this symbol. */
+ if ((strx + file_string_table_offset) < stabstr_size)
+ printf (" %s", &strtab[strx + file_string_table_offset]);
+ else
+ printf (" *");
+ }
+ }
+ printf ("\n\n");
+ *string_offset_ptr = next_file_string_table_offset;
+}
+
+typedef struct
+{
+ const char * section_name;
+ const char * string_section_name;
+ unsigned string_offset;
+}
+stab_section_names;
+
+static void
+find_stabs_section (bfd *abfd, asection *section, void *names)
+{
+ int len;
+ stab_section_names * sought = (stab_section_names *) names;
+
+ /* Check for section names for which stabsect_name is a prefix, to
+ handle .stab.N, etc. */
+ len = strlen (sought->section_name);
+
+ /* If the prefix matches, and the files section name ends with a
+ nul or a digit, then we match. I.e., we want either an exact
+ match or a section followed by a number. */
+ if (strncmp (sought->section_name, section->name, len) == 0
+ && (section->name[len] == 0
+ || (section->name[len] == '.' && ISDIGIT (section->name[len + 1]))))
+ {
+ if (strtab == NULL)
+ strtab = read_section_stabs (abfd, sought->string_section_name,
+ &stabstr_size);
+
+ if (strtab)
+ {
+ stabs = (bfd_byte *) read_section_stabs (abfd, section->name,
+ &stab_size);
+ if (stabs)
+ print_section_stabs (abfd, section->name, &sought->string_offset);
+ }
+ }
+}
+
+static void
+dump_stabs_section (bfd *abfd, char *stabsect_name, char *strsect_name)
+{
+ stab_section_names s;
+
+ s.section_name = stabsect_name;
+ s.string_section_name = strsect_name;
+ s.string_offset = 0;
+
+ bfd_map_over_sections (abfd, find_stabs_section, & s);
+
+ free (strtab);
+ strtab = NULL;
+}
+
+/* Dump the any sections containing stabs debugging information. */
+
+static void
+dump_stabs (bfd *abfd)
+{
+ dump_stabs_section (abfd, ".stab", ".stabstr");
+ dump_stabs_section (abfd, ".stab.excl", ".stab.exclstr");
+ dump_stabs_section (abfd, ".stab.index", ".stab.indexstr");
+
+ /* For Darwin. */
+ dump_stabs_section (abfd, "LC_SYMTAB.stabs", "LC_SYMTAB.stabstr");
+
+ dump_stabs_section (abfd, "$GDB_SYMBOLS$", "$GDB_STRINGS$");
+}
+
+static void
+dump_bfd_header (bfd *abfd)
+{
+ char *comma = "";
+
+ printf (_("architecture: %s, "),
+ bfd_printable_arch_mach (bfd_get_arch (abfd),
+ bfd_get_mach (abfd)));
+ printf (_("flags 0x%08x:\n"), abfd->flags & ~BFD_FLAGS_FOR_BFD_USE_MASK);
+
+#define PF(x, y) if (abfd->flags & x) {printf("%s%s", comma, y); comma=", ";}
+ PF (HAS_RELOC, "HAS_RELOC");
+ PF (EXEC_P, "EXEC_P");
+ PF (HAS_LINENO, "HAS_LINENO");
+ PF (HAS_DEBUG, "HAS_DEBUG");
+ PF (HAS_SYMS, "HAS_SYMS");
+ PF (HAS_LOCALS, "HAS_LOCALS");
+ PF (DYNAMIC, "DYNAMIC");
+ PF (WP_TEXT, "WP_TEXT");
+ PF (D_PAGED, "D_PAGED");
+ PF (BFD_IS_RELAXABLE, "BFD_IS_RELAXABLE");
+ PF (HAS_LOAD_PAGE, "HAS_LOAD_PAGE");
+ printf (_("\nstart address 0x"));
+ bfd_printf_vma (abfd, abfd->start_address);
+ printf ("\n");
+}
+
+
+static void
+dump_bfd_private_header (bfd *abfd)
+{
+ bfd_print_private_bfd_data (abfd, stdout);
+}
+
+static void
+dump_target_specific (bfd *abfd)
+{
+ const struct objdump_private_desc * const *desc;
+ struct objdump_private_option *opt;
+ char *e, *b;
+
+ /* Find the desc. */
+ for (desc = objdump_private_vectors; *desc != NULL; desc++)
+ if ((*desc)->filter (abfd))
+ break;
+
+ if (*desc == NULL)
+ {
+ non_fatal (_("option -P/--private not supported by this file"));
+ return;
+ }
+
+ /* Clear all options. */
+ for (opt = (*desc)->options; opt->name; opt++)
+ opt->selected = FALSE;
+
+ /* Decode options. */
+ b = dump_private_options;
+ do
+ {
+ e = strchr (b, ',');
+
+ if (e)
+ *e = 0;
+
+ for (opt = (*desc)->options; opt->name; opt++)
+ if (strcmp (opt->name, b) == 0)
+ {
+ opt->selected = TRUE;
+ break;
+ }
+ if (opt->name == NULL)
+ non_fatal (_("target specific dump '%s' not supported"), b);
+
+ if (e)
+ {
+ *e = ',';
+ b = e + 1;
+ }
+ }
+ while (e != NULL);
+
+ /* Dump. */
+ (*desc)->dump (abfd);
+}
+
+/* Display a section in hexadecimal format with associated characters.
+ Each line prefixed by the zero padded address. */
+
+static void
+dump_section (bfd *abfd, asection *section, void *dummy ATTRIBUTE_UNUSED)
+{
+ bfd_byte *data = 0;
+ bfd_size_type datasize;
+ bfd_size_type addr_offset;
+ bfd_size_type start_offset;
+ bfd_size_type stop_offset;
+ unsigned int opb = bfd_octets_per_byte (abfd);
+ /* Bytes per line. */
+ const int onaline = 16;
+ char buf[64];
+ int count;
+ int width;
+
+ if ((section->flags & SEC_HAS_CONTENTS) == 0)
+ return;
+
+ if (! process_section_p (section))
+ return;
+
+ if ((datasize = bfd_section_size (abfd, section)) == 0)
+ return;
+
+ /* Compute the address range to display. */
+ if (start_address == (bfd_vma) -1
+ || start_address < section->vma)
+ start_offset = 0;
+ else
+ start_offset = start_address - section->vma;
+
+ if (stop_address == (bfd_vma) -1)
+ stop_offset = datasize / opb;
+ else
+ {
+ if (stop_address < section->vma)
+ stop_offset = 0;
+ else
+ stop_offset = stop_address - section->vma;
+
+ if (stop_offset > datasize / opb)
+ stop_offset = datasize / opb;
+ }
+
+ if (start_offset >= stop_offset)
+ return;
+
+ printf (_("Contents of section %s:"), section->name);
+ if (display_file_offsets)
+ printf (_(" (Starting at file offset: 0x%lx)"),
+ (unsigned long) (section->filepos + start_offset));
+ printf ("\n");
+
+ if (!bfd_get_full_section_contents (abfd, section, &data))
+ {
+ non_fatal (_("Reading section failed"));
+ return;
+ }
+
+ width = 4;
+
+ bfd_sprintf_vma (abfd, buf, start_offset + section->vma);
+ if (strlen (buf) >= sizeof (buf))
+ abort ();
+
+ count = 0;
+ while (buf[count] == '0' && buf[count+1] != '\0')
+ count++;
+ count = strlen (buf) - count;
+ if (count > width)
+ width = count;
+
+ bfd_sprintf_vma (abfd, buf, stop_offset + section->vma - 1);
+ if (strlen (buf) >= sizeof (buf))
+ abort ();
+
+ count = 0;
+ while (buf[count] == '0' && buf[count+1] != '\0')
+ count++;
+ count = strlen (buf) - count;
+ if (count > width)
+ width = count;
+
+ for (addr_offset = start_offset;
+ addr_offset < stop_offset; addr_offset += onaline / opb)
+ {
+ bfd_size_type j;
+
+ bfd_sprintf_vma (abfd, buf, (addr_offset + section->vma));
+ count = strlen (buf);
+ if ((size_t) count >= sizeof (buf))
+ abort ();
+
+ putchar (' ');
+ while (count < width)
+ {
+ putchar ('0');
+ count++;
+ }
+ fputs (buf + count - width, stdout);
+ putchar (' ');
+
+ for (j = addr_offset * opb;
+ j < addr_offset * opb + onaline; j++)
+ {
+ if (j < stop_offset * opb)
+ printf ("%02x", (unsigned) (data[j]));
+ else
+ printf (" ");
+ if ((j & 3) == 3)
+ printf (" ");
+ }
+
+ printf (" ");
+ for (j = addr_offset * opb;
+ j < addr_offset * opb + onaline; j++)
+ {
+ if (j >= stop_offset * opb)
+ printf (" ");
+ else
+ printf ("%c", ISPRINT (data[j]) ? data[j] : '.');
+ }
+ putchar ('\n');
+ }
+ free (data);
+}
+
+/* Actually display the various requested regions. */
+
+static void
+dump_data (bfd *abfd)
+{
+ bfd_map_over_sections (abfd, dump_section, NULL);
+}
+
+/* Should perhaps share code and display with nm? */
+
+static void
+dump_symbols (bfd *abfd ATTRIBUTE_UNUSED, bfd_boolean dynamic)
+{
+ asymbol **current;
+ long max_count;
+ long count;
+
+ if (dynamic)
+ {
+ current = dynsyms;
+ max_count = dynsymcount;
+ printf ("DYNAMIC SYMBOL TABLE:\n");
+ }
+ else
+ {
+ current = syms;
+ max_count = symcount;
+ printf ("SYMBOL TABLE:\n");
+ }
+
+ if (max_count == 0)
+ printf (_("no symbols\n"));
+
+ for (count = 0; count < max_count; count++)
+ {
+ bfd *cur_bfd;
+
+ if (*current == NULL)
+ printf (_("no information for symbol number %ld\n"), count);
+
+ else if ((cur_bfd = bfd_asymbol_bfd (*current)) == NULL)
+ printf (_("could not determine the type of symbol number %ld\n"),
+ count);
+
+ else if (process_section_p ((* current)->section)
+ && (dump_special_syms
+ || !bfd_is_target_special_symbol (cur_bfd, *current)))
+ {
+ const char *name = (*current)->name;
+
+ if (do_demangle && name != NULL && *name != '\0')
+ {
+ char *alloc;
+
+ /* If we want to demangle the name, we demangle it
+ here, and temporarily clobber it while calling
+ bfd_print_symbol. FIXME: This is a gross hack. */
+ alloc = bfd_demangle (cur_bfd, name, DMGL_ANSI | DMGL_PARAMS);
+ if (alloc != NULL)
+ (*current)->name = alloc;
+ bfd_print_symbol (cur_bfd, stdout, *current,
+ bfd_print_symbol_all);
+ if (alloc != NULL)
+ {
+ (*current)->name = name;
+ free (alloc);
+ }
+ }
+ else
+ bfd_print_symbol (cur_bfd, stdout, *current,
+ bfd_print_symbol_all);
+ printf ("\n");
+ }
+
+ current++;
+ }
+ printf ("\n\n");
+}
+
+static void
+dump_reloc_set (bfd *abfd, asection *sec, arelent **relpp, long relcount)
+{
+ arelent **p;
+ char *last_filename, *last_functionname;
+ unsigned int last_line;
+ unsigned int last_discriminator;
+
+ /* Get column headers lined up reasonably. */
+ {
+ static int width;
+
+ if (width == 0)
+ {
+ char buf[30];
+
+ bfd_sprintf_vma (abfd, buf, (bfd_vma) -1);
+ width = strlen (buf) - 7;
+ }
+ printf ("OFFSET %*s TYPE %*s VALUE \n", width, "", 12, "");
+ }
+
+ last_filename = NULL;
+ last_functionname = NULL;
+ last_line = 0;
+ last_discriminator = 0;
+
+ for (p = relpp; relcount && *p != NULL; p++, relcount--)
+ {
+ arelent *q = *p;
+ const char *filename, *functionname;
+ unsigned int linenumber;
+ unsigned int discriminator;
+ const char *sym_name;
+ const char *section_name;
+ bfd_vma addend2 = 0;
+
+ if (start_address != (bfd_vma) -1
+ && q->address < start_address)
+ continue;
+ if (stop_address != (bfd_vma) -1
+ && q->address > stop_address)
+ continue;
+
+ if (with_line_numbers
+ && sec != NULL
+ && bfd_find_nearest_line_discriminator (abfd, sec, syms, q->address,
+ &filename, &functionname,
+ &linenumber, &discriminator))
+ {
+ if (functionname != NULL
+ && (last_functionname == NULL
+ || strcmp (functionname, last_functionname) != 0))
+ {
+ printf ("%s():\n", functionname);
+ if (last_functionname != NULL)
+ free (last_functionname);
+ last_functionname = xstrdup (functionname);
+ }
+
+ if (linenumber > 0
+ && (linenumber != last_line
+ || (filename != NULL
+ && last_filename != NULL
+ && filename_cmp (filename, last_filename) != 0)
+ || (discriminator != last_discriminator)))
+ {
+ if (discriminator > 0)
+ printf ("%s:%u\n", filename == NULL ? "???" : filename, linenumber);
+ else
+ printf ("%s:%u (discriminator %u)\n", filename == NULL ? "???" : filename,
+ linenumber, discriminator);
+ last_line = linenumber;
+ last_discriminator = discriminator;
+ if (last_filename != NULL)
+ free (last_filename);
+ if (filename == NULL)
+ last_filename = NULL;
+ else
+ last_filename = xstrdup (filename);
+ }
+ }
+
+ if (q->sym_ptr_ptr && *q->sym_ptr_ptr)
+ {
+ sym_name = (*(q->sym_ptr_ptr))->name;
+ section_name = (*(q->sym_ptr_ptr))->section->name;
+ }
+ else
+ {
+ sym_name = NULL;
+ section_name = NULL;
+ }
+
+ bfd_printf_vma (abfd, q->address);
+ if (q->howto == NULL)
+ printf (" *unknown* ");
+ else if (q->howto->name)
+ {
+ const char *name = q->howto->name;
+
+ /* R_SPARC_OLO10 relocations contain two addends.
+ But because 'arelent' lacks enough storage to
+ store them both, the 64-bit ELF Sparc backend
+ records this as two relocations. One R_SPARC_LO10
+ and one R_SPARC_13, both pointing to the same
+ address. This is merely so that we have some
+ place to store both addend fields.
+
+ Undo this transformation, otherwise the output
+ will be confusing. */
+ if (abfd->xvec->flavour == bfd_target_elf_flavour
+ && elf_tdata(abfd)->elf_header->e_machine == EM_SPARCV9
+ && relcount > 1
+ && !strcmp (q->howto->name, "R_SPARC_LO10"))
+ {
+ arelent *q2 = *(p + 1);
+ if (q2 != NULL
+ && q2->howto
+ && q->address == q2->address
+ && !strcmp (q2->howto->name, "R_SPARC_13"))
+ {
+ name = "R_SPARC_OLO10";
+ addend2 = q2->addend;
+ p++;
+ }
+ }
+ printf (" %-16s ", name);
+ }
+ else
+ printf (" %-16d ", q->howto->type);
+
+ if (sym_name)
+ {
+ objdump_print_symname (abfd, NULL, *q->sym_ptr_ptr);
+ }
+ else
+ {
+ if (section_name == NULL)
+ section_name = "*unknown*";
+ printf ("[%s]", section_name);
+ }
+
+ if (q->addend)
+ {
+ bfd_signed_vma addend = q->addend;
+ if (addend < 0)
+ {
+ printf ("-0x");
+ addend = -addend;
+ }
+ else
+ printf ("+0x");
+ bfd_printf_vma (abfd, addend);
+ }
+ if (addend2)
+ {
+ printf ("+0x");
+ bfd_printf_vma (abfd, addend2);
+ }
+
+ printf ("\n");
+ }
+
+ if (last_filename != NULL)
+ free (last_filename);
+ if (last_functionname != NULL)
+ free (last_functionname);
+}
+
+static void
+dump_relocs_in_section (bfd *abfd,
+ asection *section,
+ void *dummy ATTRIBUTE_UNUSED)
+{
+ arelent **relpp;
+ long relcount;
+ long relsize;
+
+ if ( bfd_is_abs_section (section)
+ || bfd_is_und_section (section)
+ || bfd_is_com_section (section)
+ || (! process_section_p (section))
+ || ((section->flags & SEC_RELOC) == 0))
+ return;
+
+ relsize = bfd_get_reloc_upper_bound (abfd, section);
+ if (relsize < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ printf ("RELOCATION RECORDS FOR [%s]:", section->name);
+
+ if (relsize == 0)
+ {
+ printf (" (none)\n\n");
+ return;
+ }
+
+ relpp = (arelent **) xmalloc (relsize);
+ relcount = bfd_canonicalize_reloc (abfd, section, relpp, syms);
+
+ if (relcount < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+ else if (relcount == 0)
+ printf (" (none)\n\n");
+ else
+ {
+ printf ("\n");
+ dump_reloc_set (abfd, section, relpp, relcount);
+ printf ("\n\n");
+ }
+ free (relpp);
+}
+
+static void
+dump_relocs (bfd *abfd)
+{
+ bfd_map_over_sections (abfd, dump_relocs_in_section, NULL);
+}
+
+static void
+dump_dynamic_relocs (bfd *abfd)
+{
+ long relsize;
+ arelent **relpp;
+ long relcount;
+
+ relsize = bfd_get_dynamic_reloc_upper_bound (abfd);
+ if (relsize < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ printf ("DYNAMIC RELOCATION RECORDS");
+
+ if (relsize == 0)
+ printf (" (none)\n\n");
+ else
+ {
+ relpp = (arelent **) xmalloc (relsize);
+ relcount = bfd_canonicalize_dynamic_reloc (abfd, relpp, dynsyms);
+
+ if (relcount < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+ else if (relcount == 0)
+ printf (" (none)\n\n");
+ else
+ {
+ printf ("\n");
+ dump_reloc_set (abfd, NULL, relpp, relcount);
+ printf ("\n\n");
+ }
+ free (relpp);
+ }
+}
+
+/* Creates a table of paths, to search for source files. */
+
+static void
+add_include_path (const char *path)
+{
+ if (path[0] == 0)
+ return;
+ include_path_count++;
+ include_paths = (const char **)
+ xrealloc (include_paths, include_path_count * sizeof (*include_paths));
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ if (path[1] == ':' && path[2] == 0)
+ path = concat (path, ".", (const char *) 0);
+#endif
+ include_paths[include_path_count - 1] = path;
+}
+
+static void
+adjust_addresses (bfd *abfd ATTRIBUTE_UNUSED,
+ asection *section,
+ void *arg)
+{
+ if ((section->flags & SEC_DEBUGGING) == 0)
+ {
+ bfd_boolean *has_reloc_p = (bfd_boolean *) arg;
+ section->vma += adjust_section_vma;
+ if (*has_reloc_p)
+ section->lma += adjust_section_vma;
+ }
+}
+
+/* Dump selected contents of ABFD. */
+
+static void
+dump_bfd (bfd *abfd)
+{
+ /* If we are adjusting section VMA's, change them all now. Changing
+ the BFD information is a hack. However, we must do it, or
+ bfd_find_nearest_line will not do the right thing. */
+ if (adjust_section_vma != 0)
+ {
+ bfd_boolean has_reloc = (abfd->flags & HAS_RELOC);
+ bfd_map_over_sections (abfd, adjust_addresses, &has_reloc);
+ }
+
+ if (! dump_debugging_tags && ! suppress_bfd_header)
+ printf (_("\n%s: file format %s\n"), bfd_get_filename (abfd),
+ abfd->xvec->name);
+ if (dump_ar_hdrs)
+ print_arelt_descr (stdout, abfd, TRUE);
+ if (dump_file_header)
+ dump_bfd_header (abfd);
+ if (dump_private_headers)
+ dump_bfd_private_header (abfd);
+ if (dump_private_options != NULL)
+ dump_target_specific (abfd);
+ if (! dump_debugging_tags && ! suppress_bfd_header)
+ putchar ('\n');
+
+ if (dump_symtab
+ || dump_reloc_info
+ || disassemble
+ || dump_debugging
+ || dump_dwarf_section_info)
+ syms = slurp_symtab (abfd);
+
+ if (dump_section_headers)
+ dump_headers (abfd);
+
+ if (dump_dynamic_symtab || dump_dynamic_reloc_info
+ || (disassemble && bfd_get_dynamic_symtab_upper_bound (abfd) > 0))
+ dynsyms = slurp_dynamic_symtab (abfd);
+ if (disassemble)
+ {
+ synthcount = bfd_get_synthetic_symtab (abfd, symcount, syms,
+ dynsymcount, dynsyms, &synthsyms);
+ if (synthcount < 0)
+ synthcount = 0;
+ }
+
+ if (dump_symtab)
+ dump_symbols (abfd, FALSE);
+ if (dump_dynamic_symtab)
+ dump_symbols (abfd, TRUE);
+ if (dump_dwarf_section_info)
+ dump_dwarf (abfd);
+ if (dump_stab_section_info)
+ dump_stabs (abfd);
+ if (dump_reloc_info && ! disassemble)
+ dump_relocs (abfd);
+ if (dump_dynamic_reloc_info && ! disassemble)
+ dump_dynamic_relocs (abfd);
+ if (dump_section_contents)
+ dump_data (abfd);
+ if (disassemble)
+ disassemble_data (abfd);
+
+ if (dump_debugging)
+ {
+ void *dhandle;
+
+ dhandle = read_debugging_info (abfd, syms, symcount, TRUE);
+ if (dhandle != NULL)
+ {
+ if (!print_debugging_info (stdout, dhandle, abfd, syms,
+ bfd_demangle,
+ dump_debugging_tags ? TRUE : FALSE))
+ {
+ non_fatal (_("%s: printing debugging information failed"),
+ bfd_get_filename (abfd));
+ exit_status = 1;
+ }
+ }
+ /* PR 6483: If there was no STABS or IEEE debug
+ info in the file, try DWARF instead. */
+ else if (! dump_dwarf_section_info)
+ {
+ dwarf_select_sections_all ();
+ dump_dwarf (abfd);
+ }
+ }
+
+ if (syms)
+ {
+ free (syms);
+ syms = NULL;
+ }
+
+ if (dynsyms)
+ {
+ free (dynsyms);
+ dynsyms = NULL;
+ }
+
+ if (synthsyms)
+ {
+ free (synthsyms);
+ synthsyms = NULL;
+ }
+
+ symcount = 0;
+ dynsymcount = 0;
+ synthcount = 0;
+}
+
+static void
+display_object_bfd (bfd *abfd)
+{
+ char **matching;
+
+ if (bfd_check_format_matches (abfd, bfd_object, &matching))
+ {
+ dump_bfd (abfd);
+ return;
+ }
+
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ {
+ nonfatal (bfd_get_filename (abfd));
+ list_matching_formats (matching);
+ free (matching);
+ return;
+ }
+
+ if (bfd_get_error () != bfd_error_file_not_recognized)
+ {
+ nonfatal (bfd_get_filename (abfd));
+ return;
+ }
+
+ if (bfd_check_format_matches (abfd, bfd_core, &matching))
+ {
+ dump_bfd (abfd);
+ return;
+ }
+
+ nonfatal (bfd_get_filename (abfd));
+
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ {
+ list_matching_formats (matching);
+ free (matching);
+ }
+}
+
+static void
+display_any_bfd (bfd *file, int level)
+{
+ /* Decompress sections unless dumping the section contents. */
+ if (!dump_section_contents)
+ file->flags |= BFD_DECOMPRESS;
+
+ /* If the file is an archive, process all of its elements. */
+ if (bfd_check_format (file, bfd_archive))
+ {
+ bfd *arfile = NULL;
+ bfd *last_arfile = NULL;
+
+ if (level == 0)
+ printf (_("In archive %s:\n"), bfd_get_filename (file));
+ else
+ printf (_("In nested archive %s:\n"), bfd_get_filename (file));
+
+ for (;;)
+ {
+ bfd_set_error (bfd_error_no_error);
+
+ arfile = bfd_openr_next_archived_file (file, arfile);
+ if (arfile == NULL)
+ {
+ if (bfd_get_error () != bfd_error_no_more_archived_files)
+ nonfatal (bfd_get_filename (file));
+ break;
+ }
+
+ display_any_bfd (arfile, level + 1);
+
+ if (last_arfile != NULL)
+ bfd_close (last_arfile);
+ last_arfile = arfile;
+ }
+
+ if (last_arfile != NULL)
+ bfd_close (last_arfile);
+ }
+ else
+ display_object_bfd (file);
+}
+
+static void
+display_file (char *filename, char *target)
+{
+ bfd *file;
+
+ if (get_file_size (filename) < 1)
+ {
+ exit_status = 1;
+ return;
+ }
+
+ file = bfd_openr (filename, target);
+ if (file == NULL)
+ {
+ nonfatal (filename);
+ return;
+ }
+
+ display_any_bfd (file, 0);
+
+ bfd_close (file);
+}
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ char *target = default_target;
+ bfd_boolean seenflag = FALSE;
+
+#if defined (HAVE_SETLOCALE)
+#if defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+ setlocale (LC_CTYPE, "");
+#endif
+
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = *argv;
+ xmalloc_set_program_name (program_name);
+
+ START_PROGRESS (program_name, 0);
+
+ expandargv (&argc, &argv);
+
+ bfd_init ();
+ set_default_bfd_target ();
+
+ while ((c = getopt_long (argc, argv,
+ "pP:ib:m:M:VvCdDlfFaHhrRtTxsSI:j:wE:zgeGW::",
+ long_options, (int *) 0))
+ != EOF)
+ {
+ switch (c)
+ {
+ case 0:
+ break; /* We've been given a long option. */
+ case 'm':
+ machine = optarg;
+ break;
+ case 'M':
+ if (disassembler_options)
+ /* Ignore potential memory leak for now. */
+ disassembler_options = concat (disassembler_options, ",",
+ optarg, (const char *) NULL);
+ else
+ disassembler_options = optarg;
+ break;
+ case 'j':
+ add_only (optarg);
+ break;
+ case 'F':
+ display_file_offsets = TRUE;
+ break;
+ case 'l':
+ with_line_numbers = TRUE;
+ break;
+ case 'b':
+ target = optarg;
+ break;
+ case 'C':
+ do_demangle = TRUE;
+ if (optarg != NULL)
+ {
+ enum demangling_styles style;
+
+ style = cplus_demangle_name_to_style (optarg);
+ if (style == unknown_demangling)
+ fatal (_("unknown demangling style `%s'"),
+ optarg);
+
+ cplus_demangle_set_style (style);
+ }
+ break;
+ case 'w':
+ wide_output = TRUE;
+ break;
+ case OPTION_ADJUST_VMA:
+ adjust_section_vma = parse_vma (optarg, "--adjust-vma");
+ break;
+ case OPTION_START_ADDRESS:
+ start_address = parse_vma (optarg, "--start-address");
+ if ((stop_address != (bfd_vma) -1) && stop_address <= start_address)
+ fatal (_("error: the start address should be before the end address"));
+ break;
+ case OPTION_STOP_ADDRESS:
+ stop_address = parse_vma (optarg, "--stop-address");
+ if ((start_address != (bfd_vma) -1) && stop_address <= start_address)
+ fatal (_("error: the stop address should be after the start address"));
+ break;
+ case OPTION_PREFIX:
+ prefix = optarg;
+ prefix_length = strlen (prefix);
+ /* Remove an unnecessary trailing '/' */
+ while (IS_DIR_SEPARATOR (prefix[prefix_length - 1]))
+ prefix_length--;
+ break;
+ case OPTION_PREFIX_STRIP:
+ prefix_strip = atoi (optarg);
+ if (prefix_strip < 0)
+ fatal (_("error: prefix strip must be non-negative"));
+ break;
+ case OPTION_INSN_WIDTH:
+ insn_width = strtoul (optarg, NULL, 0);
+ if (insn_width <= 0)
+ fatal (_("error: instruction width must be positive"));
+ break;
+ case 'E':
+ if (strcmp (optarg, "B") == 0)
+ endian = BFD_ENDIAN_BIG;
+ else if (strcmp (optarg, "L") == 0)
+ endian = BFD_ENDIAN_LITTLE;
+ else
+ {
+ nonfatal (_("unrecognized -E option"));
+ usage (stderr, 1);
+ }
+ break;
+ case OPTION_ENDIAN:
+ if (strncmp (optarg, "big", strlen (optarg)) == 0)
+ endian = BFD_ENDIAN_BIG;
+ else if (strncmp (optarg, "little", strlen (optarg)) == 0)
+ endian = BFD_ENDIAN_LITTLE;
+ else
+ {
+ non_fatal (_("unrecognized --endian type `%s'"), optarg);
+ exit_status = 1;
+ usage (stderr, 1);
+ }
+ break;
+
+ case 'f':
+ dump_file_header = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'i':
+ formats_info = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'I':
+ add_include_path (optarg);
+ break;
+ case 'p':
+ dump_private_headers = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'P':
+ dump_private_options = optarg;
+ seenflag = TRUE;
+ break;
+ case 'x':
+ dump_private_headers = TRUE;
+ dump_symtab = TRUE;
+ dump_reloc_info = TRUE;
+ dump_file_header = TRUE;
+ dump_ar_hdrs = TRUE;
+ dump_section_headers = TRUE;
+ seenflag = TRUE;
+ break;
+ case 't':
+ dump_symtab = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'T':
+ dump_dynamic_symtab = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'd':
+ disassemble = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'z':
+ disassemble_zeroes = TRUE;
+ break;
+ case 'D':
+ disassemble = TRUE;
+ disassemble_all = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'S':
+ disassemble = TRUE;
+ with_source_code = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'g':
+ dump_debugging = 1;
+ seenflag = TRUE;
+ break;
+ case 'e':
+ dump_debugging = 1;
+ dump_debugging_tags = 1;
+ do_demangle = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'W':
+ dump_dwarf_section_info = TRUE;
+ seenflag = TRUE;
+ if (optarg)
+ dwarf_select_sections_by_letters (optarg);
+ else
+ dwarf_select_sections_all ();
+ break;
+ case OPTION_DWARF:
+ dump_dwarf_section_info = TRUE;
+ seenflag = TRUE;
+ if (optarg)
+ dwarf_select_sections_by_names (optarg);
+ else
+ dwarf_select_sections_all ();
+ break;
+ case OPTION_DWARF_DEPTH:
+ {
+ char *cp;
+ dwarf_cutoff_level = strtoul (optarg, & cp, 0);
+ }
+ break;
+ case OPTION_DWARF_START:
+ {
+ char *cp;
+ dwarf_start_die = strtoul (optarg, & cp, 0);
+ suppress_bfd_header = 1;
+ }
+ break;
+ case OPTION_DWARF_CHECK:
+ dwarf_check = TRUE;
+ break;
+ case 'G':
+ dump_stab_section_info = TRUE;
+ seenflag = TRUE;
+ break;
+ case 's':
+ dump_section_contents = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'r':
+ dump_reloc_info = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'R':
+ dump_dynamic_reloc_info = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'a':
+ dump_ar_hdrs = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'h':
+ dump_section_headers = TRUE;
+ seenflag = TRUE;
+ break;
+ case 'H':
+ usage (stdout, 0);
+ seenflag = TRUE;
+ case 'v':
+ case 'V':
+ show_version = TRUE;
+ seenflag = TRUE;
+ break;
+
+ default:
+ usage (stderr, 1);
+ }
+ }
+
+ if (show_version)
+ print_version ("objdump");
+
+ if (!seenflag)
+ usage (stderr, 2);
+
+ if (formats_info)
+ exit_status = display_info ();
+ else
+ {
+ if (optind == argc)
+ display_file ("a.out", target);
+ else
+ for (; optind < argc;)
+ display_file (argv[optind++], target);
+ }
+
+ free_only_list ();
+
+ END_PROGRESS (program_name);
+
+ return exit_status;
+}
diff --git a/binutils-2.24/binutils/objdump.h b/binutils-2.24/binutils/objdump.h
new file mode 100644
index 00000000..214ecc69
--- /dev/null
+++ b/binutils-2.24/binutils/objdump.h
@@ -0,0 +1,51 @@
+/* objdump.h
+ Copyright 2011, 2012 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+struct objdump_private_option
+{
+ /* Option name. */
+ const char *name;
+
+ /* TRUE if the option is selected. Automatically set and cleared by
+ objdump. */
+ unsigned int selected;
+};
+
+struct objdump_private_desc
+{
+ /* Help displayed for --help. */
+ void (*help)(FILE *stream);
+
+ /* Return TRUE if these options can be applied to ABFD. */
+ int (*filter)(bfd *abfd);
+
+ /* Do the actual work: display whatever is requested according to the
+ options whose SELECTED field is set. */
+ void (*dump)(bfd *abfd);
+
+ /* List of options. Terminated by a NULL name. */
+ struct objdump_private_option *options;
+};
+
+/* XCOFF specific target. */
+extern const struct objdump_private_desc objdump_private_desc_xcoff;
+
+/* Mach-O specific target. */
+extern const struct objdump_private_desc objdump_private_desc_mach_o;
diff --git a/binutils-2.24/binutils/od-macho.c b/binutils-2.24/binutils/od-macho.c
new file mode 100644
index 00000000..e62f1370
--- /dev/null
+++ b/binutils-2.24/binutils/od-macho.c
@@ -0,0 +1,1119 @@
+/* od-macho.c -- dump information about an Mach-O object file.
+ Copyright 2011, 2012 Free Software Foundation, Inc.
+ Written by Tristan Gingold, Adacore.
+
+ 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#include "sysdep.h"
+#include <stddef.h>
+#include <time.h>
+#include "safe-ctype.h"
+#include "bfd.h"
+#include "objdump.h"
+#include "bucomm.h"
+#include "bfdlink.h"
+#include "libbfd.h"
+#include "mach-o.h"
+#include "mach-o/external.h"
+#include "mach-o/codesign.h"
+
+/* Index of the options in the options[] array. */
+#define OPT_HEADER 0
+#define OPT_SECTION 1
+#define OPT_MAP 2
+#define OPT_LOAD 3
+#define OPT_DYSYMTAB 4
+#define OPT_CODESIGN 5
+#define OPT_SEG_SPLIT_INFO 6
+
+/* List of actions. */
+static struct objdump_private_option options[] =
+ {
+ { "header", 0 },
+ { "section", 0 },
+ { "map", 0 },
+ { "load", 0 },
+ { "dysymtab", 0 },
+ { "codesign", 0 },
+ { "seg_split_info", 0 },
+ { NULL, 0 }
+ };
+
+/* Display help. */
+
+static void
+mach_o_help (FILE *stream)
+{
+ fprintf (stream, _("\
+For Mach-O files:\n\
+ header Display the file header\n\
+ section Display the segments and sections commands\n\
+ map Display the section map\n\
+ load Display the load commands\n\
+ dysymtab Display the dynamic symbol table\n\
+ codesign Display code signature\n\
+ seg_split_info Display segment split info\n\
+"));
+}
+
+/* Return TRUE if ABFD is handled. */
+
+static int
+mach_o_filter (bfd *abfd)
+{
+ return bfd_get_flavour (abfd) == bfd_target_mach_o_flavour;
+}
+
+static const bfd_mach_o_xlat_name bfd_mach_o_cpu_name[] =
+{
+ { "vax", BFD_MACH_O_CPU_TYPE_VAX },
+ { "mc680x0", BFD_MACH_O_CPU_TYPE_MC680x0 },
+ { "i386", BFD_MACH_O_CPU_TYPE_I386 },
+ { "mips", BFD_MACH_O_CPU_TYPE_MIPS },
+ { "mc98000", BFD_MACH_O_CPU_TYPE_MC98000 },
+ { "hppa", BFD_MACH_O_CPU_TYPE_HPPA },
+ { "arm", BFD_MACH_O_CPU_TYPE_ARM },
+ { "mc88000", BFD_MACH_O_CPU_TYPE_MC88000 },
+ { "sparc", BFD_MACH_O_CPU_TYPE_SPARC },
+ { "i860", BFD_MACH_O_CPU_TYPE_I860 },
+ { "alpha", BFD_MACH_O_CPU_TYPE_ALPHA },
+ { "powerpc", BFD_MACH_O_CPU_TYPE_POWERPC },
+ { "powerpc_64", BFD_MACH_O_CPU_TYPE_POWERPC_64 },
+ { "x86_64", BFD_MACH_O_CPU_TYPE_X86_64 },
+ { NULL, 0}
+};
+
+static const bfd_mach_o_xlat_name bfd_mach_o_filetype_name[] =
+{
+ { "object", BFD_MACH_O_MH_OBJECT },
+ { "execute", BFD_MACH_O_MH_EXECUTE },
+ { "fvmlib", BFD_MACH_O_MH_FVMLIB },
+ { "core", BFD_MACH_O_MH_CORE },
+ { "preload", BFD_MACH_O_MH_PRELOAD },
+ { "dylib", BFD_MACH_O_MH_DYLIB },
+ { "dylinker", BFD_MACH_O_MH_DYLINKER },
+ { "bundle", BFD_MACH_O_MH_BUNDLE },
+ { "dylib_stub", BFD_MACH_O_MH_DYLIB_STUB },
+ { "dym", BFD_MACH_O_MH_DSYM },
+ { "kext_bundle", BFD_MACH_O_MH_KEXT_BUNDLE },
+ { NULL, 0}
+};
+
+static const bfd_mach_o_xlat_name bfd_mach_o_header_flags_name[] =
+{
+ { "noundefs", BFD_MACH_O_MH_NOUNDEFS },
+ { "incrlink", BFD_MACH_O_MH_INCRLINK },
+ { "dyldlink", BFD_MACH_O_MH_DYLDLINK },
+ { "bindatload", BFD_MACH_O_MH_BINDATLOAD },
+ { "prebound", BFD_MACH_O_MH_PREBOUND },
+ { "split_segs", BFD_MACH_O_MH_SPLIT_SEGS },
+ { "lazy_init", BFD_MACH_O_MH_LAZY_INIT },
+ { "twolevel", BFD_MACH_O_MH_TWOLEVEL },
+ { "force_flat", BFD_MACH_O_MH_FORCE_FLAT },
+ { "nomultidefs", BFD_MACH_O_MH_NOMULTIDEFS },
+ { "nofixprebinding", BFD_MACH_O_MH_NOFIXPREBINDING },
+ { "prebindable", BFD_MACH_O_MH_PREBINDABLE },
+ { "allmodsbound", BFD_MACH_O_MH_ALLMODSBOUND },
+ { "subsections_via_symbols", BFD_MACH_O_MH_SUBSECTIONS_VIA_SYMBOLS },
+ { "canonical", BFD_MACH_O_MH_CANONICAL },
+ { "weak_defines", BFD_MACH_O_MH_WEAK_DEFINES },
+ { "binds_to_weak", BFD_MACH_O_MH_BINDS_TO_WEAK },
+ { "allow_stack_execution", BFD_MACH_O_MH_ALLOW_STACK_EXECUTION },
+ { "root_safe", BFD_MACH_O_MH_ROOT_SAFE },
+ { "setuid_safe", BFD_MACH_O_MH_SETUID_SAFE },
+ { "no_reexported_dylibs", BFD_MACH_O_MH_NO_REEXPORTED_DYLIBS },
+ { "pie", BFD_MACH_O_MH_PIE },
+ { NULL, 0}
+};
+
+static const bfd_mach_o_xlat_name bfd_mach_o_load_command_name[] =
+{
+ { "segment", BFD_MACH_O_LC_SEGMENT},
+ { "symtab", BFD_MACH_O_LC_SYMTAB},
+ { "symseg", BFD_MACH_O_LC_SYMSEG},
+ { "thread", BFD_MACH_O_LC_THREAD},
+ { "unixthread", BFD_MACH_O_LC_UNIXTHREAD},
+ { "loadfvmlib", BFD_MACH_O_LC_LOADFVMLIB},
+ { "idfvmlib", BFD_MACH_O_LC_IDFVMLIB},
+ { "ident", BFD_MACH_O_LC_IDENT},
+ { "fvmfile", BFD_MACH_O_LC_FVMFILE},
+ { "prepage", BFD_MACH_O_LC_PREPAGE},
+ { "dysymtab", BFD_MACH_O_LC_DYSYMTAB},
+ { "load_dylib", BFD_MACH_O_LC_LOAD_DYLIB},
+ { "id_dylib", BFD_MACH_O_LC_ID_DYLIB},
+ { "load_dylinker", BFD_MACH_O_LC_LOAD_DYLINKER},
+ { "id_dylinker", BFD_MACH_O_LC_ID_DYLINKER},
+ { "prebound_dylib", BFD_MACH_O_LC_PREBOUND_DYLIB},
+ { "routines", BFD_MACH_O_LC_ROUTINES},
+ { "sub_framework", BFD_MACH_O_LC_SUB_FRAMEWORK},
+ { "sub_umbrella", BFD_MACH_O_LC_SUB_UMBRELLA},
+ { "sub_client", BFD_MACH_O_LC_SUB_CLIENT},
+ { "sub_library", BFD_MACH_O_LC_SUB_LIBRARY},
+ { "twolevel_hints", BFD_MACH_O_LC_TWOLEVEL_HINTS},
+ { "prebind_cksum", BFD_MACH_O_LC_PREBIND_CKSUM},
+ { "load_weak_dylib", BFD_MACH_O_LC_LOAD_WEAK_DYLIB},
+ { "segment_64", BFD_MACH_O_LC_SEGMENT_64},
+ { "routines_64", BFD_MACH_O_LC_ROUTINES_64},
+ { "uuid", BFD_MACH_O_LC_UUID},
+ { "rpath", BFD_MACH_O_LC_RPATH},
+ { "code_signature", BFD_MACH_O_LC_CODE_SIGNATURE},
+ { "segment_split_info", BFD_MACH_O_LC_SEGMENT_SPLIT_INFO},
+ { "reexport_dylib", BFD_MACH_O_LC_REEXPORT_DYLIB},
+ { "lazy_load_dylib", BFD_MACH_O_LC_LAZY_LOAD_DYLIB},
+ { "encryption_info", BFD_MACH_O_LC_ENCRYPTION_INFO},
+ { "dyld_info", BFD_MACH_O_LC_DYLD_INFO},
+ { "load_upward_lib", BFD_MACH_O_LC_LOAD_UPWARD_DYLIB},
+ { "version_min_macosx", BFD_MACH_O_LC_VERSION_MIN_MACOSX},
+ { "version_min_iphoneos", BFD_MACH_O_LC_VERSION_MIN_IPHONEOS},
+ { "function_starts", BFD_MACH_O_LC_FUNCTION_STARTS},
+ { "dyld_environment", BFD_MACH_O_LC_DYLD_ENVIRONMENT},
+ { "main", BFD_MACH_O_LC_MAIN},
+ { "data_in_code", BFD_MACH_O_LC_DATA_IN_CODE},
+ { "source_version", BFD_MACH_O_LC_SOURCE_VERSION},
+ { "dylib_code_sign_drs", BFD_MACH_O_LC_DYLIB_CODE_SIGN_DRS},
+ { NULL, 0}
+};
+
+static const bfd_mach_o_xlat_name bfd_mach_o_thread_x86_name[] =
+{
+ { "thread_state32", BFD_MACH_O_x86_THREAD_STATE32},
+ { "float_state32", BFD_MACH_O_x86_FLOAT_STATE32},
+ { "exception_state32", BFD_MACH_O_x86_EXCEPTION_STATE32},
+ { "thread_state64", BFD_MACH_O_x86_THREAD_STATE64},
+ { "float_state64", BFD_MACH_O_x86_FLOAT_STATE64},
+ { "exception_state64", BFD_MACH_O_x86_EXCEPTION_STATE64},
+ { "thread_state", BFD_MACH_O_x86_THREAD_STATE},
+ { "float_state", BFD_MACH_O_x86_FLOAT_STATE},
+ { "exception_state", BFD_MACH_O_x86_EXCEPTION_STATE},
+ { "debug_state32", BFD_MACH_O_x86_DEBUG_STATE32},
+ { "debug_state64", BFD_MACH_O_x86_DEBUG_STATE64},
+ { "debug_state", BFD_MACH_O_x86_DEBUG_STATE},
+ { "state_none", BFD_MACH_O_x86_THREAD_STATE_NONE},
+ { NULL, 0 }
+};
+
+static void
+bfd_mach_o_print_flags (const bfd_mach_o_xlat_name *table,
+ unsigned long val)
+{
+ int first = 1;
+
+ for (; table->name; table++)
+ {
+ if (table->val & val)
+ {
+ if (!first)
+ printf ("+");
+ printf ("%s", table->name);
+ val &= ~table->val;
+ first = 0;
+ }
+ }
+ if (val)
+ {
+ if (!first)
+ printf ("+");
+ printf ("0x%lx", val);
+ return;
+ }
+ if (first)
+ printf ("-");
+}
+
+static const char *
+bfd_mach_o_get_name_or_null (const bfd_mach_o_xlat_name *table,
+ unsigned long val)
+{
+ for (; table->name; table++)
+ if (table->val == val)
+ return table->name;
+ return NULL;
+}
+
+static const char *
+bfd_mach_o_get_name (const bfd_mach_o_xlat_name *table, unsigned long val)
+{
+ const char *res = bfd_mach_o_get_name_or_null (table, val);
+
+ if (res == NULL)
+ return "*UNKNOWN*";
+ else
+ return res;
+}
+
+static void
+dump_header (bfd *abfd)
+{
+ bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
+ bfd_mach_o_header *h = &mdata->header;
+
+ fputs (_("Mach-O header:\n"), stdout);
+ printf (_(" magic : %08lx\n"), h->magic);
+ printf (_(" cputype : %08lx (%s)\n"), h->cputype,
+ bfd_mach_o_get_name (bfd_mach_o_cpu_name, h->cputype));
+ printf (_(" cpusubtype: %08lx\n"), h->cpusubtype);
+ printf (_(" filetype : %08lx (%s)\n"),
+ h->filetype,
+ bfd_mach_o_get_name (bfd_mach_o_filetype_name, h->filetype));
+ printf (_(" ncmds : %08lx (%lu)\n"), h->ncmds, h->ncmds);
+ printf (_(" sizeofcmds: %08lx\n"), h->sizeofcmds);
+ printf (_(" flags : %08lx ("), h->flags);
+ bfd_mach_o_print_flags (bfd_mach_o_header_flags_name, h->flags);
+ fputs (_(")\n"), stdout);
+ printf (_(" reserved : %08x\n"), h->reserved);
+}
+
+static void
+dump_section_map (bfd *abfd)
+{
+ bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
+ unsigned int i;
+ unsigned int sec_nbr = 0;
+
+ fputs (_("Segments and Sections:\n"), stdout);
+ fputs (_(" #: Segment name Section name Address\n"), stdout);
+
+ for (i = 0; i < mdata->header.ncmds; i++)
+ {
+ bfd_mach_o_segment_command *seg;
+ bfd_mach_o_section *sec;
+
+ if (mdata->commands[i].type != BFD_MACH_O_LC_SEGMENT
+ && mdata->commands[i].type != BFD_MACH_O_LC_SEGMENT_64)
+ continue;
+
+ seg = &mdata->commands[i].command.segment;
+
+ printf ("[Segment %-16s ", seg->segname);
+ printf_vma (seg->vmaddr);
+ putchar ('-');
+ printf_vma (seg->vmaddr + seg->vmsize - 1);
+ putchar (' ');
+ putchar (seg->initprot & BFD_MACH_O_PROT_READ ? 'r' : '-');
+ putchar (seg->initprot & BFD_MACH_O_PROT_WRITE ? 'w' : '-');
+ putchar (seg->initprot & BFD_MACH_O_PROT_EXECUTE ? 'x' : '-');
+ printf ("]\n");
+
+ for (sec = seg->sect_head; sec != NULL; sec = sec->next)
+ {
+ printf ("%02u: %-16s %-16s ", ++sec_nbr,
+ sec->segname, sec->sectname);
+ printf_vma (sec->addr);
+ putchar (' ');
+ printf_vma (sec->size);
+ printf (" %08lx\n", sec->flags);
+ }
+ }
+}
+
+static void
+dump_section (bfd *abfd ATTRIBUTE_UNUSED, bfd_mach_o_section *sec)
+{
+ printf (" Section: %-16s %-16s (bfdname: %s)\n",
+ sec->sectname, sec->segname, sec->bfdsection->name);
+ printf (" addr: ");
+ printf_vma (sec->addr);
+ printf (" size: ");
+ printf_vma (sec->size);
+ printf (" offset: ");
+ printf_vma (sec->offset);
+ printf ("\n");
+ printf (" align: %ld", sec->align);
+ printf (" nreloc: %lu reloff: ", sec->nreloc);
+ printf_vma (sec->reloff);
+ printf ("\n");
+ printf (" flags: %08lx (type: %s", sec->flags,
+ bfd_mach_o_get_name (bfd_mach_o_section_type_name,
+ sec->flags & BFD_MACH_O_SECTION_TYPE_MASK));
+ printf (" attr: ");
+ bfd_mach_o_print_flags (bfd_mach_o_section_attribute_name,
+ sec->flags & BFD_MACH_O_SECTION_ATTRIBUTES_MASK);
+ printf (")\n");
+ switch (sec->flags & BFD_MACH_O_SECTION_TYPE_MASK)
+ {
+ case BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS:
+ case BFD_MACH_O_S_LAZY_SYMBOL_POINTERS:
+ case BFD_MACH_O_S_SYMBOL_STUBS:
+ printf (" first indirect sym: %lu", sec->reserved1);
+ printf (" (%u entries)",
+ bfd_mach_o_section_get_nbr_indirect (abfd, sec));
+ break;
+ default:
+ printf (" reserved1: 0x%lx", sec->reserved1);
+ break;
+ }
+ switch (sec->flags & BFD_MACH_O_SECTION_TYPE_MASK)
+ {
+ case BFD_MACH_O_S_SYMBOL_STUBS:
+ printf (" stub size: %lu", sec->reserved2);
+ break;
+ default:
+ printf (" reserved2: 0x%lx", sec->reserved2);
+ break;
+ }
+ printf (" reserved3: 0x%lx\n", sec->reserved3);
+}
+
+static void
+dump_segment (bfd *abfd ATTRIBUTE_UNUSED, bfd_mach_o_load_command *cmd)
+{
+ bfd_mach_o_segment_command *seg = &cmd->command.segment;
+ bfd_mach_o_section *sec;
+
+ printf (" name: %s\n", *seg->segname ? seg->segname : "*none*");
+ printf (" vmaddr: ");
+ printf_vma (seg->vmaddr);
+ printf (" vmsize: ");
+ printf_vma (seg->vmsize);
+ printf ("\n");
+ printf (" fileoff: ");
+ printf_vma (seg->fileoff);
+ printf (" filesize: ");
+ printf_vma ((bfd_vma)seg->filesize);
+ printf (" endoff: ");
+ printf_vma ((bfd_vma)(seg->fileoff + seg->filesize));
+ printf ("\n");
+ printf (" nsects: %lu ", seg->nsects);
+ printf (" flags: %lx\n", seg->flags);
+ for (sec = seg->sect_head; sec != NULL; sec = sec->next)
+ dump_section (abfd, sec);
+}
+
+static void
+dump_dysymtab (bfd *abfd, bfd_mach_o_load_command *cmd, bfd_boolean verbose)
+{
+ bfd_mach_o_dysymtab_command *dysymtab = &cmd->command.dysymtab;
+ bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
+ unsigned int i;
+
+ printf (" local symbols: idx: %10lu num: %-8lu",
+ dysymtab->ilocalsym, dysymtab->nlocalsym);
+ printf (" (nxtidx: %lu)\n",
+ dysymtab->ilocalsym + dysymtab->nlocalsym);
+ printf (" external symbols: idx: %10lu num: %-8lu",
+ dysymtab->iextdefsym, dysymtab->nextdefsym);
+ printf (" (nxtidx: %lu)\n",
+ dysymtab->iextdefsym + dysymtab->nextdefsym);
+ printf (" undefined symbols: idx: %10lu num: %-8lu",
+ dysymtab->iundefsym, dysymtab->nundefsym);
+ printf (" (nxtidx: %lu)\n",
+ dysymtab->iundefsym + dysymtab->nundefsym);
+ printf (" table of content: off: 0x%08lx num: %-8lu",
+ dysymtab->tocoff, dysymtab->ntoc);
+ printf (" (endoff: 0x%08lx)\n",
+ dysymtab->tocoff + dysymtab->ntoc * BFD_MACH_O_TABLE_OF_CONTENT_SIZE);
+ printf (" module table: off: 0x%08lx num: %-8lu",
+ dysymtab->modtaboff, dysymtab->nmodtab);
+ printf (" (endoff: 0x%08lx)\n",
+ dysymtab->modtaboff + dysymtab->nmodtab
+ * (mdata->header.version == 2 ?
+ BFD_MACH_O_DYLIB_MODULE_64_SIZE : BFD_MACH_O_DYLIB_MODULE_SIZE));
+ printf (" external reference table: off: 0x%08lx num: %-8lu",
+ dysymtab->extrefsymoff, dysymtab->nextrefsyms);
+ printf (" (endoff: 0x%08lx)\n",
+ dysymtab->extrefsymoff
+ + dysymtab->nextrefsyms * BFD_MACH_O_REFERENCE_SIZE);
+ printf (" indirect symbol table: off: 0x%08lx num: %-8lu",
+ dysymtab->indirectsymoff, dysymtab->nindirectsyms);
+ printf (" (endoff: 0x%08lx)\n",
+ dysymtab->indirectsymoff
+ + dysymtab->nindirectsyms * BFD_MACH_O_INDIRECT_SYMBOL_SIZE);
+ printf (" external relocation table: off: 0x%08lx num: %-8lu",
+ dysymtab->extreloff, dysymtab->nextrel);
+ printf (" (endoff: 0x%08lx)\n",
+ dysymtab->extreloff + dysymtab->nextrel * BFD_MACH_O_RELENT_SIZE);
+ printf (" local relocation table: off: 0x%08lx num: %-8lu",
+ dysymtab->locreloff, dysymtab->nlocrel);
+ printf (" (endoff: 0x%08lx)\n",
+ dysymtab->locreloff + dysymtab->nlocrel * BFD_MACH_O_RELENT_SIZE);
+
+ if (!verbose)
+ return;
+
+ if (dysymtab->ntoc > 0
+ || dysymtab->nindirectsyms > 0
+ || dysymtab->nextrefsyms > 0)
+ {
+ /* Try to read the symbols to display the toc or indirect symbols. */
+ bfd_mach_o_read_symtab_symbols (abfd);
+ }
+ else if (dysymtab->nmodtab > 0)
+ {
+ /* Try to read the strtab to display modules name. */
+ bfd_mach_o_read_symtab_strtab (abfd);
+ }
+
+ for (i = 0; i < dysymtab->nmodtab; i++)
+ {
+ bfd_mach_o_dylib_module *module = &dysymtab->dylib_module[i];
+ printf (" module %u:\n", i);
+ printf (" name: %lu", module->module_name_idx);
+ if (mdata->symtab && mdata->symtab->strtab)
+ printf (": %s",
+ mdata->symtab->strtab + module->module_name_idx);
+ printf ("\n");
+ printf (" extdefsym: idx: %8lu num: %lu\n",
+ module->iextdefsym, module->nextdefsym);
+ printf (" refsym: idx: %8lu num: %lu\n",
+ module->irefsym, module->nrefsym);
+ printf (" localsym: idx: %8lu num: %lu\n",
+ module->ilocalsym, module->nlocalsym);
+ printf (" extrel: idx: %8lu num: %lu\n",
+ module->iextrel, module->nextrel);
+ printf (" init: idx: %8u num: %u\n",
+ module->iinit, module->ninit);
+ printf (" term: idx: %8u num: %u\n",
+ module->iterm, module->nterm);
+ printf (" objc_module_info: addr: ");
+ printf_vma (module->objc_module_info_addr);
+ printf (" size: %lu\n", module->objc_module_info_size);
+ }
+
+ if (dysymtab->ntoc > 0)
+ {
+ bfd_mach_o_symtab_command *symtab = mdata->symtab;
+
+ printf (" table of content: (symbol/module)\n");
+ for (i = 0; i < dysymtab->ntoc; i++)
+ {
+ bfd_mach_o_dylib_table_of_content *toc = &dysymtab->dylib_toc[i];
+
+ printf (" %4u: ", i);
+ if (symtab && symtab->symbols && toc->symbol_index < symtab->nsyms)
+ {
+ const char *name = symtab->symbols[toc->symbol_index].symbol.name;
+ printf ("%s (%lu)", name ? name : "*invalid*",
+ toc->symbol_index);
+ }
+ else
+ printf ("%lu", toc->symbol_index);
+
+ printf (" / ");
+ if (symtab && symtab->strtab
+ && toc->module_index < dysymtab->nmodtab)
+ {
+ bfd_mach_o_dylib_module *mod;
+ mod = &dysymtab->dylib_module[toc->module_index];
+ printf ("%s (%lu)",
+ symtab->strtab + mod->module_name_idx,
+ toc->module_index);
+ }
+ else
+ printf ("%lu", toc->module_index);
+
+ printf ("\n");
+ }
+ }
+
+ if (dysymtab->nindirectsyms != 0)
+ {
+ printf (" indirect symbols:\n");
+
+ for (i = 0; i < mdata->nsects; i++)
+ {
+ bfd_mach_o_section *sec = mdata->sections[i];
+ unsigned int j, first, last;
+ bfd_mach_o_symtab_command *symtab = mdata->symtab;
+ bfd_vma addr;
+ bfd_vma entry_size;
+
+ switch (sec->flags & BFD_MACH_O_SECTION_TYPE_MASK)
+ {
+ case BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS:
+ case BFD_MACH_O_S_LAZY_SYMBOL_POINTERS:
+ case BFD_MACH_O_S_SYMBOL_STUBS:
+ first = sec->reserved1;
+ last = first + bfd_mach_o_section_get_nbr_indirect (abfd, sec);
+ addr = sec->addr;
+ entry_size = bfd_mach_o_section_get_entry_size (abfd, sec);
+ printf (" for section %s.%s:\n",
+ sec->segname, sec->sectname);
+ for (j = first; j < last; j++)
+ {
+ unsigned int isym = dysymtab->indirect_syms[j];
+
+ printf (" ");
+ printf_vma (addr);
+ printf (" %5u: 0x%08x", j, isym);
+ if (isym & BFD_MACH_O_INDIRECT_SYMBOL_LOCAL)
+ printf (" LOCAL");
+ if (isym & BFD_MACH_O_INDIRECT_SYMBOL_ABS)
+ printf (" ABSOLUTE");
+ if (symtab && symtab->symbols
+ && isym < symtab->nsyms
+ && symtab->symbols[isym].symbol.name)
+ printf (" %s", symtab->symbols[isym].symbol.name);
+ printf ("\n");
+ addr += entry_size;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ if (dysymtab->nextrefsyms > 0)
+ {
+ bfd_mach_o_symtab_command *symtab = mdata->symtab;
+
+ printf (" external reference table: (symbol flags)\n");
+ for (i = 0; i < dysymtab->nextrefsyms; i++)
+ {
+ bfd_mach_o_dylib_reference *ref = &dysymtab->ext_refs[i];
+
+ printf (" %4u: %5lu 0x%02lx", i, ref->isym, ref->flags);
+ if (symtab && symtab->symbols
+ && ref->isym < symtab->nsyms
+ && symtab->symbols[ref->isym].symbol.name)
+ printf (" %s", symtab->symbols[ref->isym].symbol.name);
+ printf ("\n");
+ }
+ }
+
+}
+
+static void
+dump_dyld_info (bfd *abfd ATTRIBUTE_UNUSED, bfd_mach_o_load_command *cmd)
+{
+ bfd_mach_o_dyld_info_command *info = &cmd->command.dyld_info;
+
+ printf (" rebase: off: 0x%08x size: %-8u\n",
+ info->rebase_off, info->rebase_size);
+ printf (" bind: off: 0x%08x size: %-8u\n",
+ info->bind_off, info->bind_size);
+ printf (" weak bind: off: 0x%08x size: %-8u\n",
+ info->weak_bind_off, info->weak_bind_size);
+ printf (" lazy bind: off: 0x%08x size: %-8u\n",
+ info->lazy_bind_off, info->lazy_bind_size);
+ printf (" export: off: 0x%08x size: %-8u\n",
+ info->export_off, info->export_size);
+}
+
+static void
+dump_thread (bfd *abfd, bfd_mach_o_load_command *cmd)
+{
+ bfd_mach_o_thread_command *thread = &cmd->command.thread;
+ unsigned int j;
+ bfd_mach_o_backend_data *bed = bfd_mach_o_get_backend_data (abfd);
+ bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
+
+ printf (" nflavours: %lu\n", thread->nflavours);
+ for (j = 0; j < thread->nflavours; j++)
+ {
+ bfd_mach_o_thread_flavour *flavour = &thread->flavours[j];
+ const bfd_mach_o_xlat_name *name_table;
+
+ printf (" %2u: flavour: 0x%08lx", j, flavour->flavour);
+ switch (mdata->header.cputype)
+ {
+ case BFD_MACH_O_CPU_TYPE_I386:
+ case BFD_MACH_O_CPU_TYPE_X86_64:
+ name_table = bfd_mach_o_thread_x86_name;
+ break;
+ default:
+ name_table = NULL;
+ break;
+ }
+ if (name_table != NULL)
+ printf (": %s", bfd_mach_o_get_name (name_table, flavour->flavour));
+ putchar ('\n');
+
+ printf (" offset: 0x%08lx size: 0x%08lx\n",
+ flavour->offset, flavour->size);
+ if (bed->_bfd_mach_o_print_thread)
+ {
+ char *buf = xmalloc (flavour->size);
+
+ if (bfd_seek (abfd, flavour->offset, SEEK_SET) == 0
+ && bfd_bread (buf, flavour->size, abfd) == flavour->size)
+ (*bed->_bfd_mach_o_print_thread)(abfd, flavour, stdout, buf);
+
+ free (buf);
+ }
+ }
+}
+
+static const bfd_mach_o_xlat_name bfd_mach_o_cs_magic[] =
+{
+ { "embedded signature", BFD_MACH_O_CS_MAGIC_EMBEDDED_SIGNATURE },
+ { "requirement", BFD_MACH_O_CS_MAGIC_REQUIREMENT },
+ { "requirements", BFD_MACH_O_CS_MAGIC_REQUIREMENTS },
+ { "code directory", BFD_MACH_O_CS_MAGIC_CODEDIRECTORY },
+ { "embedded entitlements", BFD_MACH_O_CS_MAGIC_EMBEDDED_ENTITLEMENTS },
+ { "blob wrapper", BFD_MACH_O_CS_MAGIC_BLOB_WRAPPER },
+ { NULL, 0 }
+};
+
+static const bfd_mach_o_xlat_name bfd_mach_o_cs_hash_type[] =
+{
+ { "no-hash", BFD_MACH_O_CS_NO_HASH },
+ { "sha1", BFD_MACH_O_CS_HASH_SHA1 },
+ { "sha256", BFD_MACH_O_CS_HASH_SHA256 },
+ { "skein 160", BFD_MACH_O_CS_HASH_PRESTANDARD_SKEIN_160x256 },
+ { "skein 256", BFD_MACH_O_CS_HASH_PRESTANDARD_SKEIN_256x512 },
+ { NULL, 0 }
+};
+
+static unsigned int
+dump_code_signature_blob (bfd *abfd, const unsigned char *buf, unsigned int len);
+
+static void
+dump_code_signature_superblob (bfd *abfd ATTRIBUTE_UNUSED,
+ const unsigned char *buf, unsigned int len)
+{
+ unsigned int count;
+ unsigned int i;
+
+ if (len < 12)
+ {
+ printf (_(" [bad block length]\n"));
+ return;
+ }
+ count = bfd_getb32 (buf + 8);
+ printf (_(" %u index entries:\n"), count);
+ if (len < 12 + 8 * count)
+ {
+ printf (_(" [bad block length]\n"));
+ return;
+ }
+ for (i = 0; i < count; i++)
+ {
+ unsigned int type;
+ unsigned int off;
+
+ type = bfd_getb32 (buf + 12 + 8 * i);
+ off = bfd_getb32 (buf + 12 + 8 * i + 4);
+ printf (_(" index entry %u: type: %08x, offset: %08x\n"),
+ i, type, off);
+
+ dump_code_signature_blob (abfd, buf + off, len - off);
+ }
+}
+
+static void
+swap_code_codedirectory_v1_in
+ (const struct mach_o_codesign_codedirectory_external_v1 *src,
+ struct mach_o_codesign_codedirectory_v1 *dst)
+{
+ dst->version = bfd_getb32 (src->version);
+ dst->flags = bfd_getb32 (src->flags);
+ dst->hash_offset = bfd_getb32 (src->hash_offset);
+ dst->ident_offset = bfd_getb32 (src->ident_offset);
+ dst->nbr_special_slots = bfd_getb32 (src->nbr_special_slots);
+ dst->nbr_code_slots = bfd_getb32 (src->nbr_code_slots);
+ dst->code_limit = bfd_getb32 (src->code_limit);
+ dst->hash_size = src->hash_size[0];
+ dst->hash_type = src->hash_type[0];
+ dst->spare1 = src->spare1[0];
+ dst->page_size = src->page_size[0];
+ dst->spare2 = bfd_getb32 (src->spare2);
+}
+
+static void
+hexdump (unsigned int start, unsigned int len,
+ const unsigned char *buf)
+{
+ unsigned int i, j;
+
+ for (i = 0; i < len; i += 16)
+ {
+ printf ("%08x:", start + i);
+ for (j = 0; j < 16; j++)
+ {
+ fputc (j == 8 ? '-' : ' ', stdout);
+ if (i + j < len)
+ printf ("%02x", buf[i + j]);
+ else
+ fputs (" ", stdout);
+ }
+ fputc (' ', stdout);
+ for (j = 0; j < 16; j++)
+ {
+ if (i + j < len)
+ fputc (ISPRINT (buf[i + j]) ? buf[i + j] : '.', stdout);
+ else
+ fputc (' ', stdout);
+ }
+ fputc ('\n', stdout);
+ }
+}
+
+static void
+dump_code_signature_codedirectory (bfd *abfd ATTRIBUTE_UNUSED,
+ const unsigned char *buf, unsigned int len)
+{
+ struct mach_o_codesign_codedirectory_v1 cd;
+ const char *id;
+
+ if (len < sizeof (struct mach_o_codesign_codedirectory_external_v1))
+ {
+ printf (_(" [bad block length]\n"));
+ return;
+ }
+
+ swap_code_codedirectory_v1_in
+ ((const struct mach_o_codesign_codedirectory_external_v1 *) (buf + 8), &cd);
+
+ printf (_(" version: %08x\n"), cd.version);
+ printf (_(" flags: %08x\n"), cd.flags);
+ printf (_(" hash offset: %08x\n"), cd.hash_offset);
+ id = (const char *) buf + cd.ident_offset;
+ printf (_(" ident offset: %08x (- %08x)\n"),
+ cd.ident_offset, cd.ident_offset + (unsigned) strlen (id) + 1);
+ printf (_(" identity: %s\n"), id);
+ printf (_(" nbr special slots: %08x (at offset %08x)\n"),
+ cd.nbr_special_slots,
+ cd.hash_offset - cd.nbr_special_slots * cd.hash_size);
+ printf (_(" nbr code slots: %08x\n"), cd.nbr_code_slots);
+ printf (_(" code limit: %08x\n"), cd.code_limit);
+ printf (_(" hash size: %02x\n"), cd.hash_size);
+ printf (_(" hash type: %02x (%s)\n"),
+ cd.hash_type,
+ bfd_mach_o_get_name (bfd_mach_o_cs_hash_type, cd.hash_type));
+ printf (_(" spare1: %02x\n"), cd.spare1);
+ printf (_(" page size: %02x\n"), cd.page_size);
+ printf (_(" spare2: %08x\n"), cd.spare2);
+ if (cd.version >= 0x20100)
+ printf (_(" scatter offset: %08x\n"),
+ (unsigned) bfd_getb32 (buf + 44));
+}
+
+static unsigned int
+dump_code_signature_blob (bfd *abfd, const unsigned char *buf, unsigned int len)
+{
+ unsigned int magic;
+ unsigned int length;
+
+ if (len < 8)
+ {
+ printf (_(" [truncated block]\n"));
+ return 0;
+ }
+ magic = bfd_getb32 (buf);
+ length = bfd_getb32 (buf + 4);
+ if (magic == 0 || length == 0)
+ return 0;
+
+ printf (_(" magic : %08x (%s)\n"), magic,
+ bfd_mach_o_get_name (bfd_mach_o_cs_magic, magic));
+ printf (_(" length: %08x\n"), length);
+ if (length > len)
+ {
+ printf (_(" [bad block length]\n"));
+ return 0;
+ }
+
+ switch (magic)
+ {
+ case BFD_MACH_O_CS_MAGIC_EMBEDDED_SIGNATURE:
+ dump_code_signature_superblob (abfd, buf, length);
+ break;
+ case BFD_MACH_O_CS_MAGIC_CODEDIRECTORY:
+ dump_code_signature_codedirectory (abfd, buf, length);
+ break;
+ default:
+ hexdump (0, length - 8, buf + 8);
+ break;
+ }
+ return length;
+}
+
+static void
+dump_code_signature (bfd *abfd, bfd_mach_o_linkedit_command *cmd)
+{
+ unsigned char *buf = xmalloc (cmd->datasize);
+ unsigned int off;
+
+ if (bfd_seek (abfd, cmd->dataoff, SEEK_SET) != 0
+ || bfd_bread (buf, cmd->datasize, abfd) != cmd->datasize)
+ {
+ non_fatal (_("cannot read code signature data"));
+ free (buf);
+ return;
+ }
+ for (off = 0; off < cmd->datasize;)
+ {
+ unsigned int len;
+
+ len = dump_code_signature_blob (abfd, buf + off, cmd->datasize - off);
+
+ if (len == 0)
+ break;
+ off += len;
+ }
+ free (buf);
+}
+
+static void
+dump_segment_split_info (bfd *abfd, bfd_mach_o_linkedit_command *cmd)
+{
+ unsigned char *buf = xmalloc (cmd->datasize);
+ unsigned char *p;
+ unsigned int len;
+ bfd_vma addr = 0;
+
+ if (bfd_seek (abfd, cmd->dataoff, SEEK_SET) != 0
+ || bfd_bread (buf, cmd->datasize, abfd) != cmd->datasize)
+ {
+ non_fatal (_("cannot read segment split info"));
+ free (buf);
+ return;
+ }
+ if (buf[cmd->datasize - 1] != 0)
+ {
+ non_fatal (_("segment split info is not nul terminated"));
+ free (buf);
+ return;
+ }
+
+ switch (buf[0])
+ {
+ case 0:
+ printf (_(" 32 bit pointers:\n"));
+ break;
+ case 1:
+ printf (_(" 64 bit pointers:\n"));
+ break;
+ case 2:
+ printf (_(" PPC hi-16:\n"));
+ break;
+ default:
+ printf (_(" Unhandled location type %u\n"), buf[0]);
+ break;
+ }
+ for (p = buf + 1; *p != 0; p += len)
+ {
+ addr += read_unsigned_leb128 (abfd, p, &len);
+ fputs (" ", stdout);
+ bfd_printf_vma (abfd, addr);
+ putchar ('\n');
+ }
+ free (buf);
+}
+
+static void
+dump_load_command (bfd *abfd, bfd_mach_o_load_command *cmd,
+ bfd_boolean verbose)
+{
+ bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
+ const char *cmd_name;
+
+ cmd_name = bfd_mach_o_get_name_or_null
+ (bfd_mach_o_load_command_name, cmd->type);
+ printf ("Load command ");
+ if (cmd_name == NULL)
+ printf ("0x%02x:", cmd->type);
+ else
+ printf ("%s:", cmd_name);
+
+ switch (cmd->type)
+ {
+ case BFD_MACH_O_LC_SEGMENT:
+ case BFD_MACH_O_LC_SEGMENT_64:
+ dump_segment (abfd, cmd);
+ break;
+ case BFD_MACH_O_LC_UUID:
+ {
+ bfd_mach_o_uuid_command *uuid = &cmd->command.uuid;
+ unsigned int j;
+
+ for (j = 0; j < sizeof (uuid->uuid); j ++)
+ printf (" %02x", uuid->uuid[j]);
+ putchar ('\n');
+ }
+ break;
+ case BFD_MACH_O_LC_LOAD_DYLIB:
+ case BFD_MACH_O_LC_LOAD_WEAK_DYLIB:
+ case BFD_MACH_O_LC_REEXPORT_DYLIB:
+ case BFD_MACH_O_LC_ID_DYLIB:
+ case BFD_MACH_O_LC_LOAD_UPWARD_DYLIB:
+ {
+ bfd_mach_o_dylib_command *dylib = &cmd->command.dylib;
+ printf (" %s\n", dylib->name_str);
+ printf (" time stamp: 0x%08lx\n",
+ dylib->timestamp);
+ printf (" current version: 0x%08lx\n",
+ dylib->current_version);
+ printf (" comptibility version: 0x%08lx\n",
+ dylib->compatibility_version);
+ }
+ break;
+ case BFD_MACH_O_LC_LOAD_DYLINKER:
+ case BFD_MACH_O_LC_ID_DYLINKER:
+ printf (" %s\n", cmd->command.dylinker.name_str);
+ break;
+ case BFD_MACH_O_LC_SYMTAB:
+ {
+ bfd_mach_o_symtab_command *symtab = &cmd->command.symtab;
+ printf ("\n"
+ " symoff: 0x%08x nsyms: %8u (endoff: 0x%08x)\n",
+ symtab->symoff, symtab->nsyms,
+ symtab->symoff + symtab->nsyms
+ * (mdata->header.version == 2
+ ? BFD_MACH_O_NLIST_64_SIZE : BFD_MACH_O_NLIST_SIZE));
+ printf (" stroff: 0x%08x strsize: %8u (endoff: 0x%08x)\n",
+ symtab->stroff, symtab->strsize,
+ symtab->stroff + symtab->strsize);
+ break;
+ }
+ case BFD_MACH_O_LC_DYSYMTAB:
+ putchar ('\n');
+ dump_dysymtab (abfd, cmd, verbose);
+ break;
+ case BFD_MACH_O_LC_LOADFVMLIB:
+ case BFD_MACH_O_LC_IDFVMLIB:
+ {
+ bfd_mach_o_fvmlib_command *fvmlib = &cmd->command.fvmlib;
+ printf (" %s\n", fvmlib->name_str);
+ printf (" minor version: 0x%08x\n", fvmlib->minor_version);
+ printf (" header address: 0x%08x\n", fvmlib->header_addr);
+ }
+ break;
+ case BFD_MACH_O_LC_CODE_SIGNATURE:
+ case BFD_MACH_O_LC_SEGMENT_SPLIT_INFO:
+ case BFD_MACH_O_LC_FUNCTION_STARTS:
+ {
+ bfd_mach_o_linkedit_command *linkedit = &cmd->command.linkedit;
+ printf
+ ("\n"
+ " dataoff: 0x%08lx datasize: 0x%08lx (endoff: 0x%08lx)\n",
+ linkedit->dataoff, linkedit->datasize,
+ linkedit->dataoff + linkedit->datasize);
+
+ if (verbose && cmd->type == BFD_MACH_O_LC_CODE_SIGNATURE)
+ dump_code_signature (abfd, linkedit);
+ else if (verbose && cmd->type == BFD_MACH_O_LC_SEGMENT_SPLIT_INFO)
+ dump_segment_split_info (abfd, linkedit);
+ break;
+ }
+ case BFD_MACH_O_LC_SUB_FRAMEWORK:
+ case BFD_MACH_O_LC_SUB_UMBRELLA:
+ case BFD_MACH_O_LC_SUB_LIBRARY:
+ case BFD_MACH_O_LC_SUB_CLIENT:
+ case BFD_MACH_O_LC_RPATH:
+ {
+ bfd_mach_o_str_command *str = &cmd->command.str;
+ printf (" %s\n", str->str);
+ break;
+ }
+ case BFD_MACH_O_LC_THREAD:
+ case BFD_MACH_O_LC_UNIXTHREAD:
+ dump_thread (abfd, cmd);
+ break;
+ case BFD_MACH_O_LC_ENCRYPTION_INFO:
+ {
+ bfd_mach_o_encryption_info_command *cryp =
+ &cmd->command.encryption_info;
+ printf
+ ("\n"
+ " cryptoff: 0x%08x cryptsize: 0x%08x (endoff 0x%08x)"
+ " cryptid: %u\n",
+ cryp->cryptoff, cryp->cryptsize,
+ cryp->cryptoff + cryp->cryptsize,
+ cryp->cryptid);
+ }
+ break;
+ case BFD_MACH_O_LC_DYLD_INFO:
+ putchar ('\n');
+ dump_dyld_info (abfd, cmd);
+ break;
+ case BFD_MACH_O_LC_VERSION_MIN_MACOSX:
+ case BFD_MACH_O_LC_VERSION_MIN_IPHONEOS:
+ {
+ bfd_mach_o_version_min_command *ver = &cmd->command.version_min;
+
+ printf (" %u.%u.%u\n", ver->rel, ver->maj, ver->min);
+ }
+ break;
+ case BFD_MACH_O_LC_SOURCE_VERSION:
+ {
+ bfd_mach_o_source_version_command *version =
+ &cmd->command.source_version;
+ printf ("\n"
+ " version a.b.c.d.e: %u.%u.%u.%u.%u\n",
+ version->a, version->b, version->c, version->d, version->e);
+ break;
+ }
+ case BFD_MACH_O_LC_MAIN:
+ {
+ bfd_mach_o_main_command *entry = &cmd->command.main;
+ printf ("\n"
+ " entry offset: ");
+ printf_vma (entry->entryoff);
+ printf ("\n"
+ " stack size: ");
+ printf_vma (entry->stacksize);
+ printf ("\n");
+ break;
+ }
+ default:
+ putchar ('\n');
+ printf (" offset: 0x%08lx\n", (unsigned long)cmd->offset);
+ printf (" size: 0x%08lx\n", (unsigned long)cmd->len);
+ break;
+ }
+ putchar ('\n');
+}
+
+static void
+dump_load_commands (bfd *abfd, unsigned int cmd32, unsigned int cmd64)
+{
+ bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
+ unsigned int i;
+
+ for (i = 0; i < mdata->header.ncmds; i++)
+ {
+ bfd_mach_o_load_command *cmd = &mdata->commands[i];
+
+ if (cmd32 == 0)
+ dump_load_command (abfd, cmd, FALSE);
+ else if (cmd->type == cmd32 || cmd->type == cmd64)
+ dump_load_command (abfd, cmd, TRUE);
+ }
+}
+
+/* Dump ABFD (according to the options[] array). */
+
+static void
+mach_o_dump (bfd *abfd)
+{
+ if (options[OPT_HEADER].selected)
+ dump_header (abfd);
+ if (options[OPT_SECTION].selected)
+ dump_load_commands (abfd, BFD_MACH_O_LC_SEGMENT, BFD_MACH_O_LC_SEGMENT_64);
+ if (options[OPT_MAP].selected)
+ dump_section_map (abfd);
+ if (options[OPT_LOAD].selected)
+ dump_load_commands (abfd, 0, 0);
+ if (options[OPT_DYSYMTAB].selected)
+ dump_load_commands (abfd, BFD_MACH_O_LC_DYSYMTAB, 0);
+ if (options[OPT_CODESIGN].selected)
+ dump_load_commands (abfd, BFD_MACH_O_LC_CODE_SIGNATURE, 0);
+ if (options[OPT_SEG_SPLIT_INFO].selected)
+ dump_load_commands (abfd, BFD_MACH_O_LC_SEGMENT_SPLIT_INFO, 0);
+}
+
+/* Vector for Mach-O. */
+
+const struct objdump_private_desc objdump_private_desc_mach_o =
+ {
+ mach_o_help,
+ mach_o_filter,
+ mach_o_dump,
+ options
+ };
diff --git a/binutils-2.24/binutils/od-xcoff.c b/binutils-2.24/binutils/od-xcoff.c
new file mode 100644
index 00000000..223e192c
--- /dev/null
+++ b/binutils-2.24/binutils/od-xcoff.c
@@ -0,0 +1,1842 @@
+/* od-xcoff.c -- dump information about an xcoff object file.
+ Copyright 2011-2013 Free Software Foundation, Inc.
+ Written by Tristan Gingold, Adacore.
+
+ 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#include "sysdep.h"
+#include <stddef.h>
+#include <time.h>
+#include "safe-ctype.h"
+#include "bfd.h"
+#include "objdump.h"
+#include "bucomm.h"
+#include "bfdlink.h"
+/* Force the support of weak symbols. */
+#ifndef AIX_WEAK_SUPPORT
+#define AIX_WEAK_SUPPORT 1
+#endif
+#include "coff/internal.h"
+#include "coff/rs6000.h"
+#include "coff/xcoff.h"
+#include "libcoff.h"
+#include "libxcoff.h"
+
+/* Index of the options in the options[] array. */
+#define OPT_FILE_HEADER 0
+#define OPT_AOUT 1
+#define OPT_SECTIONS 2
+#define OPT_SYMS 3
+#define OPT_RELOCS 4
+#define OPT_LINENO 5
+#define OPT_LOADER 6
+#define OPT_EXCEPT 7
+#define OPT_TYPCHK 8
+#define OPT_TRACEBACK 9
+#define OPT_TOC 10
+#define OPT_LDINFO 11
+
+/* List of actions. */
+static struct objdump_private_option options[] =
+ {
+ { "header", 0 },
+ { "aout", 0 },
+ { "sections", 0 },
+ { "syms", 0 },
+ { "relocs", 0 },
+ { "lineno", 0 },
+ { "loader", 0 },
+ { "except", 0 },
+ { "typchk", 0 },
+ { "traceback", 0 },
+ { "toc", 0 },
+ { "ldinfo", 0 },
+ { NULL, 0 }
+ };
+
+/* Display help. */
+
+static void
+xcoff_help (FILE *stream)
+{
+ fprintf (stream, _("\
+For XCOFF files:\n\
+ header Display the file header\n\
+ aout Display the auxiliary header\n\
+ sections Display the section headers\n\
+ syms Display the symbols table\n\
+ relocs Display the relocation entries\n\
+ lineno Display the line number entries\n\
+ loader Display loader section\n\
+ except Display exception table\n\
+ typchk Display type-check section\n\
+ traceback Display traceback tags\n\
+ toc Display toc symbols\n\
+ ldinfo Display loader info in core files\n\
+"));
+}
+
+/* Return TRUE if ABFD is handled. */
+
+static int
+xcoff_filter (bfd *abfd)
+{
+ return bfd_get_flavour (abfd) == bfd_target_xcoff_flavour;
+}
+
+/* Translation entry type. The last entry must be {0, NULL}. */
+
+struct xlat_table {
+ unsigned int val;
+ const char *name;
+};
+
+/* Display the list of name (from TABLE) for FLAGS, using comma to separate
+ them. A name is displayed if FLAGS & VAL is not 0. */
+
+static void
+dump_flags (const struct xlat_table *table, unsigned int flags)
+{
+ unsigned int r = flags;
+ int first = 1;
+ const struct xlat_table *t;
+
+ for (t = table; t->name; t++)
+ if ((flags & t->val) != 0)
+ {
+ r &= ~t->val;
+
+ if (first)
+ first = 0;
+ else
+ putchar (',');
+ fputs (t->name, stdout);
+ }
+
+ /* Not decoded flags. */
+ if (r != 0)
+ {
+ if (!first)
+ putchar (',');
+ printf ("0x%x", r);
+ }
+}
+
+/* Display the name corresponding to VAL from TABLE, using at most
+ MAXLEN char (possibly passed with spaces). */
+
+static void
+dump_value (const struct xlat_table *table, unsigned int val, int maxlen)
+{
+ const struct xlat_table *t;
+
+ for (t = table; t->name; t++)
+ if (t->val == val)
+ {
+ printf ("%-*s", maxlen, t->name);
+ return;
+ }
+ printf ("(%*x)", maxlen - 2, val);
+}
+
+/* Names of f_flags. */
+static const struct xlat_table f_flag_xlat[] =
+ {
+ { F_RELFLG, "no-rel" },
+ { F_EXEC, "exec" },
+ { F_LNNO, "lineno" },
+ { F_LSYMS, "lsyms" },
+
+ { F_FDPR_PROF, "fdpr-prof" },
+ { F_FDPR_OPTI, "fdpr-opti" },
+ { F_DSA, "dsa" },
+
+ { F_VARPG, "varprg" },
+
+ { F_DYNLOAD, "dynload" },
+ { F_SHROBJ, "shrobj" },
+ { F_NONEXEC, "nonexec" },
+
+ { 0, NULL }
+ };
+
+/* Names of s_flags. */
+static const struct xlat_table s_flag_xlat[] =
+ {
+ { STYP_PAD, "pad" },
+ { STYP_DWARF, "dwarf" },
+ { STYP_TEXT, "text" },
+ { STYP_DATA, "data" },
+ { STYP_BSS, "bss" },
+
+ { STYP_EXCEPT, "except" },
+ { STYP_INFO, "info" },
+ { STYP_TDATA, "tdata" },
+ { STYP_TBSS, "tbss" },
+
+ { STYP_LOADER, "loader" },
+ { STYP_DEBUG, "debug" },
+ { STYP_TYPCHK, "typchk" },
+ { STYP_OVRFLO, "ovrflo" },
+ { 0, NULL }
+ };
+
+/* Names of storage class. */
+static const struct xlat_table sc_xlat[] =
+ {
+#define SC_ENTRY(X) { C_##X, #X }
+ SC_ENTRY(NULL),
+ SC_ENTRY(AUTO),
+ SC_ENTRY(EXT),
+ SC_ENTRY(STAT),
+ SC_ENTRY(REG),
+ SC_ENTRY(EXTDEF),
+ SC_ENTRY(LABEL),
+ SC_ENTRY(ULABEL),
+ SC_ENTRY(MOS),
+ SC_ENTRY(ARG),
+ /* SC_ENTRY(STRARG), */
+ SC_ENTRY(MOU),
+ SC_ENTRY(UNTAG),
+ SC_ENTRY(TPDEF),
+ SC_ENTRY(USTATIC),
+ SC_ENTRY(ENTAG),
+ SC_ENTRY(MOE),
+ SC_ENTRY(REGPARM),
+ SC_ENTRY(FIELD),
+ SC_ENTRY(BLOCK),
+ SC_ENTRY(FCN),
+ SC_ENTRY(EOS),
+ SC_ENTRY(FILE),
+ SC_ENTRY(LINE),
+ SC_ENTRY(ALIAS),
+ SC_ENTRY(HIDDEN),
+ SC_ENTRY(HIDEXT),
+ SC_ENTRY(BINCL),
+ SC_ENTRY(EINCL),
+ SC_ENTRY(INFO),
+ SC_ENTRY(WEAKEXT),
+ SC_ENTRY(DWARF),
+
+ /* Stabs. */
+ SC_ENTRY (GSYM),
+ SC_ENTRY (LSYM),
+ SC_ENTRY (PSYM),
+ SC_ENTRY (RSYM),
+ SC_ENTRY (RPSYM),
+ SC_ENTRY (STSYM),
+ SC_ENTRY (TCSYM),
+ SC_ENTRY (BCOMM),
+ SC_ENTRY (ECOML),
+ SC_ENTRY (ECOMM),
+ SC_ENTRY (DECL),
+ SC_ENTRY (ENTRY),
+ SC_ENTRY (FUN),
+ SC_ENTRY (BSTAT),
+ SC_ENTRY (ESTAT),
+
+ { 0, NULL }
+#undef SC_ENTRY
+ };
+
+/* Names for symbol type. */
+static const struct xlat_table smtyp_xlat[] =
+ {
+ { XTY_ER, "ER" },
+ { XTY_SD, "SD" },
+ { XTY_LD, "LD" },
+ { XTY_CM, "CM" },
+ { XTY_EM, "EM" },
+ { XTY_US, "US" },
+ { 0, NULL }
+ };
+
+/* Names for storage-mapping class. */
+static const struct xlat_table smclas_xlat[] =
+ {
+#define SMCLAS_ENTRY(X) { XMC_##X, #X }
+ SMCLAS_ENTRY (PR),
+ SMCLAS_ENTRY (RO),
+ SMCLAS_ENTRY (DB),
+ SMCLAS_ENTRY (TC),
+ SMCLAS_ENTRY (UA),
+ SMCLAS_ENTRY (RW),
+ SMCLAS_ENTRY (GL),
+ SMCLAS_ENTRY (XO),
+ SMCLAS_ENTRY (SV),
+ SMCLAS_ENTRY (BS),
+ SMCLAS_ENTRY (DS),
+ SMCLAS_ENTRY (UC),
+ SMCLAS_ENTRY (TI),
+ SMCLAS_ENTRY (TB),
+ SMCLAS_ENTRY (TC0),
+ SMCLAS_ENTRY (TD),
+ SMCLAS_ENTRY (SV64),
+ SMCLAS_ENTRY (SV3264),
+ { 0, NULL }
+#undef SMCLAS_ENTRY
+ };
+
+/* Names for relocation type. */
+static const struct xlat_table rtype_xlat[] =
+ {
+#define RTYPE_ENTRY(X) { R_##X, #X }
+ RTYPE_ENTRY (POS),
+ RTYPE_ENTRY (NEG),
+ RTYPE_ENTRY (REL),
+ RTYPE_ENTRY (TOC),
+ RTYPE_ENTRY (RTB),
+ RTYPE_ENTRY (GL),
+ RTYPE_ENTRY (TCL),
+ RTYPE_ENTRY (BA),
+ RTYPE_ENTRY (BR),
+ RTYPE_ENTRY (RL),
+ RTYPE_ENTRY (RLA),
+ RTYPE_ENTRY (REF),
+ RTYPE_ENTRY (TRL),
+ RTYPE_ENTRY (TRLA),
+ RTYPE_ENTRY (RRTBI),
+ RTYPE_ENTRY (RRTBA),
+ RTYPE_ENTRY (CAI),
+ RTYPE_ENTRY (CREL),
+ RTYPE_ENTRY (RBA),
+ RTYPE_ENTRY (RBAC),
+ RTYPE_ENTRY (RBR),
+ RTYPE_ENTRY (RBRC),
+ RTYPE_ENTRY (TLS),
+ RTYPE_ENTRY (TLS_IE),
+ RTYPE_ENTRY (TLS_LD),
+ RTYPE_ENTRY (TLS_LE),
+ RTYPE_ENTRY (TLSM),
+ RTYPE_ENTRY (TLSML),
+ RTYPE_ENTRY (TOCU),
+ RTYPE_ENTRY (TOCL),
+ { 0, NULL }
+ };
+
+/* Simplified section header. */
+struct xcoff32_section
+{
+ /* NUL terminated name. */
+ char name[9];
+
+ /* Section flags. */
+ unsigned int flags;
+
+ /* Offsets in file. */
+ ufile_ptr scnptr;
+ ufile_ptr relptr;
+ ufile_ptr lnnoptr;
+
+ /* Number of relocs and line numbers. */
+ unsigned int nreloc;
+ unsigned int nlnno;
+};
+
+/* Simplified symbol. */
+
+union xcoff32_symbol
+{
+ union external_auxent aux;
+
+ struct sym
+ {
+ /* Pointer to the NUL-terminated name. */
+ char *name;
+
+ /* XCOFF symbol fields. */
+ unsigned int val;
+ unsigned short scnum;
+ unsigned short ntype;
+ unsigned char sclass;
+ unsigned char numaux;
+
+ /* Buffer in case the name is local. */
+ union
+ {
+ char name[9];
+ unsigned int off;
+ } raw;
+ } sym;
+};
+
+/* Important fields to dump the file. */
+
+struct xcoff_dump
+{
+ /* From file header. */
+ unsigned short nscns;
+ unsigned int symptr;
+ unsigned int nsyms;
+ unsigned short opthdr;
+
+ /* Sections. */
+ struct xcoff32_section *sects;
+
+ /* Symbols. */
+ union xcoff32_symbol *syms;
+ char *strings;
+ unsigned int strings_size;
+};
+
+/* Print a symbol (if possible). */
+
+static void
+xcoff32_print_symbol (struct xcoff_dump *data, unsigned int symndx)
+{
+ if (data->syms != NULL
+ && symndx < data->nsyms
+ && data->syms[symndx].sym.name != NULL)
+ printf ("%s", data->syms[symndx].sym.name);
+ else
+ printf ("%u", symndx);
+}
+
+/* Dump the file header. */
+
+static void
+dump_xcoff32_file_header (bfd *abfd, struct external_filehdr *fhdr,
+ struct xcoff_dump *data)
+{
+ unsigned int timdat = bfd_h_get_32 (abfd, fhdr->f_timdat);
+ unsigned short flags = bfd_h_get_16 (abfd, fhdr->f_flags);
+
+ printf (_(" nbr sections: %d\n"), data->nscns);
+ printf (_(" time and date: 0x%08x - "), timdat);
+ if (timdat == 0)
+ printf (_("not set\n"));
+ else
+ {
+ /* Not correct on all platforms, but works on unix. */
+ time_t t = timdat;
+ fputs (ctime (&t), stdout);
+ }
+ printf (_(" symbols off: 0x%08x\n"), data->symptr);
+ printf (_(" nbr symbols: %d\n"), data->nsyms);
+ printf (_(" opt hdr sz: %d\n"), data->opthdr);
+ printf (_(" flags: 0x%04x "), flags);
+ dump_flags (f_flag_xlat, flags);
+ putchar ('\n');
+}
+
+/* Dump the a.out header. */
+
+static void
+dump_xcoff32_aout_header (bfd *abfd, struct xcoff_dump *data)
+{
+ AOUTHDR auxhdr;
+ unsigned short magic;
+ unsigned int sz = data->opthdr;
+
+ printf (_("Auxiliary header:\n"));
+ if (data->opthdr == 0)
+ {
+ printf (_(" No aux header\n"));
+ return;
+ }
+ if (data->opthdr > sizeof (auxhdr))
+ {
+ printf (_("warning: optional header size too large (> %d)\n"),
+ (int)sizeof (auxhdr));
+ sz = sizeof (auxhdr);
+ }
+ if (bfd_bread (&auxhdr, sz, abfd) != sz)
+ {
+ non_fatal (_("cannot read auxhdr"));
+ return;
+ }
+
+ magic = bfd_h_get_16 (abfd, auxhdr.magic);
+ /* We don't translate these strings as they are fields name. */
+ printf (" o_mflag (magic): 0x%04x 0%04o\n", magic, magic);
+ printf (" o_vstamp: 0x%04x\n",
+ (unsigned short)bfd_h_get_16 (abfd, auxhdr.vstamp));
+ printf (" o_tsize: 0x%08x\n",
+ (unsigned int)bfd_h_get_32 (abfd, auxhdr.tsize));
+ printf (" o_dsize: 0x%08x\n",
+ (unsigned int)bfd_h_get_32 (abfd, auxhdr.dsize));
+ printf (" o_entry: 0x%08x\n",
+ (unsigned int)bfd_h_get_32 (abfd, auxhdr.entry));
+ printf (" o_text_start: 0x%08x\n",
+ (unsigned int)bfd_h_get_32 (abfd, auxhdr.text_start));
+ printf (" o_data_start: 0x%08x\n",
+ (unsigned int)bfd_h_get_32 (abfd, auxhdr.data_start));
+ if (sz == offsetof (AOUTHDR, o_toc))
+ return;
+ printf (" o_toc: 0x%08x\n",
+ (unsigned int)bfd_h_get_32 (abfd, auxhdr.o_toc));
+ printf (" o_snentry: 0x%04x\n",
+ (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_snentry));
+ printf (" o_sntext: 0x%04x\n",
+ (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_sntext));
+ printf (" o_sndata: 0x%04x\n",
+ (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_sndata));
+ printf (" o_sntoc: 0x%04x\n",
+ (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_sntoc));
+ printf (" o_snloader: 0x%04x\n",
+ (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_snloader));
+ printf (" o_snbss: 0x%04x\n",
+ (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_snbss));
+ printf (" o_algntext: %u\n",
+ (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_algntext));
+ printf (" o_algndata: %u\n",
+ (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_algndata));
+ printf (" o_modtype: 0x%04x",
+ (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_modtype));
+ if (ISPRINT (auxhdr.o_modtype[0]) && ISPRINT (auxhdr.o_modtype[1]))
+ printf (" (%c%c)", auxhdr.o_modtype[0], auxhdr.o_modtype[1]);
+ putchar ('\n');
+ printf (" o_cputype: 0x%04x\n",
+ (unsigned int)bfd_h_get_16 (abfd, auxhdr.o_cputype));
+ printf (" o_maxstack: 0x%08x\n",
+ (unsigned int)bfd_h_get_32 (abfd, auxhdr.o_maxstack));
+ printf (" o_maxdata: 0x%08x\n",
+ (unsigned int)bfd_h_get_32 (abfd, auxhdr.o_maxdata));
+#if 0
+ printf (" o_debugger: 0x%08x\n",
+ (unsigned int)bfd_h_get_32 (abfd, auxhdr.o_debugger));
+#endif
+}
+
+/* Dump the sections header. */
+
+static void
+dump_xcoff32_sections_header (bfd *abfd, struct xcoff_dump *data)
+{
+ unsigned int i;
+ unsigned int off;
+
+ off = sizeof (struct external_filehdr) + data->opthdr;
+ printf (_("Section headers (at %u+%u=0x%08x to 0x%08x):\n"),
+ (unsigned int)sizeof (struct external_filehdr), data->opthdr, off,
+ off + (unsigned int)sizeof (struct external_scnhdr) * data->nscns);
+ if (data->nscns == 0)
+ {
+ printf (_(" No section header\n"));
+ return;
+ }
+ if (bfd_seek (abfd, off, SEEK_SET) != 0)
+ {
+ non_fatal (_("cannot read section header"));
+ return;
+ }
+ /* We don't translate this string as it consists in fields name. */
+ printf (" # Name paddr vaddr size scnptr relptr lnnoptr nrel nlnno\n");
+ for (i = 0; i < data->nscns; i++)
+ {
+ struct external_scnhdr scn;
+ unsigned int flags;
+
+ if (bfd_bread (&scn, sizeof (scn), abfd) != sizeof (scn))
+ {
+ non_fatal (_("cannot read section header"));
+ return;
+ }
+ flags = bfd_h_get_32 (abfd, scn.s_flags);
+ printf ("%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n",
+ i + 1, scn.s_name,
+ (unsigned int)bfd_h_get_32 (abfd, scn.s_paddr),
+ (unsigned int)bfd_h_get_32 (abfd, scn.s_vaddr),
+ (unsigned int)bfd_h_get_32 (abfd, scn.s_size),
+ (unsigned int)bfd_h_get_32 (abfd, scn.s_scnptr),
+ (unsigned int)bfd_h_get_32 (abfd, scn.s_relptr),
+ (unsigned int)bfd_h_get_32 (abfd, scn.s_lnnoptr),
+ (unsigned int)bfd_h_get_16 (abfd, scn.s_nreloc),
+ (unsigned int)bfd_h_get_16 (abfd, scn.s_nlnno));
+ printf (_(" Flags: %08x "), flags);
+
+ if (~flags == 0)
+ {
+ /* Stripped executable ? */
+ putchar ('\n');
+ }
+ else if (flags & STYP_OVRFLO)
+ printf (_("overflow - nreloc: %u, nlnno: %u\n"),
+ (unsigned int)bfd_h_get_32 (abfd, scn.s_paddr),
+ (unsigned int)bfd_h_get_32 (abfd, scn.s_vaddr));
+ else
+ {
+ dump_flags (s_flag_xlat, flags);
+ putchar ('\n');
+ }
+ }
+}
+
+/* Read section table. */
+
+static void
+xcoff32_read_sections (bfd *abfd, struct xcoff_dump *data)
+{
+ int i;
+
+ if (bfd_seek (abfd, sizeof (struct external_filehdr) + data->opthdr,
+ SEEK_SET) != 0)
+ {
+ non_fatal (_("cannot read section headers"));
+ return;
+ }
+
+ data->sects = xmalloc (data->nscns * sizeof (struct xcoff32_section));
+ for (i = 0; i < data->nscns; i++)
+ {
+ struct external_scnhdr scn;
+ struct xcoff32_section *s = &data->sects[i];
+
+ if (bfd_bread (&scn, sizeof (scn), abfd) != sizeof (scn))
+ {
+ non_fatal (_("cannot read section header"));
+ free (data->sects);
+ data->sects = NULL;
+ return;
+ }
+ memcpy (s->name, scn.s_name, 8);
+ s->name[8] = 0;
+ s->flags = bfd_h_get_32 (abfd, scn.s_flags);
+
+ s->scnptr = bfd_h_get_32 (abfd, scn.s_scnptr);
+ s->relptr = bfd_h_get_32 (abfd, scn.s_relptr);
+ s->lnnoptr = bfd_h_get_32 (abfd, scn.s_lnnoptr);
+
+ s->nreloc = bfd_h_get_16 (abfd, scn.s_nreloc);
+ s->nlnno = bfd_h_get_16 (abfd, scn.s_nlnno);
+
+ if (s->flags == STYP_OVRFLO)
+ {
+ if (s->nreloc > 0 && s->nreloc <= data->nscns)
+ data->sects[s->nreloc - 1].nreloc =
+ bfd_h_get_32 (abfd, scn.s_paddr);
+ if (s->nlnno > 0 && s->nlnno <= data->nscns)
+ data->sects[s->nlnno - 1].nlnno =
+ bfd_h_get_32 (abfd, scn.s_vaddr);
+ }
+ }
+}
+
+/* Read symbols. */
+
+static void
+xcoff32_read_symbols (bfd *abfd, struct xcoff_dump *data)
+{
+ unsigned int i;
+ char stsz_arr[4];
+ unsigned int stptr;
+
+ if (data->nsyms == 0)
+ return;
+
+ stptr = data->symptr
+ + data->nsyms * (unsigned)sizeof (struct external_syment);
+
+ /* Read string table. */
+ if (bfd_seek (abfd, stptr, SEEK_SET) != 0
+ || bfd_bread (&stsz_arr, sizeof (stsz_arr), abfd) != sizeof (stsz_arr))
+ {
+ non_fatal (_("cannot read strings table length"));
+ data->strings_size = 0;
+ }
+ else
+ {
+ data->strings_size = bfd_h_get_32 (abfd, stsz_arr);
+ if (data->strings_size > sizeof (stsz_arr))
+ {
+ unsigned int remsz = data->strings_size - sizeof (stsz_arr);
+
+ data->strings = xmalloc (data->strings_size);
+
+ memcpy (data->strings, stsz_arr, sizeof (stsz_arr));
+ if (bfd_bread (data->strings + sizeof (stsz_arr), remsz, abfd)
+ != remsz)
+ {
+ non_fatal (_("cannot read strings table"));
+ goto clean;
+ }
+ }
+ }
+
+ if (bfd_seek (abfd, data->symptr, SEEK_SET) != 0)
+ {
+ non_fatal (_("cannot read symbol table"));
+ goto clean;
+ }
+
+ data->syms = (union xcoff32_symbol *)
+ xmalloc (data->nsyms * sizeof (union xcoff32_symbol));
+
+ for (i = 0; i < data->nsyms; i++)
+ {
+ struct external_syment sym;
+ int j;
+ union xcoff32_symbol *s = &data->syms[i];
+
+ if (bfd_bread (&sym, sizeof (sym), abfd) != sizeof (sym))
+ {
+ non_fatal (_("cannot read symbol entry"));
+ goto clean;
+ }
+
+ s->sym.val = bfd_h_get_32 (abfd, sym.e_value);
+ s->sym.scnum = bfd_h_get_16 (abfd, sym.e_scnum);
+ s->sym.ntype = bfd_h_get_16 (abfd, sym.e_type);
+ s->sym.sclass = bfd_h_get_8 (abfd, sym.e_sclass);
+ s->sym.numaux = bfd_h_get_8 (abfd, sym.e_numaux);
+
+ if (sym.e.e_name[0])
+ {
+ memcpy (s->sym.raw.name, sym.e.e_name, sizeof (sym.e.e_name));
+ s->sym.raw.name[8] = 0;
+ s->sym.name = s->sym.raw.name;
+ }
+ else
+ {
+ unsigned int soff = bfd_h_get_32 (abfd, sym.e.e.e_offset);
+
+ if ((s->sym.sclass & DBXMASK) == 0 && soff < data->strings_size)
+ s->sym.name = data->strings + soff;
+ else
+ {
+ s->sym.name = NULL;
+ s->sym.raw.off = soff;
+ }
+ }
+
+ for (j = 0; j < s->sym.numaux; j++, i++)
+ {
+ if (bfd_bread (&s[j + 1].aux,
+ sizeof (union external_auxent), abfd)
+ != sizeof (union external_auxent))
+ {
+ non_fatal (_("cannot read symbol aux entry"));
+ goto clean;
+ }
+ }
+ }
+ return;
+ clean:
+ free (data->syms);
+ data->syms = NULL;
+ free (data->strings);
+ data->strings = NULL;
+}
+
+/* Dump xcoff symbols. */
+
+static void
+dump_xcoff32_symbols (bfd *abfd, struct xcoff_dump *data)
+{
+ unsigned int i;
+ asection *debugsec;
+ char *debug = NULL;
+
+ printf (_("Symbols table (strtable at 0x%08x)"),
+ data->symptr
+ + data->nsyms * (unsigned)sizeof (struct external_syment));
+ if (data->nsyms == 0 || data->syms == NULL)
+ {
+ printf (_(":\n No symbols\n"));
+ return;
+ }
+
+ /* Read strings table. */
+ if (data->strings_size == 0)
+ printf (_(" (no strings):\n"));
+ else
+ printf (_(" (strings size: %08x):\n"), data->strings_size);
+
+ /* Read debug section. */
+ debugsec = bfd_get_section_by_name (abfd, ".debug");
+ if (debugsec != NULL)
+ {
+ bfd_size_type size;
+
+ size = bfd_get_section_size (debugsec);
+ debug = (char *) xmalloc (size);
+ bfd_get_section_contents (abfd, debugsec, debug, 0, size);
+ }
+
+ /* Translators: 'sc' is for storage class, 'off' for offset. */
+ printf (_(" # sc value section type aux name/off\n"));
+ for (i = 0; i < data->nsyms; i++)
+ {
+ union xcoff32_symbol *s = &data->syms[i];
+ int j;
+
+ printf ("%3u ", i);
+ dump_value (sc_xlat, s->sym.sclass, 10);
+ printf (" %08x ", s->sym.val);
+ if (s->sym.scnum > 0 && s->sym.scnum <= data->nscns)
+ {
+ if (data->sects != NULL)
+ printf ("%-8s", data->sects[s->sym.scnum - 1].name);
+ else
+ printf ("%-8u", s->sym.scnum);
+ }
+ else
+ switch ((signed short)s->sym.scnum)
+ {
+ case N_DEBUG:
+ printf ("N_DEBUG ");
+ break;
+ case N_ABS:
+ printf ("N_ABS ");
+ break;
+ case N_UNDEF:
+ printf ("N_UNDEF ");
+ break;
+ default:
+ printf ("(%04x) ", s->sym.scnum);
+ }
+ printf (" %04x %3u ", s->sym.ntype, s->sym.numaux);
+ if (s->sym.name != NULL)
+ printf ("%s", s->sym.name);
+ else
+ {
+ if ((s->sym.sclass & DBXMASK) != 0 && debug != NULL)
+ printf ("%s", debug + s->sym.raw.off);
+ else
+ printf ("%08x", s->sym.raw.off);
+ }
+ putchar ('\n');
+
+ for (j = 0; j < s->sym.numaux; j++, i++)
+ {
+ union external_auxent *aux = &s[j + 1].aux;
+
+ printf (" %3u ", i + 1);
+ switch (s->sym.sclass)
+ {
+ case C_STAT:
+ /* Section length, number of relocs and line number. */
+ printf (_(" scnlen: %08x nreloc: %-6u nlinno: %-6u\n"),
+ (unsigned)bfd_h_get_32 (abfd, aux->x_scn.x_scnlen),
+ (unsigned)bfd_h_get_16 (abfd, aux->x_scn.x_nreloc),
+ (unsigned)bfd_h_get_16 (abfd, aux->x_scn.x_nlinno));
+ break;
+ case C_DWARF:
+ /* Section length and number of relocs. */
+ printf (_(" scnlen: %08x nreloc: %-6u\n"),
+ (unsigned)bfd_h_get_32 (abfd, aux->x_scn.x_scnlen),
+ (unsigned)bfd_h_get_16 (abfd, aux->x_scn.x_nreloc));
+ break;
+ case C_EXT:
+ case C_WEAKEXT:
+ case C_HIDEXT:
+ if (j == 0 && s->sym.numaux > 1)
+ {
+ /* Function aux entry (Do not translate). */
+ printf (" exptr: %08x fsize: %08x lnnoptr: %08x endndx: %u\n",
+ (unsigned)bfd_h_get_32 (abfd, aux->x_sym.x_tagndx),
+ (unsigned)bfd_h_get_32
+ (abfd, aux->x_sym.x_misc.x_fsize),
+ (unsigned)bfd_h_get_32
+ (abfd, aux->x_sym.x_fcnary.x_fcn.x_lnnoptr),
+ (unsigned)bfd_h_get_32
+ (abfd, aux->x_sym.x_fcnary.x_fcn.x_endndx));
+ }
+ else if (j == 1 || (j == 0 && s->sym.numaux == 1))
+ {
+ /* csect aux entry. */
+ unsigned char smtyp;
+ unsigned int scnlen;
+
+ smtyp = bfd_h_get_8 (abfd, aux->x_csect.x_smtyp);
+ scnlen = bfd_h_get_32 (abfd, aux->x_csect.x_scnlen);
+
+ if (smtyp == XTY_LD)
+ printf (" scnsym: %-8u", scnlen);
+ else
+ printf (" scnlen: %08x", scnlen);
+ printf (" h: parm=%08x sn=%04x al: 2**%u",
+ (unsigned)bfd_h_get_32 (abfd, aux->x_csect.x_parmhash),
+ (unsigned)bfd_h_get_16 (abfd, aux->x_csect.x_snhash),
+ SMTYP_ALIGN (smtyp));
+ printf (" typ: ");
+ dump_value (smtyp_xlat, SMTYP_SMTYP (smtyp), 2);
+ printf (" cl: ");
+ dump_value
+ (smclas_xlat,
+ (unsigned)bfd_h_get_8 (abfd, aux->x_csect.x_smclas), 6);
+ putchar ('\n');
+ }
+ else
+ /* Do not translate - generic field name. */
+ printf ("aux\n");
+ break;
+ case C_FILE:
+ {
+ unsigned int off;
+
+ printf (" ftype: %02x ",
+ (unsigned)bfd_h_get_8 (abfd, aux->x_file.x_ftype));
+ if (aux->x_file.x_n.x_fname[0] != 0)
+ printf ("fname: %.14s", aux->x_file.x_n.x_fname);
+ else
+ {
+ off = (unsigned)bfd_h_get_32
+ (abfd, aux->x_file.x_n.x_n.x_offset);
+ if (data->strings != NULL && off < data->strings_size)
+ printf (" %s", data->strings + off);
+ else
+ printf (_("offset: %08x"), off);
+ }
+ putchar ('\n');
+ }
+ break;
+ case C_BLOCK:
+ case C_FCN:
+ printf (" lnno: %u\n",
+ (unsigned)bfd_h_get_16
+ (abfd, aux->x_sym.x_misc.x_lnsz.x_lnno));
+ break;
+ default:
+ /* Do not translate - generic field name. */
+ printf ("aux\n");
+ break;
+ }
+ }
+
+ }
+ free (debug);
+}
+
+/* Dump xcoff relocation entries. */
+
+static void
+dump_xcoff32_relocs (bfd *abfd, struct xcoff_dump *data)
+{
+ unsigned int i;
+
+ if (data->sects == NULL)
+ {
+ non_fatal (_("cannot read section headers"));
+ return;
+ }
+
+ for (i = 0; i < data->nscns; i++)
+ {
+ struct xcoff32_section *sect = &data->sects[i];
+ unsigned int nrel = sect->nreloc;
+ unsigned int j;
+
+ if (nrel == 0)
+ continue;
+ printf (_("Relocations for %s (%u)\n"), sect->name, nrel);
+ if (bfd_seek (abfd, sect->relptr, SEEK_SET) != 0)
+ {
+ non_fatal (_("cannot read relocations"));
+ continue;
+ }
+ /* Do not translate: fields name. */
+ printf ("vaddr sgn mod sz type symndx symbol\n");
+ for (j = 0; j < nrel; j++)
+ {
+ struct external_reloc rel;
+ unsigned char rsize;
+ unsigned int symndx;
+
+ if (bfd_bread (&rel, sizeof (rel), abfd) != sizeof (rel))
+ {
+ non_fatal (_("cannot read relocation entry"));
+ return;
+ }
+ rsize = bfd_h_get_8 (abfd, rel.r_size);
+ printf ("%08x %c %c %-2u ",
+ (unsigned int)bfd_h_get_32 (abfd, rel.r_vaddr),
+ rsize & 0x80 ? 'S' : 'U',
+ rsize & 0x40 ? 'm' : ' ',
+ (rsize & 0x3f) + 1);
+ dump_value (rtype_xlat, bfd_h_get_8 (abfd, rel.r_type), 6);
+ symndx = bfd_h_get_32 (abfd, rel.r_symndx);
+ printf ("%-6u ", symndx);
+ xcoff32_print_symbol (data, symndx);
+ putchar ('\n');
+ }
+ putchar ('\n');
+ }
+}
+
+/* Dump xcoff line number entries. */
+
+static void
+dump_xcoff32_lineno (bfd *abfd, struct xcoff_dump *data)
+{
+ unsigned int i;
+
+ if (data->sects == NULL)
+ {
+ non_fatal (_("cannot read section headers"));
+ return;
+ }
+
+ for (i = 0; i < data->nscns; i++)
+ {
+ struct xcoff32_section *sect = &data->sects[i];
+ unsigned int nlnno = sect->nlnno;
+ unsigned int j;
+
+ if (nlnno == 0)
+ continue;
+ printf (_("Line numbers for %s (%u)\n"), sect->name, nlnno);
+ if (bfd_seek (abfd, sect->lnnoptr, SEEK_SET) != 0)
+ {
+ non_fatal (_("cannot read line numbers"));
+ continue;
+ }
+ /* Line number, symbol index and physical address. */
+ printf (_("lineno symndx/paddr\n"));
+ for (j = 0; j < nlnno; j++)
+ {
+ struct external_lineno ln;
+ unsigned int no;
+
+ if (bfd_bread (&ln, sizeof (ln), abfd) != sizeof (ln))
+ {
+ non_fatal (_("cannot read line number entry"));
+ return;
+ }
+ no = bfd_h_get_16 (abfd, ln.l_lnno);
+ printf (" %-6u ", no);
+ if (no == 0)
+ {
+ unsigned int symndx = bfd_h_get_32 (abfd, ln.l_addr.l_symndx);
+ xcoff32_print_symbol (data, symndx);
+ }
+ else
+ printf ("0x%08x",
+ (unsigned int)bfd_h_get_32 (abfd, ln.l_addr.l_paddr));
+ putchar ('\n');
+ }
+ }
+}
+
+/* Dump xcoff loader section. */
+
+static void
+dump_xcoff32_loader (bfd *abfd)
+{
+ asection *loader;
+ bfd_size_type size = 0;
+ struct external_ldhdr *lhdr;
+ struct external_ldsym *ldsym;
+ struct external_ldrel *ldrel;
+ bfd_byte *ldr_data;
+ unsigned int version;
+ unsigned int ndsyms;
+ unsigned int ndrel;
+ unsigned int stlen;
+ unsigned int stoff;
+ unsigned int impoff;
+ unsigned int nimpid;
+ unsigned int i;
+ const char *p;
+
+ loader = bfd_get_section_by_name (abfd, ".loader");
+
+ if (loader == NULL)
+ {
+ printf (_("no .loader section in file\n"));
+ return;
+ }
+ size = bfd_get_section_size (loader);
+ if (size < sizeof (*lhdr))
+ {
+ printf (_("section .loader is too short\n"));
+ return;
+ }
+
+ ldr_data = (bfd_byte *) xmalloc (size);
+ bfd_get_section_contents (abfd, loader, ldr_data, 0, size);
+ lhdr = (struct external_ldhdr *)ldr_data;
+ printf (_("Loader header:\n"));
+ version = bfd_h_get_32 (abfd, lhdr->l_version);
+ printf (_(" version: %u\n"), version);
+ if (version != 1)
+ {
+ printf (_(" Unhandled version\n"));
+ free (ldr_data);
+ return;
+ }
+ ndsyms = bfd_h_get_32 (abfd, lhdr->l_nsyms);
+ printf (_(" nbr symbols: %u\n"), ndsyms);
+ ndrel = bfd_h_get_32 (abfd, lhdr->l_nreloc);
+ printf (_(" nbr relocs: %u\n"), ndrel);
+ /* Import string table length. */
+ printf (_(" import strtab len: %u\n"),
+ (unsigned) bfd_h_get_32 (abfd, lhdr->l_istlen));
+ nimpid = bfd_h_get_32 (abfd, lhdr->l_nimpid);
+ printf (_(" nbr import files: %u\n"), nimpid);
+ impoff = bfd_h_get_32 (abfd, lhdr->l_impoff);
+ printf (_(" import file off: %u\n"), impoff);
+ stlen = bfd_h_get_32 (abfd, lhdr->l_stlen);
+ printf (_(" string table len: %u\n"), stlen);
+ stoff = bfd_h_get_32 (abfd, lhdr->l_stoff);
+ printf (_(" string table off: %u\n"), stoff);
+
+ ldsym = (struct external_ldsym *)(ldr_data + sizeof (*lhdr));
+ printf (_("Dynamic symbols:\n"));
+ /* Do not translate: field names. */
+ printf (" # value sc IFEW ty class file pa name\n");
+ for (i = 0; i < ndsyms; i++, ldsym++)
+ {
+ unsigned char smtype;
+
+ printf (_(" %4u %08x %3u "), i,
+ (unsigned)bfd_h_get_32 (abfd, ldsym->l_value),
+ (unsigned)bfd_h_get_16 (abfd, ldsym->l_scnum));
+ smtype = bfd_h_get_8 (abfd, ldsym->l_smtype);
+ putchar (smtype & 0x40 ? 'I' : ' ');
+ putchar (smtype & 0x20 ? 'F' : ' ');
+ putchar (smtype & 0x10 ? 'E' : ' ');
+ putchar (smtype & 0x08 ? 'W' : ' ');
+ putchar (' ');
+ dump_value (smtyp_xlat, SMTYP_SMTYP (smtype), 2);
+ putchar (' ');
+ dump_value
+ (smclas_xlat, (unsigned)bfd_h_get_8 (abfd, ldsym->l_smclas), 6);
+ printf (_(" %3u %3u "),
+ (unsigned)bfd_h_get_32 (abfd, ldsym->l_ifile),
+ (unsigned)bfd_h_get_32 (abfd, ldsym->l_parm));
+ if (ldsym->_l._l_name[0] != 0)
+ printf ("%-.8s", ldsym->_l._l_name);
+ else
+ {
+ unsigned int off = bfd_h_get_32 (abfd, ldsym->_l._l_l._l_offset);
+ if (off > stlen)
+ printf (_("(bad offset: %u)"), off);
+ else
+ printf ("%s", ldr_data + stoff + off);
+ }
+ putchar ('\n');
+ }
+
+ printf (_("Dynamic relocs:\n"));
+ /* Do not translate fields name. */
+ printf (" vaddr sec sz typ sym\n");
+ ldrel = (struct external_ldrel *)(ldr_data + sizeof (*lhdr)
+ + ndsyms * sizeof (*ldsym));
+ for (i = 0; i < ndrel; i++, ldrel++)
+ {
+ unsigned int rsize;
+ unsigned int rtype;
+ unsigned int symndx;
+
+ rsize = bfd_h_get_8 (abfd, ldrel->l_rtype + 0);
+ rtype = bfd_h_get_8 (abfd, ldrel->l_rtype + 1);
+
+ printf (" %08x %3u %c%c %2u ",
+ (unsigned)bfd_h_get_32 (abfd, ldrel->l_vaddr),
+ (unsigned)bfd_h_get_16 (abfd, ldrel->l_rsecnm),
+ rsize & 0x80 ? 'S' : 'U',
+ rsize & 0x40 ? 'm' : ' ',
+ (rsize & 0x3f) + 1);
+ dump_value (rtype_xlat, rtype, 6);
+ symndx = bfd_h_get_32 (abfd, ldrel->l_symndx);
+ switch (symndx)
+ {
+ case 0:
+ printf (".text");
+ break;
+ case 1:
+ printf (".data");
+ break;
+ case 2:
+ printf (".bss");
+ break;
+ default:
+ printf ("%u", symndx - 3);
+ break;
+ }
+ putchar ('\n');
+ }
+
+ printf (_("Import files:\n"));
+ p = (char *)ldr_data + impoff;
+ for (i = 0; i < nimpid; i++)
+ {
+ int n1, n2, n3;
+
+ n1 = strlen (p);
+ n2 = strlen (p + n1 + 1);
+ n3 = strlen (p + n1 + 1 + n2+ 1);
+ printf (" %2u: %s,%s,%s\n", i,
+ p, p + n1 + 1, p + n1 + n2 + 2);
+ p += n1 + n2 + n3 + 3;
+ }
+
+ free (ldr_data);
+}
+
+/* Dump xcoff exception section. */
+
+static void
+dump_xcoff32_except (bfd *abfd, struct xcoff_dump *data)
+{
+ asection *sec;
+ bfd_size_type size = 0;
+ bfd_byte *excp_data;
+ struct external_exceptab *exceptab;
+ unsigned int i;
+
+ sec = bfd_get_section_by_name (abfd, ".except");
+
+ if (sec == NULL)
+ {
+ printf (_("no .except section in file\n"));
+ return;
+ }
+ size = bfd_get_section_size (sec);
+ excp_data = (bfd_byte *) xmalloc (size);
+ bfd_get_section_contents (abfd, sec, excp_data, 0, size);
+ exceptab = (struct external_exceptab *)excp_data;
+
+ printf (_("Exception table:\n"));
+ /* Do not translate fields name. */
+ printf ("lang reason sym/addr\n");
+ for (i = 0; i * sizeof (*exceptab) < size; i++, exceptab++)
+ {
+ unsigned int reason;
+ unsigned int addr;
+
+ addr = bfd_get_32 (abfd, exceptab->e_addr.e_paddr);
+ reason = bfd_get_8 (abfd, exceptab->e_reason);
+ printf (" %02x %02x ",
+ (unsigned) bfd_get_8 (abfd, exceptab->e_lang), reason);
+ if (reason == 0)
+ xcoff32_print_symbol (data, addr);
+ else
+ printf ("@%08x", addr);
+ putchar ('\n');
+ }
+ free (excp_data);
+}
+
+/* Dump xcoff type-check section. */
+
+static void
+dump_xcoff32_typchk (bfd *abfd)
+{
+ asection *sec;
+ bfd_size_type size = 0;
+ bfd_byte *data;
+ unsigned int i;
+
+ sec = bfd_get_section_by_name (abfd, ".typchk");
+
+ if (sec == NULL)
+ {
+ printf (_("no .typchk section in file\n"));
+ return;
+ }
+ size = bfd_get_section_size (sec);
+ data = (bfd_byte *) xmalloc (size);
+ bfd_get_section_contents (abfd, sec, data, 0, size);
+
+ printf (_("Type-check section:\n"));
+ /* Do not translate field names. */
+ printf ("offset len lang-id general-hash language-hash\n");
+ for (i = 0; i < size;)
+ {
+ unsigned int len;
+
+ len = bfd_get_16 (abfd, data + i);
+ printf ("%08x: %-4u ", i, len);
+ i += 2;
+
+ if (len == 10)
+ {
+ /* Expected format. */
+ printf ("%04x %08x %08x\n",
+ (unsigned) bfd_get_16 (abfd, data + i),
+ (unsigned) bfd_get_32 (abfd, data + i + 2),
+ (unsigned) bfd_get_32 (abfd, data + i + 2 + 4));
+ }
+ else
+ {
+ unsigned int j;
+
+ for (j = 0; j < len; j++)
+ {
+ if (j % 16 == 0)
+ printf ("\n ");
+ printf (" %02x", (unsigned char)data[i + j]);
+ }
+ putchar ('\n');
+ }
+ i += len;
+ }
+ free (data);
+}
+
+/* Dump xcoff traceback tags section. */
+
+static void
+dump_xcoff32_tbtags (bfd *abfd,
+ const char *text, bfd_size_type text_size,
+ unsigned int text_start, unsigned int func_start)
+{
+ unsigned int i;
+
+ if (func_start - text_start > text_size)
+ {
+ printf (_(" address beyond section size\n"));
+ return;
+ }
+ for (i = func_start - text_start; i < text_size; i+= 4)
+ if (bfd_get_32 (abfd, text + i) == 0)
+ {
+ unsigned int tb1;
+ unsigned int tb2;
+ unsigned int off;
+
+ printf (_(" tags at %08x\n"), i + 4);
+ if (i + 8 >= text_size)
+ goto truncated;
+
+ tb1 = bfd_get_32 (abfd, text + i + 4);
+ tb2 = bfd_get_32 (abfd, text + i + 8);
+ off = i + 12;
+ printf (" version: %u, lang: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n",
+ (tb1 >> 24) & 0xff,
+ (tb1 >> 16) & 0xff,
+ (tb1 >> 15) & 1,
+ (tb1 >> 14) & 1,
+ (tb1 >> 13) & 1,
+ (tb1 >> 12) & 1);
+ printf (" has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n",
+ (tb1 >> 11) & 1,
+ (tb1 >> 10) & 1,
+ (tb1 >> 9) & 1,
+ (tb1 >> 8) & 1,
+ (tb1 >> 7) & 1);
+ printf (" name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n",
+ (tb1 >> 6) & 1,
+ (tb1 >> 5) & 1,
+ (tb1 >> 2) & 7,
+ (tb1 >> 1) & 1,
+ (tb1 >> 0) & 1);
+ printf (" stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n",
+ (tb2 >> 31) & 1,
+ (tb2 >> 30) & 1,
+ (tb2 >> 24) & 63,
+ (tb2 >> 22) & 3,
+ (tb2 >> 16) & 63);
+ printf (" fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n",
+ (tb2 >> 8) & 0xff,
+ (tb2 >> 1) & 0x7f,
+ (tb2 >> 0) & 1);
+
+ if (((tb2 >> 1) & 0x7fff) != 0)
+ {
+ unsigned int parminfo;
+
+ if (off >= text_size)
+ goto truncated;
+ parminfo = bfd_get_32 (abfd, text + off);
+ off += 4;
+ printf (" parminfo: 0x%08x\n", parminfo);
+ }
+
+ if ((tb1 >> 13) & 1)
+ {
+ unsigned int tboff;
+
+ if (off >= text_size)
+ goto truncated;
+ tboff = bfd_get_32 (abfd, text + off);
+ off += 4;
+ printf (" tb_offset: 0x%08x (start=0x%08x)\n",
+ tboff, text_start + i - tboff);
+ }
+ if ((tb1 >> 7) & 1)
+ {
+ unsigned int hand_mask;
+
+ if (off >= text_size)
+ goto truncated;
+ hand_mask = bfd_get_32 (abfd, text + off);
+ off += 4;
+ printf (" hand_mask_offset: 0x%08x\n", hand_mask);
+ }
+ if ((tb1 >> 11) & 1)
+ {
+ unsigned int ctl_info;
+ unsigned int j;
+
+ if (off >= text_size)
+ goto truncated;
+ ctl_info = bfd_get_32 (abfd, text + off);
+ off += 4;
+ printf (_(" number of CTL anchors: %u\n"), ctl_info);
+ for (j = 0; j < ctl_info; j++)
+ {
+ if (off >= text_size)
+ goto truncated;
+ printf (" CTL[%u]: %08x\n",
+ j, (unsigned)bfd_get_32 (abfd, text + off));
+ off += 4;
+ }
+ }
+ if ((tb1 >> 6) & 1)
+ {
+ unsigned int name_len;
+ unsigned int j;
+
+ if (off >= text_size)
+ goto truncated;
+ name_len = bfd_get_16 (abfd, text + off);
+ off += 2;
+ printf (_(" Name (len: %u): "), name_len);
+ if (off + name_len >= text_size)
+ {
+ printf (_("[truncated]\n"));
+ goto truncated;
+ }
+ for (j = 0; j < name_len; j++)
+ if (ISPRINT (text[off + j]))
+ putchar (text[off + j]);
+ else
+ printf ("[%02x]", (unsigned char)text[off + j]);
+ putchar ('\n');
+ off += name_len;
+ }
+ if ((tb1 >> 5) & 1)
+ {
+ if (off >= text_size)
+ goto truncated;
+ printf (" alloca reg: %u\n",
+ (unsigned) bfd_get_8 (abfd, text + off));
+ off++;
+ }
+ printf (_(" (end of tags at %08x)\n"), text_start + off);
+ return;
+ }
+ printf (_(" no tags found\n"));
+ return;
+
+ truncated:
+ printf (_(" Truncated .text section\n"));
+ return;
+}
+
+static void
+dump_xcoff32_traceback (bfd *abfd, struct xcoff_dump *data)
+{
+ unsigned int i;
+ unsigned int scnum_text = -1;
+ unsigned int text_vma;
+ asection *text_sec;
+ bfd_size_type text_size;
+ char *text;
+
+ if (data->syms == NULL || data->sects == NULL)
+ return;
+
+ /* Read text section. */
+ text_sec = bfd_get_section_by_name (abfd, ".text");
+ if (text_sec == NULL)
+ return;
+ text_vma = bfd_get_section_vma (abfd, text_sec);
+
+ text_size = bfd_get_section_size (text_sec);
+ text = (char *) xmalloc (text_size);
+ bfd_get_section_contents (abfd, text_sec, text, 0, text_size);
+
+ for (i = 0; i < data->nscns; i++)
+ if (data->sects[i].flags == STYP_TEXT)
+ {
+ scnum_text = i + 1;
+ break;
+ }
+ if (scnum_text == (unsigned int)-1)
+ return;
+
+ for (i = 0; i < data->nsyms; i++)
+ {
+ union xcoff32_symbol *s = &data->syms[i];
+
+ switch (s->sym.sclass)
+ {
+ case C_EXT:
+ case C_HIDEXT:
+ case C_WEAKEXT:
+ if (s->sym.scnum == scnum_text
+ && s->sym.numaux > 0)
+ {
+ union external_auxent *aux = &s[s->sym.numaux].aux;
+
+ unsigned int smtyp;
+ unsigned int smclas;
+
+ smtyp = bfd_h_get_8 (abfd, aux->x_csect.x_smtyp);
+ smclas = bfd_h_get_8 (abfd, aux->x_csect.x_smclas);
+ if (SMTYP_SMTYP (smtyp) == XTY_LD
+ && (smclas == XMC_PR
+ || smclas == XMC_GL
+ || smclas == XMC_XO))
+ {
+ printf ("%08x: ", s->sym.val);
+ xcoff32_print_symbol (data, i);
+ putchar ('\n');
+ dump_xcoff32_tbtags (abfd, text, text_size,
+ text_vma, s->sym.val);
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ i += s->sym.numaux;
+ }
+ free (text);
+}
+
+/* Dump the TOC symbols. */
+
+static void
+dump_xcoff32_toc (bfd *abfd, struct xcoff_dump *data)
+{
+ unsigned int i;
+ unsigned int nbr_ent;
+ unsigned int size;
+
+ printf (_("TOC:\n"));
+
+ if (data->syms == NULL)
+ return;
+
+ nbr_ent = 0;
+ size = 0;
+
+ for (i = 0; i < data->nsyms; i++)
+ {
+ union xcoff32_symbol *s = &data->syms[i];
+
+ switch (s->sym.sclass)
+ {
+ case C_EXT:
+ case C_HIDEXT:
+ case C_WEAKEXT:
+ if (s->sym.numaux > 0)
+ {
+ union external_auxent *aux = &s[s->sym.numaux].aux;
+ unsigned int smclas;
+ unsigned int ent_sz;
+
+ smclas = bfd_h_get_8 (abfd, aux->x_csect.x_smclas);
+ if (smclas == XMC_TC
+ || smclas == XMC_TD
+ || smclas == XMC_TC0)
+ {
+ ent_sz = bfd_h_get_32 (abfd, aux->x_scn.x_scnlen);
+ printf ("%08x %08x ",
+ s->sym.val, ent_sz);
+ xcoff32_print_symbol (data, i);
+ putchar ('\n');
+ nbr_ent++;
+ size += ent_sz;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ i += s->sym.numaux;
+ }
+ printf (_("Nbr entries: %-8u Size: %08x (%u)\n"),
+ nbr_ent, size, size);
+}
+
+/* Handle an rs6000 xcoff file. */
+
+static void
+dump_xcoff32 (bfd *abfd, struct external_filehdr *fhdr)
+{
+ struct xcoff_dump data;
+
+ data.nscns = bfd_h_get_16 (abfd, fhdr->f_nscns);
+ data.symptr = bfd_h_get_32 (abfd, fhdr->f_symptr);
+ data.nsyms = bfd_h_get_32 (abfd, fhdr->f_nsyms);
+ data.opthdr = bfd_h_get_16 (abfd, fhdr->f_opthdr);
+ data.sects = NULL;
+ data.syms = NULL;
+ data.strings = NULL;
+ data.strings_size = 0;
+
+ if (options[OPT_FILE_HEADER].selected)
+ dump_xcoff32_file_header (abfd, fhdr, &data);
+
+ if (options[OPT_AOUT].selected)
+ dump_xcoff32_aout_header (abfd, &data);
+
+ if (options[OPT_SYMS].selected
+ || options[OPT_RELOCS].selected
+ || options[OPT_LINENO].selected
+ || options[OPT_TRACEBACK].selected)
+ xcoff32_read_sections (abfd, &data);
+
+ if (options[OPT_SECTIONS].selected)
+ dump_xcoff32_sections_header (abfd, &data);
+
+ if (options[OPT_SYMS].selected
+ || options[OPT_RELOCS].selected
+ || options[OPT_LINENO].selected
+ || options[OPT_EXCEPT].selected
+ || options[OPT_TRACEBACK].selected
+ || options[OPT_TOC].selected)
+ xcoff32_read_symbols (abfd, &data);
+
+ if (options[OPT_SYMS].selected)
+ dump_xcoff32_symbols (abfd, &data);
+
+ if (options[OPT_RELOCS].selected)
+ dump_xcoff32_relocs (abfd, &data);
+
+ if (options[OPT_LINENO].selected)
+ dump_xcoff32_lineno (abfd, &data);
+
+ if (options[OPT_LOADER].selected)
+ dump_xcoff32_loader (abfd);
+
+ if (options[OPT_EXCEPT].selected)
+ dump_xcoff32_except (abfd, &data);
+
+ if (options[OPT_TYPCHK].selected)
+ dump_xcoff32_typchk (abfd);
+
+ if (options[OPT_TRACEBACK].selected)
+ dump_xcoff32_traceback (abfd, &data);
+
+ if (options[OPT_TOC].selected)
+ dump_xcoff32_toc (abfd, &data);
+
+ free (data.sects);
+ free (data.strings);
+ free (data.syms);
+}
+
+/* Dump ABFD (according to the options[] array). */
+
+static void
+xcoff_dump_obj (bfd *abfd)
+{
+ struct external_filehdr fhdr;
+ unsigned short magic;
+
+ /* Read file header. */
+ if (bfd_seek (abfd, 0, SEEK_SET) != 0
+ || bfd_bread (&fhdr, sizeof (fhdr), abfd) != sizeof (fhdr))
+ {
+ non_fatal (_("cannot read header"));
+ return;
+ }
+
+ /* Decoding. We don't use the bfd/coff function to get all the fields. */
+ magic = bfd_h_get_16 (abfd, fhdr.f_magic);
+ if (options[OPT_FILE_HEADER].selected)
+ {
+ printf (_("File header:\n"));
+ printf (_(" magic: 0x%04x (0%04o) "), magic, magic);
+ switch (magic)
+ {
+ case U802WRMAGIC:
+ printf (_("(WRMAGIC: writable text segments)"));
+ break;
+ case U802ROMAGIC:
+ printf (_("(ROMAGIC: readonly sharablee text segments)"));
+ break;
+ case U802TOCMAGIC:
+ printf (_("(TOCMAGIC: readonly text segments and TOC)"));
+ break;
+ default:
+ printf (_("unknown magic"));
+ break;
+ }
+ putchar ('\n');
+ }
+ if (magic == U802ROMAGIC || magic == U802WRMAGIC || magic == U802TOCMAGIC)
+ dump_xcoff32 (abfd, &fhdr);
+ else
+ printf (_(" Unhandled magic\n"));
+}
+
+/* Handle an AIX dumpx core file. */
+
+static void
+dump_dumpx_core (bfd *abfd, struct external_core_dumpx *hdr)
+{
+ if (options[OPT_FILE_HEADER].selected)
+ {
+ printf (" signal: %u\n", bfd_h_get_8 (abfd, hdr->c_signo));
+ printf (" flags: 0x%02x\n", bfd_h_get_8 (abfd, hdr->c_flag));
+ printf (" entries: %u\n",
+ (unsigned) bfd_h_get_16 (abfd, hdr->c_entries));
+#ifdef BFD64
+ printf (" fdsinfox: offset: 0x%08" BFD_VMA_FMT "x\n",
+ bfd_h_get_64 (abfd, hdr->c_fdsinfox));
+ printf (" loader: offset: 0x%08" BFD_VMA_FMT "x, "
+ "size: 0x%" BFD_VMA_FMT"x\n",
+ bfd_h_get_64 (abfd, hdr->c_loader),
+ bfd_h_get_64 (abfd, hdr->c_lsize));
+ printf (" thr: offset: 0x%08" BFD_VMA_FMT "x, nbr: %u\n",
+ bfd_h_get_64 (abfd, hdr->c_thr),
+ (unsigned) bfd_h_get_32 (abfd, hdr->c_n_thr));
+ printf (" segregions: offset: 0x%08" BFD_VMA_FMT "x, "
+ "nbr: %" BFD_VMA_FMT "u\n",
+ bfd_h_get_64 (abfd, hdr->c_segregion),
+ bfd_h_get_64 (abfd, hdr->c_segs));
+ printf (" stack: offset: 0x%08" BFD_VMA_FMT "x, "
+ "org: 0x%" BFD_VMA_FMT"x, "
+ "size: 0x%" BFD_VMA_FMT"x\n",
+ bfd_h_get_64 (abfd, hdr->c_stack),
+ bfd_h_get_64 (abfd, hdr->c_stackorg),
+ bfd_h_get_64 (abfd, hdr->c_size));
+ printf (" data: offset: 0x%08" BFD_VMA_FMT "x, "
+ "org: 0x%" BFD_VMA_FMT"x, "
+ "size: 0x%" BFD_VMA_FMT"x\n",
+ bfd_h_get_64 (abfd, hdr->c_data),
+ bfd_h_get_64 (abfd, hdr->c_dataorg),
+ bfd_h_get_64 (abfd, hdr->c_datasize));
+ printf (" sdata: org: 0x%" BFD_VMA_FMT"x, "
+ "size: 0x%" BFD_VMA_FMT"x\n",
+ bfd_h_get_64 (abfd, hdr->c_sdorg),
+ bfd_h_get_64 (abfd, hdr->c_sdsize));
+ printf (" vmmregions: offset: 0x%" BFD_VMA_FMT"x, "
+ "num: 0x%" BFD_VMA_FMT"x\n",
+ bfd_h_get_64 (abfd, hdr->c_vmm),
+ bfd_h_get_64 (abfd, hdr->c_vmmregions));
+ printf (" impl: 0x%08x\n",
+ (unsigned) bfd_h_get_32 (abfd, hdr->c_impl));
+ printf (" cprs: 0x%" BFD_VMA_FMT "x\n",
+ bfd_h_get_64 (abfd, hdr->c_cprs));
+#endif
+ }
+ if (options[OPT_LDINFO].selected)
+ {
+#ifdef BFD64
+ file_ptr off = (file_ptr) bfd_h_get_64 (abfd, hdr->c_loader);
+ bfd_size_type len = (bfd_size_type) bfd_h_get_64 (abfd, hdr->c_lsize);
+ char *ldr;
+
+ ldr = xmalloc (len);
+ if (bfd_seek (abfd, off, SEEK_SET) != 0
+ || bfd_bread (ldr, len, abfd) != len)
+ non_fatal (_("cannot read loader info table"));
+ else
+ {
+ char *p;
+
+ printf ("\n"
+ "ld info:\n");
+ printf (" next core off textorg textsize dataorg datasize\n");
+ p = ldr;
+ while (1)
+ {
+ struct external_ld_info32 *l = (struct external_ld_info32 *)p;
+ unsigned int next;
+ size_t n1;
+
+ next = bfd_h_get_32 (abfd, l->ldinfo_next);
+ printf (" %08x %08x %08x %08x %08x %08x\n",
+ next,
+ (unsigned) bfd_h_get_32 (abfd, l->core_offset),
+ (unsigned) bfd_h_get_32 (abfd, l->ldinfo_textorg),
+ (unsigned) bfd_h_get_32 (abfd, l->ldinfo_textsize),
+ (unsigned) bfd_h_get_32 (abfd, l->ldinfo_dataorg),
+ (unsigned) bfd_h_get_32 (abfd, l->ldinfo_datasize));
+ n1 = strlen ((char *) l->ldinfo_filename);
+ printf (" %s %s\n",
+ l->ldinfo_filename, l->ldinfo_filename + n1 + 1);
+ if (next == 0)
+ break;
+ p += next;
+ }
+ }
+#else
+ printf (_("\n"
+ "ldinfo dump not supported in 32 bits environments\n"));
+#endif
+ }
+}
+
+/* Dump a core file. */
+
+static void
+xcoff_dump_core (bfd *abfd)
+{
+ struct external_core_dumpx hdr;
+ unsigned int version;
+
+ /* Read file header. */
+ if (bfd_seek (abfd, 0, SEEK_SET) != 0
+ || bfd_bread (&hdr, sizeof (hdr), abfd) != sizeof (hdr))
+ {
+ non_fatal (_("cannot core read header"));
+ return;
+ }
+
+ version = bfd_h_get_32 (abfd, hdr.c_version);
+ if (options[OPT_FILE_HEADER].selected)
+ {
+ printf (_("Core header:\n"));
+ printf (_(" version: 0x%08x "), version);
+ switch (version)
+ {
+ case CORE_DUMPX_VERSION:
+ printf (_("(dumpx format - aix4.3 / 32 bits)"));
+ break;
+ case CORE_DUMPXX_VERSION:
+ printf (_("(dumpxx format - aix5.0 / 64 bits)"));
+ break;
+ default:
+ printf (_("unknown format"));
+ break;
+ }
+ putchar ('\n');
+ }
+ if (version == CORE_DUMPX_VERSION)
+ dump_dumpx_core (abfd, &hdr);
+ else
+ printf (_(" Unhandled magic\n"));
+}
+
+/* Dump an XCOFF file. */
+
+static void
+xcoff_dump (bfd *abfd)
+{
+ /* We rely on BFD to decide if the file is a core file. Note that core
+ files are only supported on native environment by BFD. */
+ switch (bfd_get_format (abfd))
+ {
+ case bfd_core:
+ xcoff_dump_core (abfd);
+ break;
+ default:
+ xcoff_dump_obj (abfd);
+ break;
+ }
+}
+
+/* Vector for xcoff. */
+
+const struct objdump_private_desc objdump_private_desc_xcoff =
+ {
+ xcoff_help,
+ xcoff_filter,
+ xcoff_dump,
+ options
+ };
diff --git a/binutils-2.24/binutils/po/Make-in b/binutils-2.24/binutils/po/Make-in
new file mode 100644
index 00000000..f8f6525a
--- /dev/null
+++ b/binutils-2.24/binutils/po/Make-in
@@ -0,0 +1,258 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc.
+#
+# This file may be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU Public License
+# but which still want to provide support for the GNU gettext functionality.
+# Please note that the actual code is *not* freely available.
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+top_builddir = @top_builddir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = $(prefix)/@DATADIRNAME@
+localedir = $(datadir)/locale
+gnulocaledir = $(prefix)/share/locale
+gettextsrcdir = $(prefix)/share/gettext/po
+subdir = po
+
+DESTDIR =
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+
+CC = @CC@
+GENCAT = @GENCAT@
+GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
+MSGMERGE = PATH=../src:$$PATH msgmerge
+
+DEFS = @DEFS@
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@
+
+INCLUDES = -I.. -I$(top_srcdir)/intl
+
+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+
+SOURCES = cat-id-tbl.c
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
+stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+INSTOBJEXT = @INSTOBJEXT@
+
+.SUFFIXES:
+.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
+
+.c.o:
+ $(COMPILE) $<
+
+.po.pox:
+ $(MAKE) $(PACKAGE).pot
+ $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
+
+.po.mo:
+ $(MSGFMT) -o $@ $<
+
+.po.gmo:
+ file=`echo $* | sed 's,.*/,,'`.gmo \
+ && rm -f $$file && $(GMSGFMT) -o $$file $<
+
+.po.cat:
+ sed -f ../intl/po2msg.sed < $< > $*.msg \
+ && rm -f $@ && $(GENCAT) $@ $*.msg
+
+
+all: all-@USE_NLS@
+
+all-yes: $(CATALOGS) @MAINT@ $(PACKAGE).pot
+all-no:
+
+$(srcdir)/$(PACKAGE).pot: $(POTFILES)
+ $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
+ --add-comments --keyword=_ --keyword=N_ \
+ --msgid-bugs-address=bug-binutils@gnu.org \
+ --files-from=$(srcdir)/POTFILES.in
+ rm -f $(srcdir)/$(PACKAGE).pot
+ mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
+
+$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
+$(srcdir)/stamp-cat-id: $(PACKAGE).pot
+ rm -f cat-id-tbl.tmp
+ sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
+ | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
+ if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
+ rm cat-id-tbl.tmp; \
+ else \
+ echo cat-id-tbl.c changed; \
+ rm -f $(srcdir)/cat-id-tbl.c; \
+ mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
+ fi
+ cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
+
+
+install: install-exec install-data
+install-exec:
+install-info:
+install-html:
+install-pdf:
+install-data: install-data-@USE_NLS@
+install-data-no: all
+install-data-yes: all
+ if test -r $(MKINSTALLDIRS); then \
+ $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
+ else \
+ $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
+ fi
+ @catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ case "$$cat" in \
+ *.gmo) destdir=$(gnulocaledir);; \
+ *) destdir=$(localedir);; \
+ esac; \
+ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+ dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
+ if test -r $(MKINSTALLDIRS); then \
+ $(MKINSTALLDIRS) $$dir; \
+ else \
+ $(top_srcdir)/mkinstalldirs $$dir; \
+ fi; \
+ if test -r $$cat; then \
+ $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
+ echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
+ else \
+ $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
+ echo "installing $(srcdir)/$$cat as" \
+ "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
+ fi; \
+ if test -r $$cat.m; then \
+ $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
+ echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
+ else \
+ if test -r $(srcdir)/$$cat.m ; then \
+ $(INSTALL_DATA) $(srcdir)/$$cat.m \
+ $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
+ echo "installing $(srcdir)/$$cat as" \
+ "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
+ else \
+ true; \
+ fi; \
+ fi; \
+ done
+ if test "$(PACKAGE)" = "gettext"; then \
+ if test -r $(MKINSTALLDIRS); then \
+ $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
+ else \
+ $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
+ fi; \
+ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
+ $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+ else \
+ : ; \
+ fi
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall:
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
+ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
+ rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
+ done
+ rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in
+
+check: all
+
+cat-id-tbl.o: ../intl/libgettext.h
+
+html dvi pdf ps info tags TAGS ID:
+
+mostlyclean:
+ rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
+ rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+ rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
+
+maintainer-clean: distclean
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+ rm -f $(GMOFILES)
+
+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: update-po $(DISTFILES)
+ dists="$(DISTFILES)"; \
+ for file in $$dists; do \
+ ln $(srcdir)/$$file $(distdir) 2> /dev/null \
+ || cp -p $(srcdir)/$$file $(distdir); \
+ done
+
+update-po: Makefile
+ $(MAKE) $(PACKAGE).pot
+ PATH=`pwd`/../src:$$PATH; \
+ cd $(srcdir); \
+ catalogs='$(CATALOGS)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+ mv $$lang.po $$lang.old.po; \
+ echo "$$lang:"; \
+ if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
+ rm -f $$lang.old.po; \
+ else \
+ echo "msgmerge for $$cat failed!"; \
+ rm -f $$lang.po; \
+ mv $$lang.old.po $$lang.po; \
+ fi; \
+ done
+
+POTFILES: POTFILES.in
+ ( if test 'x$(srcdir)' != 'x.'; then \
+ posrcprefix='$(top_srcdir)/'; \
+ else \
+ posrcprefix="../"; \
+ fi; \
+ rm -f $@-t $@ \
+ && (sed -e '/^#/d' -e '/^[ ]*$$/d' \
+ -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
+ | sed -e '$$s/\\$$//') > $@-t \
+ && chmod a-w $@-t \
+ && mv $@-t $@ )
+
+POTFILES.in: @MAINT@ ../Makefile
+ cd .. && $(MAKE) po/POTFILES.in
+
+Makefile: Make-in ../config.status POTFILES
+ cd .. \
+ && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
+ CONFIG_HEADERS= $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/binutils-2.24/binutils/po/POTFILES.in b/binutils-2.24/binutils/po/POTFILES.in
new file mode 100644
index 00000000..7bda4c33
--- /dev/null
+++ b/binutils-2.24/binutils/po/POTFILES.in
@@ -0,0 +1,76 @@
+addr2line.c
+ar.c
+arsup.c
+arsup.h
+bin2c.c
+binemul.c
+binemul.h
+bucomm.c
+bucomm.h
+budbg.h
+coffdump.c
+coffgrok.c
+coffgrok.h
+cxxfilt.c
+debug.c
+debug.c
+debug.h
+dlltool.c
+dlltool.h
+dllwrap.c
+dwarf.c
+dwarf.h
+elfcomm.c
+elfcomm.h
+elfedit.c
+emul_aix.c
+emul_vanilla.c
+filemode.c
+ieee.c
+ieee.c
+is-ranlib.c
+is-strip.c
+maybe-ranlib.c
+maybe-strip.c
+mclex.c
+nlmconv.c
+nlmconv.h
+nm.c
+not-ranlib.c
+not-strip.c
+objcopy.c
+objdump.c
+objdump.h
+od-macho.c
+od-xcoff.c
+prdbg.c
+rclex.c
+rdcoff.c
+rdcoff.c
+rddbg.c
+rddbg.c
+readelf.c
+rename.c
+resbin.c
+rescoff.c
+resrc.c
+resres.c
+size.c
+srconv.c
+stabs.c
+stabs.c
+strings.c
+sysdep.h
+sysdump.c
+syslex_wrap.c
+unwind-ia64.c
+unwind-ia64.h
+version.c
+windint.h
+windmc.c
+windmc.h
+windres.c
+windres.h
+winduni.c
+winduni.h
+wrstabs.c
diff --git a/binutils-2.24/binutils/po/bg.gmo b/binutils-2.24/binutils/po/bg.gmo
new file mode 100644
index 00000000..6a59d301
--- /dev/null
+++ b/binutils-2.24/binutils/po/bg.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/bg.po b/binutils-2.24/binutils/po/bg.po
new file mode 100644
index 00000000..127468fe
--- /dev/null
+++ b/binutils-2.24/binutils/po/bg.po
@@ -0,0 +1,7951 @@
+# Translation of binutils to Bulgarian
+# Copyright (C) 2010, 2011, 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Roumen Petrov <transl@roumenpetrov.info>, 2010, 2011, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.22.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2011-10-25 11:20+0100\n"
+"PO-Revision-Date: 2012-07-28 02:44+0300\n"
+"Last-Translator: Roumen Petrov <transl@roumenpetrov.info>\n"
+"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
+"Language: bg\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: addr2line.c:81
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Употреба: %s [команда(-и)] [адреÑ(-и)]\n"
+
+#: addr2line.c:82
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " Преобразува Ð°Ð´Ñ€ÐµÑ ÐºÑŠÐ¼ двойката номер на ред/име на файл.\n"
+
+#: addr2line.c:83
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Ðко на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´ не Ñа зададени адреÑи, те ще бъдат четени от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´\n"
+
+#: addr2line.c:84
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -a --addresses Show addresses\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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Make the output easier to read for humans\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Командите Ñа:\n"
+" @<файл> Прочитане на команди от <файл>\n"
+" -a --addresses Показва адреÑи\n"
+" -b --target=<bfd_име> УÑтановÑва формата на Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»\n"
+" -e --exe=<изпълним> УÑтановÑва името на входÑÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð» (по подразбиране е a.out)\n"
+" -i --inlines Развиване на вградени функции\n"
+" -j --section=<име> Прочита отноÑителни към раздела отмеÑÑ‚Ð²Ð°Ð½Ð¸Ñ Ð²Ð¼ÐµÑто адреÑи\n"
+" -s --basenames Премахва имена на директории\n"
+" -f --functions Показва имена на функции\n"
+" -C --demangle[=начин] Декориране на имена на функции\n"
+" -h --help Показва тази информациÑ\n"
+" -v --version Показва верÑÐ¸Ñ Ð½Ð° програмата\n"
+"\n"
+
+#: addr2line.c:101 ar.c:304 ar.c:333 coffdump.c:471 dlltool.c:3938
+#: dllwrap.c:524 elfedit.c:653 nlmconv.c:1114 objcopy.c:576 objcopy.c:611
+#: readelf.c:3214 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
+#: windmc.c:228 windres.c:695
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "Подавайте доклади за грешки на %s\n"
+
+#. Note for translators: This printf is used to join the
+#. function name just printed above to the line number/
+#. file name pair that is about to be printed below. Eg:
+#.
+#. foo at 123:bar.c
+#: addr2line.c:276
+#, c-format
+msgid " at "
+msgstr " на "
+
+#. Note for translators: This printf is used to join the
+#. line number/file name pair that has just been printed with
+#. the line number/file name pair that is going to be printed
+#. by the next iteration of the while loop. Eg:
+#.
+#. 123:bar.c (inlined by) 456:main.c
+#: addr2line.c:308
+#, c-format
+msgid " (inlined by) "
+msgstr " (вмъкнато от) "
+
+#: addr2line.c:341
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: не може да Ñе получат адреÑи от архива"
+
+#: addr2line.c:358
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr "%s: не може да Ñе намери раздел %s"
+
+#: addr2line.c:427 nm.c:1570 objdump.c:3423
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "непознат начин за възÑтановÑване '%s'"
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "в архива липÑва входна точка %s\n"
+
+#: ar.c:254
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...\n"
+msgstr "Употреба: %s [опции за подражаване] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <име>] [член-име] [брой] архивен-файл файл...\n"
+
+#: ar.c:260
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] [count] archive-file file...\n"
+msgstr "Употреба: %s [опции за подражаване] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [член-име] [брой] архивен-файл файл...\n"
+
+#: ar.c:266
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<mri-Ñкрипт]\n"
+
+#: ar.c:267
+#, c-format
+msgid " commands:\n"
+msgstr " команди:\n"
+
+#: ar.c:268
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - изтриване на файл(-ове) от архива\n"
+
+#: ar.c:269
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - премеÑтване на файл(-ове) в архива\n"
+
+#: ar.c:270
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - извеждане на файл(-ове) намерен в архива\n"
+
+#: ar.c:271
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - бързо добавÑне на файл/-ове към архива\n"
+
+#: ar.c:272
+#, 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:273
+#, c-format
+msgid " s - act as ranlib\n"
+msgstr " s - държи Ñе като ranlib\n"
+
+#: ar.c:274
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - показване Ñъдържанието на архива\n"
+
+#: ar.c:275
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - изваждане на файл/-ове от архива\n"
+
+#: ar.c:276
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " уточнители характерни за команда:\n"
+
+#: ar.c:277
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - поÑтаване на файл/-ове Ñлед [член-име]\n"
+
+#: ar.c:278
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - поÑтаване на файл/-ове преди [член-име] (Ñъщо като [i])\n"
+
+#: ar.c:279
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr " [D] - използване на нула за дата и Ñ‡Ð°Ñ Ð¸ идентификатори за потребител и група\n"
+
+#: ar.c:280
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr ""
+
+#: ar.c:281
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - отрÑзване на вмъкнати имена на файлове\n"
+
+#: ar.c:282
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - използване на пълни имена за пътища ако Ñъвпадат\n"
+
+#: ar.c:283
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - запазване на първоначалните дати\n"
+
+#: ar.c:284
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - да Ñе замеÑÑ‚ÑÑ‚ Ñамо файловете, които Ñа по-нови от текущото Ñъдържание на архива\n"
+
+#: ar.c:285
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " оÑновни уточнители:\n"
+
+#: ar.c:286
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - без предупреждение, ако Ñ‚Ñ€Ñбва да Ñе Ñъздаде библиотека\n"
+
+#: ar.c:287
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - Ñъздаване на Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð° архива (виж ranlib)\n"
+
+#: ar.c:288
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - без Ñъздаване на таблица за имена\n"
+
+#: ar.c:289
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr " [T] - Ñъздаване на \"тънък\" архив\n"
+
+#: ar.c:290
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - Ñ Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð¾Ñти\n"
+
+#: ar.c:291
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - показване номер на верÑиÑ\n"
+
+#: ar.c:292
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr " @<файл> - прочитане на команди от <файл>\n"
+
+#: ar.c:293
+#, c-format
+msgid " --target=BFDNAME - specify the target object format as BFDNAME\n"
+msgstr " --target=BFD–ИМЕ - задава BFD–ИМЕ за формата на Ñ†ÐµÐ»ÐµÐ²Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚\n"
+
+#: ar.c:295
+#, c-format
+msgid " optional:\n"
+msgstr " възможни:\n"
+
+#: ar.c:296
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr " --plugin <п> - зареждане на указаната приÑтавка\n"
+
+#: ar.c:317
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Употреба: %s [команди] архив\n"
+
+#: ar.c:318
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " Създаване на Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° уÑкорÑване доÑтъпа до архивите\n"
+
+#: ar.c:319
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+" Командите Ñа:\n"
+" @<файл> Прочитане на команди от <файл>\n"
+
+#: ar.c:322
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr " --plugin <име> Зарежда указаната приÑтавка\n"
+
+#: ar.c:325
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+" -t ОбновÑва дата и Ñ‡Ð°Ñ Ð½Ð° изобразените имена на архива\n"
+" -h --help Извежда това помощно Ñъобщение\n"
+" -v --version Извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта\n"
+
+#: ar.c:449
+msgid "two different operation options specified"
+msgstr "указани Ñа две различни опции за операциÑ"
+
+#: ar.c:538 nm.c:1643
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr "за Ñъжаление, тази програма е Ñъздадена без поддръжка на приÑтавки\n"
+
+#: ar.c:693
+msgid "no operation specified"
+msgstr "не е зададена операциÑ"
+
+#: ar.c:696
+msgid "`u' is only meaningful with the `r' option."
+msgstr "'u' има ÑмиÑъл Ñамо Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° 'r'."
+
+#: ar.c:699
+msgid "`u' is not meaningful with the `D' option."
+msgstr "'u' нÑма ÑмиÑъл Ñ Ð¾Ð¿Ñ†Ð¸Ñ 'D'."
+
+#: ar.c:707
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "'N' има ÑмиÑъл Ñамо Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ 'x' и 'd'."
+
+#: ar.c:710
+msgid "Value for `N' must be positive."
+msgstr "СтойноÑтта на 'N' Ñ‚Ñ€Ñбва да е положителна."
+
+#: ar.c:724
+msgid "`x' cannot be used on thin archives."
+msgstr "'x' не може да Ñе използва в архиви \"поÑредници\"(thin archives)."
+
+#: ar.c:771
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "вътрешна грешка -- тази команда не е внедрена"
+
+#: ar.c:840
+#, c-format
+msgid "creating %s"
+msgstr "Ñъздаване на %s"
+
+#: ar.c:889 ar.c:943 ar.c:1272 objcopy.c:2080
+#, c-format
+msgid "internal stat error on %s"
+msgstr "вътрешна грешка при определÑне атрибутите на файл %s"
+
+#: ar.c:908 ar.c:976
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s е невалиден архив"
+
+#: ar.c:1034
+msgid "could not create temporary file whilst writing archive"
+msgstr "не можа да Ñе Ñъздаде временен файл, докато Ñе запиÑва архива"
+
+#: ar.c:1177
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "ÐÑма чаÑÑ‚ Ñ Ð¸Ð¼Ðµ '%s'\n"
+
+#: ar.c:1227
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "нÑма входна точка %s в архива %s!"
+
+#: ar.c:1366
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: липÑва \"изображение на архива\" за обновÑване"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "Ð’ архива нÑма входна точка %s.\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "не може да Ñе отвори файл '%s'\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: Ðе може да Ñе отвори \"изходен\" архив %s\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: Ðе може да Ñе отвори \"входен\" архив %s\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: файла %s не е архив\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: не е зададен \"изходен\" архив\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: нÑма отворен \"изходен\" архив\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: не може да Ñе отвори файл %s\n"
+
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: не може да Ñе намери файлов модул %s\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "Ð¢ÐµÐºÑƒÑ‰Ð¸Ñ Ð¾Ñ‚Ð²Ð¾Ñ€ÐµÐ½ архив е %s\n"
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: нÑма отворен архив\n"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " Без опции характерни за подражаване\n"
+
+#. Macros for common output.
+#: binemul.h:49
+#, c-format
+msgid " emulation options: \n"
+msgstr " опции за подражаване: \n"
+
+#: bucomm.c:163
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "подразбираща Ñе BFD цел не може да Ñе уÑтанови на '%s': %s"
+
+#: bucomm.c:175
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: Съвпадащи формати:"
+
+#: bucomm.c:190
+#, c-format
+msgid "Supported targets:"
+msgstr "Поддържани цели:"
+
+#: bucomm.c:192
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: поддържани цели:"
+
+#: bucomm.c:210
+#, c-format
+msgid "Supported architectures:"
+msgstr "Поддържани архитектури:"
+
+#: bucomm.c:212
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: поддържани архитектури:"
+
+#: bucomm.c:228
+msgid "big endian"
+msgstr "водещ Ñтарши бит"
+
+#: bucomm.c:229
+msgid "little endian"
+msgstr "водещ младши бит"
+
+#: bucomm.c:230
+msgid "endianness unknown"
+msgstr "непозната подредба на битовете"
+
+#: bucomm.c:251
+#, c-format
+msgid ""
+"%s\n"
+" (header %s, data %s)\n"
+msgstr ""
+
+#: bucomm.c:407
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "BFD заглавен файл верÑÐ¸Ñ %s\n"
+
+#: bucomm.c:559
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: погрешно чиÑло: %s"
+
+#: bucomm.c:576 strings.c:409
+#, c-format
+msgid "'%s': No such file"
+msgstr "'%s': ÐÑма такъв файл"
+
+#: bucomm.c:578 strings.c:411
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "Предупреждение: не може да Ñе намери '%s', причина: %s"
+
+#: bucomm.c:582
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "Предупреждение: '%s' не е обикновен файл"
+
+#: bucomm.c:584
+#, c-format
+msgid "Warning: '%s' has negative size, probably it is too large"
+msgstr "Предупреждение: '%s' е Ñ Ð¾Ñ‚Ñ€Ð¸Ñ†Ð°Ñ‚ÐµÐ»ÐµÐ½ размер. Може би е много голÑм"
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr "#редове %d "
+
+#: coffdump.c:130
+#, c-format
+msgid "size %d "
+msgstr "размер %d "
+
+#: coffdump.c:135
+#, c-format
+msgid "section definition at %x size %x\n"
+msgstr "определение на раздел в %x размер %x\n"
+
+#: coffdump.c:141
+#, c-format
+msgid "pointer to"
+msgstr "указател към"
+
+#: coffdump.c:146
+#, c-format
+msgid "array [%d] of"
+msgstr "маÑив [%d] от"
+
+#: coffdump.c:151
+#, c-format
+msgid "function returning"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ñ€ÑŠÑ‰Ð°Ñ‰Ð°"
+
+#: coffdump.c:155
+#, c-format
+msgid "arguments"
+msgstr "аргументи"
+
+#: coffdump.c:159
+#, c-format
+msgid "code"
+msgstr "код"
+
+#: coffdump.c:165
+#, c-format
+msgid "structure definition"
+msgstr "определение на Ñтруктура"
+
+#: coffdump.c:171
+#, c-format
+msgid "structure ref to UNKNOWN struct"
+msgstr ""
+
+#: coffdump.c:173
+#, c-format
+msgid "structure ref to %s"
+msgstr ""
+
+#: coffdump.c:176
+#, c-format
+msgid "enum ref to %s"
+msgstr ""
+
+#: coffdump.c:179
+#, c-format
+msgid "enum definition"
+msgstr "определение на изброим"
+
+#: coffdump.c:252
+#, c-format
+msgid "Stack offset %x"
+msgstr ""
+
+#: coffdump.c:255
+#, c-format
+msgid "Memory section %s+%x"
+msgstr "Раздел от паметта %s+%x"
+
+#: coffdump.c:258
+#, c-format
+msgid "Register %d"
+msgstr ""
+
+#: coffdump.c:261
+#, c-format
+msgid "Struct Member offset %x"
+msgstr ""
+
+#: coffdump.c:264
+#, c-format
+msgid "Enum Member offset %x"
+msgstr ""
+
+#: coffdump.c:267
+#, c-format
+msgid "Undefined symbol"
+msgstr "Ðеопределено име"
+
+#: coffdump.c:334
+#, c-format
+msgid "List of symbols"
+msgstr "СпиÑък от имена"
+
+#: coffdump.c:341
+#, c-format
+msgid "Symbol %s, tag %d, number %d"
+msgstr ""
+
+#: coffdump.c:345 readelf.c:12215 readelf.c:12289
+#, c-format
+msgid "Type"
+msgstr "Тип"
+
+#: coffdump.c:350
+#, c-format
+msgid "Where"
+msgstr "Къде"
+
+#: coffdump.c:354
+#, c-format
+msgid "Visible"
+msgstr "Видимо"
+
+#: coffdump.c:370
+msgid "List of blocks "
+msgstr "СпиÑък от блокове"
+
+#: coffdump.c:383
+#, c-format
+msgid "vars %d"
+msgstr "промен. %d"
+
+#: coffdump.c:386
+#, c-format
+msgid "blocks"
+msgstr "блокове"
+
+#: coffdump.c:404
+#, c-format
+msgid "List of source files"
+msgstr "СпиÑък от източници"
+
+#: coffdump.c:410
+#, c-format
+msgid "Source file %s"
+msgstr "Източник %s"
+
+#: coffdump.c:424
+#, c-format
+msgid "section %s %d %d address %x size %x number %d nrelocs %d"
+msgstr ""
+
+#: coffdump.c:449
+#, c-format
+msgid "#sources %d"
+msgstr "#източници %d"
+
+#: coffdump.c:462 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Употреба: %s [команда(-и)] вх-файл\n"
+
+#: coffdump.c:463
+#, c-format
+msgid " Print a human readable interpretation of a COFF object file\n"
+msgstr " Извеждане на разбираемо от човек обÑÑнение за COFF обектен файл\n"
+
+#: coffdump.c:464
+#, 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:533 srconv.c:1833 sysdump.c:710
+msgid "no input file specified"
+msgstr "не е зададен входÑщ файл "
+
+#: cxxfilt.c:119 nm.c:269 objdump.c:281
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Подавайте доклади за грешки на %s.\n"
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: липÑва текущ файл"
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: липÑва извикване на debug_set_filename"
+
+#: debug.c:781
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: липÑва извикване на debug_set_filename"
+
+#: debug.c:833
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: липÑва текуща функциÑ"
+
+#: debug.c:865
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: липÑва текуща функциÑ"
+
+#: debug.c:871
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: не Ñа затворени нÑкой от блоковете"
+
+#: debug.c:899
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: липÑва текущ блок"
+
+#: debug.c:935
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: липÑва текущ блок"
+
+#: debug.c:942
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: опит за затварÑне на най-Ð³Ð¾Ñ€Ð½Ð¸Ñ Ð±Ð»Ð¾Ðº"
+
+#: debug.c:965
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: липÑва текуща чаÑÑ‚"
+
+#. FIXME
+#: debug.c:1018
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: не е реализирана"
+
+#. FIXME
+#: debug.c:1029
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: не е реализирана"
+
+#. FIXME.
+#: debug.c:1113
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: не е реализирана"
+
+#: debug.c:1135
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: липÑва текущ файл"
+
+#: debug.c:1663
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: неподдържан начин"
+
+#: debug.c:1840
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: липÑва текущ файл"
+
+#: debug.c:1885
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: липÑва текущ файл"
+
+#: debug.c:1893
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: опитан е белег в повече"
+
+#: debug.c:1930
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Предупреждение: промÑна на размера на типа от %d на %d\n"
+
+#: debug.c:1952
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: нÑма текуща единица за компилиране"
+
+#: debug.c:2055
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: циклична Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° теÑтване за %s\n"
+
+#: debug.c:2482
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: ÑблъÑкване Ñ Ð½ÐµÐ·Ð°ÐºÐ¾Ð½ÐµÐ½ тип"
+
+#: dlltool.c:902 dlltool.c:928 dlltool.c:959
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "Вътрешна грешка: ÐеизвеÑтен тип машина: %d"
+
+#: dlltool.c:1000
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Ðе може да Ñе отвори def-файл: %s"
+
+#: dlltool.c:1005
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Обработка на def-файл: %s"
+
+#: dlltool.c:1009
+msgid "Processed def file"
+msgstr "Обработен def-файл"
+
+#: dlltool.c:1033
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Синтактична грешка в def-файл %s:%d"
+
+#: dlltool.c:1070
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr "%s: компонента за път е премахнат от името на образа '%s'."
+
+#: dlltool.c:1088
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "NAME(програма): %s базов адреÑ: %x"
+
+#: dlltool.c:1091 dlltool.c:1112
+msgid "Can't have LIBRARY and NAME"
+msgstr "Заедно не може LIBRARY(библиотека) и NAME(програма)"
+
+#: dlltool.c:1109
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "LIBRARY(библотека): %s базов адреÑ: %x"
+
+#: dlltool.c:1266
+#, c-format
+msgid "VERSION %d.%d\n"
+msgstr "ВЕРСИЯ %d.%d\n"
+
+#: dlltool.c:1314
+#, c-format
+msgid "run: %s %s"
+msgstr "пуÑка: %s %s"
+
+#: dlltool.c:1354 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "чакане: %s"
+
+#: dlltool.c:1359 dllwrap.c:422 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "подпроцеÑа получи Ñигнал за прекъÑване %d"
+
+#: dlltool.c:1365 dllwrap.c:429 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s завърши Ñ ÐºÐ¾Ð´ за изход %d"
+
+#: dlltool.c:1396
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "Ðагазване в ÑведениÑта от раздел %s в %s"
+
+#: dlltool.c:1536
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Изключване на: %s"
+
+#: dlltool.c:1625 dlltool.c:1636 nm.c:1012 nm.c:1023
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: липÑват имена"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1662
+#, c-format
+msgid "Done reading %s"
+msgstr "Завърши четенето на %s"
+
+#: dlltool.c:1672
+#, c-format
+msgid "Unable to open object file: %s: %s"
+msgstr "Ðе можа да Ñе отвори Ð¾Ð±ÐµÐºÑ‚Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»: %s: %s"
+
+#: dlltool.c:1675
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Сканиране на Ð¾Ð±ÐµÐºÑ‚Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» %s"
+
+#: dlltool.c:1690
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "Ðе може да Ñе Ñъздаде mcore-elf dll от архива: %s"
+
+#: dlltool.c:1792
+msgid "Adding exports to output file"
+msgstr "ДобавÑне на \"изнаÑÑниÑ\" към Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»"
+
+#: dlltool.c:1844
+msgid "Added exports to output file"
+msgstr "Добавени \"изнаÑÑниÑ\" към Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»"
+
+#: dlltool.c:1986
+#, c-format
+msgid "Generating export file: %s"
+msgstr "Създаване на файл Ñ \"изнаÑÑниÑ\" : %s"
+
+#: dlltool.c:1991
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Ðе може да Ñе отвори временен файл на аÑемблер: %s"
+
+#: dlltool.c:1994
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "Отворен временен файл: %s"
+
+#: dlltool.c:2171
+msgid "failed to read the number of entries from base file"
+msgstr "пропадна прочитането на Ð±Ñ€Ð¾Ñ Ð·Ð°Ð¿Ð¸Ñи от Ð±Ð°Ð·Ð¾Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»"
+
+#: dlltool.c:2219
+msgid "Generated exports file"
+msgstr "Създаден на файл Ñ \"изнаÑÑниÑ\""
+
+#: dlltool.c:2428
+#, c-format
+msgid "bfd_open failed open stub file: %s: %s"
+msgstr "bfd_open не уÑÐ¿Ñ Ð´Ð° отвори stub файл: %s: %s"
+
+#: dlltool.c:2432
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "Създаване на stub файл: %s"
+
+#: dlltool.c:2894
+#, c-format
+msgid "bfd_open failed reopen stub file: %s: %s"
+msgstr "bfd_open не уÑÐ¿Ñ Ð´Ð° отвори stub файл: %s: %s"
+
+#: dlltool.c:2908 dlltool.c:2984
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "не уÑÐ¿Ñ Ð´Ð° Ñе отвори временен head файл: %s"
+
+#: dlltool.c:2970 dlltool.c:3050
+#, c-format
+msgid "failed to open temporary head file: %s: %s"
+msgstr "не уÑÐ¿Ñ Ð´Ð° Ñе отвори временен head файл: %s: %s"
+
+#: dlltool.c:3064
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "не уÑÐ¿Ñ Ð´Ð° Ñе отвори временен tail файл: %s"
+
+#: dlltool.c:3121
+#, c-format
+msgid "failed to open temporary tail file: %s: %s"
+msgstr "не уÑÐ¿Ñ Ð´Ð° Ñе отвори временен tail файл: %s: %s"
+
+#: dlltool.c:3143
+#, c-format
+msgid "Can't create .lib file: %s: %s"
+msgstr "Ðе може да Ñе Ñъздаде .lib файл: %s: %s"
+
+#: dlltool.c:3147
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Създаване на библиотечен файл: %s"
+
+#: dlltool.c:3239 dlltool.c:3245
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "не може да Ñе изтрие %s: %s"
+
+#: dlltool.c:3250
+msgid "Created lib file"
+msgstr "БиблиотечниÑÑ‚ файл е Ñъздаден"
+
+#: dlltool.c:3462
+#, c-format
+msgid "Can't open .lib file: %s: %s"
+msgstr "Ðе може да Ñе отвори .lib файл: %s: %s"
+
+#: dlltool.c:3470 dlltool.c:3492
+#, c-format
+msgid "%s is not a library"
+msgstr "%s не е библиотека"
+
+#: dlltool.c:3510
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr "Import библиотека '%s' задава две или повече dlls"
+
+#: dlltool.c:3521
+#, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr "Ðе може да Ñе определи име на dll за '%s' (не е библиотека за внаÑÑне?)"
+
+#: dlltool.c:3745
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Предупреждение, пренебрегване на повторен EXPORT %s %d,%d"
+
+#: dlltool.c:3751
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr "Грешка, повторен EXPORT Ñ Ð½Ð¾Ð¼ÐµÑ€: %s"
+
+#: dlltool.c:3856
+msgid "Processing definitions"
+msgstr "Обработване на определениÑта"
+
+#: dlltool.c:3888
+msgid "Processed definitions"
+msgstr "ОпределениÑта Ñа обработени"
+
+#. xgetext:c-format
+#: dlltool.c:3895 dllwrap.c:483
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Употреба %s <опции> <обектни файлове>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3897
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <машина> Създаване на DLL за <машина>. [по подразбиране: %s]\n"
+
+#: dlltool.c:3898
+#, 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:3899
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <изх_име> Създаване на файл Ñ \"изнаÑÑниÑ\".\n"
+
+#: dlltool.c:3900
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <изх_име> Създаване на интерфейÑна библиотека.\n"
+
+#: dlltool.c:3901
+#, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr " -y --output-delaylib <изх_име> Създаване на delay-import библиотека.\n"
+
+#: dlltool.c:3902
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect ДобавÑне на dll indirects към файла Ñ \"изнаÑÑниÑ\".\n"
+
+#: dlltool.c:3903
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr " -D --dllname <име> Име на входÑщо dll в интерфейÑната библиотека.\n"
+
+#: dlltool.c:3904
+#, 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:3905
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <defфайл> Име на .def файл за Ñъздаване.\n"
+
+#: dlltool.c:3906
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols ИзнаÑÑне на вÑички имена в .def\n"
+
+#: dlltool.c:3907
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols ИзнÑÑане Ñамо на опиÑаните имена\n"
+
+#: dlltool.c:3908
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <опиÑ> Без изнÑÑане на <опиÑ>\n"
+
+#: dlltool.c:3909
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes ИзчиÑтва подразбиращите Ñе имена за изключване\n"
+
+#: dlltool.c:3910
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <оÑнфайл> Ð”Ð¾Ð±Ð°Ð²Ñ Ð¾Ñновен файл при Ñвързване.\n"
+
+#: dlltool.c:3911
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 Без Ñъздаване на раздел idata$4.\n"
+
+#: dlltool.c:3912
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 Без Ñъздаване на раздел idata$5.\n"
+
+#: dlltool.c:3913
+#, c-format
+msgid " --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"
+msgstr " --use-nul-prefixed-import-tables Използване на idata$4 и idata$5 без предÑтавка.\n"
+
+#: dlltool.c:3914
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr " -U --add-underscore ДобавÑне на подчертавка към вÑички имена в интерфайÑната библиотека.\n"
+
+#: dlltool.c:3915
+#, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr " --add-stdcall-underscore ДобавÑне на подчертавка към stdcall имена в интерфайÑната библиотека.\n"
+
+#: dlltool.c:3916
+#, c-format
+msgid " --no-leading-underscore All symbols shouldn't be prefixed by an underscore.\n"
+msgstr " --no-leading-underscore Ð’Ñички имена да Ñа без подчертавка за предÑтавка.\n"
+
+#: dlltool.c:3917
+#, c-format
+msgid " --leading-underscore All symbols should be prefixed by an underscore.\n"
+msgstr " --leading-underscore Ð’Ñички имена да Ñа Ñ Ð¿Ð¾Ð´Ñ‡ÐµÑ€Ñ‚Ð°Ð²ÐºÐ° за предÑтавка.\n"
+
+#: dlltool.c:3918
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at Премахване на @<n> от изнеÑените имена.\n"
+
+#: dlltool.c:3919
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Добаване на пÑевдоними без @<n>.\n"
+
+#: dlltool.c:3920
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -p --ext-prefix-alias <предÑÑ‚> Добаване на пÑевдоними Ñ <предÑÑ‚>.\n"
+
+#: dlltool.c:3921
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <име> Използване на <име> за аÑемблер.\n"
+
+#: dlltool.c:3922
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <флагове> Продаване на <флагове> към аÑемблера.\n"
+
+#: dlltool.c:3923
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib Създаване на ÑъвмеÑтима Ñ Ð¿Ð¾-преди библиотека за внаÑÑне.\n"
+
+#: dlltool.c:3924
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete Запазване на времени файлове (при повтарÑне запазване в повече).\n"
+
+#: dlltool.c:3925
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr " -t --temp-prefix <предÑÑ‚> Използване на <предÑÑ‚> при Ñъздаване на име за временен файл.\n"
+
+#: dlltool.c:3926
+#, c-format
+msgid " -I --identify <implib> Report the name of the DLL associated with <implib>.\n"
+msgstr " -I --identify <внаÑ_библ> Репортува името на DLL Ñвързан Ñ <внаÑ_библ>.\n"
+
+#: dlltool.c:3927
+#, c-format
+msgid " --identify-strict Causes --identify to report error when multiple DLLs.\n"
+msgstr " --identify-strict ПричинÑва --identify да рапортува грешка при много DLLs.\n"
+
+#: dlltool.c:3928
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose С подробноÑти.\n"
+
+#: dlltool.c:3929
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version Покзване на верÑиÑта на програмата.\n"
+
+#: dlltool.c:3930
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help Показване на това Ñведение.\n"
+
+#: dlltool.c:3931
+#, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr " @<файл> Прочитане на команди от <файл>.\n"
+
+#: dlltool.c:3933
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr ""
+
+#: dlltool.c:3934
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <име> Използва <име> за Ñвързване.\n"
+
+#: dlltool.c:3935
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <флагове> Подава <флагове> към Ñвързването.\n"
+
+#: dlltool.c:4082
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr "СъÑтавка за път Ñмъкната от името на dll: '%s'."
+
+#: dlltool.c:4130
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Ðе можа де Ñе отвори оÑновен файл: %s"
+
+#: dlltool.c:4165
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Ðе Ñе поддържа машина '%s'"
+
+#: dlltool.c:4245
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr "Предупреждение: типа (%d) за машина не Ñе поддържа при отложени внаÑÑниÑ."
+
+#: dlltool.c:4313 dllwrap.c:213
+#, c-format
+msgid "Tried file: %s"
+msgstr "Пробва Ñе файл: %s"
+
+#: dlltool.c:4320 dllwrap.c:220
+#, c-format
+msgid "Using file: %s"
+msgstr "Използва Ñе файл: %s"
+
+#: dllwrap.c:303
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "Запазване на временен оÑновен файл %s"
+
+#: dllwrap.c:305
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "Изтриване на временен оÑновен файл %s"
+
+#: dllwrap.c:319
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "Запазване на временен exp файл %s"
+
+#: dllwrap.c:321
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "Изтриване на временен exp файл %s"
+
+#: dllwrap.c:334
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Запазване на временен def файл %s"
+
+#: dllwrap.c:336
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "Изтриване на временен def файл %s"
+
+#: dllwrap.c:417
+#, c-format
+msgid "pwait returns: %s"
+msgstr "pwait върна: %s"
+
+#: dllwrap.c:484
+#, c-format
+msgid " Generic options:\n"
+msgstr " ОÑновни възможноÑти:\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr " @<файл> Прочитане на команди от <файл>\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q Безмълвна работа\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Подробно\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version Извежда верÑиÑта на dllwrap\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <изх_име> Синоним за --output-lib\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Опции за %s:\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <име> По подразбиране \"gcc\"\n"
+
+#: dllwrap.c:492
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <флагове> Припокрива подразбиращите Ñе флагове на ld\n"
+
+#: dllwrap.c:493
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <име> По подразбиране \"dlltool\"\n"
+
+#: dllwrap.c:494
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <вход> Задава друга входна точка на DLL\n"
+
+#: dllwrap.c:495
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <оÑн> Задава оÑновен Ð°Ð´Ñ€ÐµÑ Ð½Ð° образа\n"
+
+#: dllwrap.c:496
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <машина> i386-cygwin32 или i386-mingw32\n"
+
+#: dllwrap.c:497
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run Показва какво ще Ñе пуÑне\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Създаване на Mingw DLL\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " Флагове подадени към DLLTOOL:\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <машина>\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <изх_име> Създаване на файл Ñ \"изнаÑаниÑ\".\n"
+
+#: dllwrap.c:502
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <изх_име> Създаване на библиотека Ñ \"изнаÑаниÑ\".\n"
+
+#: dllwrap.c:503
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect ДобÑване на непреките Ð¸Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ ÐºÑŠÐ¼ файла Ñ \"изнаÑаниÑ\".\n"
+
+#: dllwrap.c:504
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <име> Име на входÑщ dll, за поÑтавÑне в изходÑщата библиотека.\n"
+
+#: dllwrap.c:505
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <defфайл> Име на входÑщ .def файл\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <defфайл> Име на изходÑщ .def файл\n"
+
+#: dllwrap.c:507
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols ИзнаÑÑне на вÑички имена в .def\n"
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols ИзнаÑÑне на имена Ñамо от .drectve \n"
+
+#: dllwrap.c:509
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <ÑпиÑ> Изключване на <ÑпиÑ> от .def\n"
+
+#: dllwrap.c:510
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr ""
+
+#: dllwrap.c:511
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr ""
+
+#: dllwrap.c:512
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 Без Ñъздаване на раздел idata$4\n"
+
+#: dllwrap.c:513
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 Без Ñъздаване на раздел idata$5\n"
+
+#: dllwrap.c:514
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U ДобавÑне на подчертавки в .lib\n"
+
+#: dllwrap.c:515
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k Премахване на @<n> от изнеÑените имена\n"
+
+#: dllwrap.c:516
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias Добаване на пÑевдоними без @<n>\n"
+
+#: dllwrap.c:517
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <име> Използване на <име> за аÑемблер\n"
+
+#: dllwrap.c:518
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete Запазване на временните файлове.\n"
+
+#: dllwrap.c:519
+#, c-format
+msgid " --no-leading-underscore Entrypoint without underscore\n"
+msgstr " --no-leading-underscore Входни точки без подчертавка\n"
+
+#: dllwrap.c:520
+#, c-format
+msgid " --leading-underscore Entrypoint with underscore.\n"
+msgstr " --leading-underscore Входни точки ÑÑŠÑ Ð¿Ð¾Ð´Ñ‡ÐµÑ€Ñ‚Ð°Ð²ÐºÐ°.\n"
+
+#: dllwrap.c:521
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " ОÑтатъка Ñе подава, непроменен, към езиковата програма\n"
+
+#: dllwrap.c:805
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "Ñ€Ñбва да Ñе зададе поне една от опциите -o или --dllname"
+
+#: dllwrap.c:834
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"не е предвиден файл Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð° изнаÑÑне.\n"
+"Ще Ñе Ñъздаде един, но може би не такъв, какъвто Ñе очаква"
+
+#: dllwrap.c:1023
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "DLLTOOL име : %s\n"
+
+#: dllwrap.c:1024
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "DLLTOOL опции : %s\n"
+
+#: dllwrap.c:1025
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "DRIVER име : %s\n"
+
+#: dllwrap.c:1026
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "DRIVER опции : %s\n"
+
+#: dwarf.c:132
+msgid "Wrong size in print_dwarf_vma"
+msgstr ""
+
+#: dwarf.c:256 dwarf.c:3027
+msgid "badly formed extended line op encountered!\n"
+msgstr ""
+
+#: dwarf.c:263
+#, c-format
+msgid " Extended opcode %d: "
+msgstr ""
+
+#: dwarf.c:268
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Край на поÑледователноÑÑ‚\n"
+"\n"
+
+#: dwarf.c:274
+#, c-format
+msgid "set Address to 0x%s\n"
+msgstr "задава адреÑа на 0x%s\n"
+
+#: dwarf.c:280
+#, c-format
+msgid " define new File Table entry\n"
+msgstr ""
+
+#: dwarf.c:281 dwarf.c:2555
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Вход\tДир\tЧаÑ\tРазм\tИме\n"
+
+#: dwarf.c:295
+#, c-format
+msgid "set Discriminator to %s\n"
+msgstr ""
+
+#: dwarf.c:370
+#, c-format
+msgid " UNKNOWN DW_LNE_HP_SFC opcode (%u)\n"
+msgstr ""
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:387
+#, c-format
+msgid "user defined: "
+msgstr "определен от потребител: "
+
+#: dwarf.c:389
+#, c-format
+msgid "UNKNOWN: "
+msgstr "ÐЕПОЗÐÐТ: "
+
+#: dwarf.c:390
+#, c-format
+msgid "length %d ["
+msgstr "дължина %d ["
+
+#: dwarf.c:407
+msgid "<no .debug_str section>"
+msgstr "<без раздел .debug_str >"
+
+#: dwarf.c:413
+#, c-format
+msgid "DW_FORM_strp offset too big: %s\n"
+msgstr "DW_FORM_strp твърде голÑмо отмеÑтване: %s\n"
+
+#: dwarf.c:415
+msgid "<offset is too big>"
+msgstr "<твърде голÑмо отмеÑтване>"
+
+#: dwarf.c:655
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr ""
+
+#: dwarf.c:696
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr ""
+
+#: dwarf.c:705
+#, c-format
+msgid " %s byte block: "
+msgstr " %s байта блок: "
+
+#: dwarf.c:1050
+#, c-format
+msgid "(DW_OP_call_ref in frame info)"
+msgstr "(DW_OP_call_ref в frame info)"
+
+#: dwarf.c:1075
+#, c-format
+msgid "size: %s "
+msgstr "размер: %s"
+
+#: dwarf.c:1078
+#, c-format
+msgid "offset: %s "
+msgstr "отмеÑтване: %s"
+
+#: dwarf.c:1098
+#, c-format
+msgid "DW_OP_GNU_push_tls_address or DW_OP_HP_unknown"
+msgstr ""
+
+#: dwarf.c:1122
+#, c-format
+msgid "(DW_OP_GNU_implicit_pointer in frame info)"
+msgstr "(DW_OP_GNU_implicit_pointer в frame info)"
+
+#: dwarf.c:1234
+#, c-format
+msgid "(User defined location op)"
+msgstr ""
+
+#: dwarf.c:1236
+#, c-format
+msgid "(Unknown location op)"
+msgstr ""
+
+#: dwarf.c:1283
+msgid "Internal error: DWARF version is not 2, 3 or 4.\n"
+msgstr ""
+
+#: dwarf.c:1389
+msgid "DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"
+msgstr ""
+
+#: dwarf.c:1439
+#, c-format
+msgid " (indirect string, offset: 0x%s): %s"
+msgstr ""
+
+#: dwarf.c:1464
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Ðеразпозната форма: %lu\n"
+
+#: dwarf.c:1557
+#, c-format
+msgid "(not inlined)"
+msgstr "(не е вграден)"
+
+#: dwarf.c:1560
+#, c-format
+msgid "(inlined)"
+msgstr "(вграден)"
+
+#: dwarf.c:1563
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(определен като вграден, но пренебрегнат)"
+
+#: dwarf.c:1566
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(определен като вграден и вграден)"
+
+#: dwarf.c:1569
+#, c-format
+msgid " (Unknown inline attribute value: %s)"
+msgstr " (Ðепозната ÑтойноÑÑ‚ за вграждане: %s)"
+
+#: dwarf.c:1608
+#, c-format
+msgid "(implementation defined: %s)"
+msgstr ""
+
+#: dwarf.c:1611
+#, c-format
+msgid "(Unknown: %s)"
+msgstr "(Ðепознат: %s)"
+
+#: dwarf.c:1649
+#, c-format
+msgid "(user defined type)"
+msgstr "(потребителÑки тип)"
+
+#: dwarf.c:1651
+#, c-format
+msgid "(unknown type)"
+msgstr "(непознат тип)"
+
+#: dwarf.c:1663
+#, c-format
+msgid "(unknown accessibility)"
+msgstr ""
+
+#: dwarf.c:1674
+#, c-format
+msgid "(unknown visibility)"
+msgstr ""
+
+#: dwarf.c:1684
+#, c-format
+msgid "(unknown virtuality)"
+msgstr ""
+
+#: dwarf.c:1695
+#, c-format
+msgid "(unknown case)"
+msgstr ""
+
+#: dwarf.c:1708
+#, c-format
+msgid "(user defined)"
+msgstr "(потребителÑки)"
+
+#: dwarf.c:1710
+#, c-format
+msgid "(unknown convention)"
+msgstr ""
+
+#: dwarf.c:1717
+#, c-format
+msgid "(undefined)"
+msgstr "(неопределен)"
+
+#: dwarf.c:1740
+#, c-format
+msgid "(location list)"
+msgstr "(ÑпиÑък меÑтоположениÑ)"
+
+#: dwarf.c:1761 dwarf.c:4045
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [без DW_AT_frame_base]"
+
+#: dwarf.c:1777
+#, c-format
+msgid "Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr "Твърде голÑмо отмеÑтване %s, използвано като ÑтойноÑÑ‚ на DW_AT_import признак от DIE отмеÑтено на %lx.\n"
+
+#: dwarf.c:1787
+#, c-format
+msgid "[Abbrev Number: %ld"
+msgstr ""
+
+#: dwarf.c:1978
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "ÐеизвеÑтен признак: %lx"
+
+#: dwarf.c:2049
+#, c-format
+msgid "Reserved length value (0x%s) found in section %s\n"
+msgstr ""
+
+#: dwarf.c:2061
+#, c-format
+msgid "Corrupt unit length (0x%s) found in section %s\n"
+msgstr ""
+
+#: dwarf.c:2069
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr ""
+
+#: dwarf.c:2078
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr ""
+
+#: dwarf.c:2087 dwarf.c:3296 dwarf.c:3390 dwarf.c:3551 dwarf.c:3779
+#: dwarf.c:3911 dwarf.c:4081 dwarf.c:4150 dwarf.c:4354
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+
+#: dwarf.c:2095
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr ""
+
+#: dwarf.c:2176
+#, c-format
+msgid " Compilation Unit @ offset 0x%s:\n"
+msgstr ""
+
+#: dwarf.c:2178
+#, c-format
+msgid " Length: 0x%s (%s)\n"
+msgstr " Дължина: 0x%s (%s)\n"
+
+#: dwarf.c:2181
+#, c-format
+msgid " Version: %d\n"
+msgstr " ВерÑиÑ: %d\n"
+
+#: dwarf.c:2182
+#, c-format
+msgid " Abbrev Offset: %s\n"
+msgstr ""
+
+#: dwarf.c:2184
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr ""
+
+#: dwarf.c:2188
+#, c-format
+msgid " Signature: "
+msgstr ""
+
+#: dwarf.c:2192
+#, c-format
+msgid " Type Offset: 0x%s\n"
+msgstr ""
+
+#: dwarf.c:2200
+#, c-format
+msgid "Debug info is corrupted, length of CU at %s extends beyond end of section (length = %s)\n"
+msgstr ""
+
+#: dwarf.c:2213
+#, c-format
+msgid "CU at offset %s contains corrupt or unsupported version number: %d.\n"
+msgstr ""
+
+#: dwarf.c:2224
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr ""
+
+#: dwarf.c:2274
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr ""
+
+#: dwarf.c:2278
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr ""
+
+#: dwarf.c:2297
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr ""
+
+#: dwarf.c:2301
+#, c-format
+msgid " <%d><%lx>: ...\n"
+msgstr ""
+
+#: dwarf.c:2320
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr ""
+
+#: dwarf.c:2422
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+
+#: dwarf.c:2460
+#, c-format
+msgid "The information in section %s appears to be corrupt - the section is too small\n"
+msgstr ""
+
+#: dwarf.c:2472 dwarf.c:2840
+msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
+msgstr ""
+
+#: dwarf.c:2486 dwarf.c:2855
+msgid "Invalid maximum operations per insn.\n"
+msgstr ""
+
+#: dwarf.c:2505 dwarf.c:3574
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr " ОтмеÑтване: 0x%lx\n"
+
+#: dwarf.c:2506
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Дължина: %ld\n"
+
+#: dwarf.c:2507
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " DWARF верÑиÑ: %d\n"
+
+#: dwarf.c:2508
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr ""
+
+#: dwarf.c:2509
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr ""
+
+#: dwarf.c:2511
+#, c-format
+msgid " Maximum Ops per Instruction: %d\n"
+msgstr ""
+
+#: dwarf.c:2512
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr ""
+
+#: dwarf.c:2513
+#, c-format
+msgid " Line Base: %d\n"
+msgstr ""
+
+#: dwarf.c:2514
+#, c-format
+msgid " Line Range: %d\n"
+msgstr ""
+
+#: dwarf.c:2515
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr ""
+
+#: dwarf.c:2524
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+
+#: dwarf.c:2527
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr ""
+
+#: dwarf.c:2533
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+
+#: dwarf.c:2536
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+
+#: dwarf.c:2551
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+
+#: dwarf.c:2554
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+
+#. Now display the statements.
+#: dwarf.c:2584
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+
+#: dwarf.c:2603
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s"
+msgstr ""
+
+#: dwarf.c:2617
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s[%d]"
+msgstr ""
+
+#: dwarf.c:2625
+#, c-format
+msgid " and Line by %s to %d\n"
+msgstr ""
+
+#: dwarf.c:2635
+#, c-format
+msgid " Copy\n"
+msgstr ""
+
+#: dwarf.c:2645
+#, c-format
+msgid " Advance PC by %s to 0x%s\n"
+msgstr ""
+
+#: dwarf.c:2658
+#, c-format
+msgid " Advance PC by %s to 0x%s[%d]\n"
+msgstr ""
+
+#: dwarf.c:2669
+#, c-format
+msgid " Advance Line by %s to %d\n"
+msgstr ""
+
+#: dwarf.c:2677
+#, c-format
+msgid " Set File Name to entry %s in the File Name Table\n"
+msgstr ""
+
+#: dwarf.c:2685
+#, c-format
+msgid " Set column to %s\n"
+msgstr ""
+
+#: dwarf.c:2693
+#, c-format
+msgid " Set is_stmt to %s\n"
+msgstr ""
+
+#: dwarf.c:2698
+#, c-format
+msgid " Set basic block\n"
+msgstr ""
+
+#: dwarf.c:2708
+#, c-format
+msgid " Advance PC by constant %s to 0x%s\n"
+msgstr ""
+
+#: dwarf.c:2721
+#, c-format
+msgid " Advance PC by constant %s to 0x%s[%d]\n"
+msgstr ""
+
+#: dwarf.c:2733
+#, c-format
+msgid " Advance PC by fixed size amount %s to 0x%s\n"
+msgstr ""
+
+#: dwarf.c:2739
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr ""
+
+#: dwarf.c:2743
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr ""
+
+#: dwarf.c:2749
+#, c-format
+msgid " Set ISA to %s\n"
+msgstr ""
+
+#: dwarf.c:2753 dwarf.c:3168
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr ""
+
+#: dwarf.c:2787
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+
+#: dwarf.c:2828
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr ""
+
+#: dwarf.c:2960
+#, c-format
+msgid "CU: %s:\n"
+msgstr ""
+
+#: dwarf.c:2961 dwarf.c:2972
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr ""
+
+#: dwarf.c:2968
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr ""
+
+#: dwarf.c:3059
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr ""
+
+#: dwarf.c:3164
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr ""
+
+#: dwarf.c:3330 dwarf.c:4195
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr ""
+
+#: dwarf.c:3344
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr ""
+
+#: dwarf.c:3351
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Дължина: %ld\n"
+
+#: dwarf.c:3353
+#, c-format
+msgid " Version: %d\n"
+msgstr " ВерÑиÑ: %d\n"
+
+#: dwarf.c:3355
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:3357
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr ""
+
+#: dwarf.c:3360
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" ОтмеÑÑ‚\tИме\n"
+
+#: dwarf.c:3411
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - ред: %d ном.файл: %d\n"
+
+#: dwarf.c:3417
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:3425
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - ред : %d Ð¼Ð°ÐºÑ€Ð¾Ñ : %s\n"
+
+#: dwarf.c:3434
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - ред : %d Ð¼Ð°ÐºÑ€Ð¾Ñ : %s\n"
+
+#: dwarf.c:3446
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr ""
+
+#: dwarf.c:3566
+#, c-format
+msgid "Only GNU extension to DWARF 4 of %s is currently supported.\n"
+msgstr ""
+
+#: dwarf.c:3576
+#, c-format
+msgid " Version: %d\n"
+msgstr " ВерÑиÑ: %d\n"
+
+#: dwarf.c:3577
+#, c-format
+msgid " Offset size: %d\n"
+msgstr " Размер на отмеÑтването: %d\n"
+
+#: dwarf.c:3582
+#, c-format
+msgid " Offset into .debug_line: 0x%lx\n"
+msgstr " ОтмеÑтване в .debug_line: 0x%lx\n"
+
+#: dwarf.c:3593
+#, c-format
+msgid " Extension opcode arguments:\n"
+msgstr ""
+
+#: dwarf.c:3601
+#, c-format
+msgid " DW_MACRO_GNU_%02x has no arguments\n"
+msgstr ""
+
+#: dwarf.c:3604
+#, c-format
+msgid " DW_MACRO_GNU_%02x arguments: "
+msgstr ""
+
+#: dwarf.c:3628
+#, c-format
+msgid "Invalid extension opcode form %s\n"
+msgstr ""
+
+#: dwarf.c:3645
+msgid ".debug_macro section not zero terminated\n"
+msgstr ""
+
+#: dwarf.c:3666
+msgid "DW_MACRO_GNU_start_file used, but no .debug_line offset provided.\n"
+msgstr ""
+
+#: dwarf.c:3672
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACRO_GNU_start_file - ред: %d ном.файл: %d\n"
+
+#: dwarf.c:3675
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d filename: %s%s%s\n"
+msgstr " DW_MACRO_GNU_start_file - ред: %d ном.файл: %d файл: %s%s%s\n"
+
+#: dwarf.c:3683
+#, c-format
+msgid " DW_MACRO_GNU_end_file\n"
+msgstr " DW_MACRO_GNU_end_file\n"
+
+#: dwarf.c:3691
+#, c-format
+msgid " DW_MACRO_GNU_define - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_define - ред : %d Ð¼Ð°ÐºÑ€Ð¾Ñ : %s\n"
+
+#: dwarf.c:3700
+#, c-format
+msgid " DW_MACRO_GNU_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_undef - ред : %d Ð¼Ð°ÐºÑ€Ð¾Ñ : %s\n"
+
+#: dwarf.c:3710
+#, c-format
+msgid " DW_MACRO_GNU_define_indirect - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_define_indirect - ред : %d Ð¼Ð°ÐºÑ€Ð¾Ñ : %s\n"
+
+#: dwarf.c:3720
+#, c-format
+msgid " DW_MACRO_GNU_undef_indirect - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_undef_indirect - ред : %d Ð¼Ð°ÐºÑ€Ð¾Ñ : %s\n"
+
+#: dwarf.c:3727
+#, c-format
+msgid " DW_MACRO_GNU_transparent_include - offset : 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:3734
+#, c-format
+msgid " Unknown macro opcode %02x seen\n"
+msgstr " ÐеизвеÑтен код на макроÑ: %02x\n"
+
+#: dwarf.c:3746
+#, c-format
+msgid " DW_MACRO_GNU_%02x\n"
+msgstr " DW_MACRO_GNU_%02x\n"
+
+#: dwarf.c:3749
+#, c-format
+msgid " DW_MACRO_GNU_%02x -"
+msgstr " DW_MACRO_GNU_%02x -"
+
+#: dwarf.c:3790
+#, c-format
+msgid " Number TAG\n"
+msgstr ""
+
+#: dwarf.c:3799
+msgid "has children"
+msgstr ""
+
+#: dwarf.c:3799
+msgid "no children"
+msgstr ""
+
+#: dwarf.c:3850 dwarf.c:4077 dwarf.c:4311
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"Празен раздел %s.\n"
+
+#: dwarf.c:3856 dwarf.c:4317
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr "Ðе може да Ñе зареди/направи разбор на раздел .debug_info, така че не може да Ñе разтълкува раздела %s.\n"
+
+#: dwarf.c:3900
+msgid "No location lists in .debug_info section!\n"
+msgstr "Ð’ раздел .debug_info липÑва ÑпиÑък Ñ Ð¼ÐµÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ !\n"
+
+#: dwarf.c:3905
+#, c-format
+msgid "Location lists in %s section start at 0x%s\n"
+msgstr ""
+
+#: dwarf.c:3912
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr ""
+
+#: dwarf.c:3961
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Открита е дупка [0x%lx - 0x%lx] в раздел .debug_loc.\n"
+
+#: dwarf.c:3965
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr ""
+
+#: dwarf.c:3973
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr ""
+
+#: dwarf.c:3982 dwarf.c:4017 dwarf.c:4027
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "СпиÑъкът Ñ Ð¼ÐµÑтоположениÑ, започнал от отмеÑтване 0x%lx, не е завършен.\n"
+
+#: dwarf.c:4001 dwarf.c:4405
+#, c-format
+msgid "<End of list>\n"
+msgstr "<Край на ÑпиÑък>\n"
+
+#: dwarf.c:4011
+#, c-format
+msgid "(base address)\n"
+msgstr "(оÑновен адреÑ)\n"
+
+#: dwarf.c:4048
+msgid " (start == end)"
+msgstr " (начало == край)"
+
+#: dwarf.c:4050
+msgid " (start > end)"
+msgstr " (начало > край)"
+
+#: dwarf.c:4060
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr "Ðамерени %ld неизползвани байта в ÐºÑ€Ð°Ñ Ð½Ð° раздел %s\n"
+
+#: dwarf.c:4206
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr ""
+
+#: dwarf.c:4210
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Дължина: %ld\n"
+
+#: dwarf.c:4212
+#, c-format
+msgid " Version: %d\n"
+msgstr " ВерÑиÑ: %d\n"
+
+#: dwarf.c:4213
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr " ОтмеÑтване в .debug_info: 0x%lx\n"
+
+#: dwarf.c:4215
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Размер на показалец: %d\n"
+
+#: dwarf.c:4216
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " Размер на чаÑÑ‚: %d\n"
+
+#: dwarf.c:4222
+#, c-format
+msgid "Invalid address size in %s section!\n"
+msgstr ""
+
+#: dwarf.c:4232
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr "Размер на показалеца + размер на чаÑта не е Ñтепен на две.\n"
+
+#: dwarf.c:4237
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" ÐÐ´Ñ€ÐµÑ Ð”ÑŠÐ»Ð¶Ð¸Ð½Ð°\n"
+
+#: dwarf.c:4239
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" ÐÐ´Ñ€ÐµÑ Ð”ÑŠÐ»Ð¶Ð¸Ð½Ð°\n"
+
+#: dwarf.c:4327
+msgid "No range lists in .debug_info section!\n"
+msgstr ""
+
+#: dwarf.c:4351
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:4355
+#, c-format
+msgid " Offset Begin End\n"
+msgstr " ОтмеÑÑ‚ Ðачало Край\n"
+
+#: dwarf.c:4376
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Открита е дупка [0x%lx - 0x%lx] в раздел %s.\n"
+
+#: dwarf.c:4380
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Открито е припокриване [0x%lx - 0x%lx] в раздел %s.\n"
+
+#: dwarf.c:4423
+msgid "(start == end)"
+msgstr "(начало == край)"
+
+#: dwarf.c:4425
+msgid "(start > end)"
+msgstr "(начало > край)"
+
+#: dwarf.c:4678
+msgid "bad register: "
+msgstr ""
+
+#. The documentation for the format of this file is in gdb/dwarf2read.c.
+#: dwarf.c:4681 dwarf.c:5490
+#, c-format
+msgid "Contents of the %s section:\n"
+msgstr "Съдържание на раздел %s:\n"
+
+#: dwarf.c:5451
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr ""
+
+#: dwarf.c:5453
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr ""
+
+#: dwarf.c:5494
+#, c-format
+msgid "Truncated header in the %s section.\n"
+msgstr ""
+
+#: dwarf.c:5499
+#, c-format
+msgid "Version %ld\n"
+msgstr "ВерÑÐ¸Ñ %ld\n"
+
+#: dwarf.c:5506
+msgid "The address table data in version 3 may be wrong.\n"
+msgstr ""
+
+#: dwarf.c:5509
+msgid "Version 4 does not support case insensitive lookups.\n"
+msgstr ""
+
+#: dwarf.c:5514
+#, c-format
+msgid "Unsupported version %lu.\n"
+msgstr ""
+
+#: dwarf.c:5530
+#, c-format
+msgid "Corrupt header in the %s section.\n"
+msgstr ""
+
+#: dwarf.c:5545
+#, c-format
+msgid ""
+"\n"
+"CU table:\n"
+msgstr ""
+
+#: dwarf.c:5551
+#, c-format
+msgid "[%3u] 0x%lx - 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:5556
+#, c-format
+msgid ""
+"\n"
+"TU table:\n"
+msgstr ""
+
+#: dwarf.c:5563
+#, c-format
+msgid "[%3u] 0x%lx 0x%lx "
+msgstr ""
+
+#: dwarf.c:5570
+#, c-format
+msgid ""
+"\n"
+"Address table:\n"
+msgstr ""
+
+#: dwarf.c:5579
+#, c-format
+msgid "%lu\n"
+msgstr ""
+
+#: dwarf.c:5582
+#, c-format
+msgid ""
+"\n"
+"Symbol table:\n"
+msgstr ""
+
+#: dwarf.c:5616
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr ""
+
+#: dwarf.c:5752 dwarf.c:5822
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Ðеразпозната Ð¾Ð¿Ñ†Ð¸Ñ Ð·Ð° проÑледÑване '%s'\n"
+
+#: elfcomm.c:39
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Грешка: "
+
+#: elfcomm.c:50
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Предупр.: "
+
+#: elfcomm.c:82 elfcomm.c:117 elfcomm.c:167 elfcomm.c:216
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr ""
+
+#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3683 readelf.c:3991
+#: readelf.c:4034 readelf.c:4108 readelf.c:4187 readelf.c:4965 readelf.c:4989
+#: readelf.c:7397 readelf.c:7443 readelf.c:7642 readelf.c:8863 readelf.c:8877
+#: readelf.c:9423 readelf.c:9439 readelf.c:9482 readelf.c:9507 readelf.c:11904
+#: readelf.c:12096 readelf.c:12929
+msgid "Out of memory\n"
+msgstr "ÐедоÑтиг на памет\n"
+
+#: elfcomm.c:312
+#, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr "%s: не можа да Ñе доÑтигне първото заглавие в архива\n"
+
+#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13418
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: не можа да Ñе прочете заглавието на архива\n"
+
+#: elfcomm.c:347
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr "%s: индекÑа на архива е празен\n"
+
+#: elfcomm.c:355 elfcomm.c:381
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: не можа да Ñе прочете индекÑа на архива\n"
+
+#: elfcomm.c:365
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr "%s: очава Ñе индекÑа на архива да е Ñ %ld запиÑа, но размера на заглавието твърде малък\n"
+
+#: elfcomm.c:373
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr "ÐедоÑтиг на памет при четене на имена от индекÑа на архива\n"
+
+#: elfcomm.c:392
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr ""
+
+#: elfcomm.c:405
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr "%s: архива е Ñ Ð¸Ð½Ð´ÐµÐºÑ, но е без имена\n"
+
+#: elfcomm.c:413
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr ""
+
+#: elfcomm.c:419
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr ""
+
+#: elfcomm.c:428
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr ""
+
+#: elfcomm.c:440
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr ""
+
+#: elfcomm.c:446
+#, c-format
+msgid "%s has no archive index\n"
+msgstr ""
+
+#: elfcomm.c:457
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr ""
+
+#: elfcomm.c:465
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr ""
+
+#: elfcomm.c:605
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr ""
+
+#: elfcomm.c:616 elfedit.c:347 readelf.c:13424
+#, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr ""
+
+#: elfedit.c:73
+#, c-format
+msgid "%s: Not an ELF file - wrong magic bytes at the start\n"
+msgstr ""
+
+#: elfedit.c:81
+#, c-format
+msgid "%s: Unsupported EI_VERSION: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:97
+#, c-format
+msgid "%s: Unmatched EI_CLASS: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:108
+#, c-format
+msgid "%s: Unmatched e_machine: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:119
+#, c-format
+msgid "%s: Unmatched e_type: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:130
+#, c-format
+msgid "%s: Unmatched EI_OSABI: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:163
+#, c-format
+msgid "%s: Failed to update ELF header: %s\n"
+msgstr ""
+
+#: elfedit.c:196
+#, c-format
+msgid "Unsupported EI_CLASS: %d\n"
+msgstr ""
+
+#: elfedit.c:229
+msgid ""
+"This executable has been built without support for a\n"
+"64 bit data type and so it cannot process 64 bit ELF files.\n"
+msgstr ""
+
+#: elfedit.c:270
+#, c-format
+msgid "%s: Failed to read ELF header\n"
+msgstr ""
+
+#: elfedit.c:277
+#, c-format
+msgid "%s: Failed to seek to ELF header\n"
+msgstr ""
+
+#: elfedit.c:331 readelf.c:13410
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s: не можа да Ñе поÑтигне Ñледващото заглавие на архива\n"
+
+#: elfedit.c:362 elfedit.c:371 readelf.c:13438 readelf.c:13447
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr ""
+
+#: elfedit.c:391 elfedit.c:483
+#, c-format
+msgid "Input file '%s' is not readable\n"
+msgstr "Ðечетим входÑщ файл '%s'\n"
+
+#: elfedit.c:415
+#, c-format
+msgid "%s: failed to seek to archive member\n"
+msgstr "%s: не уÑÐ¿Ñ Ð¿Ñ€ÐµÐ¼ÐµÑтването към член на архива\n"
+
+#: elfedit.c:454 readelf.c:13533
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "'%s': ÐÑма такъв файл\n"
+
+#: elfedit.c:456 readelf.c:13535
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr ""
+
+#: elfedit.c:463 readelf.c:13542
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "'%s' не е обикновен файл\n"
+
+#: elfedit.c:489 readelf.c:13555
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr ""
+
+#: elfedit.c:547
+#, c-format
+msgid "Unknown OSABI: %s\n"
+msgstr ""
+
+#: elfedit.c:568
+#, c-format
+msgid "Unknown machine type: %s\n"
+msgstr "ÐеизвеÑтен тип машина: %s\n"
+
+#: elfedit.c:587
+#, c-format
+msgid "Unknown machine type: %d\n"
+msgstr "ÐеизвеÑтен тип машина: %d\n"
+
+#: elfedit.c:606
+#, c-format
+msgid "Unknown type: %s\n"
+msgstr "Ðепознат тип: %s\n"
+
+#: elfedit.c:637
+#, c-format
+msgid "Usage: %s <option(s)> elffile(s)\n"
+msgstr "Употреба: %s <опции> <обектни файлове>\n"
+
+#: elfedit.c:639
+#, c-format
+msgid " Update the ELF header of ELF files\n"
+msgstr ""
+
+#: elfedit.c:640 objcopy.c:475 objcopy.c:585
+#, c-format
+msgid " The options are:\n"
+msgstr " ВъзможноÑтите Ñа:\n"
+
+#: elfedit.c:641
+#, c-format
+msgid ""
+" --input-mach <machine> Set input machine type to <machine>\n"
+" --output-mach <machine> Set output machine type to <machine>\n"
+" --input-type <type> Set input file type to <type>\n"
+" --output-type <type> Set output file type to <type>\n"
+" --input-osabi <osabi> Set input OSABI to <osabi>\n"
+" --output-osabi <osabi> Set output OSABI to <osabi>\n"
+" -h --help Display this information\n"
+" -v --version Display the version number of %s\n"
+msgstr ""
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr ""
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:47
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:48
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr ""
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "неочакван край на данните за проÑледÑване"
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "неправилно чиÑло"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "неправилна дължина на низ"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr ""
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr ""
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr ""
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr ""
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr ""
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr ""
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr ""
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr ""
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr ""
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr ""
+
+#: ieee.c:1208
+msgid "unknown BB type"
+msgstr ""
+
+#: ieee.c:1217
+msgid "stack overflow"
+msgstr ""
+
+#: ieee.c:1240
+msgid "stack underflow"
+msgstr ""
+
+#: ieee.c:1352 ieee.c:1422 ieee.c:2120
+msgid "illegal variable index"
+msgstr ""
+
+#: ieee.c:1400
+msgid "illegal type index"
+msgstr ""
+
+#: ieee.c:1410 ieee.c:1447
+msgid "unknown TY code"
+msgstr ""
+
+#: ieee.c:1429
+msgid "undefined variable in TY"
+msgstr ""
+
+#. Pascal file name. FIXME.
+#: ieee.c:1841
+msgid "Pascal file name not supported"
+msgstr ""
+
+#: ieee.c:1889
+msgid "unsupported qualifier"
+msgstr ""
+
+#: ieee.c:2158
+msgid "undefined variable in ATN"
+msgstr ""
+
+#: ieee.c:2201
+msgid "unknown ATN type"
+msgstr ""
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2323
+msgid "unsupported ATN11"
+msgstr ""
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2350
+msgid "unsupported ATN12"
+msgstr ""
+
+#: ieee.c:2410
+msgid "unexpected string in C++ misc"
+msgstr ""
+
+#: ieee.c:2423
+msgid "bad misc record"
+msgstr ""
+
+#: ieee.c:2464
+msgid "unrecognized C++ misc record"
+msgstr ""
+
+#: ieee.c:2579
+msgid "undefined C++ object"
+msgstr ""
+
+#: ieee.c:2613
+msgid "unrecognized C++ object spec"
+msgstr ""
+
+#: ieee.c:2649
+msgid "unsupported C++ object type"
+msgstr ""
+
+#: ieee.c:2659
+msgid "C++ base class not defined"
+msgstr ""
+
+#: ieee.c:2671 ieee.c:2776
+msgid "C++ object has no fields"
+msgstr ""
+
+#: ieee.c:2690
+msgid "C++ base class not found in container"
+msgstr ""
+
+#: ieee.c:2797
+msgid "C++ data member not found in container"
+msgstr ""
+
+#: ieee.c:2838 ieee.c:2988
+msgid "unknown C++ visibility"
+msgstr ""
+
+#: ieee.c:2872
+msgid "bad C++ field bit pos or size"
+msgstr ""
+
+#: ieee.c:2964
+msgid "bad type for C++ method function"
+msgstr ""
+
+#: ieee.c:2974
+msgid "no type information for C++ method function"
+msgstr ""
+
+#: ieee.c:3013
+msgid "C++ static virtual method"
+msgstr ""
+
+#: ieee.c:3108
+msgid "unrecognized C++ object overhead spec"
+msgstr ""
+
+#: ieee.c:3147
+msgid "undefined C++ vtable"
+msgstr ""
+
+#: ieee.c:3216
+msgid "C++ default values not in a function"
+msgstr ""
+
+#: ieee.c:3256
+msgid "unrecognized C++ default type"
+msgstr ""
+
+#: ieee.c:3287
+msgid "reference parameter is not a pointer"
+msgstr ""
+
+#: ieee.c:3370
+msgid "unrecognized C++ reference type"
+msgstr ""
+
+#: ieee.c:3452
+msgid "C++ reference not found"
+msgstr ""
+
+#: ieee.c:3460
+msgid "C++ reference is not pointer"
+msgstr ""
+
+#: ieee.c:3486 ieee.c:3494
+msgid "missing required ASN"
+msgstr ""
+
+#: ieee.c:3521 ieee.c:3529
+msgid "missing required ATN65"
+msgstr ""
+
+#: ieee.c:3543
+msgid "bad ATN65 record"
+msgstr "неправилен Ð·Ð°Ð¿Ð¸Ñ ATN65"
+
+#: ieee.c:4171
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "IEEE - чиÑлово препълване: 0x"
+
+#: ieee.c:4215
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "IEEE - препълване при дължина на низ: %u\n"
+
+#: ieee.c:5213
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "IEEE - неподдържан размер на цÑло чиÑло%u\n"
+
+#: ieee.c:5247
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "IEEE - неподдържан размер на чиÑло Ñ Ð¿Ð»Ð°Ð²Ð°Ñ‰Ð° запетаÑ%u\n"
+
+#: ieee.c:5281
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "IEEE - неподдържан размер на комплекÑно чиÑло %u\n"
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr ""
+
+#: nlmconv.c:274 srconv.c:1824
+msgid "input and output files must be different"
+msgstr "входÑÑ‰Ð¸Ñ Ð¸ изходÑÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð» Ñ‚Ñ€Ñбва да Ñа различни"
+
+#: nlmconv.c:321
+msgid "input file named both on command line and with INPUT"
+msgstr "входÑÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð» е зададен на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´ и чрез INPUT"
+
+#: nlmconv.c:330
+msgid "no input file"
+msgstr "липÑва входÑщ файл"
+
+#: nlmconv.c:360
+msgid "no name for output file"
+msgstr "липÑва име на изходÑщ файл"
+
+#: nlmconv.c:374
+msgid "warning: input and output formats are not compatible"
+msgstr "предупреждение: входÑÑ‰Ð¸Ñ Ð¸ изходÑÑ‰Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ не Ñа ÑъвмеÑтими"
+
+#: nlmconv.c:404
+msgid "make .bss section"
+msgstr "Ñъздаване на раздел .bss "
+
+#: nlmconv.c:414
+msgid "make .nlmsections section"
+msgstr "Ñъздаване на раздел .nlmsections "
+
+#: nlmconv.c:442
+msgid "set .bss vma"
+msgstr ""
+
+#: nlmconv.c:449
+msgid "set .data size"
+msgstr ""
+
+#: nlmconv.c:629
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr ""
+
+#: nlmconv.c:649
+msgid "set start address"
+msgstr "задава начален адреÑ"
+
+#: nlmconv.c:698
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "предупреждение: липÑва определение за започващата процедура %s"
+
+#: nlmconv.c:700
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "предупреждение: липÑва определение за завършваща процедура %s"
+
+#: nlmconv.c:702
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "предупреждение: липÑва определение за проверÑваща процедура %s"
+
+#: nlmconv.c:722 nlmconv.c:908
+msgid "custom section"
+msgstr "раздел по поръчка"
+
+#: nlmconv.c:742 nlmconv.c:937
+msgid "help section"
+msgstr "помощен раздел"
+
+#: nlmconv.c:764 nlmconv.c:955
+msgid "message section"
+msgstr "раздел ÑъобщениÑ"
+
+#: nlmconv.c:779 nlmconv.c:988
+msgid "module section"
+msgstr "раздел на модула"
+
+#: nlmconv.c:798 nlmconv.c:1004
+msgid "rpc section"
+msgstr "раздел за отдалечено извикване"
+
+#. There is no place to record this information.
+#: nlmconv.c:834
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr ""
+
+#: nlmconv.c:855 nlmconv.c:1023
+msgid "shared section"
+msgstr ""
+
+#: nlmconv.c:863
+msgid "warning: No version number given"
+msgstr ""
+
+#: nlmconv.c:903 nlmconv.c:932 nlmconv.c:950 nlmconv.c:999 nlmconv.c:1018
+#, c-format
+msgid "%s: read: %s"
+msgstr ""
+
+#: nlmconv.c:925
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr ""
+
+#: nlmconv.c:1101
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr ""
+
+#: nlmconv.c:1102
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr ""
+
+#: nlmconv.c:1103
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+
+#: nlmconv.c:1144
+#, c-format
+msgid "support not compiled in for %s"
+msgstr ""
+
+#: nlmconv.c:1181
+msgid "make section"
+msgstr ""
+
+#: nlmconv.c:1195
+msgid "set section size"
+msgstr ""
+
+#: nlmconv.c:1201
+msgid "set section alignment"
+msgstr ""
+
+#: nlmconv.c:1205
+msgid "set section flags"
+msgstr ""
+
+#: nlmconv.c:1216
+msgid "set .nlmsections size"
+msgstr ""
+
+#: nlmconv.c:1297 nlmconv.c:1305 nlmconv.c:1314 nlmconv.c:1319
+msgid "set .nlmsection contents"
+msgstr ""
+
+#: nlmconv.c:1796
+msgid "stub section sizes"
+msgstr ""
+
+#: nlmconv.c:1843
+msgid "writing stub"
+msgstr ""
+
+#: nlmconv.c:1927
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr ""
+
+#: nlmconv.c:1991
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr ""
+
+#: nlmconv.c:2118
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr ""
+
+#: nlmconv.c:2133
+#, c-format
+msgid "Execution of %s failed"
+msgstr ""
+
+#: nm.c:225 size.c:78 strings.c:650
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Употреба: %s [опциÑ(-и)] [файл(-ове)]\n"
+
+#: nm.c:226
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " Изброй имената от [файл(-ове)] (a.out по подразбиране).\n"
+
+#: nm.c:227
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+
+#: nm.c:250
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr ""
+
+#: nm.c:253
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+
+#: nm.c:301
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: Ñгрешена оÑнова"
+
+#: nm.c:325
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: Ñгрешен входÑш формат"
+
+#: nm.c:346 readelf.c:8616 readelf.c:8661
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<оÑобен за процеÑор>: %d"
+
+#: nm.c:348 readelf.c:8625 readelf.c:8679
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<оÑобен за ОС>: %d"
+
+#: nm.c:350 readelf.c:8628 readelf.c:8682
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<неизвеÑтен>: %d"
+
+#: nm.c:390
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Показалец за архив:\n"
+
+#: nm.c:1258
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ðеопределени имена в %s:\n"
+"\n"
+
+#: nm.c:1260
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Имена от %s:\n"
+"\n"
+
+#: nm.c:1262 nm.c:1313
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Име Стойн. ÐšÐ»Ð°Ñ Ð¢Ð¸Ð¿ Размер Ред ДÑл\n"
+"\n"
+
+#: nm.c:1265 nm.c:1316
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Име Стойн. ÐšÐ»Ð°Ñ Ð¢Ð¸Ð¿ Размер Ред ДÑл\n"
+"\n"
+
+#: nm.c:1309
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ðеопределени имена от %s[%s]:\n"
+"\n"
+
+#: nm.c:1311
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Имена от %s[%s]:\n"
+"\n"
+
+#: nm.c:1403
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr ""
+
+#: nm.c:1631
+msgid "Only -X 32_64 is supported"
+msgstr "Само -X 32_64 Ñе подрържа"
+
+#: nm.c:1660
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr ""
+
+#: nm.c:1661
+msgid "will produce no output, since undefined symbols have no size."
+msgstr ""
+
+#: nm.c:1689
+#, c-format
+msgid "data size %ld"
+msgstr ""
+
+#: objcopy.c:473 srconv.c:1732
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr ""
+
+#: objcopy.c:474
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr ""
+
+#: objcopy.c:476
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set output arch, when input is arch-less\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff objects.\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" --compress-debug-sections Compress DWARF debug sections using zlib\n"
+" --decompress-debug-sections Decompress DWARF debug sections using zlib\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"
+msgstr ""
+
+#: objcopy.c:583
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr ""
+
+#: objcopy.c:584
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr ""
+
+#: objcopy.c:586
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+
+#: objcopy.c:659
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr ""
+
+#: objcopy.c:660
+#, c-format
+msgid "supported flags: %s"
+msgstr ""
+
+#: objcopy.c:761
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr ""
+
+#: objcopy.c:764 objcopy.c:3417
+#, c-format
+msgid "%s: fread failed"
+msgstr ""
+
+#: objcopy.c:837
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr ""
+
+#: objcopy.c:1153
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr ""
+
+#: objcopy.c:1236
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr ""
+
+#: objcopy.c:1240
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr ""
+
+#: objcopy.c:1268
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr ""
+
+#: objcopy.c:1346
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr ""
+
+#: objcopy.c:1349
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr ""
+
+#: objcopy.c:1359
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr ""
+
+#: objcopy.c:1385
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr ""
+
+#: objcopy.c:1397
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr ""
+
+#: objcopy.c:1454
+msgid "Unable to change endianness of input file(s)"
+msgstr ""
+
+#: objcopy.c:1463
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr ""
+
+#: objcopy.c:1512
+#, c-format
+msgid "Input file `%s' ignores binary architecture parameter."
+msgstr ""
+
+#: objcopy.c:1520
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr ""
+
+#: objcopy.c:1523
+#, c-format
+msgid "Output file cannot represent architecture `%s'"
+msgstr ""
+
+#: objcopy.c:1586
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr ""
+
+#: objcopy.c:1645
+#, c-format
+msgid "can't add section '%s'"
+msgstr ""
+
+#: objcopy.c:1659
+#, c-format
+msgid "can't create section `%s'"
+msgstr ""
+
+#: objcopy.c:1705
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr ""
+
+#: objcopy.c:1798
+msgid "Can't fill gap after section"
+msgstr ""
+
+#: objcopy.c:1822
+msgid "can't add padding"
+msgstr ""
+
+#: objcopy.c:1913
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr ""
+
+#: objcopy.c:1976
+msgid "error copying private BFD data"
+msgstr ""
+
+#: objcopy.c:1987
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr ""
+
+#: objcopy.c:1991
+msgid "treating that number as an absolute e_machine value instead"
+msgstr ""
+
+#: objcopy.c:1995
+msgid "ignoring the alternative value"
+msgstr ""
+
+#: objcopy.c:2027 objcopy.c:2063
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr ""
+
+#: objcopy.c:2093
+msgid "Unable to recognise the format of file"
+msgstr ""
+
+#: objcopy.c:2220
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr ""
+
+#: objcopy.c:2364
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr ""
+
+#: objcopy.c:2415
+msgid "error in private header data"
+msgstr ""
+
+#: objcopy.c:2493
+msgid "failed to create output section"
+msgstr ""
+
+#: objcopy.c:2507
+msgid "failed to set size"
+msgstr ""
+
+#: objcopy.c:2521
+msgid "failed to set vma"
+msgstr ""
+
+#: objcopy.c:2546
+msgid "failed to set alignment"
+msgstr ""
+
+#: objcopy.c:2580
+msgid "failed to copy private data"
+msgstr ""
+
+#: objcopy.c:2662
+msgid "relocation count is negative"
+msgstr ""
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2723
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr ""
+
+#: objcopy.c:2909
+msgid "can't create debugging section"
+msgstr ""
+
+#: objcopy.c:2922
+msgid "can't set debugging section contents"
+msgstr ""
+
+#: objcopy.c:2930
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr ""
+
+#: objcopy.c:3073
+msgid "could not create temporary file to hold stripped copy"
+msgstr ""
+
+#: objcopy.c:3145
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr ""
+
+#: objcopy.c:3175
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr ""
+
+#: objcopy.c:3237
+msgid "byte number must be non-negative"
+msgstr ""
+
+#: objcopy.c:3243
+#, c-format
+msgid "architecture %s unknown"
+msgstr ""
+
+#: objcopy.c:3251
+msgid "interleave must be positive"
+msgstr ""
+
+#: objcopy.c:3260
+msgid "interleave width must be positive"
+msgstr "Ширината за преÑкачане Ñ‚Ñ€Ñбва да е положителна"
+
+#: objcopy.c:3280 objcopy.c:3288
+#, c-format
+msgid "%s both copied and removed"
+msgstr ""
+
+#: objcopy.c:3387 objcopy.c:3467 objcopy.c:3575 objcopy.c:3606 objcopy.c:3630
+#: objcopy.c:3634 objcopy.c:3654
+#, c-format
+msgid "bad format for %s"
+msgstr ""
+
+#: objcopy.c:3399
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr ""
+
+#: objcopy.c:3544
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr ""
+
+#: objcopy.c:3705
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr ""
+
+#: objcopy.c:3723
+msgid "unable to parse alternative machine code"
+msgstr ""
+
+#: objcopy.c:3768
+msgid "number of bytes to reverse must be positive and even"
+msgstr ""
+
+#: objcopy.c:3771
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr ""
+
+#: objcopy.c:3786
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr ""
+
+#: objcopy.c:3792
+#, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr ""
+
+#: objcopy.c:3817
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr ""
+
+#: objcopy.c:3823
+#, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr ""
+
+#: objcopy.c:3852
+msgid "interleave start byte must be set with --byte"
+msgstr ""
+
+#: objcopy.c:3855
+msgid "byte number must be less than interleave"
+msgstr ""
+
+#: objcopy.c:3858
+msgid "interleave width must be less than or equal to interleave - byte`"
+msgstr ""
+
+#: objcopy.c:3885
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr ""
+
+#: objcopy.c:3916
+#, c-format
+msgid "unknown output EFI target: %s"
+msgstr ""
+
+#: objcopy.c:3929
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr ""
+
+#: objcopy.c:3941
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr ""
+
+#: objcopy.c:3969 objcopy.c:3983
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s не е използван"
+
+#: objdump.c:201
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Употреба: %s <опциÑ/-и> <файл/-ове>\n"
+
+#: objdump.c:202
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " Показване на ÑведениÑта от обект <файл/-лове>.\n"
+
+#: objdump.c:203
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " ТрÑбва да Ñе зададе поне един от Ñледните ключове:\n"
+
+#: objdump.c:204
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -P, --private=OPT,OPT... Display object format specific contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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[lLiaprmfFsoRt] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+msgstr ""
+" -a, --archive-headers Извеждане за Ñведение за заглавието на архива\n"
+" -f, --file-headers Извеждане Ñъдържанието на общото заглавие на файла\n"
+" -p, --private-headers Извеждане на Ñъдържанието на чаÑтните заглавиÑ\n"
+" -P, --private=OPT,OPT... Извеждане на чаÑтните ÑъдържаниÑ\n"
+" -h, --[section-]headers Извеждане Ñъдържанието на заглавиÑта на разделите\n"
+" -x, --all-headers Извеждане Ñъдържанието на вÑички заглавиÑ\n"
+" -d, --disassemble Извеждане Ñъдържание на изпълнимите раздели на 'assembler'\n"
+" -D, --disassemble-all Извеждане Ñъдържание на вÑички раздели на 'assembler'\n"
+" -S, --source СмеÑване на програмен код Ñ Ñ€Ð°Ð·Ð°Ñемблиран\n"
+" -s, --full-contents Извеждане на пълното ÑÑŠÐ´ÑŠÑ€Ð¶Ð°Ð½Ð¸Ñ Ð·Ð° вÑички поиÑкани раздели\n"
+" -g, --debugging Извеждане на ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð·Ð° проÑледÑване от Ð¾Ð±ÐµÐºÑ‚Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»\n"
+" -e, --debugging-tags Извеждане на ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð·Ð° проÑледÑване по ctags начин\n"
+" -G, --stabs Display (in raw form) any STABS info in the file\n"
+" -W[lLiaprmfFsoRt] или\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Извездане на DWARF ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ñ‚ файла\n"
+" -t, --syms Извеждане на Ñъдържанието на таблицата/-ите Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð°\n"
+" -T, --dynamic-syms Извеждане на Ñъдържанието на таблицата/-ите Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡Ð½Ð¸Ñ‚Ðµ имена\n"
+" -r, --reloc Извеждане на премеÑтваемите запиÑи от файла\n"
+" -R, --dynamic-reloc Извеждане на динамичните премеÑтваеми запиÑи отфайла\n"
+" @<файл> Прочитане на опциите от <файл>\n"
+" -v, --version Извеждане на верÑиÑта на програмата\n"
+" -i, --info ИзброÑване на поддържаните обектни формати и архитектури\n"
+" -H, --help Извеждане на това Ñведение\n"
+
+#: objdump.c:236
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" Следните ключове Ñа по избор:\n"
+
+#: objdump.c:237
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a single line for -d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+msgstr ""
+
+#: objdump.c:263
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+"\n"
+msgstr ""
+
+#: objdump.c:275
+#, c-format
+msgid ""
+"\n"
+"Options supported for -P/--private switch:\n"
+msgstr ""
+"\n"
+"ВъзможноÑтите за -P/--private ключ Ñа:\n"
+
+#: objdump.c:426
+#, c-format
+msgid "section '%s' mentioned in a -j option, but not found in any input file"
+msgstr "раздела '%s, е зададен от -j опциÑ, но не е намерен в входÑщите файлове"
+
+#: objdump.c:530
+#, c-format
+msgid "Sections:\n"
+msgstr "Раздели:\n"
+
+#: objdump.c:533 objdump.c:537
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr ""
+
+#: objdump.c:539
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr ""
+
+#: objdump.c:543
+#, c-format
+msgid " Flags"
+msgstr "Флагове"
+
+#: objdump.c:586
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: не е динамичен обект"
+
+#: objdump.c:1012 objdump.c:1036
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr " (ОтмеÑтване в файл: 0x%lx)"
+
+#: objdump.c:1662
+#, c-format
+msgid "disassemble_fn returned length %d"
+msgstr "disassemble_fn върна дължина %d"
+
+#: objdump.c:1967
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+"\n"
+"РазглобÑване на раздел %s:\n"
+
+#: objdump.c:2143
+#, c-format
+msgid "can't use supplied machine %s"
+msgstr "не можа де Ñе използва зададената машина %s"
+
+#: objdump.c:2162
+#, c-format
+msgid "can't disassemble for architecture %s\n"
+msgstr "не можа да Ñе разглоби за архитектура %s\n"
+
+#: objdump.c:2242 objdump.c:2265
+#, c-format
+msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"Ðе можа да Ñе извлече Ñъдържанието на раздел '%s'.\n"
+
+#: objdump.c:2406
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"ЛипÑва раздел %s\n"
+"\n"
+
+#: objdump.c:2415
+#, c-format
+msgid "reading %s section of %s failed: %s"
+msgstr "не уÑÐ¿Ñ Ñ‡ÐµÑ‚ÐµÐ½ÐµÑ‚Ð¾ на раздел %s от %s: %s"
+
+#: objdump.c:2459
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"Съдържание на раздел %s:\n"
+"\n"
+
+#: objdump.c:2590
+#, c-format
+msgid "architecture: %s, "
+msgstr "архитектура: %s, "
+
+#: objdump.c:2593
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "флагове 0x%08x:\n"
+
+#: objdump.c:2607
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"начален Ð°Ð´Ñ€ÐµÑ 0x"
+
+#: objdump.c:2633
+msgid "option -P/--private not supported by this file"
+msgstr "опциÑта -P/--private не Ñе поддържа за този файл"
+
+#: objdump.c:2657
+#, c-format
+msgid "target specific dump '%s' not supported"
+msgstr ""
+
+#: objdump.c:2721
+#, c-format
+msgid "Contents of section %s:"
+msgstr "Съдържание на раздел %s:"
+
+#: objdump.c:2723
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr " (Започва Ñе Ñ Ð¾Ñ‚Ð¼ÐµÑтване: 0x%lx)"
+
+#: objdump.c:2729
+msgid "Reading section failed"
+msgstr "Пропадна четенето на раздела"
+
+#: objdump.c:2832
+#, c-format
+msgid "no symbols\n"
+msgstr "нÑма имена\n"
+
+#: objdump.c:2839
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr "без Ñведение за име Ñ Ð½Ð¾Ð¼ÐµÑ€ %ld\n"
+
+#: objdump.c:2842
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "не може да Ñе определи типа на име Ñ Ð½Ð¾Ð¼ÐµÑ€ %ld\n"
+
+#: objdump.c:3163
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: формат на файл %s\n"
+
+#: objdump.c:3223
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: пропадна отпечатването на ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð·Ð° проÑледÑване"
+
+#: objdump.c:3327
+#, c-format
+msgid "In archive %s:\n"
+msgstr "В архив %s:\n"
+
+#: objdump.c:3438
+msgid "error: the start address should be before the end address"
+msgstr "грешка: началниÑÑ‚ Ð°Ð´Ñ€ÐµÑ Ð½Ðµ може да е преди крайниÑÑ‚"
+
+#: objdump.c:3443
+msgid "error: the stop address should be after the start address"
+msgstr "грешка: адреÑа за Ñпиране Ñ‚Ñ€Ñбва да е Ñлед началниÑ"
+
+#: objdump.c:3455
+msgid "error: prefix strip must be non-negative"
+msgstr ""
+
+#: objdump.c:3460
+msgid "error: instruction width must be positive"
+msgstr ""
+
+#: objdump.c:3469
+msgid "unrecognized -E option"
+msgstr "неразпозната -E опциÑ"
+
+#: objdump.c:3480
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "неразпознат тип за подредба (--endian) '%s'"
+
+#: od-xcoff.c:75
+#, c-format
+msgid ""
+"For XCOFF files:\n"
+" header Display the file header\n"
+" aout Display the auxiliary header\n"
+" sections Display the section headers\n"
+" syms Display the symbols table\n"
+" relocs Display the relocation entries\n"
+" lineno Display the line number entries\n"
+" loader Display loader section\n"
+" except Display exception table\n"
+" typchk Display type-check section\n"
+" traceback Display traceback tags\n"
+" toc Display toc symbols\n"
+msgstr ""
+
+#: od-xcoff.c:416
+#, c-format
+msgid " nbr sections: %d\n"
+msgstr ""
+
+#: od-xcoff.c:417
+#, c-format
+msgid " time and date: 0x%08x - "
+msgstr ""
+
+#: od-xcoff.c:419
+#, c-format
+msgid "not set\n"
+msgstr "не е уÑтановен\n"
+
+#: od-xcoff.c:426
+#, c-format
+msgid " symbols off: 0x%08x\n"
+msgstr ""
+
+#: od-xcoff.c:427
+#, c-format
+msgid " nbr symbols: %d\n"
+msgstr " бр. имена : %d\n"
+
+#: od-xcoff.c:428
+#, c-format
+msgid " opt hdr sz: %d\n"
+msgstr ""
+
+#: od-xcoff.c:429
+#, c-format
+msgid " flags: 0x%04x "
+msgstr ""
+
+#: od-xcoff.c:443
+#, c-format
+msgid "Auxiliary header:\n"
+msgstr ""
+
+#: od-xcoff.c:446
+#, c-format
+msgid " No aux header\n"
+msgstr ""
+
+#: od-xcoff.c:451
+#, c-format
+msgid "warning: optionnal header size too large (> %d)\n"
+msgstr ""
+
+#: od-xcoff.c:457
+msgid "cannot read auxhdr"
+msgstr ""
+
+#: od-xcoff.c:522
+#, c-format
+msgid "Section headers (at %u+%u=0x%08x to 0x%08x):\n"
+msgstr ""
+
+#: od-xcoff.c:527
+#, c-format
+msgid " No section header\n"
+msgstr ""
+
+#: od-xcoff.c:532 od-xcoff.c:544 od-xcoff.c:599
+msgid "cannot read section header"
+msgstr "раздела не можа да Ñе прочете"
+
+#: od-xcoff.c:558
+#, c-format
+msgid " Flags: %08x "
+msgstr ""
+
+#: od-xcoff.c:566
+#, c-format
+msgid "overflow - nreloc: %u, nlnno: %u\n"
+msgstr ""
+
+#: od-xcoff.c:587 od-xcoff.c:922 od-xcoff.c:978
+msgid "cannot read section headers"
+msgstr "не може да Ñе прочетат заглавиÑта на чаÑта"
+
+#: od-xcoff.c:646
+msgid "cannot read strings table length"
+msgstr "не можа да Ñе прочете дължината на таблицата Ñ Ð½Ð¸Ð·Ð¾Ð²Ðµ"
+
+#: od-xcoff.c:662
+msgid "cannot read strings table"
+msgstr ""
+
+#: od-xcoff.c:670
+msgid "cannot read symbol table"
+msgstr ""
+
+#: od-xcoff.c:685
+msgid "cannot read symbol entry"
+msgstr ""
+
+#: od-xcoff.c:720
+msgid "cannot read symbol aux entry"
+msgstr ""
+
+#: od-xcoff.c:742
+#, c-format
+msgid "Symbols table (strtable at 0x%08x)"
+msgstr ""
+
+#: od-xcoff.c:747
+#, c-format
+msgid ""
+":\n"
+" No symbols\n"
+msgstr ""
+":\n"
+" нÑма имена\n"
+
+#: od-xcoff.c:753
+#, c-format
+msgid " (no strings):\n"
+msgstr " (нÑма низове):\n"
+
+#: od-xcoff.c:755
+#, c-format
+msgid " (strings size: %08x):\n"
+msgstr ""
+
+#. Translators: 'sc' is for storage class, 'off' for offset.
+#: od-xcoff.c:769
+#, c-format
+msgid " # sc value section type aux name/off\n"
+msgstr ""
+
+#. Section length, number of relocs and line number.
+#: od-xcoff.c:821
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+msgstr ""
+
+#. Section length and number of relocs.
+#: od-xcoff.c:828
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u\n"
+msgstr ""
+
+#: od-xcoff.c:891
+#, c-format
+msgid "offset: %08x"
+msgstr ""
+
+#: od-xcoff.c:934
+#, c-format
+msgid "Relocations for %s (%u)\n"
+msgstr "ПремеÑÑ‚Ð²Ð°Ð½Ð¸Ñ Ð·Ð° %s (%u)\n"
+
+#: od-xcoff.c:937
+msgid "cannot read relocations"
+msgstr "премеÑтваниÑта не Ñе четат"
+
+#: od-xcoff.c:950
+msgid "cannot read relocation entry"
+msgstr ""
+
+#: od-xcoff.c:990
+#, c-format
+msgid "Line numbers for %s (%u)\n"
+msgstr ""
+
+#: od-xcoff.c:993
+msgid "cannot read line numbers"
+msgstr ""
+
+#. Line number, symbol index and physical address.
+#: od-xcoff.c:997
+#, c-format
+msgid "lineno symndx/paddr\n"
+msgstr ""
+
+#: od-xcoff.c:1005
+msgid "cannot read line number entry"
+msgstr ""
+
+#: od-xcoff.c:1048
+#, c-format
+msgid "no .loader section in file\n"
+msgstr "във файла липÑва раздел .loader\n"
+
+#: od-xcoff.c:1054
+#, c-format
+msgid "section .loader is too short\n"
+msgstr "твърде ÐºÑŠÑ Ñ€Ð°Ð·Ð´ÐµÐ» .loader\n"
+
+#: od-xcoff.c:1061
+#, c-format
+msgid "Loader header:\n"
+msgstr ""
+
+#: od-xcoff.c:1063
+#, c-format
+msgid " version: %u\n"
+msgstr " верÑиÑ: %u\n"
+
+#: od-xcoff.c:1066
+#, c-format
+msgid " Unhandled version\n"
+msgstr " Ðеподдържана верÑиÑ\n"
+
+#: od-xcoff.c:1071
+#, c-format
+msgid " nbr symbols: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1073
+#, c-format
+msgid " nbr relocs: %u\n"
+msgstr ""
+
+#. Import string table length.
+#: od-xcoff.c:1075
+#, c-format
+msgid " import strtab len: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1078
+#, c-format
+msgid " nbr import files: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1080
+#, c-format
+msgid " import file off: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1082
+#, c-format
+msgid " string table len: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1084
+#, c-format
+msgid " string table off: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1087
+#, c-format
+msgid "Dynamic symbols:\n"
+msgstr ""
+
+#: od-xcoff.c:1094
+#, c-format
+msgid " %4u %08x %3u "
+msgstr ""
+
+#: od-xcoff.c:1107
+#, c-format
+msgid " %3u %3u "
+msgstr ""
+
+#: od-xcoff.c:1116
+#, c-format
+msgid "(bad offset: %u)"
+msgstr ""
+
+#: od-xcoff.c:1123
+#, c-format
+msgid "Dynamic relocs:\n"
+msgstr ""
+
+#: od-xcoff.c:1163
+#, c-format
+msgid "Import files:\n"
+msgstr ""
+
+#: od-xcoff.c:1195
+#, c-format
+msgid "no .except section in file\n"
+msgstr ""
+
+#: od-xcoff.c:1203
+#, c-format
+msgid "Exception table:\n"
+msgstr ""
+
+#: od-xcoff.c:1238
+#, c-format
+msgid "no .typchk section in file\n"
+msgstr ""
+
+#: od-xcoff.c:1245
+#, c-format
+msgid "Type-check section:\n"
+msgstr ""
+
+#: od-xcoff.c:1292
+#, c-format
+msgid " address beyond section size\n"
+msgstr ""
+
+#: od-xcoff.c:1302
+#, c-format
+msgid " tags at %08x\n"
+msgstr ""
+
+#: od-xcoff.c:1380
+#, c-format
+msgid " number of CTL anchors: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1399
+#, c-format
+msgid " Name (len: %u): "
+msgstr ""
+
+#: od-xcoff.c:1402
+#, c-format
+msgid "[truncated]\n"
+msgstr ""
+
+#: od-xcoff.c:1421
+#, c-format
+msgid " (end of tags at %08x)\n"
+msgstr ""
+
+#: od-xcoff.c:1424
+#, c-format
+msgid " no tags found\n"
+msgstr ""
+
+#: od-xcoff.c:1428
+#, c-format
+msgid " Truncated .text section\n"
+msgstr ""
+
+#: od-xcoff.c:1513
+#, c-format
+msgid "TOC:\n"
+msgstr ""
+
+#: od-xcoff.c:1556
+#, c-format
+msgid "Nbr entries: %-8u Size: %08x (%u)\n"
+msgstr ""
+
+#: od-xcoff.c:1640
+msgid "cannot read header"
+msgstr ""
+
+#: od-xcoff.c:1648
+#, c-format
+msgid "File header:\n"
+msgstr ""
+
+#: od-xcoff.c:1649
+#, c-format
+msgid " magic: 0x%04x (0%04o) "
+msgstr ""
+
+#: od-xcoff.c:1653
+#, c-format
+msgid "(WRMAGIC: writable text segments)"
+msgstr ""
+
+#: od-xcoff.c:1656
+#, c-format
+msgid "(ROMAGIC: readonly sharablee text segments)"
+msgstr ""
+
+#: od-xcoff.c:1659
+#, c-format
+msgid "(TOCMAGIC: readonly text segments and TOC)"
+msgstr ""
+
+#: od-xcoff.c:1662
+#, c-format
+msgid "unknown magic"
+msgstr ""
+
+#: od-xcoff.c:1669
+#, c-format
+msgid " Unhandled magic\n"
+msgstr ""
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr ""
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr ""
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr ""
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr ""
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr ""
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr ""
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr ""
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr ""
+
+#: readelf.c:268
+msgid "<none>"
+msgstr ""
+
+#: readelf.c:269
+msgid "<no-name>"
+msgstr ""
+
+#: readelf.c:270 readelf.c:5083 readelf.c:5594 readelf.c:8132 readelf.c:8250
+#: readelf.c:9233 readelf.c:9327 readelf.c:9388 readelf.c:12391
+#: readelf.c:12394
+msgid "<corrupt>"
+msgstr ""
+
+#: readelf.c:309
+#, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr ""
+
+#: readelf.c:324
+#, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr ""
+
+#: readelf.c:334
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr ""
+
+#: readelf.c:638
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr ""
+
+#: readelf.c:659 readelf.c:757
+msgid "32-bit relocation data"
+msgstr ""
+
+#: readelf.c:671 readelf.c:701 readelf.c:768 readelf.c:797
+msgid "out of memory parsing relocs\n"
+msgstr ""
+
+#: readelf.c:689 readelf.c:786
+msgid "64-bit relocation data"
+msgstr ""
+
+#: readelf.c:902
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr ""
+
+#: readelf.c:904
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr ""
+
+#: readelf.c:909
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr ""
+
+#: readelf.c:911
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr ""
+
+#: readelf.c:919
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr ""
+
+#: readelf.c:921
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr ""
+
+#: readelf.c:926
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr ""
+
+#: readelf.c:928
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr ""
+
+#: readelf.c:1245 readelf.c:1405 readelf.c:1413
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr ""
+
+#: readelf.c:1270
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr ""
+
+#: readelf.c:1277
+#, c-format
+msgid " bad symbol index: %08lx"
+msgstr ""
+
+#: readelf.c:1363
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr ""
+
+#: readelf.c:1365
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr ""
+
+#: readelf.c:1758
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr ""
+
+#: readelf.c:1782
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr ""
+
+#: readelf.c:1786 readelf.c:2858
+#, c-format
+msgid "<unknown>: %lx"
+msgstr ""
+
+#: readelf.c:1799
+msgid "NONE (None)"
+msgstr ""
+
+#: readelf.c:1800
+msgid "REL (Relocatable file)"
+msgstr ""
+
+#: readelf.c:1801
+msgid "EXEC (Executable file)"
+msgstr ""
+
+#: readelf.c:1802
+msgid "DYN (Shared object file)"
+msgstr ""
+
+#: readelf.c:1803
+msgid "CORE (Core file)"
+msgstr ""
+
+#: readelf.c:1807
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr ""
+
+#: readelf.c:1809
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr ""
+
+#: readelf.c:1811
+#, c-format
+msgid "<unknown>: %x"
+msgstr ""
+
+#: readelf.c:1823
+msgid "None"
+msgstr ""
+
+#: readelf.c:1994
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr ""
+
+#: readelf.c:2180
+msgid ", <unknown>"
+msgstr ""
+
+#: readelf.c:2266 readelf.c:7485
+msgid "unknown"
+msgstr ""
+
+#: readelf.c:2267
+msgid "unknown mac"
+msgstr ""
+
+#: readelf.c:2331
+msgid ", relocatable"
+msgstr ""
+
+#: readelf.c:2334
+msgid ", relocatable-lib"
+msgstr ""
+
+#: readelf.c:2357
+msgid ", unknown v850 architecture variant"
+msgstr ""
+
+#: readelf.c:2414
+msgid ", unknown CPU"
+msgstr ""
+
+#: readelf.c:2429
+msgid ", unknown ABI"
+msgstr ""
+
+#: readelf.c:2452 readelf.c:2486
+msgid ", unknown ISA"
+msgstr ""
+
+#: readelf.c:2663
+msgid "Standalone App"
+msgstr ""
+
+#: readelf.c:2672
+msgid "Bare-metal C6000"
+msgstr ""
+
+#: readelf.c:2682 readelf.c:3471 readelf.c:3487
+#, c-format
+msgid "<unknown: %x>"
+msgstr ""
+
+#. This message is probably going to be displayed in a 15
+#. character wide field, so put the hex value first.
+#: readelf.c:3108
+#, c-format
+msgid "%08x: <unknown>"
+msgstr "%08x: <неизвеÑтен>"
+
+#: readelf.c:3163
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr ""
+
+#: readelf.c:3164
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr ""
+
+#: readelf.c:3165
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" --dyn-syms Display the dynamic symbol table\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as relocated bytes\n"
+" -w[lLiaprmfFsoRt] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+
+#: readelf.c:3197
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+msgstr ""
+
+#: readelf.c:3202
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+
+#: readelf.c:3206
+#, 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 ""
+
+#: readelf.c:3235 readelf.c:3264 readelf.c:3268 readelf.c:13623
+msgid "Out of memory allocating dump request table.\n"
+msgstr ""
+
+#: readelf.c:3440
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr ""
+
+#: readelf.c:3455
+msgid "Nothing to do.\n"
+msgstr ""
+
+#: readelf.c:3467 readelf.c:3483 readelf.c:8068
+msgid "none"
+msgstr ""
+
+#: readelf.c:3484
+msgid "2's complement, little endian"
+msgstr ""
+
+#: readelf.c:3485
+msgid "2's complement, big endian"
+msgstr ""
+
+#: readelf.c:3503
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr ""
+
+#: readelf.c:3513
+#, c-format
+msgid "ELF Header:\n"
+msgstr ""
+
+#: readelf.c:3514
+#, c-format
+msgid " Magic: "
+msgstr ""
+
+#: readelf.c:3518
+#, c-format
+msgid " Class: %s\n"
+msgstr ""
+
+#: readelf.c:3520
+#, c-format
+msgid " Data: %s\n"
+msgstr ""
+
+#: readelf.c:3522
+#, c-format
+msgid " Version: %d %s\n"
+msgstr ""
+
+#: readelf.c:3527
+#, c-format
+msgid "<unknown: %lx>"
+msgstr ""
+
+#: readelf.c:3529
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr ""
+
+#: readelf.c:3531
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr ""
+
+#: readelf.c:3533
+#, c-format
+msgid " Type: %s\n"
+msgstr ""
+
+#: readelf.c:3535
+#, c-format
+msgid " Machine: %s\n"
+msgstr ""
+
+#: readelf.c:3537
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr ""
+
+#: readelf.c:3540
+#, c-format
+msgid " Entry point address: "
+msgstr ""
+
+#: readelf.c:3542
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+
+#: readelf.c:3544
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+
+#: readelf.c:3546
+#, c-format
+msgid " (bytes into file)\n"
+msgstr ""
+
+#: readelf.c:3548
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr ""
+
+#: readelf.c:3551
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr ""
+
+#: readelf.c:3553
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr ""
+
+#: readelf.c:3555
+#, c-format
+msgid " Number of program headers: %ld"
+msgstr ""
+
+#: readelf.c:3562
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr ""
+
+#: readelf.c:3564
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr ""
+
+#: readelf.c:3569
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr ""
+
+#: readelf.c:3576
+#, c-format
+msgid " <corrupt: out of range>"
+msgstr ""
+
+#: readelf.c:3610 readelf.c:3644
+msgid "program headers"
+msgstr ""
+
+#: readelf.c:3711
+msgid "possibly corrupt ELF header - it has a non-zero program header offset, but no program headers"
+msgstr ""
+
+#: readelf.c:3714
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+
+#: readelf.c:3720
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+
+#: readelf.c:3721
+#, c-format
+msgid "Entry point "
+msgstr ""
+
+#: readelf.c:3723
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+
+#: readelf.c:3735 readelf.c:3737
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+
+#: readelf.c:3741
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr ""
+
+#: readelf.c:3744
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr ""
+
+#: readelf.c:3748
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr ""
+
+#: readelf.c:3750
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr ""
+
+#: readelf.c:3843
+msgid "more than one dynamic segment\n"
+msgstr ""
+
+#: readelf.c:3862
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr ""
+
+#: readelf.c:3877
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr ""
+
+#: readelf.c:3880
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr ""
+
+#: readelf.c:3888
+msgid "Unable to find program interpreter name\n"
+msgstr ""
+
+#: readelf.c:3895
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr ""
+
+#: readelf.c:3899
+msgid "Unable to read program interpreter name\n"
+msgstr ""
+
+#: readelf.c:3902
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+
+#: readelf.c:3914
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+
+#: readelf.c:3915
+#, c-format
+msgid " Segment Sections...\n"
+msgstr ""
+
+#: readelf.c:3951
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr ""
+
+#: readelf.c:3967
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr ""
+
+#: readelf.c:3982 readelf.c:4025
+msgid "section headers"
+msgstr ""
+
+#: readelf.c:4074 readelf.c:4154
+msgid "sh_entsize is zero\n"
+msgstr ""
+
+#: readelf.c:4082 readelf.c:4162
+msgid "Invalid sh_entsize\n"
+msgstr ""
+
+#: readelf.c:4087 readelf.c:4167
+msgid "symbols"
+msgstr ""
+
+#: readelf.c:4099 readelf.c:4178
+msgid "symbol table section indicies"
+msgstr ""
+
+#: readelf.c:4439
+#, c-format
+msgid "UNKNOWN (%*.*lx)"
+msgstr ""
+
+#: readelf.c:4461
+msgid "possibly corrupt ELF file header - it has a non-zero section header offset, but no section headers\n"
+msgstr ""
+
+#: readelf.c:4464
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+
+#: readelf.c:4470
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr ""
+
+#: readelf.c:4491 readelf.c:5079 readelf.c:5491 readelf.c:5797 readelf.c:6210
+#: readelf.c:7093 readelf.c:9213
+msgid "string table"
+msgstr ""
+
+#: readelf.c:4558
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr ""
+
+#: readelf.c:4578
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr ""
+
+#: readelf.c:4590
+msgid "File contains multiple dynamic string tables\n"
+msgstr ""
+
+#: readelf.c:4596
+msgid "dynamic strings"
+msgstr ""
+
+#: readelf.c:4603
+msgid "File contains multiple symtab shndx tables\n"
+msgstr ""
+
+#: readelf.c:4674
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+
+#: readelf.c:4676
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+
+#: readelf.c:4682 readelf.c:4693 readelf.c:4704
+#, c-format
+msgid " [Nr] Name\n"
+msgstr ""
+
+#: readelf.c:4683
+#, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:4687
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:4694
+#, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:4698
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:4705
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr ""
+
+#: readelf.c:4706
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr ""
+
+#: readelf.c:4710
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr ""
+
+#: readelf.c:4711
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr ""
+
+#: readelf.c:4716
+#, c-format
+msgid " Flags\n"
+msgstr ""
+
+#: readelf.c:4796
+#, c-format
+msgid "section %u: sh_link value of %u is larger than the number of sections\n"
+msgstr ""
+
+#: readelf.c:4896
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+
+#: readelf.c:4901
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+
+#: readelf.c:4923
+#, c-format
+msgid "[<unknown>: 0x%x] "
+msgstr ""
+
+#: readelf.c:4949
+#, c-format
+msgid ""
+"\n"
+"There are no sections to group in this file.\n"
+msgstr ""
+
+#: readelf.c:4956
+msgid "Section headers are not available!\n"
+msgstr ""
+
+#: readelf.c:4980
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+
+#: readelf.c:5018
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:5032
+#, c-format
+msgid "Corrupt header in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:5038 readelf.c:5049
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:5088
+msgid "section data"
+msgstr ""
+
+#: readelf.c:5099
+#, c-format
+msgid ""
+"\n"
+"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
+msgstr ""
+
+#: readelf.c:5102
+#, c-format
+msgid " [Index] Name\n"
+msgstr ""
+
+#: readelf.c:5116
+#, c-format
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr ""
+
+#: readelf.c:5125
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr ""
+
+#: readelf.c:5138
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr ""
+
+#: readelf.c:5205
+msgid "dynamic section image fixups"
+msgstr ""
+
+#: readelf.c:5217
+#, c-format
+msgid ""
+"\n"
+"Image fixups for needed library #%d: %s - ident: %lx\n"
+msgstr ""
+
+#: readelf.c:5220
+#, c-format
+msgid "Seg Offset Type SymVec DataType\n"
+msgstr ""
+
+#: readelf.c:5252
+msgid "dynamic section image relocations"
+msgstr ""
+
+#: readelf.c:5256
+#, c-format
+msgid ""
+"\n"
+"Image relocs\n"
+msgstr ""
+
+#: readelf.c:5258
+#, c-format
+msgid "Seg Offset Type Addend Seg Sym Off\n"
+msgstr ""
+
+#: readelf.c:5313
+msgid "dynamic string section"
+msgstr ""
+
+#: readelf.c:5414
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+
+#: readelf.c:5429
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+
+#: readelf.c:5453
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+
+#: readelf.c:5460 readelf.c:5890 readelf.c:6227
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:5510
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+
+#: readelf.c:5648
+#, c-format
+msgid "\tUnknown version.\n"
+msgstr ""
+
+#: readelf.c:5701 readelf.c:6074
+msgid "unwind table"
+msgstr ""
+
+#: readelf.c:5743 readelf.c:6156 readelf.c:6415
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr ""
+
+#: readelf.c:5805 readelf.c:6218 readelf.c:7101 readelf.c:7148
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+
+#: readelf.c:5868
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+
+#: readelf.c:5873 readelf.c:5888 readelf.c:6225
+#, c-format
+msgid "'%s'"
+msgstr ""
+
+#: readelf.c:5880
+msgid "unwind info"
+msgstr ""
+
+#: readelf.c:5883 readelf.c:6224
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+
+#: readelf.c:6333
+msgid "unwind data"
+msgstr ""
+
+#: readelf.c:6386
+#, c-format
+msgid "Skipping unexpected relocation at offset 0x%lx\n"
+msgstr ""
+
+#: readelf.c:6490
+#, c-format
+msgid "[Truncated opcode]\n"
+msgstr ""
+
+#: readelf.c:6534 readelf.c:6734
+#, c-format
+msgid "Refuse to unwind"
+msgstr ""
+
+#: readelf.c:6557
+#, c-format
+msgid " [Reserved]"
+msgstr ""
+
+#: readelf.c:6585
+#, c-format
+msgid " finish"
+msgstr ""
+
+#: readelf.c:6590 readelf.c:6676
+#, c-format
+msgid "[Spare]"
+msgstr ""
+
+#: readelf.c:6697 readelf.c:6831
+#, c-format
+msgid " [unsupported opcode]"
+msgstr ""
+
+#: readelf.c:6781
+#, c-format
+msgid "pop frame {"
+msgstr ""
+
+#: readelf.c:6792
+msgid "[pad]"
+msgstr ""
+
+#: readelf.c:6820
+#, c-format
+msgid "sp = sp + %ld"
+msgstr ""
+
+#: readelf.c:6878
+#, c-format
+msgid " Personality routine: "
+msgstr ""
+
+#: readelf.c:6896
+#, c-format
+msgid " [Truncated data]\n"
+msgstr ""
+
+#: readelf.c:6911
+#, c-format
+msgid " Compact model %d\n"
+msgstr ""
+
+#: readelf.c:6947
+#, c-format
+msgid " Restore stack from frame pointer\n"
+msgstr ""
+
+#: readelf.c:6949
+#, c-format
+msgid " Stack increment %d\n"
+msgstr ""
+
+#: readelf.c:6950
+#, c-format
+msgid " Registers restored: "
+msgstr ""
+
+#: readelf.c:6955
+#, c-format
+msgid " Return register: %s\n"
+msgstr ""
+
+#: readelf.c:7038
+#, c-format
+msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
+msgstr ""
+
+#: readelf.c:7107
+#, c-format
+msgid ""
+"\n"
+"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:7159
+#, c-format
+msgid "NONE\n"
+msgstr ""
+
+#: readelf.c:7185
+#, c-format
+msgid "Interface Version: %s\n"
+msgstr "Ð˜Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð²ÐµÑ€ÑиÑ: %s\n"
+
+#: readelf.c:7187
+#, c-format
+msgid "<corrupt: %ld>\n"
+msgstr ""
+
+#: readelf.c:7200
+#, c-format
+msgid "Time Stamp: %s\n"
+msgstr ""
+
+#: readelf.c:7377 readelf.c:7423
+msgid "dynamic section"
+msgstr ""
+
+#: readelf.c:7501
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+
+#: readelf.c:7539
+msgid "Unable to seek to end of file!\n"
+msgstr ""
+
+#: readelf.c:7552
+msgid "Unable to determine the number of symbols to load\n"
+msgstr ""
+
+#: readelf.c:7585
+msgid "Unable to seek to end of file\n"
+msgstr ""
+
+#: readelf.c:7592
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr ""
+
+#: readelf.c:7598
+msgid "dynamic string table"
+msgstr ""
+
+#: readelf.c:7635
+msgid "symbol information"
+msgstr ""
+
+#: readelf.c:7660
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+
+#: readelf.c:7663
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr ""
+
+#: readelf.c:7699
+#, c-format
+msgid "Auxiliary library"
+msgstr ""
+
+#: readelf.c:7703
+#, c-format
+msgid "Filter library"
+msgstr ""
+
+#: readelf.c:7707
+#, c-format
+msgid "Configuration file"
+msgstr ""
+
+#: readelf.c:7711
+#, c-format
+msgid "Dependency audit library"
+msgstr ""
+
+#: readelf.c:7715
+#, c-format
+msgid "Audit library"
+msgstr ""
+
+#: readelf.c:7733 readelf.c:7761 readelf.c:7789
+#, c-format
+msgid "Flags:"
+msgstr ""
+
+#: readelf.c:7736 readelf.c:7764 readelf.c:7791
+#, c-format
+msgid " None\n"
+msgstr ""
+
+#: readelf.c:7912
+#, c-format
+msgid "Shared library: [%s]"
+msgstr ""
+
+#: readelf.c:7915
+#, c-format
+msgid " program interpreter"
+msgstr ""
+
+#: readelf.c:7919
+#, c-format
+msgid "Library soname: [%s]"
+msgstr ""
+
+#: readelf.c:7923
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr ""
+
+#: readelf.c:7927
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr ""
+
+#: readelf.c:7960
+#, c-format
+msgid " (bytes)\n"
+msgstr ""
+
+#: readelf.c:7990
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr ""
+
+#: readelf.c:8090
+msgid "| <unknown>"
+msgstr "| <неизвеÑтен>"
+
+#: readelf.c:8123
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+
+#: readelf.c:8126
+#, c-format
+msgid " Addr: 0x"
+msgstr ""
+
+#: readelf.c:8128 readelf.c:8246 readelf.c:8390
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr ""
+
+#: readelf.c:8136
+msgid "version definition section"
+msgstr ""
+
+#: readelf.c:8169
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr ""
+
+#: readelf.c:8172
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr ""
+
+#: readelf.c:8188
+#, c-format
+msgid "Name: %s\n"
+msgstr ""
+
+#: readelf.c:8190
+#, c-format
+msgid "Name index: %ld\n"
+msgstr ""
+
+#: readelf.c:8212
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr ""
+
+#: readelf.c:8215
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr ""
+
+#: readelf.c:8220
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr ""
+
+#: readelf.c:8226
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr ""
+
+#: readelf.c:8241
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+
+#: readelf.c:8244
+#, c-format
+msgid " Addr: 0x"
+msgstr ""
+
+#: readelf.c:8255
+msgid "Version Needs section"
+msgstr ""
+
+#: readelf.c:8283
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr ""
+
+#: readelf.c:8286
+#, c-format
+msgid " File: %s"
+msgstr ""
+
+#: readelf.c:8288
+#, c-format
+msgid " File: %lx"
+msgstr ""
+
+#: readelf.c:8290
+#, c-format
+msgid " Cnt: %d\n"
+msgstr ""
+
+#: readelf.c:8315
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr ""
+
+#: readelf.c:8318
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr ""
+
+#: readelf.c:8321
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr ""
+
+#: readelf.c:8334
+msgid "Missing Version Needs auxillary information\n"
+msgstr ""
+
+#: readelf.c:8340
+msgid "Missing Version Needs information\n"
+msgstr ""
+
+#: readelf.c:8378
+msgid "version string table"
+msgstr ""
+
+#: readelf.c:8385
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+
+#: readelf.c:8388
+#, c-format
+msgid " Addr: "
+msgstr ""
+
+#: readelf.c:8399
+msgid "version symbol data"
+msgstr ""
+
+#: readelf.c:8427
+msgid " 0 (*local*) "
+msgstr ""
+
+#: readelf.c:8431
+msgid " 1 (*global*) "
+msgstr ""
+
+#: readelf.c:8442
+msgid "invalid index into symbol array\n"
+msgstr ""
+
+#: readelf.c:8476 readelf.c:9279
+msgid "version need"
+msgstr ""
+
+#: readelf.c:8487
+msgid "version need aux (2)"
+msgstr ""
+
+#: readelf.c:8508 readelf.c:8570
+msgid "*invalid*"
+msgstr "*неправилен*"
+
+#: readelf.c:8538 readelf.c:9357
+msgid "version def"
+msgstr ""
+
+#: readelf.c:8564 readelf.c:9379
+msgid "version def aux"
+msgstr ""
+
+#: readelf.c:8599
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+
+#: readelf.c:8807
+#, c-format
+msgid "<other>: %x"
+msgstr ""
+
+#: readelf.c:8869
+msgid "Unable to read in dynamic data\n"
+msgstr ""
+
+#: readelf.c:8919
+#, c-format
+msgid " <corrupt: %14ld>"
+msgstr ""
+
+#: readelf.c:8962 readelf.c:9014 readelf.c:9038 readelf.c:9068 readelf.c:9092
+msgid "Unable to seek to start of dynamic information\n"
+msgstr ""
+
+#: readelf.c:8968 readelf.c:9020
+msgid "Failed to read in number of buckets\n"
+msgstr ""
+
+#: readelf.c:8974
+msgid "Failed to read in number of chains\n"
+msgstr ""
+
+#: readelf.c:9076
+msgid "Failed to determine last chain length\n"
+msgstr ""
+
+#: readelf.c:9120
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+
+#: readelf.c:9122 readelf.c:9140
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:9124 readelf.c:9142
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:9138
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+
+#: readelf.c:9182
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' has a sh_entsize of zero!\n"
+msgstr ""
+
+#: readelf.c:9187
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:9192
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:9194
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:9249
+msgid "version data"
+msgstr ""
+
+#: readelf.c:9298
+msgid "version need aux (3)"
+msgstr ""
+
+#: readelf.c:9332
+msgid "bad dynamic symbol\n"
+msgstr ""
+
+#: readelf.c:9404
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+
+#: readelf.c:9416
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+
+#: readelf.c:9418 readelf.c:9488
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr ""
+
+#: readelf.c:9486
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+
+#: readelf.c:9552
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+
+#: readelf.c:9555
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr ""
+
+#: readelf.c:9564
+#, c-format
+msgid "<corrupt: %19ld>"
+msgstr ""
+
+#: readelf.c:9646
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr ""
+
+#: readelf.c:9813
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr ""
+
+#: readelf.c:10138
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr ""
+
+#: readelf.c:10146
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr ""
+
+#: readelf.c:10155
+#, c-format
+msgid "skipping invalid relocation symbol index 0x%lx in section %s\n"
+msgstr ""
+
+#: readelf.c:10177
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr ""
+
+#: readelf.c:10223
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+
+#: readelf.c:10244
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+
+#: readelf.c:10250
+msgid "section contents"
+msgstr ""
+
+#: readelf.c:10269
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+
+#: readelf.c:10287
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr ""
+
+#: readelf.c:10318
+#, c-format
+msgid " No strings found in this section."
+msgstr ""
+
+#: readelf.c:10340
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+
+#: readelf.c:10364
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr ""
+
+#: readelf.c:10498
+#, c-format
+msgid "%s section data"
+msgstr ""
+
+#: readelf.c:10568
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:10577
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr ""
+
+#: readelf.c:10613
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr ""
+
+#: readelf.c:10641
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr ""
+
+#: readelf.c:10682
+#, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr ""
+
+#: readelf.c:10860 readelf.c:10874 readelf.c:10893 readelf.c:11293
+#, c-format
+msgid "None\n"
+msgstr ""
+
+#: readelf.c:10861
+#, c-format
+msgid "Application\n"
+msgstr ""
+
+#: readelf.c:10862
+#, c-format
+msgid "Realtime\n"
+msgstr ""
+
+#: readelf.c:10863
+#, c-format
+msgid "Microcontroller\n"
+msgstr ""
+
+#: readelf.c:10864
+#, c-format
+msgid "Application or Realtime\n"
+msgstr ""
+
+#: readelf.c:10875 readelf.c:10895 readelf.c:11347 readelf.c:11365
+#: readelf.c:11440 readelf.c:11461
+#, c-format
+msgid "8-byte\n"
+msgstr ""
+
+#: readelf.c:10876 readelf.c:11443 readelf.c:11464
+#, c-format
+msgid "4-byte\n"
+msgstr ""
+
+#: readelf.c:10880 readelf.c:10899
+#, c-format
+msgid "8-byte and up to %d-byte extended\n"
+msgstr ""
+
+#: readelf.c:10894
+#, c-format
+msgid "8-byte, except leaf SP\n"
+msgstr ""
+
+#: readelf.c:10910 readelf.c:11000 readelf.c:11479
+#, c-format
+msgid "flag = %d, vendor = %s\n"
+msgstr ""
+
+#: readelf.c:10916
+#, c-format
+msgid "True\n"
+msgstr ""
+
+#: readelf.c:11045 readelf.c:11231
+#, c-format
+msgid "Hard or soft float\n"
+msgstr ""
+
+#: readelf.c:11048
+#, c-format
+msgid "Hard float\n"
+msgstr ""
+
+#: readelf.c:11051 readelf.c:11240
+#, c-format
+msgid "Soft float\n"
+msgstr ""
+
+#: readelf.c:11054
+#, c-format
+msgid "Single-precision hard float\n"
+msgstr ""
+
+#: readelf.c:11071 readelf.c:11097
+#, c-format
+msgid "Any\n"
+msgstr ""
+
+#: readelf.c:11074
+#, c-format
+msgid "Generic\n"
+msgstr ""
+
+#: readelf.c:11103
+#, c-format
+msgid "Memory\n"
+msgstr ""
+
+#: readelf.c:11234
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr ""
+
+#: readelf.c:11237
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr ""
+
+#: readelf.c:11243
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU)\n"
+msgstr ""
+
+#: readelf.c:11326
+#, c-format
+msgid "Not used\n"
+msgstr ""
+
+#: readelf.c:11329
+#, c-format
+msgid "2 bytes\n"
+msgstr ""
+
+#: readelf.c:11332
+#, c-format
+msgid "4 bytes\n"
+msgstr ""
+
+#: readelf.c:11350 readelf.c:11368 readelf.c:11446 readelf.c:11467
+#, c-format
+msgid "16-byte\n"
+msgstr ""
+
+#: readelf.c:11383
+#, c-format
+msgid "DSBT addressing not used\n"
+msgstr ""
+
+#: readelf.c:11386
+#, c-format
+msgid "DSBT addressing used\n"
+msgstr ""
+
+#: readelf.c:11401
+#, c-format
+msgid "Data addressing position-dependent\n"
+msgstr ""
+
+#: readelf.c:11404
+#, c-format
+msgid "Data addressing position-independent, GOT near DP\n"
+msgstr ""
+
+#: readelf.c:11407
+#, c-format
+msgid "Data addressing position-independent, GOT far from DP\n"
+msgstr ""
+
+#: readelf.c:11422
+#, c-format
+msgid "Code addressing position-dependent\n"
+msgstr ""
+
+#: readelf.c:11425
+#, c-format
+msgid "Code addressing position-independent\n"
+msgstr ""
+
+#: readelf.c:11531
+msgid "attributes"
+msgstr ""
+
+#: readelf.c:11552
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr ""
+
+#: readelf.c:11558
+#, c-format
+msgid "Attribute Section: %s\n"
+msgstr ""
+
+#: readelf.c:11583
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr ""
+
+#: readelf.c:11595
+#, c-format
+msgid "File Attributes\n"
+msgstr ""
+
+#: readelf.c:11598
+#, c-format
+msgid "Section Attributes:"
+msgstr ""
+
+#: readelf.c:11601
+#, c-format
+msgid "Symbol Attributes:"
+msgstr ""
+
+#: readelf.c:11616
+#, c-format
+msgid "Unknown tag: %d\n"
+msgstr ""
+
+#. ??? Do something sensible, like dump hex.
+#: readelf.c:11635
+#, c-format
+msgid " Unknown section contexts\n"
+msgstr ""
+
+#: readelf.c:11642
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr ""
+
+#: readelf.c:11693 readelf.c:11715
+msgid "<unknown>"
+msgstr ""
+
+#: readelf.c:11810 readelf.c:12344
+msgid "liblist section data"
+msgstr ""
+
+#: readelf.c:11813
+#, c-format
+msgid ""
+"\n"
+"Section '.liblist' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:11815
+msgid " Library Time Stamp Checksum Version Flags\n"
+msgstr ""
+
+#: readelf.c:11841
+#, c-format
+msgid "<corrupt: %9ld>"
+msgstr ""
+
+#: readelf.c:11846
+msgid " NONE"
+msgstr ""
+
+#: readelf.c:11897
+msgid "options"
+msgstr ""
+
+#: readelf.c:11928
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+
+#: readelf.c:12089
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr ""
+
+#: readelf.c:12106 readelf.c:12121
+msgid "conflict"
+msgstr ""
+
+#: readelf.c:12131
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:12133
+msgid " Num: Index Value Name"
+msgstr ""
+
+#: readelf.c:12145 readelf.c:12234 readelf.c:12305
+#, c-format
+msgid "<corrupt: %14ld>"
+msgstr ""
+
+#: readelf.c:12167
+msgid "Global Offset Table data"
+msgstr ""
+
+#: readelf.c:12171
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+
+#: readelf.c:12172
+#, c-format
+msgid " Canonical gp value: "
+msgstr ""
+
+#: readelf.c:12176 readelf.c:12276
+#, c-format
+msgid " Reserved entries:\n"
+msgstr ""
+
+#: readelf.c:12177
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr ""
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12211 readelf.c:12278
+#: readelf.c:12287
+msgid "Address"
+msgstr ""
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12212
+msgid "Access"
+msgstr ""
+
+#: readelf.c:12179 readelf.c:12196 readelf.c:12213 readelf.c:12278
+#: readelf.c:12288
+msgid "Initial"
+msgstr ""
+
+#: readelf.c:12181
+#, c-format
+msgid " Lazy resolver\n"
+msgstr ""
+
+#: readelf.c:12187
+#, c-format
+msgid " Module pointer (GNU extension)\n"
+msgstr ""
+
+#: readelf.c:12193
+#, c-format
+msgid " Local entries:\n"
+msgstr ""
+
+#: readelf.c:12209
+#, c-format
+msgid " Global entries:\n"
+msgstr ""
+
+#: readelf.c:12214 readelf.c:12289
+msgid "Sym.Val."
+msgstr ""
+
+#. Note for translators: "Ndx" = abbreviated form of "Index".
+#: readelf.c:12217 readelf.c:12289
+msgid "Ndx"
+msgstr ""
+
+#: readelf.c:12217 readelf.c:12289
+msgid "Name"
+msgstr ""
+
+#: readelf.c:12271
+msgid "Procedure Linkage Table data"
+msgstr ""
+
+#: readelf.c:12277
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr ""
+
+#: readelf.c:12280
+#, c-format
+msgid " PLT lazy resolver\n"
+msgstr ""
+
+#: readelf.c:12282
+#, c-format
+msgid " Module pointer\n"
+msgstr ""
+
+#: readelf.c:12285
+#, c-format
+msgid " Entries:\n"
+msgstr ""
+
+#: readelf.c:12352
+msgid "liblist string table"
+msgstr ""
+
+#: readelf.c:12362
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:12366
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr ""
+
+#: readelf.c:12416
+msgid "NT_AUXV (auxiliary vector)"
+msgstr ""
+
+#: readelf.c:12418
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr ""
+
+#: readelf.c:12420
+msgid "NT_FPREGSET (floating point registers)"
+msgstr ""
+
+#: readelf.c:12422
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr ""
+
+#: readelf.c:12424
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr ""
+
+#: readelf.c:12426
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr ""
+
+#: readelf.c:12428
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr ""
+
+#: readelf.c:12430
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr ""
+
+#: readelf.c:12432
+msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
+msgstr ""
+
+#: readelf.c:12434
+msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
+msgstr ""
+
+#: readelf.c:12436
+msgid "NT_S390_TIMER (s390 timer register)"
+msgstr ""
+
+#: readelf.c:12438
+msgid "NT_S390_TODCMP (s390 TOD comparator register)"
+msgstr ""
+
+#: readelf.c:12440
+msgid "NT_S390_TODPREG (s390 TOD programmable register)"
+msgstr ""
+
+#: readelf.c:12442
+msgid "NT_S390_CTRS (s390 control registers)"
+msgstr ""
+
+#: readelf.c:12444
+msgid "NT_S390_PREFIX (s390 prefix register)"
+msgstr ""
+
+#: readelf.c:12446
+msgid "NT_ARM_VFP (arm VFP registers)"
+msgstr ""
+
+#: readelf.c:12448
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr ""
+
+#: readelf.c:12450
+msgid "NT_FPREGS (floating point registers)"
+msgstr ""
+
+#: readelf.c:12452
+msgid "NT_PSINFO (psinfo structure)"
+msgstr ""
+
+#: readelf.c:12454
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr ""
+
+#: readelf.c:12456
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr ""
+
+#: readelf.c:12458
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr ""
+
+#: readelf.c:12466
+msgid "NT_VERSION (version)"
+msgstr ""
+
+#: readelf.c:12468
+msgid "NT_ARCH (architecture)"
+msgstr ""
+
+#: readelf.c:12473 readelf.c:12496 readelf.c:12575 readelf.c:12633
+#: readelf.c:12710
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr ""
+
+#: readelf.c:12485
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr ""
+
+#: readelf.c:12487
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr ""
+
+#: readelf.c:12489
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr ""
+
+#: readelf.c:12491
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr ""
+
+#: readelf.c:12509
+#, c-format
+msgid " Build ID: "
+msgstr ""
+
+#: readelf.c:12548
+#, c-format
+msgid " OS: %s, ABI: %ld.%ld.%ld\n"
+msgstr ""
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:12565
+msgid "NetBSD procinfo structure"
+msgstr ""
+
+#: readelf.c:12592 readelf.c:12606
+msgid "PT_GETREGS (reg structure)"
+msgstr ""
+
+#: readelf.c:12594 readelf.c:12608
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr ""
+
+#: readelf.c:12627
+msgid "NT_STAPSDT (SystemTap probe descriptors)"
+msgstr ""
+
+#: readelf.c:12660
+#, c-format
+msgid " Provider: %s\n"
+msgstr ""
+
+#: readelf.c:12661
+#, c-format
+msgid " Name: %s\n"
+msgstr " Име: %s\n"
+
+#: readelf.c:12662
+#, c-format
+msgid " Location: "
+msgstr " ÐœÑÑто: "
+
+#: readelf.c:12664
+#, c-format
+msgid ", Base: "
+msgstr ", ОÑнова: "
+
+#: readelf.c:12666
+#, c-format
+msgid ", Semaphore: "
+msgstr ""
+
+#: readelf.c:12669
+#, c-format
+msgid " Arguments: %s\n"
+msgstr ""
+
+#: readelf.c:12682
+msgid "NT_VMS_MHD (module header)"
+msgstr ""
+
+#: readelf.c:12684
+msgid "NT_VMS_LNM (language name)"
+msgstr ""
+
+#: readelf.c:12686
+msgid "NT_VMS_SRC (source files)"
+msgstr ""
+
+#: readelf.c:12690
+msgid "NT_VMS_EIDC (consistency check)"
+msgstr ""
+
+#: readelf.c:12692
+msgid "NT_VMS_FPMODE (FP mode)"
+msgstr ""
+
+#: readelf.c:12696
+msgid "NT_VMS_IMGNAM (image name)"
+msgstr ""
+
+#: readelf.c:12698
+msgid "NT_VMS_IMGID (image id)"
+msgstr ""
+
+#: readelf.c:12700
+msgid "NT_VMS_LINKID (link id)"
+msgstr ""
+
+#: readelf.c:12702
+msgid "NT_VMS_IMGBID (build id)"
+msgstr ""
+
+#: readelf.c:12704
+msgid "NT_VMS_GSTNAM (sym table name)"
+msgstr ""
+
+#: readelf.c:12724
+#, c-format
+msgid " Creation date : %.17s\n"
+msgstr ""
+
+#: readelf.c:12725
+#, c-format
+msgid " Last patch date: %.17s\n"
+msgstr ""
+
+#: readelf.c:12726
+#, c-format
+msgid " Module name : %s\n"
+msgstr " Име на модул: %s\n"
+
+#: readelf.c:12727
+#, c-format
+msgid " Module version : %s\n"
+msgstr " ВерÑÐ¸Ñ Ð½Ð° модул : %s\n"
+
+#: readelf.c:12730
+#, c-format
+msgid " Invalid size\n"
+msgstr ""
+
+#: readelf.c:12733
+#, c-format
+msgid " Language: %s\n"
+msgstr ""
+
+#: readelf.c:12737
+#, c-format
+msgid " Floating Point mode: "
+msgstr ""
+
+#: readelf.c:12742
+#, c-format
+msgid " Link time: "
+msgstr ""
+
+#: readelf.c:12748
+#, c-format
+msgid " Patch time: "
+msgstr ""
+
+#: readelf.c:12754
+#, c-format
+msgid " Major id: %u, minor id: %u\n"
+msgstr ""
+
+#: readelf.c:12757
+#, c-format
+msgid " Last modified : "
+msgstr ""
+
+#: readelf.c:12760
+#, c-format
+msgid ""
+"\n"
+" Link flags : "
+msgstr ""
+
+#: readelf.c:12763
+#, c-format
+msgid " Header flags: 0x%08x\n"
+msgstr ""
+
+#: readelf.c:12765
+#, c-format
+msgid " Image id : %s\n"
+msgstr ""
+
+#: readelf.c:12769
+#, c-format
+msgid " Image name: %s\n"
+msgstr ""
+
+#: readelf.c:12772
+#, c-format
+msgid " Global symbol table name: %s\n"
+msgstr ""
+
+#: readelf.c:12775
+#, c-format
+msgid " Image id: %s\n"
+msgstr ""
+
+#: readelf.c:12778
+#, c-format
+msgid " Linker id: %s\n"
+msgstr ""
+
+#: readelf.c:12853
+msgid "notes"
+msgstr ""
+
+#: readelf.c:12859
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+
+#: readelf.c:12861
+#, c-format
+msgid " %-20s %10s\tDescription\n"
+msgstr ""
+
+#: readelf.c:12861
+msgid "Owner"
+msgstr ""
+
+#: readelf.c:12861
+msgid "Data size"
+msgstr ""
+
+#: readelf.c:12899 readelf.c:12912
+#, c-format
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr ""
+
+#: readelf.c:12901 readelf.c:12914
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr ""
+
+#: readelf.c:13010
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr ""
+
+#: readelf.c:13102
+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"
+msgstr ""
+
+#: readelf.c:13149
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr ""
+
+#: readelf.c:13163
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+
+#: readelf.c:13335
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr ""
+
+#: readelf.c:13341
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr ""
+
+#: readelf.c:13359
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr ""
+
+#: readelf.c:13367
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr ""
+
+#: readelf.c:13378
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr ""
+
+#: readelf.c:13383
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr ""
+
+#: readelf.c:13466 readelf.c:13549
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr ""
+
+#: readelf.c:13488
+#, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr ""
+
+#: readelf.c:13567
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr ""
+
+#: rename.c:124
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr ""
+
+#. We have to clean up here.
+#: rename.c:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr ""
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr ""
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr ""
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr ""
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr ""
+
+#: resbin.c:208
+msgid "cursor"
+msgstr ""
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr ""
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr ""
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr ""
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr ""
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr ""
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr ""
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr ""
+
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr ""
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr ""
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr ""
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr ""
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr ""
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr ""
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr ""
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr ""
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr ""
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr ""
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr ""
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr ""
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr ""
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr ""
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr ""
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr ""
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr ""
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr ""
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr ""
+
+#: resbin.c:871
+msgid "group icon"
+msgstr ""
+
+#: resbin.c:935 resbin.c:1173
+msgid "unexpected version string"
+msgstr ""
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr ""
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr ""
+
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr ""
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr ""
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr ""
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr ""
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr ""
+
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr ""
+
+#: resbin.c:1059
+msgid "version stringtable"
+msgstr ""
+
+#: resbin.c:1067
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr ""
+
+#: resbin.c:1084
+msgid "version string"
+msgstr ""
+
+#: resbin.c:1101
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr ""
+
+#: resbin.c:1108
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr ""
+
+#: resbin.c:1133
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr ""
+
+#: resbin.c:1152
+msgid "version varfileinfo"
+msgstr ""
+
+#: resbin.c:1167
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr ""
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr ""
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr ""
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr ""
+
+#: rescoff.c:190
+msgid "directory"
+msgstr ""
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr ""
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr ""
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr ""
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr ""
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr ""
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr ""
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr ""
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr ""
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr ""
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr ""
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr ""
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr ""
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr ""
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr ""
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr ""
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr ""
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr ""
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr ""
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr ""
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr ""
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr ""
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr ""
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr ""
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr ""
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr ""
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr ""
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr ""
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr ""
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr ""
+
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr ""
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr ""
+
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr ""
+
+#: resrc.c:1958
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr ""
+
+#: size.c:79
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr ""
+
+#: size.c:80
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr ""
+
+#: size.c:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "Ñгрешен аргумент за --format: %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Сгрешена оÑнова: %s\n"
+
+#: srconv.c:1733
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr ""
+
+#: srconv.c:1734
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+
+#: srconv.c:1880
+#, c-format
+msgid "unable to open output file %s"
+msgstr ""
+
+#: stabs.c:328 stabs.c:1717
+msgid "numeric overflow"
+msgstr "челочиÑлено препълване"
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr ""
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Предупреждение: %s: %s\n"
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr ""
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr ""
+
+#: stabs.c:727
+msgid "unknown C++ encoded name"
+msgstr ""
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1262
+msgid "unrecognized cross reference type"
+msgstr ""
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1809
+msgid "missing index type"
+msgstr ""
+
+#: stabs.c:2129
+msgid "unknown virtual character for baseclass"
+msgstr ""
+
+#: stabs.c:2147
+msgid "unknown visibility character for baseclass"
+msgstr ""
+
+#: stabs.c:2337
+msgid "unnamed $vb type"
+msgstr ""
+
+#: stabs.c:2343
+msgid "unrecognized C++ abbreviation"
+msgstr ""
+
+#: stabs.c:2419
+msgid "unknown visibility character for field"
+msgstr ""
+
+#: stabs.c:2679
+msgid "const/volatile indicator missing"
+msgstr ""
+
+#: stabs.c:2924
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr ""
+
+#: stabs.c:3224
+msgid "Undefined N_EXCL"
+msgstr ""
+
+#: stabs.c:3304
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr ""
+
+#: stabs.c:3309
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr ""
+
+#: stabs.c:3388
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "Ðеразпознат XCOFF тип %d\n"
+
+#: stabs.c:3680
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "неправилно размазано име '%s'\n"
+
+#: stabs.c:3775
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "липÑва тип на аргумент в Ñ€Ð°Ð·Ð¼Ð°Ð·Ð°Ð½Ð¸Ñ Ð½Ð¸Ð·\n"
+
+#: stabs.c:5125
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "ВъзÑтановеното име не е функциÑ\n"
+
+#: stabs.c:5167
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "Ðеочакван тип при 3-та вер. на arglist за възÑтановÑване на имена\n"
+
+#: stabs.c:5234
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "Ðеразпозната чаÑÑ‚ при възÑтановÑване на име %d\n"
+
+#: stabs.c:5286
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "Пропадна извеждането на възÑтановено име на шаблон\n"
+
+#: stabs.c:5366
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "Ðе можа да Ñе определи Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð¸Ñ Ñ‚Ð¸Ð¿ за възÑтановÑване\n"
+
+#: stabs.c:5415
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "Ðеочавано възÑтановÑване за \"varargs\"\n"
+
+#: stabs.c:5422
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "Ðеразпознат вграден тип за възÑтановÑване\n"
+
+#: strings.c:186 strings.c:245
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "Ñгрешен аргумент за цÑло чиÑло %s"
+
+#: strings.c:248
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr "Ñгрешена минимална дължина на низ %d"
+
+#: strings.c:651
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr " Показва пачатимите низове в [файл/-ове] (Ñтанд.изход по подразбиране)\n"
+
+#: strings.c:652
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+" Командите Ñа:\n"
+" -a - --all Обработване на Ñ†ÐµÐ»Ð¸Ñ Ñ„Ð°Ð¹Ð», а не Ñамо раздела за данни\n"
+" -f --print-file-name Извежда инето на файла преди вÑеки низ\n"
+" -n --bytes=[чиÑло] Ðамира и извежда вÑÑка завършваща на NUL поÑледователноÑÑ‚ от\n"
+" -<чиÑло> най-малко [чиÑло] знака (по подразбиране 4).\n"
+" -t --radix={o,d,x} Извежда мÑÑтото на низа при оÑнова 8, 10 или 16\n"
+" -o Синоним за --radix=o\n"
+" -T --target=<BFD_ИМЕ> Задава формата на Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»\n"
+" -e --encoding={s,S,b,l,B,L} Избира размер на знака и побредба на байтовете:\n"
+" s = 7-битов, S = 8-витов, {b,l} = 16-битов, {B,L} = 32-битов (b или B за Ñтарши, l или L за младши)\n"
+" @<файл> Прочитане на команди от <файл>\n"
+" -h --help Показва тази информациÑ\n"
+" -v -V --version Извежда номер на верÑÐ¸Ñ Ð½Ð° програмата\n"
+
+#: sysdump.c:66
+msgid "*undefined*"
+msgstr "*неопределен*"
+
+#: sysdump.c:137
+#, c-format
+msgid "SUM IS %x\n"
+msgstr ""
+
+#: sysdump.c:503
+#, c-format
+msgid "GOT A %x\n"
+msgstr ""
+
+#: sysdump.c:521
+#, c-format
+msgid "WANTED %x!!\n"
+msgstr ""
+
+#: sysdump.c:539
+msgid "SYMBOL INFO"
+msgstr ""
+
+#: sysdump.c:557
+msgid "DERIVED TYPE"
+msgstr ""
+
+#: sysdump.c:614
+msgid "MODULE***\n"
+msgstr ""
+
+#: sysdump.c:647
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "Извежда четимо предÑтавÑне на SYSROFF обектен файл\n"
+
+#: sysdump.c:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Опциите Ñа:\n"
+" -h --help Показва тази информациÑ\n"
+" -v --version Извежда номер на верÑÐ¸Ñ Ð½Ð° програмата\n"
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "не можа да Ñе отвори входÑщ файл %s"
+
+#: version.c:36
+#, c-format
+msgid "Copyright 2011 Free Software Foundation, Inc.\n"
+msgstr "ÐвторÑко право 2011 Free Software Foundation, Inc.\n"
+
+#: version.c:37
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"Тази програма е Ñвободен Ñофтуер: можете да Ñ Ñ€Ð°Ð·Ð¿Ñ€Ð¾ÑтранÑвате под уÑловиÑта\n"
+"на Ð’Ñеобщ Публичен Лиценз ГÐУ верÑÐ¸Ñ 3 или по ваш избор, Ñледваща верÑиÑ.\n"
+"Тази програма е без гаранции.\n"
+
+#: windmc.c:190
+#, c-format
+msgid "can't create %s file `%s' for output.\n"
+msgstr "не можа да Ñе Ñъздаде %s файл '%s' за изход.\n"
+
+#: windmc.c:198
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr "Употреба: %s [опциÑ/-и] [входÑщ-файл]\n"
+
+#: windmc.c:200
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianness.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+
+#: windmc.c:220
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+" -H --help Извежда това помощно Ñъобщение\n"
+" -v --verbose Подробно - показва какво Ñе прави\n"
+" -V --version Извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта\n"
+
+#: windmc.c:261 windres.c:411
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: предупреждение: "
+
+#: windmc.c:262
+#, c-format
+msgid "A codepage was specified switch `%s' and UTF16.\n"
+msgstr ""
+
+#: windmc.c:263
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr ""
+
+#: windmc.c:307
+msgid "try to add a ill language."
+msgstr ""
+
+#: windmc.c:1116
+#, c-format
+msgid "unable to open file `%s' for input.\n"
+msgstr "не можа да Ñе отвори файл '%s' за вход.\n"
+
+#: windmc.c:1124
+#, c-format
+msgid "unable to read contents of %s"
+msgstr "не можа да Ñе прочете Ñъдържанието на %s"
+
+#: windmc.c:1136
+msgid "input file does not seems to be UFT16.\n"
+msgstr "изглежда входÑÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð» не е в UFT16.\n"
+
+#: windres.c:216
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "не може да Ñе отвори %s '%s': %s"
+
+#: windres.c:390
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": очаква Ñе директориÑ\n"
+
+#: windres.c:402
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": очаква Ñе лиÑÑ‚\n"
+
+#: windres.c:413
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": повторна ÑтойноÑÑ‚\n"
+
+#: windres.c:563
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "неизвеÑтен формат '%s'"
+
+#: windres.c:564
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: поддържани формати:"
+
+#. Otherwise, we give up.
+#: windres.c:647
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "не може да Ñе определи типа на файла '%s'; да Ñе използва -J флаг"
+
+#: windres.c:659
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Употреба: %s [флаг(-ове)] [вх-файл] [изх-файл]\n"
+
+#: windres.c:661
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" --preprocessor-arg=<arg> Additional preprocessor argument\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+" Опциите за:\n"
+" -i --input=<файл> Име на входÑщ файл\n"
+" -o --output=<файл> Име на изходÑщ файл\n"
+" -J --input-format=<формат> Задава входÑщ формат\n"
+" -O --output-format=<формат> Задава изходÑщ формат\n"
+" -F --target=<цел> Задава COFF резултат\n"
+" --preprocessor=<прог> Да Ñе използва прог за преработка на rc-файл\n"
+" --preprocessor-arg=<арг> Допълнителен аргумент за преработка\n"
+" -I --include-dir=<дир> Включване на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ преработка на на rc-файл\n"
+" -D --define <име>[=<Ñтой>] ÐžÐ¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð˜ÐœÐ• при преработка на rc-файл\n"
+" -U --undefine <име> Ðе Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð˜ÐœÐ• при преработка на rc-файл\n"
+" -v --verbose Подробно - уведомÑва за извършваните дейÑтвиÑ\n"
+" -c --codepage=<codepage> Задава кодова Ñтраница по подразбиране\n"
+" -l --language=<Ñтой> Задава езика при четене на rc-файл\n"
+" --use-temp-file Използва Ñе временен файл, вмеÑто popen, за прочитане\n"
+" на резултата от преработката\n"
+" --no-use-temp-file Използва Ñе popen (по подразбиране)\n"
+
+#: windres.c:679
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug Включва проÑледÑване на разбора\n"
+
+#: windres.c:682
+#, 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:687
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+
+#: windres.c:850
+msgid "invalid codepage specified.\n"
+msgstr "указане е неправилна кодова-Ñтраница.\n"
+
+#: windres.c:865
+msgid "invalid option -f\n"
+msgstr "Ñгрешена Ð¾Ð¿Ñ†Ð¸Ñ -f\n"
+
+#: windres.c:870
+msgid "No filename following the -fo option.\n"
+msgstr "ÐÑма име на файл Ñлед -fo флаг.\n"
+
+#: windres.c:959
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr "ОпциÑта -I е забранена за задаване на форма на входÑÑ‰Ð¸Ñ Ñ„Ð°Ð¹Ð». ÐœÐ¾Ð»Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð¹Ñ‚Ðµ -J.\n"
+
+#: windres.c:1072
+msgid "no resources"
+msgstr "липÑват реÑурÑи"
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup не уÑпÑ: %s"
+
+#: wrstabs.c:637
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: неправилен размер %u"
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: предупреждение: неизвеÑтен размер за полето '%s' на Ñтруктурата"
diff --git a/binutils-2.24/binutils/po/binutils.pot b/binutils-2.24/binutils/po/binutils.pot
new file mode 100644
index 00000000..0d083978
--- /dev/null
+++ b/binutils-2.24/binutils/po/binutils.pot
@@ -0,0 +1,7975 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2011-10-25 11:20+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: addr2line.c:81
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr ""
+
+#: addr2line.c:82
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr ""
+
+#: addr2line.c:83
+#, c-format
+msgid ""
+" If no addresses are specified on the command line, they will be read from "
+"stdin\n"
+msgstr ""
+
+#: addr2line.c:84
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -a --addresses Show addresses\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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Make the output easier to read for humans\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+
+#: addr2line.c:101 ar.c:304 ar.c:333 coffdump.c:471 dlltool.c:3938
+#: dllwrap.c:524 elfedit.c:653 nlmconv.c:1114 objcopy.c:576 objcopy.c:611
+#: readelf.c:3214 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
+#: windmc.c:228 windres.c:695
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr ""
+
+#. Note for translators: This printf is used to join the
+#. function name just printed above to the line number/
+#. file name pair that is about to be printed below. Eg:
+#.
+#. foo at 123:bar.c
+#: addr2line.c:276
+#, c-format
+msgid " at "
+msgstr ""
+
+#. Note for translators: This printf is used to join the
+#. line number/file name pair that has just been printed with
+#. the line number/file name pair that is going to be printed
+#. by the next iteration of the while loop. Eg:
+#.
+#. 123:bar.c (inlined by) 456:main.c
+#: addr2line.c:308
+#, c-format
+msgid " (inlined by) "
+msgstr ""
+
+#: addr2line.c:341
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr ""
+
+#: addr2line.c:358
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr ""
+
+#: addr2line.c:427 nm.c:1570 objdump.c:3423
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr ""
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr ""
+
+#: ar.c:254
+#, c-format
+msgid ""
+"Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin "
+"<name>] [member-name] [count] archive-file file...\n"
+msgstr ""
+
+#: ar.c:260
+#, c-format
+msgid ""
+"Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] "
+"[count] archive-file file...\n"
+msgstr ""
+
+#: ar.c:266
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr ""
+
+#: ar.c:267
+#, c-format
+msgid " commands:\n"
+msgstr ""
+
+#: ar.c:268
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr ""
+
+#: ar.c:269
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr ""
+
+#: ar.c:270
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr ""
+
+#: ar.c:271
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr ""
+
+#: ar.c:272
+#, c-format
+msgid ""
+" r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
+msgstr ""
+
+#: ar.c:273
+#, c-format
+msgid " s - act as ranlib\n"
+msgstr ""
+
+#: ar.c:274
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr ""
+
+#: ar.c:275
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr ""
+
+#: ar.c:276
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr ""
+
+#: ar.c:277
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr ""
+
+#: ar.c:278
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr ""
+
+#: ar.c:279
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr ""
+
+#: ar.c:280
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr ""
+
+#: ar.c:281
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr ""
+
+#: ar.c:282
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr ""
+
+#: ar.c:283
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr ""
+
+#: ar.c:284
+#, c-format
+msgid ""
+" [u] - only replace files that are newer than current archive "
+"contents\n"
+msgstr ""
+
+#: ar.c:285
+#, c-format
+msgid " generic modifiers:\n"
+msgstr ""
+
+#: ar.c:286
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr ""
+
+#: ar.c:287
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr ""
+
+#: ar.c:288
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr ""
+
+#: ar.c:289
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr ""
+
+#: ar.c:290
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr ""
+
+#: ar.c:291
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr ""
+
+#: ar.c:292
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr ""
+
+#: ar.c:293
+#, c-format
+msgid " --target=BFDNAME - specify the target object format as BFDNAME\n"
+msgstr ""
+
+#: ar.c:295
+#, c-format
+msgid " optional:\n"
+msgstr ""
+
+#: ar.c:296
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr ""
+
+#: ar.c:317
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr ""
+
+#: ar.c:318
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr ""
+
+#: ar.c:319
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+
+#: ar.c:322
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr ""
+
+#: ar.c:325
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+
+#: ar.c:449
+msgid "two different operation options specified"
+msgstr ""
+
+#: ar.c:538 nm.c:1643
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr ""
+
+#: ar.c:693
+msgid "no operation specified"
+msgstr ""
+
+#: ar.c:696
+msgid "`u' is only meaningful with the `r' option."
+msgstr ""
+
+#: ar.c:699
+msgid "`u' is not meaningful with the `D' option."
+msgstr ""
+
+#: ar.c:707
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr ""
+
+#: ar.c:710
+msgid "Value for `N' must be positive."
+msgstr ""
+
+#: ar.c:724
+msgid "`x' cannot be used on thin archives."
+msgstr ""
+
+#: ar.c:771
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr ""
+
+#: ar.c:840
+#, c-format
+msgid "creating %s"
+msgstr ""
+
+#: ar.c:889 ar.c:943 ar.c:1272 objcopy.c:2080
+#, c-format
+msgid "internal stat error on %s"
+msgstr ""
+
+#: ar.c:908 ar.c:976
+#, c-format
+msgid "%s is not a valid archive"
+msgstr ""
+
+#: ar.c:1034
+msgid "could not create temporary file whilst writing archive"
+msgstr ""
+
+#: ar.c:1177
+#, c-format
+msgid "No member named `%s'\n"
+msgstr ""
+
+#: ar.c:1227
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr ""
+
+#: ar.c:1366
+#, c-format
+msgid "%s: no archive map to update"
+msgstr ""
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr ""
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr ""
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr ""
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr ""
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr ""
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr ""
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr ""
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr ""
+
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr ""
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr ""
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr ""
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr ""
+
+#. Macros for common output.
+#: binemul.h:49
+#, c-format
+msgid " emulation options: \n"
+msgstr ""
+
+#: bucomm.c:163
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr ""
+
+#: bucomm.c:175
+#, c-format
+msgid "%s: Matching formats:"
+msgstr ""
+
+#: bucomm.c:190
+#, c-format
+msgid "Supported targets:"
+msgstr ""
+
+#: bucomm.c:192
+#, c-format
+msgid "%s: supported targets:"
+msgstr ""
+
+#: bucomm.c:210
+#, c-format
+msgid "Supported architectures:"
+msgstr ""
+
+#: bucomm.c:212
+#, c-format
+msgid "%s: supported architectures:"
+msgstr ""
+
+#: bucomm.c:228
+msgid "big endian"
+msgstr ""
+
+#: bucomm.c:229
+msgid "little endian"
+msgstr ""
+
+#: bucomm.c:230
+msgid "endianness unknown"
+msgstr ""
+
+#: bucomm.c:251
+#, c-format
+msgid ""
+"%s\n"
+" (header %s, data %s)\n"
+msgstr ""
+
+#: bucomm.c:407
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr ""
+
+#: bucomm.c:559
+#, c-format
+msgid "%s: bad number: %s"
+msgstr ""
+
+#: bucomm.c:576 strings.c:409
+#, c-format
+msgid "'%s': No such file"
+msgstr ""
+
+#: bucomm.c:578 strings.c:411
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr ""
+
+#: bucomm.c:582
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr ""
+
+#: bucomm.c:584
+#, c-format
+msgid "Warning: '%s' has negative size, probably it is too large"
+msgstr ""
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr ""
+
+#: coffdump.c:130
+#, c-format
+msgid "size %d "
+msgstr ""
+
+#: coffdump.c:135
+#, c-format
+msgid "section definition at %x size %x\n"
+msgstr ""
+
+#: coffdump.c:141
+#, c-format
+msgid "pointer to"
+msgstr ""
+
+#: coffdump.c:146
+#, c-format
+msgid "array [%d] of"
+msgstr ""
+
+#: coffdump.c:151
+#, c-format
+msgid "function returning"
+msgstr ""
+
+#: coffdump.c:155
+#, c-format
+msgid "arguments"
+msgstr ""
+
+#: coffdump.c:159
+#, c-format
+msgid "code"
+msgstr ""
+
+#: coffdump.c:165
+#, c-format
+msgid "structure definition"
+msgstr ""
+
+#: coffdump.c:171
+#, c-format
+msgid "structure ref to UNKNOWN struct"
+msgstr ""
+
+#: coffdump.c:173
+#, c-format
+msgid "structure ref to %s"
+msgstr ""
+
+#: coffdump.c:176
+#, c-format
+msgid "enum ref to %s"
+msgstr ""
+
+#: coffdump.c:179
+#, c-format
+msgid "enum definition"
+msgstr ""
+
+#: coffdump.c:252
+#, c-format
+msgid "Stack offset %x"
+msgstr ""
+
+#: coffdump.c:255
+#, c-format
+msgid "Memory section %s+%x"
+msgstr ""
+
+#: coffdump.c:258
+#, c-format
+msgid "Register %d"
+msgstr ""
+
+#: coffdump.c:261
+#, c-format
+msgid "Struct Member offset %x"
+msgstr ""
+
+#: coffdump.c:264
+#, c-format
+msgid "Enum Member offset %x"
+msgstr ""
+
+#: coffdump.c:267
+#, c-format
+msgid "Undefined symbol"
+msgstr ""
+
+#: coffdump.c:334
+#, c-format
+msgid "List of symbols"
+msgstr ""
+
+#: coffdump.c:341
+#, c-format
+msgid "Symbol %s, tag %d, number %d"
+msgstr ""
+
+#: coffdump.c:345 readelf.c:12215 readelf.c:12289
+#, c-format
+msgid "Type"
+msgstr ""
+
+#: coffdump.c:350
+#, c-format
+msgid "Where"
+msgstr ""
+
+#: coffdump.c:354
+#, c-format
+msgid "Visible"
+msgstr ""
+
+#: coffdump.c:370
+msgid "List of blocks "
+msgstr ""
+
+#: coffdump.c:383
+#, c-format
+msgid "vars %d"
+msgstr ""
+
+#: coffdump.c:386
+#, c-format
+msgid "blocks"
+msgstr ""
+
+#: coffdump.c:404
+#, c-format
+msgid "List of source files"
+msgstr ""
+
+#: coffdump.c:410
+#, c-format
+msgid "Source file %s"
+msgstr ""
+
+#: coffdump.c:424
+#, c-format
+msgid "section %s %d %d address %x size %x number %d nrelocs %d"
+msgstr ""
+
+#: coffdump.c:449
+#, c-format
+msgid "#sources %d"
+msgstr ""
+
+#: coffdump.c:462 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr ""
+
+#: coffdump.c:463
+#, c-format
+msgid " Print a human readable interpretation of a COFF object file\n"
+msgstr ""
+
+#: coffdump.c:464
+#, 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 ""
+
+#: coffdump.c:533 srconv.c:1833 sysdump.c:710
+msgid "no input file specified"
+msgstr ""
+
+#: cxxfilt.c:119 nm.c:269 objdump.c:281
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr ""
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr ""
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr ""
+
+#: debug.c:781
+msgid "debug_record_function: no debug_set_filename call"
+msgstr ""
+
+#: debug.c:833
+msgid "debug_record_parameter: no current function"
+msgstr ""
+
+#: debug.c:865
+msgid "debug_end_function: no current function"
+msgstr ""
+
+#: debug.c:871
+msgid "debug_end_function: some blocks were not closed"
+msgstr ""
+
+#: debug.c:899
+msgid "debug_start_block: no current block"
+msgstr ""
+
+#: debug.c:935
+msgid "debug_end_block: no current block"
+msgstr ""
+
+#: debug.c:942
+msgid "debug_end_block: attempt to close top level block"
+msgstr ""
+
+#: debug.c:965
+msgid "debug_record_line: no current unit"
+msgstr ""
+
+#. FIXME
+#: debug.c:1018
+msgid "debug_start_common_block: not implemented"
+msgstr ""
+
+#. FIXME
+#: debug.c:1029
+msgid "debug_end_common_block: not implemented"
+msgstr ""
+
+#. FIXME.
+#: debug.c:1113
+msgid "debug_record_label: not implemented"
+msgstr ""
+
+#: debug.c:1135
+msgid "debug_record_variable: no current file"
+msgstr ""
+
+#: debug.c:1663
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr ""
+
+#: debug.c:1840
+msgid "debug_name_type: no current file"
+msgstr ""
+
+#: debug.c:1885
+msgid "debug_tag_type: no current file"
+msgstr ""
+
+#: debug.c:1893
+msgid "debug_tag_type: extra tag attempted"
+msgstr ""
+
+#: debug.c:1930
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr ""
+
+#: debug.c:1952
+msgid "debug_find_named_type: no current compilation unit"
+msgstr ""
+
+#: debug.c:2055
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr ""
+
+#: debug.c:2482
+msgid "debug_write_type: illegal type encountered"
+msgstr ""
+
+#: dlltool.c:902 dlltool.c:928 dlltool.c:959
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr ""
+
+#: dlltool.c:1000
+#, c-format
+msgid "Can't open def file: %s"
+msgstr ""
+
+#: dlltool.c:1005
+#, c-format
+msgid "Processing def file: %s"
+msgstr ""
+
+#: dlltool.c:1009
+msgid "Processed def file"
+msgstr ""
+
+#: dlltool.c:1033
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr ""
+
+#: dlltool.c:1070
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr ""
+
+#: dlltool.c:1088
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr ""
+
+#: dlltool.c:1091 dlltool.c:1112
+msgid "Can't have LIBRARY and NAME"
+msgstr ""
+
+#: dlltool.c:1109
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr ""
+
+#: dlltool.c:1266
+#, c-format
+msgid "VERSION %d.%d\n"
+msgstr ""
+
+#: dlltool.c:1314
+#, c-format
+msgid "run: %s %s"
+msgstr ""
+
+#: dlltool.c:1354 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr ""
+
+#: dlltool.c:1359 dllwrap.c:422 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr ""
+
+#: dlltool.c:1365 dllwrap.c:429 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr ""
+
+#: dlltool.c:1396
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr ""
+
+#: dlltool.c:1536
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr ""
+
+#: dlltool.c:1625 dlltool.c:1636 nm.c:1012 nm.c:1023
+#, c-format
+msgid "%s: no symbols"
+msgstr ""
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1662
+#, c-format
+msgid "Done reading %s"
+msgstr ""
+
+#: dlltool.c:1672
+#, c-format
+msgid "Unable to open object file: %s: %s"
+msgstr ""
+
+#: dlltool.c:1675
+#, c-format
+msgid "Scanning object file %s"
+msgstr ""
+
+#: dlltool.c:1690
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr ""
+
+#: dlltool.c:1792
+msgid "Adding exports to output file"
+msgstr ""
+
+#: dlltool.c:1844
+msgid "Added exports to output file"
+msgstr ""
+
+#: dlltool.c:1986
+#, c-format
+msgid "Generating export file: %s"
+msgstr ""
+
+#: dlltool.c:1991
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr ""
+
+#: dlltool.c:1994
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr ""
+
+#: dlltool.c:2171
+msgid "failed to read the number of entries from base file"
+msgstr ""
+
+#: dlltool.c:2219
+msgid "Generated exports file"
+msgstr ""
+
+#: dlltool.c:2428
+#, c-format
+msgid "bfd_open failed open stub file: %s: %s"
+msgstr ""
+
+#: dlltool.c:2432
+#, c-format
+msgid "Creating stub file: %s"
+msgstr ""
+
+#: dlltool.c:2894
+#, c-format
+msgid "bfd_open failed reopen stub file: %s: %s"
+msgstr ""
+
+#: dlltool.c:2908 dlltool.c:2984
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr ""
+
+#: dlltool.c:2970 dlltool.c:3050
+#, c-format
+msgid "failed to open temporary head file: %s: %s"
+msgstr ""
+
+#: dlltool.c:3064
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr ""
+
+#: dlltool.c:3121
+#, c-format
+msgid "failed to open temporary tail file: %s: %s"
+msgstr ""
+
+#: dlltool.c:3143
+#, c-format
+msgid "Can't create .lib file: %s: %s"
+msgstr ""
+
+#: dlltool.c:3147
+#, c-format
+msgid "Creating library file: %s"
+msgstr ""
+
+#: dlltool.c:3239 dlltool.c:3245
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr ""
+
+#: dlltool.c:3250
+msgid "Created lib file"
+msgstr ""
+
+#: dlltool.c:3462
+#, c-format
+msgid "Can't open .lib file: %s: %s"
+msgstr ""
+
+#: dlltool.c:3470 dlltool.c:3492
+#, c-format
+msgid "%s is not a library"
+msgstr ""
+
+#: dlltool.c:3510
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr ""
+
+#: dlltool.c:3521
+#, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr ""
+
+#: dlltool.c:3745
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr ""
+
+#: dlltool.c:3751
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr ""
+
+#: dlltool.c:3856
+msgid "Processing definitions"
+msgstr ""
+
+#: dlltool.c:3888
+msgid "Processed definitions"
+msgstr ""
+
+#. xgetext:c-format
+#: dlltool.c:3895 dllwrap.c:483
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr ""
+
+#. xgetext:c-format
+#: dlltool.c:3897
+#, c-format
+msgid ""
+" -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr ""
+
+#: dlltool.c:3898
+#, c-format
+msgid ""
+" possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, "
+"ppc, thumb\n"
+msgstr ""
+
+#: dlltool.c:3899
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr ""
+
+#: dlltool.c:3900
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr ""
+
+#: dlltool.c:3901
+#, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr ""
+
+#: dlltool.c:3902
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr ""
+
+#: dlltool.c:3903
+#, c-format
+msgid ""
+" -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr ""
+
+#: dlltool.c:3904
+#, c-format
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr ""
+
+#: dlltool.c:3905
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr ""
+
+#: dlltool.c:3906
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr ""
+
+#: dlltool.c:3907
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr ""
+
+#: dlltool.c:3908
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr ""
+
+#: dlltool.c:3909
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr ""
+
+#: dlltool.c:3910
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr ""
+
+#: dlltool.c:3911
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr ""
+
+#: dlltool.c:3912
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr ""
+
+#: dlltool.c:3913
+#, c-format
+msgid ""
+" --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata"
+"$5.\n"
+msgstr ""
+
+#: dlltool.c:3914
+#, c-format
+msgid ""
+" -U --add-underscore Add underscores to all symbols in interface "
+"library.\n"
+msgstr ""
+
+#: dlltool.c:3915
+#, c-format
+msgid ""
+" --add-stdcall-underscore Add underscores to stdcall symbols in "
+"interface library.\n"
+msgstr ""
+
+#: dlltool.c:3916
+#, c-format
+msgid ""
+" --no-leading-underscore All symbols shouldn't be prefixed by an "
+"underscore.\n"
+msgstr ""
+
+#: dlltool.c:3917
+#, c-format
+msgid ""
+" --leading-underscore All symbols should be prefixed by an "
+"underscore.\n"
+msgstr ""
+
+#: dlltool.c:3918
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr ""
+
+#: dlltool.c:3919
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr ""
+
+#: dlltool.c:3920
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr ""
+
+#: dlltool.c:3921
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr ""
+
+#: dlltool.c:3922
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr ""
+
+#: dlltool.c:3923
+#, c-format
+msgid ""
+" -C --compat-implib Create backward compatible import library.\n"
+msgstr ""
+
+#: dlltool.c:3924
+#, c-format
+msgid ""
+" -n --no-delete Keep temp files (repeat for extra "
+"preservation).\n"
+msgstr ""
+
+#: dlltool.c:3925
+#, c-format
+msgid ""
+" -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr ""
+
+#: dlltool.c:3926
+#, c-format
+msgid ""
+" -I --identify <implib> Report the name of the DLL associated with "
+"<implib>.\n"
+msgstr ""
+
+#: dlltool.c:3927
+#, c-format
+msgid ""
+" --identify-strict Causes --identify to report error when multiple "
+"DLLs.\n"
+msgstr ""
+
+#: dlltool.c:3928
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr ""
+
+#: dlltool.c:3929
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr ""
+
+#: dlltool.c:3930
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr ""
+
+#: dlltool.c:3931
+#, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr ""
+
+#: dlltool.c:3933
+#, c-format
+msgid ""
+" -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr ""
+
+#: dlltool.c:3934
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr ""
+
+#: dlltool.c:3935
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr ""
+
+#: dlltool.c:4082
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr ""
+
+#: dlltool.c:4130
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr ""
+
+#: dlltool.c:4165
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr ""
+
+#: dlltool.c:4245
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr ""
+
+#: dlltool.c:4313 dllwrap.c:213
+#, c-format
+msgid "Tried file: %s"
+msgstr ""
+
+#: dlltool.c:4320 dllwrap.c:220
+#, c-format
+msgid "Using file: %s"
+msgstr ""
+
+#: dllwrap.c:303
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr ""
+
+#: dllwrap.c:305
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr ""
+
+#: dllwrap.c:319
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr ""
+
+#: dllwrap.c:321
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr ""
+
+#: dllwrap.c:334
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr ""
+
+#: dllwrap.c:336
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr ""
+
+#: dllwrap.c:417
+#, c-format
+msgid "pwait returns: %s"
+msgstr ""
+
+#: dllwrap.c:484
+#, c-format
+msgid " Generic options:\n"
+msgstr ""
+
+#: dllwrap.c:485
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr ""
+
+#: dllwrap.c:486
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr ""
+
+#: dllwrap.c:487
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr ""
+
+#: dllwrap.c:488
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr ""
+
+#: dllwrap.c:489
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr ""
+
+#: dllwrap.c:490
+#, c-format
+msgid " Options for %s:\n"
+msgstr ""
+
+#: dllwrap.c:491
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr ""
+
+#: dllwrap.c:492
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr ""
+
+#: dllwrap.c:493
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr ""
+
+#: dllwrap.c:494
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr ""
+
+#: dllwrap.c:495
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr ""
+
+#: dllwrap.c:496
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr ""
+
+#: dllwrap.c:497
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr ""
+
+#: dllwrap.c:498
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr ""
+
+#: dllwrap.c:499
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr ""
+
+#: dllwrap.c:500
+#, c-format
+msgid " --machine <machine>\n"
+msgstr ""
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr ""
+
+#: dllwrap.c:502
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr ""
+
+#: dllwrap.c:503
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr ""
+
+#: dllwrap.c:504
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr ""
+
+#: dllwrap.c:505
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr ""
+
+#: dllwrap.c:506
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr ""
+
+#: dllwrap.c:507
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr ""
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr ""
+
+#: dllwrap.c:509
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr ""
+
+#: dllwrap.c:510
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr ""
+
+#: dllwrap.c:511
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr ""
+
+#: dllwrap.c:512
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr ""
+
+#: dllwrap.c:513
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr ""
+
+#: dllwrap.c:514
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr ""
+
+#: dllwrap.c:515
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr ""
+
+#: dllwrap.c:516
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr ""
+
+#: dllwrap.c:517
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr ""
+
+#: dllwrap.c:518
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr ""
+
+#: dllwrap.c:519
+#, c-format
+msgid " --no-leading-underscore Entrypoint without underscore\n"
+msgstr ""
+
+#: dllwrap.c:520
+#, c-format
+msgid " --leading-underscore Entrypoint with underscore.\n"
+msgstr ""
+
+#: dllwrap.c:521
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr ""
+
+#: dllwrap.c:805
+msgid "Must provide at least one of -o or --dllname options"
+msgstr ""
+
+#: dllwrap.c:834
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+
+#: dllwrap.c:1023
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr ""
+
+#: dllwrap.c:1024
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr ""
+
+#: dllwrap.c:1025
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr ""
+
+#: dllwrap.c:1026
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr ""
+
+#: dwarf.c:132
+msgid "Wrong size in print_dwarf_vma"
+msgstr ""
+
+#: dwarf.c:256 dwarf.c:3027
+msgid "badly formed extended line op encountered!\n"
+msgstr ""
+
+#: dwarf.c:263
+#, c-format
+msgid " Extended opcode %d: "
+msgstr ""
+
+#: dwarf.c:268
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+
+#: dwarf.c:274
+#, c-format
+msgid "set Address to 0x%s\n"
+msgstr ""
+
+#: dwarf.c:280
+#, c-format
+msgid " define new File Table entry\n"
+msgstr ""
+
+#: dwarf.c:281 dwarf.c:2555
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr ""
+
+#: dwarf.c:295
+#, c-format
+msgid "set Discriminator to %s\n"
+msgstr ""
+
+#: dwarf.c:370
+#, c-format
+msgid " UNKNOWN DW_LNE_HP_SFC opcode (%u)\n"
+msgstr ""
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:387
+#, c-format
+msgid "user defined: "
+msgstr ""
+
+#: dwarf.c:389
+#, c-format
+msgid "UNKNOWN: "
+msgstr ""
+
+#: dwarf.c:390
+#, c-format
+msgid "length %d ["
+msgstr ""
+
+#: dwarf.c:407
+msgid "<no .debug_str section>"
+msgstr ""
+
+#: dwarf.c:413
+#, c-format
+msgid "DW_FORM_strp offset too big: %s\n"
+msgstr ""
+
+#: dwarf.c:415
+msgid "<offset is too big>"
+msgstr ""
+
+#: dwarf.c:655
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr ""
+
+#: dwarf.c:696
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr ""
+
+#: dwarf.c:705
+#, c-format
+msgid " %s byte block: "
+msgstr ""
+
+#: dwarf.c:1050
+#, c-format
+msgid "(DW_OP_call_ref in frame info)"
+msgstr ""
+
+#: dwarf.c:1075
+#, c-format
+msgid "size: %s "
+msgstr ""
+
+#: dwarf.c:1078
+#, c-format
+msgid "offset: %s "
+msgstr ""
+
+#: dwarf.c:1098
+#, c-format
+msgid "DW_OP_GNU_push_tls_address or DW_OP_HP_unknown"
+msgstr ""
+
+#: dwarf.c:1122
+#, c-format
+msgid "(DW_OP_GNU_implicit_pointer in frame info)"
+msgstr ""
+
+#: dwarf.c:1234
+#, c-format
+msgid "(User defined location op)"
+msgstr ""
+
+#: dwarf.c:1236
+#, c-format
+msgid "(Unknown location op)"
+msgstr ""
+
+#: dwarf.c:1283
+msgid "Internal error: DWARF version is not 2, 3 or 4.\n"
+msgstr ""
+
+#: dwarf.c:1389
+msgid "DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"
+msgstr ""
+
+#: dwarf.c:1439
+#, c-format
+msgid " (indirect string, offset: 0x%s): %s"
+msgstr ""
+
+#: dwarf.c:1464
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr ""
+
+#: dwarf.c:1557
+#, c-format
+msgid "(not inlined)"
+msgstr ""
+
+#: dwarf.c:1560
+#, c-format
+msgid "(inlined)"
+msgstr ""
+
+#: dwarf.c:1563
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr ""
+
+#: dwarf.c:1566
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr ""
+
+#: dwarf.c:1569
+#, c-format
+msgid " (Unknown inline attribute value: %s)"
+msgstr ""
+
+#: dwarf.c:1608
+#, c-format
+msgid "(implementation defined: %s)"
+msgstr ""
+
+#: dwarf.c:1611
+#, c-format
+msgid "(Unknown: %s)"
+msgstr ""
+
+#: dwarf.c:1649
+#, c-format
+msgid "(user defined type)"
+msgstr ""
+
+#: dwarf.c:1651
+#, c-format
+msgid "(unknown type)"
+msgstr ""
+
+#: dwarf.c:1663
+#, c-format
+msgid "(unknown accessibility)"
+msgstr ""
+
+#: dwarf.c:1674
+#, c-format
+msgid "(unknown visibility)"
+msgstr ""
+
+#: dwarf.c:1684
+#, c-format
+msgid "(unknown virtuality)"
+msgstr ""
+
+#: dwarf.c:1695
+#, c-format
+msgid "(unknown case)"
+msgstr ""
+
+#: dwarf.c:1708
+#, c-format
+msgid "(user defined)"
+msgstr ""
+
+#: dwarf.c:1710
+#, c-format
+msgid "(unknown convention)"
+msgstr ""
+
+#: dwarf.c:1717
+#, c-format
+msgid "(undefined)"
+msgstr ""
+
+#: dwarf.c:1740
+#, c-format
+msgid "(location list)"
+msgstr ""
+
+#: dwarf.c:1761 dwarf.c:4045
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr ""
+
+#: dwarf.c:1777
+#, c-format
+msgid ""
+"Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is "
+"too big.\n"
+msgstr ""
+
+#: dwarf.c:1787
+#, c-format
+msgid "[Abbrev Number: %ld"
+msgstr ""
+
+#: dwarf.c:1978
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr ""
+
+#: dwarf.c:2049
+#, c-format
+msgid "Reserved length value (0x%s) found in section %s\n"
+msgstr ""
+
+#: dwarf.c:2061
+#, c-format
+msgid "Corrupt unit length (0x%s) found in section %s\n"
+msgstr ""
+
+#: dwarf.c:2069
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr ""
+
+#: dwarf.c:2078
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr ""
+
+#: dwarf.c:2087 dwarf.c:3296 dwarf.c:3390 dwarf.c:3551 dwarf.c:3779
+#: dwarf.c:3911 dwarf.c:4081 dwarf.c:4150 dwarf.c:4354
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+
+#: dwarf.c:2095
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr ""
+
+#: dwarf.c:2176
+#, c-format
+msgid " Compilation Unit @ offset 0x%s:\n"
+msgstr ""
+
+#: dwarf.c:2178
+#, c-format
+msgid " Length: 0x%s (%s)\n"
+msgstr ""
+
+#: dwarf.c:2181
+#, c-format
+msgid " Version: %d\n"
+msgstr ""
+
+#: dwarf.c:2182
+#, c-format
+msgid " Abbrev Offset: %s\n"
+msgstr ""
+
+#: dwarf.c:2184
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr ""
+
+#: dwarf.c:2188
+#, c-format
+msgid " Signature: "
+msgstr ""
+
+#: dwarf.c:2192
+#, c-format
+msgid " Type Offset: 0x%s\n"
+msgstr ""
+
+#: dwarf.c:2200
+#, c-format
+msgid ""
+"Debug info is corrupted, length of CU at %s extends beyond end of section "
+"(length = %s)\n"
+msgstr ""
+
+#: dwarf.c:2213
+#, c-format
+msgid "CU at offset %s contains corrupt or unsupported version number: %d.\n"
+msgstr ""
+
+#: dwarf.c:2224
+#, c-format
+msgid ""
+"Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section "
+"size (%lx)\n"
+msgstr ""
+
+#: dwarf.c:2274
+#, c-format
+msgid ""
+"Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr ""
+
+#: dwarf.c:2278
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr ""
+
+#: dwarf.c:2297
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr ""
+
+#: dwarf.c:2301
+#, c-format
+msgid " <%d><%lx>: ...\n"
+msgstr ""
+
+#: dwarf.c:2320
+#, c-format
+msgid ""
+"DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr ""
+
+#: dwarf.c:2422
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+
+#: dwarf.c:2460
+#, c-format
+msgid ""
+"The information in section %s appears to be corrupt - the section is too "
+"small\n"
+msgstr ""
+
+#: dwarf.c:2472 dwarf.c:2840
+msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
+msgstr ""
+
+#: dwarf.c:2486 dwarf.c:2855
+msgid "Invalid maximum operations per insn.\n"
+msgstr ""
+
+#: dwarf.c:2505 dwarf.c:3574
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:2506
+#, c-format
+msgid " Length: %ld\n"
+msgstr ""
+
+#: dwarf.c:2507
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr ""
+
+#: dwarf.c:2508
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr ""
+
+#: dwarf.c:2509
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr ""
+
+#: dwarf.c:2511
+#, c-format
+msgid " Maximum Ops per Instruction: %d\n"
+msgstr ""
+
+#: dwarf.c:2512
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr ""
+
+#: dwarf.c:2513
+#, c-format
+msgid " Line Base: %d\n"
+msgstr ""
+
+#: dwarf.c:2514
+#, c-format
+msgid " Line Range: %d\n"
+msgstr ""
+
+#: dwarf.c:2515
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr ""
+
+#: dwarf.c:2524
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+
+#: dwarf.c:2527
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr ""
+
+#: dwarf.c:2533
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+
+#: dwarf.c:2536
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+
+#: dwarf.c:2551
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+
+#: dwarf.c:2554
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+
+#. Now display the statements.
+#: dwarf.c:2584
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+
+#: dwarf.c:2603
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s"
+msgstr ""
+
+#: dwarf.c:2617
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s[%d]"
+msgstr ""
+
+#: dwarf.c:2625
+#, c-format
+msgid " and Line by %s to %d\n"
+msgstr ""
+
+#: dwarf.c:2635
+#, c-format
+msgid " Copy\n"
+msgstr ""
+
+#: dwarf.c:2645
+#, c-format
+msgid " Advance PC by %s to 0x%s\n"
+msgstr ""
+
+#: dwarf.c:2658
+#, c-format
+msgid " Advance PC by %s to 0x%s[%d]\n"
+msgstr ""
+
+#: dwarf.c:2669
+#, c-format
+msgid " Advance Line by %s to %d\n"
+msgstr ""
+
+#: dwarf.c:2677
+#, c-format
+msgid " Set File Name to entry %s in the File Name Table\n"
+msgstr ""
+
+#: dwarf.c:2685
+#, c-format
+msgid " Set column to %s\n"
+msgstr ""
+
+#: dwarf.c:2693
+#, c-format
+msgid " Set is_stmt to %s\n"
+msgstr ""
+
+#: dwarf.c:2698
+#, c-format
+msgid " Set basic block\n"
+msgstr ""
+
+#: dwarf.c:2708
+#, c-format
+msgid " Advance PC by constant %s to 0x%s\n"
+msgstr ""
+
+#: dwarf.c:2721
+#, c-format
+msgid " Advance PC by constant %s to 0x%s[%d]\n"
+msgstr ""
+
+#: dwarf.c:2733
+#, c-format
+msgid " Advance PC by fixed size amount %s to 0x%s\n"
+msgstr ""
+
+#: dwarf.c:2739
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr ""
+
+#: dwarf.c:2743
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr ""
+
+#: dwarf.c:2749
+#, c-format
+msgid " Set ISA to %s\n"
+msgstr ""
+
+#: dwarf.c:2753 dwarf.c:3168
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr ""
+
+#: dwarf.c:2787
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+
+#: dwarf.c:2828
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr ""
+
+#: dwarf.c:2960
+#, c-format
+msgid "CU: %s:\n"
+msgstr ""
+
+#: dwarf.c:2961 dwarf.c:2972
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr ""
+
+#: dwarf.c:2968
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr ""
+
+#: dwarf.c:3059
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr ""
+
+#: dwarf.c:3164
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr ""
+
+#: dwarf.c:3330 dwarf.c:4195
+#, c-format
+msgid ""
+".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr ""
+
+#: dwarf.c:3344
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr ""
+
+#: dwarf.c:3351
+#, c-format
+msgid " Length: %ld\n"
+msgstr ""
+
+#: dwarf.c:3353
+#, c-format
+msgid " Version: %d\n"
+msgstr ""
+
+#: dwarf.c:3355
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:3357
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr ""
+
+#: dwarf.c:3360
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+
+#: dwarf.c:3411
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr ""
+
+#: dwarf.c:3417
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr ""
+
+#: dwarf.c:3425
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr ""
+
+#: dwarf.c:3434
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr ""
+
+#: dwarf.c:3446
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr ""
+
+#: dwarf.c:3566
+#, c-format
+msgid "Only GNU extension to DWARF 4 of %s is currently supported.\n"
+msgstr ""
+
+#: dwarf.c:3576
+#, c-format
+msgid " Version: %d\n"
+msgstr ""
+
+#: dwarf.c:3577
+#, c-format
+msgid " Offset size: %d\n"
+msgstr ""
+
+#: dwarf.c:3582
+#, c-format
+msgid " Offset into .debug_line: 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:3593
+#, c-format
+msgid " Extension opcode arguments:\n"
+msgstr ""
+
+#: dwarf.c:3601
+#, c-format
+msgid " DW_MACRO_GNU_%02x has no arguments\n"
+msgstr ""
+
+#: dwarf.c:3604
+#, c-format
+msgid " DW_MACRO_GNU_%02x arguments: "
+msgstr ""
+
+#: dwarf.c:3628
+#, c-format
+msgid "Invalid extension opcode form %s\n"
+msgstr ""
+
+#: dwarf.c:3645
+msgid ".debug_macro section not zero terminated\n"
+msgstr ""
+
+#: dwarf.c:3666
+msgid "DW_MACRO_GNU_start_file used, but no .debug_line offset provided.\n"
+msgstr ""
+
+#: dwarf.c:3672
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d\n"
+msgstr ""
+
+#: dwarf.c:3675
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d filename: %s%s%s\n"
+msgstr ""
+
+#: dwarf.c:3683
+#, c-format
+msgid " DW_MACRO_GNU_end_file\n"
+msgstr ""
+
+#: dwarf.c:3691
+#, c-format
+msgid " DW_MACRO_GNU_define - lineno : %d macro : %s\n"
+msgstr ""
+
+#: dwarf.c:3700
+#, c-format
+msgid " DW_MACRO_GNU_undef - lineno : %d macro : %s\n"
+msgstr ""
+
+#: dwarf.c:3710
+#, c-format
+msgid " DW_MACRO_GNU_define_indirect - lineno : %d macro : %s\n"
+msgstr ""
+
+#: dwarf.c:3720
+#, c-format
+msgid " DW_MACRO_GNU_undef_indirect - lineno : %d macro : %s\n"
+msgstr ""
+
+#: dwarf.c:3727
+#, c-format
+msgid " DW_MACRO_GNU_transparent_include - offset : 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:3734
+#, c-format
+msgid " Unknown macro opcode %02x seen\n"
+msgstr ""
+
+#: dwarf.c:3746
+#, c-format
+msgid " DW_MACRO_GNU_%02x\n"
+msgstr ""
+
+#: dwarf.c:3749
+#, c-format
+msgid " DW_MACRO_GNU_%02x -"
+msgstr ""
+
+#: dwarf.c:3790
+#, c-format
+msgid " Number TAG\n"
+msgstr ""
+
+#: dwarf.c:3799
+msgid "has children"
+msgstr ""
+
+#: dwarf.c:3799
+msgid "no children"
+msgstr ""
+
+#: dwarf.c:3850 dwarf.c:4077 dwarf.c:4311
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+
+#: dwarf.c:3856 dwarf.c:4317
+#, c-format
+msgid ""
+"Unable to load/parse the .debug_info section, so cannot interpret the %s "
+"section.\n"
+msgstr ""
+
+#: dwarf.c:3900
+msgid "No location lists in .debug_info section!\n"
+msgstr ""
+
+#: dwarf.c:3905
+#, c-format
+msgid "Location lists in %s section start at 0x%s\n"
+msgstr ""
+
+#: dwarf.c:3912
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr ""
+
+#: dwarf.c:3961
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr ""
+
+#: dwarf.c:3965
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr ""
+
+#: dwarf.c:3973
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr ""
+
+#: dwarf.c:3982 dwarf.c:4017 dwarf.c:4027
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr ""
+
+#: dwarf.c:4001 dwarf.c:4405
+#, c-format
+msgid "<End of list>\n"
+msgstr ""
+
+#: dwarf.c:4011
+#, c-format
+msgid "(base address)\n"
+msgstr ""
+
+#: dwarf.c:4048
+msgid " (start == end)"
+msgstr ""
+
+#: dwarf.c:4050
+msgid " (start > end)"
+msgstr ""
+
+#: dwarf.c:4060
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr ""
+
+#: dwarf.c:4206
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr ""
+
+#: dwarf.c:4210
+#, c-format
+msgid " Length: %ld\n"
+msgstr ""
+
+#: dwarf.c:4212
+#, c-format
+msgid " Version: %d\n"
+msgstr ""
+
+#: dwarf.c:4213
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:4215
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr ""
+
+#: dwarf.c:4216
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr ""
+
+#: dwarf.c:4222
+#, c-format
+msgid "Invalid address size in %s section!\n"
+msgstr ""
+
+#: dwarf.c:4232
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr ""
+
+#: dwarf.c:4237
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+
+#: dwarf.c:4239
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+
+#: dwarf.c:4327
+msgid "No range lists in .debug_info section!\n"
+msgstr ""
+
+#: dwarf.c:4351
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:4355
+#, c-format
+msgid " Offset Begin End\n"
+msgstr ""
+
+#: dwarf.c:4376
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr ""
+
+#: dwarf.c:4380
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr ""
+
+#: dwarf.c:4423
+msgid "(start == end)"
+msgstr ""
+
+#: dwarf.c:4425
+msgid "(start > end)"
+msgstr ""
+
+#: dwarf.c:4678
+msgid "bad register: "
+msgstr ""
+
+#. The documentation for the format of this file is in gdb/dwarf2read.c.
+#: dwarf.c:4681 dwarf.c:5490
+#, c-format
+msgid "Contents of the %s section:\n"
+msgstr ""
+
+#: dwarf.c:5451
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr ""
+
+#: dwarf.c:5453
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr ""
+
+#: dwarf.c:5494
+#, c-format
+msgid "Truncated header in the %s section.\n"
+msgstr ""
+
+#: dwarf.c:5499
+#, c-format
+msgid "Version %ld\n"
+msgstr ""
+
+#: dwarf.c:5506
+msgid "The address table data in version 3 may be wrong.\n"
+msgstr ""
+
+#: dwarf.c:5509
+msgid "Version 4 does not support case insensitive lookups.\n"
+msgstr ""
+
+#: dwarf.c:5514
+#, c-format
+msgid "Unsupported version %lu.\n"
+msgstr ""
+
+#: dwarf.c:5530
+#, c-format
+msgid "Corrupt header in the %s section.\n"
+msgstr ""
+
+#: dwarf.c:5545
+#, c-format
+msgid ""
+"\n"
+"CU table:\n"
+msgstr ""
+
+#: dwarf.c:5551
+#, c-format
+msgid "[%3u] 0x%lx - 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:5556
+#, c-format
+msgid ""
+"\n"
+"TU table:\n"
+msgstr ""
+
+#: dwarf.c:5563
+#, c-format
+msgid "[%3u] 0x%lx 0x%lx "
+msgstr ""
+
+#: dwarf.c:5570
+#, c-format
+msgid ""
+"\n"
+"Address table:\n"
+msgstr ""
+
+#: dwarf.c:5579
+#, c-format
+msgid "%lu\n"
+msgstr ""
+
+#: dwarf.c:5582
+#, c-format
+msgid ""
+"\n"
+"Symbol table:\n"
+msgstr ""
+
+#: dwarf.c:5616
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr ""
+
+#: dwarf.c:5752 dwarf.c:5822
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr ""
+
+#: elfcomm.c:39
+#, c-format
+msgid "%s: Error: "
+msgstr ""
+
+#: elfcomm.c:50
+#, c-format
+msgid "%s: Warning: "
+msgstr ""
+
+#: elfcomm.c:82 elfcomm.c:117 elfcomm.c:167 elfcomm.c:216
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr ""
+
+#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3683 readelf.c:3991
+#: readelf.c:4034 readelf.c:4108 readelf.c:4187 readelf.c:4965 readelf.c:4989
+#: readelf.c:7397 readelf.c:7443 readelf.c:7642 readelf.c:8863 readelf.c:8877
+#: readelf.c:9423 readelf.c:9439 readelf.c:9482 readelf.c:9507 readelf.c:11904
+#: readelf.c:12096 readelf.c:12929
+msgid "Out of memory\n"
+msgstr ""
+
+#: elfcomm.c:312
+#, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr ""
+
+#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13418
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr ""
+
+#: elfcomm.c:347
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr ""
+
+#: elfcomm.c:355 elfcomm.c:381
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr ""
+
+#: elfcomm.c:365
+#, c-format
+msgid ""
+"%s: the archive index is supposed to have %ld entries, but the size in the "
+"header is too small\n"
+msgstr ""
+
+#: elfcomm.c:373
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr ""
+
+#: elfcomm.c:392
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr ""
+
+#: elfcomm.c:405
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr ""
+
+#: elfcomm.c:413
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr ""
+
+#: elfcomm.c:419
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr ""
+
+#: elfcomm.c:428
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr ""
+
+#: elfcomm.c:440
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr ""
+
+#: elfcomm.c:446
+#, c-format
+msgid "%s has no archive index\n"
+msgstr ""
+
+#: elfcomm.c:457
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr ""
+
+#: elfcomm.c:465
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr ""
+
+#: elfcomm.c:605
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr ""
+
+#: elfcomm.c:616 elfedit.c:347 readelf.c:13424
+#, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr ""
+
+#: elfedit.c:73
+#, c-format
+msgid "%s: Not an ELF file - wrong magic bytes at the start\n"
+msgstr ""
+
+#: elfedit.c:81
+#, c-format
+msgid "%s: Unsupported EI_VERSION: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:97
+#, c-format
+msgid "%s: Unmatched EI_CLASS: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:108
+#, c-format
+msgid "%s: Unmatched e_machine: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:119
+#, c-format
+msgid "%s: Unmatched e_type: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:130
+#, c-format
+msgid "%s: Unmatched EI_OSABI: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:163
+#, c-format
+msgid "%s: Failed to update ELF header: %s\n"
+msgstr ""
+
+#: elfedit.c:196
+#, c-format
+msgid "Unsupported EI_CLASS: %d\n"
+msgstr ""
+
+#: elfedit.c:229
+msgid ""
+"This executable has been built without support for a\n"
+"64 bit data type and so it cannot process 64 bit ELF files.\n"
+msgstr ""
+
+#: elfedit.c:270
+#, c-format
+msgid "%s: Failed to read ELF header\n"
+msgstr ""
+
+#: elfedit.c:277
+#, c-format
+msgid "%s: Failed to seek to ELF header\n"
+msgstr ""
+
+#: elfedit.c:331 readelf.c:13410
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr ""
+
+#: elfedit.c:362 elfedit.c:371 readelf.c:13438 readelf.c:13447
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr ""
+
+#: elfedit.c:391 elfedit.c:483
+#, c-format
+msgid "Input file '%s' is not readable\n"
+msgstr ""
+
+#: elfedit.c:415
+#, c-format
+msgid "%s: failed to seek to archive member\n"
+msgstr ""
+
+#: elfedit.c:454 readelf.c:13533
+#, c-format
+msgid "'%s': No such file\n"
+msgstr ""
+
+#: elfedit.c:456 readelf.c:13535
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr ""
+
+#: elfedit.c:463 readelf.c:13542
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr ""
+
+#: elfedit.c:489 readelf.c:13555
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr ""
+
+#: elfedit.c:547
+#, c-format
+msgid "Unknown OSABI: %s\n"
+msgstr ""
+
+#: elfedit.c:568
+#, c-format
+msgid "Unknown machine type: %s\n"
+msgstr ""
+
+#: elfedit.c:587
+#, c-format
+msgid "Unknown machine type: %d\n"
+msgstr ""
+
+#: elfedit.c:606
+#, c-format
+msgid "Unknown type: %s\n"
+msgstr ""
+
+#: elfedit.c:637
+#, c-format
+msgid "Usage: %s <option(s)> elffile(s)\n"
+msgstr ""
+
+#: elfedit.c:639
+#, c-format
+msgid " Update the ELF header of ELF files\n"
+msgstr ""
+
+#: elfedit.c:640 objcopy.c:475 objcopy.c:585
+#, c-format
+msgid " The options are:\n"
+msgstr ""
+
+#: elfedit.c:641
+#, c-format
+msgid ""
+" --input-mach <machine> Set input machine type to <machine>\n"
+" --output-mach <machine> Set output machine type to <machine>\n"
+" --input-type <type> Set input file type to <type>\n"
+" --output-type <type> Set output file type to <type>\n"
+" --input-osabi <osabi> Set input OSABI to <osabi>\n"
+" --output-osabi <osabi> Set output OSABI to <osabi>\n"
+" -h --help Display this information\n"
+" -v --version Display the version number of %s\n"
+msgstr ""
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr ""
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:47
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:48
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr ""
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr ""
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr ""
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr ""
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr ""
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr ""
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr ""
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr ""
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr ""
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr ""
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr ""
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr ""
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr ""
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr ""
+
+#: ieee.c:1208
+msgid "unknown BB type"
+msgstr ""
+
+#: ieee.c:1217
+msgid "stack overflow"
+msgstr ""
+
+#: ieee.c:1240
+msgid "stack underflow"
+msgstr ""
+
+#: ieee.c:1352 ieee.c:1422 ieee.c:2120
+msgid "illegal variable index"
+msgstr ""
+
+#: ieee.c:1400
+msgid "illegal type index"
+msgstr ""
+
+#: ieee.c:1410 ieee.c:1447
+msgid "unknown TY code"
+msgstr ""
+
+#: ieee.c:1429
+msgid "undefined variable in TY"
+msgstr ""
+
+#. Pascal file name. FIXME.
+#: ieee.c:1841
+msgid "Pascal file name not supported"
+msgstr ""
+
+#: ieee.c:1889
+msgid "unsupported qualifier"
+msgstr ""
+
+#: ieee.c:2158
+msgid "undefined variable in ATN"
+msgstr ""
+
+#: ieee.c:2201
+msgid "unknown ATN type"
+msgstr ""
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2323
+msgid "unsupported ATN11"
+msgstr ""
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2350
+msgid "unsupported ATN12"
+msgstr ""
+
+#: ieee.c:2410
+msgid "unexpected string in C++ misc"
+msgstr ""
+
+#: ieee.c:2423
+msgid "bad misc record"
+msgstr ""
+
+#: ieee.c:2464
+msgid "unrecognized C++ misc record"
+msgstr ""
+
+#: ieee.c:2579
+msgid "undefined C++ object"
+msgstr ""
+
+#: ieee.c:2613
+msgid "unrecognized C++ object spec"
+msgstr ""
+
+#: ieee.c:2649
+msgid "unsupported C++ object type"
+msgstr ""
+
+#: ieee.c:2659
+msgid "C++ base class not defined"
+msgstr ""
+
+#: ieee.c:2671 ieee.c:2776
+msgid "C++ object has no fields"
+msgstr ""
+
+#: ieee.c:2690
+msgid "C++ base class not found in container"
+msgstr ""
+
+#: ieee.c:2797
+msgid "C++ data member not found in container"
+msgstr ""
+
+#: ieee.c:2838 ieee.c:2988
+msgid "unknown C++ visibility"
+msgstr ""
+
+#: ieee.c:2872
+msgid "bad C++ field bit pos or size"
+msgstr ""
+
+#: ieee.c:2964
+msgid "bad type for C++ method function"
+msgstr ""
+
+#: ieee.c:2974
+msgid "no type information for C++ method function"
+msgstr ""
+
+#: ieee.c:3013
+msgid "C++ static virtual method"
+msgstr ""
+
+#: ieee.c:3108
+msgid "unrecognized C++ object overhead spec"
+msgstr ""
+
+#: ieee.c:3147
+msgid "undefined C++ vtable"
+msgstr ""
+
+#: ieee.c:3216
+msgid "C++ default values not in a function"
+msgstr ""
+
+#: ieee.c:3256
+msgid "unrecognized C++ default type"
+msgstr ""
+
+#: ieee.c:3287
+msgid "reference parameter is not a pointer"
+msgstr ""
+
+#: ieee.c:3370
+msgid "unrecognized C++ reference type"
+msgstr ""
+
+#: ieee.c:3452
+msgid "C++ reference not found"
+msgstr ""
+
+#: ieee.c:3460
+msgid "C++ reference is not pointer"
+msgstr ""
+
+#: ieee.c:3486 ieee.c:3494
+msgid "missing required ASN"
+msgstr ""
+
+#: ieee.c:3521 ieee.c:3529
+msgid "missing required ATN65"
+msgstr ""
+
+#: ieee.c:3543
+msgid "bad ATN65 record"
+msgstr ""
+
+#: ieee.c:4171
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr ""
+
+#: ieee.c:4215
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr ""
+
+#: ieee.c:5213
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr ""
+
+#: ieee.c:5247
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr ""
+
+#: ieee.c:5281
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr ""
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr ""
+
+#: nlmconv.c:274 srconv.c:1824
+msgid "input and output files must be different"
+msgstr ""
+
+#: nlmconv.c:321
+msgid "input file named both on command line and with INPUT"
+msgstr ""
+
+#: nlmconv.c:330
+msgid "no input file"
+msgstr ""
+
+#: nlmconv.c:360
+msgid "no name for output file"
+msgstr ""
+
+#: nlmconv.c:374
+msgid "warning: input and output formats are not compatible"
+msgstr ""
+
+#: nlmconv.c:404
+msgid "make .bss section"
+msgstr ""
+
+#: nlmconv.c:414
+msgid "make .nlmsections section"
+msgstr ""
+
+#: nlmconv.c:442
+msgid "set .bss vma"
+msgstr ""
+
+#: nlmconv.c:449
+msgid "set .data size"
+msgstr ""
+
+#: nlmconv.c:629
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr ""
+
+#: nlmconv.c:649
+msgid "set start address"
+msgstr ""
+
+#: nlmconv.c:698
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr ""
+
+#: nlmconv.c:700
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr ""
+
+#: nlmconv.c:702
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr ""
+
+#: nlmconv.c:722 nlmconv.c:908
+msgid "custom section"
+msgstr ""
+
+#: nlmconv.c:742 nlmconv.c:937
+msgid "help section"
+msgstr ""
+
+#: nlmconv.c:764 nlmconv.c:955
+msgid "message section"
+msgstr ""
+
+#: nlmconv.c:779 nlmconv.c:988
+msgid "module section"
+msgstr ""
+
+#: nlmconv.c:798 nlmconv.c:1004
+msgid "rpc section"
+msgstr ""
+
+#. There is no place to record this information.
+#: nlmconv.c:834
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr ""
+
+#: nlmconv.c:855 nlmconv.c:1023
+msgid "shared section"
+msgstr ""
+
+#: nlmconv.c:863
+msgid "warning: No version number given"
+msgstr ""
+
+#: nlmconv.c:903 nlmconv.c:932 nlmconv.c:950 nlmconv.c:999 nlmconv.c:1018
+#, c-format
+msgid "%s: read: %s"
+msgstr ""
+
+#: nlmconv.c:925
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr ""
+
+#: nlmconv.c:1101
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr ""
+
+#: nlmconv.c:1102
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr ""
+
+#: nlmconv.c:1103
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+
+#: nlmconv.c:1144
+#, c-format
+msgid "support not compiled in for %s"
+msgstr ""
+
+#: nlmconv.c:1181
+msgid "make section"
+msgstr ""
+
+#: nlmconv.c:1195
+msgid "set section size"
+msgstr ""
+
+#: nlmconv.c:1201
+msgid "set section alignment"
+msgstr ""
+
+#: nlmconv.c:1205
+msgid "set section flags"
+msgstr ""
+
+#: nlmconv.c:1216
+msgid "set .nlmsections size"
+msgstr ""
+
+#: nlmconv.c:1297 nlmconv.c:1305 nlmconv.c:1314 nlmconv.c:1319
+msgid "set .nlmsection contents"
+msgstr ""
+
+#: nlmconv.c:1796
+msgid "stub section sizes"
+msgstr ""
+
+#: nlmconv.c:1843
+msgid "writing stub"
+msgstr ""
+
+#: nlmconv.c:1927
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr ""
+
+#: nlmconv.c:1991
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr ""
+
+#: nlmconv.c:2118
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr ""
+
+#: nlmconv.c:2133
+#, c-format
+msgid "Execution of %s failed"
+msgstr ""
+
+#: nm.c:225 size.c:78 strings.c:650
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr ""
+
+#: nm.c:226
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr ""
+
+#: nm.c:227
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level "
+"names\n"
+" The STYLE, if specified, can be `auto' (the "
+"default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', "
+"`java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be "
+"`bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+
+#: nm.c:250
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr ""
+
+#: nm.c:253
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+
+#: nm.c:301
+#, c-format
+msgid "%s: invalid radix"
+msgstr ""
+
+#: nm.c:325
+#, c-format
+msgid "%s: invalid output format"
+msgstr ""
+
+#: nm.c:346 readelf.c:8616 readelf.c:8661
+#, c-format
+msgid "<processor specific>: %d"
+msgstr ""
+
+#: nm.c:348 readelf.c:8625 readelf.c:8679
+#, c-format
+msgid "<OS specific>: %d"
+msgstr ""
+
+#: nm.c:350 readelf.c:8628 readelf.c:8682
+#, c-format
+msgid "<unknown>: %d"
+msgstr ""
+
+#: nm.c:390
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+
+#: nm.c:1258
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+
+#: nm.c:1260
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+
+#: nm.c:1262 nm.c:1313
+#, c-format
+msgid ""
+"Name Value Class Type Size Line "
+"Section\n"
+"\n"
+msgstr ""
+
+#: nm.c:1265 nm.c:1316
+#, c-format
+msgid ""
+"Name Value Class Type "
+"Size Line Section\n"
+"\n"
+msgstr ""
+
+#: nm.c:1309
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+
+#: nm.c:1311
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+
+#: nm.c:1403
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr ""
+
+#: nm.c:1631
+msgid "Only -X 32_64 is supported"
+msgstr ""
+
+#: nm.c:1660
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr ""
+
+#: nm.c:1661
+msgid "will produce no output, since undefined symbols have no size."
+msgstr ""
+
+#: nm.c:1689
+#, c-format
+msgid "data size %ld"
+msgstr ""
+
+#: objcopy.c:473 srconv.c:1732
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr ""
+
+#: objcopy.c:474
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr ""
+
+#: objcopy.c:476
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format "
+"<bfdname>\n"
+" -B --binary-architecture <arch> Set output arch, when input is arch-less\n"
+" -F --target <bfdname> Set both input and output format to "
+"<bfdname>\n"
+" --debugging Convert debugging information, if "
+"possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the "
+"output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to "
+"<file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation "
+"information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by "
+"relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed "
+"by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug "
+"information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved "
+"block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address "
+"<addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start "
+"addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by "
+"<val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by "
+"<val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by "
+"<val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to "
+"<flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to "
+"output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff "
+"objects.\n"
+" --change-leading-char Force output format's leading character "
+"style\n"
+" --remove-leading-char Remove leading character from global "
+"symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output "
+"sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated "
+"Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords "
+"to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols "
+"listed\n"
+" 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 the target's <index>'th alternative "
+"machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol "
+"name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section "
+"name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every "
+"allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to "
+"<reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" --compress-debug-sections Compress DWARF debug sections using zlib\n"
+" --decompress-debug-sections Decompress DWARF debug sections using "
+"zlib\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"
+msgstr ""
+
+#: objcopy.c:583
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr ""
+
+#: objcopy.c:584
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr ""
+
+#: objcopy.c:586
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format "
+"<bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to "
+"<bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the "
+"output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation "
+"information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures "
+"supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+
+#: objcopy.c:659
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr ""
+
+#: objcopy.c:660
+#, c-format
+msgid "supported flags: %s"
+msgstr ""
+
+#: objcopy.c:761
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr ""
+
+#: objcopy.c:764 objcopy.c:3417
+#, c-format
+msgid "%s: fread failed"
+msgstr ""
+
+#: objcopy.c:837
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr ""
+
+#: objcopy.c:1153
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr ""
+
+#: objcopy.c:1236
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr ""
+
+#: objcopy.c:1240
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr ""
+
+#: objcopy.c:1268
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr ""
+
+#: objcopy.c:1346
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr ""
+
+#: objcopy.c:1349
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr ""
+
+#: objcopy.c:1359
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr ""
+
+#: objcopy.c:1385
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr ""
+
+#: objcopy.c:1397
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr ""
+
+#: objcopy.c:1454
+msgid "Unable to change endianness of input file(s)"
+msgstr ""
+
+#: objcopy.c:1463
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr ""
+
+#: objcopy.c:1512
+#, c-format
+msgid "Input file `%s' ignores binary architecture parameter."
+msgstr ""
+
+#: objcopy.c:1520
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr ""
+
+#: objcopy.c:1523
+#, c-format
+msgid "Output file cannot represent architecture `%s'"
+msgstr ""
+
+#: objcopy.c:1586
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr ""
+
+#: objcopy.c:1645
+#, c-format
+msgid "can't add section '%s'"
+msgstr ""
+
+#: objcopy.c:1659
+#, c-format
+msgid "can't create section `%s'"
+msgstr ""
+
+#: objcopy.c:1705
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr ""
+
+#: objcopy.c:1798
+msgid "Can't fill gap after section"
+msgstr ""
+
+#: objcopy.c:1822
+msgid "can't add padding"
+msgstr ""
+
+#: objcopy.c:1913
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr ""
+
+#: objcopy.c:1976
+msgid "error copying private BFD data"
+msgstr ""
+
+#: objcopy.c:1987
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr ""
+
+#: objcopy.c:1991
+msgid "treating that number as an absolute e_machine value instead"
+msgstr ""
+
+#: objcopy.c:1995
+msgid "ignoring the alternative value"
+msgstr ""
+
+#: objcopy.c:2027 objcopy.c:2063
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr ""
+
+#: objcopy.c:2093
+msgid "Unable to recognise the format of file"
+msgstr ""
+
+#: objcopy.c:2220
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr ""
+
+#: objcopy.c:2364
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr ""
+
+#: objcopy.c:2415
+msgid "error in private header data"
+msgstr ""
+
+#: objcopy.c:2493
+msgid "failed to create output section"
+msgstr ""
+
+#: objcopy.c:2507
+msgid "failed to set size"
+msgstr ""
+
+#: objcopy.c:2521
+msgid "failed to set vma"
+msgstr ""
+
+#: objcopy.c:2546
+msgid "failed to set alignment"
+msgstr ""
+
+#: objcopy.c:2580
+msgid "failed to copy private data"
+msgstr ""
+
+#: objcopy.c:2662
+msgid "relocation count is negative"
+msgstr ""
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2723
+#, c-format
+msgid ""
+"cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr ""
+
+#: objcopy.c:2909
+msgid "can't create debugging section"
+msgstr ""
+
+#: objcopy.c:2922
+msgid "can't set debugging section contents"
+msgstr ""
+
+#: objcopy.c:2930
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr ""
+
+#: objcopy.c:3073
+msgid "could not create temporary file to hold stripped copy"
+msgstr ""
+
+#: objcopy.c:3145
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr ""
+
+#: objcopy.c:3175
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr ""
+
+#: objcopy.c:3237
+msgid "byte number must be non-negative"
+msgstr ""
+
+#: objcopy.c:3243
+#, c-format
+msgid "architecture %s unknown"
+msgstr ""
+
+#: objcopy.c:3251
+msgid "interleave must be positive"
+msgstr ""
+
+#: objcopy.c:3260
+msgid "interleave width must be positive"
+msgstr ""
+
+#: objcopy.c:3280 objcopy.c:3288
+#, c-format
+msgid "%s both copied and removed"
+msgstr ""
+
+#: objcopy.c:3387 objcopy.c:3467 objcopy.c:3575 objcopy.c:3606 objcopy.c:3630
+#: objcopy.c:3634 objcopy.c:3654
+#, c-format
+msgid "bad format for %s"
+msgstr ""
+
+#: objcopy.c:3399
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr ""
+
+#: objcopy.c:3544
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr ""
+
+#: objcopy.c:3705
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr ""
+
+#: objcopy.c:3723
+msgid "unable to parse alternative machine code"
+msgstr ""
+
+#: objcopy.c:3768
+msgid "number of bytes to reverse must be positive and even"
+msgstr ""
+
+#: objcopy.c:3771
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr ""
+
+#: objcopy.c:3786
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr ""
+
+#: objcopy.c:3792
+#, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr ""
+
+#: objcopy.c:3817
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr ""
+
+#: objcopy.c:3823
+#, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr ""
+
+#: objcopy.c:3852
+msgid "interleave start byte must be set with --byte"
+msgstr ""
+
+#: objcopy.c:3855
+msgid "byte number must be less than interleave"
+msgstr ""
+
+#: objcopy.c:3858
+msgid "interleave width must be less than or equal to interleave - byte`"
+msgstr ""
+
+#: objcopy.c:3885
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr ""
+
+#: objcopy.c:3916
+#, c-format
+msgid "unknown output EFI target: %s"
+msgstr ""
+
+#: objcopy.c:3929
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr ""
+
+#: objcopy.c:3941
+#, c-format
+msgid ""
+"warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr ""
+
+#: objcopy.c:3969 objcopy.c:3983
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr ""
+
+#: objdump.c:201
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr ""
+
+#: objdump.c:202
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr ""
+
+#: objdump.c:203
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr ""
+
+#: objdump.c:204
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header "
+"contents\n"
+" -P, --private=OPT,OPT... Display object format specific contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable "
+"sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections "
+"requested\n"
+" -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[lLiaprmfFsoRt] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,"
+"=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+msgstr ""
+
+#: objdump.c:236
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+
+#: objdump.c:237
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as "
+"BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when "
+"disassembling\n"
+" -EL --endian=little Assume little endian format when "
+"disassembling\n"
+" --file-start-context Include context from start of file (with -"
+"S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in "
+"output\n"
+" -F, --file-offsets Include file offsets when displaying "
+"information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', "
+"`gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', "
+"`java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when "
+"disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside "
+"disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a single line for -"
+"d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section "
+"addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+msgstr ""
+
+#: objdump.c:263
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same "
+"depth\n"
+" or deeper\n"
+"\n"
+msgstr ""
+
+#: objdump.c:275
+#, c-format
+msgid ""
+"\n"
+"Options supported for -P/--private switch:\n"
+msgstr ""
+
+#: objdump.c:426
+#, c-format
+msgid "section '%s' mentioned in a -j option, but not found in any input file"
+msgstr ""
+
+#: objdump.c:530
+#, c-format
+msgid "Sections:\n"
+msgstr ""
+
+#: objdump.c:533 objdump.c:537
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr ""
+
+#: objdump.c:539
+#, c-format
+msgid ""
+"Idx Name Size VMA LMA File off "
+"Algn"
+msgstr ""
+
+#: objdump.c:543
+#, c-format
+msgid " Flags"
+msgstr ""
+
+#: objdump.c:586
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr ""
+
+#: objdump.c:1012 objdump.c:1036
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr ""
+
+#: objdump.c:1662
+#, c-format
+msgid "disassemble_fn returned length %d"
+msgstr ""
+
+#: objdump.c:1967
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+
+#: objdump.c:2143
+#, c-format
+msgid "can't use supplied machine %s"
+msgstr ""
+
+#: objdump.c:2162
+#, c-format
+msgid "can't disassemble for architecture %s\n"
+msgstr ""
+
+#: objdump.c:2242 objdump.c:2265
+#, c-format
+msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+
+#: objdump.c:2406
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+
+#: objdump.c:2415
+#, c-format
+msgid "reading %s section of %s failed: %s"
+msgstr ""
+
+#: objdump.c:2459
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+
+#: objdump.c:2590
+#, c-format
+msgid "architecture: %s, "
+msgstr ""
+
+#: objdump.c:2593
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr ""
+
+#: objdump.c:2607
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+
+#: objdump.c:2633
+msgid "option -P/--private not supported by this file"
+msgstr ""
+
+#: objdump.c:2657
+#, c-format
+msgid "target specific dump '%s' not supported"
+msgstr ""
+
+#: objdump.c:2721
+#, c-format
+msgid "Contents of section %s:"
+msgstr ""
+
+#: objdump.c:2723
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr ""
+
+#: objdump.c:2729
+msgid "Reading section failed"
+msgstr ""
+
+#: objdump.c:2832
+#, c-format
+msgid "no symbols\n"
+msgstr ""
+
+#: objdump.c:2839
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr ""
+
+#: objdump.c:2842
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr ""
+
+#: objdump.c:3163
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+
+#: objdump.c:3223
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr ""
+
+#: objdump.c:3327
+#, c-format
+msgid "In archive %s:\n"
+msgstr ""
+
+#: objdump.c:3438
+msgid "error: the start address should be before the end address"
+msgstr ""
+
+#: objdump.c:3443
+msgid "error: the stop address should be after the start address"
+msgstr ""
+
+#: objdump.c:3455
+msgid "error: prefix strip must be non-negative"
+msgstr ""
+
+#: objdump.c:3460
+msgid "error: instruction width must be positive"
+msgstr ""
+
+#: objdump.c:3469
+msgid "unrecognized -E option"
+msgstr ""
+
+#: objdump.c:3480
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr ""
+
+#: od-xcoff.c:75
+#, c-format
+msgid ""
+"For XCOFF files:\n"
+" header Display the file header\n"
+" aout Display the auxiliary header\n"
+" sections Display the section headers\n"
+" syms Display the symbols table\n"
+" relocs Display the relocation entries\n"
+" lineno Display the line number entries\n"
+" loader Display loader section\n"
+" except Display exception table\n"
+" typchk Display type-check section\n"
+" traceback Display traceback tags\n"
+" toc Display toc symbols\n"
+msgstr ""
+
+#: od-xcoff.c:416
+#, c-format
+msgid " nbr sections: %d\n"
+msgstr ""
+
+#: od-xcoff.c:417
+#, c-format
+msgid " time and date: 0x%08x - "
+msgstr ""
+
+#: od-xcoff.c:419
+#, c-format
+msgid "not set\n"
+msgstr ""
+
+#: od-xcoff.c:426
+#, c-format
+msgid " symbols off: 0x%08x\n"
+msgstr ""
+
+#: od-xcoff.c:427
+#, c-format
+msgid " nbr symbols: %d\n"
+msgstr ""
+
+#: od-xcoff.c:428
+#, c-format
+msgid " opt hdr sz: %d\n"
+msgstr ""
+
+#: od-xcoff.c:429
+#, c-format
+msgid " flags: 0x%04x "
+msgstr ""
+
+#: od-xcoff.c:443
+#, c-format
+msgid "Auxiliary header:\n"
+msgstr ""
+
+#: od-xcoff.c:446
+#, c-format
+msgid " No aux header\n"
+msgstr ""
+
+#: od-xcoff.c:451
+#, c-format
+msgid "warning: optionnal header size too large (> %d)\n"
+msgstr ""
+
+#: od-xcoff.c:457
+msgid "cannot read auxhdr"
+msgstr ""
+
+#: od-xcoff.c:522
+#, c-format
+msgid "Section headers (at %u+%u=0x%08x to 0x%08x):\n"
+msgstr ""
+
+#: od-xcoff.c:527
+#, c-format
+msgid " No section header\n"
+msgstr ""
+
+#: od-xcoff.c:532 od-xcoff.c:544 od-xcoff.c:599
+msgid "cannot read section header"
+msgstr ""
+
+#: od-xcoff.c:558
+#, c-format
+msgid " Flags: %08x "
+msgstr ""
+
+#: od-xcoff.c:566
+#, c-format
+msgid "overflow - nreloc: %u, nlnno: %u\n"
+msgstr ""
+
+#: od-xcoff.c:587 od-xcoff.c:922 od-xcoff.c:978
+msgid "cannot read section headers"
+msgstr ""
+
+#: od-xcoff.c:646
+msgid "cannot read strings table length"
+msgstr ""
+
+#: od-xcoff.c:662
+msgid "cannot read strings table"
+msgstr ""
+
+#: od-xcoff.c:670
+msgid "cannot read symbol table"
+msgstr ""
+
+#: od-xcoff.c:685
+msgid "cannot read symbol entry"
+msgstr ""
+
+#: od-xcoff.c:720
+msgid "cannot read symbol aux entry"
+msgstr ""
+
+#: od-xcoff.c:742
+#, c-format
+msgid "Symbols table (strtable at 0x%08x)"
+msgstr ""
+
+#: od-xcoff.c:747
+#, c-format
+msgid ""
+":\n"
+" No symbols\n"
+msgstr ""
+
+#: od-xcoff.c:753
+#, c-format
+msgid " (no strings):\n"
+msgstr ""
+
+#: od-xcoff.c:755
+#, c-format
+msgid " (strings size: %08x):\n"
+msgstr ""
+
+#. Translators: 'sc' is for storage class, 'off' for offset.
+#: od-xcoff.c:769
+#, c-format
+msgid " # sc value section type aux name/off\n"
+msgstr ""
+
+#. Section length, number of relocs and line number.
+#: od-xcoff.c:821
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+msgstr ""
+
+#. Section length and number of relocs.
+#: od-xcoff.c:828
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u\n"
+msgstr ""
+
+#: od-xcoff.c:891
+#, c-format
+msgid "offset: %08x"
+msgstr ""
+
+#: od-xcoff.c:934
+#, c-format
+msgid "Relocations for %s (%u)\n"
+msgstr ""
+
+#: od-xcoff.c:937
+msgid "cannot read relocations"
+msgstr ""
+
+#: od-xcoff.c:950
+msgid "cannot read relocation entry"
+msgstr ""
+
+#: od-xcoff.c:990
+#, c-format
+msgid "Line numbers for %s (%u)\n"
+msgstr ""
+
+#: od-xcoff.c:993
+msgid "cannot read line numbers"
+msgstr ""
+
+#. Line number, symbol index and physical address.
+#: od-xcoff.c:997
+#, c-format
+msgid "lineno symndx/paddr\n"
+msgstr ""
+
+#: od-xcoff.c:1005
+msgid "cannot read line number entry"
+msgstr ""
+
+#: od-xcoff.c:1048
+#, c-format
+msgid "no .loader section in file\n"
+msgstr ""
+
+#: od-xcoff.c:1054
+#, c-format
+msgid "section .loader is too short\n"
+msgstr ""
+
+#: od-xcoff.c:1061
+#, c-format
+msgid "Loader header:\n"
+msgstr ""
+
+#: od-xcoff.c:1063
+#, c-format
+msgid " version: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1066
+#, c-format
+msgid " Unhandled version\n"
+msgstr ""
+
+#: od-xcoff.c:1071
+#, c-format
+msgid " nbr symbols: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1073
+#, c-format
+msgid " nbr relocs: %u\n"
+msgstr ""
+
+#. Import string table length.
+#: od-xcoff.c:1075
+#, c-format
+msgid " import strtab len: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1078
+#, c-format
+msgid " nbr import files: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1080
+#, c-format
+msgid " import file off: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1082
+#, c-format
+msgid " string table len: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1084
+#, c-format
+msgid " string table off: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1087
+#, c-format
+msgid "Dynamic symbols:\n"
+msgstr ""
+
+#: od-xcoff.c:1094
+#, c-format
+msgid " %4u %08x %3u "
+msgstr ""
+
+#: od-xcoff.c:1107
+#, c-format
+msgid " %3u %3u "
+msgstr ""
+
+#: od-xcoff.c:1116
+#, c-format
+msgid "(bad offset: %u)"
+msgstr ""
+
+#: od-xcoff.c:1123
+#, c-format
+msgid "Dynamic relocs:\n"
+msgstr ""
+
+#: od-xcoff.c:1163
+#, c-format
+msgid "Import files:\n"
+msgstr ""
+
+#: od-xcoff.c:1195
+#, c-format
+msgid "no .except section in file\n"
+msgstr ""
+
+#: od-xcoff.c:1203
+#, c-format
+msgid "Exception table:\n"
+msgstr ""
+
+#: od-xcoff.c:1238
+#, c-format
+msgid "no .typchk section in file\n"
+msgstr ""
+
+#: od-xcoff.c:1245
+#, c-format
+msgid "Type-check section:\n"
+msgstr ""
+
+#: od-xcoff.c:1292
+#, c-format
+msgid " address beyond section size\n"
+msgstr ""
+
+#: od-xcoff.c:1302
+#, c-format
+msgid " tags at %08x\n"
+msgstr ""
+
+#: od-xcoff.c:1380
+#, c-format
+msgid " number of CTL anchors: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1399
+#, c-format
+msgid " Name (len: %u): "
+msgstr ""
+
+#: od-xcoff.c:1402
+#, c-format
+msgid "[truncated]\n"
+msgstr ""
+
+#: od-xcoff.c:1421
+#, c-format
+msgid " (end of tags at %08x)\n"
+msgstr ""
+
+#: od-xcoff.c:1424
+#, c-format
+msgid " no tags found\n"
+msgstr ""
+
+#: od-xcoff.c:1428
+#, c-format
+msgid " Truncated .text section\n"
+msgstr ""
+
+#: od-xcoff.c:1513
+#, c-format
+msgid "TOC:\n"
+msgstr ""
+
+#: od-xcoff.c:1556
+#, c-format
+msgid "Nbr entries: %-8u Size: %08x (%u)\n"
+msgstr ""
+
+#: od-xcoff.c:1640
+msgid "cannot read header"
+msgstr ""
+
+#: od-xcoff.c:1648
+#, c-format
+msgid "File header:\n"
+msgstr ""
+
+#: od-xcoff.c:1649
+#, c-format
+msgid " magic: 0x%04x (0%04o) "
+msgstr ""
+
+#: od-xcoff.c:1653
+#, c-format
+msgid "(WRMAGIC: writable text segments)"
+msgstr ""
+
+#: od-xcoff.c:1656
+#, c-format
+msgid "(ROMAGIC: readonly sharablee text segments)"
+msgstr ""
+
+#: od-xcoff.c:1659
+#, c-format
+msgid "(TOCMAGIC: readonly text segments and TOC)"
+msgstr ""
+
+#: od-xcoff.c:1662
+#, c-format
+msgid "unknown magic"
+msgstr ""
+
+#: od-xcoff.c:1669
+#, c-format
+msgid " Unhandled magic\n"
+msgstr ""
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr ""
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr ""
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr ""
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr ""
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr ""
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr ""
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr ""
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr ""
+
+#: readelf.c:268
+msgid "<none>"
+msgstr ""
+
+#: readelf.c:269
+msgid "<no-name>"
+msgstr ""
+
+#: readelf.c:270 readelf.c:5083 readelf.c:5594 readelf.c:8132 readelf.c:8250
+#: readelf.c:9233 readelf.c:9327 readelf.c:9388 readelf.c:12391
+#: readelf.c:12394
+msgid "<corrupt>"
+msgstr ""
+
+#: readelf.c:309
+#, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr ""
+
+#: readelf.c:324
+#, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr ""
+
+#: readelf.c:334
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr ""
+
+#: readelf.c:638
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr ""
+
+#: readelf.c:659 readelf.c:757
+msgid "32-bit relocation data"
+msgstr ""
+
+#: readelf.c:671 readelf.c:701 readelf.c:768 readelf.c:797
+msgid "out of memory parsing relocs\n"
+msgstr ""
+
+#: readelf.c:689 readelf.c:786
+msgid "64-bit relocation data"
+msgstr ""
+
+#: readelf.c:902
+#, c-format
+msgid ""
+" Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr ""
+
+#: readelf.c:904
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr ""
+
+#: readelf.c:909
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr ""
+
+#: readelf.c:911
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr ""
+
+#: readelf.c:919
+#, c-format
+msgid ""
+" Offset Info Type Symbol's Value "
+"Symbol's Name + Addend\n"
+msgstr ""
+
+#: readelf.c:921
+#, c-format
+msgid ""
+" Offset Info Type Sym. Value Sym. Name + "
+"Addend\n"
+msgstr ""
+
+#: readelf.c:926
+#, c-format
+msgid ""
+" Offset Info Type Symbol's Value "
+"Symbol's Name\n"
+msgstr ""
+
+#: readelf.c:928
+#, c-format
+msgid ""
+" Offset Info Type Sym. Value Sym. Name\n"
+msgstr ""
+
+#: readelf.c:1245 readelf.c:1405 readelf.c:1413
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr ""
+
+#: readelf.c:1270
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr ""
+
+#: readelf.c:1277
+#, c-format
+msgid " bad symbol index: %08lx"
+msgstr ""
+
+#: readelf.c:1363
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr ""
+
+#: readelf.c:1365
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr ""
+
+#: readelf.c:1758
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr ""
+
+#: readelf.c:1782
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr ""
+
+#: readelf.c:1786 readelf.c:2858
+#, c-format
+msgid "<unknown>: %lx"
+msgstr ""
+
+#: readelf.c:1799
+msgid "NONE (None)"
+msgstr ""
+
+#: readelf.c:1800
+msgid "REL (Relocatable file)"
+msgstr ""
+
+#: readelf.c:1801
+msgid "EXEC (Executable file)"
+msgstr ""
+
+#: readelf.c:1802
+msgid "DYN (Shared object file)"
+msgstr ""
+
+#: readelf.c:1803
+msgid "CORE (Core file)"
+msgstr ""
+
+#: readelf.c:1807
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr ""
+
+#: readelf.c:1809
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr ""
+
+#: readelf.c:1811
+#, c-format
+msgid "<unknown>: %x"
+msgstr ""
+
+#: readelf.c:1823
+msgid "None"
+msgstr ""
+
+#: readelf.c:1994
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr ""
+
+#: readelf.c:2180
+msgid ", <unknown>"
+msgstr ""
+
+#: readelf.c:2266 readelf.c:7485
+msgid "unknown"
+msgstr ""
+
+#: readelf.c:2267
+msgid "unknown mac"
+msgstr ""
+
+#: readelf.c:2331
+msgid ", relocatable"
+msgstr ""
+
+#: readelf.c:2334
+msgid ", relocatable-lib"
+msgstr ""
+
+#: readelf.c:2357
+msgid ", unknown v850 architecture variant"
+msgstr ""
+
+#: readelf.c:2414
+msgid ", unknown CPU"
+msgstr ""
+
+#: readelf.c:2429
+msgid ", unknown ABI"
+msgstr ""
+
+#: readelf.c:2452 readelf.c:2486
+msgid ", unknown ISA"
+msgstr ""
+
+#: readelf.c:2663
+msgid "Standalone App"
+msgstr ""
+
+#: readelf.c:2672
+msgid "Bare-metal C6000"
+msgstr ""
+
+#: readelf.c:2682 readelf.c:3471 readelf.c:3487
+#, c-format
+msgid "<unknown: %x>"
+msgstr ""
+
+#. This message is probably going to be displayed in a 15
+#. character wide field, so put the hex value first.
+#: readelf.c:3108
+#, c-format
+msgid "%08x: <unknown>"
+msgstr ""
+
+#: readelf.c:3163
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr ""
+
+#: readelf.c:3164
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr ""
+
+#: readelf.c:3165
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" --dyn-syms Display the dynamic symbol table\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if "
+"any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying "
+"symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as "
+"bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as "
+"strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as "
+"relocated bytes\n"
+" -w[lLiaprmfFsoRt] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,"
+"=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+
+#: readelf.c:3197
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+msgstr ""
+
+#: readelf.c:3202
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+
+#: readelf.c:3206
+#, 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 ""
+
+#: readelf.c:3235 readelf.c:3264 readelf.c:3268 readelf.c:13623
+msgid "Out of memory allocating dump request table.\n"
+msgstr ""
+
+#: readelf.c:3440
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr ""
+
+#: readelf.c:3455
+msgid "Nothing to do.\n"
+msgstr ""
+
+#: readelf.c:3467 readelf.c:3483 readelf.c:8068
+msgid "none"
+msgstr ""
+
+#: readelf.c:3484
+msgid "2's complement, little endian"
+msgstr ""
+
+#: readelf.c:3485
+msgid "2's complement, big endian"
+msgstr ""
+
+#: readelf.c:3503
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr ""
+
+#: readelf.c:3513
+#, c-format
+msgid "ELF Header:\n"
+msgstr ""
+
+#: readelf.c:3514
+#, c-format
+msgid " Magic: "
+msgstr ""
+
+#: readelf.c:3518
+#, c-format
+msgid " Class: %s\n"
+msgstr ""
+
+#: readelf.c:3520
+#, c-format
+msgid " Data: %s\n"
+msgstr ""
+
+#: readelf.c:3522
+#, c-format
+msgid " Version: %d %s\n"
+msgstr ""
+
+#: readelf.c:3527
+#, c-format
+msgid "<unknown: %lx>"
+msgstr ""
+
+#: readelf.c:3529
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr ""
+
+#: readelf.c:3531
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr ""
+
+#: readelf.c:3533
+#, c-format
+msgid " Type: %s\n"
+msgstr ""
+
+#: readelf.c:3535
+#, c-format
+msgid " Machine: %s\n"
+msgstr ""
+
+#: readelf.c:3537
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr ""
+
+#: readelf.c:3540
+#, c-format
+msgid " Entry point address: "
+msgstr ""
+
+#: readelf.c:3542
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+
+#: readelf.c:3544
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+
+#: readelf.c:3546
+#, c-format
+msgid " (bytes into file)\n"
+msgstr ""
+
+#: readelf.c:3548
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr ""
+
+#: readelf.c:3551
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr ""
+
+#: readelf.c:3553
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr ""
+
+#: readelf.c:3555
+#, c-format
+msgid " Number of program headers: %ld"
+msgstr ""
+
+#: readelf.c:3562
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr ""
+
+#: readelf.c:3564
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr ""
+
+#: readelf.c:3569
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr ""
+
+#: readelf.c:3576
+#, c-format
+msgid " <corrupt: out of range>"
+msgstr ""
+
+#: readelf.c:3610 readelf.c:3644
+msgid "program headers"
+msgstr ""
+
+#: readelf.c:3711
+msgid ""
+"possibly corrupt ELF header - it has a non-zero program header offset, but "
+"no program headers"
+msgstr ""
+
+#: readelf.c:3714
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+
+#: readelf.c:3720
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+
+#: readelf.c:3721
+#, c-format
+msgid "Entry point "
+msgstr ""
+
+#: readelf.c:3723
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+
+#: readelf.c:3735 readelf.c:3737
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+
+#: readelf.c:3741
+#, c-format
+msgid ""
+" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr ""
+
+#: readelf.c:3744
+#, c-format
+msgid ""
+" Type Offset VirtAddr PhysAddr FileSiz "
+"MemSiz Flg Align\n"
+msgstr ""
+
+#: readelf.c:3748
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr ""
+
+#: readelf.c:3750
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr ""
+
+#: readelf.c:3843
+msgid "more than one dynamic segment\n"
+msgstr ""
+
+#: readelf.c:3862
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr ""
+
+#: readelf.c:3877
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr ""
+
+#: readelf.c:3880
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr ""
+
+#: readelf.c:3888
+msgid "Unable to find program interpreter name\n"
+msgstr ""
+
+#: readelf.c:3895
+msgid ""
+"Internal error: failed to create format string to display program "
+"interpreter\n"
+msgstr ""
+
+#: readelf.c:3899
+msgid "Unable to read program interpreter name\n"
+msgstr ""
+
+#: readelf.c:3902
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+
+#: readelf.c:3914
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+
+#: readelf.c:3915
+#, c-format
+msgid " Segment Sections...\n"
+msgstr ""
+
+#: readelf.c:3951
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr ""
+
+#: readelf.c:3967
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr ""
+
+#: readelf.c:3982 readelf.c:4025
+msgid "section headers"
+msgstr ""
+
+#: readelf.c:4074 readelf.c:4154
+msgid "sh_entsize is zero\n"
+msgstr ""
+
+#: readelf.c:4082 readelf.c:4162
+msgid "Invalid sh_entsize\n"
+msgstr ""
+
+#: readelf.c:4087 readelf.c:4167
+msgid "symbols"
+msgstr ""
+
+#: readelf.c:4099 readelf.c:4178
+msgid "symbol table section indicies"
+msgstr ""
+
+#: readelf.c:4439
+#, c-format
+msgid "UNKNOWN (%*.*lx)"
+msgstr ""
+
+#: readelf.c:4461
+msgid ""
+"possibly corrupt ELF file header - it has a non-zero section header offset, "
+"but no section headers\n"
+msgstr ""
+
+#: readelf.c:4464
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+
+#: readelf.c:4470
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr ""
+
+#: readelf.c:4491 readelf.c:5079 readelf.c:5491 readelf.c:5797 readelf.c:6210
+#: readelf.c:7093 readelf.c:9213
+msgid "string table"
+msgstr ""
+
+#: readelf.c:4558
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr ""
+
+#: readelf.c:4578
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr ""
+
+#: readelf.c:4590
+msgid "File contains multiple dynamic string tables\n"
+msgstr ""
+
+#: readelf.c:4596
+msgid "dynamic strings"
+msgstr ""
+
+#: readelf.c:4603
+msgid "File contains multiple symtab shndx tables\n"
+msgstr ""
+
+#: readelf.c:4674
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+
+#: readelf.c:4676
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+
+#: readelf.c:4682 readelf.c:4693 readelf.c:4704
+#, c-format
+msgid " [Nr] Name\n"
+msgstr ""
+
+#: readelf.c:4683
+#, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:4687
+#, c-format
+msgid ""
+" [Nr] Name Type Addr Off Size ES Flg Lk "
+"Inf Al\n"
+msgstr ""
+
+#: readelf.c:4694
+#, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:4698
+#, c-format
+msgid ""
+" [Nr] Name Type Address Off Size ES "
+"Flg Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:4705
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr ""
+
+#: readelf.c:4706
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr ""
+
+#: readelf.c:4710
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr ""
+
+#: readelf.c:4711
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr ""
+
+#: readelf.c:4716
+#, c-format
+msgid " Flags\n"
+msgstr ""
+
+#: readelf.c:4796
+#, c-format
+msgid "section %u: sh_link value of %u is larger than the number of sections\n"
+msgstr ""
+
+#: readelf.c:4896
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+
+#: readelf.c:4901
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+
+#: readelf.c:4923
+#, c-format
+msgid "[<unknown>: 0x%x] "
+msgstr ""
+
+#: readelf.c:4949
+#, c-format
+msgid ""
+"\n"
+"There are no sections to group in this file.\n"
+msgstr ""
+
+#: readelf.c:4956
+msgid "Section headers are not available!\n"
+msgstr ""
+
+#: readelf.c:4980
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+
+#: readelf.c:5018
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:5032
+#, c-format
+msgid "Corrupt header in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:5038 readelf.c:5049
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:5088
+msgid "section data"
+msgstr ""
+
+#: readelf.c:5099
+#, c-format
+msgid ""
+"\n"
+"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
+msgstr ""
+
+#: readelf.c:5102
+#, c-format
+msgid " [Index] Name\n"
+msgstr ""
+
+#: readelf.c:5116
+#, c-format
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr ""
+
+#: readelf.c:5125
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr ""
+
+#: readelf.c:5138
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr ""
+
+#: readelf.c:5205
+msgid "dynamic section image fixups"
+msgstr ""
+
+#: readelf.c:5217
+#, c-format
+msgid ""
+"\n"
+"Image fixups for needed library #%d: %s - ident: %lx\n"
+msgstr ""
+
+#: readelf.c:5220
+#, c-format
+msgid "Seg Offset Type SymVec DataType\n"
+msgstr ""
+
+#: readelf.c:5252
+msgid "dynamic section image relocations"
+msgstr ""
+
+#: readelf.c:5256
+#, c-format
+msgid ""
+"\n"
+"Image relocs\n"
+msgstr ""
+
+#: readelf.c:5258
+#, c-format
+msgid ""
+"Seg Offset Type Addend Seg Sym Off\n"
+msgstr ""
+
+#: readelf.c:5313
+msgid "dynamic string section"
+msgstr ""
+
+#: readelf.c:5414
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+
+#: readelf.c:5429
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+
+#: readelf.c:5453
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+
+#: readelf.c:5460 readelf.c:5890 readelf.c:6227
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:5510
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+
+#: readelf.c:5648
+#, c-format
+msgid "\tUnknown version.\n"
+msgstr ""
+
+#: readelf.c:5701 readelf.c:6074
+msgid "unwind table"
+msgstr ""
+
+#: readelf.c:5743 readelf.c:6156 readelf.c:6415
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr ""
+
+#: readelf.c:5805 readelf.c:6218 readelf.c:7101 readelf.c:7148
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+
+#: readelf.c:5868
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+
+#: readelf.c:5873 readelf.c:5888 readelf.c:6225
+#, c-format
+msgid "'%s'"
+msgstr ""
+
+#: readelf.c:5880
+msgid "unwind info"
+msgstr ""
+
+#: readelf.c:5883 readelf.c:6224
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+
+#: readelf.c:6333
+msgid "unwind data"
+msgstr ""
+
+#: readelf.c:6386
+#, c-format
+msgid "Skipping unexpected relocation at offset 0x%lx\n"
+msgstr ""
+
+#: readelf.c:6490
+#, c-format
+msgid "[Truncated opcode]\n"
+msgstr ""
+
+#: readelf.c:6534 readelf.c:6734
+#, c-format
+msgid "Refuse to unwind"
+msgstr ""
+
+#: readelf.c:6557
+#, c-format
+msgid " [Reserved]"
+msgstr ""
+
+#: readelf.c:6585
+#, c-format
+msgid " finish"
+msgstr ""
+
+#: readelf.c:6590 readelf.c:6676
+#, c-format
+msgid "[Spare]"
+msgstr ""
+
+#: readelf.c:6697 readelf.c:6831
+#, c-format
+msgid " [unsupported opcode]"
+msgstr ""
+
+#: readelf.c:6781
+#, c-format
+msgid "pop frame {"
+msgstr ""
+
+#: readelf.c:6792
+msgid "[pad]"
+msgstr ""
+
+#: readelf.c:6820
+#, c-format
+msgid "sp = sp + %ld"
+msgstr ""
+
+#: readelf.c:6878
+#, c-format
+msgid " Personality routine: "
+msgstr ""
+
+#: readelf.c:6896
+#, c-format
+msgid " [Truncated data]\n"
+msgstr ""
+
+#: readelf.c:6911
+#, c-format
+msgid " Compact model %d\n"
+msgstr ""
+
+#: readelf.c:6947
+#, c-format
+msgid " Restore stack from frame pointer\n"
+msgstr ""
+
+#: readelf.c:6949
+#, c-format
+msgid " Stack increment %d\n"
+msgstr ""
+
+#: readelf.c:6950
+#, c-format
+msgid " Registers restored: "
+msgstr ""
+
+#: readelf.c:6955
+#, c-format
+msgid " Return register: %s\n"
+msgstr ""
+
+#: readelf.c:7038
+#, c-format
+msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
+msgstr ""
+
+#: readelf.c:7107
+#, c-format
+msgid ""
+"\n"
+"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:7159
+#, c-format
+msgid "NONE\n"
+msgstr ""
+
+#: readelf.c:7185
+#, c-format
+msgid "Interface Version: %s\n"
+msgstr ""
+
+#: readelf.c:7187
+#, c-format
+msgid "<corrupt: %ld>\n"
+msgstr ""
+
+#: readelf.c:7200
+#, c-format
+msgid "Time Stamp: %s\n"
+msgstr ""
+
+#: readelf.c:7377 readelf.c:7423
+msgid "dynamic section"
+msgstr ""
+
+#: readelf.c:7501
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+
+#: readelf.c:7539
+msgid "Unable to seek to end of file!\n"
+msgstr ""
+
+#: readelf.c:7552
+msgid "Unable to determine the number of symbols to load\n"
+msgstr ""
+
+#: readelf.c:7585
+msgid "Unable to seek to end of file\n"
+msgstr ""
+
+#: readelf.c:7592
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr ""
+
+#: readelf.c:7598
+msgid "dynamic string table"
+msgstr ""
+
+#: readelf.c:7635
+msgid "symbol information"
+msgstr ""
+
+#: readelf.c:7660
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+
+#: readelf.c:7663
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr ""
+
+#: readelf.c:7699
+#, c-format
+msgid "Auxiliary library"
+msgstr ""
+
+#: readelf.c:7703
+#, c-format
+msgid "Filter library"
+msgstr ""
+
+#: readelf.c:7707
+#, c-format
+msgid "Configuration file"
+msgstr ""
+
+#: readelf.c:7711
+#, c-format
+msgid "Dependency audit library"
+msgstr ""
+
+#: readelf.c:7715
+#, c-format
+msgid "Audit library"
+msgstr ""
+
+#: readelf.c:7733 readelf.c:7761 readelf.c:7789
+#, c-format
+msgid "Flags:"
+msgstr ""
+
+#: readelf.c:7736 readelf.c:7764 readelf.c:7791
+#, c-format
+msgid " None\n"
+msgstr ""
+
+#: readelf.c:7912
+#, c-format
+msgid "Shared library: [%s]"
+msgstr ""
+
+#: readelf.c:7915
+#, c-format
+msgid " program interpreter"
+msgstr ""
+
+#: readelf.c:7919
+#, c-format
+msgid "Library soname: [%s]"
+msgstr ""
+
+#: readelf.c:7923
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr ""
+
+#: readelf.c:7927
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr ""
+
+#: readelf.c:7960
+#, c-format
+msgid " (bytes)\n"
+msgstr ""
+
+#: readelf.c:7990
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr ""
+
+#: readelf.c:8090
+msgid "| <unknown>"
+msgstr ""
+
+#: readelf.c:8123
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+
+#: readelf.c:8126
+#, c-format
+msgid " Addr: 0x"
+msgstr ""
+
+#: readelf.c:8128 readelf.c:8246 readelf.c:8390
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr ""
+
+#: readelf.c:8136
+msgid "version definition section"
+msgstr ""
+
+#: readelf.c:8169
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr ""
+
+#: readelf.c:8172
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr ""
+
+#: readelf.c:8188
+#, c-format
+msgid "Name: %s\n"
+msgstr ""
+
+#: readelf.c:8190
+#, c-format
+msgid "Name index: %ld\n"
+msgstr ""
+
+#: readelf.c:8212
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr ""
+
+#: readelf.c:8215
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr ""
+
+#: readelf.c:8220
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr ""
+
+#: readelf.c:8226
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr ""
+
+#: readelf.c:8241
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+
+#: readelf.c:8244
+#, c-format
+msgid " Addr: 0x"
+msgstr ""
+
+#: readelf.c:8255
+msgid "Version Needs section"
+msgstr ""
+
+#: readelf.c:8283
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr ""
+
+#: readelf.c:8286
+#, c-format
+msgid " File: %s"
+msgstr ""
+
+#: readelf.c:8288
+#, c-format
+msgid " File: %lx"
+msgstr ""
+
+#: readelf.c:8290
+#, c-format
+msgid " Cnt: %d\n"
+msgstr ""
+
+#: readelf.c:8315
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr ""
+
+#: readelf.c:8318
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr ""
+
+#: readelf.c:8321
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr ""
+
+#: readelf.c:8334
+msgid "Missing Version Needs auxillary information\n"
+msgstr ""
+
+#: readelf.c:8340
+msgid "Missing Version Needs information\n"
+msgstr ""
+
+#: readelf.c:8378
+msgid "version string table"
+msgstr ""
+
+#: readelf.c:8385
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+
+#: readelf.c:8388
+#, c-format
+msgid " Addr: "
+msgstr ""
+
+#: readelf.c:8399
+msgid "version symbol data"
+msgstr ""
+
+#: readelf.c:8427
+msgid " 0 (*local*) "
+msgstr ""
+
+#: readelf.c:8431
+msgid " 1 (*global*) "
+msgstr ""
+
+#: readelf.c:8442
+msgid "invalid index into symbol array\n"
+msgstr ""
+
+#: readelf.c:8476 readelf.c:9279
+msgid "version need"
+msgstr ""
+
+#: readelf.c:8487
+msgid "version need aux (2)"
+msgstr ""
+
+#: readelf.c:8508 readelf.c:8570
+msgid "*invalid*"
+msgstr ""
+
+#: readelf.c:8538 readelf.c:9357
+msgid "version def"
+msgstr ""
+
+#: readelf.c:8564 readelf.c:9379
+msgid "version def aux"
+msgstr ""
+
+#: readelf.c:8599
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+
+#: readelf.c:8807
+#, c-format
+msgid "<other>: %x"
+msgstr ""
+
+#: readelf.c:8869
+msgid "Unable to read in dynamic data\n"
+msgstr ""
+
+#: readelf.c:8919
+#, c-format
+msgid " <corrupt: %14ld>"
+msgstr ""
+
+#: readelf.c:8962 readelf.c:9014 readelf.c:9038 readelf.c:9068 readelf.c:9092
+msgid "Unable to seek to start of dynamic information\n"
+msgstr ""
+
+#: readelf.c:8968 readelf.c:9020
+msgid "Failed to read in number of buckets\n"
+msgstr ""
+
+#: readelf.c:8974
+msgid "Failed to read in number of chains\n"
+msgstr ""
+
+#: readelf.c:9076
+msgid "Failed to determine last chain length\n"
+msgstr ""
+
+#: readelf.c:9120
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+
+#: readelf.c:9122 readelf.c:9140
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:9124 readelf.c:9142
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:9138
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+
+#: readelf.c:9182
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' has a sh_entsize of zero!\n"
+msgstr ""
+
+#: readelf.c:9187
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:9192
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:9194
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:9249
+msgid "version data"
+msgstr ""
+
+#: readelf.c:9298
+msgid "version need aux (3)"
+msgstr ""
+
+#: readelf.c:9332
+msgid "bad dynamic symbol\n"
+msgstr ""
+
+#: readelf.c:9404
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+
+#: readelf.c:9416
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+
+#: readelf.c:9418 readelf.c:9488
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr ""
+
+#: readelf.c:9486
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+
+#: readelf.c:9552
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+
+#: readelf.c:9555
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr ""
+
+#: readelf.c:9564
+#, c-format
+msgid "<corrupt: %19ld>"
+msgstr ""
+
+#: readelf.c:9646
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr ""
+
+#: readelf.c:9813
+#, c-format
+msgid ""
+"Missing knowledge of 32-bit reloc types used in DWARF sections of machine "
+"number %d\n"
+msgstr ""
+
+#: readelf.c:10138
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr ""
+
+#: readelf.c:10146
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr ""
+
+#: readelf.c:10155
+#, c-format
+msgid "skipping invalid relocation symbol index 0x%lx in section %s\n"
+msgstr ""
+
+#: readelf.c:10177
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr ""
+
+#: readelf.c:10223
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+
+#: readelf.c:10244
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+
+#: readelf.c:10250
+msgid "section contents"
+msgstr ""
+
+#: readelf.c:10269
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+
+#: readelf.c:10287
+#, c-format
+msgid ""
+" Note: This section has relocations against it, but these have NOT been "
+"applied to this dump.\n"
+msgstr ""
+
+#: readelf.c:10318
+#, c-format
+msgid " No strings found in this section."
+msgstr ""
+
+#: readelf.c:10340
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+
+#: readelf.c:10364
+#, c-format
+msgid ""
+" NOTE: This section has relocations against it, but these have NOT been "
+"applied to this dump.\n"
+msgstr ""
+
+#: readelf.c:10498
+#, c-format
+msgid "%s section data"
+msgstr ""
+
+#: readelf.c:10568
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:10577
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr ""
+
+#: readelf.c:10613
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr ""
+
+#: readelf.c:10641
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr ""
+
+#: readelf.c:10682
+#, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr ""
+
+#: readelf.c:10860 readelf.c:10874 readelf.c:10893 readelf.c:11293
+#, c-format
+msgid "None\n"
+msgstr ""
+
+#: readelf.c:10861
+#, c-format
+msgid "Application\n"
+msgstr ""
+
+#: readelf.c:10862
+#, c-format
+msgid "Realtime\n"
+msgstr ""
+
+#: readelf.c:10863
+#, c-format
+msgid "Microcontroller\n"
+msgstr ""
+
+#: readelf.c:10864
+#, c-format
+msgid "Application or Realtime\n"
+msgstr ""
+
+#: readelf.c:10875 readelf.c:10895 readelf.c:11347 readelf.c:11365
+#: readelf.c:11440 readelf.c:11461
+#, c-format
+msgid "8-byte\n"
+msgstr ""
+
+#: readelf.c:10876 readelf.c:11443 readelf.c:11464
+#, c-format
+msgid "4-byte\n"
+msgstr ""
+
+#: readelf.c:10880 readelf.c:10899
+#, c-format
+msgid "8-byte and up to %d-byte extended\n"
+msgstr ""
+
+#: readelf.c:10894
+#, c-format
+msgid "8-byte, except leaf SP\n"
+msgstr ""
+
+#: readelf.c:10910 readelf.c:11000 readelf.c:11479
+#, c-format
+msgid "flag = %d, vendor = %s\n"
+msgstr ""
+
+#: readelf.c:10916
+#, c-format
+msgid "True\n"
+msgstr ""
+
+#: readelf.c:11045 readelf.c:11231
+#, c-format
+msgid "Hard or soft float\n"
+msgstr ""
+
+#: readelf.c:11048
+#, c-format
+msgid "Hard float\n"
+msgstr ""
+
+#: readelf.c:11051 readelf.c:11240
+#, c-format
+msgid "Soft float\n"
+msgstr ""
+
+#: readelf.c:11054
+#, c-format
+msgid "Single-precision hard float\n"
+msgstr ""
+
+#: readelf.c:11071 readelf.c:11097
+#, c-format
+msgid "Any\n"
+msgstr ""
+
+#: readelf.c:11074
+#, c-format
+msgid "Generic\n"
+msgstr ""
+
+#: readelf.c:11103
+#, c-format
+msgid "Memory\n"
+msgstr ""
+
+#: readelf.c:11234
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr ""
+
+#: readelf.c:11237
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr ""
+
+#: readelf.c:11243
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU)\n"
+msgstr ""
+
+#: readelf.c:11326
+#, c-format
+msgid "Not used\n"
+msgstr ""
+
+#: readelf.c:11329
+#, c-format
+msgid "2 bytes\n"
+msgstr ""
+
+#: readelf.c:11332
+#, c-format
+msgid "4 bytes\n"
+msgstr ""
+
+#: readelf.c:11350 readelf.c:11368 readelf.c:11446 readelf.c:11467
+#, c-format
+msgid "16-byte\n"
+msgstr ""
+
+#: readelf.c:11383
+#, c-format
+msgid "DSBT addressing not used\n"
+msgstr ""
+
+#: readelf.c:11386
+#, c-format
+msgid "DSBT addressing used\n"
+msgstr ""
+
+#: readelf.c:11401
+#, c-format
+msgid "Data addressing position-dependent\n"
+msgstr ""
+
+#: readelf.c:11404
+#, c-format
+msgid "Data addressing position-independent, GOT near DP\n"
+msgstr ""
+
+#: readelf.c:11407
+#, c-format
+msgid "Data addressing position-independent, GOT far from DP\n"
+msgstr ""
+
+#: readelf.c:11422
+#, c-format
+msgid "Code addressing position-dependent\n"
+msgstr ""
+
+#: readelf.c:11425
+#, c-format
+msgid "Code addressing position-independent\n"
+msgstr ""
+
+#: readelf.c:11531
+msgid "attributes"
+msgstr ""
+
+#: readelf.c:11552
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr ""
+
+#: readelf.c:11558
+#, c-format
+msgid "Attribute Section: %s\n"
+msgstr ""
+
+#: readelf.c:11583
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr ""
+
+#: readelf.c:11595
+#, c-format
+msgid "File Attributes\n"
+msgstr ""
+
+#: readelf.c:11598
+#, c-format
+msgid "Section Attributes:"
+msgstr ""
+
+#: readelf.c:11601
+#, c-format
+msgid "Symbol Attributes:"
+msgstr ""
+
+#: readelf.c:11616
+#, c-format
+msgid "Unknown tag: %d\n"
+msgstr ""
+
+#. ??? Do something sensible, like dump hex.
+#: readelf.c:11635
+#, c-format
+msgid " Unknown section contexts\n"
+msgstr ""
+
+#: readelf.c:11642
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr ""
+
+#: readelf.c:11693 readelf.c:11715
+msgid "<unknown>"
+msgstr ""
+
+#: readelf.c:11810 readelf.c:12344
+msgid "liblist section data"
+msgstr ""
+
+#: readelf.c:11813
+#, c-format
+msgid ""
+"\n"
+"Section '.liblist' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:11815
+msgid ""
+" Library Time Stamp Checksum Version Flags\n"
+msgstr ""
+
+#: readelf.c:11841
+#, c-format
+msgid "<corrupt: %9ld>"
+msgstr ""
+
+#: readelf.c:11846
+msgid " NONE"
+msgstr ""
+
+#: readelf.c:11897
+msgid "options"
+msgstr ""
+
+#: readelf.c:11928
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+
+#: readelf.c:12089
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr ""
+
+#: readelf.c:12106 readelf.c:12121
+msgid "conflict"
+msgstr ""
+
+#: readelf.c:12131
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:12133
+msgid " Num: Index Value Name"
+msgstr ""
+
+#: readelf.c:12145 readelf.c:12234 readelf.c:12305
+#, c-format
+msgid "<corrupt: %14ld>"
+msgstr ""
+
+#: readelf.c:12167
+msgid "Global Offset Table data"
+msgstr ""
+
+#: readelf.c:12171
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+
+#: readelf.c:12172
+#, c-format
+msgid " Canonical gp value: "
+msgstr ""
+
+#: readelf.c:12176 readelf.c:12276
+#, c-format
+msgid " Reserved entries:\n"
+msgstr ""
+
+#: readelf.c:12177
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr ""
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12211 readelf.c:12278
+#: readelf.c:12287
+msgid "Address"
+msgstr ""
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12212
+msgid "Access"
+msgstr ""
+
+#: readelf.c:12179 readelf.c:12196 readelf.c:12213 readelf.c:12278
+#: readelf.c:12288
+msgid "Initial"
+msgstr ""
+
+#: readelf.c:12181
+#, c-format
+msgid " Lazy resolver\n"
+msgstr ""
+
+#: readelf.c:12187
+#, c-format
+msgid " Module pointer (GNU extension)\n"
+msgstr ""
+
+#: readelf.c:12193
+#, c-format
+msgid " Local entries:\n"
+msgstr ""
+
+#: readelf.c:12209
+#, c-format
+msgid " Global entries:\n"
+msgstr ""
+
+#: readelf.c:12214 readelf.c:12289
+msgid "Sym.Val."
+msgstr ""
+
+#. Note for translators: "Ndx" = abbreviated form of "Index".
+#: readelf.c:12217 readelf.c:12289
+msgid "Ndx"
+msgstr ""
+
+#: readelf.c:12217 readelf.c:12289
+msgid "Name"
+msgstr ""
+
+#: readelf.c:12271
+msgid "Procedure Linkage Table data"
+msgstr ""
+
+#: readelf.c:12277
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr ""
+
+#: readelf.c:12280
+#, c-format
+msgid " PLT lazy resolver\n"
+msgstr ""
+
+#: readelf.c:12282
+#, c-format
+msgid " Module pointer\n"
+msgstr ""
+
+#: readelf.c:12285
+#, c-format
+msgid " Entries:\n"
+msgstr ""
+
+#: readelf.c:12352
+msgid "liblist string table"
+msgstr ""
+
+#: readelf.c:12362
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:12366
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr ""
+
+#: readelf.c:12416
+msgid "NT_AUXV (auxiliary vector)"
+msgstr ""
+
+#: readelf.c:12418
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr ""
+
+#: readelf.c:12420
+msgid "NT_FPREGSET (floating point registers)"
+msgstr ""
+
+#: readelf.c:12422
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr ""
+
+#: readelf.c:12424
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr ""
+
+#: readelf.c:12426
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr ""
+
+#: readelf.c:12428
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr ""
+
+#: readelf.c:12430
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr ""
+
+#: readelf.c:12432
+msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
+msgstr ""
+
+#: readelf.c:12434
+msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
+msgstr ""
+
+#: readelf.c:12436
+msgid "NT_S390_TIMER (s390 timer register)"
+msgstr ""
+
+#: readelf.c:12438
+msgid "NT_S390_TODCMP (s390 TOD comparator register)"
+msgstr ""
+
+#: readelf.c:12440
+msgid "NT_S390_TODPREG (s390 TOD programmable register)"
+msgstr ""
+
+#: readelf.c:12442
+msgid "NT_S390_CTRS (s390 control registers)"
+msgstr ""
+
+#: readelf.c:12444
+msgid "NT_S390_PREFIX (s390 prefix register)"
+msgstr ""
+
+#: readelf.c:12446
+msgid "NT_ARM_VFP (arm VFP registers)"
+msgstr ""
+
+#: readelf.c:12448
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr ""
+
+#: readelf.c:12450
+msgid "NT_FPREGS (floating point registers)"
+msgstr ""
+
+#: readelf.c:12452
+msgid "NT_PSINFO (psinfo structure)"
+msgstr ""
+
+#: readelf.c:12454
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr ""
+
+#: readelf.c:12456
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr ""
+
+#: readelf.c:12458
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr ""
+
+#: readelf.c:12466
+msgid "NT_VERSION (version)"
+msgstr ""
+
+#: readelf.c:12468
+msgid "NT_ARCH (architecture)"
+msgstr ""
+
+#: readelf.c:12473 readelf.c:12496 readelf.c:12575 readelf.c:12633
+#: readelf.c:12710
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr ""
+
+#: readelf.c:12485
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr ""
+
+#: readelf.c:12487
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr ""
+
+#: readelf.c:12489
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr ""
+
+#: readelf.c:12491
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr ""
+
+#: readelf.c:12509
+#, c-format
+msgid " Build ID: "
+msgstr ""
+
+#: readelf.c:12548
+#, c-format
+msgid " OS: %s, ABI: %ld.%ld.%ld\n"
+msgstr ""
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:12565
+msgid "NetBSD procinfo structure"
+msgstr ""
+
+#: readelf.c:12592 readelf.c:12606
+msgid "PT_GETREGS (reg structure)"
+msgstr ""
+
+#: readelf.c:12594 readelf.c:12608
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr ""
+
+#: readelf.c:12627
+msgid "NT_STAPSDT (SystemTap probe descriptors)"
+msgstr ""
+
+#: readelf.c:12660
+#, c-format
+msgid " Provider: %s\n"
+msgstr ""
+
+#: readelf.c:12661
+#, c-format
+msgid " Name: %s\n"
+msgstr ""
+
+#: readelf.c:12662
+#, c-format
+msgid " Location: "
+msgstr ""
+
+#: readelf.c:12664
+#, c-format
+msgid ", Base: "
+msgstr ""
+
+#: readelf.c:12666
+#, c-format
+msgid ", Semaphore: "
+msgstr ""
+
+#: readelf.c:12669
+#, c-format
+msgid " Arguments: %s\n"
+msgstr ""
+
+#: readelf.c:12682
+msgid "NT_VMS_MHD (module header)"
+msgstr ""
+
+#: readelf.c:12684
+msgid "NT_VMS_LNM (language name)"
+msgstr ""
+
+#: readelf.c:12686
+msgid "NT_VMS_SRC (source files)"
+msgstr ""
+
+#: readelf.c:12690
+msgid "NT_VMS_EIDC (consistency check)"
+msgstr ""
+
+#: readelf.c:12692
+msgid "NT_VMS_FPMODE (FP mode)"
+msgstr ""
+
+#: readelf.c:12696
+msgid "NT_VMS_IMGNAM (image name)"
+msgstr ""
+
+#: readelf.c:12698
+msgid "NT_VMS_IMGID (image id)"
+msgstr ""
+
+#: readelf.c:12700
+msgid "NT_VMS_LINKID (link id)"
+msgstr ""
+
+#: readelf.c:12702
+msgid "NT_VMS_IMGBID (build id)"
+msgstr ""
+
+#: readelf.c:12704
+msgid "NT_VMS_GSTNAM (sym table name)"
+msgstr ""
+
+#: readelf.c:12724
+#, c-format
+msgid " Creation date : %.17s\n"
+msgstr ""
+
+#: readelf.c:12725
+#, c-format
+msgid " Last patch date: %.17s\n"
+msgstr ""
+
+#: readelf.c:12726
+#, c-format
+msgid " Module name : %s\n"
+msgstr ""
+
+#: readelf.c:12727
+#, c-format
+msgid " Module version : %s\n"
+msgstr ""
+
+#: readelf.c:12730
+#, c-format
+msgid " Invalid size\n"
+msgstr ""
+
+#: readelf.c:12733
+#, c-format
+msgid " Language: %s\n"
+msgstr ""
+
+#: readelf.c:12737
+#, c-format
+msgid " Floating Point mode: "
+msgstr ""
+
+#: readelf.c:12742
+#, c-format
+msgid " Link time: "
+msgstr ""
+
+#: readelf.c:12748
+#, c-format
+msgid " Patch time: "
+msgstr ""
+
+#: readelf.c:12754
+#, c-format
+msgid " Major id: %u, minor id: %u\n"
+msgstr ""
+
+#: readelf.c:12757
+#, c-format
+msgid " Last modified : "
+msgstr ""
+
+#: readelf.c:12760
+#, c-format
+msgid ""
+"\n"
+" Link flags : "
+msgstr ""
+
+#: readelf.c:12763
+#, c-format
+msgid " Header flags: 0x%08x\n"
+msgstr ""
+
+#: readelf.c:12765
+#, c-format
+msgid " Image id : %s\n"
+msgstr ""
+
+#: readelf.c:12769
+#, c-format
+msgid " Image name: %s\n"
+msgstr ""
+
+#: readelf.c:12772
+#, c-format
+msgid " Global symbol table name: %s\n"
+msgstr ""
+
+#: readelf.c:12775
+#, c-format
+msgid " Image id: %s\n"
+msgstr ""
+
+#: readelf.c:12778
+#, c-format
+msgid " Linker id: %s\n"
+msgstr ""
+
+#: readelf.c:12853
+msgid "notes"
+msgstr ""
+
+#: readelf.c:12859
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+
+#: readelf.c:12861
+#, c-format
+msgid " %-20s %10s\tDescription\n"
+msgstr ""
+
+#: readelf.c:12861
+msgid "Owner"
+msgstr ""
+
+#: readelf.c:12861
+msgid "Data size"
+msgstr ""
+
+#: readelf.c:12899 readelf.c:12912
+#, c-format
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr ""
+
+#: readelf.c:12901 readelf.c:12914
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr ""
+
+#: readelf.c:13010
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr ""
+
+#: readelf.c:13102
+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"
+msgstr ""
+
+#: readelf.c:13149
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr ""
+
+#: readelf.c:13163
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+
+#: readelf.c:13335
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr ""
+
+#: readelf.c:13341
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr ""
+
+#: readelf.c:13359
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr ""
+
+#: readelf.c:13367
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr ""
+
+#: readelf.c:13378
+#, c-format
+msgid ""
+"%s: symbols remain in the index symbol table, but without corresponding "
+"entries in the index table\n"
+msgstr ""
+
+#: readelf.c:13383
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr ""
+
+#: readelf.c:13466 readelf.c:13549
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr ""
+
+#: readelf.c:13488
+#, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr ""
+
+#: readelf.c:13567
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr ""
+
+#: rename.c:124
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr ""
+
+#. We have to clean up here.
+#: rename.c:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr ""
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr ""
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr ""
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr ""
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr ""
+
+#: resbin.c:208
+msgid "cursor"
+msgstr ""
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr ""
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr ""
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr ""
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr ""
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr ""
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr ""
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr ""
+
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr ""
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr ""
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr ""
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr ""
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr ""
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr ""
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr ""
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr ""
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr ""
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr ""
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr ""
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr ""
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr ""
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr ""
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr ""
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr ""
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr ""
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr ""
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr ""
+
+#: resbin.c:871
+msgid "group icon"
+msgstr ""
+
+#: resbin.c:935 resbin.c:1173
+msgid "unexpected version string"
+msgstr ""
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr ""
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr ""
+
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr ""
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr ""
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr ""
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr ""
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr ""
+
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr ""
+
+#: resbin.c:1059
+msgid "version stringtable"
+msgstr ""
+
+#: resbin.c:1067
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr ""
+
+#: resbin.c:1084
+msgid "version string"
+msgstr ""
+
+#: resbin.c:1101
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr ""
+
+#: resbin.c:1108
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr ""
+
+#: resbin.c:1133
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr ""
+
+#: resbin.c:1152
+msgid "version varfileinfo"
+msgstr ""
+
+#: resbin.c:1167
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr ""
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr ""
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr ""
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr ""
+
+#: rescoff.c:190
+msgid "directory"
+msgstr ""
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr ""
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr ""
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr ""
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr ""
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr ""
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr ""
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr ""
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr ""
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr ""
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr ""
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr ""
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr ""
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr ""
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr ""
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr ""
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr ""
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr ""
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr ""
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr ""
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr ""
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr ""
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr ""
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr ""
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr ""
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr ""
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr ""
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr ""
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr ""
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr ""
+
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr ""
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr ""
+
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr ""
+
+#: resrc.c:1958
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr ""
+
+#: size.c:79
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr ""
+
+#: size.c:80
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr ""
+
+#: size.c:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or "
+"hex\n"
+" -t --totals Display the total sizes (Berkeley "
+"only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr ""
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr ""
+
+#: srconv.c:1733
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr ""
+
+#: srconv.c:1734
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+
+#: srconv.c:1880
+#, c-format
+msgid "unable to open output file %s"
+msgstr ""
+
+#: stabs.c:328 stabs.c:1717
+msgid "numeric overflow"
+msgstr ""
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr ""
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr ""
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr ""
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr ""
+
+#: stabs.c:727
+msgid "unknown C++ encoded name"
+msgstr ""
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1262
+msgid "unrecognized cross reference type"
+msgstr ""
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1809
+msgid "missing index type"
+msgstr ""
+
+#: stabs.c:2129
+msgid "unknown virtual character for baseclass"
+msgstr ""
+
+#: stabs.c:2147
+msgid "unknown visibility character for baseclass"
+msgstr ""
+
+#: stabs.c:2337
+msgid "unnamed $vb type"
+msgstr ""
+
+#: stabs.c:2343
+msgid "unrecognized C++ abbreviation"
+msgstr ""
+
+#: stabs.c:2419
+msgid "unknown visibility character for field"
+msgstr ""
+
+#: stabs.c:2679
+msgid "const/volatile indicator missing"
+msgstr ""
+
+#: stabs.c:2924
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr ""
+
+#: stabs.c:3224
+msgid "Undefined N_EXCL"
+msgstr ""
+
+#: stabs.c:3304
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr ""
+
+#: stabs.c:3309
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr ""
+
+#: stabs.c:3388
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr ""
+
+#: stabs.c:3680
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr ""
+
+#: stabs.c:3775
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr ""
+
+#: stabs.c:5125
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr ""
+
+#: stabs.c:5167
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr ""
+
+#: stabs.c:5234
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr ""
+
+#: stabs.c:5286
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr ""
+
+#: stabs.c:5366
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr ""
+
+#: stabs.c:5415
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr ""
+
+#: stabs.c:5422
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr ""
+
+#: strings.c:186 strings.c:245
+#, c-format
+msgid "invalid integer argument %s"
+msgstr ""
+
+#: strings.c:248
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr ""
+
+#: strings.c:651
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr ""
+
+#: strings.c:652
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of "
+"at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 "
+"or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+
+#: sysdump.c:66
+msgid "*undefined*"
+msgstr ""
+
+#: sysdump.c:137
+#, c-format
+msgid "SUM IS %x\n"
+msgstr ""
+
+#: sysdump.c:503
+#, c-format
+msgid "GOT A %x\n"
+msgstr ""
+
+#: sysdump.c:521
+#, c-format
+msgid "WANTED %x!!\n"
+msgstr ""
+
+#: sysdump.c:539
+msgid "SYMBOL INFO"
+msgstr ""
+
+#: sysdump.c:557
+msgid "DERIVED TYPE"
+msgstr ""
+
+#: sysdump.c:614
+msgid "MODULE***\n"
+msgstr ""
+
+#: sysdump.c:647
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr ""
+
+#: sysdump.c:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr ""
+
+#: version.c:36
+#, c-format
+msgid "Copyright 2011 Free Software Foundation, Inc.\n"
+msgstr ""
+
+#: version.c:37
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later "
+"version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+
+#: windmc.c:190
+#, c-format
+msgid "can't create %s file `%s' for output.\n"
+msgstr ""
+
+#: windmc.c:198
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr ""
+
+#: windmc.c:200
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ "
+"for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header "
+"file\n"
+" -F --target <target> Specify output target for endianness.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code "
+"definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic "
+"name.\n"
+msgstr ""
+
+#: windmc.c:220
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+
+#: windmc.c:261 windres.c:411
+#, c-format
+msgid "%s: warning: "
+msgstr ""
+
+#: windmc.c:262
+#, c-format
+msgid "A codepage was specified switch `%s' and UTF16.\n"
+msgstr ""
+
+#: windmc.c:263
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr ""
+
+#: windmc.c:307
+msgid "try to add a ill language."
+msgstr ""
+
+#: windmc.c:1116
+#, c-format
+msgid "unable to open file `%s' for input.\n"
+msgstr ""
+
+#: windmc.c:1124
+#, c-format
+msgid "unable to read contents of %s"
+msgstr ""
+
+#: windmc.c:1136
+msgid "input file does not seems to be UFT16.\n"
+msgstr ""
+
+#: windres.c:216
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr ""
+
+#: windres.c:390
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ""
+
+#: windres.c:402
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ""
+
+#: windres.c:413
+#, c-format
+msgid ": duplicate value\n"
+msgstr ""
+
+#: windres.c:563
+#, c-format
+msgid "unknown format type `%s'"
+msgstr ""
+
+#: windres.c:564
+#, c-format
+msgid "%s: supported formats:"
+msgstr ""
+
+#. Otherwise, we give up.
+#: windres.c:647
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr ""
+
+#: windres.c:659
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr ""
+
+#: windres.c:661
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" --preprocessor-arg=<arg> Additional preprocessor argument\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to "
+"read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+
+#: windres.c:679
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr ""
+
+#: windres.c:682
+#, 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 ""
+
+#: windres.c:687
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+
+#: windres.c:850
+msgid "invalid codepage specified.\n"
+msgstr ""
+
+#: windres.c:865
+msgid "invalid option -f\n"
+msgstr ""
+
+#: windres.c:870
+msgid "No filename following the -fo option.\n"
+msgstr ""
+
+#: windres.c:959
+#, c-format
+msgid ""
+"Option -I is deprecated for setting the input format, please use -J "
+"instead.\n"
+msgstr ""
+
+#: windres.c:1072
+msgid "no resources"
+msgstr ""
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr ""
+
+#: wrstabs.c:637
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr ""
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr ""
diff --git a/binutils-2.24/binutils/po/da.gmo b/binutils-2.24/binutils/po/da.gmo
new file mode 100644
index 00000000..d870bd7d
--- /dev/null
+++ b/binutils-2.24/binutils/po/da.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/da.po b/binutils-2.24/binutils/po/da.po
new file mode 100644
index 00000000..a4414b11
--- /dev/null
+++ b/binutils-2.24/binutils/po/da.po
@@ -0,0 +1,7486 @@
+# Danish messages for binutils.
+# Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Keld Simonsen <keld@dkuug.dk>, 2002-2003.
+# Keld Simonsen <keld@keldix.com>, 2011
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.20.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2010-11-05 11:33+0100\n"
+"PO-Revision-Date: 2011-04-21 09:55+0100\n"
+"Last-Translator: Keld Simonsen <keld@keldix.com>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
+"Language: da\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: addr2line.c:80
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Brug: %s <flag> inddatafil(er)\n"
+
+#: addr2line.c:81
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " Konvertér adresser til linjenummer/filnavns-par.\n"
+
+#: addr2line.c:82
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Hvis ingen adresser er angivet på komandolinjen, vil de blive læst fra stdind\n"
+
+#: addr2line.c:83
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -a --addresses Show addresses\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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Make the output easier to read for humans\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+
+#: addr2line.c:100 ar.c:293 coffdump.c:469 dlltool.c:3926 dllwrap.c:524
+#: elfedit.c:1155 nlmconv.c:1113 objcopy.c:576 objcopy.c:611 readelf.c:3219
+#: size.c:99 srconv.c:1742 strings.c:663 sysdump.c:653 windmc.c:228
+#: windres.c:694
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr ""
+"Rapportere fejl til %s\n"
+"Rapporter fejl i oversættelsen til dansk@dansk-gruppen.dk\n"
+
+#: addr2line.c:262
+#, c-format
+msgid " at "
+msgstr " ved "
+
+#: addr2line.c:287
+#, fuzzy, c-format
+msgid " (inlined by) "
+msgstr "(inlined)"
+
+#: addr2line.c:320
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: kan ikke få fat på adresserne fra arkivet"
+
+#: addr2line.c:337
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr "%s: kan ikke finde sektion: %s"
+
+#: addr2line.c:406 nm.c:1563 objdump.c:3301
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "ukendt afkodningsstil \"%s\""
+
+#: ar.c:215
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "ingen post %s i arkivet\n"
+
+#: ar.c:233
+#, c-format
+msgid "Usage: %s [emulation options] [--plugin <name>] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+msgstr ""
+
+#: ar.c:235
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+msgstr ""
+
+#: ar.c:240
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<mri-skript]\n"
+
+#: ar.c:241
+#, c-format
+msgid " commands:\n"
+msgstr " kommandoer:\n"
+
+#: ar.c:242
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - slet filer i arkivet\n"
+
+#: ar.c:243
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - flyt filer i arkivet\n"
+
+#: ar.c:244
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - udskriv filer som mødtes i arkivet\n"
+
+#: ar.c:245
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - hurtigtilføj filer til slutningen af arkivet\n"
+
+#: ar.c:246
+#, c-format
+msgid " r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
+msgstr " r[ab][f][u] - erstat eksisterende eller indsæt nye filer i arkivet\n"
+
+#: ar.c:247
+#, c-format
+msgid " s - act as ranlib\n"
+msgstr " s - opførsel som ranlib\n"
+
+#: ar.c:248
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - vis indeholdet i arkivet\n"
+
+#: ar.c:249
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - hent filer fra arkivet\n"
+
+#: ar.c:250
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " ændrere specifikke for kommandoer:\n"
+
+#: ar.c:251
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - indsæt filer efter [medlemsnavn]\n"
+
+#: ar.c:252
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - indsætte filer for [medlemsnavn] (samme som [i])\n"
+
+#: ar.c:253
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr " [D] - brug nul som tidsstempel og uids/gids\n"
+
+#: ar.c:254
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - brug forekomst [nummer] af navn\n"
+
+#: ar.c:255
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - afkort indsatte filnavne\n"
+
+#: ar.c:256
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - brug fuldstændig søgestien ved sammenligninger\n"
+
+#: ar.c:257
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - bevar oprindelige datoer\n"
+
+#: ar.c:258
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - erstat kun filer som er nyere end i arkivet\n"
+
+#: ar.c:259
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " generelle ændrere:\n"
+
+#: ar.c:260
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - advar ikke om biblioteket skal oprettes\n"
+
+#: ar.c:261
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - opret et indeks over arkivet (jfr. ranlib)\n"
+
+#: ar.c:262
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - opret intet indeks over arkivet\n"
+
+#: ar.c:263
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr " [T] - lav et tyndt arkiv\n"
+
+#: ar.c:264
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - beskriv udførligt\n"
+
+#: ar.c:265
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - vis versionsinformation\n"
+
+#: ar.c:266
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr " --def <deffil> Navngiv .def-inddatafilen\n"
+
+#: ar.c:268
+#, c-format
+msgid " optional:\n"
+msgstr " valgmuligheder:\n"
+
+#: ar.c:269
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr " --plugin <p> - indlæs the angivne modul\n"
+
+#: ar.c:276
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "brug: %s [valgmuligheder] arkiv\n"
+
+#: ar.c:277
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " Generér et indeks for hurtig adgang til arkiver\n"
+
+#: ar.c:278
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+" Valgmulighederne er:\n"
+" @<fil> Læs valgmuligheder fra <fil>\n"
+
+#: ar.c:281
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr " --plugin <navn> Indlæs det angivne modul\n"
+
+#: ar.c:284
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+" -t Opdatér tidsstempel på arkivets symboltabel\n"
+" -h --help Vis denne hjælpebesked\n"
+" -V --version Vis versionsinformation\n"
+
+#: ar.c:481 nm.c:1636
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr "desværre - dette program er blevet genereret uden understøttelse for moduler\n"
+
+#: ar.c:508
+msgid "two different operation options specified"
+msgstr "to forskellige kommandoflag blev angivet"
+
+#: ar.c:589
+#, c-format
+msgid "illegal option -- %c"
+msgstr "ikke tilladt valgmulighed -- %c"
+
+#: ar.c:632
+msgid "no operation specified"
+msgstr "ingen handling blev angivet"
+
+#: ar.c:635
+msgid "`u' is only meaningful with the `r' option."
+msgstr "\"u\" er kun meningsfuldt sammen med \"r\"."
+
+#: ar.c:638
+msgid "`u' is not meaningful with the `D' option."
+msgstr "\"u\" er ikke meningsfuldt sammen med \"D\"-valgmuligheden."
+
+#: ar.c:646
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "\"N\" er kun meningsfuldt sammen med \"x\" eller \"d\"."
+
+#: ar.c:649
+msgid "Value for `N' must be positive."
+msgstr "\"N\"'s argument skal være positivt."
+
+#: ar.c:661
+msgid "`x' cannot be used on thin archives."
+msgstr ""
+
+#: ar.c:702
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "intern fejl -- flaget er ikke implementeret"
+
+#: ar.c:771
+#, c-format
+msgid "creating %s"
+msgstr "opretter %s"
+
+#: ar.c:820 ar.c:875 ar.c:1203 objcopy.c:2052
+#, c-format
+msgid "internal stat error on %s"
+msgstr "intern stat-fejl for %s"
+
+#: ar.c:824
+#, c-format
+msgid ""
+"\n"
+"<%s>\n"
+"\n"
+msgstr ""
+"\n"
+"<%s>\n"
+"\n"
+
+#: ar.c:840 ar.c:908
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s er ikke et gyldigt arkiv"
+
+#: ar.c:1108
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "Intet medlem med navn \"%s\"\n"
+
+#: ar.c:1158
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "ingen post %s i arkiv %s!"
+
+# archive map virker være vad indekset kaldes i kildekodeen
+#: ar.c:1297
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: intet arkivindeks at opdatere"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "Ingen post %s i arkivet.\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "Kan ikke åbne fil %s\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: Kan ikke åbne uddataarkivet %s\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: Kan ikke åbne inddataarkivet %s\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: fil %s er ikke et arkiv\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: intet uddataarkiv angivet endnu\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: intet åbent uddataarkiv\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: kan ikke åbne fil %s\n"
+
+# module file er det samme som member
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: kan ikke finde medlem %s\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "Det aktuelle åbne arkiv er %s\n"
+
+# BUGG: dubbelt blanksteg
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: intet åbent arkiv\n"
+
+#: bin2c.c:59
+#, c-format
+msgid "Usage: %s < input_file > output_file\n"
+msgstr "Brug: %s [flag] < [in-fil] > [ud-fil]\n"
+
+#: bin2c.c:60
+#, c-format
+msgid "Prints bytes from stdin in hex format.\n"
+msgstr ""
+
+#: binemul.c:38
+#, c-format
+msgid " No emulation specific options\n"
+msgstr ""
+
+#. Macros for common output.
+#: binemul.h:46
+#, c-format
+msgid " emulation options: \n"
+msgstr ""
+
+#: bucomm.c:163
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "kan ikke sætte BFD's standardmål til \"%s\": %s"
+
+#: bucomm.c:175
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: Passende format:"
+
+#: bucomm.c:190
+#, c-format
+msgid "Supported targets:"
+msgstr "Mål som understøttes:"
+
+#: bucomm.c:192
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: mål som understøttes:"
+
+#: bucomm.c:210
+#, c-format
+msgid "Supported architectures:"
+msgstr "Arkitekturer som understøttes:"
+
+#: bucomm.c:212
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: arkitekturer som understøttes:"
+
+#: bucomm.c:407
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "BFD-hovedfil version %s\n"
+
+#: bucomm.c:556
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: fejlagtigt tal: %s"
+
+#: bucomm.c:573 strings.c:409
+#, c-format
+msgid "'%s': No such file"
+msgstr "%s: Ingen sådan fil"
+
+#: bucomm.c:575 strings.c:411
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr ""
+
+#: bucomm.c:579
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr ""
+
+#: coffdump.c:106
+#, c-format
+msgid "#lines %d "
+msgstr "#linjer %d "
+
+#: coffdump.c:460 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Brug: %s [flag] inddatafil\n"
+
+#: coffdump.c:461
+#, c-format
+msgid " Print a human readable interpretation of a SYSROFF object file\n"
+msgstr " Skriv en menneskeligt læsbar tolkning af en SYSROFF-objektfil\n"
+
+#: coffdump.c:462
+#, 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 ""
+
+#: coffdump.c:531 srconv.c:1832 sysdump.c:710
+msgid "no input file specified"
+msgstr "ingen inddatafil angaves"
+
+#: cxxfilt.c:119 nm.c:269 objdump.c:256
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr ""
+"Rapportér fejl til %s.\n"
+"Rapportér fejl i oversættelsen til dansk@klid.dk.\n"
+
+#: debug.c:647
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: ingen aktuel fil"
+
+#: debug.c:726
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: intet kald til debug_set_filename"
+
+#: debug.c:782
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: intet kald til debug_set_filename"
+
+#: debug.c:834
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: ingen aktuel funktion"
+
+#: debug.c:866
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: ingen aktuel funktion"
+
+#: debug.c:872
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: nogen blokke afsluttedes ikke"
+
+#: debug.c:900
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: ingen aktuel blok"
+
+#: debug.c:936
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: ingen aktuel blok"
+
+#: debug.c:943
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: forsøg gjordes på at afslutte øverste blok"
+
+#: debug.c:966
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: ingen aktuel oversættelsesenhed"
+
+#. FIXME
+#: debug.c:1019
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: ikke implementeret"
+
+#. FIXME
+#: debug.c:1030
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: ikke implementeret"
+
+# BUGG: Kolon mangler antagligen
+#. FIXME.
+#: debug.c:1114
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: ikke implementeret"
+
+#: debug.c:1136
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: ingen aktuel fil"
+
+#: debug.c:1664
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: slagsen kan ikke håndteres"
+
+#: debug.c:1841
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: ingen aktuel fil"
+
+#: debug.c:1886
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: ingen aktuel fil"
+
+#: debug.c:1894
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: forsøg gjordes på at sætte et ekstra mærke"
+
+#: debug.c:1931
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Advarsel: ændrer datatypens størrelse fra %d til %d\n"
+
+#: debug.c:1953
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: ingen aktuel oversættelsesenhed"
+
+#: debug.c:2056
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: %s har cirkulær fejlsøgningsinformation\n"
+
+#: debug.c:2483
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: mødte en ugyldig type"
+
+#: dlltool.c:901 dlltool.c:927 dlltool.c:958
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "Intern fejl: Ukendt maskintype: %d"
+
+#: dlltool.c:999
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Kan ikke åbne def-fil: %s"
+
+#: dlltool.c:1004
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Behandler def-fil: %s"
+
+#: dlltool.c:1008
+msgid "Processed def file"
+msgstr "Def-filen er behandlet"
+
+#: dlltool.c:1032
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Syntaktisk fejl i def-fil %s:%d"
+
+#: dlltool.c:1069
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr ""
+
+#: dlltool.c:1087
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "NAME: %s bas: %x"
+
+#: dlltool.c:1090 dlltool.c:1106
+msgid "Can't have LIBRARY and NAME"
+msgstr "Kan ikke have både LIBRARY og NAME"
+
+#: dlltool.c:1103
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "LIBRARY: %s bas: %x"
+
+#: dlltool.c:1342 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "wait: %s"
+
+#: dlltool.c:1347 dllwrap.c:422 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "subprocessen fik fatalt signal %d"
+
+#: dlltool.c:1353 dllwrap.c:429 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s afsluttede med status %d"
+
+#: dlltool.c:1384
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "Suger ind info fra sektion %s i %s"
+
+#: dlltool.c:1524
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Undtager symbol: %s"
+
+#: dlltool.c:1613 dlltool.c:1624 nm.c:1010 nm.c:1021
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: ingen symboler"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1650
+#, c-format
+msgid "Done reading %s"
+msgstr "Færdig med at læse %s"
+
+#: dlltool.c:1660
+#, c-format
+msgid "Unable to open object file: %s: %s"
+msgstr "Kan ikke åbne objektfil: %s: %s"
+
+#: dlltool.c:1663
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Aflæser objektfil %s"
+
+#: dlltool.c:1678
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "Kan ikke producere en mcore-elf-dll fra arkivfil: %s"
+
+#: dlltool.c:1780
+msgid "Adding exports to output file"
+msgstr "Tilføjer eksportering til uddatafilen"
+
+#: dlltool.c:1832
+msgid "Added exports to output file"
+msgstr "Tilføjede eksportering til uddatafilen"
+
+#: dlltool.c:1974
+#, c-format
+msgid "Generating export file: %s"
+msgstr "Genererer eksportfil: %s"
+
+#: dlltool.c:1979
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Kan ikke åbne temporær assemblerfil: %s"
+
+#: dlltool.c:1982
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "Åbnede temporær fil: %s"
+
+#: dlltool.c:2159
+msgid "failed to read the number of entries from base file"
+msgstr "mislykkedes at indlæse antal indgange fra basefil"
+
+#: dlltool.c:2207
+msgid "Generated exports file"
+msgstr "Genererede eksportfil"
+
+#: dlltool.c:2416
+#, c-format
+msgid "bfd_open failed open stub file: %s: %s"
+msgstr "bfd_open mislykkedes med at åbne stubfil: %s: %s"
+
+#: dlltool.c:2420
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "Opretter stubfil: %s"
+
+#: dlltool.c:2882
+#, c-format
+msgid "bfd_open failed reopen stub file: %s: %s"
+msgstr "bfd_open mislykkedes at åbne stubfil: %s: %s"
+
+#: dlltool.c:2896 dlltool.c:2972
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "mislykkedes at åbne temporær hovedfil: %s"
+
+#: dlltool.c:2958 dlltool.c:3038
+#, c-format
+msgid "failed to open temporary head file: %s: %s"
+msgstr "mislykkedes at åbne temporær hovedfil: %s: %s"
+
+#: dlltool.c:3052
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "mislykkedes at åbne temporær halefil: %s"
+
+#: dlltool.c:3109
+#, c-format
+msgid "failed to open temporary tail file: %s: %s"
+msgstr "mislykkedes at åbne temporær halefil: %s: %s"
+
+#: dlltool.c:3131
+#, c-format
+msgid "Can't create .lib file: %s: %s"
+msgstr "Kan ikke åbne .lib-fil: %s: %s"
+
+#: dlltool.c:3135
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Opretter biblioteksfil: %s"
+
+#: dlltool.c:3227 dlltool.c:3233
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "kan ikke slette %s: %s"
+
+#: dlltool.c:3238
+msgid "Created lib file"
+msgstr "Oprettede biblioteksfilen"
+
+#: dlltool.c:3450
+#, c-format
+msgid "Can't open .lib file: %s: %s"
+msgstr "Kan ikke åbne .lib-fil: %s: %s"
+
+#: dlltool.c:3458 dlltool.c:3480
+#, c-format
+msgid "%s is not a library"
+msgstr "%s er ikke et bibliotek"
+
+#: dlltool.c:3498
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr ""
+
+#: dlltool.c:3509
+#, fuzzy, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr "Kan ikke bestemme hvor mange symboler som skal læses ind\n"
+
+#: dlltool.c:3733
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Advarsel, ignorerer duplikeret EXPORT %s %d,%d"
+
+#: dlltool.c:3739
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr "Fejl, duplikeret EXPORT med ordningstal: %s"
+
+#: dlltool.c:3844
+msgid "Processing definitions"
+msgstr "Behandler definitioner"
+
+#: dlltool.c:3876
+msgid "Processed definitions"
+msgstr "Definitionerne er behandlede"
+
+# BUGG: Kolon fattas
+#. xgetext:c-format
+#: dlltool.c:3883 dllwrap.c:483
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Brug: %s <flag> <objektfiler>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3885
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <maskine> Opret som DLL for <maskine>. [forvalgt: %s]\n"
+
+#: dlltool.c:3886
+#, c-format
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr " mulige <maskine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+
+#: dlltool.c:3887
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <udnavn> Generer en eksportfil.\n"
+
+#: dlltool.c:3888
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <udnavn> Generere et grænsesnitsbibliotek.\n"
+
+#: dlltool.c:3889
+#, fuzzy, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr " --output-lib <udnavn> Generér inddatabibliotek.\n"
+
+#: dlltool.c:3890
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect Tilføj inddirekte dll til eksportfilen.\n"
+
+#: dlltool.c:3891
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr " -D --dllname <navn> Navn på inddata-dll at indsætte i grænsesnitsbiblioteket.\n"
+
+#: dlltool.c:3892
+#, c-format
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr " -d --input-def <def-fil> Navn på .def-fil at læse ind.\n"
+
+#: dlltool.c:3893
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <def-fil> Navn på .def-fil at oprette.\n"
+
+#: dlltool.c:3894
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Eksportér alle symboler til .def\n"
+
+# Føljende streng har den beskrivende delen indenteret to tegn
+# extra i den engelska texten til at to flag er for lange. I den
+# svenska oversættelsen er de indenterede tre tegn extra til at
+# den ena flaget blev yderligere et tegn for lang.
+#: dlltool.c:3895
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols Eksportér kun listede symboler\n"
+
+# Føljende streng har den beskrivende delen indenteret to tegn
+# extra i den engelska texten til at to flag er for lange. I den
+# svenska oversættelsen er de indenterede tre tegn extra til at
+# den ena flaget blev yderligere et tegn for lang.
+#: dlltool.c:3896
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <liste> Eksportér ikke symboler i <liste>\n"
+
+#: dlltool.c:3897
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr ""
+
+#: dlltool.c:3898
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <basfil> Læs den lænker-genererede basefil.\n"
+
+#: dlltool.c:3899
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 Generér ingen idata$4-sektion.\n"
+
+#: dlltool.c:3900
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 Generér ingen idata$5-sektion.\n"
+
+#: dlltool.c:3901
+#, c-format
+msgid " --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"
+msgstr ""
+
+#: dlltool.c:3902
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr " -U --add-underscore Tilføj understreg på alle symboler i grænsesnitsbiblioteket.\n"
+
+#: dlltool.c:3903
+#, fuzzy, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr " -U --add-underscore Sæt dit understreg på symboler i grænsesnitsbiblioteket.\n"
+
+#: dlltool.c:3904
+#, c-format
+msgid " --no-leading-underscore All symbols shouldn't be prefixed by an underscore.\n"
+msgstr ""
+
+#: dlltool.c:3905
+#, c-format
+msgid " --leading-underscore All symbols should be prefixed by an underscore.\n"
+msgstr ""
+
+#: dlltool.c:3906
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at Fjern @<n> fra eksporterede navne.\n"
+
+#: dlltool.c:3907
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Tilføj aliaser uden @<n>.\n"
+
+#: dlltool.c:3908
+#, fuzzy, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -A --add-stdcall-alias Tilføj aliaser uden @<n>.\n"
+
+#: dlltool.c:3909
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <navn> Brug <navn> som assembler.\n"
+
+#: dlltool.c:3910
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <flag> Send <flag> til assembleren.\n"
+
+#: dlltool.c:3911
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib Opret bagudkompatibelt importbibliotek.\n"
+
+#: dlltool.c:3912
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete Behold temp.-filer (repetér for øget antal).\n"
+
+#: dlltool.c:3913
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr ""
+
+#: dlltool.c:3914
+#, c-format
+msgid " -I --identify <implib> Report the name of the DLL associated with <implib>.\n"
+msgstr ""
+
+#: dlltool.c:3915
+#, c-format
+msgid " --identify-strict Causes --identify to report error when multiple DLLs.\n"
+msgstr ""
+
+#: dlltool.c:3916
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose Beskriv udførligt\n"
+
+#: dlltool.c:3917
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version Vis versionsinformation om programmet.\n"
+
+#: dlltool.c:3918
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help Vis denne information.\n"
+
+#: dlltool.c:3919
+#, fuzzy, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr " @<fil> Læs valgmuligheder fra <fil>\n"
+
+#: dlltool.c:3921
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr " -M --mcore-elf <udnavn> Behandl mcore-elf-objektfiler til <udnavn>.\n"
+
+#: dlltool.c:3922
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <navn> Brug <navn> som lænker.\n"
+
+# Justeringen bliver fejl hér for flaget er for lang.
+#: dlltool.c:3923
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <flag> Send <flag> til lænkeren.\n"
+
+#: dlltool.c:4070
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr ""
+
+#: dlltool.c:4118
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Kan ikke åbne basefilen: %s"
+
+#: dlltool.c:4153
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Maskine \"%s\" håndteres ikke"
+
+#: dlltool.c:4232
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr ""
+
+#: dlltool.c:4300 dllwrap.c:213
+#, c-format
+msgid "Tried file: %s"
+msgstr "Prøvede fil: %s"
+
+#: dlltool.c:4307 dllwrap.c:220
+#, c-format
+msgid "Using file: %s"
+msgstr "Bruger fil: %s"
+
+#: dllwrap.c:303
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "Beholder temporær basefil %s"
+
+#: dllwrap.c:305
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "Fjerner temporær basefil %s"
+
+#: dllwrap.c:319
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "Beholder temporær eksportfil %s"
+
+#: dllwrap.c:321
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "Fjerner temporær eksportfil %s"
+
+#: dllwrap.c:334
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Beholder temporær def-fil %s"
+
+#: dllwrap.c:336
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "Fjerner temporær def-fil %s"
+
+#: dllwrap.c:484
+#, c-format
+msgid " Generic options:\n"
+msgstr " Generelle flag:\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr " @<fil> Læs valgmuligheder fra <fil>\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q Arbejd stille\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Udførlig\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version Vis versionsinformation for dllwrap\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <udnavn> Synonym for --output-lib\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Flag for %s:\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <enhed> Forvalgt til \"gcc\"\n"
+
+#: dllwrap.c:492
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <flag> Forbigå forvalgte flag for ld\n"
+
+#: dllwrap.c:493
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dllværktøj> Forvalgt til \"dlltool\"\n"
+
+#: dllwrap.c:494
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <indgang> Giv alternativ indgangspunkt i DLL'en\n"
+
+#: dllwrap.c:495
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <base> Giv billedets baseadresse\n"
+
+#: dllwrap.c:496
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <maskine> i386-cygwin32 eller i386-mingw32\n"
+
+#: dllwrap.c:497
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run Gør intet andet end at vise hvad som bliver kørt\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Opret Mingw-DLL\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " Flag som sendes til DLLTOOL:\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <maskine>\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <udnavn> Generér eksportfil.\n"
+
+#: dllwrap.c:502
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <udnavn> Generér inddatabibliotek.\n"
+
+#: dllwrap.c:503
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect Tilføj indirekte dll til eksportfilen.\n"
+
+#: dllwrap.c:504
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <navn> Navn på inddata-dll som skal indsættes i uddatabiblioteket.\n"
+
+#: dllwrap.c:505
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <deffil> Navngiv .def-inddatafilen\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <deffil> Navngiv .def-uddatafilen\n"
+
+#: dllwrap.c:507
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Eksporter alle symboler til .def\n"
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols Eksporter kun .drectve-symboler\n"
+
+#: dllwrap.c:509
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <liste> Undtag symbolerne i <liste> fra .def\n"
+
+#: dllwrap.c:510
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes Bortse fra forvalgte undtagne symboler\n"
+
+#: dllwrap.c:511
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr " --base-file <basfil> Læs lænkergenereret basefil\n"
+
+#: dllwrap.c:512
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 Generér ingen idata$4-sektion\n"
+
+#: dllwrap.c:513
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 Generér ingen idata$5-sektion\n"
+
+#: dllwrap.c:514
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U Sæt understregninger i .lib\n"
+
+#: dllwrap.c:515
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k Fjern @<n> fra eksporterede navne\n"
+
+#: dllwrap.c:516
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias Tilføj aliaser uden @<n>\n"
+
+#: dllwrap.c:517
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <navn> Brug <navn> som assembler\n"
+
+#: dllwrap.c:518
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete Behold temporære filer.\n"
+
+#: dllwrap.c:519
+#, c-format
+msgid " --no-leading-underscore Entrypoint without underscore\n"
+msgstr ""
+
+#: dllwrap.c:520
+#, c-format
+msgid " --leading-underscore Entrypoint with underscore.\n"
+msgstr ""
+
+#: dllwrap.c:521
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " Øvrige flag sendes uændrede til programeringsprogsenheden\n"
+
+#: dllwrap.c:805
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "Angiv mindst et af flagene -o eller --dllname"
+
+#: dllwrap.c:834
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"ingen eksport-definitionsfil angaves.\n"
+"Opretter én, men det er måske ikke hvad du ønsker"
+
+# Indenteringen er øged til at oversættelsen skal få plads fremfor
+# kolonet på alle 4 strenge.
+#: dllwrap.c:1023
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "DLLVÆRKTØJ navn : %s\n"
+
+# Indenteringen er øged til at oversættelsen skal få plads fremfor
+# kolonet på alle 4 strenge.
+#: dllwrap.c:1024
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "DLLTOOL flag: %s\n"
+
+# Indenteringen er øged til at oversættelsen skal få plads fremfor
+# kolonet på alle 4 strenge.
+#: dllwrap.c:1025
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "ENHED navn : %s\n"
+
+# Indenteringen er øged til at oversættelsen skal få plads fremfor
+# kolonet på alle 4 strenge.
+#: dllwrap.c:1026
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "ENHED flag : %s\n"
+
+#: dwarf.c:112 dwarf.c:161 elfedit.c:123 elfedit.c:167 elfedit.c:195
+#: elfedit.c:227 readelf.c:368 readelf.c:536
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Størrelse på data som ikke kan behandles: %d\n"
+
+#: dwarf.c:312 dwarf.c:2890
+msgid "badly formed extended line op encountered!\n"
+msgstr "fejlagtigt udformet udvidet linje-op mødtes!\n"
+
+#: dwarf.c:319
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " Udvidet op-kode %d: "
+
+#: dwarf.c:324
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Slut på sekvensen\n"
+"\n"
+
+#: dwarf.c:330
+#, c-format
+msgid "set Address to 0x%lx\n"
+msgstr "sæt Adresse til 0x%lx\n"
+
+#: dwarf.c:336
+#, c-format
+msgid " define new File Table entry\n"
+msgstr " definer ny filtabelspost\n"
+
+#: dwarf.c:337 dwarf.c:2431
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Post\tKatalog\tTid\tStrl.\tNavn\n"
+
+#: dwarf.c:339
+#, c-format
+msgid " %d\t"
+msgstr " %d\t"
+
+#: dwarf.c:342 dwarf.c:344 dwarf.c:346 dwarf.c:2443 dwarf.c:2445 dwarf.c:2447
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
+
+#: dwarf.c:347
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
+
+#: dwarf.c:351
+#, fuzzy, c-format
+msgid "set Discriminator to %lu\n"
+msgstr " Sæt kolonnen til %d\n"
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:393
+#, fuzzy, c-format
+msgid "user defined: length %d\n"
+msgstr "(Brugerdefineret plads-op)"
+
+#: dwarf.c:395 dwarf.c:2922
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "UKENDT: længde %d\n"
+
+#: dwarf.c:408
+msgid "<no .debug_str section>"
+msgstr "<ingen .debug_str-sektion>"
+
+#: dwarf.c:414
+#, c-format
+msgid "DW_FORM_strp offset too big: %lx\n"
+msgstr ""
+
+#: dwarf.c:415
+msgid "<offset is too big>"
+msgstr "<offsettet er for stor>"
+
+#: dwarf.c:654
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Ukendt TAG-værdi: %lx"
+
+#: dwarf.c:695
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Ukendt FORM-værdi: %lx"
+
+#: dwarf.c:704
+#, c-format
+msgid " %lu byte block: "
+msgstr " %lu byte-blok: "
+
+#: dwarf.c:1037
+#, c-format
+msgid "(DW_OP_call_ref in frame info)"
+msgstr ""
+
+#: dwarf.c:1109
+#, c-format
+msgid "(DW_OP_GNU_implicit_pointer in frame info)"
+msgstr ""
+
+#: dwarf.c:1167
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Brugerdefineret plads-op)"
+
+#: dwarf.c:1169
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Ukendt plads-op)"
+
+#: dwarf.c:1217
+msgid "Internal error: DWARF version is not 2, 3 or 4.\n"
+msgstr ""
+
+#: dwarf.c:1323
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr ""
+
+#: dwarf.c:1373
+#, fuzzy, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (indirekte streng, offset: 0x%lx): "
+
+#: dwarf.c:1397
+#, fuzzy, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Ukendt formular: %d\n"
+
+#: dwarf.c:1485
+#, c-format
+msgid "(not inlined)"
+msgstr "(ikke inlined)"
+
+#: dwarf.c:1488
+#, c-format
+msgid "(inlined)"
+msgstr "(inlined)"
+
+#: dwarf.c:1491
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(deklareret som inline, men ignoreret)"
+
+#: dwarf.c:1494
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(deklareret som inline og inlined)"
+
+#: dwarf.c:1497
+#, c-format
+msgid " (Unknown inline attribute value: %lx)"
+msgstr " (ukendt inlineattributværdi: %lx)"
+
+#: dwarf.c:1662
+#, fuzzy, c-format
+msgid "(location list)"
+msgstr ""
+"\n"
+"Relokeringssektion "
+
+#: dwarf.c:1683 dwarf.c:3563
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr ""
+
+#: dwarf.c:1698
+#, c-format
+msgid "Offset %lx used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr ""
+
+#: dwarf.c:1889
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Ukendt AT-værdi: %lx"
+
+#: dwarf.c:1960
+#, c-format
+msgid "Reserved length value (%lx) found in section %s\n"
+msgstr ""
+
+#: dwarf.c:1971
+#, fuzzy, c-format
+msgid "Corrupt unit length (%lx) found in section %s\n"
+msgstr "Indhold i %s-sektionen:\n"
+
+#: dwarf.c:1978
+#, fuzzy, c-format
+msgid "No comp units in %s section ?"
+msgstr "%s har ingen %s-sektion"
+
+#: dwarf.c:1987
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr ""
+
+#: dwarf.c:1995 dwarf.c:3158 dwarf.c:3252 dwarf.c:3326 dwarf.c:3443
+#: dwarf.c:3598 dwarf.c:3667 dwarf.c:3862
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"%s-sektionens indhold:\n"
+"\n"
+
+#: dwarf.c:2003
+#, fuzzy, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Kan ikke finde nogen .debug_abbrev-sektion!\n"
+
+#: dwarf.c:2084
+#, fuzzy, c-format
+msgid " Compilation Unit @ offset 0x%lx:\n"
+msgstr " Oversættelsesenhed @ %lx:\n"
+
+#: dwarf.c:2085
+#, fuzzy, c-format
+msgid " Length: 0x%lx (%s)\n"
+msgstr " Længde: %ld\n"
+
+#: dwarf.c:2087
+#, c-format
+msgid " Version: %d\n"
+msgstr " Version: %d\n"
+
+#: dwarf.c:2088
+#, c-format
+msgid " Abbrev Offset: %ld\n"
+msgstr " Fork.-offset: %ld\n"
+
+#: dwarf.c:2089
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Pegerstørrelse: %d\n"
+
+#: dwarf.c:2093
+#, c-format
+msgid " Signature: "
+msgstr ""
+
+#: dwarf.c:2097
+#, fuzzy, c-format
+msgid " Type Offset: 0x%lx\n"
+msgstr " (indirekte streng, offset: 0x%lx): "
+
+#: dwarf.c:2104
+#, c-format
+msgid "Debug info is corrupted, length of CU at %lx extends beyond end of section (length = %lx)\n"
+msgstr ""
+
+#: dwarf.c:2115
+#, fuzzy, c-format
+msgid "CU at offset %lx contains corrupt or unsupported version number: %d.\n"
+msgstr " på offset 0x%lx indeholder %lu poster:\n"
+
+#: dwarf.c:2125
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr ""
+
+#: dwarf.c:2172
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr ""
+
+#: dwarf.c:2176
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr ""
+
+#: dwarf.c:2183
+#, fuzzy, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr " <%d><%lx>: Fork.-nummer: %lu (%s)\n"
+
+#: dwarf.c:2200
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr ""
+
+#: dwarf.c:2206
+#, fuzzy, c-format
+msgid " (%s)\n"
+msgstr " %s\n"
+
+#: dwarf.c:2298
+#, fuzzy, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"Udskrift af fejlsøgningsindhold i sektion %s:\n"
+"\n"
+
+#: dwarf.c:2336
+#, fuzzy, c-format
+msgid "The information in section %s appears to be corrupt - the section is too small\n"
+msgstr "Linjeinformationen virker være i stykker - sektionen er for lille\n"
+
+#: dwarf.c:2348 dwarf.c:2701
+#, fuzzy
+msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
+msgstr "Kun DWARF version 2's linjeinfo understøttes i øjeblikket.\n"
+
+#: dwarf.c:2362 dwarf.c:2716
+msgid "Invalid maximum operations per insn.\n"
+msgstr ""
+
+#: dwarf.c:2381
+#, fuzzy, c-format
+msgid " Offset: 0x%lx\n"
+msgstr " Længde: %ld\n"
+
+#: dwarf.c:2382
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Længde: %ld\n"
+
+#: dwarf.c:2383
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " DWARF version: %d\n"
+
+#: dwarf.c:2384
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " Prologlængde: %d\n"
+
+#: dwarf.c:2385
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " Min.-instruktionslængde: %d\n"
+
+#: dwarf.c:2387
+#, fuzzy, c-format
+msgid " Maximum Ops per Instruction: %d\n"
+msgstr " Min.-instruktionslængde: %d\n"
+
+# BUG: Ska det ikke være `' på engelsk?
+#: dwarf.c:2388
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " initialværdi på \"is_stmt\": %d\n"
+
+#: dwarf.c:2389
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " linjebase: %d\n"
+
+#: dwarf.c:2390
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " linjeområde: %d\n"
+
+#: dwarf.c:2391
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " op-kodebase: %d\n"
+
+#: dwarf.c:2400
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Op-koder:\n"
+
+#: dwarf.c:2403
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " Op-kode %d har %d argumenter\n"
+
+#: dwarf.c:2409
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" Katalogtabellen er tom.\n"
+
+#: dwarf.c:2412
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" Katalogtabellen:\n"
+
+#: dwarf.c:2416
+#, c-format
+msgid " %s\n"
+msgstr " %s\n"
+
+#: dwarf.c:2427
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" Filnavnstabellen er tom.\n"
+
+#: dwarf.c:2430
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" Filnavnstabellen:\n"
+
+#: dwarf.c:2438
+#, c-format
+msgid " %d\t"
+msgstr " %d\t"
+
+#: dwarf.c:2449
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#. Now display the statements.
+#: dwarf.c:2457
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Linjenummersætninger:\n"
+
+#: dwarf.c:2476
+#, fuzzy, c-format
+msgid " Special opcode %d: advance Address by %lu to 0x%lx"
+msgstr " Særlig op-kode %d: øg adressen med %d til 0x%lx"
+
+#: dwarf.c:2488
+#, fuzzy, c-format
+msgid " Special opcode %d: advance Address by %lu to 0x%lx[%d]"
+msgstr " Særlig op-kode %d: øg adressen med %d til 0x%lx"
+
+#: dwarf.c:2494
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " og linjenumret med %d til %d\n"
+
+#: dwarf.c:2504
+#, c-format
+msgid " Copy\n"
+msgstr " Kopiér\n"
+
+#: dwarf.c:2514
+#, fuzzy, c-format
+msgid " Advance PC by %lu to 0x%lx\n"
+msgstr " Øg PC med %d til %lx\n"
+
+#: dwarf.c:2526
+#, fuzzy, c-format
+msgid " Advance PC by %lu to 0x%lx[%d]\n"
+msgstr " Øg PC med %d til %lx\n"
+
+#: dwarf.c:2536
+#, c-format
+msgid " Advance Line by %d to %d\n"
+msgstr " Øg linjenumret med %d til %d\n"
+
+#: dwarf.c:2543
+#, c-format
+msgid " Set File Name to entry %d in the File Name Table\n"
+msgstr " Sæt filnavnet til post %d i filnavnstabellen\n"
+
+#: dwarf.c:2551
+#, fuzzy, c-format
+msgid " Set column to %lu\n"
+msgstr " Sæt kolonnen til %d\n"
+
+#: dwarf.c:2558
+#, c-format
+msgid " Set is_stmt to %d\n"
+msgstr " Sæt is_stmt til %d\n"
+
+#: dwarf.c:2563
+#, c-format
+msgid " Set basic block\n"
+msgstr " Sæt baseblokken\n"
+
+#: dwarf.c:2573
+#, fuzzy, c-format
+msgid " Advance PC by constant %lu to 0x%lx\n"
+msgstr " Øg PC med konstant %d til 0x%lx\n"
+
+#: dwarf.c:2585
+#, fuzzy, c-format
+msgid " Advance PC by constant %lu to 0x%lx[%d]\n"
+msgstr " Øg PC med konstant %d til 0x%lx\n"
+
+#: dwarf.c:2596
+#, fuzzy, c-format
+msgid " Advance PC by fixed size amount %lu to 0x%lx\n"
+msgstr " Øg PC med fastlængdeantal %d til 0x%lx\n"
+
+#: dwarf.c:2601
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr " Sæt prologue_end til sand\n"
+
+#: dwarf.c:2605
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr " Sæt epilogue_begin til sand\n"
+
+#: dwarf.c:2611 dwarf.c:3027
+#, fuzzy, c-format
+msgid " Set ISA to %lu\n"
+msgstr " Sæt ISA til %d\n"
+
+#: dwarf.c:2615 dwarf.c:3031
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr " Ukendt op-kode %d med operand: "
+
+#: dwarf.c:2648
+#, fuzzy, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"Udskrift af fejlsøgningsindhold i sektion %s:\n"
+"\n"
+
+#: dwarf.c:2689
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "Linjeinformationen virker være i stykker - sektionen er for lille\n"
+
+#: dwarf.c:2821
+#, fuzzy, c-format
+msgid "CU: %s:\n"
+msgstr " %s\n"
+
+#: dwarf.c:2822 dwarf.c:2835
+#, fuzzy, c-format
+msgid "File name Line number Starting address\n"
+msgstr " Nr: Navn Bind til Flag\n"
+
+#: dwarf.c:2828
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr ""
+
+#: dwarf.c:2833 dwarf.c:2918
+#, fuzzy, c-format
+msgid "%s:\n"
+msgstr "%s\n"
+
+#. If directory index is 0, that means current directory.
+#: dwarf.c:2964
+#, c-format
+msgid ""
+"\n"
+"./%s:[++]\n"
+msgstr ""
+
+#. The directory index starts counting at 1.
+#: dwarf.c:2970
+#, c-format
+msgid ""
+"\n"
+"%s/%s:\n"
+msgstr ""
+
+#: dwarf.c:3070
+#, c-format
+msgid "%-35s %11d %#18lx\n"
+msgstr ""
+
+#: dwarf.c:3074
+#, c-format
+msgid "%-35s %11d %#18lx[%d]\n"
+msgstr ""
+
+#: dwarf.c:3082
+#, c-format
+msgid "%s %11d %#18lx\n"
+msgstr ""
+
+#: dwarf.c:3086
+#, c-format
+msgid "%s %11d %#18lx[%d]\n"
+msgstr ""
+
+#: dwarf.c:3192 dwarf.c:3712
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr ""
+
+#: dwarf.c:3206
+#, fuzzy
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Kun DWARF 2 pub.-navn understøttes i øjeblikket\n"
+
+#: dwarf.c:3213
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Længde: %ld\n"
+
+#: dwarf.c:3215
+#, c-format
+msgid " Version: %d\n"
+msgstr " Version: %d\n"
+
+#: dwarf.c:3217
+#, fuzzy, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr " Offset i .debug_info-sektionen: %ld\n"
+
+#: dwarf.c:3219
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr " Strl. på omr. i .debug_info-sekt.: %ld\n"
+
+#: dwarf.c:3222
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" Offset\tNavn\n"
+
+#: dwarf.c:3273
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - linje: %d filnr: %d\n"
+
+#: dwarf.c:3279
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:3287
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - linje : %d makro : %s\n"
+
+#: dwarf.c:3296
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - linje : %d makro : %s\n"
+
+#: dwarf.c:3308
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - konstant : %d streng : %s\n"
+
+#: dwarf.c:3337
+#, c-format
+msgid " Number TAG\n"
+msgstr " Nummer TAG\n"
+
+#: dwarf.c:3343
+#, c-format
+msgid " %ld %s [%s]\n"
+msgstr " %ld %s [%s]\n"
+
+#: dwarf.c:3346
+msgid "has children"
+msgstr "har børn"
+
+#: dwarf.c:3346
+msgid "no children"
+msgstr "ingen børn"
+
+#: dwarf.c:3349
+#, c-format
+msgid " %-18s %s\n"
+msgstr " %-18s %s\n"
+
+#: dwarf.c:3382 dwarf.c:3594 dwarf.c:3819
+#, fuzzy, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+".debug_str-sektionen er tom.\n"
+
+#: dwarf.c:3388 dwarf.c:3825
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr ""
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:3432
+msgid "Location lists in .debug_info section aren't in ascending order!\n"
+msgstr ""
+
+#: dwarf.c:3435
+#, fuzzy
+msgid "No location lists in .debug_info section!\n"
+msgstr " Offset i .debug_info-sektionen: %ld\n"
+
+#: dwarf.c:3440
+#, c-format
+msgid "Location lists in %s section start at 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:3444
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr ""
+
+#: dwarf.c:3479
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr ""
+
+#: dwarf.c:3483
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr ""
+
+#: dwarf.c:3491
+#, fuzzy, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr ""
+"Indhold i .debug_loc-sektionen:\n"
+"\n"
+
+#: dwarf.c:3500 dwarf.c:3535 dwarf.c:3545
+#, fuzzy, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr ""
+"\n"
+"Relokeringssektionen på offset 0x%lx indeholder %ld byte:\n"
+
+#: dwarf.c:3519 dwarf.c:3913
+#, c-format
+msgid "<End of list>\n"
+msgstr ""
+
+#: dwarf.c:3529
+#, fuzzy, c-format
+msgid "(base address)\n"
+msgstr "sæt startadresse"
+
+#: dwarf.c:3566
+msgid " (start == end)"
+msgstr ""
+
+#: dwarf.c:3568
+msgid " (start > end)"
+msgstr ""
+
+#: dwarf.c:3578
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr ""
+
+#: dwarf.c:3723
+#, fuzzy
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Kun DWARF2's a-intervaller understøttes i øjeblikket.\n"
+
+#: dwarf.c:3727
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Længde: %ld\n"
+
+#: dwarf.c:3728
+#, c-format
+msgid " Version: %d\n"
+msgstr " Version: %d\n"
+
+#: dwarf.c:3729
+#, fuzzy, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr " Offset i .debug_info: %lx\n"
+
+#: dwarf.c:3730
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Pegerstørrelse: %d\n"
+
+#: dwarf.c:3731
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " Segmentstørrelse: %d\n"
+
+#: dwarf.c:3740
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr ""
+
+#: dwarf.c:3745
+#, fuzzy, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Adresselængde\n"
+
+#: dwarf.c:3747
+#, fuzzy, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Adresselængde\n"
+
+#: dwarf.c:3835
+#, fuzzy
+msgid "No range lists in .debug_info section!\n"
+msgstr " Offset i .debug_info-sektionen: %ld\n"
+
+#: dwarf.c:3859
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:3863
+#, c-format
+msgid " Offset Begin End\n"
+msgstr ""
+
+#: dwarf.c:3884
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr ""
+
+#: dwarf.c:3888
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr ""
+
+#: dwarf.c:3931
+msgid "(start == end)"
+msgstr ""
+
+#: dwarf.c:3933
+msgid "(start > end)"
+msgstr ""
+
+#: dwarf.c:4185
+msgid "bad register: "
+msgstr ""
+
+#: dwarf.c:4188
+#, fuzzy, c-format
+msgid "Contents of the %s section:\n"
+msgstr ""
+"%s-sektionens indhold:\n"
+"\n"
+
+#: dwarf.c:4962
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr ""
+
+#: dwarf.c:4964
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr ""
+
+#: dwarf.c:4989
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Visning af fejlsøgningsindeholdet i sektion %s understøttes ikke endnu.\n"
+
+#: dwarf.c:5031 elfedit.c:74
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Fejl: "
+
+#: dwarf.c:5042
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Advarsel: "
+
+#: dwarf.c:5145 dwarf.c:5215
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Ukendt fejlsøgningsargument \"%s\"\n"
+
+#: elfedit.c:243
+#, fuzzy, c-format
+msgid "%s: Not an ELF file - wrong magic bytes at the start\n"
+msgstr "Ikke en ELF-fil - den har forkerte magiske byte i begyndelsen\n"
+
+#: elfedit.c:251
+#, c-format
+msgid "%s: Unsupported EI_VERSION: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:267
+#, c-format
+msgid "%s: Unmatched EI_CLASS: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:278
+#, c-format
+msgid "%s: Unmatched e_machine: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:289
+#, c-format
+msgid "%s: Unmatched e_type: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:300
+#, c-format
+msgid "%s: Unmatched EI_OSABI: %d is not %d\n"
+msgstr ""
+
+#: elfedit.c:333
+#, fuzzy, c-format
+msgid "%s: Failed to update ELF header: %s\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: elfedit.c:366
+#, c-format
+msgid "Unsupported EI_CLASS: %d\n"
+msgstr ""
+
+#: elfedit.c:399
+#, fuzzy
+msgid ""
+"This executable has been built without support for a\n"
+"64 bit data type and so it cannot process 64 bit ELF files.\n"
+msgstr ""
+"Denne binære af readelf er bygget uden understøttelse for en 64-bit\n"
+"datatype og kan derfor ikke læse 64-bit ELF-filer.\n"
+
+#: elfedit.c:440
+#, fuzzy, c-format
+msgid "%s: Failed to read ELF header\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: elfedit.c:447
+#, fuzzy, c-format
+msgid "%s: Failed to seek to ELF header\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: elfedit.c:477 elfedit.c:491 elfedit.c:776 readelf.c:3674 readelf.c:3978
+#: readelf.c:4021 readelf.c:4093 readelf.c:4171 readelf.c:4936 readelf.c:4960
+#: readelf.c:7057 readelf.c:7103 readelf.c:7304 readelf.c:8494 readelf.c:8508
+#: readelf.c:9033 readelf.c:9049 readelf.c:9092 readelf.c:9117 readelf.c:11385
+#: readelf.c:11577 readelf.c:12138 readelf.c:12515 readelf.c:12529
+#: readelf.c:12891
+msgid "Out of memory\n"
+msgstr "Slut på hukommelse\n"
+
+#: elfedit.c:543 readelf.c:12581
+#, fuzzy, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: elfedit.c:553 elfedit.c:741 elfedit.c:845 readelf.c:12590 readelf.c:12858
+#: readelf.c:13026
+#, fuzzy, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: elfedit.c:568 readelf.c:12691
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr ""
+
+#: elfedit.c:579 readelf.c:12702
+#, fuzzy, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: elfedit.c:594 readelf.c:12718
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr ""
+
+#: elfedit.c:602 readelf.c:12726
+#, fuzzy, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr "Kan ikke bestemme længden på den dynamiske strengtabel\n"
+
+#: elfedit.c:734 readelf.c:12852
+#, fuzzy, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: elfedit.c:747 elfedit.c:852 readelf.c:12863 readelf.c:13032
+#, fuzzy, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr "%s er ikke et gyldigt arkiv"
+
+#: elfedit.c:836 readelf.c:13018
+#, fuzzy, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: elfedit.c:867 elfedit.c:876 readelf.c:13046 readelf.c:13055
+#, fuzzy, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: elfedit.c:896 elfedit.c:988
+#, fuzzy, c-format
+msgid "Input file '%s' is not readable\n"
+msgstr "Inddatafil %s findes ikke.\n"
+
+#: elfedit.c:920
+#, fuzzy, c-format
+msgid "%s: failed to seek to archive member\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: elfedit.c:959 readelf.c:13134
+#, c-format
+msgid "'%s': No such file\n"
+msgstr ""
+
+#: elfedit.c:961 readelf.c:13136
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr ""
+
+#: elfedit.c:968 readelf.c:13143
+#, fuzzy, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "%s er ikke et arkiv"
+
+#: elfedit.c:994 readelf.c:13156
+#, fuzzy, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: elfedit.c:1052
+#, fuzzy, c-format
+msgid "Unknown OSABI: %s\n"
+msgstr "Ukendt AT-værdi: %lx"
+
+#: elfedit.c:1071
+#, fuzzy, c-format
+msgid "Unknown machine type: %s\n"
+msgstr "Intern fejl: Ukendt maskintype: %d"
+
+#: elfedit.c:1089
+#, fuzzy, c-format
+msgid "Unknown machine type: %d\n"
+msgstr "Intern fejl: Ukendt maskintype: %d"
+
+#: elfedit.c:1108
+#, fuzzy, c-format
+msgid "Unknown type: %s\n"
+msgstr "ukendt BB-type"
+
+#: elfedit.c:1139
+#, fuzzy, c-format
+msgid "Usage: %s <option(s)> elffile(s)\n"
+msgstr "Brug: %s <flag> <inddatafiler>\n"
+
+#: elfedit.c:1141
+#, c-format
+msgid " Update the ELF header of ELF files\n"
+msgstr ""
+
+#: elfedit.c:1142 objcopy.c:475 objcopy.c:585
+#, c-format
+msgid " The options are:\n"
+msgstr " Flagene er:\n"
+
+#: elfedit.c:1143
+#, c-format
+msgid ""
+" --input-mach <machine> Set input machine type to <machine>\n"
+" --output-mach <machine> Set output machine type to <machine>\n"
+" --input-type <type> Set input file type to <type>\n"
+" --output-type <type> Set output file type to <type>\n"
+" --input-osabi <osabi> Set input OSABI to <osabi>\n"
+" --output-osabi <osabi> Set output OSABI to <osabi>\n"
+" -h --help Display this information\n"
+" -v --version Display the version number of %s\n"
+msgstr ""
+
+#: emul_aix.c:43
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr ""
+
+#: emul_aix.c:44
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:99 emul_aix.c:109 emul_aix.c:119 emul_aix.c:129
+#, fuzzy, c-format
+msgid "target `%s' ignored."
+msgstr " Argument %s ignoreres"
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "uventet slut på fejlsøgningsinformationen"
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "ugyldigt tal"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "ugyldig strenglængde"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "overløb i udtryksstakken"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "IEEE-udtryksoperator som ikke understøttes"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr "ukendt sektion"
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "underløb i udtryksstakken"
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "fejlbalanceret udtryksstak"
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "ukendt indbygget type"
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "flydendetalstype BCD understøttes ikke"
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "uventet tal"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "uventet posttype"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "block stadig på stakken ved slutningen"
+
+#: ieee.c:1208
+msgid "unknown BB type"
+msgstr "ukendt BB-type"
+
+#: ieee.c:1217
+msgid "stack overflow"
+msgstr "overløb i stakken"
+
+#: ieee.c:1240
+msgid "stack underflow"
+msgstr "underløb i stakken"
+
+#: ieee.c:1352 ieee.c:1422 ieee.c:2120
+msgid "illegal variable index"
+msgstr "ikke tilladt variabelindeks"
+
+#: ieee.c:1400
+msgid "illegal type index"
+msgstr "ikke tilladt typeindeks"
+
+#: ieee.c:1410 ieee.c:1447
+msgid "unknown TY code"
+msgstr "ukendt TY-kode"
+
+#: ieee.c:1429
+msgid "undefined variable in TY"
+msgstr "udefineret variabel i TY"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1841
+msgid "Pascal file name not supported"
+msgstr "Pascal-filnavn understøttes ikke"
+
+# BUGG: qualif>i<er
+#: ieee.c:1889
+msgid "unsupported qualifier"
+msgstr "bestemmelsen understøttes ikke"
+
+#: ieee.c:2158
+msgid "undefined variable in ATN"
+msgstr "udefineret variabel i ATN"
+
+#: ieee.c:2201
+msgid "unknown ATN type"
+msgstr "ukendt ATN-type"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2323
+msgid "unsupported ATN11"
+msgstr "ATN11 understøttes ikke"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2350
+msgid "unsupported ATN12"
+msgstr "ATN12 understøttes ikke"
+
+#: ieee.c:2410
+msgid "unexpected string in C++ misc"
+msgstr "uventet streng i C++-misc"
+
+#: ieee.c:2423
+msgid "bad misc record"
+msgstr "fejlagtig misc-post"
+
+#: ieee.c:2464
+msgid "unrecognized C++ misc record"
+msgstr "ukendt C++-misc-post"
+
+#: ieee.c:2579
+msgid "undefined C++ object"
+msgstr "udefineret C++-objekt"
+
+#: ieee.c:2613
+msgid "unrecognized C++ object spec"
+msgstr "ukendt C++-objektspecifikation"
+
+#: ieee.c:2649
+msgid "unsupported C++ object type"
+msgstr "uunderstøttet C++-objekttype"
+
+#: ieee.c:2659
+msgid "C++ base class not defined"
+msgstr "udefineret C++-baseklasse"
+
+#: ieee.c:2671 ieee.c:2776
+msgid "C++ object has no fields"
+msgstr "C++-objektet har ingen felter"
+
+# FIXME: beholdare??
+#: ieee.c:2690
+msgid "C++ base class not found in container"
+msgstr "Fandt ikke C++-baseklassen i beholderen"
+
+# FIXME: beholdare??
+#: ieee.c:2797
+msgid "C++ data member not found in container"
+msgstr "Fandt ikke C++-datamedlemmet i beholderen"
+
+#: ieee.c:2838 ieee.c:2988
+msgid "unknown C++ visibility"
+msgstr "ukendt C++-synlighed"
+
+#: ieee.c:2872
+msgid "bad C++ field bit pos or size"
+msgstr "C++-feltets bit-position eller bit-størrelse er fejlagtig"
+
+#: ieee.c:2964
+msgid "bad type for C++ method function"
+msgstr "fejlagtig type på C++-metodefunktion"
+
+#: ieee.c:2974
+msgid "no type information for C++ method function"
+msgstr "ingen typeinformation om C++-metodefunktion"
+
+#: ieee.c:3013
+msgid "C++ static virtual method"
+msgstr "statisk virtuel C++-metode"
+
+#: ieee.c:3108
+msgid "unrecognized C++ object overhead spec"
+msgstr "ukendt C++-objektoversigtsspec"
+
+#: ieee.c:3147
+msgid "undefined C++ vtable"
+msgstr "udefineret C++-v-tabel"
+
+#: ieee.c:3216
+msgid "C++ default values not in a function"
+msgstr "C++-standardværdier ikke inde i en funktion"
+
+#: ieee.c:3256
+msgid "unrecognized C++ default type"
+msgstr "ukendt C++-standardtype"
+
+#: ieee.c:3287
+msgid "reference parameter is not a pointer"
+msgstr "referenceparameteren er ikke en peger"
+
+#: ieee.c:3370
+msgid "unrecognized C++ reference type"
+msgstr "ukendt C++-referencetype"
+
+#: ieee.c:3452
+msgid "C++ reference not found"
+msgstr "fandt ikke C++-referencen"
+
+#: ieee.c:3460
+msgid "C++ reference is not pointer"
+msgstr "C++-referencen er ingen peger"
+
+#: ieee.c:3486 ieee.c:3494
+msgid "missing required ASN"
+msgstr "mangler nødvendig ASN"
+
+#: ieee.c:3521 ieee.c:3529
+msgid "missing required ATN65"
+msgstr "mangler nødvendig ATN65"
+
+#: ieee.c:3543
+msgid "bad ATN65 record"
+msgstr "fejlagtig ATN65-post"
+
+#: ieee.c:4171
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "IEEE numerisk overløb: 0x"
+
+#: ieee.c:4215
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "IEEE overløb i strenglængden: %u\n"
+
+#: ieee.c:5210
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "IEEE klarer ikke heltalstyper af størrelse %u\n"
+
+#: ieee.c:5244
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "IEEE klarer ikke flydendetalstyper af størrelse %u\n"
+
+#: ieee.c:5278
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "IEEE klarer ikke komplekse typer af størrelse %u\n"
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr ""
+
+#: nlmconv.c:273 srconv.c:1823
+msgid "input and output files must be different"
+msgstr "uddatafilen skal være en anden end inddatafilen"
+
+#: nlmconv.c:320
+msgid "input file named both on command line and with INPUT"
+msgstr "inddatafilen nævnt både på kommandolinjen og via INPUT"
+
+#: nlmconv.c:329
+msgid "no input file"
+msgstr "ingen inddatafil"
+
+#: nlmconv.c:359
+msgid "no name for output file"
+msgstr "intet navn på uddatafilen"
+
+#: nlmconv.c:373
+msgid "warning: input and output formats are not compatible"
+msgstr "advarsel: formaterne for ind- og uddata er ikke kompatible"
+
+#: nlmconv.c:403
+msgid "make .bss section"
+msgstr "opret .bss-sektion"
+
+#: nlmconv.c:413
+msgid "make .nlmsections section"
+msgstr "opret .nlmsections-sektion"
+
+#: nlmconv.c:441
+msgid "set .bss vma"
+msgstr "sæt vma for .bss"
+
+#: nlmconv.c:448
+msgid "set .data size"
+msgstr "sæt .data-størrelse"
+
+#: nlmconv.c:628
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "advarsel: symbol %s importeredes, men findes ikke i importlisten"
+
+#: nlmconv.c:648
+msgid "set start address"
+msgstr "sæt startadresse"
+
+#: nlmconv.c:697
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "advarsel: START-procedure %s er ikke defineret"
+
+#: nlmconv.c:699
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "advarsel: EXIT-procedure %s er ikke defineret"
+
+#: nlmconv.c:701
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "advarsel: CHECK-procedure %s er ikke defineret"
+
+#: nlmconv.c:721 nlmconv.c:907
+msgid "custom section"
+msgstr "tilrettelig sektion"
+
+#: nlmconv.c:741 nlmconv.c:936
+msgid "help section"
+msgstr "hjælpesektion"
+
+#: nlmconv.c:763 nlmconv.c:954
+msgid "message section"
+msgstr "meddelelsesektion"
+
+#: nlmconv.c:778 nlmconv.c:987
+msgid "module section"
+msgstr "modulsektion"
+
+#: nlmconv.c:797 nlmconv.c:1003
+msgid "rpc section"
+msgstr "rpc-section"
+
+#. There is no place to record this information.
+#: nlmconv.c:833
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: advarsel: delte biblioteker kan ikke have uinitieret data"
+
+#: nlmconv.c:854 nlmconv.c:1022
+msgid "shared section"
+msgstr "delt sektion"
+
+#: nlmconv.c:862
+msgid "warning: No version number given"
+msgstr "advarsel: Intet versionsnummer givet"
+
+#: nlmconv.c:902 nlmconv.c:931 nlmconv.c:949 nlmconv.c:998 nlmconv.c:1017
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: læsefejl: %s"
+
+#: nlmconv.c:924
+#, fuzzy
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "advarsel: MAP og FULLMAP understøttes ikke; forsøg med ld -M"
+
+#: nlmconv.c:1100
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Brug: %s [flag] [inddatafil [uddatafil]]\n"
+
+#: nlmconv.c:1101
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " Konvertér en objektfil til et indlæsningsbart NetWare-modul\n"
+
+#: nlmconv.c:1102
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+
+#: nlmconv.c:1143
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "ikke oversat med understøttelse for %s"
+
+#: nlmconv.c:1180
+msgid "make section"
+msgstr "opret sektion"
+
+#: nlmconv.c:1194
+msgid "set section size"
+msgstr "sæt sektionsstørrelse"
+
+#: nlmconv.c:1200
+msgid "set section alignment"
+msgstr ""
+
+#: nlmconv.c:1204
+msgid "set section flags"
+msgstr "sæt sektionsflag"
+
+#: nlmconv.c:1215
+msgid "set .nlmsections size"
+msgstr "sæt .nlmsektions størrelse"
+
+#: nlmconv.c:1296 nlmconv.c:1304 nlmconv.c:1313 nlmconv.c:1318
+msgid "set .nlmsection contents"
+msgstr "sæt .nlmsektions indhold"
+
+#: nlmconv.c:1795
+msgid "stub section sizes"
+msgstr "sektionsstørrelser for stub"
+
+#: nlmconv.c:1842
+msgid "writing stub"
+msgstr "skriver stub"
+
+#: nlmconv.c:1926
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "uløst PC-relativ relokering mod %s"
+
+#: nlmconv.c:1990
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "overløb ved justeringen af relokering mod %s"
+
+#: nlmconv.c:2117
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: udførsel af %s mislykkedes: "
+
+#: nlmconv.c:2132
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Eksekvering af %s mislykkedes"
+
+#: nm.c:225 size.c:78 strings.c:646
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Brug: %s [flag] [inddatafiler]\n"
+
+#: nm.c:226
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " List symboler i FILerne (eller a.out).\n"
+
+#: nm.c:227
+#, fuzzy, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+"\n"
+" -a, --debug-syms Vis kun fejlsøgningssymboler\n"
+" -A, --print-file-name Skriv navnet på inddatafilen for hvert symbol\n"
+" -B Samme som --format=bsd\n"
+" -C, --demangle[=STIL] Afkod lavniveausymbolnavn til brugerniveaunavn\n"
+" STIL kan være \"auto\" (det forvalgte), \"gnu\",\n"
+" \"lucid\", \"arm\", \"hp\", \"edg\" eller \"gnu-new-abi\"\n"
+" --no-demangle Afkod ikke lavniveausymbolnavn\n"
+" -D, --dynamic Vis dynamiske symboler i stedet for normale symboler\n"
+" --defined-only Vis kun definerede symboler\n"
+" -e (ignoreres)\n"
+" -f, --format=FORMAT Brug FORMAT som uddataformat. FORMAT kan være\n"
+" \"bsd\", \"sysv\" eller \"posix\". Forvalet er \"bsd\"\n"
+" -g, --extern-only Vis kun externe symboler\n"
+" -h, --help Vis denne hjælpen\n"
+" -l, --line-numbers Brug fejlsøgningsinformationen til at slå op\n"
+" filnavn og linjenummer for hvert symbol\n"
+" -n, --numeric-sort Sortere symboler numerisk efter adress\n"
+" -o Samma som -A\n"
+" -p, --no-sort Sortere ikke symbolerne\n"
+" -P, --portability Samme som --format=posix\n"
+" -r, --reverse-sort Sortere åt andre hållet\n"
+" -s, --print-armap Ta med indeks for symboler i arkivmedlemmer\n"
+" --size-sort Sortere symboler efter størrelse\n"
+" -t, --radix=BAS Skriv tal i talbasen BAS\n"
+" --target=BFD-NAVN Specificere målobjektets format som BFD-NAVN\n"
+" -u, --undefined-only Vis kun udefinerede symboler\n"
+" -V, --version Vis programmets versionsinformation\n"
+" -X 32_64 (ignoreres)\n"
+" @<fil> Læs valgmuligheder fra <fil>\n"
+"\n"
+
+#: nm.c:250
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr ""
+
+#: nm.c:253
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+
+#: nm.c:301
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: ugyldig talbase"
+
+#: nm.c:325
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: ugyldigt uddataformat"
+
+#: nm.c:346 readelf.c:8259 readelf.c:8304
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<processor-specifik>: %d"
+
+#: nm.c:348 readelf.c:8268 readelf.c:8322
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<OS-specifik>: %d"
+
+#: nm.c:350 readelf.c:8271 readelf.c:8325
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<ukendt>: %d"
+
+#: nm.c:390
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Arkivindeks:\n"
+
+#: nm.c:1251
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Udefinerede symboler fra %s:\n"
+"\n"
+
+#: nm.c:1253
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboler fra %s:\n"
+"\n"
+
+#: nm.c:1255 nm.c:1306
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Navn Værdi Klasse Type Størr. Linje Sektion\n"
+"\n"
+
+#: nm.c:1258 nm.c:1309
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Navn Værdi Klasse Type Størr. Linje Sektion\n"
+"\n"
+
+#: nm.c:1302
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Udefinerede symboler fra %s[%s]:\n"
+"\n"
+
+#: nm.c:1304
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboler fra %s[%s]:\n"
+"\n"
+
+#: nm.c:1396
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr ""
+
+#: nm.c:1624
+msgid "Only -X 32_64 is supported"
+msgstr "Kun -X 32_64 understøttes"
+
+#: nm.c:1653
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr ""
+
+#: nm.c:1654
+msgid "will produce no output, since undefined symbols have no size."
+msgstr ""
+
+#: nm.c:1682
+#, c-format
+msgid "data size %ld"
+msgstr "datastørrelse %ld"
+
+#: objcopy.c:473 srconv.c:1731
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Brug: %s [flag] inddatafil [uddatafil]\n"
+
+#: objcopy.c:474
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr ""
+
+#: objcopy.c:476
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set output arch, when input is arch-less\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff objects.\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" --compress-debug-sections Compress DWARF debug sections using zlib\n"
+" --decompress-debug-sections Decompress DWARF debug sections using zlib\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"
+msgstr ""
+
+#: objcopy.c:583
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Brug: %s <flag> inddatafiler\n"
+
+#: objcopy.c:584
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr " Fjern symboler og afsnit fra filer\n"
+
+#: objcopy.c:586
+#, fuzzy, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target <bfd-navn> Antag inddatafilens format er <bfd-navn>\n"
+" -O --output-target <bfd-navn> Opret uddatafilen i formatet <bfd-navn>\n"
+" -F --target <bfd-navn> Sæt både in- og udformatet til <bfd-navn>\n"
+" -p --preserve-dates Kopiér ændrings/adgangtider til uddata\n"
+" -R --remove-section <navn> Fjern sektion <navn> fra uddata\n"
+" -s --strip-all Fjern alle symbol- og relokeringsinfo\n"
+" -g -S --strip-debug Fjern alle fejlsøgningssymboler\n"
+" --strip-unneeded Fjern symboler unødige for relokeringen\n"
+" -N --strip-symbol <navn> Kopiér ikke symbol <navn>\n"
+" -K --keep-symbol <navn> Kopiér kun symbol <navn>\n"
+" -x --discard-all Fjern alle ikke-globale symboler\n"
+" -X --discard-locals Fjern alle oversættergenererede symboler\n"
+" -v --verbose Lista alle forændrede objektfiler\n"
+" -V --version Vis programmets versionsinformation\n"
+" -h --help Vis denne hjælp\n"
+" -o <fil> gem den udrensede uddata i <fil>\n"
+
+#: objcopy.c:659
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "ukendt sektionsflag \"%s\""
+
+#: objcopy.c:660
+#, c-format
+msgid "supported flags: %s"
+msgstr "flag som håndteres: %s"
+
+#: objcopy.c:761
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "kan ikke åbne '%s': %s"
+
+#: objcopy.c:764 objcopy.c:3389
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: fread mislykkedes"
+
+#: objcopy.c:837
+#, fuzzy, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: Ignorerer snavs fundet på denne linje"
+
+#: objcopy.c:1128
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr ""
+
+#: objcopy.c:1211
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: Flere omdefineringer af symbol \"%s\""
+
+#: objcopy.c:1215
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: Symbol \"%s\" er mål for mere end en omdefinering"
+
+#: objcopy.c:1243
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "kunne ikke åbne redefinitionsfil %s for symboler (fejl: %s)"
+
+#: objcopy.c:1321
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: snavs fundet ved linjeslut"
+
+#: objcopy.c:1324
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: mangler nyt symbolnavn"
+
+#: objcopy.c:1334
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr ""
+
+#: objcopy.c:1360
+#, fuzzy, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat returnerer negativ størrelse på %s"
+
+#: objcopy.c:1372
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "kopiér fra `%s' [ukendt] til `%s' [ukendt]\n"
+
+#: objcopy.c:1427
+msgid "Unable to change endianness of input file(s)"
+msgstr "Kan ikke ændre endian-type på inddatafilerne"
+
+#: objcopy.c:1436
+#, fuzzy, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "kopierer fra %s(%s) til %s(%s)\n"
+
+#: objcopy.c:1485
+#, c-format
+msgid "Input file `%s' ignores binary architecture parameter."
+msgstr "Inddatafil '%s' ignorerer binær arkitekturparameter."
+
+#: objcopy.c:1493
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "Kan ikke genkende formatet på inddatafilen '%s'"
+
+#: objcopy.c:1496
+#, c-format
+msgid "Output file cannot represent architecture `%s'"
+msgstr "Uddatafilen kan ikke repræsentere arkitektur '%s'"
+
+#: objcopy.c:1559
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr ""
+
+#: objcopy.c:1618
+#, c-format
+msgid "can't add section '%s'"
+msgstr "kan ikke tilføje sektion '%s'"
+
+#: objcopy.c:1632
+#, c-format
+msgid "can't create section `%s'"
+msgstr "kan ikke oprette sektion '%s'"
+
+#: objcopy.c:1678
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr "kan ikke oprette fejlsøgningssektion: '%s'"
+
+#: objcopy.c:1771
+msgid "Can't fill gap after section"
+msgstr "Kan ikke fylde hullet efter sektion"
+
+#: objcopy.c:1795
+msgid "can't add padding"
+msgstr "Kan ikke tilføje udfyldning"
+
+#: objcopy.c:1886
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr "kan ikke udfylde fejlsøgningssektion '%s'"
+
+#: objcopy.c:1949
+msgid "error copying private BFD data"
+msgstr "fejl ved kopiering af privat BFD-data"
+
+#: objcopy.c:1960
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr ""
+
+#: objcopy.c:1964
+msgid "treating that number as an absolute e_machine value instead"
+msgstr ""
+
+#: objcopy.c:1968
+msgid "ignoring the alternative value"
+msgstr ""
+
+#: objcopy.c:2000 objcopy.c:2035
+#, fuzzy, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr "kan ikke oprette katalog %s for arkivkopiering (fejl: %s)"
+
+#: objcopy.c:2096
+#, fuzzy
+msgid "Unable to recognise the format of file"
+msgstr "Kan ikke søge til slutningen af filen!"
+
+#: objcopy.c:2194
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "fejl: inddatafilen '%s' er tom"
+
+#: objcopy.c:2338
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "Flere navneskift på sektion %s"
+
+#: objcopy.c:2389
+#, fuzzy
+msgid "error in private header data"
+msgstr "fejl ved kopiering af privat BFD-data: %s"
+
+#: objcopy.c:2467
+msgid "failed to create output section"
+msgstr ""
+
+#: objcopy.c:2481
+msgid "failed to set size"
+msgstr "kunne ikke sætte størrelse"
+
+#: objcopy.c:2495
+msgid "failed to set vma"
+msgstr ""
+
+#: objcopy.c:2520
+msgid "failed to set alignment"
+msgstr ""
+
+#: objcopy.c:2554
+#, fuzzy
+msgid "failed to copy private data"
+msgstr "%s: fejl ved kopiering af privat BFD-data: %s"
+
+#: objcopy.c:2636
+msgid "relocation count is negative"
+msgstr ""
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2697
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr ""
+
+#: objcopy.c:2883
+#, fuzzy
+msgid "can't create debugging section"
+msgstr "%s: kan ikke oprette fejlsøgningssektion: %s"
+
+#: objcopy.c:2896
+#, fuzzy
+msgid "can't set debugging section contents"
+msgstr "%s: kan ikke sætte indeholdet i fejlsøgningssektionen: %s"
+
+#: objcopy.c:2904
+#, fuzzy, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr "%s: véd ikke hvordan man skriver fejlsøgningsinformation for %s"
+
+#: objcopy.c:3046
+msgid "could not create temporary file to hold stripped copy"
+msgstr ""
+
+#: objcopy.c:3118
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr ""
+
+#: objcopy.c:3148
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr ""
+
+#: objcopy.c:3209
+msgid "byte number must be non-negative"
+msgstr "byte-nr må ikke være negativt"
+
+#: objcopy.c:3215
+#, c-format
+msgid "architecture %s unknown"
+msgstr "arkitektur %s er ukendt"
+
+#: objcopy.c:3223
+msgid "interleave must be positive"
+msgstr "intervalstørrelsen skal være positiv"
+
+#: objcopy.c:3232
+#, fuzzy
+msgid "interleave width must be positive"
+msgstr "intervalstørrelsen skal være positiv"
+
+#: objcopy.c:3252 objcopy.c:3260
+#, c-format
+msgid "%s both copied and removed"
+msgstr "%s både kopieret og fjernet"
+
+#: objcopy.c:3359 objcopy.c:3439 objcopy.c:3547 objcopy.c:3578 objcopy.c:3602
+#: objcopy.c:3606 objcopy.c:3626
+#, c-format
+msgid "bad format for %s"
+msgstr "fejlagtigt format på %s"
+
+#: objcopy.c:3371
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "kan ikke åbne: %s: %s"
+
+#: objcopy.c:3516
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Advarsel: afkorter udfyldningsværdien fra 0x%s til 0x%x"
+
+#: objcopy.c:3677
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr ""
+
+#: objcopy.c:3695
+#, fuzzy
+msgid "unable to parse alternative machine code"
+msgstr "ukendt alternativ maskinkode, ignoreret"
+
+#: objcopy.c:3740
+#, fuzzy
+msgid "number of bytes to reverse must be positive and even"
+msgstr "intervalstørrelsen skal være positiv"
+
+#: objcopy.c:3743
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr ""
+
+#: objcopy.c:3758
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr ""
+
+#: objcopy.c:3764
+#, fuzzy, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr "%s: ugyldigt uddataformat"
+
+#: objcopy.c:3789
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr ""
+
+#: objcopy.c:3795
+#, fuzzy, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr "%s: ugyldigt uddataformat"
+
+#: objcopy.c:3824
+#, fuzzy
+msgid "interleave start byte must be set with --byte"
+msgstr "intervalstørrelsen skal være positiv"
+
+#: objcopy.c:3827
+msgid "byte number must be less than interleave"
+msgstr "byte-nr skal være mindre end antal byte i intervallet"
+
+#: objcopy.c:3830
+#, fuzzy
+msgid "interleave width must be less than or equal to interleave - byte`"
+msgstr "byte-nr skal være mindre end antal byte i intervallet"
+
+#: objcopy.c:3857
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr ""
+
+#: objcopy.c:3888
+#, fuzzy, c-format
+msgid "unknown output EFI target: %s"
+msgstr "ukendt formattype \"%s\""
+
+#: objcopy.c:3901
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr ""
+
+#: objcopy.c:3912
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr ""
+
+#: objcopy.c:3956 objcopy.c:3970
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s bruges aldrig"
+
+#: objdump.c:190
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Brug: %s <flag> <inddatafiler>\n"
+
+#: objdump.c:191
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " Vis information fra <objektfiler>.\n"
+
+#: objdump.c:192
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " Mindst et af følgende flag skal angives:\n"
+
+#: objdump.c:193
+#, fuzzy, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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[lLiaprmfFsoRt] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+msgstr ""
+" -a, --archive-headers Vis information fra arkivhoveden\n"
+" -f, --file-headers Vis indeholdet i det overgripende filhovedet\n"
+" -p, --private-headers Vis indeholdet i objektformatspecifikke filhoveden\n"
+" -h, --[section-]headers Vis indeholdet i sektionshoveden\n"
+" -x, --all-headers Vis indeholdet i alle hoveden\n"
+" -d, --disassemble Vis disassemblering af exekverbara sektioner\n"
+" -D, --disassemble-all Vis disassemblering af alle sektioner\n"
+" -S, --source Varva kildekode med disassemblering\n"
+" -s, --full-contents Vis hele indeholdet i alle udvalgte sektioner\n"
+" -g, --debugging Vis fejlsøgningsinformation fra objektfilen\n"
+" -G, --stabs Vis (ubehandlet) eventuell STABS-info fra filen\n"
+" -t, --syms Vis indeholdet i symboltabellen(erna)\n"
+" -T, --dynamic-syms Vis indeholdet i tabellen med dynamiske symboler\n"
+" -r, --reloc Vis relokeringsposterne i filen\n"
+" -R, --dynamic-reloc Vis de dynamiske relokeringsposterne i filen\n"
+" -V, --version Vis programmets versionsinformation\n"
+" -i, --info Lista de objektformat og arkitekturer som håndteres\n"
+" -H, --help Vis denne hjælp\n"
+
+#: objdump.c:222
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" Følgende flag er frivillige:\n"
+
+#: objdump.c:223
+#, fuzzy, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a signle line for -d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+"\n"
+msgstr ""
+" -b, --target=BFDNAVN Specificér at målobjektets format er BFDNAVN\n"
+" -m, --architecture=MASKINE Specificér at målarkitekturen er MASKINE\n"
+" -j, --section=NAVN Vis kun information om sektion NAVN\n"
+" -M, --disassembler-options=FLG Videresend FLG til disassembleren\n"
+" -EB --endian=big Antag big endian-format ved disassemblering\n"
+" -EL --endian=little Antag little endian-format ved disassemblering\n"
+" --file-start-context Medtag omgivelsen i begyndelsen af filen (med -S)\n"
+" -l, --line-numbers Medtag linjenumre og filnavne i uddata\n"
+" -C, --demangle[=STIL] Afkod kodede symbolnavne\n"
+" STIL, hvis givet, kan være: \"auto\", \"gnu\",\n"
+" \"lucid\", \"arm\", \"hp\", \"edg\", \"gnu-new-abi\"\n"
+" -w, --wide Tilpas uddata til mere end 80 kolonner\n"
+" -z, --disassemble-zeroes Hop ikke over blokke af nuller ved\n"
+" disassemblering\n"
+" --start-address=ADR Behandl kun data på adresser >= ADR\n"
+" --stop-address=ADR Behandl kun data på adresser <= ADR\n"
+" --prefix-addresses Vis fuldstændige adresser sammen med disassemblering.\n"
+" --[no-]show-raw-insn Vis hex.-kode sammen med disassemblering\n"
+" --adjust-vma=OFFSET Tilføj OFFSET til alle viste sektionsadresser\n"
+"\n"
+
+#: objdump.c:396
+#, c-format
+msgid "section '%s' mentioned in a -j option, but not found in any input file"
+msgstr ""
+
+#: objdump.c:500
+#, c-format
+msgid "Sections:\n"
+msgstr "Sektioner:\n"
+
+#: objdump.c:503 objdump.c:507
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Navn Størrelse VMA LMA Filoffs Just"
+
+#: objdump.c:509
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Navn Størrelse VMA LMA Filoffs Just"
+
+#: objdump.c:513
+#, c-format
+msgid " Flags"
+msgstr " Flag"
+
+#: objdump.c:515
+#, c-format
+msgid " Pg"
+msgstr ""
+
+#: objdump.c:558
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: ikke et dynamisk objekt"
+
+#: objdump.c:984 objdump.c:1008
+#, fuzzy, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr " (indirekte streng, offset: 0x%lx): "
+
+#: objdump.c:1634
+#, c-format
+msgid "disassemble_fn returned length %d"
+msgstr ""
+
+#: objdump.c:1939
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+"\n"
+"Disassemblering af sektion %s:\n"
+
+#: objdump.c:2115
+#, fuzzy, c-format
+msgid "can't use supplied machine %s"
+msgstr "Kan ikke bruge den opgivne maskine %s"
+
+#: objdump.c:2134
+#, fuzzy, c-format
+msgid "can't disassemble for architecture %s\n"
+msgstr "Kan ikke disassemblere for arkitektur %s\n"
+
+#: objdump.c:2214 objdump.c:2237
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr "Indhold i %s-sektionen:\n"
+
+#: objdump.c:2378
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"Der findes ingen %s-sektion\n"
+"\n"
+
+#: objdump.c:2387
+#, fuzzy, c-format
+msgid "reading %s section of %s failed: %s"
+msgstr "Læsning af %s-sektionen i %s mislykkedes: %s"
+
+#: objdump.c:2431
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"Indhold i %s-sektionen:\n"
+"\n"
+
+#: objdump.c:2562
+#, c-format
+msgid "architecture: %s, "
+msgstr "arkitektur: %s, "
+
+#: objdump.c:2565
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "flag 0x%08x:\n"
+
+#: objdump.c:2579
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"startadresse 0x"
+
+#: objdump.c:2642
+#, fuzzy, c-format
+msgid "Contents of section %s:"
+msgstr "Indhold i %s-sektionen:\n"
+
+#: objdump.c:2644
+#, fuzzy, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr " (indirekte streng, offset: 0x%lx): "
+
+#: objdump.c:2650
+#, fuzzy
+msgid "Reading section failed"
+msgstr "Læsning af %s-sektionen i %s mislykkedes: %s"
+
+#: objdump.c:2753
+#, fuzzy, c-format
+msgid "no symbols\n"
+msgstr "%s: ingen symboler"
+
+#: objdump.c:2760
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr ""
+
+#: objdump.c:2763
+#, fuzzy, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "Kan ikke bestemme hvor mange symboler som skal læses ind\n"
+
+#: objdump.c:3043
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: filformat %s\n"
+
+#: objdump.c:3101
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: udskrift af fejlsøgningsinformationen mislykkedes"
+
+#: objdump.c:3205
+#, c-format
+msgid "In archive %s:\n"
+msgstr "I arkiv %s:\n"
+
+#: objdump.c:3316
+msgid "error: the start address should be before the end address"
+msgstr ""
+
+#: objdump.c:3321
+msgid "error: the stop address should be after the start address"
+msgstr ""
+
+#: objdump.c:3333
+#, fuzzy
+msgid "error: prefix strip must be non-negative"
+msgstr "byte-nr må ikke være negativt"
+
+#: objdump.c:3338
+#, fuzzy
+msgid "error: instruction width must be positive"
+msgstr "indeks for alternativ maskinkode skal være positivt"
+
+#: objdump.c:3347
+msgid "unrecognized -E option"
+msgstr "ukendt -E-flag"
+
+#: objdump.c:3358
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "ukendt --endian-type \"%s\""
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr ""
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: Fejlagtig typekode 0x%x"
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment mislykkedes: %s"
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent mislykkedes: %s"
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf mangler indledende funktion"
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: uventet .ef\n"
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: ingen kendt fejlsøgningsinformation"
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "De sidste stabs-poster inden fejlen:\n"
+
+#: readelf.c:268
+#, fuzzy
+msgid "<none>"
+msgstr "ingen"
+
+#: readelf.c:269
+#, fuzzy
+msgid "<no-name>"
+msgstr "ingen"
+
+#: readelf.c:270 readelf.c:5047 readelf.c:5557 readelf.c:7794 readelf.c:7912
+#: readelf.c:8865 readelf.c:8945 readelf.c:8998 readelf.c:11860
+#: readelf.c:11863
+msgid "<corrupt>"
+msgstr ""
+
+#: readelf.c:308
+#, fuzzy, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "Kan ikke søge til %x for %s\n"
+
+#: readelf.c:323
+#, fuzzy, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Slut på hukommelse ved allokering af %d byte for %s\n"
+
+#: readelf.c:333
+#, fuzzy, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Kan ikke indlæse %d byte af %s\n"
+
+#: readelf.c:697
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Ved ikke hvordan man relokaliserer på denne maskinarkitektur\n"
+
+#: readelf.c:718 readelf.c:748 readelf.c:816 readelf.c:845
+msgid "relocs"
+msgstr "relokeringer"
+
+#: readelf.c:730 readelf.c:760 readelf.c:827 readelf.c:856
+#, fuzzy
+msgid "out of memory parsing relocs\n"
+msgstr "slut på hukommelse ved tolkning af relokeringer"
+
+#: readelf.c:961
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr " Offset Info Type Symbolværdi Symbolnavn + Tillæg\n"
+
+#: readelf.c:963
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr " Offset Info Type Symbolværdi Symbolnavn + Tillæg\n"
+
+#: readelf.c:968
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " Offset Info Type Symbolværdi Symbolnavn\n"
+
+#: readelf.c:970
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " Offset Info Type Symbolværdi Symbolnavn\n"
+
+#: readelf.c:978
+#, fuzzy, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr " Offset Info Type Symbolværdi Symbolnavn + Tillæg\n"
+
+#: readelf.c:980
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr " Offset Info Type Symbolværdi Symbolnavn+ Tillæg\n"
+
+#: readelf.c:985
+#, fuzzy, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr " Offset Info Type Symbolværdi Symbolnavn\n"
+
+#: readelf.c:987
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " Offset Info Type Symbolværdi Symbolnavn\n"
+
+#: readelf.c:1291 readelf.c:1448 readelf.c:1456
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "ukendt: %-7lx"
+
+#: readelf.c:1316
+#, fuzzy, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<ukendt: %x>"
+
+#: readelf.c:1323
+#, fuzzy, c-format
+msgid " bad symbol index: %08lx"
+msgstr "Navneindeks: %ld\n"
+
+#: readelf.c:1406
+#, fuzzy, c-format
+msgid "<string table index: %3ld>"
+msgstr "<strengtabelsindeks %3ld>"
+
+#: readelf.c:1408
+#, fuzzy, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<strengtabelsindeks %3ld>"
+
+#: readelf.c:1801
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "processorspecifik: %lx"
+
+#: readelf.c:1825
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "Operativsystemsspecifik: %lx"
+
+#: readelf.c:1829 readelf.c:2875
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<ukendt>: %lx"
+
+#: readelf.c:1842
+msgid "NONE (None)"
+msgstr "NONE (ingen)"
+
+#: readelf.c:1843
+msgid "REL (Relocatable file)"
+msgstr "REL (relokérbar fil)"
+
+#: readelf.c:1844
+msgid "EXEC (Executable file)"
+msgstr "EXEC (eksekverbar fil)"
+
+#: readelf.c:1845
+msgid "DYN (Shared object file)"
+msgstr "DYN (delt objektfil)"
+
+#: readelf.c:1846
+msgid "CORE (Core file)"
+msgstr "CORE (hukommelsesfil)"
+
+#: readelf.c:1850
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "processorspecifik: (%x)"
+
+#: readelf.c:1852
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "OS-specifikt: (%x)"
+
+#: readelf.c:1854 readelf.c:3122
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<ukendt>: %x"
+
+#: readelf.c:1866
+msgid "None"
+msgstr "Ingen"
+
+#: readelf.c:2034
+#, fuzzy, c-format
+msgid "<unknown>: 0x%x"
+msgstr "<ukendt>: %x"
+
+#: readelf.c:2220
+#, fuzzy
+msgid ", <unknown>"
+msgstr "<ukendt>: %d"
+
+#: readelf.c:2291 readelf.c:7145
+#, fuzzy
+msgid "unknown"
+msgstr "<ukendt>: %d"
+
+#: readelf.c:2292
+#, fuzzy
+msgid "unknown mac"
+msgstr "ukendt sektion"
+
+#: readelf.c:2356
+#, fuzzy
+msgid ", relocatable"
+msgstr "REL (relokérbar fil)"
+
+#: readelf.c:2359
+#, fuzzy
+msgid ", relocatable-lib"
+msgstr "REL (relokérbar fil)"
+
+#: readelf.c:2382
+msgid ", unknown v850 architecture variant"
+msgstr ""
+
+#: readelf.c:2438
+#, fuzzy
+msgid ", unknown CPU"
+msgstr "<ukendt>: %d"
+
+#: readelf.c:2453
+#, fuzzy
+msgid ", unknown ABI"
+msgstr "<ukendt>: %d"
+
+#: readelf.c:2473 readelf.c:2507
+#, fuzzy
+msgid ", unknown ISA"
+msgstr "<ukendt>: %d"
+
+#: readelf.c:2680
+msgid "Standalone App"
+msgstr "Selvstændig app."
+
+#: readelf.c:2689
+msgid "Bare-metal C6000"
+msgstr ""
+
+#: readelf.c:2699 readelf.c:3462 readelf.c:3478
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<ukendt: %x>"
+
+#: readelf.c:3172
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Brug: readelf <flag> elf-filer\n"
+
+#: readelf.c:3173
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr ""
+
+#: readelf.c:3174
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" --dyn-syms Display the dynamic symbol table\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as relocated bytes\n"
+" -w[lLiaprmfFsoRt] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =trace_info,=trace_abbrev,=trace_aranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+
+#: readelf.c:3207
+#, fuzzy, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+" -i --instruction-dump=<nr>\n"
+" Disassemblér indeholdet i sektion <nr>\n"
+
+#: readelf.c:3211
+#, 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 ""
+
+#: readelf.c:3240 readelf.c:3269 readelf.c:3273 readelf.c:13224
+#, fuzzy
+msgid "Out of memory allocating dump request table.\n"
+msgstr "Slut på hukommelse ved allokering af tabel for ønskede udskrifter."
+
+#: readelf.c:3431
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Ugyldigt flag \"-%c\"\n"
+
+#: readelf.c:3446
+msgid "Nothing to do.\n"
+msgstr "Intet at gøre.\n"
+
+#: readelf.c:3458 readelf.c:3474 readelf.c:7730
+msgid "none"
+msgstr "ingen"
+
+#: readelf.c:3475
+msgid "2's complement, little endian"
+msgstr "2-komplement, little endian"
+
+#: readelf.c:3476
+msgid "2's complement, big endian"
+msgstr "2-komplement, big endian"
+
+#: readelf.c:3494
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "Ikke en ELF-fil - den har forkerte magiske byte i begyndelsen\n"
+
+#: readelf.c:3504
+#, c-format
+msgid "ELF Header:\n"
+msgstr "ELF-hoved:\n"
+
+#: readelf.c:3505
+#, c-format
+msgid " Magic: "
+msgstr " Magi: "
+
+#: readelf.c:3509
+#, c-format
+msgid " Class: %s\n"
+msgstr " Klasse: %s\n"
+
+#: readelf.c:3511
+#, c-format
+msgid " Data: %s\n"
+msgstr " Data: %s\n"
+
+#: readelf.c:3513
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " Version: %d %s\n"
+
+#: readelf.c:3518
+#, fuzzy, c-format
+msgid "<unknown: %lx>"
+msgstr "<ukendt: %x>"
+
+#: readelf.c:3520
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS/ABI: %s\n"
+
+#: readelf.c:3522
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " ABI-version: %d\n"
+
+#: readelf.c:3524
+#, c-format
+msgid " Type: %s\n"
+msgstr " Type: %s\n"
+
+#: readelf.c:3526
+#, c-format
+msgid " Machine: %s\n"
+msgstr " Maskine: %s\n"
+
+#: readelf.c:3528
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " Version: 0x%lx\n"
+
+#: readelf.c:3531
+#, c-format
+msgid " Entry point address: "
+msgstr " Indgangsodresse: "
+
+#: readelf.c:3533
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" Start for programhoveder: "
+
+#: readelf.c:3535
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (byte inde i filen)\n"
+" Start for sektionshoveder: "
+
+#: readelf.c:3537
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (byte inde i filen)\n"
+
+#: readelf.c:3539
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Flag: 0x%lx%s\n"
+
+#: readelf.c:3542
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " Dette hoveds størrelse: %ld (byte)\n"
+
+#: readelf.c:3544
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " Programhovedernes størrelse: %ld (byte)\n"
+
+#: readelf.c:3546
+#, fuzzy, c-format
+msgid " Number of program headers: %ld"
+msgstr " Antal programhoveder: %ld\n"
+
+#: readelf.c:3551
+#, fuzzy, c-format
+msgid " (%ld)"
+msgstr " %s\n"
+
+#: readelf.c:3553
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " Sektionshovedernes størrelse: %ld (byte)\n"
+
+#: readelf.c:3555
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " Antal sektionshoveder: %ld"
+
+#: readelf.c:3560
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " Sektionshovedets strengtabelsindeks: %ld"
+
+#: readelf.c:3567
+#, c-format
+msgid " <corrupt: out of range>"
+msgstr ""
+
+#: readelf.c:3601 readelf.c:3635
+msgid "program headers"
+msgstr "programhoveder"
+
+#: readelf.c:3701
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"Der findes ingen programhoveder i denne fil.\n"
+
+#: readelf.c:3707
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Elf-filtype er %s\n"
+
+#: readelf.c:3708
+#, c-format
+msgid "Entry point "
+msgstr "Indgangspunkt "
+
+#: readelf.c:3710
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"Der findes %d programhoveder, med begyndelse på offset "
+
+# BUGG: plural-s
+#: readelf.c:3722 readelf.c:3724
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"Programhoveder:\n"
+
+#: readelf.c:3728
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Type Offset VirtAdr FysAdr FilSt HukommelseSt Flg Just\n"
+
+#: readelf.c:3731
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Type Offset VirtAdr FysAdr FilStrl HukommelseSt Flg Just\n"
+
+#: readelf.c:3735
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " Type Offset VirtAdr FysAdr\n"
+
+#: readelf.c:3737
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " FilStrl HukommelseStrl Flag Just\n"
+
+#: readelf.c:3830
+msgid "more than one dynamic segment\n"
+msgstr "mere end et dynamisk segment\n"
+
+#: readelf.c:3849
+#, fuzzy
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr "mere end et dynamisk segment\n"
+
+#: readelf.c:3864
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr ""
+
+#: readelf.c:3867
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr ""
+
+#: readelf.c:3875
+msgid "Unable to find program interpreter name\n"
+msgstr "Kan ikke finde navnet på programtolken\n"
+
+#: readelf.c:3882
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr ""
+
+#: readelf.c:3886
+#, fuzzy
+msgid "Unable to read program interpreter name\n"
+msgstr "Kan ikke finde navnet på programtolken\n"
+
+#: readelf.c:3889
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [Anmoder programtolkere: %s]"
+
+#: readelf.c:3901
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" Sektion til segment-afbildning:\n"
+
+#: readelf.c:3902
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " Segmentsektioner...\n"
+
+#: readelf.c:3938
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr ""
+
+#: readelf.c:3954
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr ""
+
+#: readelf.c:3969 readelf.c:4012
+msgid "section headers"
+msgstr "sektionshoveder"
+
+#: readelf.c:4059 readelf.c:4134
+msgid "sh_entsize is zero\n"
+msgstr ""
+
+#: readelf.c:4067 readelf.c:4142
+msgid "Invalid sh_entsize\n"
+msgstr ""
+
+#: readelf.c:4072 readelf.c:4147
+msgid "symbols"
+msgstr "symboler"
+
+#: readelf.c:4084 readelf.c:4159
+msgid "symtab shndx"
+msgstr "symtab shndx"
+
+#: readelf.c:4419
+#, c-format
+msgid "UNKNOWN (%*.*lx)"
+msgstr ""
+
+#: readelf.c:4440 readelf.c:4920
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"Der findes ingen sektioner i denne fil.\n"
+
+#: readelf.c:4446
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "Der findes %d sektionshoveder, med begyndelse på offset 0x%lx:\n"
+
+#: readelf.c:4467 readelf.c:5043 readelf.c:5454 readelf.c:5760 readelf.c:6173
+#: readelf.c:6754 readelf.c:8843
+msgid "string table"
+msgstr "strengtabel"
+
+#: readelf.c:4534
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr ""
+
+#: readelf.c:4554
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Filen indeholder flere tabeller med dynamiske symboler\n"
+
+#: readelf.c:4567
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Filen indeholder flere dynamiske strengtabeller\n"
+
+#: readelf.c:4573
+msgid "dynamic strings"
+msgstr "dynamiske strenge"
+
+#: readelf.c:4580
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Filen indeholder flere symtab-shndx-tabeller\n"
+
+# BUGG: plural-s
+#: readelf.c:4648
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"Sektionshoveder:\n"
+
+# BUGG: plural-s
+#: readelf.c:4650
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"Sektionshoved:\n"
+
+#: readelf.c:4656 readelf.c:4667 readelf.c:4678
+#, c-format
+msgid " [Nr] Name\n"
+msgstr ""
+
+#: readelf.c:4657
+#, fuzzy, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr " [Nr] Navn Type Adr Off Strl PS Flg Lk Inf Ju\n"
+
+#: readelf.c:4661
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] Navn Type Adr Off Strl PS Flg Lk Inf Ju\n"
+
+#: readelf.c:4668
+#, fuzzy, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr " [Nr] Navn Type Adresse Off Strl PS Flg Lk Inf Ju\n"
+
+#: readelf.c:4672
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] Navn Type Adresse Off Strl PS Flg Lk Inf Ju\n"
+
+#: readelf.c:4679
+#, fuzzy, c-format
+msgid " Type Address Offset Link\n"
+msgstr " [Nr] Navn Type Adresse Offset\n"
+
+#: readelf.c:4680
+#, fuzzy, c-format
+msgid " Size EntSize Info Align\n"
+msgstr " Størrelse Poststørrelse Flag Lænk Info Just\n"
+
+#: readelf.c:4684
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [Nr] Navn Type Adresse Offset\n"
+
+#: readelf.c:4685
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " Størrelse Poststørrelse Flag Lænk Info Just\n"
+
+#: readelf.c:4690
+#, fuzzy, c-format
+msgid " Flags\n"
+msgstr " Flag"
+
+#: readelf.c:4769
+#, c-format
+msgid "section %u: sh_link value of %u is larger than the number of sections\n"
+msgstr ""
+
+#: readelf.c:4868
+#, fuzzy, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Nøgle til flagene:\n"
+" W (skriv), A (allokér), X (eksekvér), M (flet), S (strenge)\n"
+" I (info), L (lænkerorden), G (gruppe), x (ukendt)\n"
+" O (ekstra OS-behandling kræves) o (OS-specifik), p (processor-specifik)\n"
+
+#: readelf.c:4873
+#, fuzzy, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Nøgle til flagene:\n"
+" W (skriv), A (allokér), X (eksekvér), M (flet), S (strenge)\n"
+" I (info), L (lænkerorden), G (gruppe), x (ukendt)\n"
+" O (ekstra OS-behandling kræves) o (OS-specifik), p (processor-specifik)\n"
+
+#: readelf.c:4895
+#, fuzzy, c-format
+msgid "[<unknown>: 0x%x] "
+msgstr "<ukendt>: %x"
+
+#: readelf.c:4927
+msgid "Section headers are not available!\n"
+msgstr ""
+
+#: readelf.c:4951
+#, fuzzy, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"Der findes ingen sektioner i denne fil.\n"
+
+#: readelf.c:4988
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:5002
+#, fuzzy, c-format
+msgid "Corrupt header in group section `%s'\n"
+msgstr "%s: kan ikke oprette fejlsøgningssektion: %s"
+
+#: readelf.c:5013
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:5052
+msgid "section data"
+msgstr "sektionsdata"
+
+#: readelf.c:5061
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
+msgstr ""
+"\n"
+"Versionbehovssektion \"%s\" indeholder %ld poster:\n"
+
+#: readelf.c:5064
+#, fuzzy, c-format
+msgid " [Index] Name\n"
+msgstr " Num: Indeks Værdi Navn"
+
+#: readelf.c:5078
+#, c-format
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr ""
+
+#: readelf.c:5087
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr ""
+
+#: readelf.c:5100
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr ""
+
+#: readelf.c:5167
+#, fuzzy
+msgid "dynamic section image fixups"
+msgstr "dynamiske strenge"
+
+#: readelf.c:5179
+#, c-format
+msgid ""
+"\n"
+"Image fixups for needed library #%d: %s - ident: %lx\n"
+msgstr ""
+
+#: readelf.c:5182
+#, fuzzy, c-format
+msgid "Seg Offset Type SymVec DataType\n"
+msgstr " Offset Info Type Symbolværdi Symbolnavn\n"
+
+#: readelf.c:5214
+#, fuzzy
+msgid "dynamic section image relas"
+msgstr "dynamiske strenge"
+
+#: readelf.c:5218
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Image relocs\n"
+msgstr "relokeringer"
+
+#: readelf.c:5220
+#, fuzzy, c-format
+msgid "Seg Offset Type Addend Seg Sym Off\n"
+msgstr " [Nr] Navn Type Adresse Offset\n"
+
+#: readelf.c:5275
+#, fuzzy
+msgid "dynamic string section"
+msgstr "dynamiske strenge"
+
+#: readelf.c:5376
+#, fuzzy, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"Relokeringssektionen på offset 0x%lx indeholder %ld byte:\n"
+
+#: readelf.c:5391
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"Der findes ingen dynamiske relokeringer i denne fil.\n"
+
+#: readelf.c:5415
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"Relokeringssektion "
+
+#: readelf.c:5420 readelf.c:5836 readelf.c:5851 readelf.c:6188
+#, c-format
+msgid "'%s'"
+msgstr ""
+
+#: readelf.c:5422 readelf.c:5853 readelf.c:6190
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " på offset 0x%lx indeholder %lu poster:\n"
+
+#: readelf.c:5473
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"Der findes ingen relokeringer i denne fil.\n"
+
+#: readelf.c:5611
+#, fuzzy, c-format
+msgid "\tUnknown version.\n"
+msgstr "ukendt sektion"
+
+#: readelf.c:5664 readelf.c:6037
+msgid "unwind table"
+msgstr "tilbagerulningstabel"
+
+#: readelf.c:5706 readelf.c:6119 readelf.c:6365
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Hopper over uventet relokeringstype %s\n"
+
+#: readelf.c:5768 readelf.c:6181 readelf.c:6762 readelf.c:6808
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"Der findes ingen tilbagerulningssektioner i denne fil.\n"
+
+# BUG: Fortsættelsen er ikke markeret for oversættelse i koden og indeholder '-citattegn.
+#: readelf.c:5831
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"Kunne ikke finde tilbagerulningssektion til "
+
+#: readelf.c:5844
+msgid "unwind info"
+msgstr "tilbagerulningsinfo"
+
+#: readelf.c:5846 readelf.c:6187
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"Tilbagerulningssektion "
+
+#: readelf.c:6296
+#, fuzzy
+msgid "unwind data"
+msgstr "tilbagerulningstabel"
+
+#: readelf.c:6350
+#, fuzzy, c-format
+msgid "Skipping unexpected relocation at offset 0x%lx\n"
+msgstr "Hopper over uventet relokeringstype %s\n"
+
+#: readelf.c:6426
+#, c-format
+msgid "[Truncated opcode]\n"
+msgstr ""
+
+#: readelf.c:6429
+#, c-format
+msgid "0x%02x "
+msgstr ""
+
+#: readelf.c:6451
+#, c-format
+msgid " Personality routine: "
+msgstr ""
+
+#: readelf.c:6469
+#, c-format
+msgid " [Truncated data]\n"
+msgstr ""
+
+#: readelf.c:6484
+#, c-format
+msgid " [reserved compact index %d]\n"
+msgstr ""
+
+#: readelf.c:6488
+#, c-format
+msgid " Compact model %d\n"
+msgstr ""
+
+#: readelf.c:6515
+#, c-format
+msgid " 0x%02x "
+msgstr ""
+
+#: readelf.c:6520
+#, c-format
+msgid " vsp = vsp + %d"
+msgstr ""
+
+#: readelf.c:6525
+#, c-format
+msgid " vsp = vsp - %d"
+msgstr ""
+
+#: readelf.c:6531
+#, c-format
+msgid "Refuse to unwind"
+msgstr ""
+
+#: readelf.c:6554
+#, c-format
+msgid " [Reserved]"
+msgstr ""
+
+#: readelf.c:6556
+#, c-format
+msgid " vsp = r%d"
+msgstr ""
+
+#: readelf.c:6581
+#, c-format
+msgid " finish"
+msgstr ""
+
+#: readelf.c:6586
+#, c-format
+msgid "[Spare]"
+msgstr ""
+
+#: readelf.c:6620
+#, c-format
+msgid "vsp = vsp + %ld"
+msgstr ""
+
+#: readelf.c:6627
+#, fuzzy, c-format
+msgid "[unsupported two-byte opcode]"
+msgstr "uunderstøttet C++-objekttype"
+
+#: readelf.c:6631
+#, c-format
+msgid " [unsupported opcode]"
+msgstr ""
+
+#: readelf.c:6715
+#, c-format
+msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
+msgstr ""
+
+#: readelf.c:6768
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+"\n"
+"Dynamisk segment på offset 0x%x indeholder %ld poster:\n"
+
+#: readelf.c:6819
+#, c-format
+msgid "NONE\n"
+msgstr ""
+
+#: readelf.c:6845
+#, fuzzy, c-format
+msgid "Interface Version: %s\n"
+msgstr "BFD-hovedfil version %s\n"
+
+#: readelf.c:6847
+#, c-format
+msgid "<corrupt: %ld>\n"
+msgstr ""
+
+#: readelf.c:6860
+#, c-format
+msgid "Time Stamp: %s\n"
+msgstr ""
+
+#: readelf.c:7037 readelf.c:7083
+#, fuzzy
+msgid "dynamic section"
+msgstr "dynamiske strenge"
+
+#: readelf.c:7161
+#, fuzzy, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"Der findes intet dynamisk segment i denne fil.\n"
+
+#: readelf.c:7199
+#, fuzzy
+msgid "Unable to seek to end of file!\n"
+msgstr "Kan ikke søge til slutningen af filen!"
+
+#: readelf.c:7212
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Kan ikke bestemme hvor mange symboler som skal læses ind\n"
+
+#: readelf.c:7247
+msgid "Unable to seek to end of file\n"
+msgstr "Kan ikke søge til slutningen af filen\n"
+
+#: readelf.c:7254
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Kan ikke bestemme længden på den dynamiske strengtabel\n"
+
+#: readelf.c:7260
+msgid "dynamic string table"
+msgstr "dynamisk strengtabel"
+
+#: readelf.c:7297
+msgid "symbol information"
+msgstr "symbolinformation"
+
+#: readelf.c:7322
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"Dynamisk segment på offset 0x%x indeholder %ld poster:\n"
+
+#: readelf.c:7325
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " Mærke Type Navn/Værdi\n"
+
+#: readelf.c:7361
+#, c-format
+msgid "Auxiliary library"
+msgstr "Eksternt bibliotek"
+
+#: readelf.c:7365
+#, c-format
+msgid "Filter library"
+msgstr "Filterbibliotek"
+
+#: readelf.c:7369
+#, c-format
+msgid "Configuration file"
+msgstr "Konfigurationsfil"
+
+#: readelf.c:7373
+#, c-format
+msgid "Dependency audit library"
+msgstr "Afhængighedskontrolsbibliotek"
+
+#: readelf.c:7377
+#, c-format
+msgid "Audit library"
+msgstr "Kontrolbibliotek"
+
+#: readelf.c:7395 readelf.c:7423 readelf.c:7451
+#, c-format
+msgid "Flags:"
+msgstr "Flag:"
+
+#: readelf.c:7398 readelf.c:7426 readelf.c:7453
+#, c-format
+msgid " None\n"
+msgstr " Ingen\n"
+
+#: readelf.c:7574
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Delt bibliotek: [%s]"
+
+#: readelf.c:7577
+#, c-format
+msgid " program interpreter"
+msgstr " Programfortolker"
+
+#: readelf.c:7581
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "Bibliotekets so-navn: [%s]"
+
+#: readelf.c:7585
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "Bibliotekets rpath: [%s]"
+
+#: readelf.c:7589
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "Bibliotekets runpath: [%s]"
+
+#: readelf.c:7622
+#, fuzzy, c-format
+msgid " (bytes)\n"
+msgstr " %s\n"
+
+#: readelf.c:7652
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Unødvendigt objekt: [%s]\n"
+
+#: readelf.c:7752
+#, fuzzy
+msgid "| <unknown>"
+msgstr "<ukendt>: %d"
+
+#: readelf.c:7785
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Versiondefinitionssektion \"%s\" indeholder %ld poster:\n"
+
+#: readelf.c:7788
+#, c-format
+msgid " Addr: 0x"
+msgstr " Adr: 0x"
+
+#: readelf.c:7790 readelf.c:7908 readelf.c:8046
+#, fuzzy, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr " Offset: %#08lx Lænk: %lx (%s)\n"
+
+#: readelf.c:7798
+msgid "version definition section"
+msgstr "versiondefinitionssektion"
+
+#: readelf.c:7831
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: Rev: %d Flag: %s"
+
+#: readelf.c:7834
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " Indeks: %d Ant: %d "
+
+#: readelf.c:7850
+#, c-format
+msgid "Name: %s\n"
+msgstr "Navn: %s\n"
+
+#: readelf.c:7852
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Navneindeks: %ld\n"
+
+#: readelf.c:7874
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: Forælder %d: %s\n"
+
+#: readelf.c:7877
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: Forælder %d, navneindeks: %ld\n"
+
+#: readelf.c:7882
+#, fuzzy, c-format
+msgid " Version def aux past end of section\n"
+msgstr "versiondefinitionssektion"
+
+#: readelf.c:7888
+#, fuzzy, c-format
+msgid " Version definition past end of section\n"
+msgstr "versiondefinitionssektion"
+
+#: readelf.c:7903
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Versionbehovssektion \"%s\" indeholder %ld poster:\n"
+
+#: readelf.c:7906
+#, c-format
+msgid " Addr: 0x"
+msgstr " Adr: 0x"
+
+#: readelf.c:7917
+msgid "version need section"
+msgstr "versionsbehovssektion"
+
+#: readelf.c:7945
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: Version: %d"
+
+#: readelf.c:7948
+#, c-format
+msgid " File: %s"
+msgstr " Fil: %s"
+
+#: readelf.c:7950
+#, c-format
+msgid " File: %lx"
+msgstr " Fil: %lx"
+
+#: readelf.c:7952
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " Ant: %d\n"
+
+#: readelf.c:7977
+#, fuzzy, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: Navn: %s"
+
+#: readelf.c:7980
+#, fuzzy, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: Navneindeks: %lx"
+
+#: readelf.c:7983
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Flag: %s Version: %d\n"
+
+#: readelf.c:7995
+#, fuzzy, c-format
+msgid " Version need aux past end of section\n"
+msgstr "versionsbehovssektion"
+
+#: readelf.c:8000
+#, fuzzy, c-format
+msgid " Version need past end of section\n"
+msgstr "versionsbehovssektion"
+
+#: readelf.c:8037
+msgid "version string table"
+msgstr "versionsstrengtabel"
+
+#: readelf.c:8041
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Versionsymbolssektion \"%s\" indeholder %d poster:\n"
+
+#: readelf.c:8044
+#, c-format
+msgid " Addr: "
+msgstr " Adr: "
+
+#: readelf.c:8055
+msgid "version symbol data"
+msgstr "versionsymbolsdata"
+
+#: readelf.c:8082
+msgid " 0 (*local*) "
+msgstr " 0 (*lokal*) "
+
+#: readelf.c:8086
+msgid " 1 (*global*) "
+msgstr " 1 (*global*) "
+
+#: readelf.c:8099
+msgid "invalid index into symbol array\n"
+msgstr ""
+
+#: readelf.c:8133 readelf.c:8910
+msgid "version need"
+msgstr "versionsbehov"
+
+#: readelf.c:8143
+msgid "version need aux (2)"
+msgstr "ydre versionsbehov (2)"
+
+#: readelf.c:8158 readelf.c:8213
+#, fuzzy
+msgid "*invalid*"
+msgstr "ugyldigt tal"
+
+#: readelf.c:8188 readelf.c:8975
+msgid "version def"
+msgstr "versionsdef."
+
+#: readelf.c:8208 readelf.c:8990
+msgid "version def aux"
+msgstr "ydre versionsdef."
+
+#: readelf.c:8242
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"Der fandtes ingen versionsinformation i denne fil.\n"
+
+#: readelf.c:8441
+#, c-format
+msgid "<other>: %x"
+msgstr ""
+
+#: readelf.c:8500
+msgid "Unable to read in dynamic data\n"
+msgstr "Kan ikke indlæse de dynamiske data\n"
+
+#: readelf.c:8550
+#, c-format
+msgid " <corrupt: %14ld>"
+msgstr ""
+
+#: readelf.c:8593 readelf.c:8645 readelf.c:8669 readelf.c:8699 readelf.c:8723
+#, fuzzy
+msgid "Unable to seek to start of dynamic information\n"
+msgstr "Kan ikke søge til begyndelsen af den dynamiske information"
+
+#: readelf.c:8599 readelf.c:8651
+msgid "Failed to read in number of buckets\n"
+msgstr "Mislykkedes at indlæse antal spande\n"
+
+#: readelf.c:8605
+msgid "Failed to read in number of chains\n"
+msgstr "Mislykkedes at indlæse antal kæder\n"
+
+#: readelf.c:8707
+#, fuzzy
+msgid "Failed to determine last chain length\n"
+msgstr "Mislykkedes at indlæse antal kæder\n"
+
+#: readelf.c:8751
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"Symboltabel for filbilleder:\n"
+
+#: readelf.c:8753 readelf.c:8771
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Nr Spd: Værdi Strl Type Bind Synl Idx Navn\n"
+
+#: readelf.c:8755 readelf.c:8773
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Nr Spd: Værdi Strl Type Bind Synl Idx Navn\n"
+
+#: readelf.c:8769
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+"\n"
+"Symboltabel for filbilleder:\n"
+
+#: readelf.c:8812
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Symbol table '%s' has a sh_entsize of zero!\n"
+msgstr ""
+"\n"
+"Symboltabel \"%s\" indeholder %lu poster:\n"
+
+#: readelf.c:8817
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Symboltabel \"%s\" indeholder %lu poster:\n"
+
+#: readelf.c:8822
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Nr: Værdi Strl Type Bind Synl Idx Navn\n"
+
+#: readelf.c:8824
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Nr: Værdi Strl Type Bind Synl Idx Navn\n"
+
+#: readelf.c:8881
+msgid "version data"
+msgstr "versionsdata"
+
+#: readelf.c:8923
+msgid "version need aux (3)"
+msgstr "ydre versionsbehov (3)"
+
+#: readelf.c:8950
+#, fuzzy
+msgid "bad dynamic symbol\n"
+msgstr "fejlagtigt dynamisk symbol"
+
+#: readelf.c:9014
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"Informationen om dynamiske symboler er ikke tilgænglig til at vise symboler.\n"
+
+#: readelf.c:9026
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Histogram over spandenes listelængde (totalt %d spande):\n"
+
+#: readelf.c:9028 readelf.c:9098
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " Længde Nummer %% af alle Dækning\n"
+
+#: readelf.c:9096
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Histogram over spandenes listelængde (totalt %d spande):\n"
+
+#: readelf.c:9162
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Dynamisk info-segment på offset 0x%lx indeholder %d poster:\n"
+
+#: readelf.c:9165
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr " Nr: Navn Bind til Flag\n"
+
+#: readelf.c:9174
+#, c-format
+msgid "<corrupt: %19ld>"
+msgstr ""
+
+#: readelf.c:9256
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr ""
+
+#: readelf.c:9416
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr ""
+
+#: readelf.c:9720
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr ""
+
+#: readelf.c:9728
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr ""
+
+#: readelf.c:9752
+#, fuzzy, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr "Hopper over uventet relokeringstype %s\n"
+
+#: readelf.c:9798
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"Disassembleringsudskrift af sektion %s\n"
+
+#: readelf.c:9819
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"Sektion \"%s\" har ingen data at skrive ud.\n"
+
+#: readelf.c:9825
+#, fuzzy
+msgid "section contents"
+msgstr "sæt .nlmsektions indhold"
+
+#: readelf.c:9844
+#, fuzzy, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+"\n"
+"Hex.udskrift af sektion \"%s\":\n"
+
+#: readelf.c:9862
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr ""
+
+#: readelf.c:9893
+#, fuzzy, c-format
+msgid " No strings found in this section."
+msgstr ""
+"\n"
+"Der fandtes ingen versionsinformation i denne fil.\n"
+
+#: readelf.c:9915
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"Hex.udskrift af sektion \"%s\":\n"
+
+#: readelf.c:9939
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr ""
+
+#: readelf.c:10073
+#, fuzzy, c-format
+msgid "%s section data"
+msgstr "sektionsdata"
+
+#: readelf.c:10138
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+"\n"
+"Sektion \"%s\" indeholder ingen fejlsøgningsdata.\n"
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:10147
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr ""
+
+#: readelf.c:10183
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "Ukendt fejlsøgningssektion: %s\n"
+
+#: readelf.c:10211
+#, fuzzy, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr "Nogen sektioner blev ikke skrevet ud da de ikke eksisterer!\n"
+
+#: readelf.c:10252
+#, fuzzy, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "Nogen sektioner blev ikke skrevet ud da de ikke eksisterer!\n"
+
+#: readelf.c:10430 readelf.c:10444 readelf.c:10463 readelf.c:10781
+#, fuzzy, c-format
+msgid "None\n"
+msgstr " Ingen\n"
+
+#: readelf.c:10431
+#, c-format
+msgid "Application\n"
+msgstr ""
+
+#: readelf.c:10432
+#, c-format
+msgid "Realtime\n"
+msgstr ""
+
+#: readelf.c:10433
+#, fuzzy, c-format
+msgid "Microcontroller\n"
+msgstr "dialogkontrol"
+
+#: readelf.c:10434
+#, c-format
+msgid "Application or Realtime\n"
+msgstr ""
+
+#: readelf.c:10445 readelf.c:10465 readelf.c:10835 readelf.c:10853
+#: readelf.c:10928 readelf.c:10949
+#, c-format
+msgid "8-byte\n"
+msgstr ""
+
+#: readelf.c:10446 readelf.c:10931 readelf.c:10952
+#, c-format
+msgid "4-byte\n"
+msgstr ""
+
+#: readelf.c:10450 readelf.c:10469
+#, c-format
+msgid "8-byte and up to %d-byte extended\n"
+msgstr ""
+
+#: readelf.c:10464
+#, c-format
+msgid "8-byte, except leaf SP\n"
+msgstr ""
+
+#: readelf.c:10480 readelf.c:10570 readelf.c:10967
+#, c-format
+msgid "flag = %d, vendor = %s\n"
+msgstr ""
+
+#: readelf.c:10486
+#, c-format
+msgid "True\n"
+msgstr ""
+
+#: readelf.c:10615 readelf.c:10719
+#, c-format
+msgid "Hard or soft float\n"
+msgstr ""
+
+#: readelf.c:10618
+#, c-format
+msgid "Hard float\n"
+msgstr ""
+
+#: readelf.c:10621 readelf.c:10728
+#, c-format
+msgid "Soft float\n"
+msgstr ""
+
+#: readelf.c:10624
+#, c-format
+msgid "Single-precision hard float\n"
+msgstr ""
+
+#: readelf.c:10641 readelf.c:10667
+#, c-format
+msgid "Any\n"
+msgstr ""
+
+#: readelf.c:10644
+#, c-format
+msgid "Generic\n"
+msgstr ""
+
+#: readelf.c:10673
+#, c-format
+msgid "Memory\n"
+msgstr ""
+
+#: readelf.c:10722
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr ""
+
+#: readelf.c:10725
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr ""
+
+#: readelf.c:10731
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU)\n"
+msgstr ""
+
+#: readelf.c:10814
+#, c-format
+msgid "Not used\n"
+msgstr ""
+
+#: readelf.c:10817
+#, c-format
+msgid "2 bytes\n"
+msgstr ""
+
+#: readelf.c:10820
+#, c-format
+msgid "4 bytes\n"
+msgstr ""
+
+#: readelf.c:10838 readelf.c:10856 readelf.c:10934 readelf.c:10955
+#, c-format
+msgid "16-byte\n"
+msgstr ""
+
+#: readelf.c:10871
+#, c-format
+msgid "DSBT addressing not used\n"
+msgstr ""
+
+#: readelf.c:10874
+#, c-format
+msgid "DSBT addressing used\n"
+msgstr ""
+
+#: readelf.c:10889
+#, c-format
+msgid "Data addressing position-dependent\n"
+msgstr ""
+
+#: readelf.c:10892
+#, c-format
+msgid "Data addressing position-independent, GOT near DP\n"
+msgstr ""
+
+#: readelf.c:10895
+#, c-format
+msgid "Data addressing position-independent, GOT far from DP\n"
+msgstr ""
+
+#: readelf.c:10910
+#, c-format
+msgid "Code addressing position-dependent\n"
+msgstr ""
+
+#: readelf.c:10913
+#, c-format
+msgid "Code addressing position-independent\n"
+msgstr ""
+
+#: readelf.c:11019
+msgid "attributes"
+msgstr ""
+
+#: readelf.c:11040
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr ""
+
+#: readelf.c:11046
+#, fuzzy, c-format
+msgid "Attribute Section: %s\n"
+msgstr "Ukendt fejlsøgningssektion: %s\n"
+
+#: readelf.c:11071
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr ""
+
+#: readelf.c:11083
+#, c-format
+msgid "File Attributes\n"
+msgstr ""
+
+#: readelf.c:11086
+#, fuzzy, c-format
+msgid "Section Attributes:"
+msgstr "Sektioner:\n"
+
+#: readelf.c:11089
+#, c-format
+msgid "Symbol Attributes:"
+msgstr ""
+
+#: readelf.c:11104
+#, fuzzy, c-format
+msgid "Unknown tag: %d\n"
+msgstr "<ukendt>: %d"
+
+#. ??? Do something sensible, like dump hex.
+#: readelf.c:11123
+#, fuzzy, c-format
+msgid " Unknown section contexts\n"
+msgstr "ukendt sektion"
+
+#: readelf.c:11130
+#, fuzzy, c-format
+msgid "Unknown format '%c'\n"
+msgstr "ukendt formattype \"%s\""
+
+#: readelf.c:11174 readelf.c:11196
+#, fuzzy
+msgid "<unknown>"
+msgstr "<ukendt>: %d"
+
+#: readelf.c:11291 readelf.c:11813
+msgid "liblist"
+msgstr "biblioteksliste"
+
+#: readelf.c:11294
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Section '.liblist' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Sektion \".conflict\" indeholder %ld poster:\n"
+
+#: readelf.c:11296
+#, fuzzy
+msgid " Library Time Stamp Checksum Version Flags\n"
+msgstr " Nr: Navn Bind til Flag\n"
+
+#: readelf.c:11322
+#, c-format
+msgid "<corrupt: %9ld>"
+msgstr ""
+
+#: readelf.c:11327
+msgid " NONE"
+msgstr ""
+
+#: readelf.c:11378
+msgid "options"
+msgstr "flag"
+
+#: readelf.c:11409
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Sektion \"%s\" indeholder %d poster:\n"
+
+# BUGG: Fejl i originalet?
+#: readelf.c:11570
+#, fuzzy
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr "konfliktliste uden tabel"
+
+#: readelf.c:11587 readelf.c:11602
+msgid "conflict"
+msgstr "konflikt"
+
+#: readelf.c:11612
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Sektion \".conflict\" indeholder %ld poster:\n"
+
+#: readelf.c:11614
+msgid " Num: Index Value Name"
+msgstr " Num: Indeks Værdi Navn"
+
+#: readelf.c:11626 readelf.c:11706 readelf.c:11774
+#, c-format
+msgid "<corrupt: %14ld>"
+msgstr ""
+
+#: readelf.c:11647
+msgid "GOT"
+msgstr ""
+
+#: readelf.c:11648
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+
+#: readelf.c:11649
+#, c-format
+msgid " Canonical gp value: "
+msgstr ""
+
+#: readelf.c:11653 readelf.c:11745
+#, c-format
+msgid " Reserved entries:\n"
+msgstr ""
+
+#: readelf.c:11654
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr ""
+
+#: readelf.c:11655 readelf.c:11672 readelf.c:11688 readelf.c:11747
+#: readelf.c:11756
+msgid "Address"
+msgstr ""
+
+#: readelf.c:11655 readelf.c:11672 readelf.c:11688
+msgid "Access"
+msgstr ""
+
+#: readelf.c:11656 readelf.c:11673 readelf.c:11689 readelf.c:11747
+#: readelf.c:11757
+msgid "Initial"
+msgstr ""
+
+#: readelf.c:11658
+#, c-format
+msgid " Lazy resolver\n"
+msgstr ""
+
+#: readelf.c:11664
+#, c-format
+msgid " Module pointer (GNU extension)\n"
+msgstr ""
+
+#: readelf.c:11670
+#, c-format
+msgid " Local entries:\n"
+msgstr ""
+
+#: readelf.c:11671
+#, fuzzy, c-format
+msgid " %*s %10s %*s\n"
+msgstr " %-18s %s\n"
+
+#: readelf.c:11686
+#, c-format
+msgid " Global entries:\n"
+msgstr ""
+
+#: readelf.c:11687
+#, c-format
+msgid " %*s %10s %*s %*s %-7s %3s %s\n"
+msgstr ""
+
+#: readelf.c:11690 readelf.c:11758
+msgid "Sym.Val."
+msgstr ""
+
+#: readelf.c:11690 readelf.c:11758
+msgid "Type"
+msgstr ""
+
+#: readelf.c:11690 readelf.c:11758
+msgid "Ndx"
+msgstr ""
+
+#: readelf.c:11690 readelf.c:11758
+#, fuzzy
+msgid "Name"
+msgstr "Navn: %s\n"
+
+#: readelf.c:11743
+msgid "PLT GOT"
+msgstr ""
+
+#: readelf.c:11744
+#, c-format
+msgid ""
+"\n"
+"PLT GOT:\n"
+"\n"
+msgstr ""
+
+#: readelf.c:11746
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr ""
+
+#: readelf.c:11749
+#, c-format
+msgid " PLT lazy resolver\n"
+msgstr ""
+
+#: readelf.c:11751
+#, c-format
+msgid " Module pointer\n"
+msgstr ""
+
+#: readelf.c:11754
+#, c-format
+msgid " Entries:\n"
+msgstr ""
+
+#: readelf.c:11755
+#, c-format
+msgid " %*s %*s %*s %-7s %3s %s\n"
+msgstr ""
+
+#: readelf.c:11821
+#, fuzzy
+msgid "liblist string table"
+msgstr "strengtabel"
+
+#: readelf.c:11831
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Versionbehovssektion \"%s\" indeholder %ld poster:\n"
+
+#: readelf.c:11835
+#, fuzzy
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr " Nr: Navn Bind til Flag\n"
+
+#: readelf.c:11884
+msgid "NT_AUXV (auxiliary vector)"
+msgstr ""
+
+#: readelf.c:11886
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (prstatus-struktur)"
+
+#: readelf.c:11888
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (flydendetalsregister)"
+
+#: readelf.c:11890
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (prpsinfo-struktur)"
+
+#: readelf.c:11892
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (task-struktur)"
+
+#: readelf.c:11894
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (user_xfpregs-struktur)"
+
+#: readelf.c:11896
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr ""
+
+#: readelf.c:11898
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr ""
+
+#: readelf.c:11900
+msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
+msgstr ""
+
+#: readelf.c:11902
+msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
+msgstr ""
+
+#: readelf.c:11904
+msgid "NT_S390_TIMER (s390 timer register)"
+msgstr ""
+
+#: readelf.c:11906
+msgid "NT_S390_TODCMP (s390 TOD comparator register)"
+msgstr ""
+
+#: readelf.c:11908
+msgid "NT_S390_TODPREG (s390 TOD programmable register)"
+msgstr ""
+
+#: readelf.c:11910
+#, fuzzy
+msgid "NT_S390_CTRS (s390 control registers)"
+msgstr "NT_FPREGS (flydendetalsregister)"
+
+#: readelf.c:11912
+msgid "NT_S390_PREFIX (s390 prefix register)"
+msgstr ""
+
+#: readelf.c:11914
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (pstatus-struktur)"
+
+#: readelf.c:11916
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (flydendetalsregister)"
+
+#: readelf.c:11918
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (psinfo-struktur)"
+
+#: readelf.c:11920
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (lwpstatus_t-struktur)"
+
+#: readelf.c:11922
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (lwpsinfo_t-struktur)"
+
+# BUG: Stavfejl i originalet (str>uc<ture)
+#: readelf.c:11924
+#, fuzzy
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (win32_pstatus-struktur)"
+
+#: readelf.c:11932
+msgid "NT_VERSION (version)"
+msgstr ""
+
+#: readelf.c:11934
+#, fuzzy
+msgid "NT_ARCH (architecture)"
+msgstr "NT_TASKSTRUCT (task-struktur)"
+
+#: readelf.c:11939 readelf.c:11962 readelf.c:11984
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "Ukendt kommentartype: (0x%08x)"
+
+#: readelf.c:11951
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr ""
+
+#: readelf.c:11953
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr ""
+
+#: readelf.c:11955
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr ""
+
+#: readelf.c:11957
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr ""
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:11974
+msgid "NetBSD procinfo structure"
+msgstr "NetBSD procesinfo-struktur"
+
+# FIXME
+#: readelf.c:12001 readelf.c:12015
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (reg-struktur)"
+
+# FIXME
+#: readelf.c:12003 readelf.c:12017
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (fpreg-struktur)"
+
+# FIXME
+#: readelf.c:12023
+#, c-format
+msgid "PT_FIRSTMACH+%d"
+msgstr "PT_FIRSTMACH+%d"
+
+#: readelf.c:12080
+msgid "notes"
+msgstr "kommentarer"
+
+#: readelf.c:12086
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"Kommentarer på offset 0x%08lx af længde 0x%08lx:\n"
+
+#: readelf.c:12088
+#, c-format
+msgid " Owner\t\tData size\tDescription\n"
+msgstr " Ejer\t\tData-størrelse\tBeskrivelse\n"
+
+#: readelf.c:12108 readelf.c:12121
+#, c-format
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr ""
+
+#: readelf.c:12110 readelf.c:12123
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr ""
+
+#: readelf.c:12219
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr "Der findes ingen kommentarer i hukommelsesfilen.\n"
+
+#: readelf.c:12306
+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"
+msgstr ""
+"Denne binære af readelf er bygget uden understøttelse for en 64-bit\n"
+"datatype og kan derfor ikke læse 64-bit ELF-filer.\n"
+
+#: readelf.c:12353
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: readelf.c:12366
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Fil: %s\n"
+
+#: readelf.c:12615
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr ""
+
+#: readelf.c:12623 readelf.c:12647
+#, fuzzy, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: readelf.c:12632
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr ""
+
+#: readelf.c:12640
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr ""
+
+#: readelf.c:12658
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr ""
+
+#: readelf.c:12670
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr ""
+
+#: readelf.c:12677
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr ""
+
+#: readelf.c:12683
+#, fuzzy, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: readelf.c:12707
+#, fuzzy, c-format
+msgid "%s has no archive index\n"
+msgstr "%s er ikke et arkiv"
+
+#: readelf.c:12943
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr ""
+
+#: readelf.c:12949
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr ""
+
+#: readelf.c:12967
+#, fuzzy, c-format
+msgid "Binary %s contains:\n"
+msgstr "Sektion %s indeholder:\n"
+
+#: readelf.c:12975
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr ""
+
+#: readelf.c:12986
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr ""
+
+#: readelf.c:12991
+#, fuzzy, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr " m[ab] - flyt filer i arkivet\n"
+
+#: readelf.c:13074 readelf.c:13150
+#, fuzzy, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr "Inddatafil %s findes ikke.\n"
+
+#: readelf.c:13096
+#, fuzzy, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: readelf.c:13168
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr ""
+
+#: rename.c:124
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s: kan ikke sætte tiden: %s"
+
+#. We have to clean up here.
+#: rename.c:159 rename.c:197
+#, fuzzy, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr "Kan ikke indlæse %d byte af %s\n"
+
+#: rename.c:205
+#, fuzzy, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr "Kan ikke åbne basefilen: %s"
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: ikke nok rådata"
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr "nultermineret UCS-streng"
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr "resurse-ID"
+
+#: resbin.c:208
+msgid "cursor"
+msgstr "markør"
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr "menuhoved"
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr "menu-ext.-hoved"
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr "menu-ext.-offset"
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "u-understøttet menuversion %d"
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr "menuobjektshoved"
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr "menuobjekt"
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr "dialoghoved"
+
+#: resbin.c:451
+#, fuzzy, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "uventet versionstype %d"
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr "dialogskrifttypesstørrelse"
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr "dialog-ext.-skrifttypesinformation"
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr "dialogkontrol"
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr "dialog-ext.kontrol"
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr "dialogkontrolsslut"
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr "dialogkontrolsdata"
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr "strengtabelsstrenglængde"
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr "strengtabelsstreng"
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr "skrifttypeskatalogshoved"
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr "skrifttypeskatalog"
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr "skrifttypeskatalogsenhedsnavn"
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr "skrifttypekatalogsskrifttypenavn"
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr "accelerator"
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr "gruppemarkørhoved"
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "uventet gruppemarkørtype %d"
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr "gruppemarkør"
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr "gruppeikonhoved"
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "uventet gruppeikontype %d"
+
+#: resbin.c:871
+msgid "group icon"
+msgstr "gruppeikon"
+
+#: resbin.c:935 resbin.c:1151
+msgid "unexpected version string"
+msgstr "uventet versionsstreng"
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "versionslængde %d passer ikke med resurselængde %lu"
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr "uventet versionstype %d"
+
+#: resbin.c:982
+#, fuzzy, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr "uventet længde %d på fast versionsinformation"
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr "fast versionsinfo"
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "uventet fast versions-signatur %lu"
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "uventet version %lu af fast versionsinformation"
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr "variabel versionsinfo"
+
+#: resbin.c:1039
+#, fuzzy, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr "uventet længde %d på værdi for strengfilsinfo"
+
+#: resbin.c:1049
+#, fuzzy, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr "uventet længde %d på værdi for versionsstrengtabel"
+
+#: resbin.c:1083
+#, fuzzy, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr "uventet længde %d != %d + %d på versionsstreng"
+
+#: resbin.c:1094
+#, fuzzy, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr "uventet længde %d < %d på versionsstreng"
+
+#: resbin.c:1111
+#, fuzzy, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr "uventet længde %d på værdi for var.filinfo"
+
+#: resbin.c:1130
+msgid "version varfileinfo"
+msgstr "versionsvar.filinfo"
+
+#: resbin.c:1145
+#, fuzzy, c-format
+msgid "unexpected version value length %ld"
+msgstr "uventet længde %d på værdi for version"
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr "filnavn kræves for COFF-inddata"
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: ingen resursesektion"
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: adresse uden for område"
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "katalog"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "navngivet katalogpost"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "katalogpostnavn"
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "navngivet underkatalog"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "navngiven resurse"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "ID-katalogpost"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "ID-underkatalog"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "ID-resurse"
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr "ukendt resursetype"
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr "datapost"
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr "resursedata"
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr "størrelse på resursedata"
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr "filnavn kræves for COFF-uddata"
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "kan ikke finde BFD_RELOC_RVA-relokeringstype"
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "kan ikke åbne temporær fil \"%s\": %s"
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "kan ikke omdirigere standard-ud: \"%s\": %s"
+
+#: resrc.c:284
+#, c-format
+msgid "%s %s: %s"
+msgstr "%s %s: %s"
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "kan ikke eksekvere \"%s\": %s"
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "Udnytter temporær fil \"%s\" til at læse præprocessoruddata\n"
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "kan ikke kalde popen \"%s\": %s"
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "Bruger popen til at læse uddata fra præprocessoren\n"
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "Prøvede \"%s\"\n"
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr "Bruger \"%s\"\n"
+
+#: resrc.c:608
+#, fuzzy
+msgid "preprocessing failed."
+msgstr "Behandler def-fil: %s"
+
+#: resrc.c:631
+#, c-format
+msgid "%s:%d: %s\n"
+msgstr "%s:%d: %s\n"
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: uventet filslut"
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: læsning af %lu byte gav %lu"
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "stat mislykkedes på billedfil \"%s\": %s"
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "markørfil \"%s\" indeholder ikke markørdata"
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: fseek til %lu mislykkedes: %s"
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr "hjælpe-ID kræver DIALOGEX"
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr "kontroldata kræver DIALOGEX"
+
+#: resrc.c:966
+#, fuzzy, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "stat mislykkedes på billedfil \"%s\": %s"
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "ikon-fil \"%s\" indeholder ikke ikondata"
+
+#: resrc.c:1724 resrc.c:1759
+#, fuzzy, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "stat mislykkedes på billedfil \"%s\": %s"
+
+#: resrc.c:1940
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "kan ikke åbne \"%s\" for udskrivning: %s"
+
+#: size.c:79
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr ""
+
+#: size.c:80
+#, fuzzy, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr "ingen inddatafil angaves"
+
+#: size.c:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "ugyldigt argument til --format: %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Ugyldig talbase: %s\n"
+
+#: srconv.c:1732
+#, fuzzy, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "%s: Konverterer en COFF-objektfil til en SYSROFF-objektfil\n"
+
+#: srconv.c:1733
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+
+#: srconv.c:1879
+#, c-format
+msgid "unable to open output file %s"
+msgstr "kan ikke åbne uddatafil %s"
+
+#: stabs.c:328 stabs.c:1717
+msgid "numeric overflow"
+msgstr "numerisk overløb"
+
+# FIXME
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "Fejlagtig stab: %s\n"
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Advarsel: %s: %s\n"
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC ikke inde i funktion\n"
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "For mange N_RBRAC's\n"
+
+#: stabs.c:727
+msgid "unknown C++ encoded name"
+msgstr "ukendt C++-kodet navn"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1262
+msgid "unrecognized cross reference type"
+msgstr "ukendt krydsreferencetype"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1809
+msgid "missing index type"
+msgstr "manglende indekstype"
+
+#: stabs.c:2122
+msgid "unknown virtual character for baseclass"
+msgstr "ukendt virtuelt tegn for baseklasse"
+
+# FIXME
+#: stabs.c:2140
+msgid "unknown visibility character for baseclass"
+msgstr "ukendt synlighedskarakter for baseklasse"
+
+#: stabs.c:2326
+msgid "unnamed $vb type"
+msgstr "$vb-type uden navn"
+
+#: stabs.c:2332
+msgid "unrecognized C++ abbreviation"
+msgstr "ukendt C++-forkortelse"
+
+# FIXME
+#: stabs.c:2408
+msgid "unknown visibility character for field"
+msgstr "ukendt synlighedskarakter for felt"
+
+#: stabs.c:2660
+msgid "const/volatile indicator missing"
+msgstr "const/volatile-indikator mangler"
+
+#: stabs.c:2896
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "Ingen kodning af \"%s\"\n"
+
+#: stabs.c:3196
+msgid "Undefined N_EXCL"
+msgstr "Udefineret N_EXCL"
+
+#: stabs.c:3276
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "Typens filnummer %d uden for sit interval\n"
+
+#: stabs.c:3281
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Typens indeksnummer %d uden for sit interval\n"
+
+#: stabs.c:3360
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "Ukendt XCOFF-type %d\n"
+
+#: stabs.c:3652
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "fejlagtigt kodet navn \"%s\"\n"
+
+#: stabs.c:3747
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "ingen argumenttype i kodet streng\n"
+
+#: stabs.c:5094
+#, fuzzy, c-format
+msgid "Demangled name is not a function\n"
+msgstr "C++-standardværdier ikke inde i en funktion"
+
+#: stabs.c:5136
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr ""
+
+#: stabs.c:5203
+#, fuzzy, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "Ukendt fejlsøgningsargument \"%s\"\n"
+
+#: stabs.c:5255
+#, fuzzy, c-format
+msgid "Failed to print demangled template\n"
+msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#: stabs.c:5335
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr ""
+
+#: stabs.c:5384
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr ""
+
+#: stabs.c:5391
+#, fuzzy, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "ukendt C++-standardtype"
+
+#: strings.c:186 strings.c:245
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "ugyldigt heltalsargument %s"
+
+#: strings.c:248
+#, fuzzy, c-format
+msgid "invalid minimum string length %d"
+msgstr "ugyldig strenglængde"
+
+#: strings.c:647
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr ""
+
+#: strings.c:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+
+#: sysdump.c:647
+#, fuzzy, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "%s: Skriv en menneskeligt læsbar tolkning af en SYSROFF-objektfil\n"
+
+#: sysdump.c:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "kan ikke åbne inddatafil %s"
+
+#: version.c:36
+#, fuzzy, c-format
+msgid "Copyright 2010 Free Software Foundation, Inc.\n"
+msgstr "Copyright 2002 Free Software Foundation, Inc.\n"
+
+#: version.c:37
+#, fuzzy, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"Dette program er frit programmel; du kan distribuere det videre under betingelserne\n"
+"i GNU General Public License. Dette program har ingen som helst garantier.\n"
+
+#: windmc.c:190
+#, fuzzy, c-format
+msgid "can't create %s file ,%s' for output.\n"
+msgstr "kan ikke åbne \"%s\" for udskrivning: %s"
+
+#: windmc.c:198
+#, fuzzy, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr "Brug: %s [flag] inddatafil\n"
+
+#: windmc.c:200
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianess.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+
+#: windmc.c:220
+#, fuzzy, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+" -h --help Vis denne hjælpetekst\n"
+" -V --version Vis versionsinformation\n"
+
+#: windmc.c:261 windres.c:411
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: advarsel: "
+
+#: windmc.c:262
+#, c-format
+msgid "A codepage was specified switch ,%s' and UTF16.\n"
+msgstr ""
+
+#: windmc.c:263
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr ""
+
+#: windmc.c:307
+msgid "try to add a ill language."
+msgstr ""
+
+#: windmc.c:1116
+#, fuzzy, c-format
+msgid "unable to open file ,%s' for input.\n"
+msgstr "kan ikke åbne uddatafil %s"
+
+#: windmc.c:1124
+#, fuzzy, c-format
+msgid "unable to read contents of %s"
+msgstr "Kan ikke indlæse %d byte af %s\n"
+
+#: windmc.c:1136
+msgid "input file does not seems to be UFT16.\n"
+msgstr ""
+
+#: windres.c:216
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "kan ikke åbne %s \"%s\": %s"
+
+#: windres.c:390
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": forventedes at være et katalog\n"
+
+#: windres.c:402
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": forventedes at være et blad\n"
+
+#: windres.c:413
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": dublet af værdi\n"
+
+#: windres.c:563
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "ukendt formattype \"%s\""
+
+#: windres.c:564
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: formater som håndteres:"
+
+#. Otherwise, we give up.
+#: windres.c:647
+#, fuzzy, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "kan ikke bestemme \"%s\"'s filtype; brug flag -I"
+
+#: windres.c:659
+#, fuzzy, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Brug: %s [flag] [in-fil] [ud-fil]\n"
+
+#: windres.c:661
+#, fuzzy, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+"Flag:\n"
+" -i FIL, --input FIL Navngiv inddatafilen\n"
+" -o FIL, --output FIL Navngiv uddatafilen\n"
+" -I FORMAT, --input-format FORMAT\n"
+" Specificér inddataformatet\n"
+" -O FORMAT, --output-format FORMAT\n"
+" Specificér uddataformatet\n"
+" -F MÅL, --target MÅL Specificér COFF-målet\n"
+" --preprocessor PROGRAM Program at bruge som præprocessor på rc-filen\n"
+" --include-dir KATALOG Inkludér katalog når rc-filen præprocesses\n"
+" -DSYM[=VÆRDI], --define SYM[=VÆRDI]\n"
+" Definér SYM når rc-filen præprocesses\n"
+" -v Udførlig - beretter vad den gør\n"
+" --language SPROG Sæt sproget når rc-filen læses\n"
+" --use-temp-file Brug en tem.fil i stedet for popen ved læsning\n"
+" af uddata fra præprocessoren\n"
+" --no-use-temp-file Brug popen (standard)\n"
+
+#: windres.c:678
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug Aktivér tolkens fejlsøgning\n"
+
+#: windres.c:681
+#, fuzzy, 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 ""
+" Valgmulighederne er:\n"
+" -h --help Vis denne hjælpebesked\n"
+" -V --version Vis versionsinformation\n"
+
+#: windres.c:686
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"FORMAT er én af rc, res eller coff, og afledes fra filnavnsendelsen\n"
+"hvis det ikke specificeres. Et enkelt filnavn er en inddatafil. Ingen\n"
+"inddatafil betyder standard-ind, med format rc. Ingen uddatafil betyder\n"
+"standard-ud, med format rc.\n"
+
+#: windres.c:847
+#, fuzzy
+msgid "invalid codepage specified.\n"
+msgstr "ingen kommandoflag blev angivet"
+
+#: windres.c:862
+#, fuzzy
+msgid "invalid option -f\n"
+msgstr "Ugyldigt flag \"-%c\"\n"
+
+#: windres.c:867
+#, fuzzy
+msgid "No filename following the -fo option.\n"
+msgstr ""
+"\n"
+" Følgende flag er frivillige:\n"
+
+#: windres.c:938
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr ""
+
+#: windres.c:1051
+msgid "no resources"
+msgstr "ingen resurser"
+
+#: wrstabs.c:353 wrstabs.c:1916
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup mislykkedes: %s"
+
+#: wrstabs.c:636
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: fejlagtig størrelse %u"
+
+#: wrstabs.c:1394
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: advarsel: ukendt størrelsen på felt \"%s\" i strukturen"
+
+#~ msgid ""
+#~ "The section %s contains:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Sektion %s indeholder:\n"
+#~ "\n"
+
+#, fuzzy
+#~ msgid "Range lists in .debug_info section aren't in ascending order!\n"
+#~ msgstr " Offset i .debug_info-sektionen: %ld\n"
+
+#~ msgid "The section %s contains:\n"
+#~ msgstr "Sektion %s indeholder:\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Can't uncompress section '%s'.\n"
+#~ msgstr "kan ikke oprette sektion \"%s\": %s"
+
+#, fuzzy
+#~ msgid "%s: failed to read archive header following long symbol names\n"
+#~ msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#, fuzzy
+#~ msgid "%s: failed to read file name\n"
+#~ msgstr "%s: Mislykkedes at læse filhoved\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "<member %s>\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "<medlem %s>\n"
+#~ "\n"
+
+#~ msgid "debug_record_variable: no current block"
+#~ msgstr "debug_record_variable: ingen aktuel blok"
+
+#~ msgid "set .nlmsections flags"
+#~ msgstr "sæt .nlmsections-flag"
+
+#, fuzzy
+#~ msgid ""
+#~ " -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+#~ " -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+#~ " -B --binary-architecture <arch> Set arch of output file, when input is binary\n"
+#~ " -F --target <bfdname> Set both input and output format to <bfdname>\n"
+#~ " --debugging Convert debugging information, if possible\n"
+#~ " -p --preserve-dates Copy modified/access timestamps to the output\n"
+#~ " -j --only-section <name> Only copy section <name> into the output\n"
+#~ " -R --remove-section <name> Remove section <name> from the output\n"
+#~ " -S --strip-all Remove all symbol and relocation information\n"
+#~ " -g --strip-debug Remove all debugging symbols\n"
+#~ " --strip-unneeded Remove all symbols not needed by relocations\n"
+#~ " -N --strip-symbol <name> Do not copy symbol <name>\n"
+#~ " -K --keep-symbol <name> Only copy symbol <name>\n"
+#~ " -L --localize-symbol <name> Force symbol <name> to be marked as a local\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"
+#~ " -x --discard-all Remove all non-global symbols\n"
+#~ " -X --discard-locals Remove any compiler-generated symbols\n"
+#~ " -i --interleave <number> Only copy one out of every <number> bytes\n"
+#~ " -b --byte <num> Select byte <num> in every interleaved block\n"
+#~ " --gap-fill <val> Fill gaps between sections with <val>\n"
+#~ " --pad-to <addr> Pad the last section up to address <addr>\n"
+#~ " --set-start <addr> Set the start address to <addr>\n"
+#~ " {--change-start|--adjust-start} <incr>\n"
+#~ " Add <incr> to the start address\n"
+#~ " {--change-addresses|--adjust-vma} <incr>\n"
+#~ " Add <incr> to LMA, VMA and start addresses\n"
+#~ " {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+#~ " Change LMA and VMA of section <name> by <val>\n"
+#~ " --change-section-lma <name>{=|+|-}<val>\n"
+#~ " Change the LMA of section <name> by <val>\n"
+#~ " --change-section-vma <name>{=|+|-}<val>\n"
+#~ " Change the VMA of section <name> by <val>\n"
+#~ " {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+#~ " Warn if a named section does not exist\n"
+#~ " --set-section-flags <name>=<flags>\n"
+#~ " Set section <name>'s properties to <flags>\n"
+#~ " --add-section <name>=<file> Add section <name> found in <file> to output\n"
+#~ " --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+#~ " --change-leading-char Force output format's leading character style\n"
+#~ " --remove-leading-char Remove leading character from global symbols\n"
+#~ " --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+#~ " --srec-len <number> Restrict the length of generated Srecords\n"
+#~ " --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+#~ " --strip-symbols <file> -N for all symbols listed 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"
+#~ " --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"
+#~ " -v --verbose List all object files modified\n"
+#~ " -V --version Display this program's version number\n"
+#~ " -h --help Display this output\n"
+#~ msgstr ""
+#~ " -I --input-target <bfd-navn> Antag inddatafilens format er <bfd-navn>\n"
+#~ " -O --output-target <bfd-navn> Opret uddatafilen i formatet <bfd-navn>\n"
+#~ " -B --binary-architecture <ark> Vælg arkitektur for udfil når inddata er binær\n"
+#~ " -F --target <bfd-navn> Sætt både in- og udformatet til <bfd-navn>\n"
+#~ " --debugging Konvertere fejlsøgningsinfo, om muligt\n"
+#~ " -p --preserve-dates Kopiér ændrings/adgangtider til uddatan\n"
+#~ " -j --only-section <navn> Kopiér kun sektion <navn> til uddatan\n"
+#~ " -R --remove-section <navn> Fjern sektion <navn> fra uddatan\n"
+#~ " -S --strip-all Fjern all symbol- og relokeringsinfo\n"
+#~ " -g --strip-debug Fjern alle fejlsøgningssymboler\n"
+#~ " --strip-unneeded Fjern symboler onødiga for relokering\n"
+#~ " -N --strip-symbol <navn> Kopiér ikke symbol <navn>\n"
+#~ " -K --keep-symbol <navn> Kopiér kun symbol <navn>\n"
+#~ " -L --localize-symbol <navn> Markere symbol <navn> som lokal\n"
+#~ " -G --keep-global-symbol <navn> Gør alle symboler lokale, forutom <navn>\n"
+#~ " -W --weaken-symbol <navn> Markere symbol <navn> som vek\n"
+#~ " --weaken Markere alle globale symboler som veka\n"
+#~ " -x --discard-all Fjern alle ikke-globale symboler\n"
+#~ " -X --discard-locals Fjern alle oversættergenererede symboler\n"
+#~ " -i --interleave <antal> Kopiér kun en af hvert <antal> byte\n"
+#~ " -b --byte <nr> Vælg ud <nr>'e byten i hvert intervall\n"
+#~ " --gap-fill <tal> Fyll luckor mellem sektionerne med <tal>\n"
+#~ " --pad-to <adr> Fyll ud efter sidste sektionen frem til <adr>\n"
+#~ " --set-start <adr> Sætt startadressen til <adr>\n"
+#~ " {--change-start|--adjust-start} <økn>\n"
+#~ " Tilføj <økn> til startadressen\n"
+#~ " {--change-addresses|--adjust-vma} <økn>\n"
+#~ " Tilføj <økn> til LMA, VMA og startedr.\n"
+#~ " {--change-section-address|--adjust-section-vma} <navn>{=|+|-}<tal>\n"
+#~ " Ændra LMA og VMA på sektion <navn> med <tal>\n"
+#~ " --change-section-lma <navn>{=|+|-}<tal>\n"
+#~ " Ændra LMA på sektion <navn> med <tal>\n"
+#~ " --change-section-vma <navn>{=|+|-}<tal>\n"
+#~ " Ændra VMA på sektion <navn> med <tal>\n"
+#~ " {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+#~ " Advar (inte/[no-]) om en sektion ikke findes\n"
+#~ " --set-section-flags <navn>=<flag>\n"
+#~ " Sætt sektion <navn>s attribut til <flag>\n"
+#~ " --add-section <navn>=<fil> Tilføj sektion <navn> i <fil> til uddatan\n"
+#~ " --rename-section <gam>=<ny>[,<flag>] Skift navn på sektion <gam> til <ny>\n"
+#~ " --change-leading-char Ændra til udformatets type af inledningstegn\n"
+#~ " --remove-leading-char Fjern inledningstegn fra globale symboler\n"
+#~ " --redefine-sym <gam>=<ny> Definere om ssymbolet med navn <gam> til <ny>\n"
+#~ " --srec-len <nr> Begrænsa længden på genererede S-poster\n"
+#~ " --srec-forceS3 Begrænsa typen af genererede S-poster til S3\n"
+#~ " --strip-symbols <fil> -N for alle symboler som listes i <fil>\n"
+#~ " --keep-symbols <fil> -K for alle symboler som listes i <fil>\n"
+#~ " --localize-symbols <fil> -L for alle symboler som listes i <fil>\n"
+#~ " --keep-global-symbols <fil> -G for alle symboler som listes i <fil>\n"
+#~ " --weaken-symbols <fil> -W for alle symboler som listes i <fil>\n"
+#~ " --alt-machine-code <indeks> Brug alternativ maskinkode for uddata\n"
+#~ " -v --verbose Lista alle forændrede objektfiler\n"
+#~ " -V --version Vis programmets versionsinformation\n"
+#~ " -h --help Vis denne hjælp\n"
+
+#~ msgid "cannot stat: %s: %s"
+#~ msgstr "kan ikke tage status: %s: %s"
+
+#~ msgid "making"
+#~ msgstr "fremstilling"
+
+#~ msgid "size"
+#~ msgstr "størrelse"
+
+#~ msgid "vma"
+#~ msgstr "vma"
+
+#~ msgid "alignment"
+#~ msgstr "justering"
+
+#~ msgid "flags"
+#~ msgstr "flag"
+
+#~ msgid "private data"
+#~ msgstr "privat data"
+
+#~ msgid "%s: section `%s': error in %s: %s"
+#~ msgstr "%s: sektion \"%s\": fejl på %s: %s"
+
+#~ msgid "%s: cannot stat: %s"
+#~ msgstr "%s: kan ikke tage status: %s"
+
+#~ msgid "Cannot stat: %s: %s"
+#~ msgstr "Kan ikke tage status: %s: %s"
+
+#~ msgid "%s: No dynamic symbols"
+#~ msgstr "%s: Ingen dynamiske symboler"
+
+#~ msgid "Out of virtual memory"
+#~ msgstr "Slut på virtuel hukommelse"
+
+#~ msgid "Reading %s section of %s failed: %s\n"
+#~ msgstr "Læsning af %s-sektionen i %s mislykkedes: %s\n"
+
+#~ msgid "Skipping unexpected symbol type %u\n"
+#~ msgstr "Hopper over uventet symboltype %u\n"
+
+#~ msgid "dynamic segment"
+#~ msgstr "dynamisk segment"
+
+#~ msgid " Offset: %#08lx Link to section: %ld (%s)\n"
+#~ msgstr " Offset: %#08lx Lænke til sektion: %ld (%s)\n"
+
+#~ msgid "Out of memory"
+#~ msgstr "Slut på hukommelse"
+
+#~ msgid "64-bit DWARF line info is not supported yet.\n"
+#~ msgstr "64-bit DWARF-linjeinformation understøttes ikke endnu.\n"
+
+#~ msgid "64-bit DWARF pubnames are not supported yet.\n"
+#~ msgstr "64-bit DWARF-offentlige navne understøttes ikke endnu.\n"
+
+#~ msgid "debug_loc section data"
+#~ msgstr "debug_loc sektionsdata"
+
+#~ msgid ""
+#~ "\n"
+#~ "The .debug_loc section is empty.\n"
+#~ msgstr ""
+#~ "\n"
+#~ ".debug_loc-sektionen er tom.\n"
+
+#~ msgid "debug_str section data"
+#~ msgstr "debug_str sektionsdata"
+
+#~ msgid ""
+#~ "Contents of the .debug_str section:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Indhold i .debug_str-sektionen:\n"
+#~ "\n"
+
+#~ msgid "64-bit DWARF debug info is not supported yet.\n"
+#~ msgstr "64-bit DWARF-fejlsøgningsinfo understøttes ikke endnu.\n"
+
+#~ msgid "Only version 2 DWARF debug information is currently supported.\n"
+#~ msgstr "Kun version 2 af DWARF fejlsøgningsinformation understøttes i øjeblikket.\n"
+
+#~ msgid "debug_abbrev section data"
+#~ msgstr "debug_abbrev sektionsdata"
+
+#~ msgid "Unable to locate entry %lu in the abbreviation table\n"
+#~ msgstr "Kan ikke finde post %lu i forkortelsestabellen\n"
+
+#~ msgid "64-bit DWARF aranges are not supported yet.\n"
+#~ msgstr "64-bit DWARF-a-intervaller understøttes ikke endnu.\n"
+
+#~ msgid "64-bit DWARF format frames are not supported yet.\n"
+#~ msgstr "64-bit DWARF-formatskabeloner understøttes ikke endnu.\n"
+
+#~ msgid "debug section data"
+#~ msgstr "fejlsøgningssektionsdata"
+
+#~ msgid "Cannot stat input file %s.\n"
+#~ msgstr "Kan ikke tage status for inddatafil %s.\n"
+
+#~ msgid "%s: rename: %s"
+#~ msgstr "%s: kan ikke omdøbe: %s"
+
+#~ msgid "%s: simple_copy: %s"
+#~ msgstr "%s: kopieringsfejl: %s"
+
+#~ msgid "can't read resource section"
+#~ msgstr "kan ikke læse resursesektionen"
+
+#~ msgid "invalid number %s"
+#~ msgstr "ugyldigt tal %s"
diff --git a/binutils-2.24/binutils/po/es.gmo b/binutils-2.24/binutils/po/es.gmo
new file mode 100644
index 00000000..65268dfe
--- /dev/null
+++ b/binutils-2.24/binutils/po/es.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/es.po b/binutils-2.24/binutils/po/es.po
new file mode 100644
index 00000000..30cff399
--- /dev/null
+++ b/binutils-2.24/binutils/po/es.po
@@ -0,0 +1,9274 @@
+# Mensajes en español para binutils 2.22.90.
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.22.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2011-10-25 11:20+0100\n"
+"PO-Revision-Date: 2012-07-27 13:10-0500\n"
+"Last-Translator: Cristian Othón Martínez Vera <cfuga@cfuga.mx>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: addr2line.c:81
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Modo de empleo: %s [opcion(es)] [direccion(es)]\n"
+
+#: addr2line.c:82
+#, 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:83
+#, 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:84
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -a --addresses Show addresses\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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Make the output easier to read for humans\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\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"
+" -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 Desenreda las funciones inline\n"
+" -j --section=<nombre> Lee los desplazamientos relativos a sección en lugar\n"
+" de las direcciones\n"
+" -p --pretty-print Hace la salida más fácil de leer para humanos\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"
+" -h --help Muestra esta información\n"
+" -v --version Muestra la versión del programa\n"
+"\n"
+
+#: addr2line.c:101 ar.c:304 ar.c:333 coffdump.c:471 dlltool.c:3938
+#: dllwrap.c:524 elfedit.c:653 nlmconv.c:1114 objcopy.c:576 objcopy.c:611
+#: readelf.c:3214 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
+#: windmc.c:228 windres.c:695
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "Reportar bichos a %s\n"
+
+#. Note for translators: This printf is used to join the
+#. function name just printed above to the line number/
+#. file name pair that is about to be printed below. Eg:
+#.
+#. foo at 123:bar.c
+#: addr2line.c:276
+#, c-format
+msgid " at "
+msgstr " en "
+
+#. Note for translators: This printf is used to join the
+#. line number/file name pair that has just been printed with
+#. the line number/file name pair that is going to be printed
+#. by the next iteration of the while loop. Eg:
+#.
+#. 123:bar.c (inlined by) 456:main.c
+#: addr2line.c:308
+#, c-format
+msgid " (inlined by) "
+msgstr " (inlined por) "
+
+#: addr2line.c:341
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: no se pueden obtener las direcciones del archivo"
+
+#: addr2line.c:358
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr "%s: no se puede encontrar la sección %s"
+
+#: addr2line.c:427 nm.c:1570 objdump.c:3423
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "estilo de desenredo `%s' desconocido"
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "no existe la entrada %s en el archivo\n"
+
+#: ar.c:254
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...\n"
+msgstr "Modo de empleo: %s [opciones emulación] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <nombre>] [nombre-miembro] [cuenta] fichero-archivo fichero...\n"
+
+#: ar.c:260
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] [count] archive-file file...\n"
+msgstr "Modo de empleo: %s [opciones emulación] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [nombre-miembro] [cuenta] fichero-archivo fichero...\n"
+
+#: ar.c:266
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<guión-mri>]\n"
+
+#: ar.c:267
+#, c-format
+msgid " commands:\n"
+msgstr " órdenes:\n"
+
+#: ar.c:268
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - borra fichero(s) del archivo\n"
+
+#: ar.c:269
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - mueve fichero(s) en el archivo\n"
+
+#: ar.c:270
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - muestra fichero(s) encontrados en el archivo\n"
+
+#: ar.c:271
+#, 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:272
+#, 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:273
+#, c-format
+msgid " s - act as ranlib\n"
+msgstr " s - actúa como ranlib\n"
+
+#: ar.c:274
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - muestra los contenidos del archivo\n"
+
+#: ar.c:275
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - extrae fichero(s) del archivo\n"
+
+#: ar.c:276
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " modificadores específicos de la orden:\n"
+
+#: ar.c:277
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - coloca fichero(s) despúes de [nombre-miembro]\n"
+
+#: ar.c:278
+#, 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:279
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr " [D] - utiliza cero para marcas de tiempo y uids/gids\n"
+
+#: ar.c:280
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - usa la instancia [cuenta] del nombre\n"
+
+#: ar.c:281
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - trunca los nombres de fichero insertados\n"
+
+#: ar.c:282
+#, 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:283
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - conserva las fechas originales\n"
+
+#: ar.c:284
+#, 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:285
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " modificadores genéricos:\n"
+
+#: ar.c:286
+#, 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:287
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - crea un índice del archivo (cf. ranlib)\n"
+
+#: ar.c:288
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - no construye una tabla de símbolos\n"
+
+#: ar.c:289
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr " [T] - hace un archivo delgado\n"
+
+#: ar.c:290
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - detallado\n"
+
+#: ar.c:291
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - muestra el número de versión\n"
+
+#: ar.c:292
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr " @<fichero> - lee opciones del <fichero>\n"
+
+#: ar.c:293
+#, c-format
+msgid " --target=BFDNAME - specify the target object format as BFDNAME\n"
+msgstr " --target=NOMBFD - especifica el formato objeto objetivo como NOMBFD\n"
+
+#: ar.c:295
+#, c-format
+msgid " optional:\n"
+msgstr " opcional:\n"
+
+#: ar.c:296
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr " --plugin <p> - carga el plugin especificado\n"
+
+#: ar.c:317
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Modo de empleo: %s [opciones] archivo\n"
+
+#: ar.c:318
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " Genera un índice para acelerar el acceso a los archivos\n"
+
+#: ar.c:319
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+" Las opciones son:\n"
+" @<fichero> Lee opciones del <fichero>\n"
+
+#: ar.c:322
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr " --plugin <nombre> Carga el plugin especificado\n"
+
+#: ar.c:325
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+" -t Actualiza la marca de tiempo del mapa de\n"
+" símbolos del archivo\n"
+" -h --help Muestra este mensaje de ayuda\n"
+" -V --version Muestra la información de versión\n"
+
+#: ar.c:449
+msgid "two different operation options specified"
+msgstr "se especificaron dos opciones de operación diferentes"
+
+#: ar.c:538 nm.c:1643
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr "perdón - este programa se construyó sin soporte para plugins\n"
+
+#: ar.c:693
+msgid "no operation specified"
+msgstr "no se especificó una operación"
+
+#: ar.c:696
+msgid "`u' is only meaningful with the `r' option."
+msgstr "`u' sólo tiene sentido con la opción `r'."
+
+#: ar.c:699
+msgid "`u' is not meaningful with the `D' option."
+msgstr "`u' no tiene sentido con la opción `D'."
+
+#: ar.c:707
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "`N' sólo tiene sentido con las opciones `x' y `d'."
+
+#: ar.c:710
+msgid "Value for `N' must be positive."
+msgstr "El valor para `N' debe ser positivo."
+
+#: ar.c:724
+msgid "`x' cannot be used on thin archives."
+msgstr "no se puede usar `x' en archivos delgados."
+
+#: ar.c:771
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "error interno -- esta opción no está implementada"
+
+#: ar.c:840
+#, c-format
+msgid "creating %s"
+msgstr "creando %s"
+
+#: ar.c:889 ar.c:943 ar.c:1272 objcopy.c:2080
+#, c-format
+msgid "internal stat error on %s"
+msgstr "error interno de stat en %s"
+
+#: ar.c:908 ar.c:976
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s no es un archivo válido"
+
+#: ar.c:1034
+msgid "could not create temporary file whilst writing archive"
+msgstr "no se puede crear el fichero temporal mientras se escribe el archivo"
+
+#: ar.c:1177
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "No hay un miembro llamado `%s'\n"
+
+#: ar.c:1227
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "¡No hay una entrada %s en el archivo %s!"
+
+#: ar.c:1366
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: no hay un mapa de archivo para actualizar"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "No hay una entrada %s en el archivo.\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "No se puede abrir el fichero %s\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: No se puede abrir el fichero de salida %s\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: No se puede abrir el fichero de entrada %s\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: el fichero %s no es un archivo\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: no se ha especificado aún un archivo de salida\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: no hay un archivo de salida abierto\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: no se puede abrir el fichero %s\n"
+
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: no se puede encontrar el fichero de módulo %s\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "El archivo actualmente abierto es %s\n"
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: no hay un archivo abierto\n"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " No hay opciones específicas de la emulación\n"
+
+#. Macros for common output.
+#: binemul.h:49
+#, c-format
+msgid " emulation options: \n"
+msgstr " opciones de emulación: \n"
+
+#: bucomm.c:163
+#, 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:175
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: Formatos coincidentes:"
+
+#: bucomm.c:190
+#, c-format
+msgid "Supported targets:"
+msgstr "Objetivos admitidos:"
+
+#: bucomm.c:192
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: objetivos admitidos:"
+
+#: bucomm.c:210
+#, c-format
+msgid "Supported architectures:"
+msgstr "Arquitecturas admitidas:"
+
+#: bucomm.c:212
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: arquitecturas admitidas:"
+
+#: bucomm.c:228
+msgid "big endian"
+msgstr "big endian"
+
+#: bucomm.c:229
+msgid "little endian"
+msgstr "little endian"
+
+#: bucomm.c:230
+msgid "endianness unknown"
+msgstr "endianez desconocida"
+
+#: bucomm.c:251
+#, c-format
+msgid ""
+"%s\n"
+" (header %s, data %s)\n"
+msgstr ""
+"%s\n"
+" (encabe %s, datos %s)\n"
+
+#: bucomm.c:407
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "encabezado del fichero BFD versión %s\n"
+
+#: bucomm.c:559
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: número erróneo: %s"
+
+#: bucomm.c:576 strings.c:409
+#, c-format
+msgid "'%s': No such file"
+msgstr "'%s': No hay tal fichero"
+
+#: bucomm.c:578 strings.c:411
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "Aviso: no se puede localizar '%s'. razón: %s"
+
+#: bucomm.c:582
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "Aviso: '%s' no es un fichero ordinario"
+
+#: bucomm.c:584
+#, c-format
+msgid "Warning: '%s' has negative size, probably it is too large"
+msgstr "Aviso: '%s' tiene tamaño negativo, probablemente es demasiado grande"
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr "#líneas %d "
+
+#: coffdump.c:130
+#, c-format
+msgid "size %d "
+msgstr "tamaño %d"
+
+#: coffdump.c:135
+#, c-format
+msgid "section definition at %x size %x\n"
+msgstr "definición de sección en %x tamaño %x\n"
+
+#: coffdump.c:141
+#, c-format
+msgid "pointer to"
+msgstr "puntero a"
+
+#: coffdump.c:146
+#, c-format
+msgid "array [%d] of"
+msgstr "matriz [%d] de"
+
+#: coffdump.c:151
+#, c-format
+msgid "function returning"
+msgstr "función que devuelve"
+
+#: coffdump.c:155
+#, c-format
+msgid "arguments"
+msgstr "argumentos"
+
+#: coffdump.c:159
+#, c-format
+msgid "code"
+msgstr "código"
+
+#: coffdump.c:165
+#, c-format
+msgid "structure definition"
+msgstr "definición de estructura"
+
+#: coffdump.c:171
+#, c-format
+msgid "structure ref to UNKNOWN struct"
+msgstr "referencia de estructura a struct UNKNOWN"
+
+#: coffdump.c:173
+#, c-format
+msgid "structure ref to %s"
+msgstr "referencia de estructura a %s"
+
+#: coffdump.c:176
+#, c-format
+msgid "enum ref to %s"
+msgstr "referencia enumerada a %s"
+
+#: coffdump.c:179
+#, c-format
+msgid "enum definition"
+msgstr "definición de enumerado"
+
+#: coffdump.c:252
+#, c-format
+msgid "Stack offset %x"
+msgstr "Desplazamiento de pila: %x"
+
+#: coffdump.c:255
+#, c-format
+msgid "Memory section %s+%x"
+msgstr "Sección de memoria %s+%x"
+
+#: coffdump.c:258
+#, c-format
+msgid "Register %d"
+msgstr "Registro %d"
+
+#: coffdump.c:261
+#, c-format
+msgid "Struct Member offset %x"
+msgstr "Desplazamiento de miembro de estructura %x"
+
+#: coffdump.c:264
+#, c-format
+msgid "Enum Member offset %x"
+msgstr "Desplazamiento de miembro de enumerado %x"
+
+#: coffdump.c:267
+#, c-format
+msgid "Undefined symbol"
+msgstr "Símbolo sin definir"
+
+#: coffdump.c:334
+#, c-format
+msgid "List of symbols"
+msgstr "Lista de símbolos"
+
+#: coffdump.c:341
+#, c-format
+msgid "Symbol %s, tag %d, number %d"
+msgstr "Símbolo %s, etiq %d, número %d"
+
+#: coffdump.c:345 readelf.c:12215 readelf.c:12289
+#, c-format
+msgid "Type"
+msgstr "Tipo"
+
+#: coffdump.c:350
+#, c-format
+msgid "Where"
+msgstr "Donde"
+
+#: coffdump.c:354
+#, c-format
+msgid "Visible"
+msgstr "Visible"
+
+#: coffdump.c:370
+msgid "List of blocks "
+msgstr "Lista de bloques "
+
+#: coffdump.c:383
+#, c-format
+msgid "vars %d"
+msgstr "vars %d"
+
+#: coffdump.c:386
+#, c-format
+msgid "blocks"
+msgstr "bloques"
+
+#: coffdump.c:404
+#, c-format
+msgid "List of source files"
+msgstr "Lista de ficheros fuente"
+
+#: coffdump.c:410
+#, c-format
+msgid "Source file %s"
+msgstr "Fichero fuente %s"
+
+#: coffdump.c:424
+#, c-format
+msgid "section %s %d %d address %x size %x number %d nrelocs %d"
+msgstr "sección %s %d %d direcc %x tam %x número %d nreubics %d"
+
+#: coffdump.c:449
+#, c-format
+msgid "#sources %d"
+msgstr "#fuentes %d"
+
+#: coffdump.c:462 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Modo de empleo: %s [opcion(es)] fichero-entrada\n"
+
+#: coffdump.c:463
+#, c-format
+msgid " Print a human readable interpretation of a COFF object file\n"
+msgstr " Muestra una interpretación legible por humanos de un fichero objeto COFF\n"
+
+#: coffdump.c:464
+#, 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:533 srconv.c:1833 sysdump.c:710
+msgid "no input file specified"
+msgstr "no se especificó un fichero de entrada"
+
+#: cxxfilt.c:119 nm.c:269 objdump.c:281
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Reportar bichos a %s.\n"
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: no hay un fichero actual"
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: no hay una llamada debug_set_filename"
+
+#: debug.c:781
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: no hay una llamada debug_set_filename"
+
+#: debug.c:833
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: no hay una función actual"
+
+#: debug.c:865
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: no hay una función actual"
+
+#: debug.c:871
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: algunos bloques no estaban cerrados"
+
+#: debug.c:899
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: no hay un bloque actual"
+
+#: debug.c:935
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: no hay un bloque actual"
+
+#: debug.c:942
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: se intenta cerrar el bloque del nivel principal"
+
+#: debug.c:965
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: no hay una unidad actual"
+
+#. FIXME
+#: debug.c:1018
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: sin implementar"
+
+#. FIXME
+#: debug.c:1029
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: sin implementar"
+
+#. FIXME.
+#: debug.c:1113
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: sin implementar"
+
+#: debug.c:1135
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: no hay un fichero actual"
+
+#: debug.c:1663
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: no se admite el género"
+
+#: debug.c:1840
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: no hay fichero actual"
+
+#: debug.c:1885
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: no hay fichero actual"
+
+#: debug.c:1893
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: se intentó una marca extra"
+
+#: debug.c:1930
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Aviso: cambiando el tamaño del tipo de %d a %d\n"
+
+#: debug.c:1952
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: no hay una unidad de compilación actual"
+
+#: debug.c:2055
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: información de depuración circular para %s\n"
+
+#: debug.c:2482
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: se encontró un tipo ilegal"
+
+#: dlltool.c:902 dlltool.c:928 dlltool.c:959
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "Error interno: Tipo de máquina desconocido: %d"
+
+#: dlltool.c:1000
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "No se puede abrir el fichero def: %s"
+
+#: dlltool.c:1005
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Se procesa el fichero def: %s"
+
+#: dlltool.c:1009
+msgid "Processed def file"
+msgstr "Fichero def procesado"
+
+#: dlltool.c:1033
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Error sintáctico en el fichero def %s:%d"
+
+#: dlltool.c:1070
+#, 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:1088
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "NOMBRE: %s base: %x"
+
+#: dlltool.c:1091 dlltool.c:1112
+msgid "Can't have LIBRARY and NAME"
+msgstr "No se puede tener BIBLIOTECA y NOMBRE"
+
+#: dlltool.c:1109
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "BIBLIOTECA: %s base: %x"
+
+#: dlltool.c:1266
+#, c-format
+msgid "VERSION %d.%d\n"
+msgstr "VERSIÓN %d.%d\n"
+
+#: dlltool.c:1314
+#, c-format
+msgid "run: %s %s"
+msgstr "run: %s: %s"
+
+#: dlltool.c:1354 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "wait: %s"
+
+#: dlltool.c:1359 dllwrap.c:422 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "el subproceso recibió la señal fatal %d"
+
+#: dlltool.c:1365 dllwrap.c:429 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s terminó con estado %d"
+
+#: dlltool.c:1396
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "Se succiona la información de la sección %s en %s"
+
+#: dlltool.c:1536
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Se excluye el símbolo: %s"
+
+#: dlltool.c:1625 dlltool.c:1636 nm.c:1012 nm.c:1023
+#, 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:1662
+#, c-format
+msgid "Done reading %s"
+msgstr "%s leído"
+
+#: dlltool.c:1672
+#, c-format
+msgid "Unable to open object file: %s: %s"
+msgstr "No se puede abrir el fichero objeto: %s: %s"
+
+#: dlltool.c:1675
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Se revisa el fichero objeto %s"
+
+#: dlltool.c:1690
+#, 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:1792
+msgid "Adding exports to output file"
+msgstr "Se agregan exportaciones al fichero de salida"
+
+#: dlltool.c:1844
+msgid "Added exports to output file"
+msgstr "Exportaciones agregadas al fichero de salida"
+
+#: dlltool.c:1986
+#, c-format
+msgid "Generating export file: %s"
+msgstr "Se genera el fichero de exportación: %s"
+
+#: dlltool.c:1991
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "No se puede abrir el fichero temporal de ensamblador: %s"
+
+#: dlltool.c:1994
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "Se abrió el fichero temporal: %s"
+
+#: dlltool.c:2171
+msgid "failed to read the number of entries from base file"
+msgstr "Falló la lectura del número de entradas del fichero base"
+
+#: dlltool.c:2219
+msgid "Generated exports file"
+msgstr "Fichero de exportación generado"
+
+#: dlltool.c:2428
+#, c-format
+msgid "bfd_open failed open stub file: %s: %s"
+msgstr "falló bfd_open al abrir el fichero de cabos: %s: %s"
+
+#: dlltool.c:2432
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "Se crea el fichero de cabos: %s"
+
+#: dlltool.c:2894
+#, c-format
+msgid "bfd_open failed reopen stub file: %s: %s"
+msgstr "falló bfd_open al reabrir el fichero de cabos: %s: %s"
+
+#: dlltool.c:2908 dlltool.c:2984
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "falló al abrir el fichero de encabezado temporal: %s"
+
+#: dlltool.c:2970 dlltool.c:3050
+#, c-format
+msgid "failed to open temporary head file: %s: %s"
+msgstr "falló al abrir el fichero de encabezado temporal: %s: %s"
+
+#: dlltool.c:3064
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "falló al abrir el fichero de cola temporal: %s"
+
+#: dlltool.c:3121
+#, c-format
+msgid "failed to open temporary tail file: %s: %s"
+msgstr "falló al abrir el fichero de cola temporal: %s: %s"
+
+#: dlltool.c:3143
+#, c-format
+msgid "Can't create .lib file: %s: %s"
+msgstr "No se puede crear el fichero .lib: %s: %s"
+
+#: dlltool.c:3147
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Se crea el fichero de biblioteca: %s"
+
+#: dlltool.c:3239 dlltool.c:3245
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "no se puede borrar %s: %s"
+
+#: dlltool.c:3250
+msgid "Created lib file"
+msgstr "Se creó el fichero de biblioteca"
+
+#: dlltool.c:3462
+#, c-format
+msgid "Can't open .lib file: %s: %s"
+msgstr "No se puede abrir el fichero .lib: %s: %s"
+
+#: dlltool.c:3470 dlltool.c:3492
+#, c-format
+msgid "%s is not a library"
+msgstr "%s no es una biblioteca"
+
+#: dlltool.c:3510
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr "La biblioteca de importación `%s' especifica dos o más dlls"
+
+#: dlltool.c:3521
+#, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr "No se puede determinar el nombre dll para `%s' (¿No es una biblioteca de importación?)"
+
+#: dlltool.c:3745
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Aviso, se descartan las EXPORTaciones duplicadas %s %d,%d"
+
+#: dlltool.c:3751
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr "Error, EXPORT duplicado con ordinales: %s"
+
+#: dlltool.c:3856
+msgid "Processing definitions"
+msgstr "Se procesan definiciones"
+
+#: dlltool.c:3888
+msgid "Processed definitions"
+msgstr "Definiciones procesadas"
+
+#. xgetext:c-format
+#: dlltool.c:3895 dllwrap.c:483
+#, 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:3897
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <máquina> Crea una DLL para la <máquina>. [por defecto: %s]\n"
+
+#: dlltool.c:3898
+#, c-format
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr " <máquina> posibles: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+
+#: dlltool.c:3899
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <nomsal> Genera un fichero de exportación.\n"
+
+#: dlltool.c:3900
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <nomsal> Genera una biblioteca de interfaz.\n"
+
+#: dlltool.c:3901
+#, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr " -y --output-delaylib <nomsal> Genera una biblioteca de retraso de importación.\n"
+
+#: dlltool.c:3902
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect Agrega indirecciones dll al fichero de exportación.\n"
+
+#: dlltool.c:3903
+#, 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:3904
+#, 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:3905
+#, 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:3906
+#, 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"
+
+#: dlltool.c:3907
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols Sólo exporta los símbolos enlistados\n"
+
+#: dlltool.c:3908
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <list> No exporta la <list>a\n"
+
+#: dlltool.c:3909
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes Limpia los símbolos excluídos por defecto\n"
+
+#: dlltool.c:3910
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <fichbase> Lee el fichero base generado por el enlazador.\n"
+
+#: dlltool.c:3911
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 No genera la sección idata$4.\n"
+
+#: dlltool.c:3912
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 No genera la sección idata$5.\n"
+
+#: dlltool.c:3913
+#, c-format
+msgid " --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"
+msgstr " --use-nul-prefixed-import-tables Usa idata$4 e idata$5 con prefijo cero.\n"
+
+#: dlltool.c:3914
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr " -U --add-underscore Agrega subrayado a todos los símbolos en la biblioteca de interfaz.\n"
+
+#: dlltool.c:3915
+#, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr " --add-stdcall-underscore Agrega subrayado a los símbolos stdcall en la biblioteca de interfaz.\n"
+
+#: dlltool.c:3916
+#, c-format
+msgid " --no-leading-underscore All symbols shouldn't be prefixed by an underscore.\n"
+msgstr " --no-leading-underscore Ningún símbolo debe tener prefijo de subrayado.\n"
+
+#: dlltool.c:3917
+#, c-format
+msgid " --leading-underscore All symbols should be prefixed by an underscore.\n"
+msgstr " --leading-underscore Todos los símbolos deben tener prefijo de subrayado.\n"
+
+#: dlltool.c:3918
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at Elimina @<n> de los nombres exportados.\n"
+
+#: dlltool.c:3919
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Agrega aliases sin @<n>.\n"
+
+#: dlltool.c:3920
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -p --ext-prefix-alias <prefijo> Agrega aliases con <prefijo>.\n"
+
+#: dlltool.c:3921
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <nombre> Usa el <nombre> para ensamblador.\n"
+
+#: dlltool.c:3922
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <opciones> Pasa <opciones> al ensamblador.\n"
+
+#: dlltool.c:3923
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib Crea biblioteca de importación compatible hacia atrás.\n"
+
+#: dlltool.c:3924
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete Conserva los ficheros temporales (repetir para conservación extra).\n"
+
+#: dlltool.c:3925
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr " -t --temp-prefix <prefijo> Usa el <prefijo> para construir nombres de ficheros temporales.\n"
+
+#: dlltool.c:3926
+#, c-format
+msgid " -I --identify <implib> Report the name of the DLL associated with <implib>.\n"
+msgstr " -I --identify <libimp> Reporta el nombre de la DLL asociada con <libimp>.\n"
+
+#: dlltool.c:3927
+#, c-format
+msgid " --identify-strict Causes --identify to report error when multiple DLLs.\n"
+msgstr " --identify-strict Causa que --identify reporte error con DLLs múltiples.\n"
+
+#: dlltool.c:3928
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose Detallado.\n"
+
+#: dlltool.c:3929
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version Muestra la versión del programa.\n"
+
+#: dlltool.c:3930
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help Muestra esta información.\n"
+
+#: dlltool.c:3931
+#, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr " @<fichero> Lee opciones del <fichero>.\n"
+
+#: dlltool.c:3933
+#, 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:3934
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <nombre> Usa <nombre> como el enlazador.\n"
+
+#: dlltool.c:3935
+#, 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:4082
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr "Se eliminaron los componentes de la ruta del nombre de dll, '%s'."
+
+#: dlltool.c:4130
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "No se puede abrir el fichero-base: %s"
+
+#: dlltool.c:4165
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "No se admite la máquina '%s'"
+
+#: dlltool.c:4245
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr "Aviso, el tipo de máquina (%d) no se admite para delayimport."
+
+#: dlltool.c:4313 dllwrap.c:213
+#, c-format
+msgid "Tried file: %s"
+msgstr "Fichero intentado: %s"
+
+#: dlltool.c:4320 dllwrap.c:220
+#, c-format
+msgid "Using file: %s"
+msgstr "Se usa el fichero: %s"
+
+#: dllwrap.c:303
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "Se conserva el fichero base temporal %s"
+
+#: dllwrap.c:305
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "Se borra el fichero base temporal %s"
+
+#: dllwrap.c:319
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "Se conserva el fichero exp temporal %s"
+
+#: dllwrap.c:321
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "Se borra el fichero exp temporal %s"
+
+#: dllwrap.c:334
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Se conserva el fichero def temporal %s"
+
+#: dllwrap.c:336
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "Se borra el fichero def temporal %s"
+
+#: dllwrap.c:417
+#, c-format
+msgid "pwait returns: %s"
+msgstr "pwait devuelve: %s"
+
+#: dllwrap.c:484
+#, c-format
+msgid " Generic options:\n"
+msgstr " Opciones genéricas:\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr " @<fichero> Lee opciones del <fichero>\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q Trabaja silenciosamente\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Con detalle\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version Muestra la versión de dllwrap\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --impllib <nombresal> Sinónimo para --output-lib\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Opciones para %s:\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <cntrl> Por defecto es \"gcc\"\n"
+
+#: dllwrap.c:492
+#, 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:493
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dlltool> Por defecto es \"dlltool\"\n"
+
+#: dllwrap.c:494
+#, 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:495
+#, 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:496
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <máquina> i386-cygwin32 ó i386-mingw32\n"
+
+#: dllwrap.c:497
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run Muestra lo que se necesita ejecutar\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Crea una DLL Mingw\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " Opciones pasadas a DLLTOOL:\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <máquina>\n"
+
+#: dllwrap.c:501
+#, 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:502
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <nomsal> Genera una biblioteca de entrada.\n"
+
+#: dllwrap.c:503
+#, 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:504
+#, 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:505
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <ficherodef> Nombre del fichero .def de entrada\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <fichdef> Nombre del fichero .def de salida\n"
+
+#: dllwrap.c:507
+#, 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:508
+#, 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:509
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <list> Excluye la <list>a del .def\n"
+
+#: dllwrap.c:510
+#, 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:511
+#, 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:512
+#, 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:513
+#, 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:514
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U Agrega subrayados a .lib\n"
+
+#: dllwrap.c:515
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k Elimina @<n> de los nombres exportados\n"
+
+#: dllwrap.c:516
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias Agrega aliases sin @<n>\n"
+
+#: dllwrap.c:517
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <nombre> Usa <nombre> como ensamblador\n"
+
+#: dllwrap.c:518
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete Conserva los ficheros temporales.\n"
+
+#: dllwrap.c:519
+#, c-format
+msgid " --no-leading-underscore Entrypoint without underscore\n"
+msgstr " --no-leading-underscore Punto de entrada sin subrayado\n"
+
+#: dllwrap.c:520
+#, c-format
+msgid " --leading-underscore Entrypoint with underscore.\n"
+msgstr " --leading-underscore Punto de entrada con subrayado.\n"
+
+#: dllwrap.c:521
+#, 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:805
+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:834
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"no se provee un fichero de definición de exportación.\n"
+"Se crea uno, pero tal vez eso no es lo que quiere"
+
+#: dllwrap.c:1023
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "nombre DLLTOOL : %s\n"
+
+#: dllwrap.c:1024
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "opciones DLLTOOL: %s\n"
+
+#: dllwrap.c:1025
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "nombre DRIVER : %s\n"
+
+#: dllwrap.c:1026
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "opciones DRIVER : %s\n"
+
+#: dwarf.c:132
+msgid "Wrong size in print_dwarf_vma"
+msgstr "Tamaño erróneo en print_dwarf_vma"
+
+#: dwarf.c:256 dwarf.c:3027
+msgid "badly formed extended line op encountered!\n"
+msgstr "¡se encontró un operador extendido de línea mal formado!\n"
+
+#: dwarf.c:263
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " Código de operación extendido %d: "
+
+#: dwarf.c:268
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Fin de la Secuencia\n"
+"\n"
+
+#: dwarf.c:274
+#, c-format
+msgid "set Address to 0x%s\n"
+msgstr "establece la Dirección a 0x%s\n"
+
+#: dwarf.c:280
+#, c-format
+msgid " define new File Table entry\n"
+msgstr " define la nueva entrada en la Tabla de Ficheros\n"
+
+#: dwarf.c:281 dwarf.c:2555
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Entr\tDir\tHora\tTam\tNombre\n"
+
+#: dwarf.c:295
+#, c-format
+msgid "set Discriminator to %s\n"
+msgstr "establece el Discriminador a %s\n"
+
+#: dwarf.c:370
+#, c-format
+msgid " UNKNOWN DW_LNE_HP_SFC opcode (%u)\n"
+msgstr " Código de operación DW_LNE_HP_SFC DESCONOCIDO (%u)\n"
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:387
+#, c-format
+msgid "user defined: "
+msgstr "definido por el usuario: "
+
+#: dwarf.c:389
+#, c-format
+msgid "UNKNOWN: "
+msgstr "DESCONOCIDO: "
+
+#: dwarf.c:390
+#, c-format
+msgid "length %d ["
+msgstr "longitud %d ["
+
+#: dwarf.c:407
+msgid "<no .debug_str section>"
+msgstr "<no hay sección .debug_str>"
+
+#: dwarf.c:413
+#, c-format
+msgid "DW_FORM_strp offset too big: %s\n"
+msgstr "el desplazamiento DW_FORM_strp es demasiado grande: %s\n"
+
+#: dwarf.c:415
+msgid "<offset is too big>"
+msgstr "<el desplazamiento es demasiado grande>"
+
+#: dwarf.c:655
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Valor TAG desconocido: %lx"
+
+#: dwarf.c:696
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Valor FORM desconocido: %lx"
+
+#: dwarf.c:705
+#, c-format
+msgid " %s byte block: "
+msgstr " bloque de byte %s: "
+
+#: dwarf.c:1050
+#, c-format
+msgid "(DW_OP_call_ref in frame info)"
+msgstr "(DW_OP_call_ref en la información de marco)"
+
+#: dwarf.c:1075
+#, c-format
+msgid "size: %s "
+msgstr "tamaño: %s"
+
+#: dwarf.c:1078
+#, c-format
+msgid "offset: %s "
+msgstr "despl: %s"
+
+#: dwarf.c:1098
+#, c-format
+msgid "DW_OP_GNU_push_tls_address or DW_OP_HP_unknown"
+msgstr "DW_OP_GNU_push_tls_address o DW_OP_HP_unknown"
+
+#: dwarf.c:1122
+#, c-format
+msgid "(DW_OP_GNU_implicit_pointer in frame info)"
+msgstr "(DW_OP_GNU_implicit_pointer en la información de marco)"
+
+#: dwarf.c:1234
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Operador de ubicación definido por el usuario)"
+
+#: dwarf.c:1236
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Operador de ubicación desconocido)"
+
+#: dwarf.c:1283
+msgid "Internal error: DWARF version is not 2, 3 or 4.\n"
+msgstr "Error interno: la versión DWARF no es 2, 3 o 4.\n"
+
+#: dwarf.c:1389
+msgid "DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"
+msgstr "DW_FORM_data8 no se admite cuando sizeof (dwarf_vma) != 8\n"
+
+#: dwarf.c:1439
+#, c-format
+msgid " (indirect string, offset: 0x%s): %s"
+msgstr " (cadena indirecta, desplazamiento 0x%s): %s"
+
+#: dwarf.c:1464
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "No se reconoce form: %lu\n"
+
+#: dwarf.c:1557
+#, c-format
+msgid "(not inlined)"
+msgstr "(no es inlined)"
+
+#: dwarf.c:1560
+#, c-format
+msgid "(inlined)"
+msgstr "(inlined)"
+
+#: dwarf.c:1563
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(se declaró como inline pero se descarta)"
+
+#: dwarf.c:1566
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(se declaró como inline y es inline)"
+
+#: dwarf.c:1569
+#, c-format
+msgid " (Unknown inline attribute value: %s)"
+msgstr " (Valor desconocido de atributo inline: %s)"
+
+#: dwarf.c:1608
+#, c-format
+msgid "(implementation defined: %s)"
+msgstr "(se definió en la implementación: %s)"
+
+#: dwarf.c:1611
+#, c-format
+msgid "(Unknown: %s)"
+msgstr "(Desconocido: %s)"
+
+#: dwarf.c:1649
+#, c-format
+msgid "(user defined type)"
+msgstr "(tipo definido por el usuario)"
+
+#: dwarf.c:1651
+#, c-format
+msgid "(unknown type)"
+msgstr "(tipo desconocido)"
+
+#: dwarf.c:1663
+#, c-format
+msgid "(unknown accessibility)"
+msgstr "(accesibilidad desconocida)"
+
+#: dwarf.c:1674
+#, c-format
+msgid "(unknown visibility)"
+msgstr "(visibilidad desconocida)"
+
+#: dwarf.c:1684
+#, c-format
+msgid "(unknown virtuality)"
+msgstr "(virtualidad desconocida)"
+
+#: dwarf.c:1695
+#, c-format
+msgid "(unknown case)"
+msgstr "(caso desconocido)"
+
+#: dwarf.c:1708
+#, c-format
+msgid "(user defined)"
+msgstr "(definido por el usuario)"
+
+#: dwarf.c:1710
+#, c-format
+msgid "(unknown convention)"
+msgstr "(convención desconocida)"
+
+#: dwarf.c:1717
+#, c-format
+msgid "(undefined)"
+msgstr "(sin definir)"
+
+#: dwarf.c:1740
+#, c-format
+msgid "(location list)"
+msgstr "(lista de ubicación)"
+
+#: dwarf.c:1761 dwarf.c:4045
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [sin DW_AT_frame_base]"
+
+#: dwarf.c:1777
+#, c-format
+msgid "Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr "El desplazamiento %s usado como valor para el atributo DW_AT_import de DIE en el desplazamiento %lx es demasiado grande.\n"
+
+#: dwarf.c:1787
+#, c-format
+msgid "[Abbrev Number: %ld"
+msgstr "[Número de Abrev: %ld"
+
+#: dwarf.c:1978
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Valor AT desconocido: %lx"
+
+#: dwarf.c:2049
+#, c-format
+msgid "Reserved length value (0x%s) found in section %s\n"
+msgstr "Se encontró un valor de longitud reservado (0x%s) en la sección %s\n"
+
+#: dwarf.c:2061
+#, c-format
+msgid "Corrupt unit length (0x%s) found in section %s\n"
+msgstr "Se encontró una longitud de unidad corrupta (0x%s) en la sección %s\n"
+
+#: dwarf.c:2069
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "¿ No hay unidades de compilación en la sección %s ?"
+
+#: dwarf.c:2078
+#, 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:2087 dwarf.c:3296 dwarf.c:3390 dwarf.c:3551 dwarf.c:3779
+#: dwarf.c:3911 dwarf.c:4081 dwarf.c:4150 dwarf.c:4354
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Contenido de la sección %s:\n"
+"\n"
+
+#: dwarf.c:2095
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "¡No se puede localizar la sección %s!\n"
+
+#: dwarf.c:2176
+#, c-format
+msgid " Compilation Unit @ offset 0x%s:\n"
+msgstr " Unidad de Compilación @ desplazamiento 0x%s:\n"
+
+#: dwarf.c:2178
+#, c-format
+msgid " Length: 0x%s (%s)\n"
+msgstr " Longitud: 0x%s (%s)\n"
+
+#: dwarf.c:2181
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versión: %d\n"
+
+#: dwarf.c:2182
+#, c-format
+msgid " Abbrev Offset: %s\n"
+msgstr " Desplaz Abrev: %s\n"
+
+#: dwarf.c:2184
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Tamaño de Puntero: %d\n"
+
+#: dwarf.c:2188
+#, c-format
+msgid " Signature: "
+msgstr " Firma: "
+
+#: dwarf.c:2192
+#, c-format
+msgid " Type Offset: 0x%s\n"
+msgstr " Tipo Desplaz: 0x%s\n"
+
+#: dwarf.c:2200
+#, c-format
+msgid "Debug info is corrupted, length of CU at %s extends beyond end of section (length = %s)\n"
+msgstr "La información de depuración está corrupta, la longitud de CU en %s se extiende más allá del final de la sección (longitud = %s)\n"
+
+#: dwarf.c:2213
+#, c-format
+msgid "CU at offset %s contains corrupt or unsupported version number: %d.\n"
+msgstr " CU en el desplazamiento %s contiene un número de versión corrupto o no admitido: %d.\n"
+
+#: dwarf.c:2224
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr "La información de depuración está corrupta, el desplazamiento abbrev (%lx) es mayor que el tamaño de la sección abbrev (%lx)\n"
+
+#: dwarf.c:2274
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr "Se detectó un marcador de fin-de-hermanos ambiguo en el desplazamiento %lx en la sección .debug_info\n"
+
+#: dwarf.c:2278
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr "Se suprimen los avisos restantes sobre marcardores de fin-de-hermanos ambiguos\n"
+
+#: dwarf.c:2297
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr " <%d><%lx>: Número de Abrev: %lu"
+
+#: dwarf.c:2301
+#, c-format
+msgid " <%d><%lx>: ...\n"
+msgstr " <%d><%lx>: ...\n"
+
+#: dwarf.c:2320
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr "DIE en el desplazamiento %lx se refiere al número de abreviación %lu el cual no existe\n"
+
+#: dwarf.c:2422
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Volcado crudo del contenido de depuración de la sección %s:\n"
+"\n"
+
+#: dwarf.c:2460
+#, c-format
+msgid "The information in section %s appears to be corrupt - the section is too small\n"
+msgstr "La información en la sección %s parece estar corrupta - la sección es demasiado pequeña\n"
+
+#: dwarf.c:2472 dwarf.c:2840
+msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
+msgstr "Solo se admite actualmente la información de línea de DWARF versiones 2, 3 y 4.\n"
+
+#: dwarf.c:2486 dwarf.c:2855
+msgid "Invalid maximum operations per insn.\n"
+msgstr "Operaciones máximas inválidas por insn.\n"
+
+#: dwarf.c:2505 dwarf.c:3574
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr " Longitud: 0x%lx\n"
+
+#: dwarf.c:2506
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Longitud: %ld\n"
+
+#: dwarf.c:2507
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " Versión DWARF: %d\n"
+
+#: dwarf.c:2508
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " Longitud del Prólogo: %d\n"
+
+#: dwarf.c:2509
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " Longitud Mínima Instrucción: %d\n"
+
+#: dwarf.c:2511
+#, c-format
+msgid " Maximum Ops per Instruction: %d\n"
+msgstr " Máximo de Ops por Instrucción: %d\n"
+
+#: dwarf.c:2512
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " Valor inicial de 'is_stmt': %d\n"
+
+#: dwarf.c:2513
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " Base Línea: %d\n"
+
+#: dwarf.c:2514
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " Rango Línea: %d\n"
+
+#: dwarf.c:2515
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " Base de Código de Operación: %d\n"
+
+#: dwarf.c:2524
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Códigos de operación:\n"
+
+#: dwarf.c:2527
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " El código de operación %d tiene %d argumentos\n"
+
+#: dwarf.c:2533
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" La Tabla de Directorios está vacía.\n"
+
+#: dwarf.c:2536
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" La Tabla de Directorios:\n"
+
+#: dwarf.c:2551
+#, 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:2554
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" La Tabla de Nombres de Fichero:\n"
+
+#. Now display the statements.
+#: dwarf.c:2584
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Declaraciones de Número de Línea:\n"
+
+#: dwarf.c:2603
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s"
+msgstr " Código de operación especial %d: Dirección de avance por %s a 0x%s"
+
+#: dwarf.c:2617
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s[%d]"
+msgstr " Código de operación especial %d: Dirección de avance por %s a 0x%s[%d]"
+
+#: dwarf.c:2625
+#, c-format
+msgid " and Line by %s to %d\n"
+msgstr " y Línea por %s a %d\n"
+
+#: dwarf.c:2635
+#, c-format
+msgid " Copy\n"
+msgstr " Copiar\n"
+
+#: dwarf.c:2645
+#, c-format
+msgid " Advance PC by %s to 0x%s\n"
+msgstr " Avanza el PC por %s para %s\n"
+
+#: dwarf.c:2658
+#, c-format
+msgid " Advance PC by %s to 0x%s[%d]\n"
+msgstr " Avanza el PC por %s para 0x%s[%d]\n"
+
+#: dwarf.c:2669
+#, c-format
+msgid " Advance Line by %s to %d\n"
+msgstr " Línea de Avance por %s para %d\n"
+
+#: dwarf.c:2677
+#, c-format
+msgid " Set File Name to entry %s in the File Name Table\n"
+msgstr " Establece el Nombre de Fichero para la entrada %s en la Tabla de Nombres de Fichero\n"
+
+#: dwarf.c:2685
+#, c-format
+msgid " Set column to %s\n"
+msgstr " Establece la columna a %s\n"
+
+#: dwarf.c:2693
+#, c-format
+msgid " Set is_stmt to %s\n"
+msgstr " Establece is_stmt a %s\n"
+
+#: dwarf.c:2698
+#, c-format
+msgid " Set basic block\n"
+msgstr " Establece el bloque básico\n"
+
+#: dwarf.c:2708
+#, c-format
+msgid " Advance PC by constant %s to 0x%s\n"
+msgstr " Avanza el PC por la constante %s a 0x%s\n"
+
+#: dwarf.c:2721
+#, c-format
+msgid " Advance PC by constant %s to 0x%s[%d]\n"
+msgstr " Avanza el PC por la constante %s a 0x%s[%d]\n"
+
+#: dwarf.c:2733
+#, c-format
+msgid " Advance PC by fixed size amount %s to 0x%s\n"
+msgstr " Avanza el PC por la cantidad de tamaño fijo %s a 0x%s\n"
+
+#: dwarf.c:2739
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr " Establece prologue_end a true\n"
+
+#: dwarf.c:2743
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr " Establece epilogue_begin a true\n"
+
+#: dwarf.c:2749
+#, c-format
+msgid " Set ISA to %s\n"
+msgstr " Establece ISA a %s\n"
+
+#: dwarf.c:2753 dwarf.c:3168
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr " Código de operación desconocido %d con los operandos: "
+
+#: dwarf.c:2787
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Volcado decodificado del contenido de depuración de la sección %s:\n"
+"\n"
+
+#: dwarf.c:2828
+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:2960
+#, c-format
+msgid "CU: %s:\n"
+msgstr "CU: %s:\n"
+
+#: dwarf.c:2961 dwarf.c:2972
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr "Nombre fichero Num línea Dirección inicio\n"
+
+#: dwarf.c:2968
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr "CU: %s/%s:\n"
+
+#: dwarf.c:3059
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "UNKNOWN: longitud %d\n"
+
+#: dwarf.c:3164
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr " Establece ISA a %lu\n"
+
+#: dwarf.c:3330 dwarf.c:4195
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr "el desplazamiento de .debug_info de 0x%lx en la sección %s no apunta a un encabezado CU.\n"
+
+#: dwarf.c:3344
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Solo se admiten actualmente los nombres públicos DWARF 2 y 3\n"
+
+#: dwarf.c:3351
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Longitud: %ld\n"
+
+#: dwarf.c:3353
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versión: %d\n"
+
+#: dwarf.c:3355
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr " Desplazamiento en secc .debug_info: 0x%lx\n"
+
+#: dwarf.c:3357
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr " Tamaño de área en secc .debug_info: %ld\n"
+
+#: dwarf.c:3360
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" Desplaz\tNombre\n"
+
+#: dwarf.c:3411
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - numlinea: %d numfichero: %d\n"
+
+#: dwarf.c:3417
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:3425
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - numlinea : %d macro : %s\n"
+
+#: dwarf.c:3434
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - numlinea : %d macro : %s\n"
+
+#: dwarf.c:3446
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - constante : %d cadena : %s\n"
+
+#: dwarf.c:3566
+#, c-format
+msgid "Only GNU extension to DWARF 4 of %s is currently supported.\n"
+msgstr "Sólo se admite actualmente la extensión GNU a DWARF 4 de %s.\n"
+
+#: dwarf.c:3576
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versión: %d\n"
+
+#: dwarf.c:3577
+#, c-format
+msgid " Offset size: %d\n"
+msgstr " Base de Código de Operación: %d\n"
+
+#: dwarf.c:3582
+#, c-format
+msgid " Offset into .debug_line: 0x%lx\n"
+msgstr " Desplaz. en .debug_line: 0x%lx\n"
+
+#: dwarf.c:3593
+#, c-format
+msgid " Extension opcode arguments:\n"
+msgstr " Argumentos de extensión opcode:\n"
+
+#: dwarf.c:3601
+#, c-format
+msgid " DW_MACRO_GNU_%02x has no arguments\n"
+msgstr " DW_MACRO_GNU_%02x no tiene argumentos\n"
+
+#: dwarf.c:3604
+#, c-format
+msgid " DW_MACRO_GNU_%02x arguments: "
+msgstr " Argumentos de DW_MACRO_GNU_%02x: "
+
+#: dwarf.c:3628
+#, c-format
+msgid "Invalid extension opcode form %s\n"
+msgstr "La forma %s de extensión opcode es inválida\n"
+
+#: dwarf.c:3645
+msgid ".debug_macro section not zero terminated\n"
+msgstr "La sección .debug_macro no está terminada con cero\n"
+
+#: dwarf.c:3666
+msgid "DW_MACRO_GNU_start_file used, but no .debug_line offset provided.\n"
+msgstr "Se usó DW_MACRO_GNU_start_file, pero no se proporcionó un desplazamiento .debug_line.\n"
+
+#: dwarf.c:3672
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACRO_GNU_start_file - numlinea: %d numfichero: %d\n"
+
+#: dwarf.c:3675
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d filename: %s%s%s\n"
+msgstr " DW_MACRO_GNU_start_file - numlinea: %d numfichero: %d fichero: %s%s%s\n"
+
+#: dwarf.c:3683
+#, c-format
+msgid " DW_MACRO_GNU_end_file\n"
+msgstr " DW_MACRO_GNU_end_file\n"
+
+#: dwarf.c:3691
+#, c-format
+msgid " DW_MACRO_GNU_define - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_define - numlinea : %d macro : %s\n"
+
+#: dwarf.c:3700
+#, c-format
+msgid " DW_MACRO_GNU_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_undef - numlinea : %d macro : %s\n"
+
+#: dwarf.c:3710
+#, c-format
+msgid " DW_MACRO_GNU_define_indirect - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_define_indirect - numlinea : %d macro : %s\n"
+
+#: dwarf.c:3720
+#, c-format
+msgid " DW_MACRO_GNU_undef_indirect - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_undef_indirect - numlinea : %d macro : %s\n"
+
+#: dwarf.c:3727
+#, c-format
+msgid " DW_MACRO_GNU_transparent_include - offset : 0x%lx\n"
+msgstr " DW_MACRO_GNU_transparent_include - despl : 0x%lx\n"
+
+#: dwarf.c:3734
+#, c-format
+msgid " Unknown macro opcode %02x seen\n"
+msgstr "Se vio el código de operación macro %02x desconocido\n"
+
+#: dwarf.c:3746
+#, c-format
+msgid " DW_MACRO_GNU_%02x\n"
+msgstr " DW_MACRO_GNU_%02x\n"
+
+#: dwarf.c:3749
+#, c-format
+msgid " DW_MACRO_GNU_%02x -"
+msgstr " DW_MACRO_GNU_%02x - "
+
+#: dwarf.c:3790
+#, c-format
+msgid " Number TAG\n"
+msgstr " Número TAG\n"
+
+#: dwarf.c:3799
+msgid "has children"
+msgstr "tiene hijos"
+
+#: dwarf.c:3799
+msgid "no children"
+msgstr "sin hijos"
+
+#: dwarf.c:3850 dwarf.c:4077 dwarf.c:4311
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"La sección %s está vacía.\n"
+
+#: dwarf.c:3856 dwarf.c:4317
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr "No se puede cargar/decodificar la sección .debug_info, por eso no se puede interpretar la sección %s.\n"
+
+#: dwarf.c:3900
+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:3905
+#, c-format
+msgid "Location lists in %s section start at 0x%s\n"
+msgstr "Las listas de ubicación en la sección %s empiezan en 0x%s\n"
+
+#: dwarf.c:3912
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr " Desplaz Inicio Fin Expresión\n"
+
+#: dwarf.c:3961
+#, 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:3965
+#, 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:3973
+#, 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:3982 dwarf.c:4017 dwarf.c:4027
+#, 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:4001 dwarf.c:4405
+#, c-format
+msgid "<End of list>\n"
+msgstr "<Fin de lista>\n"
+
+#: dwarf.c:4011
+#, c-format
+msgid "(base address)\n"
+msgstr "(dirección base)\n"
+
+#: dwarf.c:4048
+msgid " (start == end)"
+msgstr " (inicio == final)"
+
+#: dwarf.c:4050
+msgid " (start > end)"
+msgstr " (inicio > final)"
+
+#: dwarf.c:4060
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr "Hay %ld bytes sin usar al final de la sección %s\n"
+
+#: dwarf.c:4206
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Solo se admiten actualmente aranges de DWARF 2 y 3.\n"
+
+#: dwarf.c:4210
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Longitud: %ld\n"
+
+#: dwarf.c:4212
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versión: %d\n"
+
+#: dwarf.c:4213
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr " Desplaz. en .debug_info: 0x%lx\n"
+
+#: dwarf.c:4215
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Tamaño del Puntero: %d\n"
+
+#: dwarf.c:4216
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " Tamaño del Segmento: %d\n"
+
+#: dwarf.c:4222
+#, c-format
+msgid "Invalid address size in %s section!\n"
+msgstr "¡Tamaño de dirección inválido en la sección %s\n"
+
+#: dwarf.c:4232
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr "Tamaño del puntero + Tamaño del segmento no es una potencia de dos.\n"
+
+#: dwarf.c:4237
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Longitud de la Dirección\n"
+
+#: dwarf.c:4239
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Long Dirección\n"
+
+#: dwarf.c:4327
+msgid "No range lists in .debug_info section!\n"
+msgstr "¡No hay listas de rango en la sección .debug_info!\n"
+
+#: dwarf.c:4351
+#, 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:4355
+#, c-format
+msgid " Offset Begin End\n"
+msgstr " Desplaz Inicio Fin\n"
+
+#: dwarf.c:4376
+#, 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:4380
+#, 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:4423
+msgid "(start == end)"
+msgstr "(inicio == final)"
+
+#: dwarf.c:4425
+msgid "(start > end)"
+msgstr "(inicio > final)"
+
+#: dwarf.c:4678
+msgid "bad register: "
+msgstr "registro erróneo: "
+
+#. The documentation for the format of this file is in gdb/dwarf2read.c.
+#: dwarf.c:4681 dwarf.c:5490
+#, c-format
+msgid "Contents of the %s section:\n"
+msgstr "Contenido de la sección %s:\n"
+
+#: dwarf.c:5451
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr " DW_CFA_??? (Op de marco de llamada definido por el usuario: %#x)\n"
+
+#: dwarf.c:5453
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr "número de Instrucción de Marco de Llamada Dwarf no admitido o desconocido: %#x\n"
+
+#: dwarf.c:5494
+#, c-format
+msgid "Truncated header in the %s section.\n"
+msgstr "Encabezado trunco en la sección %s.\n"
+
+#: dwarf.c:5499
+#, c-format
+msgid "Version %ld\n"
+msgstr "Versión %ld\n"
+
+#: dwarf.c:5506
+msgid "The address table data in version 3 may be wrong.\n"
+msgstr "Los datos de la tabla de dirección en la versión 3 tal vez son erróneos.\n"
+
+#: dwarf.c:5509
+msgid "Version 4 does not support case insensitive lookups.\n"
+msgstr "La versión 4 no admite búsquedas insensibles a mayúsculas y minúsculas.\n"
+
+#: dwarf.c:5514
+#, c-format
+msgid "Unsupported version %lu.\n"
+msgstr "No se admite la versión %lu.\n"
+
+#: dwarf.c:5530
+#, c-format
+msgid "Corrupt header in the %s section.\n"
+msgstr "Encabezado corrupto en la sección %s.\n"
+
+#: dwarf.c:5545
+#, c-format
+msgid ""
+"\n"
+"CU table:\n"
+msgstr ""
+"\n"
+"Tabla CU:\n"
+
+#: dwarf.c:5551
+#, c-format
+msgid "[%3u] 0x%lx - 0x%lx\n"
+msgstr "[%3u] 0x%lx - 0x%lx\n"
+
+#: dwarf.c:5556
+#, c-format
+msgid ""
+"\n"
+"TU table:\n"
+msgstr ""
+"\n"
+"Tabla TU:\n"
+
+#: dwarf.c:5563
+#, c-format
+msgid "[%3u] 0x%lx 0x%lx "
+msgstr "[%3u] 0x%lx 0x%lx "
+
+#: dwarf.c:5570
+#, c-format
+msgid ""
+"\n"
+"Address table:\n"
+msgstr ""
+"\n"
+"Tabla de direcciones:\n"
+
+#: dwarf.c:5579
+#, c-format
+msgid "%lu\n"
+msgstr "%lu\n"
+
+#: dwarf.c:5582
+#, c-format
+msgid ""
+"\n"
+"Symbol table:\n"
+msgstr ""
+"\n"
+"Tabla de símbolos:\n"
+
+#: dwarf.c:5616
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Aún no se admite el mostrar el contenido de depuración de la sección %s.\n"
+
+#: dwarf.c:5752 dwarf.c:5822
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "No se reconoce la opción de depuración '%s'\n"
+
+#: elfcomm.c:39
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Error: "
+
+#: elfcomm.c:50
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Aviso: "
+
+#: elfcomm.c:82 elfcomm.c:117 elfcomm.c:167 elfcomm.c:216
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Longitud de datos sin manejar: %d\n"
+
+#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3683 readelf.c:3991
+#: readelf.c:4034 readelf.c:4108 readelf.c:4187 readelf.c:4965 readelf.c:4989
+#: readelf.c:7397 readelf.c:7443 readelf.c:7642 readelf.c:8863 readelf.c:8877
+#: readelf.c:9423 readelf.c:9439 readelf.c:9482 readelf.c:9507 readelf.c:11904
+#: readelf.c:12096 readelf.c:12929
+msgid "Out of memory\n"
+msgstr "Memoria agotada\n"
+
+#: elfcomm.c:312
+#, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr "%s: falló al buscar el primer encabezado de archivo\n"
+
+#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13418
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: falló al leer el encabezado del archivo\n"
+
+#: elfcomm.c:347
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr "%s: el índice del archivo está vacío\n"
+
+#: elfcomm.c:355 elfcomm.c:381
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: falló al leer el índice del archivo\n"
+
+#: elfcomm.c:365
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr "%s: se supone que el índice del archivo tiene %ld entradas, pero el tamaño en el encabezado es demasiado pequeño\n"
+
+#: elfcomm.c:373
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr "Memoria agotada al tratar de leer el índice de símbolos del archivo\n"
+
+#: elfcomm.c:392
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr "Memoria agotada al tratar de convertir el índice de símbolos del archivo\n"
+
+#: elfcomm.c:405
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr "%s: el archivo tiene un índice pero no tiene símbolos\n"
+
+#: elfcomm.c:413
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr "Memoria agotada al tratar de leer la tabla de símbolos del índice del archivo\n"
+
+#: elfcomm.c:419
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr "%s: falló al leer la tabla de símbolos del índice del archivo\n"
+
+#: elfcomm.c:428
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr "%s: falló al saltar la tabla de símbolos del archivo\n"
+
+#: elfcomm.c:440
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr "%s: falló al leer el encabezado del archivo a continuación del índice del archivo\n"
+
+#: elfcomm.c:446
+#, c-format
+msgid "%s has no archive index\n"
+msgstr "%s: no tiene índice de archivo\n"
+
+#: elfcomm.c:457
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr "Memoria agotada al leer los nombres de símbolo long en el archivo\n"
+
+#: elfcomm.c:465
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr "%s: falló al leer la tabla de cadenas de nombre de símbolo largos\n"
+
+#: elfcomm.c:605
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr "%s: falló al buscar el siguiente nombre de fichero\n"
+
+#: elfcomm.c:616 elfedit.c:347 readelf.c:13424
+#, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr "%s no se encontró un encabezado de archivo válido\n"
+
+#: elfedit.c:73
+#, c-format
+msgid "%s: Not an ELF file - wrong magic bytes at the start\n"
+msgstr "%s: No es un fichero ELF - tiene los bytes mágicos erróneos en el inicio\n"
+
+#: elfedit.c:81
+#, c-format
+msgid "%s: Unsupported EI_VERSION: %d is not %d\n"
+msgstr "%s: No se admite EI_VERSION: %d no es %d\n"
+
+#: elfedit.c:97
+#, c-format
+msgid "%s: Unmatched EI_CLASS: %d is not %d\n"
+msgstr "%s: No coincide EI_CLASS: %d no es %d\n"
+
+#: elfedit.c:108
+#, c-format
+msgid "%s: Unmatched e_machine: %d is not %d\n"
+msgstr "%s: No coincide e_machine: %d no es %d\n"
+
+#: elfedit.c:119
+#, c-format
+msgid "%s: Unmatched e_type: %d is not %d\n"
+msgstr "%s: No coincide e_type: %d no es %d\n"
+
+#: elfedit.c:130
+#, c-format
+msgid "%s: Unmatched EI_OSABI: %d is not %d\n"
+msgstr "%s: No coincide EI_OSABI: %d no es %d\n"
+
+#: elfedit.c:163
+#, c-format
+msgid "%s: Failed to update ELF header: %s\n"
+msgstr "%s: Falló al actualizar el encabezado ELF: %s\n"
+
+#: elfedit.c:196
+#, c-format
+msgid "Unsupported EI_CLASS: %d\n"
+msgstr "No se admite EI_CLASS: %d\n"
+
+#: elfedit.c:229
+msgid ""
+"This executable has been built without support for a\n"
+"64 bit data type and so it cannot process 64 bit ELF files.\n"
+msgstr ""
+"Este ejecutable fue construido sin soporte para un\n"
+"tipo de datos de 64 bit y por eso no puede procesar ficheros ELF de 64 bit.\n"
+
+#: elfedit.c:270
+#, c-format
+msgid "%s: Failed to read ELF header\n"
+msgstr "%s: Falló al leer el encabezado ELF\n"
+
+#: elfedit.c:277
+#, c-format
+msgid "%s: Failed to seek to ELF header\n"
+msgstr "%s: Falló al buscar en el encabezado ELF\n"
+
+#: elfedit.c:331 readelf.c:13410
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s: falló al buscar el siguiente encabezado de archivo\n"
+
+#: elfedit.c:362 elfedit.c:371 readelf.c:13438 readelf.c:13447
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: nombre de fichero de archivo erróneo\n"
+
+#: elfedit.c:391 elfedit.c:483
+#, c-format
+msgid "Input file '%s' is not readable\n"
+msgstr "El fichero de entrada '%s' no es legible\n"
+
+#: elfedit.c:415
+#, c-format
+msgid "%s: failed to seek to archive member\n"
+msgstr "%s: falló al buscar en el miembro de archivo\n"
+
+#: elfedit.c:454 readelf.c:13533
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "'%s': No hay tal fichero\n"
+
+#: elfedit.c:456 readelf.c:13535
+#, 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"
+
+#: elfedit.c:463 readelf.c:13542
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "'%s' no es un fichero ordinario\n"
+
+#: elfedit.c:489 readelf.c:13555
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr "%s: Falló al leer el número mágico del fichero\n"
+
+#: elfedit.c:547
+#, c-format
+msgid "Unknown OSABI: %s\n"
+msgstr "OSABI desconocido: %s\n"
+
+#: elfedit.c:568
+#, c-format
+msgid "Unknown machine type: %s\n"
+msgstr "Tipo de máquina desconocido: %s\n"
+
+#: elfedit.c:587
+#, c-format
+msgid "Unknown machine type: %d\n"
+msgstr "Tipo de máquina desconocido: %d\n"
+
+#: elfedit.c:606
+#, c-format
+msgid "Unknown type: %s\n"
+msgstr "Tipo desconocido: %s\n"
+
+#: elfedit.c:637
+#, c-format
+msgid "Usage: %s <option(s)> elffile(s)\n"
+msgstr "Modo de empleo: %s <opcion(es)> <fichero(s)elf>\n"
+
+#: elfedit.c:639
+#, c-format
+msgid " Update the ELF header of ELF files\n"
+msgstr " Actualiza el encabezado ELF de los ficheros ELF\n"
+
+#: elfedit.c:640 objcopy.c:475 objcopy.c:585
+#, c-format
+msgid " The options are:\n"
+msgstr " Las opciones son:\n"
+
+#: elfedit.c:641
+#, c-format
+msgid ""
+" --input-mach <machine> Set input machine type to <machine>\n"
+" --output-mach <machine> Set output machine type to <machine>\n"
+" --input-type <type> Set input file type to <type>\n"
+" --output-type <type> Set output file type to <type>\n"
+" --input-osabi <osabi> Set input OSABI to <osabi>\n"
+" --output-osabi <osabi> Set output OSABI to <osabi>\n"
+" -h --help Display this information\n"
+" -v --version Display the version number of %s\n"
+msgstr ""
+" --input-mach <máquina> Define el tipo de máquina de entrada a <máquina>\n"
+" --output-mach <máquina> Define el tipo de máquina de salida a <máquina>\n"
+" --input-type <tipo> Define el tipo de fichero de entrada a <tipo>\n"
+" --output-type <tipo> Define el tipo de fichero de salida a <tipo>\n"
+" --input-osabi <osabi> Define la entrada OSABI a <osabi>\n"
+" --output-osabi <osabi> Defina la salida OSABI a <osabi>\n"
+" -h --help Muestra esta información\n"
+" -v --version Muestra el número de versión de %s\n"
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - archivo small de 32 bit\n"
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - descarta los objetos de 64 bit\n"
+
+#: emul_aix.c:47
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - descarta los objetos de 32 bit\n"
+
+#: emul_aix.c:48
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] -acepta objetos de 32 y 64 bit\n"
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "fin inesperado de la información de depuración"
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "número inválido"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "longitud de cadena inválida"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "desbordamiento de la pila de expresión"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "no se admite el operador de expresión IEEE"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr "sección desconocida"
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "desbordamiento por debajo de la pila de expresión"
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "no hay coincidencia en la pila de expresión"
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "tipo interno desconocido"
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "no se admite el tipo de coma flotante BCD"
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "número inesperado"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "tipo de grabación inesperado"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "se dejaron bloques en la pila al final"
+
+#: ieee.c:1208
+msgid "unknown BB type"
+msgstr "tipo BB desconocido"
+
+#: ieee.c:1217
+msgid "stack overflow"
+msgstr "desbordamiento de la pila"
+
+#: ieee.c:1240
+msgid "stack underflow"
+msgstr "desbordamiento de la pila por debajo"
+
+#: ieee.c:1352 ieee.c:1422 ieee.c:2120
+msgid "illegal variable index"
+msgstr "índice de variable ilegal"
+
+#: ieee.c:1400
+msgid "illegal type index"
+msgstr "índice de tipo ilegal"
+
+#: ieee.c:1410 ieee.c:1447
+msgid "unknown TY code"
+msgstr "código TY desconocido"
+
+#: ieee.c:1429
+msgid "undefined variable in TY"
+msgstr "variable indefinida en TY"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1841
+msgid "Pascal file name not supported"
+msgstr "no se admite el nombre de fichero Pascal"
+
+#: ieee.c:1889
+msgid "unsupported qualifier"
+msgstr "no se admite el calificador"
+
+#: ieee.c:2158
+msgid "undefined variable in ATN"
+msgstr "variable sin definir en ATN"
+
+#: ieee.c:2201
+msgid "unknown ATN type"
+msgstr "tipo ATN desconocido"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2323
+msgid "unsupported ATN11"
+msgstr "no se admite ATN11"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2350
+msgid "unsupported ATN12"
+msgstr "no se admite ATN12"
+
+#: ieee.c:2410
+msgid "unexpected string in C++ misc"
+msgstr "cadena inesperada en misc de C++"
+
+#: ieee.c:2423
+msgid "bad misc record"
+msgstr "grabación misc errónea"
+
+#: ieee.c:2464
+msgid "unrecognized C++ misc record"
+msgstr "no se reconoce la grabación misc de C++"
+
+#: ieee.c:2579
+msgid "undefined C++ object"
+msgstr "objeto C++ sin definir"
+
+#: ieee.c:2613
+msgid "unrecognized C++ object spec"
+msgstr "no se reconoce la especificación de objeto C++"
+
+#: ieee.c:2649
+msgid "unsupported C++ object type"
+msgstr "no se admite el tipo de objeto C++"
+
+#: ieee.c:2659
+msgid "C++ base class not defined"
+msgstr "no está definida la clase base de C++"
+
+#: ieee.c:2671 ieee.c:2776
+msgid "C++ object has no fields"
+msgstr "el objeto C++ no tiene campos"
+
+#: ieee.c:2690
+msgid "C++ base class not found in container"
+msgstr "no se encuentra la clase base C++ en el contenedor"
+
+#: ieee.c:2797
+msgid "C++ data member not found in container"
+msgstr "no se encuentra los datos miembros C++ en el contenedor"
+
+#: ieee.c:2838 ieee.c:2988
+msgid "unknown C++ visibility"
+msgstr "visibilidad C++ desconocida"
+
+#: ieee.c:2872
+msgid "bad C++ field bit pos or size"
+msgstr "posición o tamaño erróneo del campo de bit C++"
+
+#: ieee.c:2964
+msgid "bad type for C++ method function"
+msgstr "tipo erróneo para la función del método C++"
+
+#: ieee.c:2974
+msgid "no type information for C++ method function"
+msgstr "no hay información de tipo para la función del método C++"
+
+#: ieee.c:3013
+msgid "C++ static virtual method"
+msgstr "método virtual static de C++"
+
+#: ieee.c:3108
+msgid "unrecognized C++ object overhead spec"
+msgstr "no se reconoce la especificación de adelanto de objeto C++"
+
+#: ieee.c:3147
+msgid "undefined C++ vtable"
+msgstr "vtable C++ sin definir"
+
+#: ieee.c:3216
+msgid "C++ default values not in a function"
+msgstr "valores C++ por defecto no están en una función"
+
+#: ieee.c:3256
+msgid "unrecognized C++ default type"
+msgstr "no se reconoce el tipo por defecto de C++"
+
+#: ieee.c:3287
+msgid "reference parameter is not a pointer"
+msgstr "el parámetro de referencia no es un puntero"
+
+#: ieee.c:3370
+msgid "unrecognized C++ reference type"
+msgstr "no se reconoce el tipo de referencia de C++"
+
+#: ieee.c:3452
+msgid "C++ reference not found"
+msgstr "no se encontró la referencia C++"
+
+#: ieee.c:3460
+msgid "C++ reference is not pointer"
+msgstr "la referencia C++ no es un puntero"
+
+#: ieee.c:3486 ieee.c:3494
+msgid "missing required ASN"
+msgstr "falta el ASN requerido"
+
+#: ieee.c:3521 ieee.c:3529
+msgid "missing required ATN65"
+msgstr "falta el ATN65 requerido"
+
+#: ieee.c:3543
+msgid "bad ATN65 record"
+msgstr "registro ATN65 erróneo"
+
+#: ieee.c:4171
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "desbordamiento numérico IEEE: 0x"
+
+#: ieee.c:4215
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "desbordamiento de longitud de cadena IEEE: %u\n"
+
+#: ieee.c:5213
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "no se admite el tamaño de tipo entero IEEE %u\n"
+
+#: ieee.c:5247
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "no se admite el tamaño de tipo coma flotante IEEE %u\n"
+
+#: ieee.c:5281
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "no se admite el tamaño de tipo complejo IEEE %u\n"
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr "Se ingresó un símbolo duplicado en la lista de palabras clave."
+
+#: nlmconv.c:274 srconv.c:1824
+msgid "input and output files must be different"
+msgstr "los ficheros de entrada y salida deben ser diferentes"
+
+#: nlmconv.c:321
+msgid "input file named both on command line and with INPUT"
+msgstr "fichero de entrada nombrado en la línea de órdenes y con INPUT"
+
+#: nlmconv.c:330
+msgid "no input file"
+msgstr "no hay fichero de entrada"
+
+#: nlmconv.c:360
+msgid "no name for output file"
+msgstr "no hay nombre para el fichero de salida"
+
+#: nlmconv.c:374
+msgid "warning: input and output formats are not compatible"
+msgstr "aviso: los formatos de entrada y salida no son compatibles"
+
+#: nlmconv.c:404
+msgid "make .bss section"
+msgstr "hace sección .bss"
+
+#: nlmconv.c:414
+msgid "make .nlmsections section"
+msgstr "hace sección .nlmsections"
+
+#: nlmconv.c:442
+msgid "set .bss vma"
+msgstr "establece vma .bss"
+
+#: nlmconv.c:449
+msgid "set .data size"
+msgstr "establece tamaño de .data"
+
+#: nlmconv.c:629
+#, 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:649
+msgid "set start address"
+msgstr "establece la dirección de inicio"
+
+#: nlmconv.c:698
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "aviso: el procedimiento START %s no está definido"
+
+#: nlmconv.c:700
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "aviso: el procedimiento EXIT %s no está definido"
+
+#: nlmconv.c:702
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "aviso: el procedimiento CHECK %s no está definido"
+
+#: nlmconv.c:722 nlmconv.c:908
+msgid "custom section"
+msgstr "sección a la medida"
+
+#: nlmconv.c:742 nlmconv.c:937
+msgid "help section"
+msgstr "sección de ayuda"
+
+#: nlmconv.c:764 nlmconv.c:955
+msgid "message section"
+msgstr "sección de mensajes"
+
+#: nlmconv.c:779 nlmconv.c:988
+msgid "module section"
+msgstr "sección de módulos"
+
+#: nlmconv.c:798 nlmconv.c:1004
+msgid "rpc section"
+msgstr "sección de rpc"
+
+#. There is no place to record this information.
+#: nlmconv.c:834
+#, 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:855 nlmconv.c:1023
+msgid "shared section"
+msgstr "sección compartida"
+
+#: nlmconv.c:863
+msgid "warning: No version number given"
+msgstr "aviso: No se dió un número de versión"
+
+#: nlmconv.c:903 nlmconv.c:932 nlmconv.c:950 nlmconv.c:999 nlmconv.c:1018
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: leído: %s"
+
+#: nlmconv.c:925
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "aviso: no se admite FULLMAP; pruebe ld -M"
+
+#: nlmconv.c:1101
+#, 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:1102
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr "Convierte un fichero objeto en un Módulo Cargable de NetWare (NLM)\n"
+
+#: nlmconv.c:1103
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+" Las opciones son:\n"
+" -I --input-target=<nombrebfd> Establece el formato del fichero binario de entrada\n"
+" -O --output-target=<nombrebfd> Establece el formato del fichero binario de salida\n"
+" -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:1144
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "soporte no compilado para %s"
+
+#: nlmconv.c:1181
+msgid "make section"
+msgstr "crea sección"
+
+#: nlmconv.c:1195
+msgid "set section size"
+msgstr "establece el tamaño de la sección"
+
+#: nlmconv.c:1201
+msgid "set section alignment"
+msgstr "establece la alineación de la sección"
+
+#: nlmconv.c:1205
+msgid "set section flags"
+msgstr "establece las opciones de la sección"
+
+#: nlmconv.c:1216
+msgid "set .nlmsections size"
+msgstr "establece el tamaño de .nlmsections"
+
+#: nlmconv.c:1297 nlmconv.c:1305 nlmconv.c:1314 nlmconv.c:1319
+msgid "set .nlmsection contents"
+msgstr "establece el contenido de .nlmsection"
+
+#: nlmconv.c:1796
+msgid "stub section sizes"
+msgstr "tamaños de la sección de cabos"
+
+#: nlmconv.c:1843
+msgid "writing stub"
+msgstr "se escribe cabo"
+
+#: nlmconv.c:1927
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "reubicación relativa PC contra %s sin resolver"
+
+#: nlmconv.c:1991
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "desbordamiento al ajustar la reubicación contra %s"
+
+#: nlmconv.c:2118
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: falló la ejecución de %s: "
+
+#: nlmconv.c:2133
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Falló la ejecución de %s"
+
+#: nm.c:225 size.c:78 strings.c:650
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Modo de empleo: %s [opcion(es)] [fichero(s)]\n"
+
+#: nm.c:226
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr "Lista de símbolos en [fichero(s)] (a.out por defecto).\n"
+
+#: nm.c:227
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+"Las opciones son:\n"
+" -a, --debug-syms Muestra símbolos sólo para el depurador\n"
+" -A, --print-file-name Muestra el nombre del fichero de entrada antes de\n"
+" cada símbolo\n"
+" -B Igual que --format=bsd\n"
+" -C, --demangle[=ESTILO] Decodifica los nombres de símbolo de bajo nivel en\n"
+" nombres de nivel de usuario\n"
+" El ESTILO, si se especifica, puede ser `auto'\n"
+" (por defecto), `gnu', `lucid', `arm', `hp', `edg',\n"
+" `gnu-v3', `java' o `gnat'\n"
+" --no-demangle No decodifica los nombres de símbolo de bajo nivel\n"
+" -D, --dynamic Muestra los símbolos dinámicos en lugar de los\n"
+" símbolos normales\n"
+" --defined-only Muestra solamente los símbolos definidos\n"
+" -e (se descarta)\n"
+" -f, --format=FORMATO Usa el formato de salida FORMATO. FORMATO puede ser\n"
+" `bsd', `sysv' o `posix'. Por defecto es `bsd'\n"
+" -g, --extern-only Muestra solamente los símbolos externos\n"
+" -l, --line-numbers Utiliza la información de depuración para encontrar\n"
+" un nombre de fichero y un número de línea para cada\n"
+" símbolo\n"
+" -n, --numeric-sort Ordena los símbolos numéricamente por dirección\n"
+" -o Igual que -A\n"
+" -p, --no-sort No ordena los símbolos\n"
+" -P, --portability Igual que --format=posix\n"
+" -r, --reverse-sort Cambia el sentido de la ordenación\n"
+
+#: nm.c:250
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr " --plugin NOMBRE Carga el plugin especificado\n"
+
+#: nm.c:253
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+" -S, --print-size Muestra el tamaño de los símbolos definidos\n"
+" -s, --print-armap Incluye el índice para símbolos de miembros de archivo\n"
+" --size-sort Ordena los símbolos por tamaño\n"
+" --special-syms Incluye los símbolos especiales en la salida\n"
+" --synthetic Muestra también los símbolos sintéticos\n"
+" -t, --radix=RADICAL Usa el RADICAL para mostrar valores de símbolo\n"
+" --target=NOMBFD Especifica el formato de objeto objetivo como NOMBFD\n"
+" -u, --undefined-only Sólo muestra los símbolos sin definir\n"
+" -X 32_64 (se descarta)\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:301
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: radical inválido"
+
+#: nm.c:325
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: formato de salida inválido"
+
+#: nm.c:346 readelf.c:8616 readelf.c:8661
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<específico del procesador> %d:"
+
+#: nm.c:348 readelf.c:8625 readelf.c:8679
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<específico del SO>: %d"
+
+#: nm.c:350 readelf.c:8628 readelf.c:8682
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<desconocido>: %d"
+
+#: nm.c:390
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Ãndice del archivo:\n"
+
+#: nm.c:1258
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Símbolos sin definir de %s:\n"
+"\n"
+
+#: nm.c:1260
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Símbolos de %s:\n"
+"\n"
+
+#: nm.c:1262 nm.c:1313
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Nombre Valor Clase Tipo Tamaño Línea Sección\n"
+"\n"
+
+#: nm.c:1265 nm.c:1316
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Nombre Valor Clase Tipo Tamaño Línea Sección\n"
+"\n"
+
+#: nm.c:1309
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Símbolos sin definir de %s[%s]:\n"
+"\n"
+
+#: nm.c:1311
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Símbolos de %s[%s]:\n"
+"\n"
+
+#: nm.c:1403
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr "No se inicializó la anchura de la impresión (%d)"
+
+#: nm.c:1631
+msgid "Only -X 32_64 is supported"
+msgstr "Solamente se admite -X 32_64"
+
+#: nm.c:1660
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "Al usar juntas las opciones --size-sort y --undefined-only"
+
+#: nm.c:1661
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "no se producirá salida, porque los símbolos sin definir no tienen tamaño."
+
+#: nm.c:1689
+#, c-format
+msgid "data size %ld"
+msgstr "tamaño de datos %ld"
+
+#: objcopy.c:473 srconv.c:1732
+#, 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:474
+#, 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:476
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set output arch, when input is arch-less\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff objects.\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" --compress-debug-sections Compress DWARF debug sections using zlib\n"
+" --decompress-debug-sections Decompress DWARF debug sections using zlib\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"
+msgstr ""
+" -I --input-target <nombrebfd> Asume que el fichero de entrada está en\n"
+" el formato <nombrebfd>\n"
+" -O --output-target <nombrebfd> Crea un fichero de salida en el formato\n"
+" <nombrebfd>\n"
+" -B --binary-architecture <arch> Establece la arquitectura del fichero de\n"
+" salida, cuando la entrada es binaria\n"
+" -F --target <nombrebfd> Establece tanto el formato de salida como\n"
+" el de entrada a <nombrebfd>\n"
+" --debugging Convierte la información de depuración, si\n"
+" es posible\n"
+" -p --preserve-dates Copia las marcas de tiempo de modificación y\n"
+" acceso a la salida\n"
+" -j --only-section <nombre> Sólo copia la sección <nombre> en la salida\n"
+" --add-gnu-debuglink=<fich> Agrega la sección de enlazado .gnu_debuglink\n"
+" al <fich>ero\n"
+" -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 de\n"
+" reubicación\n"
+" -g --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"
+" -N --strip-symbol <nombre> No copia el símbolo <nombre>\n"
+" --strip-unneeded-symbol <nombre>\n"
+" No copia el símbolo <nombre> a menos que sea\n"
+" necesario para las reubicaciones\n"
+" --only-keep-debug Borra todo excepto la información de\n"
+" depuración\n"
+" --extract-symbol Borra los contenidos de la sección pero\n"
+" conserva los símbolos\n"
+" -K --keep-symbol <nombre> No borra el símbolo <nombre>\n"
+" --keep-file-symbols No borra los símbolos de fichero\n"
+" --localize-hidden Convierte todos los símbolos ocultos ELF\n"
+" en locales\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> Fuerza que el símbolo <nom> se marque como\n"
+" débil\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"
+" -x --discard-all Borra todos los símbolos que no son globales\n"
+" -X --discard-locals Borra cualquier símbolo generado por el\n"
+" compilador\n"
+" -i --interleave [<num>] Sólo copia N de cada <num> bytes\n"
+" --interleave-width <num> Define N para --interleave\n"
+" -b --byte <num> Selecciona el byte <num> en cada bloque\n"
+" espaciado\n"
+" --gap-fill <val> Rellena los huecos entre secciones con <val>\n"
+" --pad-to <dirección> Rellena la última sección hasta\n"
+" la <dirección>\n"
+" --set-start <dirección> Establece la dirección de inicio en\n"
+" <dirección>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Agrega <incr> a la dirección de inicio\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Agrega <incr> a las direcciones LMA, VMA y\n"
+" la de inicio\n"
+" {--change-section-address|--adjust-section-vma} <nombre>{=|+|-}<val>\n"
+" Cambia el LMA y el VMA de la sección\n"
+" <nombre> por <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Cambia LMA de la sección <nombre> por <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Cambia VMA de la sección <nombre> por <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Avisa si no existe una sección nombrada\n"
+" --set-section-flags <nombre>=<opciones>\n"
+" Establece las propiedades de la sección\n"
+" <nombre> a <opciones>\n"
+" --add-section <nombre>=<fichero>\n"
+" Agrega la sección <nombre> que se encuentra\n"
+" en el <fichero> a la salida\n"
+" --rename-section <ant>=<nvo>[,<opts>] Renombra la sección <ant> a <nvo>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Maneja los nombres de sección largos en\n"
+" objetos Coff.\n"
+" --change-leading-char Fuerza el carácter de estilo inicial en\n"
+" el formato de salida\n"
+" --remove-leading-char Borra el carácter inicial de los símbolos\n"
+" globales\n"
+" --reverse-bytes=<num> Invierte <num> bytes a la vez, en la\n"
+" sección de salida con contenido\n"
+" --redefine-sym <ant>=<nvo> Redefine el nombre de símbolo <ant> a <nvo>\n"
+" --redefine-syms <fichero> --redefine-sym para todos los pares de\n"
+" símbolos enlistados en el <fichero>\n"
+" --srec-len <número> Restringe la longitud de los Srecords\n"
+" generados\n"
+" --srec-forceS3 Restringe el tipo de los Srecords generados\n"
+" a S3\n"
+" --strip-symbols <fichero> -N para todos los símbolos enlistados en el\n"
+" <fichero>\n"
+" --strip-unneeded-symbols <fichero>\n"
+" --strip-unneeded-symbol para todos los\n"
+" símbolos enlistados en el <fichero>\n"
+" --keep-symbols <fichero> -K para todos los símbolos enlistados en el\n"
+" <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"
+" <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"
+" salida\n"
+" --writable-text Marca el texto de salida como modificable\n"
+" --readonly-text Marca el texto de salida como protegido\n"
+" contra escritura\n"
+" --pure Marca el fichero de salida como paginado en\n"
+" demanda\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"
+" --prefix-alloc-sections <prefijo>\n"
+" Agrega <prefijo> al inicio de cada nombre de\n"
+" sección alojable\n"
+" --file-alignment <num> Define la alineacion del fichero PE a <num>\n"
+" --heap <reserva>[,<confirma>] Define el cúmulo reserva/confirma de PE a\n"
+" <reserva>/<confirma>\n"
+" --image-base <dirección> Define la imagen base de PE a <dirección>\n"
+" --stack <reserva>[,<confirma>] Define la pila reserva/confirma de PE a\n"
+" <reserva>/<confirma>\n"
+" --subsystem <nombre>[:<versión>]\n"
+" Define el subsistema PE a <nombre>\n"
+" [y <versión>]\n"
+" --compress-debug-sections Comprime las secciones de depuración DWARF\n"
+" usando zlib\n"
+" --decompress-debug-sections Descomprime las secciones de depuración\n"
+" DWARF usando zlib\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 admiten\n"
+
+#: objcopy.c:583
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Modo de empleo: %s <opcion(es)> fichero(s)-entrada\n"
+
+#: objcopy.c:584
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr " Remueve símbolos y secciones de los ficheros\n"
+
+#: objcopy.c:586
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target=<nombrebfd> Asume que el fichero de entrada está en\n"
+" el formato <nombrebfd>\n"
+" -O --output-target=<nombrebfd> Crea un fichero de salida en el formato\n"
+" <nombrebfd>\n"
+" -F --target <nombrebfd> Establece tanto el formato de salida como\n"
+" el de entrada a <nombrebfd>\n"
+" -p --preserve-dates Copia las marcas de tiempo de modificación\n"
+" y acceso a la salida\n"
+" -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 -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"
+" --only-keep-debug Borra todo excepto la información de\n"
+" depuración\n"
+" -N --strip-symbol=<nombre> No copia el símbolo <nombre>\n"
+" -K --keep-symbol=<nombre> No borra el símbolo <nombre>\n"
+" --keep-file-symbols No borra los símbolos de fichero\n"
+" -w --wildcard Permite comodines en la comparación de\n"
+" símbolos\n"
+" -x --discard-all Borra todos los símbolos que no son globales\n"
+" -X --discard-locals Borra cualquier símbolo generado por\n"
+" el compilador\n"
+" -v --verbose Enlista todos los ficheros objeto modificados\n"
+" -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"
+" admitidos\n"
+" -o <fichero> Coloca la salida limpia en el <fichero>\n"
+
+#: objcopy.c:659
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "opción de sección `%s' desconocida"
+
+#: objcopy.c:660
+#, c-format
+msgid "supported flags: %s"
+msgstr "opciones admitidas: %s"
+
+#: objcopy.c:761
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "no se puede abrir '%s': %s"
+
+#: objcopy.c:764 objcopy.c:3417
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: falló fread"
+
+#: objcopy.c:837
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: Se descarta la basura encontrada en esta línea"
+
+#: objcopy.c:1153
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr "no se elimina el símbolo `%s' porque se nombra en una reubicación"
+
+#: objcopy.c:1236
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: Redefiniciones múltiples del símbolo \"%s\""
+
+#: objcopy.c:1240
+#, 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:1268
+#, 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:1346
+#, 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:1349
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: falta el nombre del símbolo nuevo"
+
+#: objcopy.c:1359
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: fin de fichero prematuro"
+
+#: objcopy.c:1385
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat devuelve un valor negativo para `%s'"
+
+#: objcopy.c:1397
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "copia de `%s' [desconocido] a `%s' [desconocido]\n"
+
+#: objcopy.c:1454
+msgid "Unable to change endianness of input file(s)"
+msgstr "No se puede cambiar la endianez del (los) fichero(s) de entrada"
+
+#: objcopy.c:1463
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "copia de `%s' [%s] a `%s' [%s]\n"
+
+#: objcopy.c:1512
+#, c-format
+msgid "Input file `%s' ignores binary architecture parameter."
+msgstr "El fichero de entrada `%s' descarta el parámeto binario de arquitectura."
+
+#: objcopy.c:1520
+#, 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'"
+
+#: objcopy.c:1523
+#, c-format
+msgid "Output file cannot represent architecture `%s'"
+msgstr "El fichero de salida no puede representar a la arquitectura `%s'"
+
+#: objcopy.c:1586
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr "aviso: alineación del fichero (0x%s) > alineación de la sección (0x%s)"
+
+#: objcopy.c:1645
+#, c-format
+msgid "can't add section '%s'"
+msgstr "no se puede agregar la sección '%s'"
+
+#: objcopy.c:1659
+#, c-format
+msgid "can't create section `%s'"
+msgstr "no se puede crear la sección `%s'"
+
+#: objcopy.c:1705
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr "no se puede crear la sección de enlace de depuración `%s'"
+
+#: objcopy.c:1798
+msgid "Can't fill gap after section"
+msgstr "No se puede llenar el espacio después de la sección"
+
+#: objcopy.c:1822
+msgid "can't add padding"
+msgstr "No se puede agregar relleno"
+
+#: objcopy.c:1913
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr "no se puede llenar la sección de enlace de depuración `%s'"
+
+#: objcopy.c:1976
+msgid "error copying private BFD data"
+msgstr "error al copiar los datos privados BFD"
+
+#: objcopy.c:1987
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr "este objetivo no admite los códigos de máquina alternativos %lu"
+
+#: objcopy.c:1991
+msgid "treating that number as an absolute e_machine value instead"
+msgstr "en su lugar, se trata ese número como un valor e_machine absoluto"
+
+#: objcopy.c:1995
+msgid "ignoring the alternative value"
+msgstr "se descarta el valor alternativo"
+
+#: objcopy.c:2027 objcopy.c:2063
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr "no se puede crear el directorio temporal para copiar el archivo (error: %s)"
+
+#: objcopy.c:2093
+msgid "Unable to recognise the format of file"
+msgstr "No se puede reconocer el formato del fichero"
+
+#: objcopy.c:2220
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "error: el fichero de entrada '%s' está vacío"
+
+#: objcopy.c:2364
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "Renombrado múltiple de la sección %s"
+
+#: objcopy.c:2415
+msgid "error in private header data"
+msgstr "error en los datos de encabezado privado"
+
+#: objcopy.c:2493
+msgid "failed to create output section"
+msgstr "no se puede crear la sección de salida"
+
+#: objcopy.c:2507
+msgid "failed to set size"
+msgstr "no se puede establecer el tamaño"
+
+#: objcopy.c:2521
+msgid "failed to set vma"
+msgstr "no se puede establecer vma"
+
+#: objcopy.c:2546
+msgid "failed to set alignment"
+msgstr "no se puede establecer la alineación"
+
+#: objcopy.c:2580
+msgid "failed to copy private data"
+msgstr "no se pueden copiar los datos privados"
+
+#: objcopy.c:2662
+msgid "relocation count is negative"
+msgstr "la cuenta de reubicación es negativa"
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2723
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr "no se pueden invertir bytes: la longitud de la sección %s debe ser divisible por par por %d"
+
+#: objcopy.c:2909
+msgid "can't create debugging section"
+msgstr "no se puede crear la sección de depuración"
+
+#: objcopy.c:2922
+msgid "can't set debugging section contents"
+msgstr "no se puede establecer el contenido de la sección de depuración"
+
+#: objcopy.c:2930
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr "no se sabe cómo escribir la información de depuración para %s"
+
+#: objcopy.c:3073
+msgid "could not create temporary file to hold stripped copy"
+msgstr "no se puede crear el fichero temporal para contener la copia con símbolos eliminados"
+
+#: objcopy.c:3145
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr "%s: versión errónea en el subsistema PE"
+
+#: objcopy.c:3175
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr "subsistema PE desconocido: %s"
+
+#: objcopy.c:3237
+msgid "byte number must be non-negative"
+msgstr "el número de bytes no debe ser negativo"
+
+#: objcopy.c:3243
+#, c-format
+msgid "architecture %s unknown"
+msgstr "arquitectura %s desconocida"
+
+#: objcopy.c:3251
+msgid "interleave must be positive"
+msgstr "el espacio debe ser positivo"
+
+#: objcopy.c:3260
+msgid "interleave width must be positive"
+msgstr "la anchura del espacio debe ser positivo"
+
+#: objcopy.c:3280 objcopy.c:3288
+#, c-format
+msgid "%s both copied and removed"
+msgstr "%s copiado y borrado al mismo tiempo"
+
+#: objcopy.c:3387 objcopy.c:3467 objcopy.c:3575 objcopy.c:3606 objcopy.c:3630
+#: objcopy.c:3634 objcopy.c:3654
+#, c-format
+msgid "bad format for %s"
+msgstr "formato erróneo para %s"
+
+#: objcopy.c:3399
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "no se puede abrir: %s: %s"
+
+#: objcopy.c:3544
+#, 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:3705
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr "opción de nombres de sección largos '%s' desconocida"
+
+#: objcopy.c:3723
+msgid "unable to parse alternative machine code"
+msgstr "no se puede decodificar el código máquina alternativo"
+
+#: objcopy.c:3768
+msgid "number of bytes to reverse must be positive and even"
+msgstr "el número de bytes para reverse debe ser positivo y par"
+
+#: objcopy.c:3771
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr "Aviso: se descarta el valor previo --reverse-bytes de %d"
+
+#: objcopy.c:3786
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr "%s: valor de reserva inválido para --heap"
+
+#: objcopy.c:3792
+#, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr "%s: valor de confirmación inválido para --heap"
+
+#: objcopy.c:3817
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr "%s: valor de reserva inválido para --stack"
+
+#: objcopy.c:3823
+#, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr "%s: valor de confirmación inválido para --stack"
+
+#: objcopy.c:3852
+msgid "interleave start byte must be set with --byte"
+msgstr "el byte de inicio del espacio se debe establecer con --byte"
+
+#: objcopy.c:3855
+msgid "byte number must be less than interleave"
+msgstr "el número de bytes debe ser menor al espacio"
+
+#: objcopy.c:3858
+msgid "interleave width must be less than or equal to interleave - byte`"
+msgstr "la anchura del espacio debe ser menor o igual al espacio para byte`"
+
+#: objcopy.c:3885
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr "objetivo EFI de entrada desconocido: %s"
+
+#: objcopy.c:3916
+#, c-format
+msgid "unknown output EFI target: %s"
+msgstr "objetivo EFI de salida desconocido: %s"
+
+#: objcopy.c:3929
+#, 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:3941
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr "aviso: no se puede crear el fichero temporal al copiar '%s', (error: %s)"
+
+#: objcopy.c:3969 objcopy.c:3983
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s nunca se usa %s%c0x%s"
+
+#: objdump.c:201
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Modo de empleo: %s <opcion(es)> <fichero(s)>\n"
+
+#: objdump.c:202
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr "Muestra la información de <fichero(s)> objeto.\n"
+
+#: objdump.c:203
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr "Se requiere por lo menos una de los siguientes opciones:\n"
+
+#: objdump.c:204
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -P, --private=OPT,OPT... Display object format specific contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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[lLiaprmfFsoRt] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+msgstr ""
+" -a, --archive-headers Muestra información del encabezado del archivo\n"
+" -f, --file-headers Muestra el contenido de todos los encabezados del\n"
+" fichero\n"
+" -P, --private=OPC,OPC... Muestra contenidos específicos del formato objeto\n"
+" -h, --[section-]headers Muestra el contenido de los encabezados de sección\n"
+" -x, --all-headers Muestra el contenido de todos los encabezados\n"
+" -d, --disassemble Muestra el contenido de ensamblador de las secciones\n"
+" ejecutables\n"
+" -D, --disassemble-all Muestra el contenido de ensamblador de todas las\n"
+" secciones\n"
+" -S, --source Entremezcla código fuente con el desensamblado\n"
+" -s, --full-contents Muestra el contenido completo de todas las secciones\n"
+" solicitadas\n"
+" -g, --debugging Muestra la información de depuración en el fichero\n"
+" objeto\n"
+" -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[lLiaprmfFsoRt] o\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+" admitidos\n"
+" -H, --help Muestra esta información\n"
+
+#: objdump.c:236
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" Los siguientes interruptores son opcionales:\n"
+
+#: objdump.c:237
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a single line for -d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+msgstr ""
+" -b, --target=NOMBREBFD Especifica el formato objeto objetivo\n"
+" como NOMBREBFD\n"
+" -m, --architecture=MÃQUINA Especifica la arquitectura objetivo\n"
+" como MÃQUINA\n"
+" -j, --section=NOMBRE Sólo muestra la información de\n"
+" la sección NOMBRE\n"
+" -M, --disassembler-options=OPC Pasa el texto OPC al desensamblador\n"
+" -EB --endian=big Asume el formato big endian al desensamblar\n"
+" -EL --endian=little Asume el formato little endian al desensamblar\n"
+" --file-start-context Incluye el contexto del inicio del fichero\n"
+" (con -S)\n"
+" -I, --include=DIR Agrega el DIRectorio a la lista de búsqueda de\n"
+" ficheros fuente\n"
+" -l, --line-numbers Incluye los números de línea y los nombres\n"
+" de fichero en la salida\n"
+" -F, --file-offsets Incluye desplazamientos de fichero al mostrar\n"
+" la información\n"
+" -C, --demangle[=ESTILO] Decodifica los nombres de símbolo\n"
+" obtenidos/procesados\n"
+" El ESTILO, si se especifica, puede ser\n"
+" `auto', 'gnu', `lucid', `arm', `hp', `edg',\n"
+" `gnu-v3', `java' o `gnat'\n"
+" -w, --wide Da formato a la salida para más de 80 columnas\n"
+" -z, --disassemble-zeroes No salta los bloques de ceros al desensamblar\n"
+" --start-address=DIR Sólo procesa los datos cuya dirección es\n"
+" >= DIR\n"
+" --stop-address=DIR Sólo procesa los datos cuya dirección es\n"
+" <= DIR\n"
+" --prefix-addresses Muestra las direcciones completas a lo largo\n"
+" del desensamblado\n"
+" --[no-]show-raw-insn Muestra en hexadecimal a lo largo\n"
+" del desensamblado simbólico\n"
+" --insn-width=ANCHO Muestra ANCHO bytes en una sola línea con -d\n"
+" --adjust-vma=DESPL Agrega el DESPLazamiento a todas las direcciones\n"
+" mostradas de sección\n"
+" --special-syms Incluye símbolos especiales en los volcados de\n"
+" símbolos\n"
+" --prefix=PREFIJO Agrega el PREFIJO a las rutas absolutas con -S\n"
+" --prefix-strip=NIVEL Descarta los nombres de directorio iniciales\n"
+" con -S\n"
+
+#: objdump.c:263
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+"\n"
+msgstr ""
+" --dwarf-depth=N No muestra DIEs en la profundidad N o mayor\n"
+" --dwarf-start=N Muestra DIEs empezando en N, a la misma\n"
+" profundidad o mayor\n"
+
+#: objdump.c:275
+#, c-format
+msgid ""
+"\n"
+"Options supported for -P/--private switch:\n"
+msgstr ""
+"\n"
+"Opciones admitidas para el interruptor -P/--private:\n"
+
+#: objdump.c:426
+#, c-format
+msgid "section '%s' mentioned in a -j option, but not found in any input file"
+msgstr "la sección '%s' se menciona en una opción -j, pero no se encuentra en ningún fichero de entrada"
+
+#: objdump.c:530
+#, c-format
+msgid "Sections:\n"
+msgstr "Secciones:\n"
+
+#: objdump.c:533 objdump.c:537
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Ind Nombre Tamaño VMA LMA Desp fich Alin"
+
+#: objdump.c:539
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Ind Nombre Tamaño VMA LMA Desp fich Alin"
+
+#: objdump.c:543
+#, c-format
+msgid " Flags"
+msgstr " Opciones"
+
+#: objdump.c:586
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: no es un objeto dinámico"
+
+#: objdump.c:1012 objdump.c:1036
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr " (Desplazamiento Fichero: 0x%lx)"
+
+#: objdump.c:1662
+#, c-format
+msgid "disassemble_fn returned length %d"
+msgstr "disassemble_fn devolvió la longitud %d"
+
+#: objdump.c:1967
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+"\n"
+"Desensamblado de la sección %s:\n"
+
+#: objdump.c:2143
+#, c-format
+msgid "can't use supplied machine %s"
+msgstr "no se puede utilizar la máquina %s proporcionada"
+
+#: objdump.c:2162
+#, c-format
+msgid "can't disassemble for architecture %s\n"
+msgstr "no se puede desensamblar para la arquitectura %s\n"
+
+#: objdump.c:2242 objdump.c:2265
+#, c-format
+msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"No se puede obtener el contenido de la sección '%s'.\n"
+
+#: objdump.c:2406
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"No está presente la sección %s\n"
+"\n"
+
+#: objdump.c:2415
+#, c-format
+msgid "reading %s section of %s failed: %s"
+msgstr "falló al leer la sección %s de %s: %s"
+
+#: objdump.c:2459
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"Contenido de la sección %s:\n"
+"\n"
+
+#: objdump.c:2590
+#, c-format
+msgid "architecture: %s, "
+msgstr "arquitectura: %s, "
+
+#: objdump.c:2593
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "opciones 0x%08x:\n"
+
+#: objdump.c:2607
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"dirección de inicio 0x"
+
+#: objdump.c:2633
+msgid "option -P/--private not supported by this file"
+msgstr "este fichero no admite la opción -P/--private"
+
+#: objdump.c:2657
+#, c-format
+msgid "target specific dump '%s' not supported"
+msgstr "no se admite el volcado específico de destino '%s'"
+
+#: objdump.c:2721
+#, c-format
+msgid "Contents of section %s:"
+msgstr "Contenido de la sección %s:"
+
+#: objdump.c:2723
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr " (Inicia en el desplazamiento de fichero: 0x%lx)"
+
+#: objdump.c:2729
+msgid "Reading section failed"
+msgstr "Falló al leer la sección"
+
+#: objdump.c:2832
+#, c-format
+msgid "no symbols\n"
+msgstr "no hay símbolos\n"
+
+#: objdump.c:2839
+#, 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:2842
+#, 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:3163
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: formato del fichero %s\n"
+
+#: objdump.c:3223
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: falló al mostrar la información de depuración"
+
+#: objdump.c:3327
+#, c-format
+msgid "In archive %s:\n"
+msgstr "En el fichero %s:\n"
+
+#: objdump.c:3438
+msgid "error: the start address should be before the end address"
+msgstr "error: la dirección de inicio debe estar antes de la dirección final"
+
+#: objdump.c:3443
+msgid "error: the stop address should be after the start address"
+msgstr "error: la dirección de parada debe estar después de la dirección final"
+
+#: objdump.c:3455
+msgid "error: prefix strip must be non-negative"
+msgstr "error: el descarte de prefijo no debe ser negativo"
+
+#: objdump.c:3460
+msgid "error: instruction width must be positive"
+msgstr "error: la anchura de la instrucción debe ser positiva"
+
+#: objdump.c:3469
+msgid "unrecognized -E option"
+msgstr "no se reconoce la opción -E"
+
+#: objdump.c:3480
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "no se reconoce el tipo --endian `%s'"
+
+#: od-xcoff.c:75
+#, c-format
+msgid ""
+"For XCOFF files:\n"
+" header Display the file header\n"
+" aout Display the auxiliary header\n"
+" sections Display the section headers\n"
+" syms Display the symbols table\n"
+" relocs Display the relocation entries\n"
+" lineno Display the line number entries\n"
+" loader Display loader section\n"
+" except Display exception table\n"
+" typchk Display type-check section\n"
+" traceback Display traceback tags\n"
+" toc Display toc symbols\n"
+msgstr ""
+"Para ficheros XCOFF:\n"
+" header Muestra el encabezado de fichero\n"
+" aout Muestra el encabezado auxiliar\n"
+" sections Muestra los encabezados de sección\n"
+" syms Muestra la tabla de símbolos\n"
+" relocs Muestra las entradas de reubicación\n"
+" lineno Muestra las entradas de número de línea\n"
+" loader Muestra la sección de cargador\n"
+" except Muestra la tabla de excepción\n"
+" typchk Muestra la sección de revisión de tipo\n"
+" traceback Muestra las etiquetas de rastreo hacia atrás\n"
+" toc Muestra los símbolos de la tabla de contenidos\n"
+
+#: od-xcoff.c:416
+#, c-format
+msgid " nbr sections: %d\n"
+msgstr " secciones nbr: %d\n"
+
+#: od-xcoff.c:417
+#, c-format
+msgid " time and date: 0x%08x - "
+msgstr " hora y fecha: 0x%08x - "
+
+#: od-xcoff.c:419
+#, c-format
+msgid "not set\n"
+msgstr "sin def\n"
+
+#: od-xcoff.c:426
+#, c-format
+msgid " symbols off: 0x%08x\n"
+msgstr " desplaz simb: 0x%08x\n"
+
+#: od-xcoff.c:427
+#, c-format
+msgid " nbr symbols: %d\n"
+msgstr " símbolos nbr: %d\n"
+
+#: od-xcoff.c:428
+#, c-format
+msgid " opt hdr sz: %d\n"
+msgstr " tam enc opc: %d\n"
+
+#: od-xcoff.c:429
+#, c-format
+msgid " flags: 0x%04x "
+msgstr " opciones: 0x%04x "
+
+#: od-xcoff.c:443
+#, c-format
+msgid "Auxiliary header:\n"
+msgstr "Encabezado auxiliar:\n"
+
+#: od-xcoff.c:446
+#, c-format
+msgid " No aux header\n"
+msgstr " Sin enc aux\n"
+
+#: od-xcoff.c:451
+#, c-format
+msgid "warning: optionnal header size too large (> %d)\n"
+msgstr "warning: el tamaño del encabezado opcional es demasiado grande (> %d)\n"
+
+#: od-xcoff.c:457
+msgid "cannot read auxhdr"
+msgstr "no se puede leer encaux"
+
+#: od-xcoff.c:522
+#, c-format
+msgid "Section headers (at %u+%u=0x%08x to 0x%08x):\n"
+msgstr "Encabezados de sección (en %u+%u=0x%08x a 0x%08x):\n"
+
+#: od-xcoff.c:527
+#, c-format
+msgid " No section header\n"
+msgstr " Sin enc de sección\n"
+
+#: od-xcoff.c:532 od-xcoff.c:544 od-xcoff.c:599
+msgid "cannot read section header"
+msgstr "no se puede leer el encabezado de secció"
+
+#: od-xcoff.c:558
+#, c-format
+msgid " Flags: %08x "
+msgstr " Opcs: %08x "
+
+#: od-xcoff.c:566
+#, c-format
+msgid "overflow - nreloc: %u, nlnno: %u\n"
+msgstr "desborde - nreloc: %u, nlnno: %u\n"
+
+#: od-xcoff.c:587 od-xcoff.c:922 od-xcoff.c:978
+msgid "cannot read section headers"
+msgstr "no de pueden leer los encabezados de sección"
+
+#: od-xcoff.c:646
+msgid "cannot read strings table length"
+msgstr "no se puede leer la longitud de la tabla de cadenas"
+
+#: od-xcoff.c:662
+msgid "cannot read strings table"
+msgstr "no se puede leer la tabla de cadenas"
+
+#: od-xcoff.c:670
+msgid "cannot read symbol table"
+msgstr "no se puede leer la tabla de símbolos"
+
+#: od-xcoff.c:685
+msgid "cannot read symbol entry"
+msgstr "no se puede leer la entrada de símbolos"
+
+#: od-xcoff.c:720
+msgid "cannot read symbol aux entry"
+msgstr "no se puede leer la entrada aux de símbolos"
+
+#: od-xcoff.c:742
+#, c-format
+msgid "Symbols table (strtable at 0x%08x)"
+msgstr "Tabla de símbolos (initabla en 0x%08x)"
+
+#: od-xcoff.c:747
+#, c-format
+msgid ""
+":\n"
+" No symbols\n"
+msgstr ""
+":\n"
+" Sin símbolos\n"
+
+#: od-xcoff.c:753
+#, c-format
+msgid " (no strings):\n"
+msgstr " (sin cadenas):\n"
+
+#: od-xcoff.c:755
+#, c-format
+msgid " (strings size: %08x):\n"
+msgstr " (tamaño cadenas: %08x):\n"
+
+#. Translators: 'sc' is for storage class, 'off' for offset.
+#: od-xcoff.c:769
+#, c-format
+msgid " # sc value section type aux name/off\n"
+msgstr " # sc valor seccion tipo aux nom/desp\n"
+
+#. Section length, number of relocs and line number.
+#: od-xcoff.c:821
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+msgstr " scnlon: %08x nreloc: %-6u nlinno: %-6u\n"
+
+#. Section length and number of relocs.
+#: od-xcoff.c:828
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u\n"
+
+#: od-xcoff.c:891
+#, c-format
+msgid "offset: %08x"
+msgstr "despl: %08x"
+
+#: od-xcoff.c:934
+#, c-format
+msgid "Relocations for %s (%u)\n"
+msgstr "Reubicaciones para %s (%u)\n"
+
+#: od-xcoff.c:937
+msgid "cannot read relocations"
+msgstr "no se pueden leer las reubicaciones"
+
+#: od-xcoff.c:950
+msgid "cannot read relocation entry"
+msgstr "no se puede leer la sección de reubicación"
+
+#: od-xcoff.c:990
+#, c-format
+msgid "Line numbers for %s (%u)\n"
+msgstr "Números de línea para %s (%u)\n"
+
+#: od-xcoff.c:993
+msgid "cannot read line numbers"
+msgstr "no se pueden leer los números de línea"
+
+#. Line number, symbol index and physical address.
+#: od-xcoff.c:997
+#, c-format
+msgid "lineno symndx/paddr\n"
+msgstr "numlin simind/pdir\n"
+
+#: od-xcoff.c:1005
+msgid "cannot read line number entry"
+msgstr "no se puede leer la entrada de número de línea"
+
+#: od-xcoff.c:1048
+#, c-format
+msgid "no .loader section in file\n"
+msgstr "no hay sección .loader en el fichero\n"
+
+#: od-xcoff.c:1054
+#, c-format
+msgid "section .loader is too short\n"
+msgstr "la sección .loader es demasiado corta\n"
+
+#: od-xcoff.c:1061
+#, c-format
+msgid "Loader header:\n"
+msgstr "Encabezado de cargador:\n"
+
+#: od-xcoff.c:1063
+#, c-format
+msgid " version: %u\n"
+msgstr " versión: %u\n"
+
+#: od-xcoff.c:1066
+#, c-format
+msgid " Unhandled version\n"
+msgstr " Versión sin manejar\n"
+
+#: od-xcoff.c:1071
+#, c-format
+msgid " nbr symbols: %u\n"
+msgstr " símbolos nbr: %u\n"
+
+#: od-xcoff.c:1073
+#, c-format
+msgid " nbr relocs: %u\n"
+msgstr " reubics nbr: %u\n"
+
+#. Import string table length.
+#: od-xcoff.c:1075
+#, c-format
+msgid " import strtab len: %u\n"
+msgstr " len tabcad import: %u\n"
+
+#: od-xcoff.c:1078
+#, c-format
+msgid " nbr import files: %u\n"
+msgstr " fichs import nbr: %u\n"
+
+#: od-xcoff.c:1080
+#, c-format
+msgid " import file off: %u\n"
+msgstr " desp fich import: %u\n"
+
+#: od-xcoff.c:1082
+#, c-format
+msgid " string table len: %u\n"
+msgstr " lon tabla cadenas: %u\n"
+
+#: od-xcoff.c:1084
+#, c-format
+msgid " string table off: %u\n"
+msgstr " desp tabla cadena: %u\n"
+
+#: od-xcoff.c:1087
+#, c-format
+msgid "Dynamic symbols:\n"
+msgstr "Símbolos dinámicos:\n"
+
+#: od-xcoff.c:1094
+#, c-format
+msgid " %4u %08x %3u "
+msgstr " %4u %08x %3u "
+
+#: od-xcoff.c:1107
+#, c-format
+msgid " %3u %3u "
+msgstr " %3u %3u "
+
+#: od-xcoff.c:1116
+#, c-format
+msgid "(bad offset: %u)"
+msgstr "(desplazamiento erróneo: %u)"
+
+#: od-xcoff.c:1123
+#, c-format
+msgid "Dynamic relocs:\n"
+msgstr "Reubicaciones dinámicas:\n"
+
+#: od-xcoff.c:1163
+#, c-format
+msgid "Import files:\n"
+msgstr "Ficheros de importación:\n"
+
+#: od-xcoff.c:1195
+#, c-format
+msgid "no .except section in file\n"
+msgstr "no hay una sección .except en el fichero\n"
+
+#: od-xcoff.c:1203
+#, c-format
+msgid "Exception table:\n"
+msgstr "Tabla de excepción:\n"
+
+#: od-xcoff.c:1238
+#, c-format
+msgid "no .typchk section in file\n"
+msgstr "no hay una sección .typchk en el fichero\n"
+
+#: od-xcoff.c:1245
+#, c-format
+msgid "Type-check section:\n"
+msgstr "Sección revisión de tipo:\n"
+
+#: od-xcoff.c:1292
+#, c-format
+msgid " address beyond section size\n"
+msgstr " dirección más allá del tamaño de la sección\n"
+
+#: od-xcoff.c:1302
+#, c-format
+msgid " tags at %08x\n"
+msgstr " etiquetas en %08x\n"
+
+#: od-xcoff.c:1380
+#, c-format
+msgid " number of CTL anchors: %u\n"
+msgstr " número de anclas CTL: %u\n"
+
+#: od-xcoff.c:1399
+#, c-format
+msgid " Name (len: %u): "
+msgstr " Nombre (lon: %u): "
+
+#: od-xcoff.c:1402
+#, c-format
+msgid "[truncated]\n"
+msgstr "[truncado]\n"
+
+#: od-xcoff.c:1421
+#, c-format
+msgid " (end of tags at %08x)\n"
+msgstr " (fin de etiquetas en %08x)\n"
+
+#: od-xcoff.c:1424
+#, c-format
+msgid " no tags found\n"
+msgstr " no se encontraron etiquetas\n"
+
+#: od-xcoff.c:1428
+#, c-format
+msgid " Truncated .text section\n"
+msgstr " Sección .text truncada\n"
+
+#: od-xcoff.c:1513
+#, c-format
+msgid "TOC:\n"
+msgstr "TOC:\n"
+
+#: od-xcoff.c:1556
+#, c-format
+msgid "Nbr entries: %-8u Size: %08x (%u)\n"
+msgstr "Entradas nbr: %-8u Tam: %08x (%u)\n"
+
+#: od-xcoff.c:1640
+msgid "cannot read header"
+msgstr "no se puede leer el encabezado"
+
+#: od-xcoff.c:1648
+#, c-format
+msgid "File header:\n"
+msgstr "Fichero encabezado:\n"
+
+#: od-xcoff.c:1649
+#, c-format
+msgid " magic: 0x%04x (0%04o) "
+msgstr " magic: 0x%04x (0%04o) "
+
+#: od-xcoff.c:1653
+#, c-format
+msgid "(WRMAGIC: writable text segments)"
+msgstr " (WRMAGIC: segmentos de texto modificables)"
+
+#: od-xcoff.c:1656
+#, c-format
+msgid "(ROMAGIC: readonly sharablee text segments)"
+msgstr "(ROMAGIC: segmentos de texto compartibles de sólo lectura)"
+
+#: od-xcoff.c:1659
+#, c-format
+msgid "(TOCMAGIC: readonly text segments and TOC)"
+msgstr "(TOCMAGIC: segmentos de texto y TOC de sólo lectura)"
+
+#: od-xcoff.c:1662
+#, c-format
+msgid "unknown magic"
+msgstr "magic desconocida"
+
+#: od-xcoff.c:1669
+#, c-format
+msgid " Unhandled magic\n"
+msgstr " Magic sin manejar\n"
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr "se especificó un valor inválido para el pragma code_page.\n"
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: Código de tipo 0x%x erróneo"
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment falló: %s"
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent falló: %s"
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf sin una función precedente"
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: .ef inesperado\n"
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: no se reconoce la información de depuración"
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "Últimas entradas stabs antes del error:\n"
+
+#: readelf.c:268
+msgid "<none>"
+msgstr "<ninguno>"
+
+#: readelf.c:269
+msgid "<no-name>"
+msgstr "<sin-nomber>"
+
+#: readelf.c:270 readelf.c:5083 readelf.c:5594 readelf.c:8132 readelf.c:8250
+#: readelf.c:9233 readelf.c:9327 readelf.c:9388 readelf.c:12391
+#: readelf.c:12394
+msgid "<corrupt>"
+msgstr "<corrupto>"
+
+#: readelf.c:309
+#, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "No se puede buscar a 0x%lx para %s\n"
+
+#: readelf.c:324
+#, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Memoria agotada al asignar 0x%lx bytes para %s\n"
+
+#: readelf.c:334
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "No se pueden leer 0x%lx bytes de %s\n"
+
+#: readelf.c:638
+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:659 readelf.c:757
+msgid "32-bit relocation data"
+msgstr "datos de reubicación de 32-bit"
+
+#: readelf.c:671 readelf.c:701 readelf.c:768 readelf.c:797
+msgid "out of memory parsing relocs\n"
+msgstr "memoria agotada al decodificar reubicaciones\n"
+
+#: readelf.c:689 readelf.c:786
+msgid "64-bit relocation data"
+msgstr "datos de reubicación de 64-bit"
+
+#: readelf.c:902
+#, 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:904
+#, 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:909
+#, 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:911
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " Desplaz Info Tipo Val.Símbolo Nom. Símbolo\n"
+
+#: readelf.c:919
+#, 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:921
+#, 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:926
+#, 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:928
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " Desplaz Info Tipo Val. Símbolo Nom. Símbolo\n"
+
+#: readelf.c:1245 readelf.c:1405 readelf.c:1413
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "no se reconoce: %-7lx"
+
+#: readelf.c:1270
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<agregado desconocido: %lx>"
+
+#: readelf.c:1277
+#, c-format
+msgid " bad symbol index: %08lx"
+msgstr "índice de símbolos erróneo: %08lx"
+
+#: readelf.c:1363
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr "<índice de la tabla de cadenas: %3ld>"
+
+#: readelf.c:1365
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<índice de la tabla de cadenas corrupto: %3ld>"
+
+#: readelf.c:1758
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "Específico del Procesador: %lx"
+
+#: readelf.c:1782
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "específico del Sistema Operativo: %lx"
+
+#: readelf.c:1786 readelf.c:2858
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<desconocido>: %lx"
+
+#: readelf.c:1799
+msgid "NONE (None)"
+msgstr "NONE (Ninguno)"
+
+#: readelf.c:1800
+msgid "REL (Relocatable file)"
+msgstr "REL (Fichero reubicable)"
+
+#: readelf.c:1801
+msgid "EXEC (Executable file)"
+msgstr "EXEC (Fichero ejecutable)"
+
+#: readelf.c:1802
+msgid "DYN (Shared object file)"
+msgstr "DYN (Fichero objeto compartido)"
+
+#: readelf.c:1803
+msgid "CORE (Core file)"
+msgstr "CORE (Fichero núcleo)"
+
+#: readelf.c:1807
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "Específico del Procesador: (%x)"
+
+#: readelf.c:1809
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "Específico del SO: (%x)"
+
+#: readelf.c:1811
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<desconocido>: %x"
+
+#: readelf.c:1823
+msgid "None"
+msgstr "Ninguno"
+
+#: readelf.c:1994
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr "<desconocido>: 0x%x"
+
+#: readelf.c:2180
+msgid ", <unknown>"
+msgstr ", <desconocido>"
+
+#: readelf.c:2266 readelf.c:7485
+msgid "unknown"
+msgstr "desconocido"
+
+#: readelf.c:2267
+msgid "unknown mac"
+msgstr "mac desconocida"
+
+#: readelf.c:2331
+msgid ", relocatable"
+msgstr ", reubicable"
+
+#: readelf.c:2334
+msgid ", relocatable-lib"
+msgstr ", bib reubicable"
+
+#: readelf.c:2357
+msgid ", unknown v850 architecture variant"
+msgstr ", variante de arquitectura v850 desconocida"
+
+#: readelf.c:2414
+msgid ", unknown CPU"
+msgstr ", CPU desconocido"
+
+#: readelf.c:2429
+msgid ", unknown ABI"
+msgstr ", ABI desconocida"
+
+#: readelf.c:2452 readelf.c:2486
+msgid ", unknown ISA"
+msgstr ", ISA desconocida"
+
+#: readelf.c:2663
+msgid "Standalone App"
+msgstr "Aplicación por Sí Sola"
+
+#: readelf.c:2672
+msgid "Bare-metal C6000"
+msgstr "C6000 sólo-metal"
+
+#: readelf.c:2682 readelf.c:3471 readelf.c:3487
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<desconocido: %x>"
+
+#. This message is probably going to be displayed in a 15
+#. character wide field, so put the hex value first.
+#: readelf.c:3108
+#, c-format
+msgid "%08x: <unknown>"
+msgstr "%08x: <desconocido>"
+
+#: readelf.c:3163
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Modo de empleo: readelf <opcion(es)> fichero(s)-elf\n"
+
+#: readelf.c:3164
+#, 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:3165
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" --dyn-syms Display the dynamic symbol table\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as relocated bytes\n"
+" -w[lLiaprmfFsoRt] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" Las opciones son:\n"
+" -a --all Equivalente a: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Muestra el encabezado del fichero ELF\n"
+" -l --program-headers Muestra los encabezados del programa\n"
+" --segments Un alias para --program-headers\n"
+" -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"
+" --dyn-syms Muestra la tabla de símbolos dinámicos\n"
+" -n --notes Muestra las notas de núcleo (si están presentes)\n"
+" -r --relocs Muestra las reubicaciones (si están presentes)\n"
+" -u --unwind Muestra la información de desenredo (si está presente)\n"
+" -d --dynamic Muestra la seccion dinámica (si está presente)\n"
+" -V --version-info Muestra las secciones de versión (si están presentes)\n"
+" -A --arch-specific Muestra la información específica de la arquitectura\n"
+" (si hay alguna).\n"
+" -c --archive-index Muestra el índice de símbolos/ficheros en un archivo\n"
+" -D --use-dynamic Usa la información de la sección dinámica cuando\n"
+" muestra símbolos\n"
+" -x --hex-dump=<número|nombre>\n"
+" Vuelca el contenido de la sección <número|nombre>\n"
+" como bytes\n"
+" -p --string-dump=<número|nombre>\n"
+" Vuelca el contenido de la sección <número|nombre>\n"
+" como cadenas\n"
+" -R --relocated-dump=<número|nombre>\n"
+" Vuelca el contenido de la sección <número|nombre>\n"
+" como bytes reubicados\n"
+" -w[lLiaprmfFsoRt] o\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Muestra el contenido de las secciones de depuración\n"
+" DWARF2\n"
+
+#: readelf.c:3197
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+msgstr ""
+" --dwarf-depth=N No muestra DIEs a la profundidad N o mayor\n"
+" --dwarf-start=N Muestra DIEs iniciando con N, a la misma\n"
+" profundidad o mayor\n"
+
+#: readelf.c:3202
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+" -i --instruction-dump=<número|nombre>\n"
+" Desensambla el contenido de la sección <número|nombre>\n"
+
+#: readelf.c:3206
+#, 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:3235 readelf.c:3264 readelf.c:3268 readelf.c:13623
+msgid "Out of memory allocating dump request table.\n"
+msgstr "Memoria agotada al asignar la tabla de petición de volcado.\n"
+
+#: readelf.c:3440
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Opción '-%c' inválida\n"
+
+#: readelf.c:3455
+msgid "Nothing to do.\n"
+msgstr "Nada por hacer.\n"
+
+#: readelf.c:3467 readelf.c:3483 readelf.c:8068
+msgid "none"
+msgstr "ninguno"
+
+#: readelf.c:3484
+msgid "2's complement, little endian"
+msgstr "complemento a 2, little endian"
+
+#: readelf.c:3485
+msgid "2's complement, big endian"
+msgstr "complemento a 2, big endian"
+
+#: readelf.c:3503
+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:3513
+#, c-format
+msgid "ELF Header:\n"
+msgstr "Encabezado ELF:\n"
+
+#: readelf.c:3514
+#, c-format
+msgid " Magic: "
+msgstr " Mágico: "
+
+#: readelf.c:3518
+#, c-format
+msgid " Class: %s\n"
+msgstr " Clase: %s\n"
+
+#: readelf.c:3520
+#, c-format
+msgid " Data: %s\n"
+msgstr " Datos: %s\n"
+
+#: readelf.c:3522
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " Versión: %d %s\n"
+
+#: readelf.c:3527
+#, c-format
+msgid "<unknown: %lx>"
+msgstr "<desconocido: %lx>"
+
+#: readelf.c:3529
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS/ABI: %s\n"
+
+#: readelf.c:3531
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " Versión ABI: %d\n"
+
+#: readelf.c:3533
+#, c-format
+msgid " Type: %s\n"
+msgstr " Tipo: %s\n"
+
+#: readelf.c:3535
+#, c-format
+msgid " Machine: %s\n"
+msgstr " Máquina: %s\n"
+
+#: readelf.c:3537
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " Versión: 0x%lx\n"
+
+#: readelf.c:3540
+#, c-format
+msgid " Entry point address: "
+msgstr " Dirección del punto de entrada: "
+
+#: readelf.c:3542
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" Inicio de encabezados de programa: "
+
+#: readelf.c:3544
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (bytes en el fichero)\n"
+" Inicio de encabezados de sección: "
+
+#: readelf.c:3546
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (bytes en el fichero)\n"
+
+#: readelf.c:3548
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Opciones: 0x%lx%s\n"
+
+#: readelf.c:3551
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " Tamaño de este encabezado: %ld (bytes)\n"
+
+#: readelf.c:3553
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " Tamaño de encabezados de programa: %ld (bytes)\n"
+
+#: readelf.c:3555
+#, c-format
+msgid " Number of program headers: %ld"
+msgstr " Número de encabezados de programa: %ld"
+
+#: readelf.c:3562
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " Tamaño de encabezados de sección: %ld (bytes)\n"
+
+#: readelf.c:3564
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " Número de encabezados de sección: %ld"
+
+#: readelf.c:3569
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " Ãndice de tabla de cadenas de sección de encabezado: %ld"
+
+#: readelf.c:3576
+#, c-format
+msgid " <corrupt: out of range>"
+msgstr " <corrupto: fuera de rango>"
+
+#: readelf.c:3610 readelf.c:3644
+msgid "program headers"
+msgstr "encabezados de programa"
+
+#: readelf.c:3711
+msgid "possibly corrupt ELF header - it has a non-zero program header offset, but no program headers"
+msgstr "encabezado ELF posiblemente corrupto - tiene un desplazamiento de encabezado de programa que no es cero, pero no tiene encabezados de programa"
+
+#: readelf.c:3714
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"No hay encabezados de programa en este fichero.\n"
+
+#: readelf.c:3720
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"El tipo del fichero elf es %s\n"
+
+#: readelf.c:3721
+#, c-format
+msgid "Entry point "
+msgstr "Punto de entrada "
+
+#: readelf.c:3723
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"Hay %d encabezados de programa, empezando en el desplazamiento "
+
+#: readelf.c:3735 readelf.c:3737
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"Encabezados de Programa:\n"
+
+#: readelf.c:3741
+#, 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:3744
+#, 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:3748
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " Tipo Desplazamiento DirVirtual DirFísica\n"
+
+#: readelf.c:3750
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " TamFichero TamMemoria Opts Alineación\n"
+
+#: readelf.c:3843
+msgid "more than one dynamic segment\n"
+msgstr "más de un segmento dinámico\n"
+
+#: readelf.c:3862
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr "no hay una sección .dynamic en el segmento dinámico\n"
+
+#: readelf.c:3877
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr "la sección .dynamic no está contenida en el segmento dinámico\n"
+
+#: readelf.c:3880
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr "la sección .dynamic no es la primera sección en el segmento dinámico.\n"
+
+#: readelf.c:3888
+msgid "Unable to find program interpreter name\n"
+msgstr "No se puede encontrar el nombre del intérprete de programa\n"
+
+#: readelf.c:3895
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr "Error interno: no se puede crear la cadena de formato para mostrar el intérprete de programa\n"
+
+#: readelf.c:3899
+msgid "Unable to read program interpreter name\n"
+msgstr "No se puede leer el nombre del intérprete de programa\n"
+
+#: readelf.c:3902
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [Se solicita el intérprete de programa: %s]"
+
+#: readelf.c:3914
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" mapeo de Sección a Segmento:\n"
+
+#: readelf.c:3915
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " Segmento Secciones...\n"
+
+#: readelf.c:3951
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "No se pueden interpretar direcciones virtuales sin encabezados de programa.\n"
+
+#: readelf.c:3967
+#, 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:3982 readelf.c:4025
+msgid "section headers"
+msgstr "encabezados de sección"
+
+#: readelf.c:4074 readelf.c:4154
+msgid "sh_entsize is zero\n"
+msgstr "sh_entsize es cero\n"
+
+#: readelf.c:4082 readelf.c:4162
+msgid "Invalid sh_entsize\n"
+msgstr "sh_entsize inválido\n"
+
+#: readelf.c:4087 readelf.c:4167
+msgid "symbols"
+msgstr "símbolos"
+
+#: readelf.c:4099 readelf.c:4178
+msgid "symbol table section indicies"
+msgstr "índices de la sección de tabla de símbolos"
+
+#: readelf.c:4439
+#, c-format
+msgid "UNKNOWN (%*.*lx)"
+msgstr "DESCONOCIDO (%*.*lx)"
+
+#: readelf.c:4461
+msgid "possibly corrupt ELF file header - it has a non-zero section header offset, but no section headers\n"
+msgstr "encabezado de fichero ELF probablemente corrupto - tiene un desplazamiento de encabezado de sección que no es cero, pero no tiene encabezados de sección\n"
+
+#: readelf.c:4464
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"No hay secciones en este fichero.\n"
+
+#: readelf.c:4470
+#, 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:4491 readelf.c:5079 readelf.c:5491 readelf.c:5797 readelf.c:6210
+#: readelf.c:7093 readelf.c:9213
+msgid "string table"
+msgstr "tabla de cadenas"
+
+#: readelf.c:4558
+#, 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:4578
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "El fichero contiene múltiples tablas dinámicas de símbolos\n"
+
+#: readelf.c:4590
+msgid "File contains multiple dynamic string tables\n"
+msgstr "El fichero contiene múltiples tablas dinámicas de cadenas\n"
+
+#: readelf.c:4596
+msgid "dynamic strings"
+msgstr "cadenas dinámicas"
+
+#: readelf.c:4603
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "El fichero contiene múltiples tablas symtab shndx\n"
+
+#: readelf.c:4674
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"Encabezados de Sección:\n"
+
+#: readelf.c:4676
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"Encabezados de Sección:\n"
+
+#: readelf.c:4682 readelf.c:4693 readelf.c:4704
+#, c-format
+msgid " [Nr] Name\n"
+msgstr " [Nr] Nombre\n"
+
+#: readelf.c:4683
+#, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr " Tipo Direc Desp Tam ES En Inf Al\n"
+
+#: readelf.c:4687
+#, 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:4694
+#, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr " Tipo Direc Desp Tam ES En Inf Al\n"
+
+#: readelf.c:4698
+#, 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:4705
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr " Tipo Dirección Despl Enl\n"
+
+#: readelf.c:4706
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr " Tamaño TamEnt Info Alin\n"
+
+#: readelf.c:4710
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [Nr] Nombre Tipo Dirección Despl\n"
+
+#: readelf.c:4711
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " Tamaño TamEnt Opts Enl Info Alin\n"
+
+#: readelf.c:4716
+#, c-format
+msgid " Flags\n"
+msgstr " Opciones\n"
+
+#: readelf.c:4796
+#, c-format
+msgid "section %u: sh_link value of %u is larger than the number of sections\n"
+msgstr "sección %u: el valor sh_link de %u es mayor que el número de secciones\n"
+
+#: readelf.c:4896
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Clave para Opciones:\n"
+" W (escribir), A (asignar), X (ejecutar), M (mezclar), S (cadenas)\n"
+" l (grande), I (info), L (orden enlazado), G (grupo), T (TLS), E (excluir)\n"
+" x (desconocido), O (se requiere procesamiento extra del SO)\n"
+" o (específico del SO), p (específico del procesador)\n"
+
+#: readelf.c:4901
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Clave para Opciones:\n"
+" W (escribir), A (asignar), X (ejecutar), M (mezclar), S (cadenas)\n"
+" I (info), L (orden enlazado), G (grupo), T (TLS), E (excluir)\n"
+" x (desconocido), O (se requiere procesamiento extra del SO)\n"
+" o (específico del SO), p (específico del procesador)\n"
+
+#: readelf.c:4923
+#, c-format
+msgid "[<unknown>: 0x%x] "
+msgstr "[<desconocido>: 0x%x] "
+
+#: readelf.c:4949
+#, c-format
+msgid ""
+"\n"
+"There are no sections to group in this file.\n"
+msgstr ""
+"\n"
+"No hay secciones para agrupar en este fichero.\n"
+
+#: readelf.c:4956
+msgid "Section headers are not available!\n"
+msgstr "¡Los encabezados de sección no están disponibles!\n"
+
+#: readelf.c:4980
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"No hay grupos de sección en este fichero.\n"
+
+#: readelf.c:5018
+#, 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:5032
+#, c-format
+msgid "Corrupt header in group section `%s'\n"
+msgstr "Encabezado corrupto en la sección de grupo `%s'\n"
+
+#: readelf.c:5038 readelf.c:5049
+#, 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:5088
+msgid "section data"
+msgstr "datos de sección"
+
+#: readelf.c:5099
+#, c-format
+msgid ""
+"\n"
+"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
+msgstr ""
+"\n"
+"%sla sección de grupo [%5u] `%s' [%s] contiene %u secciones:\n"
+
+#: readelf.c:5102
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [Ãndice] Nombre\n"
+
+#: readelf.c:5116
+#, c-format
+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:5125
+#, 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:5138
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr "sección 0 en la sección de grupo [%5u]\n"
+
+#: readelf.c:5205
+msgid "dynamic section image fixups"
+msgstr "composturas de imagen de sección dinámica"
+
+#: readelf.c:5217
+#, c-format
+msgid ""
+"\n"
+"Image fixups for needed library #%d: %s - ident: %lx\n"
+msgstr ""
+"\n"
+"Composturas de imagen para la biblioteca requerida #%d: %s - ident: %lx\n"
+
+#: readelf.c:5220
+#, c-format
+msgid "Seg Offset Type SymVec DataType\n"
+msgstr "Seg Desplaz Tipo VecSim TipoDato\n"
+
+#: readelf.c:5252
+msgid "dynamic section image relocations"
+msgstr "reubicaciones de imagen de sección dinámica"
+
+#: readelf.c:5256
+#, c-format
+msgid ""
+"\n"
+"Image relocs\n"
+msgstr ""
+"\n"
+"Reubicaciones de imagen\n"
+
+#: readelf.c:5258
+#, c-format
+msgid "Seg Offset Type Addend Seg Sym Off\n"
+msgstr "Seg Desplaz Tipo Addend Seg Sim Des\n"
+
+#: readelf.c:5313
+msgid "dynamic string section"
+msgstr "sección de cadenas dinámicas"
+
+#: readelf.c:5414
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"'%s' la sección de reubicación en el desplazamiento 0x%lx contiene %ld bytes:\n"
+
+#: readelf.c:5429
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"No hay reubicaciones dinámicas en este fichero.\n"
+
+#: readelf.c:5453
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"La sección de reubicación "
+
+#: readelf.c:5460 readelf.c:5890 readelf.c:6227
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " en el desplazamiento 0x%lx contiene %lu entradas:\n"
+
+#: readelf.c:5510
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"No hay reubicaciones en este fichero.\n"
+
+#: readelf.c:5648
+#, c-format
+msgid "\tUnknown version.\n"
+msgstr "\tVersión desconocida.\n"
+
+#: readelf.c:5701 readelf.c:6074
+msgid "unwind table"
+msgstr "tabla desenredada"
+
+#: readelf.c:5743 readelf.c:6156 readelf.c:6415
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Se salta el tipo de reubicación %s inesperado\n"
+
+#: readelf.c:5805 readelf.c:6218 readelf.c:7101 readelf.c:7148
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"No hay secciones de desenredo en este fichero.\n"
+
+#: readelf.c:5868
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"No se puede encontrar la sección de información de desenredo para "
+
+#: readelf.c:5873 readelf.c:5888 readelf.c:6225
+#, c-format
+msgid "'%s'"
+msgstr "'%s'"
+
+#: readelf.c:5880
+msgid "unwind info"
+msgstr "información de desenredo"
+
+#: readelf.c:5883 readelf.c:6224
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"Sección de desenredo "
+
+#: readelf.c:6333
+msgid "unwind data"
+msgstr "datos desenredados"
+
+#: readelf.c:6386
+#, c-format
+msgid "Skipping unexpected relocation at offset 0x%lx\n"
+msgstr ""
+"Se salta la reubicación inesperada en el desplazamiento 0x%lx\n"
+"\n"
+
+#: readelf.c:6490
+#, c-format
+msgid "[Truncated opcode]\n"
+msgstr "[Codigo de operación truncado]\n"
+
+#: readelf.c:6534 readelf.c:6734
+#, c-format
+msgid "Refuse to unwind"
+msgstr "Se niega a desenredar"
+
+#: readelf.c:6557
+#, c-format
+msgid " [Reserved]"
+msgstr " [Reservado]"
+
+#: readelf.c:6585
+#, c-format
+msgid " finish"
+msgstr " terminar"
+
+#: readelf.c:6590 readelf.c:6676
+#, c-format
+msgid "[Spare]"
+msgstr "[Libre]"
+
+#: readelf.c:6697 readelf.c:6831
+#, c-format
+msgid " [unsupported opcode]"
+msgstr " [no se admite el código de operación]"
+
+#: readelf.c:6781
+#, c-format
+msgid "pop frame {"
+msgstr "marco pop {"
+
+#: readelf.c:6792
+msgid "[pad]"
+msgstr "[relleno]"
+
+#: readelf.c:6820
+#, c-format
+msgid "sp = sp + %ld"
+msgstr "sp = sp + %ld"
+
+#: readelf.c:6878
+#, c-format
+msgid " Personality routine: "
+msgstr " Rutina de personalidad: "
+
+#: readelf.c:6896
+#, c-format
+msgid " [Truncated data]\n"
+msgstr " [Datos truncados]\n"
+
+#: readelf.c:6911
+#, c-format
+msgid " Compact model %d\n"
+msgstr " Modelo compacto %d\n"
+
+#: readelf.c:6947
+#, c-format
+msgid " Restore stack from frame pointer\n"
+msgstr " Restaurar pila desde el puntero de marco\n"
+
+#: readelf.c:6949
+#, c-format
+msgid " Stack increment %d\n"
+msgstr " Incremento de pila %d\n"
+
+#: readelf.c:6950
+#, c-format
+msgid " Registers restored: "
+msgstr " Registros restaurados: "
+
+#: readelf.c:6955
+#, c-format
+msgid " Return register: %s\n"
+msgstr " Registro de devolución: %s\n"
+
+#: readelf.c:7038
+#, c-format
+msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
+msgstr "No se puede ubicar la sección .ARM.extab que contiene 0x%lx.\n"
+
+#: readelf.c:7107
+#, c-format
+msgid ""
+"\n"
+"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+"\n"
+"El índice de tabla de desenredo '%s' en el desplazamiento 0x%lx contiene %lu entradas:\n"
+
+#: readelf.c:7159
+#, c-format
+msgid "NONE\n"
+msgstr "NINGUNO\n"
+
+#: readelf.c:7185
+#, c-format
+msgid "Interface Version: %s\n"
+msgstr "Versión de Interfaz: %s\n"
+
+#: readelf.c:7187
+#, c-format
+msgid "<corrupt: %ld>\n"
+msgstr "<corrupto: %ld>\n"
+
+#: readelf.c:7200
+#, c-format
+msgid "Time Stamp: %s\n"
+msgstr "Marca de Tiempo: %s\n"
+
+#: readelf.c:7377 readelf.c:7423
+msgid "dynamic section"
+msgstr "sección dinámica"
+
+#: readelf.c:7501
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"No hay sección dinámica en este fichero.\n"
+
+#: readelf.c:7539
+msgid "Unable to seek to end of file!\n"
+msgstr "¡No se puede alcanzar el final del fichero!\n"
+
+#: readelf.c:7552
+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:7585
+msgid "Unable to seek to end of file\n"
+msgstr "No se puede alcanzar el final del fichero\n"
+
+#: readelf.c:7592
+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:7598
+msgid "dynamic string table"
+msgstr "tabla de cadena dinámicas"
+
+#: readelf.c:7635
+msgid "symbol information"
+msgstr "información del símbolo"
+
+#: readelf.c:7660
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"La sección dinámica en el desplazamiento 0x%lx contiene %u entradas:\n"
+
+#: readelf.c:7663
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " Marca Tipo Nombre/Valor\n"
+
+#: readelf.c:7699
+#, c-format
+msgid "Auxiliary library"
+msgstr "Biblioteca auxiliar"
+
+#: readelf.c:7703
+#, c-format
+msgid "Filter library"
+msgstr "Biblioteca de filtro"
+
+#: readelf.c:7707
+#, c-format
+msgid "Configuration file"
+msgstr "Fichero de configuración"
+
+#: readelf.c:7711
+#, c-format
+msgid "Dependency audit library"
+msgstr "Biblioteca de auditoría de dependencias"
+
+#: readelf.c:7715
+#, c-format
+msgid "Audit library"
+msgstr "Biblioteca de auditoría"
+
+#: readelf.c:7733 readelf.c:7761 readelf.c:7789
+#, c-format
+msgid "Flags:"
+msgstr "Opciones:"
+
+#: readelf.c:7736 readelf.c:7764 readelf.c:7791
+#, c-format
+msgid " None\n"
+msgstr " Ninguna\n"
+
+#: readelf.c:7912
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Biblioteca compartida: [%s]"
+
+#: readelf.c:7915
+#, c-format
+msgid " program interpreter"
+msgstr " programa intérprete"
+
+#: readelf.c:7919
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "Nombre-so de la biblioteca: [%s]"
+
+#: readelf.c:7923
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "Rpath de la biblioteca: [%s]"
+
+#: readelf.c:7927
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "Ruta de ejecución de la biblioteca: [%s]"
+
+#: readelf.c:7960
+#, c-format
+msgid " (bytes)\n"
+msgstr " (bytes)\n"
+
+#: readelf.c:7990
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Objeto innecesario: [%s]\n"
+
+#: readelf.c:8090
+msgid "| <unknown>"
+msgstr "| <desconocido>"
+
+#: readelf.c:8123
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"La sección de definición de versión '%s' contiene %u entradas:\n"
+
+#: readelf.c:8126
+#, c-format
+msgid " Addr: 0x"
+msgstr " Dir: 0x"
+
+#: readelf.c:8128 readelf.c:8246 readelf.c:8390
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr " Despl: %#08lx Enl: %u (%s)\n"
+
+#: readelf.c:8136
+msgid "version definition section"
+msgstr "sección de definición de versión"
+
+#: readelf.c:8169
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: Rev: %d Opts: %s"
+
+#: readelf.c:8172
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " Ind: %d Cnt: %d "
+
+#: readelf.c:8188
+#, c-format
+msgid "Name: %s\n"
+msgstr "Nombre: %s\n"
+
+#: readelf.c:8190
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Ãndice de nombres: %ld\n"
+
+#: readelf.c:8212
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: Padre %d: %s\n"
+
+#: readelf.c:8215
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: Padre %d, índice de nombres: %ld\n"
+
+#: readelf.c:8220
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr " Versión def aux después del final de la sección\n"
+
+#: readelf.c:8226
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr " Definición de versión después del final de la sección\n"
+
+#: readelf.c:8241
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"La sección de requerimientos de versión '%s' contiene %u entradas:\n"
+
+#: readelf.c:8244
+#, c-format
+msgid " Addr: 0x"
+msgstr " Dir: 0x"
+
+#: readelf.c:8255
+msgid "Version Needs section"
+msgstr "sección Requerimientos de Versión"
+
+#: readelf.c:8283
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: Versión: %d"
+
+#: readelf.c:8286
+#, c-format
+msgid " File: %s"
+msgstr " Fichero: %s"
+
+#: readelf.c:8288
+#, c-format
+msgid " File: %lx"
+msgstr " Fichero: %lx"
+
+#: readelf.c:8290
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " Cnt: %d\n"
+
+#: readelf.c:8315
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: Nombre: %s"
+
+#: readelf.c:8318
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: Ãndice de nombres: %lx"
+
+#: readelf.c:8321
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Opts: %s Versión: %d\n"
+
+#: readelf.c:8334
+msgid "Missing Version Needs auxillary information\n"
+msgstr "Falta la información auxiliar de Requerimientos de Versión\n"
+
+#: readelf.c:8340
+msgid "Missing Version Needs information\n"
+msgstr "Falta la información de Requerimientos de Versión\n"
+
+#: readelf.c:8378
+msgid "version string table"
+msgstr "tabla de cadenas de versión"
+
+#: readelf.c:8385
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"La sección de símbolos de versión '%s' contiene %d entradas:\n"
+
+#: readelf.c:8388
+#, c-format
+msgid " Addr: "
+msgstr " Dir: "
+
+#: readelf.c:8399
+msgid "version symbol data"
+msgstr "datos de símbolos de versión"
+
+#: readelf.c:8427
+msgid " 0 (*local*) "
+msgstr " 0 (*local*) "
+
+#: readelf.c:8431
+msgid " 1 (*global*) "
+msgstr " 1 (*global*) "
+
+#: readelf.c:8442
+msgid "invalid index into symbol array\n"
+msgstr "índice inválido en la matriz de símbolos\n"
+
+#: readelf.c:8476 readelf.c:9279
+msgid "version need"
+msgstr "la versión necesita"
+
+#: readelf.c:8487
+msgid "version need aux (2)"
+msgstr "la versión necesita aux (2)"
+
+#: readelf.c:8508 readelf.c:8570
+msgid "*invalid*"
+msgstr "*inválido*"
+
+#: readelf.c:8538 readelf.c:9357
+msgid "version def"
+msgstr "versión definida"
+
+#: readelf.c:8564 readelf.c:9379
+msgid "version def aux"
+msgstr "versión definida auxiliar"
+
+#: readelf.c:8599
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"No se encontró información de versión en este fichero.\n"
+
+#: readelf.c:8807
+#, c-format
+msgid "<other>: %x"
+msgstr "<otro>: %x"
+
+#: readelf.c:8869
+msgid "Unable to read in dynamic data\n"
+msgstr "No se pueden leer los datos dinámicos\n"
+
+#: readelf.c:8919
+#, c-format
+msgid " <corrupt: %14ld>"
+msgstr " <corrupto: %14ld>"
+
+#: readelf.c:8962 readelf.c:9014 readelf.c:9038 readelf.c:9068 readelf.c:9092
+msgid "Unable to seek to start of dynamic information\n"
+msgstr "No se puede encontrar el inicio de la información dinámica\n"
+
+#: readelf.c:8968 readelf.c:9020
+msgid "Failed to read in number of buckets\n"
+msgstr "Falló al leer el número de cubos\n"
+
+#: readelf.c:8974
+msgid "Failed to read in number of chains\n"
+msgstr "Falló al leer el número de cadenas\n"
+
+#: readelf.c:9076
+msgid "Failed to determine last chain length\n"
+msgstr "No se puede determinar la longitud de la última cadena\n"
+
+#: readelf.c:9120
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"Tabla de símbolos por imagen:\n"
+
+#: readelf.c:9122 readelf.c:9140
+#, 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:9124 readelf.c:9142
+#, 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:9138
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+"\n"
+"Tabla de símbolos de `.gnu.hash' para la imagen:\n"
+
+#: readelf.c:9182
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' has a sh_entsize of zero!\n"
+msgstr ""
+"\n"
+"¡La tabla de símbolos '%s' tiene un sh_entsize de cero!\n"
+
+#: readelf.c:9187
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"La tabla de símbolos '%s' contiene %lu entradas:\n"
+
+#: readelf.c:9192
+#, 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:9194
+#, 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:9249
+msgid "version data"
+msgstr "datos de versión"
+
+#: readelf.c:9298
+msgid "version need aux (3)"
+msgstr "la versión necesita aux (3)"
+
+#: readelf.c:9332
+msgid "bad dynamic symbol\n"
+msgstr "símbolo dinámico erróneo\n"
+
+#: readelf.c:9404
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"La información de símbolos dinámicos no está disponible para mostrar los símbolos.\n"
+
+#: readelf.c:9416
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Histograma para la longitud de lista de cubos (total de %lu cubos):\n"
+
+#: readelf.c:9418 readelf.c:9488
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " Long Número %% del total Cobertura\n"
+
+#: readelf.c:9486
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Histograma para la longitud de lista de cubos `.gnu.hash' (total de %lu cubos):\n"
+
+#: readelf.c:9552
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"El segmento de información dinámica en el desplazamiento 0x%lx contiene %d entradas:\n"
+
+#: readelf.c:9555
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr " Num: Nombre EnlaceA Opts\n"
+
+#: readelf.c:9564
+#, c-format
+msgid "<corrupt: %19ld>"
+msgstr "<corrupto: %19ld>"
+
+#: readelf.c:9646
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr "Se encontró un tipo de reubicación MN10300 sin manejar después de la reubicación SYM_DIFF"
+
+#: readelf.c:9813
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr "Falta el conocimiento de los tipos de reubicación de 32-bit usados en las secciones DWARF del número de máquina %d\n"
+
+#: readelf.c:10138
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr "no se puede aplicar el tipo de reubicación no admitido %d a la sección %s\n"
+
+#: readelf.c:10146
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "se salta el desplazamiento de reubicación inválido 0x%lx en la sección %s\n"
+
+#: readelf.c:10155
+#, c-format
+msgid "skipping invalid relocation symbol index 0x%lx in section %s\n"
+msgstr "se salta el índice de símbolo de reubicación inválido 0x%lx en la sección %s\n"
+
+#: readelf.c:10177
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr "se salta el tipo de símbolo %s inesperado en la %ld-ésima reubicación en la sección %s\n"
+
+#: readelf.c:10223
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"Volcado ensamblador de la sección %s\n"
+
+#: readelf.c:10244
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"La sección '%s' no tiene datos para volcar.\n"
+
+#: readelf.c:10250
+msgid "section contents"
+msgstr "contenido de la sección"
+
+#: readelf.c:10269
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+"\n"
+"Volcado de cadenas de la sección '%s':\n"
+
+#: readelf.c:10287
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " Nota: Esta sección tiene reubicaciones contra ella, pero NO se han aplicado a este volcado.\n"
+
+#: readelf.c:10318
+#, c-format
+msgid " No strings found in this section."
+msgstr " No se encontraron cadenas en esta sección."
+
+#: readelf.c:10340
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"Volcado hexadecimal de la sección '%s':\n"
+
+#: readelf.c:10364
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " NOTA: Esta sección tiene reubicaciones contra ella, pero NO se han aplicado a este volcado.\n"
+
+#: readelf.c:10498
+#, c-format
+msgid "%s section data"
+msgstr "datos de sección %s"
+
+#: readelf.c:10568
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+"\n"
+"La sección '%s' no tiene datos de depuración.\n"
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:10577
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr "la sección '%s' tiene el tipo NOBITS - su contenido no es confiable.\n"
+
+#: readelf.c:10613
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "No se reconoce la sección de depuración: %s\n"
+
+#: readelf.c:10641
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr "¡La sección '%s' no se volcó porque no existe!\n"
+
+#: readelf.c:10682
+#, 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:10860 readelf.c:10874 readelf.c:10893 readelf.c:11293
+#, c-format
+msgid "None\n"
+msgstr " Ninguna\n"
+
+#: readelf.c:10861
+#, c-format
+msgid "Application\n"
+msgstr "Aplicación\n"
+
+#: readelf.c:10862
+#, c-format
+msgid "Realtime\n"
+msgstr "Tiempo real\n"
+
+#: readelf.c:10863
+#, c-format
+msgid "Microcontroller\n"
+msgstr "Microcontrolador\n"
+
+#: readelf.c:10864
+#, c-format
+msgid "Application or Realtime\n"
+msgstr "Aplicación o Tiempo real\n"
+
+#: readelf.c:10875 readelf.c:10895 readelf.c:11347 readelf.c:11365
+#: readelf.c:11440 readelf.c:11461
+#, c-format
+msgid "8-byte\n"
+msgstr "8 bytes\n"
+
+#: readelf.c:10876 readelf.c:11443 readelf.c:11464
+#, c-format
+msgid "4-byte\n"
+msgstr "4 bytes\n"
+
+#: readelf.c:10880 readelf.c:10899
+#, c-format
+msgid "8-byte and up to %d-byte extended\n"
+msgstr "8 bytes y extendido hasta %d bytes\n"
+
+#: readelf.c:10894
+#, c-format
+msgid "8-byte, except leaf SP\n"
+msgstr "8 bytes, excepto SP leaf\n"
+
+#: readelf.c:10910 readelf.c:11000 readelf.c:11479
+#, c-format
+msgid "flag = %d, vendor = %s\n"
+msgstr "opción = %d, vendedor = %s\n"
+
+#: readelf.c:10916
+#, c-format
+msgid "True\n"
+msgstr "Verdadero\n"
+
+#: readelf.c:11045 readelf.c:11231
+#, c-format
+msgid "Hard or soft float\n"
+msgstr "Coma flotante de hardware o software\n"
+
+#: readelf.c:11048
+#, c-format
+msgid "Hard float\n"
+msgstr "Coma flotante de hardware\n"
+
+#: readelf.c:11051 readelf.c:11240
+#, c-format
+msgid "Soft float\n"
+msgstr "Coma flotante de software\n"
+
+#: readelf.c:11054
+#, c-format
+msgid "Single-precision hard float\n"
+msgstr "Coma flotante de hardware de precisión sencilla\n"
+
+#: readelf.c:11071 readelf.c:11097
+#, c-format
+msgid "Any\n"
+msgstr "Cualquiera\n"
+
+#: readelf.c:11074
+#, c-format
+msgid "Generic\n"
+msgstr "Genérica\n"
+
+#: readelf.c:11103
+#, c-format
+msgid "Memory\n"
+msgstr "Memoria\n"
+
+#: readelf.c:11234
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr "Coma flotante de hardware (precisión doble)\n"
+
+#: readelf.c:11237
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr "Coma flotante de hardware (precisión sencilla)\n"
+
+#: readelf.c:11243
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU)\n"
+msgstr "Coma flotante de hardware (FPU MIPS32r2 de 64 bits)\n"
+
+#: readelf.c:11326
+#, c-format
+msgid "Not used\n"
+msgstr "Sin usar\n"
+
+#: readelf.c:11329
+#, c-format
+msgid "2 bytes\n"
+msgstr "2 bytes\n"
+
+#: readelf.c:11332
+#, c-format
+msgid "4 bytes\n"
+msgstr "4 bytes\n"
+
+#: readelf.c:11350 readelf.c:11368 readelf.c:11446 readelf.c:11467
+#, c-format
+msgid "16-byte\n"
+msgstr "16 bytes\n"
+
+#: readelf.c:11383
+#, c-format
+msgid "DSBT addressing not used\n"
+msgstr "No se usa el direccionamiento DSBT\n"
+
+#: readelf.c:11386
+#, c-format
+msgid "DSBT addressing used\n"
+msgstr "Se usa el direccionamiento DSBT\n"
+
+#: readelf.c:11401
+#, c-format
+msgid "Data addressing position-dependent\n"
+msgstr "Direccionamiento de datos dependiente de posición\n"
+
+#: readelf.c:11404
+#, c-format
+msgid "Data addressing position-independent, GOT near DP\n"
+msgstr "Direccionamiento de datos independiente de posición GOT cerca de DP\n"
+
+#: readelf.c:11407
+#, c-format
+msgid "Data addressing position-independent, GOT far from DP\n"
+msgstr "Direccionamiento de datos independiente de posición, GOT lejos de DP\n"
+
+#: readelf.c:11422
+#, c-format
+msgid "Code addressing position-dependent\n"
+msgstr "Direccionamiento de código dependiente de posición\n"
+
+#: readelf.c:11425
+#, c-format
+msgid "Code addressing position-independent\n"
+msgstr "Direccionamiento de código independiente de posición\n"
+
+#: readelf.c:11531
+msgid "attributes"
+msgstr "atributos"
+
+#: readelf.c:11552
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "ERROR: Longitud de sección errónea (%d > %d)\n"
+
+#: readelf.c:11558
+#, c-format
+msgid "Attribute Section: %s\n"
+msgstr "Sección de Atributo: %s\n"
+
+#: readelf.c:11583
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "ERROR: Longitud de subsección errónea (%d > %d)\n"
+
+#: readelf.c:11595
+#, c-format
+msgid "File Attributes\n"
+msgstr "Atributos de Fichero\n"
+
+#: readelf.c:11598
+#, c-format
+msgid "Section Attributes:"
+msgstr "Atributos de Sección:"
+
+#: readelf.c:11601
+#, c-format
+msgid "Symbol Attributes:"
+msgstr "Atributos de Símbolos:"
+
+#: readelf.c:11616
+#, c-format
+msgid "Unknown tag: %d\n"
+msgstr "Etiqueta desconocida: %d\n"
+
+#. ??? Do something sensible, like dump hex.
+#: readelf.c:11635
+#, c-format
+msgid " Unknown section contexts\n"
+msgstr " Contexto de la sección desconocida\n"
+
+#: readelf.c:11642
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "Formato '%c' desconocido\n"
+
+#: readelf.c:11693 readelf.c:11715
+msgid "<unknown>"
+msgstr "<desconocido>"
+
+#: readelf.c:11810 readelf.c:12344
+msgid "liblist section data"
+msgstr "datos de sección liblist"
+
+#: readelf.c:11813
+#, c-format
+msgid ""
+"\n"
+"Section '.liblist' contains %lu entries:\n"
+msgstr ""
+"\n"
+"La sección '.liblist' contiene %lu entradas:\n"
+
+#: readelf.c:11815
+msgid " Library Time Stamp Checksum Version Flags\n"
+msgstr " Biblioteca Marca de Tiempo Revisión Versión Ops\n"
+
+#: readelf.c:11841
+#, c-format
+msgid "<corrupt: %9ld>"
+msgstr "<corrupto: %9ld>"
+
+#: readelf.c:11846
+msgid " NONE"
+msgstr " NINGUNO"
+
+#: readelf.c:11897
+msgid "options"
+msgstr "opciones"
+
+#: readelf.c:11928
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"La sección '%s' contiene %d entradas:\n"
+
+#: readelf.c:12089
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr "se encontró una lista de conflictos sin una tabla de símbolos dinámicos\n"
+
+#: readelf.c:12106 readelf.c:12121
+msgid "conflict"
+msgstr "tiene conflictos con"
+
+#: readelf.c:12131
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"La sección '.conflict' contiene %lu entradas:\n"
+
+#: readelf.c:12133
+msgid " Num: Index Value Name"
+msgstr " Num: Ãndice Valor Nombre"
+
+#: readelf.c:12145 readelf.c:12234 readelf.c:12305
+#, c-format
+msgid "<corrupt: %14ld>"
+msgstr "<corrupto: %14ld>"
+
+#: readelf.c:12167
+msgid "Global Offset Table data"
+msgstr "datos de la Tabla de Desplazamiento Global"
+
+#: readelf.c:12171
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+"\n"
+"GOT primario:\n"
+
+#: readelf.c:12172
+#, c-format
+msgid " Canonical gp value: "
+msgstr " Valor gp canónico: "
+
+#: readelf.c:12176 readelf.c:12276
+#, c-format
+msgid " Reserved entries:\n"
+msgstr " Entradas reservadas:\n"
+
+#: readelf.c:12177
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr " %*s %10s %*s Propósito\n"
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12211 readelf.c:12278
+#: readelf.c:12287
+msgid "Address"
+msgstr "Dirección"
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12212
+msgid "Access"
+msgstr "Acceso"
+
+#: readelf.c:12179 readelf.c:12196 readelf.c:12213 readelf.c:12278
+#: readelf.c:12288
+msgid "Initial"
+msgstr "Inicial"
+
+#: readelf.c:12181
+#, c-format
+msgid " Lazy resolver\n"
+msgstr " Resolvedor flojo\n"
+
+#: readelf.c:12187
+#, c-format
+msgid " Module pointer (GNU extension)\n"
+msgstr " Puntero de módulo (extensión GNU)\n"
+
+#: readelf.c:12193
+#, c-format
+msgid " Local entries:\n"
+msgstr " Entradas locales\n"
+
+#: readelf.c:12209
+#, c-format
+msgid " Global entries:\n"
+msgstr " Entradas globales:\n"
+
+#: readelf.c:12214 readelf.c:12289
+msgid "Sym.Val."
+msgstr "Val.Sim."
+
+#. Note for translators: "Ndx" = abbreviated form of "Index".
+#: readelf.c:12217 readelf.c:12289
+msgid "Ndx"
+msgstr "Ndx"
+
+#: readelf.c:12217 readelf.c:12289
+msgid "Name"
+msgstr "Nombre"
+
+#: readelf.c:12271
+msgid "Procedure Linkage Table data"
+msgstr "datos de la Tabla de Enlazado Procedural"
+
+#: readelf.c:12277
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr " %*s %*s Propósito\n"
+
+#: readelf.c:12280
+#, c-format
+msgid " PLT lazy resolver\n"
+msgstr " Resolvedor flojo de PLT\n"
+
+#: readelf.c:12282
+#, c-format
+msgid " Module pointer\n"
+msgstr " Puntero de módulo\n"
+
+#: readelf.c:12285
+#, c-format
+msgid " Entries:\n"
+msgstr " Entradas:\n"
+
+#: readelf.c:12352
+msgid "liblist string table"
+msgstr "tabla de cadenas liblist"
+
+#: readelf.c:12362
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"La sección de lista de bibliotecas '%s' contiene %lu entradas:\n"
+
+#: readelf.c:12366
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr " Biblioteca Marca Tiempo Revisión Versión Opts"
+
+#: readelf.c:12416
+msgid "NT_AUXV (auxiliary vector)"
+msgstr "NT_AUXV (vector auxiliar)"
+
+#: readelf.c:12418
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (estructura prstatus)"
+
+#: readelf.c:12420
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (registros de coma flotante)"
+
+#: readelf.c:12422
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (estructura prpsinfo)"
+
+#: readelf.c:12424
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (estructura task)"
+
+#: readelf.c:12426
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (estructura user_xfpregs)"
+
+#: readelf.c:12428
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr "NT_PPC_VMX (registros Altivec de ppc)"
+
+#: readelf.c:12430
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr "NT_PPC_VSX (registros VSX de ppc)"
+
+#: readelf.c:12432
+msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
+msgstr "NT_X86_XSTATE (estado extendido XSAVE de x86)"
+
+#: readelf.c:12434
+msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
+msgstr "NT_S390_HIGH_GPRS (mitades de registro superiores de s390)"
+
+#: readelf.c:12436
+msgid "NT_S390_TIMER (s390 timer register)"
+msgstr "NT_S390_TIMER (registro temporizador de s390)"
+
+#: readelf.c:12438
+msgid "NT_S390_TODCMP (s390 TOD comparator register)"
+msgstr "NT_S390_TODCMP (registro comparador TOD de s390)"
+
+#: readelf.c:12440
+msgid "NT_S390_TODPREG (s390 TOD programmable register)"
+msgstr "NT_S390_TODPREG (registro programable TOD de s390)"
+
+#: readelf.c:12442
+msgid "NT_S390_CTRS (s390 control registers)"
+msgstr "NT_S390_CTRS (registros de control de s390)"
+
+#: readelf.c:12444
+msgid "NT_S390_PREFIX (s390 prefix register)"
+msgstr "NT_S390_PREFIX (registro prefijo de s390)"
+
+#: readelf.c:12446
+msgid "NT_ARM_VFP (arm VFP registers)"
+msgstr "NT_ARM_VFP (registros VFP de arm)"
+
+#: readelf.c:12448
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (estructura pstatus)"
+
+#: readelf.c:12450
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (registros de coma flotante)"
+
+#: readelf.c:12452
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (estructura psinfo)"
+
+#: readelf.c:12454
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (estructura lwpstatus_t)"
+
+#: readelf.c:12456
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (estructura lwpsinfo_t)"
+
+#: readelf.c:12458
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (estructura win32_pstatus)"
+
+#: readelf.c:12466
+msgid "NT_VERSION (version)"
+msgstr "NT_VERSION (versión)"
+
+#: readelf.c:12468
+msgid "NT_ARCH (architecture)"
+msgstr "NT_ARCH (arquitectura)"
+
+#: readelf.c:12473 readelf.c:12496 readelf.c:12575 readelf.c:12633
+#: readelf.c:12710
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "Tipo de nota desconocido: (0x%08x)"
+
+#: readelf.c:12485
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr "NT_GNU_ABI_TAG (etiqueta de versión de ABI)"
+
+#: readelf.c:12487
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr "NT_GNU_HWCAP (información de HWCAP de software proporcionado por DSO)"
+
+#: readelf.c:12489
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr "NT_GNU_BUILD_ID (cadena de bits de ID de construcción única)"
+
+#: readelf.c:12491
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr "NT_GNU_GOLD_VERSION (versión de gold)"
+
+#: readelf.c:12509
+#, c-format
+msgid " Build ID: "
+msgstr " ID de Compilación: "
+
+#: readelf.c:12548
+#, c-format
+msgid " OS: %s, ABI: %ld.%ld.%ld\n"
+msgstr " SO: %s, ABI: %ld.%ld.%ld\n"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:12565
+msgid "NetBSD procinfo structure"
+msgstr "estructura procinfo de NetBSD"
+
+#: readelf.c:12592 readelf.c:12606
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (estructura reg)"
+
+#: readelf.c:12594 readelf.c:12608
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (estructura fpreg)"
+
+#: readelf.c:12627
+msgid "NT_STAPSDT (SystemTap probe descriptors)"
+msgstr "NT_STAPSDT (descriptores de prueba SystemTap)"
+
+#: readelf.c:12660
+#, c-format
+msgid " Provider: %s\n"
+msgstr " Proveedor: %s\n"
+
+#: readelf.c:12661
+#, c-format
+msgid " Name: %s\n"
+msgstr " Nombre: %s\n"
+
+#: readelf.c:12662
+#, c-format
+msgid " Location: "
+msgstr " Ubicación: "
+
+#: readelf.c:12664
+#, c-format
+msgid ", Base: "
+msgstr ", Base: "
+
+#: readelf.c:12666
+#, c-format
+msgid ", Semaphore: "
+msgstr ", Semáforo: "
+
+#: readelf.c:12669
+#, c-format
+msgid " Arguments: %s\n"
+msgstr " Argumentos: %s\n"
+
+#: readelf.c:12682
+msgid "NT_VMS_MHD (module header)"
+msgstr "NT_VMS_MHD (encabezado de módulo)"
+
+#: readelf.c:12684
+msgid "NT_VMS_LNM (language name)"
+msgstr "NT_VMS_LNM (nombre de lenguaje)"
+
+#: readelf.c:12686
+msgid "NT_VMS_SRC (source files)"
+msgstr "NT_VMS_SRC (ficheros fuente)"
+
+#: readelf.c:12690
+msgid "NT_VMS_EIDC (consistency check)"
+msgstr "NT_VMS_EIDC (prueba de consistencia)"
+
+#: readelf.c:12692
+msgid "NT_VMS_FPMODE (FP mode)"
+msgstr "NT_VMS_FPMODE (modo FP)"
+
+#: readelf.c:12696
+msgid "NT_VMS_IMGNAM (image name)"
+msgstr "NT_VMS_IMGNAM (nombre de imagen)"
+
+#: readelf.c:12698
+msgid "NT_VMS_IMGID (image id)"
+msgstr "NT_VMS_IMGID (id de imagen)"
+
+#: readelf.c:12700
+msgid "NT_VMS_LINKID (link id)"
+msgstr "NT_VMS_LINKID (id de enlace)"
+
+#: readelf.c:12702
+msgid "NT_VMS_IMGBID (build id)"
+msgstr "NT_VMS_IMGBID (id de compilación)"
+
+#: readelf.c:12704
+msgid "NT_VMS_GSTNAM (sym table name)"
+msgstr "NT_VMS_GSTNAM (nombre de tabla de símbolos)"
+
+#: readelf.c:12724
+#, c-format
+msgid " Creation date : %.17s\n"
+msgstr " Fecha de creación : %.17s\n"
+
+#: readelf.c:12725
+#, c-format
+msgid " Last patch date: %.17s\n"
+msgstr "Última fecha de parche: %.17s\n"
+
+#: readelf.c:12726
+#, c-format
+msgid " Module name : %s\n"
+msgstr " Nombre de módulo: %s\n"
+
+#: readelf.c:12727
+#, c-format
+msgid " Module version : %s\n"
+msgstr " Versión de módulo : %s\n"
+
+#: readelf.c:12730
+#, c-format
+msgid " Invalid size\n"
+msgstr " Tamaño inválido\n"
+
+#: readelf.c:12733
+#, c-format
+msgid " Language: %s\n"
+msgstr " Lenguaje: %s\n"
+
+#: readelf.c:12737
+#, c-format
+msgid " Floating Point mode: "
+msgstr " modo de Coma Flotante: "
+
+#: readelf.c:12742
+#, c-format
+msgid " Link time: "
+msgstr " Hora de enlazado: "
+
+#: readelf.c:12748
+#, c-format
+msgid " Patch time: "
+msgstr " Hora de parche: "
+
+#: readelf.c:12754
+#, c-format
+msgid " Major id: %u, minor id: %u\n"
+msgstr " Id mayor: %u, id menor: %u\n"
+
+#: readelf.c:12757
+#, c-format
+msgid " Last modified : "
+msgstr " Última modificación : "
+
+#: readelf.c:12760
+#, c-format
+msgid ""
+"\n"
+" Link flags : "
+msgstr ""
+"\n"
+" Opciones de enlace : "
+
+#: readelf.c:12763
+#, c-format
+msgid " Header flags: 0x%08x\n"
+msgstr " Opciones de encabezado: 0x%08x\n"
+
+#: readelf.c:12765
+#, c-format
+msgid " Image id : %s\n"
+msgstr " Id de imagen: %s\n"
+
+#: readelf.c:12769
+#, c-format
+msgid " Image name: %s\n"
+msgstr " Nombre de imagen: %s\n"
+
+#: readelf.c:12772
+#, c-format
+msgid " Global symbol table name: %s\n"
+msgstr " Nombre de tabla de símbolos globales: %s\n"
+
+#: readelf.c:12775
+#, c-format
+msgid " Image id: %s\n"
+msgstr " Id de imagen: %s\n"
+
+#: readelf.c:12778
+#, c-format
+msgid " Linker id: %s\n"
+msgstr " Id de enlazado: %s\n"
+
+#: readelf.c:12853
+msgid "notes"
+msgstr "notas"
+
+#: readelf.c:12859
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"Notas en el desplazamiento 0x%08lx con longitud 0x%08lx:\n"
+
+#: readelf.c:12861
+#, c-format
+msgid " %-20s %10s\tDescription\n"
+msgstr " %-20s %10s\tDescripción\n"
+
+#: readelf.c:12861
+msgid "Owner"
+msgstr "Propietario"
+
+#: readelf.c:12861
+msgid "Data size"
+msgstr "Tamaño de datos"
+
+#: readelf.c:12899 readelf.c:12912
+#, c-format
+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:12901 readelf.c:12914
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " tipo: %lx, tamañonombre: %08lx, tamañodesc: %08lx\n"
+
+#: readelf.c:13010
+#, 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:13102
+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"
+msgstr ""
+"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:13149
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s: Falló al leer el encabezado del fichero\n"
+
+#: readelf.c:13163
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Fichero: %s\n"
+
+#: readelf.c:13335
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr "%s: no se puede volcar el índice porque ninguno se encontró\n"
+
+#: readelf.c:13341
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr "Ãndice del archivo %s: (%ld entradas, 0x%lx bytes en la tabla de símbolos)\n"
+
+#: readelf.c:13359
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr "El binario %s contiene:\n"
+
+#: readelf.c:13367
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr "%s: se alcanzó el final de la tabla de símbolos antes que el final del índice\n"
+
+#: readelf.c:13378
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr "%s: aún hay símbolos en la tabla de símbolos de índice, pero sin su entrada correspondiente en la tabla de índice\n"
+
+#: readelf.c:13383
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr "%s: falló al buscar de nuevo el inicio de los ficheros objeto en el archivo\n"
+
+#: readelf.c:13466 readelf.c:13549
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr "El fichero de entrada '%s' no es legible.\n"
+
+#: readelf.c:13488
+#, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr "%s: falló al buscar el miembro de archivo.\n"
+
+#: readelf.c:13567
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr "El fichero %s no es un archivo por lo cual no se puede mostrar su índice.\n"
+
+#: rename.c:124
+#, 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:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr "no se puede renombrar '%s'; razón: %s"
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr "no se puede copiar el fichero '%s'; razón: %s"
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: no hay suficientes datos binarios"
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr "cadena unicode terminada en null"
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr "ID de recurso"
+
+#: resbin.c:208
+msgid "cursor"
+msgstr "cursor"
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr "encabezado de menú"
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr "encabezado de menuex"
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr "desplazamiento de menuex"
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "no se admite la versión de menú %d"
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr "encabezado de elemento de menú"
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr "elemento de menú"
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr "encabezado de diálogo"
+
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "versión DIALOGEX %d inesperada"
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr "tamaño de punto de la tipografía del diálogo"
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr "información de tipografía del dialogex"
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr "control del diálogo"
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr "control del dialogex"
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr "fin del control del diálogo"
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr "datos de control del diálogo"
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr "longitud de la cadena stringtable"
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr "cadena stringtable"
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr "encabezado fontdir"
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr "fontdir"
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr "nombre de dispositivo fontdir"
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr "nombre de familia fontdir"
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr "acelerador"
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr "encabezado de grupo de cursores"
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "tipo de grupo de cursores %d inesperado"
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr "grupo de cursores"
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr "encabezado de grupo de iconos"
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "tipo de grupo de iconos %d inesperado"
+
+#: resbin.c:871
+msgid "group icon"
+msgstr "grupo de iconos"
+
+#: resbin.c:935 resbin.c:1173
+msgid "unexpected version string"
+msgstr "cadena de versión inesperada"
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "la longitud de la versión %d no coincide con la longitud del recurso %lu"
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr "tipo de versión %d inesperada"
+
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr "longitud de la información de versión fija %ld inesperada"
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr "información de versión fija"
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "firma de versión fija %lu inesperada"
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "información de versión de versión fija %lu inesperada"
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr "información de versión variable"
+
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr "longitud del valor stringfileinfo %ld inesperada"
+
+#: resbin.c:1059
+msgid "version stringtable"
+msgstr "tabla de cadenas de versión"
+
+#: resbin.c:1067
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr "versión de longitud de valor stringtable %ld inesperada"
+
+#: resbin.c:1084
+msgid "version string"
+msgstr "cadena de versión"
+
+#: resbin.c:1101
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr "longitud de cadena de versión %ld != %ld + %ld inesperada"
+
+#: resbin.c:1108
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr "longitud de cadena de versión %ld < %ld inesperada"
+
+#: resbin.c:1133
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr "longitud de valor varfileinfo %ld inesperada"
+
+#: resbin.c:1152
+msgid "version varfileinfo"
+msgstr "versión varfileinfo"
+
+#: resbin.c:1167
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr "longitud de valor de versión %ld inesperada"
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr "se requiere un nombre de fichero para la entrada COFF"
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: no hay sección de recursos"
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: dirección fuera de los límites"
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "directorio"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "entrada nombrada de directorio"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "nombre de entrada de directorio"
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "subdirectorio nombrado"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "recurso nombrado"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "entrada de ID de directorio"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "ID de subdirectorio"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "ID de recurso"
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr "tipo de recurso desconocido"
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr "entrada de datos"
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr "datos de recursos"
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr "tamaño de datos de recursos"
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr "se requiere un nombre de fichero para la salida COFF"
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "no se puede obtener el tipo de reubicación BFD_RELOC_RVA"
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "no se puede abrir el fichero temporal `%s': %s"
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "no se puede redirigir la salida estándar: `%s': %s"
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "no se puede ejecutar `%s': %s"
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "Se usa el fichero temporal `%s' para leer la salida del preprocesador\n"
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "no se puede hacer popen de `%s': %s"
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "Se usa popen para leer la salida del preprocesador\n"
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "Se intentó `%s'\n"
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr "Se utiliza `%s'\n"
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr "falló el preprocesamiento."
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: fin de fichero inesperado"
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: la lectura de %lu devolvió %lu"
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "stat falló en el fichero de mapa de bits `%s': %s"
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "el fichero de cursor `%s' no contiene datos de cursor"
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: falló fseek para %lu: %s"
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr "el ID de ayuda requiere DIALOGEX"
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr "los datos de control requieren DIALOGEX"
+
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "stat falló en el fichero de tipografía `%s': %s"
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "el fichero de icono `%s' no contiene datos de icono"
+
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "stat falló en el fichero `%s': %s"
+
+#: resrc.c:1958
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "no se puede abrir `%s' para salida: %s"
+
+#: size.c:79
+#, 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:80
+#, 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:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+" Las opciones son:\n"
+" -A|-B --format={sysv|berkeley} Selecciona el estilo de salida\n"
+" (por defecto es %s)\n"
+" -o|-d|-x --radix={8|10|16} Muestra los números en octal, decimal o\n"
+" hexadecimal\n"
+" -t --totals Muestra los tamaños totales\n"
+" (sólo Berkeley)\n"
+" --common Muestra el tamaño total de los símbolos\n"
+" *COM*\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:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "argumento inválido para --format: %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Radical inválido: %s\n"
+
+#: srconv.c:1733
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "Convierte un fichero objeto COFF a un fichero objeto SYSROFF\n"
+
+#: srconv.c:1734
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+" Las opciones son:\n"
+" -q --quick (Obsoleto - se descarta)\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:1880
+#, c-format
+msgid "unable to open output file %s"
+msgstr "no se puede abrir el fichero de salida %s"
+
+#: stabs.c:328 stabs.c:1717
+msgid "numeric overflow"
+msgstr "desbordamiento numérico"
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "Stab erróneo: %s\n"
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Aviso: %s: %s\n"
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC no está dentro de una función\n"
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "Demasiados N_RBRACs\n"
+
+#: stabs.c:727
+msgid "unknown C++ encoded name"
+msgstr "nombre C++ codificado desconocido"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1262
+msgid "unrecognized cross reference type"
+msgstr "no se reconoce el tipo de referencia cruzada"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1809
+msgid "missing index type"
+msgstr "falta el tipo de índice"
+
+#: stabs.c:2129
+msgid "unknown virtual character for baseclass"
+msgstr "carácter virtual desconocido para la clase base"
+
+#: stabs.c:2147
+msgid "unknown visibility character for baseclass"
+msgstr "carácter de visibilidad desconocido para la clase base"
+
+#: stabs.c:2337
+msgid "unnamed $vb type"
+msgstr "tipo $vb sin nombre"
+
+#: stabs.c:2343
+msgid "unrecognized C++ abbreviation"
+msgstr "no se reconoce la abreviación C++"
+
+#: stabs.c:2419
+msgid "unknown visibility character for field"
+msgstr "carácter de visibilidad desconocido para el campo"
+
+#: stabs.c:2679
+msgid "const/volatile indicator missing"
+msgstr "falta el indicador const/volatile"
+
+#: stabs.c:2924
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "No hay desenredo para \"%s\"\n"
+
+#: stabs.c:3224
+msgid "Undefined N_EXCL"
+msgstr "N_EXCL sin definir"
+
+#: stabs.c:3304
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "Número de tipo de fichero %d fuera de rango\n"
+
+#: stabs.c:3309
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Número de tipo de índice %d fuera de rango\n"
+
+#: stabs.c:3388
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "No se reconoce el tipo XCOFF %d\n"
+
+#: stabs.c:3680
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "nombre desenredado erróneamente `%s'\n"
+
+#: stabs.c:3775
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "no hay tipos de argumento en la cadena desenredada\n"
+
+#: stabs.c:5125
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "El nombres desenredado no es una función\n"
+
+#: stabs.c:5167
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "Tipo inesperado en la lista de argumentos de desenredo v3\n"
+
+#: stabs.c:5234
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "No se reconoce el componente de desenredo %d\n"
+
+#: stabs.c:5286
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "Falló al mostrar la plantilla desenredada\n"
+
+#: stabs.c:5366
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "No se puede obtener el tipo interno desenredado\n"
+
+#: stabs.c:5415
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "varargs desenredados inesperados\n"
+
+#: stabs.c:5422
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "No se reconoce el tipo interno desenredado\n"
+
+#: strings.c:186 strings.c:245
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "argumento entero %s inválido"
+
+#: strings.c:248
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr "longitud de cadena mínima %d inválida"
+
+#: strings.c:651
+#, 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:652
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+" Las opciones son:\n"
+" -a - --all Revisa el fichero completo, no sólo la sección de\n"
+" datos\n"
+" -f --print-file-name Muestra el nombre de fichero antes de cada cadena\n"
+" -n --bytes=[número] Localiza y muestra cualquier secuencia terminada en\n"
+" -<número> NUL de por lo menos [número] caracteres\n"
+" (4 por defecto).\n"
+" -t --radix={o,d,x} Muestra la ubicación de la cadena en base 8, 10 ó 16\n"
+" -o Un alias para --radix=o\n"
+" -T --target=<NOMBREBFD> Especifica el formato de fichero binario\n"
+" -e --encoding={s,S,b,l,B,L} Selecciona tamaño del carácter y \"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 -V --version Muestra el número de versión del programa\n"
+
+#: sysdump.c:66
+msgid "*undefined*"
+msgstr "*sin definir*"
+
+#: sysdump.c:137
+#, c-format
+msgid "SUM IS %x\n"
+msgstr "SUM ES %x\n"
+
+#: sysdump.c:503
+#, c-format
+msgid "GOT A %x\n"
+msgstr "SE OBTUVO UN %x\n"
+
+#: sysdump.c:521
+#, c-format
+msgid "WANTED %x!!\n"
+msgstr "¡¡ SE NECESITA %x!!\n"
+
+#: sysdump.c:539
+msgid "SYMBOL INFO"
+msgstr "INFO DE SÃMBOLO"
+
+#: sysdump.c:557
+msgid "DERIVED TYPE"
+msgstr "TIPO DERIVADO"
+
+#: sysdump.c:614
+msgid "MODULE***\n"
+msgstr "MÓDULO***\n"
+
+#: sysdump.c:647
+#, 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:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Las opciones son:\n"
+" -h --help Muestra esta información\n"
+" -v --version Muestra el número de versión del programa\n"
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "no se puede abrir el fichero de entrada %s"
+
+#: version.c:36
+#, c-format
+msgid "Copyright 2011 Free Software Foundation, Inc.\n"
+msgstr "Copyright 2011 Free Software Foundation, Inc.\n"
+
+#: version.c:37
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"Este programa es software libre; se puede redistribuir bajo los términos de\n"
+"la Licencia Pública General de GNU versión 3 o (a su criterio) cualquier\n"
+"versión posterior.\n"
+"\n"
+"Este programa no tiene ninguna garantía.\n"
+
+#: windmc.c:190
+#, c-format
+msgid "can't create %s file `%s' for output.\n"
+msgstr "no se puede crear el fichero %s `%s' para salida.\n"
+
+#: windmc.c:198
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr "Modo de empleo: %s [opcion(es)] [fichero-entrada]\n"
+
+#: windmc.c:200
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianness.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+"Las opciones son:\n"
+" -a --ascii_in Lee el fichero de entrada como fichero ASCII\n"
+" -A --ascii_out Escribe los mensajes binarios como ASCII\n"
+" -b --binprefix Se agrega el prefijo fichero_ .mc al nombre de fichero .bin para singularidad.\n"
+" -c --customflag Define las opciones particulares para los mensajes\n"
+" -C --codepage_in=<val> Define el código de página para leer el fichero de texto mc\n"
+" -d --decimal_values Guarda los valores a ficheros de textos decimales\n"
+" -e --extension=<extensión> Establece la extensión del encabezado a usar en la exportación del fichero de encabezado\n"
+" -F --target <objetivo> Especifica el objetivo de salida por `endianez'.\n"
+" -h --headerdir=<directorio> Define el directorio de exportación para encabezados\n"
+" -u --unicode_in Lee el fichero de entrada como un fichero UTF16\n"
+" -U --unicode_out Escribe los mensajes binarios como UTF16\n"
+" -m --maxlength=<val> Define la longitud de mensaje máxima permitida\n"
+" -n --nullterminate Agrega automáticamente una terminación cero a las cadenas\n"
+" -o --hresult_use Usa la definición HRESULT en lugar de la definición del código de estado\n"
+" -O --codepage_out=<val> Define el código de página a usar para escribir el fichero de texto\n"
+" -r --rcdir=<directorio> Define el directorio de exportación para los ficheros rc\n"
+" -x --xdbg=<directorio> Dónde crear el fichero de inclusión C .dbg\n"
+" que mapea los ID's de los mensajes a su nombre simbólico.\n"
+
+#: windmc.c:220
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+" -H --help Muestra este mensaje de ayuda\n"
+" -v --verbose Detalle - dice lo que está haciendo\n"
+" -V --version Muestra la información de versión\n"
+
+#: windmc.c:261 windres.c:411
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: aviso: "
+
+#: windmc.c:262
+#, c-format
+msgid "A codepage was specified switch `%s' and UTF16.\n"
+msgstr "Se especificó un código de página con la opción `%s' y UTF16.\n"
+
+#: windmc.c:263
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr "\tse descartan las opciones de código de página.\n"
+
+#: windmc.c:307
+msgid "try to add a ill language."
+msgstr "se trató de agregar un lenguaje erróneo."
+
+#: windmc.c:1116
+#, c-format
+msgid "unable to open file `%s' for input.\n"
+msgstr "no se puede abrir el fichero `%s' para entrada.\n"
+
+#: windmc.c:1124
+#, c-format
+msgid "unable to read contents of %s"
+msgstr "no se puede leer el contenido de %s"
+
+#: windmc.c:1136
+msgid "input file does not seems to be UFT16.\n"
+msgstr "el fichero de entrada no parece ser UTF16.\n"
+
+#: windres.c:216
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "no se puede abrir %s `%s': %s"
+
+#: windres.c:390
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": se esperaba que fuera un directorio\n"
+
+#: windres.c:402
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": se esperaba que fuera una hoja\n"
+
+#: windres.c:413
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": valor duplicado\n"
+
+#: windres.c:563
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "tipo de formato `%s' desconocido"
+
+#: windres.c:564
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: formatos admitidos:"
+
+#. Otherwise, we give up.
+#: windres.c:647
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "no se puede determinar el tipo del fichero `%s'; use la opción -J"
+
+#: windres.c:659
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Modo de empleo: %s [opcion(es)] [fichero-entrada] [fichero-salida]\n"
+
+#: windres.c:661
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" --preprocessor-arg=<arg> Additional preprocessor argument\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+"Las opciones son:\n"
+" -i --input=<fichero> Nombra el fichero de entrada\n"
+" -o --output=<fichero> Nombra el fichero de salida\n"
+" -J --input-format=<formato> Especifica el formato de entrada\n"
+" -O --output-format=<formato> Especifica el formato de salida\n"
+" -F --target=<objetivo> Especifica el objetivo COFF\n"
+" --preprocessor=<programa> Programa a utilizar para preprocesar el fichero rc\n"
+" -I --include-dir=<dir> Incluye el directorio al preprocesar el fichero rc\n"
+" -D --define <sim>[=val] Define un SIMbolo al preprocesar el fichero rc\n"
+" -U --undefine <sim> No define el SIMbolo al preprocesar el fichero rc\n"
+" -v --verbose Detallado - dice lo que está haciendo\n"
+" -c --codepage=<códigopágina> Establece el código de página por defecto\n"
+" -l --language=<val> Establece el lenguaje al leer el fichero rc\n"
+" --use-temp-file Usa un fichero temporal en lugar de popen para\n"
+" leer la salida del preprocesador\n"
+" --no-use-temp-file Usa popen (por defecto)\n"
+
+#: windres.c:679
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug Activa el decodificador de depuración\n"
+
+#: windres.c:682
+#, 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 descarta 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:687
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"El FORMATO es uno de rc, res, o coff, y se deduce de la extensión del nombre\n"
+"de fichero si no se especifica. Un solo nombre de fichero es un fichero de\n"
+"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:850
+msgid "invalid codepage specified.\n"
+msgstr "se especificó un código de página inválido\n"
+
+#: windres.c:865
+msgid "invalid option -f\n"
+msgstr "opción -f inválida\n"
+
+#: windres.c:870
+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:959
+#, 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:1072
+msgid "no resources"
+msgstr "no hay recursos"
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup falló: %s"
+
+#: wrstabs.c:637
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: tamaño %u erróneo"
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: aviso: tamaño desconocido para el campo `%s' en la estructura"
+
+#~ msgid "(%s"
+#~ msgstr "(%s"
+
+#~ msgid ",%s"
+#~ msgstr ",%s"
+
+#~ msgid ",%s)\n"
+#~ msgstr ",%s)\n"
+
+#~ msgid " o_mflag (magic): 0x%04x 0%04o\n"
+#~ msgstr " o_mflag (magic): 0x%04x 0%04o\n"
+
+#~ msgid " o_vstamp: 0x%04x\n"
+#~ msgstr " o_vstamp: 0x%04x\n"
+
+#~ msgid " o_tsize: 0x%08x\n"
+#~ msgstr " o_tsize: 0x%08x\n"
+
+#~ msgid " o_dsize: 0x%08x\n"
+#~ msgstr " o_dsize: 0x%08x\n"
+
+#~ msgid " o_entry: 0x%08x\n"
+#~ msgstr " o_entry: 0x%08x\n"
+
+#~ msgid " o_text_start: 0x%08x\n"
+#~ msgstr " o_text_start: 0x%08x\n"
+
+#~ msgid " o_data_start: 0x%08x\n"
+#~ msgstr " o_data_start: 0x%08x\n"
+
+#~ msgid " o_toc: 0x%08x\n"
+#~ msgstr " o_toc: 0x%08x\n"
+
+#~ msgid " o_snentry: 0x%04x\n"
+#~ msgstr " o_snentry: 0x%04x\n"
+
+#~ msgid " o_sntext: 0x%04x\n"
+#~ msgstr " o_sntext: 0x%04x\n"
+
+#~ msgid " o_sndata: 0x%04x\n"
+#~ msgstr " o_sndata: 0x%04x\n"
+
+#~ msgid " o_sntoc: 0x%04x\n"
+#~ msgstr " o_sntoc: 0x%04x\n"
+
+#~ msgid " o_snloader: 0x%04x\n"
+#~ msgstr " o_snloader: 0x%04x\n"
+
+#~ msgid " o_snbss: 0x%04x\n"
+#~ msgstr " o_snbss: 0x%04x\n"
+
+#~ msgid " o_algntext: %u\n"
+#~ msgstr " o_algntext: %u\n"
+
+#~ msgid " o_algndata: %u\n"
+#~ msgstr " o_algndata: %u\n"
+
+#~ msgid " o_modtype: 0x%04x"
+#~ msgstr " o_modtype: 0x%04x"
+
+#~ msgid " o_cputype: 0x%04x\n"
+#~ msgstr " o_cputype: 0x%04x\n"
+
+#~ msgid " o_maxstack: 0x%08x\n"
+#~ msgstr " o_maxstack: 0x%08x\n"
+
+#~ msgid " o_maxdata: 0x%08x\n"
+#~ msgstr " o_maxdata: 0x%08x\n"
+
+#~ msgid " o_debugger: 0x%08x\n"
+#~ msgstr " o_debugger: 0x%08x\n"
+
+#~ msgid " # Name paddr vaddr size scnptr relptr lnnoptr nrel nlnno\n"
+#~ msgstr " # Nombre pdir vdir tamaño scnpunt relpunt lnnpunt nrel nlnno\n"
+
+#~ msgid "%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n"
+#~ msgstr "%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n"
+
+#~ msgid " exptr: %08x fsize: %08x lnnoptr: %08x endndx: %u\n"
+#~ msgstr " expun: %08x ftam: %08x lnnopun: %08x finind: %u\n"
+
+#~ msgid " scnsym: %-8u"
+#~ msgstr " scnsim: %-8u"
+
+#~ msgid " scnlen: %08x"
+#~ msgstr " scnlon: %08x"
+
+#~ msgid " h: parm=%08x sn=%04x al: 2**%u"
+#~ msgstr " h: parm=%08x sn=%04x al: 2**%u"
+
+#~ msgid " typ: "
+#~ msgstr " tip: "
+
+#~ msgid " cl: "
+#~ msgstr " cl: "
+
+#~ msgid " ftype: %02x "
+#~ msgstr " ftipo: %02x "
+
+#~ msgid "fname: %.14s"
+#~ msgstr "fnom: %.14s"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid " lnno: %u\n"
+#~ msgstr " numl: %u\n"
+
+#~ msgid "vaddr sgn mod sz type symndx symbol\n"
+#~ msgstr "vdir sgn mod tm tipo simind simbolo\n"
+
+#~ msgid "%08x %c %c %-2u "
+#~ msgstr "%08x %c %c %-2u "
+
+#~ msgid " %-6u "
+#~ msgstr " %-6u "
+
+#~ msgid " # value sc IFEW ty class file pa name\n"
+#~ msgstr " # valor sc IFEW ti clase fich pa nom\n"
+
+#~ msgid " vaddr sec sz typ sym\n"
+#~ msgstr " vdir sec tm tip sim\n"
+
+#~ msgid " %08x %3u %c%c %2u "
+#~ msgstr " %08x %3u %c%c %2u "
+
+#~ msgid ".text"
+#~ msgstr ".text"
+
+#~ msgid ".data"
+#~ msgstr ".data"
+
+#~ msgid ".bss"
+#~ msgstr ".bss"
+
+#~ msgid "%u"
+#~ msgstr "%u"
+
+#~ msgid "lang reason sym/addr\n"
+#~ msgstr "leng razon sim/dir\n"
+
+#~ msgid " %02x %02x "
+#~ msgstr " %02x %02x "
+
+#~ msgid "@%08x"
+#~ msgstr "@%08x"
+
+#~ msgid "offset len lang-id general-hash language-hash\n"
+#~ msgstr "despl lon id-leng hash-general hash-lenguaje\n"
+
+#~ msgid " version: %u, lang: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n"
+#~ msgstr " versión: %u, leng: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n"
+
+#~ msgid " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n"
+#~ msgstr " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n"
+
+#~ msgid " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n"
+#~ msgstr " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n"
+
+#~ msgid " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n"
+#~ msgstr " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n"
+
+#~ msgid " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n"
+#~ msgstr " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n"
+
+#~ msgid " parminfo: 0x%08x\n"
+#~ msgstr " parminfo: 0x%08x\n"
+
+#~ msgid " tb_offset: 0x%08x (start=0x%08x)\n"
+#~ msgstr " tb_offset: 0x%08x (inicio=0x%08x)\n"
+
+#~ msgid " hand_mask_offset: 0x%08x\n"
+#~ msgstr " hand_mask_offset: 0x%08x\n"
+
+#~ msgid " CTL[%u]: %08x\n"
+#~ msgstr " CTL[%u]: %08x\n"
+
+#~ msgid " alloca reg: %u\n"
+#~ msgstr " reg aloja: %u\n"
+
+#~ msgid "relocs"
+#~ msgstr "reubicaciones"
+
+# ¿Cómo se traduce esto? cfuga
+#~ msgid "symtab shndx"
+#~ msgstr "symtab shndx"
+
+#~ msgid " 0x%02x "
+#~ msgstr " 0x%02x "
+
+#~ msgid " sp = sp + %d"
+#~ msgstr " sp = sp + %d"
+
+#~ msgid "liblist"
+#~ msgstr "lista de bibliotecas"
+
+#~ msgid "GOT"
+#~ msgstr "GOT"
+
+#~ msgid "PLT GOT"
+#~ msgstr "GOT de PLT"
+
+#~ msgid ""
+#~ "\n"
+#~ "PLT GOT:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "GOT de PLT:\n"
+
+#~ msgid "\n"
+#~ msgstr "\n"
+
+#~ msgid "PT_FIRSTMACH+%d"
+#~ msgstr "PT_FIRSTMACH+%d"
+
+#~ msgid "NT_VMS_TITLE"
+#~ msgstr "NT_VMS_TITLE"
+
+#~ msgid "NT_VMS_LINKTIME"
+#~ msgstr "NT_VMS_LINKTIME"
+
+#~ msgid "NT_VMS_ORIG_DYN"
+#~ msgstr "NT_VMS_ORIG_DYN"
+
+#~ msgid "NT_VMS_PATCHTIME"
+#~ msgstr "NT_VMS_PATCHTIME"
+
+#~ msgid " FP mode: 0x%016"
+#~ msgstr " modo FP: 0x%016"
+
+#~ msgid " Manip date : "
+#~ msgstr " Fecha manip : "
+
+#~ msgid "Usage: %s [emulation options] [--plugin <name>] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+#~ msgstr "Modo de empleo: %s [opciones emulación] [--plugin <nombre>] [-]{dmpqrstx}[abcfilNoPsSuvV] [nombre-miembro] [cuenta] fichero-archivo fichero...\n"
+
+#~ msgid "illegal option -- %c"
+#~ msgstr "opción ilegal -- %c"
+
+#~ msgid ""
+#~ "\n"
+#~ "<%s>\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "<%s>\n"
+#~ "\n"
+
+#~ msgid "Usage: %s < input_file > output_file\n"
+#~ msgstr "Modo de empleo: %s < fichero_entrada > fichero_salida\n"
+
+#~ msgid "Prints bytes from stdin in hex format.\n"
+#~ msgstr "Muestra los bytes de la entrada estándar en formato hexadecimal.\n"
+
+#~ msgid " %d\t"
+#~ msgstr " %d\t"
+
+#~ msgid ""
+#~ "%s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s\n"
+#~ "\n"
+
+#~ msgid " %d\t"
+#~ msgstr " %d\t"
+
+#~ msgid "%s:\n"
+#~ msgstr "%s:\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "./%s:[++]\n"
+#~ msgstr ""
+#~ "\n"
+#~ "./%s:[++]\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "%s/%s:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s/%s:\n"
+
+#~ msgid "%-35s %11d %#18lx\n"
+#~ msgstr "%-35s %11d %#18lx\n"
+
+#~ msgid "%-35s %11d %#18lx[%d]\n"
+#~ msgstr "%-35s %11d %#18lx[%d]\n"
+
+#~ msgid "%s %11d %#18lx\n"
+#~ msgstr "%s %11d %#18lx\n"
+
+#~ msgid "%s %11d %#18lx[%d]\n"
+#~ msgstr "%s %11d %#18lx[%d]\n"
+
+#~ msgid " %ld %s [%s]\n"
+#~ msgstr " %ld %s [%s]\n"
+
+#~ msgid " %-18s %s\n"
+#~ msgstr " %-18s %s\n"
+
+#~ 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"
+
+#~ msgid "target `%s' ignored."
+#~ msgstr " se descarta el objetivo `%s'."
+
+#~ msgid " Pg"
+#~ msgstr " Pg"
+
+#~ msgid " (%ld)"
+#~ msgstr " (%ld)"
+
+#~ msgid "0x%02x "
+#~ msgstr "0x%02x "
+
+#~ msgid " [reserved compact index %d]\n"
+#~ msgstr " [índice compacto reservado %d]\n"
+
+#~ msgid " vsp = vsp - %d"
+#~ msgstr " vsp = vsp - %d"
+
+#~ msgid " vsp = r%d"
+#~ msgstr " vsp = r%d"
+
+#~ msgid "[unsupported two-byte opcode]"
+#~ msgstr "[no se admite el código de operación de dos bytes]"
+
+#~ msgid " %*s %10s %*s\n"
+#~ msgstr " %*s %10s %*s\n"
+
+#~ msgid " %*s %10s %*s %*s %-7s %3s %s\n"
+#~ msgstr " %*s %10s %*s %*s %-7s %3s %s\n"
+
+#~ msgid " %*s %*s %*s %-7s %3s %s\n"
+#~ msgstr " %*s %*s %*s %-7s %3s %s\n"
+
+#~ msgid "%s %s: %s"
+#~ msgstr "%s %s: %s"
+
+#~ msgid "%s:%d: %s\n"
+#~ msgstr "%s:%d: %s\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Can't uncompress section '%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "No se puede descomprimir la sección '%s'.\n"
+
+#~ msgid ""
+#~ "The section %s contains:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "La sección %s contiene:\n"
+#~ "\n"
+
+#~ 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"
+
+#~ msgid "The section %s contains:\n"
+#~ msgstr "La sección %s contiene:\n"
+
+#~ msgid "%s: failed to read archive header following long symbol names\n"
+#~ msgstr "%s: falló al leer el encabezado del archivo a continuación de los nombres de símbolo long\n"
+
+#~ msgid "%s: failed to read file name\n"
+#~ msgstr "%s: Falló al leer el nombre del fichero\n"
+
+#~ msgid "%s: invalid archive string table offset %lu\n"
+#~ msgstr "%s: desplazamiento de tabla de cadenas de archivo %lu inválido\n"
+
+#~ 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 " %8.8lx %8.8lx %8.8lx (base address)\n"
+#~ msgstr " %8.8lx %8.8lx %8.8lx (dirección base)\n"
+
+#~ msgid "set .nlmsections flags"
+#~ msgstr "establecer opciones .nlmsections"
+
+#~ msgid "can't add section '%s' - it already exists!"
+#~ msgstr "no se puede agregar la sección '%s' - ¡!"
+
+#~ msgid "%s: error in %s: %s"
+#~ msgstr "%s: error en %s: %s"
+
+#~ msgid "making"
+#~ msgstr "haciendo"
+
+#~ msgid "size"
+#~ msgstr "tamaño"
+
+#~ msgid "vma"
+#~ msgstr "vma"
+
+#~ msgid "private data"
+#~ msgstr "datos privados"
+
+#~ msgid "%s: section `%s': error in %s: %s"
+#~ msgstr "%s: sección `%s': error en %s: %s"
+
+#~ msgid "invalid section [%5u] in group section [%5u]\n"
+#~ msgstr "sección inválida [%5u] en la sección de grupo [%5u]\n"
+
+#~ msgid " Offset: %#08lx Link to section: %ld (%s)\n"
+#~ msgstr " Despl: %#08lx Enlace a sección: %ld (%s)\n"
+
+#~ msgid "skipping relocation of unknown size against offset 0x%lx in section %s\n"
+#~ msgstr "saltando la reubicación de tamaño desconocido contra el desplazamiento 0x%lx en la sección %s\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"
+
+#~ msgid "invalid number %s"
+#~ msgstr "número %s inválido"
+
+#~ msgid "stat returns negative size for %s"
+#~ msgstr "stat devuelve un valor negativo para %s"
+
+#~ 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"
+
+#~ 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"
+
+#~ msgid " (Pointer size: %u)%s\n"
+#~ msgstr " (Tamaño del puntero: %u)%s\n"
+
+#~ 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"
+
+#~ msgid "unsupported or unknown DW_CFA_%d\n"
+#~ msgstr "DW_CFA_%d desconocido o no admitido\n"
+
+#~ msgid "there are no sections to be copied!"
+#~ msgstr "¡no hay secciones para copiar!"
+
+#~ msgid "Out of memory"
+#~ msgstr "Memoria agotada"
+
+#~ 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 ""
+#~ "\n"
+#~ "<member %s>\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "<miembro %s>\n"
+#~ "\n"
+
+#~ msgid "cannot stat: %s: %s"
+#~ msgstr "no se puede obtener la información de stat: %s: %s"
+
+#~ msgid "%s: cannot stat: %s"
+#~ msgstr "%s: no se puede obtener la información de stat: %s"
+
+#~ msgid "Cannot stat: %s: %s"
+#~ msgstr "No se puede obtener la información de stat: %s: %s"
+
+#~ msgid "Out of virtual memory"
+#~ msgstr "Memoria agotada"
+
+#~ msgid "%s has no %s section"
+#~ msgstr "%s no tiene una sección %s"
+
+#~ msgid "Reading %s section of %s failed: %s\n"
+#~ msgstr "Falló al leer la sección %s de %s: %s\n"
+
+#~ msgid "Skipping unexpected symbol type %u\n"
+#~ msgstr "Saltando el tipo de símbolo %u inesperado\n"
+
+#~ msgid "dynamic segment"
+#~ msgstr "segmento dinámico"
+
+#~ msgid "Cannot stat input file %s.\n"
+#~ msgstr "No se puede obtener la información stat del fichero de entrada %s.\n"
+
+#~ msgid "%s: rename: %s"
+#~ msgstr "%s: rename: %s"
+
+#~ msgid "%s: simple_copy: %s"
+#~ msgstr "%s: simple_copy: %s"
+
+#~ msgid "debug_record_variable: no current block"
+#~ msgstr "debug_record_variable: no hay un bloque actual"
+
+#~ msgid "%s: No dynamic symbols"
+#~ msgstr "%s: No hay símbolos dinámicos"
+
+#~ msgid "64-bit DWARF line info is not supported yet.\n"
+#~ msgstr "La información de línea de DWARF 64-bit aún no tiene soporte.\n"
+
+#~ msgid "64-bit DWARF pubnames are not supported yet.\n"
+#~ msgstr "Los nombres públicos DWARF de 64-bit no tienen soporte aún.\n"
+
+#~ msgid "64-bit DWARF debug info is not supported yet.\n"
+#~ msgstr "La información de depuración DWARF 64-bit aún no tiene soporte.\n"
+
+#~ msgid "64-bit DWARF aranges are not supported yet.\n"
+#~ msgstr "Los rangos-a de DWARF 64-bit aún no tienen soporte.\n"
+
+#~ msgid "64-bit DWARF format frames are not supported yet.\n"
+#~ msgstr "Los marcos de formato de DWARF 64-bit aú no tienen soporte.\n"
+
+#~ msgid ""
+#~ "Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n"
+#~ " [-e executable] [--exe=executable] [--demangle[=style]]\n"
+#~ " [--basenames] [--functions] [addr addr ...]\n"
+#~ msgstr ""
+#~ "Modo de empleo: %s [-CfsHV] [-b nombrebfd] [--target=nombrebfd]\n"
+#~ " [-e ejecutable] [--exe=ejecutable] [--demangle[=estilo]]\n"
+#~ " [--basenames] [--functions] [dirección dirección ...]\n"
+
+#~ msgid ""
+#~ "Usage: %s [-dhV] [-I bfdname] [-O bfdname] [-T header-file] [-l linker]\n"
+#~ " [--input-target=bfdname] [--output-target=bfdname]\n"
+#~ " [--header-file=file] [--linker=linker] [--debug]\n"
+#~ " [--help] [--version]\n"
+#~ " [in-file [out-file]]\n"
+#~ msgstr ""
+#~ "Modo de empleo: %s [-dhV] [-I nombrebfd] [-O nombrebfd] [-T fichero-encabezado] [-l enlazador]\n"
+#~ " [--input-target=nombrebfd] [--output-target=nombrebfd]\n"
+#~ " [--header-file=fichero] [--linker=enlazador] [--debug]\n"
+#~ " [--help] [--version]\n"
+#~ " [fichero-entrada [fichero-salida]]\n"
+
+#~ msgid "Usage: %s [OPTION]... [FILE]...\n"
+#~ msgstr "Modo de empleo: %s [OPCIÓN]... [FICHERO]...\n"
+
+#~ msgid "Usage: %s OPTION... FILE...\n"
+#~ msgstr "Modo de empleo: %s OPCIÓN... FICHERO...\n"
+
+#~ msgid " -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+#~ msgstr " -a ó --all Equivalente a: -h -l -S -s -r -d -V -A -I\n"
+
+#~ msgid " -h or --file-header Display the ELF file header\n"
+#~ msgstr " -h ó --file-header Muestra el encabezado del fichero ELF\n"
+
+#~ msgid " -l or --program-headers or --segments\n"
+#~ msgstr " -l ó --program-headers ó --segments\n"
+
+#~ msgid " Display the program headers\n"
+#~ msgstr " Muestra los encabezados del programa\n"
+
+#~ msgid " -S or --section-headers or --sections\n"
+#~ msgstr " -S ó --section-headers ó --sections\n"
+
+#~ msgid " Display the sections' header\n"
+#~ msgstr " Muestra el encabezado de las secciones\n"
+
+#~ msgid " -e or --headers Equivalent to: -h -l -S\n"
+#~ msgstr " -e ó --headers Equivalente a: -h -l -S\n"
+
+#~ msgid " -s or --syms or --symbols Display the symbol table\n"
+#~ msgstr " -s ó --syms ó --symbols Muestra la tabla de símbolos\n"
+
+#~ msgid " -n or --notes Display the core notes (if present)\n"
+#~ msgstr " -n ó --notes Muestra las notas de núcleo (si están presentes)\n"
+
+#~ msgid " -r or --relocs Display the relocations (if present)\n"
+#~ msgstr " -r ó --relocs Muestra las reubicaciones (si están presentes)\n"
+
+#~ msgid " -u or --unwind Display the unwind info (if present)\n"
+#~ msgstr " -u ó --unwind Muestra la información de desenredo (si está presente)\n"
+
+#~ msgid " -d or --dynamic Display the dynamic segment (if present)\n"
+#~ msgstr " -d ó --dynamic Muestra el segmento dinámico (si está presente)\n"
+
+#~ msgid " -V or --version-info Display the version sections (if present)\n"
+#~ msgstr " -V ó --version-info Muestra las secciones de versión (si están presentes)\n"
+
+#~ msgid " -A or --arch-specific Display architecture specific information (if any).\n"
+#~ msgstr " -A ó --arch-specific Muestra la información específica de la arquitectura (si hay alguna).\n"
+
+#~ msgid " -D or --use-dynamic Use the dynamic section info when displaying symbols\n"
+#~ msgstr " -D ó --use-dynamic Usa la información de la sección dinámica al mostrar los símbolos\n"
+
+#~ msgid " -x <number> or --hex-dump=<number>\n"
+#~ msgstr " -x <número> ó --hex-dump=<número>\n"
+
+#~ msgid " Dump the contents of section <number>\n"
+#~ msgstr " Vuelca el contenido de la sección <número>\n"
+
+#~ msgid " -w[liaprmfs] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n"
+#~ msgstr " -w[liaprmfs] ó --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n"
+
+#~ msgid " Display the contents of DWARF2 debug sections\n"
+#~ msgstr " Muestra el contenido de las secciones de depuración DWARF2\n"
+
+#~ msgid " -i <number> or --instruction-dump=<number>\n"
+#~ msgstr " -i <número> ó --instruction-dump=<número>\n"
+
+#~ msgid " -I or --histogram Display histogram of bucket list lengths\n"
+#~ msgstr " -I ó --histogram Muestra el histograma de las longitudes de la lista de cubos\n"
+
+#~ msgid " -v or --version Display the version number of readelf\n"
+#~ msgstr " -v ó --version Muestra el número de versión de readelf\n"
+
+#~ msgid " -W or --wide Don't split lines or truncate symbols to fit into 80 columns\n"
+#~ msgstr " -W ó --wide No divide las líneas o trunca los símbolos para ajustarlos a 80 columnas\n"
+
+#~ msgid " -H or --help Display this information\n"
+#~ msgstr " -H ó --help Muestra esta información\n"
+
+#~ msgid "unexpected dialog signature %d"
+#~ msgstr "firma de diálogo %d inesperada"
+
+#~ msgid ""
+#~ "Usage: %s [-A | --format=sysv | -B | --format=berkeley]\n"
+#~ " [-o | --radix=8 | -d | --radix=10 | -h | --radix=16]\n"
+#~ " [-V | --version] [--target=bfdname] [--help] [file...]\n"
+#~ msgstr ""
+#~ "Modo de empleo: %s [-A | --format=sysv | -B | --format=berkeley]\n"
+#~ " [-o | --radix=8 | -d | --radix=10 | -h | --radix=16]\n"
+#~ " [-V | --version] [--target=nombrebfd] [--help] [fichero...]\n"
+
+#~ msgid "default is --format=berkeley\n"
+#~ msgstr "por defecto es --format=berkeley\n"
+
+#~ msgid "default is --format=sysv\n"
+#~ msgstr "por defecto es --format=sysv\n"
+
+#~ msgid "Usage: %s [-dhVq] in-file [out-file]\n"
+#~ msgstr "Modo de empleo: %s [-dhVq] fichero-entrada [fichero-salida]\n"
+
+#~ msgid ""
+#~ "Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-e {s,b,l,B,L}]\n"
+#~ " [-] [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n"
+#~ " [--target=bfdname] [--encoding {s,b,l,B,L}] [--help] [--version] file...\n"
+#~ msgstr ""
+#~ "Modo de empleo: %s [-afov] [-n long-min] [-long-min] [-t {o,x,d}] [-e {s,b,l,B,L}]\n"
+#~ " [-] [--all] [--print-file-name] [--bytes=long-min] [--radix={o,x,d}]\n"
+#~ " [--target=nombrebfd] [--encoding {s,b,l,B,L}] [--help] [--version] fichero...\n"
+
+#~ msgid "Usage: %s [-hV] in-file\n"
+#~ msgstr "Modo de empleo: %s [-hV] fichero-entrada\n"
+
+#~ msgid "GNU %s version %s\n"
+#~ msgstr "GNU %s versión %s\n"
+
+#~ msgid "no export definition file provided"
+#~ msgstr "no se provee un fichero de definición de exportación"
+
+#~ msgid " The switches are:\n"
+#~ msgstr " Los interruptores son:\n"
+
+#~ msgid "Unable to seek to start of %s at %x\n"
+#~ msgstr "No se puede buscar para el inicio de %s en %x\n"
+
+#~ msgid "Unable to read data at %x for %s\n"
+#~ msgstr "No se pueden leer datos en %x para %s\n"
+
+#~ msgid "ELF32"
+#~ msgstr "ELF32"
+
+#~ msgid "ELF64"
+#~ msgstr "ELF64"
+
+#~ msgid "UNIX - System V"
+#~ msgstr "UNIX - System V"
+
+#~ msgid "UNIX - HP-UX"
+#~ msgstr "UNIX - HP-UX"
+
+#~ msgid "UNIX - NetBSD"
+#~ msgstr "UNIX - NetBSD"
+
+#~ msgid "UNIX - Linux"
+#~ msgstr "UNIX - Linux"
+
+#~ msgid "GNU/Hurd"
+#~ msgstr "GNU/Hurd"
+
+#~ msgid "UNIX - Solaris"
+#~ msgstr "UNIX - Solaris"
+
+#~ msgid "UNIX - AIX"
+#~ msgstr "UNIX - AIX"
+
+#~ msgid "UNIX - IRIX"
+#~ msgstr "UNIX - IRIX"
+
+#~ msgid "UNIX - FreeBSD"
+#~ msgstr "UNIX - FreeBSD"
+
+#~ msgid "UNIX - TRU64"
+#~ msgstr "UNIX - TRU64"
+
+#~ msgid "Novell - Modesto"
+#~ msgstr "Novell - Modesto"
+
+#~ msgid "UNIX - OpenBSD"
+#~ msgstr "UNIX - OpenBSD"
+
+#~ msgid "ARM"
+#~ msgstr "ARM"
+
+#~ msgid "Key to Flags:\n"
+#~ msgstr "Clave para las Opciones:\n"
+
+#~ msgid " W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+#~ msgstr " W (escribir), A (asignar), X (ejecutar), M (mezclar), S (cadenas)\n"
+
+#~ msgid " I (info), L (link order), G (group), x (unknown)\n"
+#~ msgstr " I (información), L (orden de enlazado), G (grupo), x (desconocido)\n"
+
+#~ msgid " O (extra OS processing required) o (OS specific), p (processor specific)\n"
+#~ msgstr " O (se requiere procesamiento extra de SO) o (específico SO), p (específico procesador)\n"
+
+#~ msgid "Unable to handle FORM: %d"
+#~ msgstr "No se puede manejar FORM: %d"
+
+#~ msgid "64 bit data type and so it cannot read 64 bit ELF files.\n"
+#~ msgstr "tipo de datos de 64 bit así que no puede leer fichero ELF de 64 bit.\n"
diff --git a/binutils-2.24/binutils/po/fi.gmo b/binutils-2.24/binutils/po/fi.gmo
new file mode 100644
index 00000000..1c9fd7e1
--- /dev/null
+++ b/binutils-2.24/binutils/po/fi.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/fi.po b/binutils-2.24/binutils/po/fi.po
new file mode 100644
index 00000000..42463804
--- /dev/null
+++ b/binutils-2.24/binutils/po/fi.po
@@ -0,0 +1,9025 @@
+# Finnish messages for binutils.
+# Copyright © 2005, 2007, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Jorma Karvonen <karvjorm@users.sf.net>, 2005, 2007.
+# Jorma Karvonen <karvonen.jorma@gmail.com>, 2009-2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.22.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2011-10-25 11:20+0100\n"
+"PO-Revision-Date: 2012-07-28 21:07+0200\n"
+"Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
+"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+"Language: fi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-Language: Finnish\n"
+"X-Poedit-Country: FINLAND\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Generator: KBabel 1.11.2\n"
+
+# Käytetty option(s)-suomennoksessa monikkomuotoa. Samoin sanat addr(s) suomennettu monikon partitiivilla.
+#: addr2line.c:81
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Käyttö: %s [valitsimet] [osoitteita]\n"
+
+#: addr2line.c:82
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " Muunna osoitteet rivinumero-tiedostonimipareiksi.\n"
+
+#: addr2line.c:83
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Jos komentorivillä ei ole annettu osoitteita, ne luetaan vakiosyötteestä\n"
+
+#: addr2line.c:84
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -a --addresses Show addresses\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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Make the output easier to read for humans\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Valitsimet ovat:\n"
+" @<tiedosto> Lue valitsimet tiedostosta <tiedosto>\n"
+" -a --addresses Näytä osoitteet\n"
+" -b --target=<bfd-nimi> Aseta binaaritiedoston muoto\n"
+" -e --exe=<suoritustiedosto> Aseta syötetiedoston nimi (oletus on a.out)\n"
+" -i --inlines Palauta inline-funktiot\n"
+" -j --section=<nimi> Lue lohkosuhteelliset siirrokset eikä osoitteet\n"
+" -s --basenames Riisu hakemistonimet\n"
+" -f --functions Näytä funktionimet\n"
+" -C --demangle[=tyyli] Eheytä funktionimet\n"
+" -h --help Näytä nämä tiedot\n"
+" -v --version Näytä ohjelman version\n"
+"\n"
+
+#: addr2line.c:101 ar.c:304 ar.c:333 coffdump.c:471 dlltool.c:3938
+#: dllwrap.c:524 elfedit.c:653 nlmconv.c:1114 objcopy.c:576 objcopy.c:611
+#: readelf.c:3214 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
+#: windmc.c:228 windres.c:695
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr ""
+"Ilmoita ohjelmistovioista englanniksi osoitteeseen %s\n"
+"Suomennoksen virheistä voi ilmoittaa (suomeksi) osoitteeseen <mailto:translation-team-fi@lists.sourceforge.net>\n"
+
+#. Note for translators: This printf is used to join the
+#. function name just printed above to the line number/
+#. file name pair that is about to be printed below. Eg:
+#.
+#. foo at 123:bar.c
+#: addr2line.c:276
+#, c-format
+msgid " at "
+msgstr " osoitteessa "
+
+#. Note for translators: This printf is used to join the
+#. line number/file name pair that has just been printed with
+#. the line number/file name pair that is going to be printed
+#. by the next iteration of the while loop. Eg:
+#.
+#. 123:bar.c (inlined by) 456:main.c
+#: addr2line.c:308
+#, c-format
+msgid " (inlined by) "
+msgstr "(inline-funktiona) "
+
+#: addr2line.c:341
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: osoitteita ei saa arkistosta"
+
+#: addr2line.c:358
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr "%s: lohkoa %s ei löydy"
+
+#: addr2line.c:427 nm.c:1570 objdump.c:3423
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "tuntematon eheytystyyli â€%sâ€"
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "arkistossa ei ole alkiota %s\n"
+
+#: ar.c:254
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...\n"
+msgstr "Käyttö: %s [emulointivalitsimet] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <nimi>] [jäsennimi] [lukumäärä] arkistotiedosto tiedosto...\n"
+
+#: ar.c:260
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] [count] archive-file file...\n"
+msgstr "Käyttö: %s [emulointivalitsimet] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [jäsennimi] [lukumäärä] arkistotiedosto tiedosto...\n"
+
+#: ar.c:266
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<mri-skripti]\n"
+
+#: ar.c:267
+#, c-format
+msgid " commands:\n"
+msgstr " komennot:\n"
+
+#: ar.c:268
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - poista tiedosto(t) arkistosta\n"
+
+#: ar.c:269
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - siirrä tiedosto(t) arkistoon\n"
+
+#: ar.c:270
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - tulosta arkistosta löytyvät tiedosto(t)\n"
+
+#: ar.c:271
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - liitä tiedosto(t) nopeasti arkiston loppuun\n"
+
+#: ar.c:272
+#, c-format
+msgid " r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
+msgstr " r[ab][f][u] - korvaa olemassa oleva(t) tai lisää uudet tiedosto(t) arkistoon\n"
+
+#: ar.c:273
+#, c-format
+msgid " s - act as ranlib\n"
+msgstr " s - toimi kuten ranlib\n"
+
+#: ar.c:274
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - näytä arkiston sisältö\n"
+
+#: ar.c:275
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - pura tiedosto(t) arkistosta\n"
+
+# modifiers on tässä sama kuin options
+#: ar.c:276
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " komentokohtaiset valitsimet:\n"
+
+#: ar.c:277
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - sijoita tiedosto(t) kohteen [jäsennimi] jälkeen\n"
+
+#: ar.c:278
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - laita tiedosto(t) kohteen [jäsennimi] edelle (sama kuin [i])\n"
+
+#: ar.c:279
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr " [D] - käytä nollaa aikaleimoille ja uid-käyttäjätunnisteisiin/gid-ryhmätunnisteisiin\n"
+
+# Otaksun, että kyse on jostain taulukkomuotoisesta oliosta, jossa on lukumäärän osoittama määrä alkioita. Ohjelmointikielissä se merkataan yleensä olio[5] tai nimi[5]. Valitsimella valitaan ilmeisesti tämän muotoinen ilmentymä.
+#: ar.c:280
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - käytä nimen[lukumäärä]-ilmentymää\n"
+
+#: ar.c:281
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - katkaise lisätyt tiedostonimet\n"
+
+#: ar.c:282
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - käytä täyttä polkunimeä, kun se täsmää\n"
+
+#: ar.c:283
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - säilytä alkuperäiset päiväykset\n"
+
+#: ar.c:284
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - korvaa vain tiedostot, jotka ovat arkiston nykysisältöä uudempia\n"
+
+# modifiers on tässä sama kuin options
+#: ar.c:285
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " yleiset valitsimet:\n"
+
+#: ar.c:286
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - älä varoita, jos kirjasto pitää luoda\n"
+
+#: ar.c:287
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - luo arkiston sisältöhakemiston (vrt. ranlib)\n"
+
+#: ar.c:288
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - älä koosta symbolitaulua\n"
+
+#: ar.c:289
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr " [T] - tee ohut arkisto\n"
+
+#: ar.c:290
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - laveasti\n"
+
+#: ar.c:291
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - näytä versionumero\n"
+
+#: ar.c:292
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr " @<tiedosto> - lue valitsimet tiedostosta <tiedosto>\n"
+
+#: ar.c:293
+#, c-format
+msgid " --target=BFDNAME - specify the target object format as BFDNAME\n"
+msgstr " --target=BFDNAME - määrittele kohdeobjektimuoto BFDNAME-nimenä\n"
+
+#: ar.c:295
+#, c-format
+msgid " optional:\n"
+msgstr " vaihtoehtoinen:\n"
+
+#: ar.c:296
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr " --plugin <p> - lataa määritelty lisäosa\n"
+
+#: ar.c:317
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Käyttö: %s [valitsimet] arkisto\n"
+
+#: ar.c:318
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " Tuota sisältöhakemisto nopeuttamaan arkistohakua\n"
+
+#: ar.c:319
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+" Valitsimet ovat:\n"
+" @<tiedosto> Lue valitsimet <tiedosto>sta\n"
+
+#: ar.c:322
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr " --plugin <nimi> Lataa määritelty lisäosa\n"
+
+#: ar.c:325
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+" -t Päivitä arkiston symbolikuvauksen aikaleima\n"
+" -h --help Tulosta tämä opaste\n"
+" -V --version Tulosta versiotiedot\n"
+
+#: ar.c:449
+msgid "two different operation options specified"
+msgstr "kaksi erilaista toimintavalitsinta annettu"
+
+#: ar.c:538 nm.c:1643
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr "Valitettavasti tämä ohjelma on rakennettu ilman lisäosatukea\n"
+
+#: ar.c:693
+msgid "no operation specified"
+msgstr "mitään toimintaa ei ole annettu"
+
+#: ar.c:696
+msgid "`u' is only meaningful with the `r' option."
+msgstr "â€u†on merkityksellinen vain â€râ€-valitsimen kanssa."
+
+#: ar.c:699
+msgid "`u' is not meaningful with the `D' option."
+msgstr "â€u†on merkityksellinen vain â€Dâ€-valitsimen kanssa."
+
+#: ar.c:707
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "â€N†on merkityksellinen vain â€xâ€- ja â€dâ€-valitsimien kanssa."
+
+#: ar.c:710
+msgid "Value for `N' must be positive."
+msgstr "Arvon â€N†on oltava positiivinen."
+
+#: ar.c:724
+msgid "`x' cannot be used on thin archives."
+msgstr "â€x†ei voida käyttää ohuissa arkistoissa."
+
+#: ar.c:771
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "sisäinen virhe -- tätä valitsinta ei ole toteutettu"
+
+# Luomisen kohde on arkisto
+#: ar.c:840
+#, c-format
+msgid "creating %s"
+msgstr "luodaan arkisto %s"
+
+# stat on *nix-ympäristön vakiokomentoja (katso: man stat)
+#: ar.c:889 ar.c:943 ar.c:1272 objcopy.c:2080
+#, c-format
+msgid "internal stat error on %s"
+msgstr "sisäinen stat-kutsuvirhe kohteessa %s"
+
+#: ar.c:908 ar.c:976
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s ei ole kelvollinen arkisto"
+
+#: ar.c:1034
+msgid "could not create temporary file whilst writing archive"
+msgstr "ei voi luoda tilapäistä tiedostoa arkistoa kirjoitettaessa"
+
+#: ar.c:1177
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "Millään jäsenellä ei ole nimeä â€%sâ€\n"
+
+# Tekemisen kohde on siirrettävät tiedostot
+#: ar.c:1227
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "ei tiedostoa %s arkistossa %s!"
+
+# Ruotsinkielisessä käännöksessä todetaan, että archive map on lähdekoodissa sama kuin indeksi, tarkoittanee tässä sisältöhakemistoa?
+#: ar.c:1366
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: ei sisältöhakemistoa päivitettävänä"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "Ei alkiota %s arkistossa.\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "Tiedostoa %s ei voi avata\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: Ei voi avata tulostearkistoa %s\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: Ei voi avata syötearkistoa %s\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: tiedosto %s ei ole arkisto\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: tulostearkistoa ei ole vielä annettu\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: ei avointa tulostearkistoa\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: ei voi avata tiedostoa %s\n"
+
+# Ruotsinkielisessä käännöksessä todetaan, että module file on sama kuin jäsen
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: ei voi löytää jäsentä %s\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "Nykyinen avoin arkisto on %s\n"
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: ei avointa arkistoa\n"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " Ei emulointikohtaisia valitsimia\n"
+
+#. Macros for common output.
+#: binemul.h:49
+#, c-format
+msgid " emulation options: \n"
+msgstr " emulointivalitsimet: \n"
+
+#: bucomm.c:163
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "ei voi asettaa BFD-oletuskohteeksi â€%sâ€: %s"
+
+#: bucomm.c:175
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: Täsmäävät muodot:"
+
+#: bucomm.c:190
+#, c-format
+msgid "Supported targets:"
+msgstr "Tuetut kohteet:"
+
+#: bucomm.c:192
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: tuetut kohteet:"
+
+#: bucomm.c:210
+#, c-format
+msgid "Supported architectures:"
+msgstr "Tuetut arkkitehtuurit:"
+
+#: bucomm.c:212
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: tuetut arkkitehtuurit:"
+
+#: bucomm.c:228
+msgid "big endian"
+msgstr "â€big endianâ€-tavujärjestys"
+
+# Selvennetty ylimääräisillä lainausmerkeillä
+#: bucomm.c:229
+msgid "little endian"
+msgstr "â€little endianâ€-tavujärjestys"
+
+#: bucomm.c:230
+msgid "endianness unknown"
+msgstr "endian-tavujärjestystyyppi tuntematon"
+
+#: bucomm.c:251
+#, c-format
+msgid ""
+"%s\n"
+" (header %s, data %s)\n"
+msgstr ""
+"%s\n"
+" (otsake %s, data %s)\n"
+
+#: bucomm.c:407
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "BFD-otsaketiedoston versio %s\n"
+
+#: bucomm.c:559
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: virheellinen numero: %s"
+
+#: bucomm.c:576 strings.c:409
+#, c-format
+msgid "'%s': No such file"
+msgstr "’%s’: Tiedostoa ei löydy"
+
+# stat-kutsu epäonnistui, ensimmäinen parametri on tiedostonimi
+#: bucomm.c:578 strings.c:411
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "Varoitus: tiedostoa ’%s’ ei löytynyt. syy: %s"
+
+#: bucomm.c:582
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "Varoitus: ’%s’ ei ole tavallinen tiedosto"
+
+#: bucomm.c:584
+#, c-format
+msgid "Warning: '%s' has negative size, probably it is too large"
+msgstr "Varoitus: ’%s’ on negatiivinen koko, ehkä se on liian suuri"
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr "#rivit %d "
+
+#: coffdump.c:130
+#, c-format
+msgid "size %d "
+msgstr "koko %d "
+
+#: coffdump.c:135
+#, c-format
+msgid "section definition at %x size %x\n"
+msgstr "lohkomäärittely osoitteessa %x koko %x\n"
+
+#: coffdump.c:141
+#, c-format
+msgid "pointer to"
+msgstr "osoitin kohteeseen"
+
+#: coffdump.c:146
+#, c-format
+msgid "array [%d] of"
+msgstr "taulukko [%d} /"
+
+# parametri fatal-tulostukseen
+#: coffdump.c:151
+#, c-format
+msgid "function returning"
+msgstr "funtio palauttaa"
+
+#: coffdump.c:155
+#, c-format
+msgid "arguments"
+msgstr "argumentit"
+
+#: coffdump.c:159
+#, c-format
+msgid "code"
+msgstr "koodi"
+
+#: coffdump.c:165
+#, c-format
+msgid "structure definition"
+msgstr "tietuemäärittelyjä"
+
+#: coffdump.c:171
+#, c-format
+msgid "structure ref to UNKNOWN struct"
+msgstr "tietueviite TUNTEMATTOMAAN struct-tietueeseen"
+
+#: coffdump.c:173
+#, c-format
+msgid "structure ref to %s"
+msgstr "tietueviite kohteeseen %s"
+
+#: coffdump.c:176
+#, c-format
+msgid "enum ref to %s"
+msgstr "enumeraatioviite kohteeseen %s"
+
+#: coffdump.c:179
+#, c-format
+msgid "enum definition"
+msgstr "enum-määrittelyjä"
+
+#: coffdump.c:252
+#, c-format
+msgid "Stack offset %x"
+msgstr "Pinosiirrososoite: %x"
+
+#: coffdump.c:255
+#, c-format
+msgid "Memory section %s+%x"
+msgstr "Muistilohko %s+%x"
+
+#: coffdump.c:258
+#, c-format
+msgid "Register %d"
+msgstr "Rekisteri %d"
+
+#: coffdump.c:261
+#, c-format
+msgid "Struct Member offset %x"
+msgstr "Struct-tietuejäsenen siirrososoite %x"
+
+#: coffdump.c:264
+#, c-format
+msgid "Enum Member offset %x"
+msgstr "Enum-enumeraation jäsensiirrososoite %x"
+
+#: coffdump.c:267
+#, c-format
+msgid "Undefined symbol"
+msgstr "Määrittelemätön symboli"
+
+#: coffdump.c:334
+#, c-format
+msgid "List of symbols"
+msgstr "Symbolien luettelo"
+
+#: coffdump.c:341
+#, c-format
+msgid "Symbol %s, tag %d, number %d"
+msgstr "Symboli %s, tunniste %d, numero %d"
+
+#: coffdump.c:345 readelf.c:12215 readelf.c:12289
+#, c-format
+msgid "Type"
+msgstr "Tyyppi"
+
+#: coffdump.c:350
+#, c-format
+msgid "Where"
+msgstr "Missä"
+
+#: coffdump.c:354
+#, c-format
+msgid "Visible"
+msgstr "Näkyvä"
+
+#: coffdump.c:370
+msgid "List of blocks "
+msgstr "Lohkojen luettelo "
+
+#: coffdump.c:383
+#, c-format
+msgid "vars %d"
+msgstr "vars %d"
+
+#: coffdump.c:386
+#, c-format
+msgid "blocks"
+msgstr "lohkot"
+
+#: coffdump.c:404
+#, c-format
+msgid "List of source files"
+msgstr "Lähdetiedostojen luettelo"
+
+#: coffdump.c:410
+#, c-format
+msgid "Source file %s"
+msgstr "Lähdetiedosto %s"
+
+#: coffdump.c:424
+#, c-format
+msgid "section %s %d %d address %x size %x number %d nrelocs %d"
+msgstr "lohko %s %d %d osoite %x koko %x numero %d nrelocs %d"
+
+#: coffdump.c:449
+#, c-format
+msgid "#sources %d"
+msgstr "#sources %d"
+
+#: coffdump.c:462 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Käyttö: %s [valitsimet] syötetiedosto\n"
+
+# Microsoft Portable Executable and CommonObject FileFormat Specification, Revision 6.0-dokumentin mukaan "object file" on tiedosto, joka annetaan syötteenä linkkerille. Linkkeri tuottaa "image file":n, jota vuorostaan käytetään syötteenä ohjelmalataajalle. Termi "object file" ei välttämättä sisällä mitään yhteyttä olioperustaiseen ohjelmointiin.
+#: coffdump.c:463
+#, c-format
+msgid " Print a human readable interpretation of a COFF object file\n"
+msgstr " Tulosta luettavamerkkinen COFF-objektitiedoston tulkinta\n"
+
+#: coffdump.c:464
+#, 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 ""
+" Valitsimet ovat:\n"
+" @<tiedosto> Lue valitsimet tiedostosta <tiedosto>\n"
+" -h --help Näytä nämä tiedot\n"
+" -v --version Näytä ohjelman versio\n"
+"\n"
+
+#: coffdump.c:533 srconv.c:1833 sysdump.c:710
+msgid "no input file specified"
+msgstr "syötetiedostoa ei ole annettu"
+
+#: cxxfilt.c:119 nm.c:269 objdump.c:281
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr ""
+"Ilmoita ohjelmointivirheistä englanniksi osoitteeseen %s.\n"
+"Ilmoita käännösvirheistä osoitteeseen <translation-team-fi@lists.sourceforge.net>.\n"
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: ei nykyistä tiedostoa"
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: ei debug_set_filename-kutsua"
+
+#: debug.c:781
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: ei debug_set_filename-kutsua"
+
+#: debug.c:833
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: ei nykyistä funktiota"
+
+#: debug.c:865
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: ei nykyistä funktiota"
+
+#: debug.c:871
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: joitakin lohkoja ei ollut suljettu"
+
+#: debug.c:899
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: ei nykyistä lohkoa"
+
+#: debug.c:935
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: ei nykyistä lohkoa"
+
+#: debug.c:942
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: yritettiin sulkea ylimmän tason lohko"
+
+#: debug.c:965
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: ei nykyistä yksikköä"
+
+#. FIXME
+#: debug.c:1018
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: ei toteutettu"
+
+#. FIXME
+#: debug.c:1029
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: ei toteutettu"
+
+#. FIXME.
+#: debug.c:1113
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: ei toteutettu"
+
+#: debug.c:1135
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: ei nykyistä tiedostoa"
+
+# Ratkaisin tämän kohdan samalla tavalla kuin ruotsinkielisessä käännöksessä: kind tulee DEBUG_KIND_UNION-tyyppisestä tyyppinimestä. Ennen tätä ilmoitusta lähdekoodissa tutkitaan, onko vianjäljitystyyppi struct, union, class, union class vai enum ja jos mikään ei täsmää, palautetaan debug_type_null.
+#: debug.c:1663
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: lajittelua ei tueta"
+
+#: debug.c:1840
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: ei nykyistä tiedostoa"
+
+#: debug.c:1885
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: ei nykyistä tiedostoa"
+
+#: debug.c:1893
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: yritetty asettaa ylimääräinen tunniste"
+
+#: debug.c:1930
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Varoitus: tyyppikoko %d muutetaan kokoon %d\n"
+
+#: debug.c:1952
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: ei nykyistä käännösyksikköä"
+
+# Ihan outo käsite
+#: debug.c:2055
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: kehä-vianjäljitystietoa kohteella %s\n"
+
+#: debug.c:2482
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: kohdattu virheellinen tyyppi"
+
+#: dlltool.c:902 dlltool.c:928 dlltool.c:959
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "Sisäinen virhe: Tuntematon konetyyppi: %d"
+
+#: dlltool.c:1000
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Ei voi avata def-tiedostoa: %s"
+
+#: dlltool.c:1005
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Käsitellään def-tiedostoa: %s"
+
+#: dlltool.c:1009
+msgid "Processed def file"
+msgstr "Käsiteltiin def-tiedostoa"
+
+#: dlltool.c:1033
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Syntaksivirhe def-tiedostossa %s:%d"
+
+# Microsoft Portable Executable and Common Object File Format Specification, Revision 6.0-dokumentin mukaan "image file" on suoritettava tiedosto joko .EXE- tai .DLL-muodossa. Sitä voidaan pitää "memory image":na. Termiä "image file" on tavallisesti käytetty termin "executable file" sijasta, koska jälkimmäisen joskus oletetaan tarkoittavan vain .EXE-tiedostoa.
+#: dlltool.c:1070
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr "%s: Polkukomponentit riisuttu tiedostovedosnimestä, ’%s’."
+
+# A DEF file contains any number of the following commands:
+# NAME <name> [ , <base> ]
+# The result is going to be <name>.EXE
+#: dlltool.c:1088
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "NAME-komento: %s kantaluku: %x"
+
+#: dlltool.c:1091 dlltool.c:1112
+msgid "Can't have LIBRARY and NAME"
+msgstr "Määriteltynä ei voi olla sekä LIBRARY- että NAME-komento"
+
+# A DEF file contains any number of the following commands:
+# LIBRARY <name> [ , <base> ]
+# The result is going to be <name>.DLL
+#: dlltool.c:1109
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "LIBRARY-komento: %s kantaluku: %x"
+
+#: dlltool.c:1266
+#, c-format
+msgid "VERSION %d.%d\n"
+msgstr "VERSION %d.%d\n"
+
+#: dlltool.c:1314
+#, c-format
+msgid "run: %s %s"
+msgstr "suorita: %s %s"
+
+# Lähdekoodissa tämä oli status error -tuloste
+#: dlltool.c:1354 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "wait-tilavirhe: %s"
+
+#: dlltool.c:1359 dllwrap.c:422 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "aliprosessi sai tuhoisan signaalin %d"
+
+# Ensimmäinen parametri on ohjelma, josta poistutaan (esim. "ld").
+#: dlltool.c:1365 dllwrap.c:429 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s-ohjelmasta poistuttiin tilassa %d"
+
+# Microsoft Portable Executable and Common Object File Format Specification, Revision 6.0-dokumentin mukaan "section" on PE/COFF-tiedoston sisällä koodin ja datan perusyksikkö. Objektitiedostossa, esimerkiksi, kaikki koodi voidaan yhdistää yhdeksi lohkoksi, tai (riippuen kääntäjän toiminnasta) jokainen funktio voi varata oman lohkon. "Section" on hämärästi samanlainen kuin "section" Intel® 8086-arkkitehtuurissa.
+#: dlltool.c:1396
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "Imetään tietoja lohkosta %s kohteessa %s"
+
+#: dlltool.c:1536
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Poissulkeva symboli: %s"
+
+#: dlltool.c:1625 dlltool.c:1636 nm.c:1012 nm.c:1023
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: ei symboleja"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1662
+#, c-format
+msgid "Done reading %s"
+msgstr "Luettu %s"
+
+#: dlltool.c:1672
+#, c-format
+msgid "Unable to open object file: %s: %s"
+msgstr "Ei kyetä avaamaan objektitiedostoa: %s: %s"
+
+#: dlltool.c:1675
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Selataan objektitiedostoa %s"
+
+#: dlltool.c:1690
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "Ei voi tuottaa mcore-elf-dll:ää arkistotiedostosta: %s"
+
+#: dlltool.c:1792
+msgid "Adding exports to output file"
+msgstr "Viennit lisätään tulostetiedostoon"
+
+#: dlltool.c:1844
+msgid "Added exports to output file"
+msgstr "Viennit lisätty tulostetiedostoon"
+
+#: dlltool.c:1986
+#, c-format
+msgid "Generating export file: %s"
+msgstr "Tuotetaan vientitiedosto: %s"
+
+#: dlltool.c:1991
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Ei voi avata tilapäistä assembler-tiedostoa: %s"
+
+#: dlltool.c:1994
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "Avattu tilapäinen tiedosto: %s"
+
+#: dlltool.c:2171
+msgid "failed to read the number of entries from base file"
+msgstr "alkioiden lukumäärän lukeminen perustiedostosta epäonnistui"
+
+# exports file == export file ??
+#: dlltool.c:2219
+msgid "Generated exports file"
+msgstr "Tuotettu vientitiedosto"
+
+# stub on PE-tiedostoon sisällytetty ohjelma, joka esimerkiksi MS-DOS-ikkunassa ilmoittaa "This program cannot be run in DOS mode"
+#: dlltool.c:2428
+#, c-format
+msgid "bfd_open failed open stub file: %s: %s"
+msgstr "bfd_open ei onnistunut avaamaan stub-tiedostoa: %s: %s"
+
+#: dlltool.c:2432
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "Luodaan stub-tiedosto: %s"
+
+# stub on PE-tiedostoon sisällytetty ohjelma, joka esimerkiksi MS-DOS-ikkunassa ilmoittaa "This program cannot be run in DOS mode"
+#: dlltool.c:2894
+#, c-format
+msgid "bfd_open failed reopen stub file: %s: %s"
+msgstr "bfd_open ei onnistunut avaamaan stub-tiedostoa: %s: %s"
+
+#: dlltool.c:2908 dlltool.c:2984
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "ei onnistuttu avaamaan tilapäistä head-tiedostoa: %s"
+
+#: dlltool.c:2970 dlltool.c:3050
+#, c-format
+msgid "failed to open temporary head file: %s: %s"
+msgstr "ei onnistuttu avaamaan tilapäistä head-tiedostoa: %s: %s"
+
+#: dlltool.c:3064
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "ei onnistuttu avamaan tilapäistä tail-tiedostoa: %s"
+
+#: dlltool.c:3121
+#, c-format
+msgid "failed to open temporary tail file: %s: %s"
+msgstr "ei onnistuttu avamaan tilapäistä tail-tiedostoa: %s: %s"
+
+#: dlltool.c:3143
+#, c-format
+msgid "Can't create .lib file: %s: %s"
+msgstr "Ei voi luoda .lib-tiedostoa: %s: %s"
+
+#: dlltool.c:3147
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Luodaan kirjastotiedosto: %s"
+
+#: dlltool.c:3239 dlltool.c:3245
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "ei voi poistaa kohdetta %s: %s"
+
+#: dlltool.c:3250
+msgid "Created lib file"
+msgstr "Luotu lib-tiedosto"
+
+#: dlltool.c:3462
+#, c-format
+msgid "Can't open .lib file: %s: %s"
+msgstr "Ei voi avata .lib-tiedostoa: %s: %s"
+
+#: dlltool.c:3470 dlltool.c:3492
+#, c-format
+msgid "%s is not a library"
+msgstr "%s ei ole kirjasto"
+
+#: dlltool.c:3510
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr "Tuontikirjasto â€%s†määrittelee kaksi tai useampia dll-komponentteja"
+
+#: dlltool.c:3521
+#, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr "Ei voi määritellä dll-nimeä kohteelle â€%s†(ei tuontikirjasto?)"
+
+#: dlltool.c:3745
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Varoitus, ei oteta huomioon EXPORT-kaksoiskappaletta %s %d,%d"
+
+#: dlltool.c:3751
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr "Virhe, EXPORT-kaksoiskappale järjestysluvuilla: %s"
+
+#: dlltool.c:3856
+msgid "Processing definitions"
+msgstr "Käsitellään määrittelyjä"
+
+#: dlltool.c:3888
+msgid "Processed definitions"
+msgstr "Käsiteltiin määrittelyjä"
+
+#. xgetext:c-format
+#: dlltool.c:3895 dllwrap.c:483
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Käyttö %s <valitsimet> <objektitiedosto(t)>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3897
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <kone> Luo DLL:nä kohteelle <kone>. [oletus: %s]\n"
+
+#: dlltool.c:3898
+#, c-format
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr " mahdolliset <koneet>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+
+#: dlltool.c:3899
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <tulostenimi> Tuota vientitiedosto.\n"
+
+#: dlltool.c:3900
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <tulostenimi> Tuota rajapintakirjasto.\n"
+
+#: dlltool.c:3901
+#, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr " -y --output-delaylib <tulostenimi> Luo viive-tuontikirjasto.\n"
+
+# Lisäsin lainausmerkit käsitteen selventämiseksi
+#: dlltool.c:3902
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect Lisää â€dll indirects†vientitiedostoon.\n"
+
+#: dlltool.c:3903
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr " -D --dllname <nimi> Rajapintakirjastoon sijoitettavan syöte-dll:n nimi.\n"
+
+#: dlltool.c:3904
+#, c-format
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr " -d --input-def <def-tiedosto> Luettavan .def-syötetiedoston nimi.\n"
+
+#: dlltool.c:3905
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <def-tiedosto> Luotavan .def-tiedoston nimi.\n"
+
+#: dlltool.c:3906
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Vie kaikki symbolit .def-tiedostoon\n"
+
+#: dlltool.c:3907
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols Vie vain luetellut symbolit\n"
+
+# Tässä "list" suomennettiin sanalla "lista", koska ohjetekstin jälkiosan tekstin alku ei osu samalle kohdalle eri riveillä, jos alkuosa on liian pitkä.
+#: dlltool.c:3908
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <lista> Älä vie <listan> symboleja\n"
+
+#: dlltool.c:3909
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes Nollaa oletuspoissulkevat symbolit\n"
+
+#: dlltool.c:3910
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <kantatiedosto> Lue linkkerin tuottama perustiedosto.\n"
+
+#: dlltool.c:3911
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 Älä tuota idata$4-lohkoa.\n"
+
+#: dlltool.c:3912
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 Älä tuota idata$5-lohkoa.\n"
+
+#: dlltool.c:3913
+#, c-format
+msgid " --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"
+msgstr " --use-nul-prefixed-import-tables Käytä nollaetuliitteisiä idata$4- ja idata$5-lohkoja.\n"
+
+#: dlltool.c:3914
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr " -U --add-underscore Lisää alaviivat rajapintakirjaston kaikkiin symboleihin.\n"
+
+#: dlltool.c:3915
+#, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr " -U --add-underscore Lisää alaviivat rajapintakirjaston std-kutsusymboleihin.\n"
+
+#: dlltool.c:3916
+#, c-format
+msgid " --no-leading-underscore All symbols shouldn't be prefixed by an underscore.\n"
+msgstr " --no-leading-underscore Kaikkiin symboleihin ei pitäisi liittää alaviivaa etuliitteenä.\n"
+
+#: dlltool.c:3917
+#, c-format
+msgid " --leading-underscore All symbols should be prefixed by an underscore.\n"
+msgstr " --leading-underscore Kaikkiin symboleihin pitäisi liittää alaviiva etuliitteenä.\n"
+
+#: dlltool.c:3918
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at Tuhoa @<numeron> viedyistä nimistä.\n"
+
+#: dlltool.c:3919
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Lisää aliaksia ilman @<numeroa>.\n"
+
+#: dlltool.c:3920
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -p --ext-prefix-alias <prefiksi> Lisää aliaksiin <prefiksi>.\n"
+
+#: dlltool.c:3921
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <nimi> Käytä <nimeä> assemblerina.\n"
+
+#: dlltool.c:3922
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <liput> Välitä <liput> assemblerille.\n"
+
+#: dlltool.c:3923
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib Luo taaksepäin yhteensopiva tuontikirjasto.\n"
+
+# Laskuria dontdeltemps kasvatetaan joka kerta kun -n esiintyy komentorivillä.
+#: dlltool.c:3924
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete Pidä tilapäistiedostot (toisto lisäsäilytykseksi).\n"
+
+#: dlltool.c:3925
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr " -t --temp-prefix <prefiksi> Liitä <prefiksi> tilapäistiedostojen nimen eteen.\n"
+
+#: dlltool.c:3926
+#, c-format
+msgid " -I --identify <implib> Report the name of the DLL associated with <implib>.\n"
+msgstr " -I --identify <implib> Ilmoita DLL-nimi, joka liittyi <implib>-kirjastoon.\n"
+
+#: dlltool.c:3927
+#, c-format
+msgid " --identify-strict Causes --identify to report error when multiple DLLs.\n"
+msgstr " --identify-strict Saa valitsimen --identify ilmoittamaan virheestä kun DLL-moduleita on useita.\n"
+
+#: dlltool.c:3928
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose Laveasti.\n"
+
+#: dlltool.c:3929
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version Näytä ohjelman versio.\n"
+
+#: dlltool.c:3930
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help Näytä nämä tiedot.\n"
+
+#: dlltool.c:3931
+#, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr " @<tiedosto> Lue valitsimet tiedostosta <tiedosto>.\n"
+
+#: dlltool.c:3933
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr " -M --mcore-elf <tulostenimi> Käsittele mcore-elf-objektitiedostot kohteeseen <tulostenimi>.\n"
+
+#: dlltool.c:3934
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <nimi> Käytä parametriä <nimi> linkkerinä.\n"
+
+#: dlltool.c:3935
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <liput> Välitä <liput> linkkerille.\n"
+
+#: dlltool.c:4082
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr "Polkukomponentit riisuttu dll-nimestä, ’%s’."
+
+#: dlltool.c:4130
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Ei voi avata perustiedostoa: %s"
+
+#: dlltool.c:4165
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Konetta ’%s’ ei tueta"
+
+#: dlltool.c:4245
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr "Varoitus, konetyyppi (%d) ei tue viivetuontia."
+
+#: dlltool.c:4313 dllwrap.c:213
+#, c-format
+msgid "Tried file: %s"
+msgstr "Yritettiin tiedostoa: %s"
+
+#: dlltool.c:4320 dllwrap.c:220
+#, c-format
+msgid "Using file: %s"
+msgstr "Käytetään tiedostoa: %s"
+
+#: dllwrap.c:303
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "Tilapäinen perustiedosto %s pidetään"
+
+#: dllwrap.c:305
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "Tilapäinen perustiedosto %s poistetaan"
+
+#: dllwrap.c:319
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "Tilapäinen vientitiedosto %s pidetään"
+
+#: dllwrap.c:321
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "Tilapäinen vientitiedosto %s poistetaan"
+
+#: dllwrap.c:334
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Tilapäinen määrittelytiedosto %s pidetään"
+
+#: dllwrap.c:336
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "Tilapäinen määrittelytiedosto %s poistetaan"
+
+#: dllwrap.c:417
+#, c-format
+msgid "pwait returns: %s"
+msgstr "pwait palauttaa: %s"
+
+#: dllwrap.c:484
+#, c-format
+msgid " Generic options:\n"
+msgstr " Yleiset valitsimet:\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr " @<tiedosto> Lue valitsimet tiedostosta <tiedosto>\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q Työskentele hiljaa\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Laveasti\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version Tulosta dllwrap-versio\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <tulostenimi> Synonyymi valitsimelle --output-lib\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Valitsimet kohteelle %s:\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <driveri> Oletukset kohteelle â€gccâ€\n"
+
+#: dllwrap.c:492
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <liput> Korvaa ld-oletusliput\n"
+
+#: dllwrap.c:493
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dlltool> Oletukset kohteelle â€dlltoolâ€\n"
+
+#: dllwrap.c:494
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <tulokohta> Määrittele vaihtoehtoinen DLL-tulokohta\n"
+
+#: dllwrap.c:495
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <perus> Määrittele tiedostovedoksen perusosoite\n"
+
+#: dllwrap.c:496
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <kone> i386-cygwin32 tai i386-mingw32\n"
+
+# Samalla tavalla kuin ruotsinnoksessa
+#: dllwrap.c:497
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run Näytä mitä pitää suorittaa, älä toteuta\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Luo Mingw DLL:n\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " DLLTOOL:lle välitetyt valitsimet:\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <kone>\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <tulostenimi> Tuota vientitiedosto.\n"
+
+#: dllwrap.c:502
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <tulostenimi> Tuota syötekirjasto.\n"
+
+# Lisäsin lainausmerkit selventämään käsitettä
+#: dllwrap.c:503
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect Lisää â€dll indirects†vientitiedostoon.\n"
+
+#: dllwrap.c:504
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <nimi> Tulostekirjastoon laitettavan syöte-dll:n nimi.\n"
+
+#: dllwrap.c:505
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <def-tiedosto> Aseta .def-syötetiedoston nimi\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <def-tiedosto> Aseta .def-tulostetiedoston nimi\n"
+
+#: dllwrap.c:507
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Vie kaikki symbolit kohteeseen .def\n"
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols Vie vain .drectve-symbolit\n"
+
+#: dllwrap.c:509
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <lista> Sulje pois symbolit <listasta> .def\n"
+
+#: dllwrap.c:510
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes Poista oletuspoissulkevat symbolit\n"
+
+#: dllwrap.c:511
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr " --base-file <perustiedosto> Lue linkkerin tuottama perustiedosto\n"
+
+#: dllwrap.c:512
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 Älä tuota idata$4-lohkoa\n"
+
+#: dllwrap.c:513
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 Älä tuota idata$5-lohkoa\n"
+
+#: dllwrap.c:514
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U Lisää alaviivat kohteeseen .lib\n"
+
+#: dllwrap.c:515
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k Tuhoa @<numero> viedyistä nimistä\n"
+
+#: dllwrap.c:516
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias Lisää aliakset ilman @<numeroa>\n"
+
+#: dllwrap.c:517
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <nimi> Käytä ohjelmaa <nimi> assemblerina\n"
+
+#: dllwrap.c:518
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete Pidä tilapäiset tiedostot.\n"
+
+#: dllwrap.c:519
+#, c-format
+msgid " --no-leading-underscore Entrypoint without underscore\n"
+msgstr " --no-leading-underscore Tulokohta ilman alaviivaa\n"
+
+#: dllwrap.c:520
+#, c-format
+msgid " --leading-underscore Entrypoint with underscore.\n"
+msgstr " --leading-underscore Tulokohta alaviivalla.\n"
+
+# language driver tarkoittaa esimerkiksi gcc-kääntäjää
+#: dllwrap.c:521
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " Loput on välitetty sellaisenaan ohjelmointikieliyksikölle\n"
+
+#: dllwrap.c:805
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "Valitsimista on annettava joko -o tai --dllname"
+
+#: dllwrap.c:834
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"vientimäärittelytiedostoa ei ole (erikseen) annettu.\n"
+"Sen tilalle luotava ei ehkä ole sellainen kuin haluat"
+
+# Välilyöntejä lisätty ennen kaksoispistettä, jotta kaksoispiste olisi rivien 973 ja 975 kanssa samalla kohtaa
+#: dllwrap.c:1023
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "DLLTOOL-nimi : %s\n"
+
+#: dllwrap.c:1024
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "DLLTOOL-valitsimet : %s\n"
+
+# DRIVER on esimerkiksi gcc eli compilation unit eli käännösyksikkö. Välilyöntejä lisätty ennen kaksoispistettä, jotta kaksoispiste olisi rivien 973 ja 975 kanssa samalla kohtaa
+#: dllwrap.c:1025
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "YKSIKKÖ-nimi : %s\n"
+
+# DRIVER on esimerkiksi gcc eli compilation unit eli käännösyksikkö
+#: dllwrap.c:1026
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "YKSIKKÖ-valitsimet : %s\n"
+
+#: dwarf.c:132
+msgid "Wrong size in print_dwarf_vma"
+msgstr "Väärä koko kohteessa print_dwarf_vma"
+
+#: dwarf.c:256 dwarf.c:3027
+msgid "badly formed extended line op encountered!\n"
+msgstr "virheellisesti muotoiltu laajennusrivin käskykoodi tavattu!\n"
+
+#: dwarf.c:263
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " Laajennettu käskykoodi %d: "
+
+#: dwarf.c:268
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Sekvenssin loppu\n"
+"\n"
+
+#: dwarf.c:274
+#, c-format
+msgid "set Address to 0x%s\n"
+msgstr "aseta osoitteeksi 0x%s\n"
+
+#: dwarf.c:280
+#, c-format
+msgid " define new File Table entry\n"
+msgstr " määrittele uusi tiedostotaulualkio\n"
+
+#: dwarf.c:281 dwarf.c:2555
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Rivi\tHakemisto\tAika\tKoko\tNimi\n"
+
+#: dwarf.c:295
+#, c-format
+msgid "set Discriminator to %s\n"
+msgstr "aseta Erottajan arvoksi %s\n"
+
+#: dwarf.c:370
+#, c-format
+msgid " UNKNOWN DW_LNE_HP_SFC opcode (%u)\n"
+msgstr " TUNTEMATON DW_LNE_HP_SFC-käskykoodi (%u)\n"
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:387
+#, c-format
+msgid "user defined: "
+msgstr "käyttäjän määrittelemä: "
+
+#: dwarf.c:389
+#, c-format
+msgid "UNKNOWN: "
+msgstr "TUNTEMATON: "
+
+#: dwarf.c:390
+#, c-format
+msgid "length %d ["
+msgstr "pituus %d ["
+
+#: dwarf.c:407
+msgid "<no .debug_str section>"
+msgstr "<ei .debug_str-lohkoa>"
+
+#: dwarf.c:413
+#, c-format
+msgid "DW_FORM_strp offset too big: %s\n"
+msgstr "DW_FORM_strp-siirros liian suuri: %s\n"
+
+#: dwarf.c:415
+msgid "<offset is too big>"
+msgstr "<siirros on liian suuri>"
+
+#: dwarf.c:655
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Tuntematon tunnistearvo: %lx"
+
+#: dwarf.c:696
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Tuntematon FORM-arvo: %lx"
+
+#: dwarf.c:705
+#, c-format
+msgid " %s byte block: "
+msgstr " %s tavulohko: "
+
+#: dwarf.c:1050
+#, c-format
+msgid "(DW_OP_call_ref in frame info)"
+msgstr "(DW_OP_call_ref kehystiedoissa)"
+
+#: dwarf.c:1075
+#, c-format
+msgid "size: %s "
+msgstr "koko: %s "
+
+#: dwarf.c:1078
+#, c-format
+msgid "offset: %s "
+msgstr "siirrososoite: %s "
+
+#: dwarf.c:1098
+#, c-format
+msgid "DW_OP_GNU_push_tls_address or DW_OP_HP_unknown"
+msgstr "DW_OP_GNU_push_tls_address tai DW_OP_HP_unknown"
+
+#: dwarf.c:1122
+#, c-format
+msgid "(DW_OP_GNU_implicit_pointer in frame info)"
+msgstr "(DW_OP_GNU_implicit_pointer kehystiedoissa)"
+
+#: dwarf.c:1234
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Käyttäjän määrittelemä sijoituskäskykoodi)"
+
+#: dwarf.c:1236
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Tuntematon sijoituskäskykoodi)"
+
+#: dwarf.c:1283
+msgid "Internal error: DWARF version is not 2, 3 or 4.\n"
+msgstr "Sisäinen virhe: DWARF-versio ei ole 2, 3 eikä 4.\n"
+
+#: dwarf.c:1389
+msgid "DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"
+msgstr "DW_FORM_data8 ei ole tuettu, kun sizeof (dwarf_vma) != 8\n"
+
+#: dwarf.c:1439
+#, c-format
+msgid " (indirect string, offset: 0x%s): %s"
+msgstr " (epäsuora merkkijono, siirros: 0x%s): %s"
+
+#: dwarf.c:1464
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Tunnistamaton muoto: %lu\n"
+
+#: dwarf.c:1557
+#, c-format
+msgid "(not inlined)"
+msgstr "(ei inline-funktiona)"
+
+#: dwarf.c:1560
+#, c-format
+msgid "(inlined)"
+msgstr "(inline-funktiona)"
+
+#: dwarf.c:1563
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(esitelty inline-funktiona, mutta esittelyä ei ole otettu huomioon)"
+
+#: dwarf.c:1566
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(esitelty inline-funktiona ja toteutettu sellaisena)"
+
+#: dwarf.c:1569
+#, c-format
+msgid " (Unknown inline attribute value: %s)"
+msgstr " (Tuntematon inline-funktion attribuuttiarvo: %s)"
+
+#: dwarf.c:1608
+#, c-format
+msgid "(implementation defined: %s)"
+msgstr "(toteutuss määritelty: %s)"
+
+#: dwarf.c:1611
+#, c-format
+msgid "(Unknown: %s)"
+msgstr "(Tuntematon: %s)"
+
+#: dwarf.c:1649
+#, c-format
+msgid "(user defined type)"
+msgstr "(käyttäjän määrittelemä tyyppi)"
+
+#: dwarf.c:1651
+#, c-format
+msgid "(unknown type)"
+msgstr "(tuntematon tyyppi)"
+
+#: dwarf.c:1663
+#, c-format
+msgid "(unknown accessibility)"
+msgstr "(tuntematon esteettömyys)"
+
+#: dwarf.c:1674
+#, c-format
+msgid "(unknown visibility)"
+msgstr "(tuntematon näkyvyys)"
+
+#: dwarf.c:1684
+#, c-format
+msgid "(unknown virtuality)"
+msgstr "(tuntematon näennäisyys)"
+
+#: dwarf.c:1695
+#, c-format
+msgid "(unknown case)"
+msgstr "(tuntematon tapaus)"
+
+#: dwarf.c:1708
+#, c-format
+msgid "(user defined)"
+msgstr "(käyttäjän määrittelemä)"
+
+#: dwarf.c:1710
+#, c-format
+msgid "(unknown convention)"
+msgstr "(tuntematon käytäntö)"
+
+#: dwarf.c:1717
+#, c-format
+msgid "(undefined)"
+msgstr "(määrittelemätön)"
+
+#: dwarf.c:1740
+#, c-format
+msgid "(location list)"
+msgstr "(sijoitusluettelo)"
+
+#: dwarf.c:1761 dwarf.c:4045
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [DW_AT_frame_base puuttuu]"
+
+#: dwarf.c:1777
+#, c-format
+msgid "Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr "Siirros %s, jota käytettiin DIE:n DW_AT_import-attribuutin arvona siirrososoitteessa %lx on liian suuri.\n"
+
+#: dwarf.c:1787
+#, c-format
+msgid "[Abbrev Number: %ld"
+msgstr "[Lyhennenumero: %ld"
+
+#: dwarf.c:1978
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Tuntematon AT-arvo: %lx"
+
+#: dwarf.c:2049
+#, c-format
+msgid "Reserved length value (0x%s) found in section %s\n"
+msgstr "Varattu pituusarvo (0x%s) löytyi lohkossa %s\n"
+
+#: dwarf.c:2061
+#, c-format
+msgid "Corrupt unit length (0x%s) found in section %s\n"
+msgstr "Rikkinäinen yksikköpituus (0x%s) löytyi lohkossa %s\n"
+
+# comp units tarkoittanee compilation unit eli käännösyksikköä?
+#: dwarf.c:2069
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "Ei käännösyksikköjä %s-lohkossa ?"
+
+#: dwarf.c:2078
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "Muistia ei ole tarpeeksi %u:n alkion vianjäljitystietotaulukolle"
+
+#: dwarf.c:2087 dwarf.c:3296 dwarf.c:3390 dwarf.c:3551 dwarf.c:3779
+#: dwarf.c:3911 dwarf.c:4081 dwarf.c:4150 dwarf.c:4354
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Lohkon %s sisältö:\n"
+"\n"
+
+#: dwarf.c:2095
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Ei voi paikantaa %s-lohkoa!\n"
+
+#: dwarf.c:2176
+#, c-format
+msgid " Compilation Unit @ offset 0x%s:\n"
+msgstr " Käännösyksikkö @ siirros 0x%s:\n"
+
+# Välilyöntilisäys
+#: dwarf.c:2178
+#, c-format
+msgid " Length: 0x%s (%s)\n"
+msgstr " Pituus: 0x%s (%s)\n"
+
+# Välilyöntilisäys
+#: dwarf.c:2181
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versio: %d\n"
+
+# Välilyöntilisäys
+#: dwarf.c:2182
+#, c-format
+msgid " Abbrev Offset: %s\n"
+msgstr " Lyhennesiirros: %s\n"
+
+# Välilyöntilisäys
+#: dwarf.c:2184
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Osoitinkoko: %d\n"
+
+#: dwarf.c:2188
+#, c-format
+msgid " Signature: "
+msgstr " Tuntomerkki: "
+
+#: dwarf.c:2192
+#, c-format
+msgid " Type Offset: 0x%s\n"
+msgstr " Tyyppisiirros: 0x%s\n"
+
+#: dwarf.c:2200
+#, c-format
+msgid "Debug info is corrupted, length of CU at %s extends beyond end of section (length = %s)\n"
+msgstr "Vianjäljitystieto on rikkinäinen, käännösyksikön pituus osoitteessa %s ulottuu lohkon lopun ylitse (pituus = %s)\n"
+
+#: dwarf.c:2213
+#, c-format
+msgid "CU at offset %s contains corrupt or unsupported version number: %d.\n"
+msgstr "Käännösyksikkö siirrososoitteessa %s sisältää rikkinäisen tai tukemattoman versionumeron: %d.\n"
+
+#: dwarf.c:2224
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr "Vianjäljitystieto on rikkinäinen, lyhennyssiirros (%lx) on laajempi kuin lyhennyslohkon koko (%lx)\n"
+
+#: dwarf.c:2274
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr "Valesisarusloppumerkitsijä havaittu siirrososoitteessa %lx lohkossa .debug_info\n"
+
+#: dwarf.c:2278
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr "Lisävaroitukset valesisarusloppumerkitsijöistä on vaimennettu\n"
+
+#: dwarf.c:2297
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr " <%d><%lx>: Lyhennenumero: %lu"
+
+#: dwarf.c:2301
+#, c-format
+msgid " <%d><%lx>: ...\n"
+msgstr " <%d><%lx>: ...\n"
+
+#: dwarf.c:2320
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr "DIE siirrososoitteessa %lx viittaa lyhennenumeroon %lu, jota ei ole olemassa\n"
+
+#: dwarf.c:2422
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Lohkon %s vianjäljityssisällön raakavedos:\n"
+"\n"
+
+#: dwarf.c:2460
+#, c-format
+msgid "The information in section %s appears to be corrupt - the section is too small\n"
+msgstr "Tiedot lohkossa %s näyttävät olevan rikkinäisiä - lohko on liian pieni\n"
+
+#: dwarf.c:2472 dwarf.c:2840
+msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
+msgstr "Vain DWARF-versioiden 2, 3 ja 4 rivitiedot on nykyisin tuettu.\n"
+
+#: dwarf.c:2486 dwarf.c:2855
+msgid "Invalid maximum operations per insn.\n"
+msgstr "Virheellinen toimintojen enimmäismäärä per käsky.\n"
+
+# DWARF2_Internal_LineInfo-lohkon pituus
+#: dwarf.c:2505 dwarf.c:3574
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr " Siirros: 0x%lx\n"
+
+# DWARF2_Internal_LineInfo-lohkon pituus
+#: dwarf.c:2506
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Pituus: %ld\n"
+
+#: dwarf.c:2507
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " DWARF-versio: %d\n"
+
+#: dwarf.c:2508
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " Esitoimipituus: %d\n"
+
+#: dwarf.c:2509
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " Minimikäskypituus: %d\n"
+
+#: dwarf.c:2511
+#, c-format
+msgid " Maximum Ops per Instruction: %d\n"
+msgstr " Enimmäistoimintoja per käsky:%d\n"
+
+#: dwarf.c:2512
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " Kohteen ’is_stmt’ alkuarvo: %d\n"
+
+# Välilyönti lisätty tarkoituksella.
+#: dwarf.c:2513
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " Rivin kantaluku: %d\n"
+
+# Välilyönti lisätty tarkoituksella.
+#: dwarf.c:2514
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " Rivinumeroalue: %d\n"
+
+# Välilyönti lisätty tarkoituksella.
+#: dwarf.c:2515
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " Käskykoodin kantaluku: %d\n"
+
+#: dwarf.c:2524
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Käskykoodit:\n"
+
+#: dwarf.c:2527
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " Käskykoodilla %d on %d argumenttia\n"
+
+#: dwarf.c:2533
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" Hakemistotaulu on tyhjä.\n"
+
+#: dwarf.c:2536
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" Hakemistotaulu:\n"
+
+#: dwarf.c:2551
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" Tiedostonimitaulu on tyhjä.\n"
+
+#: dwarf.c:2554
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" Tiedostonimitaulu:\n"
+
+#. Now display the statements.
+#: dwarf.c:2584
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Rivi Numero Lauseet:\n"
+
+#: dwarf.c:2603
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s"
+msgstr " Erikoiskäskykoodi %d: kasvata %s tavua osoitteeseen 0x%s"
+
+#: dwarf.c:2617
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s[%d]"
+msgstr " Erikoiskäskykoodi %d: kasvata osoitetta %s tavua osoitteeseen 0x%s[%d]"
+
+#: dwarf.c:2625
+#, c-format
+msgid " and Line by %s to %d\n"
+msgstr " ja %s riviä riville %d\n"
+
+#: dwarf.c:2635
+#, c-format
+msgid " Copy\n"
+msgstr " Kopioi\n"
+
+#: dwarf.c:2645
+#, c-format
+msgid " Advance PC by %s to 0x%s\n"
+msgstr " Kasvata ohjelmalaskuria arvolla %s arvoon 0x%s\n"
+
+#: dwarf.c:2658
+#, c-format
+msgid " Advance PC by %s to 0x%s[%d]\n"
+msgstr " Kasvata ohjelmalaskuria arvolla %s arvoon 0x%s[%d]\n"
+
+#: dwarf.c:2669
+#, c-format
+msgid " Advance Line by %s to %d\n"
+msgstr " Kasvata riviä arvolla %s arvoon %d\n"
+
+#: dwarf.c:2677
+#, c-format
+msgid " Set File Name to entry %s in the File Name Table\n"
+msgstr " Aseta tiedostonimi riville %s tiedostonimitaulussa\n"
+
+#: dwarf.c:2685
+#, c-format
+msgid " Set column to %s\n"
+msgstr " Aseta sarakkeeksi %s\n"
+
+#: dwarf.c:2693
+#, c-format
+msgid " Set is_stmt to %s\n"
+msgstr " Aseta is_stmt-arvoksi %s\n"
+
+#: dwarf.c:2698
+#, c-format
+msgid " Set basic block\n"
+msgstr " Aseta peruslohko\n"
+
+#: dwarf.c:2708
+#, c-format
+msgid " Advance PC by constant %s to 0x%s\n"
+msgstr " Kasvata ohjelmalaskuria vakiolla %s arvoon 0x%s\n"
+
+#: dwarf.c:2721
+#, c-format
+msgid " Advance PC by constant %s to 0x%s[%d]\n"
+msgstr " Kasvata ohjelmalaskuria vakiolla %s arvoon 0x%s[%d]\n"
+
+#: dwarf.c:2733
+#, c-format
+msgid " Advance PC by fixed size amount %s to 0x%s\n"
+msgstr " Kasvata ohjelmalaskuria kiinteäkokoisella summalla %s arvoon 0x%s\n"
+
+#: dwarf.c:2739
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr " Aseta prologue_end-arvoksi true\n"
+
+#: dwarf.c:2743
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr " Aseta epilogue_begin-arvoksi true\n"
+
+#: dwarf.c:2749
+#, c-format
+msgid " Set ISA to %s\n"
+msgstr " Aseta ISA-arvoksi %s\n"
+
+#: dwarf.c:2753 dwarf.c:3168
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr " Tuntematon käskykoodi %d, jonka operandit ovat: "
+
+#: dwarf.c:2787
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Lohkon %s vianjäljityssisällön dekoodattu vedos:\n"
+"\n"
+
+#: dwarf.c:2828
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "Rivitiedot näyttävät olevan rikkinäisiä - lohko on liian pieni\n"
+
+#: dwarf.c:2960
+#, c-format
+msgid "CU: %s:\n"
+msgstr "Käännösyksikkö: %s:\n"
+
+#: dwarf.c:2961 dwarf.c:2972
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr "Tiedostonimi Rivinumero Aloitusosoite\n"
+
+#: dwarf.c:2968
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr "Käännösyksikkö: %s/%s:\n"
+
+#: dwarf.c:3059
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "TUNTEMATON: pituus %d\n"
+
+#: dwarf.c:3164
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr " Aseta ISA-arvoksi %lu\n"
+
+#: dwarf.c:3330 dwarf.c:4195
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr ".debug_info-siirrososoite: 0x%lx lohkossa %s ei osoita käännösyksikköotsakkeeseen.\n"
+
+# tarkoittaako pubnames julkisia nimiä?
+#: dwarf.c:3344
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Vain DWARF 2:n ja 3:n pub-nimet ovat nykyisin tuettuja\n"
+
+#: dwarf.c:3351
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Pituus: %ld\n"
+
+#: dwarf.c:3353
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versio: %d\n"
+
+#: dwarf.c:3355
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr " Siirros lohkoon .debug_info: 0x%lx\n"
+
+#: dwarf.c:3357
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr " Alueen koko .debug_info-lohkossa: %ld\n"
+
+#: dwarf.c:3360
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" Siirros\tNimi\n"
+
+#: dwarf.c:3411
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - rivinro:%d tied.nro:%d\n"
+
+#: dwarf.c:3417
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+# lineno tarkoittaa ilmeisesti rivinumeroa
+#: dwarf.c:3425
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - rivinro: %d makro : %s\n"
+
+# lineno tarkoittaa ilmeisesti rivinumeroa
+#: dwarf.c:3434
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - rivinro: %d makro : %s\n"
+
+#: dwarf.c:3446
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - vakio : %d merkkijono : %s\n"
+
+#: dwarf.c:3566
+#, c-format
+msgid "Only GNU extension to DWARF 4 of %s is currently supported.\n"
+msgstr "Vain GNU-laajennus kohteen %s DWARF-versioon 4 on nykyisin tuettu.\n"
+
+#: dwarf.c:3576
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versio: %d\n"
+
+#: dwarf.c:3577
+#, c-format
+msgid " Offset size: %d\n"
+msgstr " Siirrososoitekoko: %d\n"
+
+#: dwarf.c:3582
+#, c-format
+msgid " Offset into .debug_line: 0x%lx\n"
+msgstr " Siirrososoite kohteeseen .debug_line: 0x%lx\n"
+
+#: dwarf.c:3593
+#, c-format
+msgid " Extension opcode arguments:\n"
+msgstr " Laajennuksen käskykoodiargumentit:\n"
+
+#: dwarf.c:3601
+#, c-format
+msgid " DW_MACRO_GNU_%02x has no arguments\n"
+msgstr " DW_MACRO_GNU_%02x ei ole argumentteja\n"
+
+#: dwarf.c:3604
+#, c-format
+msgid " DW_MACRO_GNU_%02x arguments: "
+msgstr " DW_MACRO_GNU_%02x-argumentit: "
+
+#: dwarf.c:3628
+#, c-format
+msgid "Invalid extension opcode form %s\n"
+msgstr "Virheellinen laajennuskäskykoodimuoto %s\n"
+
+#: dwarf.c:3645
+msgid ".debug_macro section not zero terminated\n"
+msgstr ".debug_macro-lohkoa ei ole päätetty nollaan\n"
+
+#: dwarf.c:3666
+msgid "DW_MACRO_GNU_start_file used, but no .debug_line offset provided.\n"
+msgstr "DW_MACRO_GNU_start_file käytetty, mutta ei ole tarjottu .debug_line siirrososoitetta.\n"
+
+#: dwarf.c:3672
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACRO_GNU_start_file - rivinro:%d tied.nro:%d\n"
+
+#: dwarf.c:3675
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d filename: %s%s%s\n"
+msgstr " DW_MACRO_GNU_start_file - rivinro:%d tied.nro:%d tiedostonimi: %s%s%s\n"
+
+#: dwarf.c:3683
+#, c-format
+msgid " DW_MACRO_GNU_end_file\n"
+msgstr " DW_MACRO_GNU_end_file\n"
+
+# lineno tarkoittaa ilmeisesti rivinumeroa
+#: dwarf.c:3691
+#, c-format
+msgid " DW_MACRO_GNU_define - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_define - rivinro: %d makro : %s\n"
+
+# lineno tarkoittaa ilmeisesti rivinumeroa
+#: dwarf.c:3700
+#, c-format
+msgid " DW_MACRO_GNU_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_undef - rivinro: %d makro : %s\n"
+
+# lineno tarkoittaa ilmeisesti rivinumeroa
+#: dwarf.c:3710
+#, c-format
+msgid " DW_MACRO_GNU_define_indirect - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_define_indirect - rivinro: %d makro : %s\n"
+
+# lineno tarkoittaa ilmeisesti rivinumeroa
+#: dwarf.c:3720
+#, c-format
+msgid " DW_MACRO_GNU_undef_indirect - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_undef_indirect - rivinro: %d makro : %s\n"
+
+#: dwarf.c:3727
+#, c-format
+msgid " DW_MACRO_GNU_transparent_include - offset : 0x%lx\n"
+msgstr " DW_MACRO_GNU_transparent_include - siirrososoite : 0x%lx\n"
+
+#: dwarf.c:3734
+#, c-format
+msgid " Unknown macro opcode %02x seen\n"
+msgstr "Havaittu tuntematon makrokäskykoodi %02x\n"
+
+#: dwarf.c:3746
+#, c-format
+msgid " DW_MACRO_GNU_%02x\n"
+msgstr " DW_MACRO_GNU_%02x\n"
+
+#: dwarf.c:3749
+#, c-format
+msgid " DW_MACRO_GNU_%02x -"
+msgstr " DW_MACRO_GNU_%02x -"
+
+# Seuraava on taulukon otsikko. Itse taulukko on leveydeltään: " %ld %s [%s]". Viimeinen [%s] sisältää tekstin "has children" tai "no children".
+#: dwarf.c:3790
+#, c-format
+msgid " Number TAG\n"
+msgstr " Numero Tunniste\n"
+
+#: dwarf.c:3799
+msgid "has children"
+msgstr "on jälkeläisiä"
+
+#: dwarf.c:3799
+msgid "no children"
+msgstr "ei jälkeläisiä"
+
+#: dwarf.c:3850 dwarf.c:4077 dwarf.c:4311
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"Lohko %s on tyhjä.\n"
+
+#: dwarf.c:3856 dwarf.c:4317
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr "Ei kyetä lataamaan/jäsentämään .debug_info-lohkoa, joten ei voida tulkita %s-lohkoa.\n"
+
+#: dwarf.c:3900
+msgid "No location lists in .debug_info section!\n"
+msgstr "Ei sijaintiluetteloja .debug_info-lohkossa!\n"
+
+#: dwarf.c:3905
+#, c-format
+msgid "Location lists in %s section start at 0x%s\n"
+msgstr "Sijaintiluettelot %s-lohkossa alkavat osoitteesta 0x%s\n"
+
+#: dwarf.c:3912
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr " Siirros Alku Loppu Lauseke\n"
+
+#: dwarf.c:3961
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Lohkossa .debug_loc on aukko [0x%lx - 0x%lx].\n"
+
+#: dwarf.c:3965
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Lohkossa .debug_loc on päällekkäisyys [0x%lx - 0x%lx].\n"
+
+#: dwarf.c:3973
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "Siirros 0x%lx on suurempi kuin .debug_loc-lohkon koko.\n"
+
+#: dwarf.c:3982 dwarf.c:4017 dwarf.c:4027
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "Siirroksesta 0x%lx alkavaa sijaintiluetteloa ei ole päätetty.\n"
+
+#: dwarf.c:4001 dwarf.c:4405
+#, c-format
+msgid "<End of list>\n"
+msgstr "<Luettelon loppu>\n"
+
+#: dwarf.c:4011
+#, c-format
+msgid "(base address)\n"
+msgstr "(perusosoite)\n"
+
+#: dwarf.c:4048
+msgid " (start == end)"
+msgstr " (alku == loppu)"
+
+#: dwarf.c:4050
+msgid " (start > end)"
+msgstr " (alku > loppu)"
+
+#: dwarf.c:4060
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr "Käyttämättömiä tavuja on %ld lohkon %s lopussa\n"
+
+#: dwarf.c:4206
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Vain DWARF 2- ja 3-aranges on nykyisin tuettu.\n"
+
+#: dwarf.c:4210
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Pituus: %ld\n"
+
+#: dwarf.c:4212
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versio: %d\n"
+
+#: dwarf.c:4213
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr " Siirros lohkoon .debug_info: 0x%lx\n"
+
+#: dwarf.c:4215
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Osoitinkoko: %d\n"
+
+#: dwarf.c:4216
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " Segmenttikoko: %d\n"
+
+#: dwarf.c:4222
+#, c-format
+msgid "Invalid address size in %s section!\n"
+msgstr "Virheellinen osoitekoko %s-lohkossa!\n"
+
+#: dwarf.c:4232
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr "Osoitinkoko + segmenttikoko ei ole kahden potenssi.\n"
+
+#: dwarf.c:4237
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Osoite Pituus\n"
+
+#: dwarf.c:4239
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Osoite Pituus\n"
+
+#: dwarf.c:4327
+msgid "No range lists in .debug_info section!\n"
+msgstr "Ei lukualueluetteloja .debug_info-lohkossa!\n"
+
+#: dwarf.c:4351
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "Lukualueluettelot %s-lohkossa alkavat osoitteesta 0x%lx\n"
+
+#: dwarf.c:4355
+#, c-format
+msgid " Offset Begin End\n"
+msgstr " Siirros Alku Loppu\n"
+
+#: dwarf.c:4376
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Aukko [0x%lx - 0x%lx] lohkossa %s.\n"
+
+#: dwarf.c:4380
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Päällekkäisyys [0x%lx - 0x%lx] lohkossa %s.\n"
+
+#: dwarf.c:4423
+msgid "(start == end)"
+msgstr "(alku == loppu)"
+
+#: dwarf.c:4425
+msgid "(start > end)"
+msgstr "(alku > loppu)"
+
+#: dwarf.c:4678
+msgid "bad register: "
+msgstr "virheellinen rekisteri: "
+
+#. The documentation for the format of this file is in gdb/dwarf2read.c.
+#: dwarf.c:4681 dwarf.c:5490
+#, c-format
+msgid "Contents of the %s section:\n"
+msgstr "Lohkon %s sisältö:\n"
+
+#: dwarf.c:5451
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr " DW_CFA_??? (Käyttäjämääritelty kutsukehyskäsky: %#x)\n"
+
+#: dwarf.c:5453
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr "tukematon tai tuntematon Dwarf-kutsukehyskäskynumero: %#x\n"
+
+#: dwarf.c:5494
+#, c-format
+msgid "Truncated header in the %s section.\n"
+msgstr "Rikkoutunut otsake lohkossa â€%sâ€\n"
+
+#: dwarf.c:5499
+#, c-format
+msgid "Version %ld\n"
+msgstr "versio %ld\n"
+
+#: dwarf.c:5506
+msgid "The address table data in version 3 may be wrong.\n"
+msgstr "Osoitetaulutiedot versiossa 3 saattavat olla virheellisiä.\n"
+
+#: dwarf.c:5509
+msgid "Version 4 does not support case insensitive lookups.\n"
+msgstr "Versio 4 ei tue kirjainkoosta riippuvia hakuja.\n"
+
+#: dwarf.c:5514
+#, c-format
+msgid "Unsupported version %lu.\n"
+msgstr "Tukematon versio %lu.\n"
+
+#: dwarf.c:5530
+#, c-format
+msgid "Corrupt header in the %s section.\n"
+msgstr "Rikkoutunut otsake lohkossa â€%sâ€\n"
+
+#: dwarf.c:5545
+#, c-format
+msgid ""
+"\n"
+"CU table:\n"
+msgstr ""
+"\n"
+"Käännösyksikkötaulu:\n"
+
+#: dwarf.c:5551
+#, c-format
+msgid "[%3u] 0x%lx - 0x%lx\n"
+msgstr "[%3u] 0x%lx - 0x%lx\n"
+
+#: dwarf.c:5556
+#, c-format
+msgid ""
+"\n"
+"TU table:\n"
+msgstr ""
+"\n"
+"Käännösyksikkötaulu:\n"
+
+#: dwarf.c:5563
+#, c-format
+msgid "[%3u] 0x%lx 0x%lx "
+msgstr "[%3u] 0x%lx 0x%lx "
+
+#: dwarf.c:5570
+#, c-format
+msgid ""
+"\n"
+"Address table:\n"
+msgstr ""
+"\n"
+"Osoitetaulu:\n"
+
+#: dwarf.c:5579
+#, c-format
+msgid "%lu\n"
+msgstr "%lu\n"
+
+#: dwarf.c:5582
+#, c-format
+msgid ""
+"\n"
+"Symbol table:\n"
+msgstr ""
+"\n"
+"Symbolitaulu:\n"
+
+#: dwarf.c:5616
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Lohkon %s vianjäljityssisällön näyttäminen ei ole vielä tuettu.\n"
+
+#: dwarf.c:5752 dwarf.c:5822
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Tunnistamaton vianjäljitysvalitsin ’%s’\n"
+
+#: elfcomm.c:39
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Virhe: "
+
+#: elfcomm.c:50
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Varoitus: "
+
+#: elfcomm.c:82 elfcomm.c:117 elfcomm.c:167 elfcomm.c:216
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Käsittelemätön data-pituus: %d\n"
+
+#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3683 readelf.c:3991
+#: readelf.c:4034 readelf.c:4108 readelf.c:4187 readelf.c:4965 readelf.c:4989
+#: readelf.c:7397 readelf.c:7443 readelf.c:7642 readelf.c:8863 readelf.c:8877
+#: readelf.c:9423 readelf.c:9439 readelf.c:9482 readelf.c:9507 readelf.c:11904
+#: readelf.c:12096 readelf.c:12929
+msgid "Out of memory\n"
+msgstr "Muisti loppui\n"
+
+#: elfcomm.c:312
+#, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr "%s: ensimmäisen arkisto-otsakkeen haku epäonnistui\n"
+
+#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13418
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: ei voi lukea arkisto-otsaketta\n"
+
+#: elfcomm.c:347
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr "%s: arkistoindeksi on tyhjä\n"
+
+#: elfcomm.c:355 elfcomm.c:381
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: arkistoindeksin lukeminen epäonnistui\n"
+
+#: elfcomm.c:365
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr "%s: arkistoindeksissä otaksutaan olevan %ld alkiota, mutta otsakkeen koko on liian pieni\n"
+
+#: elfcomm.c:373
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr "Muisti loppui kun yritettiin lukea arkiston symboli-indeksiä\n"
+
+#: elfcomm.c:392
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr "Muisti loppui kun yritettiin muuntaa arkiston symboli-indeksiä\n"
+
+#: elfcomm.c:405
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr "%s: arkistossa on indeksi, mutta ei symboleja\n"
+
+#: elfcomm.c:413
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr "Muisti loppui yritettäessä lukea arkistoindeksisymbolitaulua\n"
+
+#: elfcomm.c:419
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr "%s: arkistoindeksisymbolitaulun lukeminen epäonnistui\n"
+
+#: elfcomm.c:428
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr "%s: ei voi hypätä arkistosymbolitaulun yli\n"
+
+#: elfcomm.c:440
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr "%s: arkisto-otsaketta seuraavan arkistoindeksin lukeminen epäonnistui\n"
+
+#: elfcomm.c:446
+#, c-format
+msgid "%s has no archive index\n"
+msgstr "%s ei ole arkistoindeksiä\n"
+
+#: elfcomm.c:457
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr "Muisti loppui luettaessa pitkiä symbolinimiä arkistossa\n"
+
+#: elfcomm.c:465
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr "%s: pitkän symbolinimimerkkijonotaulun lukeminen epäonnistui\n"
+
+#: elfcomm.c:605
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr "%s: seuraavan tiedostonimen haku epäonnistui\n"
+
+#: elfcomm.c:616 elfedit.c:347 readelf.c:13424
+#, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr "%s: kelvollista arkisto-otsaketta ei löytynyt\n"
+
+# Valinnaisessa COFF-otsakkeessa on magic-kenttä, joka kertoo tiedoston tyypin.
+#: elfedit.c:73
+#, c-format
+msgid "%s: Not an ELF file - wrong magic bytes at the start\n"
+msgstr "%s: Ei ELF-tiedosto - siinä on väärät maagiset tavut alussa\n"
+
+#: elfedit.c:81
+#, c-format
+msgid "%s: Unsupported EI_VERSION: %d is not %d\n"
+msgstr "%s: Tukematon EI_VERSION: %d ei ole %d\n"
+
+#: elfedit.c:97
+#, c-format
+msgid "%s: Unmatched EI_CLASS: %d is not %d\n"
+msgstr "%s: Täsmäämätön EI_CLASS: %d ei ole %d\n"
+
+#: elfedit.c:108
+#, c-format
+msgid "%s: Unmatched e_machine: %d is not %d\n"
+msgstr "%s: Täsmäämätön e_machine: %d ei ole %d\n"
+
+#: elfedit.c:119
+#, c-format
+msgid "%s: Unmatched e_type: %d is not %d\n"
+msgstr "%s: Täsmäämätön e_type: %d ei ole %d\n"
+
+#: elfedit.c:130
+#, c-format
+msgid "%s: Unmatched EI_OSABI: %d is not %d\n"
+msgstr "%s: Täsmäämätön EI_OSABI: %d ei ole %d\n"
+
+#: elfedit.c:163
+#, c-format
+msgid "%s: Failed to update ELF header: %s\n"
+msgstr "%s: ELF-otsakkeen päivitys epäonnistui: %s\n"
+
+#: elfedit.c:196
+#, c-format
+msgid "Unsupported EI_CLASS: %d\n"
+msgstr "Tukematon EI_CLASS: %d\n"
+
+#: elfedit.c:229
+msgid ""
+"This executable has been built without support for a\n"
+"64 bit data type and so it cannot process 64 bit ELF files.\n"
+msgstr ""
+"Tähän suoritettavaan tiedostoon ei ole käännetty tukea 64-bittiselle\n"
+"datatyypille, joten se ei voi käsitellä 64-bittisiä ELF-tiedostoja.\n"
+
+#: elfedit.c:270
+#, c-format
+msgid "%s: Failed to read ELF header\n"
+msgstr "%s: ELF-otsakkeen lukeminen epäonnistui\n"
+
+#: elfedit.c:277
+#, c-format
+msgid "%s: Failed to seek to ELF header\n"
+msgstr "%s: ELF-otsakkeen haku epäonnistui\n"
+
+#: elfedit.c:331 readelf.c:13410
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s: seuraavan arkisto-otsakkeen haku epäonnistui\n"
+
+#: elfedit.c:362 elfedit.c:371 readelf.c:13438 readelf.c:13447
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: virheellinen arkistotiedostonimi\n"
+
+#: elfedit.c:391 elfedit.c:483
+#, c-format
+msgid "Input file '%s' is not readable\n"
+msgstr "Syötetiedosto ’%s’ ei ole luettava\n"
+
+#: elfedit.c:415
+#, c-format
+msgid "%s: failed to seek to archive member\n"
+msgstr "%s: arkistojäsenen haku epäonnistui\n"
+
+#: elfedit.c:454 readelf.c:13533
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "’%s’: Tiedostoa ei löydy\n"
+
+# stat-kutsu tiedostonimellä %s epäonnistui, seurauksena tämä sanoma
+#: elfedit.c:456 readelf.c:13535
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr "Tiedostoa ’%s’ ei löytynyt. Järjestelmävirhesanoma: %s\n"
+
+#: elfedit.c:463 readelf.c:13542
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "’%s’ ei ole tavallinen tiedosto\n"
+
+#: elfedit.c:489 readelf.c:13555
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr "%s: Tiedoston maagisen numeron lukeminen epäonnistui\n"
+
+#: elfedit.c:547
+#, c-format
+msgid "Unknown OSABI: %s\n"
+msgstr "Tuntematon OSABI: %s\n"
+
+#: elfedit.c:568
+#, c-format
+msgid "Unknown machine type: %s\n"
+msgstr "Tuntematon konetyyppi: %s\n"
+
+#: elfedit.c:587
+#, c-format
+msgid "Unknown machine type: %d\n"
+msgstr "Tuntematon konetyyppi: %d\n"
+
+# Handle an IEEE BB record.
+#: elfedit.c:606
+#, c-format
+msgid "Unknown type: %s\n"
+msgstr "Tuntematon tyyppi: %s\n"
+
+#: elfedit.c:637
+#, c-format
+msgid "Usage: %s <option(s)> elffile(s)\n"
+msgstr "Käyttö: %s <valitsimet> elf-tiedosto(t)\n"
+
+#: elfedit.c:639
+#, c-format
+msgid " Update the ELF header of ELF files\n"
+msgstr " Päivitä ELF-tiedostojen ELF-otsake\n"
+
+#: elfedit.c:640 objcopy.c:475 objcopy.c:585
+#, c-format
+msgid " The options are:\n"
+msgstr " Valitsimet ovat:\n"
+
+#: elfedit.c:641
+#, c-format
+msgid ""
+" --input-mach <machine> Set input machine type to <machine>\n"
+" --output-mach <machine> Set output machine type to <machine>\n"
+" --input-type <type> Set input file type to <type>\n"
+" --output-type <type> Set output file type to <type>\n"
+" --input-osabi <osabi> Set input OSABI to <osabi>\n"
+" --output-osabi <osabi> Set output OSABI to <osabi>\n"
+" -h --help Display this information\n"
+" -v --version Display the version number of %s\n"
+msgstr ""
+" --input-mach <kone> Aseta syötekoneen tyypiksi <kone>\n"
+" --output-mach <kone> Aseta tulostekoneen tyypiksi <kone>\n"
+" --input-type <tyyppi> Aseta syötetiedostotyypiksi <tyyppi>\n"
+" --output-type <tyyppi> Aseta tulostetiedostotyypiksi <tyyppi>\n"
+" --input-osabi <osabi> Aseta syöte-OSABI:ksi <osabi>\n"
+" --output-osabi <osabi> Aseta tuloste-OSABI:ksi <osabi>\n"
+" -h --help Näytä nämä tiedot\n"
+" -v --version Näytä %s:n versionumero\n"
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - 32-bittinen pieni arkisto\n"
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - ei oteta huomioon 64-bittisiä objekteja\n"
+
+#: emul_aix.c:47
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - ei oteta huomioon 32-bittisiä objekteja\n"
+
+#: emul_aix.c:48
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] - hyväksyy 32- ja 64-bittiset objektit\n"
+
+# Lähdekoodin kommentti ennen tulostusta: Report an unexpected EOF in the IEEE debugging information.
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "odottamaton IEEE-vianjäljitystietojen loppu"
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "virheellinen numero"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "virheellinen merkkijonopituus"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "lausekepinon ylivuoto"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "ei-tuettu IEEE-lausekeoperaattori"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr "tuntematon lohko"
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "lausekepinon ehtyminen"
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "lausekepinon täsmäämättömyys"
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "tuntematon rakenteeseen sisältyvä tyyppi"
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "ei-tuettu binäärikoodattu desimaaliliukulukutyyppi"
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "odottamaton numero"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "odottamaton tietuetyyppi"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "lohkoja jäi pinoon lopussa"
+
+# Handle an IEEE BB record.
+#: ieee.c:1208
+msgid "unknown BB type"
+msgstr "tuntematon IEEE-BB-tietuetyyppi"
+
+#: ieee.c:1217
+msgid "stack overflow"
+msgstr "pinon ylivuoto"
+
+#: ieee.c:1240
+msgid "stack underflow"
+msgstr "pinon ehtyminen"
+
+#: ieee.c:1352 ieee.c:1422 ieee.c:2120
+msgid "illegal variable index"
+msgstr "virheellinen muuttujaindeksi"
+
+#: ieee.c:1400
+msgid "illegal type index"
+msgstr "virheellinen tyyppi-indeksi"
+
+#: ieee.c:1410 ieee.c:1447
+msgid "unknown TY code"
+msgstr "tuntematon TY-koodi"
+
+#: ieee.c:1429
+msgid "undefined variable in TY"
+msgstr "määrittelemätön muuttuja kohteessa TY"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1841
+msgid "Pascal file name not supported"
+msgstr "Pascal-tiedostonimeä ei tueta"
+
+#: ieee.c:1889
+msgid "unsupported qualifier"
+msgstr "ei-tuettu tarkenne"
+
+#: ieee.c:2158
+msgid "undefined variable in ATN"
+msgstr "määrittelemätön muuttuja kohteessa ATN"
+
+#: ieee.c:2201
+msgid "unknown ATN type"
+msgstr "tuntematon ATN-tyyppi"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2323
+msgid "unsupported ATN11"
+msgstr "ei-tuettu ATN11"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2350
+msgid "unsupported ATN12"
+msgstr "ei-tuettu ATN12"
+
+# Kahdessa seuraavassa on kyse samasta tietueesta.
+#: ieee.c:2410
+msgid "unexpected string in C++ misc"
+msgstr "odottamaton merkkijono C++-misc -tietueessa"
+
+#: ieee.c:2423
+msgid "bad misc record"
+msgstr "virheellinen misc-tietue"
+
+#: ieee.c:2464
+msgid "unrecognized C++ misc record"
+msgstr "tunnistamaton C++-misc -tietue"
+
+#: ieee.c:2579
+msgid "undefined C++ object"
+msgstr "määrittelemätön C++-objekti"
+
+#: ieee.c:2613
+msgid "unrecognized C++ object spec"
+msgstr "tunnistamaton C++-objektimäärittely"
+
+#: ieee.c:2649
+msgid "unsupported C++ object type"
+msgstr "ei-tuettu C++-objektityyppi"
+
+#: ieee.c:2659
+msgid "C++ base class not defined"
+msgstr "C++-kantaluokkaa ei ole määritelty"
+
+#: ieee.c:2671 ieee.c:2776
+msgid "C++ object has no fields"
+msgstr "C++-objektissa ei ole kenttiä"
+
+#: ieee.c:2690
+msgid "C++ base class not found in container"
+msgstr "C++-kantaluokkaa ei löytynyt containerista"
+
+#: ieee.c:2797
+msgid "C++ data member not found in container"
+msgstr "C++-data -jäsentä ei löytynyt containerista"
+
+#: ieee.c:2838 ieee.c:2988
+msgid "unknown C++ visibility"
+msgstr "tuntematon C++-näkyvyys"
+
+#: ieee.c:2872
+msgid "bad C++ field bit pos or size"
+msgstr "virheellinen C++-kenttäbittisijainti tai koko"
+
+#: ieee.c:2964
+msgid "bad type for C++ method function"
+msgstr "virheellinen C++-metodifunktion tyyppi"
+
+#: ieee.c:2974
+msgid "no type information for C++ method function"
+msgstr "ei tyyppitietoa C++-metodifunktiossa"
+
+#: ieee.c:3013
+msgid "C++ static virtual method"
+msgstr "C++ staattinen virtuaalimetodi"
+
+#: ieee.c:3108
+msgid "unrecognized C++ object overhead spec"
+msgstr "tunnistamaton C++-objektin yleisrasitemääritys"
+
+#: ieee.c:3147
+msgid "undefined C++ vtable"
+msgstr "määrittelemätön C++-vtable"
+
+#: ieee.c:3216
+msgid "C++ default values not in a function"
+msgstr "funktiossa ei ole C++-oletusarvoja"
+
+#: ieee.c:3256
+msgid "unrecognized C++ default type"
+msgstr "tunnistamaton C++-oletustyyppi"
+
+#: ieee.c:3287
+msgid "reference parameter is not a pointer"
+msgstr "viiteparametri ei ole osoitin"
+
+#: ieee.c:3370
+msgid "unrecognized C++ reference type"
+msgstr "tunnistamaton C++-viitetyyppi"
+
+#: ieee.c:3452
+msgid "C++ reference not found"
+msgstr "C++-viite ei löytynyt"
+
+#: ieee.c:3460
+msgid "C++ reference is not pointer"
+msgstr "C++-viite ei ole osoitin"
+
+#: ieee.c:3486 ieee.c:3494
+msgid "missing required ASN"
+msgstr "vaadittu ASN puuttuu"
+
+#: ieee.c:3521 ieee.c:3529
+msgid "missing required ATN65"
+msgstr "vaadittu ATN65 puuttuu"
+
+#: ieee.c:3543
+msgid "bad ATN65 record"
+msgstr "virheellinen ATN65-tietue"
+
+#: ieee.c:4171
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "IEEE numeerinen ylivuoto: 0x"
+
+#: ieee.c:4215
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "IEEE merkkijonopituuden ylivuoto: %u\n"
+
+#: ieee.c:5213
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "ei-tuettu IEEE kokonaislukutyyppikoko %u\n"
+
+#: ieee.c:5247
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "ei-tuettu IEEE liukulukutyyppikoko %u\n"
+
+#: ieee.c:5281
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "ei-tuettu IEEE kompleksilukutyyppikoko %u\n"
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr "Symbolin kaksoiskappale kirjoitettu avainsanaluetteloon."
+
+#: nlmconv.c:274 srconv.c:1824
+msgid "input and output files must be different"
+msgstr "syöte- ja tulostetiedosto ei saa olla sama tiedosto"
+
+#: nlmconv.c:321
+msgid "input file named both on command line and with INPUT"
+msgstr "syötetiedosto nimetty sekä komentorivillä että INPUT-tiedostossa"
+
+#: nlmconv.c:330
+msgid "no input file"
+msgstr "ei syötetiedostoa"
+
+#: nlmconv.c:360
+msgid "no name for output file"
+msgstr "ei tulostetiedoston nimeä"
+
+#: nlmconv.c:374
+msgid "warning: input and output formats are not compatible"
+msgstr "varoitus: syöte- ja tulostemuodot eivät ole yhteensopivia"
+
+#: nlmconv.c:404
+msgid "make .bss section"
+msgstr "tee .bss-lohko"
+
+#: nlmconv.c:414
+msgid "make .nlmsections section"
+msgstr "tee .nlmsections-lohko"
+
+# vma on Virtual Memory Address
+#: nlmconv.c:442
+msgid "set .bss vma"
+msgstr "aseta .bss-virtuaalimuistiosoite"
+
+#: nlmconv.c:449
+msgid "set .data size"
+msgstr "aseta .data-koko"
+
+#: nlmconv.c:629
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "varoitus: symboli %s tuotu mutta ei ole tuontiluettelossa"
+
+#: nlmconv.c:649
+msgid "set start address"
+msgstr "aseta alkuosoite"
+
+#: nlmconv.c:698
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "varoitus: START-proseduuria %s ei ole määritelty"
+
+#: nlmconv.c:700
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "varoitus: EXIT-proseduuria %s ei ole määritelty"
+
+#: nlmconv.c:702
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "varoitus: CHECK-proseduuria %s ei ole määritelty"
+
+#: nlmconv.c:722 nlmconv.c:908
+msgid "custom section"
+msgstr "räätälöity lohko"
+
+#: nlmconv.c:742 nlmconv.c:937
+msgid "help section"
+msgstr "opastelohko"
+
+#: nlmconv.c:764 nlmconv.c:955
+msgid "message section"
+msgstr "sanomalohko"
+
+#: nlmconv.c:779 nlmconv.c:988
+msgid "module section"
+msgstr "moduulilohko"
+
+#: nlmconv.c:798 nlmconv.c:1004
+msgid "rpc section"
+msgstr "rpc-lohko"
+
+#. There is no place to record this information.
+#: nlmconv.c:834
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: varoitus: jaetuissa kirjastoissa ei voi olla alustamatonta dataa"
+
+#: nlmconv.c:855 nlmconv.c:1023
+msgid "shared section"
+msgstr "jaettu lohko"
+
+#: nlmconv.c:863
+msgid "warning: No version number given"
+msgstr "varoitus: Mitään versionumeroa ei ole annettu"
+
+# Tämän suomensin kuten ruotsalaisessa käännöksessä
+#: nlmconv.c:903 nlmconv.c:932 nlmconv.c:950 nlmconv.c:999 nlmconv.c:1018
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: lukuvirhe: %s"
+
+#: nlmconv.c:925
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "varoitus: FULLMAP ei ole tuettu; yritä ld -M"
+
+#: nlmconv.c:1101
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Käyttö: %s [valitsimet] [syötetiedosto [tulostetiedosto]]\n"
+
+#: nlmconv.c:1102
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " Muunna objektitiedosto NetWare Loadable Module -muotoon\n"
+
+#: nlmconv.c:1103
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+" The options are:\n"
+" -I --input-target=<bfd-nimi> Aseta binaarin syötetiedoston muoto\n"
+" -O --output-target=<bfd-nimi> Aseta binaarin tulostetiedoston muoto\n"
+" -T --header-file=<tiedosto> Lue tiedosto <tiedosto> NLM-otsaketiedoille\n"
+" -l --linker=<linkkeri> Käytä parametriä <linkkeri> linkittämiseen\n"
+" -d --debug Näytä vakiovirhetulosteessa linkkerin komentorivi\n"
+" @<tiedosto> Lue valitsimet tiedostosta <tiedosto>.\n"
+" -h --help Näytä nämä tiedot\n"
+" -v --version Näytä ohjelman versio\n"
+
+#: nlmconv.c:1144
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "tukea ei ole käännetty kohteeseen %s"
+
+#: nlmconv.c:1181
+msgid "make section"
+msgstr "tee lohko"
+
+#: nlmconv.c:1195
+msgid "set section size"
+msgstr "aseta lohkokoko"
+
+#: nlmconv.c:1201
+msgid "set section alignment"
+msgstr "aseta lohkotasaus"
+
+#: nlmconv.c:1205
+msgid "set section flags"
+msgstr "aseta lohkoliput"
+
+#: nlmconv.c:1216
+msgid "set .nlmsections size"
+msgstr "aseta .nlmsections-koko"
+
+#: nlmconv.c:1297 nlmconv.c:1305 nlmconv.c:1314 nlmconv.c:1319
+msgid "set .nlmsection contents"
+msgstr "aseta .nlmsection-sisältö"
+
+#: nlmconv.c:1796
+msgid "stub section sizes"
+msgstr "stub-lohkokoot"
+
+#: nlmconv.c:1843
+msgid "writing stub"
+msgstr "kirjoitetaan stub"
+
+#: nlmconv.c:1927
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "ratkaisematon ohjelmalaskurisuhteellinen reloc-tietue symbolille %s"
+
+#: nlmconv.c:1991
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "ylivuoto säädettäessä uudelleensijoitusta symbolille %s"
+
+#: nlmconv.c:2118
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: kohteen %s suoritus epäonnistui: "
+
+#: nlmconv.c:2133
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Kohteen %s suoritus epäonnistui"
+
+#: nm.c:225 size.c:78 strings.c:650
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Käyttö: %s [valitsimet] [tiedosto(t)]\n"
+
+#: nm.c:226
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " Luettele symbolit kohteessa [tiedosto(t)] (oletus: a.out).\n"
+
+#: nm.c:227
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+" Valitsimet ovat:\n"
+" -a, --debug-syms Näytä vain vianjäljityssymbolit\n"
+" -A, --print-file-name Tulosta syötetiedoston nimi ennen jokaista symbolia\n"
+" -B Sama kuin --format=bsd\n"
+" -C, --demangle[=TYYLI] Eheytä alemman tason symbolinimet käyttäjätason nimiksi\n"
+" TYYLI, jos annettu, voi olla â€auto†(oletus),\n"
+" â€gnuâ€, â€lucidâ€, â€armâ€, â€hpâ€, â€edgâ€, â€gnu-v3â€, â€javaâ€\n"
+" tai â€gnatâ€\n"
+" --no-demangle Älä eheytä alemman tason symbolinimiä\n"
+" -D, --dynamic Näytä dynaamiset symbolit normaalien symbolien sijasta\n"
+" --defined-only Näytä vain määritellyt symbolit\n"
+" -e (ei oteta huomioon)\n"
+" -f, --format=MUOTO Käytä tulostemuotoa MUOTO. MUOTO voi olla â€bsdâ€,\n"
+" â€sysv†tai â€posixâ€. Oletus on â€bsdâ€\n"
+" -g, --extern-only Näytä vain ulkoiset symbolit\n"
+" -l, --line-numbers Käytä vianjäljitystietoja tiedostonimen löytämiseen ja\n"
+" rivinumeroa jokaiselle symbolille\n"
+" -n, --numeric-sort Lajittele symbolit numeerisesti osoitteen mukaan\n"
+" -o Sama kuin -A\n"
+" -p, --no-sort Älä lajittele symboleja\n"
+" -P, --portability Sama kuin --format=posix\n"
+" -r, --reverse-sort Käännä lajittelu käänteiseksi\n"
+
+#: nm.c:250
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr " --plugin NIMI Lataa määritelty lisäosa\n"
+
+#: nm.c:253
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+" -S, --print-size Tulosta määriteltyjen symbolien koko\n"
+" -s, --print-armap Sisällytä indeksi arkistojäsensymboleille\n"
+" --size-sort Lajittele symbolit koon mukaan\n"
+" --special-syms Sisällytä erityissymbolit tulosteeseen\n"
+" --synthetic Näytä myös synteettiset symbolit\n"
+" -t, --radix=KANTALUKU Käytä KANTALUKUa symboliarvojen tulosteeseen\n"
+" --target=BFD-NIMI Määrittele kohdeobjektin muodoksi BFD-NIMI\n"
+" -u, --undefined-only Näytä vain määrittelemättömät symbolit\n"
+" -X 32_64 (ei oteta huomioon)\n"
+" @TIEDOSTO Lue valitsimet TIEDOSTOsta\n"
+" -h, --help Näytä nämä tiedot\n"
+" -V, --version Näytä ohjelman versionumero\n"
+"\n"
+
+#: nm.c:301
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: virheellinen kantaluku"
+
+#: nm.c:325
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: virheellinen tulostemuoto"
+
+#: nm.c:346 readelf.c:8616 readelf.c:8661
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<suoritinkohtainen>: %d"
+
+#: nm.c:348 readelf.c:8625 readelf.c:8679
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<Käyttöjärjestelmäkohtainen>: %d"
+
+#: nm.c:350 readelf.c:8628 readelf.c:8682
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<tuntematon>: %d"
+
+#: nm.c:390
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Arkistoindeksi:\n"
+
+#: nm.c:1258
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Määrittelemättömiä symboleja kohteesta %s:\n"
+"\n"
+
+#: nm.c:1260
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboleja kohteesta %s:\n"
+"\n"
+
+#: nm.c:1262 nm.c:1313
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Nimi Arvo Luokka Tyyppi Koko Rivi Lohko\n"
+"\n"
+
+#: nm.c:1265 nm.c:1316
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Nimi Arvo Luokka Tyyppi Koko Rivi Lohko\n"
+"\n"
+
+#: nm.c:1309
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Määrittelemättömiä symboleja kohteesta %s[%s]:\n"
+"\n"
+
+#: nm.c:1311
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symbolit kohteesta %s[%s]:\n"
+"\n"
+
+#: nm.c:1403
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr "Tulostusleveyttä ei ole alustettu (%d)"
+
+#: nm.c:1631
+msgid "Only -X 32_64 is supported"
+msgstr "Vain -X 32_64 on tuettuna"
+
+# Lisäsin ylimääräisiä lainausmerkkejä väliviivojen ja valitsimien erottamiseksi
+#: nm.c:1660
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "Käytetään â€--size-sortâ€- ja â€--undefined-onlyâ€-valitsimia yhdessä"
+
+#: nm.c:1661
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "ei tuota mitään tulostetta, koska määrittelemättömissä symboleissa ei ole kokoa."
+
+#: nm.c:1689
+#, c-format
+msgid "data size %ld"
+msgstr "data-koko %ld"
+
+#: objcopy.c:473 srconv.c:1732
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Käyttö: %s [valitsimet] syötetiedosto [tulostetiedosto]\n"
+
+#: objcopy.c:474
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " Kopioi binaaritiedoston, mahdollisesti muuntaen sitä käsittelyssä\n"
+
+# demand paged ?? (demand = kysyntä, page = kuuluttaa, kutsua) Only bring a page from the backing store into memory when the page is needed (demanded). Pure demand paging is where no pages are initially brought into memory - a process begins execution by demand paging the first instructions.
+# "--pure" ja "--impure"-valitsimet? Kun muistia varataan sivuina, osa viimeisestä sivusta voi jäädä käyttämättä. Jos tämä käyttämätön osa täytetään nollilla, se on pure. Jos käyttämättömässä osassa on roskaa, se on impure. Tarkoitetaanko sitä tässä?
+# weak symbol on symboli, jonka arvo voidaan korvata toisella objektitiedostossa tai dynaamisessa kirjastossa.
+#: objcopy.c:476
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set output arch, when input is arch-less\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff objects.\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" --compress-debug-sections Compress DWARF debug sections using zlib\n"
+" --decompress-debug-sections Decompress DWARF debug sections using zlib\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"
+msgstr ""
+" -I --input-target <bfd-nimi> Otaksu, että syötetiedosto on muodossa <bfd-nimi>\n"
+" -O --output-target <bfd-nimi> Luo tulostetiedosto muodossa <bfd-nimi>\n"
+" -B --binary-architecture <arkk> Aseta tulostetiedostoarkisto, kun syöte on binääri\n"
+" -F --target <bfd-nimi> Aseta sekä syöte- että tulostemuodoksi <bfd-nimi>\n"
+" --debugging Muunna vianjäljitystiedot, mikäli mahdollista\n"
+" -p --preserve-dates Kopioi muutettu/saantiaikaleimat tulosteeseen\n"
+" -j --only-section <nimi> Kopioi vain lohko <nimi> tulosteeseen\n"
+" --add-gnu-debuglink=<tiedosto> Lisää lohkon .gnu_debuglink linkitys <tiedostoon>\n"
+" -R --remove-section <nimi> Poista lohko <nimi> tulosteesta\n"
+" -S --strip-all Poista kaikki symbolit ja uudelleensijoitustiedot\n"
+" -g --strip-debug Poista kaikki vianjäljityssymbolit & -lohkot\n"
+" --strip-unneeded Poista kaikki symbolit, joita ei tarvita uudelleensijoituksissa\n"
+" -N --strip-symbol <nimi> Älä kopioi symbolia <nimi>\n"
+" --strip-unneeded-symbol <nimi>\n"
+" Älä kopioi symbolia <nimi>, jollei sitä tarvita\n"
+" uudelleensijoituksissa\n"
+" --only-keep-debug Riisu kaikki paitsi vianjäljitystiedot\n"
+" --extract-symbol Poista lohkon sisältö, mutta pidä symbolit\n"
+" -K --keep-symbol <nimi> Älä riisu symbolia <nimi>\n"
+" --keep-file-symbols Älä riisu tiedostosymboleja\n"
+" --localize-hidden Muunna kaikki ELF-piilosymbolit paikallisiksi\n"
+" -L --localize-symbol <nimi> Pakota symboli <nimi> merkityksi paikallisena\n"
+" --globalize-symbol <nimi> Pakota symboli <nimi> merkityksi yleisenä\n"
+" -G --keep-global-symbol <nimi> Paikallista kaikki symbolit paitsi <nimi>\n"
+" -W --weaken-symbol <nimi> Pakota symboli <nimi> merkatuksi heikkona symbolina\n"
+" --weaken Pakota kaikki yleissymbolit merkityiksi heikkona symboleina\n"
+" -w --wildcard Salli jokerimerkit symbolivertailussa\n"
+" -x --discard-all Poista kaikki ei-yleissymbolit\n"
+" -X --discard-locals Poista kaikki kääntäjän tuottamat symbolit\n"
+" -i --interleave [<numero>] Kopioi vain yksi joka <numero>:stä tavusta\n"
+" --interleave-width <numero> Aseta N valitsimelle --interleave\n"
+" -b --byte <numero> Valitse tavu <numero> jokaisessa lomittuvassa lohkossa\n"
+" --gap-fill <arvo> Täytä aukot lohkojen välillä <arvo>lla\n"
+" --pad-to <osoite> Täytä viimeinen lohko aina <osoitteeseen> saakka\n"
+" --set-start <osoite> Aseta aloitusosoitteeksi <osoite>\n"
+" {--change-start|--adjust-start} <kasvatusarvo>\n"
+" Lisää <kasvatusarvo> alkuosoitteeseen\n"
+" {--change-addresses|--adjust-vma} <kasvatusarvo>\n"
+" Lisää <kasvatusarvo> LMA-, VMA- ja alkuosoitteisiin\n"
+" {--change-section-address|--adjust-section-vma} <nimi>{=|+|-}<arvo>\n"
+" Vaihda LMA- ja VMA-lohkon <nimi> arvolla <arvo>\n"
+" --change-section-lma <nimi>{=|+|-}<arvo>\n"
+" Vaihda LMA-lohkon <nimi> arvolla <arvo>\n"
+" --change-section-vma <nimi>{=|+|-}<arvo>\n"
+" Vaihda VMA-lohkon <nimi> arvolla <arvo>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Varoita, jos nimettyä lohkoa ei ole olemassa\n"
+" --set-section-flags <nimi>=<liput>\n"
+" Aseta lohko<nimen> ominaisuudet <lipuilla>\n"
+" --add-section <nimi>=<tiedosto> Lisää tulosteeseen lohko <nimi>, joka löytyi <tiedostosta>\n"
+" --rename-section <vanha>=<uusi>[,<liput>] Nimeä lohko <vanha> nimellä <uusi>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Käsittele Coff-objektien pitkiä lohkonimiä.\n"
+" --change-leading-char Pakota tulostemuodon alkukirjaintyyli\n"
+" --remove-leading-char Poista alkukirjain yleissymboleista\n"
+" --reverse-bytes=<numero> Käännä <numero> tavua kerrallaan päinvastoin, tulostelohkossa sisällöllä\n"
+" --redefine-sym <vanha>=<uusi> Määrittele <vanha> symbolinimi <uudeksi>\n"
+" --redefine-syms <tiedosto> --redefine-sym kaikille symbolipaireille, \n"
+" jotka on lueteltu <tiedostossa>\n"
+" --srec-len <number> Rajoita tuotettujen Srecords-tietueiden pituus\n"
+" --srec-forceS3 Rajoita tuotettujen Srecords-tietueiden tyypiksi S3\n"
+" --strip-symbols <tiedosto> -N kaikille <tiedostossa> luetelluille symboleille\n"
+" --strip-unneeded-symbols <tiedosto>\n"
+" --strip-unneeded-symbol kaikille <tiedostossa>\n"
+" luetelluille symboleille\n"
+" --keep-symbols <tiedosto> -K kaikille <tiedostossa> luetelluille symboleille\n"
+" --localize-symbols <tiedosto> -L kaikille <tiedostossa> luetelluille symboleille\n"
+" --globalize-symbols <tiedosto> --globalize-symbol kaikille <tiedostossa> luetelluille symboleille\n"
+" --keep-global-symbols <tiedosto> -G kaikille <tiedostossa> luetelluille symboleille\n"
+" --weaken-symbols <tiedosto> -W kaikille <tiedostossa> luetelluille symboleille\n"
+" --alt-machine-code <indeksi> Käytä kohteen vaihtoehtoista konetta numero <indeksi>\n"
+" --writable-text Merkitse tulosteteksti kirjoitettavaksi\n"
+" --readonly-text Tee tulosteteksti kirjoitussuojatuksi\n"
+" --pure Merkitse tulosteteksti pyyntösivutetuksi\n"
+" --impure Merkitse tulosteteksti epäpuhtaaksi\n"
+" --prefix-symbols <prefiksi> Lisää <prefiksi> jokaisen symbolinimen alkuun\n"
+" --prefix-sections <prefiksi> Lisää <prefiksi> jokaisen lohkonimen alkuun\n"
+" --prefix-alloc-sections <prefiksi>\n"
+" Lisää <prefiksi> jokaisen varattavan lohkonimen\n"
+" alkuun\n"
+" --file-alignment <numero> Aseta PE-tiedostotasaukseksi <numero>\n"
+" --heap <reserve>[,<commit>] Aseta PE-reserve/commit-keoksi <reserve>/\n"
+" <commit>\n"
+" --image-base <osoite> Aseta PE-vedosperustaksi <osoite>\n"
+" --section-alignment <numero> Aseta PE-lohkotasaukseksi <numero>\n"
+" --stack <reserve>[,<commit>] Aseta PE-reserve/commit-pinoksi <reserve>/\n"
+" <commit>\n"
+" --subsystem <nimi>[:<versio>]\n"
+" Aseta PE-alijärjestelmäksi <nimi> [& <versio>]\n"
+" --compress-debug-sections Tiivistä DWARF-vianjäljityslohkot käyttäen zlib-kirjastoa\n"
+" --decompress-debug-sections Pura DWARF-vianjäljityslohkojen tiivistys käyttäen zlib-kirjastoa\n"
+" -v --verbose Luettele kaikki muokatut objektitiedostot\n"
+" @<file> Read options from <file>\n"
+" -V --version Näytä tämän ohjelman versionumero\n"
+" -h --help Näytä tämä tuloste\n"
+" --info Luettele tuetut objektimuodot & arkkitehtuurit\n"
+
+#: objcopy.c:583
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Käyttö: %s <valitsimet> syötetiedosto(t)\n"
+
+#: objcopy.c:584
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr " Poistaa symbolit ja lohkot tiedostoista\n"
+
+#: objcopy.c:586
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target=<bfd-nimi> Otaksu, että syötetiedosto on <bfd-nimi>-muodossa\n"
+" -O --output-target=<bfd-nimi> Luo tulostetiedosto <bfd-nimi>-muodossa\n"
+" -F --target=<bfd-nimi> Aseta sekä syöte- että tulostetiedostomuodoksi <bfd-nimi>\n"
+" -p --preserve-dates Kopioi muutettu/saantiaikaleimat tulosteeseen\n"
+" -R --remove-section=<nimi> Poista <nimi>-lohkon tulosteesta\n"
+" -s --strip-all Poista kaikki symbolit ja uudelleensijoitustiedot\n"
+" -g -S -d --strip-debug Poista kaikki vianjäljityssymbolit & -lohkot\n"
+" --strip-unneeded Poista kaikki symbolit, joita ei tarvita uudelleensijoituksessa\n"
+" --only-keep-debug Riisu kaikki paitsi vianjäljitystiedot\n"
+" -N --strip-symbol=<nimi> Älä kopioi symbolia <nimi>\n"
+" -K --keep-symbol=<nimi> Älä riisu symbolia <nimi>\n"
+" --keep-file-symbols Älä riisu tiedostosymboleja\n"
+" -w --wildcard Salli jokerimerkit symbolien vertailussa\n"
+" -x --discard-all Poista kaikki ei-yleiset symbolit\n"
+" -X --discard-locals Poista kaikki kääntäjän tuottamat symbolit\n"
+" -v --verbose Luettele kaikki muutetut objektitiedostot\n"
+" -V --version Näytä tämän ohjelman versionumero\n"
+" -h --help Näytä tämä tuloste\n"
+" --info Luettele tuetut objektimuodot & arkkitehtuurit\n"
+" -o <tiedosto> Sijoita riisuttu tuloste kohteeseen <tiedosto>\n"
+
+#: objcopy.c:659
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "tunnistamaton lohkolippu â€%sâ€"
+
+#: objcopy.c:660
+#, c-format
+msgid "supported flags: %s"
+msgstr "tuetut liput: %s"
+
+#: objcopy.c:761
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "ei voi avata kohdetta ’%s’: %s"
+
+#: objcopy.c:764 objcopy.c:3417
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: fread-kutsu epäonnistui"
+
+#: objcopy.c:837
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: Ei oteta huomioon tältä riviltä löydettyä roskaa"
+
+#: objcopy.c:1153
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr "ei riisuta symbolia â€%s†koska se on nimetty uudelleensijoituksessa"
+
+#: objcopy.c:1236
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: Useita symbolin â€%s†uudelleenmäärittelyjä"
+
+#: objcopy.c:1240
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: Symboli â€%s†on kohteena useammalle kuin yhdelle uudelleenmäärittelylle"
+
+#: objcopy.c:1268
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "ei voitu avata symbolien uudelleenmäärittelytiedostoa %s (virhe: %s)"
+
+#: objcopy.c:1346
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: rivin lopusta löytyi roskaa"
+
+#: objcopy.c:1349
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: uusi symbolinimi puuttuu"
+
+#: objcopy.c:1359
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: ennenaikainen tiedoston loppu"
+
+# stat on *nix-ympäristön vakiokomentoja (katso: man stat)
+#: objcopy.c:1385
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat-kutsu palauttaa negatiivisen koon kohteelle â€%sâ€"
+
+#: objcopy.c:1397
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "kopioidaan arvosta â€%s†[tuntematon] arvoon â€%s†[tuntematon]\n"
+
+#: objcopy.c:1454
+msgid "Unable to change endianness of input file(s)"
+msgstr "Ei voi muuttaa syötetiedosto(je)n tavujärjestystyyppiä"
+
+#: objcopy.c:1463
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "kopioidaan kohteesta â€%s†[%s] kohteeseen â€%s†[%s]\n"
+
+#: objcopy.c:1512
+#, c-format
+msgid "Input file `%s' ignores binary architecture parameter."
+msgstr "Syötetiedosto â€%s†ohittaa binaariarkkitehtuuriparametrin."
+
+#: objcopy.c:1520
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "Syötetiedoston â€%s†muotoa ei voi tunnistaa"
+
+#: objcopy.c:1523
+#, c-format
+msgid "Output file cannot represent architecture `%s'"
+msgstr "Tulostetiedosto ei voi edustaa arkkitehtuuria â€%sâ€"
+
+#: objcopy.c:1586
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr "varoitus: tiedostotasaus (0x%s) > lohkotasaus (0x%s)"
+
+#: objcopy.c:1645
+#, c-format
+msgid "can't add section '%s'"
+msgstr "ei voi lisätä lohkoa ’%s’"
+
+#: objcopy.c:1659
+#, c-format
+msgid "can't create section `%s'"
+msgstr "ei voi luoda lohkoa â€%sâ€"
+
+#: objcopy.c:1705
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr "ei voi luoda vianjäljityslinkkilohkoa â€%sâ€"
+
+#: objcopy.c:1798
+msgid "Can't fill gap after section"
+msgstr "Ei voi täyttää väliä lohkon jälkeen"
+
+#: objcopy.c:1822
+msgid "can't add padding"
+msgstr "ei voi lisätä täytettä"
+
+#: objcopy.c:1913
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr "ei voi täyttää vianjäljityslinkkilohkoa â€%sâ€"
+
+#: objcopy.c:1976
+msgid "error copying private BFD data"
+msgstr "virhe kopioitaessa yksityistä BFD-dataa"
+
+#: objcopy.c:1987
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr "tämä kohde ei tue %lu vaihtoehtoisia konekoodeja"
+
+#: objcopy.c:1991
+msgid "treating that number as an absolute e_machine value instead"
+msgstr "käsitellään tuota numeroa absoluuttisena e_machine-arvona eikä"
+
+#: objcopy.c:1995
+msgid "ignoring the alternative value"
+msgstr "ei oteta huomioon vaihtoehtoista arvoa"
+
+#: objcopy.c:2027 objcopy.c:2063
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr "ei voi luoda tempdir-hakemistoa arkiston kopiointiin (virhe: %s)"
+
+#: objcopy.c:2093
+msgid "Unable to recognise the format of file"
+msgstr "Tiedoston muotoa ei voi tunnistaa"
+
+#: objcopy.c:2220
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "virhe: syötetiedosto ’%s’ on tyhjä"
+
+#: objcopy.c:2364
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "Useita lohkon %s uudelleennimeämisiä"
+
+#: objcopy.c:2415
+msgid "error in private header data"
+msgstr "virhe yksityisessä otsakedatassa"
+
+#: objcopy.c:2493
+msgid "failed to create output section"
+msgstr "tulostelohkon luominen epäonnistui"
+
+#: objcopy.c:2507
+msgid "failed to set size"
+msgstr "koon asettaminen epäonnistui"
+
+#: objcopy.c:2521
+msgid "failed to set vma"
+msgstr "virtuaalisen muistiosoitteen asettaminen epäonnistui"
+
+#: objcopy.c:2546
+msgid "failed to set alignment"
+msgstr "tasauksen asettaminen epäonnistui"
+
+#: objcopy.c:2580
+msgid "failed to copy private data"
+msgstr "yksityisen datan kopioiminen epäonnistui"
+
+#: objcopy.c:2662
+msgid "relocation count is negative"
+msgstr "uudelleensijoituslaskuri on negatiivinen"
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2723
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr "ei voi kääntää tavujen järjestystä päinvastaiseksi: lohkon %s pituuden on oltava parillisesti jaollinen %d:lla"
+
+#: objcopy.c:2909
+msgid "can't create debugging section"
+msgstr "ei voi luoda vianjäljityslohkoa"
+
+#: objcopy.c:2922
+msgid "can't set debugging section contents"
+msgstr "ei voi asettaa vianjäljityslohkon sisältöä"
+
+#: objcopy.c:2930
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr "ei tiedetä kuinka kirjoittaa vianjäljitystietoja kohteelle %s"
+
+#: objcopy.c:3073
+msgid "could not create temporary file to hold stripped copy"
+msgstr "ei voi luoda tilapäistä tiedostoa tallentamaan riisuttua kopiota"
+
+#: objcopy.c:3145
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr "%s: virheellinen versio PE-alijärjestelmässä"
+
+#: objcopy.c:3175
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr "tuntematon PE-alijärjestelmä: %s"
+
+#: objcopy.c:3237
+msgid "byte number must be non-negative"
+msgstr "tavunumeron on oltava ei-negatiivinen"
+
+#: objcopy.c:3243
+#, c-format
+msgid "architecture %s unknown"
+msgstr "arkkitehtuuri %s tuntematon"
+
+#: objcopy.c:3251
+msgid "interleave must be positive"
+msgstr "lomituksen täytyy olla positiivinen"
+
+#: objcopy.c:3260
+msgid "interleave width must be positive"
+msgstr "lomitusleveyden täytyy olla positiivinen"
+
+#: objcopy.c:3280 objcopy.c:3288
+#, c-format
+msgid "%s both copied and removed"
+msgstr "%s sekä kopioitu että poistettu"
+
+#: objcopy.c:3387 objcopy.c:3467 objcopy.c:3575 objcopy.c:3606 objcopy.c:3630
+#: objcopy.c:3634 objcopy.c:3654
+#, c-format
+msgid "bad format for %s"
+msgstr "virheellinen muoto kohteelle %s"
+
+#: objcopy.c:3399
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "ei voi avata: %s: %s"
+
+#: objcopy.c:3544
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Varoitus: katkaistaan välitäyte 0x%s tavumuodoksi 0x%x"
+
+#: objcopy.c:3705
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr "tuntematon pitkä lohkonimien valitsin ’%s’"
+
+#: objcopy.c:3723
+msgid "unable to parse alternative machine code"
+msgstr "ei voida jäsentää vaihtoehtoista konekoodia"
+
+#: objcopy.c:3768
+msgid "number of bytes to reverse must be positive and even"
+msgstr "päinvastaiseen järjestykseen asetettujen tavujen lukumäärän on oltava positiivinen ja parillinen"
+
+#: objcopy.c:3771
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr "Varoitus: ei oteta huomioon edellistä %d:n â€--reverse-bytesâ€-arvoa"
+
+#: objcopy.c:3786
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr "%s: virheellinen reserve-arvo valitsimelle --heap"
+
+#: objcopy.c:3792
+#, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr "%s: virheellinen commit-arvo valitsimelle --heap"
+
+#: objcopy.c:3817
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr "%s: virheellinen reserve-arvo valitsimelle --stack"
+
+#: objcopy.c:3823
+#, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr "%s: virheellinen commit-arvo valitsimelle --stack"
+
+#: objcopy.c:3852
+msgid "interleave start byte must be set with --byte"
+msgstr "lomituksen alkutavu täytyy olla asetettu valitsimella --byte"
+
+#: objcopy.c:3855
+msgid "byte number must be less than interleave"
+msgstr "tavunumeron on oltava lomitusta pienempi"
+
+#: objcopy.c:3858
+msgid "interleave width must be less than or equal to interleave - byte`"
+msgstr "lomitusleveyden on oltava vähemmän tai yhtä paljon kuin lomitus - byte`"
+
+#: objcopy.c:3885
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr "tuntematon syöte-EFI-kohde: %s"
+
+#: objcopy.c:3916
+#, c-format
+msgid "unknown output EFI target: %s"
+msgstr "tuntematon tuloste-EFI-kohde: %s"
+
+#: objcopy.c:3929
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr "varoitus: kohdetta ’%s’ ei voitu sijoittaa. Järjestelmävirhesanoma: %s"
+
+#: objcopy.c:3941
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr "varoitus: ei voitu luoda tilapäistä tiedostoa kopioitaessa kohdetta ’%s’, (virhe: %s)"
+
+# Ensimmäinen %s sisältää tekstin "--change-section-vma", toinen %s sisältää jonkin nimen, %c sisältää joko '=' tai '+' -merkin, viimeinen %s sisältää jonkun korkeintaan 20-merkkisen puskurin sisällön.
+#: objcopy.c:3969 objcopy.c:3983
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s ei käytetty koskaan"
+
+#: objdump.c:201
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Käyttö: %s <valitsimet> <tiedosto(t)>\n"
+
+#: objdump.c:202
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " Näyttää tietoja objekti<tiedosto(i)sta>.\n"
+
+# Ohjenäytöllä puhutaan riviä ylempänä valitsimista. Siksi alla käytetään samaa termiä suomennoksessa.
+#: objdump.c:203
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " Seuraavista valitsimista on valittava vähintään yksi:\n"
+
+#: objdump.c:204
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -P, --private=OPT,OPT... Display object format specific contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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[lLiaprmfFsoRt] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+msgstr ""
+" -a, --archive-headers Näytä arkisto-otsaketiedot\n"
+" -f, --file-headers Näytä ylimmän tiedosto-otsakkeen sisältö\n"
+" -p, --private-headers Näytä objektimuotokohtaisen tiedosto-otsakkeen sisältö\n"
+" -P, --private=OPT,OPT... Näytä objektimuotokohtaiset sisällöt\n"
+" -h, --[section-]headers Näytä lohko-otsakkeiden sisältö\n"
+" -x, --all-headers Näytä kaikkien otsakkeiden sisältö\n"
+" -d, --disassemble Näytä suoritettavien lohkojen assembler-sisältö\n"
+" -D, --disassemble-all Näytä kaikkien lohkojen assembler-sisältö\n"
+" -S, --source Sekoita lähdekoodi disassembly:n kanssa\n"
+" -s, --full-contents Näytä kaikkien vaadittujen lohkojen koko sisältö\n"
+" -g, --debugging Näytä vianjäljitystiedot objektitiedostossa\n"
+" -e, --debugging-tags Näytä vianjäljitystiedot käyttäen ctags-tyyliä\n"
+" -G, --stabs Näytä (raakamuodossa) kaikki tiedoston STABS-tiedot\n"
+" -W[lLiaprmfFsoRt] tai\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =trace_info,=trace_abbrev,=trace_aranges]\n"
+" Näytä DWARF-tiedot tiedostossa\n"
+" -t, --syms Näytä symbolitaulujen sisältö\n"
+" -T, --dynamic-syms Näytä dynaamisen symbolitaulun sisältö\n"
+" -r, --reloc Näytä uudelleensijoitusalkiot tiedostossa\n"
+" -R, --dynamic-reloc Näytä dynaamisen uudelleensijoitusalkiot tiedostossa\n"
+" @<tiedosto> Lue valitsimet <tiedostosta>\n"
+" -v, --version Näytä tämän ohjelman versionumero\n"
+" -i, --info Luettele tuetut objektimuodot ja arkkitehtuurit\n"
+" -H, --help Näytä nämä tiedot\n"
+
+# Ohjenäytöllä puhutaan ylempänä valitsimista. Siksi alla käytetään samaa termiä suomennoksessa.
+#: objdump.c:236
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" Seuraavat valitsimet ovat valinnaisia:\n"
+
+#: objdump.c:237
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a single line for -d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+msgstr ""
+" -b, --target=BFD-NIMI Määrittele kohdeobjektimuodoksi BFD-NIMI\n"
+" -m, --architecture=KONE Määrittele kohdearkkitehtuuriksi KONE\n"
+" -j, --section=NIMI Näytä tiedot vain lohkosta NIMI\n"
+" -M, --disassembler-options=OPT Välitä teksti OPT disassemblerille\n"
+" -EB --endian=big Otaksu, että big-endian-tavujärjestystä käytetään disassembloinnissa\n"
+" -EL --endian=little Otaksu, että little-endian-tavujärjestystä käytetään disassembloinnissa\n"
+" --file-start-context Sisällytä asiayhteys tiedoston alusta (yhdessä -S:n kanssa)\n"
+" -I, --include=HAKEMISTO Lisää HAKEMISTO lähdetiedostojen etsintäluetteloon\n"
+" -l, --line-numbers Sisällytä rivinumerot ja tiedostonimet tulosteeseen\n"
+" -F, --file-offsets Sisällytä tiedostosiirrokset kun näytetään tietoja\n"
+" -C, --demangle[=TYYLI] Eheytä runnellut/käsitellyt symbolinimet\n"
+" TYYLI, jos annettu, voi olla â€autoâ€, â€gnuâ€,\n"
+" â€lucidâ€, â€armâ€, â€hpâ€, â€edgâ€, â€gnu-v3â€, â€javaâ€\n"
+" tai â€gnatâ€\n"
+" -w, --wide Muotoile tuloste yli 80 sarakkeen levyiseksi\n"
+" -z, --disassemble-zeroes Älä hyppää nollalohkojen yli disassembloinnissa\n"
+" --start-address=OSOITE Käsittele vain dataa, jonka osoite on >= OSOITE\n"
+" --stop-address=OSOITE Käsittele vain dataa, jonka osoite on <= OSOITE\n"
+" --prefix-addresses Tulosta disassemblyn mukana täydellinen osoite\n"
+" --[no-]show-raw-insn Näytä heksadesimaaliluvut symbolisen disassemblyn mukana\n"
+" --adjust-vma=SIIRROS Lisää arvo SIIRROS kaikkiin näytettyihin lohko-osoitteisiin\n"
+" --insn-width=LEVEYS Näytä LEVEYS tavua yhdellä rivillä valitsimella -d\n"
+" --adjust-vma=SIIRROS Lisää SIIRROS kaikkiin näytettyihin lohko-osoitteisiin\n"
+" --special-syms Sisällytä erikoissymbolit symbolivedoksiin\n"
+" --prefix=ETULIITE Lisää ETULIITE absoluuttisiin polkuihin valitsimelle -S\n"
+" --prefix-strip=TASO Riisu alustavat hakemistonimet valitsimelle -S\n"
+
+#: objdump.c:263
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+"\n"
+msgstr ""
+" --dwarf-depth=N Älä näytä DIE-kohteita syvyydellä N tai syvemmällä\n"
+" --dwarf-start=N Näytä DIE-kohteet aloittaen numerolla N, samalla syvyydellä\n"
+" tai syvemmällä\n"
+"\n"
+
+#: objdump.c:275
+#, c-format
+msgid ""
+"\n"
+"Options supported for -P/--private switch:\n"
+msgstr ""
+"\n"
+"Valitsimet, jotka on tuettu -P/--private -argumentille:\n"
+
+#: objdump.c:426
+#, c-format
+msgid "section '%s' mentioned in a -j option, but not found in any input file"
+msgstr "lohko '%s' mainittu valitsimessa -j, mutta ei löytynyt mistään syötetiedostosta"
+
+#: objdump.c:530
+#, c-format
+msgid "Sections:\n"
+msgstr "Lohkot:\n"
+
+# Rivin saa näkyviin esimerkiksi komennolla "objdump -x main.o"
+#: objdump.c:533 objdump.c:537
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Ind Nimi Koko VirMuisOs LatMuisOs TiedSiir Tasaus"
+
+# Idx on ilmeisesti index. VMA on ilmeisesti Virtual Memory Address. LMA on ilmeisesti Load Memory Address: This is the address at which a section will be loaded.
+#: objdump.c:539
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Ind Nimi Koko VirtMuistiOsoite LatausMuistOsoite TiedSiir Tasaus"
+
+#: objdump.c:543
+#, c-format
+msgid " Flags"
+msgstr " Liput"
+
+#: objdump.c:586
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: ei ole dynaaminen objekti"
+
+#: objdump.c:1012 objdump.c:1036
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr " (Tiedostosiirros: 0x%lx)"
+
+#: objdump.c:1662
+#, c-format
+msgid "disassemble_fn returned length %d"
+msgstr "disassemble_fn palautti pituuden %d"
+
+#: objdump.c:1967
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+"\n"
+"Lohkon %s disassemblointi:\n"
+
+#: objdump.c:2143
+#, c-format
+msgid "can't use supplied machine %s"
+msgstr "ei voi käyttää annettua konetta %s"
+
+#: objdump.c:2162
+#, c-format
+msgid "can't disassemble for architecture %s\n"
+msgstr "ei voi disassembloida arkkitehtuuria %s\n"
+
+#: objdump.c:2242 objdump.c:2265
+#, c-format
+msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"Lohkon ’%s’ sisältöjä ei saada.\n"
+
+#: objdump.c:2406
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"Ei ole %s-lohkoa\n"
+"\n"
+
+#: objdump.c:2415
+#, c-format
+msgid "reading %s section of %s failed: %s"
+msgstr "lohkon %s lukeminen kohteesta %s epäonnistui: %s"
+
+#: objdump.c:2459
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"Lohkon %s sisältö:\n"
+"\n"
+
+#: objdump.c:2590
+#, c-format
+msgid "architecture: %s, "
+msgstr "arkkitehtuuri: %s, "
+
+#: objdump.c:2593
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "liput 0x%08x:\n"
+
+#: objdump.c:2607
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"aloitusosoite 0x"
+
+#: objdump.c:2633
+msgid "option -P/--private not supported by this file"
+msgstr "tämä tiedosto ei tule valitsinta -P/--private"
+
+#: objdump.c:2657
+#, c-format
+msgid "target specific dump '%s' not supported"
+msgstr "kohdekohtaista vedosta ’%s’ ei tueta"
+
+#: objdump.c:2721
+#, c-format
+msgid "Contents of section %s:"
+msgstr "Lohkon %s sisältö:"
+
+#: objdump.c:2723
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr " (Aloitus tiedostosiirroksessa: 0x%lx)"
+
+#: objdump.c:2729
+msgid "Reading section failed"
+msgstr "Lohkon lukeminen epäonnistui"
+
+#: objdump.c:2832
+#, c-format
+msgid "no symbols\n"
+msgstr "ei symboleja\n"
+
+#: objdump.c:2839
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr "ei tietoja symbolinumerolla %ld\n"
+
+#: objdump.c:2842
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "ei voitu määritellä symbolinumeron %ld tyyppiä\n"
+
+#: objdump.c:3163
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: tiedostomuoto %s\n"
+
+#: objdump.c:3223
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: vianjäljitystietojen tulostaminen epäonnistui"
+
+#: objdump.c:3327
+#, c-format
+msgid "In archive %s:\n"
+msgstr "Arkistossa %s:\n"
+
+#: objdump.c:3438
+msgid "error: the start address should be before the end address"
+msgstr "virhe: aloitusosoitteen pitäisi olla ennen loppuosoitetta"
+
+#: objdump.c:3443
+msgid "error: the stop address should be after the start address"
+msgstr "virhe: pysähtymisosoitteen tulisi olla alkuosoitteen jälkeen"
+
+#: objdump.c:3455
+msgid "error: prefix strip must be non-negative"
+msgstr "virhe: etuliitenauhan on oltava ei-negatiivinen"
+
+#: objdump.c:3460
+msgid "error: instruction width must be positive"
+msgstr "virhe: käskyleveyden täytyy olla positiivinen"
+
+# Lisäsin lainausmerkit väliviivan ja valitsinmerkin erottamiseksi
+#: objdump.c:3469
+msgid "unrecognized -E option"
+msgstr "tunnistamaton â€-Eâ€-valitsin"
+
+# Middle-Endian ? --endian-tavujärjestystyyppi lyhennetty tavujärjestystyypiksi, joka kertoo jo kaiken.
+#: objdump.c:3480
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "tunnistamaton tavujärjestystyyppi â€%sâ€"
+
+#: od-xcoff.c:75
+#, c-format
+msgid ""
+"For XCOFF files:\n"
+" header Display the file header\n"
+" aout Display the auxiliary header\n"
+" sections Display the section headers\n"
+" syms Display the symbols table\n"
+" relocs Display the relocation entries\n"
+" lineno Display the line number entries\n"
+" loader Display loader section\n"
+" except Display exception table\n"
+" typchk Display type-check section\n"
+" traceback Display traceback tags\n"
+" toc Display toc symbols\n"
+msgstr ""
+"XCOFF-tiedostoille:\n"
+" header Näytä tiedosto-otsake\n"
+" aout Näytä lisäotsake\n"
+" sections Näytä lohko-otsakkeet\n"
+" syms Näytä symbolien taulu\n"
+" relocs Näytä sijoittelualkiot\n"
+" lineno Näytä rivinumeroalkiot\n"
+" loader Näytä lataajalohko\n"
+" except Näytä poikkeustaulu\n"
+" typchk Näytä tyyppitarksituslohko\n"
+" traceback Näytä paluujäljitystunnisteet\n"
+" toc Näytä sisällysluettelosymbolit\n"
+
+#: od-xcoff.c:416
+#, c-format
+msgid " nbr sections: %d\n"
+msgstr " numerolohkot: %d\n"
+
+#: od-xcoff.c:417
+#, c-format
+msgid " time and date: 0x%08x - "
+msgstr " aika ja päivämäärä: 0x%08x - "
+
+#: od-xcoff.c:419
+#, c-format
+msgid "not set\n"
+msgstr "ei asetettu\n"
+
+#: od-xcoff.c:426
+#, c-format
+msgid " symbols off: 0x%08x\n"
+msgstr " symbolien siirros: 0x%08x\n"
+
+#: od-xcoff.c:427
+#, c-format
+msgid " nbr symbols: %d\n"
+msgstr " numerosymbolit: %d\n"
+
+#: od-xcoff.c:428
+#, c-format
+msgid " opt hdr sz: %d\n"
+msgstr " valitsinotsakeekoko: %d\n"
+
+#: od-xcoff.c:429
+#, c-format
+msgid " flags: 0x%04x "
+msgstr " liput: 0x%04x "
+
+#: od-xcoff.c:443
+#, c-format
+msgid "Auxiliary header:\n"
+msgstr "Lisäotsake:\n"
+
+#: od-xcoff.c:446
+#, c-format
+msgid " No aux header\n"
+msgstr " Ei lisäotsaketta\n"
+
+#: od-xcoff.c:451
+#, c-format
+msgid "warning: optionnal header size too large (> %d)\n"
+msgstr "varoitus: valinnainen otsakekoko on liian suuri (> %d)\n"
+
+#: od-xcoff.c:457
+msgid "cannot read auxhdr"
+msgstr "ei voida lukea lisäotsaketta"
+
+#: od-xcoff.c:522
+#, c-format
+msgid "Section headers (at %u+%u=0x%08x to 0x%08x):\n"
+msgstr "Lohko-otsakkeet (osoitteesta %u+%u=0x%08x osoitteeseen 0x%08x):\n"
+
+#: od-xcoff.c:527
+#, c-format
+msgid " No section header\n"
+msgstr " Ei lohko-otsakkeita\n"
+
+#: od-xcoff.c:532 od-xcoff.c:544 od-xcoff.c:599
+msgid "cannot read section header"
+msgstr "ei voida lukea lohko-otsakkeita"
+
+#: od-xcoff.c:558
+#, c-format
+msgid " Flags: %08x "
+msgstr " Liput: %08x "
+
+#: od-xcoff.c:566
+#, c-format
+msgid "overflow - nreloc: %u, nlnno: %u\n"
+msgstr "ylivuoto - nreloc: %u, nlnno: %u\n"
+
+#: od-xcoff.c:587 od-xcoff.c:922 od-xcoff.c:978
+msgid "cannot read section headers"
+msgstr "ei voida lukea lohko-otsakkeita"
+
+#: od-xcoff.c:646
+msgid "cannot read strings table length"
+msgstr "ei voida lukea merkkijonotaulupituutta"
+
+#: od-xcoff.c:662
+msgid "cannot read strings table"
+msgstr "ei voida lukea merkkijonotaulua"
+
+#: od-xcoff.c:670
+msgid "cannot read symbol table"
+msgstr "ei voida lukea symbolitaulua"
+
+#: od-xcoff.c:685
+msgid "cannot read symbol entry"
+msgstr "ei voida lukea symbolitauluriviä"
+
+#: od-xcoff.c:720
+msgid "cannot read symbol aux entry"
+msgstr "ei voida lukea symbolilisätulokohtaa"
+
+#: od-xcoff.c:742
+#, c-format
+msgid "Symbols table (strtable at 0x%08x)"
+msgstr "Symbolien taulu (strtable osoitteessa 0x%08x)"
+
+#: od-xcoff.c:747
+#, c-format
+msgid ""
+":\n"
+" No symbols\n"
+msgstr ""
+":\n"
+" Ei symboleja\n"
+
+#: od-xcoff.c:753
+#, c-format
+msgid " (no strings):\n"
+msgstr " (ei merkkijonoja):\n"
+
+#: od-xcoff.c:755
+#, c-format
+msgid " (strings size: %08x):\n"
+msgstr " (merkkijonojen koko: %08x):\n"
+
+#. Translators: 'sc' is for storage class, 'off' for offset.
+#: od-xcoff.c:769
+#, c-format
+msgid " # sc value section type aux name/off\n"
+msgstr " # sc arvo lohko tyyppi lisä nimi/pois\n"
+
+#. Section length, number of relocs and line number.
+#: od-xcoff.c:821
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+
+#. Section length and number of relocs.
+#: od-xcoff.c:828
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u\n"
+
+#: od-xcoff.c:891
+#, c-format
+msgid "offset: %08x"
+msgstr "offset: %08x"
+
+#: od-xcoff.c:934
+#, c-format
+msgid "Relocations for %s (%u)\n"
+msgstr "Sijoitukset kohteelle %s (%u)\n"
+
+#: od-xcoff.c:937
+msgid "cannot read relocations"
+msgstr "ei voida lukea sijoituksia"
+
+#: od-xcoff.c:950
+msgid "cannot read relocation entry"
+msgstr "ei voida lukea sijoitusriviä"
+
+#: od-xcoff.c:990
+#, c-format
+msgid "Line numbers for %s (%u)\n"
+msgstr "Rivinumerot kohteelle %s (%u)\n"
+
+#: od-xcoff.c:993
+msgid "cannot read line numbers"
+msgstr "ei voida lukea rivinumeroita"
+
+#. Line number, symbol index and physical address.
+#: od-xcoff.c:997
+#, c-format
+msgid "lineno symndx/paddr\n"
+msgstr "rivinro symndx/paddr\n"
+
+#: od-xcoff.c:1005
+msgid "cannot read line number entry"
+msgstr "ei voida lukea rivinumero-kohteita"
+
+#: od-xcoff.c:1048
+#, c-format
+msgid "no .loader section in file\n"
+msgstr "ei .loader-lohkoa tiedostossa\n"
+
+#: od-xcoff.c:1054
+#, c-format
+msgid "section .loader is too short\n"
+msgstr "lohko .loader on liian lyhyt\n"
+
+#: od-xcoff.c:1061
+#, c-format
+msgid "Loader header:\n"
+msgstr "Loader-otsake:\n"
+
+#: od-xcoff.c:1063
+#, c-format
+msgid " version: %u\n"
+msgstr " Versio: %u\n"
+
+#: od-xcoff.c:1066
+#, c-format
+msgid " Unhandled version\n"
+msgstr "Käsittelemätön versio\n"
+
+#: od-xcoff.c:1071
+#, c-format
+msgid " nbr symbols: %u\n"
+msgstr " numerosymbolit: %u\n"
+
+#: od-xcoff.c:1073
+#, c-format
+msgid " nbr relocs: %u\n"
+msgstr " numero-reloc-tietueet:%u\n"
+
+#. Import string table length.
+#: od-xcoff.c:1075
+#, c-format
+msgid " import strtab len: %u\n"
+msgstr " tuonti strtab pituus: %u\n"
+
+#: od-xcoff.c:1078
+#, c-format
+msgid " nbr import files: %u\n"
+msgstr " numerotuontitiedostot:%u\n"
+
+#: od-xcoff.c:1080
+#, c-format
+msgid " import file off: %u\n"
+msgstr " tuonti tiedostosiirros: %u\n"
+
+#: od-xcoff.c:1082
+#, c-format
+msgid " string table len: %u\n"
+msgstr " merkkijonotaulun pituus: %u\n"
+
+#: od-xcoff.c:1084
+#, c-format
+msgid " string table off: %u\n"
+msgstr " merkkijonotaulun siirros: %u\n"
+
+#: od-xcoff.c:1087
+#, c-format
+msgid "Dynamic symbols:\n"
+msgstr "Dynaamiset symbolit:\n"
+
+#: od-xcoff.c:1094
+#, c-format
+msgid " %4u %08x %3u "
+msgstr " %4u %08x %3u "
+
+#: od-xcoff.c:1107
+#, c-format
+msgid " %3u %3u "
+msgstr " %3u %3u "
+
+#: od-xcoff.c:1116
+#, c-format
+msgid "(bad offset: %u)"
+msgstr "(väärä siirrososoite: %u)"
+
+#: od-xcoff.c:1123
+#, c-format
+msgid "Dynamic relocs:\n"
+msgstr "Dynaamiset relocs-tietueet:\n"
+
+#: od-xcoff.c:1163
+#, c-format
+msgid "Import files:\n"
+msgstr "Tuontitiedostot:\n"
+
+#: od-xcoff.c:1195
+#, c-format
+msgid "no .except section in file\n"
+msgstr "ei .except-lohkoa tiedostossa\n"
+
+#: od-xcoff.c:1203
+#, c-format
+msgid "Exception table:\n"
+msgstr "Poikkeustaulu:\n"
+
+#: od-xcoff.c:1238
+#, c-format
+msgid "no .typchk section in file\n"
+msgstr "ei .typchk-lohkooa tiedostossa\n"
+
+#: od-xcoff.c:1245
+#, c-format
+msgid "Type-check section:\n"
+msgstr "Tyyppitarkistuslohko:\n"
+
+#: od-xcoff.c:1292
+#, c-format
+msgid " address beyond section size\n"
+msgstr "osoite lohkokoon takana\n"
+
+#: od-xcoff.c:1302
+#, c-format
+msgid " tags at %08x\n"
+msgstr " tunnisteet osoitteessa %08x\n"
+
+#: od-xcoff.c:1380
+#, c-format
+msgid " number of CTL anchors: %u\n"
+msgstr " CTL-linkkien lukumäärä: %u\n"
+
+#: od-xcoff.c:1399
+#, c-format
+msgid " Name (len: %u): "
+msgstr " Nimi (pituus: %u): "
+
+#: od-xcoff.c:1402
+#, c-format
+msgid "[truncated]\n"
+msgstr "[typistetty]\n"
+
+#: od-xcoff.c:1421
+#, c-format
+msgid " (end of tags at %08x)\n"
+msgstr " (tunnisteiden loppu osoitteessa %08x)\n"
+
+#: od-xcoff.c:1424
+#, c-format
+msgid " no tags found\n"
+msgstr " tunnisteita ei löytynyt\n"
+
+#: od-xcoff.c:1428
+#, c-format
+msgid " Truncated .text section\n"
+msgstr " Typistetty .text-lohko\n"
+
+#: od-xcoff.c:1513
+#, c-format
+msgid "TOC:\n"
+msgstr "Sisällysluettelo:\n"
+
+#: od-xcoff.c:1556
+#, c-format
+msgid "Nbr entries: %-8u Size: %08x (%u)\n"
+msgstr "Numerorivit: %-8u Koko: %08x (%u)\n"
+
+#: od-xcoff.c:1640
+msgid "cannot read header"
+msgstr "ei voida lukea otsaketta"
+
+#: od-xcoff.c:1648
+#, c-format
+msgid "File header:\n"
+msgstr "Tiedosto-otsake:\n"
+
+#: od-xcoff.c:1649
+#, c-format
+msgid " magic: 0x%04x (0%04o) "
+msgstr " maaginen: 0x%04x (0%04o) "
+
+#: od-xcoff.c:1653
+#, c-format
+msgid "(WRMAGIC: writable text segments)"
+msgstr "(WRMAGIC: kirjoituskelpoiset tekstisegmentit)"
+
+#: od-xcoff.c:1656
+#, c-format
+msgid "(ROMAGIC: readonly sharablee text segments)"
+msgstr "(ROMAGIC: kirjoitussuojatut jaettavat tekstisegmentit)"
+
+#: od-xcoff.c:1659
+#, c-format
+msgid "(TOCMAGIC: readonly text segments and TOC)"
+msgstr "(TOCMAGIC: kirjoitussuojatut tekstisegmentit ja sisällysluettelo)"
+
+#: od-xcoff.c:1662
+#, c-format
+msgid "unknown magic"
+msgstr "tuntematon maaginen arvo"
+
+#: od-xcoff.c:1669
+#, c-format
+msgid " Unhandled magic\n"
+msgstr " Käsitelemätön maaginen arvo\n"
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr "virheellinen arvo annettu code_page-pragmalle.\n"
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: Virheellinen tyyppikoodi 0x%x"
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment epäonnistui: %s"
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent epäonnistui: %s"
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf ilman edeltävää funktiota"
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: odottamaton .ef\n"
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: ei tunnistettavia vianjäljitystietoja"
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "Viimeiset stabs-alkiot ennen virhettä:\n"
+
+#: readelf.c:268
+msgid "<none>"
+msgstr "<ei mitään>"
+
+#: readelf.c:269
+msgid "<no-name>"
+msgstr "<nimetön>"
+
+#: readelf.c:270 readelf.c:5083 readelf.c:5594 readelf.c:8132 readelf.c:8250
+#: readelf.c:9233 readelf.c:9327 readelf.c:9388 readelf.c:12391
+#: readelf.c:12394
+msgid "<corrupt>"
+msgstr "<rikki>"
+
+#: readelf.c:309
+#, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "Ei voida hakea arvoa 0x%lx kohteelle %s\n"
+
+#: readelf.c:324
+#, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Muisti loppui varattaessa 0x%lx tavua kohteelle %s\n"
+
+#: readelf.c:334
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Ei voi lukea 0x%lx tavua kohteesta %s\n"
+
+#: readelf.c:638
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Tämän konearkkitehtuurin uudelleensijoituksia ei tunneta\n"
+
+#: readelf.c:659 readelf.c:757
+msgid "32-bit relocation data"
+msgstr "32-bittinen sijoitusdata"
+
+#: readelf.c:671 readelf.c:701 readelf.c:768 readelf.c:797
+msgid "out of memory parsing relocs\n"
+msgstr "muisti loppui jäsenneltäessä relocs-alkioita\n"
+
+#: readelf.c:689 readelf.c:786
+msgid "64-bit relocation data"
+msgstr "64-bittinen sijoitusdata"
+
+#: readelf.c:902
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr " Siirros Tiedot Tyyppi Sym. arvo Symbolin nimi + Lisättävä\n"
+
+#: readelf.c:904
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr " Siirros Tiedot Tyyppi Sym.arvo Sym. nimi + Lisättävä\n"
+
+#: readelf.c:909
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " Siirros Tiedot Tyyppi Sym. arvo Symbolin nimi\n"
+
+#: readelf.c:911
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " Siirros Tiedot Tyyppi Sym.arvo Sym. nimi\n"
+
+#: readelf.c:919
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr " Siirros Tiedot Tyyppi Symbolin arvo Symbolin nimi + Lisättävä\n"
+
+#: readelf.c:921
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr " Siirros Tiedot Tyyppi Sym. arvo Sym. nimi + Lisättävä\n"
+
+#: readelf.c:926
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr " Siirros Tiedot Tyyppi Symbolin arvo Symbolin nimi\n"
+
+#: readelf.c:928
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " Siirros Tiedot Tyyppi Sym. arvo Symbolinimi\n"
+
+#: readelf.c:1245 readelf.c:1405 readelf.c:1413
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "tunnistamaton: %-7lx"
+
+#: readelf.c:1270
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<tuntematon lisättävä: %lx>"
+
+#: readelf.c:1277
+#, c-format
+msgid " bad symbol index: %08lx"
+msgstr " virheellinen symboli-indeksi: %08lx"
+
+#: readelf.c:1363
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr "<merkkijonotaulun indeksi: %3ld>"
+
+#: readelf.c:1365
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<rikkinäinen merkkijonotauluindeksi: %3ld>"
+
+#: readelf.c:1758
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "Suoritinkohtainen: %lx"
+
+#: readelf.c:1782
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "Käyttöjärjestelmäkohtainen: %lx"
+
+#: readelf.c:1786 readelf.c:2858
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<tuntematon>: %lx"
+
+#: readelf.c:1799
+msgid "NONE (None)"
+msgstr "NONE (Ei mitään)"
+
+#: readelf.c:1800
+msgid "REL (Relocatable file)"
+msgstr "REL (Uudelleensijoitettava tiedosto)"
+
+#: readelf.c:1801
+msgid "EXEC (Executable file)"
+msgstr "EXEC (Suoritettava tiedosto)"
+
+#: readelf.c:1802
+msgid "DYN (Shared object file)"
+msgstr "DYN (Jaettu objektitiedosto)"
+
+#: readelf.c:1803
+msgid "CORE (Core file)"
+msgstr "CORE (Muistivedos)"
+
+#: readelf.c:1807
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "Suoritinkohtainen: (%x)"
+
+#: readelf.c:1809
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "Käyttöjärjestelmäkohtainen: (%x)"
+
+#: readelf.c:1811
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<tuntematon>: %x"
+
+#: readelf.c:1823
+msgid "None"
+msgstr "Ei mitään"
+
+#: readelf.c:1994
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr "<tuntematon>: 0x%x"
+
+#: readelf.c:2180
+msgid ", <unknown>"
+msgstr ", <tuntematon>"
+
+#: readelf.c:2266 readelf.c:7485
+msgid "unknown"
+msgstr "tuntematon"
+
+#: readelf.c:2267
+msgid "unknown mac"
+msgstr "tuntematon mac"
+
+#: readelf.c:2331
+msgid ", relocatable"
+msgstr ", uudelleensijoitettava"
+
+#: readelf.c:2334
+msgid ", relocatable-lib"
+msgstr ", uudelleensijoitettava kirjasto"
+
+#: readelf.c:2357
+msgid ", unknown v850 architecture variant"
+msgstr ", tuntematon v850-arkkitehtuurivariantti"
+
+#: readelf.c:2414
+msgid ", unknown CPU"
+msgstr ", tuntematon prosessori"
+
+#: readelf.c:2429
+msgid ", unknown ABI"
+msgstr ", tuntematon ABI"
+
+#: readelf.c:2452 readelf.c:2486
+msgid ", unknown ISA"
+msgstr ", tuntematon ISA"
+
+#: readelf.c:2663
+msgid "Standalone App"
+msgstr "Erillinen sovellus"
+
+#: readelf.c:2672
+msgid "Bare-metal C6000"
+msgstr "Bare-metal C6000"
+
+#: readelf.c:2682 readelf.c:3471 readelf.c:3487
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<tuntematon: %x>"
+
+#. This message is probably going to be displayed in a 15
+#. character wide field, so put the hex value first.
+#: readelf.c:3108
+#, c-format
+msgid "%08x: <unknown>"
+msgstr "%08x: <tuntematon>"
+
+#: readelf.c:3163
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Käyttö: readelf <valitsimet> elf-tiedosto(t)\n"
+
+#: readelf.c:3164
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr " Näytä tietoja ELF-muotoisten tiedostojen sisällöstä\n"
+
+# Alla "core notes" on hiukan hankala suomentaa. Notes viittaan note-lohkoihin, joita valmistaja käyttää lisätietojen sisällyttämiseksi tiedostoon. Lisätiedot olisi ehkä merkitykseltään paras suomennos. Tiedostossa saattaa esiintyä yksi tai useampi maaginen .note-lohko, jota käytetään lisätietojen tallentamiseen. Ohjelmoijille .note-lohko voi olla tuttu, mutta he eivät välttämättä osaa yhdistää sanaa "lisätiedot" lohkoon .note.
+#: readelf.c:3165
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" --dyn-syms Display the dynamic symbol table\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as relocated bytes\n"
+" -w[lLiaprmfFsoRt] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" Valitsimet ovat:\n"
+" -a --all Sama kuin: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Näytä ELF-tiedosto-otsake\n"
+" -l --program-headers Näytä ohjelmaotsakkeet\n"
+" --segments Alias valitsimelle --program-headers\n"
+" -S --section-headers Näytä lohkojen otsake\n"
+" --sections Alias valitsimelle --section-headers\n"
+" -g --section-groups Näytä lohkoryhmät\n"
+" -t --section-details Näytä lohkon yksityiskohdat\n"
+" -e --headers Sama kuin: -h -l -S\n"
+" -s --syms Näytä symbolitaulu\n"
+" --symbols Alias valitsimelle --syms\n"
+" --dyn-syms Näytä dynaaminen symbolitaulu\n"
+" -n --notes Näytä ydin notes (jos on olemassa)\n"
+" -r --relocs Näytä uudelleensijoitukset (jos on olemassa)\n"
+" -u --unwind Näytä palautustiedot (jos on olemassa)\n"
+" -d --dynamic Näytä dynaaminen lohko (jos on olemassa)\n"
+" -V --version-info Näytä versiolohkot (jos on olemassa)\n"
+" -A --arch-specific Näytä arkkitehtuurikohtaiset tiedot (jos niitä on).\n"
+" -D --use-dynamic Käytä dynaamisia lohkotietoja, kun näytetään symboleja\n"
+" -x --hex-dump=<numero|nimi>\n"
+" Vedosta lohkon <numero|nimi> sisältö tavuina\n"
+" -p --string-dump=<numero|nimi>\n"
+" Vedosta lohkon <numero|nimi> sisältö merkkijonoina\n"
+" -R --relocated-dump=<numero|nimi>\n"
+" Vedosta lohkon <numero|nimi> sisältö merkkijonoina\n"
+" -w[lLiaprmfFsoRt] tai\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Näytä DWARF2-vianjäljityslohkojen sisältö\n"
+
+#: readelf.c:3197
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+msgstr ""
+" --dwarf-depth=N Älä näytä DIE-kohteita syvyydellä N tai suuremmalla\n"
+" --dwarf-start=N Näytä DIE-kohteet aloittaen numerolla N, samalla syvyydellä\n"
+" tai syvemmällä\n"
+
+#: readelf.c:3202
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+" -i --instruction-dump=<numero|nimi>\n"
+" Disassembloi lohkon <numero|nimi> sisältö\n"
+
+#: readelf.c:3206
+#, 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äytä bucket-luettelopituuksien histogrammi\n"
+" -W --wide Salli yli 80 merkin levyinen tuloste\n"
+" @<tiedosto> Lue valitsimet tiedostosta <tiedosto>\n"
+" -H --help Näytä nämä tiedot\n"
+" -v --version Näytä readelf-ohjelman versionumero\n"
+
+#: readelf.c:3235 readelf.c:3264 readelf.c:3268 readelf.c:13623
+msgid "Out of memory allocating dump request table.\n"
+msgstr "Muisti loppui varattaessa tiedostovedospyyntötaulua.\n"
+
+#: readelf.c:3440
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Virheellinen valitsin ’-%c’\n"
+
+#: readelf.c:3455
+msgid "Nothing to do.\n"
+msgstr "Ei mitään tehtävää.\n"
+
+#: readelf.c:3467 readelf.c:3483 readelf.c:8068
+msgid "none"
+msgstr "ei mitään"
+
+# Selvennetty ylimääräisillä lainausmerkeillä
+#: readelf.c:3484
+msgid "2's complement, little endian"
+msgstr "kahden komplementti, â€little endianâ€-tavujärjestys"
+
+# Selvennetty ylimääräisillä lainausmerkeillä
+#: readelf.c:3485
+msgid "2's complement, big endian"
+msgstr "kahden komplementti, â€big endianâ€-tavujärjestys"
+
+# Valinnaisessa COFF-otsakkeessa on magic-kenttä, joka kertoo tiedoston tyypin.
+#: readelf.c:3503
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "Ei ELF-tiedosto - siinä on väärät maagiset tavut alussa\n"
+
+#: readelf.c:3513
+#, c-format
+msgid "ELF Header:\n"
+msgstr "ELF-otsake:\n"
+
+# Valinnaisessa COFF-otsakkeessa on magic-kenttä, joka kertoo tiedoston tyypin. Joillakin COFF-lohkoilla voi olla magic-nimi, joka kertoo lohkon erikoistarkoituksesta.
+#: readelf.c:3514
+#, c-format
+msgid " Magic: "
+msgstr " Maaginen numero: "
+
+# Levennetty tarkoituksella
+#: readelf.c:3518
+#, c-format
+msgid " Class: %s\n"
+msgstr " Luokka: %s\n"
+
+# Levennetty tarkoituksella
+#: readelf.c:3520
+#, c-format
+msgid " Data: %s\n"
+msgstr " Data: %s\n"
+
+# Levennetty tarkoituksella
+#: readelf.c:3522
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " Versio: %d %s\n"
+
+#: readelf.c:3527
+#, c-format
+msgid "<unknown: %lx>"
+msgstr "<tuntematon: %lx>"
+
+# Levennetty tarkoituksella. ABI on lyhennys sanoista Application Binary Interface
+#: readelf.c:3529
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " Käyttöjärjestelmä/ABI: %s\n"
+
+# Levennetty tarkoituksella
+#: readelf.c:3531
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " ABI-versio: %d\n"
+
+# Levennetty tarkoituksella
+#: readelf.c:3533
+#, c-format
+msgid " Type: %s\n"
+msgstr " Tyyppi: %s\n"
+
+# Levennetty tarkoituksella
+#: readelf.c:3535
+#, c-format
+msgid " Machine: %s\n"
+msgstr " Kone: %s\n"
+
+# Levennetty tarkoituksella
+#: readelf.c:3537
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " Versio: 0x%lx\n"
+
+# Levennetty tarkoituksella
+#: readelf.c:3540
+#, c-format
+msgid " Entry point address: "
+msgstr " Tulokohtaosoite: "
+
+# Levennetty tarkoituksella
+#: readelf.c:3542
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" Ohjelmaotsakkeiden alku: "
+
+# Levennetty tarkoituksella
+#: readelf.c:3544
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (tavua tiedostoon)\n"
+" Lohko-otsakkeiden alku: "
+
+#: readelf.c:3546
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (tavua tiedostoon)\n"
+
+# Levennetty tarkoituksella
+#: readelf.c:3548
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Liput: 0x%lx%s\n"
+
+# Levennetty tarkoituksella
+#: readelf.c:3551
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " Tämän otsakkeen koko: %ld (tavua)\n"
+
+# Levennetty tarkoituksella
+#: readelf.c:3553
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " Ohjelmaotsakkeiden koko: %ld (tavua)\n"
+
+# Levennetty tarkoituksella
+#: readelf.c:3555
+#, c-format
+msgid " Number of program headers: %ld"
+msgstr " Ohjelmaotsakkeiden lukumäärä: %ld"
+
+# Levennetty tarkoituksella
+#: readelf.c:3562
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " Lohko-otsakkeiden koko: %ld (tavua)\n"
+
+# Levennetty tarkoituksella
+#: readelf.c:3564
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " Lohko-otsakkeiden lukumäärä: %ld"
+
+# Yläpuolella olevat on levennetty tarkoituksella tämän levyisiksi
+#: readelf.c:3569
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " Lohko-otsakemerkkijonotaulun indeksi: %ld"
+
+#: readelf.c:3576
+#, c-format
+msgid " <corrupt: out of range>"
+msgstr " <rikki: lukualueen ulkopuolella>"
+
+#: readelf.c:3610 readelf.c:3644
+msgid "program headers"
+msgstr "ohjelmaotsakkeet"
+
+#: readelf.c:3711
+msgid "possibly corrupt ELF header - it has a non-zero program header offset, but no program headers"
+msgstr "mahdollisesti rikkinäinen ELF-otsake - sillä on nollasta poikkeava otsakesiirrososoite, mutta ei ohjelmaotsakkeita"
+
+#: readelf.c:3714
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"Tässä tiedostossa ei ole ohjelmaotsakkeita.\n"
+
+#: readelf.c:3720
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Elf-tiedostotyyppi on %s\n"
+
+#: readelf.c:3721
+#, c-format
+msgid "Entry point "
+msgstr "Tulokohta "
+
+#: readelf.c:3723
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"Ohjelmaotsakkeita on %d kpl, alkaen siirroksesta "
+
+#: readelf.c:3735 readelf.c:3737
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"Ohjelmaotsakkeet:\n"
+
+#: readelf.c:3741
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Tyyppi Siirros VirtOsoite FyysOsoite TiedKok MuisKok Lip Tasaus\n"
+
+#: readelf.c:3744
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Tyyppi Siirros VirtuaaliOsoite FyysinenOsoite TiedKoko MuisKoko Lip Tasaus\n"
+
+#: readelf.c:3748
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " Tyyppi Siirros VirtuaaliOsoite FyysinenOsoite\n"
+
+#: readelf.c:3750
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " TiedostoKoko MuistiKoko Liput Tasaus\n"
+
+#: readelf.c:3843
+msgid "more than one dynamic segment\n"
+msgstr "useampi kuin yksi dynaaminen segmentti\n"
+
+#: readelf.c:3862
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr "ei .dynamic-lohkoa dynaamisessa segmentissä\n"
+
+#: readelf.c:3877
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr ".dynamic-lohko ei ole dynaamisen segmentin sisällä\n"
+
+#: readelf.c:3880
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr ".dynamic-lohko ei ole dynaamisen segmentin ensimmäinen lohko.\n"
+
+#: readelf.c:3888
+msgid "Unable to find program interpreter name\n"
+msgstr "Ohjelmatulkin nimeä ei löydy\n"
+
+#: readelf.c:3895
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr "Sisäinen virhe: ei voitu luoda muotomerkkijonoa ohjelmatulkin näyttämiseksi\n"
+
+#: readelf.c:3899
+msgid "Unable to read program interpreter name\n"
+msgstr "Ohjelmatulkin nimeä ei voitu lukea\n"
+
+#: readelf.c:3902
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [Pyydetään ohjelmatulkkia: %s]"
+
+#: readelf.c:3914
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" Lohkosta segmenttiin ḱuvaus:\n"
+
+#: readelf.c:3915
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " Segmenttilohkot...\n"
+
+#: readelf.c:3951
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "Virtuaalisia osoitteita ei voi tulkata ilman ohjelmaotsakkeita.\n"
+
+#: readelf.c:3967
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "Virtuaaliosoite 0x%lx ei sijaitse missään PT_LOAD-segmentissä.\n"
+
+#: readelf.c:3982 readelf.c:4025
+msgid "section headers"
+msgstr "lohko-otsakkeet"
+
+#: readelf.c:4074 readelf.c:4154
+msgid "sh_entsize is zero\n"
+msgstr "sh_entsize on nolla\n"
+
+#: readelf.c:4082 readelf.c:4162
+msgid "Invalid sh_entsize\n"
+msgstr "Virheellinen sh_entsize\n"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n
+#: readelf.c:4087 readelf.c:4167
+msgid "symbols"
+msgstr "symbolit"
+
+#: readelf.c:4099 readelf.c:4178
+msgid "symbol table section indicies"
+msgstr "symbolitaulukkolohkojen indeksit"
+
+#: readelf.c:4439
+#, c-format
+msgid "UNKNOWN (%*.*lx)"
+msgstr "TUNTEMATON (%*.*lx)"
+
+#: readelf.c:4461
+msgid "possibly corrupt ELF file header - it has a non-zero section header offset, but no section headers\n"
+msgstr "mahdollisesti rikkinäinen ELF-tiedosto-otsake - sillä on nollasta poikkeava lohko-otssakesiirrososoite, mutta ei lohko-otsakkeita\n"
+
+#: readelf.c:4464
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"Tässä tiedostossa ei ole lohkoja.\n"
+
+#: readelf.c:4470
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "Lohko-otsakkeita on %d kpl, alkaen siirroksesta 0x%lx:\n"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n
+#: readelf.c:4491 readelf.c:5079 readelf.c:5491 readelf.c:5797 readelf.c:6210
+#: readelf.c:7093 readelf.c:9213
+msgid "string table"
+msgstr "merkkijonotaulu"
+
+#: readelf.c:4558
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "Lohkossa %d on virheellinen sh_entsize %lx (odotettiin %lx)\n"
+
+#: readelf.c:4578
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Tiedosto sisältää useita dynaamisia symbolitauluja\n"
+
+#: readelf.c:4590
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Tiedosto sisältää useita dynaamisia merkkijonotauluja\n"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n
+#: readelf.c:4596
+msgid "dynamic strings"
+msgstr "dynaamiset merkkijonot"
+
+# Lisäsin lainausmerkit selventämään lausetta.
+#: readelf.c:4603
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Tiedosto sisältää useita â€symtab shndxâ€-tauluja\n"
+
+# monikkomuoto seuraavasta msgid:stä
+#: readelf.c:4674
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"Lohko-otsakkeet:\n"
+
+# yksikkömuoto edellisestä msgid:stä
+#: readelf.c:4676
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"Lohko-otsake:\n"
+
+#: readelf.c:4682 readelf.c:4693 readelf.c:4704
+#, c-format
+msgid " [Nr] Name\n"
+msgstr " [Numero] Nimi\n"
+
+# ES on kokonaiskoko, Flg on liput, Lk on Linkki, Inf on Tiedot
+#: readelf.c:4683
+#, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr " Tyyppi Osoite Siirr. Koko Yht LnkTdt Tasaus\n"
+
+# ES on kokonaiskoko, Flg on liput, Lk on Linkki, Inf on Tiedot
+#: readelf.c:4687
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] Nimi Tyyppi Osoite Siirr. Koko Yht Lip Lk Tdt Tasaus\n"
+
+# ES on kokonaiskoko, Flg on liput, Lk on Linkki, Inf on Tiedot
+#: readelf.c:4694
+#, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr " Tyyppi Osoite Siirros Koko Yht Lk Tdt Tasaus\n"
+
+# ES on kokonaiskoko, Flg on liput, Lk on Linkki, Inf on Tiedot
+#: readelf.c:4698
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] Nimi Tyyppi Osoite Siirr. Koko Yht Lip Lk Tdt Tasaus\n"
+
+#: readelf.c:4705
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr " Tyyppi Osoite Siirros Linkki\n"
+
+# EntSize voi tarkoittaa Entire Size tai Entity Size
+#: readelf.c:4706
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr " Koko KokonaisKoko Tiedot Tasaus\n"
+
+#: readelf.c:4710
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [Nr] Nimi Tyyppi Osoite Siirros\n"
+
+# EntSize voi tarkoittaa Entire Size tai Entity Size
+#: readelf.c:4711
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " Koko KokonaisKoko Liput Link Tied. Tasaus\n"
+
+#: readelf.c:4716
+#, c-format
+msgid " Flags\n"
+msgstr " Liput\n"
+
+#: readelf.c:4796
+#, c-format
+msgid "section %u: sh_link value of %u is larger than the number of sections\n"
+msgstr "lohko %u: %u-linkkiarvo sh_link on suurempi kuin lohkojen lukumäärä\n"
+
+#: readelf.c:4896
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Lippuavaimet:\n"
+" W (kirjoita), A (varaa), X (suorita), M (lomita), S (merkkijonot), l (large)\n"
+" I (tiedot), L (linkitysjärjestys), G (ryhmä), T (TLS), E (sulje pois), x (tuntematon)\n"
+" O (vaatii käyttöjärjestelmäkohtaista lisäkäsittelyä) o (Käyttöjärjestelmäkohtainen),\n"
+" p (suoritinkohtainen)\n"
+
+#: readelf.c:4901
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Lippuavaimet:\n"
+" W (kirjoita), A (varaa), X (suorita), M (lomita), S (merkkijonot)\n"
+" I (tiedot), L (linkitysjärjestys), G (ryhmä), T (TLS), E (sulje pois), x (tuntematon)\n"
+" O (vaatii käyttöjärjestelmäkohtaista lisäkäsittelyä) o (Käyttöjärjestelmäkohtainen),\n"
+" p (suoritinkohtainen)\n"
+
+#: readelf.c:4923
+#, c-format
+msgid "[<unknown>: 0x%x] "
+msgstr "[<tuntematon>: 0x%x] "
+
+#: readelf.c:4949
+#, c-format
+msgid ""
+"\n"
+"There are no sections to group in this file.\n"
+msgstr ""
+"\n"
+"Tässä tiedostossa ei ole lohkoja ryhmille.\n"
+
+#: readelf.c:4956
+msgid "Section headers are not available!\n"
+msgstr "Lohko-otsakkeita ei ole saatavilla!\n"
+
+#: readelf.c:4980
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"Tässä tiedostossa ei ole lohkoryhmiä.\n"
+
+# The sh_link field of this section contains the index of the associated SHT_SYMTAB
+#: readelf.c:5018
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "Virheellinen sh_link-kenttä ryhmälohkossa â€%sâ€\n"
+
+#: readelf.c:5032
+#, c-format
+msgid "Corrupt header in group section `%s'\n"
+msgstr "Rikkoutunut otsake ryhmälohkossa â€%sâ€\n"
+
+# The sh_info field holds the section header index, which is displayed in decimal.
+#: readelf.c:5038 readelf.c:5049
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "Virheellinen sh_info-kenttä ryhmälohkossa â€%sâ€\n"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n
+#: readelf.c:5088
+msgid "section data"
+msgstr "lohkodata"
+
+#: readelf.c:5099
+#, c-format
+msgid ""
+"\n"
+"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
+msgstr ""
+"\n"
+"%sryhmälohko [%5u] â€%s†[%s] sisältää %u lohkoa:\n"
+
+#: readelf.c:5102
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [Indeksi] Nimi\n"
+
+#: readelf.c:5116
+#, c-format
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "lohko [%5u] ryhmälohkossa [%5u] > maksimilohko [%5u]\n"
+
+#: readelf.c:5125
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "lohko [%5u] ryhmälohkossa [%5u] on jo ryhmälohkossa [%5u]\n"
+
+#: readelf.c:5138
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr "lohko 0 ryhmälohkossa [%5u]\n"
+
+#: readelf.c:5205
+msgid "dynamic section image fixups"
+msgstr "dynaamiset lohkovedoskorjaukset"
+
+#: readelf.c:5217
+#, c-format
+msgid ""
+"\n"
+"Image fixups for needed library #%d: %s - ident: %lx\n"
+msgstr ""
+"\n"
+"Kuvakorjaukset tarvitulle kirjastolle #%d: %s - ident: %lx\n"
+
+#: readelf.c:5220
+#, c-format
+msgid "Seg Offset Type SymVec DataType\n"
+msgstr "Lohkosiirros Tyyppi SymVek.Tietotyyppi\n"
+
+#: readelf.c:5252
+msgid "dynamic section image relocations"
+msgstr "dynaamiset lohkovedossijoitukset"
+
+#: readelf.c:5256
+#, c-format
+msgid ""
+"\n"
+"Image relocs\n"
+msgstr ""
+"\n"
+"Vedos reloc-tietueet\n"
+
+#: readelf.c:5258
+#, c-format
+msgid "Seg Offset Type Addend Seg Sym Off\n"
+msgstr "Lohko Siirros Tyyppi Yhteenlaskettava Lohko Symbolit Siirros\n"
+
+#: readelf.c:5313
+msgid "dynamic string section"
+msgstr "dynaaminen merkkijonolohko"
+
+#: readelf.c:5414
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"’%s’ uudelleensijoituslohko siirroksessa 0x%lx sisältää %ld tavua:\n"
+
+#: readelf.c:5429
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"Tässä tiedostossa ei ole dynaamisia uudelleensijoituksia.\n"
+
+# Kolme seuraava kuuluu yhteen. Siksi ensimmäinen genetiivimuodossa.
+#: readelf.c:5453
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"Uudelleensijoituslohkon "
+
+# Kuuluu yhteen kahden edellisen kanssa.
+#: readelf.c:5460 readelf.c:5890 readelf.c:6227
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " siirroksessa 0x%lx on %lu alkiota:\n"
+
+#: readelf.c:5510
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"Tässä tiedostossa ei ole uudelleensijoituksia.\n"
+
+#: readelf.c:5648
+#, c-format
+msgid "\tUnknown version.\n"
+msgstr "\tTuntematon versio.\n"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n
+#: readelf.c:5701 readelf.c:6074
+msgid "unwind table"
+msgstr "palautustaulu"
+
+#: readelf.c:5743 readelf.c:6156 readelf.c:6415
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Ohittaa odottamattoman uudelleensijoitustyypin %s\n"
+
+# Unwind tarkoittaa ilmeisesti jonkun aikaisemman tilanteen palautusta esimerkiksi virhetilanteessa.
+#: readelf.c:5805 readelf.c:6218 readelf.c:7101 readelf.c:7148
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"Tässä tiedostossa ei ole palautuslohkoja.\n"
+
+# Unwind tarkoittaa ilmeisesti jonkun aikaisemman tilanteen palautusta esimerkiksi virhetilanteessa.
+#: readelf.c:5868
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"Ei voitu löytää palautustietolohkoja kohteelle "
+
+# Kuuluu yhteen edellisen ja seuraavan kanssa.
+#: readelf.c:5873 readelf.c:5888 readelf.c:6225
+#, c-format
+msgid "'%s'"
+msgstr "’%s’"
+
+# Unwind tarkoittaa ilmeisesti jonkun aikaisemman tilanteen palautusta esimerkiksi virhetilanteessa.
+#: readelf.c:5880
+msgid "unwind info"
+msgstr "palautustiedot"
+
+# Unwind on maaginen lohkonimi ja siksi sitä ei voi kääntää.
+#: readelf.c:5883 readelf.c:6224
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"Unwind-lohko "
+
+#: readelf.c:6333
+msgid "unwind data"
+msgstr "unwind-tiedot"
+
+#: readelf.c:6386
+#, c-format
+msgid "Skipping unexpected relocation at offset 0x%lx\n"
+msgstr "Ohittaa odottamattoman uudelleensijoituksen siirrososoitteessa 0x%lx\n"
+
+#: readelf.c:6490
+#, c-format
+msgid "[Truncated opcode]\n"
+msgstr "[Typistetty käskykoodi]\n"
+
+#: readelf.c:6534 readelf.c:6734
+#, c-format
+msgid "Refuse to unwind"
+msgstr "Kieltäytyä palauttamaan"
+
+#: readelf.c:6557
+#, c-format
+msgid " [Reserved]"
+msgstr " [Varattu]"
+
+#: readelf.c:6585
+#, c-format
+msgid " finish"
+msgstr " loppu"
+
+#: readelf.c:6590 readelf.c:6676
+#, c-format
+msgid "[Spare]"
+msgstr "[Ylimääräinen]"
+
+#: readelf.c:6697 readelf.c:6831
+#, c-format
+msgid " [unsupported opcode]"
+msgstr " [tukematon käskykoodi]"
+
+#: readelf.c:6781
+#, c-format
+msgid "pop frame {"
+msgstr "pop-kehys {"
+
+#: readelf.c:6792
+msgid "[pad]"
+msgstr "[näppäimistö]"
+
+#: readelf.c:6820
+#, c-format
+msgid "sp = sp + %ld"
+msgstr "sp = sp + %ld"
+
+#: readelf.c:6878
+#, c-format
+msgid " Personality routine: "
+msgstr " Henkilörutiini: "
+
+#: readelf.c:6896
+#, c-format
+msgid " [Truncated data]\n"
+msgstr " [Typistetyt tiedot]\n"
+
+#: readelf.c:6911
+#, c-format
+msgid " Compact model %d\n"
+msgstr " Suppea malli %d\n"
+
+#: readelf.c:6947
+#, c-format
+msgid " Restore stack from frame pointer\n"
+msgstr " Palauta pino kehysosoittimesta\n"
+
+#: readelf.c:6949
+#, c-format
+msgid " Stack increment %d\n"
+msgstr " Pinoaskelkasvatus %d\n"
+
+#: readelf.c:6950
+#, c-format
+msgid " Registers restored: "
+msgstr " Rekisterit palautettu: "
+
+#: readelf.c:6955
+#, c-format
+msgid " Return register: %s\n"
+msgstr " Paluurekisteri: %s\n"
+
+#: readelf.c:7038
+#, c-format
+msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
+msgstr "Ei voitu paikantaa â€.ARM.extabâ€-lohkoa, joka sisältää 0x%lx.\n"
+
+#: readelf.c:7107
+#, c-format
+msgid ""
+"\n"
+"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+"\n"
+"Unwind-tauluindeksi ’%s’ siirroksessa 0x%lx sisältää %lu alkiota:\n"
+
+#: readelf.c:7159
+#, c-format
+msgid "NONE\n"
+msgstr "EI MITÄÄN\n"
+
+#: readelf.c:7185
+#, c-format
+msgid "Interface Version: %s\n"
+msgstr "Rajapintaversio: %s\n"
+
+#: readelf.c:7187
+#, c-format
+msgid "<corrupt: %ld>\n"
+msgstr "<rikki: %ld>\n"
+
+#: readelf.c:7200
+#, c-format
+msgid "Time Stamp: %s\n"
+msgstr "Aikaleima: %s\n"
+
+#: readelf.c:7377 readelf.c:7423
+msgid "dynamic section"
+msgstr "dynaaminen lohko"
+
+#: readelf.c:7501
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"Tässä tiedostossa ei ole dynaamista lohkoa.\n"
+
+#: readelf.c:7539
+msgid "Unable to seek to end of file!\n"
+msgstr "Hakua ei voi suorittaa tiedoston loppuun!\n"
+
+#: readelf.c:7552
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Ei voi määritellä ladattavien symbolien lukumäärää\n"
+
+#: readelf.c:7585
+msgid "Unable to seek to end of file\n"
+msgstr "Hakua ei voi suorittaa tiedoston loppuun\n"
+
+#: readelf.c:7592
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Dynaamisen merkkijonotaulun pituutta ei voi määritellä\n"
+
+#: readelf.c:7598
+msgid "dynamic string table"
+msgstr "dynaaminen merkkijonotaulu"
+
+#: readelf.c:7635
+msgid "symbol information"
+msgstr "symbolitiedot"
+
+#: readelf.c:7660
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"Dynaaminen lohko siirroksessa 0x%lx sisältää %u alkiota:\n"
+
+#: readelf.c:7663
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " Tunniste Tyyppi Nimi/Arvo\n"
+
+#: readelf.c:7699
+#, c-format
+msgid "Auxiliary library"
+msgstr "Apukirjasto"
+
+#: readelf.c:7703
+#, c-format
+msgid "Filter library"
+msgstr "Suodatinkirjasto"
+
+#: readelf.c:7707
+#, c-format
+msgid "Configuration file"
+msgstr "Alustustiedosto"
+
+#: readelf.c:7711
+#, c-format
+msgid "Dependency audit library"
+msgstr "Riippuvuustarkastuskirjasto"
+
+#: readelf.c:7715
+#, c-format
+msgid "Audit library"
+msgstr "Tarkastuskirjasto"
+
+#: readelf.c:7733 readelf.c:7761 readelf.c:7789
+#, c-format
+msgid "Flags:"
+msgstr "Liput:"
+
+#: readelf.c:7736 readelf.c:7764 readelf.c:7791
+#, c-format
+msgid " None\n"
+msgstr "Ei mitään\n"
+
+#: readelf.c:7912
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Jaettu kirjasto: [%s]"
+
+#: readelf.c:7915
+#, c-format
+msgid " program interpreter"
+msgstr " ohjelmatulkki"
+
+# soname tarkoittanee *nix-ympäristössä dynaamisen kirjaston libxml.so.6.0.1 -tyyppistä nimeä
+#: readelf.c:7919
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "Kirjaston so-nimi: [%s]"
+
+# rpath tarkoittanee samaa kuin run-path
+#: readelf.c:7923
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "Kirjaston rpath: [%s]"
+
+#: readelf.c:7927
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "Kirjaston run-polku: [%s]"
+
+#: readelf.c:7960
+#, c-format
+msgid " (bytes)\n"
+msgstr " (tavua)\n"
+
+#: readelf.c:7990
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Tarpeeton objekti: [%s]\n"
+
+#: readelf.c:8090
+msgid "| <unknown>"
+msgstr "| <tuntematon>"
+
+#: readelf.c:8123
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Versiomäärittelylohko ’%s’ sisältää %u alkiota:\n"
+
+#: readelf.c:8126
+#, c-format
+msgid " Addr: 0x"
+msgstr " Osoite: 0x"
+
+#: readelf.c:8128 readelf.c:8246 readelf.c:8390
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr " Siirros: %#08lx Linkki: %u (%s)\n"
+
+#: readelf.c:8136
+msgid "version definition section"
+msgstr "versiomäärittelylohko"
+
+# Rev on ilmeisesti revision.
+#: readelf.c:8169
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: Rev: %d Liput: %s"
+
+#: readelf.c:8172
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " Indeksi: %d Lkm: %d "
+
+#: readelf.c:8188
+#, c-format
+msgid "Name: %s\n"
+msgstr "Nimi: %s\n"
+
+#: readelf.c:8190
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Nimi-indeksi: %ld\n"
+
+#: readelf.c:8212
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: Lähde %d: %s\n"
+
+#: readelf.c:8215
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: Lähde %d, nimi-indeksi: %ld\n"
+
+#: readelf.c:8220
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr " Versiomäärittely lohkon lopun ohitse\n"
+
+#: readelf.c:8226
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr " Versiomäärittely lohkon lopun ohitse\n"
+
+#: readelf.c:8241
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Versiotarpeet-lohko ’%s’ sisältää %u alkiota:\n"
+
+#: readelf.c:8244
+#, c-format
+msgid " Addr: 0x"
+msgstr " Osoite: 0x"
+
+# kolme msgid ylempänä on Version needs section. Ilmeisesti tässä pitäisi olla sama
+#: readelf.c:8255
+msgid "Version Needs section"
+msgstr "Versiotarve-lohko"
+
+#: readelf.c:8283
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: Versio: %d"
+
+#: readelf.c:8286
+#, c-format
+msgid " File: %s"
+msgstr " Tiedosto: %s"
+
+#: readelf.c:8288
+#, c-format
+msgid " File: %lx"
+msgstr " Tiedosto: %lx"
+
+#: readelf.c:8290
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " Lkm: %d\n"
+
+#: readelf.c:8315
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: Nimi: %s"
+
+#: readelf.c:8318
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: Nimi-indeksi: %lx"
+
+#: readelf.c:8321
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Liput: %s Versio: %d\n"
+
+# hiukan ylempänä on Version needs section. Ilmeisesti tässä pitäisi olla sama
+#: readelf.c:8334
+msgid "Missing Version Needs auxillary information\n"
+msgstr "Puuttuu Versiotarve-lisätietoja\n"
+
+# hiukan ylempänä on Version needs section. Ilmeisesti tässä pitäisi olla sama
+#: readelf.c:8340
+msgid "Missing Version Needs information\n"
+msgstr "Puuttuu Versiotarve-tietoja\n"
+
+#: readelf.c:8378
+msgid "version string table"
+msgstr "versiomerkkijonotaulu"
+
+#: readelf.c:8385
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Versiosymbolilohko ’%s’ sisältää %d alkiota:\n"
+
+#: readelf.c:8388
+#, c-format
+msgid " Addr: "
+msgstr " Osoite: "
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n
+#: readelf.c:8399
+msgid "version symbol data"
+msgstr "versiosymbolidata"
+
+# Pituus maksimissaan 9 merkkiä, "*yleinen*" on tasan 9-merkkiä. Suomennos on hiukan slanginen
+#: readelf.c:8427
+msgid " 0 (*local*) "
+msgstr " 0 (*lokaali*) "
+
+# Pituus maksimissaan 9 merkkiä, (*globaali*) on liian pitkä
+#: readelf.c:8431
+msgid " 1 (*global*) "
+msgstr " 1 (*yleinen*) "
+
+#: readelf.c:8442
+msgid "invalid index into symbol array\n"
+msgstr "virheellinen indeksi symbolitaulukkoon\n"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n
+# Viittaa Elf_External_Verneed-rakenteeseen
+#: readelf.c:8476 readelf.c:9279
+msgid "version need"
+msgstr "versiotarve"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n.
+# Viittaa Elf_External_Vernaux -rakenteeseen.
+#: readelf.c:8487
+msgid "version need aux (2)"
+msgstr "ulkoinen versiotarve (2)"
+
+#: readelf.c:8508 readelf.c:8570
+msgid "*invalid*"
+msgstr "*virheellinen*"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n.
+# Viittaa Elf_External_Verdef-rakenteeseen.
+#: readelf.c:8538 readelf.c:9357
+msgid "version def"
+msgstr "versiomäärittely"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n.
+# Viittaa Elf_External_Verdaux-rakenteeseen.
+#: readelf.c:8564 readelf.c:9379
+msgid "version def aux"
+msgstr "ulkoinen versiomäärittely"
+
+#: readelf.c:8599
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"Tästä tiedostosta ei löytynyt versiotietoja.\n"
+
+#: readelf.c:8807
+#, c-format
+msgid "<other>: %x"
+msgstr "<toinen>: %x"
+
+#: readelf.c:8869
+msgid "Unable to read in dynamic data\n"
+msgstr "Ei voi lukea dynaamista dataa\n"
+
+#: readelf.c:8919
+#, c-format
+msgid " <corrupt: %14ld>"
+msgstr " <rikki: %14ld>"
+
+#: readelf.c:8962 readelf.c:9014 readelf.c:9038 readelf.c:9068 readelf.c:9092
+msgid "Unable to seek to start of dynamic information\n"
+msgstr "Ei voi hakea dynaamisten tietojen alkua\n"
+
+#: readelf.c:8968 readelf.c:9020
+msgid "Failed to read in number of buckets\n"
+msgstr "Buckets-lukumäärän lukeminen epäonnistui\n"
+
+#: readelf.c:8974
+msgid "Failed to read in number of chains\n"
+msgstr "Ketjujen lukumäärän lukeminen epäonnistui\n"
+
+#: readelf.c:9076
+msgid "Failed to determine last chain length\n"
+msgstr "Viimeisen ketjupituuden määritteleminen epäonnistui\n"
+
+#: readelf.c:9120
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"Symbolitaulu tiedostovedokselle:\n"
+
+#: readelf.c:9122 readelf.c:9140
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Lohkolkm: Arvo Koko Tyyppi Sidonta Näkyvyys Ind Nimi\n"
+
+# Num tarkoittaa ilmeisesti number-sanaa. Bind tarkoittaa ehkä samaa kuin jossain muussa taulukossa BoundTo ?
+#: readelf.c:9124 readelf.c:9142
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Lohkolkm: Arvo Koko Tyyppi Sidnta Näkyvyys Ind Nimi\n"
+
+#: readelf.c:9138
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+"\n"
+"Symbolitaulu â€.gnu.hash†tiedostovedokselle:\n"
+
+#: readelf.c:9182
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' has a sh_entsize of zero!\n"
+msgstr ""
+"\n"
+"Symbolitaulussa ’%s’ on nolla sh_entsize-kohdetta!\n"
+
+#: readelf.c:9187
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Symbolitaulu ’%s’ sisältää %lu alkiota:\n"
+
+#: readelf.c:9192
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Num: Arvo Koko Tyyppi Sidnta Näkyvyys Ind Nimi\n"
+
+#: readelf.c:9194
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Num: Arvo Koko Tyyppi Sidnta Näkyvyys Ind Nimi\n"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n
+#: readelf.c:9249
+msgid "version data"
+msgstr "versiodata"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n
+# Viittaa Elf_External_Vernaux-rakenteeseen
+#: readelf.c:9298
+msgid "version need aux (3)"
+msgstr "ulkoinen versiotarve (3)"
+
+#: readelf.c:9332
+msgid "bad dynamic symbol\n"
+msgstr "virheellinen dynaaminen symboli\n"
+
+#: readelf.c:9404
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"Dynaamisia symbolitietoja ei ole näytettäville symboleille.\n"
+
+#: readelf.c:9416
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Bucket-luettelopituuden histogrammi (yhteensä %lu bucketista):\n"
+
+#: readelf.c:9418 readelf.c:9488
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " Pituus Numero %% kaikesta Yhteensä\n"
+
+#: readelf.c:9486
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"â€.gnu.hashâ€-bucket-luettelopituuden histogrammi (yhteensä %lu bucketista):\n"
+
+#: readelf.c:9552
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Dynaaminen info-segmentti siirroksessa 0x%lx sisältää %d alkiota:\n"
+
+#: readelf.c:9555
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr " Num: Nimi Sidotaan Liput\n"
+
+#: readelf.c:9564
+#, c-format
+msgid "<corrupt: %19ld>"
+msgstr "<rikki: %19ld>"
+
+#: readelf.c:9646
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr "Käsittelemätön MN10300 reloc-tyyppi löytyi SYM_DIFF reloc-tyypin jäljestä"
+
+#: readelf.c:9813
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr "Kolmekymmentäkaksibittisten reloc-tyyppien puuttuvaa tietoa käytetään konenumeron %d DWARF-lohkoissa\n"
+
+#: readelf.c:10138
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr "ei kyetä soveltamaan tukematonta reloc-tyyppiä %d lohkoon %s\n"
+
+#: readelf.c:10146
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "hypätään virheellisen sijoitussiirroksen 0x%lx yli lohkossa %s\n"
+
+#: readelf.c:10155
+#, c-format
+msgid "skipping invalid relocation symbol index 0x%lx in section %s\n"
+msgstr "hypätään virheellisen sijoitussiirroksen 0x%lx yli lohkossa %s\n"
+
+# Piste on tässä numeron perässä ilmaisemassa järjestyslukua
+#: readelf.c:10177
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr "hypätään odottamattoman symbolityypin %s yli %ld. sijoituksessa lohkossa %s\n"
+
+#: readelf.c:10223
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"Lohkon %s assembly-vedos\n"
+
+#: readelf.c:10244
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"Lohkossa ’%s’ ei ole vedostettavaa dataa.\n"
+
+#: readelf.c:10250
+msgid "section contents"
+msgstr "lohkosisältö"
+
+#: readelf.c:10269
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+"\n"
+"Lohkon ’%s’ merkkijonovedos:\n"
+
+#: readelf.c:10287
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " Huomaa: Tässä lohkossa on uudelleensijoituksia sitä vastaan, mutta niitä EI ole liitetty tähän vedokseen.\n"
+
+#: readelf.c:10318
+#, c-format
+msgid " No strings found in this section."
+msgstr " Tästä lohkosta ei löytynyt merkkijonoja."
+
+#: readelf.c:10340
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"Lohkon ’%s’ heksadesimaalilukuvedos:\n"
+
+#: readelf.c:10364
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " HUOMAA: Tässä lohkossa on uudelleensijoituksia sitä vastaan, mutta niitä EI ole liitetty tähän vedokseen.\n"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n
+#: readelf.c:10498
+#, c-format
+msgid "%s section data"
+msgstr "%s lohkodata"
+
+#: readelf.c:10568
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+"\n"
+"Lohkossa ’%s’ ei ole vianjäljitysdataa.\n"
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:10577
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr "lohkossa ’%s’ on NOBITS-tyyppi - sen sisältö on epäluotettava.\n"
+
+#: readelf.c:10613
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "Tunnistamaton vianjäljityslohko: %s\n"
+
+#: readelf.c:10641
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr "Lohkoa ’%s’ ei voitu vedostaa, koska sitä ei ole olemassa!\n"
+
+#: readelf.c:10682
+#, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "Lohkoa %d ei voitu vedostaa, koska sitä ei ole olemassa!\n"
+
+#: readelf.c:10860 readelf.c:10874 readelf.c:10893 readelf.c:11293
+#, c-format
+msgid "None\n"
+msgstr "Ei mitään\n"
+
+#: readelf.c:10861
+#, c-format
+msgid "Application\n"
+msgstr "Sovellus\n"
+
+#: readelf.c:10862
+#, c-format
+msgid "Realtime\n"
+msgstr "Tosiaikainen\n"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: readelf.c:10863
+#, c-format
+msgid "Microcontroller\n"
+msgstr "Mikrokontrolleri\n"
+
+#: readelf.c:10864
+#, c-format
+msgid "Application or Realtime\n"
+msgstr "Sovellus tai tosiaikainen\n"
+
+#: readelf.c:10875 readelf.c:10895 readelf.c:11347 readelf.c:11365
+#: readelf.c:11440 readelf.c:11461
+#, c-format
+msgid "8-byte\n"
+msgstr "8-tavuinen\n"
+
+#: readelf.c:10876 readelf.c:11443 readelf.c:11464
+#, c-format
+msgid "4-byte\n"
+msgstr "4-tavuinen\n"
+
+#: readelf.c:10880 readelf.c:10899
+#, c-format
+msgid "8-byte and up to %d-byte extended\n"
+msgstr "8-tavuun ja aina %d-tavuun laajennettu\n"
+
+#: readelf.c:10894
+#, c-format
+msgid "8-byte, except leaf SP\n"
+msgstr "8-tavua, paitsi sivu SP\n"
+
+#: readelf.c:10910 readelf.c:11000 readelf.c:11479
+#, c-format
+msgid "flag = %d, vendor = %s\n"
+msgstr "lippu = %d, toimittaja = %s\n"
+
+#: readelf.c:10916
+#, c-format
+msgid "True\n"
+msgstr "Tosi\n"
+
+#: readelf.c:11045 readelf.c:11231
+#, c-format
+msgid "Hard or soft float\n"
+msgstr "Laite- tai ohjelmistoliukuluku\n"
+
+#: readelf.c:11048
+#, c-format
+msgid "Hard float\n"
+msgstr "Laitteistoliukuluku\n"
+
+#: readelf.c:11051 readelf.c:11240
+#, c-format
+msgid "Soft float\n"
+msgstr "Ohjelmistoliukuluku\n"
+
+#: readelf.c:11054
+#, c-format
+msgid "Single-precision hard float\n"
+msgstr "Yksitarkkuuslaitteistoliukuluku\n"
+
+#: readelf.c:11071 readelf.c:11097
+#, c-format
+msgid "Any\n"
+msgstr "Mikä tahansa\n"
+
+#: readelf.c:11074
+#, c-format
+msgid "Generic\n"
+msgstr "Yleinen\n"
+
+#: readelf.c:11103
+#, c-format
+msgid "Memory\n"
+msgstr "Muisti\n"
+
+#: readelf.c:11234
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr "Laitteistoliukuluku (kaksoistarkkuus)\n"
+
+#: readelf.c:11237
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr "Laitteistoliukuluku (yksittäistarkkuus)\n"
+
+#: readelf.c:11243
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU)\n"
+msgstr "Laitteistoliukuluku (MIPS32r2 64-bittinen liukulukuyksikkö)\n"
+
+#: readelf.c:11326
+#, c-format
+msgid "Not used\n"
+msgstr "Ei käytetty\n"
+
+#: readelf.c:11329
+#, c-format
+msgid "2 bytes\n"
+msgstr "2 tavua\n"
+
+#: readelf.c:11332
+#, c-format
+msgid "4 bytes\n"
+msgstr "4 tavua\n"
+
+#: readelf.c:11350 readelf.c:11368 readelf.c:11446 readelf.c:11467
+#, c-format
+msgid "16-byte\n"
+msgstr "16-tavuinen\n"
+
+#: readelf.c:11383
+#, c-format
+msgid "DSBT addressing not used\n"
+msgstr "DSBT-osoitteenmuodostusta ei ole käytetty\n"
+
+#: readelf.c:11386
+#, c-format
+msgid "DSBT addressing used\n"
+msgstr "DSBT-osoitteenmuodostusta on käytetty\n"
+
+#: readelf.c:11401
+#, c-format
+msgid "Data addressing position-dependent\n"
+msgstr "Paikkariippuvainen data-osoitteenmuodostus\n"
+
+#: readelf.c:11404
+#, c-format
+msgid "Data addressing position-independent, GOT near DP\n"
+msgstr "Paikkariippumaton data-osoitteenmuodostus, GOT lähellä DP:tä\n"
+
+#: readelf.c:11407
+#, c-format
+msgid "Data addressing position-independent, GOT far from DP\n"
+msgstr "Paikkariippumaton data-osoitteenmuodostus, GOT kaukana DP:sta\n"
+
+#: readelf.c:11422
+#, c-format
+msgid "Code addressing position-dependent\n"
+msgstr "Paikkariippuvainen koodiosoitteenmuodostus\n"
+
+#: readelf.c:11425
+#, c-format
+msgid "Code addressing position-independent\n"
+msgstr "Paikkariippumaton koodiosoitteenmuodostus\n"
+
+#: readelf.c:11531
+msgid "attributes"
+msgstr "attribuutit"
+
+#: readelf.c:11552
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "VIRHE: Virheellinen lohkopituus (%d > %d)\n"
+
+#: readelf.c:11558
+#, c-format
+msgid "Attribute Section: %s\n"
+msgstr "Attribuuttilohko: %s\n"
+
+#: readelf.c:11583
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "VIRHE: Virheellinen alilohkopituus (%d > %d)\n"
+
+#: readelf.c:11595
+#, c-format
+msgid "File Attributes\n"
+msgstr "Tiedostoattribuutit\n"
+
+#: readelf.c:11598
+#, c-format
+msgid "Section Attributes:"
+msgstr "Lohkoattribuutit:"
+
+#: readelf.c:11601
+#, c-format
+msgid "Symbol Attributes:"
+msgstr "Symboliattribuutit:"
+
+#: readelf.c:11616
+#, c-format
+msgid "Unknown tag: %d\n"
+msgstr "Tuntematon tunniste: %d\n"
+
+#. ??? Do something sensible, like dump hex.
+#: readelf.c:11635
+#, c-format
+msgid " Unknown section contexts\n"
+msgstr " Tuntemattomat lohkosisällöt\n"
+
+#: readelf.c:11642
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "Tuntematon muototyyppi ’%c’\n"
+
+#: readelf.c:11693 readelf.c:11715
+msgid "<unknown>"
+msgstr "<tuntematon>"
+
+#: readelf.c:11810 readelf.c:12344
+msgid "liblist section data"
+msgstr "liblist-lohkodata"
+
+#: readelf.c:11813
+#, c-format
+msgid ""
+"\n"
+"Section '.liblist' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Lohko ’.liblist’ sisältää %lu alkiota:\n"
+
+#: readelf.c:11815
+msgid " Library Time Stamp Checksum Version Flags\n"
+msgstr " Kirjasto Aikaleima Tark.sum. Versio Liput\n"
+
+#: readelf.c:11841
+#, c-format
+msgid "<corrupt: %9ld>"
+msgstr "<rikki: %9ld>"
+
+#: readelf.c:11846
+msgid " NONE"
+msgstr " EI MITÄÄN"
+
+#: readelf.c:11897
+msgid "options"
+msgstr "valitsimet"
+
+#: readelf.c:11928
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Lohko ’%s’ sisältää %d alkiota:\n"
+
+# Virheilmoitus ennen maagisen .conflict-lohkon luontia (.conflict-lohkoa ei luoda).
+#: readelf.c:12089
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr "ristiriitaluettelo löydetty ilman dynaamista symbolitaulua\n"
+
+# conflict-lohko ?
+#: readelf.c:12106 readelf.c:12121
+msgid "conflict"
+msgstr "ristiriita"
+
+#: readelf.c:12131
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Lohko ’.conflict’ sisältää %lu alkiota:\n"
+
+# Num on ehkä numero?
+#: readelf.c:12133
+msgid " Num: Index Value Name"
+msgstr " Num: Indeksi Arvo Nimi"
+
+#: readelf.c:12145 readelf.c:12234 readelf.c:12305
+#, c-format
+msgid "<corrupt: %14ld>"
+msgstr "<rikki: %14ld>"
+
+#: readelf.c:12167
+msgid "Global Offset Table data"
+msgstr "Yleinen Siirros Taulutiedot"
+
+#: readelf.c:12171
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+"\n"
+"Ensisijainen GOT:\n"
+
+#: readelf.c:12172
+#, c-format
+msgid " Canonical gp value: "
+msgstr " Sääntöjenmukainen yleiskäyttöarvo: "
+
+#: readelf.c:12176 readelf.c:12276
+#, c-format
+msgid " Reserved entries:\n"
+msgstr " Varatut alkiot:\n"
+
+#: readelf.c:12177
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr " %*s %10s %*s Tarkoitus\n"
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12211 readelf.c:12278
+#: readelf.c:12287
+msgid "Address"
+msgstr "Osoite"
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12212
+msgid "Access"
+msgstr "Haku"
+
+#: readelf.c:12179 readelf.c:12196 readelf.c:12213 readelf.c:12278
+#: readelf.c:12288
+msgid "Initial"
+msgstr "Alustava"
+
+#: readelf.c:12181
+#, c-format
+msgid " Lazy resolver\n"
+msgstr " Lazy-ratkaisija\n"
+
+#: readelf.c:12187
+#, c-format
+msgid " Module pointer (GNU extension)\n"
+msgstr " Moduuliosoitin (GNU-laajennus)\n"
+
+#: readelf.c:12193
+#, c-format
+msgid " Local entries:\n"
+msgstr " Paikallisalkiot:\n"
+
+#: readelf.c:12209
+#, c-format
+msgid " Global entries:\n"
+msgstr " Yleisalkiot:\n"
+
+#: readelf.c:12214 readelf.c:12289
+msgid "Sym.Val."
+msgstr "Sym.Arvo"
+
+#. Note for translators: "Ndx" = abbreviated form of "Index".
+#: readelf.c:12217 readelf.c:12289
+msgid "Ndx"
+msgstr "Ndx"
+
+#: readelf.c:12217 readelf.c:12289
+msgid "Name"
+msgstr "Nimi"
+
+#: readelf.c:12271
+msgid "Procedure Linkage Table data"
+msgstr "Proseduuri Liitäntä Taulutiedot"
+
+#: readelf.c:12277
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr " %*s %*s Tarkoitus\n"
+
+#: readelf.c:12280
+#, c-format
+msgid " PLT lazy resolver\n"
+msgstr " PLT lazy -ratkaisija\n"
+
+#: readelf.c:12282
+#, c-format
+msgid " Module pointer\n"
+msgstr " Moduuliosoitin\n"
+
+#: readelf.c:12285
+#, c-format
+msgid " Entries:\n"
+msgstr " Alkiot:\n"
+
+#: readelf.c:12352
+msgid "liblist string table"
+msgstr "liblist-merkkijonotaulu"
+
+#: readelf.c:12362
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Kirjastoluettelolohko ’%s’ sisältää %lu alkiota:\n"
+
+#: readelf.c:12366
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr " Kirjasto Aikaleima Tark.sum. Versio Liput"
+
+#: readelf.c:12416
+msgid "NT_AUXV (auxiliary vector)"
+msgstr "NT_AUXV (apuvektori)"
+
+#: readelf.c:12418
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (prstatus-rakenne)"
+
+#: readelf.c:12420
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (liukulukurekistereitä)"
+
+#: readelf.c:12422
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (prpsinfo-rakenne)"
+
+# task on suomeksi tehtävä, mutta tässä tarkoitetaan ilmeisesti task (struct)-rakennetta
+#: readelf.c:12424
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (task-rakenne)"
+
+#: readelf.c:12426
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (user_xfpregs-rakenne)"
+
+#: readelf.c:12428
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr "NT_PPC_VMX (ppc Altivec-rekisterit)"
+
+#: readelf.c:12430
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr "NT_PPC_VSX (ppc VSX-rekisterit)"
+
+#: readelf.c:12432
+msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
+msgstr "NT_X86_XSTATE (x86 XSAVE laajennettu tila)"
+
+#: readelf.c:12434
+msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
+msgstr "NT_S390_HIGH_GPRS (s390 ylemmät rekisteripuoliskot)"
+
+#: readelf.c:12436
+msgid "NT_S390_TIMER (s390 timer register)"
+msgstr "NT_S390_TIMER (s390 ajastinrekisteri)"
+
+#: readelf.c:12438
+msgid "NT_S390_TODCMP (s390 TOD comparator register)"
+msgstr "NT_S390_TODCMP (s390 TOD -komparaattorirekisteri)"
+
+#: readelf.c:12440
+msgid "NT_S390_TODPREG (s390 TOD programmable register)"
+msgstr "NT_S390_TODPREG (s390 TOD ohjelmoitava rekisteri)"
+
+#: readelf.c:12442
+msgid "NT_S390_CTRS (s390 control registers)"
+msgstr "NT_S390_CTRS (s390 ohjausrekisterit)"
+
+#: readelf.c:12444
+msgid "NT_S390_PREFIX (s390 prefix register)"
+msgstr "NT_S390_PREFIX (s390 prefiksirekisteri)"
+
+#: readelf.c:12446
+msgid "NT_ARM_VFP (arm VFP registers)"
+msgstr "NT_ARM_VFP (arm VFP-rekisterit)"
+
+#: readelf.c:12448
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (pstatus-rakenne)"
+
+#: readelf.c:12450
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (liukulukurekistereitä)"
+
+#: readelf.c:12452
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (psinfo-rakenne)"
+
+#: readelf.c:12454
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (lwpstatus_t-rakenne)"
+
+#: readelf.c:12456
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (lwpsinfo_t-rakenne)"
+
+#: readelf.c:12458
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (win32_pstatus-rakenne)"
+
+#: readelf.c:12466
+msgid "NT_VERSION (version)"
+msgstr "NT_VERSION (versio)"
+
+#: readelf.c:12468
+msgid "NT_ARCH (architecture)"
+msgstr "NT_ARCH (arkkitehtuuri)"
+
+#: readelf.c:12473 readelf.c:12496 readelf.c:12575 readelf.c:12633
+#: readelf.c:12710
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "Tuntematon note-segmenttityyppi: (0x%08x)"
+
+#: readelf.c:12485
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr "NT_GNU_ABI_TAG (ABI-versiotunniste)"
+
+#: readelf.c:12487
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr "NT_GNU_HWCAP (DSO-tuettu ohjelmisto-HWCAP-tiedot)"
+
+#: readelf.c:12489
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr "NT_GNU_BUILD_ID (uniikki rakentamistunnistebittimerkkijono)"
+
+#: readelf.c:12491
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr "NT_GNU_GOLD_VERSION (kultaversio)"
+
+#: readelf.c:12509
+#, c-format
+msgid " Build ID: "
+msgstr " Rakentamistunniste: "
+
+#: readelf.c:12548
+#, c-format
+msgid " OS: %s, ABI: %ld.%ld.%ld\n"
+msgstr " Käyttöjärjestelmä: %s, ABI: %ld.%ld.%ld\n"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:12565
+msgid "NetBSD procinfo structure"
+msgstr "NetBSD procinfo-rakenne"
+
+# reg on ehkä rekisteri
+#: readelf.c:12592 readelf.c:12606
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (reg-rakenne)"
+
+# fpreg viittaa ilmeisesti floating point registers eli liukulukurekistereihin
+#: readelf.c:12594 readelf.c:12608
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (fpreg-rakenne)"
+
+#: readelf.c:12627
+msgid "NT_STAPSDT (SystemTap probe descriptors)"
+msgstr "NT_STAPSDT (SystemTap-tunnusteluselosteet)"
+
+#: readelf.c:12660
+#, c-format
+msgid " Provider: %s\n"
+msgstr " Palvelutarjoaja: %s\n"
+
+#: readelf.c:12661
+#, c-format
+msgid " Name: %s\n"
+msgstr " Nimi: %s\n"
+
+#: readelf.c:12662
+#, c-format
+msgid " Location: "
+msgstr " Sijainti: "
+
+#: readelf.c:12664
+#, c-format
+msgid ", Base: "
+msgstr ", Perusosoite: "
+
+#: readelf.c:12666
+#, c-format
+msgid ", Semaphore: "
+msgstr ", Opastin: "
+
+#: readelf.c:12669
+#, c-format
+msgid " Arguments: %s\n"
+msgstr " Argumentit: %s\n"
+
+#: readelf.c:12682
+msgid "NT_VMS_MHD (module header)"
+msgstr "NT_VMS_MHD (moduuliotsake)"
+
+#: readelf.c:12684
+msgid "NT_VMS_LNM (language name)"
+msgstr "NT_VMS_LNM (kielinimi)"
+
+#: readelf.c:12686
+msgid "NT_VMS_SRC (source files)"
+msgstr "NT_VMS_SRC (lähdetiedostot)"
+
+#: readelf.c:12690
+msgid "NT_VMS_EIDC (consistency check)"
+msgstr "NT_VMS_EIDC (johdonmukaisuustarkistus)"
+
+#: readelf.c:12692
+msgid "NT_VMS_FPMODE (FP mode)"
+msgstr "NT_VMS_FPMODE (FP-tila)"
+
+#: readelf.c:12696
+msgid "NT_VMS_IMGNAM (image name)"
+msgstr "NT_VMS_IMGNAM (vedosnimi)"
+
+#: readelf.c:12698
+msgid "NT_VMS_IMGID (image id)"
+msgstr "NT_VMS_IMGID (vedostunniste)"
+
+#: readelf.c:12700
+msgid "NT_VMS_LINKID (link id)"
+msgstr "NT_VMS_LINKID (linkitystunniste)"
+
+#: readelf.c:12702
+msgid "NT_VMS_IMGBID (build id)"
+msgstr "NT_VMS_IMGBID (rakentamistunniste)"
+
+#: readelf.c:12704
+msgid "NT_VMS_GSTNAM (sym table name)"
+msgstr "NT_VMS_GSTNAM (symbolitaulunimi)"
+
+#: readelf.c:12724
+#, c-format
+msgid " Creation date : %.17s\n"
+msgstr " Luontipäivämäärä : %.17s\n"
+
+#: readelf.c:12725
+#, c-format
+msgid " Last patch date: %.17s\n"
+msgstr " Viimeisen korjausken päivämäärä: %.17s\n"
+
+#: readelf.c:12726
+#, c-format
+msgid " Module name : %s\n"
+msgstr " Moduulinimi : %s\n"
+
+#: readelf.c:12727
+#, c-format
+msgid " Module version : %s\n"
+msgstr " Moduuliversio : %s\n"
+
+#: readelf.c:12730
+#, c-format
+msgid " Invalid size\n"
+msgstr " Virheellinen koko\n"
+
+#: readelf.c:12733
+#, c-format
+msgid " Language: %s\n"
+msgstr " Kieli: %s\n"
+
+#: readelf.c:12737
+#, c-format
+msgid " Floating Point mode: "
+msgstr " Liukulukutila: "
+
+#: readelf.c:12742
+#, c-format
+msgid " Link time: "
+msgstr " Linkitysaika: "
+
+#: readelf.c:12748
+#, c-format
+msgid " Patch time: "
+msgstr " Paikkausaika: "
+
+#: readelf.c:12754
+#, c-format
+msgid " Major id: %u, minor id: %u\n"
+msgstr " Major-tunniste: %u, minor-tunniste: %u\n"
+
+#: readelf.c:12757
+#, c-format
+msgid " Last modified : "
+msgstr " Viimeksi muokattu : "
+
+#: readelf.c:12760
+#, c-format
+msgid ""
+"\n"
+" Link flags : "
+msgstr ""
+"\n"
+" Linkitysliput : "
+
+#: readelf.c:12763
+#, c-format
+msgid " Header flags: 0x%08x\n"
+msgstr " Otsakeliput: 0x%08x\n"
+
+#: readelf.c:12765
+#, c-format
+msgid " Image id : %s\n"
+msgstr " Vedostunniste : %s\n"
+
+#: readelf.c:12769
+#, c-format
+msgid " Image name: %s\n"
+msgstr " Vedosnimi: %s\n"
+
+#: readelf.c:12772
+#, c-format
+msgid " Global symbol table name: %s\n"
+msgstr " Yleinen symbolitaulunimi: %s\n"
+
+#: readelf.c:12775
+#, c-format
+msgid " Image id: %s\n"
+msgstr " Vedostunniste: %s\n"
+
+#: readelf.c:12778
+#, c-format
+msgid " Linker id: %s\n"
+msgstr " Linkkeritunniste: %s\n"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n
+#: readelf.c:12853
+msgid "notes"
+msgstr "notes"
+
+#: readelf.c:12859
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"Notes-segmenttejä siirroksessa 0x%08lx pituudella 0x%08lx:\n"
+
+#: readelf.c:12861
+#, c-format
+msgid " %-20s %10s\tDescription\n"
+msgstr " %-20s %10s\tKuvaus\n"
+
+#: readelf.c:12861
+msgid "Owner"
+msgstr "Omistaja"
+
+#: readelf.c:12861
+msgid "Data size"
+msgstr "Data-koko"
+
+#: readelf.c:12899 readelf.c:12912
+#, c-format
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "rikkoutunut note-segmentti löytyi siirroksesta %lx kohteeseen ydin notes\n"
+
+# Tarkoittaako descsize samaa kuin description size?
+#: readelf.c:12901 readelf.c:12914
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " tyyppi:%lx, nimikoko:%08lx, kuvauskoko: %08lx\n"
+
+#: readelf.c:13010
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr "Ydintiedostossa ei ole note-segmenttejä.\n"
+
+#: readelf.c:13102
+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"
+msgstr ""
+"Tähän readelf-binaariin ei ole käännetty tukea 64-bittiselle\n"
+"datatyypille, joten 64-bittisiä ELF-tiedostoja ei voida lukea.\n"
+
+#: readelf.c:13149
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s: Tiedosto-otsakkeen lukeminen epäonnistui\n"
+
+#: readelf.c:13163
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Tiedosto: %s\n"
+
+#: readelf.c:13335
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr "%s: ei kyetä vedostamaan indeksiä, koska mitään ei löytynyt\n"
+
+#: readelf.c:13341
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr "Arkiston %s indeksi: (%ld alkiota, 0x%lx tavua symbolitaulussa)\n"
+
+#: readelf.c:13359
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr "Binaari %s sisältää:\n"
+
+#: readelf.c:13367
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr "%s: symbolitaulun loppu tavoitettiin ennen indeksin loppua\n"
+
+#: readelf.c:13378
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr "%s: symbolit jäävät indeksisymbolitauluun, mutta ilman vastaavia alkioita indeksitaulussa\n"
+
+#: readelf.c:13383
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr "%s: objektitiedostojen alkuunpaluun haku arkistossa epäonnistui\n"
+
+#: readelf.c:13466 readelf.c:13549
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr "Syötetiedosto ’%s’ ei ole luettava.\n"
+
+#: readelf.c:13488
+#, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr "%s: arkistojäsenen haku epäonnistui.\n"
+
+#: readelf.c:13567
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr "Tiedosto %s ei ole arkisto, joten sen indeksiä ei voi näyttää.\n"
+
+#: rename.c:124
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s: ei voi asettaa aikaa: %s"
+
+#. We have to clean up here.
+#: rename.c:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr "tiedoston ’%s’ nimeä ei onnistuttu muuttamaan; syy: %s"
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr "tiedostoa ’%s’ ei voitu kopioida; syy: %s "
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: binaaridataa ei ole tarpeeksi"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr "null-päätteinen unicode-merkkijono"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr "resurssi-ID"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:208
+msgid "cursor"
+msgstr "kohdistin"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr "valikko-otsake"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:255
+msgid "menuex header"
+msgstr "menuex-valikko-otsake"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:259
+msgid "menuex offset"
+msgstr "menuex-valikkosiirros"
+
+# parametri fatal-tulostukseen
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "ei-tuettu valikkoversio %d"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr "menuitem-valikkoalkio-otsake"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:396
+msgid "menuitem"
+msgstr "menuitem-valikkoalkio"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr "valintaikkunaotsake"
+
+# parametri fatal-tulostukseen
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "odottamaton DIALOGEX-versio %d"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr "valintaikkunan kirjainlajin pistekoko"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr "dialogex-valintaikkunan kirjainlajitietoja"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr "valintaikkunaohjain"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:540
+msgid "dialogex control"
+msgstr "dialogex-valintaikkunaohjain"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:569
+msgid "dialog control end"
+msgstr "valintaikkunaohjainloppu"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:581
+msgid "dialog control data"
+msgstr "valintaikkunaohjaindataa"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr "stringtable-merkkijonopituus"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:631
+msgid "stringtable string"
+msgstr "stringtable-merkkijono"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:661
+msgid "fontdir header"
+msgstr "fontdir-otsake"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:675
+msgid "fontdir"
+msgstr "fontdir"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr "fontdir-laitenimi"
+
+# alkuosa tulostukseen "%s: not enough binary data". Lainausmerkit lisätty.
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr "â€fontdir faceâ€-nimi"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:738
+msgid "accelerator"
+msgstr "accelerator-rakenne"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:797
+msgid "group cursor header"
+msgstr "ryhmäkohdistinotsake"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "odottamaton ryhmäkohdistintyyppi %d"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:816
+msgid "group cursor"
+msgstr "ryhmäkohdistin"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:852
+msgid "group icon header"
+msgstr "ryhmäkuvakeotsake"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "odottamaton ryhmäkuvaketyyppi %d"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:871
+msgid "group icon"
+msgstr "ryhmäkuvake"
+
+# parametri fatal-tulostukseen
+#: resbin.c:935 resbin.c:1173
+msgid "unexpected version string"
+msgstr "odottamaton versiomerkkijono"
+
+# parametri fatal-tulostukseen
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "versiopituus %d ei täsmää resurssipituuden %lu kanssa"
+
+# parametri fatal-tulostukseen
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr "odottamaton versiotyyppi %d"
+
+# parametri fatal-tulostukseen
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr "odottamaton kiinteä versiotietopituus %ld"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:985
+msgid "fixed version info"
+msgstr "kiinteä versiotieto"
+
+# parametri fatal-tulostukseen
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "odottamaton kiinteä versioallekirjoitus %lu"
+
+# parametri fatal-tulostukseen, versiotietoversio on hiukan tautofoninen?
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "odottamaton kiinteä versiotietoversio %lu"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:1022
+msgid "version var info"
+msgstr "version var-tiedot"
+
+# parametri fatal-tulostukseen
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr "odottamaton stringfileinfo-arvopituus %ld"
+
+#: resbin.c:1059
+msgid "version stringtable"
+msgstr "versiomerkkijonotaulu"
+
+# parametri fatal-tulostukseen
+#: resbin.c:1067
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr "odottamaton versio-stringtable-arvopituus %ld"
+
+#: resbin.c:1084
+msgid "version string"
+msgstr "versiomerkki"
+
+# parametri fatal-tulostukseen
+#: resbin.c:1101
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr "odottamaton versiomerkkijonopituus %ld != %ld + %ld"
+
+# parametri fatal-tulostukseen
+#: resbin.c:1108
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr "odottamaton versiomerkkijonopituus %ld < %ld"
+
+# parametri fatal-tulostukseen
+#: resbin.c:1133
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr "odottamaton varfileinfo-arvopituus %ld"
+
+# alkuosa tulostukseen "%s: not enough binary data"
+#: resbin.c:1152
+msgid "version varfileinfo"
+msgstr "versio varfileinfo"
+
+# parametri fatal-tulostukseen
+#: resbin.c:1167
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr "odottamaton versioarvopituus %ld"
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr "COFF-syötteeseen vaaditaan tiedostonimi"
+
+# %s -parametri sisältää COFF-syötetiedoston nimen, resource section-nimi COFF-tiedostossa on aina .rsrc
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: ei resurssilohkoa"
+
+# ensimmäinen parametri tiedostonimi, toinen parametri virhesanoma
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: osoite ei ole lukualueen sisällä"
+
+# toinen parametri viestissä "%s: %s: osoite ei ole lukualueen sisällä"
+#: rescoff.c:190
+msgid "directory"
+msgstr "hakemisto"
+
+# toinen parametri viestissä "%s: %s: osoite ei ole lukualueen sisällä"
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "nimetty hakemistorivi"
+
+# toinen parametri viestissä "%s: %s: osoite ei ole lukualueen sisällä"
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "hakemistorivin nimi"
+
+# toinen parametri viestissä "%s: %s: osoite ei ole lukualueen sisällä"
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "nimetty alihakemisto"
+
+# toinen parametri viestissä "%s: %s: osoite ei ole lukualueen sisällä"
+#: rescoff.c:255
+msgid "named resource"
+msgstr "nimetty resurssi"
+
+# toinen parametri viestissä "%s: %s: osoite ei ole lukualueen sisällä"
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "ID-hakemiston rivi"
+
+# toinen parametri viestissä "%s: %s: osoite ei ole lukualueen sisällä"
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "ID-alihakemisto"
+
+# toinen parametri viestissä "%s: %s: osoite ei ole lukualueen sisällä"
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "ID-resurssi"
+
+# fatal-tulosteen parametri
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr "resurssityyppi tuntematon"
+
+# toinen parametri viestissä "%s: %s: osoite ei ole lukualueen sisällä"
+#: rescoff.c:323
+msgid "data entry"
+msgstr "data-alkio"
+
+# toinen parametri viestissä "%s: %s: osoite ei ole lukualueen sisällä"
+#: rescoff.c:331
+msgid "resource data"
+msgstr "resurssidataa"
+
+# toinen parametri viestissä "%s: %s: osoite ei ole lukualueen sisällä"
+#: rescoff.c:336
+msgid "resource data size"
+msgstr "resurssidatakoko"
+
+# fatal-tulosteen parametri
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr "COFF-tulosteeseen vaaditaan tiedostonimi"
+
+# bfd_fatal-tulosteen parametri
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "ei voi saada BFD_RELOC_RVA-uudelleensijoitustyyppiä"
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "tilapäistä tiedostoa â€%s†ei voi avata: %s"
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "vakiotulostetta: â€%s†ei voi uudelleenohjata: %s"
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "kohdetta â€%sâ€: %s ei voi suorittaa"
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "Käytetään tilapäistä tiedostoa â€%s†lukemaan esikääntäjätuloste\n"
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "ei voi kutsua popen:ia â€%sâ€: %s"
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "Käytetään popen:ia lukemaan esikääntäjätuloste\n"
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "Yritettiin â€%sâ€\n"
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr "Käytetään â€%sâ€\n"
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr "esikäsittely epäonnistui."
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: odottamaton tiedostonloppumerkki"
+
+# fread-kutsu palautti vähemmän kuin odotettiin
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: lukeminen palautti %lu merkistä (vain) %lu"
+
+# stat on *nix-ympäristön vakiokomentoja (katso: man stat)
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "stat-kutsu ei onnistunut bittikuvaustiedostossa â€%sâ€: %s"
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "kohdistintiedosto â€%s†ei sisällä kohdistindataa"
+
+# Ensimmäinen parametri %s sisältää tiedostonimen, parametri %lu sisältää offsetin ja viimeinen %s sisältää stderror(errno)-tyyppisen virheilmoituksen.
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: fseek-kutsu kohtaan %lu epäonnistui: %s"
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr "ohje-ID vaatii DIALOGEX:n"
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr "ohjaindata vaatii DIALOGEX:n"
+
+# stat on *nix-ympäristön vakiokomentoja (katso: man stat)
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "stat-kutsu ei onnistunut kirjasintiedostossa â€%sâ€: %s"
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "kuvaketiedosto â€%s†ei sisällä kuvakedataa"
+
+# stat on *nix-ympäristön vakiokomentoja (katso: man stat)
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "stat-kutsu ei onnistunut tiedostossa â€%sâ€: %s"
+
+#: resrc.c:1958
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "ei voi avata kohdetta â€%s†tulosteeseen: %s"
+
+#: size.c:79
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr " Näyttää binaaritiedostojen sisäisten lohkojen koot\n"
+
+#: size.c:80
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr " Jos syötetiedosto(j)a ei ole annettu, a.out on oletussyötetiedostona\n"
+
+#: size.c:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+" Valitsimet ovat:\n"
+" -A|-B --format={sysv|berkeley} Valitse tulostetyyli (oletus on %s)\n"
+" -o|-d|-x --radix={8|10|16} Näytä numerot oktaali-, desimaali- tai heksadesimaalilukuna\n"
+" -t --totals Näytä kokonaiskoko (vain Berkeley)\n"
+" --common Näytä kokonaiskoot kohteille *COM* syms\n"
+" --target=<bfd-nimi> Aseta binaaritiedoston muoto\n"
+" @<tiedosto> Lue valitsimet tiedostosta <tiedosto>\n"
+" -h --help Näytä nämä tiedot\n"
+" -v --version Näytä ohjelman versio\n"
+"\n"
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "virheellinen argumentti valitsimelle --format: %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Virheellinen kantaluku: %s\n"
+
+#: srconv.c:1733
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "Muuntaa COFF-objektitiedoston SYSROFF-objektitiedostoksi\n"
+
+# COMMON on lohko,joka sisältää yleisiä symboleja, joille ei ole vielä varattu muistia.
+#: srconv.c:1734
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+" Valitsimet ovat:\n"
+" -q --quick (Vanhentunut - ei oteta huomioon)\n"
+" -n --noprescan Älä suorita selausta common-lohkojen muuntamiseksi defs-lohkoiksi\n"
+" -d --debug Näytä tietoja siitä mitä ollaan tekemässä\n"
+" @<tiedosto> Lue valitsimet tiedostosta <tiedosto>\n"
+" -h --help Näytä nämä tiedot\n"
+" -v --version Tulosta ohjelman versionumero\n"
+
+#: srconv.c:1880
+#, c-format
+msgid "unable to open output file %s"
+msgstr "ei voi avata tulostetiedostoa %s"
+
+#: stabs.c:328 stabs.c:1717
+msgid "numeric overflow"
+msgstr "numeerinen ylivuoto"
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "Virheellinen stab: %s\n"
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Varoitus: %s: %s\n"
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC-symboli ei ole funktiossa\n"
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "Liian monta N_RBRAC-symbolia\n"
+
+#: stabs.c:727
+msgid "unknown C++ encoded name"
+msgstr "tuntematon C++-koodattu nimi"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1262
+msgid "unrecognized cross reference type"
+msgstr "tunnistamaton ristiviitetyyppi"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1809
+msgid "missing index type"
+msgstr "indeksityyppi puuttuu"
+
+#: stabs.c:2129
+msgid "unknown virtual character for baseclass"
+msgstr "tuntematon virtuaalimerkki kantaluokalle"
+
+#: stabs.c:2147
+msgid "unknown visibility character for baseclass"
+msgstr "tuntematon näkyvyysmerkki kantaluokalle"
+
+#: stabs.c:2337
+msgid "unnamed $vb type"
+msgstr "nimeämätön $vb-tyyppi"
+
+#: stabs.c:2343
+msgid "unrecognized C++ abbreviation"
+msgstr "tunnistamaton C++-lyhenne"
+
+#: stabs.c:2419
+msgid "unknown visibility character for field"
+msgstr "tuntematon näkyvyysmerkki kentälle"
+
+#: stabs.c:2679
+msgid "const/volatile indicator missing"
+msgstr "const/volatile-indikaattori puuttuu"
+
+#: stabs.c:2924
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "Kohdetta â€%s†ei eheytetä\n"
+
+# N_EXCL tarkoittaa include-tiedostoa, jonka linkkeri on poistanut tarpeettomana (duplikaattina), koska se on jo määritelty kerran jossain toisessa käännösyksikössä. Se on nyt siis exclude-tiedosto, ei include-tiedosto ;-)
+#: stabs.c:3224
+msgid "Undefined N_EXCL"
+msgstr "Määrittelemätön linkkerin poistama include-tiedosto"
+
+#: stabs.c:3304
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "Tyyppitiedoston numero %d numeroalueen ulkopuolella\n"
+
+#: stabs.c:3309
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Tyyppi-indeksinumero %d numeroalueen ulkopuolella\n"
+
+#: stabs.c:3388
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "Tunnistamaton XCOFF-tyyppi %d\n"
+
+#: stabs.c:3680
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "virheellinen runneltu nimi â€%sâ€\n"
+
+#: stabs.c:3775
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "runnellussa merkkijonossa ei ole argumenttityyppejä\n"
+
+#: stabs.c:5125
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "Eheytetty nimi ei ole funktio\n"
+
+# v3 arglist viittaa stabs.c -funktioon stab_demangle_v3_arglist(...). Funktion nimessä v3 tarkoittaa ilmeisesti, että funktion struct demangle_component *arglist -argumentti järjestetään v-muotoiseksi puuksi (three -> tree). Yhden argumentin tyyppi on ei-odotettu, jolloin tulostetaan tämä tuloste.
+#: stabs.c:5167
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "Tuntematon tyyppi eheytettäessä puumuotoista argumenttiluetteloa\n"
+
+#: stabs.c:5234
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "Tunnistamaton eheytyskomponentti %d\n"
+
+#: stabs.c:5286
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "Runnellun mallinteen tulostaminen epäonnistui\n"
+
+#: stabs.c:5366
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "Ei saatu eheytettyä rakenteeseen sisältyvää tyyppiä\n"
+
+# Lähdekoodissa tutkitaan bfd_boolean -tyyppistä *pvarargs-parametriä ja jos se on NULL, niin tulostetaan alla oleva ilmoitus. Muussa tapauksessa palautetaan parametrin kautta TRUE. Boolean arvo kertoo, ottaako eheytetty metodi vaihtelevan määrän parametrejä vai ei.
+#: stabs.c:5415
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "Odottamaton eheytetty totuusarvo\n"
+
+#: stabs.c:5422
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "Tunnistamaton eheytetty rakenteeseen sisältyvä tyyppi\n"
+
+#: strings.c:186 strings.c:245
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "virheellinen kokonaislukuargumentti %s"
+
+#: strings.c:248
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr "virheellinen minimimerkkijonopituus %d"
+
+#: strings.c:651
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr " Näyttää tulostettavat merkkijonot kohteesta [tiedosto(t)] (oletuksena vakiosyöte)\n"
+
+# Tämä mahdollistaa vain Big-Endian ja Little-Endian-tavujärjestyksen määrittelyn. Middle-Endian on tuntematon.
+#: strings.c:652
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+" Valitsimet ovat:\n"
+" -a - --all Selaa koko tiedosto, ei vain datalohkoa\n"
+" -f --print-file-name Tulosta tiedostonimi ennen jokaista merkkijonoa\n"
+" -n --bytes=[numero] Paikanna & tulosta jokainen NUL-päätteinen\n"
+" -<numero> vähintään [numero] merkin sekvenssin (oletuksena 4).\n"
+" -t --radix={o,d,x} Tulosta merkkijonon paikka kantaluvulla 8, 10 tai 16\n"
+" -o Alias kohteelle --radix=o\n"
+" -T --target=<BFD-NIMI> Määrittele binaaritiedostomuoto\n"
+" -e --encoding={s,S,b,l,B,L} Valitse merkin koko ja tavujärjestystyyppi:\n"
+" s = 7-bittiä, S = 8-bittiä, {b,l} = 16-bittiä, {B,L} = 32-bittiä\n"
+" @<tiedosto> Lue valitsimet tiedostosta <tiedosto>\n"
+" -h --help Näytä nämä tiedot\n"
+" -v -V --version Tulosta ohjelman versionumero\n"
+
+#: sysdump.c:66
+msgid "*undefined*"
+msgstr "*määrittelemätön*"
+
+#: sysdump.c:137
+#, c-format
+msgid "SUM IS %x\n"
+msgstr "SUMMA ON %x\n"
+
+#: sysdump.c:503
+#, c-format
+msgid "GOT A %x\n"
+msgstr "SAATIIN %x\n"
+
+#: sysdump.c:521
+#, c-format
+msgid "WANTED %x!!\n"
+msgstr "HALUTTIIN %x!!\n"
+
+#: sysdump.c:539
+msgid "SYMBOL INFO"
+msgstr "SYMBOLITIEDOT"
+
+#: sysdump.c:557
+msgid "DERIVED TYPE"
+msgstr "JOHDETTU TYYPPI"
+
+#: sysdump.c:614
+msgid "MODULE***\n"
+msgstr "MODUULI***\n"
+
+#: sysdump.c:647
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "Tulosta luettava tulkinta SYSROFF-objektitiedostosta\n"
+
+#: sysdump.c:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Valitsimet ovat:\n"
+" -h --help Näytä nämä tiedot\n"
+" -v --version Tulosta ohjelman versionumero\n"
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "syötetiedostoa %s ei voi avata"
+
+#: version.c:36
+#, c-format
+msgid "Copyright 2011 Free Software Foundation, Inc.\n"
+msgstr "Copyright 2011 Free Software Foundation, Inc.\n"
+
+#: version.c:37
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"Tämä ohjelma on vapaa ohjelmisto; voit jakaa sitä edelleen GNU General Public License\n"
+"version 3 tai (valintasi mukaan) millä tahansa myöhäisemmän version ehtojen mukaan.\n"
+"Tällä ohjelmalla ei ehdottomasti ole mitään takuuta.\n"
+
+#: windmc.c:190
+#, c-format
+msgid "can't create %s file `%s' for output.\n"
+msgstr "ei voi luoda tiedostoa %s tulosteeseen â€%sâ€.\n"
+
+#: windmc.c:198
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr "Käyttö: %s [valitsimet] [syötetiedosto]\n"
+
+#: windmc.c:200
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianness.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+" Valitsimet ovat:\n"
+" -a --ascii_in Lue syötetiedosto ASCII-tiedostona\n"
+" -A --ascii_out Kirjoita binaarisanomat ASCII-muodossa\n"
+" -b --binprefix â€.binâ€-tiedostonimillä on â€.mc tiedostonimi_†-prefiksi ainutlaatuisuuden takaamiseksi.\n"
+" -c --customflag Aseta räätälöintiliput sanomille\n"
+" -C --codepage_in=<arvo> Aseta koodisivu luettaessa mc-tekstitiedostoa\n"
+" -d --decimal_values Tulosta arvoja tekstitiedostoon desimaalina\n"
+" -e --extension=<extension> Aseta vientiotsaketiedostossa käytetty otsakelaajennus\n"
+" -F --target <kohde> Määrittele tulostekohteen tavujärjestystyyppi.\n"
+" -h --headerdir=<hakemisto> Aseta vientihakemisto otsakkeille\n"
+" -u --unicode_in Lue syötetiedosto UTF16-tiedostona\n"
+" -U --unicode_out Kirjoita binaarisanomat UFT16-muodossa\n"
+" -m --maxlength=<arvo> Aseta sanomapituuden maksimiarvo\n"
+" -n --nullterminate Lisää automaatisesti nolla merkkijonojen päätemerkiksi\n"
+" -o --hresult_use Käytä HRESULT-määrittelyä eikä tilakoodimäärittelyä\n"
+" -O --codepage_out=<arvo> Aseta kirjoitustekstitiedoston koodisivu\n"
+" -r --rcdir=<hakemisto> Aseta vientihakemisto rc-tiedostoille\n"
+" -x --xdbg=<hakemisto> Missä luoda .dbg C include-tiedosto,\n"
+" joka kuvaa sanomatunnukset niiden symbolinimeen.\n"
+
+#: windmc.c:220
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+" -H --help Tulosta tämä ohje\n"
+" -v --verbose Kerro laveasti, mitä olet tekemässä\n"
+" -V --version Tulosta versiotiedot\n"
+
+#: windmc.c:261 windres.c:411
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: varoitus: "
+
+#: windmc.c:262
+#, c-format
+msgid "A codepage was specified switch `%s' and UTF16.\n"
+msgstr "Koodisivu oli annettu kytkin â€%s†ja UTF16.\n"
+
+#: windmc.c:263
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr "\tkoodisivuasetuksia ei oteta huomioon.\n"
+
+#: windmc.c:307
+msgid "try to add a ill language."
+msgstr "yritä lisätä sairas kieli."
+
+#: windmc.c:1116
+#, c-format
+msgid "unable to open file `%s' for input.\n"
+msgstr "ei voi avata syötetiedostoa â€%sâ€.\n"
+
+#: windmc.c:1124
+#, c-format
+msgid "unable to read contents of %s"
+msgstr "kohteen %s sisältöä ei kyetä lukemaan"
+
+#: windmc.c:1136
+msgid "input file does not seems to be UFT16.\n"
+msgstr "syötetiedosto ei tunnu olevan UFT16-muotoinen.\n"
+
+#: windres.c:216
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "ei voi avata kohdetta %s â€%sâ€: %s"
+
+#: windres.c:390
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": otaksuttiin olevan hakemisto\n"
+
+#: windres.c:402
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": otaksuttiin olevan lehti\n"
+
+#: windres.c:413
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": kaksoiskappalearvo\n"
+
+#: windres.c:563
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "tuntematon muototyyppi â€%sâ€"
+
+#: windres.c:564
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: tuetut muodot:"
+
+# Laitoin ylimääräiset lainausmerkit, jotta väliviiva erottuu selvemmin valitsinmerkistä.
+#. Otherwise, we give up.
+#: windres.c:647
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "tiedoston â€%s†tyyppiä ei voitu määritellä; käytä â€-Jâ€-valitsinta"
+
+#: windres.c:659
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Käyttö: %s [valitsimet] [syötetiedosto] [tulostetiedosto]\n"
+
+#: windres.c:661
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" --preprocessor-arg=<arg> Additional preprocessor argument\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+" Valitsimet ovat:\n"
+" -i --input=<tiedosto> Nimeä syötetiedosto\n"
+" -o --output=<tiedosto> Nimeä tulostetiedosto\n"
+" -J --input-format=<muoto> Määrittele syötemuoto\n"
+" -O --output-format=<muoto> Määrittele tulostemuoto\n"
+" -F --target=<kohde> Määrittele COFF-kohde\n"
+" --preprocessor=<ohjelma> Ohjelma, jota käytetään rc-tiedoston esikäsittelyyn\n"
+" -I --include-dir=<hakemisto> Include-hakemisto rc-tiedoston esikäsittelyssä\n"
+" -D --define <sym>[=<arvo>] Määrittele symboli SYM, kun rc-tiedostoa esikäsitellään\n"
+" -U --undefine <sym> Poista SYM-määrittely, kun rc-tiedostoa esikäsitellään\n"
+" -v --verbose Laveasti - kertoo mitä se olet tekemässä\n"
+" -c --codepage=<koodisivu> Määrittele oletuskoodisivu\n"
+" -l --language=<arvo> Aseta kieli, kun rc-tiedostoa luetaan\n"
+" --use-temp-file Käytä tilapäistä tiedostoa, ei popen:ia lukemaan\n"
+" esikääntäjätulostetta\n"
+" --no-use-temp-file Käytä popenia (oletus)\n"
+
+#: windres.c:679
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug Käännä jäsenninvianjäljitys päälle\n"
+
+#: windres.c:682
+#, 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 Älä ota huomioon rc-yhteensopivuutta\n"
+" @<tiedosto> Lue valitsimet tiedostosta <tiedosto>\n"
+" -h --help Tulosta tämä ohje\n"
+" -V --version Tulosta versiotiedot\n"
+
+#: windres.c:687
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"MUOTO on yksi muodoista rc, res tai coff ja päätellään tiedostonimi-\n"
+"tarkentimesta, jos muotoa ei ole annettu. Yksi tiedostonimi on\n"
+"syötetiedosto, ei syötetiedostoa on vakiosyöte, oletusmuoto on rc.\n"
+"Ei tulostetiedostoa on vakiotuloste, oletusmuoto rc.\n"
+
+#: windres.c:850
+msgid "invalid codepage specified.\n"
+msgstr "annettu virheellinen koodisivu.\n"
+
+#: windres.c:865
+msgid "invalid option -f\n"
+msgstr "virheellinen valitsin -f\n"
+
+#: windres.c:870
+msgid "No filename following the -fo option.\n"
+msgstr "Mikään tiedostonimi ei seuraa valitsinta -fo.\n"
+
+#: windres.c:959
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr "Valitsin -I on vanhentunut syötemuodon asetukseen, käytä sen sijaan valitsinta -J.\n"
+
+#: windres.c:1072
+msgid "no resources"
+msgstr "ei resursseja"
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup epäonnistui: %s"
+
+#: wrstabs.c:637
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: virheellinen koko %u"
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: varoitus: kentän â€%s†koko tuntematon struct-rakenteessa"
+
+#~ msgid "(%s"
+#~ msgstr "(%s"
+
+#~ msgid ",%s"
+#~ msgstr ",%s"
+
+#~ msgid ",%s)\n"
+#~ msgstr ",%s)\n"
+
+#~ msgid " o_mflag (magic): 0x%04x 0%04o\n"
+#~ msgstr " o_mflag (maaginen): 0x%04x 0%04o\n"
+
+#~ msgid " o_vstamp: 0x%04x\n"
+#~ msgstr " o_vstamp: 0x%04x\n"
+
+#~ msgid " o_tsize: 0x%08x\n"
+#~ msgstr " o_tsize: 0x%08x\n"
+
+#~ msgid " o_dsize: 0x%08x\n"
+#~ msgstr " o_dsize: 0x%08x\n"
+
+#~ msgid " o_entry: 0x%08x\n"
+#~ msgstr " o_entry: 0x%08x\n"
+
+#~ msgid " o_text_start: 0x%08x\n"
+#~ msgstr " o_text_start: 0x%08x\n"
+
+#~ msgid " o_data_start: 0x%08x\n"
+#~ msgstr " o_data_start: 0x%08x\n"
+
+#~ msgid " o_toc: 0x%08x\n"
+#~ msgstr " o_toc: 0x%08x\n"
+
+#~ msgid " o_snentry: 0x%04x\n"
+#~ msgstr " o_snentry: 0x%04x\n"
+
+#~ msgid " o_sntext: 0x%04x\n"
+#~ msgstr " o_sntext: 0x%04x\n"
+
+#~ msgid " o_sndata: 0x%04x\n"
+#~ msgstr " o_sndata: 0x%04x\n"
+
+#~ msgid " o_sntoc: 0x%04x\n"
+#~ msgstr " o_sntoc: 0x%04x\n"
+
+#~ msgid " o_snloader: 0x%04x\n"
+#~ msgstr " o_snloader: 0x%04x\n"
+
+#~ msgid " o_snbss: 0x%04x\n"
+#~ msgstr " o_snbss: 0x%04x\n"
+
+#~ msgid " o_algntext: %u\n"
+#~ msgstr " o_algntext: %u\n"
+
+#~ msgid " o_algndata: %u\n"
+#~ msgstr " o_algndata: %u\n"
+
+#~ msgid " o_modtype: 0x%04x"
+#~ msgstr " o_modtype: 0x%04x"
+
+#~ msgid " o_cputype: 0x%04x\n"
+#~ msgstr " o_cputype: 0x%04x\n"
+
+#~ msgid " o_maxstack: 0x%08x\n"
+#~ msgstr " o_maxstack: 0x%08x\n"
+
+#~ msgid " o_maxdata: 0x%08x\n"
+#~ msgstr " o_maxdata: 0x%08x\n"
+
+#~ msgid " o_debugger: 0x%08x\n"
+#~ msgstr " o_debugger: 0x%08x\n"
+
+#~ msgid " # Name paddr vaddr size scnptr relptr lnnoptr nrel nlnno\n"
+#~ msgstr " # Nimi paddr vaddr koko scnptr relptr lnnoptr nrel nlnno\n"
+
+#~ msgid "%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n"
+#~ msgstr "%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n"
+
+#~ msgid " exptr: %08x fsize: %08x lnnoptr: %08x endndx: %u\n"
+#~ msgstr " exptr: %08x fsize: %08x lnnoptr: %08x endndx: %u\n"
+
+#~ msgid " scnsym: %-8u"
+#~ msgstr " scnsym: %-8u"
+
+#~ msgid " scnlen: %08x"
+#~ msgstr " scnlen: %08x"
+
+#~ msgid " h: parm=%08x sn=%04x al: 2**%u"
+#~ msgstr " h: parm=%08x sn=%04x al: 2**%u"
+
+#~ msgid " typ: "
+#~ msgstr " tyyppi: "
+
+#~ msgid " cl: "
+#~ msgstr " cl: "
+
+#~ msgid " ftype: %02x "
+#~ msgstr " ftype: %02x "
+
+#~ msgid "fname: %.14s"
+#~ msgstr "fname: %.14s"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid " lnno: %u\n"
+#~ msgstr " lnno: %u\n"
+
+#~ msgid "vaddr sgn mod sz type symndx symbol\n"
+#~ msgstr "vaddr sgn mod sz tyyppi symndx symboli\n"
+
+#~ msgid "%08x %c %c %-2u "
+#~ msgstr "%08x %c %c %-2u "
+
+#~ msgid " %-6u "
+#~ msgstr " %-6u "
+
+#~ msgid " # value sc IFEW ty class file pa name\n"
+#~ msgstr " # arvo sc IFEW ty luokkatiedosto pa nimi\n"
+
+#~ msgid " vaddr sec sz typ sym\n"
+#~ msgstr " vaddr lohko sz tyyppi sym\n"
+
+#~ msgid " %08x %3u %c%c %2u "
+#~ msgstr " %08x %3u %c%c %2u "
+
+#~ msgid ".text"
+#~ msgstr ".text"
+
+#~ msgid ".data"
+#~ msgstr ".data"
+
+#~ msgid ".bss"
+#~ msgstr ".bss"
+
+#~ msgid "%u"
+#~ msgstr "%u"
+
+#~ msgid "lang reason sym/addr\n"
+#~ msgstr "kieli syy symboli/osoite\n"
+
+#~ msgid " %02x %02x "
+#~ msgstr " %02x %02x "
+
+#~ msgid "@%08x"
+#~ msgstr "@%08x"
+
+#~ msgid "offset len lang-id general-hash language-hash\n"
+#~ msgstr "siirros pituus kielitunniste general-hash language-hash\n"
+
+#~ msgid " version: %u, lang: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n"
+#~ msgstr " versio : %u, kieli: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n"
+
+#~ msgid " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n"
+#~ msgstr " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n"
+
+#~ msgid " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n"
+#~ msgstr " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n"
+
+#~ msgid " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n"
+#~ msgstr " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n"
+
+#~ msgid " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n"
+#~ msgstr " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n"
+
+#~ msgid " parminfo: 0x%08x\n"
+#~ msgstr " parminfo: 0x%08x\n"
+
+#~ msgid " tb_offset: 0x%08x (start=0x%08x)\n"
+#~ msgstr " tb_offset: 0x%08x (start=0x%08x)\n"
+
+#~ msgid " hand_mask_offset: 0x%08x\n"
+#~ msgstr " hand_mask_offset: 0x%08x\n"
+
+#~ msgid " CTL[%u]: %08x\n"
+#~ msgstr " CTL[%u]: %08x\n"
+
+#~ msgid " alloca reg: %u\n"
+#~ msgstr " alloca-rekisteri: %u\n"
+
+# Viimeinen %s-parametri virheilmoitukseen: Unable to seek to 0x%x for %s\n
+# Määritelty ainakin <linux/elf.h> -tiedostossa.
+#~ msgid "relocs"
+#~ msgstr "relocs"
+
+# Viimeinen %s-parametri virheilmoituksessa: Unable to seek to 0x%x for %s\n
+#~ msgid "symtab shndx"
+#~ msgstr "â€symtab shndxâ€-taululle"
+
+#~ msgid " 0x%02x "
+#~ msgstr " 0x%02x "
+
+#~ msgid " sp = sp + %d"
+#~ msgstr " sp = sp + %d"
+
+# liblist-merkkijonotaulu ?
+#~ msgid "liblist"
+#~ msgstr "liblist"
+
+#~ msgid "GOT"
+#~ msgstr "GOT"
+
+# the Global Offset Table (GOT) ja the Procedure Linkage Table (PLT)
+#~ msgid "PLT GOT"
+#~ msgstr "PLT GOT"
+
+#~ msgid ""
+#~ "\n"
+#~ "PLT GOT:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "PLT GOT:\n"
+#~ "\n"
+
+#~ msgid "\n"
+#~ msgstr "\n"
+
+#~ msgid "PT_FIRSTMACH+%d"
+#~ msgstr "PT_FIRSTMACH+%d"
+
+#~ msgid "NT_VMS_TITLE"
+#~ msgstr "NT_VMS_TITLE"
+
+#~ msgid "NT_VMS_LINKTIME"
+#~ msgstr "NT_VMS_LINKTIME"
+
+#~ msgid "NT_VMS_ORIG_DYN"
+#~ msgstr "NT_VMS_ORIG_DYN"
+
+#~ msgid "NT_VMS_PATCHTIME"
+#~ msgstr "NT_VMS_PATCHTIME"
+
+#~ msgid " FP mode: 0x%016"
+#~ msgstr " FP-tila: 0x%016"
+
+#~ msgid " Manip date : "
+#~ msgstr " Manip-päivämäärä : "
+
+#~ msgid "Usage: %s [emulation options] [--plugin <name>] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+#~ msgstr "Käyttö: %s [emulointivalitsimet] [--plugin <nimi>] [-]{dmpqrstx}[abcfilNoPsSuvV] [jäsennimi] [lukumäärä] arkistotiedosto tiedosto...\n"
+
+#~ msgid "illegal option -- %c"
+#~ msgstr "virheellinen valitsin -- %c"
+
+#~ msgid ""
+#~ "\n"
+#~ "<%s>\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "<%s>\n"
+#~ "\n"
+
+#~ msgid "Usage: %s < input_file > output_file\n"
+#~ msgstr "Käyttö: %s <syötetiedosto> tulostetiedosto\n"
+
+#~ msgid "Prints bytes from stdin in hex format.\n"
+#~ msgstr "Tulostaa tavut vakiosyötteestä heksadesimaalimuodossa.\n"
+
+#~ msgid " %d\t"
+#~ msgstr " %d\t"
+
+#~ msgid ""
+#~ "%s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s\n"
+#~ "\n"
+
+#~ msgid " %d\t"
+#~ msgstr " %d\t"
+
+#~ msgid "%s:\n"
+#~ msgstr "%s:\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "./%s:[++]\n"
+#~ msgstr ""
+#~ "\n"
+#~ "./%s:[++]\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "%s/%s:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s/%s:\n"
+
+#~ msgid "%-35s %11d %#18lx\n"
+#~ msgstr "%-35s %11d %#18lx\n"
+
+#~ msgid "%-35s %11d %#18lx[%d]\n"
+#~ msgstr "%-35s %11d %#18lx[%d]\n"
+
+#~ msgid "%s %11d %#18lx\n"
+#~ msgstr "%s %11d %#18lx\n"
+
+#~ msgid "%s %11d %#18lx[%d]\n"
+#~ msgstr "%s %11d %#18lx[%d]\n"
+
+# Tämä pitäisi oikeastaan jättää pois käännettävistä teksteistä !!
+#~ msgid " %ld %s [%s]\n"
+#~ msgstr " %ld %s [%s]\n"
+
+# Seuraava pitäisi oikeastaan jättää pois käännettävistä teksteistä.
+#~ msgid " %-18s %s\n"
+#~ msgstr " %-18s %s\n"
+
+#~ msgid "Location lists in .debug_info section aren't in ascending order!\n"
+#~ msgstr "Sijaintiluettelot .debug_info-lohkossa eivät ole nousevassa järjestyksessä!\n"
+
+#~ msgid "target `%s' ignored."
+#~ msgstr "kohde â€%s†ohitettu."
+
+#~ msgid " Pg"
+#~ msgstr " Sv"
+
+#~ msgid " (%ld)"
+#~ msgstr " (%ld)"
+
+#~ msgid "0x%02x "
+#~ msgstr "0x%02x "
+
+#~ msgid " [reserved compact index %d]\n"
+#~ msgstr " [varattu suppea indeksi %d]\n"
+
+#~ msgid " vsp = vsp - %d"
+#~ msgstr " vsp = vsp - %d"
+
+#~ msgid " vsp = r%d"
+#~ msgstr " vsp = r%d"
+
+#~ msgid "[unsupported two-byte opcode]"
+#~ msgstr "[tukematon kaksitavuinen käskykoodi]"
+
+# Seuraava pitäisi oikeastaan jättää pois käännettävistä teksteistä.
+#~ msgid " %*s %10s %*s\n"
+#~ msgstr " %*s %10s %*s\n"
+
+#~ msgid " %*s %10s %*s %*s %-7s %3s %s\n"
+#~ msgstr " %*s %10s %*s %*s %-7s %3s %s\n"
+
+#~ msgid " %*s %*s %*s %-7s %3s %s\n"
+#~ msgstr " %*s %*s %*s %-7s %3s %s\n"
+
+#~ msgid "%s %s: %s"
+#~ msgstr "%s %s: %s"
+
+# Ensimmäinen parametri errmsg_fmt, toinen parametrit errmsg_arg, kolmas parametri virhenumero muutettuna merkkijonoselitykseksi
+#~ msgid "%s:%d: %s\n"
+#~ msgstr "%s:%d: %s\n"
+
+#~ msgid "can't create %s file ,%s' for output.\n"
+#~ msgstr "ei voi luoda tiedostoa %s tulosteeseen â€%sâ€.\n"
+
+# %s on ilmeisesti tarkoitettu lainausmerkin sisään, ei pilkun ja lainausmerkin
+#~ msgid "A codepage was specified switch ,%s' and UTF16.\n"
+#~ msgstr "Koodisivu oli annettu kytkin â€%s†ja UTF16.\n"
+
+#~ msgid "unable to open file ,%s' for input.\n"
+#~ msgstr "ei voi avata syötetiedostoa â€%sâ€.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Can't uncompress section '%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ei voida poistaa lohkon ’%s’ tiivistystä.\n"
+
+#~ msgid "Copyright 2009 Free Software Foundation, Inc.\n"
+#~ msgstr "Copyright 2009 Free Software Foundation, Inc.\n"
+
+#~ msgid ""
+#~ "The section %s contains:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Lohko %s sisältää:\n"
+#~ "\n"
+
+#~ msgid "Unable to locate entry %lu in the abbreviation table\n"
+#~ msgstr "Lyhennetaulusta ei voi paikantaa alkiota %lu\n"
+
+#~ msgid " %8.8lx %8.8lx %8.8lx (base address)\n"
+#~ msgstr " %8.8lx %8.8lx %8.8lx (perusosoite)\n"
+
+#~ msgid "Range lists in .debug_info section aren't in ascending order!\n"
+#~ msgstr "Lukualueluettelot .debug_info-lohkossa eivät ole nousevassa järjestyksessä!\n"
+
+#~ msgid "set .nlmsections flags"
+#~ msgstr "aseta .nlmsections-liput"
+
+#~ msgid "can't add section '%s' - it already exists!"
+#~ msgstr "lohkoa ’%s’ ei voi lisätä - se on jo olemassa!"
+
+#~ msgid "%s: error in %s: %s"
+#~ msgstr "%s: virhe kohteessa %s: %s"
+
+#~ msgid "making"
+#~ msgstr "tehdään"
+
+#~ msgid "size"
+#~ msgstr "koko"
diff --git a/binutils-2.24/binutils/po/fr.gmo b/binutils-2.24/binutils/po/fr.gmo
new file mode 100644
index 00000000..b5e57e9b
--- /dev/null
+++ b/binutils-2.24/binutils/po/fr.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/fr.po b/binutils-2.24/binutils/po/fr.po
new file mode 100644
index 00000000..396485f0
--- /dev/null
+++ b/binutils-2.24/binutils/po/fr.po
@@ -0,0 +1,8734 @@
+# translation of binutils to French
+# Messages français pour GNU concernant binutils.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur depuis/since 1996.
+# Frédéric Marchal <fmarchal@perso.be>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils-2.22.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2011-10-25 11:20+0100\n"
+"PO-Revision-Date: 2012-07-28 13:27+0200\n"
+"Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n"
+"Language-Team: French <traduc@traduc.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Lokalize 1.4\n"
+
+#: addr2line.c:81
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Usage: %s [options] [adresses]\n"
+
+#: addr2line.c:82
+#, 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:83
+#, 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:84
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -a --addresses Show addresses\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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Make the output easier to read for humans\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\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 dans <fichier>\n"
+" -a --addresses Montrer les adresses\n"
+" -b --target=<nombfd> Sélectionner le format du fichier binaire\n"
+" -e --exe=<executable> Sélectionner le nom du fichier d'entrée (a.out par défaut)\n"
+" -i --inlines Dérouler les fonctions enlignes\n"
+" -j --section=<nom> Lire des offsets relatifs aux sections plutôt que des adresses\n"
+" -p --pretty-print Rend la sortie plus lisible pour des humains\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"
+" -h --help Afficher l'aide-mémoire\n"
+" -v --version Afficher le nom et la version du logiciel\n"
+"\n"
+
+#: addr2line.c:101 ar.c:304 ar.c:333 coffdump.c:471 dlltool.c:3938
+#: dllwrap.c:524 elfedit.c:653 nlmconv.c:1114 objcopy.c:576 objcopy.c:611
+#: readelf.c:3214 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
+#: windmc.c:228 windres.c:695
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "Rapporter toutes anomalies à %s\n"
+
+#. Note for translators: This printf is used to join the
+#. function name just printed above to the line number/
+#. file name pair that is about to be printed below. Eg:
+#.
+#. foo at 123:bar.c
+#: addr2line.c:276
+#, c-format
+msgid " at "
+msgstr " à "
+
+#. Note for translators: This printf is used to join the
+#. line number/file name pair that has just been printed with
+#. the line number/file name pair that is going to be printed
+#. by the next iteration of the while loop. Eg:
+#.
+#. 123:bar.c (inlined by) 456:main.c
+#: addr2line.c:308
+#, c-format
+msgid " (inlined by) "
+msgstr " (en ligne par) "
+
+#: addr2line.c:341
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: ne peut obtenir les adresses à partir de l'archive"
+
+#: addr2line.c:358
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr "%s: ne peut initialiser l'heure: %s"
+
+#: addr2line.c:427 nm.c:1570 objdump.c:3423
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "style d'encodage par mutilation inconnu « %s »"
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "pas d'entrée %s dans l'archive\n"
+
+#: ar.c:254
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...\n"
+msgstr "Usage: %s [options d'émulation] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <nom>] [nom-du-membre] [compteur] fichier-archive fichier...\n"
+
+#: ar.c:260
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] [count] archive-file file...\n"
+msgstr "Usage: %s [options d'émulation] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [nom-du-membre] [compteur] fichier-archive fichier...\n"
+
+#: ar.c:266
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<script-mri]\n"
+
+#: ar.c:267
+#, c-format
+msgid " commands:\n"
+msgstr " commandes:\n"
+
+#: ar.c:268
+#, 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:269
+#, 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:270
+#, 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:271
+#, 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:272
+#, 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:273
+#, c-format
+msgid " s - act as ranlib\n"
+msgstr " s - se comporte comme ranlib\n"
+
+#: ar.c:274
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - afficher le contenu de l'archive\n"
+
+#: ar.c:275
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - extraire les fichiers de l'archive\n"
+
+#: ar.c:276
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " modificateurs spécifiques de commandes:\n"
+
+#: ar.c:277
+#, 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:278
+#, 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:279
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr " [D] - utilise zéro pour les horodatages et les uid/gid\n"
+
+#: ar.c:280
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - utiliser le [compteur] du nom\n"
+
+#: ar.c:281
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - tronquer les noms des fichiers insérés\n"
+
+#: ar.c:282
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - utliser des chemins complets lors d'un appariement\n"
+
+#: ar.c:283
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - préserver les dates d'origine\n"
+
+#: ar.c:284
+#, 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:285
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " modificateurs génériques:\n"
+
+#: ar.c:286
+#, 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:287
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - créer un index d'archive (voir ranlib)\n"
+
+#: ar.c:288
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - ne pas construire une table de symboles\n"
+
+#: ar.c:289
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr " [T] - créer une archive légère\n"
+
+#: ar.c:290
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - utiliser le mode verbeux\n"
+
+#: ar.c:291
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - afficher le numéro de version\n"
+
+#: ar.c:292
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr " @<fichier_def> lire les options à partir du <fichier>\n"
+
+#: ar.c:293
+#, c-format
+msgid " --target=BFDNAME - specify the target object format as BFDNAME\n"
+msgstr " --target=NOMBFD - spécifie le format de l'objet cible comme étant NOMBFD\n"
+
+#: ar.c:295
+#, c-format
+msgid " optional:\n"
+msgstr " les options sont:\n"
+
+#: ar.c:296
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr " -plugin <p> - charge le plugin spécifié\n"
+
+#: ar.c:317
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Usage: %s [options] archive\n"
+
+#: ar.c:318
+#, 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:319
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+" Les options sont:\n"
+" @<fichier> lire les options à partir du <fichier>\n"
+
+#: ar.c:322
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr " --plugin <nom> Utilise le plugin spécifié\n"
+
+#: ar.c:325
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+" -t Met à jour l'horodatage de la carte des symboles de l'archive\n"
+" -h --help Afficher l'aide-mémoire\n"
+" -V --version Afficher le nom et la version du logiciel\n"
+
+#: ar.c:449
+msgid "two different operation options specified"
+msgstr "deux operations différentes spécifiées"
+
+#: ar.c:538 nm.c:1643
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr "désolé - ce programme a été construit sans support pour les plugins\n"
+
+#: ar.c:693
+msgid "no operation specified"
+msgstr "aucune opération spécifiée"
+
+#: ar.c:696
+msgid "`u' is only meaningful with the `r' option."
+msgstr "« u » n'a de sens qu'avec l'option « r »."
+
+#: ar.c:699
+msgid "`u' is not meaningful with the `D' option."
+msgstr "« u » n'a de sens qu'avec l'option « D »."
+
+#: ar.c:707
+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:710
+msgid "Value for `N' must be positive."
+msgstr "La valeur de « N » doit être positive."
+
+#: ar.c:724
+msgid "`x' cannot be used on thin archives."
+msgstr "«x» ne peut pas être utilisé avec des archives légères."
+
+#: ar.c:771
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "erreur interne -- cette option n'est pas implantée"
+
+#: ar.c:840
+#, c-format
+msgid "creating %s"
+msgstr "création de %s"
+
+#: ar.c:889 ar.c:943 ar.c:1272 objcopy.c:2080
+#, c-format
+msgid "internal stat error on %s"
+msgstr "erreur interne d'évaluation de %s par stat()"
+
+#: ar.c:908 ar.c:976
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s n'est pas une archive valide"
+
+#: ar.c:1034
+msgid "could not create temporary file whilst writing archive"
+msgstr "n'a pu créer le fichier temporaire pendant l'écriture de l'archive"
+
+#: ar.c:1177
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "Aucun membre ayant le nom « %s »\n"
+
+#: ar.c:1227
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "aucune entrée %s dans l'archive %s!"
+
+#: ar.c:1366
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: aucune table d'archive à mettre à jour"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "Aucune entrée %s dans l'archive.\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "Ne peut ouvrir le fichier %s\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: ne peut ouvrir l'archive de sortie %s\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: ne peut ouvrir l'archive en entrée %s\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: le fichier %s n'est pas une archive\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: aucun fichier d'archive de sortie n'a encore été spécifié\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: aucun fichier d'archive de sortie ouvert\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: ne peut ouvrir le fichier %s\n"
+
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: ne peut trouver le fichier module %s\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "L'archive actuellement ouverte est %s\n"
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: aucune archive ouverte\n"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " Pas d'options d'émulation spécifiques\n"
+
+#. Macros for common output.
+#: binemul.h:49
+#, c-format
+msgid " emulation options: \n"
+msgstr " Options d'émulation: \n"
+
+#: bucomm.c:163
+#, 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:175
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: formats concordant:"
+
+#: bucomm.c:190
+#, c-format
+msgid "Supported targets:"
+msgstr "Cibles supportés:"
+
+#: bucomm.c:192
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: cibles supportés:"
+
+#: bucomm.c:210
+#, c-format
+msgid "Supported architectures:"
+msgstr "Architectures supportées:"
+
+#: bucomm.c:212
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: architectures supportées:"
+
+#: bucomm.c:228
+msgid "big endian"
+msgstr "poids fort"
+
+#: bucomm.c:229
+msgid "little endian"
+msgstr "poids faible"
+
+#: bucomm.c:230
+msgid "endianness unknown"
+msgstr "endianness inconnue"
+
+#: bucomm.c:251
+#, c-format
+msgid ""
+"%s\n"
+" (header %s, data %s)\n"
+msgstr ""
+"%s\n"
+" (en-tête %s, données %s)\n"
+
+#: bucomm.c:407
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "Version de l'en-tête du fichier BFD %s\n"
+
+#: bucomm.c:559
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: mauvais numéro: %s"
+
+#: bucomm.c:576 strings.c:409
+#, c-format
+msgid "'%s': No such file"
+msgstr "'%s': pas de fichier comme tel"
+
+#: bucomm.c:578 strings.c:411
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "Attention: ne peut localiser « %s ». Raison: %s"
+
+#: bucomm.c:582
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "Attention: « %s » n'est pas un fichier ordinaire"
+
+#: bucomm.c:584
+#, c-format
+msgid "Warning: '%s' has negative size, probably it is too large"
+msgstr "Attention: « %s » a une taille négative, elle est probablement trop grande"
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr "# de lignes %d "
+
+#: coffdump.c:130
+#, c-format
+msgid "size %d "
+msgstr "taille %d "
+
+#: coffdump.c:135
+#, c-format
+msgid "section definition at %x size %x\n"
+msgstr "définition de section à %x taille %x\n"
+
+#: coffdump.c:141
+#, c-format
+msgid "pointer to"
+msgstr "pointeur vers"
+
+#: coffdump.c:146
+#, c-format
+msgid "array [%d] of"
+msgstr "tableau [%d] de"
+
+#: coffdump.c:151
+#, c-format
+msgid "function returning"
+msgstr "fonction retournant"
+
+#: coffdump.c:155
+#, c-format
+msgid "arguments"
+msgstr "arguments"
+
+#: coffdump.c:159
+#, c-format
+msgid "code"
+msgstr "code"
+
+#: coffdump.c:165
+#, c-format
+msgid "structure definition"
+msgstr "définition de structure"
+
+#: coffdump.c:171
+#, c-format
+msgid "structure ref to UNKNOWN struct"
+msgstr "référence de structure vers struct INCONNUE"
+
+#: coffdump.c:173
+#, c-format
+msgid "structure ref to %s"
+msgstr "référence de structure vers %s"
+
+#: coffdump.c:176
+#, c-format
+msgid "enum ref to %s"
+msgstr "référence d'enum vers %s"
+
+#: coffdump.c:179
+#, c-format
+msgid "enum definition"
+msgstr "définition d'enum"
+
+#: coffdump.c:252
+#, c-format
+msgid "Stack offset %x"
+msgstr "Décalage de pile %x"
+
+#: coffdump.c:255
+#, c-format
+msgid "Memory section %s+%x"
+msgstr "Section mémoire %s+%x"
+
+#: coffdump.c:258
+#, c-format
+msgid "Register %d"
+msgstr "Registre %d"
+
+#: coffdump.c:261
+#, c-format
+msgid "Struct Member offset %x"
+msgstr "Décalage %x du membre Struct"
+
+#: coffdump.c:264
+#, c-format
+msgid "Enum Member offset %x"
+msgstr "Décalage %x du membre Enum"
+
+#: coffdump.c:267
+#, c-format
+msgid "Undefined symbol"
+msgstr "Symbole non défini"
+
+#: coffdump.c:334
+#, c-format
+msgid "List of symbols"
+msgstr "Liste des symboles"
+
+#: coffdump.c:341
+#, c-format
+msgid "Symbol %s, tag %d, number %d"
+msgstr "Symbole %s, étiquette %d, nombre %d"
+
+#: coffdump.c:345 readelf.c:12215 readelf.c:12289
+#, c-format
+msgid "Type"
+msgstr "Type"
+
+#: coffdump.c:350
+#, c-format
+msgid "Where"
+msgstr "Où"
+
+#: coffdump.c:354
+#, c-format
+msgid "Visible"
+msgstr "Visible"
+
+#: coffdump.c:370
+msgid "List of blocks "
+msgstr "Liste des blocs "
+
+#: coffdump.c:383
+#, c-format
+msgid "vars %d"
+msgstr "vars %d"
+
+#: coffdump.c:386
+#, c-format
+msgid "blocks"
+msgstr "blocs"
+
+#: coffdump.c:404
+#, c-format
+msgid "List of source files"
+msgstr "Liste des fichiers source"
+
+#: coffdump.c:410
+#, c-format
+msgid "Source file %s"
+msgstr "Fichier source %s"
+
+#: coffdump.c:424
+#, c-format
+msgid "section %s %d %d address %x size %x number %d nrelocs %d"
+msgstr "section %s %d %d adresse %x taille %x nombre %d nrelocs %d"
+
+#: coffdump.c:449
+#, c-format
+msgid "#sources %d"
+msgstr "#sources %d"
+
+#: coffdump.c:462 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Usage: %s [options] fichier\n"
+
+#: coffdump.c:463
+#, c-format
+msgid " Print a human readable interpretation of a COFF object file\n"
+msgstr "Afficher une interprétation humainement lisible du fichier objet COFF\n"
+
+#: coffdump.c:464
+#, 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:533 srconv.c:1833 sysdump.c:710
+msgid "no input file specified"
+msgstr "Aucune fichier spécifié à l'entrée"
+
+#: cxxfilt.c:119 nm.c:269 objdump.c:281
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Rapporter toutes anomalies à %s\n"
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: aucun fichier courant"
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: aucun appel no debug_set_filename"
+
+#: debug.c:781
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: aucun appel debug_set_filename"
+
+#: debug.c:833
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: aucune fonction courante"
+
+#: debug.c:865
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: aucune fonction courante"
+
+#: debug.c:871
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: quelques blocs n'ont pas été fermés"
+
+#: debug.c:899
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: aucun bloc couratn"
+
+#: debug.c:935
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: aucun bloc courant"
+
+#: debug.c:942
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: tentative de fermeture du bloc du niveau supérieur"
+
+#: debug.c:965
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: aucune unité courante"
+
+#. FIXME
+#: debug.c:1018
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: pas implanté"
+
+#. FIXME
+#: debug.c:1029
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: pas implanté"
+
+#. FIXME.
+#: debug.c:1113
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: pas implanté"
+
+#: debug.c:1135
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: aucun fichier courant"
+
+#: debug.c:1663
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: type non supportée"
+
+#: debug.c:1840
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: aucun fichier courant"
+
+#: debug.c:1885
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: aucune fichier courant"
+
+#: debug.c:1893
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: tentative d'étiquetage additionnelle"
+
+#: debug.c:1930
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "AVERTISSEMENT: changement de taille du type de %d à %d\n"
+
+#: debug.c:1952
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: aucune unité de compilation courante"
+
+#: debug.c:2055
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: information circulaire de débogage pour %s\n"
+
+#: debug.c:2482
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: type illégal rencontré"
+
+#: dlltool.c:902 dlltool.c:928 dlltool.c:959
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "erreur interne: type de machine inconnue: %d"
+
+#: dlltool.c:1000
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Ne peut ouvrir le fichier de définition: %s"
+
+#: dlltool.c:1005
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Traitement du fichier de définition: %s"
+
+#: dlltool.c:1009
+msgid "Processed def file"
+msgstr "Traitement complété du fichier de définition"
+
+#: dlltool.c:1033
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Erreur de syntaxe dans le fichier de définition %s:%d"
+
+#: dlltool.c:1070
+#, 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:1088
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "NOM: %s base: %x"
+
+#: dlltool.c:1091 dlltool.c:1112
+msgid "Can't have LIBRARY and NAME"
+msgstr "Ne peut trouver la LIBRAIRIE et le NOM"
+
+#: dlltool.c:1109
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "LIBRAIRIE: %s base %x"
+
+#: dlltool.c:1266
+#, c-format
+msgid "VERSION %d.%d\n"
+msgstr "VERSION %d.%d\n"
+
+#: dlltool.c:1314
+#, c-format
+msgid "run: %s %s"
+msgstr "run: %s %s"
+
+#: dlltool.c:1354 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "en attente: %s"
+
+#: dlltool.c:1359 dllwrap.c:422 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "sous-processus a reçu le signal fatal %d"
+
+#: dlltool.c:1365 dllwrap.c:429 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s a terminé avec le statut %d"
+
+#: dlltool.c:1396
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "Aspirer les informations de la section %s dans %s"
+
+#: dlltool.c:1536
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Exclusion de symbole: %s"
+
+#: dlltool.c:1625 dlltool.c:1636 nm.c:1012 nm.c:1023
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: aucun symbole"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1662
+#, c-format
+msgid "Done reading %s"
+msgstr "Lecture complétée %s"
+
+#: dlltool.c:1672
+#, c-format
+msgid "Unable to open object file: %s: %s"
+msgstr "Incapable d'ouvrir le fichier objet: %s: %s"
+
+#: dlltool.c:1675
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Scrutation du fichier objet %s"
+
+#: dlltool.c:1690
+#, 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:1792
+msgid "Adding exports to output file"
+msgstr "Ajout des exports au fichier de sortie"
+
+#: dlltool.c:1844
+msgid "Added exports to output file"
+msgstr "Exports ajoutés au fichier de sortie"
+
+#: dlltool.c:1986
+#, c-format
+msgid "Generating export file: %s"
+msgstr "Génération du fichier d'exports: %s"
+
+#: dlltool.c:1991
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Incapable d'ouvrir le fichier assembleur temporaire: %s"
+
+#: dlltool.c:1994
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "Fichier temporaire ouvert: %s"
+
+#: dlltool.c:2171
+msgid "failed to read the number of entries from base file"
+msgstr "échec de lecture du nombre d'entrées dans le fichier de base"
+
+#: dlltool.c:2219
+msgid "Generated exports file"
+msgstr "Fichier d'exports généré"
+
+#: dlltool.c:2428
+#, c-format
+msgid "bfd_open failed open stub file: %s: %s"
+msgstr "échec de bfd_open lors de l'ouverture du fichier stub: %s: %s"
+
+#: dlltool.c:2432
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "Création du fichier stub: %s"
+
+#: dlltool.c:2894
+#, c-format
+msgid "bfd_open failed reopen stub file: %s: %s"
+msgstr "échec de bfd_open lors de l'ouverture du fichier stub: %s: %s"
+
+#: dlltool.c:2908 dlltool.c:2984
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "échec d'ouverture du fichier de tête temporaire: %s"
+
+#: dlltool.c:2970 dlltool.c:3050
+#, c-format
+msgid "failed to open temporary head file: %s: %s"
+msgstr "échec d'ouverture du fichier temporaire de tête: %s: %s"
+
+#: dlltool.c:3064
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "échec d'ouverture du fichier de queue temporaire: %s"
+
+#: dlltool.c:3121
+#, c-format
+msgid "failed to open temporary tail file: %s: %s"
+msgstr "échec d'ouverture du fichier temporaire de queue: %s: %s"
+
+#: dlltool.c:3143
+#, c-format
+msgid "Can't create .lib file: %s: %s"
+msgstr "Ne peut ouvrir le fichier .lib: %s: %s"
+
+#: dlltool.c:3147
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Création du fichier de librairie: %s"
+
+#: dlltool.c:3239 dlltool.c:3245
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "ne peut détruire %s: %s"
+
+#: dlltool.c:3250
+msgid "Created lib file"
+msgstr "Fichier de libraire créé"
+
+#: dlltool.c:3462
+#, c-format
+msgid "Can't open .lib file: %s: %s"
+msgstr "Ne peut ouvrir le fichier .lib: %s: %s"
+
+#: dlltool.c:3470 dlltool.c:3492
+#, c-format
+msgid "%s is not a library"
+msgstr "%s n'est pas une archive"
+
+#: dlltool.c:3510
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr "La librairie d'importation «%s» spécifie deux DLL ou plus"
+
+#: dlltool.c:3521
+#, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr "Incapable de déterminer le nom de dll pour «%s» (pas une librairie d'importation ?)"
+
+#: dlltool.c:3745
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "AVERTISSEMENT: EXPORT en duplication ignoré %s %d,%d"
+
+#: dlltool.c:3751
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr "ERREUR, EXPORT en duplication avec ordinals: %s"
+
+#: dlltool.c:3856
+msgid "Processing definitions"
+msgstr "Traitement des définitions"
+
+#: dlltool.c:3888
+msgid "Processed definitions"
+msgstr "Définitions traitées"
+
+#. xgetext:c-format
+#: dlltool.c:3895 dllwrap.c:483
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Usage %s <options> <fichiers-objet>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3897
+#, 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:3898
+#, 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:3899
+#, 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:3900
+#, 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:3901
+#, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr " -y --output-delaylib <nom-de-sortie> Générer une librairie d'importation différée.\n"
+
+#: dlltool.c:3902
+#, 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:3903
+#, 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:3904
+#, 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:3905
+#, 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:3906
+#, 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:3907
+#, 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:3908
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <liste> ne pas exporter la <liste>\n"
+
+#: dlltool.c:3909
+#, 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:3910
+#, 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:3911
+#, 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:3912
+#, 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:3913
+#, c-format
+msgid " --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"
+msgstr " --use-nul-prefixed-import-tables Utilise idata$4 et idata$5 avec un préfixe nul.\n"
+
+#: dlltool.c:3914
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr " -U --add-underscore Ajouter des soulignés aux symboles dans la librairie d'interface\n"
+
+#: dlltool.c:3915
+#, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr " --add-underscore Ajouter des soulignés aux symboles dans la librairie d'interface\n"
+
+#: dlltool.c:3916
+#, c-format
+msgid " --no-leading-underscore All symbols shouldn't be prefixed by an underscore.\n"
+msgstr " --no-leading-underscore Tous les symboles ne devraient pas être préfixés par un souligné.\n"
+
+#: dlltool.c:3917
+#, c-format
+msgid " --leading-underscore All symbols should be prefixed by an underscore.\n"
+msgstr " --leading-underscore Tous les symboles devraient être préfixés par un souligné.\n"
+
+#: dlltool.c:3918
+#, 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:3919
+#, 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:3920
+#, 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:3921
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <nom> utiliser le <nom> pour l'assembleur\n"
+
+#: dlltool.c:3922
+#, 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:3923
+#, 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:3924
+#, 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:3925
+#, 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:3926
+#, c-format
+msgid " -I --identify <implib> Report the name of the DLL associated with <implib>.\n"
+msgstr " -I --identify <implib> Rapporte le nom de la DLL associée à <implib>.\n"
+
+#: dlltool.c:3927
+#, c-format
+msgid " --identify-strict Causes --identify to report error when multiple DLLs.\n"
+msgstr " --identify-strict Rapporte des erreurs quand --identify détecte des DLL multiples.\n"
+
+#: dlltool.c:3928
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose passer en mode bavard\n"
+
+#: dlltool.c:3929
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version afficher le nom et la version du logiciel\n"
+
+#: dlltool.c:3930
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help afficher l'aide-mémoire\n"
+
+#: dlltool.c:3931
+#, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr " @<fichier> lire les options à partir du <fichier>\n"
+
+#: dlltool.c:3933
+#, 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:3934
+#, 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:3935
+#, 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:4082
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr "Composants du chemin ont été éliminés du nom dll '%s'."
+
+#: dlltool.c:4130
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Incapable d'ouvrir le fichier de base: %s"
+
+#: dlltool.c:4165
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Machine « %s » n'est pas supportée"
+
+#: dlltool.c:4245
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr "Avertissement, le type de machine (%d) n'est pas supporté par «delayimport»."
+
+#: dlltool.c:4313 dllwrap.c:213
+#, c-format
+msgid "Tried file: %s"
+msgstr "Essai avec le fichier: %s"
+
+#: dlltool.c:4320 dllwrap.c:220
+#, c-format
+msgid "Using file: %s"
+msgstr "Utilisation du fichier: %s"
+
+#: dllwrap.c:303
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "Conservation temportaire du fichier de base %s"
+
+#: dllwrap.c:305
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "Destruction du fichier de base temporaire %s"
+
+#: dllwrap.c:319
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "Conservation du fichier temporaire exp %s"
+
+#: dllwrap.c:321
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "Destruction du fichier exp temporaire %s"
+
+#: dllwrap.c:334
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Conservation du fichier temporaire def %s"
+
+#: dllwrap.c:336
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "Destruction du fichier temporaire def %s"
+
+#: dllwrap.c:417
+#, c-format
+msgid "pwait returns: %s"
+msgstr "pwait retourne: %s"
+
+#: dllwrap.c:484
+#, c-format
+msgid " Generic options:\n"
+msgstr " Option génériques:\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr " @<fichier> lire les options à partir du <fichier>\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q travailler silencieusement\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v travailler en mode bavard\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version afficher la version du dllwrap\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <outname> identique à --output-lib\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Options pour %s:\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <pilote> par défaut « gcc »\n"
+
+#: dllwrap.c:492
+#, 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:493
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <outil-dll> par défaut « dlltool »\n"
+
+#: dllwrap.c:494
+#, 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:495
+#, 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:496
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <machine> i386-cygwin32 ou i386-mingw32\n"
+
+#: dllwrap.c:497
+#, 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:498
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin créer une DLL de type Mingw\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " Options relayées à DLLTOOL:\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <machine>\n"
+
+#: dllwrap.c:501
+#, 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:502
+#, 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:503
+#, 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:504
+#, 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:505
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <fichier_def> nom du fichier d'entrée .def\n"
+
+#: dllwrap.c:506
+#, 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:507
+#, 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:508
+#, 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:509
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <liste> exclure la <liste> de .def\n"
+
+#: dllwrap.c:510
+#, 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:511
+#, 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:512
+#, 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:513
+#, 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:514
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U ajouter des soulignés au fichier .lib\n"
+
+#: dllwrap.c:515
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k stopper @<n> à partir des noms exportés\n"
+
+#: dllwrap.c:516
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias ajouter les aliases sans @<n>\n"
+
+#: dllwrap.c:517
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <nom> utiliser <nom> comme assembleur\n"
+
+#: dllwrap.c:518
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete conserver les fichiers temporaires.\n"
+
+#: dllwrap.c:519
+#, c-format
+msgid " --no-leading-underscore Entrypoint without underscore\n"
+msgstr " --no-leading-underscore Point d'entrée sans souligné\n"
+
+#: dllwrap.c:520
+#, c-format
+msgid " --leading-underscore Entrypoint with underscore.\n"
+msgstr " --leading-underscore Point d'entrée avec souligné.\n"
+
+#: dllwrap.c:521
+#, 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:805
+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:834
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"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:1023
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "OUTILDLL nom : %s\n"
+
+#: dllwrap.c:1024
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "OUTILDLL options : %s\n"
+
+#: dllwrap.c:1025
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "PILOTE name : %s\n"
+
+#: dllwrap.c:1026
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "PILOTE options : %s\n"
+
+#: dwarf.c:132
+msgid "Wrong size in print_dwarf_vma"
+msgstr "Mauvaise taille dans print_dwarf_vma"
+
+#: dwarf.c:256 dwarf.c:3027
+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:263
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " Code op étendu %d: "
+
+#: dwarf.c:268
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Fin de séquence\n"
+"\n"
+
+#: dwarf.c:274
+#, c-format
+msgid "set Address to 0x%s\n"
+msgstr "initialisé l'adresse à 0x%s\n"
+
+#: dwarf.c:280
+#, c-format
+msgid " define new File Table entry\n"
+msgstr " définir une entrée pour un nouveau fichier de table\n"
+
+#: dwarf.c:281 dwarf.c:2555
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Entrée\tRép.\tDate\tTaille\tNom\n"
+
+#: dwarf.c:295
+#, c-format
+msgid "set Discriminator to %s\n"
+msgstr "initialise le « Discriminator » à %s\n"
+
+#: dwarf.c:370
+#, c-format
+msgid " UNKNOWN DW_LNE_HP_SFC opcode (%u)\n"
+msgstr " opcode DW_LNE_HP_SFC INCONNU (%u)\n"
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:387
+#, c-format
+msgid "user defined: "
+msgstr "défini par l'usager: "
+
+#: dwarf.c:389
+#, c-format
+msgid "UNKNOWN: "
+msgstr "UNKNOWN: "
+
+#: dwarf.c:390
+#, c-format
+msgid "length %d ["
+msgstr "longueur %d ["
+
+#: dwarf.c:407
+msgid "<no .debug_str section>"
+msgstr "<aucune section .debug_str>"
+
+#: dwarf.c:413
+#, c-format
+msgid "DW_FORM_strp offset too big: %s\n"
+msgstr "décalage DW_FORM_strp est trop grand: %s\n"
+
+#: dwarf.c:415
+msgid "<offset is too big>"
+msgstr "<décalage trop grand>"
+
+#: dwarf.c:655
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Valeur d'étiquette (« TAG ») inconnue: %lx"
+
+#: dwarf.c:696
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Valeur FORM inconnue: %lx"
+
+#: dwarf.c:705
+#, c-format
+msgid " %s byte block: "
+msgstr " %s bloc d'octets: "
+
+#: dwarf.c:1050
+#, c-format
+msgid "(DW_OP_call_ref in frame info)"
+msgstr "(DW_OP_call_ref dans l'info de trame)"
+
+#: dwarf.c:1075
+#, c-format
+msgid "size: %s "
+msgstr "taille: %s "
+
+#: dwarf.c:1078
+#, c-format
+msgid "offset: %s "
+msgstr "offset: %s "
+
+#: dwarf.c:1098
+#, c-format
+msgid "DW_OP_GNU_push_tls_address or DW_OP_HP_unknown"
+msgstr "DW_OP_GNU_push_tls_address ou DW_OP_HP_unknown"
+
+#: dwarf.c:1122
+#, c-format
+msgid "(DW_OP_GNU_implicit_pointer in frame info)"
+msgstr "(DW_OP_GNU_implicit_pointer dans l'info de trame)"
+
+#: dwarf.c:1234
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Op de localisation défini par l'usager)"
+
+#: dwarf.c:1236
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Op de localisation inconnu)"
+
+#: dwarf.c:1283
+msgid "Internal error: DWARF version is not 2, 3 or 4.\n"
+msgstr "Erreur interne: version DWARF n'est ni 2, 3 ou 4.\n"
+
+#: dwarf.c:1389
+msgid "DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"
+msgstr "DW_FORM_data8 n'est pas supporté lorsque sizeof (dwarf_vma) != 8\n"
+
+#: dwarf.c:1439
+#, c-format
+msgid " (indirect string, offset: 0x%s): %s"
+msgstr " (chaîne indirecte, décalage: 0x%s): %s"
+
+#: dwarf.c:1464
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Forme non reconnue: %lu\n"
+
+#: dwarf.c:1557
+#, c-format
+msgid "(not inlined)"
+msgstr "(pas en ligne)"
+
+#: dwarf.c:1560
+#, c-format
+msgid "(inlined)"
+msgstr "(en ligne)"
+
+#: dwarf.c:1563
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(déclaré comme en ligne mais ignoré)"
+
+#: dwarf.c:1566
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(déclaré comme en-ligne et en-ligné"
+
+#: dwarf.c:1569
+#, c-format
+msgid " (Unknown inline attribute value: %s)"
+msgstr " (valeur d'attribut en ligne inconnue: %s)"
+
+#: dwarf.c:1608
+#, c-format
+msgid "(implementation defined: %s)"
+msgstr "(défini par l'implémentation: %s)"
+
+#: dwarf.c:1611
+#, c-format
+msgid "(Unknown: %s)"
+msgstr "(inconnu: %s)"
+
+#: dwarf.c:1649
+#, c-format
+msgid "(user defined type)"
+msgstr "(défini par l'utilisateur)"
+
+#: dwarf.c:1651
+#, c-format
+msgid "(unknown type)"
+msgstr "(type inconnu)"
+
+#: dwarf.c:1663
+#, c-format
+msgid "(unknown accessibility)"
+msgstr "(accessibilité inconnue)"
+
+#: dwarf.c:1674
+#, c-format
+msgid "(unknown visibility)"
+msgstr "(visibilité inconnue)"
+
+#: dwarf.c:1684
+#, c-format
+msgid "(unknown virtuality)"
+msgstr "(virtualité inconnue)"
+
+#: dwarf.c:1695
+#, c-format
+msgid "(unknown case)"
+msgstr "(cas inconnu)"
+
+#: dwarf.c:1708
+#, c-format
+msgid "(user defined)"
+msgstr "(défini par l'utilisateur)"
+
+#: dwarf.c:1710
+#, c-format
+msgid "(unknown convention)"
+msgstr "(convention inconnue)"
+
+#: dwarf.c:1717
+#, c-format
+msgid "(undefined)"
+msgstr "(non défini)"
+
+#: dwarf.c:1740
+#, c-format
+msgid "(location list)"
+msgstr "(liste de localisation)"
+
+#: dwarf.c:1761 dwarf.c:4045
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [sans DW_AT_frame_base]"
+
+#: dwarf.c:1777
+#, c-format
+msgid "Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr "L'offset %s utilisé comme valeur pour l'attribut DW_AT_import de DIE à l'offset %lx est trop grand.\n"
+
+#: dwarf.c:1787
+#, c-format
+msgid "[Abbrev Number: %ld"
+msgstr "[Numéro d'abréviation: %ld"
+
+#: dwarf.c:1978
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Valeur AT inconnue: %lx"
+
+#: dwarf.c:2049
+#, c-format
+msgid "Reserved length value (0x%s) found in section %s\n"
+msgstr "La longueur réservée (0x%s) a été trouvée dans la section %s\n"
+
+#: dwarf.c:2061
+#, c-format
+msgid "Corrupt unit length (0x%s) found in section %s\n"
+msgstr "Longueur d'unité corrompue (0x%s) dans la section %s\n"
+
+#: dwarf.c:2069
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "Pas d'unités de comptabilisation dans la section %s ?"
+
+#: dwarf.c:2078
+#, 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:2087 dwarf.c:3296 dwarf.c:3390 dwarf.c:3551 dwarf.c:3779
+#: dwarf.c:3911 dwarf.c:4081 dwarf.c:4150 dwarf.c:4354
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Contenue de la section %s:\n"
+"\n"
+
+#: dwarf.c:2095
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Incapable de localiser la section %s!\n"
+
+#: dwarf.c:2176
+#, c-format
+msgid " Compilation Unit @ offset 0x%s:\n"
+msgstr " Unité de compilation @ décalée de 0x%s:\n"
+
+#: dwarf.c:2178
+#, c-format
+msgid " Length: 0x%s (%s)\n"
+msgstr " Longueur: 0x%s (%s)\n"
+
+#: dwarf.c:2181
+#, c-format
+msgid " Version: %d\n"
+msgstr " Version: %d\n"
+
+#: dwarf.c:2182
+#, c-format
+msgid " Abbrev Offset: %s\n"
+msgstr " Décalage abrégé: %s\n"
+
+#: dwarf.c:2184
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Taille des pointeurs: %d\n"
+
+#: dwarf.c:2188
+#, c-format
+msgid " Signature: "
+msgstr " Signature: "
+
+#: dwarf.c:2192
+#, c-format
+msgid " Type Offset: 0x%s\n"
+msgstr " Offset de type: 0x%s\n"
+
+#: dwarf.c:2200
+#, c-format
+msgid "Debug info is corrupted, length of CU at %s extends beyond end of section (length = %s)\n"
+msgstr "L'information de debug est corrompue, la longueur du CU à %s s'étend au delà de la fin de la section (longueur = %s)\n"
+
+#: dwarf.c:2213
+#, c-format
+msgid "CU at offset %s contains corrupt or unsupported version number: %d.\n"
+msgstr "CU à l'offset %s contient un numéro de version corrompu ou non supporté: %d.\n"
+
+#: dwarf.c:2224
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr "L'information de debug est corrompue, l'offset «abbrev» (%lx) est plus grand que la taille de la section «abbrev» (%lx)\n"
+
+#: dwarf.c:2274
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr "Mauvais marqueur «end-of-siblings» détecté à l'offset %lx dans la section .debug_info\n"
+
+#: dwarf.c:2278
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr "Ceci est le seul avertissement qui sera émis pour de mauvais marqueurs «end-of-siblings»\n"
+
+#: dwarf.c:2297
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr " <%d><%lx>: Numéro d'abréviation: %lu"
+
+#: dwarf.c:2301
+#, c-format
+msgid " <%d><%lx>: ...\n"
+msgstr " <%d><%lx>: ...\n"
+
+#: dwarf.c:2320
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr "DIE à l'offset %lx renvoie à l'abréviation numéro %lu qui n'existe pas\n"
+
+#: dwarf.c:2422
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Vidange du contenu de débug de la section %s:\n"
+"\n"
+
+#: dwarf.c:2460
+#, c-format
+msgid "The information in section %s appears to be corrupt - the section is too small\n"
+msgstr "L'information de la section %s semble corrompue - la section est trop petite\n"
+
+#: dwarf.c:2472 dwarf.c:2840
+msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
+msgstr "Seule la ligne d'info des versions 2, 3 et 4 de DWARF est actuellement supportée.\n"
+
+#: dwarf.c:2486 dwarf.c:2855
+msgid "Invalid maximum operations per insn.\n"
+msgstr "Nombre maximum d'opérations par insn.\n"
+
+#: dwarf.c:2505 dwarf.c:3574
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr " Offset: 0x%lx\n"
+
+#: dwarf.c:2506
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Longueur: %ld\n"
+
+#: dwarf.c:2507
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " Version DWARF: %d\n"
+
+#: dwarf.c:2508
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " Longueur du prologue: %d\n"
+
+#: dwarf.c:2509
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " Longueur minimale des instructions: %d\n"
+
+#: dwarf.c:2511
+#, c-format
+msgid " Maximum Ops per Instruction: %d\n"
+msgstr " Maximum d'Ops par Instruction: %d\n"
+
+#: dwarf.c:2512
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " Valeur initiale de « is_stmt »: %d\n"
+
+#: dwarf.c:2513
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " Ligne de base: %d\n"
+
+#: dwarf.c:2514
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " Ligne d'étendue: %d\n"
+
+#: dwarf.c:2515
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " Code op Base: %d\n"
+
+#: dwarf.c:2524
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Codes op:\n"
+
+#: dwarf.c:2527
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " Code op %d a %d arguments\n"
+
+#: dwarf.c:2533
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" La table des répertoires est vide.\n"
+
+#: dwarf.c:2536
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" La table des répertoire:\n"
+
+#: dwarf.c:2551
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" La talbe des noms de fichiers est vide.\n"
+
+#: dwarf.c:2554
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" La table des noms de fichiers:\n"
+
+#. Now display the statements.
+#: dwarf.c:2584
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Numéro de ligne des déclarations:\n"
+
+#: dwarf.c:2603
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s"
+msgstr " Op code spécial %d: devance l'Adresse par %s à 0x%s"
+
+#: dwarf.c:2617
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s[%d]"
+msgstr " Op code spécial %d: devance l'Adresse par %s à 0x%s[%d]"
+
+#: dwarf.c:2625
+#, c-format
+msgid " and Line by %s to %d\n"
+msgstr " et Ligne par %s à %d\n"
+
+#: dwarf.c:2635
+#, c-format
+msgid " Copy\n"
+msgstr " Copie\n"
+
+#: dwarf.c:2645
+#, c-format
+msgid " Advance PC by %s to 0x%s\n"
+msgstr " Avancer le compteur PC de %s à 0x%s\n"
+
+#: dwarf.c:2658
+#, c-format
+msgid " Advance PC by %s to 0x%s[%d]\n"
+msgstr " Avancer le compteur PC de %s à 0x%s[%d]\n"
+
+#: dwarf.c:2669
+#, c-format
+msgid " Advance Line by %s to %d\n"
+msgstr " Avancer la ligne de %s à %d\n"
+
+#: dwarf.c:2677
+#, c-format
+msgid " Set File Name to entry %s in the File Name Table\n"
+msgstr " Initialisé le nom du fichier à l'entrée %s dans la table des noms de fichiers\n"
+
+#: dwarf.c:2685
+#, c-format
+msgid " Set column to %s\n"
+msgstr " Initialiser la colonne à %s\n"
+
+#: dwarf.c:2693
+#, c-format
+msgid " Set is_stmt to %s\n"
+msgstr " Initialisé is_stmt avec %s\n"
+
+#: dwarf.c:2698
+#, c-format
+msgid " Set basic block\n"
+msgstr " Initialisé le bloc de base\n"
+
+#: dwarf.c:2708
+#, c-format
+msgid " Advance PC by constant %s to 0x%s\n"
+msgstr " Avancer le compteur PC par une constante de %s à 0x%s\n"
+
+#: dwarf.c:2721
+#, c-format
+msgid " Advance PC by constant %s to 0x%s[%d]\n"
+msgstr " Avancer le compteur PC par une constante de %s à 0x%s[%d]\n"
+
+#: dwarf.c:2733
+#, c-format
+msgid " Advance PC by fixed size amount %s to 0x%s\n"
+msgstr " Avancer le compteur PC par une taille fixe de %s à 0x%s\n"
+
+#: dwarf.c:2739
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr " Initialiser prologue_end à VRAI\n"
+
+#: dwarf.c:2743
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr " Initialiser epilogue_begin à VRAI\n"
+
+#: dwarf.c:2749
+#, c-format
+msgid " Set ISA to %s\n"
+msgstr " Initialiser ISA à %s\n"
+
+#: dwarf.c:2753 dwarf.c:3168
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr " opcode inconnu %d avec les opérandes:"
+
+#: dwarf.c:2787
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Vidange du contenu de débug de la section %s:\n"
+"\n"
+
+#: dwarf.c:2828
+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:2960
+#, c-format
+msgid "CU: %s:\n"
+msgstr "CU: %s:\n"
+
+#: dwarf.c:2961 dwarf.c:2972
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr "Nom fichier Num ligne Adresse début\n"
+
+#: dwarf.c:2968
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr "CU: %s/%s:\n"
+
+#: dwarf.c:3059
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "UNKNOWN: longueur %d\n"
+
+#: dwarf.c:3164
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr " Initialiser ISA à %lu\n"
+
+#: dwarf.c:3330 dwarf.c:4195
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr "L'offset «.debug_info» de 0x%lx dans la section %s ne pointe pas vers un en-tête CU.\n"
+
+#: dwarf.c:3344
+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:3351
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Longueur: %ld\n"
+
+#: dwarf.c:3353
+#, c-format
+msgid " Version: %d\n"
+msgstr " Version: %d\n"
+
+#: dwarf.c:3355
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr " Décalage dans la section .debug_info:0x%lx\n"
+
+#: dwarf.c:3357
+#, 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:3360
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" Décalage\tNom\n"
+
+#: dwarf.c:3411
+#, 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:3417
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:3425
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - no de ligne : %d macro : %s\n"
+
+#: dwarf.c:3434
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - no de ligne : %d macro : %s\n"
+
+#: dwarf.c:3446
+#, 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:3566
+#, c-format
+msgid "Only GNU extension to DWARF 4 of %s is currently supported.\n"
+msgstr "Seule les extensions GNU à DWARF 4 de %s sont actuellement supportées.\n"
+
+#: dwarf.c:3576
+#, c-format
+msgid " Version: %d\n"
+msgstr " Version: %d\n"
+
+#: dwarf.c:3577
+#, c-format
+msgid " Offset size: %d\n"
+msgstr " Taille décalage: %d\n"
+
+#: dwarf.c:3582
+#, c-format
+msgid " Offset into .debug_line: 0x%lx\n"
+msgstr " Décalage dans .debug_line: 0x%lx\n"
+
+#: dwarf.c:3593
+#, c-format
+msgid " Extension opcode arguments:\n"
+msgstr " Arguments opcode d'extension:\n"
+
+#: dwarf.c:3601
+#, c-format
+msgid " DW_MACRO_GNU_%02x has no arguments\n"
+msgstr " DW_MACRO_GNU_%02x n'a pas argument\n"
+
+#: dwarf.c:3604
+#, c-format
+msgid " DW_MACRO_GNU_%02x arguments: "
+msgstr " Arguments DW_MACRO_GNU_%02x: "
+
+#: dwarf.c:3628
+#, c-format
+msgid "Invalid extension opcode form %s\n"
+msgstr "Opcode d'extension invalide de %s\n"
+
+#: dwarf.c:3645
+msgid ".debug_macro section not zero terminated\n"
+msgstr "section .debug_macro pas terminée par un zéro\n"
+
+#: dwarf.c:3666
+msgid "DW_MACRO_GNU_start_file used, but no .debug_line offset provided.\n"
+msgstr "DW_MACRO_GNU_start_file utilisé, mais aucun décalage .debug_line fourni.\n"
+
+#: dwarf.c:3672
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACRO_GNU_start_file - numligne: %d numfichier: %d\n"
+
+#: dwarf.c:3675
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d filename: %s%s%s\n"
+msgstr " DW_MACRO_GNU_start_file - numligne: %d numfichier: %d nomfichier: %s%s%s\n"
+
+#: dwarf.c:3683
+#, c-format
+msgid " DW_MACRO_GNU_end_file\n"
+msgstr " DW_MACRO_GNU_end_file\n"
+
+#: dwarf.c:3691
+#, c-format
+msgid " DW_MACRO_GNU_define - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_define - numligne : %d macro : %s\n"
+
+#: dwarf.c:3700
+#, c-format
+msgid " DW_MACRO_GNU_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_undef - numligne : %d macro : %s\n"
+
+#: dwarf.c:3710
+#, c-format
+msgid " DW_MACRO_GNU_define_indirect - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_define_indirect - numligne : %d macro : %s\n"
+
+#: dwarf.c:3720
+#, c-format
+msgid " DW_MACRO_GNU_undef_indirect - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_undef_indirect - numligne : %d macro : %s\n"
+
+#: dwarf.c:3727
+#, c-format
+msgid " DW_MACRO_GNU_transparent_include - offset : 0x%lx\n"
+msgstr " DW_MACRO_GNU_transparent_include - décalage : 0x%lx\n"
+
+#: dwarf.c:3734
+#, c-format
+msgid " Unknown macro opcode %02x seen\n"
+msgstr " Opcode macro %02x inconnu\n"
+
+#: dwarf.c:3746
+#, c-format
+msgid " DW_MACRO_GNU_%02x\n"
+msgstr " DW_MACRO_GNU_%02x\n"
+
+#: dwarf.c:3749
+#, c-format
+msgid " DW_MACRO_GNU_%02x -"
+msgstr " DW_MACRO_GNU_%02x -"
+
+#: dwarf.c:3790
+#, c-format
+msgid " Number TAG\n"
+msgstr " Numéro d'étiquette\n"
+
+#: dwarf.c:3799
+msgid "has children"
+msgstr "a des rejetons"
+
+#: dwarf.c:3799
+msgid "no children"
+msgstr "aucun rejeton"
+
+#: dwarf.c:3850 dwarf.c:4077 dwarf.c:4311
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"La section %s est vide.\n"
+
+#: dwarf.c:3856 dwarf.c:4317
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr "Incapable de charger/décoder la section «.debug_info», donc on ne peut pas interpréter la section %s.\n"
+
+#: dwarf.c:3900
+msgid "No location lists in .debug_info section!\n"
+msgstr "Pas de liste de localisation dans la section .debug_info!\n"
+
+#: dwarf.c:3905
+#, c-format
+msgid "Location lists in %s section start at 0x%s\n"
+msgstr "Listes de localisation dans la section %s débutent à 0x%s\n"
+
+#: dwarf.c:3912
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr " Décalage Début Fin Expression\n"
+
+#: dwarf.c:3961
+#, 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:3965
+#, 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:3973
+#, 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:3982 dwarf.c:4017 dwarf.c:4027
+#, 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:4001 dwarf.c:4405
+#, c-format
+msgid "<End of list>\n"
+msgstr "<Fin de liste>\n"
+
+#: dwarf.c:4011
+#, c-format
+msgid "(base address)\n"
+msgstr "(adresse de départ)\n"
+
+#: dwarf.c:4048
+msgid " (start == end)"
+msgstr " (début == fin)"
+
+#: dwarf.c:4050
+msgid " (start > end)"
+msgstr " (début > fin)"
+
+#: dwarf.c:4060
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr "Il y a %ld octets inutilisés à la fin de la section %s\n"
+
+#: dwarf.c:4206
+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:4210
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Longueur %ld\n"
+
+#: dwarf.c:4212
+#, c-format
+msgid " Version: %d\n"
+msgstr " Version: %d\n"
+
+#: dwarf.c:4213
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr " Décalage dans .debug_info: 0x%lx\n"
+
+#: dwarf.c:4215
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Taille des pointeurs: %d\n"
+
+#: dwarf.c:4216
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " Taille des segments: %d\n"
+
+#: dwarf.c:4222
+#, c-format
+msgid "Invalid address size in %s section!\n"
+msgstr "Taille d'adresse invalide dans la section %s !\n"
+
+#: dwarf.c:4232
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr "Taille du segment + taille du pointer n'est pas une puissance de deux.\n"
+
+#: dwarf.c:4237
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Adresse Longueur\n"
+
+#: dwarf.c:4239
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Adresse Longueur\n"
+
+#: dwarf.c:4327
+msgid "No range lists in .debug_info section!\n"
+msgstr "Aucune liste d'étendues dans la section .debug_info!\n"
+
+#: dwarf.c:4351
+#, 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:4355
+#, c-format
+msgid " Offset Begin End\n"
+msgstr " Décalage Début Fin\n"
+
+#: dwarf.c:4376
+#, 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:4380
+#, 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:4423
+msgid "(start == end)"
+msgstr "(début == fin)"
+
+#: dwarf.c:4425
+msgid "(start > end)"
+msgstr "(début > fin)"
+
+#: dwarf.c:4678
+msgid "bad register: "
+msgstr "mauvais registre: "
+
+#. The documentation for the format of this file is in gdb/dwarf2read.c.
+#: dwarf.c:4681 dwarf.c:5490
+#, c-format
+msgid "Contents of the %s section:\n"
+msgstr "Contenu de la section %s:\n"
+
+#: dwarf.c:5451
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr " DW_CFA_??? (Op d'appel de cadre défini par l'utilisateur: %#x)\n"
+
+#: dwarf.c:5453
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr "numéro d'instruction «Dwarf Call Frame» non supporté ou inconnu: %#x\n"
+
+#: dwarf.c:5494
+#, c-format
+msgid "Truncated header in the %s section.\n"
+msgstr "En-tête tronqué dans la section %s.\n"
+
+#: dwarf.c:5499
+#, c-format
+msgid "Version %ld\n"
+msgstr "Version %ld\n"
+
+#: dwarf.c:5506
+msgid "The address table data in version 3 may be wrong.\n"
+msgstr "Les données de la table d'adresse à la version 3 pourraient être mauvaises.\n"
+
+#: dwarf.c:5509
+msgid "Version 4 does not support case insensitive lookups.\n"
+msgstr "Version 4 ne supporte pas les recherches insensibles à la casse.\n"
+
+#: dwarf.c:5514
+#, c-format
+msgid "Unsupported version %lu.\n"
+msgstr "Version %lu non supportée.\n"
+
+#: dwarf.c:5530
+#, c-format
+msgid "Corrupt header in the %s section.\n"
+msgstr "En-tête corrompu dans la section %s.\n"
+
+#: dwarf.c:5545
+#, c-format
+msgid ""
+"\n"
+"CU table:\n"
+msgstr ""
+"\n"
+"Table CU:\n"
+
+#: dwarf.c:5551
+#, c-format
+msgid "[%3u] 0x%lx - 0x%lx\n"
+msgstr "[%3u] 0x%lx - 0x%lx\n"
+
+#: dwarf.c:5556
+#, c-format
+msgid ""
+"\n"
+"TU table:\n"
+msgstr ""
+"\n"
+"Table TU:\n"
+
+#: dwarf.c:5563
+#, c-format
+msgid "[%3u] 0x%lx 0x%lx "
+msgstr "[%3u] 0x%lx 0x%lx "
+
+#: dwarf.c:5570
+#, c-format
+msgid ""
+"\n"
+"Address table:\n"
+msgstr ""
+"\n"
+"Table d'adresses:\n"
+
+#: dwarf.c:5579
+#, c-format
+msgid "%lu\n"
+msgstr "%lu\n"
+
+#: dwarf.c:5582
+#, c-format
+msgid ""
+"\n"
+"Symbol table:\n"
+msgstr ""
+"\n"
+"Table des symboles:\n"
+
+#: dwarf.c:5616
+#, 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:5752 dwarf.c:5822
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Option de débug non reconnue « %s »\n"
+
+#: elfcomm.c:39
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: ERREUR: "
+
+#: elfcomm.c:50
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: AVERTISSEMENT: "
+
+#: elfcomm.c:82 elfcomm.c:117 elfcomm.c:167 elfcomm.c:216
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Taille de données non traitées: %d\n"
+
+#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3683 readelf.c:3991
+#: readelf.c:4034 readelf.c:4108 readelf.c:4187 readelf.c:4965 readelf.c:4989
+#: readelf.c:7397 readelf.c:7443 readelf.c:7642 readelf.c:8863 readelf.c:8877
+#: readelf.c:9423 readelf.c:9439 readelf.c:9482 readelf.c:9507 readelf.c:11904
+#: readelf.c:12096 readelf.c:12929
+msgid "Out of memory\n"
+msgstr "Mémoire épuisée\n"
+
+#: elfcomm.c:312
+#, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr "%s: échec de repérage du premier en-tête d'archive\n"
+
+#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13418
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: échec de lecture de l'en-tête de l'archive\n"
+
+#: elfcomm.c:347
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr "%s: l'index de l'archive est vide\n"
+
+#: elfcomm.c:355 elfcomm.c:381
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: échec de lecture de l'index de l'archive\n"
+
+#: elfcomm.c:365
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr "%s: l'index de l'archive devrait avoir %ld entrées mais l'en-tête est trop petit\n"
+
+#: elfcomm.c:373
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr "Mémoire épuisée lors de la lecture de l'index des symboles de l'archive\n"
+
+#: elfcomm.c:392
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr "Mémoire épuisée lors de la conversion de l'index des symboles de l'archive\n"
+
+#: elfcomm.c:405
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr "%s: l'archive a un index mais pas de symbole\n"
+
+#: elfcomm.c:413
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr "Mémoire épuisée lors de la lecture de la table des symboles de l'index de l'archive\n"
+
+#: elfcomm.c:419
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr "%s: erreur de lecture de la table de symboles de l'index de l'archive\n"
+
+#: elfcomm.c:428
+#, 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"
+
+#: elfcomm.c:440
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr "%s: échec de lecture de l'en-tête de l'archive après l'index de l'archive\n"
+
+#: elfcomm.c:446
+#, c-format
+msgid "%s has no archive index\n"
+msgstr "%s n'a pas d'index d'archive\n"
+
+#: elfcomm.c:457
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr "Mémoire épuisée lors de la lecture des noms longs des symboles de l'archive\n"
+
+#: elfcomm.c:465
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr "%s: échec de lecture de la table des noms longs de symboles\n"
+
+#: elfcomm.c:605
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr "%s: échec de repérage du nom de fichier suivant\n"
+
+#: elfcomm.c:616 elfedit.c:347 readelf.c:13424
+#, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr "%s: pas d'en-tête d'archive valable\n"
+
+#: elfedit.c:73
+#, c-format
+msgid "%s: Not an ELF file - wrong magic bytes at the start\n"
+msgstr "%s: N'est pas un fichier ELF - ne commence pas par les octets magiques\n"
+
+#: elfedit.c:81
+#, c-format
+msgid "%s: Unsupported EI_VERSION: %d is not %d\n"
+msgstr "%s: EI_VERSION non supportée: %d n'est pas %d\n"
+
+#: elfedit.c:97
+#, c-format
+msgid "%s: Unmatched EI_CLASS: %d is not %d\n"
+msgstr "%s: EI_CLASS sans correspondance: %d n'est pas %d\n"
+
+#: elfedit.c:108
+#, c-format
+msgid "%s: Unmatched e_machine: %d is not %d\n"
+msgstr "%s: e_machine sans correspondance: %d n'est pas %d\n"
+
+#: elfedit.c:119
+#, c-format
+msgid "%s: Unmatched e_type: %d is not %d\n"
+msgstr "%s: e_type sans correspondance: %d n'est pas %d\n"
+
+#: elfedit.c:130
+#, c-format
+msgid "%s: Unmatched EI_OSABI: %d is not %d\n"
+msgstr "%s: EI_OSABI sans correspondance: %d n'est pas %d\n"
+
+#: elfedit.c:163
+#, c-format
+msgid "%s: Failed to update ELF header: %s\n"
+msgstr "%s: Échec à la mise à jour de l'en-tête ELF: %s\n"
+
+#: elfedit.c:196
+#, c-format
+msgid "Unsupported EI_CLASS: %d\n"
+msgstr "EI_CLASS non supportée: %d\n"
+
+#: elfedit.c:229
+msgid ""
+"This executable has been built without support for a\n"
+"64 bit data type and so it cannot process 64 bit ELF files.\n"
+msgstr ""
+"Cet exécutable a été construit sans support pour des\n"
+"types de données 64 bits et ne peut donc traiter des fichiers ELF 64 bits.\n"
+
+#: elfedit.c:270
+#, c-format
+msgid "%s: Failed to read ELF header\n"
+msgstr "%s: Échec de lecture de l'en-tête ELF\n"
+
+#: elfedit.c:277
+#, c-format
+msgid "%s: Failed to seek to ELF header\n"
+msgstr "%s: Erreur lors de la recherche de l'en-tête ELF\n"
+
+#: elfedit.c:331 readelf.c:13410
+#, 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"
+
+#: elfedit.c:362 elfedit.c:371 readelf.c:13438 readelf.c:13447
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: nom erroné du fichier d'archive\n"
+
+#: elfedit.c:391 elfedit.c:483
+#, c-format
+msgid "Input file '%s' is not readable\n"
+msgstr "Fichier d'entrée «%s» illisible.\n"
+
+#: elfedit.c:415
+#, c-format
+msgid "%s: failed to seek to archive member\n"
+msgstr "%s: erreur lors de la recherche du membre de l'archive.\n"
+
+#: elfedit.c:454 readelf.c:13533
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "'%s': pas de fichier comme tel\n"
+
+#: elfedit.c:456 readelf.c:13535
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr "Ne peut retrouver '%s'. Message d'erreur système: %s\n"
+
+#: elfedit.c:463 readelf.c:13542
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "'%s' n'est pas un fichier ordinaire\n"
+
+#: elfedit.c:489 readelf.c:13555
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr "%s: échec de lecture du numéro magique du fichier\n"
+
+#: elfedit.c:547
+#, c-format
+msgid "Unknown OSABI: %s\n"
+msgstr "OSABI inconnu: %s\n"
+
+#: elfedit.c:568
+#, c-format
+msgid "Unknown machine type: %s\n"
+msgstr "Type de machine inconnu: %s\n"
+
+#: elfedit.c:587
+#, c-format
+msgid "Unknown machine type: %d\n"
+msgstr "Type de machine inconnu: %d\n"
+
+#: elfedit.c:606
+#, c-format
+msgid "Unknown type: %s\n"
+msgstr "Type inconnu: %s\n"
+
+#: elfedit.c:637
+#, c-format
+msgid "Usage: %s <option(s)> elffile(s)\n"
+msgstr "Usage: %s <option(s)> fichier(s)elf\n"
+
+#: elfedit.c:639
+#, c-format
+msgid " Update the ELF header of ELF files\n"
+msgstr " Mise à jour de l'en-tête ELF des fichiers ELF\n"
+
+#: elfedit.c:640 objcopy.c:475 objcopy.c:585
+#, c-format
+msgid " The options are:\n"
+msgstr " Les options sont:\n"
+
+#: elfedit.c:641
+#, c-format
+msgid ""
+" --input-mach <machine> Set input machine type to <machine>\n"
+" --output-mach <machine> Set output machine type to <machine>\n"
+" --input-type <type> Set input file type to <type>\n"
+" --output-type <type> Set output file type to <type>\n"
+" --input-osabi <osabi> Set input OSABI to <osabi>\n"
+" --output-osabi <osabi> Set output OSABI to <osabi>\n"
+" -h --help Display this information\n"
+" -v --version Display the version number of %s\n"
+msgstr ""
+" --input-mach <machine> Utiliser le type de machine <machine> en entrée\n"
+" --output-mach <machine> Utiliser le type de machine <machine> en sortie\n"
+" --input-type <type> Utiliser le type <type> pour le fichier d'entrée\n"
+" --output-type <type> Utiliser le type <type> pour le fichier de sortie\n"
+" --input-osabi <osabi> Utiliser OSABI <osabi> en entrée\n"
+" --output-osabi <osabi> Utiliser OSABI <osabi> en sortie\n"
+" -h --help Afficher ces informations\n"
+" -v --version Afficher la version de %s\n"
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - petite archive de 32 bits\n"
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - ignore les objets de 64 bits\n"
+
+#: emul_aix.c:47
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - ignore les objets de 32 bits\n"
+
+#: emul_aix.c:48
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] - accepter les objets de 32 et 64 bits\n"
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "fin inattendue des informations de débug"
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "numéro invalide"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "longueur de chaîne invalide"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "débordement de pile de l'expression"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "opérateur d'espression IEEE non supporté"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr "section inconnue"
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "sous dépilage de l'expression"
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "non concordance de l'expression dans la pile"
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "type de construit interne inconnu"
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "type de numérotaion flottante BCD inconnue"
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "numéro inattendu"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "type d'enregistrement inattendu"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "des blocs sont demeurés sur la pile à la fin"
+
+#: ieee.c:1208
+msgid "unknown BB type"
+msgstr "type BB inconnu"
+
+#: ieee.c:1217
+msgid "stack overflow"
+msgstr "débordement de la pile"
+
+#: ieee.c:1240
+msgid "stack underflow"
+msgstr "sous dépilage de la pile"
+
+#: ieee.c:1352 ieee.c:1422 ieee.c:2120
+msgid "illegal variable index"
+msgstr "variable d'index illégale"
+
+#: ieee.c:1400
+msgid "illegal type index"
+msgstr "type d'index illégal"
+
+#: ieee.c:1410 ieee.c:1447
+msgid "unknown TY code"
+msgstr "code TY inconnu"
+
+#: ieee.c:1429
+msgid "undefined variable in TY"
+msgstr "variable non définie dans TY"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1841
+msgid "Pascal file name not supported"
+msgstr "Nom de fichier Pascal non supporté"
+
+#: ieee.c:1889
+msgid "unsupported qualifier"
+msgstr "qualificateur non supporté"
+
+#: ieee.c:2158
+msgid "undefined variable in ATN"
+msgstr "variable non définie dans ATN"
+
+#: ieee.c:2201
+msgid "unknown ATN type"
+msgstr "type ATN inconnu"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2323
+msgid "unsupported ATN11"
+msgstr "ATN11 non supporté"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2350
+msgid "unsupported ATN12"
+msgstr "ATN2 non supporté"
+
+#: ieee.c:2410
+msgid "unexpected string in C++ misc"
+msgstr "chaîne inattendue dans misc en C++"
+
+#: ieee.c:2423
+msgid "bad misc record"
+msgstr "mauvais enregistrement misc"
+
+#: ieee.c:2464
+msgid "unrecognized C++ misc record"
+msgstr "enregistrement misc non reconnu en C++"
+
+#: ieee.c:2579
+msgid "undefined C++ object"
+msgstr "objet indéfini en C++"
+
+#: ieee.c:2613
+msgid "unrecognized C++ object spec"
+msgstr "spécification d'objet non reconnu en C++"
+
+#: ieee.c:2649
+msgid "unsupported C++ object type"
+msgstr "type d'objet non supporté en C++"
+
+#: ieee.c:2659
+msgid "C++ base class not defined"
+msgstr "classe de base non définie en C++"
+
+#: ieee.c:2671 ieee.c:2776
+msgid "C++ object has no fields"
+msgstr "objet n'ayant pas de champ en C++"
+
+#: ieee.c:2690
+msgid "C++ base class not found in container"
+msgstr "classe de base non repéré dans le conteneur en C++"
+
+#: ieee.c:2797
+msgid "C++ data member not found in container"
+msgstr "membre des données non repéré dans le conteneur en C++"
+
+#: ieee.c:2838 ieee.c:2988
+msgid "unknown C++ visibility"
+msgstr "visibilité C++ inconnue"
+
+#: ieee.c:2872
+msgid "bad C++ field bit pos or size"
+msgstr "mauvais champ de bit pos ou de taille en C++"
+
+#: ieee.c:2964
+msgid "bad type for C++ method function"
+msgstr "mauvais type pour le méthode d'une fonction en C++"
+
+#: ieee.c:2974
+msgid "no type information for C++ method function"
+msgstr "aucune information sur le type pour la méthode de la fonction en C++"
+
+#: ieee.c:3013
+msgid "C++ static virtual method"
+msgstr "méthode statique virtuelle en C++"
+
+#: ieee.c:3108
+msgid "unrecognized C++ object overhead spec"
+msgstr "spécification de l'en-tête de l'objet en C++ n'est pas reconnue"
+
+#: ieee.c:3147
+msgid "undefined C++ vtable"
+msgstr "vtable non définie en C++"
+
+#: ieee.c:3216
+msgid "C++ default values not in a function"
+msgstr "valeurs par défaut ne sont pas dans une fonction en C++"
+
+#: ieee.c:3256
+msgid "unrecognized C++ default type"
+msgstr "type par défaut en C++ n'est pas reconnu"
+
+#: ieee.c:3287
+msgid "reference parameter is not a pointer"
+msgstr "paramètre de la référence n'est pas un pointeur"
+
+#: ieee.c:3370
+msgid "unrecognized C++ reference type"
+msgstr "référence du type en C++ n'est pas reconnue"
+
+#: ieee.c:3452
+msgid "C++ reference not found"
+msgstr "la référence n'a pas été retrouvée en C++"
+
+#: ieee.c:3460
+msgid "C++ reference is not pointer"
+msgstr "la référence n'est pas un pointeur en C++"
+
+#: ieee.c:3486 ieee.c:3494
+msgid "missing required ASN"
+msgstr "ASN requis est absent"
+
+#: ieee.c:3521 ieee.c:3529
+msgid "missing required ATN65"
+msgstr "ATN65 requis est absent"
+
+#: ieee.c:3543
+msgid "bad ATN65 record"
+msgstr "mauvais enregistrement ATN65"
+
+#: ieee.c:4171
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "débordement numériquie IEEE: Ox"
+
+#: ieee.c:4215
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "débordement de la longueur de la chaîne IEEE: %u\n"
+
+#: ieee.c:5213
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "taille de type d'entier IEEE non supporté %u\n"
+
+#: ieee.c:5247
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "taille de type de nombre IEEE en notation flottante non supporté %u\n"
+
+#: ieee.c:5281
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "taille de nombre complexe IEEE non supportée %u\n"
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr "Symbole dupliqué dans le liste des mots clés."
+
+#: nlmconv.c:274 srconv.c:1824
+msgid "input and output files must be different"
+msgstr "fichiers d'entrée et de sortie doivent être différents"
+
+#: nlmconv.c:321
+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:330
+msgid "no input file"
+msgstr "aucun fichier d'entrée"
+
+#: nlmconv.c:360
+msgid "no name for output file"
+msgstr "aucun nom pour le fichier de sortie"
+
+#: nlmconv.c:374
+msgid "warning: input and output formats are not compatible"
+msgstr "AVERTISSEMENT: les formats d'entrée et de sortie sont incompatibles"
+
+#: nlmconv.c:404
+msgid "make .bss section"
+msgstr "générer la section .bss"
+
+#: nlmconv.c:414
+msgid "make .nlmsections section"
+msgstr "générer la section .nlmsections"
+
+#: nlmconv.c:442
+msgid "set .bss vma"
+msgstr "initialiser le vma de la section .bss"
+
+#: nlmconv.c:449
+msgid "set .data size"
+msgstr "initialiser la taille de la section .data"
+
+#: nlmconv.c:629
+#, 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:649
+msgid "set start address"
+msgstr "initialiser l'adresse de départ"
+
+#: nlmconv.c:698
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "AVERTISSEMENT: procédure START %s n'est pas définie"
+
+#: nlmconv.c:700
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "AVERTISSEMENT: procédure EXIT %s n'est pas définie"
+
+#: nlmconv.c:702
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "AVERTISSEMENT: procédure CHECK %s n'est pas définie"
+
+#: nlmconv.c:722 nlmconv.c:908
+msgid "custom section"
+msgstr "section « custom »"
+
+#: nlmconv.c:742 nlmconv.c:937
+msgid "help section"
+msgstr "section d'aide"
+
+#: nlmconv.c:764 nlmconv.c:955
+msgid "message section"
+msgstr "section message"
+
+#: nlmconv.c:779 nlmconv.c:988
+msgid "module section"
+msgstr "section module"
+
+#: nlmconv.c:798 nlmconv.c:1004
+msgid "rpc section"
+msgstr "section rpc"
+
+#. There is no place to record this information.
+#: nlmconv.c:834
+#, 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:855 nlmconv.c:1023
+msgid "shared section"
+msgstr "section partagée"
+
+#: nlmconv.c:863
+msgid "warning: No version number given"
+msgstr "AVERTISSEMENT: aucun numéro de version fourni"
+
+#: nlmconv.c:903 nlmconv.c:932 nlmconv.c:950 nlmconv.c:999 nlmconv.c:1018
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: lu: %s"
+
+#: nlmconv.c:925
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "AVERTISSEMENT: FULLMAP n'est pas supporté; essayer ld -M"
+
+#: nlmconv.c:1101
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Usage: %s [options] fichier_entrée [fichier_sortie]\n"
+
+#: nlmconv.c:1102
+#, 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:1103
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+"Les options sont:\n"
+" -I --input-target=<nombfd> sélectionner le format binaire du fichier d'entrée\n"
+" -O --output-target=<nombfd> sélectionner le format binaire du fichier de sortie\n"
+" -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:1144
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "soutien non compilé pour %s"
+
+#: nlmconv.c:1181
+msgid "make section"
+msgstr "section make"
+
+#: nlmconv.c:1195
+msgid "set section size"
+msgstr "initialisation de la taille de la section"
+
+#: nlmconv.c:1201
+msgid "set section alignment"
+msgstr "initialisation de l'alignement de la section"
+
+#: nlmconv.c:1205
+msgid "set section flags"
+msgstr "initialisation des fanions de la section"
+
+#: nlmconv.c:1216
+msgid "set .nlmsections size"
+msgstr "initialisation de la taille de .nlmsections"
+
+#: nlmconv.c:1297 nlmconv.c:1305 nlmconv.c:1314 nlmconv.c:1319
+msgid "set .nlmsection contents"
+msgstr "initialisation du contenu de .nlmsection"
+
+#: nlmconv.c:1796
+msgid "stub section sizes"
+msgstr "taille de la section stub"
+
+#: nlmconv.c:1843
+msgid "writing stub"
+msgstr "écriture du stub"
+
+#: nlmconv.c:1927
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "réadressage relatif sur PC non résolu de %s"
+
+#: nlmconv.c:1991
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "débordement lors du réadressage de %s"
+
+#: nlmconv.c:2118
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: échec d'exécution de %s :"
+
+#: nlmconv.c:2133
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Échec d'exécution de %s"
+
+#: nm.c:225 size.c:78 strings.c:650
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Usage: %s [options] fichiers\n"
+
+#: nm.c:226
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr "Afficher les symboles des [fichiers] (a.out par défaut).\n"
+
+#: nm.c:227
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+"Les options sont:\n"
+" -a, --debug-syms Afficher seulement les symboles de débug\n"
+" -A, --print-file-name Afficher le nom du fichier d'entrée avant chaque symbole\n"
+" -B Identique à --format=bsd\n"
+" -C, --demangle[=STYLE] Décoder les noms des symboles de bas niveau en noms de ceux\n"
+" du niveau usager. Le STYLE, si spécifié, peut être « auto »\n"
+" (par défaut), « gnu », « lucid », « arm », « hp », « edg » « gnu-v1 », «java» ou «gnat»\n"
+" --no-demangle Ne pas encoder par mutilation les noms des symboles de bas niveau\n"
+" -D, --dynamic Afficher les symboles dynamiques au lieu des symboles normaux\n"
+" --defined-only Afficher seulement les symboles définis\n"
+" -e (ignoré)\n"
+" -f, --format=FORMAT Utiliser le FORMAT de sortie qui peut être « bsd » (par défaut),\n"
+" « sysv » ou « posix ».\n"
+" -g, --extern-only Afficher seulement les symboles externes\n"
+" -l, --line-numbers Utiliser les informations de débug pour repérer le nom de fichier\n"
+" et un numéro de ligne pour chaque symbole\n"
+" -n, --numeric-sort Trier les symboles numériquement par adresse\n"
+" -o Identique à -A\n"
+" -p, --no-sort Ne pas trier les symboles\n"
+" -P, --portability Identique à --format=posix\n"
+" -r, --reverse-sort Trier en ordre inverse\n"
+
+#: nm.c:250
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr " --plugin NOM Charge le plugin spécifié\n"
+
+#: nm.c:253
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+" -S, --print-size Afficher la taille des symboles définis\n"
+" -s, --print-armap Inclure un index pour les symboles à partir des membres de l'archive\n"
+" --size-sort Trier les symboles par leur taille\n"
+" --special-syms Inclure les symboles spéciaux sur la sortie\n"
+" --synthetic Afficher aussi les symboles synthétiques\n"
+" -t, --radix=BASE Utiliser la BASE numérique pour afficher la valeur des symboles\n"
+" --target=NOM_BFD Spécifier la cible du format de l'objet par le NOM_BFD\n"
+" -u, --undefined-only Afficher seulement les symboles indéfinis\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:301
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: base numérique invalide"
+
+#: nm.c:325
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: format de sortie invalide"
+
+#: nm.c:346 readelf.c:8616 readelf.c:8661
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<spécificités du processor>: %d"
+
+#: nm.c:348 readelf.c:8625 readelf.c:8679
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<spécificités du système d'exploitation>: %d"
+
+#: nm.c:350 readelf.c:8628 readelf.c:8682
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<inconnu>: %d"
+
+#: nm.c:390
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Indexe de l'archive:\n"
+
+#: nm.c:1258
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboles indéfinis dans %s:\n"
+"\n"
+
+#: nm.c:1260
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboles de %s:\n"
+"\n"
+
+#: nm.c:1262 nm.c:1313
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Nom Valeur Classe Type Taille Ligne Section\n"
+"\n"
+
+#: nm.c:1265 nm.c:1316
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Nom Valeur Classe Type Taille Ligne Section\n"
+"\n"
+
+#: nm.c:1309
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboles indéfinis dans %s[%s]:\n"
+"\n"
+
+#: nm.c:1311
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboles de %s[%s]:\n"
+"\n"
+
+#: nm.c:1403
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr "La largeur d'impression n'a pas été initialisée (%d)"
+
+#: nm.c:1631
+msgid "Only -X 32_64 is supported"
+msgstr "Seul -X 32_64 est supporté"
+
+#: nm.c:1660
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "Utiliser ensemble les options --size-sort et --undefined-only"
+
+#: nm.c:1661
+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:1689
+#, c-format
+msgid "data size %ld"
+msgstr "taille des donnée %ld"
+
+#: objcopy.c:473 srconv.c:1732
+#, 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:474
+#, 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:476
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set output arch, when input is arch-less\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff objects.\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" --compress-debug-sections Compress DWARF debug sections using zlib\n"
+" --decompress-debug-sections Decompress DWARF debug sections using zlib\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"
+msgstr ""
+" -I --input-target <nombfd> Assumer que le fichier d'entrée est de format <nombfd>\n"
+" -O --output-target <nombfd> Créer un fichier de sortie de format <nombfd>\n"
+" -B --binary-architecture <arch> Sélectionner l'architecture du fichier de sortie si pas d'architecture en entrée\n"
+" -F --target <nombfd> Initialiser les formats d'entrée et de sortie à <nombfd>\n"
+" --debugging Convertir les informations de débug, si possible\n"
+" -p --preserve-dates Conserver les dates d'accès et de modification de fichiers\n"
+" -j --only-section <nom> Copier seulement la section <nom> dans le fichier de sortie\n"
+" --add-gnu-debuglink=<fichier> Ajouter la section .gnu_debuglink d'édition de liens au <fichier>\n"
+" -R --remove-section <nom> Retirer la section <nom> du fichier de sortie\n"
+" -S --strip-all Retirer tous les symboles et les informations de réadressage\n"
+" -g --strip-debug Retirer tous les symboles et sections de débug\n"
+" --strip-unneeded Retirer tous les symboles qui ne sont pas nécessaires au réadressage\n"
+" -N --strip-symbol <nom> Ne pas copier le symbole <nom>\n"
+" --strip-unneeded-symbol <name>\n"
+" Ne pas copier le symbole <nom> à moins qu'il soit\n"
+" nécessaire au réadressage\n"
+" --only-keep-debug Élaguer tout sauf les informations de mise au point\n"
+" --extract-symbol Supprimer le contenu de la section mais garder les symboles\n"
+" -K --keep-symbol <nom> Ne pas élaguer le symbole <nom>\n"
+" --keep-file-symbols Ne pas élaguer les symboles du fichier\n"
+" --localize-hidden Transforme tous les symboles ELF cachés en symboles locaux\n"
+" -L --localize-symbol <nom> Marquer le symbole <nom> comme symbole local\n"
+" --globalize-symbol <nom> Marquer le symbole <nom> comme symbole global\n"
+" -G --keep-global-symbol <nom> Localiser tous les symboles sauf celui ayant pour <nom>\n"
+" -W --weaken-symbol <nom> Marquer le symbole <nom> comme symbole faible\n"
+" --weaken Marquer tous les symboles globaux comme symboles faibles\n"
+" -w --wildcard Accepte le joker dans la comparaison des symboles\n"
+" -x --discard-all Retirer tous les symboles qui ne sont pas globaux\n"
+" -X --discard-locals Retirer tous les symboles générés par le compilateur\n"
+" -i --interleave [<nombre>] Copier seulement N octets tous les <nombre> octets\n"
+" --interleave-width <nombre> Indiquer la valeur N pour --interleave\n"
+" -b --byte <numéro> Sélectionner l'octet <numéro> dans chaque bloc intercalé\n"
+" --gap-fill <valeur> Remplir les trous entre les sections avec la <valeur>\n"
+" --pad-to <adresse> Remplir la dernière section jusqu'à l'<adresse>\n"
+" --set-start <adresse> Utiliser l'<adresse> de départ\n"
+" {--change-start|--adjust-start} <incrément>\n"
+" Ajouter l'<incrément> à l'adresse de départ\n"
+" {--change-addresses|--adjust-vma} <incrément>\n"
+" Ajouter l'<incrément> aux adresses LMA, VMA et de départ\n"
+" {--change-section-address|--adjust-section-vma} <nom>{=|+|-}<valeur>\n"
+" Modifier LMA et VMA de la section <nom> par la <valeur>\n"
+" --change-section-lma <nom>{=|+|-}<valeur>\n"
+" Modifier LMA de la section <nom> par la <valeur>\n"
+" --change-section-vma <nom>{=|+|-}<valeur>\n"
+" Modifier VMA de la section <nom> par la <valeur>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Avertir si le nom de la section n'existe pas\n"
+" --set-section-flags <nom>=<fanions>\n"
+" Initialiser les propriétés de la section <nom> avec les <fanions>\n"
+" --add-section <nom>=<fichier> Ajouter la section <nom> repérée dans le <fichier> vers la sortie\n"
+" --rename-section <anc>=<nou>[,<fanions>] Renommer l'<ancienne> section en la <nouvelle>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Traite les noms de section longs dans les objets Coff\n"
+" --change-leading-char Forcer le format de sortie du style des caractères de préfixe\n"
+" --remove-leading-char Retirer les caractères de préfixe des symboles globaux\n"
+" --reverse-bytes=<num> Inverse <num> octets à la fois dans les sections de sortie avec un contenu\n"
+" --redefine-sym <ancien>=<nouveau>\n"
+" Redéfinir le nom du symbole <ancien> à <nouveau>\n"
+" --redefined-syms <fichier> --redefine-sym pour toutes les paires de symboles\n"
+" listées dans <fichier>\n"
+" --srec-len <nombre> Restreindre la longueur des Srecords générés\n"
+" --srec-forceS3 Restreindre le type de Srecords générés à S3\n"
+" --strip-symbols <fichier> -N pour tous les symboles listés dans le <fichier>\n"
+" --strip-unneeded-symbols <fichier>\n"
+" --strip-unneeded-symbols pour tous les symboles listés dans <fichier>\n"
+" --keep-symbols <fichier> -K pour tous les symboles listés dans le <fichier>\n"
+" --localize-symbols <fichier> -L pour tous les symboles listés dans le <fichier>\n"
+" --globalize-symbols <fichier> --globalize-symbol pour tous dans <fichier>\n"
+" --keep-global-symbols <fichier>\n"
+" -G pour tous les symboles listés dans le <fichier>\n"
+" --weaken-symbols <fichier> -W pour tous les symboles listés dans le <fichier>\n"
+" --alt-machine-code <index> Utiliser le code machine alternatif dans la sortie\n"
+" --writable-text Marquer le texte de sortie comme modifiable\n"
+" --readonly-text Marquer le texte de sortie comme étant protégé contre l'écriture\n"
+" --pure Marquer le fichier de sortie comme «demand paged»\n"
+" --impure Marquer le fichier de sortie comme impure\n"
+" --prefix-symbols <préfixe> Ajouter le <préfixe> au début de chaque nom de symbole\n"
+" --prefix-sections <préfixe> Ajouter le <préfixe> au début de chaque nom de section\n"
+" --prefix-alloc-sections <préfixe>\n"
+" Ajouter le <préfixe> au début de chaque nom de section\n"
+" allouable\n"
+" --file-alignment <num> Fixer l'alignement du fichier PE à <num>\n"
+" --heap <reserve>[,<commit>] Fixer le tas PE réservé/engagé à <reserve>/\n"
+" <commit>\n"
+" --image-base <adresse> Fixer la base de l'image PE à <adresse>\n"
+" --section-alignment <num> Fixer l'alignement de section PE à <num>\n"
+" --stack <reserve>[,<commit>] Fixer la pile PE réservée/engagée à <reserve>/\n"
+" <commit>\n"
+" --subsystem <nom>[:<version>]\n"
+" Fixer le sous-système PE à <nom> [& <version>]\n"
+" --compress-debug-sections Compresser les sections de debug DWARF avec zlib\n"
+" --decompress-debug-sections Décompresser les sections de debug DWARF avec zlib\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"
+" --info Lister les formats d'objets et les architectures supportées\n"
+
+#: objcopy.c:583
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Usage: %s <options> fichiers\n"
+
+#: objcopy.c:584
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr "Enlever les symboles et les sections des fichiers\n"
+
+#: objcopy.c:586
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target <nombfd> assumer que le format du fichier d'entrée est <nombdf>\n"
+" -O --output-target <nombfd> créer un fichier de sortie ayant le format <nombfd>\n"
+" -F --target <nombfd> utiliser à l'entrée et à la sortie le format <nombfd>\n"
+" -p --preserve-dates préserver les dates d'accès et de modification lors de la copie\n"
+" -R --remove-section=<nom> retirer la section <nom> du fichier de sortie\n"
+" -s --strip-all retirer tous les symboles et les informations de réadressage\n"
+" -g -S -d --strip-debug retirer tous les symboles de débug\n"
+" --strip-unneeded retirer tous les symboles qui ne sont pas nécessaire au réadressage\n"
+" --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"
+" --keep-file-symbols ne pas retirer les symbole(s) de fichier\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"
+" -V --version afficher le nom et la version du logiciel\n"
+" -h --help afficher l'aide-mémoire\n"
+" --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:659
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "fanion de section non reconnnu « %s »"
+
+#: objcopy.c:660
+#, c-format
+msgid "supported flags: %s"
+msgstr "fanions supportés: %s"
+
+#: objcopy.c:761
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "ne peut ouvrir: « %s »: %s"
+
+#: objcopy.c:764 objcopy.c:3417
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: fread en échec"
+
+#: objcopy.c:837
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: rebus ignoré trouvé sur la ligne"
+
+#: objcopy.c:1153
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr "le symbole «%s» n'est pas élagué car il est mentionné dans un réadressage"
+
+#: objcopy.c:1236
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: re-définition multiples du symbole « %s »"
+
+#: objcopy.c:1240
+#, 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:1268
+#, 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:1346
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: rebus à la fin de la ligne"
+
+#: objcopy.c:1349
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: nom du nouveau symbole manquant"
+
+#: objcopy.c:1359
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: fin de fichier prématuré"
+
+#: objcopy.c:1385
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat() a retourné une taille négative for « %s »"
+
+#: objcopy.c:1397
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "copier à partir de « %s » [inconnu] vers « %s » [inconnu]\n"
+
+#: objcopy.c:1454
+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:1463
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "copier de « %s » [%s] vers « %s » [%s]\n"
+
+#: objcopy.c:1512
+#, c-format
+msgid "Input file `%s' ignores binary architecture parameter."
+msgstr "Le fichier d'entrée «%s» ignore les paramètres de l'architecture binaire."
+
+#: objcopy.c:1520
+#, 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 »"
+
+#: objcopy.c:1523
+#, c-format
+msgid "Output file cannot represent architecture `%s'"
+msgstr "Fichier de sortie ne peut représenter l'architecture « %s »"
+
+#: objcopy.c:1586
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr "attention: alignement du fichier (0x%s) > alignment de la section (0x%s)"
+
+#: objcopy.c:1645
+#, c-format
+msgid "can't add section '%s'"
+msgstr "ne peut créer la section « %s »"
+
+#: objcopy.c:1659
+#, c-format
+msgid "can't create section `%s'"
+msgstr "ne peut créer la section « %s »"
+
+#: objcopy.c:1705
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr "ne peut créer la section de débug «%s»"
+
+#: objcopy.c:1798
+msgid "Can't fill gap after section"
+msgstr "ne peut remplir le vide après la section"
+
+#: objcopy.c:1822
+msgid "can't add padding"
+msgstr "ne peut ajouter de remplissage"
+
+#: objcopy.c:1913
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr "ne peut remplir la section de débug «%s»"
+
+#: objcopy.c:1976
+msgid "error copying private BFD data"
+msgstr "erreur de copie des données privées BFD"
+
+#: objcopy.c:1987
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr "cette cible ne supporte pas %lu codes machine alternatifs"
+
+#: objcopy.c:1991
+msgid "treating that number as an absolute e_machine value instead"
+msgstr "traite ce nombre comme une valeur e_machine absolue"
+
+#: objcopy.c:1995
+msgid "ignoring the alternative value"
+msgstr "ignore la valeur alternative"
+
+#: objcopy.c:2027 objcopy.c:2063
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr "ne peut créer le répertoire temporaire pour copier l'archivage (erreur: %s)"
+
+#: objcopy.c:2093
+msgid "Unable to recognise the format of file"
+msgstr "Incapable de reconnaître le format du fichier"
+
+#: objcopy.c:2220
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "ERREUR: le fichier d'entrée « %s » est vide"
+
+#: objcopy.c:2364
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "Changement multiples de noms de la section %s"
+
+#: objcopy.c:2415
+msgid "error in private header data"
+msgstr "erreur dans les données d'en-tête privées"
+
+#: objcopy.c:2493
+msgid "failed to create output section"
+msgstr "incapable de créer la section de sortie"
+
+#: objcopy.c:2507
+msgid "failed to set size"
+msgstr "incapable d'initialiser la taille"
+
+#: objcopy.c:2521
+msgid "failed to set vma"
+msgstr "incapable d'initialiser le vma"
+
+#: objcopy.c:2546
+msgid "failed to set alignment"
+msgstr "incapable d'initialiser l'alignement"
+
+#: objcopy.c:2580
+msgid "failed to copy private data"
+msgstr "erreur de copie des données privées"
+
+#: objcopy.c:2662
+msgid "relocation count is negative"
+msgstr "le compteur de relocation est négatif"
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2723
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr "ne peut pas inverser les octets: la longueur de la section %s doit être équitablement divisible en %d"
+
+#: objcopy.c:2909
+msgid "can't create debugging section"
+msgstr "ne peut créer la section de débug"
+
+#: objcopy.c:2922
+msgid "can't set debugging section contents"
+msgstr "ne peut initialiser le contenu de la section de débug"
+
+#: objcopy.c:2930
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr "ne sait comment écrire les informations de débug de %s"
+
+#: objcopy.c:3073
+msgid "could not create temporary file to hold stripped copy"
+msgstr "le fichier temporaire pour contenir la copie élaguée n'a pas pu être créé"
+
+#: objcopy.c:3145
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr "%s: mauvaise version dans le sous-système PE"
+
+#: objcopy.c:3175
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr "sous-système PE inconnu: %s"
+
+#: objcopy.c:3237
+msgid "byte number must be non-negative"
+msgstr "le nombre d'octet ne peut être négatif"
+
+#: objcopy.c:3243
+#, c-format
+msgid "architecture %s unknown"
+msgstr "architecture %s inconnue"
+
+#: objcopy.c:3251
+msgid "interleave must be positive"
+msgstr "l'intercalage doit être positif"
+
+#: objcopy.c:3260
+msgid "interleave width must be positive"
+msgstr "la largeur d'intercalage doit être positive"
+
+#: objcopy.c:3280 objcopy.c:3288
+#, c-format
+msgid "%s both copied and removed"
+msgstr "%s les deux doivent être copiés et enlevés"
+
+#: objcopy.c:3387 objcopy.c:3467 objcopy.c:3575 objcopy.c:3606 objcopy.c:3630
+#: objcopy.c:3634 objcopy.c:3654
+#, c-format
+msgid "bad format for %s"
+msgstr "mauvais format pour %s"
+
+#: objcopy.c:3399
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "ne peut ouvrir: %s: %s"
+
+#: objcopy.c:3544
+#, 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:3705
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr "option de noms de section longs inconnue «%s»"
+
+#: objcopy.c:3723
+msgid "unable to parse alternative machine code"
+msgstr "incapable de décoder le code de machine alternatif"
+
+#: objcopy.c:3768
+msgid "number of bytes to reverse must be positive and even"
+msgstr "Le nombre d'octets à inverser doit être positif et paire"
+
+#: objcopy.c:3771
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr "Attention : la valeur précédente de --reverse-bytes (%d) est ignorée"
+
+#: objcopy.c:3786
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr "%s: la valeur de réserve pour --heap n'est pas valable"
+
+#: objcopy.c:3792
+#, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr "%s: la valeur confirmée pour --heap n'est pas valable"
+
+#: objcopy.c:3817
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr "%s: la valeur de réserve pour --stack n'est pas valable"
+
+#: objcopy.c:3823
+#, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr "%s: la valeur confirmée pour --stack n'est pas valable"
+
+#: objcopy.c:3852
+msgid "interleave start byte must be set with --byte"
+msgstr "l'octet de départ de l'intercalage doit être fixé avec --byte"
+
+#: objcopy.c:3855
+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:3858
+msgid "interleave width must be less than or equal to interleave - byte`"
+msgstr "la largeur d'intercalage doit être plus petite ou égale à l'intercalage - byte`"
+
+#: objcopy.c:3885
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr "cible EFI d'entrée inconnue : %s"
+
+#: objcopy.c:3916
+#, c-format
+msgid "unknown output EFI target: %s"
+msgstr "cible EFI de sortie inconnue : %s"
+
+#: objcopy.c:3929
+#, 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:3941
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr "attention : le fichier temporaire n'a pas pu être créé pendant la copie de «%s» (erreur : %s)"
+
+#: objcopy.c:3969 objcopy.c:3983
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s jamais utilisé"
+
+#: objdump.c:201
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Usage: %s <options> <fichiers>\n"
+
+#: objdump.c:202
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr "Afficher les informations depuis les <fichiers> objet.\n"
+
+#: objdump.c:203
+#, 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:204
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -P, --private=OPT,OPT... Display object format specific contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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[lLiaprmfFsoRt] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+msgstr ""
+" -a, --archive-headers Afficher l'information de l'en-tête de l'archive\n"
+" -f, --file-headers Afficher le contenu global du fichier d'en-tête\n"
+" -p, --private-headers Afficher le format spécifique du contenu de l'en-tête de l'objet\n"
+" -P, --private=OPT,OPT... Afficher les contenus spécifiques au format de l'objet\n"
+" -h, --[section-]headers Afficher le contenu des en-têtes de section\n"
+" -x, --all-headers Afficher le contenu de tous les en-têtes\n"
+" -d, --disassemble Afficher le contenu en assembleur des sections exécutables\n"
+" -D, --disassemble-all Afficher le contenu en assembleur de toutes les sections\n"
+" -S, --source Inter-mêler le code source avec le désassemblage\n"
+" -s, --full-contents Afficher le contenu complet de toutes les sections voulues\n"
+" -g, --debugging Afficher les informations de mise au point du fichier objet\n"
+" -e, --debugging-tags Afficher les informations de mise au point en utilisant le style ctags\n"
+" -G, --stabs Afficher (en format brut) toutes infos STAB dans le fichier\n"
+" -W[lLiaprmfFsoRt] ou\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Afficher les informations DWARF dans le fichier\n"
+" -t, --syms Afficher le contenu de(s) table(s) de symboles\n"
+" -T, --dynamic-syms Afficher le contenu de la table dynamique de symboles\n"
+" -r, --reloc Afficher les entrées de réadressage du fichier\n"
+" -R, --dynamic-reloc Afficher les entrées dynamiques de réadressage du fichier\n"
+" @<fichier> Lire les options à partir du <fichier>\n"
+" -v, --version Afficher 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:236
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" Les commutateurs suivants sont optionnels:\n"
+
+#: objdump.c:237
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a single line for -d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+msgstr ""
+" -b, --target=NOMBFD spécifier le format de l'objet cible comme NOMBFD\n"
+" -m, --architecture=MACHINE spécifier l'architecture cible de la MACHINE\n"
+" -j, --section=NOM afficher seulement les informations de la section du NOM\n"
+" -M, --disassembler-options=OPT relayer l'OPTion au désassembleur\n"
+" -EB --endian=big assumer le format « big endian » lors du désassemblage\n"
+" -EL --endian=little assumer le format « little endian » lors du désassemblage\n"
+" --file-start-context inclure le contexte à partir du début du fichier (avec -S)\n"
+" -I, --include=RÉPERTOIRE ajouter le répertoire à la liste de recherche des fichiers sources\n"
+" -l, --line-numbers inclure les numéros de ligne et les noms de fichier dans la sortie\n"
+" -F, --file-offsets inclure les offsets dans le fichier dans les informations affichées\n"
+" -C, --demangle[=STYLE] décoder les mutilations/traitements des noms de symboles\n"
+" Le STYLE, si spécifié, peut être « auto », « gnu »,\n"
+" « lucid », « arm », « hp », « edg », « gnu-v3 », « java »\n"
+" ou « gnat »\n"
+" -w, --wide formatter la sortie pour plus de 80 colonnes\n"
+" -z, --disassemble-zeroes ne pas escamoter les blocs de zéros lors du désassemblage\n"
+" --start-address=ADR traiter seulement les données dont les adresses sont >= ADR\n"
+" --stop-address=ADR traiter seulement les données dont les adresses sont <= ADR\n"
+" --prefix-addresses afficher les adresses complètes dans le dé-assemblage\n"
+" --[no-]show-raw-insn afficher en hexadécimal le dé-assemblage symbolique\n"
+" --insn-width=LARGEUR afficher LARGEUR octets sur une seule ligne avec -d\n"
+" --adjust-vma=DÉCALAGE ajouter un DÉCALAGE à toutes les adresses affichées des sections\n"
+" --special-syms inclure les symboles spéciaux dans la vidange de symboles\n"
+" --prefix=PRÉFIXE ajouter le PRÉFIXE aux chemins absolus pour -S\n"
+" --prefix-strip=NIVEAU supprimer des répertoires au début de -S\n"
+
+#: objdump.c:263
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+"\n"
+msgstr ""
+" --dwarf-depth=N Ne pas afficher les DIEs à une profondeur supérieure ou égale à N\n"
+" --dwarf-start=N Afficher les DIEs en commençant par N, à la même profondeur ou plus bas\n"
+"\n"
+
+#: objdump.c:275
+#, c-format
+msgid ""
+"\n"
+"Options supported for -P/--private switch:\n"
+msgstr ""
+"\n"
+"Options supportées par -P/--private:\n"
+
+#: objdump.c:426
+#, c-format
+msgid "section '%s' mentioned in a -j option, but not found in any input file"
+msgstr "section «%s» mentionnée dans une option -j n'a été trouvée dans aucun fichier d'entrée"
+
+#: objdump.c:530
+#, c-format
+msgid "Sections:\n"
+msgstr "Sections:\n"
+
+#: objdump.c:533 objdump.c:537
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Nom Taille VMA LMA Fich off Algn"
+
+#: objdump.c:539
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Nom Taille VMA LMA Fich off Algn"
+
+#: objdump.c:543
+#, c-format
+msgid " Flags"
+msgstr " Fanions"
+
+#: objdump.c:586
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: n'est pas un objet dynamique"
+
+#: objdump.c:1012 objdump.c:1036
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr " (Offset dans le fichier: 0x%lx)"
+
+#: objdump.c:1662
+#, c-format
+msgid "disassemble_fn returned length %d"
+msgstr "disassemble_fn a retourné la longueur %d"
+
+#: objdump.c:1967
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+"\n"
+"Déassemblage de la section %s:\n"
+
+#: objdump.c:2143
+#, c-format
+msgid "can't use supplied machine %s"
+msgstr "ne peut utiliser la machine fournie %s"
+
+#: objdump.c:2162
+#, c-format
+msgid "can't disassemble for architecture %s\n"
+msgstr "ne peut déassembler pour l'architecture %s\n"
+
+#: objdump.c:2242 objdump.c:2265
+#, 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:2406
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"Aucune section %s présente\n"
+"\n"
+
+#: objdump.c:2415
+#, c-format
+msgid "reading %s section of %s failed: %s"
+msgstr "lecture de la section %s de %s a échouée: %s"
+
+#: objdump.c:2459
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"Contenu de la section %s:\n"
+"\n"
+
+#: objdump.c:2590
+#, c-format
+msgid "architecture: %s, "
+msgstr "architecture: %s, "
+
+#: objdump.c:2593
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "fanions 0x%08x:\n"
+
+#: objdump.c:2607
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"adresse de départ 0x"
+
+#: objdump.c:2633
+msgid "option -P/--private not supported by this file"
+msgstr "option -P/--private pas supportée par ce fichier"
+
+#: objdump.c:2657
+#, c-format
+msgid "target specific dump '%s' not supported"
+msgstr "Le dump « %s » spécifique à la cible n'est pas supporté"
+
+#: objdump.c:2721
+#, c-format
+msgid "Contents of section %s:"
+msgstr "Contenu de la section %s:"
+
+#: objdump.c:2723
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr " (Démarrage à l'offset du fichier: 0x%lx)"
+
+#: objdump.c:2729
+msgid "Reading section failed"
+msgstr "Lecture de la section a échouée"
+
+#: objdump.c:2832
+#, c-format
+msgid "no symbols\n"
+msgstr "aucun symbole\n"
+
+#: objdump.c:2839
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr "pas d'information pour le symbol numéro %ld\n"
+
+#: objdump.c:2842
+#, 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:3163
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: format de fichier %s\n"
+
+#: objdump.c:3223
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: échec d'affichage des information de débug"
+
+#: objdump.c:3327
+#, c-format
+msgid "In archive %s:\n"
+msgstr "Dans l'archive %s:\n"
+
+#: objdump.c:3438
+msgid "error: the start address should be before the end address"
+msgstr "erreur: l'adresse de début doit être avant l'adresse de fin"
+
+#: objdump.c:3443
+msgid "error: the stop address should be after the start address"
+msgstr "erreur: l'adresse de fin doit être après l'adresse de début"
+
+#: objdump.c:3455
+msgid "error: prefix strip must be non-negative"
+msgstr "erreur: le préfixe à supprimer ne peut pas être négatif"
+
+#: objdump.c:3460
+msgid "error: instruction width must be positive"
+msgstr "erreur: la largeur de l'instruction doit être positive"
+
+#: objdump.c:3469
+msgid "unrecognized -E option"
+msgstr "option -E non reconnue"
+
+#: objdump.c:3480
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "type non reconnu --endian « %s »"
+
+#: od-xcoff.c:75
+#, c-format
+msgid ""
+"For XCOFF files:\n"
+" header Display the file header\n"
+" aout Display the auxiliary header\n"
+" sections Display the section headers\n"
+" syms Display the symbols table\n"
+" relocs Display the relocation entries\n"
+" lineno Display the line number entries\n"
+" loader Display loader section\n"
+" except Display exception table\n"
+" typchk Display type-check section\n"
+" traceback Display traceback tags\n"
+" toc Display toc symbols\n"
+msgstr ""
+"Pour les fichiers XCOFF:\n"
+" header Afficher l'en-tête du fichier\n"
+" aout Afficher l'en-tête auxiliaire\n"
+" sections Afficher l'en-tête de section\n"
+" syms Afficher la table des symboles\n"
+" relocs Afficher les entrées de réadressage\n"
+" lineno Afficher les numéros de lignes des entrées\n"
+" loader Afficher la section du chargeur\n"
+" except Afficher la table des exceptions\n"
+" typchk Afficher la section de contrôle du type\n"
+" traceback Afficher les balises traceback\n"
+" toc Afficher la table des matières des symboles\n"
+
+#: od-xcoff.c:416
+#, c-format
+msgid " nbr sections: %d\n"
+msgstr " nombre de sections: %d\n"
+
+#: od-xcoff.c:417
+#, c-format
+msgid " time and date: 0x%08x - "
+msgstr " heure et date: 0x%08x - "
+
+#: od-xcoff.c:419
+#, c-format
+msgid "not set\n"
+msgstr "non définie\n"
+
+#: od-xcoff.c:426
+#, c-format
+msgid " symbols off: 0x%08x\n"
+msgstr " off symboles: 0x%08x\n"
+
+#: od-xcoff.c:427
+#, c-format
+msgid " nbr symbols: %d\n"
+msgstr " nombre de symboles: %d\n"
+
+#: od-xcoff.c:428
+#, c-format
+msgid " opt hdr sz: %d\n"
+msgstr " taille en-tête option: %d\n"
+
+#: od-xcoff.c:429
+#, c-format
+msgid " flags: 0x%04x "
+msgstr " fanions: 0x%04x "
+
+#: od-xcoff.c:443
+#, c-format
+msgid "Auxiliary header:\n"
+msgstr "En-tête auxiliaire:\n"
+
+#: od-xcoff.c:446
+#, c-format
+msgid " No aux header\n"
+msgstr " Pas d'en-tête auxiliaire\n"
+
+#: od-xcoff.c:451
+#, c-format
+msgid "warning: optionnal header size too large (> %d)\n"
+msgstr "attention: taille de l'en-tête optionnel trop grande (> %d)\n"
+
+#: od-xcoff.c:457
+msgid "cannot read auxhdr"
+msgstr "impossible de lire auxhdr"
+
+#: od-xcoff.c:522
+#, c-format
+msgid "Section headers (at %u+%u=0x%08x to 0x%08x):\n"
+msgstr "En-têtes de sections (à %u+%u=0x%08x jusque 0x%08x):\n"
+
+#: od-xcoff.c:527
+#, c-format
+msgid " No section header\n"
+msgstr " Pas d'en-tête de section\n"
+
+#: od-xcoff.c:532 od-xcoff.c:544 od-xcoff.c:599
+msgid "cannot read section header"
+msgstr "impossible de lire l'en-tête de section"
+
+#: od-xcoff.c:558
+#, c-format
+msgid " Flags: %08x "
+msgstr " Fanions: %08x "
+
+#: od-xcoff.c:566
+#, c-format
+msgid "overflow - nreloc: %u, nlnno: %u\n"
+msgstr "débordement - nreloc: %u, nlnno: %u\n"
+
+#: od-xcoff.c:587 od-xcoff.c:922 od-xcoff.c:978
+msgid "cannot read section headers"
+msgstr "impossible de lire les en-têtes de sections"
+
+#: od-xcoff.c:646
+msgid "cannot read strings table length"
+msgstr "impossible de lire la longueur de la table des chaînes"
+
+#: od-xcoff.c:662
+msgid "cannot read strings table"
+msgstr "impossible de lire la table des chaînes"
+
+#: od-xcoff.c:670
+msgid "cannot read symbol table"
+msgstr "impossible de lire la table des symboles"
+
+#: od-xcoff.c:685
+msgid "cannot read symbol entry"
+msgstr "impossible de lire une entrée de symbole"
+
+#: od-xcoff.c:720
+msgid "cannot read symbol aux entry"
+msgstr "impossible de lire une entrée auxiliaire de symbole"
+
+#: od-xcoff.c:742
+#, c-format
+msgid "Symbols table (strtable at 0x%08x)"
+msgstr "Table des symboles (strtable à 0x%08x)"
+
+#: od-xcoff.c:747
+#, c-format
+msgid ""
+":\n"
+" No symbols\n"
+msgstr ""
+":\n"
+" Aucun symbole\n"
+
+#: od-xcoff.c:753
+#, c-format
+msgid " (no strings):\n"
+msgstr " (aucune chaîne):\n"
+
+#: od-xcoff.c:755
+#, c-format
+msgid " (strings size: %08x):\n"
+msgstr " (taille des chaînes: %08x):\n"
+
+#. Translators: 'sc' is for storage class, 'off' for offset.
+#: od-xcoff.c:769
+#, c-format
+msgid " # sc value section type aux name/off\n"
+msgstr " # sc valeur section type aux nom/off\n"
+
+#. Section length, number of relocs and line number.
+#: od-xcoff.c:821
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+
+#. Section length and number of relocs.
+#: od-xcoff.c:828
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u\n"
+
+#: od-xcoff.c:891
+#, c-format
+msgid "offset: %08x"
+msgstr "offset: %08x"
+
+#: od-xcoff.c:934
+#, c-format
+msgid "Relocations for %s (%u)\n"
+msgstr "Réadressages pour %s (%u)\n"
+
+#: od-xcoff.c:937
+msgid "cannot read relocations"
+msgstr "ne peut lire les réadressages"
+
+#: od-xcoff.c:950
+msgid "cannot read relocation entry"
+msgstr "ne peut lire une entrée de réadressage"
+
+#: od-xcoff.c:990
+#, c-format
+msgid "Line numbers for %s (%u)\n"
+msgstr "Numéros de lignes pour %s (%u)\n"
+
+#: od-xcoff.c:993
+msgid "cannot read line numbers"
+msgstr "ne peut lire les numéros de lignes"
+
+#. Line number, symbol index and physical address.
+#: od-xcoff.c:997
+#, c-format
+msgid "lineno symndx/paddr\n"
+msgstr "numligne symndx/paddr\n"
+
+#: od-xcoff.c:1005
+msgid "cannot read line number entry"
+msgstr "ne peut lire une entrée de numéro de ligne"
+
+#: od-xcoff.c:1048
+#, c-format
+msgid "no .loader section in file\n"
+msgstr "pas de section .loader dans le fichier\n"
+
+#: od-xcoff.c:1054
+#, c-format
+msgid "section .loader is too short\n"
+msgstr "la section .loader est trop courte\n"
+
+#: od-xcoff.c:1061
+#, c-format
+msgid "Loader header:\n"
+msgstr "En-tête du chargeur:\n"
+
+#: od-xcoff.c:1063
+#, c-format
+msgid " version: %u\n"
+msgstr " version: %u\n"
+
+#: od-xcoff.c:1066
+#, c-format
+msgid " Unhandled version\n"
+msgstr "Version non supportée\n"
+
+#: od-xcoff.c:1071
+#, c-format
+msgid " nbr symbols: %u\n"
+msgstr " nombre de symboles: %u\n"
+
+#: od-xcoff.c:1073
+#, c-format
+msgid " nbr relocs: %u\n"
+msgstr " nombre réadressages: %u\n"
+
+#. Import string table length.
+#: od-xcoff.c:1075
+#, c-format
+msgid " import strtab len: %u\n"
+msgstr " longueur import strtab: %u\n"
+
+#: od-xcoff.c:1078
+#, c-format
+msgid " nbr import files: %u\n"
+msgstr " nombre fichiers import: %u\n"
+
+#: od-xcoff.c:1080
+#, c-format
+msgid " import file off: %u\n"
+msgstr " offset fichier import: %u\n"
+
+#: od-xcoff.c:1082
+#, c-format
+msgid " string table len: %u\n"
+msgstr " longueur table chaînes: %u\n"
+
+#: od-xcoff.c:1084
+#, c-format
+msgid " string table off: %u\n"
+msgstr " offset table chaînes: %u\n"
+
+#: od-xcoff.c:1087
+#, c-format
+msgid "Dynamic symbols:\n"
+msgstr "Symboles dynamiques:\n"
+
+#: od-xcoff.c:1094
+#, c-format
+msgid " %4u %08x %3u "
+msgstr " %4u %08x %3u "
+
+#: od-xcoff.c:1107
+#, c-format
+msgid " %3u %3u "
+msgstr " %3u %3u "
+
+#: od-xcoff.c:1116
+#, c-format
+msgid "(bad offset: %u)"
+msgstr "(mauvais offset: %u)"
+
+#: od-xcoff.c:1123
+#, c-format
+msgid "Dynamic relocs:\n"
+msgstr "Réadressages dynamiques:\n"
+
+#: od-xcoff.c:1163
+#, c-format
+msgid "Import files:\n"
+msgstr "Fichiers import:\n"
+
+#: od-xcoff.c:1195
+#, c-format
+msgid "no .except section in file\n"
+msgstr "pas de section .except dans le fichier\n"
+
+#: od-xcoff.c:1203
+#, c-format
+msgid "Exception table:\n"
+msgstr "Table des exceptions:\n"
+
+#: od-xcoff.c:1238
+#, c-format
+msgid "no .typchk section in file\n"
+msgstr "pas de section .typchk dans le fichier\n"
+
+#: od-xcoff.c:1245
+#, c-format
+msgid "Type-check section:\n"
+msgstr "Section de contrôle de type:\n"
+
+#: od-xcoff.c:1292
+#, c-format
+msgid " address beyond section size\n"
+msgstr " adresse au delà de la taille de la section\n"
+
+#: od-xcoff.c:1302
+#, c-format
+msgid " tags at %08x\n"
+msgstr " balises à %08x\n"
+
+#: od-xcoff.c:1380
+#, c-format
+msgid " number of CTL anchors: %u\n"
+msgstr " nombre d'ancrages CTL: %u\n"
+
+#: od-xcoff.c:1399
+#, c-format
+msgid " Name (len: %u): "
+msgstr " Nom (long: %u): "
+
+#: od-xcoff.c:1402
+#, c-format
+msgid "[truncated]\n"
+msgstr "[tronqué]\n"
+
+#: od-xcoff.c:1421
+#, c-format
+msgid " (end of tags at %08x)\n"
+msgstr " (fin des balises à %08x)\n"
+
+#: od-xcoff.c:1424
+#, c-format
+msgid " no tags found\n"
+msgstr " pas de balise trouvée\n"
+
+#: od-xcoff.c:1428
+#, c-format
+msgid " Truncated .text section\n"
+msgstr " Section .text tronquée\n"
+
+#: od-xcoff.c:1513
+#, c-format
+msgid "TOC:\n"
+msgstr "TOC:\n"
+
+#: od-xcoff.c:1556
+#, c-format
+msgid "Nbr entries: %-8u Size: %08x (%u)\n"
+msgstr "Nombre entrées: %-8u Taille: %08x (%u)\n"
+
+#: od-xcoff.c:1640
+msgid "cannot read header"
+msgstr "ne peut lire l'en-tête"
+
+#: od-xcoff.c:1648
+#, c-format
+msgid "File header:\n"
+msgstr "En-tête du fichier:\n"
+
+#: od-xcoff.c:1649
+#, c-format
+msgid " magic: 0x%04x (0%04o) "
+msgstr " magique: 0x%04x (0%04o) "
+
+#: od-xcoff.c:1653
+#, c-format
+msgid "(WRMAGIC: writable text segments)"
+msgstr "(WRMAGIC: segments textes accessibles en écriture)"
+
+#: od-xcoff.c:1656
+#, c-format
+msgid "(ROMAGIC: readonly sharablee text segments)"
+msgstr "(ROMAGIC: segments textes partageables en lecture seule)"
+
+#: od-xcoff.c:1659
+#, c-format
+msgid "(TOCMAGIC: readonly text segments and TOC)"
+msgstr "(TOCMAGIC: segments textes et TOC en lecture seule)"
+
+#: od-xcoff.c:1662
+#, c-format
+msgid "unknown magic"
+msgstr "magique inconnue"
+
+#: od-xcoff.c:1669
+#, c-format
+msgid " Unhandled magic\n"
+msgstr " Magique non supportée\n"
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr "valeur erronée pour le pragma code_page.\n"
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: mauvais type de code 0x%x"
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment en échec: %s"
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent en échec: %s"
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf aucune fonction qui précède"
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: .ef inattendu\n"
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: aucune information de débug reconnue"
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "Dernière entrées à inclure avant erreur:\n"
+
+#: readelf.c:268
+msgid "<none>"
+msgstr "<aucun>"
+
+#: readelf.c:269
+msgid "<no-name>"
+msgstr "<sans-nom>"
+
+#: readelf.c:270 readelf.c:5083 readelf.c:5594 readelf.c:8132 readelf.c:8250
+#: readelf.c:9233 readelf.c:9327 readelf.c:9388 readelf.c:12391
+#: readelf.c:12394
+msgid "<corrupt>"
+msgstr "<corrompu>"
+
+#: readelf.c:309
+#, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "Incapable de repérer 0x%lx pour %s\n"
+
+#: readelf.c:324
+#, c-format
+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:334
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Incapable de lire 0x%lx octets de %s\n"
+
+#: readelf.c:638
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Ne connaît pas de méthode pour le réadressage sur l'architecture de cette machine\n"
+
+#: readelf.c:659 readelf.c:757
+msgid "32-bit relocation data"
+msgstr "données de réadressage 32 bits"
+
+#: readelf.c:671 readelf.c:701 readelf.c:768 readelf.c:797
+msgid "out of memory parsing relocs\n"
+msgstr "Mémoire épuisée lors de l'analyse syntaxique des réadressages\n"
+
+#: readelf.c:689 readelf.c:786
+msgid "64-bit relocation data"
+msgstr "données de réadressage 64 bits"
+
+#: readelf.c:902
+#, 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:904
+#, 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:909
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " Décalage Info Type Val.-sym. Noms-symboles\n"
+
+#: readelf.c:911
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " Décalage Info Type Val.-sym Noms-symboles\n"
+
+#: readelf.c:919
+#, 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:921
+#, 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:926
+#, 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:928
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " Décalage Info Type Val.-symboles Noms-symboles\n"
+
+#: readelf.c:1245 readelf.c:1405 readelf.c:1413
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "non reconnue: %-7lx"
+
+#: readelf.c:1270
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<ajout inconnu: %lx>"
+
+#: readelf.c:1277
+#, c-format
+msgid " bad symbol index: %08lx"
+msgstr " mauvais index de symbole: %08lx"
+
+#: readelf.c:1363
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr "<chaîne de la table index: %3ld>"
+
+#: readelf.c:1365
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<chaîne corrompu de la table index: %3ld>"
+
+#: readelf.c:1758
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "Spécificités du processeur: %lx"
+
+#: readelf.c:1782
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "Spécificités du systèmes d'exploitation: %lx"
+
+#: readelf.c:1786 readelf.c:2858
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<inconnu>: %lx"
+
+#: readelf.c:1799
+msgid "NONE (None)"
+msgstr "NONE (Aucun)"
+
+#: readelf.c:1800
+msgid "REL (Relocatable file)"
+msgstr "REL (Fichier de réadressage)"
+
+#: readelf.c:1801
+msgid "EXEC (Executable file)"
+msgstr "EXEC (fichier exécutable)"
+
+#: readelf.c:1802
+msgid "DYN (Shared object file)"
+msgstr "DYN (fichier objet partagé)"
+
+#: readelf.c:1803
+msgid "CORE (Core file)"
+msgstr "CORE (fichier core)"
+
+#: readelf.c:1807
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "Spécificités du processor: (%x)"
+
+#: readelf.c:1809
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "Spécificités du système d'exploitation: (%x)"
+
+#: readelf.c:1811
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<inconnu>: %x"
+
+#: readelf.c:1823
+msgid "None"
+msgstr "Aucun"
+
+#: readelf.c:1994
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr "<inconnu>: 0x%x"
+
+#: readelf.c:2180
+msgid ", <unknown>"
+msgstr ", <inconnu>"
+
+#: readelf.c:2266 readelf.c:7485
+msgid "unknown"
+msgstr "inconnu"
+
+#: readelf.c:2267
+msgid "unknown mac"
+msgstr "mac inconnue"
+
+#: readelf.c:2331
+msgid ", relocatable"
+msgstr ", relocalisable"
+
+#: readelf.c:2334
+msgid ", relocatable-lib"
+msgstr ", relocalisable-lib"
+
+#: readelf.c:2357
+msgid ", unknown v850 architecture variant"
+msgstr ", variante d'architecture v850 inconnue"
+
+#: readelf.c:2414
+msgid ", unknown CPU"
+msgstr ", CPU inconnu"
+
+#: readelf.c:2429
+msgid ", unknown ABI"
+msgstr ", ABI inconnu"
+
+#: readelf.c:2452 readelf.c:2486
+msgid ", unknown ISA"
+msgstr ", ISA inconnu"
+
+#: readelf.c:2663
+msgid "Standalone App"
+msgstr "Tache autonome"
+
+#: readelf.c:2672
+msgid "Bare-metal C6000"
+msgstr "C6000 brut de fonderie"
+
+#: readelf.c:2682 readelf.c:3471 readelf.c:3487
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<inconnu: %x>"
+
+#. This message is probably going to be displayed in a 15
+#. character wide field, so put the hex value first.
+#: readelf.c:3108
+#, c-format
+msgid "%08x: <unknown>"
+msgstr "%08x: <inconnu>"
+
+#: readelf.c:3163
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Usage: readelf <options> fichiers-elf\n"
+
+#: readelf.c:3164
+#, 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:3165
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" --dyn-syms Display the dynamic symbol table\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as relocated bytes\n"
+" -w[lLiaprmfFsoRt] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+"Les options sont:\n"
+" -a --all Équivalent à: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Afficher l'en-tête du fichier ELF\n"
+" -l --program-headers Afficher les en-têtes du programme\n"
+" --segments Un alias pour --program-headers\n"
+" -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"
+" --dyn-syms Afficher la table des symboles dynamiques\n"
+" -n --notes Afficher les notes du core (si présentes)\n"
+" -r --relocs Afficher les réadressages (si présents)\n"
+" -u --unwind Afficher les informations de déroulage (si présentes)\n"
+" -d --dynamic Afficher le segment dynamique (si présent)\n"
+" -V --version-info Afficher la version des sections (si présentes)\n"
+" -A --arch-specific Afficher les informations spécifiques d'architecture (si présentes)\n"
+" -c --archive-index Afficher l'index des symboles/fichiers d'une archive\n"
+" -D --use-dynamic Utiliser les informations de la section\n"
+" dynamique lors de l'affichage des symboles\n"
+" -x --hex-dump=<numéro|nom>\n"
+" Vidanger le contenu de la section <numéro|nom> sous forme d'octets\n"
+" -p --string-dump=<numéro|nom>\n"
+" Vidanger le contenu de la section <numéro|nom> sous forme de chaînes\n"
+" -R --relocated-dump=<numéro|nom>\n"
+" Vidanger le contenu de la section <numéro|nom> sous forme d'octets relocalisés\n"
+" -w[lLiaprmfFsoRt] ou\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Afficher le contenu des sections débug DWARF2\n"
+
+#: readelf.c:3197
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+msgstr ""
+" --dwarf-depth=N Ne pas afficher les DIEs à une profondeur supérieure ou égale à N\n"
+" --dwarf-start=N Afficher les DIEs en commençant par N, à la même profondeur ou plus bas\n"
+
+#: readelf.c:3202
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+" -i --instruction-dump=<numéro|nom>\n"
+" déassembler le contenu de la section <numéro|nom>\n"
+
+#: readelf.c:3206
+#, 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:3235 readelf.c:3264 readelf.c:3268 readelf.c:13623
+msgid "Out of memory allocating dump request table.\n"
+msgstr "Mémoire épuisée allocation d'une table pour requêtes de vidange.\n"
+
+#: readelf.c:3440
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Option invalide '-%c»\n"
+
+#: readelf.c:3455
+msgid "Nothing to do.\n"
+msgstr "Rien à faire.\n"
+
+#: readelf.c:3467 readelf.c:3483 readelf.c:8068
+msgid "none"
+msgstr "aucun"
+
+#: readelf.c:3484
+msgid "2's complement, little endian"
+msgstr "complément à 2, système à octets de poids faible d'abord (little endian)"
+
+#: readelf.c:3485
+msgid "2's complement, big endian"
+msgstr "complément à 2, système à octets de poids fort d'abord (big endian)"
+
+#: readelf.c:3503
+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:3513
+#, c-format
+msgid "ELF Header:\n"
+msgstr "En-tête ELF:\n"
+
+#: readelf.c:3514
+#, c-format
+msgid " Magic: "
+msgstr " Magique: "
+
+#: readelf.c:3518
+#, c-format
+msgid " Class: %s\n"
+msgstr " Classe: %s\n"
+
+#: readelf.c:3520
+#, c-format
+msgid " Data: %s\n"
+msgstr " Données: %s\n"
+
+#: readelf.c:3522
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " Version: %d %s\n"
+
+#: readelf.c:3527
+#, c-format
+msgid "<unknown: %lx>"
+msgstr "<inconnu: %lx>"
+
+#: readelf.c:3529
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS/ABI: %s\n"
+
+#: readelf.c:3531
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " Version ABI: %d\n"
+
+#: readelf.c:3533
+#, c-format
+msgid " Type: %s\n"
+msgstr " Type: %s\n"
+
+#: readelf.c:3535
+#, c-format
+msgid " Machine: %s\n"
+msgstr " Machine: %s\n"
+
+#: readelf.c:3537
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " Version: 0x%lx\n"
+
+#: readelf.c:3540
+#, c-format
+msgid " Entry point address: "
+msgstr " Adresse du point d'entrée: "
+
+#: readelf.c:3542
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" Début des en-têtes de programme: "
+
+#: readelf.c:3544
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (octets dans le fichier)\n"
+" Début des en-têtes de section: "
+
+#: readelf.c:3546
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (octets dans le fichier)\n"
+
+#: readelf.c:3548
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Fanions: 0x%lx%s\n"
+
+#: readelf.c:3551
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " Taille de cet en-tête: %ld (bytes)\n"
+
+#: readelf.c:3553
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " Taille de l'en-tête du programme: %ld (bytes)\n"
+
+#: readelf.c:3555
+#, c-format
+msgid " Number of program headers: %ld"
+msgstr " Nombre d'en-tête du programme: %ld"
+
+#: readelf.c:3562
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " Taille des en-têtes de section: %ld (bytes)\n"
+
+#: readelf.c:3564
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " Nombre d'en-têtes de section: %ld"
+
+#: readelf.c:3569
+#, 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:3576
+#, c-format
+msgid " <corrupt: out of range>"
+msgstr " <corrompu: hors limites>"
+
+#: readelf.c:3610 readelf.c:3644
+msgid "program headers"
+msgstr "En-tête de programme"
+
+#: readelf.c:3711
+msgid "possibly corrupt ELF header - it has a non-zero program header offset, but no program headers"
+msgstr "en-tête ELF peut-être endommagé - il a un offset non nul pour l'en-tête du programme mais pas d'en-tête de programme"
+
+#: readelf.c:3714
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"Il n'y a pas d'en-têtes de programme dans ce fichier.\n"
+
+#: readelf.c:3720
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Type de fichier ELF est %s\n"
+
+#: readelf.c:3721
+#, c-format
+msgid "Entry point "
+msgstr "Point d'entrée "
+
+#: readelf.c:3723
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"Il y a %d en-têtes de programme, débutant à l'adresse de décalage"
+
+#: readelf.c:3735 readelf.c:3737
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"En-têtes de programme:\n"
+
+#: readelf.c:3741
+#, 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:3744
+#, 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:3748
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " Type Décalage Adr.virt Adr.phys.\n"
+
+#: readelf.c:3750
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " Taille fichier Taille mémoire Fanion Alignement\n"
+
+#: readelf.c:3843
+msgid "more than one dynamic segment\n"
+msgstr "plus d'un segment dynamique\n"
+
+#: readelf.c:3862
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr "pas de section .dynamic dans le segment dynamique\n"
+
+#: readelf.c:3877
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr "la section .dynamic n'est pas contenue à l'intérieur du segment dynamique\n"
+
+#: readelf.c:3880
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr "la section .dynamic n'est pas la première section dans le segment dynamique.\n"
+
+#: readelf.c:3888
+msgid "Unable to find program interpreter name\n"
+msgstr "Incapable de repérer le nom de l'interpréteur du programme\n"
+
+#: readelf.c:3895
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr "Erreur interne: la chaîne de format n'a pas pu être créée pour afficher l'interpréteur du programme\n"
+
+#: readelf.c:3899
+msgid "Unable to read program interpreter name\n"
+msgstr "Incapable de lire le nom de l'interpréteur du programme\n"
+
+#: readelf.c:3902
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [Réquisition de l'interpréteur de programme: %s]"
+
+#: readelf.c:3914
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" Section à la projection de segement:\n"
+
+#: readelf.c:3915
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " Sections de segment...\n"
+
+#: readelf.c:3951
+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:3967
+#, 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:3982 readelf.c:4025
+msgid "section headers"
+msgstr "En-têtes de section"
+
+#: readelf.c:4074 readelf.c:4154
+msgid "sh_entsize is zero\n"
+msgstr "sh_entsize est zéro\n"
+
+#: readelf.c:4082 readelf.c:4162
+msgid "Invalid sh_entsize\n"
+msgstr "sh_entsize incorrect\n"
+
+#: readelf.c:4087 readelf.c:4167
+msgid "symbols"
+msgstr "symboles"
+
+#: readelf.c:4099 readelf.c:4178
+msgid "symbol table section indicies"
+msgstr "indices de section de la table des symboles"
+
+#: readelf.c:4439
+#, c-format
+msgid "UNKNOWN (%*.*lx)"
+msgstr "INCONNU (%*.*lx)"
+
+#: readelf.c:4461
+msgid "possibly corrupt ELF file header - it has a non-zero section header offset, but no section headers\n"
+msgstr "en-tête ELF peut-être endommagé - il a un offset non nul pour l'en-tête de section mais pas d'en-tête de section\n"
+
+#: readelf.c:4464
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"Il n'y a pas de section dans ce fichier.\n"
+
+#: readelf.c:4470
+#, 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:4491 readelf.c:5079 readelf.c:5491 readelf.c:5797 readelf.c:6210
+#: readelf.c:7093 readelf.c:9213
+msgid "string table"
+msgstr "table de chaînes"
+
+#: readelf.c:4558
+#, 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:4578
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Le fichier contient plusieurs tables dynamiques de symboles\n"
+
+#: readelf.c:4590
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Le fichier contient plusieurs tables de chaînes dynamiques\n"
+
+#: readelf.c:4596
+msgid "dynamic strings"
+msgstr "chaînes dynamiques"
+
+#: readelf.c:4603
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Le fichier contient de multiples tables symboliques shndx\n"
+
+#: readelf.c:4674
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"En-têtes de section:\n"
+
+#: readelf.c:4676
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"En-têtes de section:\n"
+
+#: readelf.c:4682 readelf.c:4693 readelf.c:4704
+#, c-format
+msgid " [Nr] Name\n"
+msgstr " [Nr] Nom\n"
+
+#: readelf.c:4683
+#, 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:4687
+#, 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:4694
+#, 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:4698
+#, 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:4705
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr " Type Adresse Décalage Lien\n"
+
+#: readelf.c:4706
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr " Taille TaillEntré Info Alignement\n"
+
+#: readelf.c:4710
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [Nr] Nom Type Adresse Décalage\n"
+
+#: readelf.c:4711
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " Taille TaillEntré Fanion Lien Info Alignement\n"
+
+#: readelf.c:4716
+#, c-format
+msgid " Flags\n"
+msgstr " Fanions\n"
+
+#: readelf.c:4796
+#, c-format
+msgid "section %u: sh_link value of %u is larger than the number of sections\n"
+msgstr "section %u: la valeur %u de sh_link est plus grande que le nombre de sections\n"
+
+#: readelf.c:4896
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Clé des fanions:\n"
+" W (écriture), A (allocation), X (exécution), M (fusion), S (chaînes), l (large)\n"
+" I (info), L (ordre des liens), G (groupe), T (TLS), E (exclu), x (inconnu)\n"
+" O (traiterment additionnel requis pour l'OS) o (spécifique à l'OS), p (spécifique au processeur)\n"
+
+#: readelf.c:4901
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Clé des fanions:\n"
+" W (écriture), A (allocation), X (exécution), M (fusion), S (chaînes)\n"
+" I (info), L (ordre des liens), G (groupe), T (TLS), E (exclu), x (inconnu)\n"
+" O (traiterment additionnel requis pour l'OS) o (spécifique à l'OS), p (spécifique au processeur)\n"
+
+#: readelf.c:4923
+#, c-format
+msgid "[<unknown>: 0x%x] "
+msgstr "[<inconnu>: 0x%x] "
+
+#: readelf.c:4949
+#, c-format
+msgid ""
+"\n"
+"There are no sections to group in this file.\n"
+msgstr ""
+"\n"
+"Il n'y a pas de section à grouper dans ce fichier.\n"
+
+#: readelf.c:4956
+msgid "Section headers are not available!\n"
+msgstr "En-têtes de section ne sont pas disponibles!\n"
+
+#: readelf.c:4980
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"Il n'y a pas de groupe de section dans ce fichier.\n"
+
+#: readelf.c:5018
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "sh_link erroné dans la section de groupe `%s'\n"
+
+#: readelf.c:5032
+#, c-format
+msgid "Corrupt header in group section `%s'\n"
+msgstr "En-tête corrompu dans la section de groupe «%s»\n"
+
+#: readelf.c:5038 readelf.c:5049
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "sh_info erroné dans la section de groupe`%s'\n"
+
+#: readelf.c:5088
+msgid "section data"
+msgstr "données de section"
+
+#: readelf.c:5099
+#, c-format
+msgid ""
+"\n"
+"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
+msgstr ""
+"\n"
+"%sgroupe section [%5u] «%s» [%s] contient %u sections:\n"
+
+#: readelf.c:5102
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [Index] Nom\n"
+
+#: readelf.c:5116
+#, c-format
+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:5125
+#, 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:5138
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr "section 0 dans le groupe section [%5u]\n"
+
+#: readelf.c:5205
+msgid "dynamic section image fixups"
+msgstr "embellissement de l'image de section dynamique"
+
+#: readelf.c:5217
+#, c-format
+msgid ""
+"\n"
+"Image fixups for needed library #%d: %s - ident: %lx\n"
+msgstr ""
+"\n"
+"Embellisement de l'image pour la librairie requise #%d: %s - identation: %lx\n"
+
+#: readelf.c:5220
+#, c-format
+msgid "Seg Offset Type SymVec DataType\n"
+msgstr "Seg Offset Type VecSym TypeDonnées\n"
+
+#: readelf.c:5252
+msgid "dynamic section image relocations"
+msgstr "réadressages de l'image de la section dynamique"
+
+#: readelf.c:5256
+#, c-format
+msgid ""
+"\n"
+"Image relocs\n"
+msgstr ""
+"\n"
+"Relocalisations d'image\n"
+
+#: readelf.c:5258
+#, c-format
+msgid "Seg Offset Type Addend Seg Sym Off\n"
+msgstr "Seg Offset Type Ajoute Seg Sym Off\n"
+
+#: readelf.c:5313
+msgid "dynamic string section"
+msgstr "section de chaînes dynamiques"
+
+#: readelf.c:5414
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"'%s' section de réadressage à l'adresse de décalage 0x%lx contient %ld octets:\n"
+
+#: readelf.c:5429
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"Il n'y a pas d'informations de réadressage dynamique dans ce fichier.\n"
+
+#: readelf.c:5453
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"Section de réadressage "
+
+#: readelf.c:5460 readelf.c:5890 readelf.c:6227
+#, 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:5510
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"Il n'y a pas de réadressage dans ce fichier.\n"
+
+#: readelf.c:5648
+#, c-format
+msgid "\tUnknown version.\n"
+msgstr "\tVersion inconnue.\n"
+
+#: readelf.c:5701 readelf.c:6074
+msgid "unwind table"
+msgstr "table de déroulage"
+
+#: readelf.c:5743 readelf.c:6156 readelf.c:6415
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Escamotage du type de réadressage inattendu %s\n"
+
+#: readelf.c:5805 readelf.c:6218 readelf.c:7101 readelf.c:7148
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"Il n'y a pas de section de déroulage dans ce fichier.\n"
+
+#: readelf.c:5868
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"N'a pu repérer les infos de la section de déroulage pour "
+
+#: readelf.c:5873 readelf.c:5888 readelf.c:6225
+#, c-format
+msgid "'%s'"
+msgstr "« %s »"
+
+#: readelf.c:5880
+msgid "unwind info"
+msgstr "info déroulage"
+
+#: readelf.c:5883 readelf.c:6224
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"Section de déroulage "
+
+#: readelf.c:6333
+msgid "unwind data"
+msgstr "données déroulage"
+
+#: readelf.c:6386
+#, c-format
+msgid "Skipping unexpected relocation at offset 0x%lx\n"
+msgstr "Escamotage du réadressage inattendu à l'offset 0x%lx\n"
+
+#: readelf.c:6490
+#, c-format
+msgid "[Truncated opcode]\n"
+msgstr "[Opcode tronqué]\n"
+
+#: readelf.c:6534 readelf.c:6734
+#, c-format
+msgid "Refuse to unwind"
+msgstr "Refus de dérouler"
+
+#: readelf.c:6557
+#, c-format
+msgid " [Reserved]"
+msgstr " [Réservé]"
+
+#: readelf.c:6585
+#, c-format
+msgid " finish"
+msgstr " terminé"
+
+#: readelf.c:6590 readelf.c:6676
+#, c-format
+msgid "[Spare]"
+msgstr "[Réserve]"
+
+#: readelf.c:6697 readelf.c:6831
+#, c-format
+msgid " [unsupported opcode]"
+msgstr " [opcode non supporté]"
+
+#: readelf.c:6781
+#, c-format
+msgid "pop frame {"
+msgstr "pop frame {"
+
+#: readelf.c:6792
+msgid "[pad]"
+msgstr "[pad]"
+
+#: readelf.c:6820
+#, c-format
+msgid "sp = sp + %ld"
+msgstr "sp = sp + %ld"
+
+#: readelf.c:6878
+#, c-format
+msgid " Personality routine: "
+msgstr " Routine de personnalité: "
+
+#: readelf.c:6896
+#, c-format
+msgid " [Truncated data]\n"
+msgstr " [Données tronquées]\n"
+
+#: readelf.c:6911
+#, c-format
+msgid " Compact model %d\n"
+msgstr " Modèle compact %d\n"
+
+#: readelf.c:6947
+#, c-format
+msgid " Restore stack from frame pointer\n"
+msgstr " Rétablir la pile depuis le pointeur de trame\n"
+
+#: readelf.c:6949
+#, c-format
+msgid " Stack increment %d\n"
+msgstr " Incrément de pile %d\n"
+
+#: readelf.c:6950
+#, c-format
+msgid " Registers restored: "
+msgstr " Registres rétablis: "
+
+#: readelf.c:6955
+#, c-format
+msgid " Return register: %s\n"
+msgstr " Registre de retour: %s\n"
+
+#: readelf.c:7038
+#, c-format
+msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
+msgstr "Impossible de trouver la section .ARM.extab contenant 0x%lx.\n"
+
+#: readelf.c:7107
+#, c-format
+msgid ""
+"\n"
+"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+"\n"
+"Index de table de déroulage «%s» à l'offset 0x%lx contient %lu entrées:\n"
+
+#: readelf.c:7159
+#, c-format
+msgid "NONE\n"
+msgstr "AUCUNE\n"
+
+#: readelf.c:7185
+#, c-format
+msgid "Interface Version: %s\n"
+msgstr "Version de l'interface: %s\n"
+
+#: readelf.c:7187
+#, c-format
+msgid "<corrupt: %ld>\n"
+msgstr "<corrompu: %ld>\n"
+
+#: readelf.c:7200
+#, c-format
+msgid "Time Stamp: %s\n"
+msgstr "Horodatage: %s\n"
+
+#: readelf.c:7377 readelf.c:7423
+msgid "dynamic section"
+msgstr "section dynamique"
+
+#: readelf.c:7501
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"Il n'y a pas de section dynamique dans ce fichier.\n"
+
+#: readelf.c:7539
+msgid "Unable to seek to end of file!\n"
+msgstr "Incapable de repérer la fin du fichier!\n"
+
+#: readelf.c:7552
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Incapable de déterminer le nombre de symboles à charger\n"
+
+#: readelf.c:7585
+msgid "Unable to seek to end of file\n"
+msgstr "Incapable de repérer la fin du fichier\n"
+
+#: readelf.c:7592
+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:7598
+msgid "dynamic string table"
+msgstr "table dynamique de chaînes"
+
+#: readelf.c:7635
+msgid "symbol information"
+msgstr "information de symbole"
+
+#: readelf.c:7660
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"Section dynamique à l'adresse de décalage 0x%lx contient %u entrées:\n"
+
+#: readelf.c:7663
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " Étiquettes Type Nom/Valeur\n"
+
+#: readelf.c:7699
+#, c-format
+msgid "Auxiliary library"
+msgstr "Librairie auxiliaire"
+
+#: readelf.c:7703
+#, c-format
+msgid "Filter library"
+msgstr "Librairie de filtre"
+
+#: readelf.c:7707
+#, c-format
+msgid "Configuration file"
+msgstr "Fichier de configuration"
+
+#: readelf.c:7711
+#, c-format
+msgid "Dependency audit library"
+msgstr "Librairie d'audit des dépendances"
+
+#: readelf.c:7715
+#, c-format
+msgid "Audit library"
+msgstr "Librairie des audits"
+
+#: readelf.c:7733 readelf.c:7761 readelf.c:7789
+#, c-format
+msgid "Flags:"
+msgstr "Fanions:"
+
+#: readelf.c:7736 readelf.c:7764 readelf.c:7791
+#, c-format
+msgid " None\n"
+msgstr "Aucun\n"
+
+#: readelf.c:7912
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Librairie partagées: [%s]"
+
+#: readelf.c:7915
+#, c-format
+msgid " program interpreter"
+msgstr " programme interpréteur"
+
+#: readelf.c:7919
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "Librairie soname: [%s]"
+
+#: readelf.c:7923
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "Librairie rpath: [%s]"
+
+#: readelf.c:7927
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "Librairie runpath:[%s]"
+
+#: readelf.c:7960
+#, c-format
+msgid " (bytes)\n"
+msgstr " (octets)\n"
+
+#: readelf.c:7990
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Objet non nécessaire: [%s]\n"
+
+#: readelf.c:8090
+msgid "| <unknown>"
+msgstr " <inconnu>"
+
+#: readelf.c:8123
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Section des définitions de version « %s » contient %u entrées:\n"
+
+#: readelf.c:8126
+#, c-format
+msgid " Addr: 0x"
+msgstr " Adr: 0x"
+
+#: readelf.c:8128 readelf.c:8246 readelf.c:8390
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr " Décalage: %#08lx Lien: %u (%s)\n"
+
+#: readelf.c:8136
+msgid "version definition section"
+msgstr "section de définition de version"
+
+#: readelf.c:8169
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: Rev: %d Fanions: %s"
+
+#: readelf.c:8172
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " Index: %d Compteur: %d "
+
+#: readelf.c:8188
+#, c-format
+msgid "Name: %s\n"
+msgstr "Nom: %s\n"
+
+#: readelf.c:8190
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Nom de l'index: %ld\n"
+
+#: readelf.c:8212
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: Parent %d: %s\n"
+
+#: readelf.c:8215
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: Parent %d, name index: %ld\n"
+
+#: readelf.c:8220
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr " Définition de version «aux» au delà de la fin de la section\n"
+
+#: readelf.c:8226
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr " Définition de version au delà de la fin de la section\n"
+
+#: readelf.c:8241
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Version nécessitant la section « %s » contenant %u entrées:\n"
+
+#: readelf.c:8244
+#, c-format
+msgid " Addr: 0x"
+msgstr " Adr: 0x"
+
+#: readelf.c:8255
+msgid "Version Needs section"
+msgstr "Section de version « Needs »"
+
+#: readelf.c:8283
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: Version: %d"
+
+#: readelf.c:8286
+#, c-format
+msgid " File: %s"
+msgstr " Fichier: %s"
+
+#: readelf.c:8288
+#, c-format
+msgid " File: %lx"
+msgstr " Fichier: %lx"
+
+#: readelf.c:8290
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " Compteur: %d\n"
+
+#: readelf.c:8315
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: Nom: %s"
+
+#: readelf.c:8318
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: Nom de l'index: %lx"
+
+#: readelf.c:8321
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Fanions: %s Version: %d\n"
+
+#: readelf.c:8334
+msgid "Missing Version Needs auxillary information\n"
+msgstr "Les informations auxiliaires de la version « Needs » manquent\n"
+
+#: readelf.c:8340
+msgid "Missing Version Needs information\n"
+msgstr "Les informations de la version « Needs » manquent\n"
+
+#: readelf.c:8378
+msgid "version string table"
+msgstr "table chaîne de version"
+
+#: readelf.c:8385
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"La version de section « %s » des symboles contient %d entrée:\n"
+
+#: readelf.c:8388
+#, c-format
+msgid " Addr: "
+msgstr " Adr: "
+
+#: readelf.c:8399
+msgid "version symbol data"
+msgstr "données de symbole de version"
+
+#: readelf.c:8427
+msgid " 0 (*local*) "
+msgstr " 0 (*local*) "
+
+#: readelf.c:8431
+msgid " 1 (*global*) "
+msgstr " 1 (*global*) "
+
+#: readelf.c:8442
+msgid "invalid index into symbol array\n"
+msgstr "mauvais index dans la table\n"
+
+#: readelf.c:8476 readelf.c:9279
+msgid "version need"
+msgstr "version «need»"
+
+#: readelf.c:8487
+msgid "version need aux (2)"
+msgstr "version «need aux» (2)"
+
+#: readelf.c:8508 readelf.c:8570
+msgid "*invalid*"
+msgstr "*invalide*"
+
+#: readelf.c:8538 readelf.c:9357
+msgid "version def"
+msgstr "définition de version"
+
+#: readelf.c:8564 readelf.c:9379
+msgid "version def aux"
+msgstr "définition de version «aux»"
+
+#: readelf.c:8599
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"Aucune information de version repérée dans ce fichier.\n"
+
+#: readelf.c:8807
+#, c-format
+msgid "<other>: %x"
+msgstr "<autre>: %x"
+
+#: readelf.c:8869
+msgid "Unable to read in dynamic data\n"
+msgstr "Incapable de lire les données dynamiques\n"
+
+#: readelf.c:8919
+#, c-format
+msgid " <corrupt: %14ld>"
+msgstr " <corrompu: %14ld>"
+
+#: readelf.c:8962 readelf.c:9014 readelf.c:9038 readelf.c:9068 readelf.c:9092
+msgid "Unable to seek to start of dynamic information\n"
+msgstr "Incapable de repérer le début des informations dynamiques\n"
+
+#: readelf.c:8968 readelf.c:9020
+msgid "Failed to read in number of buckets\n"
+msgstr "Échec de lecture parmi tous les baquets\n"
+
+#: readelf.c:8974
+msgid "Failed to read in number of chains\n"
+msgstr "Échec de lecture du nombre de chaînes\n"
+
+#: readelf.c:9076
+msgid "Failed to determine last chain length\n"
+msgstr "Ne peux pas déterminer la longueur de la dernière chaîne\n"
+
+#: readelf.c:9120
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"Table de symbole de l'image:\n"
+
+#: readelf.c:9122 readelf.c:9140
+#, 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:9124 readelf.c:9142
+#, 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:9138
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+"\n"
+"Table de symbole de l'image «.gnu.hash»:\n"
+
+#: readelf.c:9182
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' has a sh_entsize of zero!\n"
+msgstr ""
+"\n"
+"Table de symboles «%s» a un sh_entsize à zéro !\n"
+
+#: readelf.c:9187
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Table de symboles « %s » contient %lu entrées:\n"
+
+#: readelf.c:9192
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Num: Valeur Tail Type Lien Vis Ndx Nom\n"
+
+#: readelf.c:9194
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Num: Valeur Tail Type Lien Vis Ndx Nom\n"
+
+#: readelf.c:9249
+msgid "version data"
+msgstr "données de version"
+
+#: readelf.c:9298
+msgid "version need aux (3)"
+msgstr "version «need aux» (3)"
+
+#: readelf.c:9332
+msgid "bad dynamic symbol\n"
+msgstr "mauvais symbole dynamique\n"
+
+#: readelf.c:9404
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"L'information dynamique des symboles n'est pas disponible pour l'affichage des symboles.\n"
+
+#: readelf.c:9416
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Histogramme de la longueur de la liste des baquets (total de %lu baquets):\n"
+
+#: readelf.c:9418 readelf.c:9488
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " Long. Nombre %% de couverture totale\n"
+
+#: readelf.c:9486
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Histogramme de la longueur de la liste des baquets «.gnu.hash» (total de %lu baquets):\n"
+
+#: readelf.c:9552
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Segment d'informations dynamiques à l'adresse de décalage 0x%lx contient %d entrées:\n"
+
+#: readelf.c:9555
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr " Num: Nom Lier à Fanions\n"
+
+#: readelf.c:9564
+#, c-format
+msgid "<corrupt: %19ld>"
+msgstr "<corrompu: %19ld>"
+
+#: readelf.c:9646
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr "Type de réadressage MN10300 non géré après un réadressage SYM_DIFF"
+
+#: readelf.c:9813
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr "Types de réadressages 32 bits inconnus dans les sections DWARF de la machine %d\n"
+
+#: readelf.c:10138
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr "Incapable d'appliquer le type de réadressage non supporté %d à la section %s\n"
+
+#: readelf.c:10146
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "passe outre l'offset de réadressage invalide 0x%lx dans la section %s\n"
+
+#: readelf.c:10155
+#, c-format
+msgid "skipping invalid relocation symbol index 0x%lx in section %s\n"
+msgstr "passe outre l'indexe du symbole de réadressage 0x%lx invalide dans la section %s\n"
+
+#: readelf.c:10177
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr "passe outre le type de symbole inattendu %s dans le réadressage %ld de la section %s\n"
+
+#: readelf.c:10223
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"Vidange de la section assembleur %s\n"
+
+#: readelf.c:10244
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"La section « %s » n'a pas de données à être videngé.\n"
+
+#: readelf.c:10250
+msgid "section contents"
+msgstr "contenus de la section"
+
+#: readelf.c:10269
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+"\n"
+"Vidange textuelle de la section « %s »:\n"
+
+#: readelf.c:10287
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " Note: Cette section a des réadressages mais ils n'ont PAS été appliqués dans cette vidange.\n"
+
+#: readelf.c:10318
+#, c-format
+msgid " No strings found in this section."
+msgstr " Aucun texte trouvé dans cette section."
+
+#: readelf.c:10340
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"Vidange hexadécimale de la section « %s »:\n"
+
+#: readelf.c:10364
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " NOTE: Cette section a des réadressages mais ils n'ont PAS été appliqués dans cette vidange.\n"
+
+#: readelf.c:10498
+#, c-format
+msgid "%s section data"
+msgstr "données de section %s"
+
+#: readelf.c:10568
+#, 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"
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:10577
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr "la section «%s» a le type NOBITS - son contenu n'est pas fiable.\n"
+
+#: readelf.c:10613
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "Section de débug non reconnue: %s\n"
+
+#: readelf.c:10641
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr "La section «%s» n'a pas été vidangée parce qu'inexistante!\n"
+
+#: readelf.c:10682
+#, 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:10860 readelf.c:10874 readelf.c:10893 readelf.c:11293
+#, c-format
+msgid "None\n"
+msgstr "Aucun\n"
+
+#: readelf.c:10861
+#, c-format
+msgid "Application\n"
+msgstr "Application\n"
+
+#: readelf.c:10862
+#, c-format
+msgid "Realtime\n"
+msgstr "Temps réel\n"
+
+#: readelf.c:10863
+#, c-format
+msgid "Microcontroller\n"
+msgstr "Microcontrolleur\n"
+
+#: readelf.c:10864
+#, c-format
+msgid "Application or Realtime\n"
+msgstr "Application on temps réel\n"
+
+#: readelf.c:10875 readelf.c:10895 readelf.c:11347 readelf.c:11365
+#: readelf.c:11440 readelf.c:11461
+#, c-format
+msgid "8-byte\n"
+msgstr "8-octet\n"
+
+#: readelf.c:10876 readelf.c:11443 readelf.c:11464
+#, c-format
+msgid "4-byte\n"
+msgstr "4-octet\n"
+
+#: readelf.c:10880 readelf.c:10899
+#, c-format
+msgid "8-byte and up to %d-byte extended\n"
+msgstr "8-octet et plus jusqu'à une extension de %d-octet\n"
+
+#: readelf.c:10894
+#, c-format
+msgid "8-byte, except leaf SP\n"
+msgstr "8-octet, sauf pour feuille SP\n"
+
+#: readelf.c:10910 readelf.c:11000 readelf.c:11479
+#, c-format
+msgid "flag = %d, vendor = %s\n"
+msgstr "fanion = %d, vendeur = %s\n"
+
+#: readelf.c:10916
+#, c-format
+msgid "True\n"
+msgstr "Vrai\n"
+
+#: readelf.c:11045 readelf.c:11231
+#, c-format
+msgid "Hard or soft float\n"
+msgstr "Flottant matériel ou logiciel\n"
+
+#: readelf.c:11048
+#, c-format
+msgid "Hard float\n"
+msgstr "Flottant matériel\n"
+
+#: readelf.c:11051 readelf.c:11240
+#, c-format
+msgid "Soft float\n"
+msgstr "Flottant logiciel\n"
+
+#: readelf.c:11054
+#, c-format
+msgid "Single-precision hard float\n"
+msgstr "Flottant matériel simple précision\n"
+
+#: readelf.c:11071 readelf.c:11097
+#, c-format
+msgid "Any\n"
+msgstr "Au choix\n"
+
+#: readelf.c:11074
+#, c-format
+msgid "Generic\n"
+msgstr "Générique\n"
+
+#: readelf.c:11103
+#, c-format
+msgid "Memory\n"
+msgstr "Mémoire\n"
+
+#: readelf.c:11234
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr "Flottant matériel (double précision)\n"
+
+#: readelf.c:11237
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr "Flottant matériel (simple précision)\n"
+
+#: readelf.c:11243
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU)\n"
+msgstr "Flottant matériel (MIPS32r2 64-bit FPU)\n"
+
+#: readelf.c:11326
+#, c-format
+msgid "Not used\n"
+msgstr "Pas utilisé\n"
+
+#: readelf.c:11329
+#, c-format
+msgid "2 bytes\n"
+msgstr "2 octets\n"
+
+#: readelf.c:11332
+#, c-format
+msgid "4 bytes\n"
+msgstr "4 octets\n"
+
+#: readelf.c:11350 readelf.c:11368 readelf.c:11446 readelf.c:11467
+#, c-format
+msgid "16-byte\n"
+msgstr "16-octets\n"
+
+#: readelf.c:11383
+#, c-format
+msgid "DSBT addressing not used\n"
+msgstr "Adressage DSBT pas utilisé\n"
+
+#: readelf.c:11386
+#, c-format
+msgid "DSBT addressing used\n"
+msgstr "Adressage DSBT utilisé\n"
+
+#: readelf.c:11401
+#, c-format
+msgid "Data addressing position-dependent\n"
+msgstr "Adressage des données dépendant de la position\n"
+
+#: readelf.c:11404
+#, c-format
+msgid "Data addressing position-independent, GOT near DP\n"
+msgstr "Adressage des données indépendant de la position, GOT près de DP\n"
+
+#: readelf.c:11407
+#, c-format
+msgid "Data addressing position-independent, GOT far from DP\n"
+msgstr "Adressage des données indépendant de la position, GOT loin de DP\n"
+
+#: readelf.c:11422
+#, c-format
+msgid "Code addressing position-dependent\n"
+msgstr "Adressage de code dépendant de la position\n"
+
+#: readelf.c:11425
+#, c-format
+msgid "Code addressing position-independent\n"
+msgstr "Adressage de code indépendant de la position\n"
+
+#: readelf.c:11531
+msgid "attributes"
+msgstr "attributs"
+
+#: readelf.c:11552
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "ERREUR: longueur erronée de section (%d > %d)\n"
+
+#: readelf.c:11558
+#, c-format
+msgid "Attribute Section: %s\n"
+msgstr "Section d'Attribut: %s\n"
+
+#: readelf.c:11583
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "EREUR: longueur erronée de la sous-section (%d > %d)\n"
+
+#: readelf.c:11595
+#, c-format
+msgid "File Attributes\n"
+msgstr "Attributs du fichier\n"
+
+#: readelf.c:11598
+#, c-format
+msgid "Section Attributes:"
+msgstr "Attributs de Section:"
+
+#: readelf.c:11601
+#, c-format
+msgid "Symbol Attributes:"
+msgstr "Attributs de Symbols:"
+
+#: readelf.c:11616
+#, c-format
+msgid "Unknown tag: %d\n"
+msgstr "Tag inconnu: %d\n"
+
+#. ??? Do something sensible, like dump hex.
+#: readelf.c:11635
+#, c-format
+msgid " Unknown section contexts\n"
+msgstr " Contexte de section inconnu\n"
+
+#: readelf.c:11642
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "Format inconnu « %c »\n"
+
+#: readelf.c:11693 readelf.c:11715
+msgid "<unknown>"
+msgstr "<inconnu>"
+
+#: readelf.c:11810 readelf.c:12344
+msgid "liblist section data"
+msgstr "données de section liblist"
+
+#: readelf.c:11813
+#, c-format
+msgid ""
+"\n"
+"Section '.liblist' contains %lu entries:\n"
+msgstr ""
+"\n"
+"La section « .liblist » contient %lu entrées:\n"
+
+#: readelf.c:11815
+msgid " Library Time Stamp Checksum Version Flags\n"
+msgstr " Librarie Horodatage Checksum Version Fanions\n"
+
+#: readelf.c:11841
+#, c-format
+msgid "<corrupt: %9ld>"
+msgstr "<corrompu: %9ld>"
+
+#: readelf.c:11846
+msgid " NONE"
+msgstr " AUCUN"
+
+#: readelf.c:11897
+msgid "options"
+msgstr "options"
+
+#: readelf.c:11928
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Section « %s » contient %d entrées:\n"
+
+#: readelf.c:12089
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr "conflit de liste repéré sans symbole de table dynamique\n"
+
+#: readelf.c:12106 readelf.c:12121
+msgid "conflict"
+msgstr "conflit"
+
+#: readelf.c:12131
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"La section « .conflict » contient %lu entrées:\n"
+
+#: readelf.c:12133
+msgid " Num: Index Value Name"
+msgstr " Nombre: Index Valeur Nom"
+
+#: readelf.c:12145 readelf.c:12234 readelf.c:12305
+#, c-format
+msgid "<corrupt: %14ld>"
+msgstr "<corrompu: %14ld>"
+
+#: readelf.c:12167
+msgid "Global Offset Table data"
+msgstr "Données table d'offsets globale (GOT)"
+
+#: readelf.c:12171
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+"\n"
+"TOG principale:\n"
+
+#: readelf.c:12172
+#, c-format
+msgid " Canonical gp value: "
+msgstr " Valeur gp canonique: "
+
+#: readelf.c:12176 readelf.c:12276
+#, c-format
+msgid " Reserved entries:\n"
+msgstr " Entrées réservées:\n"
+
+#: readelf.c:12177
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr " %*s %10s %*s Purpose\n"
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12211 readelf.c:12278
+#: readelf.c:12287
+msgid "Address"
+msgstr "Adresse"
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12212
+msgid "Access"
+msgstr "Accès"
+
+#: readelf.c:12179 readelf.c:12196 readelf.c:12213 readelf.c:12278
+#: readelf.c:12288
+msgid "Initial"
+msgstr "Initial"
+
+#: readelf.c:12181
+#, c-format
+msgid " Lazy resolver\n"
+msgstr " Résolution différée\n"
+
+#: readelf.c:12187
+#, c-format
+msgid " Module pointer (GNU extension)\n"
+msgstr " Pointer de module (extension GNU)\n"
+
+#: readelf.c:12193
+#, c-format
+msgid " Local entries:\n"
+msgstr " Entrées locales:\n"
+
+#: readelf.c:12209
+#, c-format
+msgid " Global entries:\n"
+msgstr " Entrées globales:\n"
+
+#: readelf.c:12214 readelf.c:12289
+msgid "Sym.Val."
+msgstr "Val.Sym."
+
+#. Note for translators: "Ndx" = abbreviated form of "Index".
+#: readelf.c:12217 readelf.c:12289
+msgid "Ndx"
+msgstr "Ndx"
+
+#: readelf.c:12217 readelf.c:12289
+msgid "Name"
+msgstr "Nom"
+
+#: readelf.c:12271
+msgid "Procedure Linkage Table data"
+msgstr "Données table de liaisons des procédures"
+
+#: readelf.c:12277
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr " %*s %*s Purpose\n"
+
+#: readelf.c:12280
+#, c-format
+msgid " PLT lazy resolver\n"
+msgstr " Solveur différé de la PLT\n"
+
+#: readelf.c:12282
+#, c-format
+msgid " Module pointer\n"
+msgstr " Pointer du module\n"
+
+#: readelf.c:12285
+#, c-format
+msgid " Entries:\n"
+msgstr " Entrées:\n"
+
+#: readelf.c:12352
+msgid "liblist string table"
+msgstr "table de chaînes liblist"
+
+#: readelf.c:12362
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Liste de libraire de la section « %s » contenant %lu entrées:\n"
+
+#: readelf.c:12366
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr " Librarie Horodatage Checksum Version Fanions"
+
+#: readelf.c:12416
+msgid "NT_AUXV (auxiliary vector)"
+msgstr "NT_AUXV (vecteur auxiliaire)"
+
+#: readelf.c:12418
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (structure prstatus)"
+
+#: readelf.c:12420
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (régistres en virgule flottante)"
+
+#: readelf.c:12422
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (structure prpsinfo)"
+
+#: readelf.c:12424
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (structure de taches)"
+
+#: readelf.c:12426
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (structure user_xfpregs)"
+
+#: readelf.c:12428
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr "NT_PPC_VMX (registres ppc Altivec)"
+
+#: readelf.c:12430
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr "NT_PPC_VSX (registres ppc VSX)"
+
+#: readelf.c:12432
+msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
+msgstr "NT_X86_XSTATE (état étendu x86 XSAVE)"
+
+#: readelf.c:12434
+msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
+msgstr "NT_S390_HIGH_GPRS (moitiés supérieures des registres du s390)"
+
+#: readelf.c:12436
+msgid "NT_S390_TIMER (s390 timer register)"
+msgstr "NT_S390_TIMER (registre du timer du s390)"
+
+#: readelf.c:12438
+msgid "NT_S390_TODCMP (s390 TOD comparator register)"
+msgstr "NT_S390_TODCMP (registre du comparateur TOD du s390)"
+
+#: readelf.c:12440
+msgid "NT_S390_TODPREG (s390 TOD programmable register)"
+msgstr "NT_S390_TODPREG (registre programmable du TOD du s390)"
+
+#: readelf.c:12442
+msgid "NT_S390_CTRS (s390 control registers)"
+msgstr "NT_S390_CTRS (registres de contrôle du s390)"
+
+#: readelf.c:12444
+msgid "NT_S390_PREFIX (s390 prefix register)"
+msgstr "NT_S390_PREFIX (registre de préfixe du s390)"
+
+#: readelf.c:12446
+msgid "NT_ARM_VFP (arm VFP registers)"
+msgstr "NT_ARM_VFP (registre arm VFP)"
+
+#: readelf.c:12448
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (structure pstatus)"
+
+#: readelf.c:12450
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (registres en virgule flottante)"
+
+#: readelf.c:12452
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (structure psinfo)"
+
+#: readelf.c:12454
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (structure lwpstatus_t)"
+
+#: readelf.c:12456
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (structure lwpsinfo_t)"
+
+#: readelf.c:12458
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (structure win32_pstatus)"
+
+#: readelf.c:12466
+msgid "NT_VERSION (version)"
+msgstr "NT_VERSION (version)"
+
+#: readelf.c:12468
+msgid "NT_ARCH (architecture)"
+msgstr "NT_ARCH (architecture)"
+
+#: readelf.c:12473 readelf.c:12496 readelf.c:12575 readelf.c:12633
+#: readelf.c:12710
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "Type de note inconnu: (0x%08x)"
+
+#: readelf.c:12485
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr "NT_GNU_ABI_TAG (étiquette de version ABI)"
+
+#: readelf.c:12487
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr "NT_GNU_HWCAP (information HWCAP du logiciel fournie par le DSO)"
+
+#: readelf.c:12489
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr "NT_GNU_BUILD_ID (chaîne de bits du ID de construction unique)"
+
+#: readelf.c:12491
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr "NT_GNU_GOLD_VERSION (version d'or)"
+
+#: readelf.c:12509
+#, c-format
+msgid " Build ID: "
+msgstr " ID construction: "
+
+#: readelf.c:12548
+#, c-format
+msgid " OS: %s, ABI: %ld.%ld.%ld\n"
+msgstr " OS: %s, ABI: %ld.%ld.%ld\n"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:12565
+msgid "NetBSD procinfo structure"
+msgstr "structure proinfo NetBSD"
+
+#: readelf.c:12592 readelf.c:12606
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (structure reg)"
+
+#: readelf.c:12594 readelf.c:12608
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPPREGS (structure fpreg)"
+
+#: readelf.c:12627
+msgid "NT_STAPSDT (SystemTap probe descriptors)"
+msgstr "NT_STAPSDT (descripteurs de sonde SystemTap)"
+
+#: readelf.c:12660
+#, c-format
+msgid " Provider: %s\n"
+msgstr " Fournisseur: %s\n"
+
+#: readelf.c:12661
+#, c-format
+msgid " Name: %s\n"
+msgstr " Nom: %s\n"
+
+#: readelf.c:12662
+#, c-format
+msgid " Location: "
+msgstr " Emplacement: "
+
+#: readelf.c:12664
+#, c-format
+msgid ", Base: "
+msgstr ", Base: "
+
+#: readelf.c:12666
+#, c-format
+msgid ", Semaphore: "
+msgstr ", Semaphore: "
+
+#: readelf.c:12669
+#, c-format
+msgid " Arguments: %s\n"
+msgstr " Arguments: %s\n"
+
+#: readelf.c:12682
+msgid "NT_VMS_MHD (module header)"
+msgstr "NT_VMS_MHD (en-tête de module)"
+
+#: readelf.c:12684
+msgid "NT_VMS_LNM (language name)"
+msgstr "NT_VMS_LNM (nom du langage)"
+
+#: readelf.c:12686
+msgid "NT_VMS_SRC (source files)"
+msgstr "NT_VMS_SRC (fichiers source)"
+
+#: readelf.c:12690
+msgid "NT_VMS_EIDC (consistency check)"
+msgstr "NT_VMS_EIDC (vérification de cohérence)"
+
+#: readelf.c:12692
+msgid "NT_VMS_FPMODE (FP mode)"
+msgstr "NT_VMS_FPMODE (mode FP)"
+
+#: readelf.c:12696
+msgid "NT_VMS_IMGNAM (image name)"
+msgstr "NT_VMS_IMGNAM (nom de l'image)"
+
+#: readelf.c:12698
+msgid "NT_VMS_IMGID (image id)"
+msgstr "NT_VMS_IMGID (id de l'image)"
+
+#: readelf.c:12700
+msgid "NT_VMS_LINKID (link id)"
+msgstr "NT_VMS_LINKID (id du lien)"
+
+#: readelf.c:12702
+msgid "NT_VMS_IMGBID (build id)"
+msgstr "NT_VMS_IMGBID (id de construction)"
+
+#: readelf.c:12704
+msgid "NT_VMS_GSTNAM (sym table name)"
+msgstr "NT_VMS_GSTNAM (nom de la table des symboles)"
+
+#: readelf.c:12724
+#, c-format
+msgid " Creation date : %.17s\n"
+msgstr " Date création : %.17s\n"
+
+#: readelf.c:12725
+#, c-format
+msgid " Last patch date: %.17s\n"
+msgstr " Date dernier correctif: %.17s\n"
+
+#: readelf.c:12726
+#, c-format
+msgid " Module name : %s\n"
+msgstr " Nom du module : %s\n"
+
+#: readelf.c:12727
+#, c-format
+msgid " Module version : %s\n"
+msgstr " Version du module: %s\n"
+
+#: readelf.c:12730
+#, c-format
+msgid " Invalid size\n"
+msgstr " Taille invalide\n"
+
+#: readelf.c:12733
+#, c-format
+msgid " Language: %s\n"
+msgstr " Langage: %s\n"
+
+#: readelf.c:12737
+#, c-format
+msgid " Floating Point mode: "
+msgstr " Mode virgule flottante: "
+
+#: readelf.c:12742
+#, c-format
+msgid " Link time: "
+msgstr " Heure du lien: "
+
+#: readelf.c:12748
+#, c-format
+msgid " Patch time: "
+msgstr " Heure correctif: "
+
+#: readelf.c:12754
+#, c-format
+msgid " Major id: %u, minor id: %u\n"
+msgstr " Id majeur: %u, id mineur: %u\n"
+
+#: readelf.c:12757
+#, c-format
+msgid " Last modified : "
+msgstr " Dernière modification: "
+
+#: readelf.c:12760
+#, c-format
+msgid ""
+"\n"
+" Link flags : "
+msgstr ""
+"\n"
+" Fanions de lien : "
+
+#: readelf.c:12763
+#, c-format
+msgid " Header flags: 0x%08x\n"
+msgstr " Fanions en-tête: 0x%08x\n"
+
+#: readelf.c:12765
+#, c-format
+msgid " Image id : %s\n"
+msgstr " Id image : %s\n"
+
+#: readelf.c:12769
+#, c-format
+msgid " Image name: %s\n"
+msgstr " Nom image : %s\n"
+
+#: readelf.c:12772
+#, c-format
+msgid " Global symbol table name: %s\n"
+msgstr " Nom table symboles globale: %s\n"
+
+#: readelf.c:12775
+#, c-format
+msgid " Image id: %s\n"
+msgstr " Id image: %s\n"
+
+#: readelf.c:12778
+#, c-format
+msgid " Linker id: %s\n"
+msgstr " Id lieur: %s\n"
+
+#: readelf.c:12853
+msgid "notes"
+msgstr "notes"
+
+#: readelf.c:12859
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"Notes au décalage 0x%08lx de longueur 0x%08lx:\n"
+
+#: readelf.c:12861
+#, c-format
+msgid " %-20s %10s\tDescription\n"
+msgstr " %-20s %10s\tDescription\n"
+
+#: readelf.c:12861
+msgid "Owner"
+msgstr "Propriétaire"
+
+#: readelf.c:12861
+msgid "Data size"
+msgstr "Taille des données"
+
+#: readelf.c:12899 readelf.c:12912
+#, c-format
+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:12901 readelf.c:12914
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " type: %lx, taille des noms: %08lx, taille de descriptions: %08lx\n"
+
+#: readelf.c:13010
+#, 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:13102
+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"
+msgstr ""
+"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:13149
+#, 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:13163
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Fichier: %s\n"
+
+#: readelf.c:13335
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr "%s: impossible de sortir l'index car il n'y en a pas\n"
+
+#: readelf.c:13341
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr "Index de l'archive %s: (%ld entrées, 0x%lx octets dans la table des symboles)\n"
+
+#: readelf.c:13359
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr "Le binaire %s contient:\n"
+
+#: readelf.c:13367
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr "%s: fin de la table des symboles atteinte avant la fin de l'index\n"
+
+#: readelf.c:13378
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr "%s: des symboles de l'index de la table des symboles n'ont pas d'entrée correspondante dans la table de l'index\n"
+
+#: readelf.c:13383
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr "%s: échec du retour au début des fichiers objets dans l'archive\n"
+
+#: readelf.c:13466 readelf.c:13549
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr "Fichier d'entrée %s n'est pas lisible.\n"
+
+#: readelf.c:13488
+#, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr "%s: échec de repérage du membre de l'archive.\n"
+
+#: readelf.c:13567
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr "Le fichier %s n'est pas une archive donc son index ne peut pas être affiché.\n"
+
+#: rename.c:124
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s: ne peut initialisé l'heure: %s"
+
+#. We have to clean up here.
+#: rename.c:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr "incapable de renommer «%s» pour la raison: %s"
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr "incapable de copier le fichier «%s» pour la raisoin: %s"
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: pas assez de données binaires"
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr "chaîne unicode terminée par un null"
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr "IDentificateur de ressource"
+
+#: resbin.c:208
+msgid "cursor"
+msgstr "curseur"
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr "en-tête de menu"
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr "en-tête menuex"
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr "décalage menuex"
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "version de menu non supportée %d"
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr "en-tête d'item du menu"
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr "item du menu"
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr "en-tête de dialogue"
+
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "version DIALOGEX inattendue %d"
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr "taille en point de fonte de dialogue"
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr "information de fonte de type dialogex"
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr "contrôle de dialogue"
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr "contrôle dialogex"
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr "fin de contrôle du dialogue"
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr "données de contrôle du dialogue"
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr "longueur de chaîne de la table des chaînes"
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr "chaîne de la table des chaînes"
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr "en-tête fontdir"
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr "fontdir"
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr "nom du périphérique fontdir"
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr "nom de la sélection du répertoire de fontes"
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr "accélérateur"
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr "en-tête du groupe de curseurs"
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "type de groupe de curseur inattendu %d"
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr "groupe de curseur"
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr "en-tête du groupe d'icônes"
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "type de groupe d'icône inattendu %d"
+
+#: resbin.c:871
+msgid "group icon"
+msgstr "groupe d'icônes"
+
+#: resbin.c:935 resbin.c:1173
+msgid "unexpected version string"
+msgstr "chaîne de version inattendue"
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "longueur de la version %d ne concorde pas avec la longueur de la ressource %lu"
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr "type de version inattendu %d"
+
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr "longueur d'information fixe de version inattendue %ld"
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr "information fixe de version"
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "signature de version fixe inattendue %lu"
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "information de version inattendue dans la version fixe %lu"
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr "information de variable de version"
+
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr "longueur de la valeur stringfileinfo inattendue %ld"
+
+#: resbin.c:1059
+msgid "version stringtable"
+msgstr "version stringtable"
+
+#: resbin.c:1067
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr "longueur inattendue de la valeur de la table de chaîne de version %ld"
+
+#: resbin.c:1084
+msgid "version string"
+msgstr "chaîne de version"
+
+#: resbin.c:1101
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr "longueur inattendue de la chaîne de version %ld != %ld +%ld"
+
+#: resbin.c:1108
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr "longueur inattendue de la chaîne de version %ld < %ld"
+
+#: resbin.c:1133
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr "longueur inattendue de la chaîne varfileinfo %ld"
+
+#: resbin.c:1152
+msgid "version varfileinfo"
+msgstr "version varfileinfo"
+
+#: resbin.c:1167
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr "longueur inattendue de la chaîne de version %ld"
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr "nom de fichier requis pour l'entrée COFF"
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: aucune section ressource"
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: adresse est hors limite"
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "répertoire"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "nom du répertoire d'entrée"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "nom de l'entrée du répertoire"
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "nom de sous-répertoire"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "nom de ressource"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "IDentificateur d'entrée de répertoire"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "IDentificateur de sous-répertoire"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "IDentificateur ressource"
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr "type de ressource inconnue"
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr "aucune donnée"
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr "donnée ressource"
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr "taille de données ressources"
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr "nom de fichier requis pour la sortie de COFF"
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "ne peut obtenir le type de réadressage BFD_RELOC_RVA"
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "ne peut ouvrir un fichier temporaire « %s »: %s"
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "ne peut rediriger sur stdout: « %s »: %s"
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "ne peut exécuter « %s »: %s"
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "Utilisation d'un fichier temporaire « %s » pour lire la sortie du préprocesseur\n"
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "ne peut ouvrir un pipe par popen() « %s »: %s"
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "Utilisation de popen pour lire la sortie du préprocesseur\n"
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "Essayé « %s »\n"
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr "Utilisation de « %s »\n"
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr "échec du pré-traitement."
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: fin de fichier EOF prématuré"
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: lecture de %lu retourné %lu"
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "échec d'évaluation par stat() du fichier bitmap « %s »: %s"
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "fichier curseur « %s » ne contient aucune donnée de type curseur"
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: échec %lu de repérage: %s"
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr "identificateur d'aide requiert DIALOGEX"
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr "donnée de contrôle requiert DIALOGEX"
+
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "échec d'évaluation par stat() du fichier de fontes « %s »: %s"
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "fichier d'icônes « %s » ne contient pas de données de type icône"
+
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "échec d'évaluation par stat() sur le fichier « %s »: %s"
+
+#: resrc.c:1958
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "ne peut ouvrir « %s » pour la sortie: %s"
+
+#: size.c:79
+#, 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:80
+#, 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:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+" Les options sont:\n"
+" -A|-B --format={sysv|berkeley} sélection le style de sortie (par défaut %s)\n"
+" -o|-d|-x --radix={8|10|16} afficher les nombres en octal, décimal ou hexadécimal\n"
+" -t --totals afficher les tailles totales (Berkeley seulement)\n"
+" --common afficher la taille total pour les symboles *COM*\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:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "argument invalide pour --format: %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Base numérique invalide: %s\n"
+
+#: srconv.c:1733
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "Convertir un fichier objet COFF en un fichier objet SYSROFF\n"
+
+#: srconv.c:1734
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+"Les options sont:\n"
+" -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:1880
+#, c-format
+msgid "unable to open output file %s"
+msgstr "incapable d'ouvrir le fichier de sortie %s"
+
+#: stabs.c:328 stabs.c:1717
+msgid "numeric overflow"
+msgstr "débordement numérique"
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "Mauvaise inclusion (« stab »): %s\n"
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "AVERTISSEMENT: %s: %s\n"
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC n'est pas dans la fonction\n"
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "Trop de N_RBRAC\n"
+
+#: stabs.c:727
+msgid "unknown C++ encoded name"
+msgstr "nom encode C++ inconnu"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1262
+msgid "unrecognized cross reference type"
+msgstr "type de référence croisée non reconnue"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1809
+msgid "missing index type"
+msgstr "type d'index manquant"
+
+#: stabs.c:2129
+msgid "unknown virtual character for baseclass"
+msgstr "caractère virtuel inconnu pour la classe de base"
+
+#: stabs.c:2147
+msgid "unknown visibility character for baseclass"
+msgstr "caractère de visibilité inconnu pour la classe de base"
+
+#: stabs.c:2337
+msgid "unnamed $vb type"
+msgstr "type $vb inconnu"
+
+#: stabs.c:2343
+msgid "unrecognized C++ abbreviation"
+msgstr "abréviation C++ inconnue"
+
+#: stabs.c:2419
+msgid "unknown visibility character for field"
+msgstr "caractère de visibilité inconnu pour le champ"
+
+#: stabs.c:2679
+msgid "const/volatile indicator missing"
+msgstr "indicateur de const/volatile manquant"
+
+#: stabs.c:2924
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "Pas de mutilation pour \"n%s\"\n"
+
+#: stabs.c:3224
+msgid "Undefined N_EXCL"
+msgstr "N_EXCL indéfini"
+
+#: stabs.c:3304
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "Nombre de type de fichier %d hors limite\n"
+
+#: stabs.c:3309
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Nombre de type index %d hors limite\n"
+
+#: stabs.c:3388
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "Type XCOFF non reconnu %d\n"
+
+#: stabs.c:3680
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "mauvais codage par mutilation du nom « %s »\n"
+
+#: stabs.c:3775
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "aucun type d'argument dans la chaîne encodé par mutilation\n"
+
+#: stabs.c:5125
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "nom démutilé n'est pas une fonction\n"
+
+#: stabs.c:5167
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "Type inattendu dans la arglist v3 en démutilation\n"
+
+#: stabs.c:5234
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "Composant de démutilation non reconnu %d\n"
+
+#: stabs.c:5286
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "Échec d'affichage du modèle de démutilation\n"
+
+#: stabs.c:5366
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "N'a pu obtenir le type de démutilation construit\n"
+
+#: stabs.c:5415
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "Varargs inattendu de démutilation\n"
+
+#: stabs.c:5422
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "type de construit de démutilation non reconnu\n"
+
+#: strings.c:186 strings.c:245
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "argument en valeur entière invalide %s"
+
+#: strings.c:248
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr "longueur minimum de chaîne %d invalide"
+
+#: strings.c:651
+#, 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:652
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+" Les options sont:\n"
+" -a - --all scruter entièrement le fichier, pas seulement les sections de données\n"
+" -f --print-file-name afficher le nom du fichier avant chaque chaîne\n"
+" -n --bytes=[nombre] localiser et afficher toute séquence terminée par NULL d'au\n"
+" -<nombre> moins [nombre] caractères (par défault 4).\n"
+" -t --radix={o,d,x} afficher la localisation de la chaîne en base 8, 10 ou 16\n"
+" -o un alias pour --radix=o\n"
+" -T --target=<NOMBFD> spécifier le format du fichier binaire\n"
+" -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 = 7-bits, 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 -V --version afficher la version du logiciel\n"
+
+#: sysdump.c:66
+msgid "*undefined*"
+msgstr "*non défini*"
+
+#: sysdump.c:137
+#, c-format
+msgid "SUM IS %x\n"
+msgstr "SOMME EST %x\n"
+
+#: sysdump.c:503
+#, c-format
+msgid "GOT A %x\n"
+msgstr "OBTENU %x\n"
+
+#: sysdump.c:521
+#, c-format
+msgid "WANTED %x!!\n"
+msgstr "REQUIS %x !!\n"
+
+#: sysdump.c:539
+msgid "SYMBOL INFO"
+msgstr "INFO SYMBOLE"
+
+#: sysdump.c:557
+msgid "DERIVED TYPE"
+msgstr "TYPE DÉRIVÉ"
+
+#: sysdump.c:614
+msgid "MODULE***\n"
+msgstr "MODULE***\n"
+
+#: sysdump.c:647
+#, 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:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+"Les options sont:\n"
+" -h --help afficher l'aide-mémoire\n"
+" -v --version afficher le nom et la version du logiciel\n"
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "ne peut ouvrir le fichier d'entrée %s"
+
+#: version.c:36
+#, c-format
+msgid "Copyright 2011 Free Software Foundation, Inc.\n"
+msgstr "Copyright 2011 Free Software Foundation, Inc.\n"
+
+#: version.c:37
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"Ce logiciel est libre; vous pouvez le redistribuer selon les termes de la\n"
+"version 3 de la licence GNU General Public License ou (à votre discrétion)\n"
+"de toute version ultérieure. Aucune garantie n'est donnée sur ce programme.\n"
+
+#: windmc.c:190
+#, c-format
+msgid "can't create %s file `%s' for output.\n"
+msgstr "ne peut créer le fichier « %s » « %s » pour la sortie.\n"
+
+#: windmc.c:198
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr "Usage: %s [option(s)] [fichier]\n"
+
+#: windmc.c:200
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianness.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+" Les options sont:\n"
+" -a --ascii_in Lit le fichier d'entrée en ASCII\n"
+" -A --ascii_out Écrit les messages binaires en ASCII\n"
+" -b --binprefix Le nom de fichier .bin est prefixé par .mc filename_ pour être univoque.\n"
+" -c --customflag Utilise les fanions personnels pour les messages\n"
+" -C --codepage_in=<val> Choisi le codepage lors de la lecture du fichier texte mc\n"
+" -d --decimal_values Affiche les valeurs du fichier texte en décimal\n"
+" -e --extension=<extension> Choisi l'extension de l'en-tête utilisée pour exporter l'en-tête du fichier\n"
+" -F --target <cible> Spécifie l'ordre des octets (endianess) de la sortie.\n"
+" -h --headerdir=<répertoire> Choisi le répertoire pour exporter les en-têtes\n"
+" -u --unicode_in Lit le fichier d'entrée en UTF16\n"
+" -U --unicode_out Écrit les messages binaires en UFT16\n"
+" -m --maxlength=<val> Fixe la longueur maximum des messages\n"
+" -n --nullterminate Ajoute automatiquement un zéro à la fin des chaînes\n"
+" -o --hresult_use Utilise la définition de HRESULT au lieu de la définition du code de statut\n"
+" -O --codepage_out=<val> Choisi le codepage pour écrire les fichiers textes\n"
+" -r --rcdir=<répertoire> Choisi le répertoire où exporter les fichiers rc\n"
+" -x --xdbg=<répertoire> Où créer le fichier include .dbg du C qui établit\n"
+" la correspondance entre les ID des messages et leurs noms symboliques.\n"
+
+#: windmc.c:220
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+" -H --help Afficher l'aide-mémoire\n"
+" -v --verbose Bavard - il vous dit ce qu'il fait\n"
+" -V --version Afficher le nom et la version du logiciel\n"
+
+#: windmc.c:261 windres.c:411
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: AVERTISSEMENT: "
+
+#: windmc.c:262
+#, c-format
+msgid "A codepage was specified switch `%s' and UTF16.\n"
+msgstr "Un codepage a été spécifié inverse « %s » et UTF16.\n"
+
+#: windmc.c:263
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr "\tles paramètres de codepage sont ignorés.\n"
+
+#: windmc.c:307
+msgid "try to add a ill language."
+msgstr "tentative d'ajouter un mauvais langage."
+
+#: windmc.c:1116
+#, c-format
+msgid "unable to open file `%s' for input.\n"
+msgstr "impossible d'ouvrir le fichier « %s » en entrée.\n"
+
+#: windmc.c:1124
+#, c-format
+msgid "unable to read contents of %s"
+msgstr "incapable de lire le contenu de %s"
+
+#: windmc.c:1136
+msgid "input file does not seems to be UFT16.\n"
+msgstr "le fichier d'entrée ne semble pas être en UTF16.\n"
+
+#: windres.c:216
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "ne peut ouvrir %s « %s »: %s"
+
+#: windres.c:390
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": espérait un répertoire\n"
+
+#: windres.c:402
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": espérait une feuille\n"
+
+#: windres.c:413
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": valeur dupliquée\n"
+
+#: windres.c:563
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "type de format inconnu « %s »"
+
+#: windres.c:564
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: formats supportés:"
+
+#. Otherwise, we give up.
+#: windres.c:647
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "ne peut déterminer le type de fichier « %s »; utiliser l'option -J"
+
+#: windres.c:659
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Usage: %s [options] [fichier-d-entrée] [fichier-de-sortie]\n"
+
+#: windres.c:661
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" --preprocessor-arg=<arg> Additional preprocessor argument\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+" Les options sont:\n"
+" -i --input=<fichier> nommer le fichier d'entrée\n"
+" -o --output=<fichier> nommer le fichier de sortie\n"
+" -J --input-format=<format> spécifier le format d'entrée\n"
+" -O --output-format=<format> spécifier le format de sortie\n"
+" -F --target=<cible> spécifier la cible COFF\n"
+" --preprocessor=<programme> programme à utiliser pour pré-traiter le fichier rc\n"
+" --preprocessor-arg=<arg> argument supplémentaire à passer au pré processeur\n"
+" -I --include-dir=<répertoire> inclure le répertoire lors du pré-traitement du fichier rc\n"
+" -D --define SYM[=<val>] définir le symbole lors du pré-traitement du fichier rc\n"
+" -U --undefine <sym> annuler le symbole lors du pré-traitement du fichier rc\n"
+" -v --verbose utiliser le mode bavard\n"
+" -c --codepage=<codepage> indique le code de page par défaut\n"
+" -l --language=<val> initialiser le langage lors de la lecture du fichier rc\n"
+" --use-temp-file utiliser un fichier temporaire au lieu de la lecture via\n"
+" popen de la sortie du pré-processeur\n"
+" --no-use-temp-file utiliser popen (par défaut)\n"
+
+#: windres.c:679
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug activer le mode de débug de l'analyseur syntaxique\n"
+
+#: windres.c:682
+#, 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:687
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"FORMAT est soit rc, res, ou coff, et est dédui à partir l'extension\n"
+"du nom de fichier, si non spécifié. Un nom simple de fichier comme fichier d'entrée\n"
+"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:850
+msgid "invalid codepage specified.\n"
+msgstr "mauvais codepage spécifié.\n"
+
+#: windres.c:865
+msgid "invalid option -f\n"
+msgstr "option invalide -f\n"
+
+#: windres.c:870
+msgid "No filename following the -fo option.\n"
+msgstr "Pas de nom de fichier après l'option -fo.\n"
+
+#: windres.c:959
+#, 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:1072
+msgid "no resources"
+msgstr "aucune ressource"
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "échec de string_hash_lookup: %s"
+
+#: wrstabs.c:637
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: mauvaise taille %u"
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: AVERTISSEMENT: taille inconnue pour le champ « %s » dans le struct"
+
+#~ msgid "(%s"
+#~ msgstr "(%s"
+
+#~ msgid ",%s"
+#~ msgstr ",%s"
+
+#~ msgid ",%s)\n"
+#~ msgstr ",%s)\n"
+
+#~ msgid " o_mflag (magic): 0x%04x 0%04o\n"
+#~ msgstr " o_mflag (magic): 0x%04x 0%04o\n"
+
+#~ msgid " o_vstamp: 0x%04x\n"
+#~ msgstr " o_vstamp: 0x%04x\n"
+
+#~ msgid " o_tsize: 0x%08x\n"
+#~ msgstr " o_tsize: 0x%08x\n"
+
+#~ msgid " o_dsize: 0x%08x\n"
+#~ msgstr " o_dsize: 0x%08x\n"
+
+#~ msgid " o_entry: 0x%08x\n"
+#~ msgstr " o_entry: 0x%08x\n"
+
+#~ msgid " o_text_start: 0x%08x\n"
+#~ msgstr " o_text_start: 0x%08x\n"
+
+#~ msgid " o_data_start: 0x%08x\n"
+#~ msgstr " o_data_start: 0x%08x\n"
+
+#~ msgid " o_toc: 0x%08x\n"
+#~ msgstr " o_toc: 0x%08x\n"
+
+#~ msgid " o_snentry: 0x%04x\n"
+#~ msgstr " o_snentry: 0x%04x\n"
+
+#~ msgid " o_sntext: 0x%04x\n"
+#~ msgstr " o_sntext: 0x%04x\n"
+
+#~ msgid " o_sndata: 0x%04x\n"
+#~ msgstr " o_sndata: 0x%04x\n"
+
+#~ msgid " o_sntoc: 0x%04x\n"
+#~ msgstr " o_sntoc: 0x%04x\n"
+
+#~ msgid " o_snloader: 0x%04x\n"
+#~ msgstr " o_snloader: 0x%04x\n"
+
+#~ msgid " o_snbss: 0x%04x\n"
+#~ msgstr " o_snbss: 0x%04x\n"
+
+#~ msgid " o_algntext: %u\n"
+#~ msgstr " o_algntext: %u\n"
+
+#~ msgid " o_algndata: %u\n"
+#~ msgstr " o_algndata: %u\n"
+
+#~ msgid " o_modtype: 0x%04x"
+#~ msgstr " o_modtype: 0x%04x"
+
+#~ msgid " o_cputype: 0x%04x\n"
+#~ msgstr " o_cputype: 0x%04x\n"
+
+#~ msgid " o_maxstack: 0x%08x\n"
+#~ msgstr " o_maxstack: 0x%08x\n"
+
+#~ msgid " o_maxdata: 0x%08x\n"
+#~ msgstr " o_maxdata: 0x%08x\n"
+
+#~ msgid " o_debugger: 0x%08x\n"
+#~ msgstr " o_debugger: 0x%08x\n"
+
+#~ msgid " # Name paddr vaddr size scnptr relptr lnnoptr nrel nlnno\n"
+#~ msgstr " # Nom paddr vaddr taille scnptr relptr lnnoptr nrel nlnno\n"
+
+#~ msgid "%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n"
+#~ msgstr "%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n"
+
+#~ msgid " exptr: %08x fsize: %08x lnnoptr: %08x endndx: %u\n"
+#~ msgstr " exptr: %08x fsize: %08x lnnoptr: %08x endndx: %u\n"
+
+#~ msgid " scnsym: %-8u"
+#~ msgstr " scnsym: %-8u"
+
+#~ msgid " scnlen: %08x"
+#~ msgstr " scnlen: %08x"
+
+#~ msgid " h: parm=%08x sn=%04x al: 2**%u"
+#~ msgstr " h: parm=%08x sn=%04x al: 2**%u"
+
+#~ msgid " typ: "
+#~ msgstr " typ: "
+
+#~ msgid " cl: "
+#~ msgstr " cl: "
+
+#~ msgid " ftype: %02x "
+#~ msgstr " ftype: %02x "
+
+#~ msgid "fname: %.14s"
+#~ msgstr "fname: %.14s"
+
+#~ msgid " %s"
+#~ msgstr " %s"
+
+#~ msgid " lnno: %u\n"
+#~ msgstr " lnno: %u\n"
+
+#~ msgid "vaddr sgn mod sz type symndx symbol\n"
+#~ msgstr "vaddr sgn mod sz type symndx symbole\n"
+
+#~ msgid "%08x %c %c %-2u "
+#~ msgstr "%08x %c %c %-2u "
+
+#~ msgid " %-6u "
+#~ msgstr " %-6u "
+
+#~ msgid " # value sc IFEW ty class file pa name\n"
+#~ msgstr " # valeur sc IFEW ty classe fichier pa nom\n"
+
+#~ msgid " vaddr sec sz typ sym\n"
+#~ msgstr " vaddr sec sz typ sym\n"
+
+#~ msgid " %08x %3u %c%c %2u "
+#~ msgstr " %08x %3u %c%c %2u "
+
+#~ msgid ".text"
+#~ msgstr ".text"
+
+#~ msgid ".data"
+#~ msgstr ".data"
+
+#~ msgid ".bss"
+#~ msgstr ".bss"
+
+#~ msgid "%u"
+#~ msgstr "%u"
+
+#~ msgid "lang reason sym/addr\n"
+#~ msgstr "lang raison sym/adr\n"
+
+#~ msgid " %02x %02x "
+#~ msgstr " %02x %02x "
+
+#~ msgid "@%08x"
+#~ msgstr "@%08x"
+
+#~ msgid "offset len lang-id general-hash language-hash\n"
+#~ msgstr "offset lon lang-id general-hash langage-hash\n"
+
+#~ msgid " version: %u, lang: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n"
+#~ msgstr " version: %u, lang: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n"
+
+#~ msgid " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n"
+#~ msgstr " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n"
+
+#~ msgid " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n"
+#~ msgstr " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n"
+
+#~ msgid " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n"
+#~ msgstr " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n"
+
+#~ msgid " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n"
+#~ msgstr " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n"
+
+#~ msgid " parminfo: 0x%08x\n"
+#~ msgstr " parminfo: 0x%08x\n"
+
+#~ msgid " tb_offset: 0x%08x (start=0x%08x)\n"
+#~ msgstr " tb_offset: 0x%08x (début=0x%08x)\n"
+
+#~ msgid " hand_mask_offset: 0x%08x\n"
+#~ msgstr " hand_mask_offset: 0x%08x\n"
+
+#~ msgid " CTL[%u]: %08x\n"
+#~ msgstr " CTL[%u]: %08x\n"
+
+#~ msgid " alloca reg: %u\n"
+#~ msgstr " alloca reg: %u\n"
+
+#~ msgid "relocs"
+#~ msgstr "réadressages"
+
+#~ msgid "symtab shndx"
+#~ msgstr "symtab shndx"
+
+#~ msgid " 0x%02x "
+#~ msgstr " 0x%02x "
+
+#~ msgid " sp = sp + %d"
+#~ msgstr " sp = sp + %d"
+
+#~ msgid "liblist"
+#~ msgstr "liblist"
+
+#~ msgid "GOT"
+#~ msgstr "TOG"
+
+#~ msgid "PLT GOT"
+#~ msgstr "PLT TOG"
+
+#~ msgid ""
+#~ "\n"
+#~ "PLT GOT:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "PLT TOG:\n"
+#~ "\n"
+
+#~ msgid "\n"
+#~ msgstr "\n"
+
+#~ msgid "PT_FIRSTMACH+%d"
+#~ msgstr "PT_FIRSTMACH+%d"
+
+#~ msgid "NT_VMS_TITLE"
+#~ msgstr "NT_VMS_TITLE"
+
+#~ msgid "NT_VMS_LINKTIME"
+#~ msgstr "NT_VMS_LINKTIME"
+
+#~ msgid "NT_VMS_ORIG_DYN"
+#~ msgstr "NT_VMS_ORIG_DYN"
+
+#~ msgid "NT_VMS_PATCHTIME"
+#~ msgstr "NT_VMS_PATCHTIME"
+
+#~ msgid " FP mode: 0x%016"
+#~ msgstr " Mode FP: 0x%016"
+
+#~ msgid " Manip date : "
+#~ msgstr " Date manip : "
+
+#~ msgid "Usage: %s [emulation options] [--plugin <name>] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+#~ msgstr "Usage: %s [options d'émulation] [--plugin <nom>] [-]{dmpqrstx}[abcfilNoPsSuvV] [nom-du-membre] [compteur] fichier-archive fichier...\n"
+
+#~ msgid "illegal option -- %c"
+#~ msgstr "option illégale -- %c"
+
+#~ msgid ""
+#~ "\n"
+#~ "<%s>\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "<%s>\n"
+#~ "\n"
+
+#~ msgid "Usage: %s < input_file > output_file\n"
+#~ msgstr "Usage: %s <fichier-d-entrée> fichier-de-sortie\n"
+
+#~ msgid "Prints bytes from stdin in hex format.\n"
+#~ msgstr "Affiche les octets de stdin sous forme hexadécimale.\n"
+
+#~ msgid " %d\t"
+#~ msgstr " %d\t"
+
+#~ msgid ""
+#~ "%s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s\n"
+#~ "\n"
+
+#~ msgid " %d\t"
+#~ msgstr " %d\t"
+
+#~ msgid "%s:\n"
+#~ msgstr "%s:\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "./%s:[++]\n"
+#~ msgstr ""
+#~ "\n"
+#~ "./%s:[++]\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "%s/%s:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s/%s:\n"
+
+#~ msgid "%-35s %11d %#18lx\n"
+#~ msgstr "%-35s %11d %#18lx\n"
+
+#~ msgid "%-35s %11d %#18lx[%d]\n"
+#~ msgstr "%-35s %11d %#18lx[%d]\n"
+
+#~ msgid "%s %11d %#18lx\n"
+#~ msgstr "%s %11d %#18lx\n"
+
+#~ msgid "%s %11d %#18lx[%d]\n"
+#~ msgstr "%s %11d %#18lx[%d]\n"
+
+#~ msgid " %ld %s [%s]\n"
+#~ msgstr " %ld %s [%s]\n"
+
+#~ msgid " %-18s %s\n"
+#~ msgstr " %-18s %s\n"
+
+#~ 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"
+
+#~ msgid "target `%s' ignored."
+#~ msgstr "cible «%s» ignorée."
+
+#~ msgid " Pg"
+#~ msgstr " Pg"
+
+#~ msgid " (%ld)"
+#~ msgstr " (%ld)"
+
+#~ msgid "0x%02x "
+#~ msgstr "0x%02x "
+
+#~ msgid " [reserved compact index %d]\n"
+#~ msgstr " [index compact réservé %d]\n"
+
+#~ msgid " vsp = vsp - %d"
+#~ msgstr " vsp = vsp - %d"
+
+#~ msgid " vsp = r%d"
+#~ msgstr " vsp = r%d"
+
+#~ msgid "[unsupported two-byte opcode]"
+#~ msgstr "[opcode sur deux octets non supporté]"
+
+#~ msgid " %*s %10s %*s\n"
+#~ msgstr " %*s %10s %*s\n"
+
+#~ msgid " %*s %10s %*s %*s %-7s %3s %s\n"
+#~ msgstr " %*s %10s %*s %*s %-7s %3s %s\n"
+
+#~ msgid " %*s %*s %*s %-7s %3s %s\n"
+#~ msgstr " %*s %*s %*s %-7s %3s %s\n"
+
+#~ msgid "%s %s: %s"
+#~ msgstr "%s %s: %s"
+
+#~ msgid "%s:%d: %s\n"
+#~ msgstr "%s:%d: %s\n"
diff --git a/binutils-2.24/binutils/po/hr.gmo b/binutils-2.24/binutils/po/hr.gmo
new file mode 100644
index 00000000..14c292de
--- /dev/null
+++ b/binutils-2.24/binutils/po/hr.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/hr.po b/binutils-2.24/binutils/po/hr.po
new file mode 100644
index 00000000..24ede166
--- /dev/null
+++ b/binutils-2.24/binutils/po/hr.po
@@ -0,0 +1,7853 @@
+# Translation of binutils to Croatian.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+#
+# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.22.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2011-10-25 11:20+0100\n"
+"PO-Revision-Date: 2012-10-02 22:21+0200\n"
+"Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
+"Language-Team: Croatian <lokalizacija@linux.hr>\n"
+"Language: hr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Lokalize 1.4\n"
+
+#: addr2line.c:81
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Uporaba: %s [opcije] [adrese]\n"
+
+#: addr2line.c:82
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " Pretvori adrese u parove broj retka/datoteka.\n"
+
+#: addr2line.c:83
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Ako adrese nisu navedene u naredbenom retku, Äitat će se sa standardnog ulaza\n"
+
+#: addr2line.c:84
+#, fuzzy, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -a --addresses Show addresses\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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Make the output easier to read for humans\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Opcije su:\n"
+" @<datoteka> ÄŒitaj opcije iz <datoteke>\n"
+" -a --addresses Prikaži adrese\n"
+" -b --target=<bfdname> Postavi oblik binarne datoteke\n"
+" -e --exe=<izvršna> Postavi ime ulazne datoteke (zadano a.out)\n"
+" -i --inlines Unwind inlined functions\n"
+" -j --section=<ime> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Napravi izlaz ljudima lakÅ¡e Äitljiv\n"
+" -s --basenames Ukloni imena direktorija\n"
+" -f --functions Prikaži imena funkcija\n"
+" -C --demangle[=stil] Demangle function names\n"
+" -h --help Prikaži ove informacije\n"
+" -v --version Prikaži inaÄicu programa\n"
+"\n"
+
+#: addr2line.c:101 ar.c:304 ar.c:333 coffdump.c:471 dlltool.c:3938
+#: dllwrap.c:524 elfedit.c:653 nlmconv.c:1114 objcopy.c:576 objcopy.c:611
+#: readelf.c:3214 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
+#: windmc.c:228 windres.c:695
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "Prijavite greške na %s\n"
+
+#. Note for translators: This printf is used to join the
+#. function name just printed above to the line number/
+#. file name pair that is about to be printed below. Eg:
+#.
+#. foo at 123:bar.c
+#: addr2line.c:276
+#, c-format
+msgid " at "
+msgstr " na mjestu "
+
+#. Note for translators: This printf is used to join the
+#. line number/file name pair that has just been printed with
+#. the line number/file name pair that is going to be printed
+#. by the next iteration of the while loop. Eg:
+#.
+#. 123:bar.c (inlined by) 456:main.c
+#: addr2line.c:308
+#, c-format
+msgid " (inlined by) "
+msgstr ""
+
+#: addr2line.c:341
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: ne mogu dohvatiti adrese iz arhive"
+
+#: addr2line.c:358
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr ""
+
+#: addr2line.c:427 nm.c:1570 objdump.c:3423
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr ""
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "nema unosa %s u arhivi\n"
+
+#: ar.c:254
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...\n"
+msgstr ""
+
+#: ar.c:260
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] [count] archive-file file...\n"
+msgstr ""
+
+#: ar.c:266
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr ""
+
+#: ar.c:267
+#, c-format
+msgid " commands:\n"
+msgstr " naredbe:\n"
+
+#: ar.c:268
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr ""
+
+#: ar.c:269
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr ""
+
+#: ar.c:270
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr ""
+
+#: ar.c:271
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr ""
+
+#: ar.c:272
+#, c-format
+msgid " r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
+msgstr ""
+
+#: ar.c:273
+#, c-format
+msgid " s - act as ranlib\n"
+msgstr ""
+
+#: ar.c:274
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr ""
+
+#: ar.c:275
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr ""
+
+#: ar.c:276
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr ""
+
+#: ar.c:277
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr ""
+
+#: ar.c:278
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr ""
+
+#: ar.c:279
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr ""
+
+#: ar.c:280
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr ""
+
+#: ar.c:281
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr ""
+
+#: ar.c:282
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr ""
+
+#: ar.c:283
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr ""
+
+#: ar.c:284
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr ""
+
+#: ar.c:285
+#, c-format
+msgid " generic modifiers:\n"
+msgstr ""
+
+#: ar.c:286
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr ""
+
+#: ar.c:287
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr ""
+
+#: ar.c:288
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr ""
+
+#: ar.c:289
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr ""
+
+#: ar.c:290
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr ""
+
+#: ar.c:291
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr ""
+
+#: ar.c:292
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr ""
+
+#: ar.c:293
+#, c-format
+msgid " --target=BFDNAME - specify the target object format as BFDNAME\n"
+msgstr ""
+
+#: ar.c:295
+#, c-format
+msgid " optional:\n"
+msgstr ""
+
+#: ar.c:296
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr ""
+
+#: ar.c:317
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Uporaba: %s [opcije] arhiva\n"
+
+#: ar.c:318
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " Napravi indeks za ubrzavanje pristupa arhivama\n"
+
+#: ar.c:319
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+
+#: ar.c:322
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr ""
+
+#: ar.c:325
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+
+#: ar.c:449
+msgid "two different operation options specified"
+msgstr "navedene su opcije dvije razliÄite operacije"
+
+#: ar.c:538 nm.c:1643
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr "žao mi je - ovaj program je izgraÄ‘en bez podrÅ¡ke za prikljuÄke\n"
+
+#: ar.c:693
+msgid "no operation specified"
+msgstr "nije navedena operacija"
+
+#: ar.c:696
+msgid "`u' is only meaningful with the `r' option."
+msgstr "Opcija „u†je korisna samo uz opciju „râ€."
+
+#: ar.c:699
+msgid "`u' is not meaningful with the `D' option."
+msgstr "Opcija „u†nema koristi uz opciju „Dâ€."
+
+#: ar.c:707
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "Opcija „N†je korisna samo uz opcije „x†i „dâ€."
+
+#: ar.c:710
+msgid "Value for `N' must be positive."
+msgstr "Vrijednost za „N†mora biti pozitivna."
+
+#: ar.c:724
+msgid "`x' cannot be used on thin archives."
+msgstr "„x†se ne može koristiti na tankim arhivama."
+
+#: ar.c:771
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "interna greška -- ova opcija nije implementirana"
+
+#: ar.c:840
+#, c-format
+msgid "creating %s"
+msgstr "stvaram %s"
+
+#: ar.c:889 ar.c:943 ar.c:1272 objcopy.c:2080
+#, c-format
+msgid "internal stat error on %s"
+msgstr ""
+
+#: ar.c:908 ar.c:976
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s nije ispravna arhiva"
+
+#: ar.c:1034
+msgid "could not create temporary file whilst writing archive"
+msgstr "ne mogu napraviti privremenu datoteku za vrijeme pisanja arhive"
+
+#: ar.c:1177
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "Nema Älana imena „%sâ€\n"
+
+#: ar.c:1227
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "nema unosa %s u arhivi %s!"
+
+#: ar.c:1366
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: nema mape arhive za ažuriranje"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "Nema unosa %s u arhivi.\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "Ne mogu otvoriti datoteku %s\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: Ne mogu otvoriti izlaznu arhivu %s\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: Ne mogu otvoriti ulaznu arhivu %s\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: datoteka %s nije arhiva\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: izlazna arhiva još nije navedena\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: nema otvorene izlazne arhive\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: ne mogu otvoriti datoteku %s\n"
+
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: ne mogu pronaći datoteku modula %s\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "Trenutno otvorena arhiva je %s\n"
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: nema otvorene arhive\n"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr ""
+
+#. Macros for common output.
+#: binemul.h:49
+#, c-format
+msgid " emulation options: \n"
+msgstr " opcije emulacije: \n"
+
+#: bucomm.c:163
+#, fuzzy, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "ne mogu postaviti BFD zadanu metu u „%sâ€: %s"
+
+#: bucomm.c:175
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: Odgovarajući oblici:"
+
+#: bucomm.c:190
+#, fuzzy, c-format
+msgid "Supported targets:"
+msgstr "Podržane mete:"
+
+#: bucomm.c:192
+#, fuzzy, c-format
+msgid "%s: supported targets:"
+msgstr "%s: podržane mete:"
+
+#: bucomm.c:210
+#, c-format
+msgid "Supported architectures:"
+msgstr "Podržane arhitekture:"
+
+#: bucomm.c:212
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: podržane arhitekture:"
+
+#: bucomm.c:228
+msgid "big endian"
+msgstr ""
+
+#: bucomm.c:229
+msgid "little endian"
+msgstr ""
+
+#: bucomm.c:230
+msgid "endianness unknown"
+msgstr ""
+
+#: bucomm.c:251
+#, c-format
+msgid ""
+"%s\n"
+" (header %s, data %s)\n"
+msgstr ""
+
+#: bucomm.c:407
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "InaÄica datoteke BFD zaglavlja %s\n"
+
+#: bucomm.c:559
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: neispravan broj: %s"
+
+#: bucomm.c:576 strings.c:409
+#, c-format
+msgid "'%s': No such file"
+msgstr "„%sâ€: Nema takve datoteke"
+
+#: bucomm.c:578 strings.c:411
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "Upozorenje: ne mogu pronaći „%sâ€. razlog: %s"
+
+#: bucomm.c:582
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "Upozorenje: „%s†nije obiÄna datoteka"
+
+#: bucomm.c:584
+#, c-format
+msgid "Warning: '%s' has negative size, probably it is too large"
+msgstr "Upozorenje: „%s†ima negativnu veliÄinu, vjerojatno je prevelik"
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr "#redaka %d "
+
+#: coffdump.c:130
+#, c-format
+msgid "size %d "
+msgstr "veliÄina %d "
+
+#: coffdump.c:135
+#, c-format
+msgid "section definition at %x size %x\n"
+msgstr ""
+
+#: coffdump.c:141
+#, c-format
+msgid "pointer to"
+msgstr "pokazivaÄ na"
+
+#: coffdump.c:146
+#, c-format
+msgid "array [%d] of"
+msgstr "polje [%d] od"
+
+#: coffdump.c:151
+#, c-format
+msgid "function returning"
+msgstr ""
+
+#: coffdump.c:155
+#, c-format
+msgid "arguments"
+msgstr "argumenti"
+
+#: coffdump.c:159
+#, c-format
+msgid "code"
+msgstr "kod"
+
+#: coffdump.c:165
+#, c-format
+msgid "structure definition"
+msgstr "definicija strukture"
+
+#: coffdump.c:171
+#, c-format
+msgid "structure ref to UNKNOWN struct"
+msgstr ""
+
+#: coffdump.c:173
+#, c-format
+msgid "structure ref to %s"
+msgstr ""
+
+#: coffdump.c:176
+#, c-format
+msgid "enum ref to %s"
+msgstr ""
+
+#: coffdump.c:179
+#, c-format
+msgid "enum definition"
+msgstr ""
+
+#: coffdump.c:252
+#, c-format
+msgid "Stack offset %x"
+msgstr ""
+
+#: coffdump.c:255
+#, c-format
+msgid "Memory section %s+%x"
+msgstr "Memorijski segment %s+%x"
+
+#: coffdump.c:258
+#, c-format
+msgid "Register %d"
+msgstr "Registar %d"
+
+#: coffdump.c:261
+#, c-format
+msgid "Struct Member offset %x"
+msgstr ""
+
+#: coffdump.c:264
+#, c-format
+msgid "Enum Member offset %x"
+msgstr ""
+
+#: coffdump.c:267
+#, c-format
+msgid "Undefined symbol"
+msgstr "Nedefinirani simbol"
+
+#: coffdump.c:334
+#, c-format
+msgid "List of symbols"
+msgstr "Popis simbola"
+
+#: coffdump.c:341
+#, c-format
+msgid "Symbol %s, tag %d, number %d"
+msgstr "Simbol %s, oznaka %d, broj %d"
+
+#: coffdump.c:345 readelf.c:12215 readelf.c:12289
+#, c-format
+msgid "Type"
+msgstr "Vrsta"
+
+#: coffdump.c:350
+#, c-format
+msgid "Where"
+msgstr "Gdje"
+
+#: coffdump.c:354
+#, c-format
+msgid "Visible"
+msgstr "Vidljivo"
+
+#: coffdump.c:370
+msgid "List of blocks "
+msgstr "Popis blokova "
+
+#: coffdump.c:383
+#, c-format
+msgid "vars %d"
+msgstr "varijable %d"
+
+#: coffdump.c:386
+#, c-format
+msgid "blocks"
+msgstr "blokovi"
+
+#: coffdump.c:404
+#, c-format
+msgid "List of source files"
+msgstr "Popis izvornih datoteka"
+
+#: coffdump.c:410
+#, c-format
+msgid "Source file %s"
+msgstr "Izvorna datoteka %s"
+
+#: coffdump.c:424
+#, c-format
+msgid "section %s %d %d address %x size %x number %d nrelocs %d"
+msgstr ""
+
+#: coffdump.c:449
+#, c-format
+msgid "#sources %d"
+msgstr "#izvori %d"
+
+#: coffdump.c:462 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr ""
+
+#: coffdump.c:463
+#, c-format
+msgid " Print a human readable interpretation of a COFF object file\n"
+msgstr ""
+
+#: coffdump.c:464
+#, 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 ""
+
+#: coffdump.c:533 srconv.c:1833 sysdump.c:710
+msgid "no input file specified"
+msgstr "nije navedena ulazna datoteka"
+
+#: cxxfilt.c:119 nm.c:269 objdump.c:281
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Prijavite greške na %s.\n"
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: nema trenutne datoteke"
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: nema debug_set_filename poziva"
+
+#: debug.c:781
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: nema debug_set_filename poziva"
+
+#: debug.c:833
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: nema trenutne funkcije"
+
+#: debug.c:865
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: nema trenutne funkcije"
+
+#: debug.c:871
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: neki blokovi nisu zatvoreni"
+
+#: debug.c:899
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: nema trenutnog bloka"
+
+#: debug.c:935
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: nema trenutnog bloka"
+
+#: debug.c:942
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: pokušaj zatvaranja vršnog bloka"
+
+#: debug.c:965
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: nema trenutne jedinice"
+
+#. FIXME
+#: debug.c:1018
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: nije implementirano"
+
+#. FIXME
+#: debug.c:1029
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: nije implementirano"
+
+#. FIXME.
+#: debug.c:1113
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: nije implementirano"
+
+#: debug.c:1135
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: nema trenutne datoteke"
+
+#: debug.c:1663
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: nepodržana vrsta"
+
+#: debug.c:1840
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: nema trenutne datoteke"
+
+#: debug.c:1885
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: nema trenutne datoteke"
+
+#: debug.c:1893
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: pokuÅ¡aj dodatnog oznaÄavanja"
+
+#: debug.c:1930
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Upozorenje: mijenjam veliÄinu vrste iz %d u %d\n"
+
+#: debug.c:1952
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: nema trenutne kompilacijske jedinice"
+
+#: debug.c:2055
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr ""
+
+#: debug.c:2482
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: primjećena nedozvoljena vrsta"
+
+#: dlltool.c:902 dlltool.c:928 dlltool.c:959
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "Interna greška: Nepoznata vrsta stroja: %d"
+
+#: dlltool.c:1000
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Ne mogu otvoriti datoteku definicija: %s"
+
+#: dlltool.c:1005
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Obrađujem datoteku definicija: %s"
+
+#: dlltool.c:1009
+msgid "Processed def file"
+msgstr "Datoteka definicija je obrađena"
+
+#: dlltool.c:1033
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Sintaksna greška u datoteci definicija %s:%d"
+
+#: dlltool.c:1070
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr ""
+
+#: dlltool.c:1088
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr ""
+
+#: dlltool.c:1091 dlltool.c:1112
+msgid "Can't have LIBRARY and NAME"
+msgstr ""
+
+#: dlltool.c:1109
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr ""
+
+#: dlltool.c:1266
+#, c-format
+msgid "VERSION %d.%d\n"
+msgstr "INAÄŒICA %d.%d\n"
+
+#: dlltool.c:1314
+#, c-format
+msgid "run: %s %s"
+msgstr "prolaz: %s %s"
+
+#: dlltool.c:1354 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "Äekanje: %s"
+
+#: dlltool.c:1359 dllwrap.c:422 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "potproces je dobio fatalni signal %d"
+
+#: dlltool.c:1365 dllwrap.c:429 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s je izašao sa stanjem %d"
+
+#: dlltool.c:1396
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr ""
+
+#: dlltool.c:1536
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Izostavljam simbol: %s"
+
+#: dlltool.c:1625 dlltool.c:1636 nm.c:1012 nm.c:1023
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: nema simbola"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1662
+#, c-format
+msgid "Done reading %s"
+msgstr "ÄŒitanje %s je gotovo"
+
+#: dlltool.c:1672
+#, c-format
+msgid "Unable to open object file: %s: %s"
+msgstr "Ne mogu otvoriti datoteku objekta: %s: %s"
+
+#: dlltool.c:1675
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Pregledavam datoteku objekta %s"
+
+#: dlltool.c:1690
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr ""
+
+#: dlltool.c:1792
+msgid "Adding exports to output file"
+msgstr ""
+
+#: dlltool.c:1844
+msgid "Added exports to output file"
+msgstr ""
+
+#: dlltool.c:1986
+#, c-format
+msgid "Generating export file: %s"
+msgstr ""
+
+#: dlltool.c:1991
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Ne mogu otvoriti privremenu datoteku asemblera: %s"
+
+#: dlltool.c:1994
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "Privremena datoteka je otvorena: %s"
+
+#: dlltool.c:2171
+msgid "failed to read the number of entries from base file"
+msgstr ""
+
+#: dlltool.c:2219
+msgid "Generated exports file"
+msgstr ""
+
+#: dlltool.c:2428
+#, c-format
+msgid "bfd_open failed open stub file: %s: %s"
+msgstr ""
+
+#: dlltool.c:2432
+#, c-format
+msgid "Creating stub file: %s"
+msgstr ""
+
+#: dlltool.c:2894
+#, c-format
+msgid "bfd_open failed reopen stub file: %s: %s"
+msgstr ""
+
+#: dlltool.c:2908 dlltool.c:2984
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr ""
+
+#: dlltool.c:2970 dlltool.c:3050
+#, c-format
+msgid "failed to open temporary head file: %s: %s"
+msgstr ""
+
+#: dlltool.c:3064
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr ""
+
+#: dlltool.c:3121
+#, c-format
+msgid "failed to open temporary tail file: %s: %s"
+msgstr ""
+
+#: dlltool.c:3143
+#, c-format
+msgid "Can't create .lib file: %s: %s"
+msgstr ""
+
+#: dlltool.c:3147
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Stvaram biblioteku: %s"
+
+#: dlltool.c:3239 dlltool.c:3245
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "ne mogu ukloniti %s: %s"
+
+#: dlltool.c:3250
+msgid "Created lib file"
+msgstr "Biblioteka je stvorena"
+
+#: dlltool.c:3462
+#, c-format
+msgid "Can't open .lib file: %s: %s"
+msgstr "Ne mogu otvoriti .lib datoteku: %s: %s"
+
+#: dlltool.c:3470 dlltool.c:3492
+#, c-format
+msgid "%s is not a library"
+msgstr "%s nije biblioteka"
+
+#: dlltool.c:3510
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr ""
+
+#: dlltool.c:3521
+#, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr ""
+
+#: dlltool.c:3745
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr ""
+
+#: dlltool.c:3751
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr ""
+
+#: dlltool.c:3856
+msgid "Processing definitions"
+msgstr "Obrađujem definicije"
+
+#: dlltool.c:3888
+msgid "Processed definitions"
+msgstr "Definicije su obrađene"
+
+#. xgetext:c-format
+#: dlltool.c:3895 dllwrap.c:483
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Uporaba %s <opcije> <datoteke-objekta>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3897
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr ""
+
+#: dlltool.c:3898
+#, c-format
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr ""
+
+#: dlltool.c:3899
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr ""
+
+#: dlltool.c:3900
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr ""
+
+#: dlltool.c:3901
+#, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr ""
+
+#: dlltool.c:3902
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr ""
+
+#: dlltool.c:3903
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr ""
+
+#: dlltool.c:3904
+#, c-format
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr ""
+
+#: dlltool.c:3905
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr ""
+
+#: dlltool.c:3906
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr ""
+
+#: dlltool.c:3907
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr ""
+
+#: dlltool.c:3908
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr ""
+
+#: dlltool.c:3909
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr ""
+
+#: dlltool.c:3910
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr ""
+
+#: dlltool.c:3911
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr ""
+
+#: dlltool.c:3912
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr ""
+
+#: dlltool.c:3913
+#, c-format
+msgid " --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"
+msgstr ""
+
+#: dlltool.c:3914
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr ""
+
+#: dlltool.c:3915
+#, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr ""
+
+#: dlltool.c:3916
+#, c-format
+msgid " --no-leading-underscore All symbols shouldn't be prefixed by an underscore.\n"
+msgstr ""
+
+#: dlltool.c:3917
+#, c-format
+msgid " --leading-underscore All symbols should be prefixed by an underscore.\n"
+msgstr ""
+
+#: dlltool.c:3918
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr ""
+
+#: dlltool.c:3919
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr ""
+
+#: dlltool.c:3920
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr ""
+
+#: dlltool.c:3921
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr ""
+
+#: dlltool.c:3922
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr ""
+
+#: dlltool.c:3923
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr ""
+
+#: dlltool.c:3924
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr ""
+
+#: dlltool.c:3925
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr ""
+
+#: dlltool.c:3926
+#, c-format
+msgid " -I --identify <implib> Report the name of the DLL associated with <implib>.\n"
+msgstr ""
+
+#: dlltool.c:3927
+#, c-format
+msgid " --identify-strict Causes --identify to report error when multiple DLLs.\n"
+msgstr ""
+
+#: dlltool.c:3928
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr ""
+
+#: dlltool.c:3929
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr ""
+
+#: dlltool.c:3930
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr ""
+
+#: dlltool.c:3931
+#, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr ""
+
+#: dlltool.c:3933
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr ""
+
+#: dlltool.c:3934
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr ""
+
+#: dlltool.c:3935
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr ""
+
+#: dlltool.c:4082
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr ""
+
+#: dlltool.c:4130
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr ""
+
+#: dlltool.c:4165
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Stroj „%s†nije podržan"
+
+#: dlltool.c:4245
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr ""
+
+#: dlltool.c:4313 dllwrap.c:213
+#, c-format
+msgid "Tried file: %s"
+msgstr ""
+
+#: dlltool.c:4320 dllwrap.c:220
+#, c-format
+msgid "Using file: %s"
+msgstr "Koristim datoteku: %s"
+
+#: dllwrap.c:303
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr ""
+
+#: dllwrap.c:305
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr ""
+
+#: dllwrap.c:319
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr ""
+
+#: dllwrap.c:321
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr ""
+
+#: dllwrap.c:334
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Zadržavam privremenu datoteku definicija %s"
+
+#: dllwrap.c:336
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "Uklanjam privremenu datoteku definicija %s"
+
+#: dllwrap.c:417
+#, c-format
+msgid "pwait returns: %s"
+msgstr ""
+
+#: dllwrap.c:484
+#, c-format
+msgid " Generic options:\n"
+msgstr " Općenite opcije:\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr ""
+
+#: dllwrap.c:486
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr ""
+
+#: dllwrap.c:487
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr ""
+
+#: dllwrap.c:488
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr ""
+
+#: dllwrap.c:489
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr ""
+
+#: dllwrap.c:490
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Opcije za %s:\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr ""
+
+#: dllwrap.c:492
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr ""
+
+#: dllwrap.c:493
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr ""
+
+#: dllwrap.c:494
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr ""
+
+#: dllwrap.c:495
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr ""
+
+#: dllwrap.c:496
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr ""
+
+#: dllwrap.c:497
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr ""
+
+#: dllwrap.c:498
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr ""
+
+#: dllwrap.c:499
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr ""
+
+#: dllwrap.c:500
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <stroj>\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr ""
+
+#: dllwrap.c:502
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr ""
+
+#: dllwrap.c:503
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr ""
+
+#: dllwrap.c:504
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr ""
+
+#: dllwrap.c:505
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr ""
+
+#: dllwrap.c:506
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr ""
+
+#: dllwrap.c:507
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr ""
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr ""
+
+#: dllwrap.c:509
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr ""
+
+#: dllwrap.c:510
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr ""
+
+#: dllwrap.c:511
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr ""
+
+#: dllwrap.c:512
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr ""
+
+#: dllwrap.c:513
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr ""
+
+#: dllwrap.c:514
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr ""
+
+#: dllwrap.c:515
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr ""
+
+#: dllwrap.c:516
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr ""
+
+#: dllwrap.c:517
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr ""
+
+#: dllwrap.c:518
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr ""
+
+#: dllwrap.c:519
+#, c-format
+msgid " --no-leading-underscore Entrypoint without underscore\n"
+msgstr ""
+
+#: dllwrap.c:520
+#, c-format
+msgid " --leading-underscore Entrypoint with underscore.\n"
+msgstr ""
+
+#: dllwrap.c:521
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr ""
+
+#: dllwrap.c:805
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "Morate navesti barem jednu od opcija -o ili --dllname"
+
+#: dllwrap.c:834
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+
+#: dllwrap.c:1023
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr ""
+
+#: dllwrap.c:1024
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr ""
+
+#: dllwrap.c:1025
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr ""
+
+#: dllwrap.c:1026
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr ""
+
+#: dwarf.c:132
+msgid "Wrong size in print_dwarf_vma"
+msgstr "PogreÅ¡na veliÄina u print_dwarf_vma"
+
+#: dwarf.c:256 dwarf.c:3027
+msgid "badly formed extended line op encountered!\n"
+msgstr ""
+
+#: dwarf.c:263
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " Prošireni operacijski kod %d: "
+
+#: dwarf.c:268
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Kraj niza\n"
+"\n"
+
+#: dwarf.c:274
+#, c-format
+msgid "set Address to 0x%s\n"
+msgstr "postavi adresu na 0x%s\n"
+
+#: dwarf.c:280
+#, c-format
+msgid " define new File Table entry\n"
+msgstr ""
+
+#: dwarf.c:281 dwarf.c:2555
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr ""
+
+#: dwarf.c:295
+#, c-format
+msgid "set Discriminator to %s\n"
+msgstr ""
+
+#: dwarf.c:370
+#, c-format
+msgid " UNKNOWN DW_LNE_HP_SFC opcode (%u)\n"
+msgstr ""
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:387
+#, c-format
+msgid "user defined: "
+msgstr ""
+
+#: dwarf.c:389
+#, c-format
+msgid "UNKNOWN: "
+msgstr "NEPOZNATO: "
+
+#: dwarf.c:390
+#, c-format
+msgid "length %d ["
+msgstr "duljina %d ["
+
+#: dwarf.c:407
+msgid "<no .debug_str section>"
+msgstr ""
+
+#: dwarf.c:413
+#, c-format
+msgid "DW_FORM_strp offset too big: %s\n"
+msgstr ""
+
+#: dwarf.c:415
+msgid "<offset is too big>"
+msgstr "<pomak je prevelik>"
+
+#: dwarf.c:655
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr ""
+
+#: dwarf.c:696
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr ""
+
+#: dwarf.c:705
+#, c-format
+msgid " %s byte block: "
+msgstr ""
+
+#: dwarf.c:1050
+#, c-format
+msgid "(DW_OP_call_ref in frame info)"
+msgstr ""
+
+#: dwarf.c:1075
+#, c-format
+msgid "size: %s "
+msgstr "veliÄina: %s "
+
+#: dwarf.c:1078
+#, c-format
+msgid "offset: %s "
+msgstr "pomak: %s "
+
+#: dwarf.c:1098
+#, c-format
+msgid "DW_OP_GNU_push_tls_address or DW_OP_HP_unknown"
+msgstr ""
+
+#: dwarf.c:1122
+#, c-format
+msgid "(DW_OP_GNU_implicit_pointer in frame info)"
+msgstr ""
+
+#: dwarf.c:1234
+#, c-format
+msgid "(User defined location op)"
+msgstr ""
+
+#: dwarf.c:1236
+#, c-format
+msgid "(Unknown location op)"
+msgstr ""
+
+#: dwarf.c:1283
+msgid "Internal error: DWARF version is not 2, 3 or 4.\n"
+msgstr ""
+
+#: dwarf.c:1389
+msgid "DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"
+msgstr ""
+
+#: dwarf.c:1439
+#, c-format
+msgid " (indirect string, offset: 0x%s): %s"
+msgstr ""
+
+#: dwarf.c:1464
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Neprepoznati oblik: %lu\n"
+
+#: dwarf.c:1557
+#, c-format
+msgid "(not inlined)"
+msgstr ""
+
+#: dwarf.c:1560
+#, c-format
+msgid "(inlined)"
+msgstr ""
+
+#: dwarf.c:1563
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr ""
+
+#: dwarf.c:1566
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr ""
+
+#: dwarf.c:1569
+#, c-format
+msgid " (Unknown inline attribute value: %s)"
+msgstr ""
+
+#: dwarf.c:1608
+#, c-format
+msgid "(implementation defined: %s)"
+msgstr ""
+
+#: dwarf.c:1611
+#, c-format
+msgid "(Unknown: %s)"
+msgstr "(Nepoznato: %s)"
+
+#: dwarf.c:1649
+#, c-format
+msgid "(user defined type)"
+msgstr "(korisniÄki definirana vrsta)"
+
+#: dwarf.c:1651
+#, c-format
+msgid "(unknown type)"
+msgstr "(nepoznata vrsta)"
+
+#: dwarf.c:1663
+#, c-format
+msgid "(unknown accessibility)"
+msgstr "(nepoznata pristupaÄnost)"
+
+#: dwarf.c:1674
+#, c-format
+msgid "(unknown visibility)"
+msgstr "(nepoznata vidljivost)"
+
+#: dwarf.c:1684
+#, c-format
+msgid "(unknown virtuality)"
+msgstr "(nepoznata virtualnost)"
+
+#: dwarf.c:1695
+#, c-format
+msgid "(unknown case)"
+msgstr "(nepoznat sluÄaj)"
+
+#: dwarf.c:1708
+#, c-format
+msgid "(user defined)"
+msgstr "(korisniÄki definirano)"
+
+#: dwarf.c:1710
+#, c-format
+msgid "(unknown convention)"
+msgstr "(nepoznata konvencija)"
+
+#: dwarf.c:1717
+#, c-format
+msgid "(undefined)"
+msgstr "(nedefinirano)"
+
+#: dwarf.c:1740
+#, c-format
+msgid "(location list)"
+msgstr ""
+
+#: dwarf.c:1761 dwarf.c:4045
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr ""
+
+#: dwarf.c:1777
+#, c-format
+msgid "Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr ""
+
+#: dwarf.c:1787
+#, c-format
+msgid "[Abbrev Number: %ld"
+msgstr ""
+
+#: dwarf.c:1978
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Nepoznata AT vrijednost: %lx"
+
+#: dwarf.c:2049
+#, c-format
+msgid "Reserved length value (0x%s) found in section %s\n"
+msgstr ""
+
+#: dwarf.c:2061
+#, c-format
+msgid "Corrupt unit length (0x%s) found in section %s\n"
+msgstr ""
+
+#: dwarf.c:2069
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr ""
+
+#: dwarf.c:2078
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr ""
+
+#: dwarf.c:2087 dwarf.c:3296 dwarf.c:3390 dwarf.c:3551 dwarf.c:3779
+#: dwarf.c:3911 dwarf.c:4081 dwarf.c:4150 dwarf.c:4354
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+
+#: dwarf.c:2095
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr ""
+
+#: dwarf.c:2176
+#, c-format
+msgid " Compilation Unit @ offset 0x%s:\n"
+msgstr ""
+
+#: dwarf.c:2178
+#, c-format
+msgid " Length: 0x%s (%s)\n"
+msgstr ""
+
+#: dwarf.c:2181
+#, c-format
+msgid " Version: %d\n"
+msgstr " InaÄica: %d\n"
+
+#: dwarf.c:2182
+#, c-format
+msgid " Abbrev Offset: %s\n"
+msgstr ""
+
+#: dwarf.c:2184
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr ""
+
+#: dwarf.c:2188
+#, c-format
+msgid " Signature: "
+msgstr " Potpis : "
+
+#: dwarf.c:2192
+#, c-format
+msgid " Type Offset: 0x%s\n"
+msgstr ""
+
+#: dwarf.c:2200
+#, c-format
+msgid "Debug info is corrupted, length of CU at %s extends beyond end of section (length = %s)\n"
+msgstr ""
+
+#: dwarf.c:2213
+#, c-format
+msgid "CU at offset %s contains corrupt or unsupported version number: %d.\n"
+msgstr ""
+
+#: dwarf.c:2224
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr ""
+
+#: dwarf.c:2274
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr ""
+
+#: dwarf.c:2278
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr ""
+
+#: dwarf.c:2297
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr ""
+
+#: dwarf.c:2301
+#, c-format
+msgid " <%d><%lx>: ...\n"
+msgstr " <%d><%lx>: ...\n"
+
+#: dwarf.c:2320
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr ""
+
+#: dwarf.c:2422
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+
+#: dwarf.c:2460
+#, c-format
+msgid "The information in section %s appears to be corrupt - the section is too small\n"
+msgstr ""
+
+#: dwarf.c:2472 dwarf.c:2840
+msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
+msgstr ""
+
+#: dwarf.c:2486 dwarf.c:2855
+msgid "Invalid maximum operations per insn.\n"
+msgstr ""
+
+#: dwarf.c:2505 dwarf.c:3574
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:2506
+#, c-format
+msgid " Length: %ld\n"
+msgstr ""
+
+#: dwarf.c:2507
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr ""
+
+#: dwarf.c:2508
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr ""
+
+#: dwarf.c:2509
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr ""
+
+#: dwarf.c:2511
+#, c-format
+msgid " Maximum Ops per Instruction: %d\n"
+msgstr ""
+
+#: dwarf.c:2512
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr ""
+
+#: dwarf.c:2513
+#, c-format
+msgid " Line Base: %d\n"
+msgstr ""
+
+#: dwarf.c:2514
+#, c-format
+msgid " Line Range: %d\n"
+msgstr ""
+
+#: dwarf.c:2515
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr ""
+
+#: dwarf.c:2524
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+
+#: dwarf.c:2527
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr ""
+
+#: dwarf.c:2533
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+
+#: dwarf.c:2536
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+
+#: dwarf.c:2551
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+
+#: dwarf.c:2554
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+
+#. Now display the statements.
+#: dwarf.c:2584
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+
+#: dwarf.c:2603
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s"
+msgstr ""
+
+#: dwarf.c:2617
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s[%d]"
+msgstr ""
+
+#: dwarf.c:2625
+#, c-format
+msgid " and Line by %s to %d\n"
+msgstr ""
+
+#: dwarf.c:2635
+#, c-format
+msgid " Copy\n"
+msgstr ""
+
+#: dwarf.c:2645
+#, c-format
+msgid " Advance PC by %s to 0x%s\n"
+msgstr ""
+
+#: dwarf.c:2658
+#, c-format
+msgid " Advance PC by %s to 0x%s[%d]\n"
+msgstr ""
+
+#: dwarf.c:2669
+#, c-format
+msgid " Advance Line by %s to %d\n"
+msgstr ""
+
+#: dwarf.c:2677
+#, c-format
+msgid " Set File Name to entry %s in the File Name Table\n"
+msgstr ""
+
+#: dwarf.c:2685
+#, c-format
+msgid " Set column to %s\n"
+msgstr ""
+
+#: dwarf.c:2693
+#, c-format
+msgid " Set is_stmt to %s\n"
+msgstr ""
+
+#: dwarf.c:2698
+#, c-format
+msgid " Set basic block\n"
+msgstr ""
+
+#: dwarf.c:2708
+#, c-format
+msgid " Advance PC by constant %s to 0x%s\n"
+msgstr ""
+
+#: dwarf.c:2721
+#, c-format
+msgid " Advance PC by constant %s to 0x%s[%d]\n"
+msgstr ""
+
+#: dwarf.c:2733
+#, c-format
+msgid " Advance PC by fixed size amount %s to 0x%s\n"
+msgstr ""
+
+#: dwarf.c:2739
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr ""
+
+#: dwarf.c:2743
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr ""
+
+#: dwarf.c:2749
+#, c-format
+msgid " Set ISA to %s\n"
+msgstr ""
+
+#: dwarf.c:2753 dwarf.c:3168
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr ""
+
+#: dwarf.c:2787
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+
+#: dwarf.c:2828
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr ""
+
+#: dwarf.c:2960
+#, c-format
+msgid "CU: %s:\n"
+msgstr ""
+
+#: dwarf.c:2961 dwarf.c:2972
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr ""
+
+#: dwarf.c:2968
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr ""
+
+#: dwarf.c:3059
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr ""
+
+#: dwarf.c:3164
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr ""
+
+#: dwarf.c:3330 dwarf.c:4195
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr ""
+
+#: dwarf.c:3344
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr ""
+
+#: dwarf.c:3351
+#, c-format
+msgid " Length: %ld\n"
+msgstr ""
+
+#: dwarf.c:3353
+#, c-format
+msgid " Version: %d\n"
+msgstr ""
+
+#: dwarf.c:3355
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:3357
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr ""
+
+#: dwarf.c:3360
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+
+#: dwarf.c:3411
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr ""
+
+#: dwarf.c:3417
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr ""
+
+#: dwarf.c:3425
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr ""
+
+#: dwarf.c:3434
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr ""
+
+#: dwarf.c:3446
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr ""
+
+#: dwarf.c:3566
+#, c-format
+msgid "Only GNU extension to DWARF 4 of %s is currently supported.\n"
+msgstr ""
+
+#: dwarf.c:3576
+#, c-format
+msgid " Version: %d\n"
+msgstr " InaÄica: %d\n"
+
+#: dwarf.c:3577
+#, c-format
+msgid " Offset size: %d\n"
+msgstr ""
+
+#: dwarf.c:3582
+#, c-format
+msgid " Offset into .debug_line: 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:3593
+#, c-format
+msgid " Extension opcode arguments:\n"
+msgstr ""
+
+#: dwarf.c:3601
+#, c-format
+msgid " DW_MACRO_GNU_%02x has no arguments\n"
+msgstr ""
+
+#: dwarf.c:3604
+#, c-format
+msgid " DW_MACRO_GNU_%02x arguments: "
+msgstr ""
+
+#: dwarf.c:3628
+#, c-format
+msgid "Invalid extension opcode form %s\n"
+msgstr ""
+
+#: dwarf.c:3645
+msgid ".debug_macro section not zero terminated\n"
+msgstr ""
+
+#: dwarf.c:3666
+msgid "DW_MACRO_GNU_start_file used, but no .debug_line offset provided.\n"
+msgstr ""
+
+#: dwarf.c:3672
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d\n"
+msgstr ""
+
+#: dwarf.c:3675
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d filename: %s%s%s\n"
+msgstr ""
+
+#: dwarf.c:3683
+#, c-format
+msgid " DW_MACRO_GNU_end_file\n"
+msgstr ""
+
+#: dwarf.c:3691
+#, c-format
+msgid " DW_MACRO_GNU_define - lineno : %d macro : %s\n"
+msgstr ""
+
+#: dwarf.c:3700
+#, c-format
+msgid " DW_MACRO_GNU_undef - lineno : %d macro : %s\n"
+msgstr ""
+
+#: dwarf.c:3710
+#, c-format
+msgid " DW_MACRO_GNU_define_indirect - lineno : %d macro : %s\n"
+msgstr ""
+
+#: dwarf.c:3720
+#, c-format
+msgid " DW_MACRO_GNU_undef_indirect - lineno : %d macro : %s\n"
+msgstr ""
+
+#: dwarf.c:3727
+#, c-format
+msgid " DW_MACRO_GNU_transparent_include - offset : 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:3734
+#, c-format
+msgid " Unknown macro opcode %02x seen\n"
+msgstr ""
+
+#: dwarf.c:3746
+#, c-format
+msgid " DW_MACRO_GNU_%02x\n"
+msgstr " DW_MACRO_GNU_%02x\n"
+
+#: dwarf.c:3749
+#, c-format
+msgid " DW_MACRO_GNU_%02x -"
+msgstr " DW_MACRO_GNU_%02x -"
+
+#: dwarf.c:3790
+#, c-format
+msgid " Number TAG\n"
+msgstr ""
+
+#: dwarf.c:3799
+msgid "has children"
+msgstr "ima djecu"
+
+#: dwarf.c:3799
+msgid "no children"
+msgstr "nema djece"
+
+#: dwarf.c:3850 dwarf.c:4077 dwarf.c:4311
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+
+#: dwarf.c:3856 dwarf.c:4317
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr ""
+
+#: dwarf.c:3900
+msgid "No location lists in .debug_info section!\n"
+msgstr ""
+
+#: dwarf.c:3905
+#, c-format
+msgid "Location lists in %s section start at 0x%s\n"
+msgstr ""
+
+#: dwarf.c:3912
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr ""
+
+#: dwarf.c:3961
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr ""
+
+#: dwarf.c:3965
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr ""
+
+#: dwarf.c:3973
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr ""
+
+#: dwarf.c:3982 dwarf.c:4017 dwarf.c:4027
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr ""
+
+#: dwarf.c:4001 dwarf.c:4405
+#, c-format
+msgid "<End of list>\n"
+msgstr "<Kraj popisa>\n"
+
+#: dwarf.c:4011
+#, c-format
+msgid "(base address)\n"
+msgstr ""
+
+#: dwarf.c:4048
+msgid " (start == end)"
+msgstr " (poÄetak == kraj)"
+
+#: dwarf.c:4050
+msgid " (start > end)"
+msgstr " (poÄetak > kraj)"
+
+#: dwarf.c:4060
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr ""
+
+#: dwarf.c:4206
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr ""
+
+#: dwarf.c:4210
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Duljina: %ld\n"
+
+#: dwarf.c:4212
+#, c-format
+msgid " Version: %d\n"
+msgstr " InaÄica: %d\n"
+
+#: dwarf.c:4213
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:4215
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr ""
+
+#: dwarf.c:4216
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " VeliÄina segmenta: %d\n"
+
+#: dwarf.c:4222
+#, c-format
+msgid "Invalid address size in %s section!\n"
+msgstr ""
+
+#: dwarf.c:4232
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr "VeliÄina pokazivaÄa + VeliÄina segmenta nije potencija broja dva.\n"
+
+#: dwarf.c:4237
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Adresa Duljina\n"
+
+#: dwarf.c:4239
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Adresa Duljina\n"
+
+#: dwarf.c:4327
+msgid "No range lists in .debug_info section!\n"
+msgstr ""
+
+#: dwarf.c:4351
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr ""
+
+#: dwarf.c:4355
+#, c-format
+msgid " Offset Begin End\n"
+msgstr ""
+
+#: dwarf.c:4376
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr ""
+
+#: dwarf.c:4380
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr ""
+
+#: dwarf.c:4423
+msgid "(start == end)"
+msgstr "(poÄetak == kraj)"
+
+#: dwarf.c:4425
+msgid "(start > end)"
+msgstr "(poÄetak > kraj)"
+
+#: dwarf.c:4678
+msgid "bad register: "
+msgstr "neispravan registar: "
+
+#. The documentation for the format of this file is in gdb/dwarf2read.c.
+#: dwarf.c:4681 dwarf.c:5490
+#, c-format
+msgid "Contents of the %s section:\n"
+msgstr ""
+
+#: dwarf.c:5451
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr ""
+
+#: dwarf.c:5453
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr ""
+
+#: dwarf.c:5494
+#, c-format
+msgid "Truncated header in the %s section.\n"
+msgstr ""
+
+#: dwarf.c:5499
+#, c-format
+msgid "Version %ld\n"
+msgstr "InaÄica %ld\n"
+
+#: dwarf.c:5506
+msgid "The address table data in version 3 may be wrong.\n"
+msgstr "Podaci tablice adresa u inaÄici 3 mogu biti pogreÅ¡ni.\n"
+
+#: dwarf.c:5509
+msgid "Version 4 does not support case insensitive lookups.\n"
+msgstr ""
+
+#: dwarf.c:5514
+#, c-format
+msgid "Unsupported version %lu.\n"
+msgstr "Nepodržana inaÄica %lu.\n"
+
+#: dwarf.c:5530
+#, c-format
+msgid "Corrupt header in the %s section.\n"
+msgstr ""
+
+#: dwarf.c:5545
+#, c-format
+msgid ""
+"\n"
+"CU table:\n"
+msgstr ""
+
+#: dwarf.c:5551
+#, c-format
+msgid "[%3u] 0x%lx - 0x%lx\n"
+msgstr "[%3u] 0x%lx - 0x%lx\n"
+
+#: dwarf.c:5556
+#, c-format
+msgid ""
+"\n"
+"TU table:\n"
+msgstr ""
+
+#: dwarf.c:5563
+#, c-format
+msgid "[%3u] 0x%lx 0x%lx "
+msgstr "[%3u] 0x%lx 0x%lx "
+
+#: dwarf.c:5570
+#, c-format
+msgid ""
+"\n"
+"Address table:\n"
+msgstr ""
+"\n"
+"Tablica adresa:\n"
+
+#: dwarf.c:5579
+#, c-format
+msgid "%lu\n"
+msgstr "%lu\n"
+
+#: dwarf.c:5582
+#, c-format
+msgid ""
+"\n"
+"Symbol table:\n"
+msgstr ""
+"\n"
+"Tablica simbola:\n"
+
+#: dwarf.c:5616
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr ""
+
+#: dwarf.c:5752 dwarf.c:5822
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Neprepoznata opcija debugiranja „%sâ€\n"
+
+#: elfcomm.c:39
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Greška: "
+
+#: elfcomm.c:50
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Upozorenje: "
+
+#: elfcomm.c:82 elfcomm.c:117 elfcomm.c:167 elfcomm.c:216
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Nekontrolirana duljina podataka: %d\n"
+
+#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3683 readelf.c:3991
+#: readelf.c:4034 readelf.c:4108 readelf.c:4187 readelf.c:4965 readelf.c:4989
+#: readelf.c:7397 readelf.c:7443 readelf.c:7642 readelf.c:8863 readelf.c:8877
+#: readelf.c:9423 readelf.c:9439 readelf.c:9482 readelf.c:9507 readelf.c:11904
+#: readelf.c:12096 readelf.c:12929
+msgid "Out of memory\n"
+msgstr "Nema dovoljno memorije\n"
+
+#: elfcomm.c:312
+#, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr ""
+
+#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13418
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: nisam uspio proÄitati zaglavlje arhive\n"
+
+#: elfcomm.c:347
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr "%s: indeks arhive je prazan\n"
+
+#: elfcomm.c:355 elfcomm.c:381
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: nisam uspio proÄitati indeks arhive\n"
+
+#: elfcomm.c:365
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr "%s: indeks arhive bi trebao imati %ld unosa, ali veliÄina u zaglavlju je premalena\n"
+
+#: elfcomm.c:373
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr ""
+
+#: elfcomm.c:392
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr ""
+
+#: elfcomm.c:405
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr ""
+
+#: elfcomm.c:413
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr ""
+
+#: elfcomm.c:419
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr "%s: nisam uspio proÄitati tablicu simbola indeksa arhive\n"
+
+#: elfcomm.c:428
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr "%s: nisam uspio preskoÄiti tablicu simbola arhive\n"
+
+#: elfcomm.c:440
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr ""
+
+#: elfcomm.c:446
+#, c-format
+msgid "%s has no archive index\n"
+msgstr "%s nema indeks arhive\n"
+
+#: elfcomm.c:457
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr ""
+
+#: elfcomm.c:465
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr ""
+
+#: elfcomm.c:605
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr ""
+
+#: elfcomm.c:616 elfedit.c:347 readelf.c:13424
+#, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr "%s: nisam pronašao ispravno zaglavlje arhive\n"
+
+#: elfedit.c:73
+#, c-format
+msgid "%s: Not an ELF file - wrong magic bytes at the start\n"
+msgstr "%s: Nije ELF datoteka - ima pogreÅ¡ne bajtove na poÄetku\n"
+
+#: elfedit.c:81
+#, c-format
+msgid "%s: Unsupported EI_VERSION: %d is not %d\n"
+msgstr "%s: Nepodržana EI_VERSION: %d nije %d\n"
+
+#: elfedit.c:97
+#, c-format
+msgid "%s: Unmatched EI_CLASS: %d is not %d\n"
+msgstr "%s: Neodgovarajuća EI_CLASS: %d nije %d\n"
+
+#: elfedit.c:108
+#, c-format
+msgid "%s: Unmatched e_machine: %d is not %d\n"
+msgstr "%s: Neodgovarajuća e_machine: %d nije %d\n"
+
+#: elfedit.c:119
+#, c-format
+msgid "%s: Unmatched e_type: %d is not %d\n"
+msgstr "%s: Neodgovarajuća e_type: %d nije %d\n"
+
+#: elfedit.c:130
+#, c-format
+msgid "%s: Unmatched EI_OSABI: %d is not %d\n"
+msgstr "%s: Neodgovarajuća EI_OSABI: %d nije %d\n"
+
+#: elfedit.c:163
+#, c-format
+msgid "%s: Failed to update ELF header: %s\n"
+msgstr "%s: Nisam uspio ažurirati ELF zaglavlje: %s\n"
+
+#: elfedit.c:196
+#, c-format
+msgid "Unsupported EI_CLASS: %d\n"
+msgstr "Nepodržana EI_CLASS: %d\n"
+
+#: elfedit.c:229
+msgid ""
+"This executable has been built without support for a\n"
+"64 bit data type and so it cannot process 64 bit ELF files.\n"
+msgstr ""
+"Ova izvršna datoteka je izgrađena bez podrške za 64-bitne\n"
+"vrste podataka i ne može obraditi 64-bitne ELF datoteke.\n"
+
+#: elfedit.c:270
+#, c-format
+msgid "%s: Failed to read ELF header\n"
+msgstr "%s: Nisam uspio proÄitati ELF zaglavlje\n"
+
+#: elfedit.c:277
+#, c-format
+msgid "%s: Failed to seek to ELF header\n"
+msgstr ""
+
+#: elfedit.c:331 readelf.c:13410
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr ""
+
+#: elfedit.c:362 elfedit.c:371 readelf.c:13438 readelf.c:13447
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: neispravno ime arhive\n"
+
+#: elfedit.c:391 elfedit.c:483
+#, c-format
+msgid "Input file '%s' is not readable\n"
+msgstr "Ulazna datoteka „%s†nije Äitljiva\n"
+
+#: elfedit.c:415
+#, c-format
+msgid "%s: failed to seek to archive member\n"
+msgstr ""
+
+#: elfedit.c:454 readelf.c:13533
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "„%sâ€: Nema takve datoteke\n"
+
+#: elfedit.c:456 readelf.c:13535
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr "Ne mogu pronaći „%sâ€. Poruka greÅ¡ke sustava: %s\n"
+
+#: elfedit.c:463 readelf.c:13542
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "„%s†nije obiÄna datoteka\n"
+
+#: elfedit.c:489 readelf.c:13555
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr ""
+
+#: elfedit.c:547
+#, c-format
+msgid "Unknown OSABI: %s\n"
+msgstr "Nepoznati OSABI: %s\n"
+
+#: elfedit.c:568
+#, c-format
+msgid "Unknown machine type: %s\n"
+msgstr "Nepoznata vrsta stroja: %s\n"
+
+#: elfedit.c:587
+#, c-format
+msgid "Unknown machine type: %d\n"
+msgstr "Nepoznata vrsta stroja: %d\n"
+
+#: elfedit.c:606
+#, c-format
+msgid "Unknown type: %s\n"
+msgstr "Nepoznata vrsta: %s\n"
+
+#: elfedit.c:637
+#, c-format
+msgid "Usage: %s <option(s)> elffile(s)\n"
+msgstr "Uporaba: %s <opcije> elfdatoteke\n"
+
+#: elfedit.c:639
+#, c-format
+msgid " Update the ELF header of ELF files\n"
+msgstr " Ažuriraj ELF zaglavlje ELF datoteka\n"
+
+#: elfedit.c:640 objcopy.c:475 objcopy.c:585
+#, c-format
+msgid " The options are:\n"
+msgstr " Opcije su:\n"
+
+#: elfedit.c:641
+#, c-format
+msgid ""
+" --input-mach <machine> Set input machine type to <machine>\n"
+" --output-mach <machine> Set output machine type to <machine>\n"
+" --input-type <type> Set input file type to <type>\n"
+" --output-type <type> Set output file type to <type>\n"
+" --input-osabi <osabi> Set input OSABI to <osabi>\n"
+" --output-osabi <osabi> Set output OSABI to <osabi>\n"
+" -h --help Display this information\n"
+" -v --version Display the version number of %s\n"
+msgstr ""
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr ""
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:47
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:48
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr ""
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr ""
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "neispravan broj"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "neispravna duljina niza"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "preljev stoga izraza"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "nepodržani operator IEEE izraza"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr ""
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "podljev stoga izraza"
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr ""
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr ""
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr ""
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "neoÄekivani broj"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "neoÄekivana vrsta zapisa"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr ""
+
+#: ieee.c:1208
+msgid "unknown BB type"
+msgstr "nepoznata BB vrsta"
+
+#: ieee.c:1217
+msgid "stack overflow"
+msgstr "preljev stoga"
+
+#: ieee.c:1240
+msgid "stack underflow"
+msgstr "podljev stoga"
+
+#: ieee.c:1352 ieee.c:1422 ieee.c:2120
+msgid "illegal variable index"
+msgstr "nedozvoljeni indeks varijable"
+
+#: ieee.c:1400
+msgid "illegal type index"
+msgstr "nedozvoljeni indeks vrste"
+
+#: ieee.c:1410 ieee.c:1447
+msgid "unknown TY code"
+msgstr "nepoznati TY kod"
+
+#: ieee.c:1429
+msgid "undefined variable in TY"
+msgstr "nedefinirana varijabla u TY"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1841
+msgid "Pascal file name not supported"
+msgstr ""
+
+#: ieee.c:1889
+msgid "unsupported qualifier"
+msgstr "nepodržani kvalifikator"
+
+#: ieee.c:2158
+msgid "undefined variable in ATN"
+msgstr "nedefinirana varijabla u ATN"
+
+#: ieee.c:2201
+msgid "unknown ATN type"
+msgstr "nepoznata ATN vrsta"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2323
+msgid "unsupported ATN11"
+msgstr "nepodržani ATN11"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2350
+msgid "unsupported ATN12"
+msgstr "nepodržani ATN12"
+
+#: ieee.c:2410
+msgid "unexpected string in C++ misc"
+msgstr ""
+
+#: ieee.c:2423
+msgid "bad misc record"
+msgstr ""
+
+#: ieee.c:2464
+msgid "unrecognized C++ misc record"
+msgstr ""
+
+#: ieee.c:2579
+msgid "undefined C++ object"
+msgstr "nedefinirani C++ objekt"
+
+#: ieee.c:2613
+msgid "unrecognized C++ object spec"
+msgstr ""
+
+#: ieee.c:2649
+msgid "unsupported C++ object type"
+msgstr "nepodržana vrsta C++ objekta"
+
+#: ieee.c:2659
+msgid "C++ base class not defined"
+msgstr ""
+
+#: ieee.c:2671 ieee.c:2776
+msgid "C++ object has no fields"
+msgstr "C++ objekt nema polja"
+
+#: ieee.c:2690
+msgid "C++ base class not found in container"
+msgstr ""
+
+#: ieee.c:2797
+msgid "C++ data member not found in container"
+msgstr ""
+
+#: ieee.c:2838 ieee.c:2988
+msgid "unknown C++ visibility"
+msgstr "nepoznata C++ vidljivost"
+
+#: ieee.c:2872
+msgid "bad C++ field bit pos or size"
+msgstr ""
+
+#: ieee.c:2964
+msgid "bad type for C++ method function"
+msgstr ""
+
+#: ieee.c:2974
+msgid "no type information for C++ method function"
+msgstr ""
+
+#: ieee.c:3013
+msgid "C++ static virtual method"
+msgstr ""
+
+#: ieee.c:3108
+msgid "unrecognized C++ object overhead spec"
+msgstr ""
+
+#: ieee.c:3147
+msgid "undefined C++ vtable"
+msgstr ""
+
+#: ieee.c:3216
+msgid "C++ default values not in a function"
+msgstr "C++ zadane vrijednosti nisu u funkciji"
+
+#: ieee.c:3256
+msgid "unrecognized C++ default type"
+msgstr "neprepoznata C++ zadana vrsta"
+
+#: ieee.c:3287
+msgid "reference parameter is not a pointer"
+msgstr ""
+
+#: ieee.c:3370
+msgid "unrecognized C++ reference type"
+msgstr ""
+
+#: ieee.c:3452
+msgid "C++ reference not found"
+msgstr "C++ referenca nije pronađena"
+
+#: ieee.c:3460
+msgid "C++ reference is not pointer"
+msgstr "C++ referenca nije pokazivaÄ"
+
+#: ieee.c:3486 ieee.c:3494
+msgid "missing required ASN"
+msgstr "nedostaje potrebni ASN"
+
+#: ieee.c:3521 ieee.c:3529
+msgid "missing required ATN65"
+msgstr "nedostaje potrebni ATN65"
+
+#: ieee.c:3543
+msgid "bad ATN65 record"
+msgstr "neispravan ATN65 zapis"
+
+#: ieee.c:4171
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr ""
+
+#: ieee.c:4215
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr ""
+
+#: ieee.c:5213
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr ""
+
+#: ieee.c:5247
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr ""
+
+#: ieee.c:5281
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr ""
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr ""
+
+#: nlmconv.c:274 srconv.c:1824
+msgid "input and output files must be different"
+msgstr "ulazna i izlazna datoteka moraju biti razliÄite"
+
+#: nlmconv.c:321
+msgid "input file named both on command line and with INPUT"
+msgstr ""
+
+#: nlmconv.c:330
+msgid "no input file"
+msgstr "nema ulazne datoteke"
+
+#: nlmconv.c:360
+msgid "no name for output file"
+msgstr "nema imena izlazne datoteke"
+
+#: nlmconv.c:374
+msgid "warning: input and output formats are not compatible"
+msgstr "upozorenje: ulazni i izlazni oblik nisu usklađeni"
+
+#: nlmconv.c:404
+msgid "make .bss section"
+msgstr ""
+
+#: nlmconv.c:414
+msgid "make .nlmsections section"
+msgstr ""
+
+#: nlmconv.c:442
+msgid "set .bss vma"
+msgstr ""
+
+#: nlmconv.c:449
+msgid "set .data size"
+msgstr ""
+
+#: nlmconv.c:629
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "upozorenje: simbol %s je uvezen, ali ga nema na popisu za uvoz"
+
+#: nlmconv.c:649
+msgid "set start address"
+msgstr "postavi poÄetnu adresu"
+
+#: nlmconv.c:698
+#, fuzzy, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "upozorenje: START procedura %s nije definirana"
+
+#: nlmconv.c:700
+#, fuzzy, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "upozorenje: EXIT procedura %s nije definirana"
+
+#: nlmconv.c:702
+#, fuzzy, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "upozorenje: CHECK procedura %s nije definirana"
+
+#: nlmconv.c:722 nlmconv.c:908
+msgid "custom section"
+msgstr ""
+
+#: nlmconv.c:742 nlmconv.c:937
+msgid "help section"
+msgstr ""
+
+#: nlmconv.c:764 nlmconv.c:955
+msgid "message section"
+msgstr ""
+
+#: nlmconv.c:779 nlmconv.c:988
+msgid "module section"
+msgstr ""
+
+#: nlmconv.c:798 nlmconv.c:1004
+msgid "rpc section"
+msgstr ""
+
+#. There is no place to record this information.
+#: nlmconv.c:834
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: upozorenje: dijeljene biblioteke ne mogu imati neinicijalizirane podatke"
+
+#: nlmconv.c:855 nlmconv.c:1023
+msgid "shared section"
+msgstr ""
+
+#: nlmconv.c:863
+msgid "warning: No version number given"
+msgstr "upozorenje: Nije naveden broj inaÄice"
+
+#: nlmconv.c:903 nlmconv.c:932 nlmconv.c:950 nlmconv.c:999 nlmconv.c:1018
+#, c-format
+msgid "%s: read: %s"
+msgstr ""
+
+#: nlmconv.c:925
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr ""
+
+#: nlmconv.c:1101
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Uporaba: %s [opcije] [ul-datoteka [izl-datoteka]]\n"
+
+#: nlmconv.c:1102
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr ""
+
+#: nlmconv.c:1103
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+
+#: nlmconv.c:1144
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "podrÅ¡ka za %s nije ukljuÄena pri kompajliranju"
+
+#: nlmconv.c:1181
+msgid "make section"
+msgstr ""
+
+#: nlmconv.c:1195
+msgid "set section size"
+msgstr ""
+
+#: nlmconv.c:1201
+msgid "set section alignment"
+msgstr ""
+
+#: nlmconv.c:1205
+msgid "set section flags"
+msgstr ""
+
+#: nlmconv.c:1216
+msgid "set .nlmsections size"
+msgstr ""
+
+#: nlmconv.c:1297 nlmconv.c:1305 nlmconv.c:1314 nlmconv.c:1319
+msgid "set .nlmsection contents"
+msgstr ""
+
+#: nlmconv.c:1796
+msgid "stub section sizes"
+msgstr ""
+
+#: nlmconv.c:1843
+msgid "writing stub"
+msgstr ""
+
+#: nlmconv.c:1927
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr ""
+
+#: nlmconv.c:1991
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "preljev pri namještanju relokacije u odnosu na %s"
+
+#: nlmconv.c:2118
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: izvršavanje %s nije uspjelo: "
+
+#: nlmconv.c:2133
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Izvršavanje %s nije uspjelo"
+
+#: nm.c:225 size.c:78 strings.c:650
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Uporaba: %s [opcije] [datoteke]\n"
+
+#: nm.c:226
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " Ispiši simbole u [datotekama] (zadano a.out).\n"
+
+#: nm.c:227
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+
+#: nm.c:250
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr ""
+
+#: nm.c:253
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+
+#: nm.c:301
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: neispravna baza"
+
+#: nm.c:325
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: neispravan izlazni oblik"
+
+#: nm.c:346 readelf.c:8616 readelf.c:8661
+#, c-format
+msgid "<processor specific>: %d"
+msgstr ""
+
+#: nm.c:348 readelf.c:8625 readelf.c:8679
+#, c-format
+msgid "<OS specific>: %d"
+msgstr ""
+
+#: nm.c:350 readelf.c:8628 readelf.c:8682
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<nepoznato>: %d"
+
+#: nm.c:390
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Indeks arhive:\n"
+
+#: nm.c:1258
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Nedefinirani simboli iz %s:\n"
+"\n"
+
+#: nm.c:1260
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Simboli iz %s:\n"
+"\n"
+
+#: nm.c:1262 nm.c:1313
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+
+#: nm.c:1265 nm.c:1316
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+
+#: nm.c:1309
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Nedefinirani simboli iz %s[%s]:\n"
+"\n"
+
+#: nm.c:1311
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Simboli iz %s[%s]:\n"
+"\n"
+
+#: nm.c:1403
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr ""
+
+#: nm.c:1631
+msgid "Only -X 32_64 is supported"
+msgstr "Podržano je samo -X 32_64"
+
+#: nm.c:1660
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr ""
+
+#: nm.c:1661
+msgid "will produce no output, since undefined symbols have no size."
+msgstr ""
+
+#: nm.c:1689
+#, c-format
+msgid "data size %ld"
+msgstr "veliÄina podataka %ld"
+
+#: objcopy.c:473 srconv.c:1732
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr ""
+
+#: objcopy.c:474
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr ""
+
+#: objcopy.c:476
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set output arch, when input is arch-less\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff objects.\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" --compress-debug-sections Compress DWARF debug sections using zlib\n"
+" --decompress-debug-sections Decompress DWARF debug sections using zlib\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"
+msgstr ""
+
+#: objcopy.c:583
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr ""
+
+#: objcopy.c:584
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr ""
+
+#: objcopy.c:586
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+
+#: objcopy.c:659
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr ""
+
+#: objcopy.c:660
+#, c-format
+msgid "supported flags: %s"
+msgstr ""
+
+#: objcopy.c:761
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr ""
+
+#: objcopy.c:764 objcopy.c:3417
+#, c-format
+msgid "%s: fread failed"
+msgstr ""
+
+#: objcopy.c:837
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr ""
+
+#: objcopy.c:1153
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr ""
+
+#: objcopy.c:1236
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr ""
+
+#: objcopy.c:1240
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr ""
+
+#: objcopy.c:1268
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr ""
+
+#: objcopy.c:1346
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr ""
+
+#: objcopy.c:1349
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr ""
+
+#: objcopy.c:1359
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr ""
+
+#: objcopy.c:1385
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr ""
+
+#: objcopy.c:1397
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr ""
+
+#: objcopy.c:1454
+msgid "Unable to change endianness of input file(s)"
+msgstr ""
+
+#: objcopy.c:1463
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr ""
+
+#: objcopy.c:1512
+#, c-format
+msgid "Input file `%s' ignores binary architecture parameter."
+msgstr ""
+
+#: objcopy.c:1520
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr ""
+
+#: objcopy.c:1523
+#, c-format
+msgid "Output file cannot represent architecture `%s'"
+msgstr ""
+
+#: objcopy.c:1586
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr ""
+
+#: objcopy.c:1645
+#, c-format
+msgid "can't add section '%s'"
+msgstr ""
+
+#: objcopy.c:1659
+#, c-format
+msgid "can't create section `%s'"
+msgstr ""
+
+#: objcopy.c:1705
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr ""
+
+#: objcopy.c:1798
+msgid "Can't fill gap after section"
+msgstr ""
+
+#: objcopy.c:1822
+msgid "can't add padding"
+msgstr ""
+
+#: objcopy.c:1913
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr ""
+
+#: objcopy.c:1976
+msgid "error copying private BFD data"
+msgstr ""
+
+#: objcopy.c:1987
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr ""
+
+#: objcopy.c:1991
+msgid "treating that number as an absolute e_machine value instead"
+msgstr ""
+
+#: objcopy.c:1995
+msgid "ignoring the alternative value"
+msgstr ""
+
+#: objcopy.c:2027 objcopy.c:2063
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr ""
+
+#: objcopy.c:2093
+msgid "Unable to recognise the format of file"
+msgstr ""
+
+#: objcopy.c:2220
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr ""
+
+#: objcopy.c:2364
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr ""
+
+#: objcopy.c:2415
+msgid "error in private header data"
+msgstr ""
+
+#: objcopy.c:2493
+msgid "failed to create output section"
+msgstr ""
+
+#: objcopy.c:2507
+msgid "failed to set size"
+msgstr ""
+
+#: objcopy.c:2521
+msgid "failed to set vma"
+msgstr ""
+
+#: objcopy.c:2546
+msgid "failed to set alignment"
+msgstr ""
+
+#: objcopy.c:2580
+msgid "failed to copy private data"
+msgstr ""
+
+#: objcopy.c:2662
+msgid "relocation count is negative"
+msgstr ""
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2723
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr ""
+
+#: objcopy.c:2909
+msgid "can't create debugging section"
+msgstr ""
+
+#: objcopy.c:2922
+msgid "can't set debugging section contents"
+msgstr ""
+
+#: objcopy.c:2930
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr ""
+
+#: objcopy.c:3073
+msgid "could not create temporary file to hold stripped copy"
+msgstr ""
+
+#: objcopy.c:3145
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr ""
+
+#: objcopy.c:3175
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr ""
+
+#: objcopy.c:3237
+msgid "byte number must be non-negative"
+msgstr ""
+
+#: objcopy.c:3243
+#, c-format
+msgid "architecture %s unknown"
+msgstr ""
+
+#: objcopy.c:3251
+msgid "interleave must be positive"
+msgstr ""
+
+#: objcopy.c:3260
+msgid "interleave width must be positive"
+msgstr ""
+
+#: objcopy.c:3280 objcopy.c:3288
+#, c-format
+msgid "%s both copied and removed"
+msgstr ""
+
+#: objcopy.c:3387 objcopy.c:3467 objcopy.c:3575 objcopy.c:3606 objcopy.c:3630
+#: objcopy.c:3634 objcopy.c:3654
+#, c-format
+msgid "bad format for %s"
+msgstr ""
+
+#: objcopy.c:3399
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr ""
+
+#: objcopy.c:3544
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr ""
+
+#: objcopy.c:3705
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr ""
+
+#: objcopy.c:3723
+msgid "unable to parse alternative machine code"
+msgstr ""
+
+#: objcopy.c:3768
+msgid "number of bytes to reverse must be positive and even"
+msgstr ""
+
+#: objcopy.c:3771
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr ""
+
+#: objcopy.c:3786
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr ""
+
+#: objcopy.c:3792
+#, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr ""
+
+#: objcopy.c:3817
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr ""
+
+#: objcopy.c:3823
+#, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr ""
+
+#: objcopy.c:3852
+msgid "interleave start byte must be set with --byte"
+msgstr ""
+
+#: objcopy.c:3855
+msgid "byte number must be less than interleave"
+msgstr ""
+
+#: objcopy.c:3858
+msgid "interleave width must be less than or equal to interleave - byte`"
+msgstr ""
+
+#: objcopy.c:3885
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr ""
+
+#: objcopy.c:3916
+#, c-format
+msgid "unknown output EFI target: %s"
+msgstr ""
+
+#: objcopy.c:3929
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr ""
+
+#: objcopy.c:3941
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr ""
+
+#: objcopy.c:3969 objcopy.c:3983
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr ""
+
+#: objdump.c:201
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr ""
+
+#: objdump.c:202
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr ""
+
+#: objdump.c:203
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr ""
+
+#: objdump.c:204
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -P, --private=OPT,OPT... Display object format specific contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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[lLiaprmfFsoRt] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+msgstr ""
+
+#: objdump.c:236
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+
+#: objdump.c:237
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a single line for -d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+msgstr ""
+
+#: objdump.c:263
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+"\n"
+msgstr ""
+
+#: objdump.c:275
+#, c-format
+msgid ""
+"\n"
+"Options supported for -P/--private switch:\n"
+msgstr ""
+
+#: objdump.c:426
+#, c-format
+msgid "section '%s' mentioned in a -j option, but not found in any input file"
+msgstr ""
+
+#: objdump.c:530
+#, c-format
+msgid "Sections:\n"
+msgstr ""
+
+#: objdump.c:533 objdump.c:537
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr ""
+
+#: objdump.c:539
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr ""
+
+#: objdump.c:543
+#, c-format
+msgid " Flags"
+msgstr ""
+
+#: objdump.c:586
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr ""
+
+#: objdump.c:1012 objdump.c:1036
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr ""
+
+#: objdump.c:1662
+#, c-format
+msgid "disassemble_fn returned length %d"
+msgstr ""
+
+#: objdump.c:1967
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+
+#: objdump.c:2143
+#, c-format
+msgid "can't use supplied machine %s"
+msgstr ""
+
+#: objdump.c:2162
+#, c-format
+msgid "can't disassemble for architecture %s\n"
+msgstr ""
+
+#: objdump.c:2242 objdump.c:2265
+#, c-format
+msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+
+#: objdump.c:2406
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+
+#: objdump.c:2415
+#, c-format
+msgid "reading %s section of %s failed: %s"
+msgstr ""
+
+#: objdump.c:2459
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+
+#: objdump.c:2590
+#, c-format
+msgid "architecture: %s, "
+msgstr ""
+
+#: objdump.c:2593
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr ""
+
+#: objdump.c:2607
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+
+#: objdump.c:2633
+msgid "option -P/--private not supported by this file"
+msgstr ""
+
+#: objdump.c:2657
+#, c-format
+msgid "target specific dump '%s' not supported"
+msgstr ""
+
+#: objdump.c:2721
+#, c-format
+msgid "Contents of section %s:"
+msgstr ""
+
+#: objdump.c:2723
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr ""
+
+#: objdump.c:2729
+msgid "Reading section failed"
+msgstr ""
+
+#: objdump.c:2832
+#, c-format
+msgid "no symbols\n"
+msgstr ""
+
+#: objdump.c:2839
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr ""
+
+#: objdump.c:2842
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr ""
+
+#: objdump.c:3163
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+
+#: objdump.c:3223
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr ""
+
+#: objdump.c:3327
+#, c-format
+msgid "In archive %s:\n"
+msgstr ""
+
+#: objdump.c:3438
+msgid "error: the start address should be before the end address"
+msgstr ""
+
+#: objdump.c:3443
+msgid "error: the stop address should be after the start address"
+msgstr ""
+
+#: objdump.c:3455
+msgid "error: prefix strip must be non-negative"
+msgstr ""
+
+#: objdump.c:3460
+msgid "error: instruction width must be positive"
+msgstr ""
+
+#: objdump.c:3469
+msgid "unrecognized -E option"
+msgstr ""
+
+#: objdump.c:3480
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr ""
+
+#: od-xcoff.c:75
+#, c-format
+msgid ""
+"For XCOFF files:\n"
+" header Display the file header\n"
+" aout Display the auxiliary header\n"
+" sections Display the section headers\n"
+" syms Display the symbols table\n"
+" relocs Display the relocation entries\n"
+" lineno Display the line number entries\n"
+" loader Display loader section\n"
+" except Display exception table\n"
+" typchk Display type-check section\n"
+" traceback Display traceback tags\n"
+" toc Display toc symbols\n"
+msgstr ""
+
+#: od-xcoff.c:416
+#, c-format
+msgid " nbr sections: %d\n"
+msgstr ""
+
+#: od-xcoff.c:417
+#, c-format
+msgid " time and date: 0x%08x - "
+msgstr ""
+
+#: od-xcoff.c:419
+#, c-format
+msgid "not set\n"
+msgstr ""
+
+#: od-xcoff.c:426
+#, c-format
+msgid " symbols off: 0x%08x\n"
+msgstr ""
+
+#: od-xcoff.c:427
+#, c-format
+msgid " nbr symbols: %d\n"
+msgstr ""
+
+#: od-xcoff.c:428
+#, c-format
+msgid " opt hdr sz: %d\n"
+msgstr ""
+
+#: od-xcoff.c:429
+#, c-format
+msgid " flags: 0x%04x "
+msgstr ""
+
+#: od-xcoff.c:443
+#, c-format
+msgid "Auxiliary header:\n"
+msgstr ""
+
+#: od-xcoff.c:446
+#, c-format
+msgid " No aux header\n"
+msgstr ""
+
+#: od-xcoff.c:451
+#, c-format
+msgid "warning: optionnal header size too large (> %d)\n"
+msgstr ""
+
+#: od-xcoff.c:457
+msgid "cannot read auxhdr"
+msgstr ""
+
+#: od-xcoff.c:522
+#, c-format
+msgid "Section headers (at %u+%u=0x%08x to 0x%08x):\n"
+msgstr ""
+
+#: od-xcoff.c:527
+#, c-format
+msgid " No section header\n"
+msgstr ""
+
+#: od-xcoff.c:532 od-xcoff.c:544 od-xcoff.c:599
+msgid "cannot read section header"
+msgstr ""
+
+#: od-xcoff.c:558
+#, c-format
+msgid " Flags: %08x "
+msgstr ""
+
+#: od-xcoff.c:566
+#, c-format
+msgid "overflow - nreloc: %u, nlnno: %u\n"
+msgstr ""
+
+#: od-xcoff.c:587 od-xcoff.c:922 od-xcoff.c:978
+msgid "cannot read section headers"
+msgstr ""
+
+#: od-xcoff.c:646
+msgid "cannot read strings table length"
+msgstr ""
+
+#: od-xcoff.c:662
+msgid "cannot read strings table"
+msgstr ""
+
+#: od-xcoff.c:670
+msgid "cannot read symbol table"
+msgstr ""
+
+#: od-xcoff.c:685
+msgid "cannot read symbol entry"
+msgstr ""
+
+#: od-xcoff.c:720
+msgid "cannot read symbol aux entry"
+msgstr ""
+
+#: od-xcoff.c:742
+#, c-format
+msgid "Symbols table (strtable at 0x%08x)"
+msgstr ""
+
+#: od-xcoff.c:747
+#, c-format
+msgid ""
+":\n"
+" No symbols\n"
+msgstr ""
+
+#: od-xcoff.c:753
+#, c-format
+msgid " (no strings):\n"
+msgstr ""
+
+#: od-xcoff.c:755
+#, c-format
+msgid " (strings size: %08x):\n"
+msgstr ""
+
+#. Translators: 'sc' is for storage class, 'off' for offset.
+#: od-xcoff.c:769
+#, c-format
+msgid " # sc value section type aux name/off\n"
+msgstr ""
+
+#. Section length, number of relocs and line number.
+#: od-xcoff.c:821
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+msgstr ""
+
+#. Section length and number of relocs.
+#: od-xcoff.c:828
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u\n"
+msgstr ""
+
+#: od-xcoff.c:891
+#, c-format
+msgid "offset: %08x"
+msgstr ""
+
+#: od-xcoff.c:934
+#, c-format
+msgid "Relocations for %s (%u)\n"
+msgstr ""
+
+#: od-xcoff.c:937
+msgid "cannot read relocations"
+msgstr ""
+
+#: od-xcoff.c:950
+msgid "cannot read relocation entry"
+msgstr ""
+
+#: od-xcoff.c:990
+#, c-format
+msgid "Line numbers for %s (%u)\n"
+msgstr ""
+
+#: od-xcoff.c:993
+msgid "cannot read line numbers"
+msgstr ""
+
+#. Line number, symbol index and physical address.
+#: od-xcoff.c:997
+#, c-format
+msgid "lineno symndx/paddr\n"
+msgstr ""
+
+#: od-xcoff.c:1005
+msgid "cannot read line number entry"
+msgstr ""
+
+#: od-xcoff.c:1048
+#, c-format
+msgid "no .loader section in file\n"
+msgstr ""
+
+#: od-xcoff.c:1054
+#, c-format
+msgid "section .loader is too short\n"
+msgstr ""
+
+#: od-xcoff.c:1061
+#, c-format
+msgid "Loader header:\n"
+msgstr ""
+
+#: od-xcoff.c:1063
+#, c-format
+msgid " version: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1066
+#, c-format
+msgid " Unhandled version\n"
+msgstr ""
+
+#: od-xcoff.c:1071
+#, c-format
+msgid " nbr symbols: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1073
+#, c-format
+msgid " nbr relocs: %u\n"
+msgstr ""
+
+#. Import string table length.
+#: od-xcoff.c:1075
+#, c-format
+msgid " import strtab len: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1078
+#, c-format
+msgid " nbr import files: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1080
+#, c-format
+msgid " import file off: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1082
+#, c-format
+msgid " string table len: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1084
+#, c-format
+msgid " string table off: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1087
+#, c-format
+msgid "Dynamic symbols:\n"
+msgstr ""
+
+#: od-xcoff.c:1094
+#, c-format
+msgid " %4u %08x %3u "
+msgstr ""
+
+#: od-xcoff.c:1107
+#, c-format
+msgid " %3u %3u "
+msgstr ""
+
+#: od-xcoff.c:1116
+#, c-format
+msgid "(bad offset: %u)"
+msgstr ""
+
+#: od-xcoff.c:1123
+#, c-format
+msgid "Dynamic relocs:\n"
+msgstr ""
+
+#: od-xcoff.c:1163
+#, c-format
+msgid "Import files:\n"
+msgstr ""
+
+#: od-xcoff.c:1195
+#, c-format
+msgid "no .except section in file\n"
+msgstr ""
+
+#: od-xcoff.c:1203
+#, c-format
+msgid "Exception table:\n"
+msgstr ""
+
+#: od-xcoff.c:1238
+#, c-format
+msgid "no .typchk section in file\n"
+msgstr ""
+
+#: od-xcoff.c:1245
+#, c-format
+msgid "Type-check section:\n"
+msgstr ""
+
+#: od-xcoff.c:1292
+#, c-format
+msgid " address beyond section size\n"
+msgstr ""
+
+#: od-xcoff.c:1302
+#, c-format
+msgid " tags at %08x\n"
+msgstr ""
+
+#: od-xcoff.c:1380
+#, c-format
+msgid " number of CTL anchors: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1399
+#, c-format
+msgid " Name (len: %u): "
+msgstr ""
+
+#: od-xcoff.c:1402
+#, c-format
+msgid "[truncated]\n"
+msgstr ""
+
+#: od-xcoff.c:1421
+#, c-format
+msgid " (end of tags at %08x)\n"
+msgstr ""
+
+#: od-xcoff.c:1424
+#, c-format
+msgid " no tags found\n"
+msgstr ""
+
+#: od-xcoff.c:1428
+#, c-format
+msgid " Truncated .text section\n"
+msgstr ""
+
+#: od-xcoff.c:1513
+#, c-format
+msgid "TOC:\n"
+msgstr ""
+
+#: od-xcoff.c:1556
+#, c-format
+msgid "Nbr entries: %-8u Size: %08x (%u)\n"
+msgstr ""
+
+#: od-xcoff.c:1640
+msgid "cannot read header"
+msgstr ""
+
+#: od-xcoff.c:1648
+#, c-format
+msgid "File header:\n"
+msgstr ""
+
+#: od-xcoff.c:1649
+#, c-format
+msgid " magic: 0x%04x (0%04o) "
+msgstr ""
+
+#: od-xcoff.c:1653
+#, c-format
+msgid "(WRMAGIC: writable text segments)"
+msgstr ""
+
+#: od-xcoff.c:1656
+#, c-format
+msgid "(ROMAGIC: readonly sharablee text segments)"
+msgstr ""
+
+#: od-xcoff.c:1659
+#, c-format
+msgid "(TOCMAGIC: readonly text segments and TOC)"
+msgstr ""
+
+#: od-xcoff.c:1662
+#, c-format
+msgid "unknown magic"
+msgstr ""
+
+#: od-xcoff.c:1669
+#, c-format
+msgid " Unhandled magic\n"
+msgstr ""
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr ""
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr ""
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr ""
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr ""
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr ""
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr ""
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr ""
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr ""
+
+#: readelf.c:268
+msgid "<none>"
+msgstr ""
+
+#: readelf.c:269
+msgid "<no-name>"
+msgstr ""
+
+#: readelf.c:270 readelf.c:5083 readelf.c:5594 readelf.c:8132 readelf.c:8250
+#: readelf.c:9233 readelf.c:9327 readelf.c:9388 readelf.c:12391
+#: readelf.c:12394
+msgid "<corrupt>"
+msgstr ""
+
+#: readelf.c:309
+#, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr ""
+
+#: readelf.c:324
+#, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr ""
+
+#: readelf.c:334
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr ""
+
+#: readelf.c:638
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr ""
+
+#: readelf.c:659 readelf.c:757
+msgid "32-bit relocation data"
+msgstr ""
+
+#: readelf.c:671 readelf.c:701 readelf.c:768 readelf.c:797
+msgid "out of memory parsing relocs\n"
+msgstr ""
+
+#: readelf.c:689 readelf.c:786
+msgid "64-bit relocation data"
+msgstr ""
+
+#: readelf.c:902
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr ""
+
+#: readelf.c:904
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr ""
+
+#: readelf.c:909
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr ""
+
+#: readelf.c:911
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr ""
+
+#: readelf.c:919
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr ""
+
+#: readelf.c:921
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr ""
+
+#: readelf.c:926
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr ""
+
+#: readelf.c:928
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr ""
+
+#: readelf.c:1245 readelf.c:1405 readelf.c:1413
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr ""
+
+#: readelf.c:1270
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr ""
+
+#: readelf.c:1277
+#, c-format
+msgid " bad symbol index: %08lx"
+msgstr ""
+
+#: readelf.c:1363
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr ""
+
+#: readelf.c:1365
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr ""
+
+#: readelf.c:1758
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr ""
+
+#: readelf.c:1782
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr ""
+
+#: readelf.c:1786 readelf.c:2858
+#, c-format
+msgid "<unknown>: %lx"
+msgstr ""
+
+#: readelf.c:1799
+msgid "NONE (None)"
+msgstr ""
+
+#: readelf.c:1800
+msgid "REL (Relocatable file)"
+msgstr ""
+
+#: readelf.c:1801
+msgid "EXEC (Executable file)"
+msgstr ""
+
+#: readelf.c:1802
+msgid "DYN (Shared object file)"
+msgstr ""
+
+#: readelf.c:1803
+msgid "CORE (Core file)"
+msgstr ""
+
+#: readelf.c:1807
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr ""
+
+#: readelf.c:1809
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr ""
+
+#: readelf.c:1811
+#, c-format
+msgid "<unknown>: %x"
+msgstr ""
+
+#: readelf.c:1823
+msgid "None"
+msgstr ""
+
+#: readelf.c:1994
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr ""
+
+#: readelf.c:2180
+msgid ", <unknown>"
+msgstr ""
+
+#: readelf.c:2266 readelf.c:7485
+msgid "unknown"
+msgstr ""
+
+#: readelf.c:2267
+msgid "unknown mac"
+msgstr ""
+
+#: readelf.c:2331
+msgid ", relocatable"
+msgstr ""
+
+#: readelf.c:2334
+msgid ", relocatable-lib"
+msgstr ""
+
+#: readelf.c:2357
+msgid ", unknown v850 architecture variant"
+msgstr ""
+
+#: readelf.c:2414
+msgid ", unknown CPU"
+msgstr ""
+
+#: readelf.c:2429
+msgid ", unknown ABI"
+msgstr ""
+
+#: readelf.c:2452 readelf.c:2486
+msgid ", unknown ISA"
+msgstr ""
+
+#: readelf.c:2663
+msgid "Standalone App"
+msgstr ""
+
+#: readelf.c:2672
+msgid "Bare-metal C6000"
+msgstr ""
+
+#: readelf.c:2682 readelf.c:3471 readelf.c:3487
+#, c-format
+msgid "<unknown: %x>"
+msgstr ""
+
+#. This message is probably going to be displayed in a 15
+#. character wide field, so put the hex value first.
+#: readelf.c:3108
+#, c-format
+msgid "%08x: <unknown>"
+msgstr ""
+
+#: readelf.c:3163
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr ""
+
+#: readelf.c:3164
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr ""
+
+#: readelf.c:3165
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" --dyn-syms Display the dynamic symbol table\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as relocated bytes\n"
+" -w[lLiaprmfFsoRt] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+
+#: readelf.c:3197
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+msgstr ""
+
+#: readelf.c:3202
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+
+#: readelf.c:3206
+#, 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 ""
+
+#: readelf.c:3235 readelf.c:3264 readelf.c:3268 readelf.c:13623
+msgid "Out of memory allocating dump request table.\n"
+msgstr ""
+
+#: readelf.c:3440
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr ""
+
+#: readelf.c:3455
+msgid "Nothing to do.\n"
+msgstr ""
+
+#: readelf.c:3467 readelf.c:3483 readelf.c:8068
+msgid "none"
+msgstr ""
+
+#: readelf.c:3484
+msgid "2's complement, little endian"
+msgstr ""
+
+#: readelf.c:3485
+msgid "2's complement, big endian"
+msgstr ""
+
+#: readelf.c:3503
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr ""
+
+#: readelf.c:3513
+#, c-format
+msgid "ELF Header:\n"
+msgstr ""
+
+#: readelf.c:3514
+#, c-format
+msgid " Magic: "
+msgstr ""
+
+#: readelf.c:3518
+#, c-format
+msgid " Class: %s\n"
+msgstr ""
+
+#: readelf.c:3520
+#, c-format
+msgid " Data: %s\n"
+msgstr ""
+
+#: readelf.c:3522
+#, c-format
+msgid " Version: %d %s\n"
+msgstr ""
+
+#: readelf.c:3527
+#, c-format
+msgid "<unknown: %lx>"
+msgstr ""
+
+#: readelf.c:3529
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr ""
+
+#: readelf.c:3531
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr ""
+
+#: readelf.c:3533
+#, c-format
+msgid " Type: %s\n"
+msgstr ""
+
+#: readelf.c:3535
+#, c-format
+msgid " Machine: %s\n"
+msgstr ""
+
+#: readelf.c:3537
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr ""
+
+#: readelf.c:3540
+#, c-format
+msgid " Entry point address: "
+msgstr ""
+
+#: readelf.c:3542
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+
+#: readelf.c:3544
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+
+#: readelf.c:3546
+#, c-format
+msgid " (bytes into file)\n"
+msgstr ""
+
+#: readelf.c:3548
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr ""
+
+#: readelf.c:3551
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr ""
+
+#: readelf.c:3553
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr ""
+
+#: readelf.c:3555
+#, c-format
+msgid " Number of program headers: %ld"
+msgstr ""
+
+#: readelf.c:3562
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr ""
+
+#: readelf.c:3564
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr ""
+
+#: readelf.c:3569
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr ""
+
+#: readelf.c:3576
+#, c-format
+msgid " <corrupt: out of range>"
+msgstr ""
+
+#: readelf.c:3610 readelf.c:3644
+msgid "program headers"
+msgstr ""
+
+#: readelf.c:3711
+msgid "possibly corrupt ELF header - it has a non-zero program header offset, but no program headers"
+msgstr ""
+
+#: readelf.c:3714
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+
+#: readelf.c:3720
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+
+#: readelf.c:3721
+#, c-format
+msgid "Entry point "
+msgstr ""
+
+#: readelf.c:3723
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+
+#: readelf.c:3735 readelf.c:3737
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+
+#: readelf.c:3741
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr ""
+
+#: readelf.c:3744
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr ""
+
+#: readelf.c:3748
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr ""
+
+#: readelf.c:3750
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr ""
+
+#: readelf.c:3843
+msgid "more than one dynamic segment\n"
+msgstr ""
+
+#: readelf.c:3862
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr ""
+
+#: readelf.c:3877
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr ""
+
+#: readelf.c:3880
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr ""
+
+#: readelf.c:3888
+msgid "Unable to find program interpreter name\n"
+msgstr ""
+
+#: readelf.c:3895
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr ""
+
+#: readelf.c:3899
+msgid "Unable to read program interpreter name\n"
+msgstr ""
+
+#: readelf.c:3902
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+
+#: readelf.c:3914
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+
+#: readelf.c:3915
+#, c-format
+msgid " Segment Sections...\n"
+msgstr ""
+
+#: readelf.c:3951
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr ""
+
+#: readelf.c:3967
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr ""
+
+#: readelf.c:3982 readelf.c:4025
+msgid "section headers"
+msgstr ""
+
+#: readelf.c:4074 readelf.c:4154
+msgid "sh_entsize is zero\n"
+msgstr ""
+
+#: readelf.c:4082 readelf.c:4162
+msgid "Invalid sh_entsize\n"
+msgstr ""
+
+#: readelf.c:4087 readelf.c:4167
+msgid "symbols"
+msgstr ""
+
+#: readelf.c:4099 readelf.c:4178
+msgid "symbol table section indicies"
+msgstr ""
+
+#: readelf.c:4439
+#, c-format
+msgid "UNKNOWN (%*.*lx)"
+msgstr ""
+
+#: readelf.c:4461
+msgid "possibly corrupt ELF file header - it has a non-zero section header offset, but no section headers\n"
+msgstr ""
+
+#: readelf.c:4464
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+
+#: readelf.c:4470
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr ""
+
+#: readelf.c:4491 readelf.c:5079 readelf.c:5491 readelf.c:5797 readelf.c:6210
+#: readelf.c:7093 readelf.c:9213
+msgid "string table"
+msgstr ""
+
+#: readelf.c:4558
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr ""
+
+#: readelf.c:4578
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr ""
+
+#: readelf.c:4590
+msgid "File contains multiple dynamic string tables\n"
+msgstr ""
+
+#: readelf.c:4596
+msgid "dynamic strings"
+msgstr ""
+
+#: readelf.c:4603
+msgid "File contains multiple symtab shndx tables\n"
+msgstr ""
+
+#: readelf.c:4674
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+
+#: readelf.c:4676
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+
+#: readelf.c:4682 readelf.c:4693 readelf.c:4704
+#, c-format
+msgid " [Nr] Name\n"
+msgstr ""
+
+#: readelf.c:4683
+#, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:4687
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:4694
+#, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:4698
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:4705
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr ""
+
+#: readelf.c:4706
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr ""
+
+#: readelf.c:4710
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr ""
+
+#: readelf.c:4711
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr ""
+
+#: readelf.c:4716
+#, c-format
+msgid " Flags\n"
+msgstr ""
+
+#: readelf.c:4796
+#, c-format
+msgid "section %u: sh_link value of %u is larger than the number of sections\n"
+msgstr ""
+
+#: readelf.c:4896
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+
+#: readelf.c:4901
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+
+#: readelf.c:4923
+#, c-format
+msgid "[<unknown>: 0x%x] "
+msgstr ""
+
+#: readelf.c:4949
+#, c-format
+msgid ""
+"\n"
+"There are no sections to group in this file.\n"
+msgstr ""
+
+#: readelf.c:4956
+msgid "Section headers are not available!\n"
+msgstr ""
+
+#: readelf.c:4980
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+
+#: readelf.c:5018
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:5032
+#, c-format
+msgid "Corrupt header in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:5038 readelf.c:5049
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:5088
+msgid "section data"
+msgstr ""
+
+#: readelf.c:5099
+#, c-format
+msgid ""
+"\n"
+"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
+msgstr ""
+
+#: readelf.c:5102
+#, c-format
+msgid " [Index] Name\n"
+msgstr ""
+
+#: readelf.c:5116
+#, c-format
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr ""
+
+#: readelf.c:5125
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr ""
+
+#: readelf.c:5138
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr ""
+
+#: readelf.c:5205
+msgid "dynamic section image fixups"
+msgstr ""
+
+#: readelf.c:5217
+#, c-format
+msgid ""
+"\n"
+"Image fixups for needed library #%d: %s - ident: %lx\n"
+msgstr ""
+
+#: readelf.c:5220
+#, c-format
+msgid "Seg Offset Type SymVec DataType\n"
+msgstr ""
+
+#: readelf.c:5252
+msgid "dynamic section image relocations"
+msgstr ""
+
+#: readelf.c:5256
+#, c-format
+msgid ""
+"\n"
+"Image relocs\n"
+msgstr ""
+
+#: readelf.c:5258
+#, c-format
+msgid "Seg Offset Type Addend Seg Sym Off\n"
+msgstr ""
+
+#: readelf.c:5313
+msgid "dynamic string section"
+msgstr ""
+
+#: readelf.c:5414
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+
+#: readelf.c:5429
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+
+#: readelf.c:5453
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+
+#: readelf.c:5460 readelf.c:5890 readelf.c:6227
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:5510
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+
+#: readelf.c:5648
+#, c-format
+msgid "\tUnknown version.\n"
+msgstr ""
+
+#: readelf.c:5701 readelf.c:6074
+msgid "unwind table"
+msgstr ""
+
+#: readelf.c:5743 readelf.c:6156 readelf.c:6415
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr ""
+
+#: readelf.c:5805 readelf.c:6218 readelf.c:7101 readelf.c:7148
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+
+#: readelf.c:5868
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+
+#: readelf.c:5873 readelf.c:5888 readelf.c:6225
+#, c-format
+msgid "'%s'"
+msgstr ""
+
+#: readelf.c:5880
+msgid "unwind info"
+msgstr ""
+
+#: readelf.c:5883 readelf.c:6224
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+
+#: readelf.c:6333
+msgid "unwind data"
+msgstr ""
+
+#: readelf.c:6386
+#, c-format
+msgid "Skipping unexpected relocation at offset 0x%lx\n"
+msgstr ""
+
+#: readelf.c:6490
+#, c-format
+msgid "[Truncated opcode]\n"
+msgstr ""
+
+#: readelf.c:6534 readelf.c:6734
+#, c-format
+msgid "Refuse to unwind"
+msgstr ""
+
+#: readelf.c:6557
+#, c-format
+msgid " [Reserved]"
+msgstr ""
+
+#: readelf.c:6585
+#, c-format
+msgid " finish"
+msgstr ""
+
+#: readelf.c:6590 readelf.c:6676
+#, c-format
+msgid "[Spare]"
+msgstr ""
+
+#: readelf.c:6697 readelf.c:6831
+#, c-format
+msgid " [unsupported opcode]"
+msgstr ""
+
+#: readelf.c:6781
+#, c-format
+msgid "pop frame {"
+msgstr ""
+
+#: readelf.c:6792
+msgid "[pad]"
+msgstr ""
+
+#: readelf.c:6820
+#, c-format
+msgid "sp = sp + %ld"
+msgstr ""
+
+#: readelf.c:6878
+#, c-format
+msgid " Personality routine: "
+msgstr ""
+
+#: readelf.c:6896
+#, c-format
+msgid " [Truncated data]\n"
+msgstr ""
+
+#: readelf.c:6911
+#, c-format
+msgid " Compact model %d\n"
+msgstr ""
+
+#: readelf.c:6947
+#, c-format
+msgid " Restore stack from frame pointer\n"
+msgstr ""
+
+#: readelf.c:6949
+#, c-format
+msgid " Stack increment %d\n"
+msgstr ""
+
+#: readelf.c:6950
+#, c-format
+msgid " Registers restored: "
+msgstr ""
+
+#: readelf.c:6955
+#, c-format
+msgid " Return register: %s\n"
+msgstr ""
+
+#: readelf.c:7038
+#, c-format
+msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
+msgstr ""
+
+#: readelf.c:7107
+#, c-format
+msgid ""
+"\n"
+"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:7159
+#, c-format
+msgid "NONE\n"
+msgstr ""
+
+#: readelf.c:7185
+#, c-format
+msgid "Interface Version: %s\n"
+msgstr ""
+
+#: readelf.c:7187
+#, c-format
+msgid "<corrupt: %ld>\n"
+msgstr ""
+
+#: readelf.c:7200
+#, c-format
+msgid "Time Stamp: %s\n"
+msgstr ""
+
+#: readelf.c:7377 readelf.c:7423
+msgid "dynamic section"
+msgstr ""
+
+#: readelf.c:7501
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+
+#: readelf.c:7539
+msgid "Unable to seek to end of file!\n"
+msgstr ""
+
+#: readelf.c:7552
+msgid "Unable to determine the number of symbols to load\n"
+msgstr ""
+
+#: readelf.c:7585
+msgid "Unable to seek to end of file\n"
+msgstr ""
+
+#: readelf.c:7592
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr ""
+
+#: readelf.c:7598
+msgid "dynamic string table"
+msgstr ""
+
+#: readelf.c:7635
+msgid "symbol information"
+msgstr ""
+
+#: readelf.c:7660
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+
+#: readelf.c:7663
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr ""
+
+#: readelf.c:7699
+#, c-format
+msgid "Auxiliary library"
+msgstr ""
+
+#: readelf.c:7703
+#, c-format
+msgid "Filter library"
+msgstr ""
+
+#: readelf.c:7707
+#, c-format
+msgid "Configuration file"
+msgstr ""
+
+#: readelf.c:7711
+#, c-format
+msgid "Dependency audit library"
+msgstr ""
+
+#: readelf.c:7715
+#, c-format
+msgid "Audit library"
+msgstr ""
+
+#: readelf.c:7733 readelf.c:7761 readelf.c:7789
+#, c-format
+msgid "Flags:"
+msgstr ""
+
+#: readelf.c:7736 readelf.c:7764 readelf.c:7791
+#, c-format
+msgid " None\n"
+msgstr ""
+
+#: readelf.c:7912
+#, c-format
+msgid "Shared library: [%s]"
+msgstr ""
+
+#: readelf.c:7915
+#, c-format
+msgid " program interpreter"
+msgstr ""
+
+#: readelf.c:7919
+#, c-format
+msgid "Library soname: [%s]"
+msgstr ""
+
+#: readelf.c:7923
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr ""
+
+#: readelf.c:7927
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr ""
+
+#: readelf.c:7960
+#, c-format
+msgid " (bytes)\n"
+msgstr ""
+
+#: readelf.c:7990
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr ""
+
+#: readelf.c:8090
+msgid "| <unknown>"
+msgstr ""
+
+#: readelf.c:8123
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+
+#: readelf.c:8126
+#, c-format
+msgid " Addr: 0x"
+msgstr ""
+
+#: readelf.c:8128 readelf.c:8246 readelf.c:8390
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr ""
+
+#: readelf.c:8136
+msgid "version definition section"
+msgstr ""
+
+#: readelf.c:8169
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr ""
+
+#: readelf.c:8172
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr ""
+
+#: readelf.c:8188
+#, c-format
+msgid "Name: %s\n"
+msgstr ""
+
+#: readelf.c:8190
+#, c-format
+msgid "Name index: %ld\n"
+msgstr ""
+
+#: readelf.c:8212
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr ""
+
+#: readelf.c:8215
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr ""
+
+#: readelf.c:8220
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr ""
+
+#: readelf.c:8226
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr ""
+
+#: readelf.c:8241
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+
+#: readelf.c:8244
+#, c-format
+msgid " Addr: 0x"
+msgstr ""
+
+#: readelf.c:8255
+msgid "Version Needs section"
+msgstr ""
+
+#: readelf.c:8283
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr ""
+
+#: readelf.c:8286
+#, c-format
+msgid " File: %s"
+msgstr ""
+
+#: readelf.c:8288
+#, c-format
+msgid " File: %lx"
+msgstr ""
+
+#: readelf.c:8290
+#, c-format
+msgid " Cnt: %d\n"
+msgstr ""
+
+#: readelf.c:8315
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr ""
+
+#: readelf.c:8318
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr ""
+
+#: readelf.c:8321
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr ""
+
+#: readelf.c:8334
+msgid "Missing Version Needs auxillary information\n"
+msgstr ""
+
+#: readelf.c:8340
+msgid "Missing Version Needs information\n"
+msgstr ""
+
+#: readelf.c:8378
+msgid "version string table"
+msgstr ""
+
+#: readelf.c:8385
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+
+#: readelf.c:8388
+#, c-format
+msgid " Addr: "
+msgstr ""
+
+#: readelf.c:8399
+msgid "version symbol data"
+msgstr ""
+
+#: readelf.c:8427
+msgid " 0 (*local*) "
+msgstr ""
+
+#: readelf.c:8431
+msgid " 1 (*global*) "
+msgstr ""
+
+#: readelf.c:8442
+msgid "invalid index into symbol array\n"
+msgstr ""
+
+#: readelf.c:8476 readelf.c:9279
+msgid "version need"
+msgstr ""
+
+#: readelf.c:8487
+msgid "version need aux (2)"
+msgstr ""
+
+#: readelf.c:8508 readelf.c:8570
+msgid "*invalid*"
+msgstr ""
+
+#: readelf.c:8538 readelf.c:9357
+msgid "version def"
+msgstr ""
+
+#: readelf.c:8564 readelf.c:9379
+msgid "version def aux"
+msgstr ""
+
+#: readelf.c:8599
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+
+#: readelf.c:8807
+#, c-format
+msgid "<other>: %x"
+msgstr ""
+
+#: readelf.c:8869
+msgid "Unable to read in dynamic data\n"
+msgstr ""
+
+#: readelf.c:8919
+#, c-format
+msgid " <corrupt: %14ld>"
+msgstr ""
+
+#: readelf.c:8962 readelf.c:9014 readelf.c:9038 readelf.c:9068 readelf.c:9092
+msgid "Unable to seek to start of dynamic information\n"
+msgstr ""
+
+#: readelf.c:8968 readelf.c:9020
+msgid "Failed to read in number of buckets\n"
+msgstr ""
+
+#: readelf.c:8974
+msgid "Failed to read in number of chains\n"
+msgstr ""
+
+#: readelf.c:9076
+msgid "Failed to determine last chain length\n"
+msgstr ""
+
+#: readelf.c:9120
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+
+#: readelf.c:9122 readelf.c:9140
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:9124 readelf.c:9142
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:9138
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+
+#: readelf.c:9182
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' has a sh_entsize of zero!\n"
+msgstr ""
+
+#: readelf.c:9187
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:9192
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:9194
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:9249
+msgid "version data"
+msgstr ""
+
+#: readelf.c:9298
+msgid "version need aux (3)"
+msgstr ""
+
+#: readelf.c:9332
+msgid "bad dynamic symbol\n"
+msgstr ""
+
+#: readelf.c:9404
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+
+#: readelf.c:9416
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+
+#: readelf.c:9418 readelf.c:9488
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr ""
+
+#: readelf.c:9486
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+
+#: readelf.c:9552
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+
+#: readelf.c:9555
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr ""
+
+#: readelf.c:9564
+#, c-format
+msgid "<corrupt: %19ld>"
+msgstr ""
+
+#: readelf.c:9646
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr ""
+
+#: readelf.c:9813
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr ""
+
+#: readelf.c:10138
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr ""
+
+#: readelf.c:10146
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr ""
+
+#: readelf.c:10155
+#, c-format
+msgid "skipping invalid relocation symbol index 0x%lx in section %s\n"
+msgstr ""
+
+#: readelf.c:10177
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr ""
+
+#: readelf.c:10223
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+
+#: readelf.c:10244
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+
+#: readelf.c:10250
+msgid "section contents"
+msgstr ""
+
+#: readelf.c:10269
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+
+#: readelf.c:10287
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr ""
+
+#: readelf.c:10318
+#, c-format
+msgid " No strings found in this section."
+msgstr ""
+
+#: readelf.c:10340
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+
+#: readelf.c:10364
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr ""
+
+#: readelf.c:10498
+#, c-format
+msgid "%s section data"
+msgstr ""
+
+#: readelf.c:10568
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:10577
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr ""
+
+#: readelf.c:10613
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr ""
+
+#: readelf.c:10641
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr ""
+
+#: readelf.c:10682
+#, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr ""
+
+#: readelf.c:10860 readelf.c:10874 readelf.c:10893 readelf.c:11293
+#, c-format
+msgid "None\n"
+msgstr ""
+
+#: readelf.c:10861
+#, c-format
+msgid "Application\n"
+msgstr ""
+
+#: readelf.c:10862
+#, c-format
+msgid "Realtime\n"
+msgstr ""
+
+#: readelf.c:10863
+#, c-format
+msgid "Microcontroller\n"
+msgstr ""
+
+#: readelf.c:10864
+#, c-format
+msgid "Application or Realtime\n"
+msgstr ""
+
+#: readelf.c:10875 readelf.c:10895 readelf.c:11347 readelf.c:11365
+#: readelf.c:11440 readelf.c:11461
+#, c-format
+msgid "8-byte\n"
+msgstr ""
+
+#: readelf.c:10876 readelf.c:11443 readelf.c:11464
+#, c-format
+msgid "4-byte\n"
+msgstr ""
+
+#: readelf.c:10880 readelf.c:10899
+#, c-format
+msgid "8-byte and up to %d-byte extended\n"
+msgstr ""
+
+#: readelf.c:10894
+#, c-format
+msgid "8-byte, except leaf SP\n"
+msgstr ""
+
+#: readelf.c:10910 readelf.c:11000 readelf.c:11479
+#, c-format
+msgid "flag = %d, vendor = %s\n"
+msgstr ""
+
+#: readelf.c:10916
+#, c-format
+msgid "True\n"
+msgstr ""
+
+#: readelf.c:11045 readelf.c:11231
+#, c-format
+msgid "Hard or soft float\n"
+msgstr ""
+
+#: readelf.c:11048
+#, c-format
+msgid "Hard float\n"
+msgstr ""
+
+#: readelf.c:11051 readelf.c:11240
+#, c-format
+msgid "Soft float\n"
+msgstr ""
+
+#: readelf.c:11054
+#, c-format
+msgid "Single-precision hard float\n"
+msgstr ""
+
+#: readelf.c:11071 readelf.c:11097
+#, c-format
+msgid "Any\n"
+msgstr ""
+
+#: readelf.c:11074
+#, c-format
+msgid "Generic\n"
+msgstr ""
+
+#: readelf.c:11103
+#, c-format
+msgid "Memory\n"
+msgstr ""
+
+#: readelf.c:11234
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr ""
+
+#: readelf.c:11237
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr ""
+
+#: readelf.c:11243
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU)\n"
+msgstr ""
+
+#: readelf.c:11326
+#, c-format
+msgid "Not used\n"
+msgstr ""
+
+#: readelf.c:11329
+#, c-format
+msgid "2 bytes\n"
+msgstr ""
+
+#: readelf.c:11332
+#, c-format
+msgid "4 bytes\n"
+msgstr ""
+
+#: readelf.c:11350 readelf.c:11368 readelf.c:11446 readelf.c:11467
+#, c-format
+msgid "16-byte\n"
+msgstr ""
+
+#: readelf.c:11383
+#, c-format
+msgid "DSBT addressing not used\n"
+msgstr ""
+
+#: readelf.c:11386
+#, c-format
+msgid "DSBT addressing used\n"
+msgstr ""
+
+#: readelf.c:11401
+#, c-format
+msgid "Data addressing position-dependent\n"
+msgstr ""
+
+#: readelf.c:11404
+#, c-format
+msgid "Data addressing position-independent, GOT near DP\n"
+msgstr ""
+
+#: readelf.c:11407
+#, c-format
+msgid "Data addressing position-independent, GOT far from DP\n"
+msgstr ""
+
+#: readelf.c:11422
+#, c-format
+msgid "Code addressing position-dependent\n"
+msgstr ""
+
+#: readelf.c:11425
+#, c-format
+msgid "Code addressing position-independent\n"
+msgstr ""
+
+#: readelf.c:11531
+msgid "attributes"
+msgstr ""
+
+#: readelf.c:11552
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr ""
+
+#: readelf.c:11558
+#, c-format
+msgid "Attribute Section: %s\n"
+msgstr ""
+
+#: readelf.c:11583
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr ""
+
+#: readelf.c:11595
+#, c-format
+msgid "File Attributes\n"
+msgstr ""
+
+#: readelf.c:11598
+#, c-format
+msgid "Section Attributes:"
+msgstr ""
+
+#: readelf.c:11601
+#, c-format
+msgid "Symbol Attributes:"
+msgstr ""
+
+#: readelf.c:11616
+#, c-format
+msgid "Unknown tag: %d\n"
+msgstr ""
+
+#. ??? Do something sensible, like dump hex.
+#: readelf.c:11635
+#, c-format
+msgid " Unknown section contexts\n"
+msgstr ""
+
+#: readelf.c:11642
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr ""
+
+#: readelf.c:11693 readelf.c:11715
+msgid "<unknown>"
+msgstr ""
+
+#: readelf.c:11810 readelf.c:12344
+msgid "liblist section data"
+msgstr ""
+
+#: readelf.c:11813
+#, c-format
+msgid ""
+"\n"
+"Section '.liblist' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:11815
+msgid " Library Time Stamp Checksum Version Flags\n"
+msgstr ""
+
+#: readelf.c:11841
+#, c-format
+msgid "<corrupt: %9ld>"
+msgstr ""
+
+#: readelf.c:11846
+msgid " NONE"
+msgstr ""
+
+#: readelf.c:11897
+msgid "options"
+msgstr ""
+
+#: readelf.c:11928
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+
+#: readelf.c:12089
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr ""
+
+#: readelf.c:12106 readelf.c:12121
+msgid "conflict"
+msgstr ""
+
+#: readelf.c:12131
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:12133
+msgid " Num: Index Value Name"
+msgstr ""
+
+#: readelf.c:12145 readelf.c:12234 readelf.c:12305
+#, c-format
+msgid "<corrupt: %14ld>"
+msgstr ""
+
+#: readelf.c:12167
+msgid "Global Offset Table data"
+msgstr ""
+
+#: readelf.c:12171
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+
+#: readelf.c:12172
+#, c-format
+msgid " Canonical gp value: "
+msgstr ""
+
+#: readelf.c:12176 readelf.c:12276
+#, c-format
+msgid " Reserved entries:\n"
+msgstr ""
+
+#: readelf.c:12177
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr ""
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12211 readelf.c:12278
+#: readelf.c:12287
+msgid "Address"
+msgstr ""
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12212
+msgid "Access"
+msgstr ""
+
+#: readelf.c:12179 readelf.c:12196 readelf.c:12213 readelf.c:12278
+#: readelf.c:12288
+msgid "Initial"
+msgstr ""
+
+#: readelf.c:12181
+#, c-format
+msgid " Lazy resolver\n"
+msgstr ""
+
+#: readelf.c:12187
+#, c-format
+msgid " Module pointer (GNU extension)\n"
+msgstr ""
+
+#: readelf.c:12193
+#, c-format
+msgid " Local entries:\n"
+msgstr ""
+
+#: readelf.c:12209
+#, c-format
+msgid " Global entries:\n"
+msgstr ""
+
+#: readelf.c:12214 readelf.c:12289
+msgid "Sym.Val."
+msgstr ""
+
+#. Note for translators: "Ndx" = abbreviated form of "Index".
+#: readelf.c:12217 readelf.c:12289
+msgid "Ndx"
+msgstr ""
+
+#: readelf.c:12217 readelf.c:12289
+msgid "Name"
+msgstr ""
+
+#: readelf.c:12271
+msgid "Procedure Linkage Table data"
+msgstr ""
+
+#: readelf.c:12277
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr ""
+
+#: readelf.c:12280
+#, c-format
+msgid " PLT lazy resolver\n"
+msgstr ""
+
+#: readelf.c:12282
+#, c-format
+msgid " Module pointer\n"
+msgstr ""
+
+#: readelf.c:12285
+#, c-format
+msgid " Entries:\n"
+msgstr ""
+
+#: readelf.c:12352
+msgid "liblist string table"
+msgstr ""
+
+#: readelf.c:12362
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:12366
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr ""
+
+#: readelf.c:12416
+msgid "NT_AUXV (auxiliary vector)"
+msgstr ""
+
+#: readelf.c:12418
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr ""
+
+#: readelf.c:12420
+msgid "NT_FPREGSET (floating point registers)"
+msgstr ""
+
+#: readelf.c:12422
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr ""
+
+#: readelf.c:12424
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr ""
+
+#: readelf.c:12426
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr ""
+
+#: readelf.c:12428
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr ""
+
+#: readelf.c:12430
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr ""
+
+#: readelf.c:12432
+msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
+msgstr ""
+
+#: readelf.c:12434
+msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
+msgstr ""
+
+#: readelf.c:12436
+msgid "NT_S390_TIMER (s390 timer register)"
+msgstr ""
+
+#: readelf.c:12438
+msgid "NT_S390_TODCMP (s390 TOD comparator register)"
+msgstr ""
+
+#: readelf.c:12440
+msgid "NT_S390_TODPREG (s390 TOD programmable register)"
+msgstr ""
+
+#: readelf.c:12442
+msgid "NT_S390_CTRS (s390 control registers)"
+msgstr ""
+
+#: readelf.c:12444
+msgid "NT_S390_PREFIX (s390 prefix register)"
+msgstr ""
+
+#: readelf.c:12446
+msgid "NT_ARM_VFP (arm VFP registers)"
+msgstr ""
+
+#: readelf.c:12448
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr ""
+
+#: readelf.c:12450
+msgid "NT_FPREGS (floating point registers)"
+msgstr ""
+
+#: readelf.c:12452
+msgid "NT_PSINFO (psinfo structure)"
+msgstr ""
+
+#: readelf.c:12454
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr ""
+
+#: readelf.c:12456
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr ""
+
+#: readelf.c:12458
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr ""
+
+#: readelf.c:12466
+msgid "NT_VERSION (version)"
+msgstr ""
+
+#: readelf.c:12468
+msgid "NT_ARCH (architecture)"
+msgstr ""
+
+#: readelf.c:12473 readelf.c:12496 readelf.c:12575 readelf.c:12633
+#: readelf.c:12710
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr ""
+
+#: readelf.c:12485
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr ""
+
+#: readelf.c:12487
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr ""
+
+#: readelf.c:12489
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr ""
+
+#: readelf.c:12491
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr ""
+
+#: readelf.c:12509
+#, c-format
+msgid " Build ID: "
+msgstr ""
+
+#: readelf.c:12548
+#, c-format
+msgid " OS: %s, ABI: %ld.%ld.%ld\n"
+msgstr ""
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:12565
+msgid "NetBSD procinfo structure"
+msgstr ""
+
+#: readelf.c:12592 readelf.c:12606
+msgid "PT_GETREGS (reg structure)"
+msgstr ""
+
+#: readelf.c:12594 readelf.c:12608
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr ""
+
+#: readelf.c:12627
+msgid "NT_STAPSDT (SystemTap probe descriptors)"
+msgstr ""
+
+#: readelf.c:12660
+#, c-format
+msgid " Provider: %s\n"
+msgstr ""
+
+#: readelf.c:12661
+#, c-format
+msgid " Name: %s\n"
+msgstr ""
+
+#: readelf.c:12662
+#, c-format
+msgid " Location: "
+msgstr ""
+
+#: readelf.c:12664
+#, c-format
+msgid ", Base: "
+msgstr ""
+
+#: readelf.c:12666
+#, c-format
+msgid ", Semaphore: "
+msgstr ""
+
+#: readelf.c:12669
+#, c-format
+msgid " Arguments: %s\n"
+msgstr ""
+
+#: readelf.c:12682
+msgid "NT_VMS_MHD (module header)"
+msgstr ""
+
+#: readelf.c:12684
+msgid "NT_VMS_LNM (language name)"
+msgstr ""
+
+#: readelf.c:12686
+msgid "NT_VMS_SRC (source files)"
+msgstr ""
+
+#: readelf.c:12690
+msgid "NT_VMS_EIDC (consistency check)"
+msgstr ""
+
+#: readelf.c:12692
+msgid "NT_VMS_FPMODE (FP mode)"
+msgstr ""
+
+#: readelf.c:12696
+msgid "NT_VMS_IMGNAM (image name)"
+msgstr ""
+
+#: readelf.c:12698
+msgid "NT_VMS_IMGID (image id)"
+msgstr ""
+
+#: readelf.c:12700
+msgid "NT_VMS_LINKID (link id)"
+msgstr ""
+
+#: readelf.c:12702
+msgid "NT_VMS_IMGBID (build id)"
+msgstr ""
+
+#: readelf.c:12704
+msgid "NT_VMS_GSTNAM (sym table name)"
+msgstr ""
+
+#: readelf.c:12724
+#, c-format
+msgid " Creation date : %.17s\n"
+msgstr ""
+
+#: readelf.c:12725
+#, c-format
+msgid " Last patch date: %.17s\n"
+msgstr ""
+
+#: readelf.c:12726
+#, c-format
+msgid " Module name : %s\n"
+msgstr ""
+
+#: readelf.c:12727
+#, c-format
+msgid " Module version : %s\n"
+msgstr ""
+
+#: readelf.c:12730
+#, c-format
+msgid " Invalid size\n"
+msgstr ""
+
+#: readelf.c:12733
+#, c-format
+msgid " Language: %s\n"
+msgstr ""
+
+#: readelf.c:12737
+#, c-format
+msgid " Floating Point mode: "
+msgstr ""
+
+#: readelf.c:12742
+#, c-format
+msgid " Link time: "
+msgstr ""
+
+#: readelf.c:12748
+#, c-format
+msgid " Patch time: "
+msgstr ""
+
+#: readelf.c:12754
+#, c-format
+msgid " Major id: %u, minor id: %u\n"
+msgstr ""
+
+#: readelf.c:12757
+#, c-format
+msgid " Last modified : "
+msgstr ""
+
+#: readelf.c:12760
+#, c-format
+msgid ""
+"\n"
+" Link flags : "
+msgstr ""
+
+#: readelf.c:12763
+#, c-format
+msgid " Header flags: 0x%08x\n"
+msgstr ""
+
+#: readelf.c:12765
+#, c-format
+msgid " Image id : %s\n"
+msgstr ""
+
+#: readelf.c:12769
+#, c-format
+msgid " Image name: %s\n"
+msgstr ""
+
+#: readelf.c:12772
+#, c-format
+msgid " Global symbol table name: %s\n"
+msgstr ""
+
+#: readelf.c:12775
+#, c-format
+msgid " Image id: %s\n"
+msgstr ""
+
+#: readelf.c:12778
+#, c-format
+msgid " Linker id: %s\n"
+msgstr ""
+
+#: readelf.c:12853
+msgid "notes"
+msgstr ""
+
+#: readelf.c:12859
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+
+#: readelf.c:12861
+#, c-format
+msgid " %-20s %10s\tDescription\n"
+msgstr ""
+
+#: readelf.c:12861
+msgid "Owner"
+msgstr ""
+
+#: readelf.c:12861
+msgid "Data size"
+msgstr ""
+
+#: readelf.c:12899 readelf.c:12912
+#, c-format
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr ""
+
+#: readelf.c:12901 readelf.c:12914
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr ""
+
+#: readelf.c:13010
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr ""
+
+#: readelf.c:13102
+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"
+msgstr ""
+
+#: readelf.c:13149
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr ""
+
+#: readelf.c:13163
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+
+#: readelf.c:13335
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr ""
+
+#: readelf.c:13341
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr ""
+
+#: readelf.c:13359
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr ""
+
+#: readelf.c:13367
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr ""
+
+#: readelf.c:13378
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr ""
+
+#: readelf.c:13383
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr ""
+
+#: readelf.c:13466 readelf.c:13549
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr ""
+
+#: readelf.c:13488
+#, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr ""
+
+#: readelf.c:13567
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr ""
+
+#: rename.c:124
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr ""
+
+#. We have to clean up here.
+#: rename.c:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr ""
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr ""
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr ""
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr ""
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr ""
+
+#: resbin.c:208
+msgid "cursor"
+msgstr ""
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr ""
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr ""
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr ""
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr ""
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr ""
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr ""
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr ""
+
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr ""
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr ""
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr ""
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr ""
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr ""
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr ""
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr ""
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr ""
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr ""
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr ""
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr ""
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr ""
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr ""
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr ""
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr ""
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr ""
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr ""
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr ""
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr ""
+
+#: resbin.c:871
+msgid "group icon"
+msgstr ""
+
+#: resbin.c:935 resbin.c:1173
+msgid "unexpected version string"
+msgstr ""
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr ""
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr ""
+
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr ""
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr ""
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr ""
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr ""
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr ""
+
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr ""
+
+#: resbin.c:1059
+msgid "version stringtable"
+msgstr ""
+
+#: resbin.c:1067
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr ""
+
+#: resbin.c:1084
+msgid "version string"
+msgstr ""
+
+#: resbin.c:1101
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr ""
+
+#: resbin.c:1108
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr ""
+
+#: resbin.c:1133
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr ""
+
+#: resbin.c:1152
+msgid "version varfileinfo"
+msgstr ""
+
+#: resbin.c:1167
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr ""
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr ""
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr ""
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr ""
+
+#: rescoff.c:190
+msgid "directory"
+msgstr ""
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr ""
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr ""
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr ""
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr ""
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr ""
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr ""
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr ""
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr ""
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr ""
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr ""
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr ""
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr ""
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr ""
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr ""
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr ""
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr ""
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr ""
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr ""
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr ""
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr ""
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr ""
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr ""
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr ""
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr ""
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr ""
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr ""
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr ""
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr ""
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr ""
+
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr ""
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr ""
+
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr ""
+
+#: resrc.c:1958
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr ""
+
+#: size.c:79
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr ""
+
+#: size.c:80
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr ""
+
+#: size.c:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr ""
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr ""
+
+#: srconv.c:1733
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr ""
+
+#: srconv.c:1734
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+
+#: srconv.c:1880
+#, c-format
+msgid "unable to open output file %s"
+msgstr ""
+
+#: stabs.c:328 stabs.c:1717
+msgid "numeric overflow"
+msgstr ""
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr ""
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr ""
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr ""
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr ""
+
+#: stabs.c:727
+msgid "unknown C++ encoded name"
+msgstr ""
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1262
+msgid "unrecognized cross reference type"
+msgstr ""
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1809
+msgid "missing index type"
+msgstr ""
+
+#: stabs.c:2129
+msgid "unknown virtual character for baseclass"
+msgstr ""
+
+#: stabs.c:2147
+msgid "unknown visibility character for baseclass"
+msgstr ""
+
+#: stabs.c:2337
+msgid "unnamed $vb type"
+msgstr ""
+
+#: stabs.c:2343
+msgid "unrecognized C++ abbreviation"
+msgstr ""
+
+#: stabs.c:2419
+msgid "unknown visibility character for field"
+msgstr ""
+
+#: stabs.c:2679
+msgid "const/volatile indicator missing"
+msgstr ""
+
+#: stabs.c:2924
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr ""
+
+#: stabs.c:3224
+msgid "Undefined N_EXCL"
+msgstr ""
+
+#: stabs.c:3304
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr ""
+
+#: stabs.c:3309
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr ""
+
+#: stabs.c:3388
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr ""
+
+#: stabs.c:3680
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr ""
+
+#: stabs.c:3775
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr ""
+
+#: stabs.c:5125
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr ""
+
+#: stabs.c:5167
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr ""
+
+#: stabs.c:5234
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr ""
+
+#: stabs.c:5286
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr ""
+
+#: stabs.c:5366
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr ""
+
+#: stabs.c:5415
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr ""
+
+#: stabs.c:5422
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr ""
+
+#: strings.c:186 strings.c:245
+#, c-format
+msgid "invalid integer argument %s"
+msgstr ""
+
+#: strings.c:248
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr ""
+
+#: strings.c:651
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr ""
+
+#: strings.c:652
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+
+#: sysdump.c:66
+msgid "*undefined*"
+msgstr ""
+
+#: sysdump.c:137
+#, c-format
+msgid "SUM IS %x\n"
+msgstr ""
+
+#: sysdump.c:503
+#, c-format
+msgid "GOT A %x\n"
+msgstr ""
+
+#: sysdump.c:521
+#, c-format
+msgid "WANTED %x!!\n"
+msgstr ""
+
+#: sysdump.c:539
+msgid "SYMBOL INFO"
+msgstr ""
+
+#: sysdump.c:557
+msgid "DERIVED TYPE"
+msgstr ""
+
+#: sysdump.c:614
+msgid "MODULE***\n"
+msgstr ""
+
+#: sysdump.c:647
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr ""
+
+#: sysdump.c:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr ""
+
+#: version.c:36
+#, c-format
+msgid "Copyright 2011 Free Software Foundation, Inc.\n"
+msgstr ""
+
+#: version.c:37
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+
+#: windmc.c:190
+#, c-format
+msgid "can't create %s file `%s' for output.\n"
+msgstr ""
+
+#: windmc.c:198
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr ""
+
+#: windmc.c:200
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianness.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+
+#: windmc.c:220
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+
+#: windmc.c:261 windres.c:411
+#, c-format
+msgid "%s: warning: "
+msgstr ""
+
+#: windmc.c:262
+#, c-format
+msgid "A codepage was specified switch `%s' and UTF16.\n"
+msgstr ""
+
+#: windmc.c:263
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr ""
+
+#: windmc.c:307
+msgid "try to add a ill language."
+msgstr ""
+
+#: windmc.c:1116
+#, c-format
+msgid "unable to open file `%s' for input.\n"
+msgstr ""
+
+#: windmc.c:1124
+#, c-format
+msgid "unable to read contents of %s"
+msgstr ""
+
+#: windmc.c:1136
+msgid "input file does not seems to be UFT16.\n"
+msgstr ""
+
+#: windres.c:216
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr ""
+
+#: windres.c:390
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ""
+
+#: windres.c:402
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ""
+
+#: windres.c:413
+#, c-format
+msgid ": duplicate value\n"
+msgstr ""
+
+#: windres.c:563
+#, c-format
+msgid "unknown format type `%s'"
+msgstr ""
+
+#: windres.c:564
+#, c-format
+msgid "%s: supported formats:"
+msgstr ""
+
+#. Otherwise, we give up.
+#: windres.c:647
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr ""
+
+#: windres.c:659
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr ""
+
+#: windres.c:661
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" --preprocessor-arg=<arg> Additional preprocessor argument\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+
+#: windres.c:679
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr ""
+
+#: windres.c:682
+#, 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 ""
+
+#: windres.c:687
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+
+#: windres.c:850
+msgid "invalid codepage specified.\n"
+msgstr ""
+
+#: windres.c:865
+msgid "invalid option -f\n"
+msgstr ""
+
+#: windres.c:870
+msgid "No filename following the -fo option.\n"
+msgstr ""
+
+#: windres.c:959
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr ""
+
+#: windres.c:1072
+msgid "no resources"
+msgstr ""
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr ""
+
+#: wrstabs.c:637
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr ""
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr ""
diff --git a/binutils-2.24/binutils/po/id.gmo b/binutils-2.24/binutils/po/id.gmo
new file mode 100644
index 00000000..5cbebaba
--- /dev/null
+++ b/binutils-2.24/binutils/po/id.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/id.po b/binutils-2.24/binutils/po/id.po
new file mode 100644
index 00000000..f09b9747
--- /dev/null
+++ b/binutils-2.24/binutils/po/id.po
@@ -0,0 +1,6486 @@
+# Pesan Bahasa Indonesia untuk binutils
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Arif E. Nugroho <arif_endro@yahoo.com>, 2008,2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.20\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2009-09-07 14:08+0200\n"
+"PO-Revision-Date: 2009-11-11 11:00+0700\n"
+"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
+"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: addr2line.c:76
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Penggunaan: %s [pilihan] [alamat]\n"
+
+#: addr2line.c:77
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " Mengubah alamat kedalam pasangan nomor baris / nama berkas.\n"
+
+#: addr2line.c:78
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Jika tidak ada alamat yang dispesifikasikan dalam baris perintah, mereka akan dibaca dari stdin\n"
+
+#: 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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Pilihan adalah:\n"
+" @<berkas> Baca pilihan dari <berkas>\n"
+" -b --target=<bfdname> Set format berkas binary\n"
+" -e --exe=executable> Set nama berkas masukan (baku a.out)\n"
+" -i --inlines Buka fungsi inline\n"
+" -j --section=<nama> Baca section-relative ofset daripada alamat\n"
+" -s --basenames Strip nama direktori\n"
+" -f --functions Tampilkan nama fungsi\n"
+" -C --demangle[=style] Demangle nama fungsi\n"
+" -h --help Tampilkan informasi ini\n"
+" -v --version Tampilkan versi aplikasi\n"
+"\n"
+
+#: addr2line.c:94 ar.c:295 coffdump.c:469 dlltool.c:3832 dllwrap.c:510
+#: nlmconv.c:1113 objcopy.c:563 objcopy.c:598 readelf.c:2922 size.c:99
+#: srconv.c:1741 strings.c:676 sysdump.c:653 windmc.c:233 windres.c:698
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "Laporkan bugs ke %s\n"
+
+#: addr2line.c:281
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: tidak dapat memperoleh alamat dari archive"
+
+#: addr2line.c:298
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr "%s: tidak dapat menemukan daerah %s"
+
+#: addr2line.c:364 nm.c:1554 objdump.c:3229
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "gaya demangling `%s' tidak diketahui"
+
+#: ar.c:218
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "tidak ada masukan %s dalam archive\n"
+
+#: ar.c:236
+#, c-format
+msgid "Usage: %s [emulation options] [--plugin <name>] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+msgstr "Penggunaan: %s [pilihan emulasi] [--plugin <nama>] [-]{dmpqrstx}[abcfilNoPsSuvV] [nama-anggota] [jumlah] berkas-archive berkas...\n"
+
+#: ar.c:238
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+msgstr "Penggunaan: %s [pilihan emulasi] [-]{dmpqrstx}[abcfilNoPsSuvV] [nama-anggota] [jumlah] berkas-archive berkas...\n"
+
+#: ar.c:243
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<mri-scrip]\n"
+
+#: ar.c:244
+#, c-format
+msgid " commands:\n"
+msgstr " perintah:\n"
+
+#: ar.c:245
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - hapus berkas dari archive\n"
+
+#: ar.c:246
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - pindahkan berkas dalam archive\n"
+
+#: ar.c:247
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - tampilkan berkas ditemukan dalam archive\n"
+
+#: ar.c:248
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - tambahkan berkas cepat kedalam archive\n"
+
+#: ar.c:249
+#, c-format
+msgid " r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
+msgstr " r[ab][f][u] - gantikan telah ada atau masukan berkas baru kedalam archive\n"
+
+#: ar.c:250
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - tampilkan isi dari archive\n"
+
+#: ar.c:251
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - ekstrak berkas dari archive\n"
+
+#: ar.c:252
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " modifikasi spesifik perintah:\n"
+
+#: ar.c:253
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - tempatkan berkas setelah [nama-anggota]\n"
+
+#: ar.c:254
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - tempatkan berkas sebelum [nama-anggota] (sama seperti [i])\n"
+
+#: ar.c:255
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr " [D] - gunakan nol untuk penanda waktu dan uids/gids\n"
+
+#: ar.c:256
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - gunakan instance [jumlah] dari nama\n"
+
+#: ar.c:257
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - potong masukan nama berkas\n"
+
+#: ar.c:258
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - gunakan nama jalur lengkap ketika mencocokan\n"
+
+#: ar.c:259
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - jaga tanggal asli\n"
+
+#: ar.c:260
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - hanya gantikan berkas yang lebih baru dari isi archive sekarang\n"
+
+#: ar.c:261
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " pemodifikasi umum:\n"
+
+#: ar.c:262
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - jangan peringatkan jika perpustakaan harus dibuat\n"
+
+#: ar.c:263
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - buat sebuah indeks archive (cf. ranlib)\n"
+
+#: ar.c:264
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - jangan buah sebuah tabel simbol\n"
+
+#: ar.c:265
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr " [T] - buat sebuah archive tipis\n"
+
+#: ar.c:266
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - verbose\n"
+
+#: ar.c:267
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - tampilkan nomor versi\n"
+
+#: ar.c:268
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr " @<berkas> - baca pilihan dari <berkas>\n"
+
+#: ar.c:270
+#, c-format
+msgid " optional:\n"
+msgstr " pilihan adalah:\n"
+
+#: ar.c:271
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr " --plugin <p> - muat plugin yang dispesifikasikan\n"
+
+#: ar.c:278
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Penggunaan: %s [pilihan] archive\n"
+
+#: ar.c:279
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " Buat sebuah indeks untuk mempercepat akses ke archive\n"
+
+#: ar.c:280
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+" Pilihan adalah:\n"
+" @<berkas> Baca pilihan dari <berkas>\n"
+
+#: ar.c:283
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr " --plugin <nama> Muat plugin yang dispesifikasikan\n"
+
+#: ar.c:286
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+" -t Update archive peta simbol tanda-waktu\n"
+" -h --help Tampilkan pesan bantuan ini\n"
+" -v --version Tampilkan informasi versi\n"
+
+#: ar.c:512 nm.c:1626
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr "maaf - aplikasi ini telah dibuat tanpa dukungan plugin\n"
+
+#: ar.c:539
+msgid "two different operation options specified"
+msgstr "dua pilihan operasi berbeda dispesifikasikan"
+
+#: ar.c:620
+#, c-format
+msgid "illegal option -- %c"
+msgstr "pilihan tidak legal -- %c"
+
+#: ar.c:663
+msgid "no operation specified"
+msgstr "tidak ada operasi yang dispesifikasikan"
+
+#: ar.c:666
+msgid "`u' is only meaningful with the `r' option."
+msgstr "`u' hanya berarti dengan pilihan `r'."
+
+#: ar.c:669
+msgid "`u' is not meaningful with the `D' option."
+msgstr "`u' hanya berarti dengan pilihan `D'."
+
+#: ar.c:677
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "`N' hanya berarti dengan pilihan `x' dan `d'."
+
+#: ar.c:680
+msgid "Value for `N' must be positive."
+msgstr "Nilai untuk `N' harus positif."
+
+#: ar.c:692
+msgid "`x' cannot be used on thin archives."
+msgstr "`x' tidak dapat digunakan dalam archive tipis."
+
+#: ar.c:733
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "internal error -- pilihan ini tidak terimplementasi"
+
+#: ar.c:802
+#, c-format
+msgid "creating %s"
+msgstr "membuat %s"
+
+#: ar.c:851 ar.c:906 ar.c:1234 objcopy.c:2026
+#, c-format
+msgid "internal stat error on %s"
+msgstr "internal stat error di %s"
+
+#: ar.c:855
+#, c-format
+msgid ""
+"\n"
+"<%s>\n"
+"\n"
+msgstr ""
+"\n"
+"<%s>\n"
+"\n"
+
+#: ar.c:871 ar.c:939
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s bukan sebuah archive valid"
+
+#: ar.c:1139
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "Tidak ada anggota bernama `%s'\n"
+
+#: ar.c:1189
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "tidak ada masukan %s dalam archive %s!"
+
+#: ar.c:1328
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: tidak ada peta archive untuk update"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "Tidak ada masukan %s dalam archive.\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "Tidak dapat membuka berkas %s\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: Tidak dapat membuat keluaran archive %s\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: Tidak dapat membuak masukan archive %s\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: berkas %s bukan sebuah archive\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: belum ada keluaran archive yang dispesifikasikan\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: tidak ada keluaran archive\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: tidak dapat membuka berkas %s\n"
+
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: tidak dapat menemukan berkas module %s\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "Open archive sekarang adalah %s\n"
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: tidak ada open archive\n"
+
+#: bin2c.c:59
+#, c-format
+msgid "Usage: %s < input_file > output_file\n"
+msgstr "Penggunaan: %s < input_file > output_file\n"
+
+#: bin2c.c:60
+#, c-format
+msgid "Prints bytes from stdin in hex format.\n"
+msgstr "Tampilkan bytes dari stdin dalam format hex.\n"
+
+#: binemul.c:38
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " Tidak ada pilihan spesifik emulasi\n"
+
+#. Macros for common output.
+#: binemul.h:43
+#, c-format
+msgid " emulation options: \n"
+msgstr " pilihan emulasi: \n"
+
+#: bucomm.c:157
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "tidak dapat menset default target BFD ke `%s': %s"
+
+#: bucomm.c:168
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: Format yang cocok:"
+
+#: bucomm.c:183
+#, c-format
+msgid "Supported targets:"
+msgstr "Target yang didukung:"
+
+#: bucomm.c:185
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: target yang didukung:"
+
+#: bucomm.c:202
+#, c-format
+msgid "Supported architectures:"
+msgstr "Arsitektur yang didukung:"
+
+#: bucomm.c:204
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: arsitektur yang didukung:"
+
+#: bucomm.c:398
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "versi berkas header BFD %s\n"
+
+#: bucomm.c:547
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: nomor buruk: %s"
+
+#: bucomm.c:564 strings.c:422
+#, c-format
+msgid "'%s': No such file"
+msgstr "'%s': Tidak ada berkas seperti itu"
+
+#: bucomm.c:566 strings.c:424
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "Peringatan: Tidak dapat menemukan '%s'. alasan: %s"
+
+#: bucomm.c:570
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "Peringatan: '%s' bukan sebuah berkas biasa"
+
+#: coffdump.c:106
+#, c-format
+msgid "#lines %d "
+msgstr "#baris %d "
+
+#: coffdump.c:460 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Penggunaan: %s [pilihan] in-berkas\n"
+
+#: coffdump.c:461
+#, c-format
+msgid " Print a human readable interpretation of a SYSROFF object file\n"
+msgstr " Tampilkan dalam interpretasi yang mudah dipahami dari sebuah berkas objek SYSROFF\n"
+
+#: coffdump.c:462
+#, 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 ""
+" Pilihan adalah:\n"
+" @<berkas> Baca pilihan dari <berkas>\n"
+" -h --help Tampilkan informasi ini\n"
+" -v --version Tampilkan versi aplikasi\n"
+"\n"
+
+#: coffdump.c:531 srconv.c:1831 sysdump.c:710
+msgid "no input file specified"
+msgstr "tidak ada berkas masukan yang dispesifikasikan"
+
+#: cxxfilt.c:119 nm.c:264 objdump.c:251
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Laporkan bugs ke %s.\n"
+
+#: debug.c:647
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: tidak ada berkas sekarang"
+
+#: debug.c:726
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: tidak ada debug_set_filename call"
+
+#: debug.c:782
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: tidak ada debug_set_filename call"
+
+#: debug.c:834
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: tidak ada fungsi sekarang"
+
+#: debug.c:866
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: tidak ada fungsi sekarang"
+
+#: debug.c:872
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: beberapa blok tidak ditutup"
+
+#: debug.c:900
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: tidak ada blok sekarang"
+
+#: debug.c:936
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: tidak ada block sekarang"
+
+#: debug.c:943
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: mencoba menutup tingkat teratas blok"
+
+#: debug.c:966
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: tidak ada satuan sekarang"
+
+#. FIXME
+#: debug.c:1019
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: tidak terimplementasi"
+
+#. FIXME
+#: debug.c:1030
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: tidak terimplementasi"
+
+#. FIXME.
+#: debug.c:1114
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: tidak terimplementasi"
+
+#: debug.c:1136
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variabel: tidak ada berkas sekarang"
+
+#: debug.c:1664
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: kind tidak didukung"
+
+#: debug.c:1841
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: tidak ada berkas sekarang"
+
+#: debug.c:1886
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: tidak ada berkas sekarang"
+
+#: debug.c:1894
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: ekstra tag dicoba"
+
+#: debug.c:1931
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Peringatan: mengubah ukuran tipe dari %d ke %d\n"
+
+#: debug.c:1953
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type:: tidak ada satuan kompilasi sekarang"
+
+#: debug.c:2056
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: circular informasi debug untuk %s\n"
+
+#: debug.c:2483
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: tipe tidak legal ditemui"
+
+#: dlltool.c:884 dlltool.c:910 dlltool.c:941
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "Internal error: tipe mesin tidak diketahui: %d"
+
+#: dlltool.c:982
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Tidak dapat membuka berkas def: %s"
+
+#: dlltool.c:987
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Memproses berkas def: %s"
+
+#: dlltool.c:991
+msgid "Processed def file"
+msgstr "Berkas def telah diproses"
+
+#: dlltool.c:1015
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Sintaks error dalam berkas def %s: %d"
+
+#: dlltool.c:1050
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr "%s: Path komponen stripped dari nama gambar, '%s'."
+
+#: dlltool.c:1068
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "NAMA: %s dasar: %x"
+
+#: dlltool.c:1071 dlltool.c:1087
+msgid "Can't have LIBRARY and NAME"
+msgstr "Tida dapat memiliki PERPUSTAKAAN dan NAMA"
+
+#: dlltool.c:1084
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "PERPUSTAKAAN: %s dasar: %x"
+
+#: dlltool.c:1320 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "tunggu: %s"
+
+#: dlltool.c:1325 dllwrap.c:410 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "subproses mendapat sinyal fatal %d"
+
+#: dlltool.c:1331 dllwrap.c:417 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s keluar dengan status %d"
+
+#: dlltool.c:1362
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "Suckin dalam info dari %s daerah dalam %s"
+
+#: dlltool.c:1487
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Mengabaikan simbol: %s"
+
+#: dlltool.c:1576 dlltool.c:1587 nm.c:1001 nm.c:1012
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: tidak ada simbol"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1613
+#, c-format
+msgid "Done reading %s"
+msgstr "Selesai membaca %s"
+
+#: dlltool.c:1623
+#, c-format
+msgid "Unable to open object file: %s"
+msgstr "Tidak dapat membuka berkas objek: %s"
+
+#: dlltool.c:1626
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Menskan berkas objek %s"
+
+#: dlltool.c:1641
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "Tidak dapat menghasilkan mcore-elf dll dari berkas archive: %s"
+
+#: dlltool.c:1741
+msgid "Adding exports to output file"
+msgstr "Menambahkan ekspor ke berkas keluaran"
+
+#: dlltool.c:1789
+msgid "Added exports to output file"
+msgstr "Menambahkan ekspor ke berkas keluaran"
+
+#: dlltool.c:1930
+#, c-format
+msgid "Generating export file: %s"
+msgstr "Menghasilkan berkas ekspor: %s"
+
+#: dlltool.c:1935
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Tidak dapat membuka berkas perakit sementara: %s"
+
+#: dlltool.c:1938
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "Berkas sementara terbuka: %s"
+
+#: dlltool.c:2113
+msgid "failed to read the number of entries from base file"
+msgstr "Gagal untuk membaca jumlah dari masukan dari berkas dasar"
+
+#: dlltool.c:2161
+msgid "Generated exports file"
+msgstr "Menghasilkan berkas ekspor"
+
+#: dlltool.c:2370
+#, c-format
+msgid "bfd_open failed open stub file: %s"
+msgstr "bfd_open gagal membuka berkas stub: %s"
+
+#: dlltool.c:2373
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "Membuat berkas stub: %s"
+
+#: dlltool.c:2837 dlltool.c:2906
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "gagal membuka berkas sementara head: %s"
+
+#: dlltool.c:2979
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "gagal membuka berkas sementara tail: %s"
+
+#: dlltool.c:3052
+#, c-format
+msgid "Can't open .lib file: %s"
+msgstr "Tidak dapat membuka berkas .lib: %s"
+
+#: dlltool.c:3055
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Membuat berkas perpustakaan: %s"
+
+#: dlltool.c:3146 dlltool.c:3152
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "tidak dapat menghapus %s: %s"
+
+#: dlltool.c:3157
+msgid "Created lib file"
+msgstr "Membuat berkas lib"
+
+#: dlltool.c:3369 dlltool.c:3391
+#, c-format
+msgid "%s is not a library"
+msgstr "%s bukan sebuah perpustakaan"
+
+#: dlltool.c:3409
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr "Impor perpustakaan `%s' yang dispesifikasikan oleh dua atau lebih dlls"
+
+#: dlltool.c:3420
+#, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr "Tidak dapat menentukan nama dll untuk `%s' (bukan sebuah perpustakaan impor?)"
+
+#: dlltool.c:3641
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Peringatan, mengabaikan duplikasi EXPORT %s %d,%d"
+
+#: dlltool.c:3647
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr "Error, duplikasi EXPORT dengan ordinals: %s"
+
+#: dlltool.c:3752
+msgid "Processing definitions"
+msgstr "Memproses definisi"
+
+#: dlltool.c:3784
+msgid "Processed definitions"
+msgstr "Definisi telah terproses"
+
+#. xgetext:c-format
+#: dlltool.c:3791 dllwrap.c:471
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Penggunaan %s <pilihan> <berkas-objek>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3793
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <mesin> Buat sebagai DLL untuk <mesin>. [baku: %s]\n"
+
+#: dlltool.c:3794
+#, c-format
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr " <mesin> mungkin: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+
+#: dlltool.c:3795
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-expt <outname> Hasilkan sebuah berkas ekspor.\n"
+
+#: dlltool.c:3796
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <outname> Hasilkan sebuah perpustakaan antar-muka.\n"
+
+#: dlltool.c:3797
+#, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr " -y --output-delaylib <outname> Buat perpustakaan impor-tertunda.\n"
+
+#: dlltool.c:3798
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect Tambahkan dll tidak langsung ke berkas ekspor.\n"
+
+#: dlltool.c:3799
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr " -D --dllname <nama> Nama dari masukan dll ke put dalam antar-muka lib.\n"
+
+#: dlltool.c:3800
+#, c-format
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr " -d --input-def <deffile> Nama dari berkas .def yang akan dibaca.\n"
+
+#: dlltool.c:3801
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <deffile> Nama dari berkas .def yang akan dibuat.\n"
+
+#: dlltool.c:3802
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Ekspor seluruh simbol ke .def\n"
+
+#: dlltool.c:3803
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols Hanya ekspor simbol yang terdaftar\n"
+
+#: dlltool.c:3804
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <list> Jangan ekspor <daftar>\n"
+
+#: dlltool.c:3805
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes Hapus default exclude symbols\n"
+
+#: dlltool.c:3806
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <basefile> Baca berkas dasar yang dihasilkan linker.\n"
+
+#: dlltool.c:3807
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 Jangan hasilkan daerah idata$4.\n"
+
+#: dlltool.c:3808
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 Jangan hasilkan daerah idata$5.\n"
+
+#: dlltool.c:3809
+#, c-format
+msgid " --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"
+msgstr " --use-nul-prefixed-import-tables Gunakan awalan nol idata$4 dan idata$5.\n"
+
+#: dlltool.c:3810
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr " -U --add-underscore Tambahkan garis-bawah ke semua simbol dalam antar-muka perpustakaan.\n"
+
+#: dlltool.c:3811
+#, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr " --add-stdcall-underscore Tambahkan garis-bawah ke stdcall simbol dalam antar-muka perpustakaan.\n"
+
+#: dlltool.c:3812
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at Matikan @<n> dari nama terekspor.\n"
+
+#: dlltool.c:3813
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Tambahkan alias tanpa @<n>.\n"
+
+#: dlltool.c:3814
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -p --ext-prefix-alias <prefix> Tambahkan alias dengan <prefix>.\n"
+
+#: dlltool.c:3815
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <nama> Gunakan <nama> untuk perakit.\n"
+
+#: dlltool.c:3816
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <flags> Lewatkan <flags> ke perakit.\n"
+
+#: dlltool.c:3817
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib Buat kompabilitaas kebelakang impor perpustakaan.\n"
+
+#: dlltool.c:3818
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete Simpan berkas sementara (ulang untuk ekstra preservation).\n"
+
+#: dlltool.c:3819
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr " -t --temp-prefix <prefix> Gunakan <prefix untuk mengkonstruksi nama berkas sementara.\n"
+
+#: dlltool.c:3820
+#, c-format
+msgid " -I --identify <implib> Report the name of the DLL associated with <implib>.\n"
+msgstr " -I --identify <implib> Laporakan nama dari DLL yang berasosiasi dengan <implib>.\n"
+
+#: dlltool.c:3821
+#, c-format
+msgid " --identify-strict Causes --identify to report error when multiple DLLs.\n"
+msgstr " --identify-strict Menyebabkan --identify untuk melaporkan kesalahan ketika ada DLL ganda.\n"
+
+#: dlltool.c:3822
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose Verbose.\n"
+
+#: dlltool.c:3823
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version Tampilkan versi dari aplikasi.\n"
+
+#: dlltool.c:3824
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help Tampilkan informasi ini.\n"
+
+#: dlltool.c:3825
+#, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr " @<berkas> Baca pilihan dari <berkas>.\n"
+
+#: dlltool.c:3827
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr " -M --mcore-elf <outname> Proses mcore-elf berkas objek kedalam <outname>.\n"
+
+#: dlltool.c:3828
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <nama> Gunakan <nama> sebagai linker.\n"
+
+#: dlltool.c:3829
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <flags> Lewatkan <flags> ke linker.\n"
+
+#: dlltool.c:3966
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr "Jalur komponen dihapus dari dllname, '%s'."
+
+#: dlltool.c:4014
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Tidak dapat membuka berkas-dasar: %s"
+
+#: dlltool.c:4049
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Mesin '%s' tidak didukung"
+
+#: dlltool.c:4118
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr "Peringatan, tipe mesin (%d) tidak didukung untuk delayimport."
+
+#: dlltool.c:4186 dllwrap.c:201
+#, c-format
+msgid "Tried file: %s"
+msgstr "Berkas yang dicoba: %s"
+
+#: dlltool.c:4193 dllwrap.c:208
+#, c-format
+msgid "Using file: %s"
+msgstr "Menggunakan berkas: %s"
+
+#: dllwrap.c:291
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "Menjaga berkas dasaar sementara %s"
+
+#: dllwrap.c:293
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "Menghapus berkas dasar sementara %s"
+
+#: dllwrap.c:307
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "Menjaga berkas eks sementara %s"
+
+#: dllwrap.c:309
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "Menghapus berkas eksp sementara %s"
+
+#: dllwrap.c:322
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Menjaga berkas def sementara %s"
+
+#: dllwrap.c:324
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "Menghapus berkas de sementara %s"
+
+#: dllwrap.c:472
+#, c-format
+msgid " Generic options:\n"
+msgstr " Pilihan umum:\n"
+
+#: dllwrap.c:473
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr " @<berkas> Baca pilihan dari <berkas>\n"
+
+#: dllwrap.c:474
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q Kerja secara tenang\n"
+
+#: dllwrap.c:475
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Verbose\n"
+
+#: dllwrap.c:476
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version Tampilkan versi dllwrap\n"
+
+#: dllwrap.c:477
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <outname> Sinonim untuk --output-lib\n"
+
+#: dllwrap.c:478
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Pilihan untuk %s:\n"
+
+#: dllwrap.c:479
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <driver> Baku ke \"gcc\"\n"
+
+#: dllwrap.c:480
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <flags> Override baku Id flags\n"
+
+#: dllwrap.c:481
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dlltool> Baku ku \"dlltool\"\n"
+
+#: dllwrap.c:482
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <masukan> Spesifikasikan alternatif titik masukan DLL\n"
+
+#: dllwrap.c:483
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <base> Spesifikasikan alamat dasar image\n"
+
+#: dllwrap.c:484
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <mesin> i386-cygwin32 atau i386-mingw32\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run Tampilkan apa yang dibutuhkan untuk berjalan\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Buat Mingw DLL\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " Pilihan dilewatkan ke DLLTOOL:\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <mesin>\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <outname> Hasilkan berkas ekspor.\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <outname> Hasilkan perpustakaan masukan.\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect Tambahkan dll tidak langsung ke berkas ekspor.\n"
+
+#: dllwrap.c:492
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <nama> Nama dari masukan dll ke put dalam lib keluaran.\n"
+
+#: dllwrap.c:493
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <deffile> Nama berkas masukan .def\n"
+
+#: dllwrap.c:494
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <deffile> Nama berkas keluaran .def\n"
+
+#: dllwrap.c:495
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Ekspor seluruh simbol ke .def\n"
+
+#: dllwrap.c:496
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols Hanya ekspor .drectve simbols\n"
+
+#: dllwrap.c:497
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <list> Exclude <list> dari .def\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes Zap default exclude simbol\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr " --base-file <basefile> Baca linker yang dihasilkan berkas dasar\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 Jangan hasilkan daerah idata$4\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 Jangan hasilkan daerah idata$4\n"
+
+#: dllwrap.c:502
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U Tambahkan garis-bawah ke .lib\n"
+
+#: dllwrap.c:503
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k Non-aktifkan @<n> dari nama terekspor\n"
+
+#: dllwrap.c:504
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias Tambahkan alias tanpa @<n>\n"
+
+#: dllwrap.c:505
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <nama> Gunakan <nama> untuk perakit\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete Simpan berkas sementara.\n"
+
+#: dllwrap.c:507
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " Sisanya dilewatkan tidak termodifikasi ke driver bahasa\n"
+
+#: dllwrap.c:781
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "Harus menyediakan paling tidak satu dari pilihan -o atau --dllname"
+
+#: dllwrap.c:810
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"tidak ada berkas definisi ekspor yang diberikan.\n"
+"Membuat satu, tetapi itu mungkin bukan apa yang anda inginkan"
+
+#: dllwrap.c:969
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "nama DLLTOOL : %s\n"
+
+#: dllwrap.c:970
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "pilihan DLLTOOL : %s\n"
+
+#: dllwrap.c:971
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "nama DRIVER : %s\n"
+
+#: dllwrap.c:972
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "pilihan DRIVER : %s\n"
+
+#: dwarf.c:101 dwarf.c:145 readelf.c:355 readelf.c:520
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Panjang data tidak tertangani: %d\n"
+
+#: dwarf.c:294 dwarf.c:2625
+msgid "badly formed extended line op encountered!\n"
+msgstr "baris eksten terbentuk buruk op ditemui!\n"
+
+#: dwarf.c:301
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " Eksten opkode %d: "
+
+#: dwarf.c:306
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Akhir dari Urutan\n"
+"\n"
+
+#: dwarf.c:312
+#, c-format
+msgid "set Address to 0x%lx\n"
+msgstr "set Alamat ke 0x%lx\n"
+
+#: dwarf.c:317
+#, c-format
+msgid " define new File Table entry\n"
+msgstr " definisikan masukan Berkas Tabel baru\n"
+
+#: dwarf.c:318 dwarf.c:2240
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Masukan\tDir\tWaktu\tUkuran\tNama\n"
+
+#: dwarf.c:320
+#, c-format
+msgid " %d\t"
+msgstr " %d\t"
+
+#: dwarf.c:323 dwarf.c:325 dwarf.c:327 dwarf.c:2252 dwarf.c:2254 dwarf.c:2256
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
+
+#: dwarf.c:328
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
+
+#: dwarf.c:332
+#, c-format
+msgid "set Discriminator to %lu\n"
+msgstr "set Pembeda ke %lu\n"
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:374
+#, c-format
+msgid "user defined: length %d\n"
+msgstr "terdefinisi oleh pengguna: panjang %d\n"
+
+#: dwarf.c:376 dwarf.c:2656
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "TIDAK DIKETAHUI: panjang %d\n"
+
+#: dwarf.c:389
+msgid "<no .debug_str section>"
+msgstr "<tidak ada daerah .debug_str>"
+
+#: dwarf.c:395
+#, c-format
+msgid "DW_FORM_strp offset too big: %lx\n"
+msgstr "DW_FORM_strp ofset terlalu besar: %lx\n"
+
+#: dwarf.c:396
+msgid "<offset is too big>"
+msgstr "<ofset terlalu besar>"
+
+#: dwarf.c:629
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Nilai TAG tidak diketahui: %lx"
+
+#: dwarf.c:665
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Nilai FORM tidak diketahui: %lx"
+
+#: dwarf.c:674
+#, c-format
+msgid " %lu byte block: "
+msgstr " %lu byte blok: "
+
+#: dwarf.c:1092
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Lokasi definisi oleh pengguna op)"
+
+#: dwarf.c:1094
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Lokasi op tidak diketahui)"
+
+#: dwarf.c:1142
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "Internal error: versi DWARF bukan 2 atau 3.\n"
+
+#: dwarf.c:1241
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr "DW_FORM_data8 tidak didukung ketika sizeof (unsigned long) != 8\n"
+
+#: dwarf.c:1290
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (indirect string, ofset: 0x%lx): %s"
+
+#: dwarf.c:1299
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Bentuk tidak dikenali: %lu\n"
+
+#: dwarf.c:1383
+#, c-format
+msgid "(not inlined)"
+msgstr "(tidak inline)"
+
+#: dwarf.c:1386
+#, c-format
+msgid "(inlined)"
+msgstr "(inline)"
+
+#: dwarf.c:1389
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(terdeklarasi sebagai inline tetapi diabaikan)"
+
+#: dwarf.c:1392
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(terdeklarasi sebagai inline dan diinline)"
+
+#: dwarf.c:1395
+#, c-format
+msgid " (Unknown inline attribute value: %lx)"
+msgstr " (Nilai atribut inline tidak diketahui: %lx)"
+
+#: dwarf.c:1556
+#, c-format
+msgid "(location list)"
+msgstr "(daftar lokasi)"
+
+#: dwarf.c:1575 dwarf.c:3257
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [tanpa DW_AT_frame_base]"
+
+#: dwarf.c:1587
+#, c-format
+msgid "Offset %lx used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr "Ofset %lx yang digunakan sebagai nilai untuk DW_AT_import atribut dari DIE di ofset %lx terlalu besar.\n"
+
+#: dwarf.c:1761
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Nilai AT tidak diketahui: %lx"
+
+#: dwarf.c:1828
+#, c-format
+msgid "Reserved length value (%lx) found in section %s\n"
+msgstr "Nilai panjang terpesan (%lx) ditemukan di daerah %s\n"
+
+#: dwarf.c:1839
+#, c-format
+msgid "Corrupt unit length (%lx) found in section %s\n"
+msgstr "Panjang satuan terkorupsi (%lx) ditemukan di daerah %s\n"
+
+#: dwarf.c:1846
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "Tidak ada satuan comp dalam daerah %s?"
+
+#: dwarf.c:1855
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "Tidak cukup memori untuk informasi debug dari masukan %u"
+
+#: dwarf.c:1863 dwarf.c:2858 dwarf.c:2952 dwarf.c:3026 dwarf.c:3143
+#: dwarf.c:3292 dwarf.c:3350 dwarf.c:3546
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Isi dari daerah %s:\n"
+"\n"
+
+#: dwarf.c:1871
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Tidak dapat mengalokasikan daerah %s!\n"
+
+#: dwarf.c:1934
+#, c-format
+msgid " Compilation Unit @ offset 0x%lx:\n"
+msgstr " Kompilasi dari Unit @ ofset 0x%lx:\n"
+
+#: dwarf.c:1935
+#, c-format
+msgid " Length: 0x%lx (%s)\n"
+msgstr " Panjang: 0x%lx (%s)\n"
+
+#: dwarf.c:1937
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versi: %d\n"
+
+#: dwarf.c:1938
+#, c-format
+msgid " Abbrev Offset: %ld\n"
+msgstr " Ofset Kependekan: %ld\n"
+
+#: dwarf.c:1939
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Ukuran Pointer: %d\n"
+
+#: dwarf.c:1945
+#, c-format
+msgid "Debug info is corrupted, length of CU at %lx extends beyond end of section (length = %lx)\n"
+msgstr "Informasi debug terkorupsi, panjang dari CU di %lx eksten diluar akhir dari daerah (panjang = %lx)\n"
+
+#: dwarf.c:1954
+#, c-format
+msgid "CU at offset %lx contains corrupt or unsupported version number: %d.\n"
+msgstr "CU di ofset %lx berisi nomor versi yang terkorupsi atau tidak didukung: %d.\n"
+
+#: dwarf.c:1964
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr "Informasi debug terkorupsi, ofset kependekan (%lx) lebih besar dari daerah kependekan ukuran (%lx)\n"
+
+#: dwarf.c:1998
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr "Palsu penanda akhir-dari-siblings terdeteksi di ofset %lx dalam daerah .debug_info\n"
+
+#: dwarf.c:2002
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr "Tidak ada peringatan lebih lanjut mengenai penanda palsu akhir-dari-sibling ditekan\n"
+
+#: dwarf.c:2009
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr " <%d><%lx>: Nomor Kependekan: %lu"
+
+#: dwarf.c:2026
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr "DIE di ofset %lx mereferensikan nomor kependekan %lu dimana itu tidak ada\n"
+
+#: dwarf.c:2032
+#, c-format
+msgid " (%s)\n"
+msgstr " (%s)\n"
+
+#: dwarf.c:2123
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Isi mentah dari isi debug dari daerah %s:\n"
+"\n"
+
+#: dwarf.c:2161
+#, c-format
+msgid "The information in section %s appears to be corrupt - the section is too small\n"
+msgstr "Informasi dalam daerah %s kelihatannya telah terkorupsi - daerah terlalu kecil\n"
+
+#: dwarf.c:2171 dwarf.c:2459
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "Hanya DWARF versi 2 dan 3 baris info yang saat ini didukung.\n"
+
+#: dwarf.c:2192
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr " Ofset: 0x%lx\n"
+
+#: dwarf.c:2193
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Panjang: %ld\n"
+
+#: dwarf.c:2194
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " Versi DWARF: %d\n"
+
+#: dwarf.c:2195
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " Panjang Prologue: %d\n"
+
+#: dwarf.c:2196
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " Panjang Instruksi Minimal: %d\n"
+
+#: dwarf.c:2197
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " Nilai inisial dari 'is_stmt': %d\n"
+
+#: dwarf.c:2198
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " Dasar Baris: %d\n"
+
+#: dwarf.c:2199
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " Jangkauan Baris: %d\n"
+
+#: dwarf.c:2200
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " Dasar Opkode: %d\n"
+
+#: dwarf.c:2209
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Opkode:\n"
+
+#: dwarf.c:2212
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " Opkode %d memiliki %d args\n"
+
+#: dwarf.c:2218
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" Tabel Direktori kosong.\n"
+
+#: dwarf.c:2221
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" Tabel Direktori:\n"
+
+#: dwarf.c:2225
+#, c-format
+msgid " %s\n"
+msgstr " %s\n"
+
+#: dwarf.c:2236
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" Tabel Nama Berkas kosong.\n"
+
+#: dwarf.c:2239
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" Tabel Nama Berkas:\n"
+
+#: dwarf.c:2247
+#, c-format
+msgid " %d\t"
+msgstr " %d\t"
+
+#: dwarf.c:2258
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#. Now display the statements.
+#: dwarf.c:2266
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Pernyataan Nomor Baris:\n"
+
+#: dwarf.c:2282
+#, c-format
+msgid " Special opcode %d: advance Address by %lu to 0x%lx"
+msgstr " Opkode spesial %d: advance Alamat dengan %lu ke 0x%lx"
+
+#: dwarf.c:2286
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " dan Baris dengan %d ke %d\n"
+
+#: dwarf.c:2296
+#, c-format
+msgid " Copy\n"
+msgstr " Salin\n"
+
+#: dwarf.c:2304
+#, c-format
+msgid " Advance PC by %lu to 0x%lx\n"
+msgstr " Lanjut PC dengan %lu ke 0x%lx\n"
+
+#: dwarf.c:2312
+#, c-format
+msgid " Advance Line by %d to %d\n"
+msgstr " Lanjut Baris dengan %d ke %d\n"
+
+#: dwarf.c:2319
+#, c-format
+msgid " Set File Name to entry %d in the File Name Table\n"
+msgstr " Set Nama Berkas ke masukan %d dalam Tabel Nama Berkas\n"
+
+#: dwarf.c:2327
+#, c-format
+msgid " Set column to %lu\n"
+msgstr " Set kolom ke %lu\n"
+
+#: dwarf.c:2334
+#, c-format
+msgid " Set is_stmt to %d\n"
+msgstr " Set is_stmt ke %d\n"
+
+#: dwarf.c:2339
+#, c-format
+msgid " Set basic block\n"
+msgstr " Set basik blok\n"
+
+#: dwarf.c:2347
+#, c-format
+msgid " Advance PC by constant %lu to 0x%lx\n"
+msgstr " Lanjut PC dengan konstan %lu ke 0x%lx\n"
+
+#: dwarf.c:2355
+#, c-format
+msgid " Advance PC by fixed size amount %lu to 0x%lx\n"
+msgstr " Lanjut PC dengan jumlah tetap %lu ke 0x%lx\n"
+
+#: dwarf.c:2360
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr " Set prologue_end ke true\n"
+
+#: dwarf.c:2364
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr " Set epilogue_begin ke true\n"
+
+#: dwarf.c:2370 dwarf.c:2734
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr " Set ISA ke %lu\n"
+
+#: dwarf.c:2374 dwarf.c:2738
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr " Opkode %d tidak dikenal dengan operan: "
+
+#: dwarf.c:2407
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Dump terdekode dari isi debug dari daerah %s:\n"
+"\n"
+
+#: dwarf.c:2449
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "Baris infor sepertinya terkorupsi - daerah terlalu kecil\n"
+
+#: dwarf.c:2568
+#, c-format
+msgid "CU: %s:\n"
+msgstr "CU: %s:\n"
+
+#: dwarf.c:2569 dwarf.c:2582
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr "Nama Berkas Nomor Baris Awal alamat\n"
+
+#: dwarf.c:2575
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr "CU: %s/%s:\n"
+
+#: dwarf.c:2580 dwarf.c:2652
+#, c-format
+msgid "%s:\n"
+msgstr "%s:\n"
+
+#. If directory index is 0, that means current directory.
+#: dwarf.c:2685
+#, c-format
+msgid ""
+"\n"
+"./%s:[++]\n"
+msgstr ""
+"\n"
+"./%s:[++]\n"
+
+#. The directory index starts counting at 1.
+#: dwarf.c:2691
+#, c-format
+msgid ""
+"\n"
+"%s/%s:\n"
+msgstr ""
+"\n"
+"%s/%s:\n"
+
+#: dwarf.c:2776
+#, c-format
+msgid "%-35s %11d %#18lx\n"
+msgstr "%-35s %11d %#18lx\n"
+
+#: dwarf.c:2781
+#, c-format
+msgid "%s %11d %#18lx\n"
+msgstr "%s %11d %#18lx\n"
+
+#: dwarf.c:2811 dwarf.c:3088 dwarf.c:3510
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr "Tidak dapat meload/parse daerah .debug_info, jadi tidak dapat meninterpretasikan daerah %s.\n"
+
+#: dwarf.c:2892 dwarf.c:3395
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr ".debug_info ofset dari 0x%lx dalam daerah %s tidak menunjuk ke header CU.\n"
+
+#: dwarf.c:2906
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Hanya DWARF 2 dan 3 pubnames yang saat ini didukung\n"
+
+#: dwarf.c:2913
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Panjang: %ld\n"
+
+#: dwarf.c:2915
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versi: %d\n"
+
+#: dwarf.c:2917
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr " Ofset dalam daerah .debug_info: 0x%lx\n"
+
+#: dwarf.c:2919
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr " Ukuran dari daerah dalam .debug_info: %ld\n"
+
+#: dwarf.c:2922
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" Ofset\tNama\n"
+
+#: dwarf.c:2973
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+
+#: dwarf.c:2979
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:2987
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - lineno : %d makro : %s\n"
+
+#: dwarf.c:2996
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - lineno : %d makro : %s\n"
+
+#: dwarf.c:3008
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - konstan : %d string : %s\n"
+
+#: dwarf.c:3037
+#, c-format
+msgid " Number TAG\n"
+msgstr " Nomor TAG\n"
+
+#: dwarf.c:3043
+#, c-format
+msgid " %ld %s [%s]\n"
+msgstr " %ld %s [%s]\n"
+
+#: dwarf.c:3046
+msgid "has children"
+msgstr "memiliki anak"
+
+#: dwarf.c:3046
+msgid "no children"
+msgstr "tidak memiliki anak"
+
+#: dwarf.c:3049
+#, c-format
+msgid " %-18s %s\n"
+msgstr " %-18s %s\n"
+
+#: dwarf.c:3082 dwarf.c:3288 dwarf.c:3504
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"Daerah %s ini kosong.\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:3132
+msgid "Location lists in .debug_info section aren't in ascending order!\n"
+msgstr "Daftar lokasi dalam daerah .debug_info tidak dalam urutan meningkat!\n"
+
+#: dwarf.c:3135
+msgid "No location lists in .debug_info section!\n"
+msgstr "Tidak ada daftar lokasi dalam daerah .debug_info!\n"
+
+#: dwarf.c:3140
+#, c-format
+msgid "Location lists in %s section start at 0x%lx\n"
+msgstr "Daftar lokasi dalam daerah %s dimulai di 0x%lx\n"
+
+#: dwarf.c:3144
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr " Ofset Awal Akhir Pernyataan\n"
+
+#: dwarf.c:3175
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Disana ada hole [0x%lx - 0x%lx] dalam daerah .debug_loc.\n"
+
+#: dwarf.c:3179
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Disana ada tumpang tindih [0x%lx - 0x%lx] dalam daerah .debug_loc\n"
+
+#: dwarf.c:3187
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "Ofset 0x%lx lebih besar dari ukuran daerah .debug_loc.\n"
+
+#: dwarf.c:3196 dwarf.c:3231 dwarf.c:3241
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "Daftar lokasi dimulai di ofset 0x%lx tidak diakhiri.\n"
+
+#: dwarf.c:3215 dwarf.c:3597
+#, c-format
+msgid "<End of list>\n"
+msgstr "<Akhir dari daftar>\n"
+
+#: dwarf.c:3225
+#, c-format
+msgid "(base address)\n"
+msgstr "(alamat dasar)\n"
+
+#: dwarf.c:3260
+msgid " (start == end)"
+msgstr " (awal == akhir)"
+
+#: dwarf.c:3262
+msgid " (start > end)"
+msgstr " (awal > akhir)"
+
+#: dwarf.c:3272
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr "Disana ada %ld byte tidak digunakan diakhir dari daerah %s\n"
+
+#: dwarf.c:3406
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Hanya DWARF 2 dan 3 yang saat ini didukung.\n"
+
+#: dwarf.c:3410
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Panjang: %ld\n"
+
+#: dwarf.c:3411
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versi: %d\n"
+
+#: dwarf.c:3412
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr " Ofset kedalam .debug_info: 0x%lx\n"
+
+#: dwarf.c:3413
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Ukuran Penunjuk: %d\n"
+
+#: dwarf.c:3414
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " Ukuran Segmen: %d\n"
+
+#: dwarf.c:3423
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr "Ukuran penunjuk + Ukuran segmen bukan kelipatan dari dua.\n"
+
+#: dwarf.c:3428
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Alamat Panjang\n"
+
+#: dwarf.c:3430
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Alamat Panjang\n"
+
+#: dwarf.c:3520
+msgid "No range lists in .debug_info section!\n"
+msgstr "Tidak ada daftar jangkauan dalam daerah .debug_info!\n"
+
+#: dwarf.c:3543
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "Daftar jangkauan dalam daerah %s dimulai dari 0x%lx\n"
+
+#: dwarf.c:3547
+#, c-format
+msgid " Offset Begin End\n"
+msgstr " Ofset Awal Akhir\n"
+
+#: dwarf.c:3568
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Disana terdapat sebuah lubang [0x%lx -0x%lx] dalam daerah %s.\n"
+
+#: dwarf.c:3572
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Disana terdapat sebuah tumpang tindih [0x%lx - 0x%lx] dalam daerah %s.\n"
+
+#: dwarf.c:3615
+msgid "(start == end)"
+msgstr "(awal == akhir)"
+
+#: dwarf.c:3617
+msgid "(start > end)"
+msgstr "(awal > akhir)"
+
+#: dwarf.c:3853
+msgid "bad register: "
+msgstr "register buruk: "
+
+#: dwarf.c:3855
+#, c-format
+msgid "Contents of the %s section:\n"
+msgstr "Isi dari daerah %s:\n"
+
+#: dwarf.c:4619
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr " DW_CFA_??? (Definisi oleh pengguna memanggil frame op: %#x)\n"
+
+#: dwarf.c:4621
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr "tidak didukung atau tidak dikenal Dwarf Call Frame nomor Instruksi: %#x\n"
+
+#: dwarf.c:4645
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Menampilkan isi debug dari daerah %s belum didukung.\n"
+
+#: dwarf.c:4687
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Error: "
+
+#: dwarf.c:4698
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Peringatan: "
+
+#: dwarf.c:4796 dwarf.c:4862
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Pilihan debug '%s' tidak dikenal\n"
+
+#: emul_aix.c:43
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - 32 bit archive kecil\n"
+
+#: emul_aix.c:44
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - abaikan objek 64 bit\n"
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - abaikan objek 32 bit\n"
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] - terima objek 32 dan 64 bit\n"
+
+#: ieee.c:309
+msgid "unexpected end of debugging information"
+msgstr "tidak terduga akhir dari informasi debug"
+
+#: ieee.c:396
+msgid "invalid number"
+msgstr "nomor tidak valid"
+
+#: ieee.c:449
+msgid "invalid string length"
+msgstr "panjang string tidak valid"
+
+#: ieee.c:504 ieee.c:545
+msgid "expression stack overflow"
+msgstr "ekspresi stack overflow"
+
+#: ieee.c:524
+msgid "unsupported IEEE expression operator"
+msgstr "operator ekspresi IEEE tidak didukung"
+
+#: ieee.c:539
+msgid "unknown section"
+msgstr "daerah tidak dikenal"
+
+#: ieee.c:560
+msgid "expression stack underflow"
+msgstr "ekspresi stack underflow"
+
+#: ieee.c:574
+msgid "expression stack mismatch"
+msgstr "ekspresi stack tidak cocok"
+
+#: ieee.c:611
+msgid "unknown builtin type"
+msgstr "tipe builtin tidak dikenal"
+
+#: ieee.c:756
+msgid "BCD float type not supported"
+msgstr "tipe pecahan BCD tidak didukung"
+
+#: ieee.c:893
+msgid "unexpected number"
+msgstr "nomor tidak terduga"
+
+#: ieee.c:900
+msgid "unexpected record type"
+msgstr "tipe rekaman tidak terduga"
+
+#: ieee.c:933
+msgid "blocks left on stack at end"
+msgstr "sisa blok pada stack di akhir"
+
+#: ieee.c:1206
+msgid "unknown BB type"
+msgstr "tipe BB tidak diketahui"
+
+#: ieee.c:1215
+msgid "stack overflow"
+msgstr "stack overflow"
+
+#: ieee.c:1238
+msgid "stack underflow"
+msgstr "stack underflow"
+
+#: ieee.c:1350 ieee.c:1420 ieee.c:2118
+msgid "illegal variable index"
+msgstr "variabel indeks tidak legal"
+
+#: ieee.c:1398
+msgid "illegal type index"
+msgstr "tipe indeks tidak legal"
+
+#: ieee.c:1408 ieee.c:1445
+msgid "unknown TY code"
+msgstr "kode TY tidak dikenal"
+
+#: ieee.c:1427
+msgid "undefined variable in TY"
+msgstr "variabel dalam TY tidak dikenal"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1839
+msgid "Pascal file name not supported"
+msgstr "Nama berkas Pascal tidak didukung"
+
+#: ieee.c:1887
+msgid "unsupported qualifier"
+msgstr "kualifier tidak didukung"
+
+#: ieee.c:2156
+msgid "undefined variable in ATN"
+msgstr "variabel dalam ATN tidak terdefinisi"
+
+#: ieee.c:2199
+msgid "unknown ATN type"
+msgstr "tipe ATN tidak didukung"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2321
+msgid "unsupported ATN11"
+msgstr "ATN11 tidak didukung"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2348
+msgid "unsupported ATN12"
+msgstr "ATN12 tidak didukung"
+
+#: ieee.c:2408
+msgid "unexpected string in C++ misc"
+msgstr "string dalam misc C++ tidak terduga"
+
+#: ieee.c:2421
+msgid "bad misc record"
+msgstr "rekaman misc buruk"
+
+#: ieee.c:2462
+msgid "unrecognized C++ misc record"
+msgstr "rekaman misc C++ tidak dikenal"
+
+#: ieee.c:2577
+msgid "undefined C++ object"
+msgstr "objek C++ tidak terdefinisi"
+
+#: ieee.c:2611
+msgid "unrecognized C++ object spec"
+msgstr "spesifikasi objek C++ tidak dikenal"
+
+#: ieee.c:2647
+msgid "unsupported C++ object type"
+msgstr "tipe objek C++ tidak didukung"
+
+#: ieee.c:2657
+msgid "C++ base class not defined"
+msgstr "C++ kelas dasar tidak terdefinisi"
+
+#: ieee.c:2669 ieee.c:2774
+msgid "C++ object has no fields"
+msgstr "C++ objek tidak memiliki field"
+
+#: ieee.c:2688
+msgid "C++ base class not found in container"
+msgstr "C++ kelas dasar tidak ditemukan dalam kontainer"
+
+#: ieee.c:2795
+msgid "C++ data member not found in container"
+msgstr "C++ data anggota tidak ditemukan dalam kontainer"
+
+#: ieee.c:2836 ieee.c:2986
+msgid "unknown C++ visibility"
+msgstr "visibility C++ tidak diketahui"
+
+#: ieee.c:2870
+msgid "bad C++ field bit pos or size"
+msgstr "C++ bit field posisi atau ukuran buruk"
+
+#: ieee.c:2962
+msgid "bad type for C++ method function"
+msgstr "tipe untuk fungsi metode C++ buruk"
+
+#: ieee.c:2972
+msgid "no type information for C++ method function"
+msgstr "tidak ada informasi untuk C++ fungsi metode"
+
+#: ieee.c:3011
+msgid "C++ static virtual method"
+msgstr "C++ static virtual metode"
+
+#: ieee.c:3106
+msgid "unrecognized C++ object overhead spec"
+msgstr "tidak dikenal C++ objek overhead spec"
+
+#: ieee.c:3145
+msgid "undefined C++ vtable"
+msgstr "vtabel C++ tidak terdefinisi"
+
+#: ieee.c:3214
+msgid "C++ default values not in a function"
+msgstr "nilai baku C++ tidak dalam sebuah fungsi"
+
+#: ieee.c:3254
+msgid "unrecognized C++ default type"
+msgstr "tipe baku C++ tidak dikenal"
+
+#: ieee.c:3285
+msgid "reference parameter is not a pointer"
+msgstr "parameter referensi bukan sebuah penunjuk"
+
+#: ieee.c:3368
+msgid "unrecognized C++ reference type"
+msgstr "tipe referensi C++ tidak dikenal"
+
+#: ieee.c:3450
+msgid "C++ reference not found"
+msgstr "referensi C++ tidak ditemukan"
+
+#: ieee.c:3458
+msgid "C++ reference is not pointer"
+msgstr "referensi C++ bukan sebuah penunjuk"
+
+#: ieee.c:3484 ieee.c:3492
+msgid "missing required ASN"
+msgstr "hilang ASN yang dibutuhkan"
+
+#: ieee.c:3519 ieee.c:3527
+msgid "missing required ATN65"
+msgstr "hilang ATN65 yang dibutuhkan"
+
+#: ieee.c:3541
+msgid "bad ATN65 record"
+msgstr "rekaman ATN65 buruk"
+
+#: ieee.c:4169
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "numerik IEEE overflow; 0x"
+
+#: ieee.c:4213
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "panjang string IEEE overflow: %u\n"
+
+#: ieee.c:5210
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "ukuran tipe bilangan bulat %u IEEE tidak didukung\n"
+
+#: ieee.c:5244
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "ukuran tipe bilangan pecahan %u IEEE tidak didukung\n"
+
+#: ieee.c:5278
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "ukuran tipe kompleks %u IEEE tidak didukung\n"
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr "Duplikasi simbol dimasukan dalam daftar keyword."
+
+#: nlmconv.c:273 srconv.c:1822
+msgid "input and output files must be different"
+msgstr "berkas masukan dan keluaran harus berbeda"
+
+#: nlmconv.c:320
+msgid "input file named both on command line and with INPUT"
+msgstr "nama kedua berkas masukan di baris perintah dan dengan INPUT"
+
+#: nlmconv.c:329
+msgid "no input file"
+msgstr "tidak ada berkas masukan"
+
+#: nlmconv.c:359
+msgid "no name for output file"
+msgstr "tidak ada nama untuk berkas keluaran"
+
+#: nlmconv.c:373
+msgid "warning: input and output formats are not compatible"
+msgstr "peringatan: format masukan dan keluaran tidak kompatibel"
+
+#: nlmconv.c:403
+msgid "make .bss section"
+msgstr "buat daerah .bss"
+
+#: nlmconv.c:413
+msgid "make .nlmsections section"
+msgstr "buat daerah .nlmsections"
+
+#: nlmconv.c:441
+msgid "set .bss vma"
+msgstr "set vma .bss"
+
+#: nlmconv.c:448
+msgid "set .data size"
+msgstr "set ukuran .data"
+
+#: nlmconv.c:628
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "peringatan: simbol %s diimpor tetapi tidak dalam daftar impor"
+
+#: nlmconv.c:648
+msgid "set start address"
+msgstr "set awal alamat"
+
+#: nlmconv.c:697
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "peringatan: AWAL prosedur %s tidak terdefinisi"
+
+#: nlmconv.c:699
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "peringatan: KELUAR prosedur %s tidak terdefinisi"
+
+#: nlmconv.c:701
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "peringatan: PERIKSA prosedur %s tidak terdefinisi"
+
+#: nlmconv.c:721 nlmconv.c:907
+msgid "custom section"
+msgstr "daerah kustom"
+
+#: nlmconv.c:741 nlmconv.c:936
+msgid "help section"
+msgstr "daerah bantuan"
+
+#: nlmconv.c:763 nlmconv.c:954
+msgid "message section"
+msgstr "daerah pesan"
+
+#: nlmconv.c:778 nlmconv.c:987
+msgid "module section"
+msgstr "daerah modul"
+
+#: nlmconv.c:797 nlmconv.c:1003
+msgid "rpc section"
+msgstr "daerah rpc"
+
+#. There is no place to record this information.
+#: nlmconv.c:833
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: peringatan: perpustakaan terbagi tidak dapat memiliki data tidak terinisialisasi"
+
+#: nlmconv.c:854 nlmconv.c:1022
+msgid "shared section"
+msgstr "daerah terbagi"
+
+#: nlmconv.c:862
+msgid "warning: No version number given"
+msgstr "peringatan: Tidak ada nomor versi yang diberikan"
+
+#: nlmconv.c:902 nlmconv.c:931 nlmconv.c:949 nlmconv.c:998 nlmconv.c:1017
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: baca: %s"
+
+#: nlmconv.c:924
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "peringatan: FULLMAP tidak didukung: coba ld -M"
+
+#: nlmconv.c:1100
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Penggunaan: %s [pilihan] [berkas-masuk [berkas-keluar]]\n"
+
+#: nlmconv.c:1101
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " Ubah sebuah berkas objek ke sebuah NetWare Loadable Modul\n"
+
+#: nlmconv.c:1102
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+" Pilihan adalah:\n"
+" -I --input-target=<bfdname> Set format berkas masukan binari\n"
+" -O --output-target=<bfdname> Set format berkas keluaran binari\n"
+" -T --header-file=<file> Baca <berkas> untuk informasi header NLM\n"
+" -l --linker=<linker> Gunakan <linker> untuk linking apapun\n"
+" -d --debug Tampilkan di stderr baris perintah linker\n"
+" @<berkas> Baca pilihan dari <berkas>.\n"
+" -h --help Tampilkan informasi ini\n"
+" -v --version Tampilkan versi aplikasi\n"
+
+#: nlmconv.c:1143
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "dukungan tidak dikompile untuk %s"
+
+#: nlmconv.c:1180
+msgid "make section"
+msgstr "buat daerah"
+
+#: nlmconv.c:1194
+msgid "set section size"
+msgstr "set ukuran daerah"
+
+#: nlmconv.c:1200
+msgid "set section alignment"
+msgstr "set alignmen daerah"
+
+#: nlmconv.c:1204
+msgid "set section flags"
+msgstr "set tanda daerah"
+
+#: nlmconv.c:1215
+msgid "set .nlmsections size"
+msgstr "set ukuran .nlmsections"
+
+#: nlmconv.c:1296 nlmconv.c:1304 nlmconv.c:1313 nlmconv.c:1318
+msgid "set .nlmsection contents"
+msgstr "set isi .nlmsection"
+
+#: nlmconv.c:1795
+msgid "stub section sizes"
+msgstr "ukuran stub daerah"
+
+#: nlmconv.c:1842
+msgid "writing stub"
+msgstr "menulis stub"
+
+#: nlmconv.c:1926
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "tidak terselesaikan PC relatif relokasi terhadap %s"
+
+#: nlmconv.c:1990
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "overflow ketika menyesuaikan relokasi terhadap %s"
+
+#: nlmconv.c:2117
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: eksekusi dari %s gagal: "
+
+#: nlmconv.c:2132
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Eksekusi dari %s gagal"
+
+#: nm.c:220 size.c:78 strings.c:659
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Penggunaan: %s [pilihan] [berkas]\n"
+
+#: nm.c:221
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " Daftar simbol dalam [berkas] (a.out secara baku).\n"
+
+#: nm.c:222
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+" Pilihan adalah:\n"
+" -a, --debug-syms Tampilkan debugger-only simbol\n"
+" -A, --print-file-name Tampilkan nama dari berkas masukan sebelum setiap simbol\n"
+" -B Sama seperti --format=bsd\n"
+" -C, --demangle[=STYLE] Dekode tingkat-bawah nama simbol dalam nama tingkat-pengguna\n"
+" STYLE, jika dispesifikasikan, dapat berupa `auto'(baku),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" atau `gnat'\n"
+" --no-demangle Jangan demangle tingkat-bawah nama simbol\n"
+" -D, --dynamic Tampilkan simbol dinamis daripada normal simbol\n"
+" --defined-only Tampilkan hanya simbol terdefinisi\n"
+" -e (diabaikan)\n"
+" -f, --format=FORMAT Gunakan format keluaran FORMAT. FORMAT dapat berupa `bsd',\n"
+" `sysv' atau `posix'. Baku adalah `bsd'\n"
+" -g, --extern-only Tampilkan hanya simbol eksternal\n"
+" -l, --line-numbers Gunakan informasi debug untuk mencari sebuah nama berkas dan\n"
+" nomor baris untuk setiap simbol\n"
+" -n, --numeric-sort Urutkan simbol secara numerik dengan alamat\n"
+" -o Sama seperti -A\n"
+" -p, --no-sort Jangan urutkan simbol\n"
+" -P, --portability Sama seperti --format=posix\n"
+" -r, --reverse-sort Balik sense dari sort\n"
+
+#: nm.c:245
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr " --plugin NAMA Muat plugin yang dispesifikasikan\n"
+
+#: nm.c:248
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+"\t\t -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+" -S, --print-size Tampilkan ukuran dari simbol yang terdefinisi\n"
+"\t\t -s, --print-armap Masukan indeks untuk simbol dari anggota archive\n"
+" --size-sort Urutkan simbol berdasarkan ukuran\n"
+" --special-syms Masukan simbol berdasarkan ukuran\n"
+" --synthetic Tampilkan synthetic simbol juga\n"
+" -t, --radix=RADIX Gunakan RADIX untuk menampilkan nilai simbol\n"
+" --target=BFDNAME Spesifikasikan format objek target sebagai BFDNAME\n"
+" -u, --undefined-only Tampilkan hanya simbol tidak terdefinisi\n"
+" -X 32_64 (diabaikan)\n"
+" @BERKAS Baca pilihan dari BERKAS\n"
+" -h, --help Tampilkan informasi ini\n"
+" -V, --version Tampilkan nomor versi aplikasi ini\n"
+"\n"
+
+#: nm.c:292
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: radix tidak valid"
+
+#: nm.c:316
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: format keluaran tidak valid"
+
+#: nm.c:337 readelf.c:6917 readelf.c:6962
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<prosesor spesifik>: %d"
+
+#: nm.c:339 readelf.c:6926 readelf.c:6980
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<OS spesifik>: %d"
+
+#: nm.c:341 readelf.c:6929 readelf.c:6983
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<tidak diketahui>: %d"
+
+#: nm.c:381
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Indeks archive:\n"
+
+#: nm.c:1242
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Simbol tidak terdefinisi dari %s:\n"
+"\n"
+
+#: nm.c:1244
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Simbol dari %s:\n"
+"\n"
+
+#: nm.c:1246 nm.c:1297
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Nama Nilai Kelas Tipe Ukuran Baris Daerah\n"
+"\n"
+
+#: nm.c:1249 nm.c:1300
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Nama Nilai Kelas Tipe Ukuran Baris Daerah\n"
+"\n"
+
+#: nm.c:1293
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Simbol tidak terdefinisi dari %s[%s]:\n"
+"\n"
+
+#: nm.c:1295
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Simbol dari %s[%s]:\n"
+"\n"
+
+#: nm.c:1387
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr "Tampilkan lebar yang belum terinisialisasi (%d)"
+
+#: nm.c:1615
+msgid "Only -X 32_64 is supported"
+msgstr "Hanya -X 32_64 yang didukung"
+
+#: nm.c:1643
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "Gunakan --size-sort dan --undefined-only pilihan secara bersamaan"
+
+#: nm.c:1644
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "tidak akan menghasilkan keluaran, karena simbol tidak terdefinisi tidak memiliki ukuran."
+
+#: nm.c:1672
+#, c-format
+msgid "data size %ld"
+msgstr "ukuran data %ld"
+
+#: objcopy.c:463 srconv.c:1730
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Penggunaan: %s [pilihan] berkas-masukan [berkas-keluaran]\n"
+
+#: objcopy.c:464
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " Menyalin sebuah berkas binari, kemungkinan mengubahnya dalam proses ini\n"
+
+#: objcopy.c:465 objcopy.c:572
+#, c-format
+msgid " The options are:\n"
+msgstr " Pilihan adalah:\n"
+
+#: objcopy.c:466
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set arch of output file, when input is binary\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave <number> Only copy one out of every <number> bytes\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff objects.\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\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"
+msgstr ""
+" -I --input-target <bfdname> Asumsikan berkas masukan berada dalam format <bfdname>\n"
+" -O --output-target <bfdname> Buat sebuah berkas keluaran dalam format <bfdname>\n"
+" -B --binary-architecture <arch> Set arsitektur dari berkas keluaran, ketika masukan adalah binari\n"
+" -F --target <bfdname> Set kedua format masukan dan keluaran ke <bfdname>\n"
+" --debugging Ubah informasi debug, jika memungkinkan\n"
+" -p --preserve-dates Salin modifikasi/akses penanda-waktu ke keluaran\n"
+" -j --only-section <name> Salin hanya bagian <nama> kedalam keluaran\n"
+" --add-gnu-debuglink=<berkas> Tambahkan bagian .gnu_debuglink linking ke <berkas>\n"
+" -R --remove-section <nama> Hapus bagian <nama> dari keluaran\n"
+" -S --strip-all Hapus seluruh informasi simbol dan relokasi\n"
+" -g --strip-debug Hapus seluruh debug simbol dan bagian\n"
+" --strip-unneeded Hapus seluruh simbol tidak dibutuhkan oleh relokasi\n"
+" -N --strip-simbol <nama> Jangan menyalin simbol <nama>\n"
+" --strip-unneeded-symbol <nama>\n"
+" Jangan menyalin simbol <nama> kecuali dibutuhkan oleh\n"
+" relokasi\n"
+" --only-keep-debug Strip seluruhnya kecuali informasi debug\n"
+" --extract-symbol Hapus isi bagian tetapi simpan simbol\n"
+" -K --keep-symbol <nama> Jangan strip simbol <nama>\n"
+" --keep-file-symbols Jangan strip file simbol\n"
+" --localize-hidden Ubah seluruh ELF simbol tersembunyi ke lokal\n"
+" -L --localize-symbol <nama> Paksa simbol <nama> untuk ditandai sebagai lokal\n"
+" --globalize-symbol <nama> Paksa simbol <nama> untuk ditandai sebagai global\n"
+" -G --keep-global-symbol <nama> Lokalisasi seluruh simbol kecuali <nama>\n"
+" -W --weaken-symbol <nama> Paksa simbol <nama> untuk ditandai sebagai lemah\n"
+" --weaken Paksa seluruh simbol global untuk ditandai sebagai lemah\n"
+" -w --wildcard Ijinkan wildcard dalam perbandingan simbol\n"
+" -x --discard-all Hapus seluruh simbol bukan-global\n"
+" -i --interleave <nomor> Salin hanya satu dari setiap <nomor> bytes\n"
+" -b --byte <nomor> Pilih byte <nomor> dalam setiap interleaved blok\n"
+" --gap-fill <nilai> Isi gap diantara bagian dengan <nilai>\n"
+" --pad-to <alamat> Pad bagian terakhir sampai ke alamat <addr>\n"
+" --set-start <alamat> Set awal dari alamat ke <alamat>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Tambahkan <incr> ke awal dari alamat\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Tambahkan <incr> ke LMA, VMA, dan awal alamat\n"
+" {--change-section-address|--adjust-section-vma} <nama>{=|+|-}<nilai>\n"
+" Ubah LMA dan VMA dari bagian <nama> dengan <nilai>\n"
+" --change-section-lma <nama>{=|+|-}<nilai>\n"
+" Ubah LMA bagian <nama> dengan <nilai>\n"
+" --change-section-vma <nama>{=|+|-}<nilai>\n"
+" Ubah VMA bagian <nama> dengan <nilai>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Peringatkan jika sebuah bagian bernama tidak ada\n"
+" --set-section-flags <nama>=<flags>\n"
+" Set bagian <nama> properti ke <tanda>\n"
+" --add-section <nama>=<file> Tambahkan bagian <nama> ditemukan dalam <berkas> ke keluaran\n"
+" --rename-section <old>=<new>[,<flags>] Ubah nama bagian <lama> ke <baru>\n"
+" --change-leading-char Paksa format keluaran gaya awal karakter\n"
+" --remove-leading-char Hapus awal karakter dari global simbol\n"
+" --reverse-bytes=<num> Balik <nomor> bytes dalam satu waktu, dalam bagian keluara dengan isi\n"
+" --redefine-sym <lama>=<baru> Redefinisikan nama simbol <lama> ke <baru>\n"
+" --redefine-syms <file> --redefine-sym untuk seluruh pasangan simbol\n"
+" terdaftar dalam <berkas>\n"
+" --srec-len <nomor> Batasi panjang dari Srecords yang dihasilkan\n"
+" --srec-forceS3 Batasi tipe dari Srecord yang dihasilkan ke S3\n"
+" --strip-symbols <berkas> -N untuk seluruh simbol terdaftar dalam <berkas>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol untuk seluruh simbol terdaftar\n"
+" dalam <berkas>\n"
+" --keep-symbols <berkas> -K untuk seluruh simbol terdaftar dalam <berkas>\n"
+" --localize-symbols <berkas> -L untuk seluruh simbol terdaftar dalam <berkas>\n"
+" --globalize-symbols <berkas> --globalize-symbol untuk seluruh dalam <berkas>\n"
+" --keep-global-symbols <berkas>-G untuk seluruh simbol terdaftar dalam <berkas>\n"
+" --weaken-symbols <berkas> -W untuk seluruh simbol terdaftar dalam <berkas>\n"
+" --alt-machine-code <indeks> Gunakan arsitektur target <indeks> mesin\n"
+" --writeable-text Tandai teks keluaran sebagai dapat-ditulis\n"
+" --readonly-text Tandai teks keluaran sebagai tulis-terproteksi\n"
+" --pure Tandai berkas keluaran sebagai demand paged\n"
+" --impure Tandai berkas keluaran sebagai impure\n"
+" --prefix-symbols <prefix> Tambahkan <awalan> ke awal dari setiap simbol nama\n"
+" --prefix-sections <prefix> Tambahkan <awalan> ke awal dari setiap nama bagian\n"
+" --prefix-alloc-section <prefix>\n"
+" Tambahkan <awalan> ke awal dari setiap alokasi\n"
+" nama bagian\n"
+" --file-alignment <num> Set PE berkas alignment ke <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap ke <reserve>/\n"
+" <commit>\n"
+" --image-base <alamat> Set PE dasar image ke <address>\n"
+" --section-alignment <num> Set PE daerah alignment ke <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack ke <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" -v --verbose Daftar seluruh berkas objek termodifikasi\n"
+" @<berkas> Baca pilihan dari <berkas>\n"
+" -V --version Tampilkan nomor versi aplikasi ini\n"
+" -h --help Tampilkan keluaran ini\n"
+" --info Daftar objek format dan arsitektur yang didukung\n"
+
+#: objcopy.c:570
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Penggunaan: %s <pilihan> berkas-masukan\n"
+
+#: objcopy.c:571
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr " Hapus simbol dan daerah dari berkas\n"
+
+#: objcopy.c:573
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target=<bfdname> Asumsikan berkas masukan adalah dalam format <bfdname>\n"
+" -O --output-target=<bfdname> Buah sebuah berkas keluaran dalam format <bfdname>\n"
+" -F --target=<bfdname> Set kedua format masukan dan keluaran ke <bfdname>\n"
+" -p --preserve-dates Salin penanda-waktu modifikasi/akses ke keluaran\n"
+" -R --remove-section=<nama> Hapus bagian <nama> dari keluaran\n"
+" -s --strip-all Hapus seluruh informasi simbol dan relokasi\n"
+" -g -S -d --strip-debug Hapus seluruh debug simbol dan section\n"
+" --strip-unneeded Hapus seluruh simbol tidak dibutuhkan oleh relokasi\n"
+" --only-keep-debug Strip seluruh tetapi simpan informasi debug\n"
+" -N --strip-symbol=<nama> Jangan salin simbol <nama>\n"
+" -K --keep-symbol=<nama> Jangan strip simbol <nama>\n"
+" --keep-file-symbols Jangan strip berkas simbol\n"
+" -w --wildcard Ijinkan wildcard dalam perbandingan simbol\n"
+" -x --discard-all Hapus seluruh simbol bukan-global\n"
+" -X --discard-locals Hapus simbol apapun yang dihasilkan kompiler\n"
+" -v --verbose Daftar seluruh berkas objek yang termodifikasi\n"
+" -V --version Tampilkan nomor versi aplikasi ini\n"
+" -h --help Tampilkan bantuan ini\n"
+" --info Daftar format dan arsitektur objek yang didukung\n"
+" -o <berkas> Tempatkan keluaran ter-strip kedalam <berkas>\n"
+
+#: objcopy.c:646
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "tanda `%s' daerah tidak dikenal"
+
+#: objcopy.c:647
+#, c-format
+msgid "supported flags: %s"
+msgstr "tanda yang didukung: %s"
+
+#: objcopy.c:748
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "tidak dapat membuka '%s': %s"
+
+#: objcopy.c:751 objcopy.c:3335
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: fread gagal"
+
+#: objcopy.c:824
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: Mengabaikan sampah ditemukan di baris ini"
+
+#: objcopy.c:1120
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr "bukan stripping simbol `%s' karena ini dinamakan dalam sebuah relokasi"
+
+#: objcopy.c:1203
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: Multiple redefinisi dari simbol \"%s\""
+
+#: objcopy.c:1207
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: Simbol \"%s\" adalah target dari lebih satu redefinisi"
+
+#: objcopy.c:1235
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "tidak dapat membuka berkas redefinisi %s (error: %s)"
+
+#: objcopy.c:1313
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: sampah ditemukan diakhir dari baris"
+
+#: objcopy.c:1316
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: hilang nama simbol baru"
+
+#: objcopy.c:1326
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: prematur akhir dari berkas"
+
+#: objcopy.c:1352
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat mengembalikan ukuran negatif untuk `%s'"
+
+#: objcopy.c:1364
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "salin dari `%s' [tidak dikenal] ke `%s' [tidak dikenal]\n"
+
+#: objcopy.c:1419
+msgid "Unable to change endianness of input file(s)"
+msgstr "Tidak dapat mengubah endianness dari berkas masukan"
+
+#: objcopy.c:1428
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "salin dari `%s' [%s] ke `%s' [%s]\n"
+
+#: objcopy.c:1473
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "Tidak dapat mengenali format dari berkas masukan `%s'"
+
+#: objcopy.c:1476
+#, c-format
+msgid "Warning: Output file cannot represent architecture `%s'"
+msgstr "Peringatan: Berkas keluaran tidak dapat merepresentasikan arsitektur `%s'"
+
+#: objcopy.c:1539
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr "peringatan: penyelarasan berkas (0x%s) > penyelarasan daerah (0x%s)"
+
+#: objcopy.c:1598
+#, c-format
+msgid "can't add section '%s'"
+msgstr "tidak dapat menambahkan daerah '%s'"
+
+#: objcopy.c:1607
+#, c-format
+msgid "can't create section `%s'"
+msgstr "tidak dapat membuat daerah `%s'"
+
+#: objcopy.c:1653
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr "tidak dapat membuat debug link daerah `%s'"
+
+#: objcopy.c:1746
+msgid "Can't fill gap after section"
+msgstr "Tidak dapat mengisi gap setelah daerah"
+
+#: objcopy.c:1770
+msgid "can't add padding"
+msgstr "tidak dapat menambahkan padding"
+
+#: objcopy.c:1861
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr "tidak dapat mengisi debug link section `%s'"
+
+#: objcopy.c:1924
+msgid "error copying private BFD data"
+msgstr "error menyalin private BFD data"
+
+#: objcopy.c:1935
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr "target ini tidak mendukung %lu alternatif kode mesin"
+
+#: objcopy.c:1939
+msgid "treating that number as an absolute e_machine value instead"
+msgstr "membuat nomor itu sebagai sebuah nilai e_machine absolut"
+
+#: objcopy.c:1943
+msgid "ignoring the alternative value"
+msgstr "mengabaikan nilai alternatif"
+
+#: objcopy.c:1974 objcopy.c:2009
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr "tidak dapat membuat tempdir untuk archive menyalin (error: %s)"
+
+#: objcopy.c:2070
+msgid "Unable to recognise the format of file"
+msgstr "Tidak dapat mengenali format dari berkas"
+
+#: objcopy.c:2167
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "error: berkas masukan '%s' kosong"
+
+#: objcopy.c:2299
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "Multiple pergantian nama dari daerah %s"
+
+#: objcopy.c:2350
+msgid "error in private header data"
+msgstr "error dalam private header data"
+
+#: objcopy.c:2428
+msgid "failed to create output section"
+msgstr "gagal untuk membuat daerah keluaran"
+
+#: objcopy.c:2442
+msgid "failed to set size"
+msgstr "gagal untuk menset ukuran"
+
+#: objcopy.c:2456
+msgid "failed to set vma"
+msgstr "gagal untuk menset vma"
+
+#: objcopy.c:2481
+msgid "failed to set alignment"
+msgstr "gagal untuk menset alignmen"
+
+#: objcopy.c:2515
+msgid "failed to copy private data"
+msgstr "gagal untuk menyalin private data"
+
+#: objcopy.c:2597
+msgid "relocation count is negative"
+msgstr "jumlah relokasi negatif"
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2658
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr "tidak dapat membalik bytes: panjang dari daerah %s harus secara genap terbagi oleh %d"
+
+#: objcopy.c:2842
+msgid "can't create debugging section"
+msgstr "tidak dapat membuat daerah debug"
+
+#: objcopy.c:2855
+msgid "can't set debugging section contents"
+msgstr "tidak dapat menset isi daerah debug"
+
+#: objcopy.c:2863
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr "tidak tahu bagaimana menulis informasi debug untuk %s"
+
+#: objcopy.c:3005
+msgid "could not create temporary file to hold stripped copy"
+msgstr "tidak dapat membuat berkas sementara untuk menjaga salinan terstrip"
+
+#: objcopy.c:3077
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr "%s: versi dalam subsistem PE buruk"
+
+#: objcopy.c:3107
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr "subsistem PE tidak diketahui: %s"
+
+#: objcopy.c:3167
+msgid "byte number must be non-negative"
+msgstr "nomor byte harus tidak negatif"
+
+#: objcopy.c:3177
+msgid "interleave must be positive"
+msgstr "interleave harus positif"
+
+#: objcopy.c:3197 objcopy.c:3205
+#, c-format
+msgid "%s both copied and removed"
+msgstr "%s kedua disalin dan dihapus"
+
+#: objcopy.c:3306 objcopy.c:3380 objcopy.c:3480 objcopy.c:3511 objcopy.c:3535
+#: objcopy.c:3539 objcopy.c:3559
+#, c-format
+msgid "bad format for %s"
+msgstr "format buruk untuk %s"
+
+#: objcopy.c:3330
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "tidak dapat membuka %s: %s"
+
+#: objcopy.c:3449
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Peringatan: memotong gap-fill dari 0x%s ke 0x%x"
+
+#: objcopy.c:3610
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr "pilihan nama daerah panjang '%s' tidak diketahui"
+
+#: objcopy.c:3628
+msgid "unable to parse alternative machine code"
+msgstr "tidak dapat memparse kode mesin alternatif"
+
+#: objcopy.c:3673
+msgid "number of bytes to reverse must be positive and even"
+msgstr "nomor dari byte untuk membalik harus positif dan genap"
+
+#: objcopy.c:3676
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr "Peringatan: mengabaikan sebelumnya --reverse-byte nilai dari %d"
+
+#: objcopy.c:3691
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr "%s: nilai reservasi untuk --heap tidak valid"
+
+#: objcopy.c:3697
+#, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr "%s: nilai komitmen untuk --heap tidak valid"
+
+#: objcopy.c:3722
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr "%s: nilai reservasi untuk --stack tidak valid"
+
+#: objcopy.c:3728
+#, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr "%s: nilai komitmen untuk --stack tidak valid"
+
+#: objcopy.c:3757
+msgid "byte number must be less than interleave"
+msgstr "byte number harus lebih kecil dari interleave"
+
+#: objcopy.c:3784
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr "target masukan EFI tidak diketahui: %s"
+
+#: objcopy.c:3815
+#, c-format
+msgid "unknown output EFI target: %s"
+msgstr "target keluaran EFI tidak diketahui: %s"
+
+#: objcopy.c:3840
+#, c-format
+msgid "architecture %s unknown"
+msgstr "arsitektur %s tidak dikenal"
+
+#: objcopy.c:3844
+msgid "Warning: input target 'binary' required for binary architecture parameter."
+msgstr "Peringatan: target masukan 'binary' dibutuhkan untuk parameter arsitektur binari."
+
+#: objcopy.c:3845
+#, c-format
+msgid " Argument %s ignored"
+msgstr " Argumen %s diabaikan"
+
+#: objcopy.c:3851
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr "peringatan: tidak dapat mengalokasikan '%s'. Pesan error sistem: %s"
+
+#: objcopy.c:3862
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr "peringatan: tidak dapat membuat berkas sementara ketika menyalin '%s', (error: %s)"
+
+#: objcopy.c:3890 objcopy.c:3904
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s tidak pernah digunakan"
+
+#: objdump.c:187
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Penggunaan: %s <pilihan> <berkas>\n"
+
+#: objdump.c:188
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " Menampilkan informasi dari objek <berkas>.\n"
+
+#: objdump.c:189
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " Paling tidak satu dari switch berikut harus diberikan:\n"
+
+#: objdump.c:190
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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[lLiaprmfFsoR] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+" 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"
+msgstr ""
+" -a, --archive-headers Tampilkan informasi archive header\n"
+" -f, --file-headers Tampilkan isi dari seluruh berkas header\n"
+" -p, --private-headers Tampilkan format objek spesifik isi berkas header\n"
+" -h, --[section-]headers Tampilkan isi dari daerah header\n"
+" -x, --all-headers Tampilkan isi dari seluruh header\n"
+" -d, --disassemble Tampilkan isi rakitan dari daerah executable\n"
+" -D, --disassemble-all Tampilkan isi rakitan dari seluruh bagian\n"
+" -S, --source Campur kode program dengan pembongkaran\n"
+" -s, --full-contents Tampilkan isi penuh dari seluruh bagian yang diminta\n"
+" -g, --debugging Tampilkan informasi debug dalam berkas objek\n"
+" -e, --debugging-tags Tampilkan informasi debug menggunakan gaya ctags\n"
+" -G, --stabs Tampilkan (dalam bentuk mentah) informasi STABS apapun dalam berkas\n"
+" -W, --dwarf Tampilkan informasi DWARF dalam berkas\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+" Tampilkan informasi DWARF yang ada dalam berkas\n"
+" -t, --syms Tampilkan isi dari tabel simbol\n"
+" -T, --dynamic-syms Tampilkan isi dari tabel simbol dinamis\n"
+" -r, --reloc Tampilkan masukan relokasi dalam berkas\n"
+" -R, --dynamic-reloc Tampilkan masukan relokasi dinamis dalam berkas\n"
+" @<berkas> Baca pilihan dari <berkas>\n"
+" -v, --version Tampilkan nomor versi aplikasi ini\n"
+" -i, --info Daftar format dan arsitektur objek yang didukung\n"
+" -H, --help Tampilkan informasi ini\n"
+
+#: objdump.c:217
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" Switch berikut adalah opsional:\n"
+
+#: objdump.c:218
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a single line for -d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+"\n"
+msgstr ""
+" -b, --target=BFDNAME Spesifikasikan format objek target sebagai BFDNAME\n"
+" -m, --architecture=MESIN Spesifikasikan target arsitektur sebagai MESIN\n"
+" -j, --section=NAMA Hanya tampilkan informasi untuk daerah NAMA\n"
+" -M, --disassembler-options=OPT Lewatkan teks OPT ke pembongkar\n"
+" -EB --endian=big Asumsikan format big endian ketika membongkar\n"
+" -EL --endian=little Asumsikan format little endian ketika membongkar\n"
+" --file-start-context Masukan konteks dari awal dari berkas (dengan -S)\n"
+" -I, --include=DIR Tambahkan ke daftar pencarian DIR untuk berkas sumber\n"
+" -l, --line-numbers Masukan nomor baris dan nama berkas dalam keluaran\n"
+" -F, --file-offsets Masukan berkas ofset ketika menampilkan informasi\n"
+" -C, --dimangle[=GAYA] Dekode mangled/proses nama simbol\n"
+" GAYA, jika dispesifikasikan, dapat berupa `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" atau `gnat'\n"
+" -w, --wide Format keluaran untuk lebih dari 80 kolom\n"
+" -z, --disassemble-zeroes Jangan lewati blok dari nol ketika membongkar\n"
+" --start-address=ALAMAT Hanya proses data yang alamatnya >= ALAMAT\n"
+" --stop-address=ALAMAT Hanya proses data yang alamatnya <= ALAMAT\n"
+" --prefix-addresses Tampilkan alamat lengkap disamping pembongkaran\n"
+" --[no-]show-raw-insn Tampilkan heksa disamping simbol terbongkar\n"
+" --adjust-vma=OFFSET Tambahkan OFFSET ke seluruh alamat daerah yang ditampilkan\n"
+" --special-syms Masukan simbol spesial dalam simbol dumps\n"
+" --prefix=AWALAN Tambahkan AWALAH ke jalur absolut untuk -S\n"
+" --prefix-strip=TINGKAT Hapus nama direktori awal untuk -S\n"
+"\n"
+
+#: objdump.c:433
+#, c-format
+msgid "Sections:\n"
+msgstr "Daerah:\n"
+
+#: objdump.c:436 objdump.c:440
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Nama Ukuran VMA LMA Berkas off Algn"
+
+#: objdump.c:442
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Nama Ukuran VMA LMA Berkas off Algn"
+
+#: objdump.c:446
+#, c-format
+msgid " Flags"
+msgstr " Tanda"
+
+#: objdump.c:448
+#, c-format
+msgid " Pg"
+msgstr " Pg"
+
+#: objdump.c:491
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: bukan sebuah objek dinamis"
+
+#: objdump.c:916 objdump.c:940
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr " (Berkas Ofset: 0x%lx)"
+
+#: objdump.c:1885
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+"\n"
+"Pembongkaran dari daerah %s:\n"
+
+#: objdump.c:2058
+#, c-format
+msgid "Can't use supplied machine %s"
+msgstr "Tidak dapat menggunakan mesin %s yang diberikan"
+
+#: objdump.c:2077
+#, c-format
+msgid "Can't disassemble for architecture %s\n"
+msgstr "Tidak dapat membongkar untuk arsitektur %s\n"
+
+#: objdump.c:2168
+#, c-format
+msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"Tidak dapat memperoleh isi dari daerah '%s'.\n"
+
+#: objdump.c:2179
+#, c-format
+msgid ""
+"\n"
+"Can't uncompress section '%s'.\n"
+msgstr ""
+"\n"
+"Tidak dapat mengekstrak daerah '%s'.\n"
+
+#: objdump.c:2307
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"Tidak ada %s daerah ada\n"
+"\n"
+
+#: objdump.c:2316
+#, c-format
+msgid "Reading %s section of %s failed: %s"
+msgstr "Membaca daerah %s dari %s gagal: %s"
+
+#: objdump.c:2360
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"Isi dari daerah %s:\n"
+"\n"
+
+#: objdump.c:2491
+#, c-format
+msgid "architecture: %s, "
+msgstr "arsitektur: %s, "
+
+#: objdump.c:2494
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "tanda 0x%08x:\n"
+
+#: objdump.c:2508
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"awal alamat 0x"
+
+#: objdump.c:2571
+#, c-format
+msgid "Contents of section %s:"
+msgstr "Isi dari daerah %s:"
+
+#: objdump.c:2573
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr " (Awal dari berkas ofset: 0x%lx)"
+
+#: objdump.c:2680
+#, c-format
+msgid "no symbols\n"
+msgstr "tidak ada simbol\n"
+
+#: objdump.c:2687
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr "tidak ada informasi untuk nomor simbol %ld\n"
+
+#: objdump.c:2690
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "tidak dapat menentukan tipe dari nomor simbol %ld\n"
+
+#: objdump.c:2970
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: format berkas %s\n"
+
+#: objdump.c:3028
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: menampilkan informasi debug gagal"
+
+#: objdump.c:3128
+#, c-format
+msgid "In archive %s:\n"
+msgstr "Dalam archive %s:\n"
+
+#: objdump.c:3244
+msgid "error: the start address should be before the end address"
+msgstr "error: awal dari alamat seharusnya sebelum akhir dari alamat"
+
+#: objdump.c:3249
+msgid "error: the stop address should be after the start address"
+msgstr "error: stop alamat seharusnya setelah awal alamat"
+
+#: objdump.c:3261
+msgid "error: prefix strip must be non-negative"
+msgstr "error: awalan strip harus tidak negatif"
+
+#: objdump.c:3266
+msgid "error: instruction width must be positive"
+msgstr "error: panjang instruksi harus positif"
+
+#: objdump.c:3275
+msgid "unrecognized -E option"
+msgstr "pilihan -E tidak dikenal"
+
+#: objdump.c:3286
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "tipe --endian `%s' tidak dikenal"
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr "nilai yang dispesifikasikan untuk prama code_page tidak valid.\n"
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: Tipe kode 0x%x buruk"
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment gagal: %s"
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent gagal: %s"
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf tanpa fungsi yang mengawali"
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: tidak diduga .ef\n"
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: tidak dikenali informasi debug"
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "Akhir masukan stab sebelum error:\n"
+
+#: readelf.c:297
+#, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "Tidak dapat mencari ke 0x%lx untuk %s\n"
+
+#: readelf.c:312
+#, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Kehabisan alokasi dari memori 0x%lx bytes untuk %s\n"
+
+#: readelf.c:322
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Tidak dapat membaca dalam 0x%lx bytes dari %s\n"
+
+#: readelf.c:640
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Tidak tahu mengenai relokasi di arsitektur mesin ini\n"
+
+#: readelf.c:660 readelf.c:688 readelf.c:754 readelf.c:782
+msgid "relocs"
+msgstr "relokasi"
+
+#: readelf.c:671 readelf.c:699 readelf.c:765 readelf.c:793
+msgid "out of memory parsing relocs\n"
+msgstr "kehabisan memori parsing relokasi\n"
+
+#: readelf.c:898
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr " Ofset Info Tipe Sim. Nilai Nama Simbol + Addend\n"
+
+#: readelf.c:900
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr " Ofset Info Tipe Nilai.Sim Nama Sim + Addend\n"
+
+#: readelf.c:905
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " Ofset Info Tipe Nilai Sim Nama Simbol\n"
+
+#: readelf.c:907
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " Ofset Info Tipe Nilai.Sim Nama Sim.\n"
+
+#: readelf.c:915
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr " Ofset Info Tipe Nilai Simbol Nama Simbol + Addend\n"
+
+#: readelf.c:917
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr " Ofset Info Tipe Nilai Sim. Nama Sim. + Addend\n"
+
+#: readelf.c:922
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr " Ofset Info Tipe Nilai Simbol Nama Simbol\n"
+
+#: readelf.c:924
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " Ofset Info Tipe Nilai Sim. Nama Sim.\n"
+
+#: readelf.c:1211 readelf.c:1370 readelf.c:1378
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "tidak dikenal: %-7lx"
+
+#: readelf.c:1236
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<tidak dikenal addend: %lx>"
+
+#: readelf.c:1328
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr "<string tabel indeks: %3ld>"
+
+#: readelf.c:1330
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<korup indeks tabel string: %3ld>"
+
+#: readelf.c:1703
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "Prosesor Spesifik: %lx"
+
+#: readelf.c:1727
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "Sistem Operasi spesifik: %lx"
+
+#: readelf.c:1731 readelf.c:2613
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<tidak diketahui>: %lx"
+
+#: readelf.c:1744
+msgid "NONE (None)"
+msgstr "KOSONG (Kosong)"
+
+#: readelf.c:1745
+msgid "REL (Relocatable file)"
+msgstr "REL (Berkas dapat direlokasi)"
+
+#: readelf.c:1746
+msgid "EXEC (Executable file)"
+msgstr "EXEC (Berkas dapat dieksekusi)"
+
+#: readelf.c:1747
+msgid "DYN (Shared object file)"
+msgstr "DYN (Berkas objek terbagi)"
+
+#: readelf.c:1748
+msgid "CORE (Core file)"
+msgstr "CORE (Berkas core)"
+
+#: readelf.c:1752
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "Prosesor Spesifik: (%x)"
+
+#: readelf.c:1754
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "OS Spesifik: (%x)"
+
+#: readelf.c:1756 readelf.c:2830
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<tidak dikenal>: %x"
+
+#: readelf.c:1768
+msgid "None"
+msgstr "Kosong"
+
+#: readelf.c:1879
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr "<tidak dikenal>: 0x%x"
+
+#: readelf.c:2136
+msgid "unknown"
+msgstr "tidak dikenal"
+
+#: readelf.c:2137
+msgid "unknown mac"
+msgstr "tidak dikenal mac"
+
+#: readelf.c:2450
+msgid "Standalone App"
+msgstr "Standalone App"
+
+#: readelf.c:2453 readelf.c:3159 readelf.c:3175
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<tidak dikenal: %x>"
+
+#: readelf.c:2878
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Penggunaan: readelf <pilihan> berkas-elf\n"
+
+#: readelf.c:2879
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr " Menampilkan informasi mengenai isi dari berkas format ELF\n"
+
+#: readelf.c:2880
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as relocated bytes\n"
+" -w[lLiaprmfFsoR] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" Pilihan adalah:\n"
+" -a --all Sama dengan: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Tampilkan ELF file header\n"
+" -l --program-headers Tampilkan program header\n"
+" --segments Sebuah alias untuk --program-headers\n"
+" -S --section-headers Tampilkan section headers\n"
+" --sections Sebuah alias untuk --section-headers\n"
+" -g --section-groups Tampilkan section groups\n"
+" -t --section-details Tampilkan detail daerah\n"
+" -e --headers Sama dengan: -h -l -S\n"
+" -s --syms Tampilkan tabel simbol\n"
+" --symbols Sebuah alias untuk --syms\n"
+" -n --notes Tampilkan core notes (jika ada)\n"
+" -r --relocs Tampilkan relokasi (jika ada)\n"
+" -u --unwind Tampilkan informasi unwind (jika ada)\n"
+" -d --dynamic Tampilkan daerah dinamis (jika ada)\n"
+" -V --version-info Tampilkan daerah versi (jika ada)\n"
+" -A --arch-specific Tampilkan informasi spesifik arsitektur (jika ada).\n"
+" -c --archive-index Tampilkan simbol/berkas indeks dalam sebuah archive\n"
+" -D --use-dynamic Gunakan informasi daerah dinamis ketika menampilkan simbol\n"
+" -x --hex-dump=<nomor|nama>\n"
+" Dump isi dari daerah <nomor|nama> sebagai bytes\n"
+" -p --string-dump=<nomor|nama>\n"
+" Dump isi dari daerah <nomor|nama> sebagai strings\n"
+" -R --relocated-dump=<nomor|nama>\n"
+" Dump isi dari daerah <nomor|nama> sebagai bytes yang direlokasi\n"
+" -w[lLiaprmfFsoR] atau\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+" Tampilkan isi dari daerah debug DWARF2\n"
+
+#: readelf.c:2910
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+" -i --instruction-dump=<nomor|nama>\n"
+" Bongkar isi dari daerah <nomor|nama>\n"
+
+#: readelf.c:2914
+#, 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 Tampilkan histogram dari daftar panjang bucket\n"
+" -W --wide Ijinkan lebar keluaran untuk melebihi 80 karakter\n"
+" @<berkas> Baca pilihan dari <berkas>\n"
+" -H --help Tampilkan informasi ini\n"
+" -v --version Tampilkan nomor versi dari readelf\n"
+
+#: readelf.c:2942 readelf.c:2970 readelf.c:2974 readelf.c:11443
+msgid "Out of memory allocating dump request table.\n"
+msgstr "Kehabisan memori mengalokasikan permintaan dump tabel.\n"
+
+#: readelf.c:3129
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Pilihan tidak valid '-%c'\n"
+
+#: readelf.c:3143
+msgid "Nothing to do.\n"
+msgstr "Tidak ada yang dilakukan.\n"
+
+#: readelf.c:3155 readelf.c:3171 readelf.c:6440
+msgid "none"
+msgstr "kosong"
+
+#: readelf.c:3172
+msgid "2's complement, little endian"
+msgstr "2's komplemen, little endian"
+
+#: readelf.c:3173
+msgid "2's complement, big endian"
+msgstr "2's komplemen, big endian"
+
+#: readelf.c:3191
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "Bukan sebuah berkas ELF - ini memiliki magic bytes yang salah di awal\n"
+
+#: readelf.c:3201
+#, c-format
+msgid "ELF Header:\n"
+msgstr "ELF Header:\n"
+
+#: readelf.c:3202
+#, c-format
+msgid " Magic: "
+msgstr " Magik: "
+
+#: readelf.c:3206
+#, c-format
+msgid " Class: %s\n"
+msgstr " Kelas: %s\n"
+
+#: readelf.c:3208
+#, c-format
+msgid " Data: %s\n"
+msgstr " Data: %s\n"
+
+#: readelf.c:3210
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " Versi: %d %s\n"
+
+#: readelf.c:3217
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS/ABI: %s\n"
+
+#: readelf.c:3219
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " Versi ABI: %d\n"
+
+#: readelf.c:3221
+#, c-format
+msgid " Type: %s\n"
+msgstr " Tipe: %s\n"
+
+#: readelf.c:3223
+#, c-format
+msgid " Machine: %s\n"
+msgstr " Mesin: %s\n"
+
+#: readelf.c:3225
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " Versi: 0x%lx\n"
+
+#: readelf.c:3228
+#, c-format
+msgid " Entry point address: "
+msgstr " Alamat titik masuk: "
+
+#: readelf.c:3230
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" Awal dari aplikasi headers: "
+
+#: readelf.c:3232
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (bytes kedalam berkas)\n"
+" Awal dari header bagian: "
+
+#: readelf.c:3234
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (bytes kedalam berkas)\n"
+
+#: readelf.c:3236
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Tanda: 0x%lx%s\n"
+
+#: readelf.c:3239
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " Ukuran dari header ini: %ld (bytes)\n"
+
+#: readelf.c:3241
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " Ukuran dari aplikasi header: %ld (bytes)\n"
+
+#: readelf.c:3243
+#, c-format
+msgid " Number of program headers: %ld\n"
+msgstr " Jumlah dari aplikasi header: %ld\n"
+
+#: readelf.c:3245
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " Ukuran dari header daerah: %ld (bytes)\n"
+
+#: readelf.c:3247
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " Jumlah dari header daerah: %ld"
+
+#: readelf.c:3252
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " Indeks tabel string daerah header: %ld"
+
+#: readelf.c:3289 readelf.c:3322
+msgid "program headers"
+msgstr "aplikasi header"
+
+#: readelf.c:3360 readelf.c:3658 readelf.c:3699 readelf.c:3758 readelf.c:3823
+#: readelf.c:4494 readelf.c:4518 readelf.c:5770 readelf.c:5815 readelf.c:6014
+#: readelf.c:7087 readelf.c:7101 readelf.c:7611 readelf.c:7627 readelf.c:7670
+#: readelf.c:7695 readelf.c:9642 readelf.c:9834 readelf.c:10362
+#: readelf.c:10736 readelf.c:10750 readelf.c:11109
+msgid "Out of memory\n"
+msgstr "Kehabisan memori\n"
+
+#: readelf.c:3387
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"Tidak ada aplikasi header dalam berkas ini.\n"
+
+#: readelf.c:3393
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Tipe berkas ELF adalah %s\n"
+
+#: readelf.c:3394
+#, c-format
+msgid "Entry point "
+msgstr "Titik masukan "
+
+#: readelf.c:3396
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"Tidak ada %d aplikasi header, dimulai di ofset "
+
+#: readelf.c:3408 readelf.c:3410
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"Aplikasi header:\n"
+
+#: readelf.c:3414
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Tipe Ofset AlamatMaya AlamatPisik UkuranBerkas UkuranMemori Flg Align\n"
+
+#: readelf.c:3417
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Tipe Ofset AlamatMaya AlamatPisik UkuranBerkas UkuranMemori Flg Align\n"
+
+#: readelf.c:3421
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " Tipe Ofset AlamatMaya AlamatPisik\n"
+
+#: readelf.c:3423
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " UkuranBerkas UkuranMemori Tanda Align\n"
+
+#: readelf.c:3516
+msgid "more than one dynamic segment\n"
+msgstr "lebih dari satu argumen dinamis\n"
+
+#: readelf.c:3532
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr "tidak ada daerah .dinamis dalam segmen dinamis\n"
+
+#: readelf.c:3547
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr "daerah dinamis tidak berisi dalam segmen dinamis\n"
+
+#: readelf.c:3550
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr "daerah dinmasi bukan daerah pertama dalam segmen dinamis\n"
+
+#: readelf.c:3558
+msgid "Unable to find program interpreter name\n"
+msgstr "Tidak dapat menemukan nama aplikasi interpretasi\n"
+
+#: readelf.c:3565
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr "Internal error: gagal membuat string format untuk menampilkan aplikasi interpretasi\n"
+
+#: readelf.c:3569
+msgid "Unable to read program interpreter name\n"
+msgstr "Tidak dapat membaca nama aplikasi interpretasi\n"
+
+#: readelf.c:3572
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [Meminta aplikasi interpretasi: %s]"
+
+#: readelf.c:3584
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" Pemetaan daerah ke segmen:\n"
+
+#: readelf.c:3585
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " Daerah Segmen...\n"
+
+#: readelf.c:3620
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "Tidak dapat menginterpretasikan alamat maya tanpa aplikasi header.\n"
+
+#: readelf.c:3636
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "Alamat maya 0x%lx tidak dapat dilokasikan dalam segmen PT_LOAD apapun.\n"
+
+#: readelf.c:3650 readelf.c:3691
+msgid "section headers"
+msgstr "header daerah"
+
+#: readelf.c:3735 readelf.c:3800
+msgid "symbols"
+msgstr "simbol"
+
+#: readelf.c:3745 readelf.c:3810
+msgid "symtab shndx"
+msgstr "simtab shndx"
+
+#: readelf.c:4070 readelf.c:4478
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"Tidak ada daerah dalam berkas ini.\n"
+
+#: readelf.c:4076
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "Tidak ada header daerah %d, dimulai di ofset 0x%lx:\n"
+
+#: readelf.c:4096 readelf.c:4595 readelf.c:4821 readelf.c:5116 readelf.c:5524
+#: readelf.c:7421
+msgid "string table"
+msgstr "tabel string"
+
+#: readelf.c:4163
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "Daerah %d memiliki sh_entsize %lx tidak valid (diduga %lx)\n"
+
+#: readelf.c:4183
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Berkas berisi multiple tabel simbol dinamis\n"
+
+#: readelf.c:4196
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Berkas berisi multiple tabel string dinamis\n"
+
+#: readelf.c:4201
+msgid "dynamic strings"
+msgstr "string dinamis"
+
+#: readelf.c:4208
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Berksa berisi multiple simtab shndx tabel\n"
+
+#: readelf.c:4259
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"Header Daerah:\n"
+
+#: readelf.c:4261
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"Header Daerah:\n"
+
+#: readelf.c:4267 readelf.c:4278 readelf.c:4289
+#, c-format
+msgid " [Nr] Name\n"
+msgstr " [Nr] Nama\n"
+
+#: readelf.c:4268
+#, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr " Tipe Alamat Ofset Ukuran ES Lk Inf Al\n"
+
+#: readelf.c:4272
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] Nama Tipe Alamat Ofset Ukuran ES Flg Lk Inf Al\n"
+
+#: readelf.c:4279
+#, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr " Tipe Alamat Ofset Ukuran ES Lk Inf Al\n"
+
+#: readelf.c:4283
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] Nama Tipe Alamat Ofset Ukuran ES Flg Lk Inf Al\n"
+
+#: readelf.c:4290
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr " Tipe Alamat Ofset Link\n"
+
+#: readelf.c:4291
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr " Ukuran UkuranMasuk Info Align\n"
+
+#: readelf.c:4295
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [Nr] Nama Tipe Alamat Ofset\n"
+
+#: readelf.c:4296
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " Ukuran UkuranMasuk Tanda Link Info Align\n"
+
+#: readelf.c:4301
+#, c-format
+msgid " Flags\n"
+msgstr " Tanda\n"
+
+#: readelf.c:4435
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Kunci ke Tanda:\n"
+" W (tulis), A (alokasi), X (execute), M (gabung), S (strings)\n"
+" I (info), L (urutan penggabungan), G (grup), x (tidak diketahui)\n"
+" O (ekstra pemrosesan OS dibutuhkan) o (OS spesifik), p (prosesor spesifik)\n"
+
+#: readelf.c:4453
+#, c-format
+msgid "[<unknown>: 0x%x]"
+msgstr "[<tidak diketahui>: 0x%x]"
+
+#: readelf.c:4485
+msgid "Section headers are not available!\n"
+msgstr "Header Daerah tidak tersedia!\n"
+
+#: readelf.c:4509
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"Tidak ada daerah grup dalam berkas ini.\n"
+
+#: readelf.c:4546
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "sh_link buruk dalam daerah grup `%s'\n"
+
+#: readelf.c:4565
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "sh_info buruk dalah daerah grup `%s'\n"
+
+#: readelf.c:4603
+msgid "section data"
+msgstr "daerah data"
+
+#: readelf.c:4615
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [Indeks] Nama\n"
+
+#: readelf.c:4629
+#, c-format
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "daerah [%5u] dalah daerah grup [%5u] > daerah maksimal [%5u]\n"
+
+#: readelf.c:4638
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "daerah [%5u] dalam daerah grup [%5u] telah dalam daerah grup [%5u]\n"
+
+#: readelf.c:4651
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr "daerah 0 dalam grup dearah [%5u]\n"
+
+#: readelf.c:4746
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"'%s' relokasi daerah di ofset 0x%lx berisi %ld bytes:\n"
+
+#: readelf.c:4758
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"Tidak ada relokasi dinamis dalam berkas ini.\n"
+
+#: readelf.c:4782
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"Daerah relokasi "
+
+#: readelf.c:4787 readelf.c:5192 readelf.c:5206 readelf.c:5539
+#, c-format
+msgid "'%s'"
+msgstr "'%s'"
+
+#: readelf.c:4789 readelf.c:5208 readelf.c:5541
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " di ofset 0x%lx berisi %lu masukan:\n"
+
+#: readelf.c:4840
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"Disana tidak ada relokasi dalam berkas ini.\n"
+
+#: readelf.c:5022 readelf.c:5390
+msgid "unwind table"
+msgstr "tabel unwind"
+
+#: readelf.c:5063 readelf.c:5471
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Melewati tipe relokasi %s tidak terduga\n"
+
+#: readelf.c:5124 readelf.c:5532 readelf.c:5585
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"Disana tidak ada daerah unwind dalam berkas ini.\n"
+
+#: readelf.c:5187
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"Tidak dapat menemukan informasi unwind daerah untuk "
+
+#: readelf.c:5199
+msgid "unwind info"
+msgstr "informasi unwind"
+
+#: readelf.c:5201 readelf.c:5538
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"Daerah unwind "
+
+#: readelf.c:5751 readelf.c:5796
+msgid "dynamic section"
+msgstr "daerah dinamis"
+
+#: readelf.c:5873
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"Disana tidak ada daerah dinamis dalam berkas ini.\n"
+
+#: readelf.c:5911
+msgid "Unable to seek to end of file!\n"
+msgstr "Tidak dapat mencari ke akhir dari berkas!\n"
+
+#: readelf.c:5924
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Tidak dapat menentukan jumlah dari simbol untuk diload\n"
+
+#: readelf.c:5959
+msgid "Unable to seek to end of file\n"
+msgstr "Tidak dapat mencari ke akhir dari berkas\n"
+
+#: readelf.c:5966
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Tidak dapat menentukan panjang dari tabel dinamis string\n"
+
+#: readelf.c:5971
+msgid "dynamic string table"
+msgstr "tabel string dinamis"
+
+#: readelf.c:6007
+msgid "symbol information"
+msgstr "informasi simbol"
+
+#: readelf.c:6032
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"Daerah dinamis di ofset 0x%lx berisi %u masukan:\n"
+
+#: readelf.c:6035
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " Tanda Tipe Nama/Nilai\n"
+
+#: readelf.c:6071
+#, c-format
+msgid "Auxiliary library"
+msgstr "Auxiliary library"
+
+#: readelf.c:6075
+#, c-format
+msgid "Filter library"
+msgstr "Filter library"
+
+#: readelf.c:6079
+#, c-format
+msgid "Configuration file"
+msgstr "Berkas konfigurasi"
+
+#: readelf.c:6083
+#, c-format
+msgid "Dependency audit library"
+msgstr "Dependensi audit perpustakaan"
+
+#: readelf.c:6087
+#, c-format
+msgid "Audit library"
+msgstr "Perpustakaan audit"
+
+#: readelf.c:6105 readelf.c:6133 readelf.c:6161
+#, c-format
+msgid "Flags:"
+msgstr "Tanda:"
+
+#: readelf.c:6108 readelf.c:6136 readelf.c:6163
+#, c-format
+msgid " None\n"
+msgstr " Kosong\n"
+
+#: readelf.c:6284
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Perpustakaan terbagi: [%s]"
+
+#: readelf.c:6287
+#, c-format
+msgid " program interpreter"
+msgstr " aplikasi interpretasi"
+
+#: readelf.c:6291
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "Perpustakaan soname: [%s]"
+
+#: readelf.c:6295
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "Perpustakaan rpath: [%s]"
+
+#: readelf.c:6299
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "Perpustakaan runpath: [%s]"
+
+#: readelf.c:6362
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Objek tidak dibutuhkan: [%s]\n"
+
+#: readelf.c:6487
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Definisi versi daerah '%s' berisi %u masukan:\n"
+
+#: readelf.c:6490
+#, c-format
+msgid " Addr: 0x"
+msgstr " Alamat: 0x"
+
+#: readelf.c:6492 readelf.c:6594 readelf.c:6715
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr " Ofset: %#08lx Link: %u (%s)\n"
+
+#: readelf.c:6500
+msgid "version definition section"
+msgstr "daerah definisi versi"
+
+#: readelf.c:6529
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: Rev: %d Tanda: %s"
+
+#: readelf.c:6532
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " Indeks: %d Cnt: %d "
+
+#: readelf.c:6543
+#, c-format
+msgid "Name: %s\n"
+msgstr "Nama: %s\n"
+
+#: readelf.c:6545
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Nama indeks: %ld\n"
+
+#: readelf.c:6562
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: Parent %d: %s\n"
+
+#: readelf.c:6565
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: Parent %d, nama indeks: %ld\n"
+
+#: readelf.c:6569
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr " Versi def aux melewati akhir dari daerah\n"
+
+#: readelf.c:6574
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr " Versi definisi melewati akhir dari daerah\n"
+
+#: readelf.c:6589
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Versi membutuhkan daerah '%s' berisi %u masukan:\n"
+
+#: readelf.c:6592
+#, c-format
+msgid " Addr: 0x"
+msgstr " Alamat: 0x"
+
+#: readelf.c:6602
+msgid "version need section"
+msgstr "versi membutuhkan daerah"
+
+#: readelf.c:6627
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: Versi: %d"
+
+#: readelf.c:6630
+#, c-format
+msgid " File: %s"
+msgstr " Berkas: %s"
+
+#: readelf.c:6632
+#, c-format
+msgid " File: %lx"
+msgstr " Berkas: %lx"
+
+#: readelf.c:6634
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " Cnt: %d\n"
+
+#: readelf.c:6654
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: Nama: %s"
+
+#: readelf.c:6657
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: Nama indeks: %lx"
+
+#: readelf.c:6660
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Tanda: %s Versi: %d\n"
+
+#: readelf.c:6667
+#, c-format
+msgid " Version need aux past end of section\n"
+msgstr " Versi membutuhkan aux melewati akhir dari daerah\n"
+
+#: readelf.c:6672
+#, c-format
+msgid " Version need past end of section\n"
+msgstr " Versi membutuhkan melewati akhir dari daerah\n"
+
+#: readelf.c:6706
+msgid "version string table"
+msgstr "tabel versi tring"
+
+#: readelf.c:6710
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Versi simbol daerah '%s' berisi %d masukan:\n"
+
+#: readelf.c:6713
+#, c-format
+msgid " Addr: "
+msgstr " Alamat: "
+
+#: readelf.c:6723
+msgid "version symbol data"
+msgstr "versi simbol data"
+
+#: readelf.c:6750
+msgid " 0 (*local*) "
+msgstr " 0 (*local*) "
+
+#: readelf.c:6754
+msgid " 1 (*global*) "
+msgstr " 1 (*global*) "
+
+#: readelf.c:6791 readelf.c:7488
+msgid "version need"
+msgstr "versi membutuhkan"
+
+#: readelf.c:6801
+msgid "version need aux (2)"
+msgstr "versi membutuhkan aux (2)"
+
+#: readelf.c:6816 readelf.c:6871
+msgid "*invalid*"
+msgstr "*tidak valid*"
+
+#: readelf.c:6846 readelf.c:7553
+msgid "version def"
+msgstr "versi def"
+
+#: readelf.c:6866 readelf.c:7568
+msgid "version def aux"
+msgstr "versi def aux"
+
+#: readelf.c:6900
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"Tidak ada informasi versi ditemukan dalam berkas ini.\n"
+
+#: readelf.c:7034
+#, c-format
+msgid "<other>: %x"
+msgstr "<yang lain>: %x"
+
+#: readelf.c:7093
+msgid "Unable to read in dynamic data\n"
+msgstr "Tidak dapat membaca dalam data dinamis\n"
+
+#: readelf.c:7184 readelf.c:7234 readelf.c:7258 readelf.c:7288 readelf.c:7312
+msgid "Unable to seek to start of dynamic information\n"
+msgstr "Tidak dapat mencari awal dari informasi dinamis\n"
+
+#: readelf.c:7190 readelf.c:7240
+msgid "Failed to read in number of buckets\n"
+msgstr "Gagal untuk membaca dalam jumlah dari buckets\n"
+
+#: readelf.c:7196
+msgid "Failed to read in number of chains\n"
+msgstr "Gagal untuk membaca dalam jumlah dari rantai\n"
+
+#: readelf.c:7296
+msgid "Failed to determine last chain length\n"
+msgstr "Gagal untuk menentukan akhir dari panjang rantai\n"
+
+#: readelf.c:7340
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"Tabel simbol untuk gambar:\n"
+
+#: readelf.c:7342 readelf.c:7360
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Num Buc: Nilai Ukuran Tipe Bind Vis Ndx Nama\n"
+
+#: readelf.c:7344 readelf.c:7362
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Num Buc: Nilai Ukuran Tipe Bind Vis Ndx Nama\n"
+
+#: readelf.c:7358
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+"\n"
+"Tabel simbol dari `.gnu.hash' untuk image:\n"
+
+#: readelf.c:7397
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Tabel simbol '%s' berisi %lu masukan:\n"
+
+#: readelf.c:7401
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Jumlah: Nilai Ukuran TIpe Bind Vis Ndx Nama\n"
+
+#: readelf.c:7403
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Jumlah: Nilai Ukuran Tipe Bind Vis Ndx Nama\n"
+
+#: readelf.c:7459
+msgid "version data"
+msgstr "versi data"
+
+#: readelf.c:7501
+msgid "version need aux (3)"
+msgstr "versi membutuhkan aux (3)"
+
+#: readelf.c:7528
+msgid "bad dynamic symbol\n"
+msgstr "simbol dinamis buruk\n"
+
+#: readelf.c:7592
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"Informasi simbol dinamis tidak tersedia untuk menampilkan simbol.\n"
+
+#: readelf.c:7604
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Histogram untuk daftar panjang bucket (total dari %lu buckets):\n"
+
+#: readelf.c:7606 readelf.c:7676
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " Panjang Nomor %% dari total Coverage\n"
+
+#: readelf.c:7674
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Histogram untuk `.gnu.hash' daftar panjang bucket (total dari %lu bucket):\n"
+
+#: readelf.c:7740
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Segmen info dinamis di ofset 0x%lx berisi %d masukan:\n"
+
+#: readelf.c:7743
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr " Jumlah: Nama BoundTo Tanda\n"
+
+#: readelf.c:7834
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr "Tipe relokasi MN10300 tidak tertangani ditemukan setelah relokasi SYM_DIFF"
+
+#: readelf.c:7982
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr "Hilang pengetahuan dari 32-bit tipe relokasi yang digunakan dalam daerah DWARF dari mesin nomor %d\n"
+
+#: readelf.c:8251
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr "tidak dapat mengaplikasikan tipe relokasi %d tidak didukung ke daerah %s\n"
+
+#: readelf.c:8259
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "melewati relokasi ofset 0x%lx tidak valid dalam daerah %s\n"
+
+#: readelf.c:8283
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr "melewati tipe simbol %s tidak terduga dalam relokasi ke %ld dalam daerah %s\n"
+
+#: readelf.c:8315
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"Daerah perakitan dump dari %s\n"
+
+#: readelf.c:8336
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"Daerah '%s' tidak memiliki data untuk di dump.\n"
+
+#: readelf.c:8342
+msgid "section contents"
+msgstr "daerah isi"
+
+#: readelf.c:8362
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+"\n"
+"String dump dari daerah '%s':\n"
+
+#: readelf.c:8380
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " Catatan: Daerah ini memiliki relokasi terhadatnya, tetapi ini BELUM pernah diaplikasikan ke dump ini.\n"
+
+#: readelf.c:8409
+#, c-format
+msgid " No strings found in this section."
+msgstr " Tidak ada string yang ditemukan dalam daerah ini."
+
+#: readelf.c:8431
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"Hex dump dari daerah '%s':\n"
+
+#: readelf.c:8455
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " CATATAN: Daerah ini memiliki relokasi terhadap ini, tetapi ini BELUM diaplikasikan ke dump ini.\n"
+
+#: readelf.c:8593
+#, c-format
+msgid "%s section data"
+msgstr "daerah data %s"
+
+#: readelf.c:8658
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+"\n"
+"Daerah '%s' tidak memiliki data debugging.\n"
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:8667
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr "daerah '%s' memiliki tipe NOBITS - isinya tidak dapat diharapkan.\n"
+
+#: readelf.c:8702
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "Daerah debug tidak dikenal: %s\n"
+
+#: readelf.c:8730
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr "Daerah '%s' tidak didump karena ini tidak ada!\n"
+
+#: readelf.c:8771
+#, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "Daerah %d tidak didump karena ini tidak ada!\n"
+
+#: readelf.c:9285
+msgid "attributes"
+msgstr "atribut"
+
+#: readelf.c:9306
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "ERROR: Panjang daerah buruk (%d > %d)\n"
+
+#: readelf.c:9337
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "ERROR: panjang subsection buruk (%d > %d)\n"
+
+#: readelf.c:9396
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "Format '%c' tidak diketahui\n"
+
+#: readelf.c:9549 readelf.c:10065
+msgid "liblist"
+msgstr "liblist"
+
+#: readelf.c:9636
+msgid "options"
+msgstr "pilihan"
+
+#: readelf.c:9666
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Daerah '%s' berisi %d masukan:\n"
+
+#: readelf.c:9827
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr "daftar konflik ditemukan tanpa sebuah tabel simbol dinamis\n"
+
+#: readelf.c:9843 readelf.c:9857
+msgid "conflict"
+msgstr "konflik"
+
+#: readelf.c:9867
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Daerah '.conflict' berisi %lu masukan:\n"
+
+#: readelf.c:9869
+msgid " Num: Index Value Name"
+msgstr " Num: Indeks Nilai Nama"
+
+#: readelf.c:9901
+msgid "GOT"
+msgstr "GOT"
+
+#: readelf.c:9902
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+"\n"
+"GOT Utama:\n"
+
+#: readelf.c:9903
+#, c-format
+msgid " Canonical gp value: "
+msgstr " Kanonikal nilai gp: "
+
+#: readelf.c:9907 readelf.c:9998
+#, c-format
+msgid " Reserved entries:\n"
+msgstr " Masukan terpesan:\n"
+
+#: readelf.c:9908
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr " %*s %10s %*s Tujuan\n"
+
+#: readelf.c:9924
+#, c-format
+msgid " Local entries:\n"
+msgstr " Masukan lokal:\n"
+
+#: readelf.c:9925
+#, c-format
+msgid " %*s %10s %*s\n"
+msgstr " %*s %10s %*s\n"
+
+#: readelf.c:9940
+#, c-format
+msgid " Global entries:\n"
+msgstr " Masukan global:\n"
+
+#: readelf.c:9941
+#, c-format
+msgid " %*s %10s %*s %*s %-7s %3s %s\n"
+msgstr " %*s %10s %*s %*s %-7s %3s %s\n"
+
+#: readelf.c:9996
+msgid "PLT GOT"
+msgstr "PLT GOT"
+
+#: readelf.c:9997
+#, c-format
+msgid ""
+"\n"
+"PLT GOT:\n"
+"\n"
+msgstr ""
+"\n"
+"PLT GOT:\n"
+"\n"
+
+#: readelf.c:9999
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr " %*s %*s Tujuan\n"
+
+#: readelf.c:10007
+#, c-format
+msgid " Entries:\n"
+msgstr " Masukan:\n"
+
+#: readelf.c:10008
+#, c-format
+msgid " %*s %*s %*s %-7s %3s %s\n"
+msgstr " %*s %*s %*s %-7s %3s %s\n"
+
+#: readelf.c:10072
+msgid "liblist string table"
+msgstr "liblist tabel string"
+
+#: readelf.c:10082
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Daftar perpustakaan daerah '%s' berisi %lu masukan:\n"
+
+#: readelf.c:10135
+msgid "NT_AUXV (auxiliary vector)"
+msgstr "NT_AUXV (auxiliary vector)"
+
+#: readelf.c:10137
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (prstatus struktur)"
+
+#: readelf.c:10139
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (register bilangan pecahan)"
+
+#: readelf.c:10141
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (prpsinfo struktur)"
+
+#: readelf.c:10143
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (struktur tugas)"
+
+#: readelf.c:10145
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (struktur user_xfpregs)"
+
+#: readelf.c:10147
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr "NT_PPC_VMX (register ppc Altivec)"
+
+#: readelf.c:10149
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr "NT_PPC_VSX (register ppc VSX)"
+
+#: readelf.c:10151
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (struktur pstatus)"
+
+#: readelf.c:10153
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (register bilangan pecahan)"
+
+#: readelf.c:10155
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (struktur psinfo)"
+
+#: readelf.c:10157
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (struktur lwpstatus_t)"
+
+#: readelf.c:10159
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (struktur lwpsinfo_t)"
+
+#: readelf.c:10161
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (struktur win32_pstatus)"
+
+#: readelf.c:10169
+msgid "NT_VERSION (version)"
+msgstr "NT_VERSION (versi)"
+
+#: readelf.c:10171
+msgid "NT_ARCH (architecture)"
+msgstr "NT_ARCH (arsitektur)"
+
+#: readelf.c:10176 readelf.c:10199 readelf.c:10221
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "Tipe catatan tidak dikenal: (0x%08x)"
+
+#: readelf.c:10188
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr "NT_GNU_ABI_TAG (Tanda versi ABI)"
+
+#: readelf.c:10190
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+
+#: readelf.c:10192
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr "NT_GNU_BUILD_ID (unik ID pembuatan bitstring)"
+
+#: readelf.c:10194
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr "NT_GNU_GOLD_VERSION (versi emas)"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:10211
+msgid "NetBSD procinfo structure"
+msgstr "NetBSD struktur procinfo"
+
+#: readelf.c:10238 readelf.c:10252
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (struktur reg)"
+
+#: readelf.c:10240 readelf.c:10254
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (struktur fpreg)"
+
+#: readelf.c:10260
+#, c-format
+msgid "PT_FIRSTMACH+%d"
+msgstr "PT_FIRSTMACH+%d"
+
+#: readelf.c:10316
+msgid "notes"
+msgstr "catatan"
+
+#: readelf.c:10322
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"Catatan di ofset 0x%08lx dengan panjang 0x%08lx:\n"
+
+#: readelf.c:10324
+#, c-format
+msgid " Owner\t\tData size\tDescription\n"
+msgstr " Pemilik\t\tBesar Data\tDeskripsi\n"
+
+#: readelf.c:10343
+#, c-format
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "catatan terkorupsi ditemukan di ofset %lx kedalam core notes\n"
+
+#: readelf.c:10345
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " tipe: %lx, namesize: %08lx, descsize: %08lx\n"
+
+#: readelf.c:10443
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr "Tidak ada catatan segmen hadir dalam berkas inti.\n"
+
+#: readelf.c:10527
+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"
+msgstr ""
+"Instance ini dari readelf telah dibuat tanpa dukungan untuk\n"
+"tipe data 64 bit dan jadi ini tidak dapat membaca berkas ELF 64 bit.\n"
+
+#: readelf.c:10574
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s: Gagal untuk membaca berkas header\n"
+
+#: readelf.c:10587
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Berkas: %s\n"
+
+#: readelf.c:10802
+#, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr "%s: gagal untuk mencari header archive pertama\n"
+
+#: readelf.c:10811 readelf.c:11076 readelf.c:11246
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: gagal untuk membaca header archive\n"
+
+#: readelf.c:10836
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr "%s: indeks archive kosong\n"
+
+#: readelf.c:10844 readelf.c:10867
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: gagal untuk membaca archive indeks\n"
+
+#: readelf.c:10853
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr "%s: archive indeks seharusnya memiliki %ld masukan, tetapi ukuran dalam header terlalu kecil\n"
+
+#: readelf.c:10860
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr "Kehabisan memeri ketika mencoba membaca indeks simbol archive\n"
+
+#: readelf.c:10877
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr "Kehabisan memori ketika mencoba mengubak indeks simbol archive\n"
+
+#: readelf.c:10889
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr "%s: archive memiliki sebuah indeks tetapi bukan simbol\n"
+
+#: readelf.c:10896
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr "Kehabisan memori ketika mencoba untuk membaca indeks tabel simbol archive\n"
+
+#: readelf.c:10902
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr "%s: gagal untuk membaca indeks simbol tabel archive\n"
+
+#: readelf.c:10910
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr "%s: gagal untuk melewati simbol tabel archive\n"
+
+#: readelf.c:10921
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr "%s: gagal untuk membaca archive header dari indeks archive berikut\n"
+
+#: readelf.c:10926
+#, c-format
+msgid "%s has no archive index\n"
+msgstr "%s tidak memiliki indeks archive\n"
+
+#: readelf.c:10937
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr "Kehabisan memori membaca nama simbol panjang dalam archive\n"
+
+#: readelf.c:10945
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr "%s: gagal untuk membaca nama simbol panjang tabel string\n"
+
+#: readelf.c:11070
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr "%s: gagal untuk mencari nama berkas selanjutnya\n"
+
+#: readelf.c:11081 readelf.c:11252
+#, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr "%s tidak menemukan header archive yang valid\n"
+
+#: readelf.c:11162
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr "%s: tidak dapat mendeump indeks sebagai kosong telah ditemukan\n"
+
+#: readelf.c:11168
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr "Indeks dari archive %s: (%ld masukan, 0x%lx bytes dalam tabel simbol)\n"
+
+#: readelf.c:11186
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr "Binari %s berisi:\n"
+
+#: readelf.c:11194
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr "%s: akhir dari simbel tabel dicapai sebelum akhir dari indeks\n"
+
+#: readelf.c:11205
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr "%s: simbol tetap berada dalam tabel simbol indeks, tetapi tanpa masukan yang berhubunga dalam tabel indeks\n"
+
+#: readelf.c:11210
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr "%s: gagal untuk seek back ke awal dari berkas objek dalam archive\n"
+
+#: readelf.c:11238
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s: gagal untuk mencari header archive selanjutnya\n"
+
+#: readelf.c:11266 readelf.c:11275
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: nama berkas archive buruk\n"
+
+#: readelf.c:11294 readelf.c:11370
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr "Berkas masukan '%s' tidak dapat dibaca.\n"
+
+#: readelf.c:11316
+#, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr "%s: gagal untuk mencari anggota archive.\n"
+
+#: readelf.c:11354
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "'%s': Tidak ada berkas seperti itu\n"
+
+#: readelf.c:11356
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr "Tidak dapat menemukan '%s'. Pesan error sistem: %s\n"
+
+#: readelf.c:11363
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "'%s' bukan sebuah berkas biasa\n"
+
+#: readelf.c:11376
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr "%s: Gagal membaca berkas nomor magik\n"
+
+#: readelf.c:11388
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr "Berkas %s bukan sebuah archive jadi indeksnya tidak dapat ditampilkan.\n"
+
+#: rename.c:124
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s: tidak dapat menset waktu: %s"
+
+#. We have to clean up here.
+#: rename.c:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr "tidak dapat mengubah nama '%s'; alasan: %s"
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr "tidak dapat menyalin berkas '%s'; alasan: %s"
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: tidak cukup data binari"
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr "kosong diakhir string unicode"
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr "ID sumber daya"
+
+#: resbin.c:208
+msgid "cursor"
+msgstr "kursor"
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr "menu header"
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr "menuex header"
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr "menuex ofset"
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "versi menu %d tidak didukung"
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr "menuitem header"
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr "menuitem"
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr "header dialog"
+
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "versi %d DIALOGEX tidak terduga"
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr "dialog ukuran titik font"
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr "informasi font dialogex"
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr "kontrol dialog"
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr "kontrol dialogex"
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr "akhir kontrol dialog"
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr "kontrol data dialog"
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr "panjang string stringtabel"
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr "stringtabel string"
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr "fontdir header"
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr "fontdir"
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr "fontdir nama perangkat"
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr "fontdir nama muka"
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr "akselerator"
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr "grup kursor header"
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "tipe kursor %d grup tidak terduga"
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr "grup kursor"
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr "grup ikon header"
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "tipe ikon grup %d tidak terduga"
+
+#: resbin.c:871
+msgid "group icon"
+msgstr "grup ikon"
+
+#: resbin.c:935 resbin.c:1151
+msgid "unexpected version string"
+msgstr "string versi tidak terduga"
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "panjang versi %d tidak cocok dengan panjang sumber daya %lu"
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr "tipe versi %d tidak terduga"
+
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr "panjang informasi versi %ld tetap tidak terduga"
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr "info versi tetap"
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "tanda tangan versi %lu tetap tidak terduga"
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "info versi %lu versi tetap tidak terduga"
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr "info var versi"
+
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr "nilai panjang %ld stringfileinfo tidak terduga"
+
+#: resbin.c:1049
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr "nilai panjang %ld versi stringtabel tidak terduga"
+
+#: resbin.c:1083
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr "versi panjang string %ld != %ld + %ld tidak terduga"
+
+#: resbin.c:1094
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr "versi panjang string %ld < %ld tidak terduga"
+
+#: resbin.c:1111
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr "nilai panjang varfileinfo %ld tidak terduga"
+
+#: resbin.c:1130
+msgid "version varfileinfo"
+msgstr "versi varfileinfo"
+
+#: resbin.c:1145
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr "nilai panjang versi %ld tidak terduga"
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr "nama berkas dibutuhkan untuk masukan COFF"
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: daerah tidak ada sumber daya"
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: alamat diluar dari ikatan"
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "direktori"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "nama dari masukan direktori"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "nama masukan direktori"
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "nama subdirektori"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "nama sumber daya"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "ID masukan direktori"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "ID subdirektori"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "ID sumber daya"
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr "tipe sumber daya tidak dikenal"
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr "masukan data"
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr "sumber daya data"
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr "ukuran data sumber daya"
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr "nama berkas dibutuhkan untuk output COFF"
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "tidak dapat memperoleh tipe relokasi BFD_RELOC_RVA"
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "tida dapat membuka berkas sementara `%s': %s"
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "tidak dapat meredirek stdout: `%s': %s"
+
+#: resrc.c:284
+#, c-format
+msgid "%s %s: %s"
+msgstr "%s %s: %s"
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "tidak dapat menjalankan `%s': %s"
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "Menggunakan berkas sementara `%s' untuk membaca keluaran preprosesor\n"
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "tidak dapat popen `%s': %s"
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "Menggunakan popen untuk membaca keluaran preprosesor\n"
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "Mencoba `%s'\n"
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr "Menggunakan `%s'\n"
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr "preprosesing gagal."
+
+#: resrc.c:631
+#, c-format
+msgid "%s:%d: %s\n"
+msgstr "%s:%d: %s\n"
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: tidak terduga EOF"
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: membaca dari %lu dikembalikan %lu"
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "stat gagal dalam berkas bitmap `%s': %s"
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "berkas kursor `%s' tidak berisi data kursor"
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: fseek ke %lu gagal: %s"
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr "help ID membutuhkan DIALOGEX"
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr "kontrol data membutuhkan DIALOGEX"
+
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "stat gagal dalam berkas font `%s': %s"
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "berkas ikon `%s' tidak berisi data ikon"
+
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "stat gagal di berkas `%s': %s"
+
+#: resrc.c:1940
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "tidak dapat membuka `%s' untuk keluaran: %s"
+
+#: size.c:79
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr " Menampilkan ukuran dari daerah didalam berkas binari\n"
+
+#: size.c:80
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr " Jika tidak ada berkas masukan yang dispesifikasikan, a.out diasumsikan\n"
+
+#: size.c:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+" Pilihan adalah:\n"
+" -A|-B --format={sysv|berkeley} Pilih gaya keluaran (baku adalah %s)\n"
+" -o|-d|-x --radix={8|10|16} Tampilkan nomor dalam oktal, desimal atau heksadesimal\n"
+" -t --totals Tampilkan jumlah total (Berkeley saja)\n"
+" --common Tampilkan jumlah total untuk *COM* syms\n"
+" --target=<bfdname> Set format berkas binari\n"
+" @<berkas> Baca pilihan dari <berkas>\n"
+" -h --help Tampilkan informasi ini\n"
+" -v --version Tampilkan versi aplikasi\n"
+"\n"
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "argumen tidak valid ke --format: %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Radix tidak valid: %s\n"
+
+#: srconv.c:1731
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "Mengubah sebuah berkas objek COFF kedalam sebuah berkas objek SYSROFF\n"
+
+#: srconv.c:1732
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+" Pilihan adalah:\n"
+" -q --quick (Kadaluarsaa - diabaikan)\n"
+" -n --noprescan Jangan lakukan sebuah scan untuk mengubah common menjadi def\n"
+" -d --debug Tampilkan informasi mengenai apa yang sedang dikerjakan\n"
+" @<berkas> Baca pilihan dari <berkas>\n"
+" -h --help Tampilkan informasi ini\n"
+" -v --version Tampilkan nomor versi aplikasi\n"
+
+#: srconv.c:1878
+#, c-format
+msgid "unable to open output file %s"
+msgstr "tidak dapat membuka berkas keluaran %s"
+
+#: stabs.c:328 stabs.c:1726
+msgid "numeric overflow"
+msgstr "numerik overflow"
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "Bad stab: %s\n"
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Peringatan: %s: %s\n"
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC tidak dalam fungsi\n"
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "Terlalu banyak N_RBRAC\n"
+
+#: stabs.c:736
+msgid "unknown C++ encoded name"
+msgstr "nama C++ terenkode tidak dikenal"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1271
+msgid "unrecognized cross reference type"
+msgstr "tipe referensi silang tidak dikenal"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1818
+msgid "missing index type"
+msgstr "hilang tipe indeks"
+
+#: stabs.c:2134
+msgid "unknown virtual character for baseclass"
+msgstr "karakter maya untuk baseclass tidak dikenal"
+
+#: stabs.c:2152
+msgid "unknown visibility character for baseclass"
+msgstr "karakter visibel untuk baseclass tidak dikenal"
+
+#: stabs.c:2338
+msgid "unnamed $vb type"
+msgstr "unnamed tipe $vb"
+
+#: stabs.c:2344
+msgid "unrecognized C++ abbreviation"
+msgstr "kependekan C++ tidak dikenal"
+
+#: stabs.c:2420
+msgid "unknown visibility character for field"
+msgstr "karakter visibel untuk field tidak dikenal"
+
+#: stabs.c:2672
+msgid "const/volatile indicator missing"
+msgstr "const/volatile indikator hilang"
+
+#: stabs.c:2908
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "Tidak ada mangling untuk \"%s\"\n"
+
+#: stabs.c:3208
+msgid "Undefined N_EXCL"
+msgstr "Tidak terdefinisi N_EXCL"
+
+#: stabs.c:3288
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "Tipe nomor berkas %d diluar dari jangkauan\n"
+
+#: stabs.c:3293
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Tipe nomor indeks %d diluar dari jangkauan\n"
+
+#: stabs.c:3372
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "Tipe XCOFF %d tidak dikenal\n"
+
+#: stabs.c:3664
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "nama mangled `%s' buruk\n"
+
+#: stabs.c:3759
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "tidak ada tipe argumen dalam string mangle\n"
+
+#: stabs.c:5113
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "Nama demangle bukan sebuah fungsi\n"
+
+#: stabs.c:5155
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "Tipe tidak terduga dalam daftar argumen v3 demangling\n"
+
+#: stabs.c:5222
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "Komponen %d demangle tidak dikenal\n"
+
+#: stabs.c:5274
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "Gagal untuk menampilkan template demangle\n"
+
+#: stabs.c:5354
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "Tidak dapat memperoleh demangle tipe builtin\n"
+
+#: stabs.c:5403
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "varags demangled tidak terduga\n"
+
+#: stabs.c:5410
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "tipe builting demangle tidak dikenal\n"
+
+#: strings.c:201 strings.c:260
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "argumen integer tidak valid %s"
+
+#: strings.c:263
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr "panjang string minimal %d tidak valid"
+
+#: strings.c:660
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr " Menampilkan string yang dapat dicetak dalam [berkas] (stdin secara baku)\n"
+
+#: strings.c:661
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+" Pilihan adalah:\n"
+" -a --all Periksa seluruh berkas, tidak hanya daerah data\n"
+" -f --print-file-name Tampilkan nama dari berkas sebelum setiap string\n"
+" -n --bytes=[nomor] Lokasikan dan tampilkan urutan NUL-terakhiri apapun dari di\n"
+" -<nomor> akhir [nomor] karakter (baku 4).\n"
+" -t --radix={o,d,x} Tampilkan lokasi dari string dalam basis 8, 10 atau 16\n"
+" -o Sebuah alias untuk --radix=o\n"
+" -T --target=<BFDNAME> Spesifikasikan format berkas binari\n"
+" -e --encoding={s,S,b,l,B,L} Pilih ukuran karakter dan tipe endian:\n"
+" s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+" @<berkas> Baca pilihan dari <berkas>\n"
+" -h --help Tampilkan informasi ini\n"
+" -v -V --version Tampilkan nomor versi aplikasi\n"
+
+#: sysdump.c:647
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "Menampilkan sebuah interpretasi mudah dibaca dari sebuah berkas objek SYSROFF\n"
+
+#: sysdump.c:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Pilihan adalah:\n"
+" -h --help Tampilkan informasi ini\n"
+" -v --version Tampilkan nomor versi aplikasi\n"
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "tidak dapat membuka berkas masukan %s"
+
+#: version.c:35
+#, c-format
+msgid "Copyright 2009 Free Software Foundation, Inc.\n"
+msgstr "Hak Cipta 2009 Free Software Foundation, Inc.\n"
+
+#: version.c:36
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"Aplikasi ini adalah software bebas; anda boleh meredistribusikannya dibawah ijin dari\n"
+"Lisensi GNU General Public versi 3 atau (menurut pilihan anda) mungkin versi selanjutnya.\n"
+"Aplikasi ini tidak memiliki garansi apapun.\n"
+
+#: windmc.c:195
+#, c-format
+msgid "can't create %s file ,%s' for output.\n"
+msgstr "tidak dapat membuat berkas %s, %s' untuk keluaran.\n"
+
+#: windmc.c:203
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr "Penggunaan: %s [pilihan] [berkas-masukan]\n"
+
+#: windmc.c:205
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianess.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+" Pilihan adalah:\n"
+" -a --ascii_in Baca berkas masukan sebagai berkas ASCII\n"
+" -A --ascii_out Tulis pesan binari sebagai ASCII\n"
+" -b --binprefix nama berkas .bin diawali sebagai nama berkas .mc supaya unik.\n"
+" -c --customflag Set tanda kustom untuk pesan\n"
+" -C --codepage_in=<val> Set kode halaman ketika membaca mc berkas teks\n"
+" -d --decimal_values Tampilkan nilai ke berkas teks desimal\n"
+" -e --extension=<extension> Set header extension digunakan dalam menekspor berkas header\n"
+" -F --target <target> Spesifikasikan target keluaran untuk tipe endian.\n"
+" -h --headerdir=<direktori> Set direktori ekspor untuk header\n"
+" -u --unicode_in Baca berkas masukan sebagai berkas UTF16\n"
+" -U --unicode_out Tulis pesan binari sebagai UTF16\n"
+" -m --maxlength=<nilai> Set maksimal panjang pesan yang diijinkan\n"
+" -n --nullterminate Otomatis tambahkan sebuah nol ke string\n"
+" -o --hresult_use Gunakan definisi HRESULT daripada kode status definisi\n"
+" -O --codepage_out=<nilai> Set kode halaman digunakn untuk menulis berkas teks\n"
+" -r --rcdir=<direktori> Set direktori ekspor untuk berkas rc\n"
+" -x --xdbg=<direktori> Dimana untuk membuat berkas .dbg C include\n"
+" yang memetakan pesan ID ke nama simboliknya.\n"
+
+#: windmc.c:225
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+" -H --help Tampilkan pesan bantuan ini\n"
+" -v --verbose Verbose - Beritahu anda apa yang sedang dikerjakan\n"
+" -V --version Tampilkan informasi versi\n"
+
+#: windmc.c:296 windres.c:415
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: peringatan: "
+
+#: windmc.c:297
+#, c-format
+msgid "A codepage was specified switch ,%s' and UTF16.\n"
+msgstr "Sebuah kode halaman telah dispesifikasikan perpindahan ,%s' dan UTF16.\n"
+
+#: windmc.c:298
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr "\tkonfigurasi kode halaman diabaikan.\n"
+
+#: windmc.c:342
+msgid "try to add a ill language."
+msgstr "coba tambahkan sebuah bahasa sakit."
+
+#: windmc.c:1151
+#, c-format
+msgid "unable to open file ,%s' for input.\n"
+msgstr "tidak dapat membuka berkas, %s' untuk masukan.\n"
+
+#: windmc.c:1159
+#, c-format
+msgid "unable to read contents of %s"
+msgstr "tidak dapat membaca isi dari %s"
+
+#: windmc.c:1171
+msgid "input file does not seems to be UFT16.\n"
+msgstr "berkas masukan tidak dapat terlihat sebagai UTF16.\n"
+
+#: windres.c:220
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "tidak dapat membuka %s `%s': %s"
+
+#: windres.c:394
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": diduga sebuah direktori\n"
+
+#: windres.c:406
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": diduga sebuah daun\n"
+
+#: windres.c:417
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": nilai terduplikasi\n"
+
+#: windres.c:567
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "tipe format `%s' tidak diketahui"
+
+#: windres.c:568
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: format yang didukung:"
+
+#. Otherwise, we give up.
+#: windres.c:651
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "tidak dapat menentukan tipe dari berkas `%s'; gunakan pilihan -J"
+
+#: windres.c:663
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Penggunaan: %s [pilihan] [berkas-masukan] [berkas-keluaran]\n"
+
+#: windres.c:665
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+" Pilihan adalah:\n"
+" -i --input=<berkas> Nama berkas masukan\n"
+" -o --output=<berkas> Nama berkas keluaran\n"
+" -J --input-format=<format> Spesifikasikan format masukan\n"
+" -O --output-format=<format> Spesifikasikan format keluaran\n"
+" -F --target=<target> Spesifikasikan target COFF\n"
+" --preprocessor=<program> Aplikasi yang digunakan untuk memproses berkas rc\n"
+" -I --include-dir=<dir> Masukan direktori ketika memproses berkas rc\n"
+" -D --define <sym>[=<val>] Definisikan SYM ketika memproses berkas rc\n"
+" -U --undefine <sym> Undefine SYM ketika memproses berkas rc\n"
+" -v --verbose Verbose - beritahu anda apa yang sedang dikerjakan\n"
+" -c --codepage=<codepage> Spesifikasikan kode halaman baku\n"
+" -l --language=<val> Set bahasa ketika membaca berkas rc\n"
+" --use-temp-file Gunakan sebuah berkas sementara daripada popen untuk membaca\n"
+" keluaran preprosesor\n"
+" --no-use-temp-file Use popen (baku)\n"
+
+#: windres.c:682
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug Aktifkan parse debugging\n"
+
+#: windres.c:685
+#, 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 Mengabaikan untuk kompabilitas dengan rc\n"
+" @<berkas> Baca pilihan dari <berkas>\n"
+" -h --help Tampilkan pesan bantuan ini\n"
+" -V --version Tampilkan informasi versi\n"
+
+#: windres.c:690
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"FORMAR adalah salah satu dari rc, res, atau coff,, dan dideduksi dari nama berkas\n"
+"ekstensi jika tidak dispesifikasikan. Sebuah nama berkas tunggal adalah sebuah berkas masukan.\n"
+"Tidak ada berkas-masukan adalah stdin, default rc. Tidak ada berkas-keluaraan adalah stdout, default rc.\n"
+
+#: windres.c:848
+msgid "invalid codepage specified.\n"
+msgstr "kode halaman yang dispesifikasikan tidak valid.\n"
+
+#: windres.c:863
+msgid "invalid option -f\n"
+msgstr "pilihan -f tidak valid\n"
+
+#: windres.c:868
+msgid "No filename following the -fo option.\n"
+msgstr "Tidak ada nama berkas yang mengikuti pilihan -fo.\n"
+
+#: windres.c:927
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr "Pilihan -I kadaluarsa untuk konfigurasi format masukan, tolong gunakan -J lebih baik.\n"
+
+#: windres.c:1037
+msgid "no resources"
+msgstr "tidak ada sumber daya"
+
+#: wrstabs.c:353 wrstabs.c:1916
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup gagal: %s"
+
+#: wrstabs.c:636
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: ukuran %u buruk"
+
+#: wrstabs.c:1394
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: peringatan: ukuran tidak diketahui untuk field `%s' dalam struktur"
+
+#~ msgid ""
+#~ "The section %s contains:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Daerah %s berisi:\n"
+#~ "\n"
+
+#~ msgid "Range lists in .debug_info section aren't in ascending order!\n"
+#~ msgstr "Daftar jangkauan dalam daerah .debug_info tidak dalam urutan meningkat!\n"
+
+#~ msgid "The section %s contains:\n"
+#~ msgstr "Daerah %s berisi:\n"
+
+#~ msgid "%s: failed to read archive header following long symbol names\n"
+#~ msgstr "%s: gagal untuk membaca archive header dari nama simbol panjang berikut\n"
+
+#~ msgid "%s: failed to read file name\n"
+#~ msgstr "%s: gagal untuk membaca nama berkas\n"
+
+#~ msgid "%s: invalid archive string table offset %lu\n"
+#~ msgstr "%s: ofset tabel string archive tidak valid %lu\n"
diff --git a/binutils-2.24/binutils/po/it.gmo b/binutils-2.24/binutils/po/it.gmo
new file mode 100644
index 00000000..6e01870e
--- /dev/null
+++ b/binutils-2.24/binutils/po/it.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/it.po b/binutils-2.24/binutils/po/it.po
new file mode 100644
index 00000000..414ca790
--- /dev/null
+++ b/binutils-2.24/binutils/po/it.po
@@ -0,0 +1,8280 @@
+# Italian translation for binutils.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Sergio Zanchetta <primes2h@ubuntu.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils-2.21.53\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2011-06-02 14:35+0100\n"
+"PO-Revision-Date: 2012-04-15 00:32+0200\n"
+"Last-Translator: Sergio Zanchetta <primes2h@ubuntu.com>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural= (n != 1)\n"
+
+#: addr2line.c:81
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Uso: %s [opzioni] [indirizzi]\n"
+
+#: addr2line.c:82
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " Converte gli indirizzi in coppie numero riga/nome file.\n"
+
+#: addr2line.c:83
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Se sulla riga di comando non sono specificati indirizzi, verranno letti da stdin\n"
+
+#: addr2line.c:84
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -a --addresses Show addresses\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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Make the output easier to read for humans\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Le opzioni sono:\n"
+" @<file> Legge le opzioni dal <file>\n"
+" -a --addresses Mostra gli indirizzi\n"
+" -b --target=<nomebfd> Imposta il formato del file binario\n"
+" -e --exe=<eseguibile> Imposta il nome del file di input (predefinito è a.out)\n"
+" -i --inlines Espande le funzioni inline\n"
+" -j --section=<nome> Legge le posizioni relative alla sezione invece degli indirizzi\n"
+" -p --pretty-print Rende l'output di più facile lettura\n"
+" -s --basenames Rimuove i nomi delle directory\n"
+" -f --functions Mostra i nomi della funzioni\n"
+" -C --demangle[=stile] Decodifica i nomi delle funzioni\n"
+" -h --help Visualizza questo aiuto\n"
+" -v --version Visualizza la versione del programma\n"
+"\n"
+
+#: addr2line.c:101 ar.c:304 ar.c:333 coffdump.c:470 dlltool.c:3938
+#: dllwrap.c:524 elfedit.c:650 nlmconv.c:1114 objcopy.c:576 objcopy.c:611
+#: readelf.c:3174 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
+#: windmc.c:228 windres.c:695
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "Segnalare i bug a %s\n"
+
+#: addr2line.c:271
+#, c-format
+msgid " at "
+msgstr " alla "
+
+#: addr2line.c:296
+#, c-format
+msgid " (inlined by) "
+msgstr " (posta inline da) "
+
+#: addr2line.c:329
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: impossibile ottenere indirizzi dall'archivio"
+
+#: addr2line.c:346
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr "%s: impossibile trovare la sezione %s"
+
+#: addr2line.c:415 nm.c:1566 objdump.c:3423
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "stile di decodifica \"%s\" sconosciuto"
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "nessuna voce %s nell'archivio\n"
+
+#: ar.c:254
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...\n"
+msgstr "Uso: %s [opzioni di emulazione] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <nome>] [nome-membro] [numero] file-archivio file...\n"
+
+#: ar.c:260
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] [count] archive-file file...\n"
+msgstr "Uso: %s [opzioni di emulazione] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [nome-membro] [numero] file-archivio file...\n"
+
+#: ar.c:266
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<script-mri]\n"
+
+#: ar.c:267
+#, c-format
+msgid " commands:\n"
+msgstr " comandi:\n"
+
+#: ar.c:268
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - Elimina i file dall'archivio\n"
+
+#: ar.c:269
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - Sposta i file nell'archivio\n"
+
+#: ar.c:270
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - Stampa i file trovati nell'archivio\n"
+
+#: ar.c:271
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - Aggiunge rapidamente i file all'archivio\n"
+
+#: ar.c:272
+#, c-format
+msgid " r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
+msgstr " r[ab][f][u] - Sostituisce i file esistenti o ne aggiunge di nuovi dentro all'archivio\n"
+
+#: ar.c:273
+#, c-format
+msgid " s - act as ranlib\n"
+msgstr " s - Agisce come ranlib\n"
+
+#: ar.c:274
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - Visualizza il contenuto dell'archivio\n"
+
+#: ar.c:275
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - Estrae i file dall'archivio\n"
+
+#: ar.c:276
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " modificatori specifici del comando:\n"
+
+#: ar.c:277
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - Posiziona i file dopo [nome-membro]\n"
+
+#: ar.c:278
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - Posiziona i file prima di [nome-membro] (come [i])\n"
+
+#: ar.c:279
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr " [D] - Usa zero per le marcature temporali e gli uid/gid\n"
+
+#: ar.c:280
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - Usa la richiesta [numero] del nome\n"
+
+#: ar.c:281
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - Tronca i nomi dei file inseriti\n"
+
+#: ar.c:282
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - Usa i nomi di percorso completi quando ricerca corrispondenze\n"
+
+#: ar.c:283
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - Mantiene le date originali\n"
+
+#: ar.c:284
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - Sostituisce solo i file che sono più recenti di quelli attualmente presenti nell'archivio\n"
+
+#: ar.c:285
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " modificatori generici:\n"
+
+#: ar.c:286
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - Non avverte in caso di creazione della libreria\n"
+
+#: ar.c:287
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - Crea un indice di archivio (cfr. ranlib)\n"
+
+#: ar.c:288
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - Non crea una tabella dei simboli\n"
+
+#: ar.c:289
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr " [T] - Crea un archivio leggero\n"
+
+#: ar.c:290
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - Modo prolisso\n"
+
+#: ar.c:291
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - Visualizza il numero di versione\n"
+
+#: ar.c:292
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr " @<file> - Legge le opzioni dal <file>\n"
+
+#: ar.c:293
+#, c-format
+msgid " --target=BFDNAME - specify the target object format as BFDNAME\n"
+msgstr " --target=NOMEBFD - Specifica il formato dell'oggetto obiettivo come NOMEBFD\n"
+
+#: ar.c:295
+#, c-format
+msgid " optional:\n"
+msgstr " opzionale:\n"
+
+#: ar.c:296
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr " --plugin <p> - Carica il plugin specificato\n"
+
+#: ar.c:317
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Uso: %s [opzioni] archivio\n"
+
+#: ar.c:318
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " Genera un indice per velocizzare l'accesso agli archivi\n"
+
+#: ar.c:319
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+" Le opzioni sono:\n"
+" @<file> Legge le opzioni da <file>\n"
+
+#: ar.c:322
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr " --plugin <nome> Carica il plugin specificato\n"
+
+#: ar.c:325
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+" -t Aggiorna la marcatura temporale della mappa simboli dell'archivio\n"
+" -h --help Stampa questo messaggio di aiuto\n"
+" -v --version Stampa le informazioni sulla versione\n"
+
+#: ar.c:449
+msgid "two different operation options specified"
+msgstr "specificate due diverse opzioni per l'operazione"
+
+#: ar.c:538 nm.c:1639
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr "questo programma è stato creato senza il supporto per i plugin\n"
+
+#: ar.c:693
+msgid "no operation specified"
+msgstr "nessuna operazione specificata"
+
+#: ar.c:696
+msgid "`u' is only meaningful with the `r' option."
+msgstr "\"u\" ha senso solo insieme all'opzione \"r\"."
+
+#: ar.c:699
+msgid "`u' is not meaningful with the `D' option."
+msgstr "\"u\" non ha senso con l'opzione \"D\"."
+
+#: ar.c:707
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "\"N\" ha senso solo con le opzioni \"x\" e \"d\"."
+
+#: ar.c:710
+msgid "Value for `N' must be positive."
+msgstr "Il valore per \"N\" deve essere positivo."
+
+#: ar.c:724
+msgid "`x' cannot be used on thin archives."
+msgstr "\"x\" non può essere usato su archivi leggeri."
+
+#: ar.c:765
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "errore interno, questa opzione non è implementata"
+
+#: ar.c:834
+#, c-format
+msgid "creating %s"
+msgstr "creazione di %s"
+
+#: ar.c:883 ar.c:937 ar.c:1266 objcopy.c:2055
+#, c-format
+msgid "internal stat error on %s"
+msgstr "errore interno di stat su %s"
+
+#: ar.c:902 ar.c:970
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s non è un archivio valido"
+
+#: ar.c:1171
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "Nessun membro chiamato \"%s\"\n"
+
+#: ar.c:1221
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "nessuna voce %s nell'archivio %s."
+
+#: ar.c:1360
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: nessuna mappa di archivio da aggiornare"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "Nessuna voce %s nell'archivio.\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "Impossibile aprire il file %s\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: impossibile aprire l'archivio di output %s\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: impossibile aprire l'archivio di input %s\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: il file %s non è un archivio\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: non è ancora stato specificato alcun archivio di output\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: nessun archivio di output aperto\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: impossibile aprire il file %s\n"
+
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: impossibile trovare il file %s dei moduli\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "L'archivio attualmente aperto è %s\n"
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: nessun archivio aperto\n"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " Nessuna opzione specifica per l'emulazione\n"
+
+#. Macros for common output.
+#: binemul.h:49
+#, c-format
+msgid " emulation options: \n"
+msgstr " opzioni di emulazione: \n"
+
+#: bucomm.c:163
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "impossibile impostare l'obiettivo predefinito di BFD a \"%s\": %s"
+
+#: bucomm.c:175
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: formati corrispondenti:"
+
+#: bucomm.c:190
+#, c-format
+msgid "Supported targets:"
+msgstr "Obiettivi supportati:"
+
+#: bucomm.c:192
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: obiettivi supportati:"
+
+#: bucomm.c:210
+#, c-format
+msgid "Supported architectures:"
+msgstr "Architetture supportate:"
+
+#: bucomm.c:212
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: architetture supportate:"
+
+#: bucomm.c:407
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "Versione dell'intestazione BFD del file %s\n"
+
+#: bucomm.c:559
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: numero errato: %s"
+
+#: bucomm.c:576 strings.c:409
+#, c-format
+msgid "'%s': No such file"
+msgstr "\"%s\": questo file non esiste"
+
+#: bucomm.c:578 strings.c:411
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "Attenzione: impossibile localizzare \"%s\". Motivo: %s"
+
+#: bucomm.c:582
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "Attenzione: \"%s\" non è un file ordinario"
+
+#: bucomm.c:584
+#, c-format
+msgid "Warning: '%s' has negative size, probably it is too large"
+msgstr "Attenzione: \"%s\" ha dimensione negativa, probabilmente è troppo grande"
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr "#righe %d "
+
+#: coffdump.c:461 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Uso: %s [opzioni] file-input\n"
+
+#: coffdump.c:462
+#, c-format
+msgid " Print a human readable interpretation of a COFF object file\n"
+msgstr " Stampa una interpretazione leggibile di un file oggetto COFF\n"
+
+#: coffdump.c:463
+#, 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 ""
+" Le opzioni sono:\n"
+" @<file> Legge le opzioni dal <file>\n"
+" -h --help Visualizza questo aiuto\n"
+" -v --version Visualizza la versione del programma\n"
+"\n"
+
+#: coffdump.c:532 srconv.c:1833 sysdump.c:710
+msgid "no input file specified"
+msgstr "nessun file di input specificato"
+
+#: cxxfilt.c:119 nm.c:269 objdump.c:281
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Segnalare i bug su %s.\n"
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: nessun file corrente"
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: nessuna chiamata a debug_set_filename"
+
+#: debug.c:781
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: nessuna chiamata a debug_set_filename"
+
+#: debug.c:833
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: nessuna funzione corrente"
+
+#: debug.c:865
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: nessuna funzione corrente"
+
+#: debug.c:871
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: alcuni blocchi non erano chiusi"
+
+#: debug.c:899
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: nessun blocco corrente"
+
+#: debug.c:935
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: nessun blocco corrente"
+
+#: debug.c:942
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: tentativo di chiudere il blocco di livello superiore"
+
+#: debug.c:965
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: nessuna unità corrente"
+
+#. FIXME
+#: debug.c:1018
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: non implementata"
+
+#. FIXME
+#: debug.c:1029
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: non implementata"
+
+#. FIXME.
+#: debug.c:1113
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: non implementata"
+
+#: debug.c:1135
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: nessun file corrente"
+
+#: debug.c:1663
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: tipo non supportato"
+
+#: debug.c:1840
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: nessun file corrente"
+
+#: debug.c:1885
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: nessun file corrente"
+
+#: debug.c:1893
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: tentativo di usare un tag aggiuntivo"
+
+#: debug.c:1930
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Attenzione: modifica dimensione del tipo da %d a %d\n"
+
+#: debug.c:1952
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: nessuna unità di compilazione corrente"
+
+#: debug.c:2055
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: informazioni di debug circolari per %s\n"
+
+#: debug.c:2482
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: riscontrato un tipo illecito"
+
+#: dlltool.c:902 dlltool.c:928 dlltool.c:959
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "Errore interno: macchina di tipo sconosciuto: %d"
+
+#: dlltool.c:1000
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Impossibile aprire il file def: %s"
+
+#: dlltool.c:1005
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Elaborazione del file def: %s"
+
+#: dlltool.c:1009
+msgid "Processed def file"
+msgstr "File def elaborato"
+
+#: dlltool.c:1033
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Errore di sintassi nel file def %s:%d"
+
+#: dlltool.c:1070
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr "%s: componenti del percorso rimosse dal nome immagine, \"%s\"."
+
+#: dlltool.c:1088
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "NOME: base %s: %x"
+
+#: dlltool.c:1091 dlltool.c:1112
+msgid "Can't have LIBRARY and NAME"
+msgstr "Impossibile ottenere LIBRERIA e NOME"
+
+#: dlltool.c:1109
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "LIBRERIA: base %s: %x"
+
+#: dlltool.c:1354 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "attendere: %s"
+
+#: dlltool.c:1359 dllwrap.c:422 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "il sottoprocesso ha ricevuto il segnale fatale %d"
+
+#: dlltool.c:1365 dllwrap.c:429 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s uscito con stato %d"
+
+#: dlltool.c:1396
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "Prelevamento informazioni dalla sezione %s in %s"
+
+#: dlltool.c:1536
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Esclusione del simbolo: %s"
+
+#: dlltool.c:1625 dlltool.c:1636 nm.c:1012 nm.c:1023
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: nessun simbolo"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1662
+#, c-format
+msgid "Done reading %s"
+msgstr "Lettura di %s completata"
+
+#: dlltool.c:1672
+#, c-format
+msgid "Unable to open object file: %s: %s"
+msgstr "Impossibile aprire il file oggetto: %s: %s"
+
+#: dlltool.c:1675
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Scansione del file oggetto %s"
+
+#: dlltool.c:1690
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "Impossibile produrre la dll mcore-elf dal file di archivio: %s"
+
+#: dlltool.c:1792
+msgid "Adding exports to output file"
+msgstr "Aggiunta delle esportazioni al file di output"
+
+#: dlltool.c:1844
+msgid "Added exports to output file"
+msgstr "Esportazioni aggiunte al file di output"
+
+#: dlltool.c:1986
+#, c-format
+msgid "Generating export file: %s"
+msgstr "Generazione del file di esportazione: %s"
+
+#: dlltool.c:1991
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Impossibile aprire il file assembler temporaneo: %s"
+
+#: dlltool.c:1994
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "File temporaneo aperto: %s"
+
+#: dlltool.c:2171
+msgid "failed to read the number of entries from base file"
+msgstr "lettura del numero di voci dal file base non riuscita"
+
+#: dlltool.c:2219
+msgid "Generated exports file"
+msgstr "File di esportazione generati"
+
+#: dlltool.c:2428
+#, c-format
+msgid "bfd_open failed open stub file: %s: %s"
+msgstr "bfd_open non riuscita nell'apertura del file stub: %s: %s"
+
+#: dlltool.c:2432
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "Creazione del file stub: %s"
+
+#: dlltool.c:2894
+#, c-format
+msgid "bfd_open failed reopen stub file: %s: %s"
+msgstr "bfd_open non riuscita nella riapertura del file stub: %s: %s"
+
+#: dlltool.c:2908 dlltool.c:2984
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "errore nell'aprire il file di testa temporaneo: %s"
+
+#: dlltool.c:2970 dlltool.c:3050
+#, c-format
+msgid "failed to open temporary head file: %s: %s"
+msgstr "errore nell'aprire il file di testa temporaneo: %s: %s"
+
+#: dlltool.c:3064
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "errore nell'aprire il file di coda temporaneo: %s"
+
+#: dlltool.c:3121
+#, c-format
+msgid "failed to open temporary tail file: %s: %s"
+msgstr "errore nell'aprire il file di coda temporaneo: %s: %s"
+
+#: dlltool.c:3143
+#, c-format
+msgid "Can't create .lib file: %s: %s"
+msgstr "Impossibile creare il file .lib: %s: %s"
+
+#: dlltool.c:3147
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Creazione del file di libreria: %s"
+
+#: dlltool.c:3239 dlltool.c:3245
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "impossibile eliminare %s: %s"
+
+#: dlltool.c:3250
+msgid "Created lib file"
+msgstr "File lib creato"
+
+#: dlltool.c:3462
+#, c-format
+msgid "Can't open .lib file: %s: %s"
+msgstr "Impossibile aprire il file .lib: %s: %s"
+
+#: dlltool.c:3470 dlltool.c:3492
+#, c-format
+msgid "%s is not a library"
+msgstr "%s non è una libreria"
+
+#: dlltool.c:3510
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr "La libreria di importazione \"%s\" specifica due o più dll"
+
+#: dlltool.c:3521
+#, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr "Impossibile determinare il nome della dll per \"%s\" (forse non è una libreria di importazione)"
+
+#: dlltool.c:3745
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Attenzione, ignorato l'EXPORT duplicato %s %d,%d"
+
+#: dlltool.c:3751
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr "Errore, EXPORT duplicato con ordinali: %s"
+
+#: dlltool.c:3856
+msgid "Processing definitions"
+msgstr "Elaborazione delle definizioni"
+
+#: dlltool.c:3888
+msgid "Processed definitions"
+msgstr "Definizioni elaborate"
+
+#. xgetext:c-format
+#: dlltool.c:3895 dllwrap.c:483
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Uso %s <opzioni> <file-oggetto>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3897
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <macchina> Crea come DLL per la <macchina>. [predefinita: %s]\n"
+
+#: dlltool.c:3898
+#, c-format
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr " <macchina> può essere: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+
+#: dlltool.c:3899
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <nomeout> Genera un file di esportazione.\n"
+
+#: dlltool.c:3900
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <nomeout> Genera una libreria di interfaccia.\n"
+
+#: dlltool.c:3901
+#, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr " -y --output-delaylib <nomeout> Crea una libreria di importazione con ritardo.\n"
+
+#: dlltool.c:3902
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect Aggiunge indiretti della dll al file di esportazione.\n"
+
+#: dlltool.c:3903
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr " -D --dllname <nome> Nome della dll di input da inserire nella libreria dell'interfaccia.\n"
+
+#: dlltool.c:3904
+#, c-format
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr " -d --input-def <filedef> Nome del file .def da leggere.\n"
+
+#: dlltool.c:3905
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <filedef> Nome del file .def da creare.\n"
+
+#: dlltool.c:3906
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Esporta tutti i simboli nel file .def\n"
+
+#: dlltool.c:3907
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols Esporta solo i simboli elencati\n"
+
+#: dlltool.c:3908
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <elenco> Non esporta l'<elenco>\n"
+
+#: dlltool.c:3909
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes Azzera i simboli predefiniti da escludere\n"
+
+#: dlltool.c:3910
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <filebase> Legge il file base generato dal linker.\n"
+
+#: dlltool.c:3911
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 Non genera la sezione idata$4.\n"
+
+#: dlltool.c:3912
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 Non genera la sezione idata$5.\n"
+
+#: dlltool.c:3913
+#, c-format
+msgid " --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"
+msgstr " --use-nul-prefixed-import-tables Usa idata$4 e idata$5 con prefisso zero.\n"
+
+#: dlltool.c:3914
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr " -U --add-underscore Aggiunge trattini bassi a tutti i simboli nella libreria di interfaccia.\n"
+
+#: dlltool.c:3915
+#, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr " --add-stdcall-underscore Aggiunge trattini bassi ai simboli stdcall nella libreria di interfaccia.\n"
+
+#: dlltool.c:3916
+#, c-format
+msgid " --no-leading-underscore All symbols shouldn't be prefixed by an underscore.\n"
+msgstr " --no-leading-underscore Non aggiunge mai un trattino basso come prefisso dei simboli.\n"
+
+#: dlltool.c:3917
+#, c-format
+msgid " --leading-underscore All symbols should be prefixed by an underscore.\n"
+msgstr " --leading-underscore Aggiunge sempre un trattino basso come prefisso dei simboli.\n"
+
+#: dlltool.c:3918
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at Uccide @<n> dai nomi esportati.\n"
+
+#: dlltool.c:3919
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Aggiunge sinonimi senza @<n>.\n"
+
+#: dlltool.c:3920
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -p --ext-prefix-alias <prefisso> Aggiunge sinonimi con <prefisso>.\n"
+
+#: dlltool.c:3921
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <nome> Usa <nome> per l'assemblatore.\n"
+
+#: dlltool.c:3922
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <flag> Passa i <flag> all'assemblatore.\n"
+
+#: dlltool.c:3923
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib Crea una libreria di importazione retrocompatibile.\n"
+
+#: dlltool.c:3924
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete Conserva i file temporanei (ripetere per mantenimento aggiuntivo).\n"
+
+#: dlltool.c:3925
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr " -t --temp-prefix <prefisso> Usa il <prefisso> per costruire i nomi dei file temporanei.\n"
+
+#: dlltool.c:3926
+#, c-format
+msgid " -I --identify <implib> Report the name of the DLL associated with <implib>.\n"
+msgstr " -I --identify <libimp> Riporta il nome della DLL associata alla <libimp>.\n"
+
+#: dlltool.c:3927
+#, c-format
+msgid " --identify-strict Causes --identify to report error when multiple DLLs.\n"
+msgstr " --identify-strict In presenza di DLL multiple --identify segnala un errore.\n"
+
+#: dlltool.c:3928
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose Modo prolisso.\n"
+
+#: dlltool.c:3929
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version Visualizza la versione del programma.\n"
+
+#: dlltool.c:3930
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h, --help Visualizza questo aiuto.\n"
+
+#: dlltool.c:3931
+#, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr " @<file> Legge le opzioni dal <file>.\n"
+
+#: dlltool.c:3933
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr " -M --mcore-elf <nomeout> Analizza i file oggetto mcore-elf nel <nomeout>.\n"
+
+#: dlltool.c:3934
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <nome> Usa <nome> come linker.\n"
+
+#: dlltool.c:3935
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <flag> Passa i <flag> al linker.\n"
+
+#: dlltool.c:4082
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr "Componenti del percorso rimossi da dllname, \"%s\"."
+
+#: dlltool.c:4130
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Impossibile aprire il file base: %s"
+
+#: dlltool.c:4165
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Macchina \"%s\" non supportata"
+
+#: dlltool.c:4245
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr "Attenzione, tipo di macchina (%d) non supportato per delayimport."
+
+#: dlltool.c:4313 dllwrap.c:213
+#, c-format
+msgid "Tried file: %s"
+msgstr "Provato il file: %s"
+
+#: dlltool.c:4320 dllwrap.c:220
+#, c-format
+msgid "Using file: %s"
+msgstr "Uso del file: %s"
+
+#: dllwrap.c:303
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "Conservazione del file base temporaneo %s"
+
+#: dllwrap.c:305
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "Eliminazione del file base temporaneo %s"
+
+#: dllwrap.c:319
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "Conservazione del file exp temporaneo %s"
+
+#: dllwrap.c:321
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "Eliminazione del file exp temporaneo %s"
+
+#: dllwrap.c:334
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Conservazione del file def temporaneo %s"
+
+#: dllwrap.c:336
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "Eliminazione del file def temporaneo %s"
+
+#: dllwrap.c:484
+#, c-format
+msgid " Generic options:\n"
+msgstr " Opzioni generiche:\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr " @<file> Legge le opzioni dal <file>\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q Lavora silenziosamente\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Modo prolisso\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version Stampa la versione di dllwrap\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <nomeoutput> Sinonimo per --output-lib\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Opzioni per %s:\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <driver> Predefinito è \"gcc\"\n"
+
+#: dllwrap.c:492
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <flag> Sovrascrive i flag predefiniti di ld\n"
+
+#: dllwrap.c:493
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dlltool> Predefinito è \"dlltool\"\n"
+
+#: dllwrap.c:494
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <ingresso> Specifica un punto di ingresso alternativo per la DLL\n"
+
+#: dllwrap.c:495
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <base> Specifica l'indirizzo base dell'immagine\n"
+
+#: dllwrap.c:496
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <macchina> i386-cygwin32 oppure i386-mingw32\n"
+
+#: dllwrap.c:497
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run Mostra cosa deve essere eseguito\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Crea una DLL Mingw\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " Opzioni passate a DLLTOOL:\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <macchina>\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <nomeout> Genera un file di esportazione.\n"
+
+#: dllwrap.c:502
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <nomeout> Genera una libreria di input.\n"
+
+#: dllwrap.c:503
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect Aggiunge indiretti della dll al file di esportazione.\n"
+
+#: dllwrap.c:504
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <nome> Nome della dll di input da inserire nella libreria di output.\n"
+
+#: dllwrap.c:505
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <filedef> Fornisce un nome al file .def di input\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <filedef> Fornisce un nome al file .def di output\n"
+
+#: dllwrap.c:507
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Esporta tutti i simboli su .def\n"
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols Esporta solo i simboli .drectve\n"
+
+#: dllwrap.c:509
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <elenco> Esclude l'<elenco> da .def\n"
+
+#: dllwrap.c:510
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes Elimina i simboli di esclusione predefiniti\n"
+
+#: dllwrap.c:511
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr " --base-file <filebase> Legge il file base generato dal linker\n"
+
+#: dllwrap.c:512
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 Non genera la sezione idata$4\n"
+
+#: dllwrap.c:513
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 Non genera la sezione idata$5\n"
+
+#: dllwrap.c:514
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U Aggiunge trattini bassi a .lib\n"
+
+#: dllwrap.c:515
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k Uccide @<n> dai nomi esportati\n"
+
+#: dllwrap.c:516
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias Aggiunge sinonimi senza @<n>\n"
+
+#: dllwrap.c:517
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <nome> Usa <nome> come assemblatore\n"
+
+#: dllwrap.c:518
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete Mantiene i file temporanei.\n"
+
+#: dllwrap.c:519
+#, c-format
+msgid " --no-leading-underscore Entrypoint without underscore\n"
+msgstr " --no-leading-underscore Punto di ingresso senza trattino basso\n"
+
+#: dllwrap.c:520
+#, c-format
+msgid " --leading-underscore Entrypoint with underscore.\n"
+msgstr " --leading-underscore Punto di ingresso con trattino basso.\n"
+
+#: dllwrap.c:521
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " Il rimanente è fornito non modificato al driver di linguaggio\n"
+
+#: dllwrap.c:805
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "Deve essere fornita almeno una tra le opzioni -o oppure --dllname"
+
+#: dllwrap.c:834
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"nessun file di definizione delle esportazioni fornito.\n"
+"Ne viene creato uno, ma potrebbe non risultare conforme alle aspettative"
+
+#: dllwrap.c:1023
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "Nome DLLTOOL : %s\n"
+
+#: dllwrap.c:1024
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "Opzioni DLLTOOL : %s\n"
+
+#: dllwrap.c:1025
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "Nome DRIVER : %s\n"
+
+#: dllwrap.c:1026
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "Opzioni DRIVER : %s\n"
+
+#: dwarf.c:256 dwarf.c:3019
+msgid "badly formed extended line op encountered!\n"
+msgstr "trovato operando della riga estesa malformato\n"
+
+#: dwarf.c:263
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " Opcode esteso %d: "
+
+#: dwarf.c:268
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Fine della sequenza\n"
+"\n"
+
+#: dwarf.c:274
+#, c-format
+msgid "set Address to 0x%s\n"
+msgstr "imposta indirizzo a 0x%s\n"
+
+#: dwarf.c:280
+#, c-format
+msgid " define new File Table entry\n"
+msgstr " definisce una nuova voce nella tabella dei file\n"
+
+#: dwarf.c:281 dwarf.c:2548
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Voce\tDir\tTempo\tDimens.\tNome\n"
+
+#: dwarf.c:295
+#, c-format
+msgid "set Discriminator to %s\n"
+msgstr "imposta il discriminatore a %s\n"
+
+#: dwarf.c:356
+#, c-format
+msgid "(%s"
+msgstr "(%s"
+
+#: dwarf.c:360
+#, c-format
+msgid ",%s"
+msgstr ",%s"
+
+#: dwarf.c:364
+#, c-format
+msgid ",%s)\n"
+msgstr ",%s)\n"
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:387
+#, c-format
+msgid "user defined: "
+msgstr "definito dall'utente: "
+
+#: dwarf.c:389
+#, c-format
+msgid "UNKNOWN: "
+msgstr "SCONOSCIUTO: "
+
+#: dwarf.c:390
+#, c-format
+msgid "length %d ["
+msgstr "lunghezza %d ["
+
+#: dwarf.c:407
+msgid "<no .debug_str section>"
+msgstr "<nessuna sezione .debug_str>"
+
+#: dwarf.c:413
+#, c-format
+msgid "DW_FORM_strp offset too big: %s\n"
+msgstr "offset di DW_FORM_strp troppo grande: %s\n"
+
+#: dwarf.c:415
+msgid "<offset is too big>"
+msgstr "<l'offset è troppo grande>"
+
+#: dwarf.c:655
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Valore TAG sconosciuto: %lx"
+
+#: dwarf.c:696
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Valore FORM sconosciuto: %lx"
+
+#: dwarf.c:705
+#, c-format
+msgid " %s byte block: "
+msgstr " blocco da %s byte: "
+
+#: dwarf.c:1050
+#, c-format
+msgid "(DW_OP_call_ref in frame info)"
+msgstr "(DW_OP_call_ref nelle informazioni del frame)"
+
+#: dwarf.c:1122
+#, c-format
+msgid "(DW_OP_GNU_implicit_pointer in frame info)"
+msgstr "(DW_OP_GNU_implicit_pointer nelle informazioni del frame)"
+
+#: dwarf.c:1229
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Operatore di posizione definito dall'utente)"
+
+#: dwarf.c:1231
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Operatore di posizione sconosciuto)"
+
+#: dwarf.c:1278
+msgid "Internal error: DWARF version is not 2, 3 or 4.\n"
+msgstr "Errore interno: la versione di DWARF non è 2, 3 o 4.\n"
+
+#: dwarf.c:1384
+msgid "DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"
+msgstr "DW_FORM_data8 non è supportato quando sizeof (dwarf_vma) != 8\n"
+
+#: dwarf.c:1434
+#, c-format
+msgid " (indirect string, offset: 0x%s): %s"
+msgstr " (stringa indiretta, offset: 0x%s): %s"
+
+#: dwarf.c:1459
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Forma non riconosciuta: %lu\n"
+
+#: dwarf.c:1552
+#, c-format
+msgid "(not inlined)"
+msgstr "(non posto inline)"
+
+#: dwarf.c:1555
+#, c-format
+msgid "(inlined)"
+msgstr "(posto inline)"
+
+#: dwarf.c:1558
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(dichiarato come inline ma ignorato)"
+
+#: dwarf.c:1561
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(dichiarato come inline e posto inline)"
+
+#: dwarf.c:1564
+#, c-format
+msgid " (Unknown inline attribute value: %s)"
+msgstr " (Valore dell'attributo inline sconosciuto: %s)"
+
+#: dwarf.c:1735
+#, c-format
+msgid "(location list)"
+msgstr "(elenco posizioni)"
+
+#: dwarf.c:1756 dwarf.c:3722
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [senza DW_AT_frame_base]"
+
+#: dwarf.c:1771
+#, c-format
+msgid "Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr "La posizione %s usata come valore per l'attributo DW_AT_import di DIE alla posizione %lx ha un valore troppo grande.\n"
+
+#: dwarf.c:1971
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Valore AT sconosciuto: %lx"
+
+#: dwarf.c:2042
+#, c-format
+msgid "Reserved length value (0x%s) found in section %s\n"
+msgstr "Valore di lunghezza riservato (0x%s) trovato nella sezione %s\n"
+
+#: dwarf.c:2054
+#, c-format
+msgid "Corrupt unit length (0x%s) found in section %s\n"
+msgstr "Lunghezza dell'unità danneggiata (0x%s) trovata nella sezione %s\n"
+
+#: dwarf.c:2062
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "Forse non ci sono unità di compilazione nella sezione %s"
+
+#: dwarf.c:2071
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "Memoria non sufficiente per un array di informazioni di debug di %u voci"
+
+#: dwarf.c:2080 dwarf.c:3288 dwarf.c:3382 dwarf.c:3456 dwarf.c:3588
+#: dwarf.c:3758 dwarf.c:3827 dwarf.c:4024
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Contenuto della sezione %s:\n"
+"\n"
+
+#: dwarf.c:2088
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Impossibile localizzare la sezione %s.\n"
+
+#: dwarf.c:2169
+#, c-format
+msgid " Compilation Unit @ offset 0x%s:\n"
+msgstr " Unità di compilazione @ offset 0x%s:\n"
+
+#: dwarf.c:2171
+#, c-format
+msgid " Length: 0x%s (%s)\n"
+msgstr " Lunghezza: 0x%s (%s)\n"
+
+#: dwarf.c:2174
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versione: %d\n"
+
+#: dwarf.c:2175
+#, c-format
+msgid " Abbrev Offset: %s\n"
+msgstr " Posizione dell'abbreviazione: %s\n"
+
+#: dwarf.c:2177
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Dimensione del puntatore: %d\n"
+
+#: dwarf.c:2181
+#, c-format
+msgid " Signature: "
+msgstr " Firma: "
+
+#: dwarf.c:2185
+#, c-format
+msgid " Type Offset: 0x%s\n"
+msgstr " Offset del tipo: 0x%s\n"
+
+#: dwarf.c:2193
+#, c-format
+msgid "Debug info is corrupted, length of CU at %s extends beyond end of section (length = %s)\n"
+msgstr "Le informazioni di debug sono danneggiate, la lunghezza della UC a %s si estende oltre la fine della sezione (lunghezza = %s)\n"
+
+#: dwarf.c:2206
+#, c-format
+msgid "CU at offset %s contains corrupt or unsupported version number: %d.\n"
+msgstr "La UC all'offset %s contiene un numero di versione danneggiato o non supportato: %d.\n"
+
+#: dwarf.c:2217
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr "Le informazioni di debug sono danneggiate, la posizione dell'abbreviazione (%lx) è più grande della dimensione della sezione abbreviata (%lx)\n"
+
+#: dwarf.c:2267
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr "Indicatore \"end-of-siblings\" inesistente rilevato alla posizione %lx nella sezione .debug_info\n"
+
+#: dwarf.c:2271
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr "Ulteriori avvertimenti riguardo gli indicatori \"end-of-sibling\" inesistenti soppressi\n"
+
+#: dwarf.c:2290
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr " <%d><%lx>: Numero dell'abbreviazione: %lu"
+
+#: dwarf.c:2294
+#, c-format
+msgid " <%d><%lx>: ...\n"
+msgstr " <%d><%lx>: ...\n"
+
+#: dwarf.c:2313
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr "DIE alla posizione %lx si riferisce al numero di abbreviazione %lu che non esiste\n"
+
+#: dwarf.c:2415
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr "Dump grezzo dei contenuti di debug della sezione %s:\n"
+
+#: dwarf.c:2453
+#, c-format
+msgid "The information in section %s appears to be corrupt - the section is too small\n"
+msgstr "Le informazioni nella sezione %s sembrano essere danneggiate, la sezione è troppo piccola\n"
+
+#: dwarf.c:2465 dwarf.c:2833
+msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
+msgstr "Attualmente sono supportate solo informazioni di riga DWARF versione 2, 3 e 4.\n"
+
+#: dwarf.c:2479 dwarf.c:2848
+msgid "Invalid maximum operations per insn.\n"
+msgstr "Numero massimo di operazioni per insn non valido.\n"
+
+#: dwarf.c:2498
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr " Offset: 0x%lx\n"
+
+#: dwarf.c:2499
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Lunghezza: %ld\n"
+
+#: dwarf.c:2500
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " Versione di DWARF: %d\n"
+
+#: dwarf.c:2501
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " Lunghezza del prologo: %d\n"
+
+#: dwarf.c:2502
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " Lunghezza minima istruzione: %d\n"
+
+#: dwarf.c:2504
+#, c-format
+msgid " Maximum Ops per Instruction: %d\n"
+msgstr " Opcode max per istruzione: %d\n"
+
+#: dwarf.c:2505
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " Valore iniz. di \"is_stmt\": %d\n"
+
+#: dwarf.c:2506
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " Base della riga: %d\n"
+
+#: dwarf.c:2507
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " Intervallo di riga: %d\n"
+
+#: dwarf.c:2508
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " Base dell'opcode: %d\n"
+
+#: dwarf.c:2517
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Opcode:\n"
+
+#: dwarf.c:2520
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " L'opcode %d ha %d argomenti\n"
+
+#: dwarf.c:2526
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" La tabella delle directory è vuota.\n"
+
+#: dwarf.c:2529
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" La tabella delle directory:\n"
+
+#: dwarf.c:2544
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" La tabella dei nomi file è vuota.\n"
+
+#: dwarf.c:2547
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" La tabella dei nomi file:\n"
+
+#. Now display the statements.
+#: dwarf.c:2577
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Dichiarazioni dei numeri di riga:\n"
+
+#: dwarf.c:2596
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s"
+msgstr " Opcode speciale %d: avanza l'indirizzo di %s a 0x%s"
+
+#: dwarf.c:2610
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s[%d]"
+msgstr " Opcode speciale %d: avanza l'indirizzo di %s a 0x%s[%d]"
+
+#: dwarf.c:2618
+#, c-format
+msgid " and Line by %s to %d\n"
+msgstr " e la riga di %s a %d\n"
+
+#: dwarf.c:2628
+#, c-format
+msgid " Copy\n"
+msgstr " Copia\n"
+
+#: dwarf.c:2638
+#, c-format
+msgid " Advance PC by %s to 0x%s\n"
+msgstr " Avanza PC di %s a 0x%s\n"
+
+#: dwarf.c:2651
+#, c-format
+msgid " Advance PC by %s to 0x%s[%d]\n"
+msgstr " Avanza PC di %s a 0x%s[%d]\n"
+
+#: dwarf.c:2662
+#, c-format
+msgid " Advance Line by %s to %d\n"
+msgstr " Avanza riga di %s a %d\n"
+
+#: dwarf.c:2670
+#, c-format
+msgid " Set File Name to entry %s in the File Name Table\n"
+msgstr " Imposta il nome del file alla voce %s nella tabella dei nomi file\n"
+
+#: dwarf.c:2678
+#, c-format
+msgid " Set column to %s\n"
+msgstr " Imposta colonna a %s\n"
+
+#: dwarf.c:2686
+#, c-format
+msgid " Set is_stmt to %s\n"
+msgstr " Imposta is_stmt a %s\n"
+
+#: dwarf.c:2691
+#, c-format
+msgid " Set basic block\n"
+msgstr " Imposta blocco di base\n"
+
+#: dwarf.c:2701
+#, c-format
+msgid " Advance PC by constant %s to 0x%s\n"
+msgstr " Avanza PC della costante %s a 0x%s\n"
+
+#: dwarf.c:2714
+#, c-format
+msgid " Advance PC by constant %s to 0x%s[%d]\n"
+msgstr " Avanza PC della costante %s a 0x%s[%d]\n"
+
+#: dwarf.c:2726
+#, c-format
+msgid " Advance PC by fixed size amount %s to 0x%s\n"
+msgstr " Avanza PC della dimensione fissa %s a 0x%s\n"
+
+#: dwarf.c:2732
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr " Imposta prologue_end a vero\n"
+
+#: dwarf.c:2736
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr " Imposta epilogue_begin a vero\n"
+
+#: dwarf.c:2742
+#, c-format
+msgid " Set ISA to %s\n"
+msgstr " Imposta ISA a %s\n"
+
+#: dwarf.c:2746 dwarf.c:3160
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr " Opcode sconosciuto %d con operandi: "
+
+#: dwarf.c:2780
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Dump decodificato dei contenuti di debug della sezione %s:\n"
+"\n"
+
+#: dwarf.c:2821
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "Le informazioni di riga sembrano essere danneggiate, la sezione è troppo piccola\n"
+
+#: dwarf.c:2953
+#, c-format
+msgid "CU: %s:\n"
+msgstr "UC: %s:\n"
+
+#: dwarf.c:2954 dwarf.c:2964
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr "Nome del file Numero riga Indirizzo di partenza\n"
+
+#: dwarf.c:2959
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr "UC: %s/%s:\n"
+
+#: dwarf.c:3051
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "SCONOSCIUTO: lunghezza %d\n"
+
+#: dwarf.c:3156
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr " Imposta ISA a %lu\n"
+
+#: dwarf.c:3322 dwarf.c:3872
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr "L'offset .debug_info di 0x%lx nella sezione %s non punta a una intestazione della UC.\n"
+
+#: dwarf.c:3336
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Attualmente è supportata solo pubnames di DWARF 2 e 3\n"
+
+#: dwarf.c:3343
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Lunghezza: %ld\n"
+
+#: dwarf.c:3345
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versione: %d\n"
+
+#: dwarf.c:3347
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr " Offset nella sezione .debug_info: 0x%lx\n"
+
+#: dwarf.c:3349
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr " Dimensione dell'area nella sezione .debug_info: %ld\n"
+
+#: dwarf.c:3352
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" Offset\tNome\n"
+
+#: dwarf.c:3403
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - nriga: %d numfile: %d\n"
+
+#: dwarf.c:3409
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:3417
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - nriga : %d macro : %s\n"
+
+#: dwarf.c:3426
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - nriga : %d macro : %s\n"
+
+#: dwarf.c:3438
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - costante : %d stringa : %s\n"
+
+#: dwarf.c:3467
+#, c-format
+msgid " Number TAG\n"
+msgstr " Numero TAG\n"
+
+#: dwarf.c:3476
+msgid "has children"
+msgstr "ha figli"
+
+#: dwarf.c:3476
+msgid "no children"
+msgstr "nessun figlio"
+
+#: dwarf.c:3527 dwarf.c:3754 dwarf.c:3981
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"La sezione %s è vuota.\n"
+
+#: dwarf.c:3533 dwarf.c:3987
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr "Impossibile caricare/analizzare la sezione .debug_info, quindi è impossibile interpretare la sezione %s.\n"
+
+#: dwarf.c:3577
+msgid "No location lists in .debug_info section!\n"
+msgstr "Nessun elenco di posizioni nella sezione .debug_info.\n"
+
+#: dwarf.c:3582
+#, c-format
+msgid "Location lists in %s section start at 0x%s\n"
+msgstr "Gli elenchi di posizioni nella sezione %s iniziano a 0x%s\n"
+
+#: dwarf.c:3589
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr " Offset Inizio Fine Espressione\n"
+
+#: dwarf.c:3638
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "C'è un buco [0x%lx - 0x%lx] nella sezione .debug_loc.\n"
+
+#: dwarf.c:3642
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "C'è una sovrapposizione [0x%lx - 0x%lx] nella sezione .debug_loc.\n"
+
+#: dwarf.c:3650
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "L'offset 0x%lx è più grande della dimensione della sezione .debug_loc.\n"
+
+#: dwarf.c:3659 dwarf.c:3694 dwarf.c:3704
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "L'elenco di posizioni che inizia all'offset 0x%lx non è terminato.\n"
+
+#: dwarf.c:3678 dwarf.c:4075
+#, c-format
+msgid "<End of list>\n"
+msgstr "<Fine dell'elenco>\n"
+
+#: dwarf.c:3688
+#, c-format
+msgid "(base address)\n"
+msgstr "(indirizzo di base)\n"
+
+#: dwarf.c:3725
+msgid " (start == end)"
+msgstr " (inizio == fine)"
+
+#: dwarf.c:3727
+msgid " (start > end)"
+msgstr " (inizio > fine)"
+
+#: dwarf.c:3737
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr "Ci sono %ld byte inutilizzati alla fine della sezione %s\n"
+
+#: dwarf.c:3883
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Attualmente è supportata solo aranges di DWARF 2 e 3.\n"
+
+#: dwarf.c:3887
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Lunghezza: %ld\n"
+
+#: dwarf.c:3889
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versione: %d\n"
+
+#: dwarf.c:3890
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr " Offset in .debug_info: 0x%lx\n"
+
+#: dwarf.c:3892
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Dimensione puntatore: %d\n"
+
+#: dwarf.c:3893
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " Dimensione segmento: %d\n"
+
+#: dwarf.c:3902
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr "Dimensione del puntatore + dimensione del segmento non è una potenza di due.\n"
+
+#: dwarf.c:3907
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Indirizzo Lunghezza\n"
+
+#: dwarf.c:3909
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Indirizzo Lunghezza\n"
+
+#: dwarf.c:3997
+msgid "No range lists in .debug_info section!\n"
+msgstr "Nessun elenco di intervalli nella sezione .debug_info.\n"
+
+#: dwarf.c:4021
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "Gli elenchi degli intervalli nella sezione %s iniziano a 0x%lx\n"
+
+#: dwarf.c:4025
+#, c-format
+msgid " Offset Begin End\n"
+msgstr " Offset Inizio Fine\n"
+
+#: dwarf.c:4046
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "C'è un buco [0x%lx - 0x%lx] nella sezione %s.\n"
+
+#: dwarf.c:4050
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "C'è una sovrapposizione [0x%lx - 0x%lx] nella sezione %s.\n"
+
+#: dwarf.c:4093
+msgid "(start == end)"
+msgstr "(inizio == fine)"
+
+#: dwarf.c:4095
+msgid "(start > end)"
+msgstr "(inizio > fine)"
+
+#: dwarf.c:4347
+msgid "bad register: "
+msgstr "registro errato: "
+
+#. The documentation for the format of this file is in gdb/dwarf2read.c.
+#: dwarf.c:4350 dwarf.c:5159
+#, c-format
+msgid "Contents of the %s section:\n"
+msgstr "Contenuti della sezione %s:\n"
+
+#: dwarf.c:5120
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr " DW_CFA_??? (Operatore di frame di chiamata definito dall'utente: %#x)\n"
+
+#: dwarf.c:5122
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr "numero di istruzione del frame di chiamata dwarf non supportato o sconosciuto: %#x\n"
+
+#: dwarf.c:5163
+#, c-format
+msgid "Truncated header in the %s section.\n"
+msgstr "Intestazione troncata nella sezione %s.\n"
+
+#: dwarf.c:5168
+#, c-format
+msgid "Version %ld\n"
+msgstr "Versione %ld\n"
+
+#: dwarf.c:5175
+msgid "The address table data in version 3 may be wrong.\n"
+msgstr "I dati della tabella degli indirizzi nella versione 3 possono essere errati.\n"
+
+#: dwarf.c:5178
+msgid "Version 4 does not support case insensitive lookups.\n"
+msgstr "La versione 4 non supporta le ricerche insensibili a maiuscole/minuscole.\n"
+
+#: dwarf.c:5183
+#, c-format
+msgid "Unsupported version %lu.\n"
+msgstr "Versione %lu non supportata.\n"
+
+#: dwarf.c:5199
+#, c-format
+msgid "Corrupt header in the %s section.\n"
+msgstr "Intestazione danneggiata nella sezione %s.\n"
+
+#: dwarf.c:5214
+#, c-format
+msgid ""
+"\n"
+"CU table:\n"
+msgstr ""
+"\n"
+"Tabella della UC:\n"
+
+#: dwarf.c:5220
+#, c-format
+msgid "[%3u] 0x%lx - 0x%lx\n"
+msgstr "[%3u] 0x%lx - 0x%lx\n"
+
+#: dwarf.c:5225
+#, c-format
+msgid ""
+"\n"
+"TU table:\n"
+msgstr ""
+"\n"
+"Tabella della UT:\n"
+
+#: dwarf.c:5232
+#, c-format
+msgid "[%3u] 0x%lx 0x%lx "
+msgstr "[%3u] 0x%lx 0x%lx "
+
+#: dwarf.c:5239
+#, c-format
+msgid ""
+"\n"
+"Address table:\n"
+msgstr ""
+"\n"
+"Tabella degli indirizzi:\n"
+
+#: dwarf.c:5248
+#, c-format
+msgid "%lu\n"
+msgstr "%lu\n"
+
+#: dwarf.c:5251
+#, c-format
+msgid ""
+"\n"
+"Symbol table:\n"
+msgstr ""
+"\n"
+"Tabella dei simboli:\n"
+
+#: dwarf.c:5285
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "La visualizzazione dei contenuti dei debug della sezione %s non è ancora supportata.\n"
+
+#: dwarf.c:5421 dwarf.c:5491
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Opzione di debug \"%s\" non riconosciuta\n"
+
+#: elfcomm.c:39
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: errore: "
+
+#: elfcomm.c:50
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: attenzione: "
+
+#: elfcomm.c:82 elfcomm.c:117 elfcomm.c:167 elfcomm.c:216
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Lunghezza dati non gestita: %d\n"
+
+#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3643 readelf.c:3951
+#: readelf.c:3994 readelf.c:4066 readelf.c:4144 readelf.c:4915 readelf.c:4939
+#: readelf.c:7340 readelf.c:7386 readelf.c:7587 readelf.c:8783 readelf.c:8797
+#: readelf.c:9322 readelf.c:9338 readelf.c:9381 readelf.c:9406 readelf.c:11674
+#: readelf.c:11866 readelf.c:12685
+msgid "Out of memory\n"
+msgstr "Memoria esaurita\n"
+
+#: elfcomm.c:312
+#, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr "%s: impossibile cercare nella prima intestazione dell'archivio\n"
+
+#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13169
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: impossibile leggere l'intestazione dell'archivio\n"
+
+#: elfcomm.c:347
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr "%s: l'indice dell'archivio è vuoto\n"
+
+#: elfcomm.c:355 elfcomm.c:381
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: impossibile leggere l'indice dell'archivio\n"
+
+#: elfcomm.c:365
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr "%s: l'indice dell'archivio dovrebbe avere %ld voci, ma la dimensione nell'intestazione è troppo piccola\n"
+
+#: elfcomm.c:373
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr "Memoria esaurita durante il tentativo di lettura dell'indice dei simboli dell'archivio\n"
+
+#: elfcomm.c:392
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr "Memoria esaurita durante il tentativo di conversione dell'indice dei simboli dell'archivio\n"
+
+#: elfcomm.c:405
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr "%s: l'archivio ha un indice ma nessun simbolo\n"
+
+#: elfcomm.c:413
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr "Memoria esaurita durante il tentativo di lettura della tabella dei simboli degli indici di archivio\n"
+
+#: elfcomm.c:419
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr "%s: lettura non riuscita della tabella dei simboli degli indici di archivio\n"
+
+#: elfcomm.c:428
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr "%s: impossibile saltare la tabella dei simboli di archivio\n"
+
+#: elfcomm.c:440
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr "%s: impossibile leggere l'intestazione dell'archivio seguendone l'indice\n"
+
+#: elfcomm.c:446
+#, c-format
+msgid "%s has no archive index\n"
+msgstr "%s non ha un indice di archivio\n"
+
+#: elfcomm.c:457
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr "Memoria esaurita nella lettura dei nomi lunghi di simbolo nell'archivio\n"
+
+#: elfcomm.c:465
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr "%s: errore nella lettura della tabella di stringhe dei nomi lunghi di simbolo\n"
+
+#: elfcomm.c:605
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr "%s: impossibile cercare nel successivo nome del file\n"
+
+#: elfcomm.c:616 elfedit.c:347 readelf.c:13175
+#, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr "%s: non è stata trovata un'intestazione valida dell'archivio\n"
+
+#: elfedit.c:73
+#, c-format
+msgid "%s: Not an ELF file - wrong magic bytes at the start\n"
+msgstr "%s: Non è un file ELF, byte magic iniziali errati\n"
+
+#: elfedit.c:81
+#, c-format
+msgid "%s: Unsupported EI_VERSION: %d is not %d\n"
+msgstr "%s: EI_VERSION non supportata: %d non è %d\n"
+
+#: elfedit.c:97
+#, c-format
+msgid "%s: Unmatched EI_CLASS: %d is not %d\n"
+msgstr "%s: EI_CLASS non corrispondente: %d non è %d\n"
+
+#: elfedit.c:108
+#, c-format
+msgid "%s: Unmatched e_machine: %d is not %d\n"
+msgstr "%s: e_machine non corrispondente: %d non è %d\n"
+
+#: elfedit.c:119
+#, c-format
+msgid "%s: Unmatched e_type: %d is not %d\n"
+msgstr "%s: e_type non corrispondente: %d non è %d\n"
+
+#: elfedit.c:130
+#, c-format
+msgid "%s: Unmatched EI_OSABI: %d is not %d\n"
+msgstr "%s: EI_OSABI non corrispondente: %d non è %d\n"
+
+#: elfedit.c:163
+#, c-format
+msgid "%s: Failed to update ELF header: %s\n"
+msgstr "%s: impossibile aggiornare l'intestazione ELF: %s\n"
+
+#: elfedit.c:196
+#, c-format
+msgid "Unsupported EI_CLASS: %d\n"
+msgstr "EI_CLASS non supportata: %d\n"
+
+#: elfedit.c:229
+msgid ""
+"This executable has been built without support for a\n"
+"64 bit data type and so it cannot process 64 bit ELF files.\n"
+msgstr ""
+"Questo eseguibile è stato creato senza il supporto per\n"
+"dati a 64 bit e quindi non può gestire i file ELF a 64 bit.\n"
+
+#: elfedit.c:270
+#, c-format
+msgid "%s: Failed to read ELF header\n"
+msgstr "%s: impossibile leggere l'intestazione ELF\n"
+
+#: elfedit.c:277
+#, c-format
+msgid "%s: Failed to seek to ELF header\n"
+msgstr "%s: impossibile cercare nell'intestazione ELF\n"
+
+#: elfedit.c:331 readelf.c:13161
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s: impossibile cercare nell'intestazione dell'archivio successivo\n"
+
+#: elfedit.c:362 elfedit.c:371 readelf.c:13189 readelf.c:13198
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: nome errato del file dell'archivio\n"
+
+#: elfedit.c:391 elfedit.c:483
+#, c-format
+msgid "Input file '%s' is not readable\n"
+msgstr "Il file di input \"%s\" non è leggibile\n"
+
+#: elfedit.c:415
+#, c-format
+msgid "%s: failed to seek to archive member\n"
+msgstr "%s: impossibile cercare nel membro dell'archivio\n"
+
+#: elfedit.c:454 readelf.c:13284
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "\"%s\": il file non esiste\n"
+
+#: elfedit.c:456 readelf.c:13286
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr "Impossibile localizzare \"%s\". Messaggio di errore del sistema: %s\n"
+
+#: elfedit.c:463 readelf.c:13293
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "\"%s\" non è un file ordinario\n"
+
+#: elfedit.c:489 readelf.c:13306
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr "%s: impossibile leggere il numero magic del file\n"
+
+#: elfedit.c:547
+#, c-format
+msgid "Unknown OSABI: %s\n"
+msgstr "OSABI sconosciuto: %s\n"
+
+#: elfedit.c:566
+#, c-format
+msgid "Unknown machine type: %s\n"
+msgstr "Macchina di tipo sconosciuto: %s\n"
+
+#: elfedit.c:584
+#, c-format
+msgid "Unknown machine type: %d\n"
+msgstr "Macchina di tipo sconosciuto: %d\n"
+
+#: elfedit.c:603
+#, c-format
+msgid "Unknown type: %s\n"
+msgstr "Tipo sconosciuto: %s\n"
+
+#: elfedit.c:634
+#, c-format
+msgid "Usage: %s <option(s)> elffile(s)\n"
+msgstr "Uso: %s <opzioni> fileelf\n"
+
+#: elfedit.c:636
+#, c-format
+msgid " Update the ELF header of ELF files\n"
+msgstr " Aggiorna l'intestazione ELF dei file ELF\n"
+
+#: elfedit.c:637 objcopy.c:475 objcopy.c:585
+#, c-format
+msgid " The options are:\n"
+msgstr " Le opzioni sono:\n"
+
+#: elfedit.c:638
+#, c-format
+msgid ""
+" --input-mach <machine> Set input machine type to <machine>\n"
+" --output-mach <machine> Set output machine type to <machine>\n"
+" --input-type <type> Set input file type to <type>\n"
+" --output-type <type> Set output file type to <type>\n"
+" --input-osabi <osabi> Set input OSABI to <osabi>\n"
+" --output-osabi <osabi> Set output OSABI to <osabi>\n"
+" -h --help Display this information\n"
+" -v --version Display the version number of %s\n"
+msgstr ""
+" --input-mach <macchina> Imposta il tipo di macchina di input a <macchina>\n"
+" --output-mach <macchina> Imposta il tipo di macchina di output a <macchina>\n"
+" --input-type <tipo> Imposta il tipo di file di input a <tipo>\n"
+" --output-type <tipo> Imposta il file di output a <tipo>\n"
+" --input-osabi <osabi> Imposta l'OSABI di input a <osabi>\n"
+" --output-osabi <osabi> Imposta l'OSABI di output a <osabi>\n"
+" -h --help Visualizza questo aiuto\n"
+" -v --version Visualizza il numero di versione di %s\n"
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - Archivio small a 32 bit\n"
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - Ignora gli oggetti a 64 bit\n"
+
+#: emul_aix.c:47
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - Ignora gli oggetti a 32 bit\n"
+
+#: emul_aix.c:48
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] - Accetta oggetti a 32 e 64 bit\n"
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "fine inattesa delle informazioni di debug"
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "numero non valido"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "lunghezza della stringa non valida"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "overflow dello stack dell'espressione"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "operatore di espressione IEEE non supportato"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr "sezione sconosciuta"
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "underflow dello stack dell'espressione"
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "stack dell'espressione non corrispondente"
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "tipo interno sconosciuto"
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "tipo di float BCD non supportato"
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "numero inatteso"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "tipo di record inatteso"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "blocchi lasciati alla fine dello stack"
+
+#: ieee.c:1208
+msgid "unknown BB type"
+msgstr "tipo BB sconosciuto"
+
+#: ieee.c:1217
+msgid "stack overflow"
+msgstr "overflow dello stack"
+
+#: ieee.c:1240
+msgid "stack underflow"
+msgstr "underflow dello stack"
+
+#: ieee.c:1352 ieee.c:1422 ieee.c:2120
+msgid "illegal variable index"
+msgstr "indice di variabile illecito"
+
+#: ieee.c:1400
+msgid "illegal type index"
+msgstr "indice di tipo illecito"
+
+#: ieee.c:1410 ieee.c:1447
+msgid "unknown TY code"
+msgstr "codice TY sconosciuto"
+
+#: ieee.c:1429
+msgid "undefined variable in TY"
+msgstr "variabile non definita in TY"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1841
+msgid "Pascal file name not supported"
+msgstr "nome di file Pascal non supportato"
+
+#: ieee.c:1889
+msgid "unsupported qualifier"
+msgstr "qualificatore non supportato"
+
+#: ieee.c:2158
+msgid "undefined variable in ATN"
+msgstr "variabile non definita in ATN"
+
+#: ieee.c:2201
+msgid "unknown ATN type"
+msgstr "tipo ATN sconosciuto"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2323
+msgid "unsupported ATN11"
+msgstr "ATN11 non supportato"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2350
+msgid "unsupported ATN12"
+msgstr "ATN12 non supportato"
+
+#: ieee.c:2410
+msgid "unexpected string in C++ misc"
+msgstr "stringa non attesa in misc di C++"
+
+#: ieee.c:2423
+msgid "bad misc record"
+msgstr "record misc errato"
+
+#: ieee.c:2464
+msgid "unrecognized C++ misc record"
+msgstr "record misc di C++ non riconosciuto"
+
+#: ieee.c:2579
+msgid "undefined C++ object"
+msgstr "oggetto C++ non definito"
+
+#: ieee.c:2613
+msgid "unrecognized C++ object spec"
+msgstr "specifica dell'oggetto C++ non riconosciuta"
+
+#: ieee.c:2649
+msgid "unsupported C++ object type"
+msgstr "tipo di oggetto C++ non supportato"
+
+#: ieee.c:2659
+msgid "C++ base class not defined"
+msgstr "classe base C++ non definita"
+
+#: ieee.c:2671 ieee.c:2776
+msgid "C++ object has no fields"
+msgstr "l'oggetto C++ non ha campi"
+
+#: ieee.c:2690
+msgid "C++ base class not found in container"
+msgstr "classe base C++ non trovata nel contenitore"
+
+#: ieee.c:2797
+msgid "C++ data member not found in container"
+msgstr "dati membro C++ non trovati nel contenitore"
+
+#: ieee.c:2838 ieee.c:2988
+msgid "unknown C++ visibility"
+msgstr "visibilità C++ sconosciuta"
+
+#: ieee.c:2872
+msgid "bad C++ field bit pos or size"
+msgstr "posizione o dimensione del bit del campo C++ errata"
+
+#: ieee.c:2964
+msgid "bad type for C++ method function"
+msgstr "tipo errato per la funzione del metodo C++"
+
+#: ieee.c:2974
+msgid "no type information for C++ method function"
+msgstr "nessuna informazione di tipo per la funzione del metodo C++"
+
+#: ieee.c:3013
+msgid "C++ static virtual method"
+msgstr "metodo virtuale statico C++"
+
+#: ieee.c:3108
+msgid "unrecognized C++ object overhead spec"
+msgstr "specifica di overhead dell'oggetto C++ non riconosciuta"
+
+#: ieee.c:3147
+msgid "undefined C++ vtable"
+msgstr "vtable C++ non definita"
+
+#: ieee.c:3216
+msgid "C++ default values not in a function"
+msgstr "valori predefiniti C++ non in una funzione"
+
+#: ieee.c:3256
+msgid "unrecognized C++ default type"
+msgstr "tipo predefinito C++ non riconosciuto"
+
+#: ieee.c:3287
+msgid "reference parameter is not a pointer"
+msgstr "il parametro di riferimento non è un puntatore"
+
+#: ieee.c:3370
+msgid "unrecognized C++ reference type"
+msgstr "tipo di riferimento C++ non riconosciuto"
+
+#: ieee.c:3452
+msgid "C++ reference not found"
+msgstr "riferimento C++ non trovato"
+
+#: ieee.c:3460
+msgid "C++ reference is not pointer"
+msgstr "il riferimento C++ non è un puntatore"
+
+#: ieee.c:3486 ieee.c:3494
+msgid "missing required ASN"
+msgstr "ASN richiesto mancante"
+
+#: ieee.c:3521 ieee.c:3529
+msgid "missing required ATN65"
+msgstr "ATN65 richiesto mancante"
+
+#: ieee.c:3543
+msgid "bad ATN65 record"
+msgstr "record ATN65 errato"
+
+#: ieee.c:4171
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "overflow numerico IEEE: 0x"
+
+#: ieee.c:4215
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "overflow della lunghezza di stringa IEEE: %u\n"
+
+#: ieee.c:5213
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "dimensione %u non supportata del tipo intero IEEE\n"
+
+#: ieee.c:5247
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "dimensione %u non supportata del tipo float IEEE\n"
+
+#: ieee.c:5281
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "dimensione %u non supportata del tipo complesso IEEE\n"
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr "Simbolo duplicato inserito nell'elenco delle parole chiave."
+
+#: nlmconv.c:274 srconv.c:1824
+msgid "input and output files must be different"
+msgstr "i file di input e output devono essere diversi"
+
+#: nlmconv.c:321
+msgid "input file named both on command line and with INPUT"
+msgstr "file di input nominato sia sulla riga di comando che con INPUT"
+
+#: nlmconv.c:330
+msgid "no input file"
+msgstr "nessun file di input"
+
+#: nlmconv.c:360
+msgid "no name for output file"
+msgstr "nessun nome per il file di output"
+
+#: nlmconv.c:374
+msgid "warning: input and output formats are not compatible"
+msgstr "attenzione: i formati di input e di output non sono compatibili"
+
+#: nlmconv.c:404
+msgid "make .bss section"
+msgstr "crea la sezione .bss"
+
+#: nlmconv.c:414
+msgid "make .nlmsections section"
+msgstr "crea la sezione .nlmsections"
+
+#: nlmconv.c:442
+msgid "set .bss vma"
+msgstr "imposta il vma di .bss"
+
+#: nlmconv.c:449
+msgid "set .data size"
+msgstr "imposta la dimensione di .data"
+
+#: nlmconv.c:629
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "attenzione: il simbolo %s è stato importato ma non è nell'elenco di importazione"
+
+#: nlmconv.c:649
+msgid "set start address"
+msgstr "imposta l'indirizzo di partenza"
+
+#: nlmconv.c:698
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "attenzione: procedura START %s non definita"
+
+#: nlmconv.c:700
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "attenzione: procedura EXIT %s non definita"
+
+#: nlmconv.c:702
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "attenzione: procedura CHECK %s non definita"
+
+#: nlmconv.c:722 nlmconv.c:908
+msgid "custom section"
+msgstr "sezione personalizzata"
+
+#: nlmconv.c:742 nlmconv.c:937
+msgid "help section"
+msgstr "sezione aiuto"
+
+#: nlmconv.c:764 nlmconv.c:955
+msgid "message section"
+msgstr "sezione messaggio"
+
+#: nlmconv.c:779 nlmconv.c:988
+msgid "module section"
+msgstr "sezione modulo"
+
+#: nlmconv.c:798 nlmconv.c:1004
+msgid "rpc section"
+msgstr "sezione rpc"
+
+#. There is no place to record this information.
+#: nlmconv.c:834
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: attenzione: le librerie condivise non possono avere dati non inizializzati"
+
+#: nlmconv.c:855 nlmconv.c:1023
+msgid "shared section"
+msgstr "sezione condivisa"
+
+#: nlmconv.c:863
+msgid "warning: No version number given"
+msgstr "attenzione: nessun numero di versione fornito"
+
+#: nlmconv.c:903 nlmconv.c:932 nlmconv.c:950 nlmconv.c:999 nlmconv.c:1018
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: lettura: %s"
+
+#: nlmconv.c:925
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "attenzione: FULLMAP non è supportata; usare ld -M"
+
+#: nlmconv.c:1101
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Uso: %s [opzioni] [file-input [file-output]]\n"
+
+#: nlmconv.c:1102
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " Converte un file oggetto in un modulo caricabile NetWare\n"
+
+#: nlmconv.c:1103
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+" Le opzioni sono:\n"
+" -I --input-target=<nomebfd> Imposta il formato del file binario di input\n"
+" -O --output-target=<nomebfd> Imposta il formato del file binario di output\n"
+" -T --header-file=<file> Legge il <file> per le informazioni sull'intestazione NLM\n"
+" -l --linker=<linker> Usa il <linker> per tutte le operazioni di link\n"
+" -d --debug Visualizza la riga di comando del linker sullo stderr\n"
+" @<file> Legge le opzioni dal <file>\n"
+" -h --help Visualizza questo aiuto\n"
+" -v --version Visualizza la versione del programma\n"
+
+#: nlmconv.c:1144
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "supporto non compilato per %s"
+
+#: nlmconv.c:1181
+msgid "make section"
+msgstr "crea la sezione"
+
+#: nlmconv.c:1195
+msgid "set section size"
+msgstr "imposta la dimensione della sezione"
+
+#: nlmconv.c:1201
+msgid "set section alignment"
+msgstr "imposta l'allineamento della sezione"
+
+#: nlmconv.c:1205
+msgid "set section flags"
+msgstr "imposta i flag della sezione"
+
+#: nlmconv.c:1216
+msgid "set .nlmsections size"
+msgstr "imposta la dimensione di .nlmsections"
+
+#: nlmconv.c:1297 nlmconv.c:1305 nlmconv.c:1314 nlmconv.c:1319
+msgid "set .nlmsection contents"
+msgstr "imposta i contenuti di .nlmsection"
+
+#: nlmconv.c:1796
+msgid "stub section sizes"
+msgstr "dimensioni delle sezioni stub"
+
+#: nlmconv.c:1843
+msgid "writing stub"
+msgstr "scrittura dello stub"
+
+#: nlmconv.c:1927
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "rilocazione relativa a PC non risolta contro %s"
+
+#: nlmconv.c:1991
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "overflow durante la regolazione della rilocazione contro %s"
+
+#: nlmconv.c:2118
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: esecuzione di %s non riuscita: "
+
+#: nlmconv.c:2133
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Esecuzione di %s non riuscita"
+
+#: nm.c:225 size.c:78 strings.c:650
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Uso: %s [opzioni] [file]\n"
+
+#: nm.c:226
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " Elenca i simboli in [file] (a.out è il predefinito).\n"
+
+#: nm.c:227
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+" Le opzioni sono:\n"
+" -a, --debug-syms Visualizza solo i simboli del debugger\n"
+" -A, --print-file-name Stampa il nome del file di input prima di ciascun simbolo\n"
+" -B Equivale a --format=bsd\n"
+" -C, --demangle[=STILE] Decodifica i nomi dei simboli di basso livello in nomi a livello utente\n"
+" Lo STILE, se specificato, può essere \"auto\" (predefinito),\n"
+" \"gnu\", \"lucid\", \"arm\", \"hp\", \"edg\", \"gnu-v3\", \"java\"\n"
+" o \"gnat\"\n"
+" --no-demangle Non decodifica i nomi dei simboli di basso livello\n"
+" -D, --dynamic Visualizza i simboli dinamici al posto di quelli normali\n"
+" --defined-only Visualizza solo i simboli definiti\n"
+" -e (ignorata)\n"
+" -f, --format=FORMATO Usa il FORMATO di output. FORMATO può essere \"bsd\",\n"
+" \"sysv\" o \"posix\". Quello predefinito è \"bsd\"\n"
+" -g, --extern-only Visualizza solo i simboli esterni\n"
+" -l, --line-numbers Usa le informazioni di debug per trovare un nome di file e\n"
+" un numero di riga per ciascun simbolo\n"
+" -n, --numeric-sort Ordina numericamente i simboli per indirizzo\n"
+" -o Equivale a -A\n"
+" -p, --no-sort Non ordina i simboli\n"
+" -P, --portability Equivale a --format=posix\n"
+" -r, --reverse-sort Inverte il verso di ordinamento\n"
+
+#: nm.c:250
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr " --plugin NOME Carica il plugin specificato\n"
+
+#: nm.c:253
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+" -S, --print-size Stampa la dimensione dei simboli definiti\n"
+" -s, --print-armap Include l'indice per i simboli dai membri dell'archivio\n"
+" --size-sort Ordina i simboli per dimensione\n"
+" --special-syms Include i simboli speciali nell'output\n"
+" --synthetic Visualizza anche i simboli sintetici\n"
+" -t, --radix=RADICE Usa la RADICE per stampare i valori dei simboli\n"
+" --target=NOMEBFD Specifica il formato dell'oggetto obiettivo come NOMEBFD\n"
+" -u, --undefined-only Visualizza solo i simboli indefiniti\n"
+" -X 32_64 (ignorata)\n"
+" @FILE Legge le opzioni dal FILE\n"
+" -h, --help Visualizza questo aiuto\n"
+" -V, --version Visualizza il numero di versione di questo programma\n"
+"\n"
+
+#: nm.c:301
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: radice non valida"
+
+#: nm.c:325
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: formato di output non valido"
+
+#: nm.c:346 readelf.c:8546 readelf.c:8591
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<specifico del processore>: %d"
+
+#: nm.c:348 readelf.c:8555 readelf.c:8609
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<specifico del SO>: %d"
+
+#: nm.c:350 readelf.c:8558 readelf.c:8612
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<sconosciuto>: %d"
+
+#: nm.c:390
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Indice dell'archivio:\n"
+
+#: nm.c:1254
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Simboli indefiniti da %s:\n"
+"\n"
+
+#: nm.c:1256
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Simboli da %s:\n"
+"\n"
+
+#: nm.c:1258 nm.c:1309
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Nome Valore Classe Tipo Dimens Riga Sezione\n"
+"\n"
+
+#: nm.c:1261 nm.c:1312
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Nome Valore Classe Tipo Dimensione Riga Sezione\n"
+"\n"
+
+#: nm.c:1305
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Simboli indefiniti da %s[%s]:\n"
+"\n"
+
+#: nm.c:1307
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Simboli da %s[%s]:\n"
+"\n"
+
+#: nm.c:1399
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr "La larghezza di stampa non è stata inizializzata (%d)"
+
+#: nm.c:1627
+msgid "Only -X 32_64 is supported"
+msgstr "È supportata solo -X 32_64"
+
+#: nm.c:1656
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "L'uso contemporaneo delle opzioni --size-sort e --undefined-only"
+
+#: nm.c:1657
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "non produce alcun output, dato che i simboli indefiniti non hanno dimensione."
+
+#: nm.c:1685
+#, c-format
+msgid "data size %ld"
+msgstr "dimensione dati %ld"
+
+#: objcopy.c:473 srconv.c:1732
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Uso: %s [opzioni] file-input [file-output]\n"
+
+#: objcopy.c:474
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " Copia un file binario, trasformandolo eventualmente durante il processo\n"
+
+#: objcopy.c:476
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set output arch, when input is arch-less\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff objects.\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" --compress-debug-sections Compress DWARF debug sections using zlib\n"
+" --decompress-debug-sections Decompress DWARF debug sections using zlib\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"
+msgstr ""
+" -I --input-target <nomebfd> Assume che il file di input sia in formato <nomebfd>\n"
+" -O --output-target <nomebfd> Crea un file di output in formato <nomebfd>\n"
+" -B --binary-architecture <arch> Imposta l'architettura di output quando l'input ne è privo\n"
+" -F --target <nomebfd> Imposta il formato di input e di output a <nomebfd>\n"
+" --debugging Converte le informazioni di debug, se possibile\n"
+" -p --preserve-dates Copia in output le marcature temporali di modifica/accesso\n"
+" -j --only-section <nome> Copia in output solo la sezione <nome>\n"
+" --add-gnu-debuglink=<file> Aggiunge la sezione .gnu_debuglink con link al <file>\n"
+" -R --remove-section <nome> Rimuove la sezione <nome> dall'output\n"
+" -S --strip-all Rimuove tutti i simboli e le informazioni di rilocazione\n"
+" -g --strip-debug Rimuove tutti i simboli e le sezioni di debug\n"
+" --strip-unneeded Rimuove tutti i simboli non necessari alle rilocazioni\n"
+" -N --strip-symbol <nome> Non copia il simbolo <nome>\n"
+" --strip-unneeded-symbol <nome>\n"
+" Non copia il simbolo <nome> a meno che non sia \n"
+" necessario alle rilocazioni\n"
+" --only-keep-debug Elimina tutto tranne le informazioni di debug\n"
+" --extract-symbol Rimuove i contenuti delle sezioni ma tiene i simboli\n"
+" -K --keep-symbol <nome> Non elimina il simbolo <nome>\n"
+" --keep-file-symbols Non elimina i simboli dei file\n"
+" --localize-hidden Trasforma in locali tutti i simboli ELF nascosti\n"
+" -L --localize-symbol <nome> Forza il simbolo <nome> a essere contrassegnato come locale\n"
+" --globalize-symbol <nome> Forza il simbolo <nome> a essere contrassegnato come globale\n"
+" -G --keep-global-symbol <nome> Rende locali tutti i simboli eccetto <nome>\n"
+" -W --weaken-symbol <nome> Forza il simbolo <nome> a essere contrassegnato come debole\n"
+" --weaken Forza tutti i simboli globali a essere contrassegnati come deboli\n"
+" -w --wildcard Ammette i metacaratteri nella comparazione di simboli\n"
+" -x --discard-all Rimuove tutti simboli non globali\n"
+" -X --discard-locals Rimuove tutti i simboli generati da compilatore\n"
+" -i --interleave [<numero>] Copia solo N byte ogni <numero> di byte\n"
+" --interleave-width <numero> Imposta N per --interleave\n"
+" -b --byte <num> Seleziona il byte <num> in ogni blocco intermedio\n"
+" --gap-fill <val> Riempie gli intervalli tra le sezioni con il valore <val>\n"
+" --pad-to <indir> Riempie l'ultima sezione fino all'indirizzo <indir>\n"
+" --set-start <indir> Imposta l'indirizzo di partenza a <indir>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Aggiunge <incr> all'indirizzo di partenza\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Aggiunge <incr> a LMA, VMA e agli indirizzi di partenza\n"
+" {--change-section-address|--adjust-section-vma} <nome>{=|+|-}<val>\n"
+" Cambia l'LMA e il VMA della sezione <nome> con <val>\n"
+" --change-section-lma <nome>{=|+|-}<val>\n"
+" Cambia l'LMA della sezione <nome> con <val>\n"
+" --change-section-vma <nome>{=|+|-}<val>\n"
+" Cambia il VMA della sezione <nome> con <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Avverte se una sezione nominata non esiste\n"
+" --set-section-flags <nome>=<flag>\n"
+" Imposta le proprietà della sezione <nome> a <flag>\n"
+" --add-section <nome>=<file> Aggiunge la sezione <nome> trovata in <file> all'output\n"
+" --rename-section <vecchia>=<nuova>[,<flag>] Rinomina la sezione <vecchia> a <nuova>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Gestisce i nomi lunghi di sezione negli oggetti Coff\n"
+" --change-leading-char Forza lo stile con carattere iniziale come formato di output \n"
+" --remove-leading-char Rimuove il carattere iniziale dai simboli globali\n"
+" --reverse-bytes=<num> Inverte <num> byte alla volta, nelle sezioni di output \n"
+" con contenuti\n"
+" --redefine-sym <vecchio>=<nuovo>\n"
+" Ridefinisce il nome del simbolo da <vecchio> a <nuovo>\n"
+" --redefine-syms <file> Corrisponde a --redefine-sym per tutte le coppie di simboli \n"
+" elencate in <file>\n"
+" --srec-len <numero> Limita la lunghezza degli Srecord generati\n"
+" --srec-forceS3 Limita il tipo di Srecord generati a S3\n"
+" --strip-symbols <file> Corrisponde a -N per tutti i simboli elencati in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" Corrisponde a --strip-unneeded-symbol per tutti i simboli \n"
+" elencati in <file>\n"
+" --keep-symbols <file> Corrisponde a -K per tutti i simboli elencati in <file>\n"
+" --localize-symbols <file> Corrisponde a -L per tutti i simboli elencati in <file>\n"
+" --globalize-symbols <file> Corrisponde a --globalize-symbol per tutti i simboli \n"
+" elencati in <file>\n"
+" --keep-global-symbols <file> Corrisponde a -G per tutti i simboli elencati in <file>\n"
+" --weaken-symbols <file> Corrisponde a -W per tutti i simboli elencati in <file>\n"
+" --alt-machine-code <indice> Usa l'<indice>-simo codice macchina alternativo per l'obiettivo\n"
+" --writable-text Marca il testo in output come aperto in scrittura\n"
+" --readonly-text Rende il testo in output protetto in scrittura\n"
+" --pure Marca il file di output come paginato su richiesta\n"
+" --impure Marca il file di output come impuro\n"
+" --prefix-symbols <prefisso> Aggiunge il <prefisso> all'inizio di ogni nome di simbolo\n"
+" --prefix-sections <prefisso> Aggiunge il <prefisso> all'inizio di ogni nome di sezione\n"
+" --prefix-alloc-sections <prefisso>\n"
+" Aggiunge il <prefisso> all'inizio di ogni nome di sezione\n"
+" allocabile\n"
+" --file-alignment <num> Imposta l'allineamento del file PE a <num>\n"
+" --heap <riserva>[,<conferma>] Imposta l'heap riserva/conferma PE a <riserva>/<conferma>\n"
+" --image-base <indirizzo> Imposta l'immagine base PE all'<indirizzo>\n"
+" --section-alignment <num> Imposta l'allineamento di sezione PE a <num>\n"
+" --stack <riserva>[,<conferma>]\n"
+" Imposta lo stack riserva/conferma PE a <riserva>/<conferma>\n"
+" --subsystem <nome>[:<versione>]\n"
+" Imposta il sottosistema PE a <nome> [e <versione>]\n"
+" --compress-debug-sections Comprime le sezioni di debug DWARF con zlib\n"
+" --decompress-debug-sections Decomprime le sezioni di debug DWARF con zlib\n"
+" -v --verbose Elenca tutti i file oggetto modificati\n"
+" @<file> Legge le opzioni dal <file>\n"
+" -V --version Visualizza il numero di versione di questo programma\n"
+" -h --help Visualizza questo aiuto\n"
+" --info Elenca i formati e le architetture supportate per gli oggetti\n"
+
+#: objcopy.c:583
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Uso: %s <opzioni> file-input\n"
+
+#: objcopy.c:584
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr " Rimuove i simboli e le sezioni dai file\n"
+
+#: objcopy.c:586
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target=<nomebfd> Assume <nomebfd> come formato del file di input\n"
+" -O --output-target=<nomebfd> Crea un file di output nel formato <nomebfd>\n"
+" -F --target=<nomebfd> Imposta <nomebfd> sia come formato di input che di output\n"
+" -p --preserve-dates Copia in output le marcature temporali di modifica/accesso\n"
+" -R --remove-section=<nome> Rimuove la sezione <nome> dall'output\n"
+" -s --strip-all Rimuove tutte le informazioni sui simboli e sulle rilocazioni\n"
+" -g -S -d --strip-debug Rimuove tutti i simboli e le sezioni di debug\n"
+" --strip-unneeded Rimuove tutti i simboli non necessari alle rilocazioni\n"
+" --only-keep-debug Rimuove tutto eccetto le informazioni di debug\n"
+" -N --strip-symbol=<nome> Non copia il simbolo <nome>\n"
+" -K --keep-symbol=<nome> Non elimina il simbolo <nome>\n"
+" --keep-file-symbols Non elimina i simboli dei file\n"
+" -w --wildcard Ammette metacaratteri nella comparazione di simboli\n"
+" -x --discard-all Rimuove tutti i simboli non globali\n"
+" -X --discard-locals Rimuove tutti i simboli generati dal compilatore\n"
+" -v --verbose Elenca tutti i file oggetto modificati\n"
+" -V --version Visualizza il numero di versione di questo programma\n"
+" -h --help Visualizza questo aiuto\n"
+" --info Elenca i formati e le architetture supportate dall'oggetto\n"
+" -o <file> Mette l'output rimosso nel <file>\n"
+
+#: objcopy.c:659
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "flag di sezione non riconosciuto \"%s\""
+
+#: objcopy.c:660
+#, c-format
+msgid "supported flags: %s"
+msgstr "flag supportati: %s"
+
+#: objcopy.c:761
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "impossibile aprire \"%s\": %s"
+
+#: objcopy.c:764 objcopy.c:3392
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: fread non riuscita"
+
+#: objcopy.c:837
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: ignorata la spazzatura trovata in questa riga"
+
+#: objcopy.c:1128
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr "il simbolo \"%s\" non viene rimosso perché è nominato in una rilocazione"
+
+#: objcopy.c:1211
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: ridefinizione multipla del simbolo \"%s\""
+
+#: objcopy.c:1215
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: il simbolo \"%s\" è un obiettivo per più di una ridefinizione"
+
+#: objcopy.c:1243
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "impossibile aprire il file di ridefinizione dei simboli %s (errore: %s)"
+
+#: objcopy.c:1321
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: trovata spazzatura alla fine della riga"
+
+#: objcopy.c:1324
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: manca il nuovo nome del simbolo"
+
+#: objcopy.c:1334
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: fine prematura del file"
+
+#: objcopy.c:1360
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat ha restituito una dimensione negativa per \"%s\""
+
+#: objcopy.c:1372
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "copia da \"%s\" [sconosciuto] a \"%s\" [sconosciuto]\n"
+
+#: objcopy.c:1429
+msgid "Unable to change endianness of input file(s)"
+msgstr "Impossibile modificare l'ordine dei byte dei file di input"
+
+#: objcopy.c:1438
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "copia da \"%s\" [%s] a \"%s\" [%s]\n"
+
+#: objcopy.c:1487
+#, c-format
+msgid "Input file `%s' ignores binary architecture parameter."
+msgstr "Il file di input \"%s\" ignora il parametro di architettura binaria."
+
+#: objcopy.c:1495
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "Impossibile riconoscere il formato del file di input \"%s\""
+
+#: objcopy.c:1498
+#, c-format
+msgid "Output file cannot represent architecture `%s'"
+msgstr "Il file di output non può rappresentare l'architettura \"%s\""
+
+#: objcopy.c:1561
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr "attenzione: allineamento del file (0x%s) > allineamento della sezione (0x%s)"
+
+#: objcopy.c:1620
+#, c-format
+msgid "can't add section '%s'"
+msgstr "impossibile aggiungere la sezione \"%s\""
+
+#: objcopy.c:1634
+#, c-format
+msgid "can't create section `%s'"
+msgstr "impossibile creare la sezione \"%s\""
+
+#: objcopy.c:1680
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr "impossibile creare la sezione dei link di debug \"%s\""
+
+#: objcopy.c:1773
+msgid "Can't fill gap after section"
+msgstr "Impossibile riempire l'intervallo dopo la sezione"
+
+#: objcopy.c:1797
+msgid "can't add padding"
+msgstr "impossibile aggiungere il riempimento"
+
+#: objcopy.c:1888
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr "impossibile riempire la sezione dei link di debug \"%s\""
+
+#: objcopy.c:1951
+msgid "error copying private BFD data"
+msgstr "errore nel copiare i dati BFD privati"
+
+#: objcopy.c:1962
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr "questo obiettivo non supporta %lu codici macchina alternativi"
+
+#: objcopy.c:1966
+msgid "treating that number as an absolute e_machine value instead"
+msgstr "quel numero viene invece trattato come un valore e_machine assoluto"
+
+#: objcopy.c:1970
+msgid "ignoring the alternative value"
+msgstr "ignorato il valore alternativo"
+
+#: objcopy.c:2002 objcopy.c:2038
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr "impossibile creare una directory temporanea per la copia dell'archivio (errore: %s)"
+
+#: objcopy.c:2068
+msgid "Unable to recognise the format of file"
+msgstr "Impossibile riconoscere il formato del file"
+
+#: objcopy.c:2195
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "errore: il file di input \"%s\" è vuoto"
+
+#: objcopy.c:2339
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "Sezione %s rinominata più volte"
+
+#: objcopy.c:2390
+msgid "error in private header data"
+msgstr "errore nei dati di intestazione privati"
+
+#: objcopy.c:2468
+msgid "failed to create output section"
+msgstr "creazione della sezione di output non riuscita"
+
+#: objcopy.c:2482
+msgid "failed to set size"
+msgstr "impostazione della dimensione non riuscita"
+
+#: objcopy.c:2496
+msgid "failed to set vma"
+msgstr "impostazione di vma non riuscita"
+
+#: objcopy.c:2521
+msgid "failed to set alignment"
+msgstr "impostazione dell'allineamento non riuscita"
+
+#: objcopy.c:2555
+msgid "failed to copy private data"
+msgstr "copia dei dati privati non riuscita"
+
+#: objcopy.c:2637
+msgid "relocation count is negative"
+msgstr "il conteggio delle rilocazioni è negativo"
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2698
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr "impossibile invertire i byte: la lunghezza della sezione %s deve essere divisibile per %d senza resto"
+
+#: objcopy.c:2884
+msgid "can't create debugging section"
+msgstr "impossibile creare la sezione di debug"
+
+#: objcopy.c:2897
+msgid "can't set debugging section contents"
+msgstr "impossibile impostare i contenuti della sezione di debug"
+
+#: objcopy.c:2905
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr "non si conosce il modo di scrivere le informazioni di debug per %s"
+
+#: objcopy.c:3048
+msgid "could not create temporary file to hold stripped copy"
+msgstr "impossibile creare un file temporaneo per tenere una copia rimossa"
+
+#: objcopy.c:3120
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr "%s: versione errata nel sottosistema PE"
+
+#: objcopy.c:3150
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr "sottosistema PE sconosciuto: %s"
+
+#: objcopy.c:3212
+msgid "byte number must be non-negative"
+msgstr "il numero di byte deve essere non-negativo"
+
+#: objcopy.c:3218
+#, c-format
+msgid "architecture %s unknown"
+msgstr "architettura %s sconosciuta"
+
+#: objcopy.c:3226
+msgid "interleave must be positive"
+msgstr "l'interfoliazione deve essere positiva"
+
+#: objcopy.c:3235
+msgid "interleave width must be positive"
+msgstr "l'ampiezza di interfoliazione deve essere positiva"
+
+#: objcopy.c:3255 objcopy.c:3263
+#, c-format
+msgid "%s both copied and removed"
+msgstr "%s sia copiato che rimosso"
+
+#: objcopy.c:3362 objcopy.c:3442 objcopy.c:3550 objcopy.c:3581 objcopy.c:3605
+#: objcopy.c:3609 objcopy.c:3629
+#, c-format
+msgid "bad format for %s"
+msgstr "formato errato per %s"
+
+#: objcopy.c:3374
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "impossibile aprire %s: %s"
+
+#: objcopy.c:3519
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Attenzione: troncato il riempimento da 0x%s a 0x%x"
+
+#: objcopy.c:3680
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr "opzione \"%s\" dei nomi lunghi di sezione sconosciuta"
+
+#: objcopy.c:3698
+msgid "unable to parse alternative machine code"
+msgstr "impossibile analizzare codice macchina alternativo"
+
+#: objcopy.c:3743
+msgid "number of bytes to reverse must be positive and even"
+msgstr "il numero di byte da invertire deve essere positivo e pari"
+
+#: objcopy.c:3746
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr "Attenzione: valore --reverse-bytes precedente di %d ignorato"
+
+#: objcopy.c:3761
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr "%s: valore di riserva per --heap non valido"
+
+#: objcopy.c:3767
+#, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr "%s: valore di conferma per --heap non valido"
+
+#: objcopy.c:3792
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr "%s: valore di riserva per --stack non valido"
+
+#: objcopy.c:3798
+#, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr "%s: valore di conferma per --stack non valido"
+
+#: objcopy.c:3827
+msgid "interleave start byte must be set with --byte"
+msgstr "il byte iniziale di interfoliazione deve essere impostato con --byte"
+
+#: objcopy.c:3830
+msgid "byte number must be less than interleave"
+msgstr "il numero di byte deve essere inferiore all'interfoliazione"
+
+#: objcopy.c:3833
+msgid "interleave width must be less than or equal to interleave - byte`"
+msgstr "l'ampiezza di interfoliazione deve essere inferiore o uguale all'interfoliazione - byte\""
+
+#: objcopy.c:3860
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr "obiettivo di input EFI sconosciuto: %s"
+
+#: objcopy.c:3891
+#, c-format
+msgid "unknown output EFI target: %s"
+msgstr "obiettivo di output EFI sconosciuto: %s"
+
+#: objcopy.c:3904
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr "attenzione: impossibile localizzare \"%s\". Messaggio di errore del sistema: %s"
+
+#: objcopy.c:3916
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr "attenzione: impossibile creare un file temporaneo durante la copia di \"%s\", (errore: %s)"
+
+#: objcopy.c:3944 objcopy.c:3958
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s mai usato"
+
+#: objdump.c:201
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Uso: %s <opzioni> <file>\n"
+
+#: objdump.c:202
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " Visualizza le informazioni dai <file> oggetto.\n"
+
+#: objdump.c:203
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " Deve essere fornita almeno una tra le seguenti opzioni:\n"
+
+#: objdump.c:204
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -P, --private=OPT,OPT... Display object format specific contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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[lLiaprmfFsoRt] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+msgstr ""
+" -a, --archive-headers Visualizza le informazioni sulle intestazioni dell'archivio\n"
+" -f, --file-headers Visualizza i contenuti delle intestazioni globali del file\n"
+" -p, --private-headers Visualizza i contenuti delle intestazioni dei file specifici del formato dell'oggetto\n"
+" -P, --private=OPT,OPT... Visualizza i contenuti specifici del formato dell'oggetto\n"
+" -h, --[section-]headers Visualizza i contenuti delle intestazioni della sezione\n"
+" -x, --all-headers Visualizza i contenuti di tutte le intestazioni\n"
+" -d, --disassemble Visualizza i contenuti assembler delle sezioni eseguibili\n"
+" -D, --disassemble-all Visualizza i contenuti assembler di tutte le sezioni\n"
+" -S, --source Mescola codice sorgente con disassemblato\n"
+" -s, --full-contents Visualizza i contenuti completi di tutte le sezioni richieste\n"
+" -g, --debugging Visualizza le informazioni di debug nel file oggetto\n"
+" -e, --debugging-tags Visualizza le informazioni di debug usando lo stile ctags\n"
+" -G, --stabs Visualizza (in forma grezza) tutte le informazioni STAB presenti nel file\n"
+" -W[lLiaprmfFsoRt] o\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Visualizza le informazioni DWARF presenti nel file\n"
+" -t, --syms Visualizza i contenuti delle tabelle dei simboli\n"
+" -T, --dynamic-syms Visualizza i contenuti delle tabelle dei simboli dinamici\n"
+" -r, --reloc Visualizza le voci di rilocazione presenti nel file\n"
+" -R, --dynamic-reloc Visualizza le voci di rilocazione dinamica presenti nel file\n"
+" @<file> Legge le opzioni dal <file>\n"
+" -v, --version Visualizza il numero di versione di questo programma\n"
+" -i, --info Elenca i formati e le architetture supportate dall'oggetto\n"
+" -H, --help Visualizza questo aiuto\n"
+
+#: objdump.c:236
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" Le seguenti opzioni sono facoltative:\n"
+
+#: objdump.c:237
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a single line for -d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+msgstr ""
+" -b, --target=NOMEBFD Specifica il formato dell'oggetto obiettivo come NOMEBFD\n"
+" -m, --architecture=MACCHINA Specifica l'architettura obiettivo come MACCHINA\n"
+" -j, --section=NOME Visualizza solo le informazioni per la sezione NOME\n"
+" -M, --disassembler-options=OPZ Inoltra l'OPZ al disassemblatore\n"
+" -EB --endian=big Assume il formato big endian nel disassemblare\n"
+" -EL --endian=little Assume il formato little endian nel disassemblare\n"
+" --file-start-context Include il contesto dall'inizio del file (con -S)\n"
+" -I, --include=DIR Aggiunge DIR all'elenco di ricerca per i file sorgente\n"
+" -l, --line-numbers Include i numeri di riga e i nomi dei file nell'output\n"
+" -F, --file-offsets Include le posizioni dei file quando visualizza le informazioni\n"
+" -C, --demangle[=STILE] Decodifica i nomi dei simboli codificati/elaborati\n"
+" Lo STILE, se specificato, può essere \"auto\", \"gnu\",\n"
+" \"lucid\", \"arm\", \"hp\", \"edg\", \"gnu-v3\", \"java\"\n"
+" o \"gnat\"\n"
+" -w, --wide Imposta il formato di output a più di 80 colonne\n"
+" -z, --disassemble-zeroes Non salta i blocchi di zeri nel disassemblare\n"
+" --start-address=INDIR Elabora solo i dati con indirizzo >= INDIR\n"
+" --stop-address=INDIR Elabora solo i dati con indirizzo <= INDIR\n"
+" --prefix-addresses Stampa l'indirizzo completo accanto al disassemblato\n"
+" --[no-]show-raw-insn Visualizza l'esadecimale accanto al disassemblato simbolico\n"
+" --insn-width=AMPIEZZA Visualizza un numero AMPIEZZA di byte su una singola riga per -d\n"
+" --adjust-vma=SCOSTAMENTO Aggiunge uno SCOSTAMENTO a tutti gli indirizzi di sezione visualizzati\n"
+" --special-syms Include i simboli speciali nei dump dei simboli\n"
+" --prefix=PREFISSO Aggiunge il PREFISSO ai percorsi assoluti per -S\n"
+" --prefix-strip=LIVELLO Rimuove i prefissi delle directory per -S\n"
+
+#: objdump.c:263
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+"\n"
+msgstr ""
+" --dwarf-depth=N Non visualizza i DIE alla profondità N o superiore\n"
+" --dwarf-start=N Visualizza i DIE partendo da N, alla stessa profondità\n"
+" o superiore\n"
+"\n"
+
+#: objdump.c:275
+#, c-format
+msgid ""
+"\n"
+"Options supported for -P/--private switch:\n"
+msgstr ""
+"\n"
+"Opzioni supportate per -P/--private:\n"
+
+#: objdump.c:426
+#, c-format
+msgid "section '%s' mentioned in a -j option, but not found in any input file"
+msgstr "sezione \"%s\" menzionata in una opzione -j, ma non trovata in alcun file di input"
+
+#: objdump.c:530
+#, c-format
+msgid "Sections:\n"
+msgstr "Sezioni:\n"
+
+#: objdump.c:533 objdump.c:537
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Ind Nome Dimens VMA LMA Pos file Allin"
+
+#: objdump.c:539
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Ind Nome Dimens VMA LMA Pos file Allin"
+
+#: objdump.c:543
+#, c-format
+msgid " Flags"
+msgstr " Flag"
+
+#: objdump.c:586
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: non è un oggetto dinamico"
+
+#: objdump.c:1012 objdump.c:1036
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr " (Offset del file: 0x%lx)"
+
+#: objdump.c:1662
+#, c-format
+msgid "disassemble_fn returned length %d"
+msgstr "disassemble_fn ha restituito la lunghezza %d"
+
+#: objdump.c:1967
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+"\n"
+"Disassemblamento della sezione %s:\n"
+
+#: objdump.c:2143
+#, c-format
+msgid "can't use supplied machine %s"
+msgstr "impossibile usare la macchina %s fornita"
+
+#: objdump.c:2162
+#, c-format
+msgid "can't disassemble for architecture %s\n"
+msgstr "impossibile disassemblare per l'architettura %s\n"
+
+#: objdump.c:2242 objdump.c:2265
+#, c-format
+msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"Impossibile ottenere contenuti per la sezione \"%s\".\n"
+
+#: objdump.c:2406
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"La sezione %s non è presente\n"
+"\n"
+
+#: objdump.c:2415
+#, c-format
+msgid "reading %s section of %s failed: %s"
+msgstr "Lettura della sezione %s di %s non riuscita: %s"
+
+#: objdump.c:2459
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"Contenuto della sezione %s:\n"
+"\n"
+
+#: objdump.c:2590
+#, c-format
+msgid "architecture: %s, "
+msgstr "architettura: %s, "
+
+#: objdump.c:2593
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "flag 0x%08x:\n"
+
+#: objdump.c:2607
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"indirizzo di partenza 0x"
+
+#: objdump.c:2633
+msgid "option -P/--private not supported by this file"
+msgstr "l'opzione -P/--private non è supportata da questo file"
+
+#: objdump.c:2657
+#, c-format
+msgid "target specific dump '%s' not supported"
+msgstr "dump specifico per l'obiettivo \"%s\" non supportato"
+
+#: objdump.c:2721
+#, c-format
+msgid "Contents of section %s:"
+msgstr "Contenuto della sezione %s:"
+
+#: objdump.c:2723
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr " (Iniziando dall'offset del file: 0x%lx)"
+
+#: objdump.c:2729
+msgid "Reading section failed"
+msgstr "Lettura della sezione non riuscita"
+
+#: objdump.c:2832
+#, c-format
+msgid "no symbols\n"
+msgstr "nessun simbolo\n"
+
+#: objdump.c:2839
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr "nessuna informazione per il simbolo numero %ld\n"
+
+#: objdump.c:2842
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "impossibile determinare il tipo del simbolo numero %ld\n"
+
+#: objdump.c:3163
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: formato del file %s\n"
+
+#: objdump.c:3223
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: stampa delle informazioni di debug non riuscita"
+
+#: objdump.c:3327
+#, c-format
+msgid "In archive %s:\n"
+msgstr "Nell'archivio %s:\n"
+
+#: objdump.c:3438
+msgid "error: the start address should be before the end address"
+msgstr "errore: l'indirizzo di partenza dovrebbe essere precedente all'indirizzo finale"
+
+#: objdump.c:3443
+msgid "error: the stop address should be after the start address"
+msgstr "errore: l'indirizzo di arresto dovrebbe essere successivo all'indirizzo di partenza"
+
+#: objdump.c:3455
+msgid "error: prefix strip must be non-negative"
+msgstr "errore: la rimozione del prefisso deve essere non negativa"
+
+#: objdump.c:3460
+msgid "error: instruction width must be positive"
+msgstr "errore: l'ampiezza dell'istruzione deve essere positiva"
+
+#: objdump.c:3469
+msgid "unrecognized -E option"
+msgstr "opzione -E non riconosciuta"
+
+#: objdump.c:3480
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "tipo non riconosciuto per --endian: \"%s\""
+
+#: od-xcoff.c:75
+#, c-format
+msgid ""
+"For XCOFF files:\n"
+" header Display the file header\n"
+" aout Display the auxiliary header\n"
+" sections Display the section headers\n"
+" syms Display the symbols table\n"
+" relocs Display the relocation entries\n"
+" lineno Display the line number entries\n"
+" loader Display loader section\n"
+" except Display exception table\n"
+" typchk Display type-check section\n"
+" traceback Display traceback tags\n"
+" toc Display toc symbols\n"
+msgstr ""
+"Per file XCOFF:\n"
+" header Visualizza l'intestazione del file\n"
+" aout Visualizza l'intestazione ausiliaria\n"
+" sections Visualizza le intestazioni delle sezioni\n"
+" syms Visualizza la tabella dei simboli\n"
+" relocs Visualizza le voci di rilocazione\n"
+" lineno Visualizza le voci dei numeri di riga\n"
+" loader Visualizza la sezione del caricatore\n"
+" except Visualizza la tabella delle eccezioni\n"
+" typchk Visualizza la sezione di controllo dei tipi\n"
+" traceback Visualizza i tag del tracciamento\n"
+" toc Visualizza i simboli toc\n"
+
+#: od-xcoff.c:416
+#, c-format
+msgid " nbr sections: %d\n"
+msgstr " num sezioni: %d\n"
+
+#: od-xcoff.c:417
+#, c-format
+msgid " time and date: 0x%08x - "
+msgstr " orario e data: 0x%08x - "
+
+#: od-xcoff.c:419
+#, c-format
+msgid "not set\n"
+msgstr "non impostati\n"
+
+#: od-xcoff.c:426
+#, c-format
+msgid " symbols off: 0x%08x\n"
+msgstr " pos simboli: 0x%08x\n"
+
+#: od-xcoff.c:427
+#, c-format
+msgid " nbr symbols: %d\n"
+msgstr " num simboli: %d\n"
+
+#: od-xcoff.c:428
+#, c-format
+msgid " opt hdr sz: %d\n"
+msgstr " dim int opz: %d\n"
+
+#: od-xcoff.c:429
+#, c-format
+msgid " flags: 0x%04x "
+msgstr " flag: 0x%04x "
+
+#: od-xcoff.c:443
+#, c-format
+msgid "Auxiliary header:\n"
+msgstr "Intestazione ausiliaria:\n"
+
+#: od-xcoff.c:446
+#, c-format
+msgid " No aux header\n"
+msgstr " Nessuna intestazione ausiliaria\n"
+
+#: od-xcoff.c:451
+#, c-format
+msgid "warning: optionnal header size too large (> %d)\n"
+msgstr "attenzione: dimensione dell'intestazione opzionale troppo grande (> %d)\n"
+
+#: od-xcoff.c:457
+msgid "cannot read auxhdr"
+msgstr "impossibile leggere auxhdr"
+
+#: od-xcoff.c:462
+#, c-format
+msgid " o_mflag (magic): 0x%04x 0%04o\n"
+msgstr " o_mflag (magic): 0x%04x 0%04o\n"
+
+#: od-xcoff.c:463
+#, c-format
+msgid " o_vstamp: 0x%04x\n"
+msgstr " o_vstamp: 0x%04x\n"
+
+#: od-xcoff.c:465
+#, c-format
+msgid " o_tsize: 0x%08x\n"
+msgstr " o_tsize: 0x%08x\n"
+
+#: od-xcoff.c:467
+#, c-format
+msgid " o_dsize: 0x%08x\n"
+msgstr " o_dsize: 0x%08x\n"
+
+#: od-xcoff.c:469
+#, c-format
+msgid " o_entry: 0x%08x\n"
+msgstr " o_entry: 0x%08x\n"
+
+#: od-xcoff.c:471
+#, c-format
+msgid " o_text_start: 0x%08x\n"
+msgstr " o_text_start: 0x%08x\n"
+
+#: od-xcoff.c:473
+#, c-format
+msgid " o_data_start: 0x%08x\n"
+msgstr " o_data_start: 0x%08x\n"
+
+#: od-xcoff.c:477
+#, c-format
+msgid " o_toc: 0x%08x\n"
+msgstr " o_toc: 0x%08x\n"
+
+#: od-xcoff.c:479
+#, c-format
+msgid " o_snentry: 0x%04x\n"
+msgstr " o_snentry: 0x%04x\n"
+
+#: od-xcoff.c:481
+#, c-format
+msgid " o_sntext: 0x%04x\n"
+msgstr " o_sntext: 0x%04x\n"
+
+#: od-xcoff.c:483
+#, c-format
+msgid " o_sndata: 0x%04x\n"
+msgstr " o_sndata: 0x%04x\n"
+
+#: od-xcoff.c:485
+#, c-format
+msgid " o_sntoc: 0x%04x\n"
+msgstr " o_sntoc: 0x%04x\n"
+
+#: od-xcoff.c:487
+#, c-format
+msgid " o_snloader: 0x%04x\n"
+msgstr " o_snloader: 0x%04x\n"
+
+#: od-xcoff.c:489
+#, c-format
+msgid " o_snbss: 0x%04x\n"
+msgstr " o_snbss: 0x%04x\n"
+
+#: od-xcoff.c:491
+#, c-format
+msgid " o_algntext: %u\n"
+msgstr " o_algntext: %u\n"
+
+#: od-xcoff.c:493
+#, c-format
+msgid " o_algndata: %u\n"
+msgstr " o_algndata: %u\n"
+
+#: od-xcoff.c:495
+#, c-format
+msgid " o_modtype: 0x%04x"
+msgstr " o_modtype: 0x%04x"
+
+#: od-xcoff.c:500
+#, c-format
+msgid " o_cputype: 0x%04x\n"
+msgstr " o_cputype: 0x%04x\n"
+
+#: od-xcoff.c:502
+#, c-format
+msgid " o_maxstack: 0x%08x\n"
+msgstr " o_maxstack: 0x%08x\n"
+
+#: od-xcoff.c:504
+#, c-format
+msgid " o_maxdata: 0x%08x\n"
+msgstr " o_maxdata: 0x%08x\n"
+
+#: od-xcoff.c:507
+#, c-format
+msgid " o_debugger: 0x%08x\n"
+msgstr " o_debugger: 0x%08x\n"
+
+#: od-xcoff.c:521
+#, c-format
+msgid "Section headers (at %u+%u=0x%08x to 0x%08x):\n"
+msgstr "Intestazioni di sezione (a %u+%u=0x%08x su 0x%08x):\n"
+
+#: od-xcoff.c:526
+#, c-format
+msgid " No section header\n"
+msgstr " Nessuna intestazione di sezione\n"
+
+#: od-xcoff.c:531 od-xcoff.c:542 od-xcoff.c:598
+msgid "cannot read section header"
+msgstr "impossibile leggere l'intestazione della sezione"
+
+#: od-xcoff.c:534
+#, c-format
+msgid " # Name paddr vaddr size scnptr relptr lnnoptr nrel nlnno\n"
+msgstr " # Nome indfis indvir dimens pntsez pntril pntnrig nril numrig\n"
+
+#: od-xcoff.c:546
+#, c-format
+msgid "%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n"
+msgstr "%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n"
+
+#: od-xcoff.c:557
+#, c-format
+msgid " Flags: %08x "
+msgstr " Flag: %08x "
+
+#: od-xcoff.c:565
+#, c-format
+msgid "overflow - nreloc: %u, nlnno: %u\n"
+msgstr "overflow - nriloc: %u, numrig: %u\n"
+
+#: od-xcoff.c:586 od-xcoff.c:919 od-xcoff.c:974
+msgid "cannot read section headers"
+msgstr "impossibile leggere le intestazioni di sezione"
+
+#: od-xcoff.c:650
+msgid "cannot read strings table len"
+msgstr "impossibile leggere la lunghezza della tabella delle stringhe"
+
+#: od-xcoff.c:664
+msgid "cannot read strings table"
+msgstr "impossibile leggere la tabella delle stringhe"
+
+#: od-xcoff.c:672
+msgid "cannot read symbol table"
+msgstr "impossibile leggere la tabella dei simboli"
+
+#: od-xcoff.c:687
+msgid "cannot read symbol entry"
+msgstr "impossibile leggere la voce di simbolo"
+
+#: od-xcoff.c:722
+msgid "cannot read symbol aux entry"
+msgstr "impossibile leggere la voce ausiliaria del simbolo"
+
+#: od-xcoff.c:744
+#, c-format
+msgid "Symbols table (strtable at 0x%08x)"
+msgstr "Tabella dei simboli (strtable a 0x%08x)"
+
+#: od-xcoff.c:749
+#, c-format
+msgid ""
+":\n"
+" No symbols\n"
+msgstr ""
+":\n"
+" Nessun simbolo\n"
+
+#: od-xcoff.c:755
+#, c-format
+msgid " (no strings):\n"
+msgstr " (nessuna stringa):\n"
+
+#: od-xcoff.c:757
+#, c-format
+msgid " (strings size: %08x):\n"
+msgstr " (dimensione stringhe: %08x):\n"
+
+#: od-xcoff.c:770
+#, c-format
+msgid " # sc value section type aux name/off\n"
+msgstr " # sc valore sezione tipo aus nome/pos\n"
+
+#: od-xcoff.c:821
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+msgstr " lunsez: %08x nriloc: %-6u numrig: %-6u\n"
+
+#: od-xcoff.c:827
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u\n"
+msgstr " lunsez: %08x nriloc: %-6u\n"
+
+#. Function aux entry.
+#: od-xcoff.c:837
+#, c-format
+msgid " exptr: %08x fsize: %08x lnnoptr: %08x endndx: %u\n"
+msgstr " pntecc: %08x dimf: %08x pntnrig: %08x indfin: %u\n"
+
+#: od-xcoff.c:856
+#, c-format
+msgid " scnsym: %-8u"
+msgstr " simsez: %-8u"
+
+#: od-xcoff.c:858
+#, c-format
+msgid " scnlen: %08x"
+msgstr " lunsez: %08x"
+
+#: od-xcoff.c:859
+#, c-format
+msgid " h: parm=%08x sn=%04x al: 2**%u"
+msgstr " h: parm=%08x sn=%04x al: 2**%u"
+
+#: od-xcoff.c:863
+#, c-format
+msgid " typ: "
+msgstr " tip: "
+
+#: od-xcoff.c:865
+#, c-format
+msgid " cl: "
+msgstr " cl: "
+
+#: od-xcoff.c:878
+#, c-format
+msgid " ftype: %02x "
+msgstr " tipof: %02x "
+
+#: od-xcoff.c:881
+#, c-format
+msgid "fname: %.14s"
+msgstr "nomef: %.14s"
+
+#: od-xcoff.c:887
+#, c-format
+msgid " %s"
+msgstr " %s"
+
+#: od-xcoff.c:889
+#, c-format
+msgid "offset: %08x"
+msgstr "offset: %08x"
+
+#: od-xcoff.c:896
+#, c-format
+msgid " lnno: %u\n"
+msgstr " nrig: %u\n"
+
+#: od-xcoff.c:931
+#, c-format
+msgid "Relocations for %s (%u)\n"
+msgstr "Rilocazioni per %s (%u)\n"
+
+#: od-xcoff.c:934
+msgid "cannot read relocations"
+msgstr "impossibile leggere le rilocazioni"
+
+#: od-xcoff.c:937
+#, c-format
+msgid "vaddr sgn mod sz type symndx symbol\n"
+msgstr "indv seg mod dim tipo indsim simbolo\n"
+
+#: od-xcoff.c:946
+msgid "cannot read relocation entry"
+msgstr "impossibile leggere la voce di rilocazione"
+
+#: od-xcoff.c:950
+#, c-format
+msgid "%08x %c %c %-2u "
+msgstr "%08x %c %c %-2u "
+
+#: od-xcoff.c:986
+#, c-format
+msgid "Line numbers for %s (%u)\n"
+msgstr "Numeri di riga per %s (%u)\n"
+
+#: od-xcoff.c:989
+msgid "cannot read line numbers"
+msgstr "impossibile leggere i numeri di riga"
+
+#: od-xcoff.c:992
+#, c-format
+msgid "lineno symndx/paddr\n"
+msgstr "numrig indsim/indfis\n"
+
+#: od-xcoff.c:1000
+msgid "cannot read line number entry"
+msgstr "impossibile leggere la voce del numero di riga"
+
+#: od-xcoff.c:1004
+#, c-format
+msgid " %-6u "
+msgstr " %-6u "
+
+#: od-xcoff.c:1043
+#, c-format
+msgid "no .loader section in file\n"
+msgstr "nessuna sezione .loader nel file\n"
+
+#: od-xcoff.c:1049
+#, c-format
+msgid "section .loader is too short\n"
+msgstr "la sezione .loader è troppo corta\n"
+
+#: od-xcoff.c:1056
+#, c-format
+msgid "Loader header:\n"
+msgstr "Intestazione del caricatore:\n"
+
+#: od-xcoff.c:1058
+#, c-format
+msgid " version: %u\n"
+msgstr " versione: %u\n"
+
+#: od-xcoff.c:1061
+#, c-format
+msgid " Unhandled version\n"
+msgstr " Versione non gestita\n"
+
+#: od-xcoff.c:1066
+#, c-format
+msgid " nbr symbols: %u\n"
+msgstr " num simboli: %u\n"
+
+#: od-xcoff.c:1068
+#, c-format
+msgid " nbr relocs: %u\n"
+msgstr " num rilocazioni: %u\n"
+
+#: od-xcoff.c:1069
+#, c-format
+msgid " import strtab len: %u\n"
+msgstr " lun strtab import: %u\n"
+
+#: od-xcoff.c:1072
+#, c-format
+msgid " nbr import files: %u\n"
+msgstr " num file import: %u\n"
+
+#: od-xcoff.c:1074
+#, c-format
+msgid " import file off: %u\n"
+msgstr " pos file import: %u\n"
+
+#: od-xcoff.c:1076
+#, c-format
+msgid " string table len: %u\n"
+msgstr " lun tab stringhe: %u\n"
+
+#: od-xcoff.c:1078
+#, c-format
+msgid " string table off: %u\n"
+msgstr " pos tab stringhe: %u\n"
+
+#: od-xcoff.c:1081
+#, c-format
+msgid "Dynamic symbols:\n"
+msgstr "Simboli dinamici:\n"
+
+#: od-xcoff.c:1082
+#, c-format
+msgid " # value sc IFEW ty class file pa name\n"
+msgstr " # valore sz ti IFEW class file pa nome\n"
+
+#: od-xcoff.c:1087
+#, c-format
+msgid " %4u %08x %3u "
+msgstr " %4u %08x %3u "
+
+#: od-xcoff.c:1100
+#, c-format
+msgid " %3u %3u "
+msgstr " %3u %3u "
+
+#: od-xcoff.c:1109
+#, c-format
+msgid "(bad offset: %u)"
+msgstr "(offset errato: %u)"
+
+#: od-xcoff.c:1116
+#, c-format
+msgid "Dynamic relocs:\n"
+msgstr "Rilocazioni dinamiche:\n"
+
+#: od-xcoff.c:1117
+#, c-format
+msgid " vaddr sec sz typ sym\n"
+msgstr " indv sez dim tip sim\n"
+
+#: od-xcoff.c:1129
+#, c-format
+msgid " %08x %3u %c%c %2u "
+msgstr " %08x %3u %c%c %2u "
+
+#: od-xcoff.c:1140
+#, c-format
+msgid ".text"
+msgstr ".text"
+
+#: od-xcoff.c:1143
+#, c-format
+msgid ".data"
+msgstr ".data"
+
+#: od-xcoff.c:1146
+#, c-format
+msgid ".bss"
+msgstr ".bss"
+
+#: od-xcoff.c:1149
+#, c-format
+msgid "%u"
+msgstr "%u"
+
+#: od-xcoff.c:1155
+#, c-format
+msgid "Import files:\n"
+msgstr "File di importazione:\n"
+
+#: od-xcoff.c:1187
+#, c-format
+msgid "no .except section in file\n"
+msgstr "nessuna sezione .except nel file\n"
+
+#: od-xcoff.c:1195
+#, c-format
+msgid "Exception table:\n"
+msgstr "Tabella delle eccezioni:\n"
+
+#: od-xcoff.c:1196
+#, c-format
+msgid "lang reason sym/addr\n"
+msgstr "ling motivo simb/indir\n"
+
+#: od-xcoff.c:1204
+#, c-format
+msgid " %02x %02x "
+msgstr " %02x %02x "
+
+#: od-xcoff.c:1209
+#, c-format
+msgid "@%08x"
+msgstr "@%08x"
+
+#: od-xcoff.c:1229
+#, c-format
+msgid "no .typchk section in file\n"
+msgstr "nessuna sezione .typchk nel file\n"
+
+#: od-xcoff.c:1236
+#, c-format
+msgid "Type-check section:\n"
+msgstr "Sezione di controllo dei tipi:\n"
+
+#: od-xcoff.c:1237
+#, c-format
+msgid "offset len lang-id general-hash language-hash\n"
+msgstr "posiz lun id-ling hash-general hash-linguaggio\n"
+
+#: od-xcoff.c:1282
+#, c-format
+msgid " address beyond section size\n"
+msgstr " indirizzo oltre la dimensione della sezione\n"
+
+#: od-xcoff.c:1292
+#, c-format
+msgid " tags at %08x\n"
+msgstr " tag a 0x%08x\n"
+
+#: od-xcoff.c:1299
+#, c-format
+msgid " version: %u, lang: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n"
+msgstr " versione: %u, ling: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n"
+
+#: od-xcoff.c:1306
+#, c-format
+msgid " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n"
+msgstr " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n"
+
+#: od-xcoff.c:1312
+#, c-format
+msgid " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n"
+msgstr " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n"
+
+#: od-xcoff.c:1318
+#, c-format
+msgid " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n"
+msgstr " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n"
+
+#: od-xcoff.c:1324
+#, c-format
+msgid " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n"
+msgstr " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n"
+
+#: od-xcoff.c:1337
+#, c-format
+msgid " parminfo: 0x%08x\n"
+msgstr " parminfo: 0x%08x\n"
+
+#: od-xcoff.c:1348
+#, c-format
+msgid " tb_offset: 0x%08x (start=0x%08x)\n"
+msgstr " tb_offset: 0x%08x (inizio=0x%08x)\n"
+
+#: od-xcoff.c:1359
+#, c-format
+msgid " hand_mask_offset: 0x%08x\n"
+msgstr " hand_mask_offset: 0x%08x\n"
+
+#: od-xcoff.c:1370
+#, c-format
+msgid " number of CTL anchors: %u\n"
+msgstr " numero di ancoraggi CTL: %u\n"
+
+#: od-xcoff.c:1375
+#, c-format
+msgid " CTL[%u]: %08x\n"
+msgstr " CTL[%u]: %08x\n"
+
+#: od-xcoff.c:1389
+#, c-format
+msgid " Name (len: %u): "
+msgstr " Nome (lun: %u): "
+
+#: od-xcoff.c:1392
+#, c-format
+msgid "[truncated]\n"
+msgstr "[troncato]\n"
+
+#: od-xcoff.c:1407
+#, c-format
+msgid " alloca reg: %u\n"
+msgstr " reg alloc: %u\n"
+
+#: od-xcoff.c:1411
+#, c-format
+msgid " (end of tags at %08x)\n"
+msgstr " (fine dei tag a %08x)\n"
+
+#: od-xcoff.c:1414
+#, c-format
+msgid " no tags found\n"
+msgstr " nessun tag trovato\n"
+
+#: od-xcoff.c:1418
+#, c-format
+msgid " Truncated .text section\n"
+msgstr " Sezione .text troncata\n"
+
+#: od-xcoff.c:1503
+#, c-format
+msgid "TOC:\n"
+msgstr "TOC:\n"
+
+#: od-xcoff.c:1546
+#, c-format
+msgid "Nbr entries: %-8u Size: %08x (%u)\n"
+msgstr "Num voci: %-8u Dimensione: %08x (%u)\n"
+
+#: od-xcoff.c:1630
+msgid "cannot read header"
+msgstr "impossibile leggere l'intestazione"
+
+#: od-xcoff.c:1638
+#, c-format
+msgid "File header:\n"
+msgstr "Intestazione del file:\n"
+
+#: od-xcoff.c:1639
+#, c-format
+msgid " magic: 0x%04x (0%04o) "
+msgstr " magic: 0x%04x (0%04o) "
+
+#: od-xcoff.c:1643
+#, c-format
+msgid "(WRMAGIC: writable text segments)"
+msgstr "(WRMAGIC: segmenti di testo scrivibili)"
+
+#: od-xcoff.c:1646
+#, c-format
+msgid "(ROMAGIC: readonly sharablee text segments)"
+msgstr "(ROMAGIC: segmenti di testo condivisibili in sola lettura)"
+
+#: od-xcoff.c:1649
+#, c-format
+msgid "(TOCMAGIC: readonly text segments and TOC)"
+msgstr "(TOCMAGIC: segmenti di testo e TOC in sola lettura)"
+
+#: od-xcoff.c:1652
+#, c-format
+msgid "unknown magic"
+msgstr "magic sconosciuto"
+
+#: od-xcoff.c:1659
+#, c-format
+msgid " Unhandled magic\n"
+msgstr " Magic non gestito\n"
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr "specificato un valore non valido per pragma code_page.\n"
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: codice di tipo errato 0x%x"
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment non riuscita: %s"
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent non riuscita: %s"
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf senza la funzione che lo precede"
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: .ef inatteso\n"
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: informazioni di debug non riconosciute"
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "Ultime voci stabs prima dell'errore:\n"
+
+#: readelf.c:265
+msgid "<none>"
+msgstr "<nessuno>"
+
+#: readelf.c:266
+msgid "<no-name>"
+msgstr "<nessun-nome>"
+
+#: readelf.c:267 readelf.c:5026 readelf.c:5536 readelf.c:8077 readelf.c:8195
+#: readelf.c:9154 readelf.c:9234 readelf.c:9287 readelf.c:12150
+#: readelf.c:12153
+msgid "<corrupt>"
+msgstr "<danneggiato>"
+
+#: readelf.c:300
+#, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "Impossibile cercare in 0x%lx per %s\n"
+
+#: readelf.c:315
+#, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Memoria esaurita allocando 0x%lx byte per %s\n"
+
+#: readelf.c:325
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Impossibile leggere in 0x%lx byte di %s\n"
+
+#: readelf.c:625
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Non si conoscono le rilocazioni dell'architettura di questa macchina\n"
+
+#: readelf.c:646 readelf.c:676 readelf.c:744 readelf.c:773
+msgid "relocs"
+msgstr "rilocazioni"
+
+#: readelf.c:658 readelf.c:688 readelf.c:755 readelf.c:784
+msgid "out of memory parsing relocs\n"
+msgstr "memoria esaurita analizzando le rilocazioni\n"
+
+#: readelf.c:889
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr " Offset Info Tipo Valore sim Nome simbolo + Addendo\n"
+
+#: readelf.c:891
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr " Offset Info Tipo Valore sim Nome sim + Addendo\n"
+
+#: readelf.c:896
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " Offset Info Tipo Valore sim Nome simbolo\n"
+
+#: readelf.c:898
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " Offset Info Tipo Valore sim Nome sim\n"
+
+#: readelf.c:906
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr " Offset Info Tipo Valore simbolo Nome simbolo + Addendo\n"
+
+#: readelf.c:908
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr " Offset Info Tipo Valore sim Nome sim + Addendo\n"
+
+#: readelf.c:913
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr " Offset Info Tipo Valore simbolo Nome simbolo\n"
+
+#: readelf.c:915
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " Offset Info Tipo Valore sim Nome sim\n"
+
+#: readelf.c:1219 readelf.c:1378 readelf.c:1386
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "non riconosciuto: %-7lx"
+
+#: readelf.c:1244
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<addendo sconosciuto: %lx>"
+
+#: readelf.c:1251
+#, c-format
+msgid " bad symbol index: %08lx"
+msgstr " indice errato del simbolo: %08lx"
+
+#: readelf.c:1336
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr "<indice della tabella di stringhe: %3ld>"
+
+#: readelf.c:1338
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<indice della tabella di stringhe danneggiato: %3ld>"
+
+#: readelf.c:1731
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "Specifico del processore: %lx"
+
+#: readelf.c:1755
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "Specifico del sistema operativo: %lx"
+
+#: readelf.c:1759 readelf.c:2821
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<sconosciuto>: %lx"
+
+#: readelf.c:1772
+msgid "NONE (None)"
+msgstr "NONE (nessuno)"
+
+#: readelf.c:1773
+msgid "REL (Relocatable file)"
+msgstr "REL (file rilocabile)"
+
+#: readelf.c:1774
+msgid "EXEC (Executable file)"
+msgstr "EXEC (file eseguibile)"
+
+#: readelf.c:1775
+msgid "DYN (Shared object file)"
+msgstr "DYN (file oggetto condiviso)"
+
+#: readelf.c:1776
+msgid "CORE (Core file)"
+msgstr "CORE (file core)"
+
+#: readelf.c:1780
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "Specifico del processore: (%x)"
+
+#: readelf.c:1782
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "Specifico del SO: (%x)"
+
+#: readelf.c:1784 readelf.c:3068
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<sconosciuto>: %x"
+
+#: readelf.c:1796
+msgid "None"
+msgstr "Nessuna"
+
+#: readelf.c:1964
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr "<sconosciuta>: 0x%x"
+
+#: readelf.c:2150
+msgid ", <unknown>"
+msgstr ", <sconosciuta>"
+
+#: readelf.c:2236 readelf.c:7428
+msgid "unknown"
+msgstr "sconosciuta"
+
+#: readelf.c:2237
+msgid "unknown mac"
+msgstr "mac sconosciuta"
+
+#: readelf.c:2301
+msgid ", relocatable"
+msgstr ", rilocabile"
+
+#: readelf.c:2304
+msgid ", relocatable-lib"
+msgstr ", lib rilocabile"
+
+#: readelf.c:2327
+msgid ", unknown v850 architecture variant"
+msgstr ", variante dell'architettura v850 sconosciuta"
+
+#: readelf.c:2384
+msgid ", unknown CPU"
+msgstr ", CPU sconosciuta"
+
+#: readelf.c:2399
+msgid ", unknown ABI"
+msgstr ", ABI sconosciuto"
+
+#: readelf.c:2419 readelf.c:2453
+msgid ", unknown ISA"
+msgstr ", ISA sconosciuta"
+
+#: readelf.c:2626
+msgid "Standalone App"
+msgstr "Applicazione autonoma"
+
+#: readelf.c:2635
+msgid "Bare-metal C6000"
+msgstr "C6000 Bare-metal"
+
+#: readelf.c:2645 readelf.c:3431 readelf.c:3447
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<sconosciuta: %x>"
+
+#: readelf.c:3123
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Uso: readelf <opzioni> file-elf\n"
+
+#: readelf.c:3124
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr " Visualizza informazioni sul contenuto dei file in formato ELF\n"
+
+#: readelf.c:3125
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" --dyn-syms Display the dynamic symbol table\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as relocated bytes\n"
+" -w[lLiaprmfFsoRt] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" Le opzioni sono:\n"
+" -a --all Equivalente a: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Visualizza l'intestazione del file ELF\n"
+" -l --program-headers Visualizza le intestazioni del programma\n"
+" --segments Un sinonimo per --program-headers\n"
+" -S --section-headers Visualizza l'intestazione delle sezioni\n"
+" --sections Un sinonimo per --section-headers\n"
+" -g --section-groups Visualizza i gruppi delle sezioni\n"
+" -t --section-details Visualizza i dettagli delle sezioni\n"
+" -e --headers Equivalente a: -h -l -S\n"
+" -s --syms Visualizza la tabella dei simboli\n"
+" --symbols Un sinonimo per --syms\n"
+" --dyn-syms Visualizza la tabella dei simboli dinamici\n"
+" -n --notes Visualizza le note sul core (se presenti)\n"
+" -r --relocs Visualizza le rilocazioni (se presenti)\n"
+" -u --unwind Visualizza le informazioni di espansione (se presenti)\n"
+" -d --dynamic Visualizza la sezione dinamica (se presente)\n"
+" -V --version-info Visualizza le sezioni sulla versione (se presenti)\n"
+" -A --arch-specific Visualizza le informazioni specifiche sull'architettura (se presenti)\n"
+" -c --archive-index Visualizza l'indice del simbolo/file in un archivio\n"
+" -D --use-dynamic Usa le informazioni sulla sezione dinamica nel visualizzare i simboli\n"
+" -x --hex-dump=<numero|nome>\n"
+" Esegue il dump del contenuto della sezione <numero|nome> in byte\n"
+" -p --string-dump=<numero|nome>\n"
+" Esegue il dump del contenuto della sezione <numero|nome> in stringhe\n"
+" -R --relocated-dump=<numero|nome>\n"
+" Esegue il dump del contenuto della sezione <numero|nome> in byte rilocati\n"
+" -w[lLiaprmfFsoRt] oppure\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Visualizza il contenuto delle sezioni di debug di DWARF2\n"
+
+#: readelf.c:3157
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+msgstr ""
+" --dwarf-depth=N Non visualizza i DIE alla profondità N o superiore\n"
+" --dwarf-start=N Visualizza i DIE partendo da N, alla stessa profondità\n"
+" o superiore\n"
+
+#: readelf.c:3162
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+" -i --instruction-dump=<numero|nome>\n"
+" Disassembla i contenuti della sezione <numero|nome>\n"
+
+#: readelf.c:3166
+#, 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 Visualizza l'istogramma delle lunghezze degli elenchi dei bucket\n"
+" -W --wide Permette all'output di superare gli 80 caratteri di ampiezza\n"
+" @<file> Legge le opzioni dal <file>\n"
+" -H --help Visualizza questo aiuto\n"
+" -v --version Visualizza il numero di versione di readelf\n"
+
+#: readelf.c:3195 readelf.c:3224 readelf.c:3228 readelf.c:13374
+msgid "Out of memory allocating dump request table.\n"
+msgstr "Memoria esaurita nell'allocazione della tabella delle richieste di dump.\n"
+
+#: readelf.c:3400
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Opzione \"-%c\" non valida\n"
+
+#: readelf.c:3415
+msgid "Nothing to do.\n"
+msgstr "Nulla da fare.\n"
+
+#: readelf.c:3427 readelf.c:3443 readelf.c:8013
+msgid "none"
+msgstr "nessuna"
+
+#: readelf.c:3444
+msgid "2's complement, little endian"
+msgstr "complemento a 2, little endian"
+
+#: readelf.c:3445
+msgid "2's complement, big endian"
+msgstr "complemento a 2, big endian"
+
+#: readelf.c:3463
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "Non è un file ELF, ha i byte magic iniziali errati\n"
+
+#: readelf.c:3473
+#, c-format
+msgid "ELF Header:\n"
+msgstr "Intestazione ELF:\n"
+
+#: readelf.c:3474
+#, c-format
+msgid " Magic: "
+msgstr " Magic: "
+
+#: readelf.c:3478
+#, c-format
+msgid " Class: %s\n"
+msgstr " Classe: %s\n"
+
+#: readelf.c:3480
+#, c-format
+msgid " Data: %s\n"
+msgstr " Dati: %s\n"
+
+#: readelf.c:3482
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " Versione: %d %s\n"
+
+#: readelf.c:3487
+#, c-format
+msgid "<unknown: %lx>"
+msgstr "<sconosciuta: %lx>"
+
+#: readelf.c:3489
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " SO/ABI: %s\n"
+
+#: readelf.c:3491
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " Versione ABI: %d\n"
+
+#: readelf.c:3493
+#, c-format
+msgid " Type: %s\n"
+msgstr " Tipo: %s\n"
+
+#: readelf.c:3495
+#, c-format
+msgid " Machine: %s\n"
+msgstr " Macchina: %s\n"
+
+#: readelf.c:3497
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " Versione: 0x%lx\n"
+
+#: readelf.c:3500
+#, c-format
+msgid " Entry point address: "
+msgstr " Indirizzo punto d'ingresso: "
+
+#: readelf.c:3502
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" Inizio intestazioni di programma "
+
+#: readelf.c:3504
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (byte nel file)\n"
+" Inizio intestazioni di sezione: "
+
+#: readelf.c:3506
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (byte nel file)\n"
+
+#: readelf.c:3508
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Flag: 0x%lx%s\n"
+
+#: readelf.c:3511
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " Dimensione di questa intestazione: %ld (byte)\n"
+
+#: readelf.c:3513
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " Dimens. intestazioni di programma: %ld (byte)\n"
+
+#: readelf.c:3515
+#, c-format
+msgid " Number of program headers: %ld"
+msgstr " Numero intestazioni di programma: %ld"
+
+#: readelf.c:3522
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " Dimens. intestazioni di sezione: %ld (byte)\n"
+
+#: readelf.c:3524
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " Numero di intestazioni di sezione: %ld"
+
+#: readelf.c:3529
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " Indice della tabella di stringhe delle intestazioni di sezione: %ld"
+
+#: readelf.c:3536
+#, c-format
+msgid " <corrupt: out of range>"
+msgstr " <danneggiato: fuori dall'intervallo>"
+
+#: readelf.c:3570 readelf.c:3604
+msgid "program headers"
+msgstr "intestazioni di programma"
+
+#: readelf.c:3671
+msgid "possibly corrupt ELF header - it has a non-zero program header offset, but no program headers"
+msgstr "forse l'intestazione ELF è danneggiata, ha un offset di intestazione di programma diverso da zero ma senza alcuna intestazione di programma"
+
+#: readelf.c:3674
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"Non ci sono intestazioni di programma in questo file.\n"
+
+#: readelf.c:3680
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"File elf di tipo %s\n"
+
+#: readelf.c:3681
+#, c-format
+msgid "Entry point "
+msgstr "Punto di ingresso "
+
+#: readelf.c:3683
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"Ci sono %d intestazioni di programma, iniziando dall'offset "
+
+#: readelf.c:3695 readelf.c:3697
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"Intestazioni di programma:\n"
+
+#: readelf.c:3701
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Tipo Offset IndirVirt IndirFis DimFile DimMem Flg Allin\n"
+
+#: readelf.c:3704
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Tipo Offset IndirVirt IndirFis DimFile DimMem Flg Allin\n"
+
+#: readelf.c:3708
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " Tipo Offset IndirVirt IndirFis\n"
+
+#: readelf.c:3710
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " DimFile DimMem Flag Allin\n"
+
+#: readelf.c:3803
+msgid "more than one dynamic segment\n"
+msgstr "più di un segmento dinamico\n"
+
+#: readelf.c:3822
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr "nessuna sezione .dynamic nel segmento dinamico\n"
+
+#: readelf.c:3837
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr "la sezione .dynamic non è contenuta all'interno del segmento dinamico\n"
+
+#: readelf.c:3840
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr "la sezione .dynamic non è la prima sezione nel segmento dinamico.\n"
+
+#: readelf.c:3848
+msgid "Unable to find program interpreter name\n"
+msgstr "Impossibile trovare il nome dell'interprete di programma\n"
+
+#: readelf.c:3855
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr "Errore interno: impossibile creare la stringa di formato per visualizzare l'interprete di programma\n"
+
+#: readelf.c:3859
+msgid "Unable to read program interpreter name\n"
+msgstr "Impossibile leggere il nome dell'interprete di programma\n"
+
+#: readelf.c:3862
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [Richiesta dell'interprete di programma: %s]"
+
+#: readelf.c:3874
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" Mappatura da sezione a segmento:\n"
+
+#: readelf.c:3875
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " Sezioni del segmento...\n"
+
+#: readelf.c:3911
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "Impossibile interpretare gli indirizzi virtuali senza le intestazioni di programma.\n"
+
+#: readelf.c:3927
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "L'indirizzo virtuale 0x%lx non è situato in alcun segmento PT_LOAD.\n"
+
+#: readelf.c:3942 readelf.c:3985
+msgid "section headers"
+msgstr "intestazioni di sezione"
+
+#: readelf.c:4032 readelf.c:4107
+msgid "sh_entsize is zero\n"
+msgstr "sh_entsize è pari a zero\n"
+
+#: readelf.c:4040 readelf.c:4115
+msgid "Invalid sh_entsize\n"
+msgstr "sh_entsize non valida\n"
+
+#: readelf.c:4045 readelf.c:4120
+msgid "symbols"
+msgstr "simboli"
+
+#: readelf.c:4057 readelf.c:4132
+msgid "symtab shndx"
+msgstr "shndx symtab"
+
+#: readelf.c:4392
+#, c-format
+msgid "UNKNOWN (%*.*lx)"
+msgstr "SCONOSCIUTO (%*.*lx)"
+
+#: readelf.c:4414
+msgid "possibly corrupt ELF file header - it has a non-zero section header offset, but no section headers\n"
+msgstr "forse l'intestazione del file ELF è danneggiata, ha un offset di intestazione di sezione diverso da zero, ma senza alcuna intestazione di sezione\n"
+
+#: readelf.c:4417
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"Non ci sono sezioni in questo file.\n"
+
+#: readelf.c:4423
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "Ci sono %d intestazioni di sezione, iniziando dall'offset 0x%lx:\n"
+
+#: readelf.c:4444 readelf.c:5022 readelf.c:5433 readelf.c:5739 readelf.c:6152
+#: readelf.c:7036 readelf.c:9132
+msgid "string table"
+msgstr "tabella di stringhe"
+
+#: readelf.c:4511
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "La sezione %d ha una sh_entsize pari a %lx non valida (attesa %lx)\n"
+
+#: readelf.c:4531
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Il file contiene tabelle dei simboli dinamici multiple\n"
+
+#: readelf.c:4544
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Il file contiene tabelle di stringhe dinamiche multiple\n"
+
+#: readelf.c:4550
+msgid "dynamic strings"
+msgstr "stringhe dinamiche"
+
+#: readelf.c:4557
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Il file contiene tabelle shndx symtab multiple\n"
+
+#: readelf.c:4627
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"Intestazioni di sezione:\n"
+
+#: readelf.c:4629
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"Intestazione di sezione:\n"
+
+#: readelf.c:4635 readelf.c:4646 readelf.c:4657
+#, c-format
+msgid " [Nr] Name\n"
+msgstr " [N°] Nome\n"
+
+#: readelf.c:4636
+#, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr " Tipo Indir Off Dimen ES Lk Inf Al\n"
+
+#: readelf.c:4640
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr " [N°] Nome Tipo Indir Off Dimen ES Flg Lk Inf Al\n"
+
+#: readelf.c:4647
+#, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr " Tipo Indirizzo Off Dimen ES Lk Inf Al\n"
+
+#: readelf.c:4651
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr " [N°] Nome Tipo Indirizzo Off Dimen ES Flg Lk Inf Al\n"
+
+#: readelf.c:4658
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr " Tipo Indirizzo Offset Link\n"
+
+#: readelf.c:4659
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr " Dimensione DimEnt Info Allin\n"
+
+#: readelf.c:4663
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [N°] Nome Tipo Indirizzo Offset\n"
+
+#: readelf.c:4664
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " Dimensione DimEnt Flag Link Info Allin\n"
+
+#: readelf.c:4669
+#, c-format
+msgid " Flags\n"
+msgstr " Flag\n"
+
+#: readelf.c:4748
+#, c-format
+msgid "section %u: sh_link value of %u is larger than the number of sections\n"
+msgstr "sezione %u: il valore sh_link di %u è più grande del numero di sezioni\n"
+
+#: readelf.c:4847
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Legenda dei flag:\n"
+" W (scrittura), A (allocazione), X (esecuzione), M (unione), S (stringhe), l (grande)\n"
+" I (informazioni), L (ordine link), G (gruppo), T (TLS), E (esclusione), x (sconosciuto)\n"
+" O (richiesta elaborazione aggiuntiva SO) o (specifico del SO), p (specifico del processore)\n"
+
+#: readelf.c:4852
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Legenda dei flag:\n"
+" W (scrittura), A (allocazione), X (esecuzione), M (unione), S (stringhe)\n"
+" I (informazioni), L (ordine link), G (gruppo), T (TLS), E (esclusione), x (sconosciuto)\n"
+" O (richiesta elaborazione aggiuntiva SO) o (specifico del SO), p (specifico del processore)\n"
+
+#: readelf.c:4874
+#, c-format
+msgid "[<unknown>: 0x%x] "
+msgstr "[<sconosciuto>: 0x%x] "
+
+#: readelf.c:4899
+#, c-format
+msgid ""
+"\n"
+"There are no sections to group in this file.\n"
+msgstr ""
+"\n"
+"Non ci sono sezioni da raggruppare in questo file.\n"
+
+#: readelf.c:4906
+msgid "Section headers are not available!\n"
+msgstr "Le intestazioni di sezione non sono disponibili.\n"
+
+#: readelf.c:4930
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"Non ci sono gruppi di sezioni in questo file.\n"
+
+#: readelf.c:4967
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "sh_link errato nella sezione di gruppo \"%s\"\n"
+
+#: readelf.c:4981
+#, c-format
+msgid "Corrupt header in group section `%s'\n"
+msgstr "Intestazione danneggiata nella sezione di gruppo \"%s\"\n"
+
+#: readelf.c:4992
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "sh_info errato nella sezione di gruppo \"%s\"\n"
+
+#: readelf.c:5031
+msgid "section data"
+msgstr "dati di sezione"
+
+#: readelf.c:5040
+#, c-format
+msgid ""
+"\n"
+"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
+msgstr ""
+"\n"
+"%sla sezione di gruppo [%5u] \"%s\" [%s] contiene %u sezioni:\n"
+
+#: readelf.c:5043
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [Indice] Nome\n"
+
+#: readelf.c:5057
+#, c-format
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "sezione [%5u] nella sezione di gruppo [%5u] > sezione massima [%5u]\n"
+
+#: readelf.c:5066
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "la sezione [%5u] nella sezione di gruppo [%5u] è già nella sezione di gruppo [%5u]\n"
+
+#: readelf.c:5079
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr "sezione 0 nella sezione di gruppo [%5u]\n"
+
+#: readelf.c:5146
+msgid "dynamic section image fixups"
+msgstr "correzioni dell'immagine della sezione dinamica"
+
+#: readelf.c:5158
+#, c-format
+msgid ""
+"\n"
+"Image fixups for needed library #%d: %s - ident: %lx\n"
+msgstr ""
+"\n"
+"Correzioni dell'immagine per la libreria necessaria n° %d: %s - ident: %lx\n"
+
+#: readelf.c:5161
+#, c-format
+msgid "Seg Offset Type SymVec DataType\n"
+msgstr "Seg Posizione Tipo VetSim TipoDati\n"
+
+#: readelf.c:5193
+msgid "dynamic section image relas"
+msgstr "rilocazioni dell'immagine della sezione dinamica"
+
+#: readelf.c:5197
+#, c-format
+msgid ""
+"\n"
+"Image relocs\n"
+msgstr ""
+"\n"
+"Rilocazioni dell'immagine\n"
+
+#: readelf.c:5199
+#, c-format
+msgid "Seg Offset Type Addend Seg Sym Off\n"
+msgstr "Seg Posiz Tipo Addendo Seg Pos Sim\n"
+
+#: readelf.c:5254
+msgid "dynamic string section"
+msgstr "sezione delle stringhe dinamiche"
+
+#: readelf.c:5355
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"La sezione di rilocazione \"%s\" all'offset 0x%lx contiene %ld byte:\n"
+
+#: readelf.c:5370
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"Non ci sono rilocazioni dinamiche in questo file.\n"
+
+#: readelf.c:5394
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"La sezione di rilocazione "
+
+#: readelf.c:5399 readelf.c:5815 readelf.c:5830 readelf.c:6167
+#, c-format
+msgid "'%s'"
+msgstr "\"%s\""
+
+#: readelf.c:5401 readelf.c:5832 readelf.c:6169
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " all'offset 0x%lx contiene %lu voci:\n"
+
+#: readelf.c:5452
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"Non ci sono rilocazioni in questo file.\n"
+
+#: readelf.c:5590
+#, c-format
+msgid "\tUnknown version.\n"
+msgstr "\tVersione sconosciuta.\n"
+
+#: readelf.c:5643 readelf.c:6016
+msgid "unwind table"
+msgstr "tabella delle espansioni"
+
+#: readelf.c:5685 readelf.c:6098 readelf.c:6358
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Saltati i tipi di rilocazione inattesi %s\n"
+
+#: readelf.c:5747 readelf.c:6160 readelf.c:7044 readelf.c:7091
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"Non ci sono sezioni di espansione in questo file.\n"
+
+#: readelf.c:5810
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"Impossibile trovare la sezione con le informazioni di espansione per "
+
+#: readelf.c:5823
+msgid "unwind info"
+msgstr "informazioni di espansione"
+
+#: readelf.c:5825 readelf.c:6166
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"Sezione di espansione "
+
+#: readelf.c:6275
+msgid "unwind data"
+msgstr "dati di espansione"
+
+#: readelf.c:6329
+#, c-format
+msgid "Skipping unexpected relocation at offset 0x%lx\n"
+msgstr "Saltati i tipi di rilocazione inattesi all'offset 0x%lx\n"
+
+#: readelf.c:6433
+#, c-format
+msgid "[Truncated opcode]\n"
+msgstr "[Opcode troncato]\n"
+
+#: readelf.c:6477 readelf.c:6677
+#, c-format
+msgid "Refuse to unwind"
+msgstr "Espansione rifiutata"
+
+#: readelf.c:6500
+#, c-format
+msgid " [Reserved]"
+msgstr " [Riservato]"
+
+#: readelf.c:6528
+#, c-format
+msgid " finish"
+msgstr " fine"
+
+#: readelf.c:6533 readelf.c:6619
+#, c-format
+msgid "[Spare]"
+msgstr "[Libero]"
+
+#: readelf.c:6640 readelf.c:6774
+#, c-format
+msgid " [unsupported opcode]"
+msgstr " [opcode non supportato]"
+
+#: readelf.c:6666
+#, c-format
+msgid " 0x%02x "
+msgstr " 0x%02x "
+
+#: readelf.c:6671
+#, c-format
+msgid " sp = sp + %d"
+msgstr " sp = sp + %d"
+
+#: readelf.c:6724
+#, c-format
+msgid "pop frame {"
+msgstr "pop frame {"
+
+#: readelf.c:6735
+msgid "[pad]"
+msgstr "[riempimento]"
+
+#: readelf.c:6763
+#, c-format
+msgid "sp = sp + %ld"
+msgstr "sp = sp + %ld"
+
+#: readelf.c:6821
+#, c-format
+msgid " Personality routine: "
+msgstr " Routine di personalità: "
+
+#: readelf.c:6839
+#, c-format
+msgid " [Truncated data]\n"
+msgstr " [Dati troncati]\n"
+
+#: readelf.c:6854
+#, c-format
+msgid " Compact model %d\n"
+msgstr " Modello compatto %d\n"
+
+#: readelf.c:6890
+#, c-format
+msgid " Restore stack from frame pointer\n"
+msgstr " Ripristina lo stack dal puntatore del frame\n"
+
+#: readelf.c:6892
+#, c-format
+msgid " Stack increment %d\n"
+msgstr " Incremento dello stack %d\n"
+
+#: readelf.c:6893
+#, c-format
+msgid " Registers restored: "
+msgstr " Registri ripristinati: "
+
+#: readelf.c:6898
+#, c-format
+msgid " Return register: %s\n"
+msgstr " Registro di ritorno: %s\n"
+
+#: readelf.c:6981
+#, c-format
+msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
+msgstr "Impossibile localizzare la sezione .ARM.extab contenente 0x%lx.\n"
+
+#: readelf.c:7050
+#, c-format
+msgid ""
+"\n"
+"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+"\n"
+"L'indice della tabella delle espansioni \"%s\" alla posizione 0x%lx contiene %lu voci:\n"
+
+#: readelf.c:7102
+#, c-format
+msgid "NONE\n"
+msgstr "NESSUNO\n"
+
+#: readelf.c:7128
+#, c-format
+msgid "Interface Version: %s\n"
+msgstr "Versione dell'interfaccia: %s\n"
+
+#: readelf.c:7130
+#, c-format
+msgid "<corrupt: %ld>\n"
+msgstr "<danneggiato: %ld>\n"
+
+#: readelf.c:7143
+#, c-format
+msgid "Time Stamp: %s\n"
+msgstr "Data e ora: %s\n"
+
+#: readelf.c:7320 readelf.c:7366
+msgid "dynamic section"
+msgstr "sezione dinamica"
+
+#: readelf.c:7444
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"Non ci sono sezioni dinamiche in questo file.\n"
+
+#: readelf.c:7482
+msgid "Unable to seek to end of file!\n"
+msgstr "Impossibile cercare alla fine del file.\n"
+
+#: readelf.c:7495
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Impossibile determinare il numero di simboli da caricare\n"
+
+#: readelf.c:7530
+msgid "Unable to seek to end of file\n"
+msgstr "Impossibile cercare alla fine del file\n"
+
+#: readelf.c:7537
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Impossibile determinare la lunghezza della tabella di stringhe dinamiche\n"
+
+#: readelf.c:7543
+msgid "dynamic string table"
+msgstr "tabella di stringhe dinamiche"
+
+#: readelf.c:7580
+msgid "symbol information"
+msgstr "informazioni sul simbolo"
+
+#: readelf.c:7605
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"La sezione dinamica all'offset 0x%lx contiene %u voci:\n"
+
+#: readelf.c:7608
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " Tag Tipo Nome/Valore\n"
+
+#: readelf.c:7644
+#, c-format
+msgid "Auxiliary library"
+msgstr "Libreria ausiliaria"
+
+#: readelf.c:7648
+#, c-format
+msgid "Filter library"
+msgstr "Libreria di filtro"
+
+#: readelf.c:7652
+#, c-format
+msgid "Configuration file"
+msgstr "File di configurazione"
+
+#: readelf.c:7656
+#, c-format
+msgid "Dependency audit library"
+msgstr "Libreria di controllo delle dipendenze"
+
+#: readelf.c:7660
+#, c-format
+msgid "Audit library"
+msgstr "Libreria di controllo"
+
+#: readelf.c:7678 readelf.c:7706 readelf.c:7734
+#, c-format
+msgid "Flags:"
+msgstr "Flag:"
+
+#: readelf.c:7681 readelf.c:7709 readelf.c:7736
+#, c-format
+msgid " None\n"
+msgstr " Nessuno\n"
+
+#: readelf.c:7857
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Libreria condivisa: [%s]"
+
+#: readelf.c:7860
+#, c-format
+msgid " program interpreter"
+msgstr " interprete di programma"
+
+#: readelf.c:7864
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "soname della libreria: [%s]"
+
+#: readelf.c:7868
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "rpath della libreria: [%s]"
+
+#: readelf.c:7872
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "runpath della libreria: [%s]"
+
+#: readelf.c:7905
+#, c-format
+msgid " (bytes)\n"
+msgstr " (byte)\n"
+
+#: readelf.c:7935
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Oggetto non necessario: [%s]\n"
+
+#: readelf.c:8035
+msgid "| <unknown>"
+msgstr "| <sconosciuto>"
+
+#: readelf.c:8068
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"La sezione \"%s\" di definizione della versione contiene %u voci:\n"
+
+#: readelf.c:8071
+#, c-format
+msgid " Addr: 0x"
+msgstr " Indir: 0x"
+
+#: readelf.c:8073 readelf.c:8191 readelf.c:8332
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr " Offset: %#08lx Link: %u (%s)\n"
+
+#: readelf.c:8081
+msgid "version definition section"
+msgstr "sezione di definizione della versione"
+
+#: readelf.c:8114
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: Rev: %d Flag: %s"
+
+#: readelf.c:8117
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " Indice: %d Cont: %d "
+
+#: readelf.c:8133
+#, c-format
+msgid "Name: %s\n"
+msgstr "Nome: %s\n"
+
+#: readelf.c:8135
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Indice del nome: %ld\n"
+
+#: readelf.c:8157
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: genitore %d: %s\n"
+
+#: readelf.c:8160
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: genitore %d, indice del nome: %ld\n"
+
+#: readelf.c:8165
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr " Definizione di versione aux dopo la fine della sezione\n"
+
+#: readelf.c:8171
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr " Definizione di versione dopo la fine della sezione\n"
+
+#: readelf.c:8186
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"La sezione dei requisiti di versione \"%s\" contiene %u voci:\n"
+
+#: readelf.c:8189
+#, c-format
+msgid " Addr: 0x"
+msgstr " Indir: 0x"
+
+#: readelf.c:8200
+msgid "version need section"
+msgstr "sezione del requisito di versione"
+
+#: readelf.c:8228
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: versione: %d"
+
+#: readelf.c:8231
+#, c-format
+msgid " File: %s"
+msgstr " File: %s"
+
+#: readelf.c:8233
+#, c-format
+msgid " File: %lx"
+msgstr " File: %lx"
+
+#: readelf.c:8235
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " Cont: %d\n"
+
+#: readelf.c:8260
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: nome: %s"
+
+#: readelf.c:8263
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: indice del nome: %lx"
+
+#: readelf.c:8266
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Flag: %s versione: %d\n"
+
+#: readelf.c:8278
+#, c-format
+msgid " Version need aux past end of section\n"
+msgstr " Requisito di versione aux dopo la fine della sezione\n"
+
+#: readelf.c:8283
+#, c-format
+msgid " Version need past end of section\n"
+msgstr " Requisito di versione dopo la fine della sezione\n"
+
+#: readelf.c:8320
+msgid "version string table"
+msgstr "tabella di stringhe di versione"
+
+#: readelf.c:8327
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"La sezione \"%s\" dei simboli di versione contiene %d voci:\n"
+
+#: readelf.c:8330
+#, c-format
+msgid " Addr: "
+msgstr " Indir: "
+
+#: readelf.c:8341
+msgid "version symbol data"
+msgstr "dati dei simboli di versione"
+
+#: readelf.c:8369
+msgid " 0 (*local*) "
+msgstr " 0 (*locale*) "
+
+#: readelf.c:8373
+msgid " 1 (*global*) "
+msgstr " 1 (*globale*) "
+
+#: readelf.c:8386
+msgid "invalid index into symbol array\n"
+msgstr "indice non valido nell'array dei simboli\n"
+
+#: readelf.c:8420 readelf.c:9199
+msgid "version need"
+msgstr "requisito di versione"
+
+#: readelf.c:8430
+msgid "version need aux (2)"
+msgstr "requisito di versione aux (2)"
+
+#: readelf.c:8445 readelf.c:8500
+msgid "*invalid*"
+msgstr "*non valido*"
+
+#: readelf.c:8475 readelf.c:9264
+msgid "version def"
+msgstr "definizione di versione"
+
+#: readelf.c:8495 readelf.c:9279
+msgid "version def aux"
+msgstr "definizione di versione aux"
+
+#: readelf.c:8529
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"In questo file non è stata trovata alcuna informazione sulla versione.\n"
+
+#: readelf.c:8728
+#, c-format
+msgid "<other>: %x"
+msgstr "<altro>: %x"
+
+#: readelf.c:8789
+msgid "Unable to read in dynamic data\n"
+msgstr "Impossibile memorizzare i dati dinamici\n"
+
+#: readelf.c:8839
+#, c-format
+msgid " <corrupt: %14ld>"
+msgstr " <danneggiato: %14ld>"
+
+#: readelf.c:8882 readelf.c:8934 readelf.c:8958 readelf.c:8988 readelf.c:9012
+msgid "Unable to seek to start of dynamic information\n"
+msgstr "Impossibile cercare all'inizio delle informazioni dinamiche\n"
+
+#: readelf.c:8888 readelf.c:8940
+msgid "Failed to read in number of buckets\n"
+msgstr "Impossibile memorizzare il numero di bucket\n"
+
+#: readelf.c:8894
+msgid "Failed to read in number of chains\n"
+msgstr "Impossibile memorizzare il numero di catene\n"
+
+#: readelf.c:8996
+msgid "Failed to determine last chain length\n"
+msgstr "Impossibile determinare la lunghezza dell'ultima catena\n"
+
+#: readelf.c:9040
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"Tabella dei simboli per l'immagine:\n"
+
+#: readelf.c:9042 readelf.c:9060
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Num Buc: Valore Dim Tipo Assoc Vis Ind Nome\n"
+
+#: readelf.c:9044 readelf.c:9062
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Num Buc: Valore Dim Tipo Assoc Vis Ind Nome\n"
+
+#: readelf.c:9058
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+"\n"
+"Tabella dei simboli di \".gnu.hash\" per l'immagine:\n"
+
+#: readelf.c:9101
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' has a sh_entsize of zero!\n"
+msgstr ""
+"\n"
+"La tabella dei simboli \"%s\" ha un sh_entsize pari a zero.\n"
+
+#: readelf.c:9106
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"La tabella dei simboli \"%s\" contiene %lu voci:\n"
+
+#: readelf.c:9111
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Num: Valore Dim Tipo Assoc Vis Ind Nome\n"
+
+#: readelf.c:9113
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Num: Valore Dim Tipo Assoc Vis Ind Nome\n"
+
+#: readelf.c:9170
+msgid "version data"
+msgstr "dati di versione"
+
+#: readelf.c:9212
+msgid "version need aux (3)"
+msgstr "requisito di versione aux (3)"
+
+#: readelf.c:9239
+msgid "bad dynamic symbol\n"
+msgstr "simbolo dinamico errato\n"
+
+#: readelf.c:9303
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"Le informazioni sui simboli dinamici non sono disponibili per la visualizzazione dei simboli.\n"
+
+#: readelf.c:9315
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Istogramma per la lunghezza dell'elenco dei bucket (totale di %lu bucket):\n"
+
+#: readelf.c:9317 readelf.c:9387
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " Lunghezza Numero %% della copertura totale\n"
+
+#: readelf.c:9385
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Istogramma per la lunghezza dell'elenco dei bucket \".gnu.hash\" (totale di %lu bucket):\n"
+
+#: readelf.c:9451
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Il segmento di informazioni dinamiche all'offset 0x%lx contiene %d voci:\n"
+
+#: readelf.c:9454
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr " Num: Nome Legato a Flag\n"
+
+#: readelf.c:9463
+#, c-format
+msgid "<corrupt: %19ld>"
+msgstr "<danneggiato: %19ld>"
+
+#: readelf.c:9545
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr "Tipo di rilocazione MN10300 non gestito trovato dopo la rilocazione SYM_DIFF"
+
+#: readelf.c:9705
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr "Non si conoscono i tipi di rilocazione a 32 bit usati nelle sezioni DWARF della macchina numero %d\n"
+
+#: readelf.c:10009
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr "impossibile applicare il tipo di rilocazione %d non supportato alla sezione %s\n"
+
+#: readelf.c:10017
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "viene saltato l'offset della rilocazione non valida 0x%lx nella sezione %s\n"
+
+#: readelf.c:10041
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr "viene saltato il tipo di simbolo inatteso %s nella %ldª rilocazione nella sezione %s\n"
+
+#: readelf.c:10087
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"Dump in assembly della sezione %s\n"
+
+#: readelf.c:10108
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"La sezione \"%s\" non ha dati di cui fare il dump.\n"
+
+#: readelf.c:10114
+msgid "section contents"
+msgstr "contenuto della sezione"
+
+#: readelf.c:10133
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+"\n"
+"Dump delle stringhe della sezione \"%s\":\n"
+
+#: readelf.c:10151
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " NOTA: ci sono delle rilocazioni contro questa sezione, ma NON sono state applicate a questo dump.\n"
+
+#: readelf.c:10182
+#, c-format
+msgid " No strings found in this section."
+msgstr " Nessuna stringa trovata in questa sezione."
+
+#: readelf.c:10204
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"Dump esadecimale della sezione \"%s\":\n"
+
+#: readelf.c:10228
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " NOTA: ci sono delle rilocazioni contro questa sezione, ma NON sono state applicate a questo dump.\n"
+
+#: readelf.c:10362
+#, c-format
+msgid "%s section data"
+msgstr "%s dati di sezione"
+
+#: readelf.c:10427
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+"\n"
+"La sezione \"%s\" non ha dati di debug.\n"
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:10436
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr "la sezione \"%s\" è di tipo NOBITS, il suo contenuto non è attendibile.\n"
+
+#: readelf.c:10472
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "Sezione di debug non riconosciuta: %s\n"
+
+#: readelf.c:10500
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr "Il dump della sezione \"%s\" non è stato effettuato perché non esiste.\n"
+
+#: readelf.c:10541
+#, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "Il dump della sezione %d non è stato effettuato perché non esiste.\n"
+
+#: readelf.c:10719 readelf.c:10733 readelf.c:10752 readelf.c:11070
+#, c-format
+msgid "None\n"
+msgstr "Nessuno\n"
+
+#: readelf.c:10720
+#, c-format
+msgid "Application\n"
+msgstr "Applicazione\n"
+
+#: readelf.c:10721
+#, c-format
+msgid "Realtime\n"
+msgstr "Realtime\n"
+
+#: readelf.c:10722
+#, c-format
+msgid "Microcontroller\n"
+msgstr "Microcontrollore\n"
+
+#: readelf.c:10723
+#, c-format
+msgid "Application or Realtime\n"
+msgstr "Applicazione o realtime\n"
+
+#: readelf.c:10734 readelf.c:10754 readelf.c:11124 readelf.c:11142
+#: readelf.c:11217 readelf.c:11238
+#, c-format
+msgid "8-byte\n"
+msgstr "8 byte\n"
+
+#: readelf.c:10735 readelf.c:11220 readelf.c:11241
+#, c-format
+msgid "4-byte\n"
+msgstr "4 byte\n"
+
+#: readelf.c:10739 readelf.c:10758
+#, c-format
+msgid "8-byte and up to %d-byte extended\n"
+msgstr "esteso da 8 fino a %d byte\n"
+
+#: readelf.c:10753
+#, c-format
+msgid "8-byte, except leaf SP\n"
+msgstr "8 byte, ad eccezione della foglia SP\n"
+
+#: readelf.c:10769 readelf.c:10859 readelf.c:11256
+#, c-format
+msgid "flag = %d, vendor = %s\n"
+msgstr "flag = %d, produttore = %s\n"
+
+#: readelf.c:10775
+#, c-format
+msgid "True\n"
+msgstr "Vero\n"
+
+#: readelf.c:10904 readelf.c:11008
+#, c-format
+msgid "Hard or soft float\n"
+msgstr "Hard oppure soft float\n"
+
+#: readelf.c:10907
+#, c-format
+msgid "Hard float\n"
+msgstr "Hard float\n"
+
+#: readelf.c:10910 readelf.c:11017
+#, c-format
+msgid "Soft float\n"
+msgstr "Soft float\n"
+
+#: readelf.c:10913
+#, c-format
+msgid "Single-precision hard float\n"
+msgstr "Hard float a precisione singola\n"
+
+#: readelf.c:10930 readelf.c:10956
+#, c-format
+msgid "Any\n"
+msgstr "Qualsiasi\n"
+
+#: readelf.c:10933
+#, c-format
+msgid "Generic\n"
+msgstr "Generico\n"
+
+#: readelf.c:10962
+#, c-format
+msgid "Memory\n"
+msgstr "Memoria\n"
+
+#: readelf.c:11011
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr "Hard float (precisione doppia)\n"
+
+#: readelf.c:11014
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr "Hard float (precisione singola)\n"
+
+#: readelf.c:11020
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU)\n"
+msgstr "Hard float (FPU a 64 bit MIPS32r2)\n"
+
+#: readelf.c:11103
+#, c-format
+msgid "Not used\n"
+msgstr "Non usato\n"
+
+#: readelf.c:11106
+#, c-format
+msgid "2 bytes\n"
+msgstr "2 byte\n"
+
+#: readelf.c:11109
+#, c-format
+msgid "4 bytes\n"
+msgstr "4 byte\n"
+
+#: readelf.c:11127 readelf.c:11145 readelf.c:11223 readelf.c:11244
+#, c-format
+msgid "16-byte\n"
+msgstr "16 byte\n"
+
+#: readelf.c:11160
+#, c-format
+msgid "DSBT addressing not used\n"
+msgstr "Indirizzamento DSBT non utilizzato\n"
+
+#: readelf.c:11163
+#, c-format
+msgid "DSBT addressing used\n"
+msgstr "Utilizzato indirizzamento DSBT\n"
+
+#: readelf.c:11178
+#, c-format
+msgid "Data addressing position-dependent\n"
+msgstr "Indirizzamento dei dati dipendente dalla posizione\n"
+
+#: readelf.c:11181
+#, c-format
+msgid "Data addressing position-independent, GOT near DP\n"
+msgstr "Indirizzamento dei dati indipendente dalla posizione, GOT vicino a DP\n"
+
+#: readelf.c:11184
+#, c-format
+msgid "Data addressing position-independent, GOT far from DP\n"
+msgstr "Indirizzamento dei dati indipendente dalla posizione, GOT lontano da DP\n"
+
+#: readelf.c:11199
+#, c-format
+msgid "Code addressing position-dependent\n"
+msgstr "Indirizzamento del codice dipendente dalla posizione\n"
+
+#: readelf.c:11202
+#, c-format
+msgid "Code addressing position-independent\n"
+msgstr "Indirizzamento del codice indipendente dalla posizione\n"
+
+#: readelf.c:11308
+msgid "attributes"
+msgstr "attributi"
+
+#: readelf.c:11329
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "ERRORE: lunghezza errata della sezione (%d > %d)\n"
+
+#: readelf.c:11335
+#, c-format
+msgid "Attribute Section: %s\n"
+msgstr "Sezione di attributo: %s\n"
+
+#: readelf.c:11360
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "ERRORE: lunghezza errata della sottosezione (%d > %d)\n"
+
+#: readelf.c:11372
+#, c-format
+msgid "File Attributes\n"
+msgstr "Attributi file\n"
+
+#: readelf.c:11375
+#, c-format
+msgid "Section Attributes:"
+msgstr "Attributi sezione:"
+
+#: readelf.c:11378
+#, c-format
+msgid "Symbol Attributes:"
+msgstr "Attributi simbolo:"
+
+#: readelf.c:11393
+#, c-format
+msgid "Unknown tag: %d\n"
+msgstr "Tag sconosciuto: %d\n"
+
+#. ??? Do something sensible, like dump hex.
+#: readelf.c:11412
+#, c-format
+msgid " Unknown section contexts\n"
+msgstr " Contesti di sezione sconosciuti\n"
+
+#: readelf.c:11419
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "Formato sconosciuto \"%c\"\n"
+
+#: readelf.c:11463 readelf.c:11485
+msgid "<unknown>"
+msgstr "<sconosciuto>"
+
+#: readelf.c:11580 readelf.c:12102
+msgid "liblist"
+msgstr "liblist"
+
+#: readelf.c:11583
+#, c-format
+msgid ""
+"\n"
+"Section '.liblist' contains %lu entries:\n"
+msgstr ""
+"\n"
+"La sezione \".liblist\" contiene %lu voci:\n"
+
+#: readelf.c:11585
+msgid " Library Time Stamp Checksum Version Flags\n"
+msgstr " Libreria Data e ora Checksum Versione Flag\n"
+
+#: readelf.c:11611
+#, c-format
+msgid "<corrupt: %9ld>"
+msgstr "<danneggiato: %9ld>"
+
+#: readelf.c:11616
+msgid " NONE"
+msgstr " NESSUNO"
+
+#: readelf.c:11667
+msgid "options"
+msgstr "opzioni"
+
+#: readelf.c:11698
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"La sezione \"%s\" contiene %d voci:\n"
+
+#: readelf.c:11859
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr "trovato un elenco di conflitti senza una tabella dei simboli dinamici\n"
+
+#: readelf.c:11876 readelf.c:11891
+msgid "conflict"
+msgstr "conflitto"
+
+#: readelf.c:11901
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"La sezione \".conflict\" contiene %lu voci:\n"
+
+#: readelf.c:11903
+msgid " Num: Index Value Name"
+msgstr " Num: Indice Valore Nome"
+
+#: readelf.c:11915 readelf.c:11995 readelf.c:12063
+#, c-format
+msgid "<corrupt: %14ld>"
+msgstr "<danneggiato: %14ld>"
+
+#: readelf.c:11936
+msgid "GOT"
+msgstr "GOT"
+
+#: readelf.c:11937
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+"\n"
+"GOT primario:\n"
+
+#: readelf.c:11938
+#, c-format
+msgid " Canonical gp value: "
+msgstr " Valore canonico di gp: "
+
+#: readelf.c:11942 readelf.c:12034
+#, c-format
+msgid " Reserved entries:\n"
+msgstr " Voci riservate:\n"
+
+#: readelf.c:11943
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr " %*s %10s %*s Scopo\n"
+
+#: readelf.c:11944 readelf.c:11961 readelf.c:11977 readelf.c:12036
+#: readelf.c:12045
+msgid "Address"
+msgstr "Indirizzo"
+
+#: readelf.c:11944 readelf.c:11961 readelf.c:11977
+msgid "Access"
+msgstr "Accesso"
+
+#: readelf.c:11945 readelf.c:11962 readelf.c:11978 readelf.c:12036
+#: readelf.c:12046
+msgid "Initial"
+msgstr "Iniziale"
+
+#: readelf.c:11947
+#, c-format
+msgid " Lazy resolver\n"
+msgstr " Risolutore apatico\n"
+
+#: readelf.c:11953
+#, c-format
+msgid " Module pointer (GNU extension)\n"
+msgstr " Puntatore al modulo (estensione GNU)\n"
+
+#: readelf.c:11959
+#, c-format
+msgid " Local entries:\n"
+msgstr " Voci locali:\n"
+
+#: readelf.c:11975
+#, c-format
+msgid " Global entries:\n"
+msgstr " Voci globali:\n"
+
+#: readelf.c:11979 readelf.c:12047
+msgid "Sym.Val."
+msgstr "Val.Sim."
+
+#: readelf.c:11979 readelf.c:12047
+msgid "Type"
+msgstr "Tipo"
+
+#: readelf.c:11979 readelf.c:12047
+msgid "Ndx"
+msgstr "Ind"
+
+#: readelf.c:11979 readelf.c:12047
+msgid "Name"
+msgstr "Nome"
+
+#: readelf.c:12032
+msgid "PLT GOT"
+msgstr "GOT di PLT"
+
+#: readelf.c:12033
+#, c-format
+msgid ""
+"\n"
+"PLT GOT:\n"
+"\n"
+msgstr ""
+"\n"
+"GOT di PLT:\n"
+"\n"
+
+#: readelf.c:12035
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr " %*s %*s Scopo\n"
+
+#: readelf.c:12038
+#, c-format
+msgid " PLT lazy resolver\n"
+msgstr " Risolutore apatico PLT\n"
+
+#: readelf.c:12040
+#, c-format
+msgid " Module pointer\n"
+msgstr " Puntatore al modulo\n"
+
+#: readelf.c:12043
+#, c-format
+msgid " Entries:\n"
+msgstr " Voci:\n"
+
+#: readelf.c:12110
+msgid "liblist string table"
+msgstr "tabella di stringhe liblist"
+
+#: readelf.c:12121
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"La sezione dell'elenco di librerie \"%s\" contiene %lu voci:\n"
+
+#: readelf.c:12125
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr " Libreria Data e ora Checksum Versione Flag"
+
+#: readelf.c:12175
+msgid "NT_AUXV (auxiliary vector)"
+msgstr "NT_AUXV (vettore ausiliario)"
+
+#: readelf.c:12177
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (struttura prstatus)"
+
+#: readelf.c:12179
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (registri a virgola mobile)"
+
+#: readelf.c:12181
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (struttura prpsinfo)"
+
+#: readelf.c:12183
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (struttura task)"
+
+#: readelf.c:12185
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (struttura user_xfpregs)"
+
+#: readelf.c:12187
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr "NT_PPC_VMX (registri Altivec ppc)"
+
+#: readelf.c:12189
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr "NT_PPC_VSX (registri VSX ppc)"
+
+#: readelf.c:12191
+msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
+msgstr "NT_X86_XSTATE (stato esteso XSAVE x86)"
+
+#: readelf.c:12193
+msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
+msgstr "NT_S390_HIGH_GPRS (metà del registro superiore s390)"
+
+#: readelf.c:12195
+msgid "NT_S390_TIMER (s390 timer register)"
+msgstr "NT_S390_TIMER (registro temporizzatore s390)"
+
+#: readelf.c:12197
+msgid "NT_S390_TODCMP (s390 TOD comparator register)"
+msgstr "NT_S390_TODCMP (registro di comparazione TOD s390)"
+
+#: readelf.c:12199
+msgid "NT_S390_TODPREG (s390 TOD programmable register)"
+msgstr "NT_S390_TODPREG (registro programmabile TOD s390)"
+
+#: readelf.c:12201
+msgid "NT_S390_CTRS (s390 control registers)"
+msgstr "NT_S390_CTRS (registri di controllo s390)"
+
+#: readelf.c:12203
+msgid "NT_S390_PREFIX (s390 prefix register)"
+msgstr "NT_S390_PREFIX (registro di prefisso s390)"
+
+#: readelf.c:12205
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (struttura pstatus)"
+
+#: readelf.c:12207
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (registri a virgola mobile)"
+
+#: readelf.c:12209
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (struttura psinfo)"
+
+#: readelf.c:12211
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (struttura lwpstatus_t)"
+
+#: readelf.c:12213
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (struttura lwpsinfo_t)"
+
+#: readelf.c:12215
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (struttura win32_pstatus)"
+
+#: readelf.c:12223
+msgid "NT_VERSION (version)"
+msgstr "NT_VERSION (versione)"
+
+#: readelf.c:12225
+msgid "NT_ARCH (architecture)"
+msgstr "NT_ARCH (architettura)"
+
+#: readelf.c:12230 readelf.c:12253 readelf.c:12332 readelf.c:12390
+#: readelf.c:12467
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "Tipo di nota sconosciuto: (0x%08x)"
+
+#: readelf.c:12242
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr "NT_GNU_ABI_TAG (tag della versione ABI)"
+
+#: readelf.c:12244
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr "NT_GNU_HWCAP (informazioni HWCAP sul software fornito da DSO)"
+
+#: readelf.c:12246
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr "NT_GNU_BUILD_ID (stringa di bit unica dell'ID di creazione)"
+
+#: readelf.c:12248
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr "NT_GNU_GOLD_VERSION (versione di gold)"
+
+#: readelf.c:12266
+#, c-format
+msgid " Build ID: "
+msgstr " ID di creazione: "
+
+#: readelf.c:12269 readelf.c:12425
+#, c-format
+msgid "\n"
+msgstr "\n"
+
+#: readelf.c:12305
+#, c-format
+msgid " OS: %s, ABI: %ld.%ld.%ld\n"
+msgstr " OS: %s, ABI: %ld.%ld.%ld\n"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:12322
+msgid "NetBSD procinfo structure"
+msgstr "Struttura procinfo di NetBSD"
+
+#: readelf.c:12349 readelf.c:12363
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (struttura reg)"
+
+#: readelf.c:12351 readelf.c:12365
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (struttura fpreg)"
+
+#: readelf.c:12371
+#, c-format
+msgid "PT_FIRSTMACH+%d"
+msgstr "PT_FIRSTMACH+%d"
+
+#: readelf.c:12384
+msgid "NT_STAPSDT (SystemTap probe descriptors)"
+msgstr "NT_STAPSDT (descrittori di esplorazione SystemTap)"
+
+#: readelf.c:12417
+#, c-format
+msgid " Provider: %s\n"
+msgstr " Fornitore: %s\n"
+
+#: readelf.c:12418
+#, c-format
+msgid " Name: %s\n"
+msgstr " Nome: %s\n"
+
+#: readelf.c:12419
+#, c-format
+msgid " Location: "
+msgstr " Posizione: "
+
+#: readelf.c:12421
+#, c-format
+msgid ", Base: "
+msgstr ", base: "
+
+#: readelf.c:12423
+#, c-format
+msgid ", Semaphore: "
+msgstr ", semaforo: "
+
+#: readelf.c:12426
+#, c-format
+msgid " Arguments: %s\n"
+msgstr " Argomenti: %s\n"
+
+#: readelf.c:12439
+msgid "NT_VMS_MHD (module header)"
+msgstr "NT_VMS_MHD (intestazione del modulo)"
+
+#: readelf.c:12441
+msgid "NT_VMS_LNM (language name)"
+msgstr "NT_VMS_LNM (nome del linguaggio)"
+
+#: readelf.c:12443
+msgid "NT_VMS_SRC (source files)"
+msgstr "NT_VMS_SRC (file sorgente)"
+
+#: readelf.c:12445
+msgid "NT_VMS_TITLE"
+msgstr "NT_VMS_TITLE"
+
+#: readelf.c:12447
+msgid "NT_VMS_EIDC (consistency check)"
+msgstr "NT_VMS_EIDC (controllo di coerenza)"
+
+#: readelf.c:12449
+msgid "NT_VMS_FPMODE (FP mode)"
+msgstr "NT_VMS_FPMODE (modalità FP)"
+
+#: readelf.c:12451
+msgid "NT_VMS_LINKTIME"
+msgstr "NT_VMS_LINKTIME"
+
+#: readelf.c:12453
+msgid "NT_VMS_IMGNAM (image name)"
+msgstr "NT_VMS_IMGNAM (nome dell'immagine)"
+
+#: readelf.c:12455
+msgid "NT_VMS_IMGID (image id)"
+msgstr "NT_VMS_IMGID (id dell'immagine)"
+
+#: readelf.c:12457
+msgid "NT_VMS_LINKID (link id)"
+msgstr "NT_VMS_LINKID (id del link)"
+
+#: readelf.c:12459
+msgid "NT_VMS_IMGBID (build id)"
+msgstr "NT_VMS_IMGBID (id di creazione)"
+
+#: readelf.c:12461
+msgid "NT_VMS_GSTNAM (sym table name)"
+msgstr "NT_VMS_GSTNAM (nome della tabella dei simboli)"
+
+#: readelf.c:12463
+msgid "NT_VMS_ORIG_DYN"
+msgstr "NT_VMS_ORIG_DYN"
+
+#: readelf.c:12465
+msgid "NT_VMS_PATCHTIME"
+msgstr "NT_VMS_PATCHTIME"
+
+#: readelf.c:12481
+#, c-format
+msgid " Creation date : %.17s\n"
+msgstr " Data di creazione : %.17s\n"
+
+#: readelf.c:12482
+#, c-format
+msgid " Last patch date: %.17s\n"
+msgstr " Data dell'ultima patch: %.17s\n"
+
+#: readelf.c:12483
+#, c-format
+msgid " Module name : %s\n"
+msgstr " Nome del modulo : %s\n"
+
+#: readelf.c:12484
+#, c-format
+msgid " Module version : %s\n"
+msgstr " Versione del modulo : %s\n"
+
+#: readelf.c:12487
+#, c-format
+msgid " Invalid size\n"
+msgstr " Dimensione non valida\n"
+
+#: readelf.c:12490
+#, c-format
+msgid " Language: %s\n"
+msgstr " Linguaggio: %s\n"
+
+#: readelf.c:12494
+msgid " FP mode: 0x%016"
+msgstr " Modalità FP: 0x%016"
+
+#: readelf.c:12498
+#, c-format
+msgid " Link time: "
+msgstr " Orario link: "
+
+#: readelf.c:12504
+#, c-format
+msgid " Patch time: "
+msgstr " Orario patch: "
+
+#: readelf.c:12510
+#, c-format
+msgid " Major id: %u, minor id: %u\n"
+msgstr " Id maggiore: %u, id minore: %u\n"
+
+#: readelf.c:12513
+#, c-format
+msgid " Manip date : "
+msgstr " Data manip : "
+
+#: readelf.c:12516
+msgid ""
+"\n"
+" Link flags : 0x%016"
+msgstr ""
+"\n"
+" Flag del link : 0x%016"
+
+#: readelf.c:12519
+#, c-format
+msgid " Header flags: 0x%08x\n"
+msgstr " Flag dell'intestazione: 0x%08x\n"
+
+#: readelf.c:12521
+#, c-format
+msgid " Image id : %s\n"
+msgstr " Id dell'immagine : %s\n"
+
+#: readelf.c:12525
+#, c-format
+msgid " Image name: %s\n"
+msgstr " Nome dell'immagine : %s\n"
+
+#: readelf.c:12528
+#, c-format
+msgid " Global symbol table name: %s\n"
+msgstr " Nome della tabella dei simboli globali: %s\n"
+
+#: readelf.c:12531
+#, c-format
+msgid " Image id: %s\n"
+msgstr " Id dell'immagine: %s\n"
+
+#: readelf.c:12534
+#, c-format
+msgid " Linker id: %s\n"
+msgstr " Id del linker: %s\n"
+
+#: readelf.c:12609
+msgid "notes"
+msgstr "note"
+
+#: readelf.c:12615
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"Note all'offset 0x%08lx con lunghezza 0x%08lx:\n"
+
+#: readelf.c:12617
+#, c-format
+msgid " %-20s %10s\tDescription\n"
+msgstr " %-20s %10s\tDescrizione\n"
+
+#: readelf.c:12617
+msgid "Owner"
+msgstr "Proprietario"
+
+#: readelf.c:12617
+msgid "Data size"
+msgstr "Dimensione dati"
+
+#: readelf.c:12655 readelf.c:12668
+#, c-format
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "nota danneggiata trovata all'offset %lx nelle note di core\n"
+
+#: readelf.c:12657 readelf.c:12670
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " tipo: %lx, dim-nome: %08lx, dim-descrizione: %08lx\n"
+
+#: readelf.c:12766
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr "Nessun segmento di nota presente nel file di core.\n"
+
+#: readelf.c:12853
+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"
+msgstr ""
+"Questa istanza di readelf è stata creata senza il supporto per\n"
+"un tipo di dati a 64 bit e quindi non può leggere i file ELF a 64 bit.\n"
+
+#: readelf.c:12900
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s: impossibile leggere l'intestazione del file\n"
+
+#: readelf.c:12914
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"File: %s\n"
+
+#: readelf.c:13086
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr "%s: impossibile fare il dump dell'indice perché non è stato trovato\n"
+
+#: readelf.c:13092
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr "Indice dell'archivio %s: (%ld voci, 0x%lx byte nella tabella dei simboli)\n"
+
+#: readelf.c:13110
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr "Il binario %s contiene:\n"
+
+#: readelf.c:13118
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr "%s: la tabella dei simboli è finita prima del relativo indice\n"
+
+#: readelf.c:13129
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr "%s: i simboli restano nella tabella dei simboli indice, ma senza le corrispondenti voci nella tabella degli indici\n"
+
+#: readelf.c:13134
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr "%s: impossibile ritornare a cercare all'inizio dei file oggetto nell'archivio\n"
+
+#: readelf.c:13217 readelf.c:13300
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr "Il file di input \"%s\" non è leggibile.\n"
+
+#: readelf.c:13239
+#, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr "%s: impossibile cercare nel membro dell'archivio.\n"
+
+#: readelf.c:13318
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr "Il file %s non è un archivio quindi il suo indice non può essere visualizzato.\n"
+
+#: rename.c:124
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s: impossibile impostare l'ora: %s"
+
+#. We have to clean up here.
+#: rename.c:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr "impossibile rinominare \"%s\"; motivo: %s"
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr "impossibile copiare il file \"%s\"; motivo: %s"
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: dati binari non sufficienti"
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr "stringa unicode terminata con null"
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr "ID della risorsa"
+
+#: resbin.c:208
+msgid "cursor"
+msgstr "cursore"
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr "intestazione menù"
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr "intestazione menuex"
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr "posizione menuex"
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "versione del menù non supportata %d"
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr "intestazione menuitem"
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr "menuitem"
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr "intestazione dialogo"
+
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "versione di DIALOGEX non attesa %d"
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr "dimensione in punti del tipo di carattere del dialogo"
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr "informazioni del tipo di carattere dialogex"
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr "controllo dialog"
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr "controllo dialogex"
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr "fine del controllo dialogo"
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr "dati del controllo dialogo"
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr "lunghezza della stringa stringtable"
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr "stringa stringtable"
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr "intestazione fontdir"
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr "fontdir"
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr "nome del device fontdir"
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr "nome del tipo di carattere fontdir"
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr "acceleratore"
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr "intestazione del cursore di gruppo"
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "tipo di cursore di gruppo non atteso %d"
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr "cursore di gruppo"
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr "intestazione dell'icona di gruppo"
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "tipo di icona di gruppo non attesa %d"
+
+#: resbin.c:871
+msgid "group icon"
+msgstr "icona del gruppo"
+
+#: resbin.c:935 resbin.c:1151
+msgid "unexpected version string"
+msgstr "stringa di versione inattesa"
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "la lunghezza della versione %d non corrisponde alla lunghezza della risorsa %lu"
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr "tipo di versione inatteso %d"
+
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr "lunghezza delle informazioni sulla versione fissa non attesa %ld"
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr "informazioni sulla versione fissa"
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "firma della versione fissa non attesa %lu"
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "versione delle informazioni sulla versione fissa non attesa %lu"
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr "informazioni sulla variabile di versione"
+
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr "lunghezza del valore stringfileinfo non attesa %ld"
+
+#: resbin.c:1049
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr "lunghezza del valore stringtable di versione non attesa %ld"
+
+#: resbin.c:1083
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr "lunghezza della stringa di versione non attesa %ld != %ld + %ld"
+
+#: resbin.c:1094
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr "lunghezza della stringa di versione non attesa %ld < %ld"
+
+#: resbin.c:1111
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr "lunghezza del valore varfileinfo non attesa %ld"
+
+#: resbin.c:1130
+msgid "version varfileinfo"
+msgstr "varfileinfo di versione"
+
+#: resbin.c:1145
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr "lunghezza del valore di versione non attesa %ld"
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr "nome del file richiesto per l'input COFF"
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: nessuna sezione delle risorse"
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: indirizzo fuori dai limiti"
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "directory"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "voce di directory con nome"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "nome della voce di directory"
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "sottodirectory con nome"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "risorsa con nome"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "ID della voce di directory"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "ID della sottodirectory"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "ID della risorsa"
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr "tipo di risorsa sconosciuta"
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr "voce dati"
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr "dati delle risorse"
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr "dimensione dei dati delle risorse"
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr "è richiesto il nome del file per l'output COFF"
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "impossibile ottenere il tipo di rilocazione BFD_RELOC_RVA"
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "impossibile aprire il file temporaneo \"%s\": %s"
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "impossibile ridirigere lo stdout: \"%s\": %s"
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "impossibile eseguire \"%s\": %s"
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "Uso del file temporaneo \"%s\" per leggere l'output del preprocessore\n"
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "Impossibile effettuare popen di \"%s\": %s"
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "Viene usata popen per leggere l'output del preprocessore\n"
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "Provato \"%s\"\n"
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr "Viene usato \"%s\"\n"
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr "preprocessamento non riuscito."
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: EOF inatteso"
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: la lettura di %lu ha restituito %lu"
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "stat non riuscita sul file bitmap \"%s\": %s"
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "Il file \"%s\" del cursore non contiene dati cursore"
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: fseek su %lu non riuscita: %s"
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr "l'ID di aiuto richiede DIALOGEX"
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr "i dati di controllo richiedono DIALOGEX"
+
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "stat non riuscita sul file di tipo di caratteri \"%s\": %s"
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "il file di icona \"%s\" non contiene dati di icona"
+
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "stat non riuscita sul file \"%s\": %s"
+
+#: resrc.c:1940
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "impossibile aprire \"%s\" per l'output: %s"
+
+#: size.c:79
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr " Visualizza la dimensione delle sezioni all'interno dei file binari\n"
+
+#: size.c:80
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr " Se non è specificato alcun file di input, viene usato a.out\n"
+
+#: size.c:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+" Le opzioni sono:\n"
+" -A|-B --format={sysv|berkeley} Seleziona lo stile di output (predefinito è %s)\n"
+" -o|-d|-x --radix={8|10|16} Visualizza i numeri in ottale, decimale o esadecimale\n"
+" -t --totals Visualizza le dimensioni totali (solo Berkeley)\n"
+" --common Visualizza la dimensione totale per i simboli *COM*\n"
+" --target=<nomebfd> Imposta il formato del file binario\n"
+" @<file> Legge le opzioni dal <file>\n"
+" -h --help Visualizza questo aiuto\n"
+" -v --version Visualizza la versione del programma\n"
+"\n"
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "argomento non valido per --format: %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Radice non valida: %s\n"
+
+#: srconv.c:1733
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "Converte un file oggetto COFF in un file oggetto SYSROFF\n"
+
+#: srconv.c:1734
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+" Le opzioni sono:\n"
+" -q --quick (Obsoleta, ignorata)\n"
+" -n --noprescan Non effettua un'analisi per convertire i comuni in definizioni\n"
+" -d --debug Visualizza le informazioni sulle operazioni in corso\n"
+" @<file> Legge le opzioni dal <file>\n"
+" -h --help Visualizza questo aiuto\n"
+" -v --version Stampa il numero di versione del programma\n"
+
+#: srconv.c:1880
+#, c-format
+msgid "unable to open output file %s"
+msgstr "impossibile aprire il file di output %s"
+
+#: stabs.c:328 stabs.c:1717
+msgid "numeric overflow"
+msgstr "overflow numerico"
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "Stab errato: %s\n"
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Attenzione: %s: %s\n"
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC non è dentro la funzione\n"
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "Troppi N_RBRAC\n"
+
+#: stabs.c:727
+msgid "unknown C++ encoded name"
+msgstr "nome codificato C++ sconosciuto"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1262
+msgid "unrecognized cross reference type"
+msgstr "tipo di riferimento incrociato non riconosciuto"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1809
+msgid "missing index type"
+msgstr "tipo di indice mancante"
+
+#: stabs.c:2129
+msgid "unknown virtual character for baseclass"
+msgstr "carattere virtuale sconosciuto per la classe di base"
+
+#: stabs.c:2147
+msgid "unknown visibility character for baseclass"
+msgstr "carattere di visibilità sconosciuto per la classe di base"
+
+#: stabs.c:2337
+msgid "unnamed $vb type"
+msgstr "tipo $vb senza nome"
+
+#: stabs.c:2343
+msgid "unrecognized C++ abbreviation"
+msgstr "abbreviazione C++ non riconosciuta"
+
+#: stabs.c:2419
+msgid "unknown visibility character for field"
+msgstr "carattere di visibilità sconosciuto per il campo"
+
+#: stabs.c:2679
+msgid "const/volatile indicator missing"
+msgstr "indicatore const/volatile mancante"
+
+#: stabs.c:2924
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "Nessuna codifica per \"%s\"\n"
+
+#: stabs.c:3224
+msgid "Undefined N_EXCL"
+msgstr "N_EXCL non definito"
+
+#: stabs.c:3304
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "Numero di tipo di file %d fuori dall'intervallo\n"
+
+#: stabs.c:3309
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Numero di tipo di indice %d fuori dall'intervallo\n"
+
+#: stabs.c:3388
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "Tipo XCOFF non riconosciuto %d\n"
+
+#: stabs.c:3680
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "nome codificato errato \"%s\"\n"
+
+#: stabs.c:3775
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "nessun tipo di argomento nella stringa codificata\n"
+
+#: stabs.c:5125
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "Il nome decodificato non è una funzione\n"
+
+#: stabs.c:5167
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "Tipo non atteso nella decodifica dell'elenco argomenti v3\n"
+
+#: stabs.c:5234
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "Componente decodificato non riconosciuto %d\n"
+
+#: stabs.c:5286
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "Impossibile stampare il modello decodificato\n"
+
+#: stabs.c:5366
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "Impossibile ottenere il tipo interno decodificato\n"
+
+#: stabs.c:5415
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "Decodificati argomenti di variabile non attesi\n"
+
+#: stabs.c:5422
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "Tipo interno decodificato non riconosciuto\n"
+
+#: strings.c:186 strings.c:245
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "argomento intero non valido %s"
+
+#: strings.c:248
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr "lunghezza minima della stringa non valida %d"
+
+#: strings.c:651
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr " Visualizza le stringhe stampabili nei [file] (stdin come predefinito)\n"
+
+#: strings.c:652
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+" Le opzioni sono:\n"
+" -a - --all Analizza l'intero file, non solo la sezione dei dati\n"
+" -f --print-file-name Stampa il nome del file prima di ciascuna stringa\n"
+" -n --bytes=[numero] Localizza e stampa tutte le sequenze che terminano con NUL\n"
+" -<numero> di almeno [numero] caratteri (predefinito 4).\n"
+" -t --radix={o,d,x} Stampa la posizione della stringa in base 8, 10 o 16\n"
+" -o Un sinonimo per --radix=o\n"
+" -T --target=<NOMEBFD> Specifica il formato del file binario\n"
+" -e --encoding={s,S,b,l,B,L} Seleziona la dimensione e gli endian del carattere:\n"
+" s = 7 bit, S = 8 bit, {b,l} = 16 bit, {B,L} = 32 bit\n"
+" @<file> Legge le opzioni dal <file>\n"
+" -h --help Visualizza questo aiuto\n"
+" -v -V --version Stampa il numero di versione del programma\n"
+
+#: sysdump.c:647
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "Stampa una interpretazione leggibile di un file oggetto SYSROFF\n"
+
+#: sysdump.c:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Le opzioni sono:\n"
+" -h --help Visualizza questo aiuto\n"
+" -v --version Stampa il numero di versione del programma\n"
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "impossibile aprire il file di input %s"
+
+#: version.c:36
+#, c-format
+msgid "Copyright 2011 Free Software Foundation, Inc.\n"
+msgstr "Copyright 2011 Free Software Foundation, Inc.\n"
+
+#: version.c:37
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"Questo programma è software libero; potete redistribuirlo secondo i termini della\n"
+"GNU General Public License versione 3 o (a vostra scelta) qualsiasi versione successiva.\n"
+"Questo programma non ha assolutamente alcuna garanzia.\n"
+
+#: windmc.c:190
+#, c-format
+msgid "can't create %s file `%s' for output.\n"
+msgstr "impossibile creare %s file \"%s\" per l'output.\n"
+
+#: windmc.c:198
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr "Uso: %s [opzioni] [file-di-input]\n"
+
+#: windmc.c:200
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianness.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+" Le opzioni sono:\n"
+" -a --ascii_in Legge il file di input come ASCII\n"
+" -A --ascii_out Scrive i messaggi binari come ASCII\n"
+" -b --binprefix Aggiunge il prefisso .mc filename_ al nome del file .bin per l'unicità.\n"
+" -c --customflag Imposta flag personalizzati per i messaggi\n"
+" -C --codepage_in=<val> Imposta la pagina codici quando viene letto il file di testo mc\n"
+" -d --decimal_values Stampa i valori sul file di testo come decimali\n"
+" -e --extension=<estensione> Imposta l'estensione dell'intestazione usata nell'esportazione del file di intestazione\n"
+" -F --target <obiettivo> Specifica l'obiettivo di output per gli endian.\n"
+" -h --headerdir=<directory> Imposta la directory di esportazione per le intestazioni\n"
+" -u --unicode_in Legge il file di input come UTF16\n"
+" -U --unicode_out Scrive i messaggi binari come UTF16\n"
+" -m --maxlength=<val> Imposta la lunghezza massima ammessa per i messaggi\n"
+" -n --nullterminate Aggiunge automaticamente zero come valore finale per le stringhe\n"
+" -o --hresult_use Usa la definizione di HRESULT al posto di quella del codice di stato\n"
+" -O --codepage_out=<val> Imposta la pagina codici usata per scrivere il file di testo\n"
+" -r --rcdir=<directory> Imposta la directory di esportazione per i file rc\n"
+" -x --xdbg=<directory> Specifica dove creare il file di inclusione C .dbg\n"
+" che mappa gli ID dei messaggi al loro nome simbolico.\n"
+
+#: windmc.c:220
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+" -H --help Stampa questo messaggio di aiuto\n"
+" -v --verbose Modalità prolissa, descrive ciò che accade\n"
+" -V --version Stampa le informazioni sulla versione\n"
+
+#: windmc.c:261 windres.c:411
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: attenzione: "
+
+#: windmc.c:262
+#, c-format
+msgid "A codepage was specified switch `%s' and UTF16.\n"
+msgstr "È stata specificata una pagina codici con opzione \"%s\" e UTF16.\n"
+
+#: windmc.c:263
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr "\tle impostazioni della pagina codici vengono ignorate.\n"
+
+#: windmc.c:307
+msgid "try to add a ill language."
+msgstr "tentativo di aggiungere una lingua errata."
+
+#: windmc.c:1116
+#, c-format
+msgid "unable to open file `%s' for input.\n"
+msgstr "impossibile aprire il file \"%s\" per l'input.\n"
+
+#: windmc.c:1124
+#, c-format
+msgid "unable to read contents of %s"
+msgstr "impossibile leggere i contenuti di %s"
+
+#: windmc.c:1136
+msgid "input file does not seems to be UFT16.\n"
+msgstr "il file di input non sembra essere in UTF16.\n"
+
+#: windres.c:216
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "impossibile aprire %s \"%s\": %s"
+
+#: windres.c:390
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": era attesa una directory\n"
+
+#: windres.c:402
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": era attesa una foglia\n"
+
+#: windres.c:413
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": valore duplicato\n"
+
+#: windres.c:563
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "tipo di formato \"%s\" sconosciuto"
+
+#: windres.c:564
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: formati supportati:"
+
+#. Otherwise, we give up.
+#: windres.c:647
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "impossibile determinare il tipo di file \"%s\"; usare l'opzione -J"
+
+#: windres.c:659
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Uso: %s [opzioni] [file-di-input] [file-di-output]\n"
+
+#: windres.c:661
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" --preprocessor-arg=<arg> Additional preprocessor argument\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+" Le opzioni sono:\n"
+" -i --input=<file> Nome del file di input\n"
+" -o --output=<file> Nome del file di output\n"
+" -J --input-format=<formato> Specifica il formato di input\n"
+" -O --output-format=<formato> Specifica il formato di output\n"
+" -F --target=<obiettivo> Specifica l'obiettivo COFF\n"
+" --preprocessor=<programma> Programma da usare per preprocessare il file rc\n"
+" --preprocessor-arg=<arg> Argomento aggiuntivo del preprocessore\n"
+" -I --include-dir=<dir> Include la directory quando viene preprocessato il file rc\n"
+" -D --define <sim>[=<val>] Definisce il SIM quando viene preprocessato il file rc\n"
+" -U --undefine <sim> Azzera il SIM quando viene preprocessato il file rc\n"
+" -v --verbose Prolisso, spiega le operazioni in corso\n"
+" -c --codepage=<paginacodici> Specifica la pagina codici predefinita\n"
+" -l --language=<val> Imposta la lingua quando viene letto il file rc\n"
+" --use-temp-file Usa un file temporaneo invece di popen per leggere\n"
+" l'output del preprocessore\n"
+" --no-use-temp-file Usa popen (predefinita)\n"
+
+#: windres.c:679
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug Attiva il debug dell'analizzatore\n"
+
+#: windres.c:682
+#, 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 Ignorato per compatibilità con rc\n"
+" @<file> Legge le opzioni dal <file>\n"
+" -h --help Stampa questo messaggio di aiuto\n"
+" -V --version Stampa le informazioni sulla versione\n"
+
+#: windres.c:687
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"FORMAT è uno tra rc, res o coff. Se non specificato, viene dedotto dall'estensione\n"
+"del nome del file. Un nome singolo corrisponde a un file di input. Senza alcun nome \n"
+"il file di input è stdin e il file di output è stdout, il predefinito è rc.\n"
+
+#: windres.c:850
+msgid "invalid codepage specified.\n"
+msgstr "specificata pagina codici non valida.\n"
+
+#: windres.c:865
+msgid "invalid option -f\n"
+msgstr "opzione -f non valida\n"
+
+#: windres.c:870
+msgid "No filename following the -fo option.\n"
+msgstr "Nessun nome di file dopo l'opzione -fo.\n"
+
+#: windres.c:959
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr "L'opzione -I è deprecata per l'impostazione del formato di input, usare invece -J.\n"
+
+#: windres.c:1072
+msgid "no resources"
+msgstr "nessuna risorsa"
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup non riuscita: %s"
+
+#: wrstabs.c:637
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: dimensione errata %u"
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: attenzione: dimensione sconosciuta per il campo \"%s\" in struct"
diff --git a/binutils-2.24/binutils/po/ja.gmo b/binutils-2.24/binutils/po/ja.gmo
new file mode 100644
index 00000000..0f4f1e22
--- /dev/null
+++ b/binutils-2.24/binutils/po/ja.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/ja.po b/binutils-2.24/binutils/po/ja.po
new file mode 100644
index 00000000..74a1bd73
--- /dev/null
+++ b/binutils-2.24/binutils/po/ja.po
@@ -0,0 +1,8782 @@
+# Japanese messages for binutils
+# This file is distributed under the same license as the binutils package.
+# Copyright (C) 2001, 2010 Free Software Foundation, Inc.
+# Daisuke Yamashita <yamad@mb.infoweb.ne.jp>, 2001.
+# Yasuaki Taniguchi <yasuakit@gmail.com>, 2010, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.21.53\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2011-06-02 14:35+0100\n"
+"PO-Revision-Date: 2011-10-19 22:45+0900\n"
+"Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
+"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"Language: ja\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"
+
+#: addr2line.c:81
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "使用法: %s [option(s)] [addr(s)]\n"
+
+#: addr2line.c:82
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr "アドレスを行番å·/ファイルåã®çµ„ã«å¤‰æ›ã—ã¾ã™ã€‚\n"
+
+#: addr2line.c:83
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr "コマンドラインã§ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒæŒ‡å®šã•ã‚Œãªã„å ´åˆã€æ¨™æº–入力ã‹ã‚‰èª­ã¿å–ã‚Šã¾ã™\n"
+
+#: addr2line.c:84
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -a --addresses Show addresses\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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Make the output easier to read for humans\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+"オプションã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™:\n"
+" @<file> オプションを <file> ã‹ã‚‰èª­ã¿è¾¼ã‚€\n"
+" -b --target=<bfdname> ãƒã‚¤ãƒŠãƒªãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ã‚’設定ã™ã‚‹\n"
+" -e --exe=<executable> 入力ファイルåを設定ã™ã‚‹ (デフォルト㯠a.out)\n"
+" -i --inlines インライン化ã•ã‚ŒãŸé–¢æ•°ã‚’å·»ã戻ã™\n"
+" -j --section=<name> アドレスã®ä»£ã‚ã‚Šã«ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®ç›¸å¯¾ã‚ªãƒ•ã‚»ãƒƒãƒˆã‚’読ã¿è¾¼ã‚€\n"
+" -s --basenames ディレクトリåã‚’å–り除ã\n"
+" -f --functions 関数åを表示ã™ã‚‹\n"
+" -C --demangle[=style] 関数ã®åå‰ã‚’復元 (demangle) ã™ã‚‹\n"
+" -h --help 今見ã¦ã„る情報を表示ã™ã‚‹\n"
+" -v --version プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示ã™ã‚‹\n"
+"\n"
+
+#: addr2line.c:101 ar.c:304 ar.c:333 coffdump.c:470 dlltool.c:3938
+#: dllwrap.c:524 elfedit.c:650 nlmconv.c:1114 objcopy.c:576 objcopy.c:611
+#: readelf.c:3174 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
+#: windmc.c:228 windres.c:695
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr ""
+"ãƒã‚°ã‚’発見ã—ãŸã‚‰ <%s> ã«å ±å‘Šã—ã¦ä¸‹ã•ã„。\n"
+"翻訳ã«é–¢ã™ã‚‹ãƒã‚°ã¯<translation-team-ja@lists.sourceforge.net>ã«å ±å‘Šã—ã¦ãã ã•ã„。\n"
+
+#: addr2line.c:271
+#, c-format
+msgid " at "
+msgstr ""
+
+#: addr2line.c:296
+#, c-format
+msgid " (inlined by) "
+msgstr ""
+
+#: addr2line.c:329
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: アーカイブã‹ã‚‰ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’å–å¾—ã§ãã¾ã›ã‚“"
+
+#: addr2line.c:346
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr "%s: セクション %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: addr2line.c:415 nm.c:1566 objdump.c:3423
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "åå‰å¾©å…ƒ (demangle) ã®æ–¹å¼ `%s' ãŒä¸æ˜Žã§ã™"
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "エントリ %s ãŒæ›¸åº«ä¸­ã«ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: ar.c:254
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...\n"
+msgstr "使用法: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...\n"
+
+#: ar.c:260
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] [count] archive-file file...\n"
+msgstr "使用法: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] [count] archive-file file...\n"
+
+#: ar.c:266
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<mri-script]\n"
+
+#: ar.c:267
+#, c-format
+msgid " commands:\n"
+msgstr " コマンド:\n"
+
+#: ar.c:268
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - 書庫ã‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’削除ã™ã‚‹\n"
+
+#: ar.c:269
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - 書庫内ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’移動ã™ã‚‹\n"
+
+#: ar.c:270
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - 書庫内ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’表示ã™ã‚‹\n"
+
+#: ar.c:271
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - 書庫ã¸ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ç´ æ—©ã追加ã™ã‚‹\n"
+
+#: ar.c:272
+#, 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:273
+#, c-format
+msgid " s - act as ranlib\n"
+msgstr " s - ranlib ã¨ã—ã¦å‹•ä½œã™ã‚‹\n"
+
+#: ar.c:274
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - 書庫ã®å†…容を表示ã™ã‚‹\n"
+
+#: ar.c:275
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - 書庫ã‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’抽出ã™ã‚‹\n"
+
+#: ar.c:276
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " コマンドã«é–¢ä¿‚ã—ãŸä¿®é£¾å­:\n"
+
+#: ar.c:277
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - [member-name] ã®å¾Œã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é…ç½®ã™ã‚‹\n"
+
+#: ar.c:278
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - [member-name] ã®å‰ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é…ç½®ã™ã‚‹ ([i] ã¨åŒã˜)\n"
+
+#: ar.c:279
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr " [D] - 日時ã€uidã€gid ã« 0 (ゼロ) を使用ã™ã‚‹\n"
+
+#: ar.c:280
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - åŒåインスタンス㧠[count] 番目ã®ã‚‚ã®ã‚’使ã†\n"
+
+#: ar.c:281
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - 挿入ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«åを切り詰ã‚ã‚‹\n"
+
+#: ar.c:282
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - åå‰ã®ä¸€è‡´ã‚’調ã¹ã‚‹éš›ã«å®Œå…¨ãƒ‘スを使ã†\n"
+
+#: ar.c:283
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - 本æ¥ã®æ—¥æ™‚ã‚’ä¿æŒã™ã‚‹\n"
+
+#: ar.c:284
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - ç¾åœ¨ã®æ›¸åº«ã«å…¥ã£ã¦ã„ã‚‹ã‚‚ã®ã‚ˆã‚Šæ–°ã—ã„ファイルã ã‘ã‚’ç½®æ›ã™ã‚‹\n"
+
+#: ar.c:285
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " 一般的ãªä¿®é£¾å­:\n"
+
+#: ar.c:286
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - ライブラリファイルを作æˆã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã¨ãã§ã‚‚警告ã—ãªã„\n"
+
+#: ar.c:287
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - 書庫ã®ç´¢å¼•ã‚’作æˆã™ã‚‹ (ranlib ã‚’å‚ç…§)\n"
+
+#: ar.c:288
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - シンボル表を構築ã—ãªã„\n"
+
+#: ar.c:289
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr " [T] - è–„ã„書庫を作æˆã™ã‚‹\n"
+
+#: ar.c:290
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - 冗長ã«è¡¨ç¤ºã‚’è¡Œã†\n"
+
+#: ar.c:291
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã™ã‚‹\n"
+
+#: ar.c:292
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr " @<file> - <file> ã‹ã‚‰ã‚ªãƒ—ションを読ã¿è¾¼ã‚€\n"
+
+#: ar.c:293
+#, c-format
+msgid " --target=BFDNAME - specify the target object format as BFDNAME\n"
+msgstr " --target=BFDNAME - ターゲットã®ã‚ªãƒ–ジェクト形å¼ã‚’ BFDNAME ã¨ã—ã¦æŒ‡å®šã™ã‚‹\n"
+
+#: ar.c:295
+#, c-format
+msgid " optional:\n"
+msgstr " ä»»æ„指定:\n"
+
+#: ar.c:296
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr " --plugin <p> - 指定ã—ãŸãƒ—ラグインを読ã¿è¾¼ã‚€\n"
+
+#: ar.c:317
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "使用法: %s [options] archive\n"
+
+#: ar.c:318
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " アクセス速度をå‘上ã•ã›ã‚‹ãŸã‚ã«æ›¸åº«ã«ç´¢å¼•ã‚’生æˆã—ã¾ã™\n"
+
+#: ar.c:319
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+" オプションã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™:\n"
+" @<file> <file> ã‹ã‚‰ã‚ªãƒ—ションを読ã¿è¾¼ã‚€\n"
+
+#: ar.c:322
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr " --plugin <name> 指定ã—ãŸãƒ—ラグインを読ã¿è¾¼ã‚€\n"
+
+#: ar.c:325
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+" -t 書庫ã®ã‚·ãƒ³ãƒœãƒ«ãƒžãƒƒãƒ—ã®æ—¥æ™‚ã‚’æ›´æ–°ã™ã‚‹\n"
+" -h --help ã“ã®ãƒ˜ãƒ«ãƒ—メッセージを表示ã™ã‚‹\n"
+" -v --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã™ã‚‹\n"
+
+#: ar.c:449
+msgid "two different operation options specified"
+msgstr "二ã¤ã®ç•°ãªã£ãŸæ“作オプションãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸ"
+
+#: ar.c:538 nm.c:1639
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr "ã“ã®ãƒ—ログラムã¯ãƒ—ラグインサãƒãƒ¼ãƒˆãªã—ã§ä½œæˆã•ã‚Œã¦ã„ã¾ã™\n"
+
+#: ar.c:693
+msgid "no operation specified"
+msgstr "æ“作ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: ar.c:696
+msgid "`u' is only meaningful with the `r' option."
+msgstr "`u' 㯠`r' オプションã¨ä½µã›ã¦ä½¿ç”¨ã—ãŸã¨ãã®ã¿æ„味ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#: ar.c:699
+msgid "`u' is not meaningful with the `D' option."
+msgstr "`u' 㯠`D' オプションã¨ä½µã›ã¦ä½¿ç”¨ã—ã¦ã‚‚æ„味ãŒã‚ã‚Šã¾ã›ã‚“。"
+
+#: ar.c:707
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "`N' 㯠`x' ãŠã‚ˆã³ `d' オプションã¨ä½µã›ã¦ä½¿ç”¨ã—ãŸã¨ãã®ã¿æ„味ãŒã‚ã‚Šã¾ã™ã€‚"
+
+#: ar.c:710
+msgid "Value for `N' must be positive."
+msgstr "`N' ã®å€¤ã¯æ­£ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“。"
+
+#: ar.c:724
+msgid "`x' cannot be used on thin archives."
+msgstr "è–„ã„書庫ã«å¯¾ã—㦠`x' を使用ã§ãã¾ã›ã‚“。"
+
+#: ar.c:765
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "内部エラー -- ã“ã®ã‚ªãƒ—ションã¯å®Ÿè£…ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: ar.c:834
+#, c-format
+msgid "creating %s"
+msgstr "%s を作æˆã—ã¦ã„ã¾ã™"
+
+#: ar.c:883 ar.c:937 ar.c:1266 objcopy.c:2055
+#, c-format
+msgid "internal stat error on %s"
+msgstr "内部状態エラー㌠%s ã§ç™ºç”Ÿã—ã¾ã—ãŸ"
+
+#: ar.c:902 ar.c:970
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s ã¯æœ‰åŠ¹ãªæ›¸åº«ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: ar.c:1171
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "`%s' ã¨ã„ã†åå‰ã®ãƒ¡ãƒ³ãƒã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: ar.c:1221
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "é …ç›® %s ã¯æ›¸åº« %s ã«å­˜åœ¨ã—ã¾ã›ã‚“!"
+
+#: ar.c:1360
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: æ›´æ–°ã™ã¹ã書庫ã®ãƒžãƒƒãƒ—ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "é …ç›® %s ã¯æ›¸åº«å†…ã«å­˜åœ¨ã—ã¾ã›ã‚“。\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "ファイル %s ã‚’é–‹ã‘ã¾ã›ã‚“\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: 出力書庫 %s ã‚’é–‹ã‘ã¾ã›ã‚“\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: 入力書庫 %s ã‚’é–‹ã‘ã¾ã›ã‚“\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: ファイル %s ã¯æ›¸åº«ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: 出力書庫ãŒã¾ã æŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: 出力用書庫ãŒé–‹ã‹ã‚Œã¦ã„ã¾ã›ã‚“\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: ファイル %s ã‚’é–‹ã‘ã¾ã›ã‚“\n"
+
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: モジュールファイル %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "ç¾åœ¨é–‹ã‹ã‚Œã¦ã„る書庫㯠%s ã§ã™\n"
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: é–‹ã„ã¦ã„る書庫ãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " エミュレーションã«é–¢ä¿‚ã—ãŸã‚ªãƒ—ションã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#. Macros for common output.
+#: binemul.h:49
+#, c-format
+msgid " emulation options: \n"
+msgstr " エミュレーションã«é–¢ä¿‚ã—ãŸã‚ªãƒ—ション: \n"
+
+#: bucomm.c:163
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "BFD デフォルトターゲットを `%s' ã«è¨­å®šã§ãã¾ã›ã‚“: %s"
+
+#: bucomm.c:175
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: å½¢å¼ã‚’ç…§åˆã—ã¾ã™:"
+
+#: bucomm.c:190
+#, c-format
+msgid "Supported targets:"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„るターゲット:"
+
+#: bucomm.c:192
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„るターゲット:"
+
+#: bucomm.c:210
+#, c-format
+msgid "Supported architectures:"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„るアーキテクãƒãƒ£:"
+
+#: bucomm.c:212
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„るアーキテクãƒãƒ£:"
+
+#: bucomm.c:407
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "BFD ヘッダファイルãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s\n"
+
+#: bucomm.c:559
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: 誤ã£ãŸç•ªå·ã§ã™: %s"
+
+#: bucomm.c:576 strings.c:409
+#, c-format
+msgid "'%s': No such file"
+msgstr "'%s': ãã®ã‚ˆã†ãªãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: bucomm.c:578 strings.c:411
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "警告: '%s' ã‚’é…ç½®ã§ãã¾ã›ã‚“。 ç†ç”±: %s"
+
+#: bucomm.c:582
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "警告: '%s' ã¯æ­£å¸¸ãªãƒ•ã‚¡ã‚¤ãƒ«ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: bucomm.c:584
+#, c-format
+msgid "Warning: '%s' has negative size, probably it is too large"
+msgstr "警告: '%s' ã¯è² ã®ã‚µã‚¤ã‚ºã§ã™ã€‚ãŠãらã大ãã™ãŽã¾ã™"
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr "#行 %d "
+
+#: coffdump.c:461 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "使用法: %s [option(s)] in-file\n"
+
+#: coffdump.c:462
+#, c-format
+msgid " Print a human readable interpretation of a COFF object file\n"
+msgstr "COFF オブジェクトファイルを解釈ã—人間ãŒèª­ã¿ã‚„ã™ã„å½¢å¼ã§è¡¨ç¤ºã—ã¾ã™ã€‚\n"
+
+#: coffdump.c:463
+#, 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"
+" @<file> <file> ã‹ã‚‰ã‚ªãƒ—ションを読ã¿è¾¼ã‚€\n"
+" -h --help ã“ã®ãƒ˜ãƒ«ãƒ—情報を表示ã™ã‚‹\n"
+" -v --version プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示ã™ã‚‹\n"
+"\n"
+
+#: coffdump.c:532 srconv.c:1833 sysdump.c:710
+msgid "no input file specified"
+msgstr "入力ファイルãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: cxxfilt.c:119 nm.c:269 objdump.c:281
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr ""
+"ãƒã‚°ã‚’発見ã—ãŸã‚‰ <%s> ã«å ±å‘Šã—ã¦ä¸‹ã•ã„。\n"
+"翻訳ã«é–¢ã™ã‚‹ãƒã‚°ã¯<translation-team-ja@lists.sourceforge.net>ã«å ±å‘Šã—ã¦ãã ã•ã„。\n"
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: ç¾åœ¨ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: debug_set_filename 呼ã³å‡ºã—ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: debug.c:781
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: debug_set_filename 呼ã³å‡ºã—ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: debug.c:833
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: ç¾åœ¨ã®é–¢æ•°ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: debug.c:865
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: ç¾åœ¨ã®é–¢æ•°ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: debug.c:871
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: é–‰ã˜ã‚‰ã‚Œã¦ã„ãªã„ブロックãŒã‚ã‚Šã¾ã™"
+
+#: debug.c:899
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: ç¾åœ¨ã®ãƒ–ロックãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: debug.c:935
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: ç¾åœ¨ã®ãƒ–ロックãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: debug.c:942
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: トップレベルブロックを閉ã˜ã‚ˆã†ã¨ã—ã¾ã—ãŸ"
+
+#: debug.c:965
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: ç¾åœ¨ã®å˜ä½ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#. FIXME
+#: debug.c:1018
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#. FIXME
+#: debug.c:1029
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#. FIXME.
+#: debug.c:1113
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: 実装ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: debug.c:1135
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: ç¾åœ¨ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: debug.c:1663
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„種類ã§ã™"
+
+#: debug.c:1840
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: ç¾åœ¨ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: debug.c:1885
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: ç¾åœ¨ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: debug.c:1893
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: 余分ãªã‚¿ã‚°ãŒè©¦ã•ã‚Œã¾ã—ãŸ"
+
+#: debug.c:1930
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "警告: åž‹ã®ã‚µã‚¤ã‚ºã‚’ %d ã‹ã‚‰ %d ã«å¤‰æ›´ã—ã¾ã™\n"
+
+#: debug.c:1952
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: ç¾åœ¨ã®ã‚³ãƒ³ãƒ‘イルå˜ä½ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: debug.c:2055
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: %s ã®ãƒ‡ãƒãƒƒã‚°æƒ…å ±ãŒå¾ªç’°ã—ã¦ã„ã¾ã™\n"
+
+#: debug.c:2482
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: ä¸æ­£ãªåž‹ã«é­é‡ã—ã¾ã—ãŸ"
+
+#: dlltool.c:902 dlltool.c:928 dlltool.c:959
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "内部エラー: ä¸æ˜Žãªãƒžã‚·ãƒ³åž‹ã§ã™: %d"
+
+#: dlltool.c:1000
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "定義ファイルを開ã‘ã¾ã›ã‚“: %s"
+
+#: dlltool.c:1005
+#, c-format
+msgid "Processing def file: %s"
+msgstr "定義ファイルを処ç†ã—ã¦ã„ã¾ã™: %s"
+
+#: dlltool.c:1009
+msgid "Processed def file"
+msgstr "定義ファイルを処ç†ã—ã¾ã—ãŸ"
+
+#: dlltool.c:1033
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "定義ファイル %s ã§æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ:%d"
+
+#: dlltool.c:1070
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr "%s: イメージå '%s' ã‹ã‚‰ãƒ‘スã®è¦ç´ ãŒå–り除ã‹ã‚Œã¾ã—ãŸã€‚"
+
+#: dlltool.c:1088
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "NAME: %s ベース: %x"
+
+#: dlltool.c:1091 dlltool.c:1112
+msgid "Can't have LIBRARY and NAME"
+msgstr "LIBRARY ã‚„ NAME ã‚’æŒã¦ã¾ã›ã‚“"
+
+#: dlltool.c:1109
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "LIBRARY: %s ベース: %x"
+
+#: dlltool.c:1354 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "wait: %s"
+
+#: dlltool.c:1359 dllwrap.c:422 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "å­ãƒ—ロセスãŒè‡´å‘½çš„ãªã‚·ã‚°ãƒŠãƒ«ã‚’ %d å—ã‘å–ã‚Šã¾ã—ãŸ"
+
+#: dlltool.c:1365 dllwrap.c:429 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s ã¯ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ %d ã§çµ‚了ã—ã¾ã—ãŸ"
+
+#: dlltool.c:1396
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "%2$s 内㮠%1$s セクションã‹ã‚‰æƒ…報をå–り込んã§ã„ã¾ã™"
+
+#: dlltool.c:1536
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "シンボルを除外ã—ã¦ã„ã¾ã™: %s"
+
+#: dlltool.c:1625 dlltool.c:1636 nm.c:1012 nm.c:1023
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: シンボルãŒã‚ã‚Šã¾ã›ã‚“"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1662
+#, c-format
+msgid "Done reading %s"
+msgstr "%s ã®èª­å–ã‚ŠãŒå®Œäº†ã—ã¾ã—ãŸ"
+
+#: dlltool.c:1672
+#, c-format
+msgid "Unable to open object file: %s: %s"
+msgstr "オブジェクトファイルを開ã‘ã¾ã›ã‚“: %s: %s"
+
+#: dlltool.c:1675
+#, c-format
+msgid "Scanning object file %s"
+msgstr "オブジェクトファイル %s を走査ã—ã¦ã„ã¾ã™"
+
+#: dlltool.c:1690
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "書庫ファイルã‹ã‚‰ mcore-elf dll を生æˆã§ãã¾ã›ã‚“: %s"
+
+#: dlltool.c:1792
+msgid "Adding exports to output file"
+msgstr "出力ファイルã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã‚’追加ã—ã¦ã„ã¾ã™"
+
+#: dlltool.c:1844
+msgid "Added exports to output file"
+msgstr "出力ファイルã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã‚’追加ã—ã¾ã—ãŸ"
+
+#: dlltool.c:1986
+#, c-format
+msgid "Generating export file: %s"
+msgstr "エクスãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’生æˆã—ã¾ã™: %s"
+
+#: dlltool.c:1991
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "一時アセンブリファイルを開ã‘ã¾ã›ã‚“: %s"
+
+#: dlltool.c:1994
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "一時ファイルを開ãã¾ã—ãŸ: %s"
+
+#: dlltool.c:2171
+msgid "failed to read the number of entries from base file"
+msgstr "ベースファイルã‹ã‚‰é …目数を読ã¿è¾¼ã‚€ã®ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: dlltool.c:2219
+msgid "Generated exports file"
+msgstr "エクスãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’生æˆã—ã¾ã—ãŸ"
+
+#: dlltool.c:2428
+#, c-format
+msgid "bfd_open failed open stub file: %s: %s"
+msgstr "bfd_open ãŒã‚¹ã‚¿ãƒ–ファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸ: %s: %s"
+
+#: dlltool.c:2432
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "スタブファイルを作æˆã—ã¦ã„ã¾ã™: %s"
+
+#: dlltool.c:2894
+#, c-format
+msgid "bfd_open failed reopen stub file: %s: %s"
+msgstr "bfd_open ãŒã‚¹ã‚¿ãƒ–ファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸ: %s: %s"
+
+#: dlltool.c:2908 dlltool.c:2984
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "一時 head ファイルを開ã‘ã¾ã›ã‚“: %s"
+
+#: dlltool.c:2970 dlltool.c:3050
+#, c-format
+msgid "failed to open temporary head file: %s: %s"
+msgstr "一時 head ファイルを開ã‘ã¾ã›ã‚“: %s: %s"
+
+#: dlltool.c:3064
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "一時 tail ファイルを開ã‘ã¾ã›ã‚“: %s"
+
+#: dlltool.c:3121
+#, c-format
+msgid "failed to open temporary tail file: %s: %s"
+msgstr "一時 tail ファイルを開ã‘ã¾ã›ã‚“: %s: %s"
+
+#: dlltool.c:3143
+#, c-format
+msgid "Can't create .lib file: %s: %s"
+msgstr ".lib ファイルを作æˆã§ãã¾ã›ã‚“: %s: %s"
+
+#: dlltool.c:3147
+#, c-format
+msgid "Creating library file: %s"
+msgstr "ライブラリファイルを作æˆã—ã¦ã„ã¾ã™: %s"
+
+#: dlltool.c:3239 dlltool.c:3245
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "%s を削除ã§ãã¾ã›ã‚“: %s"
+
+#: dlltool.c:3250
+msgid "Created lib file"
+msgstr "lib ファイルを作æˆã—ã¾ã—ãŸ"
+
+#: dlltool.c:3462
+#, c-format
+msgid "Can't open .lib file: %s: %s"
+msgstr ".lib ファイルを開ã‘ã¾ã›ã‚“: %s: %s"
+
+#: dlltool.c:3470 dlltool.c:3492
+#, c-format
+msgid "%s is not a library"
+msgstr "%s ã¯ãƒ©ã‚¤ãƒ–ラリã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: dlltool.c:3510
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr "インãƒãƒ¼ãƒˆãƒ©ã‚¤ãƒ–ラリ `%s' ãŒ2個以上㮠dll を指定ã—ã¦ã„ã¾ã™"
+
+#: dlltool.c:3521
+#, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr "`%s' ã«å¯¾ã™ã‚‹ dll åを決定ã§ãã¾ã›ã‚“ (インãƒãƒ¼ãƒˆãƒ©ã‚¤ãƒ–ラリã§ã¯ç„¡ã„?)"
+
+#: dlltool.c:3745
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "警告ã€é‡è¤‡ã—㟠EXPORT %s %d,%d を無視ã—ã¾ã™"
+
+#: dlltool.c:3751
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr "エラーã€åºæ•°ä»˜ã EXPORT ãŒé‡è¤‡ã—ã¦ã„ã¾ã™: %s"
+
+#: dlltool.c:3856
+msgid "Processing definitions"
+msgstr "定義を処ç†ã—ã¦ã„ã¾ã™"
+
+#: dlltool.c:3888
+msgid "Processed definitions"
+msgstr "定義を処ç†ã—ã¾ã—ãŸ"
+
+#. xgetext:c-format
+#: dlltool.c:3895 dllwrap.c:483
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "使用法: %s <option(s)> <object-file(s)>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3897
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <machine> <machine> 用 DLL を作æˆã™ã‚‹ã€‚ [default: %s]\n"
+
+#: dlltool.c:3898
+#, c-format
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr " å¯èƒ½ãª <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+
+#: dlltool.c:3899
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <outname> エクスãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’生æˆã™ã‚‹\n"
+
+#: dlltool.c:3900
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <outname> インターフェースライブラリを生æˆã™ã‚‹\n"
+
+#: dlltool.c:3901
+#, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr " -y --output-delaylib <outname> é…延インãƒãƒ¼ãƒˆãƒ©ã‚¤ãƒ–ラリを生æˆã™ã‚‹\n"
+
+#: dlltool.c:3902
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect エクスãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã«é–“接 dll を追加ã™ã‚‹\n"
+
+#: dlltool.c:3903
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr " -D --dllname <name> インターフェースライブラリã«å…¥ã‚Œã‚‹å…¥åŠ› DLL ã®åå‰\n"
+
+#: dlltool.c:3904
+#, c-format
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr " -d --input-def <deffile> 読ã¿è¾¼ã¾ã‚Œã‚‹ .def ファイルã®åå‰\n"
+
+#: dlltool.c:3905
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <deffile> 作æˆã•ã‚Œã‚‹ .def ファイルã®åå‰\n"
+
+#: dlltool.c:3906
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols .def ã«å…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã‚’エクスãƒãƒ¼ãƒˆã™ã‚‹\n"
+
+#: dlltool.c:3907
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols リストã•ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«ã ã‘をエクスãƒãƒ¼ãƒˆã™ã‚‹\n"
+
+#: dlltool.c:3908
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <list> <list> をエクスãƒãƒ¼ãƒˆã—ãªã„\n"
+
+#: dlltool.c:3909
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes デフォルトã§é™¤å¤–ã•ã‚Œã‚‹ã‚·ãƒ³ãƒœãƒ«ã‚’ç„¡ãã™\n"
+
+#: dlltool.c:3910
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <basefile> リンカãŒç”Ÿæˆã—ãŸãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’読ã¿è¾¼ã‚€\n"
+
+#: dlltool.c:3911
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 idata$4 セクションを生æˆã—ãªã„\n"
+
+#: dlltool.c:3912
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 idata$5 セクションを生æˆã—ãªã„\n"
+
+#: dlltool.c:3913
+#, c-format
+msgid " --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"
+msgstr " --use-nul-prefixed-import-tables idata$4 ãŠã‚ˆã³ idata$5 ã«æŽ¥é ­è¾žã‚’付ã‘ãªã„\n"
+
+#: dlltool.c:3914
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr " -U --add-underscore インターフェースライブラリ内ã®å…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã«ä¸‹ç·š (_) を付ã‘ã‚‹\n"
+
+#: dlltool.c:3915
+#, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr " --add-stdcall-underscore インターフェースライブラリ内㮠stdcall シンボルã«ä¸‹ç·š (_) を付ã‘ã‚‹\n"
+
+#: dlltool.c:3916
+#, c-format
+msgid " --no-leading-underscore All symbols shouldn't be prefixed by an underscore.\n"
+msgstr " --no-leading-underscore ã™ã¹ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã®å…ˆé ­ã«ä¸‹ç·š (_) ãŒä»˜ã„ã¦ã„ãªã„ã¨ã™ã‚‹\n"
+
+#: dlltool.c:3917
+#, c-format
+msgid " --leading-underscore All symbols should be prefixed by an underscore.\n"
+msgstr " --leading-underscore ã™ã¹ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã®å…ˆé ­ã«ä¸‹ç·š (_) ãŒä»˜ã„ã¦ã„ã‚‹ã¨ã™ã‚‹\n"
+
+#: dlltool.c:3918
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at エクスãƒãƒ¼ãƒˆã•ã‚ŒãŸåå‰ã‹ã‚‰ @<n> ã‚’å–り除ã\n"
+
+#: dlltool.c:3919
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias @<n> ç„¡ã—ã®ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã‚’追加ã™ã‚‹\n"
+
+#: dlltool.c:3920
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -p --ext-prefix-alias <prefix> <prefix> を接頭辞ã¨ã—ã¦ä»˜ã‘ãŸã‚¨ã‚¤ãƒªã‚¢ã‚¹ã‚’加ãˆã‚‹\n"
+
+#: dlltool.c:3921
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <name> アセンブラã¨ã—㦠<name> を使用ã™ã‚‹\n"
+
+#: dlltool.c:3922
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <flags> アセンブラ㫠<flags> を渡ã™\n"
+
+#: dlltool.c:3923
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib 後方互æ›æ€§ã®ã‚るインãƒãƒ¼ãƒˆãƒ©ã‚¤ãƒ–ラリを作æˆã™ã‚‹\n"
+
+#: dlltool.c:3924
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete 一時ファイルを消去ã—ãªã„ (余分ãªã‚‚ã®ã‚‚ä¿å­˜ã™ã‚‹ãªã‚‰ç¹°ã‚Šè¿”ã™ã“ã¨)\n"
+
+#: dlltool.c:3925
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr " -t --temp-prefix <prefix> 一時ファイルåを生æˆã™ã‚‹ã¨ãã« <prefix> 接頭辞を使用ã™ã‚‹\n"
+
+#: dlltool.c:3926
+#, c-format
+msgid " -I --identify <implib> Report the name of the DLL associated with <implib>.\n"
+msgstr " -I --identify <implib> <implib> ã«é–¢é€£ã¥ã‘られ㟠DLL åを報告ã™ã‚‹\n"
+
+#: dlltool.c:3927
+#, c-format
+msgid " --identify-strict Causes --identify to report error when multiple DLLs.\n"
+msgstr " --identify-strict 複数㮠DLL ãŒã‚ã‚‹ã¨ãã« --identify ãŒã‚¨ãƒ©ãƒ¼ã‚’報告ã™ã‚‹ã‚ˆã†ã«ã™ã‚‹\n"
+
+#: dlltool.c:3928
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose 冗長ã«è¡¨ç¤ºã‚’è¡Œã†\n"
+
+#: dlltool.c:3929
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示ã™ã‚‹\n"
+
+#: dlltool.c:3930
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help ã“ã®æƒ…報を表示ã™ã‚‹\n"
+
+#: dlltool.c:3931
+#, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr " @<file> <file> ã‹ã‚‰ã‚ªãƒ—ションを読ã¿è¾¼ã‚€\n"
+
+#: dlltool.c:3933
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr " -M --mcore-elf <outname> <outname> 㸠mcore-elf オブジェクトファイルを処ç†ã™ã‚‹\n"
+
+#: dlltool.c:3934
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <name> リンカã¨ã—㦠<name> を使用ã™ã‚‹\n"
+
+#: dlltool.c:3935
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <flags> <flags> をリンカã«æ¸¡ã™\n"
+
+#: dlltool.c:4082
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr "DLL å'%s' ã‹ã‚‰ãƒ‘スã®è¦ç´ ãŒå–り除ã‹ã‚Œã¾ã—ãŸ"
+
+#: dlltool.c:4130
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "ベースファイルを開ã‘ã¾ã›ã‚“: %s"
+
+#: dlltool.c:4165
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "マシン '%s' ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: dlltool.c:4245
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr "警告ã€ãƒžã‚·ãƒ³åž‹ (%d) ã§ã¯é…延インãƒãƒ¼ãƒˆã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: dlltool.c:4313 dllwrap.c:213
+#, c-format
+msgid "Tried file: %s"
+msgstr "試ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«: %s"
+
+#: dlltool.c:4320 dllwrap.c:220
+#, c-format
+msgid "Using file: %s"
+msgstr "使用ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«: %s"
+
+#: dllwrap.c:303
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "一時ベースファイル %s ã‚’ä¿å­˜ã—ã¦ã„ã¾ã™"
+
+#: dllwrap.c:305
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "一時ベースファイル %s を削除ã—ã¦ã„ã¾ã™"
+
+#: dllwrap.c:319
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "一時エクスãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ« %s ã‚’ä¿å­˜ã—ã¦ã„ã¾ã™"
+
+#: dllwrap.c:321
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "一時エクスãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ« %s を削除ã—ã¦ã„ã¾ã™"
+
+#: dllwrap.c:334
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "一時 def ファイル %s ã‚’ä¿å­˜ã—ã¾ã™"
+
+#: dllwrap.c:336
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "一時 def ファイル %s を削除ã—ã¾ã™"
+
+#: dllwrap.c:484
+#, c-format
+msgid " Generic options:\n"
+msgstr " 一般オプション:\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr " @<file> <file> ã‹ã‚‰ã‚ªãƒ—ションを読ã¿è¾¼ã‚€\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q é™ã‹ã«å‹•ä½œã™ã‚‹\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v 冗長ã«è¡¨ç¤ºã‚’è¡Œã†\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version dllwrap ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示ã™ã‚‹\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <出力å> --output-lib ã¨åŒç¾©èªž\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " Options for %s:\n"
+msgstr " %s 用オプション:\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <driver> デフォルト㧠\"gcc\" ã«è¨­å®šã•ã‚Œã‚‹\n"
+
+#: dllwrap.c:492
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <flags> デフォルト㮠ld フラグを上書ãã™ã‚‹\n"
+
+#: dllwrap.c:493
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dlltool> デフォルト㧠\"dlltool\" ã«è¨­å®šã•ã‚Œã‚‹\n"
+
+#: dllwrap.c:494
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <entry> 代替 DLL エントリãƒã‚¤ãƒ³ãƒˆã‚’指定ã™ã‚‹\n"
+
+#: dllwrap.c:495
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <base> イメージベースアドレスを指定ã™ã‚‹\n"
+
+#: dllwrap.c:496
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <machine> i386-cygwin32 ã¾ãŸã¯ i386-mingw32\n"
+
+#: dllwrap.c:497
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run 動作ã«å¿…è¦ãªã“ã¨ã‚’明らã‹ã«ã™ã‚‹\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Mingw DLL を作æˆã™ã‚‹\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " DLLTOOL ã«æ¸¡ã•ã‚Œã‚‹ã‚ªãƒ—ション:\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <machine>\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <outname> エクスãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’生æˆã™ã‚‹\n"
+
+#: dllwrap.c:502
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <outname> 入力ライブラリを生æˆã™ã‚‹\n"
+
+#: dllwrap.c:503
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect エクスãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã«é–“接 DLL を追加ã™ã‚‹\n"
+
+#: dllwrap.c:504
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <name> 出力ライブラリã«è¨­å®šã™ã‚‹å…¥åŠ› DLL ã®åå‰\n"
+
+#: dllwrap.c:505
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <deffile> 入力 .def ファイルã®åå‰\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <deffile> 出力 .def ファイルã®åå‰\n"
+
+#: dllwrap.c:507
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols .def ã«å…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã‚’エクスãƒãƒ¼ãƒˆã™ã‚‹\n"
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols .drectve シンボルã®ã¿ã‚’エクスãƒãƒ¼ãƒˆã™ã‚‹\n"
+
+#: dllwrap.c:509
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <list> .def ã‹ã‚‰ <list> を除外ã™ã‚‹\n"
+
+#: dllwrap.c:510
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes デフォルトã§é™¤å¤–ã•ã‚Œã‚‹ã‚·ãƒ³ãƒœãƒ«ã‚’ç„¡ãã™\n"
+
+#: dllwrap.c:511
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr " --base-file <basefile> リンカãŒä½œæˆã—ãŸãƒ™ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’読ã¿å–ã‚‹\n"
+
+#: dllwrap.c:512
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 idata$4 セクションを生æˆã—ãªã„\n"
+
+#: dllwrap.c:513
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 idata$5 セクションを生æˆã—ãªã„\n"
+
+#: dllwrap.c:514
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U .lib ã«ä¸‹ç·š (_) を追加ã™ã‚‹\n"
+
+#: dllwrap.c:515
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k エクスãƒãƒ¼ãƒˆã•ã‚ŒãŸåå‰ã‹ã‚‰ @<n> を削る\n"
+
+#: dllwrap.c:516
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias @<n> ãªã—ã®ã‚¨ã‚¤ãƒªã‚¢ã‚¹ã‚’追加ã™ã‚‹\n"
+
+#: dllwrap.c:517
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <name> アセンブラã¨ã—㦠<name> を使用ã™ã‚‹\n"
+
+#: dllwrap.c:518
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete 一時ファイルを削除ã—ãªã„\n"
+
+#: dllwrap.c:519
+#, c-format
+msgid " --no-leading-underscore Entrypoint without underscore\n"
+msgstr " --no-leading-underscore 下線 (_) ãŒä»˜ã„ã¦ã„ãªã„エントリãƒã‚¤ãƒ³ãƒˆ\n"
+
+#: dllwrap.c:520
+#, c-format
+msgid " --leading-underscore Entrypoint with underscore.\n"
+msgstr " --leading-underscore 下線 (_) ãŒä»˜ã„ã¦ã„るエントリãƒã‚¤ãƒ³ãƒˆ\n"
+
+#: dllwrap.c:521
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " 残りã¯ãã®ã¾ã¾è¨€èªžãƒ‰ãƒ©ã‚¤ãƒã«æ¸¡ã•ã‚Œã¾ã™\n"
+
+#: dllwrap.c:805
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "å°‘ãªãã¨ã‚‚ -o ã‹ --dllname オプションã®ã©ã¡ã‚‰ã‹ã¯æŒ‡å®šã—ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
+
+#: dllwrap.c:834
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"エクスãƒãƒ¼ãƒˆå®šç¾©ãƒ•ã‚¡ã‚¤ãƒ«ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。\n"
+"一ã¤ä½œæˆã•ã‚Œã¾ã™ãŒã€ã“ã‚Œã¯ã‚ãªãŸã®æœ›ã‚€ã‚‚ã®ã§ã¯ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
+
+#: dllwrap.c:1023
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "DLLTOOL å : %s\n"
+
+#: dllwrap.c:1024
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "DLLTOOL オプション: %s\n"
+
+#: dllwrap.c:1025
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "DRIVER å : %s\n"
+
+#: dllwrap.c:1026
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "DRIVER オプション: %s\n"
+
+#: dwarf.c:256 dwarf.c:3019
+msgid "badly formed extended line op encountered!\n"
+msgstr "ä¸æ­£ãªå½¢å¼ã®æ‹¡å¼µè¡Œå‘½ä»¤ã‚³ãƒ¼ãƒ‰ã«é­é‡ã—ã¾ã—ãŸ!\n"
+
+#: dwarf.c:263
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " 拡張命令コード %d: "
+
+#: dwarf.c:268
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"列ã®çµ‚ã‚Š\n"
+"\n"
+
+#: dwarf.c:274
+#, c-format
+msgid "set Address to 0x%s\n"
+msgstr "設定アドレス 0x%s\n"
+
+#: dwarf.c:280
+#, c-format
+msgid " define new File Table entry\n"
+msgstr " æ–°ãŸãªãƒ•ã‚¡ã‚¤ãƒ«è¡¨ã‚¨ãƒ³ãƒˆãƒªã®å®šç¾©\n"
+
+#: dwarf.c:281 dwarf.c:2548
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Entry\tDir\t時刻\tサイズ\tåå‰\n"
+
+#: dwarf.c:295
+#, c-format
+msgid "set Discriminator to %s\n"
+msgstr ""
+
+#: dwarf.c:356
+#, c-format
+msgid "(%s"
+msgstr "(%s"
+
+#: dwarf.c:360
+#, c-format
+msgid ",%s"
+msgstr ",%s"
+
+#: dwarf.c:364
+#, c-format
+msgid ",%s)\n"
+msgstr ",%s)\n"
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:387
+#, c-format
+msgid "user defined: "
+msgstr "ユーザー定義: "
+
+#: dwarf.c:389
+#, c-format
+msgid "UNKNOWN: "
+msgstr "ä¸æ˜Ž: "
+
+#: dwarf.c:390
+#, c-format
+msgid "length %d ["
+msgstr "é•·ã• %d ["
+
+#: dwarf.c:407
+msgid "<no .debug_str section>"
+msgstr "<.debug_str セクションãŒã‚ã‚Šã¾ã›ã‚“>"
+
+#: dwarf.c:413
+#, c-format
+msgid "DW_FORM_strp offset too big: %s\n"
+msgstr "DW_FORM_strp オフセットãŒå¤§ãã™ãŽã¾ã™: %s\n"
+
+#: dwarf.c:415
+msgid "<offset is too big>"
+msgstr "<オフセットãŒå¤§ãã™ãŽã¾ã™>"
+
+#: dwarf.c:655
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "ä¸æ˜Žãª TAG 値: %lx"
+
+#: dwarf.c:696
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "ä¸æ˜Žãª FORM 値: %lx"
+
+#: dwarf.c:705
+#, c-format
+msgid " %s byte block: "
+msgstr " %s ãƒã‚¤ãƒˆãƒ–ロック: "
+
+#: dwarf.c:1050
+#, c-format
+msgid "(DW_OP_call_ref in frame info)"
+msgstr "(フレーム情報内㮠DW_OP_call_ref)"
+
+#: dwarf.c:1122
+#, c-format
+msgid "(DW_OP_GNU_implicit_pointer in frame info)"
+msgstr "(フレーム情報内㮠DW_OP_GNU_implicit_pointer)"
+
+#: dwarf.c:1229
+#, c-format
+msgid "(User defined location op)"
+msgstr "(ユーザ定義ä½ç½®å‘½ä»¤)"
+
+#: dwarf.c:1231
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(ä¸æ˜Žãªä½ç½®å‘½ä»¤)"
+
+#: dwarf.c:1278
+msgid "Internal error: DWARF version is not 2, 3 or 4.\n"
+msgstr "内部エラー: DWARF ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒ 2ã€3 ã¾ãŸã¯ 4 ã§ã¯ã‚ã‚Šã¾ã›ã‚“。\n"
+
+#: dwarf.c:1384
+msgid "DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"
+msgstr "sizeof(dwarf_vma) != 8 ã®æ™‚㯠DW_FORM_data8 ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“\n"
+
+#: dwarf.c:1434
+#, c-format
+msgid " (indirect string, offset: 0x%s): %s"
+msgstr " (間接文字列ã€ã‚ªãƒ•ã‚»ãƒƒãƒˆ: 0x%s): %s"
+
+#: dwarf.c:1459
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "èªè­˜ã§ããªã„å½¢å¼: %lu\n"
+
+#: dwarf.c:1552
+#, c-format
+msgid "(not inlined)"
+msgstr "(éž inline 化)"
+
+#: dwarf.c:1555
+#, c-format
+msgid "(inlined)"
+msgstr "(inline 化)"
+
+#: dwarf.c:1558
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(inline 宣言ã•ã‚ŒãŸãŒç„¡è¦–ã•ã‚ŒãŸ)"
+
+#: dwarf.c:1561
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(inline 宣言ã•ã‚Œ inline 化)"
+
+#: dwarf.c:1564
+#, c-format
+msgid " (Unknown inline attribute value: %s)"
+msgstr " (ä¸æ˜Žãª inline 属性値: %s)"
+
+#: dwarf.c:1735
+#, c-format
+msgid "(location list)"
+msgstr "(location list)"
+
+#: dwarf.c:1756 dwarf.c:3722
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [DW_AT_frame_base ç„¡ã—]"
+
+#: dwarf.c:1771
+#, c-format
+msgid "Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr "オフセット %2$lx ã«ã‚ã‚‹ DIE ã® DW_AT_import 属性ã®å€¤ã¨ã—ã¦ä½¿ç”¨ã•ã‚Œã¦ã„るオフセット %1$s ã¯å¤§ãã™ãŽã¾ã™ã€‚\n"
+
+#: dwarf.c:1971
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "ä¸æ˜Žãª AT 値: %lx"
+
+#: dwarf.c:2042
+#, c-format
+msgid "Reserved length value (0x%s) found in section %s\n"
+msgstr "セクション %2$s 内ã«äºˆç´„ã•ã‚ŒãŸé•·ã•ã®å€¤ (%1$s) ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ\n"
+
+#: dwarf.c:2054
+#, c-format
+msgid "Corrupt unit length (0x%s) found in section %s\n"
+msgstr "%2$s セクション内ã«å£Šã‚ŒãŸãƒ¦ãƒ‹ãƒƒãƒˆé•· (%1$s) ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ\n"
+
+#: dwarf.c:2062
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "%s セクションã«ã‚³ãƒ³ãƒ‘イルå˜ä½ãŒã‚ã‚Šã¾ã›ã‚“よ ?"
+
+#: dwarf.c:2071
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "%u 個ã®ã‚¨ãƒ³ãƒˆãƒªã‚’æŒã¤ãƒ‡ãƒãƒƒã‚°æƒ…å ±é…列ã®ãŸã‚ã«å分ãªãƒ¡ãƒ¢ãƒªãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: dwarf.c:2080 dwarf.c:3288 dwarf.c:3382 dwarf.c:3456 dwarf.c:3588
+#: dwarf.c:3758 dwarf.c:3827 dwarf.c:4024
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"%s セクションã®å†…容:\n"
+"\n"
+
+#: dwarf.c:2088
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "%s セクションã®ä½ç½®ã‚’特定ã§ãã¾ã›ã‚“!\n"
+
+#: dwarf.c:2169
+#, c-format
+msgid " Compilation Unit @ offset 0x%s:\n"
+msgstr " コンパイルå˜ä½ @ オフセット 0x%s:\n"
+
+#: dwarf.c:2171
+#, c-format
+msgid " Length: 0x%s (%s)\n"
+msgstr " é•·ã•: 0x%s (%s)\n"
+
+#: dwarf.c:2174
+#, c-format
+msgid " Version: %d\n"
+msgstr " ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %d\n"
+
+#: dwarf.c:2175
+#, c-format
+msgid " Abbrev Offset: %s\n"
+msgstr " çœç•¥ã‚ªãƒ•ã‚»ãƒƒãƒˆ: %s\n"
+
+#: dwarf.c:2177
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " ãƒã‚¤ãƒ³ã‚¿ã‚µã‚¤ã‚º:%d\n"
+
+#: dwarf.c:2181
+#, c-format
+msgid " Signature: "
+msgstr " ã‚·ã‚°ãƒãƒãƒ£: "
+
+#: dwarf.c:2185
+#, c-format
+msgid " Type Offset: 0x%s\n"
+msgstr " 型オフセット: 0x%s\n"
+
+#: dwarf.c:2193
+#, c-format
+msgid "Debug info is corrupted, length of CU at %s extends beyond end of section (length = %s)\n"
+msgstr "デãƒãƒƒã‚°æƒ…å ±ãŒå£Šã‚Œã¦ã„ã¾ã™ã€‚ %s ã«ã‚ã‚‹ CU ã®é•·ã•ãŒã‚»ã‚¯ã‚·ãƒ§ãƒ³ (é•·ã• = %s) ã®çµ‚端を超ãˆã¦ã„ã¾ã™\n"
+
+#: dwarf.c:2206
+#, c-format
+msgid "CU at offset %s contains corrupt or unsupported version number: %d.\n"
+msgstr "オフセット %s ã«ã‚ã‚‹ CU ãŒå£Šã‚Œã¦ã„ã‚‹ã‹ã€ã‚µãƒãƒ¼ãƒˆã—ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã§ã™: %d\n"
+
+#: dwarf.c:2217
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr "デãƒãƒƒã‚°æƒ…å ±ãŒå£Šã‚Œã¦ã„ã¾ã™ã€‚çœç•¥ã‚ªãƒ•ã‚»ãƒƒãƒˆ (%lx) ãŒçœç•¥ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚µã‚¤ã‚º (%lx) より大ãã„ã§ã™\n"
+
+#: dwarf.c:2267
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr ".debug_info セクション内オフセット %lx ã§èª¤ã£ãŸ end-of-siblings マーカーãŒæ¤œå‡ºã•ã‚Œã¾ã—ãŸ\n"
+
+#: dwarf.c:2271
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr "ã“れ以é™ã®èª¤ã£ãŸ end-of-sibling マーカーã«é–¢ã™ã‚‹è­¦å‘Šã¯æŠ‘æ­¢ã•ã‚Œã¾ã™\n"
+
+#: dwarf.c:2290
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr " <%d><%lx>: çœç•¥ç•ªå·: %lu"
+
+#: dwarf.c:2294
+#, c-format
+msgid " <%d><%lx>: ...\n"
+msgstr " <%d><%lx>: ...\n"
+
+#: dwarf.c:2313
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr "オフセット %lx ã«ã‚ã‚‹ DIE ãŒå­˜åœ¨ã—ãªã„çœç•¥ç•ªå· %lu ã‚’å‚ç…§ã—ã¦ã„ã¾ã™\n"
+
+#: dwarf.c:2415
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"セクション %s ã®ãƒ‡ãƒãƒƒã‚°å†…容ã®ç”Ÿãƒ€ãƒ³ãƒ—:\n"
+"\n"
+
+#: dwarf.c:2453
+#, c-format
+msgid "The information in section %s appears to be corrupt - the section is too small\n"
+msgstr "セクション %s 内ã®æƒ…å ±ãŒå£Šã‚Œã¦ã„るよã†ã§ã™ - セクションãŒå°ã•ã™ãŽã¾ã™\n"
+
+#: dwarf.c:2465 dwarf.c:2833
+msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
+msgstr "ç¾åœ¨ã®ã¨ã“ã‚ã€DWARF ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2, 3 ãŠã‚ˆã³ 4 ã®ã¿è¡Œæƒ…報をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚\n"
+
+#: dwarf.c:2479 dwarf.c:2848
+msgid "Invalid maximum operations per insn.\n"
+msgstr "命令ã”ã¨ã®æœ€å¤§æ“作数ãŒç„¡åŠ¹ã§ã™ã€‚\n"
+
+#: dwarf.c:2498
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr " オフセット: 0x%lx\n"
+
+#: dwarf.c:2499
+#, c-format
+msgid " Length: %ld\n"
+msgstr " é•·ã•: %ld\n"
+
+#: dwarf.c:2500
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " DWARF ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %d\n"
+
+#: dwarf.c:2501
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " Prologue ã®é•·ã•: %d\n"
+
+#: dwarf.c:2502
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " 最å°å‘½ä»¤é•·: %d\n"
+
+#: dwarf.c:2504
+#, c-format
+msgid " Maximum Ops per Instruction: %d\n"
+msgstr " 命令ã”ã¨ã®æœ€å¤§æ“作数: %d\n"
+
+#: dwarf.c:2505
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " 'is_stmt' ã®åˆæœŸå€¤: %d\n"
+
+#: dwarf.c:2506
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " Line ベース: %d\n"
+
+#: dwarf.c:2507
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " Line 範囲: %d\n"
+
+#: dwarf.c:2508
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " オペコードベース: %d\n"
+
+#: dwarf.c:2517
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" オペコード:\n"
+
+#: dwarf.c:2520
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " オペコード %d 㯠%d 個ã®å¼•æ•°ã‚’æŒã¡ã¾ã™\n"
+
+#: dwarf.c:2526
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" ディレクトリー表ã¯ç©ºã§ã™ã€‚\n"
+
+#: dwarf.c:2529
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" ディレクトリー表:\n"
+
+#: dwarf.c:2544
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" ファイルå表ã¯ç©ºã§ã™ã€‚\n"
+
+#: dwarf.c:2547
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" ファイルå表:\n"
+
+#. Now display the statements.
+#: dwarf.c:2577
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" 行番å·æ–‡:\n"
+
+#: dwarf.c:2596
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s"
+msgstr " 特殊命令コード %d: アドレスを %s 分進゠0x%s ã¨ã—ã€"
+
+#: dwarf.c:2610
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s[%d]"
+msgstr " 特殊命令コード %d: アドレスを %s 分進゠0x%s[%d] ã¨ã—ã€"
+
+#: dwarf.c:2618
+#, c-format
+msgid " and Line by %s to %d\n"
+msgstr " 行を %s 分進゠%d ã¨ã—ã¾ã™\n"
+
+#: dwarf.c:2628
+#, c-format
+msgid " Copy\n"
+msgstr " コピー\n"
+
+#: dwarf.c:2638
+#, c-format
+msgid " Advance PC by %s to 0x%s\n"
+msgstr " PC ã‚’ %s 分進゠0x%s ã¨ã—ã¾ã™\n"
+
+#: dwarf.c:2651
+#, c-format
+msgid " Advance PC by %s to 0x%s[%d]\n"
+msgstr " PC ã‚’ %s 分進゠0x%s[%d] ã¨ã—ã¾ã™\n"
+
+#: dwarf.c:2662
+#, c-format
+msgid " Advance Line by %s to %d\n"
+msgstr " 行を %s 進゠%d ã¨ã—ã¾ã™\n"
+
+#: dwarf.c:2670
+#, c-format
+msgid " Set File Name to entry %s in the File Name Table\n"
+msgstr " エントリ %s ã®ãƒ•ã‚¡ã‚¤ãƒ«åをファイルå表ã«è¨­å®šã—ã¾ã™\n"
+
+#: dwarf.c:2678
+#, c-format
+msgid " Set column to %s\n"
+msgstr " 列幅を %s ã«è¨­å®šã—ã¾ã™\n"
+
+#: dwarf.c:2686
+#, c-format
+msgid " Set is_stmt to %s\n"
+msgstr " is_stmt ã‚’ %s ã«è¨­å®šã—ã¾ã™\n"
+
+#: dwarf.c:2691
+#, c-format
+msgid " Set basic block\n"
+msgstr " 基本ブロックを設定\n"
+
+#: dwarf.c:2701
+#, c-format
+msgid " Advance PC by constant %s to 0x%s\n"
+msgstr " PC を定数 %s 分進゠0x%s ã¨ã—ã¾ã™\n"
+
+#: dwarf.c:2714
+#, c-format
+msgid " Advance PC by constant %s to 0x%s[%d]\n"
+msgstr " PC を定数 %s 分進゠0x%s[%d] ã¨ã—ã¾ã™\n"
+
+#: dwarf.c:2726
+#, c-format
+msgid " Advance PC by fixed size amount %s to 0x%s\n"
+msgstr " PC を固定サイズ %s 分進゠0x%s ã¨ã—ã¾ã™\n"
+
+#: dwarf.c:2732
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr " prologue_end ã‚’ true ã«è¨­å®šã—ã¾ã™\n"
+
+#: dwarf.c:2736
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr " epilogue_begin ã‚’ true ã«è¨­å®šã—ã¾ã™\n"
+
+#: dwarf.c:2742
+#, c-format
+msgid " Set ISA to %s\n"
+msgstr " ISA ã‚’ %s ã«è¨­å®šã—ã¾ã™\n"
+
+#: dwarf.c:2746 dwarf.c:3160
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr " ä¸æ˜Žãªè¢«æ¼”ç®—å­ä»˜ãã®ã‚ªãƒšã‚³ãƒ¼ãƒ‰ %d : "
+
+#: dwarf.c:2780
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"セクション %s ã®ãƒ‡ãƒãƒƒã‚°å†…容ã®ãƒ‡ã‚³ãƒ¼ãƒ‰ã—ãŸãƒ€ãƒ³ãƒ—:\n"
+"\n"
+
+#: dwarf.c:2821
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "行情報ãŒå£Šã‚Œã¦ã„るよã†ã§ã™ - ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã¯å°ã•ã™ãŽã¾ã™\n"
+
+#: dwarf.c:2953
+#, c-format
+msgid "CU: %s:\n"
+msgstr "CU: %s:\n"
+
+#: dwarf.c:2954 dwarf.c:2964
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr "ファイルå è¡Œç•ªå· é–‹å§‹ã‚¢ãƒ‰ãƒ¬ã‚¹\n"
+
+#: dwarf.c:2959
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr "CU: %s/%s:\n"
+
+#: dwarf.c:3051
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "ä¸æ˜Ž: é•·ã• %d\n"
+
+#: dwarf.c:3156
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr " ISA ã‚’ %lu ã«è¨­å®šã—ã¾ã™\n"
+
+#: dwarf.c:3322 dwarf.c:3872
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr "%2$s セクション内オフセット 0x%1$lx ã® .debug_info ㌠CU ヘッダを指ã—ã¦ã„ã¾ã›ã‚“。\n"
+
+#: dwarf.c:3336
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "DWARF 2 ãŠã‚ˆã³ 3 ã® pubnames ã®ã¿ç¾åœ¨ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™\n"
+
+#: dwarf.c:3343
+#, c-format
+msgid " Length: %ld\n"
+msgstr " é•·ã•: %ld\n"
+
+#: dwarf.c:3345
+#, c-format
+msgid " Version: %d\n"
+msgstr " ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %d\n"
+
+#: dwarf.c:3347
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr " .debug_info セクションã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ: 0x%lx\n"
+
+#: dwarf.c:3349
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr " .debug_info セクション領域サイズ: %ld\n"
+
+#: dwarf.c:3352
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" オフセット\tåå‰\n"
+
+#: dwarf.c:3403
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - 行番å·: %d ファイル番å·: %d\n"
+
+#: dwarf.c:3409
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:3417
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - è¡Œç•ªå· : %d マクロ : %s\n"
+
+#: dwarf.c:3426
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - è¡Œç•ªå· : %d マクロ : %s\n"
+
+#: dwarf.c:3438
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - 定数 : %d 文字列 : %s\n"
+
+#: dwarf.c:3467
+#, c-format
+msgid " Number TAG\n"
+msgstr " ç•ªå· TAG\n"
+
+#: dwarf.c:3476
+msgid "has children"
+msgstr "å­ã‚ã‚Š"
+
+#: dwarf.c:3476
+msgid "no children"
+msgstr "å­ãªã—"
+
+#: dwarf.c:3527 dwarf.c:3754 dwarf.c:3981
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"%s セクションãŒç©ºã§ã™ã€‚\n"
+
+#: dwarf.c:3533 dwarf.c:3987
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr ".debug_info ã®ãƒ­ãƒ¼ãƒ‰/構文解æžãŒå‡ºæ¥ã¾ã›ã‚“。ãã®ãŸã‚ %s セクションを解釈ã§ãã¾ã›ã‚“。\n"
+
+#: dwarf.c:3577
+msgid "No location lists in .debug_info section!\n"
+msgstr ".debug_info セクションã«ä½ç½®ãƒªã‚¹ãƒˆãŒã‚ã‚Šã¾ã›ã‚“!\n"
+
+#: dwarf.c:3582
+#, c-format
+msgid "Location lists in %s section start at 0x%s\n"
+msgstr "%s セクションã®ä½ç½®ãƒªã‚¹ãƒˆãŒ 0x%s ã‹ã‚‰é–‹å§‹ã—ã¾ã™\n"
+
+#: dwarf.c:3589
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr " オフセット 開始 終了 Expression\n"
+
+#: dwarf.c:3638
+#, 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:3642
+#, 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:3650
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "オフセット 0x%lx ㌠.debug_loc セクションサイズより大ãã„ã§ã™ã€‚\n"
+
+#: dwarf.c:3659 dwarf.c:3694 dwarf.c:3704
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "オフセット 0x%lx ã‹ã‚‰å§‹ã¾ã‚‹ä½ç½®ãƒªã‚¹ãƒˆãŒçµ‚端ã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
+
+#: dwarf.c:3678 dwarf.c:4075
+#, c-format
+msgid "<End of list>\n"
+msgstr "<リストã®çµ‚端>\n"
+
+#: dwarf.c:3688
+#, c-format
+msgid "(base address)\n"
+msgstr "(ベースアドレス)\n"
+
+#: dwarf.c:3725
+msgid " (start == end)"
+msgstr " (開始 == 終了)"
+
+#: dwarf.c:3727
+msgid " (start > end)"
+msgstr " (開始 > 終了)"
+
+#: dwarf.c:3737
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr "セクション %2$s ã®æœ«ç«¯ã« %1$ld ãƒã‚¤ãƒˆã®æœªä½¿ç”¨éƒ¨åˆ†ãŒã‚ã‚Šã¾ã™\n"
+
+#: dwarf.c:3883
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "ç¾åœ¨ã®ã¨ã“ã‚ DWARF 2 ãŠã‚ˆã³ 3 arange ã®ã¿ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™\n"
+
+#: dwarf.c:3887
+#, c-format
+msgid " Length: %ld\n"
+msgstr " é•·ã•: %ld\n"
+
+#: dwarf.c:3889
+#, c-format
+msgid " Version: %d\n"
+msgstr " ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %d\n"
+
+#: dwarf.c:3890
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr " .debug_info 内ã¸ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ: %lx\n"
+
+#: dwarf.c:3892
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " ãƒã‚¤ãƒ³ã‚¿ã‚µã‚¤ã‚º: %d\n"
+
+#: dwarf.c:3893
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " セグメントサイズ: %d\n"
+
+#: dwarf.c:3902
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr "ãƒã‚¤ãƒ³ã‚¿ã‚µã‚¤ã‚º + セグメントサイズãŒ2ã®ã¹ãä¹—æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“。\n"
+
+#: dwarf.c:3907
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" アドレス é•·ã•\n"
+
+#: dwarf.c:3909
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" アドレス é•·ã•\n"
+
+#: dwarf.c:3997
+msgid "No range lists in .debug_info section!\n"
+msgstr ".debug_info セクションã«ç¯„囲リストãŒã‚ã‚Šã¾ã›ã‚“!\n"
+
+#: dwarf.c:4021
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "%s セクションã®ç¯„囲リスト㌠0x%lx ã‹ã‚‰é–‹å§‹ã—ã¾ã™\n"
+
+#: dwarf.c:4025
+#, c-format
+msgid " Offset Begin End\n"
+msgstr " オフセット 開始 終了\n"
+
+#: dwarf.c:4046
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "%3$s セクションã«ç©´ [0x%1$lx - 0x%2$lx] ãŒã‚ã‚Šã¾ã™ã€‚\n"
+
+#: dwarf.c:4050
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "%3$s セクションã«é‡ãªã‚Šåˆã£ã¦ã„る部分 [0x%1$lx - 0x%2$lx] ãŒã‚ã‚Šã¾ã™ã€‚\n"
+
+#: dwarf.c:4093
+msgid "(start == end)"
+msgstr "(開始 == 終了)"
+
+#: dwarf.c:4095
+msgid "(start > end)"
+msgstr "(開始 > 終了)"
+
+#: dwarf.c:4347
+msgid "bad register: "
+msgstr "é–“é•ã£ãŸãƒ¬ã‚¸ã‚¹ã‚¿: "
+
+#. The documentation for the format of this file is in gdb/dwarf2read.c.
+#: dwarf.c:4350 dwarf.c:5159
+#, c-format
+msgid "Contents of the %s section:\n"
+msgstr "%s セクションã®å†…容:\n"
+
+#: dwarf.c:5120
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr " DW_CFA_??? (ユーザ定義フレーム呼ã³å‡ºã—æ“作: %#x)\n"
+
+#: dwarf.c:5122
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œãªã„ã¾ãŸã¯ä¸æ˜Žãª Dwarf フレーム呼ã³å‡ºã—命令番å·: %#x\n"
+
+#: dwarf.c:5163
+#, c-format
+msgid "Truncated header in the %s section.\n"
+msgstr "グループセクション %s 内ã§åˆ‡ã‚Šè©°ã‚られãŸãƒ˜ãƒƒãƒ€ã§ã™\n"
+
+#: dwarf.c:5168
+#, c-format
+msgid "Version %ld\n"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %ld\n"
+
+#: dwarf.c:5175
+msgid "The address table data in version 3 may be wrong.\n"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3 ã§ã¯ã‚¢ãƒ‰ãƒ¬ã‚¹è¡¨ãƒ‡ãƒ¼ã‚¿ã«é–“é•ã„ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。\n"
+
+#: dwarf.c:5178
+msgid "Version 4 does not support case insensitive lookups.\n"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 4 ã§ã¯å¤§æ–‡å­—ã¨å°æ–‡å­—を区別ã—ãªã„検索ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“。\n"
+
+#: dwarf.c:5183
+#, c-format
+msgid "Unsupported version %lu.\n"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %lu ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
+
+#: dwarf.c:5199
+#, c-format
+msgid "Corrupt header in the %s section.\n"
+msgstr "グループセクション %s 内ã§ç ´æã—ãŸãƒ˜ãƒƒãƒ€ã§ã™ã€‚\n"
+
+#: dwarf.c:5214
+#, c-format
+msgid ""
+"\n"
+"CU table:\n"
+msgstr ""
+"\n"
+"CU 表:\n"
+
+#: dwarf.c:5220
+#, c-format
+msgid "[%3u] 0x%lx - 0x%lx\n"
+msgstr "[%3u] 0x%lx - 0x%lx\n"
+
+#: dwarf.c:5225
+#, c-format
+msgid ""
+"\n"
+"TU table:\n"
+msgstr ""
+"\n"
+"TU 表:\n"
+
+#: dwarf.c:5232
+#, c-format
+msgid "[%3u] 0x%lx 0x%lx "
+msgstr "[%3u] 0x%lx 0x%lx "
+
+#: dwarf.c:5239
+#, c-format
+msgid ""
+"\n"
+"Address table:\n"
+msgstr ""
+"\n"
+"アドレス表:\n"
+
+#: dwarf.c:5248
+#, c-format
+msgid "%lu\n"
+msgstr "%lu\n"
+
+#: dwarf.c:5251
+#, c-format
+msgid ""
+"\n"
+"Symbol table:\n"
+msgstr ""
+"\n"
+"シンボル表:\n"
+
+#: dwarf.c:5285
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "セクション %s ã®ãƒ‡ãƒãƒƒã‚°å†…容ã®è¡¨ç¤ºã¯ã¾ã ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
+
+#: dwarf.c:5421 dwarf.c:5491
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "èªè­˜ã§ããªã„デãƒãƒƒã‚°ã‚ªãƒ—ション '%s' ã§ã™\n"
+
+#: elfcomm.c:39
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: エラー: "
+
+#: elfcomm.c:50
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: 警告: "
+
+#: elfcomm.c:82 elfcomm.c:117 elfcomm.c:167 elfcomm.c:216
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "å–り扱ã‚ã‚Œãªã‹ã£ãŸãƒ‡ãƒ¼ã‚¿é•·: %d\n"
+
+#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3643 readelf.c:3951
+#: readelf.c:3994 readelf.c:4066 readelf.c:4144 readelf.c:4915 readelf.c:4939
+#: readelf.c:7340 readelf.c:7386 readelf.c:7587 readelf.c:8783 readelf.c:8797
+#: readelf.c:9322 readelf.c:9338 readelf.c:9381 readelf.c:9406 readelf.c:11674
+#: readelf.c:11866 readelf.c:12685
+msgid "Out of memory\n"
+msgstr "メモリãŒè¶³ã‚Šã¾ã›ã‚“\n"
+
+#: elfcomm.c:312
+#, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr "%s: 最åˆã®æ›¸åº«ãƒ˜ãƒƒãƒ€ã¸ã®æŽ¢æŸ» (seek) ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13169
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: 書庫ヘッダã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfcomm.c:347
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr "%s: 書庫ã®ç´¢å¼•ãŒç©ºã§ã™\n"
+
+#: elfcomm.c:355 elfcomm.c:381
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: 書庫索引ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfcomm.c:365
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr "%s: 書庫ã®ç´¢å¼•ã‹ã‚‰ã¯ %ld 個ã®ã‚¨ãƒ³ãƒˆãƒªãŒã‚ã‚‹ã¯ãšã§ã™ãŒã€ãƒ˜ãƒƒãƒ€ã®ã‚µã‚¤ã‚ºãŒå°ã•ã™ãŽã¾ã™\n"
+
+#: elfcomm.c:373
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr "書庫ã®ã‚·ãƒ³ãƒœãƒ«ç´¢å¼•ã®èª­ã¿è¾¼ã¿ã‚’試ã¿ã¦ã„る最中ã«ãƒ¡ãƒ¢ãƒªãŒä¸è¶³ã—ã¾ã—ãŸ\n"
+
+#: elfcomm.c:392
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr "書庫ã®ã‚·ãƒ³ãƒœãƒ«ç´¢å¼•ã®å¤‰æ›ã‚’試ã¿ã¦ã„る最中ã«ãƒ¡ãƒ¢ãƒªãŒä¸è¶³ã—ã¾ã—ãŸ\n"
+
+#: elfcomm.c:405
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr "%s: 書庫ã«ç´¢å¼•ã¯ã‚ã‚Šã¾ã™ãŒã€ã‚·ãƒ³ãƒœãƒ«ãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: elfcomm.c:413
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr "書庫ã®ã‚·ãƒ³ãƒœãƒ«è¡¨ç´¢å¼•ã®èª­ã¿è¾¼ã¿ã‚’試ã¿ã¦ã„る最中ã«ãƒ¡ãƒ¢ãƒªãŒä¸è¶³ã—ã¾ã—ãŸ\n"
+
+#: elfcomm.c:419
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr "%s: 書庫ã®ã‚·ãƒ³ãƒœãƒ«è¡¨ç´¢å¼•ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfcomm.c:428
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr "%s: 書庫シンボル表ã®ã‚¹ã‚­ãƒƒãƒ—ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfcomm.c:440
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr "%s: 書庫索引ã®å¾Œã«ç¶šã書庫ヘッダã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfcomm.c:446
+#, c-format
+msgid "%s has no archive index\n"
+msgstr "%s ã«ã¯æ›¸åº«ã®ç´¢å¼•ãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: elfcomm.c:457
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr "書庫内ã®é•·ã„シンボルåã®èª­ã¿è¾¼ã¿ä¸­ã«ãƒ¡ãƒ¢ãƒªãŒè¶³ã‚Šãªããªã‚Šã¾ã—ãŸ\n"
+
+#: elfcomm.c:465
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr "%s: é•·ã„シンボルå文字列表ã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfcomm.c:605
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr "%s: 次ã®ãƒ•ã‚¡ã‚¤ãƒ«åã®æŽ¢æŸ» (seek) ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfcomm.c:616 elfedit.c:347 readelf.c:13175
+#, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr "%s: 有効ãªæ›¸åº«ãƒ˜ãƒƒãƒ€ã‚’見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸ\n"
+
+#: elfedit.c:73
+#, c-format
+msgid "%s: Not an ELF file - wrong magic bytes at the start\n"
+msgstr "%s: ELF ファイルã§ã¯ã‚ã‚Šã¾ã›ã‚“ - 開始ã«ã‚るマジックãƒã‚¤ãƒˆãŒç•°ãªã‚Šã¾ã™\n"
+
+#: elfedit.c:81
+#, c-format
+msgid "%s: Unsupported EI_VERSION: %d is not %d\n"
+msgstr "%s: サãƒãƒ¼ãƒˆã•ã‚Œãªã„ EI_VERSION ã§ã™: %d 㯠%d ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: elfedit.c:97
+#, c-format
+msgid "%s: Unmatched EI_CLASS: %d is not %d\n"
+msgstr "%s: 一致ã—ãªã„ EI_CLASS ã§ã™: %d 㯠%d ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: elfedit.c:108
+#, c-format
+msgid "%s: Unmatched e_machine: %d is not %d\n"
+msgstr "%s: 一致ã—ãªã„ e_machine ã§ã™: %d 㯠%d ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: elfedit.c:119
+#, c-format
+msgid "%s: Unmatched e_type: %d is not %d\n"
+msgstr "%s: 一致ã—ãªã„ e_type ã§ã™: %d 㯠%d ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: elfedit.c:130
+#, c-format
+msgid "%s: Unmatched EI_OSABI: %d is not %d\n"
+msgstr "%s: 一致ã—ãªã„ EI_OSABI ã§ã™: %d 㯠%d ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: elfedit.c:163
+#, c-format
+msgid "%s: Failed to update ELF header: %s\n"
+msgstr "%s: ELF ヘッダã®æ›´æ–°ã«å¤±æ•—ã—ã¾ã—ãŸ: %s\n"
+
+#: elfedit.c:196
+#, c-format
+msgid "Unsupported EI_CLASS: %d\n"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œãªã„ EI_CLASS ã§ã™: %d\n"
+
+#: elfedit.c:229
+msgid ""
+"This executable has been built without support for a\n"
+"64 bit data type and so it cannot process 64 bit ELF files.\n"
+msgstr ""
+"ã“ã®å®Ÿè¡Œãƒ•ã‚¡ã‚¤ãƒ«ã¯ 64 ビットサãƒãƒ¼ãƒˆç„¡ã—ã§ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ã„ã‚‹ãŸã‚\n"
+"64 ビット ELF ファイルを処ç†ã§ãã¾ã›ã‚“。\n"
+
+#: elfedit.c:270
+#, c-format
+msgid "%s: Failed to read ELF header\n"
+msgstr "%s: ELF ヘッダã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfedit.c:277
+#, c-format
+msgid "%s: Failed to seek to ELF header\n"
+msgstr "%s: ELF ヘッダã®æŽ¢æŸ» (seek) ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfedit.c:331 readelf.c:13161
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s: 次ã®æ›¸åº«ãƒ˜ãƒƒãƒ€ã¸ã®æŽ¢æŸ» (seek) ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfedit.c:362 elfedit.c:371 readelf.c:13189 readelf.c:13198
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: 誤ã£ãŸæ›¸åº«ãƒ•ã‚¡ã‚¤ãƒ«åã§ã™\n"
+
+#: elfedit.c:391 elfedit.c:483
+#, c-format
+msgid "Input file '%s' is not readable\n"
+msgstr "入力ファイル '%s' ãŒèª­ã¿è¾¼ã¿å¯èƒ½ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: elfedit.c:415
+#, c-format
+msgid "%s: failed to seek to archive member\n"
+msgstr "%s: 書庫ã®ãƒ¡ãƒ³ãƒã®æŽ¢æŸ» (seek) ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfedit.c:454 readelf.c:13284
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "'%s': ãã®ã‚ˆã†ãªãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: elfedit.c:456 readelf.c:13286
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr "'%s' ã‚’é…ç½®ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚システムエラーメッセージ: %s\n"
+
+#: elfedit.c:463 readelf.c:13293
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "'%s' ã¯æ­£å¸¸ãªãƒ•ã‚¡ã‚¤ãƒ«ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: elfedit.c:489 readelf.c:13306
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr "%s: ファイルã®ãƒžã‚¸ãƒƒã‚¯ç•ªå·ã®èª­ã¿å‡ºã—ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: elfedit.c:547
+#, c-format
+msgid "Unknown OSABI: %s\n"
+msgstr "ä¸æ˜Žãª OSABI ã§ã™: %s\n"
+
+#: elfedit.c:566
+#, c-format
+msgid "Unknown machine type: %s\n"
+msgstr "ä¸æ˜Žãªãƒžã‚·ãƒ³åž‹ã§ã™: %s\n"
+
+#: elfedit.c:584
+#, c-format
+msgid "Unknown machine type: %d\n"
+msgstr "ä¸æ˜Žãªãƒžã‚·ãƒ³åž‹ã§ã™: %d\n"
+
+#: elfedit.c:603
+#, c-format
+msgid "Unknown type: %s\n"
+msgstr "ä¸æ˜Žãªåž‹ã§ã™: %s\n"
+
+#: elfedit.c:634
+#, c-format
+msgid "Usage: %s <option(s)> elffile(s)\n"
+msgstr "使用法: %s <option(s)> elffile(s)\n"
+
+#: elfedit.c:636
+#, c-format
+msgid " Update the ELF header of ELF files\n"
+msgstr "ELF ファイル㮠ELF ヘッダを更新ã—ã¾ã™\n"
+
+#: elfedit.c:637 objcopy.c:475 objcopy.c:585
+#, c-format
+msgid " The options are:\n"
+msgstr " オプション:\n"
+
+#: elfedit.c:638
+#, c-format
+msgid ""
+" --input-mach <machine> Set input machine type to <machine>\n"
+" --output-mach <machine> Set output machine type to <machine>\n"
+" --input-type <type> Set input file type to <type>\n"
+" --output-type <type> Set output file type to <type>\n"
+" --input-osabi <osabi> Set input OSABI to <osabi>\n"
+" --output-osabi <osabi> Set output OSABI to <osabi>\n"
+" -h --help Display this information\n"
+" -v --version Display the version number of %s\n"
+msgstr ""
+" --input-mach <machine> 入力ã®ãƒžã‚·ãƒ³åž‹ã‚’ <machine> ã«è¨­å®šã™ã‚‹\n"
+" --output-mach <machine> 出力ã®ãƒžã‚·ãƒ³åž‹ã‚’ <machine> ã«è¨­å®šã™ã‚‹\n"
+" --input-type <type> 入力ã®ãƒ•ã‚¡ã‚¤ãƒ«åž‹ã‚’ <type> ã«è¨­å®šã™ã‚‹\n"
+" --output-type <type> 出力ã®ãƒžã‚·ãƒ³åž‹ã‚’ <type> ã«è¨­å®šã™ã‚‹\n"
+" --input-osabi <osabi> 入力㮠OSABI ã‚’ <osabi> ã«è¨­å®šã™ã‚‹\n"
+" --output-osabi <osabi> 出力㮠OSABI ã‚’ <osabi> ã«è¨­å®šã™ã‚‹\n"
+" -h --help ã“ã®æƒ…報を表示ã™ã‚‹\n"
+" -v --version %s ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã™ã‚‹\n"
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - 32 ビットã®å°ã•ãªæ›¸åº«ã‚’作æˆã™ã‚‹\n"
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - 64 ビットオブジェクトを無視ã™ã‚‹\n"
+
+#: emul_aix.c:47
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - 32 ビットオブジェクトを無視ã™ã‚‹\n"
+
+#: emul_aix.c:48
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] - 32 ãŠã‚ˆã³ 64 ビットオブジェクトをå—容ã™ã‚‹\n"
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "デãƒãƒƒã‚°æƒ…å ±ãŒäºˆæœŸã—ãªã„所ã§çµ‚ã‚ã£ã¦ã„ã¾ã™"
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "無効ãªç•ªå·"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "無効ãªæ–‡å­—列長"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "å¼ã‚¹ã‚¿ãƒƒã‚¯ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ IEEE å¼æ¼”ç®—å­ã§ã™"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr "ä¸æ˜Žãªã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã™"
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "å¼ã‚¹ã‚¿ãƒƒã‚¯ãŒã‚¢ãƒ³ãƒ€ãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "å¼ã‚¹ã‚¿ãƒƒã‚¯ãŒä¸€è‡´ã—ã¾ã›ã‚“"
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "ä¸æ˜Žãªçµ„ã¿è¾¼ã¿åž‹ã§ã™"
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "BCD 浮動å°æ•°åž‹ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“"
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "予期ã—ãªã„番å·ã§ã™"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "予期ã—ãªã„レコード型ã§ã™"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "ブロックãŒã‚¹ã‚¿ãƒƒã‚¯ã®çµ‚ã‚Šã«æ®‹ã£ã¦ã„ã¾ã™"
+
+#: ieee.c:1208
+msgid "unknown BB type"
+msgstr "ä¸æ˜Žãª BB åž‹ã§ã™"
+
+#: ieee.c:1217
+msgid "stack overflow"
+msgstr "スタックãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
+
+#: ieee.c:1240
+msgid "stack underflow"
+msgstr "スタックãŒã‚¢ãƒ³ãƒ€ãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
+
+#: ieee.c:1352 ieee.c:1422 ieee.c:2120
+msgid "illegal variable index"
+msgstr "変数インデックスãŒä¸æ­£ã§ã™"
+
+#: ieee.c:1400
+msgid "illegal type index"
+msgstr "型インデックスãŒä¸æ­£ã§ã™"
+
+#: ieee.c:1410 ieee.c:1447
+msgid "unknown TY code"
+msgstr "ä¸æ˜Žãª TY コードã§ã™"
+
+#: ieee.c:1429
+msgid "undefined variable in TY"
+msgstr "TY ã«æœªå®šç¾©ã®å¤‰æ•°ãŒã‚ã‚Šã¾ã™"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1841
+msgid "Pascal file name not supported"
+msgstr "Pascal ファイルåã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: ieee.c:1889
+msgid "unsupported qualifier"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œãªã„修飾å­ã§ã™"
+
+#: ieee.c:2158
+msgid "undefined variable in ATN"
+msgstr "ATN ã«æœªå®šç¾©ã®å¤‰æ•°ãŒã‚ã‚Šã¾ã™"
+
+#: ieee.c:2201
+msgid "unknown ATN type"
+msgstr "ä¸æ˜Žãª ATN åž‹ã§ã™"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2323
+msgid "unsupported ATN11"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ ATN11 ã§ã™"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2350
+msgid "unsupported ATN12"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ ATN12 ã§ã™"
+
+#: ieee.c:2410
+msgid "unexpected string in C++ misc"
+msgstr "C++ misc ã«äºˆæœŸã—ãªã„文字列ãŒã‚ã‚Šã¾ã™"
+
+#: ieee.c:2423
+msgid "bad misc record"
+msgstr "ä¸æ­£ãª misc レコードã§ã™"
+
+#: ieee.c:2464
+msgid "unrecognized C++ misc record"
+msgstr "èªè­˜ã§ããªã„ C++ misc レコードã§ã™"
+
+#: ieee.c:2579
+msgid "undefined C++ object"
+msgstr "未定義㮠C++ オブジェクトã§ã™"
+
+#: ieee.c:2613
+msgid "unrecognized C++ object spec"
+msgstr "èªè­˜ã§ããªã„ C++ オブジェクト仕様ã§ã™"
+
+#: ieee.c:2649
+msgid "unsupported C++ object type"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„ C++ オブジェクト型ã§ã™"
+
+#: ieee.c:2659
+msgid "C++ base class not defined"
+msgstr "C++ 基底クラスãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: ieee.c:2671 ieee.c:2776
+msgid "C++ object has no fields"
+msgstr "C++ オブジェクトãŒãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’æŒã£ã¦ã„ã¾ã›ã‚“"
+
+#: ieee.c:2690
+msgid "C++ base class not found in container"
+msgstr "C++ 基底クラスãŒã‚³ãƒ³ãƒ†ãƒŠå†…ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: ieee.c:2797
+msgid "C++ data member not found in container"
+msgstr "C++ データメンãƒãŒã‚³ãƒ³ãƒ†ãƒŠå†…ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: ieee.c:2838 ieee.c:2988
+msgid "unknown C++ visibility"
+msgstr "ä¸æ˜Žãª C++ å¯è¦–性ã§ã™"
+
+#: ieee.c:2872
+msgid "bad C++ field bit pos or size"
+msgstr "C++ フィールドビットä½ç½®ã¾ãŸã¯ã‚µã‚¤ã‚ºã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™"
+
+#: ieee.c:2964
+msgid "bad type for C++ method function"
+msgstr "C++ メソッド関数ã®åž‹ã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™"
+
+#: ieee.c:2974
+msgid "no type information for C++ method function"
+msgstr "C++ メソッド関数ã®åž‹æƒ…å ±ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: ieee.c:3013
+msgid "C++ static virtual method"
+msgstr "C++ static virtual メソッドã§ã™"
+
+#: ieee.c:3108
+msgid "unrecognized C++ object overhead spec"
+msgstr "C++ オブジェクトオーãƒãƒ¼ãƒ˜ãƒƒãƒ‰ä»•æ§˜ã‚’èªè­˜ã§ãã¾ã›ã‚“"
+
+#: ieee.c:3147
+msgid "undefined C++ vtable"
+msgstr "C++ 仮想関数表 (vtable) ãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: ieee.c:3216
+msgid "C++ default values not in a function"
+msgstr "C++ デフォルト値ãŒé–¢æ•°å†…ã«ã‚ã‚Šã¾ã›ã‚“"
+
+#: ieee.c:3256
+msgid "unrecognized C++ default type"
+msgstr "èªè­˜ã§ããªã„ C++ デフォルト型ã§ã™"
+
+#: ieee.c:3287
+msgid "reference parameter is not a pointer"
+msgstr "å‚照パラメタãŒãƒã‚¤ãƒ³ã‚¿ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: ieee.c:3370
+msgid "unrecognized C++ reference type"
+msgstr "èªè­˜ã§ããªã„ C++ å‚照型ã§ã™"
+
+#: ieee.c:3452
+msgid "C++ reference not found"
+msgstr "C++ å‚ç…§ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+
+#: ieee.c:3460
+msgid "C++ reference is not pointer"
+msgstr "C++ å‚ç…§ãŒãƒã‚¤ãƒ³ã‚¿ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: ieee.c:3486 ieee.c:3494
+msgid "missing required ASN"
+msgstr "è¦æ±‚ã•ã‚ŒãŸ ASN を欠ã„ã¦ã„ã¾ã™"
+
+#: ieee.c:3521 ieee.c:3529
+msgid "missing required ATN65"
+msgstr "è¦æ±‚ã•ã‚ŒãŸ ATN65 を欠ã„ã¦ã„ã¾ã™"
+
+#: ieee.c:3543
+msgid "bad ATN65 record"
+msgstr "ATN65 レコードãŒä¸æ­£ã§ã™"
+
+#: ieee.c:4171
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "IEEE 数値ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ: 0x"
+
+#: ieee.c:4215
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "IEEE 文字列長ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ: %u\n"
+
+#: ieee.c:5213
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "IEEE ã¯æ•´æ•°åž‹ã‚µã‚¤ã‚º %u をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“\n"
+
+#: ieee.c:5247
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "IEEE ã¯æµ®å‹•å°æ•°åž‹ã‚µã‚¤ã‚º %u をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“\n"
+
+#: ieee.c:5281
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "IEEE ã¯è¤‡ç´ æ•°åž‹ã‚µã‚¤ã‚º %u をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“\n"
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr "é‡è¤‡ã—ãŸã‚·ãƒ³ãƒœãƒ«ãŒã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã‚·ãƒ³ãƒœãƒ«ã«å…¥ã‚Œã‚‰ã‚Œã¾ã—ãŸã€‚"
+
+#: nlmconv.c:274 srconv.c:1824
+msgid "input and output files must be different"
+msgstr "入力ã¨å‡ºåŠ›ã¯ç•°ãªã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“"
+
+#: nlmconv.c:321
+msgid "input file named both on command line and with INPUT"
+msgstr "入力ファイルåãŒã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã¨ INPUT ã®ä¸¡æ–¹ã§ä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ"
+
+#: nlmconv.c:330
+msgid "no input file"
+msgstr "入力ファイルãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: nlmconv.c:360
+msgid "no name for output file"
+msgstr "出力ファイル用ã®åå‰ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: nlmconv.c:374
+msgid "warning: input and output formats are not compatible"
+msgstr "警告: 入力ã¨å‡ºåŠ›ã®å½¢å¼ã«äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: nlmconv.c:404
+msgid "make .bss section"
+msgstr ".bss セクションã®ä½œæˆ"
+
+#: nlmconv.c:414
+msgid "make .nlmsections section"
+msgstr ".nlmsections セクションã®ä½œæˆ"
+
+#: nlmconv.c:442
+msgid "set .bss vma"
+msgstr ".bss vma を設定"
+
+#: nlmconv.c:449
+msgid "set .data size"
+msgstr ".data size を設定"
+
+#: nlmconv.c:629
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "警告: シンボル %s ㌠import ã•ã‚Œã¾ã—ãŸãŒ import リストã«ã‚ã‚Šã¾ã›ã‚“"
+
+#: nlmconv.c:649
+msgid "set start address"
+msgstr "開始アドレスを設定"
+
+#: nlmconv.c:698
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "警告: START プロシージャ %s ãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: nlmconv.c:700
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "警告: EXIT プロシージャ %s ãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: nlmconv.c:702
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "警告: CHECK プロシージャ %s ãŒå®šç¾©ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: nlmconv.c:722 nlmconv.c:908
+msgid "custom section"
+msgstr "カスタムセクション"
+
+#: nlmconv.c:742 nlmconv.c:937
+msgid "help section"
+msgstr "ヘルプセクション"
+
+#: nlmconv.c:764 nlmconv.c:955
+msgid "message section"
+msgstr "メッセージセクション"
+
+#: nlmconv.c:779 nlmconv.c:988
+msgid "module section"
+msgstr "モジュールセクション"
+
+#: nlmconv.c:798 nlmconv.c:1004
+msgid "rpc section"
+msgstr "rpc セクション"
+
+#. There is no place to record this information.
+#: nlmconv.c:834
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: 警告: 共有ライブラリã¯æœªåˆæœŸåŒ–データをæŒã¤ã“ã¨ãŒã§ãã¾ã›ã‚“"
+
+#: nlmconv.c:855 nlmconv.c:1023
+msgid "shared section"
+msgstr "共有セクション"
+
+#: nlmconv.c:863
+msgid "warning: No version number given"
+msgstr "警告: ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: nlmconv.c:903 nlmconv.c:932 nlmconv.c:950 nlmconv.c:999 nlmconv.c:1018
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: 読込ã¿: %s"
+
+#: nlmconv.c:925
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "警告: FULLMAP ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“。 ld -M を試ã—ã¦ãã ã•ã„"
+
+#: nlmconv.c:1101
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "使用法: %s [option(s)] [in-file [out-file]]\n"
+
+#: nlmconv.c:1102
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " オブジェクトファイルを NetWare ローダブルモジュールã«å¤‰æ›ã—ã¾ã™\n"
+
+#: nlmconv.c:1103
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+"オプションã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™:\n"
+" -I --input-target=<bfdname> 入力ãƒã‚¤ãƒŠãƒªå½¢å¼ã‚’設定ã™ã‚‹\n"
+" -O --output-target=<bfdname> 出力ãƒã‚¤ãƒŠãƒªå½¢å¼ã‚’設定ã™ã‚‹\n"
+" -T --header-file=<file> <file> for NLM ヘッダ情報ã®ãŸã‚ã« <file> を読ã¿è¾¼ã‚€\n"
+" -l --linker=<linker> リンクã®ãŸã‚ã« <linker> を使用ã™ã‚‹\n"
+" -d --debug リンカã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã‚’標準エラー出力ã«è¡¨ç¤ºã™ã‚‹\n"
+" @<file> <file> ã‹ã‚‰ã‚ªãƒ—ションを読ã¿è¾¼ã‚€\n"
+" -h --help ã“ã®æƒ…報を表示ã™ã‚‹\n"
+" -v --version プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’表示ã™ã‚‹\n"
+
+#: nlmconv.c:1144
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "%s ã«å¯¾ã™ã‚‹ã‚µãƒãƒ¼ãƒˆã¯ã‚³ãƒ³ãƒ‘イル時ã«çµ„ã¿è¾¼ã¾ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: nlmconv.c:1181
+msgid "make section"
+msgstr "make セクション"
+
+#: nlmconv.c:1195
+msgid "set section size"
+msgstr "セクションサイズを設定"
+
+#: nlmconv.c:1201
+msgid "set section alignment"
+msgstr "セクションé…列を設定"
+
+#: nlmconv.c:1205
+msgid "set section flags"
+msgstr "セクションフラグを設定"
+
+#: nlmconv.c:1216
+msgid "set .nlmsections size"
+msgstr ".nlmsections サイズを設定"
+
+#: nlmconv.c:1297 nlmconv.c:1305 nlmconv.c:1314 nlmconv.c:1319
+msgid "set .nlmsection contents"
+msgstr ".nlmsection ã®å†…容を設定"
+
+#: nlmconv.c:1796
+msgid "stub section sizes"
+msgstr "スタブセクションサイズ"
+
+#: nlmconv.c:1843
+msgid "writing stub"
+msgstr "スタブã®æ›¸è¾¼ã¿ä¸­"
+
+#: nlmconv.c:1927
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "%s ã«å¯¾ã™ã‚‹ PC 関連å†é…置を解決ã§ãã¾ã›ã‚“"
+
+#: nlmconv.c:1991
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "%s ã«å¯¾ã™ã‚‹å†é…置を調整中ã«ã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
+
+#: nlmconv.c:2118
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: %s ã®å®Ÿè¡Œã«å¤±æ•—ã—ã¾ã—ãŸ: "
+
+#: nlmconv.c:2133
+#, c-format
+msgid "Execution of %s failed"
+msgstr "%s ã®å®Ÿè¡Œã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: nm.c:225 size.c:78 strings.c:650
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "使用法: %s [option(s)] [file(s)]\n"
+
+#: nm.c:226
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " [file(s)] ã«å«ã¾ã‚Œã‚‹ã‚·ãƒ³ãƒœãƒ«ã‚’一覧表示ã—ã¾ã™ (デフォルト㯠a.out)。\n"
+
+#: nm.c:227
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+"オプション:\n"
+" -a, --debug-syms デãƒãƒƒã‚°ç”¨ã®ã¿ã®ã‚·ãƒ³ãƒœãƒ«ã‚’表示ã™ã‚‹\n"
+" -A, --print-file-name å„シンボルã®å‰ã«å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã®åå‰ã‚’表示ã™ã‚‹\n"
+" -B --format=bsd ã¨åŒæ§˜\n"
+" -C, --demangle[=STYLE] 下ä½ãƒ¬ãƒ™ãƒ«ã®ã‚·ãƒ³ãƒœãƒ«åを利用者レベルã®ã‚·ãƒ³ãƒœãƒ«åã«ãƒ‡ã‚³ãƒ¼ãƒ‰ã™ã‚‹\n"
+" STYLE を指定ã™ã‚‹å ´åˆã¯ `auto' (デフォルト),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" ã¾ãŸã¯ `gnat'\n"
+" --no-demangle 下ä½ãƒ¬ãƒ™ãƒ«ã®ã‚·ãƒ³ãƒœãƒ«ã‚’åå‰å¾©å…ƒ (demangle) ã—ãªã„\n"
+" -D, --dynamic 通常シンボルã®ä»£ã‚ã‚Šã«å‹•çš„シンボルを表示ã™ã‚‹\n"
+" --defined-only 定義済ã¿ã®ã‚·ãƒ³ãƒœãƒ«ã®ã¿è¡¨ç¤ºã™ã‚‹\n"
+" -e (無視ã•ã‚Œã‚‹)\n"
+" -f, --format=FORMAT 出力形å¼ã‚’ FORMAT ã«ã™ã‚‹ã€‚FORMAT 㯠`bsd',\n"
+" `sysv' ã¾ãŸã¯ `posix'。 デフォルト㯠`bsd'\n"
+" -g, --extern-only 外部シンボルã®ã¿è¡¨ç¤ºã™ã‚‹\n"
+" -l, --line-numbers å„シンボルã«å¯¾ã—ã¦ãƒ•ã‚¡ã‚¤ãƒ«åã¨è¡Œç•ªå·ã‚’探ã™ãŸã‚ã«\n"
+" デãƒãƒƒã‚°æƒ…報を使用ã™ã‚‹\n"
+" -n, --numeric-sort シンボルをアドレスã§æ•°å€¤çš„ã«ã‚½ãƒ¼ãƒˆã™ã‚‹\n"
+" -o -A ã¨åŒæ§˜\n"
+" -p, --no-sort シンボルをソートã—ãªã„\n"
+" -P, --portability --format=posix ã¨åŒæ§˜\n"
+" -r, --reverse-sort ソートã®é †ç•ªã‚’逆ã«ã™ã‚‹\n"
+
+#: nm.c:250
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr " --plugin NAME 指定ã—ãŸãƒ—ラグインを読ã¿è¾¼ã‚€\n"
+
+#: nm.c:253
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+" -S, --print-size 定義ã•ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«ã®ã‚µã‚¤ã‚ºã‚’表示ã™ã‚‹\n"
+" -s, --print-armap 書庫メンãƒã‹ã‚‰ã®ã‚·ãƒ³ãƒœãƒ«ã®ç´¢å¼•ã‚’å«ã‚ã‚‹\n"
+" --size-sort シンボルをサイズã§ã‚½ãƒ¼ãƒˆã™ã‚‹\n"
+" --special-syms 出力ã«ç‰¹æ®Šãªã‚·ãƒ³ãƒœãƒ«ã‚’å«ã‚ã‚‹\n"
+" --synthetic åˆæˆã—ãŸã‚·ãƒ³ãƒœãƒ«ã‚‚表示ã™ã‚‹\n"
+" -t, --radix=RADIX シンボルã®å€¤ã‚’表示ã™ã‚‹éš›ã«åŸºæ•° RADIX を使用ã™ã‚‹\n"
+" --target=BFDNAME ターゲットオブジェクト形å¼ã‚’ BFDNAME ã¨ã—ã¦æŒ‡å®šã™ã‚‹\n"
+" -u, --undefined-only 未定義シンボルã®ã¿è¡¨ç¤ºã™ã‚‹\n"
+" -X 32_64 (無視ã•ã‚Œã‚‹)\n"
+" @FILE オプションを FILE ã‹ã‚‰èª­ã¿è¾¼ã‚€\n"
+" -h, --help ã“ã®æƒ…報を表示ã™ã‚‹\n"
+" -V, --version プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã™ã‚‹\n"
+"\n"
+
+#: nm.c:301
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: 無効ãªåŸºæ•°ã§ã™"
+
+#: nm.c:325
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: 無効ãªå‡ºåŠ›å½¢å¼ã§ã™"
+
+#: nm.c:346 readelf.c:8546 readelf.c:8591
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<プロセッサ固有>: %d"
+
+#: nm.c:348 readelf.c:8555 readelf.c:8609
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<OS 固有>: %d"
+
+#: nm.c:350 readelf.c:8558 readelf.c:8612
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<ä¸æ˜Ž>: %d"
+
+#: nm.c:390
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"書庫索引:\n"
+
+#: nm.c:1254
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"%s ã‹ã‚‰ã®æœªå®šç¾©ã‚·ãƒ³ãƒœãƒ«:\n"
+"\n"
+
+#: nm.c:1256
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"%s ã‹ã‚‰ã®ã‚·ãƒ³ãƒœãƒ«:\n"
+"\n"
+
+#: nm.c:1258 nm.c:1309
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"åå‰ å€¤ クラス åž‹ サイズ è¡Œ セクション\n"
+"\n"
+
+#: nm.c:1261 nm.c:1312
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"åå‰ å€¤ クラス åž‹ サイズ è¡Œ セクション\n"
+"\n"
+
+#: nm.c:1305
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"%s[%s] ã‹ã‚‰ã®æœªå®šç¾©ã‚·ãƒ³ãƒœãƒ«:\n"
+"\n"
+
+#: nm.c:1307
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"%s[%s] ã‹ã‚‰ã®ã‚·ãƒ³ãƒœãƒ«:\n"
+"\n"
+
+#: nm.c:1399
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr "表示幅ãŒåˆæœŸåŒ–ã•ã‚Œã¦ã„ã¾ã›ã‚“ (%d)"
+
+#: nm.c:1627
+msgid "Only -X 32_64 is supported"
+msgstr "-X 32_64 ã®ã¿ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã™"
+
+#: nm.c:1656
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "--size-sort ãŠã‚ˆã³ --undefined-only オプションをåŒæ™‚ã«ä½¿ç”¨ã—ã¦ã„ã¾ã™ã€‚"
+
+#: nm.c:1657
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "未定義シンボルã¯ã‚µã‚¤ã‚ºãŒ 0 ã®ãŸã‚何も出力ã—ã¾ã›ã‚“。"
+
+#: nm.c:1685
+#, c-format
+msgid "data size %ld"
+msgstr "データサイズ %ld"
+
+#: objcopy.c:473 srconv.c:1732
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "使用法: %s [option(s)] in-file [out-file]\n"
+
+#: objcopy.c:474
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " ãƒã‚¤ãƒŠãƒªãƒ•ã‚¡ã‚¤ãƒ«ã‚’コピーã—ã¾ã™ã€‚å ´åˆã«ã‚ˆã£ã¦ã¯å‡¦ç†ä¸­ã«å½¢å¼ã‚’変æ›ã—ã¾ã™ã€‚\n"
+
+#: objcopy.c:476
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set output arch, when input is arch-less\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff objects.\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" --compress-debug-sections Compress DWARF debug sections using zlib\n"
+" --decompress-debug-sections Decompress DWARF debug sections using zlib\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"
+msgstr ""
+" -I --input-target <bfdname> 入力ファイルã®å½¢å¼ã‚’ <bfdname> ã§ã‚ã‚‹ã¨ä»®å®šã™ã‚‹\n"
+" -O --output-target <bfdname> å‡ºåŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å½¢å¼ <bfdname> ã§ä½œæˆã™ã‚‹\n"
+" -B --binary-architecture <arch> 入力ã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ãŒç„¡ã„å ´åˆã«å‡ºåŠ›ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã‚’\n"
+" arch ã«è¨­å®šã™ã‚‹\n"
+" -F --target <bfdname> 入出力ã®å½¢å¼ã‚’ <bfdname> ã«è¨­å®šã™ã‚‹\n"
+" --debugging デãƒãƒƒã‚°æƒ…報を変æ›ã™ã‚‹ (å¯èƒ½ãªå ´åˆ)\n"
+" -p --preserve-dates æ›´æ–°/アクセス日時を出力ã«ã‚³ãƒ”ーã™ã‚‹\n"
+" -j --only-section <name> 出力ã«ã‚»ã‚¯ã‚·ãƒ§ãƒ³ <name> ã®ã¿ã‚’コピーã™ã‚‹\n"
+" --add-gnu-debuglink=<file> <file> ã«ãƒªãƒ³ã‚¯ã—ã¦ã„ã‚‹ã¨ãã«ã‚»ã‚¯ã‚·ãƒ§ãƒ³\n"
+" .gnu_debuglink を加ãˆã‚‹\n"
+" -R --remove-section <name> 出力ã‹ã‚‰ã‚»ã‚¯ã‚·ãƒ§ãƒ³ <name> を削除ã™ã‚‹\n"
+" -S --strip-all å…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ãŠã‚ˆã³å†é…置情報を削除ã™ã‚‹\n"
+" -g --strip-debug å…¨ã¦ã®ãƒ‡ãƒãƒƒã‚°ã‚·ãƒ³ãƒœãƒ«ãŠã‚ˆã³ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’削除ã™ã‚‹\n"
+" --strip-unneeded å†é…ç½®ã«å¿…è¦ã§ãªã„å…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã‚’削除ã™ã‚‹\n"
+" -N --strip-symbol <name> シンボル <name> をコピーã—ãªã„\n"
+" --strip-unneeded-symbol <name>\n"
+" å†é…ç½®ã«å¿…è¦ã§ãªã„é™ã‚Šã‚·ãƒ³ãƒœãƒ« <name> ã‚’\n"
+" コピーã—ãªã„\n"
+" --only-keep-debug デãƒãƒƒã‚°æƒ…報以外をå–り除ã\n"
+" --extract-symbol セクションã®ä¸­èº«ã‚’削除ã™ã‚‹ãŒã€ã‚·ãƒ³ãƒœãƒ«ã¯ä¿æŒã™ã‚‹\n"
+" -K --keep-symbol <name> シンボル <name> ã‚’å–り除ã‹ãªã„\n"
+" --keep-file-symbols ファイルã«é–¢ã™ã‚‹ã‚·ãƒ³ãƒœãƒ«ã‚’å–り除ã‹ãªã„\n"
+" --localize-hidden å…¨ã¦ã® ELF éš ã•ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«ã‚’局所ã«ã™ã‚‹\n"
+" -L --localize-symbol <name> シンボル <name> を強制的ã«å±€æ‰€ã¨å°ã‚’付ã‘ã‚‹\n"
+" --globalize-symbol <name> シンボル <name> を強制的ã«å¤§åŸŸã¨å°ã‚’付ã‘ã‚‹\n"
+" -G --keep-global-symbol <name> <name> を除ãå…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã‚’局所ã«ã™ã‚‹\n"
+" -W --weaken-symbol <name> シンボル <name> を強制的㫠weak ã¨å°ã‚’付ã‘ã‚‹\n"
+" --weaken å…¨ã¦ã®ã‚°ãƒ­ãƒ¼ãƒãƒ«ã‚·ãƒ³ãƒœãƒ«ã‚’強制的㫠weak ã¨å°ã‚’付ã‘ã‚‹\n"
+" -w --wildcard シンボル比較ã§ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã®ä½¿ç”¨ã‚’許å¯ã™ã‚‹\n"
+" -x --discard-all å…¨ã¦ã®éžå¤§åŸŸã‚·ãƒ³ãƒœãƒ«ã‚’削除ã™ã‚‹\n"
+" -X --discard-locals コンパイラãŒä½œæˆã—ãŸã‚·ãƒ³ãƒœãƒ«ã‚’å…¨ã¦å‰Šé™¤ã™ã‚‹\n"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> セクション間ã®éš™é–“ã‚’ <val> ã§åŸ‹ã‚ã‚‹\n"
+" --pad-to <addr> 最後ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’アドレス <addr> ã«ãªã‚‹ã¾ã§é–“を埋ã‚ã‚‹\n"
+" --set-start <addr> 開始アドレスを <addr> ã«è¨­å®šã™ã‚‹\n"
+" {--change-start|--adjust-start} <incr>\n"
+" 開始アドレス㫠<incr> を加ãˆã‚‹\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" LMA, VMA ãŠã‚ˆã³é–‹å§‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã« <incr> を加ãˆã‚‹\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" セクション <name> ã®ãƒ—ロパティを <flags> ã«è¨­å®šã™ã‚‹\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] セクションåã‚’ <old> ã‹ã‚‰ <new> ã«å¤‰æ›´ã™ã‚‹\n"
+" --long-section-names {enable|disable|keep}\n"
+" Coff オブジェクトã§ã®é•·ã„セクションåã®æ‰±ã„\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char 大域シンボルã‹ã‚‰å…ˆé ­æ–‡å­—を削除ã™ã‚‹\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> シンボルå <old> ã‚’ <new> ã¨ã—ã¦å†å®šç¾©ã™ã‚‹\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> <file> ã«ãƒªã‚¹ãƒˆã•ã‚ŒãŸå…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã«å¯¾ã— -N ã‚’è¡Œã†\n"
+" --strip-unneeded-symbols <file>\n"
+" <file> ã«ãƒªã‚¹ãƒˆã•ã‚ŒãŸå…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã«å¯¾ã—\n"
+" --strip-unneeded-symbol ã‚’è¡Œã†\n"
+" --keep-symbols <file> <file> ã«ãƒªã‚¹ãƒˆã•ã‚ŒãŸå…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã«å¯¾ã— -K ã‚’è¡Œã†\n"
+" --localize-symbols <file> <file> ã«ãƒªã‚¹ãƒˆã•ã‚ŒãŸå…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã«å¯¾ã— -L ã‚’è¡Œã†\n"
+" --globalize-symbols <file> <file> ã«ãƒªã‚¹ãƒˆã•ã‚ŒãŸå…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã«å¯¾ã— \n"
+" --globalize-symbol ã‚’è¡Œã†\n"
+" --keep-global-symbols <file> <file> ã«ãƒªã‚¹ãƒˆã•ã‚ŒãŸå…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã«å¯¾ã— -G ã‚’è¡Œã†\n"
+" --weaken-symbols <file> <file> ã«ãƒªã‚¹ãƒˆã•ã‚ŒãŸå…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã«å¯¾ã— -W ã‚’è¡Œã†\n"
+" --alt-machine-code <index> Use the target's <index>'th alternative machine\n"
+" --writable-text 出力ã®ãƒ†ã‚­ã‚¹ãƒˆã‚’書ãè¾¼ã¿å¯èƒ½ã«ã™ã‚‹\n"
+" --readonly-text 出力ã®ãƒ†ã‚­ã‚¹ãƒˆã‚’ä¿è­·ã«ã™ã‚‹\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" PE å­ã‚·ã‚¹ãƒ†ãƒ ã‚’ <name> [& <version>] ã«è¨­å®šã™ã‚‹\n"
+" --compress-debug-sections zlib を使用ã—㦠DWARF デãƒãƒƒã‚°ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’圧縮ã™ã‚‹\n"
+" --decompress-debug-sections zlib を使用ã—㦠DWARF デãƒãƒƒã‚°ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’伸張ã™ã‚‹\n"
+" -v --verbose å…¨ã¦ã®ä¿®æ­£ã•ã‚ŒãŸã‚ªãƒ–ジェクトファイルを一覧表示ã™ã‚‹\n"
+" @<file> オプションを <file> ã‹ã‚‰èª­ã¿è¾¼ã‚€\n"
+" -V --version プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã™ã‚‹\n"
+" -h --help ã“ã®æƒ…報を表示ã™ã‚‹\n"
+" --info サãƒãƒ¼ãƒˆã•ã‚Œã‚‹ã‚ªãƒ–ジェクト形å¼ã¨ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£\n"
+" を一覧表示ã™ã‚‹\n"
+
+#: objcopy.c:583
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "使用法: %s <option(s)> in-file(s)\n"
+
+#: objcopy.c:584
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr "シンボルãŠã‚ˆã³ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’ファイルã‹ã‚‰å–り除ãã¾ã™ã€‚\n"
+
+#: objcopy.c:586
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+
+#: objcopy.c:659
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "セクションフラグ `%s' ã‚’èªè­˜ã§ãã¾ã›ã‚“"
+
+#: objcopy.c:660
+#, c-format
+msgid "supported flags: %s"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã‚‹ãƒ•ãƒ©ã‚°: %s"
+
+#: objcopy.c:761
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "'%s' ã‚’é–‹ã‘ã¾ã›ã‚“: %s"
+
+#: objcopy.c:764 objcopy.c:3392
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: fread(3) ãŒå¤±æ•—ã—ã¾ã—ãŸ"
+
+#: objcopy.c:837
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: ã“ã®è¡Œã§è¦‹ã¤ã‹ã£ãŸã‚´ãƒŸã‚’無視ã—ã¦ã„ã¾ã™"
+
+#: objcopy.c:1128
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr "å†é…置用ã«å付ã‘られã¦ã„ã‚‹ãŸã‚シンボル `%s' ã‚’å–り除ãã¾ã›ã‚“"
+
+#: objcopy.c:1211
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: シンボル \"%s\" ã®å†å®šç¾©ã§ã™"
+
+#: objcopy.c:1215
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: シンボル \"%s\" 何度ã‹å†å®šç¾©ã•ã‚ŒãŸã‚¿ãƒ¼ã‚²ãƒƒãƒˆã§ã™"
+
+#: objcopy.c:1243
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "シンボルå†å®šç¾©ãƒ•ã‚¡ã‚¤ãƒ« %s ã‚’é–‹ã‘ã¾ã›ã‚“ (エラー: %s)"
+
+#: objcopy.c:1321
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: 行末ã«ã‚´ãƒŸãŒå­˜åœ¨ã—ã¾ã™"
+
+#: objcopy.c:1324
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: æ–°ã—ã„シンボルåãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: objcopy.c:1334
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: æ—©ã™ãŽã‚‹ãƒ•ã‚¡ã‚¤ãƒ«çµ‚端 (EOF) ã§ã™"
+
+#: objcopy.c:1360
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat(2) ㌠`%s' ã®ã‚µã‚¤ã‚ºã¨ã—ã¦è² ã®å€¤ã‚’è¿”ã—ã¾ã—ãŸ"
+
+#: objcopy.c:1372
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "`%s' [ä¸æ˜Ž] ã‹ã‚‰ `%s' [ä¸æ˜Ž] ã¸ã‚³ãƒ”ーã—ã¾ã™\n"
+
+#: objcopy.c:1429
+msgid "Unable to change endianness of input file(s)"
+msgstr "入力ファイルã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã‚’変更ã§ãã¾ã›ã‚“"
+
+#: objcopy.c:1438
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "`%s' [%s] ã‹ã‚‰ `%s' [%s] ã¸ã‚³ãƒ”ーã—ã¾ã™\n"
+
+#: objcopy.c:1487
+#, c-format
+msgid "Input file `%s' ignores binary architecture parameter."
+msgstr "入力ファイル `%s' ã¯ãƒã‚¤ãƒŠãƒªã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ãƒ‘ラメータを無視ã—ã¾ã™ã€‚"
+
+#: objcopy.c:1495
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "入力ファイル `%s' ã®å½¢å¼ã‚’èªè­˜ã§ãã¾ã›ã‚“"
+
+#: objcopy.c:1498
+#, c-format
+msgid "Output file cannot represent architecture `%s'"
+msgstr "出力ファイルã¯ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ `%s' を表ã™ã“ã¨ãŒã§ãã¾ã›ã‚“"
+
+#: objcopy.c:1561
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr "警告: ファイル引数 (0x%s) > セクション引数 (0x%s)"
+
+#: objcopy.c:1620
+#, c-format
+msgid "can't add section '%s'"
+msgstr "セクション '%s' を追加ã§ãã¾ã›ã‚“"
+
+#: objcopy.c:1634
+#, c-format
+msgid "can't create section `%s'"
+msgstr "セクション `%s' を作æˆã§ãã¾ã›ã‚“"
+
+#: objcopy.c:1680
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr "デãƒãƒƒã‚°ãƒªãƒ³ã‚¯ã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' を作æˆã§ãã¾ã›ã‚“"
+
+#: objcopy.c:1773
+msgid "Can't fill gap after section"
+msgstr "セクション後ã®éš™é–“を埋ã‚られã¾ã›ã‚“"
+
+#: objcopy.c:1797
+msgid "can't add padding"
+msgstr "隙間詰ã‚を追加ã§ãã¾ã›ã‚“"
+
+#: objcopy.c:1888
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr "デãƒãƒƒã‚°ãƒªãƒ³ã‚¯ã‚»ã‚¯ã‚·ãƒ§ãƒ³ `%s' を埋ã‚られã¾ã›ã‚“"
+
+#: objcopy.c:1951
+msgid "error copying private BFD data"
+msgstr "プライベート BFD データをコピー中ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸdata"
+
+#: objcopy.c:1962
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr "ã“ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã¯ %lu 代替マシンコードをサãƒãƒ¼ãƒˆã—ã¾ã›ã‚“"
+
+#: objcopy.c:1966
+msgid "treating that number as an absolute e_machine value instead"
+msgstr "ãã®ç•ªå·ã‚’代ã‚ã‚Šã«çµ¶å¯¾çš„㪠e_machine 値ã¨ã—ã¦æ‰±ã„ã¾ã™"
+
+#: objcopy.c:1970
+msgid "ignoring the alternative value"
+msgstr "代替ã®å€¤ã‚’無視ã—ã¦ã„ã¾ã™"
+
+#: objcopy.c:2002 objcopy.c:2038
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr "書庫コピーã®ãŸã‚ã®ä¸€æ™‚ディレクトリを作æˆã§ãã¾ã›ã‚“ (エラー: %s)"
+
+#: objcopy.c:2068
+msgid "Unable to recognise the format of file"
+msgstr "ファイルã®å½¢å¼ã‚’èªè­˜ã§ãã¾ã›ã‚“"
+
+#: objcopy.c:2195
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "エラー: 入力ファイル '%s' ãŒç©ºã§ã™"
+
+#: objcopy.c:2339
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "セクション %s ã®åå‰å¤‰æ›´ãŒè¤‡æ•°å›žè¡Œã‚ã‚Œã¦ã„ã¾ã™"
+
+#: objcopy.c:2390
+msgid "error in private header data"
+msgstr "プライベートヘッダデータã«ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™"
+
+#: objcopy.c:2468
+msgid "failed to create output section"
+msgstr "出力セクションã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: objcopy.c:2482
+msgid "failed to set size"
+msgstr "サイズã®è¨­å®šã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: objcopy.c:2496
+msgid "failed to set vma"
+msgstr "vma ã®è¨­å®šã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: objcopy.c:2521
+msgid "failed to set alignment"
+msgstr "整列ã®è¨­å®šã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: objcopy.c:2555
+msgid "failed to copy private data"
+msgstr "プライベートデータã®ã‚³ãƒ”ーã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: objcopy.c:2637
+msgid "relocation count is negative"
+msgstr "å†é…置数ãŒè² ã®å€¤ã§ã™"
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2698
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr "ãƒã‚¤ãƒˆé †ã‚’逆ã«ã§ãã¾ã›ã‚“: セクション %s ã®é•·ã•ã¯ %d ã§å‰²ã‚Šåˆ‡ã‚Œãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
+
+#: objcopy.c:2884
+msgid "can't create debugging section"
+msgstr "デãƒãƒƒã‚°ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’作æˆã§ãã¾ã›ã‚“"
+
+#: objcopy.c:2897
+msgid "can't set debugging section contents"
+msgstr "デãƒãƒƒã‚°ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®å†…容を設定ã§ãã¾ã›ã‚“"
+
+#: objcopy.c:2905
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr "%s ã«å¯¾ã—ã¦ãƒ‡ãƒãƒƒã‚°æƒ…報を書ã込む方法ãŒåˆ†ã‹ã‚Šã¾ã›ã‚“"
+
+#: objcopy.c:3048
+msgid "could not create temporary file to hold stripped copy"
+msgstr "å–り除ã‹ã‚ŒãŸã‚³ãƒ”ーをä¿æŒã™ã‚‹ä¸€æ™‚ファイルã®ä½œæˆã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: objcopy.c:3120
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr "%s: PE å­ã‚·ã‚¹ãƒ†ãƒ å†…ã«èª¤ã£ãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒã‚ã‚Šã¾ã™"
+
+#: objcopy.c:3150
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr "ä¸æ˜Žãª PE å­ã‚·ã‚¹ãƒ†ãƒ : %s"
+
+#: objcopy.c:3212
+msgid "byte number must be non-negative"
+msgstr "ãƒã‚¤ãƒˆæ•°ã¯éžè² ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“"
+
+#: objcopy.c:3218
+#, c-format
+msgid "architecture %s unknown"
+msgstr "アーキテクãƒãƒ£ %s ã¯ä¸æ˜Žã§ã™"
+
+#: objcopy.c:3226
+msgid "interleave must be positive"
+msgstr "interleave ã¯æ­£ã®æ•°å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
+
+#: objcopy.c:3235
+msgid "interleave width must be positive"
+msgstr "interleave å¹…ã¯æ­£ã®æ•°å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
+
+#: objcopy.c:3255 objcopy.c:3263
+#, c-format
+msgid "%s both copied and removed"
+msgstr "%s コピーã¨å‰Šé™¤ã®ä¸¡æ–¹ãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸ"
+
+#: objcopy.c:3362 objcopy.c:3442 objcopy.c:3550 objcopy.c:3581 objcopy.c:3605
+#: objcopy.c:3609 objcopy.c:3629
+#, c-format
+msgid "bad format for %s"
+msgstr "%s 用ã¨ã—ã¦ã¯ä¸æ­£ãªå½¢å¼ã§ã™"
+
+#: objcopy.c:3374
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s: %s"
+
+#: objcopy.c:3519
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "警告: 0x%s ã‹ã‚‰ 0x%x ã¾ã§ã®éš™é–“ã®åŸ‹ã‚è¾¼ã¿ã‚’切り詰ã‚ã¾ã™"
+
+#: objcopy.c:3680
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr "é•·ã„セクションåã®æ‰±ã„ã«å¯¾ã™ã‚‹ä¸æ˜Žãªã‚ªãƒ—ション '%s' ã§ã™"
+
+#: objcopy.c:3698
+msgid "unable to parse alternative machine code"
+msgstr "代替マシンコードを解æžã§ãã¾ã›ã‚“"
+
+#: objcopy.c:3743
+msgid "number of bytes to reverse must be positive and even"
+msgstr "逆ã«ã™ã‚‹ãƒã‚¤ãƒˆæ•°ã¯æ­£ã®å¶æ•°ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
+
+#: objcopy.c:3746
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr "警告: å‰ã«ã‚ã‚‹ --reverse-bytes ã®å€¤ %d ã¯ç„¡è¦–ã—ã¦ã„ã¾ã™"
+
+#: objcopy.c:3761
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr "%s: --heap ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªäºˆç´„値ã§ã™"
+
+#: objcopy.c:3767
+#, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr "%s: --heap ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªç¢ºå®šå€¤ã§ã™"
+
+#: objcopy.c:3792
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr "%s: --stack ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªäºˆç´„値ã§ã™"
+
+#: objcopy.c:3798
+#, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr "%s: --stack ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªç¢ºå®šå€¤ã§ã™"
+
+#: objcopy.c:3827
+msgid "interleave start byte must be set with --byte"
+msgstr "interleave ã®é–‹å§‹ãƒã‚¤ãƒˆã‚’ --byte ã§è¨­å®šã—ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
+
+#: objcopy.c:3830
+msgid "byte number must be less than interleave"
+msgstr "ãƒã‚¤ãƒˆæ•°ã¯ interleave 未満ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“"
+
+#: objcopy.c:3833
+msgid "interleave width must be less than or equal to interleave - byte`"
+msgstr ""
+
+#: objcopy.c:3860
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr "ä¸æ˜Žãªå…¥åŠ› EFI ターゲットã§ã™: %s"
+
+#: objcopy.c:3891
+#, c-format
+msgid "unknown output EFI target: %s"
+msgstr "ä¸æ˜Žãªå‡ºåŠ› EFI ターゲットã§ã™: %s"
+
+#: objcopy.c:3904
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr "警告: '%s' ã‚’é…ç½®ã§ãã¾ã›ã‚“。システムエラーメッセージ: %s"
+
+#: objcopy.c:3916
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr "警告: '%s' をコピー中ã«ä¸€æ™‚ファイルを作æˆã§ãã¾ã›ã‚“ã§ã—㟠(エラー: %s)"
+
+#: objcopy.c:3944 objcopy.c:3958
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s ã¯ä½¿ã‚れるã“ã¨ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: objdump.c:201
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "使用法: %s <option(s)> <file(s)>\n"
+
+#: objdump.c:202
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " オブジェクトファイル <file(s)> ã®æƒ…報を表示ã™ã‚‹\n"
+
+#: objdump.c:203
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " 下記ã®ã‚¹ã‚¤ãƒƒãƒã®ä¸­ã§æœ€ä½Žä¸€ã¤ã¯æŒ‡å®šã—ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“:\n"
+
+#: objdump.c:204
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -P, --private=OPT,OPT... Display object format specific contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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[lLiaprmfFsoRt] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+msgstr ""
+" -a, --archive-headers 書庫ヘッダ情報を表示ã™ã‚‹\n"
+" -f, --file-headers å…¨ã¦ã®ãƒ•ã‚¡ã‚¤ãƒ«ãƒ˜ãƒƒãƒ€ã®å†…容を表示ã™ã‚‹\n"
+" -p, --private-headers オブジェクト形å¼ç‰¹æœ‰ã®ãƒ•ã‚¡ã‚¤ãƒ«ãƒ˜ãƒƒãƒ€ã®å†…容を表示ã™ã‚‹\n"
+" -P, --private=OPT,OPT... オブジェクト形å¼ç‰¹æœ‰ã®å†…容を表示ã™ã‚‹\n"
+" -h, --[section-]headers セクションヘッダã®ä¸­èº«ã‚’表示ã™ã‚‹\n"
+" -x, --all-headers å…¨ã¦ã®ãƒ˜ãƒƒãƒ€ã®ä¸­èº«ã‚’表示ã™ã‚‹\n"
+" -d, --disassemble 実行å¯èƒ½ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚¢ã‚»ãƒ³ãƒ–ラを表示ã™ã‚‹\n"
+" -D, --disassemble-all å…¨ã¦ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®ã‚¢ã‚»ãƒ³ãƒ–ラを表示ã™ã‚‹\n"
+" -S, --source 逆アセンブルçµæžœã«ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’æ··ãœã¦è¡¨ç¤ºã™ã‚‹\n"
+" -s, --full-contents è¦æ±‚ã•ã‚ŒãŸå…¨ã¦ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®å®Œå…¨ãªå†…容を表示ã™ã‚‹\n"
+" -g, --debugging オブジェクトファイルã®ãƒ‡ãƒãƒƒã‚°æƒ…報を表示ã™ã‚‹\n"
+" -e, --debugging-tags ctags å½¢å¼ã‚’使用ã—ã¦ãƒ‡ãƒãƒƒã‚°æƒ…報を表示ã™ã‚‹\n"
+" -G, --stabs ファイル内ã®å…¨ã¦ã®ã‚¹ã‚¿ãƒ–情報を (生ã®å½¢å¼ã§) 表示ã™ã‚‹\n"
+" -W[lLiaprmfFsoRt] ã¾ãŸã¯\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" ファイル㮠DWARF 情報を表示ã™ã‚‹\n"
+" -t, --syms シンボル表ã®å†…容を表示ã™ã‚‹\n"
+" -T, --dynamic-syms 動的シンボル表ã®å†…容を表示ã™ã‚‹\n"
+" -r, --reloc ファイルã®å†é…置エントリを表示ã™ã‚‹\n"
+" -R, --dynamic-reloc ファイルã®å‹•çš„å†é…置エントリを表示ã™ã‚‹\n"
+" @<file> オプションを <file> ã‹ã‚‰èª­ã¿è¾¼ã‚€\n"
+" -v, --version ã“ã®ãƒ—ログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã™ã‚‹\n"
+" -i, --info サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„るオブジェクト形å¼ã¨ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã‚’\n"
+" 表示ã™ã‚‹\n"
+" -H, --help ã“ã®æƒ…報を表示ã™ã‚‹\n"
+
+#: objdump.c:236
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" 以下ã®ã‚¹ã‚¤ãƒƒãƒã¯ã‚ªãƒ—ションã§ã™:\n"
+
+#: objdump.c:237
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a single line for -d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+msgstr ""
+" -b, --target=BFDNAME ターゲットã®ã‚ªãƒ–ジェクト形å¼ã‚’ BFDNAME ã¨æŒ‡å®šã™ã‚‹\n"
+" -m, --architecture=MACHINE ターゲットã®ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã‚’ MACHINE ã¨æŒ‡å®šã™ã‚‹\n"
+" -j, --section=NAME セクション NAME ã«é–¢ã™ã‚‹æƒ…å ±ã®ã¿ã‚’表示ã™ã‚‹\n"
+" -M, --disassembler-options=OPT 逆アセンブラã«ãƒ†ã‚­ã‚¹ãƒˆ OPT を渡ã™\n"
+" -EB --endian=big ビッグエンディアンã¨è¦‹ãªã—ã¦é€†ã‚¢ã‚»ãƒ³ãƒ–ルã™ã‚‹\n"
+" -EL --endian=little リトルエンディアンã¨è¦‹ãªã—ã¦é€†ã‚¢ã‚»ãƒ³ãƒ–ルã™ã‚‹\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR ソースファイルã®æ¤œç´¢ãƒªã‚¹ãƒˆã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª DIR を加ãˆã‚‹\n"
+" -l, --line-numbers 出力ã«ãƒ•ã‚¡ã‚¤ãƒ«åã¨è¡Œç•ªå·ã‚’å«ã‚ã‚‹\n"
+" -F, --file-offsets 情報を表示ã™ã‚‹ã¨ãã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚ªãƒ•ã‚»ãƒƒãƒˆã‚’å«ã‚ã‚‹\n"
+" -C, --demangle[=STYLE] åå‰å¤‰å½¢ (mangle)/å‰å‡¦ç†ã•ã‚ŒãŸã‚·ãƒ³ãƒœãƒ«ã‚’デコードã™ã‚‹\n"
+" STYLE ã¯ã‚’指定ã™ã‚‹å ´åˆã¯ `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" ã¾ãŸã¯ `gnat'\n"
+" -w, --wide 80列以上ã§å‡ºåŠ›ã‚’書å¼æ•´å½¢ã™ã‚‹\n"
+" -z, --disassemble-zeroes 逆アセンブル時㫠0 ã®ã¿ã®ãƒ–ロックをスキップã—ãªã„\n"
+" --start-address=ADDR アドレス㌠ADDR 以上ã®ãƒ‡ãƒ¼ã‚¿ã®ã¿å‡¦ç†ã™ã‚‹\n"
+" --stop-address=ADDR アドレス㌠ADDR 以下ã®ãƒ‡ãƒ¼ã‚¿ã®ã¿å‡¦ç†ã™ã‚‹\n"
+" --prefix-addresses 逆アセンブル時ã«å®Œå…¨ãªã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’ä½µã›ã¦è¡¨ç¤ºã™ã‚‹\n"
+" --[no-]show-raw-insn シンボルを使用ã—ãŸé€†ã‚¢ã‚»ãƒ³ãƒ–ル時ã«å六進数を併ã›ã¦è¡¨ç¤ºã™ã‚‹\n"
+" --insn-width=WIDTH -d を使用時ã«ä¸€è¡Œã®å¹…ã‚’ WIDTH ã§è¡¨ç¤ºã™ã‚‹\n"
+" --adjust-vma=OFFSET ã™ã¹ã¦ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’表示ã™ã‚‹æ™‚ã« OFFSET を加ãˆã‚‹\n"
+" --special-syms シンボルダンプ時ã«ç‰¹æ®Šã‚·ãƒ³ãƒœãƒ«ã‚’å«ã‚ã‚‹\n"
+" --prefix=PREFIX -S を使用時ã«çµ¶å¯¾ãƒ‘ス㫠PREFIX を加ãˆã‚‹\n"
+" --prefix-strip=LEVEL -S を使用時ã«ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã®å…ˆé ­ã‹ã‚‰ LEVEL 階層分å–り除ã\n"
+
+#: objdump.c:263
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+"\n"
+msgstr ""
+" --dwarf-depth=N N 以上ã®æ·±ã•ã® DIE を表示ã—ãªã„\n"
+" --dwarf-start=N N 以上ã®æ·±ã•ã® DIE を表示ã™ã‚‹\n"
+"\n"
+
+#: objdump.c:275
+#, c-format
+msgid ""
+"\n"
+"Options supported for -P/--private switch:\n"
+msgstr ""
+"\n"
+"-P/--private スイッãƒã§ã‚µãƒãƒ¼ãƒˆã•ã‚Œã‚‹ã‚ªãƒ—ション:\n"
+
+#: objdump.c:426
+#, c-format
+msgid "section '%s' mentioned in a -j option, but not found in any input file"
+msgstr "セクション '%s' ㌠-j オプションã§æŒ‡å®šã•ã‚Œã¾ã—ãŸãŒã©ã®å…¥åŠ›ãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚‚ã‚ã‚Šã¾ã›ã‚“"
+
+#: objdump.c:530
+#, c-format
+msgid "Sections:\n"
+msgstr "セクション:\n"
+
+#: objdump.c:533 objdump.c:537
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "索引å サイズ VMA LMA File off Algn"
+
+#: objdump.c:539
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "索引å サイズ VMA LMA File off Algn"
+
+#: objdump.c:543
+#, c-format
+msgid " Flags"
+msgstr " フラグ"
+
+#: objdump.c:586
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: 動的オブジェクトã§ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: objdump.c:1012 objdump.c:1036
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr " (ファイルオフセット: 0x%lx)"
+
+#: objdump.c:1662
+#, c-format
+msgid "disassemble_fn returned length %d"
+msgstr "disassemble_fn ãŒé•·ã• %d ã‚’è¿”ã—ã¾ã—ãŸ"
+
+#: objdump.c:1967
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+"\n"
+"セクション %s ã®é€†ã‚¢ã‚»ãƒ³ãƒ–ル:\n"
+
+#: objdump.c:2143
+#, c-format
+msgid "can't use supplied machine %s"
+msgstr "与ãˆã‚‰ã‚ŒãŸãƒžã‚·ãƒ³ %s を使用ã§ãã¾ã›ã‚“"
+
+#: objdump.c:2162
+#, c-format
+msgid "can't disassemble for architecture %s\n"
+msgstr "アーキテクãƒãƒ£ %s 用ã«é€†ã‚¢ã‚»ãƒ³ãƒ–ルã§ãã¾ã›ã‚“\n"
+
+#: objdump.c:2242 objdump.c:2265
+#, c-format
+msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"セクション '%s' ã®å†…容をå–å¾—ã§ãã¾ã›ã‚“。\n"
+
+#: objdump.c:2406
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"%s セクションãŒã‚ã‚Šã¾ã›ã‚“\n"
+"\n"
+
+#: objdump.c:2415
+#, c-format
+msgid "reading %s section of %s failed: %s"
+msgstr "%2$s ã® %1$s セクションã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ: %3$s"
+
+#: objdump.c:2459
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"%s セクションã®å†…容:\n"
+"\n"
+
+#: objdump.c:2590
+#, c-format
+msgid "architecture: %s, "
+msgstr "アーキテクãƒãƒ£: %s, "
+
+#: objdump.c:2593
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "フラグ 0x%08x:\n"
+
+#: objdump.c:2607
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"開始アドレス 0x"
+
+#: objdump.c:2633
+msgid "option -P/--private not supported by this file"
+msgstr "ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã§ã¯ã‚ªãƒ—ション -P/--private ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: objdump.c:2657
+#, c-format
+msgid "target specific dump '%s' not supported"
+msgstr "ターゲット特有ã®ãƒ€ãƒ³ãƒ— '%s' ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: objdump.c:2721
+#, c-format
+msgid "Contents of section %s:"
+msgstr "セクション %s ã®å†…容:"
+
+#: objdump.c:2723
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr " (開始ファイルオフセット: 0x%lx)"
+
+#: objdump.c:2729
+msgid "Reading section failed"
+msgstr "セクションã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: objdump.c:2832
+#, c-format
+msgid "no symbols\n"
+msgstr "シンボルãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: objdump.c:2839
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr "ã‚·ãƒ³ãƒœãƒ«ç•ªå· %ld ã«é–¢ã™ã‚‹æƒ…å ±ãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: objdump.c:2842
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "ã‚·ãƒ³ãƒœãƒ«ç•ªå· %ld ã®åž‹ã‚’決定ã§ãã¾ã›ã‚“ã§ã—ãŸ\n"
+
+#: objdump.c:3163
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: ãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ %s\n"
+
+#: objdump.c:3223
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: デãƒãƒƒã‚°æƒ…å ±ã®å‡ºåŠ›ã«å¤±æ•—ã—ã¾ã—ãŸ"
+
+#: objdump.c:3327
+#, c-format
+msgid "In archive %s:\n"
+msgstr "書庫 %s 内:\n"
+
+#: objdump.c:3438
+msgid "error: the start address should be before the end address"
+msgstr "エラー: 開始アドレスã¯çµ‚了アドレスよりå‰ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
+
+#: objdump.c:3443
+msgid "error: the stop address should be after the start address"
+msgstr "エラー: åœæ­¢ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯é–‹å§‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚ˆã‚Šå¾Œã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
+
+#: objdump.c:3455
+msgid "error: prefix strip must be non-negative"
+msgstr "エラー: prefix strip ã¯éžè² ã®å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
+
+#: objdump.c:3460
+msgid "error: instruction width must be positive"
+msgstr "エラー: 命令幅ã¯æ­£ã®æ•°å€¤ã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
+
+#: objdump.c:3469
+msgid "unrecognized -E option"
+msgstr "-E ã®ã‚ªãƒ—ションをèªè­˜ã§ãã¾ã›ã‚“"
+
+#: objdump.c:3480
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "--endian タイプ `%s' ã‚’èªè­˜ã§ãã¾ã›ã‚“"
+
+#: od-xcoff.c:75
+#, c-format
+msgid ""
+"For XCOFF files:\n"
+" header Display the file header\n"
+" aout Display the auxiliary header\n"
+" sections Display the section headers\n"
+" syms Display the symbols table\n"
+" relocs Display the relocation entries\n"
+" lineno Display the line number entries\n"
+" loader Display loader section\n"
+" except Display exception table\n"
+" typchk Display type-check section\n"
+" traceback Display traceback tags\n"
+" toc Display toc symbols\n"
+msgstr ""
+"XCOFF ファイル用:\n"
+" header ファイルヘッダを表示ã™ã‚‹\n"
+" aout 補助ヘッダを表示ã™ã‚‹\n"
+" sections セクションヘッダを表示ã™ã‚‹\n"
+" syms シンボル表を表示ã™ã‚‹\n"
+" relocs å†é…置エントリを表示ã™ã‚‹\n"
+" lineno 行番å·ã‚¨ãƒ³ãƒˆãƒªã‚’表示ã™ã‚‹\n"
+" loader ローダーセクションを表示ã™ã‚‹\n"
+" except 例外表を表示ã™ã‚‹\n"
+" typchk 型検査セクションを表示ã™ã‚‹\n"
+" traceback トレースãƒãƒƒã‚¯ã‚¿ã‚°ã‚’表示ã™ã‚‹\n"
+" toc toc シンボルを表示ã™ã‚‹\n"
+
+#: od-xcoff.c:416
+#, c-format
+msgid " nbr sections: %d\n"
+msgstr " セクション数: %d\n"
+
+#: od-xcoff.c:417
+#, c-format
+msgid " time and date: 0x%08x - "
+msgstr " 時刻ãŠã‚ˆã³æ—¥ä»˜: 0x%08x - "
+
+#: od-xcoff.c:419
+#, c-format
+msgid "not set\n"
+msgstr "設定ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
+
+#: od-xcoff.c:426
+#, c-format
+msgid " symbols off: 0x%08x\n"
+msgstr " シンボルオフセット: 0x%08x\n"
+
+#: od-xcoff.c:427
+#, c-format
+msgid " nbr symbols: %d\n"
+msgstr " シンボル数: %d\n"
+
+#: od-xcoff.c:428
+#, c-format
+msgid " opt hdr sz: %d\n"
+msgstr " オプションヘッダサイズ: %d\n"
+
+#: od-xcoff.c:429
+#, c-format
+msgid " flags: 0x%04x "
+msgstr " フラグ: 0x%04x "
+
+#: od-xcoff.c:443
+#, c-format
+msgid "Auxiliary header:\n"
+msgstr "補助ヘッダ:\n"
+
+#: od-xcoff.c:446
+#, c-format
+msgid " No aux header\n"
+msgstr " 補助ヘッダã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: od-xcoff.c:451
+#, c-format
+msgid "warning: optionnal header size too large (> %d)\n"
+msgstr "警告: オプションヘッダã®ã‚µã‚¤ã‚ºãŒå¤§ãã™ãŽã¾ã™ (%d より大ãã„)\n"
+
+#: od-xcoff.c:457
+msgid "cannot read auxhdr"
+msgstr "補助ヘッダを読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:462
+#, c-format
+msgid " o_mflag (magic): 0x%04x 0%04o\n"
+msgstr " o_mflag (magic): 0x%04x 0%04o\n"
+
+#: od-xcoff.c:463
+#, c-format
+msgid " o_vstamp: 0x%04x\n"
+msgstr " o_vstamp: 0x%04x\n"
+
+#: od-xcoff.c:465
+#, c-format
+msgid " o_tsize: 0x%08x\n"
+msgstr " o_tsize: 0x%08x\n"
+
+#: od-xcoff.c:467
+#, c-format
+msgid " o_dsize: 0x%08x\n"
+msgstr " o_dsize: 0x%08x\n"
+
+#: od-xcoff.c:469
+#, c-format
+msgid " o_entry: 0x%08x\n"
+msgstr " o_entry: 0x%08x\n"
+
+#: od-xcoff.c:471
+#, c-format
+msgid " o_text_start: 0x%08x\n"
+msgstr " o_text_start: 0x%08x\n"
+
+#: od-xcoff.c:473
+#, c-format
+msgid " o_data_start: 0x%08x\n"
+msgstr " o_data_start: 0x%08x\n"
+
+#: od-xcoff.c:477
+#, c-format
+msgid " o_toc: 0x%08x\n"
+msgstr " o_toc: 0x%08x\n"
+
+#: od-xcoff.c:479
+#, c-format
+msgid " o_snentry: 0x%04x\n"
+msgstr " o_snentry: 0x%04x\n"
+
+#: od-xcoff.c:481
+#, c-format
+msgid " o_sntext: 0x%04x\n"
+msgstr " o_sntext: 0x%04x\n"
+
+#: od-xcoff.c:483
+#, c-format
+msgid " o_sndata: 0x%04x\n"
+msgstr " o_sndata: 0x%04x\n"
+
+#: od-xcoff.c:485
+#, c-format
+msgid " o_sntoc: 0x%04x\n"
+msgstr " o_sntoc: 0x%04x\n"
+
+#: od-xcoff.c:487
+#, c-format
+msgid " o_snloader: 0x%04x\n"
+msgstr " o_snloader: 0x%04x\n"
+
+#: od-xcoff.c:489
+#, c-format
+msgid " o_snbss: 0x%04x\n"
+msgstr " o_snbss: 0x%04x\n"
+
+#: od-xcoff.c:491
+#, c-format
+msgid " o_algntext: %u\n"
+msgstr " o_algntext: %u\n"
+
+#: od-xcoff.c:493
+#, c-format
+msgid " o_algndata: %u\n"
+msgstr " o_algndata: %u\n"
+
+#: od-xcoff.c:495
+#, c-format
+msgid " o_modtype: 0x%04x"
+msgstr " o_modtype: 0x%04x"
+
+#: od-xcoff.c:500
+#, c-format
+msgid " o_cputype: 0x%04x\n"
+msgstr " o_cputype: 0x%04x\n"
+
+#: od-xcoff.c:502
+#, c-format
+msgid " o_maxstack: 0x%08x\n"
+msgstr " o_maxstack: 0x%08x\n"
+
+#: od-xcoff.c:504
+#, c-format
+msgid " o_maxdata: 0x%08x\n"
+msgstr " o_maxdata: 0x%08x\n"
+
+#: od-xcoff.c:507
+#, c-format
+msgid " o_debugger: 0x%08x\n"
+msgstr " o_debugger: 0x%08x\n"
+
+#: od-xcoff.c:521
+#, c-format
+msgid "Section headers (at %u+%u=0x%08x to 0x%08x):\n"
+msgstr "セクションヘッダ (%u+%u=0x%08x ã‹ã‚‰ 0x%08x):\n"
+
+#: od-xcoff.c:526
+#, c-format
+msgid " No section header\n"
+msgstr "セクションヘッダãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: od-xcoff.c:531 od-xcoff.c:542 od-xcoff.c:598
+msgid "cannot read section header"
+msgstr "セクションヘッダを読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:534
+#, c-format
+msgid " # Name paddr vaddr size scnptr relptr lnnoptr nrel nlnno\n"
+msgstr " # åå‰ paddr vaddr サイズ scnptr relptr lnnoptr nrel nlnno\n"
+
+#: od-xcoff.c:546
+#, c-format
+msgid "%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n"
+msgstr "%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n"
+
+#: od-xcoff.c:557
+#, c-format
+msgid " Flags: %08x "
+msgstr " フラグ: %08x "
+
+#: od-xcoff.c:565
+#, c-format
+msgid "overflow - nreloc: %u, nlnno: %u\n"
+msgstr "overflow - nreloc: %u, nlnno: %u\n"
+
+#: od-xcoff.c:586 od-xcoff.c:919 od-xcoff.c:974
+msgid "cannot read section headers"
+msgstr "セクションヘッダを読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:650
+msgid "cannot read strings table len"
+msgstr "文字列表長を読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:664
+msgid "cannot read strings table"
+msgstr "文字列表を読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:672
+msgid "cannot read symbol table"
+msgstr "シンボル表を読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:687
+msgid "cannot read symbol entry"
+msgstr "シンボルエントリを読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:722
+msgid "cannot read symbol aux entry"
+msgstr "シンボル補助エントリを読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:744
+#, c-format
+msgid "Symbols table (strtable at 0x%08x)"
+msgstr "シンボル表 (strtable ä½ç½® 0x%08x)"
+
+#: od-xcoff.c:749
+#, c-format
+msgid ""
+":\n"
+" No symbols\n"
+msgstr ""
+":\n"
+" シンボルã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: od-xcoff.c:755
+#, c-format
+msgid " (no strings):\n"
+msgstr " (文字列ã¯ã‚ã‚Šã¾ã›ã‚“):\n"
+
+#: od-xcoff.c:757
+#, c-format
+msgid " (strings size: %08x):\n"
+msgstr " (文字列サイズ: %08x):\n"
+
+#: od-xcoff.c:770
+#, c-format
+msgid " # sc value section type aux name/off\n"
+msgstr " # sc 値 section 型 aux name/off\n"
+
+#: od-xcoff.c:821
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+
+#: od-xcoff.c:827
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u\n"
+
+#. Function aux entry.
+#: od-xcoff.c:837
+#, c-format
+msgid " exptr: %08x fsize: %08x lnnoptr: %08x endndx: %u\n"
+msgstr " exptr: %08x fsize: %08x lnnoptr: %08x endndx: %u\n"
+
+#: od-xcoff.c:856
+#, c-format
+msgid " scnsym: %-8u"
+msgstr " scnsym: %-8u"
+
+#: od-xcoff.c:858
+#, c-format
+msgid " scnlen: %08x"
+msgstr " scnlen: %08x"
+
+#: od-xcoff.c:859
+#, c-format
+msgid " h: parm=%08x sn=%04x al: 2**%u"
+msgstr " h: parm=%08x sn=%04x al: 2**%u"
+
+#: od-xcoff.c:863
+#, c-format
+msgid " typ: "
+msgstr " typ: "
+
+#: od-xcoff.c:865
+#, c-format
+msgid " cl: "
+msgstr " cl: "
+
+#: od-xcoff.c:878
+#, c-format
+msgid " ftype: %02x "
+msgstr " ftype: %02x "
+
+#: od-xcoff.c:881
+#, c-format
+msgid "fname: %.14s"
+msgstr "fname: %.14s"
+
+#: od-xcoff.c:887
+#, c-format
+msgid " %s"
+msgstr " %s"
+
+#: od-xcoff.c:889
+#, c-format
+msgid "offset: %08x"
+msgstr "オフセット: %08x"
+
+#: od-xcoff.c:896
+#, c-format
+msgid " lnno: %u\n"
+msgstr " lnno: %u\n"
+
+#: od-xcoff.c:931
+#, c-format
+msgid "Relocations for %s (%u)\n"
+msgstr "%s (%u) 用ã®å†é…ç½®\n"
+
+#: od-xcoff.c:934
+msgid "cannot read relocations"
+msgstr "å†é…置を読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:937
+#, c-format
+msgid "vaddr sgn mod sz type symndx symbol\n"
+msgstr "vaddr sgn mod sz type symndx symbol\n"
+
+#: od-xcoff.c:946
+msgid "cannot read relocation entry"
+msgstr "å†é…置エントリを読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:950
+#, c-format
+msgid "%08x %c %c %-2u "
+msgstr "%08x %c %c %-2u "
+
+#: od-xcoff.c:986
+#, c-format
+msgid "Line numbers for %s (%u)\n"
+msgstr "%s (%u) ã®è¡Œç•ªå·\n"
+
+#: od-xcoff.c:989
+msgid "cannot read line numbers"
+msgstr "行番å·ã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:992
+#, c-format
+msgid "lineno symndx/paddr\n"
+msgstr "è¡Œç•ªå· symndx/paddr\n"
+
+#: od-xcoff.c:1000
+msgid "cannot read line number entry"
+msgstr "行番å·ã‚¨ãƒ³ãƒˆãƒªã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:1004
+#, c-format
+msgid " %-6u "
+msgstr " %-6u "
+
+#: od-xcoff.c:1043
+#, c-format
+msgid "no .loader section in file\n"
+msgstr "ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ .loader セクションãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: od-xcoff.c:1049
+#, c-format
+msgid "section .loader is too short\n"
+msgstr ".loader セクションãŒçŸ­ã™ãŽã¾ã™\n"
+
+#: od-xcoff.c:1056
+#, c-format
+msgid "Loader header:\n"
+msgstr "ローダヘッダ:\n"
+
+#: od-xcoff.c:1058
+#, c-format
+msgid " version: %u\n"
+msgstr " ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %u\n"
+
+#: od-xcoff.c:1061
+#, c-format
+msgid " Unhandled version\n"
+msgstr " 扱ãˆãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™\n"
+
+#: od-xcoff.c:1066
+#, c-format
+msgid " nbr symbols: %u\n"
+msgstr " シンボル数: %u\n"
+
+#: od-xcoff.c:1068
+#, c-format
+msgid " nbr relocs: %u\n"
+msgstr " å†é…置数: %u\n"
+
+#: od-xcoff.c:1069
+#, c-format
+msgid " import strtab len: %u\n"
+msgstr " インãƒãƒ¼ãƒˆæ–‡å­—列表: %u\n"
+
+#: od-xcoff.c:1072
+#, c-format
+msgid " nbr import files: %u\n"
+msgstr " インãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«æ•°: %u\n"
+
+#: od-xcoff.c:1074
+#, c-format
+msgid " import file off: %u\n"
+msgstr " インãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚ªãƒ•ã‚»ãƒƒãƒˆ: %u\n"
+
+#: od-xcoff.c:1076
+#, c-format
+msgid " string table len: %u\n"
+msgstr " 文字列表長: %u\n"
+
+#: od-xcoff.c:1078
+#, c-format
+msgid " string table off: %u\n"
+msgstr " 文字列表オフセット: %u\n"
+
+#: od-xcoff.c:1081
+#, c-format
+msgid "Dynamic symbols:\n"
+msgstr "動的シンボル:\n"
+
+#: od-xcoff.c:1082
+#, c-format
+msgid " # value sc IFEW ty class file pa name\n"
+msgstr " # value sc IFEW ty class file pa name\n"
+
+#: od-xcoff.c:1087
+#, c-format
+msgid " %4u %08x %3u "
+msgstr " %4u %08x %3u "
+
+#: od-xcoff.c:1100
+#, c-format
+msgid " %3u %3u "
+msgstr " %3u %3u "
+
+#: od-xcoff.c:1109
+#, c-format
+msgid "(bad offset: %u)"
+msgstr "(é–“é•ã£ãŸã‚ªãƒ•ã‚»ãƒƒãƒˆ: %u)"
+
+#: od-xcoff.c:1116
+#, c-format
+msgid "Dynamic relocs:\n"
+msgstr "å‹•çš„å†é…ç½®:\n"
+
+#: od-xcoff.c:1117
+#, c-format
+msgid " vaddr sec sz typ sym\n"
+msgstr " vaddr sec sz typ sym\n"
+
+#: od-xcoff.c:1129
+#, c-format
+msgid " %08x %3u %c%c %2u "
+msgstr " %08x %3u %c%c %2u "
+
+#: od-xcoff.c:1140
+#, c-format
+msgid ".text"
+msgstr ".text"
+
+#: od-xcoff.c:1143
+#, c-format
+msgid ".data"
+msgstr ".data"
+
+#: od-xcoff.c:1146
+#, c-format
+msgid ".bss"
+msgstr ".bss"
+
+#: od-xcoff.c:1149
+#, c-format
+msgid "%u"
+msgstr "%u"
+
+#: od-xcoff.c:1155
+#, c-format
+msgid "Import files:\n"
+msgstr "インãƒãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«:\n"
+
+#: od-xcoff.c:1187
+#, c-format
+msgid "no .except section in file\n"
+msgstr "ファイル㫠.except セクションãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: od-xcoff.c:1195
+#, c-format
+msgid "Exception table:\n"
+msgstr "例外表:\n"
+
+#: od-xcoff.c:1196
+#, c-format
+msgid "lang reason sym/addr\n"
+msgstr "lang reason sym/addr\n"
+
+#: od-xcoff.c:1204
+#, c-format
+msgid " %02x %02x "
+msgstr " %02x %02x "
+
+#: od-xcoff.c:1209
+#, c-format
+msgid "@%08x"
+msgstr "@%08x"
+
+#: od-xcoff.c:1229
+#, c-format
+msgid "no .typchk section in file\n"
+msgstr "ファイル㫠.typchk セクションãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: od-xcoff.c:1236
+#, c-format
+msgid "Type-check section:\n"
+msgstr "型検査セクション:\n"
+
+#: od-xcoff.c:1237
+#, c-format
+msgid "offset len lang-id general-hash language-hash\n"
+msgstr "offset len lang-id general-hash language-hash\n"
+
+#: od-xcoff.c:1282
+#, c-format
+msgid " address beyond section size\n"
+msgstr "アドレスãŒã‚»ã‚¯ã‚·ãƒ§ãƒ³é•·ã‚’超ãˆã¦ã„ã¾ã™\n"
+
+#: od-xcoff.c:1292
+#, c-format
+msgid " tags at %08x\n"
+msgstr " ã‚¿ã‚°ä½ç½® %08x\n"
+
+#: od-xcoff.c:1299
+#, c-format
+msgid " version: %u, lang: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n"
+msgstr " ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %u, 言語: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n"
+
+#: od-xcoff.c:1306
+#, c-format
+msgid " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n"
+msgstr " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n"
+
+#: od-xcoff.c:1312
+#, c-format
+msgid " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n"
+msgstr " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n"
+
+#: od-xcoff.c:1318
+#, c-format
+msgid " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n"
+msgstr " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n"
+
+#: od-xcoff.c:1324
+#, c-format
+msgid " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n"
+msgstr " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n"
+
+#: od-xcoff.c:1337
+#, c-format
+msgid " parminfo: 0x%08x\n"
+msgstr " parminfo: 0x%08x\n"
+
+#: od-xcoff.c:1348
+#, c-format
+msgid " tb_offset: 0x%08x (start=0x%08x)\n"
+msgstr " tb_offset: 0x%08x (start=0x%08x)\n"
+
+#: od-xcoff.c:1359
+#, c-format
+msgid " hand_mask_offset: 0x%08x\n"
+msgstr " hand_mask_offset: 0x%08x\n"
+
+#: od-xcoff.c:1370
+#, c-format
+msgid " number of CTL anchors: %u\n"
+msgstr "CTL アンカーã®æ•°: %u\n"
+
+#: od-xcoff.c:1375
+#, c-format
+msgid " CTL[%u]: %08x\n"
+msgstr " CTL[%u]: %08x\n"
+
+#: od-xcoff.c:1389
+#, c-format
+msgid " Name (len: %u): "
+msgstr " åå‰ (é•·ã•: %u): "
+
+#: od-xcoff.c:1392
+#, c-format
+msgid "[truncated]\n"
+msgstr "[切り詰ã‚られã¾ã—ãŸ]\n"
+
+#: od-xcoff.c:1407
+#, c-format
+msgid " alloca reg: %u\n"
+msgstr ""
+
+#: od-xcoff.c:1411
+#, c-format
+msgid " (end of tags at %08x)\n"
+msgstr " (%08x ã§ã‚¿ã‚°ãŒçµ‚了ã—ã¾ã—ãŸ)\n"
+
+#: od-xcoff.c:1414
+#, c-format
+msgid " no tags found\n"
+msgstr " ã‚¿ã‚°ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n"
+
+#: od-xcoff.c:1418
+#, c-format
+msgid " Truncated .text section\n"
+msgstr " 切り詰ã‚られ㟠.text セクションã§ã™\n"
+
+#: od-xcoff.c:1503
+#, c-format
+msgid "TOC:\n"
+msgstr "TOC:\n"
+
+#: od-xcoff.c:1546
+#, c-format
+msgid "Nbr entries: %-8u Size: %08x (%u)\n"
+msgstr "エントリ数: %-8u サイズ: %08x (%u)\n"
+
+#: od-xcoff.c:1630
+msgid "cannot read header"
+msgstr "ヘッダを読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: od-xcoff.c:1638
+#, c-format
+msgid "File header:\n"
+msgstr "ファイルヘッダ:\n"
+
+#: od-xcoff.c:1639
+#, c-format
+msgid " magic: 0x%04x (0%04o) "
+msgstr " マジック番å·: 0x%04x (0%04o) "
+
+#: od-xcoff.c:1643
+#, c-format
+msgid "(WRMAGIC: writable text segments)"
+msgstr "(WRMAGIC: 書ãè¾¼ã¿å¯èƒ½ãª text セグメントã§ã™)"
+
+#: od-xcoff.c:1646
+#, c-format
+msgid "(ROMAGIC: readonly sharablee text segments)"
+msgstr "(ROMAGIC: 読ã¿å–り専用共有 text セグメントã§ã™)"
+
+#: od-xcoff.c:1649
+#, c-format
+msgid "(TOCMAGIC: readonly text segments and TOC)"
+msgstr "(TOCMAGIC: 読ã¿è¾¼ã¿å°‚用 text セグメントãŠã‚ˆã³ TOC ã§ã™)"
+
+#: od-xcoff.c:1652
+#, c-format
+msgid "unknown magic"
+msgstr "ä¸æ˜Žãªãƒžã‚¸ãƒƒã‚¯ç•ªå·ã§ã™"
+
+#: od-xcoff.c:1659
+#, c-format
+msgid " Unhandled magic\n"
+msgstr " å–り扱ãˆãªã„マジック番å·ã§ã™\n"
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr "pragma code_page ã«å¯¾ã—ã¦ç„¡åŠ¹ãªå€¤ãŒæŒ‡å®šã•ã‚Œã¾ã—ãŸã€‚\n"
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: ä¸æ­£ãªã‚¿ã‚¤ãƒ—コード 0x%x"
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: å‰æ–¹ã«é–¢æ•°ãŒãªã„ .bf ãŒã‚ã‚Šã¾ã™"
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: 予期ã—ãªã„ .ef ã§ã™\n"
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: èªè­˜ã•ã‚ŒãŸãƒ‡ãƒãƒƒã‚°æƒ…å ±ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "エラーã®ç›´å‰ã®ã‚¹ã‚¿ãƒ–エントリ:\n"
+
+#: readelf.c:265
+msgid "<none>"
+msgstr "<ç„¡ã—>"
+
+#: readelf.c:266
+msgid "<no-name>"
+msgstr "<åå‰ç„¡ã—>"
+
+#: readelf.c:267 readelf.c:5026 readelf.c:5536 readelf.c:8077 readelf.c:8195
+#: readelf.c:9154 readelf.c:9234 readelf.c:9287 readelf.c:12150
+#: readelf.c:12153
+msgid "<corrupt>"
+msgstr "<ç ´æ>"
+
+#: readelf.c:300
+#, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "%2$s ã® 0x%1$lx ã¾ã§æŽ¢æŸ» (seek) ã§ãã¾ã›ã‚“\n"
+
+#: readelf.c:315
+#, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr " %2$s ã®ãŸã‚ã« 0x%1$lx ãƒã‚¤ãƒˆã®ãƒ¡ãƒ¢ãƒªã‚’確ä¿ä¸­ã«ãƒ¡ãƒ¢ãƒªãŒä¸è¶³ã—ã¾ã—ãŸ\n"
+
+#: readelf.c:325
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "%2$s ã® 0x%1$lx ãƒã‚¤ãƒˆã‚’読ã¿è¾¼ã‚ã¾ã›ã‚“\n"
+
+#: readelf.c:625
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "ã“ã®ãƒžã‚·ãƒ³ã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§ã®å†é…ç½®ã«ã¤ã„ã¦è§£ã£ã¦ã„ã¾ã›ã‚“\n"
+
+#: readelf.c:646 readelf.c:676 readelf.c:744 readelf.c:773
+msgid "relocs"
+msgstr "å†é…ç½®"
+
+#: readelf.c:658 readelf.c:688 readelf.c:755 readelf.c:784
+msgid "out of memory parsing relocs\n"
+msgstr "å†é…置を解æžä¸­ã«ãƒ¡ãƒ¢ãƒªãŒä¸è¶³ã—ã¾ã—ãŸ\n"
+
+#: readelf.c:889
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr " オフセット 情報 åž‹ シンボル値 シンボルå + 加数\n"
+
+#: readelf.c:891
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr " オフセット 情報 åž‹ シンボル値 シンボルå + 加数\n"
+
+#: readelf.c:896
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " オフセット 情報 åž‹ シンボル値 シンボルå\n"
+
+#: readelf.c:898
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " オフセット 情報 åž‹ シンボル値 シンボルå\n"
+
+#: readelf.c:906
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr " オフセット 情報 åž‹ シンボル値 シンボルå + 加数\n"
+
+#: readelf.c:908
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr " オフセット 情報 åž‹ シンボル値 シンボルå + 加数\n"
+
+#: readelf.c:913
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr " オフセット 情報 åž‹ シンボル値 シンボルå\n"
+
+#: readelf.c:915
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " オフセット 情報 åž‹ シンボル値 シンボルå\n"
+
+#: readelf.c:1219 readelf.c:1378 readelf.c:1386
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "èªè­˜ã§ãã¾ã›ã‚“: %-7lx"
+
+#: readelf.c:1244
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<ä¸æ˜ŽãªåŠ æ•°: %lx>"
+
+#: readelf.c:1251
+#, c-format
+msgid " bad symbol index: %08lx"
+msgstr "誤ã£ãŸã‚·ãƒ³ãƒœãƒ«ç´¢å¼•: %08lx"
+
+#: readelf.c:1336
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr "<文字列表索引: %3ld>"
+
+#: readelf.c:1338
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<ç ´æã—ãŸæ–‡å­—列表索引: %3ld>"
+
+#: readelf.c:1731
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "プロセッサ固有: %lx"
+
+#: readelf.c:1755
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "オペレーティングシステム固有: %lx"
+
+#: readelf.c:1759 readelf.c:2821
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<ä¸æ˜Ž>: %lx"
+
+#: readelf.c:1772
+msgid "NONE (None)"
+msgstr "NONE (ç„¡ã—)"
+
+#: readelf.c:1773
+msgid "REL (Relocatable file)"
+msgstr "REL (å†é…ç½®å¯èƒ½ãƒ•ã‚¡ã‚¤ãƒ«)"
+
+#: readelf.c:1774
+msgid "EXEC (Executable file)"
+msgstr "EXEC (実行å¯èƒ½ãƒ•ã‚¡ã‚¤ãƒ«)"
+
+#: readelf.c:1775
+msgid "DYN (Shared object file)"
+msgstr "DYN (共有オブジェクトファイル)"
+
+#: readelf.c:1776
+msgid "CORE (Core file)"
+msgstr "CORE (コアファイル)"
+
+#: readelf.c:1780
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "プロセッサ固有: (%x)"
+
+#: readelf.c:1782
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "OS 固有: (%x)"
+
+#: readelf.c:1784 readelf.c:3068
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<ä¸æ˜Ž>: %x"
+
+#: readelf.c:1796
+msgid "None"
+msgstr "ãªã—"
+
+#: readelf.c:1964
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr "<ä¸æ˜Ž>: 0x%x"
+
+#: readelf.c:2150
+msgid ", <unknown>"
+msgstr ", <ä¸æ˜Ž>"
+
+#: readelf.c:2236 readelf.c:7428
+msgid "unknown"
+msgstr "ä¸æ˜Ž"
+
+#: readelf.c:2237
+msgid "unknown mac"
+msgstr "ä¸æ˜Žãª mac"
+
+#: readelf.c:2301
+msgid ", relocatable"
+msgstr ", å†é…ç½®å¯èƒ½"
+
+#: readelf.c:2304
+msgid ", relocatable-lib"
+msgstr ", å†é…ç½®å¯èƒ½ãƒ©ã‚¤ãƒ–ラリ"
+
+#: readelf.c:2327
+msgid ", unknown v850 architecture variant"
+msgstr ", ä¸æ˜Žãª v850 アーキテクãƒãƒ£ã®å¤‰ç¨®"
+
+#: readelf.c:2384
+msgid ", unknown CPU"
+msgstr ", ä¸æ˜Žãª CPU"
+
+#: readelf.c:2399
+msgid ", unknown ABI"
+msgstr ", ä¸æ˜Žãª ABI"
+
+#: readelf.c:2419 readelf.c:2453
+msgid ", unknown ISA"
+msgstr ", ä¸æ˜Žãª ISA"
+
+#: readelf.c:2626
+msgid "Standalone App"
+msgstr "独立アプリケーション"
+
+#: readelf.c:2635
+msgid "Bare-metal C6000"
+msgstr "ベアメタル C6000"
+
+#: readelf.c:2645 readelf.c:3431 readelf.c:3447
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<ä¸æ˜Ž: %x>"
+
+#: readelf.c:3123
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "使用法: readelf <option(s)> elf-file(s)\n"
+
+#: readelf.c:3124
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr " ELF å½¢å¼ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®å†…容ã«é–¢ã™ã‚‹æƒ…報を表示ã—ã¾ã™\n"
+
+#: readelf.c:3125
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" --dyn-syms Display the dynamic symbol table\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as relocated bytes\n"
+" -w[lLiaprmfFsoRt] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" オプション:\n"
+" -a --all -h -l -S -s -r -d -V -A -I ã¨åŒæ§˜\n"
+" -h --file-header ELF ファイルヘッダを表示ã™ã‚‹\n"
+" -l --program-headers プログラムヘッダを表示ã™ã‚‹\n"
+" --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"
+" --dyn-syms 動的シンボル表を表示ã™ã‚‹\n"
+" -n --notes core 備考を表示ã™ã‚‹ (存在ã™ã‚‹å ´åˆ)\n"
+" -r --relocs å†é…置を表示ã™ã‚‹ (存在ã™ã‚‹å ´åˆ)\n"
+" -u --unwind å·»ã戻㗠(unwind) 情報を表示ã™ã‚‹ (存在ã™ã‚‹å ´åˆ)\n"
+" -d --dynamic 動的セクションを表示ã™ã‚‹ (存在ã™ã‚‹å ´åˆ)\n"
+" -V --version-info ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’表示ã™ã‚‹ (存在ã™ã‚‹å ´åˆ)\n"
+" -A --arch-specific アーキテクãƒãƒ£å›ºæœ‰æƒ…報を表示ã™ã‚‹ (ã‚る物全ã¦)\n"
+" -c --archive-index 書庫ã®ã‚·ãƒ³ãƒœãƒ«/ファイル索引を表示ã™ã‚‹\n"
+" -D --use-dynamic シンボルを表示ã™ã‚‹ã¨ãã«å‹•çš„セクション情報を使用ã™ã‚‹\n"
+" -x --hex-dump=<number|name>\n"
+" ãƒã‚¤ãƒˆã¨ã—ã¦ã‚»ã‚¯ã‚·ãƒ§ãƒ³ <number|name> ã®å†…容をダンプã™ã‚‹\n"
+" -p --string-dump=<number|name>\n"
+" 文字列ã¨ã—ã¦ã‚»ã‚¯ã‚·ãƒ§ãƒ³ <number|name> ã®å†…容を表示ã™ã‚‹\n"
+" -R --relocated-dump=<number|name>\n"
+" å†é…ç½®ã—ãŸãƒã‚¤ãƒˆã¨ã—ã¦ã‚»ã‚¯ã‚·ãƒ§ãƒ³ <number|name> ã®å†…容を表示ã™ã‚‹\n"
+" -w[lLiaprmfFsoRt] ã¾ãŸã¯\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =trace_info,=trace_abbrev,=trace_aranges]\n"
+" DWARF2 デãƒãƒƒã‚°ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®å†…容を表示ã™ã‚‹\n"
+
+#: readelf.c:3157
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+msgstr ""
+" --dwarf-depth=N N 以上ã®æ·±ã•ã® DIE を表示ã—ãªã„\n"
+" --dwarf-start=N N 以上ã®æ·±ã•ã® DIE を表示ã™ã‚‹\n"
+
+#: readelf.c:3162
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+" -i --instruction-dump=<number|name>\n"
+" セクション <number|name> ã®å†…容を逆アセンブルã™ã‚‹\n"
+
+#: readelf.c:3166
+#, 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 Display histogram of bucket list lengths\n"
+" -W --wide 出力幅㌠80 文字を超ãˆã‚‹ã“ã¨ã‚’許å¯ã™ã‚‹\n"
+" @<file> オプションを <file> ã‹ã‚‰èª­ã¿è¾¼ã‚€\n"
+" -H --help ã“ã®æƒ…報を表示ã™ã‚‹\n"
+" -v --version readelf ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã™ã‚‹\n"
+
+#: readelf.c:3195 readelf.c:3224 readelf.c:3228 readelf.c:13374
+msgid "Out of memory allocating dump request table.\n"
+msgstr "ダンプè¦æ±‚表ã®ãƒ¡ãƒ¢ãƒªã‚’確ä¿ä¸­ã«ãƒ¡ãƒ¢ãƒªãŒè¶³ã‚Šãªããªã‚Šã¾ã—ãŸ\n"
+
+#: readelf.c:3400
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "無効ãªã‚ªãƒ—ション '-%c'\n"
+
+#: readelf.c:3415
+msgid "Nothing to do.\n"
+msgstr "è¡Œãªã†ã¹ã事ã¯ã‚ã‚Šã¾ã›ã‚“。\n"
+
+#: readelf.c:3427 readelf.c:3443 readelf.c:8013
+msgid "none"
+msgstr "ãªã—"
+
+#: readelf.c:3444
+msgid "2's complement, little endian"
+msgstr "2 ã®è£œæ•°ã€ãƒªãƒˆãƒ«ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³"
+
+#: readelf.c:3445
+msgid "2's complement, big endian"
+msgstr "2 ã®è£œæ•°ã€ãƒ“ッグエンディアン"
+
+#: readelf.c:3463
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "ELF ファイルã§ã¯ã‚ã‚Šã¾ã›ã‚“ - 始点ã«ã‚るマジック番å·ãŒç•°ãªã‚Šã¾ã™\n"
+
+#: readelf.c:3473
+#, c-format
+msgid "ELF Header:\n"
+msgstr "ELF ヘッダ:\n"
+
+#: readelf.c:3474
+#, c-format
+msgid " Magic: "
+msgstr " マジック: "
+
+#: readelf.c:3478
+#, c-format
+msgid " Class: %s\n"
+msgstr " クラス: %s\n"
+
+#: readelf.c:3480
+#, c-format
+msgid " Data: %s\n"
+msgstr " データ: %s\n"
+
+#: readelf.c:3482
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %d %s\n"
+
+#: readelf.c:3487
+#, c-format
+msgid "<unknown: %lx>"
+msgstr "<ä¸æ˜Ž: %lx>"
+
+#: readelf.c:3489
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS/ABI: %s\n"
+
+#: readelf.c:3491
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " ABI ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %d\n"
+
+#: readelf.c:3493
+#, c-format
+msgid " Type: %s\n"
+msgstr " åž‹: %s\n"
+
+#: readelf.c:3495
+#, c-format
+msgid " Machine: %s\n"
+msgstr " マシン: %s\n"
+
+#: readelf.c:3497
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " ãƒãƒ¼ã‚¸ãƒ§ãƒ³: 0x%lx\n"
+
+#: readelf.c:3500
+#, c-format
+msgid " Entry point address: "
+msgstr " エントリãƒã‚¤ãƒ³ãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹: "
+
+#: readelf.c:3502
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" プログラムã®é–‹å§‹ãƒ˜ãƒƒãƒ€: "
+
+#: readelf.c:3504
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (ãƒã‚¤ãƒˆ)\n"
+" セクションヘッダ始点: "
+
+#: readelf.c:3506
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (ãƒã‚¤ãƒˆ)\n"
+
+#: readelf.c:3508
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " フラグ: 0x%lx%s\n"
+
+#: readelf.c:3511
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " ã“ã®ãƒ˜ãƒƒãƒ€ã®ã‚µã‚¤ã‚º: %ld (ãƒã‚¤ãƒˆ)\n"
+
+#: readelf.c:3513
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " プログラムヘッダサイズ: %ld (ãƒã‚¤ãƒˆ)\n"
+
+#: readelf.c:3515
+#, c-format
+msgid " Number of program headers: %ld"
+msgstr " プログラムヘッダ数: %ld"
+
+#: readelf.c:3522
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " セクションヘッダ: %ld (ãƒã‚¤ãƒˆ)\n"
+
+#: readelf.c:3524
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " セクションヘッダサイズ: %ld"
+
+#: readelf.c:3529
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " セクションヘッダ文字列表索引: %ld"
+
+#: readelf.c:3536
+#, c-format
+msgid " <corrupt: out of range>"
+msgstr " <ç ´æ: 範囲外>"
+
+#: readelf.c:3570 readelf.c:3604
+msgid "program headers"
+msgstr "プログラムヘッダ"
+
+#: readelf.c:3671
+msgid "possibly corrupt ELF header - it has a non-zero program header offset, but no program headers"
+msgstr "ELF ヘッダãŒãŠãらã壊れã¦ã„ã¾ã™ - 0 ã§ãªã„ヘッダオフセットãŒã‚ã‚Šã¾ã™ãŒã€ãƒ—ログラムヘッダãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: readelf.c:3674
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ãƒ—ログラムヘッダã¯ã‚ã‚Šã¾ã›ã‚“。\n"
+
+#: readelf.c:3680
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Elf ファイルタイプ㯠%s ã§ã™\n"
+
+#: readelf.c:3681
+#, c-format
+msgid "Entry point "
+msgstr "エントリãƒã‚¤ãƒ³ãƒˆ "
+
+#: readelf.c:3683
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"%d 個ã®ãƒ—ログラムヘッダã€å§‹ç‚¹ã‚ªãƒ•ã‚»ãƒƒãƒˆ "
+
+#: readelf.c:3695 readelf.c:3697
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"プログラムヘッダ:\n"
+
+#: readelf.c:3701
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " タイプ オフセット 仮想Addr 物ç†Addr FileSiz MemSiz Flg Align\n"
+
+#: readelf.c:3704
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " タイプ Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+
+#: readelf.c:3708
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " タイプ オフセット 仮想Addr 物ç†Addr\n"
+
+#: readelf.c:3710
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " ファイルサイズ メモリサイズ フラグ 整列\n"
+
+#: readelf.c:3803
+msgid "more than one dynamic segment\n"
+msgstr "複数ã®å‹•çš„セグメント\n"
+
+#: readelf.c:3822
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr "動的セグメントã«å†… .dynamic セクションãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: readelf.c:3837
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr "動的セグメント内㫠.dynamic セクションãŒå«ã¾ã‚Œã¦ã„ã¾ã›ã‚“\n"
+
+#: readelf.c:3840
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr ".dynamic セクションãŒå‹•çš„セグメントã®æœ€åˆã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: readelf.c:3848
+msgid "Unable to find program interpreter name\n"
+msgstr "プログラムインタプリタåã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“\n"
+
+#: readelf.c:3855
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr "内部エラー: プログラムインタプリタを表示ã™ã‚‹ãŸã‚ã®æ›¸å¼æ–‡å­—列作æˆã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: readelf.c:3859
+msgid "Unable to read program interpreter name\n"
+msgstr "プログラムインタプリタåを読ã¿è¾¼ã‚ã¾ã›ã‚“\n"
+
+#: readelf.c:3862
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [è¦æ±‚ã•ã‚Œã‚‹ãƒ—ログラムインタプリタ: %s]"
+
+#: readelf.c:3874
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" セグメントマッピングã¸ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³:\n"
+
+#: readelf.c:3875
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " セグメントセクション...\n"
+
+#: readelf.c:3911
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "プログラムヘッダ無ã—ã«ä»®æƒ³ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’解釈ã§ãã¾ã›ã‚“。\n"
+
+#: readelf.c:3927
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "仮想アドレス 0x%lx ãŒã©ã® PT_LOAD セグメントã«ã‚‚ä½ç½®ã—ã¦ã„ã¾ã›ã‚“。\n"
+
+#: readelf.c:3942 readelf.c:3985
+msgid "section headers"
+msgstr "セクションヘッダ"
+
+#: readelf.c:4032 readelf.c:4107
+msgid "sh_entsize is zero\n"
+msgstr "sh_entsize ㌠0 ã§ã™\n"
+
+#: readelf.c:4040 readelf.c:4115
+msgid "Invalid sh_entsize\n"
+msgstr "無効㪠sh_entsize ã§ã™\n"
+
+#: readelf.c:4045 readelf.c:4120
+msgid "symbols"
+msgstr "シンボル"
+
+#: readelf.c:4057 readelf.c:4132
+msgid "symtab shndx"
+msgstr "symtab shndx"
+
+#: readelf.c:4392
+#, c-format
+msgid "UNKNOWN (%*.*lx)"
+msgstr "UNKNOWN (%*.*lx)"
+
+#: readelf.c:4414
+msgid "possibly corrupt ELF file header - it has a non-zero section header offset, but no section headers\n"
+msgstr "ELF ファイルヘッダãŒå£Šã‚Œã¦ã„るよã†ã§ã™ - 0 ã§ãªã„セクションヘッダオフセットãŒã‚ã‚Šã¾ã™ãŒã€ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãƒ˜ãƒƒãƒ€ãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: readelf.c:4417
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãŒã‚ã‚Šã¾ã›ã‚“。\n"
+
+#: readelf.c:4423
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "%d 個ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãƒ˜ãƒƒãƒ€ã€å§‹ç‚¹ã‚ªãƒ•ã‚»ãƒƒãƒˆ 0x%lx:\n"
+
+#: readelf.c:4444 readelf.c:5022 readelf.c:5433 readelf.c:5739 readelf.c:6152
+#: readelf.c:7036 readelf.c:9132
+msgid "string table"
+msgstr "文字列表"
+
+#: readelf.c:4511
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "セクション %d ã§ç„¡åŠ¹ãª sh_entsize %lx (予期ã•ã‚Œã‚‹ã®ã¯ %lx) ã§ã™\n"
+
+#: readelf.c:4531
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "ファイルãŒè¤‡æ•°ã®å‹•çš„シンボルテーブルをå«ã‚“ã§ã„ã¾ã™\n"
+
+#: readelf.c:4544
+msgid "File contains multiple dynamic string tables\n"
+msgstr "ファイルãŒè¤‡æ•°ã®å‹•çš„文字列テーブルをå«ã‚“ã§ã„ã¾ã™\n"
+
+#: readelf.c:4550
+msgid "dynamic strings"
+msgstr "動的文字列"
+
+#: readelf.c:4557
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "ファイルã«è¤‡æ•°ã® symtab shndx 表ãŒã‚ã‚Šã¾ã™\n"
+
+#: readelf.c:4627
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"セクションヘッダ:\n"
+
+#: readelf.c:4629
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"セクションヘッダ:\n"
+
+#: readelf.c:4635 readelf.c:4646 readelf.c:4657
+#, c-format
+msgid " [Nr] Name\n"
+msgstr " [番] åå‰\n"
+
+#: readelf.c:4636
+#, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr " 型 アドレス Off サイズ ES Lk Inf Al\n"
+
+#: readelf.c:4640
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr " [番] åå‰ ã‚¿ã‚¤ãƒ— アドレス Off サイズ ES Flg Lk Inf Al\n"
+
+#: readelf.c:4647
+#, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr " 型 アドレス Off サイズ ES Lk Inf Al\n"
+
+#: readelf.c:4651
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr " [番] åå‰ åž‹ アドレス Off サイズ ES Flg Lk Inf Al\n"
+
+#: readelf.c:4658
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr " 型 アドレス オフセット リンク\n"
+
+#: readelf.c:4659
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr " サイズ EntSize 情報 整列\n"
+
+#: readelf.c:4663
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [番] åå‰ ã‚¿ã‚¤ãƒ— アドレス オフセット\n"
+
+#: readelf.c:4664
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " サイズ EntSize フラグ Link 情報 整列\n"
+
+#: readelf.c:4669
+#, c-format
+msgid " Flags\n"
+msgstr " フラグ\n"
+
+#: readelf.c:4748
+#, c-format
+msgid "section %u: sh_link value of %u is larger than the number of sections\n"
+msgstr "セクション %u: sh_link ã®å€¤ %u ãŒã‚»ã‚¯ã‚·ãƒ§ãƒ³æ•°ã‚ˆã‚Šå¤§ãã„ã§ã™\n"
+
+#: readelf.c:4847
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"フラグã®ã‚­ãƒ¼:\n"
+" W (write), A (alloc), X (実行), M (merge), S (文字列), l (large)\n"
+" I (情報), L (リンク順), G (グループ), T (TLS), E (排他), x (ä¸æ˜Ž)\n"
+" O (追加㮠OS 処ç†ãŒå¿…è¦) o (OS 固有), p (プロセッサ固有)\n"
+
+#: readelf.c:4852
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"フラグã®ã‚­ãƒ¼:\n"
+" W (write), A (alloc), X (実行), M (merge), S (文字列)\n"
+" I (情報), L (リンク順), G (グループ), T (TLS), E (排他), x (ä¸æ˜Ž)\n"
+" O (追加㮠OS 処ç†ãŒå¿…è¦) o (OS 固有), p (プロセッサ固有)\n"
+
+#: readelf.c:4874
+#, c-format
+msgid "[<unknown>: 0x%x] "
+msgstr "[<ä¸æ˜Ž>: 0x%x] "
+
+#: readelf.c:4899
+#, c-format
+msgid ""
+"\n"
+"There are no sections to group in this file.\n"
+msgstr ""
+"\n"
+"ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ã‚°ãƒ«ãƒ¼ãƒ—化ã™ã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãŒã‚ã‚Šã¾ã›ã‚“。\n"
+
+#: readelf.c:4906
+msgid "Section headers are not available!\n"
+msgstr "セクションヘッダãŒåˆ©ç”¨ã§ãã¾ã›ã‚“!\n"
+
+#: readelf.c:4930
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚°ãƒ«ãƒ¼ãƒ—ãŒã‚ã‚Šã¾ã›ã‚“。\n"
+
+#: readelf.c:4967
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "グループセクション `%s' 内ã§èª¤ã£ãŸ sh_link ã§ã™\n"
+
+#: readelf.c:4981
+#, c-format
+msgid "Corrupt header in group section `%s'\n"
+msgstr "グループセクション `%s' 内ã§ç ´æã—ãŸãƒ˜ãƒƒãƒ€ã§ã™\n"
+
+#: readelf.c:4992
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "グループセクション `%s' 内ã§èª¤ã£ãŸ sh_info ã§ã™\n"
+
+#: readelf.c:5031
+msgid "section data"
+msgstr "セクションデータ"
+
+#: readelf.c:5040
+#, c-format
+msgid ""
+"\n"
+"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
+msgstr ""
+"\n"
+"%s グループセクション [%5u] `%s' [%s] 㯠%u 個ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’å«ã¿ã¾ã™:\n"
+
+#: readelf.c:5043
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [索引] åå‰\n"
+
+#: readelf.c:5057
+#, c-format
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "グループセクション [%2$5u] ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$5u] > 最大セクション [%3$5u] ã§ã™\n"
+
+#: readelf.c:5066
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "グループセクション [%2$5u] ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ [%1$5u] ã¯æ—¢ã«ã‚°ãƒ«ãƒ¼ãƒ—セクション [%3$5u] ã«å±žã—ã¦ã„ã¾ã™\n"
+
+#: readelf.c:5079
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr "グループセクション [%5u] ã«ã‚»ã‚¯ã‚·ãƒ§ãƒ³ 0 ãŒã‚ã‚Šã¾ã™\n"
+
+#: readelf.c:5146
+msgid "dynamic section image fixups"
+msgstr "動的セクションイメージ修正"
+
+#: readelf.c:5158
+#, c-format
+msgid ""
+"\n"
+"Image fixups for needed library #%d: %s - ident: %lx\n"
+msgstr ""
+
+#: readelf.c:5161
+#, c-format
+msgid "Seg Offset Type SymVec DataType\n"
+msgstr ""
+
+#: readelf.c:5193
+msgid "dynamic section image relas"
+msgstr ""
+
+#: readelf.c:5197
+#, c-format
+msgid ""
+"\n"
+"Image relocs\n"
+msgstr ""
+"\n"
+"イメージå†é…ç½®\n"
+
+#: readelf.c:5199
+#, c-format
+msgid "Seg Offset Type Addend Seg Sym Off\n"
+msgstr "Seg Offset åž‹ Addend Seg Sym Off\n"
+
+#: readelf.c:5254
+msgid "dynamic string section"
+msgstr "動的文字列セクション"
+
+#: readelf.c:5355
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"オフセット0x%2$lx ã«ã‚ã‚‹ '%1$s' å†é…置セクション㯠%3$ld ãƒã‚¤ãƒˆã§æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:5370
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯å‹•çš„å†é…ç½®ãŒã‚ã‚Šã¾ã›ã‚“。\n"
+
+#: readelf.c:5394
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"å†é…置セクション "
+
+#: readelf.c:5399 readelf.c:5815 readelf.c:5830 readelf.c:6167
+#, c-format
+msgid "'%s'"
+msgstr "'%s'"
+
+#: readelf.c:5401 readelf.c:5832 readelf.c:6169
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " (オフセット 0x%lx) 㯠%lu 個ã®ã‚¨ãƒ³ãƒˆãƒªã‹ã‚‰æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:5452
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯å†é…ç½®ã•ã‚Œã‚‹ã‚‚ã®ãŒã‚ã‚Šã¾ã›ã‚“。\n"
+
+#: readelf.c:5590
+#, c-format
+msgid "\tUnknown version.\n"
+msgstr "\tä¸æ˜Žãªãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã™ã€‚\n"
+
+#: readelf.c:5643 readelf.c:6016
+msgid "unwind table"
+msgstr "å·»ã戻㗠(unwind) 表"
+
+#: readelf.c:5685 readelf.c:6098 readelf.c:6358
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "所期ã—ãªã„å†é…置型 %s をスキップã—ã¦ã„ã¾ã™\n"
+
+#: readelf.c:5747 readelf.c:6160 readelf.c:7044 readelf.c:7091
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ã‚¹ã‚¿ãƒƒã‚¯å·»ã戻㗠(unwind) セクションãŒã‚ã‚Šã¾ã›ã‚“。\n"
+
+#: readelf.c:5810
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+
+#: readelf.c:5823
+msgid "unwind info"
+msgstr "å·»ã戻㗠(unwind) 情報"
+
+#: readelf.c:5825 readelf.c:6166
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"å·»ã戻㗠(unwind) セクション "
+
+#: readelf.c:6275
+msgid "unwind data"
+msgstr "å·»ã戻㗠(unwind) データ"
+
+#: readelf.c:6329
+#, c-format
+msgid "Skipping unexpected relocation at offset 0x%lx\n"
+msgstr "オフセット 0x%lx ã«ã‚る予期ã—ãªã„å†é…置をスキップã—ã¦ã„ã¾ã™\n"
+
+#: readelf.c:6433
+#, c-format
+msgid "[Truncated opcode]\n"
+msgstr "[切り詰ã‚られãŸã‚ªãƒšã‚³ãƒ¼ãƒ‰]\n"
+
+#: readelf.c:6477 readelf.c:6677
+#, c-format
+msgid "Refuse to unwind"
+msgstr "å·»ã戻㗠(unwind) æ‹’å¦"
+
+#: readelf.c:6500
+#, c-format
+msgid " [Reserved]"
+msgstr " [予約]"
+
+#: readelf.c:6528
+#, c-format
+msgid " finish"
+msgstr " 終了"
+
+#: readelf.c:6533 readelf.c:6619
+#, c-format
+msgid "[Spare]"
+msgstr ""
+
+#: readelf.c:6640 readelf.c:6774
+#, c-format
+msgid " [unsupported opcode]"
+msgstr " [サãƒãƒ¼ãƒˆã•ã‚Œãªã„オペコード]"
+
+#: readelf.c:6666
+#, c-format
+msgid " 0x%02x "
+msgstr " 0x%02x "
+
+#: readelf.c:6671
+#, c-format
+msgid " sp = sp + %d"
+msgstr " sp = sp + %d"
+
+#: readelf.c:6724
+#, c-format
+msgid "pop frame {"
+msgstr ""
+
+#: readelf.c:6735
+msgid "[pad]"
+msgstr ""
+
+#: readelf.c:6763
+#, c-format
+msgid "sp = sp + %ld"
+msgstr "sp = sp + %ld"
+
+#: readelf.c:6821
+#, c-format
+msgid " Personality routine: "
+msgstr ""
+
+#: readelf.c:6839
+#, c-format
+msgid " [Truncated data]\n"
+msgstr " [切り詰ã‚られãŸãƒ‡ãƒ¼ã‚¿]\n"
+
+#: readelf.c:6854
+#, c-format
+msgid " Compact model %d\n"
+msgstr ""
+
+#: readelf.c:6890
+#, c-format
+msgid " Restore stack from frame pointer\n"
+msgstr ""
+
+#: readelf.c:6892
+#, c-format
+msgid " Stack increment %d\n"
+msgstr ""
+
+#: readelf.c:6893
+#, c-format
+msgid " Registers restored: "
+msgstr ""
+
+#: readelf.c:6898
+#, c-format
+msgid " Return register: %s\n"
+msgstr " 戻りレジスタ: %s\n"
+
+#: readelf.c:6981
+#, c-format
+msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
+msgstr "0x%lx ã‚’å«ã‚€ .ARM.extab セクションをé…ç½®ã§ãã¾ã›ã‚“\n"
+
+#: readelf.c:7050
+#, c-format
+msgid ""
+"\n"
+"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+"\n"
+"オフセット 0x%2$lx ã«ã‚ã‚‹å·»ã戻ã—表索引 '%1$s' 㯠%3$lu 個ã®ã‚¨ãƒ³ãƒˆãƒªã§æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:7102
+#, c-format
+msgid "NONE\n"
+msgstr "NONE\n"
+
+#: readelf.c:7128
+#, c-format
+msgid "Interface Version: %s\n"
+msgstr "インターフェースãƒãƒ¼ã‚¸ãƒ§ãƒ³: %s\n"
+
+#: readelf.c:7130
+#, c-format
+msgid "<corrupt: %ld>\n"
+msgstr "<ç ´æ: %ld>\n"
+
+#: readelf.c:7143
+#, c-format
+msgid "Time Stamp: %s\n"
+msgstr "タイムスタンプ: %s\n"
+
+#: readelf.c:7320 readelf.c:7366
+msgid "dynamic section"
+msgstr "動的セクション"
+
+#: readelf.c:7444
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯å‹•çš„セクションãŒã‚ã‚Šã¾ã›ã‚“。\n"
+
+#: readelf.c:7482
+msgid "Unable to seek to end of file!\n"
+msgstr "ファイル終端 (EOF) ã¾ã§æŽ¢æŸ» (seek) ã§ãã¾ã›ã‚“!\n"
+
+#: readelf.c:7495
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "ロードã™ã¹ãシンボルã®æ•°ã‚’決定ã§ãã¾ã›ã‚“\n"
+
+#: readelf.c:7530
+msgid "Unable to seek to end of file\n"
+msgstr "ファイル末尾㫠seek ã§ãã¾ã›ã‚“\n"
+
+#: readelf.c:7537
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "動的文字列テーブルã®é•·ã•ã‚’決定ã§ãã¾ã›ã‚“\n"
+
+#: readelf.c:7543
+msgid "dynamic string table"
+msgstr "動的文字列表"
+
+#: readelf.c:7580
+msgid "symbol information"
+msgstr "シンボル情報"
+
+#: readelf.c:7605
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"オフセット 0x%lx ã«ã‚る動的セクション㯠%u 個ã®ã‚¨ãƒ³ãƒˆãƒªã‹ã‚‰æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:7608
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " ã‚¿ã‚° タイプ åå‰/値\n"
+
+#: readelf.c:7644
+#, c-format
+msgid "Auxiliary library"
+msgstr "補助ライブラリ"
+
+#: readelf.c:7648
+#, c-format
+msgid "Filter library"
+msgstr "フィルタライブラリ"
+
+#: readelf.c:7652
+#, c-format
+msgid "Configuration file"
+msgstr "設定ファイル"
+
+#: readelf.c:7656
+#, c-format
+msgid "Dependency audit library"
+msgstr "ä¾å­˜é–¢ä¿‚監査ライブラリ"
+
+#: readelf.c:7660
+#, c-format
+msgid "Audit library"
+msgstr "監査ライブラリ"
+
+#: readelf.c:7678 readelf.c:7706 readelf.c:7734
+#, c-format
+msgid "Flags:"
+msgstr "フラグ:"
+
+#: readelf.c:7681 readelf.c:7709 readelf.c:7736
+#, c-format
+msgid " None\n"
+msgstr " ç„¡ã—\n"
+
+#: readelf.c:7857
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "共有ライブラリ: [%s]"
+
+#: readelf.c:7860
+#, c-format
+msgid " program interpreter"
+msgstr " プログラムインタプリタ"
+
+#: readelf.c:7864
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "ライブラリ㮠soname: [%s]"
+
+#: readelf.c:7868
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "ライブラリ㮠rpath: [%s]"
+
+#: readelf.c:7872
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "ライブラリ㮠runpath: [%s]"
+
+#: readelf.c:7905
+#, c-format
+msgid " (bytes)\n"
+msgstr " (ãƒã‚¤ãƒˆ)\n"
+
+#: readelf.c:7935
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "ä¸è¦ãªã‚ªãƒ–ジェクト: [%s]\n"
+
+#: readelf.c:8035
+msgid "| <unknown>"
+msgstr "| <ä¸æ˜Ž>"
+
+#: readelf.c:8068
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³å®šç¾©ã‚»ã‚¯ã‚·ãƒ§ãƒ³ '%s' 㯠%u 個ã®ã‚¨ãƒ³ãƒˆãƒªã‹ã‚‰æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:8071
+#, c-format
+msgid " Addr: 0x"
+msgstr " アドレス: 0x"
+
+#: readelf.c:8073 readelf.c:8191 readelf.c:8332
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr " オフセット: %#08lx リンク: %u (%s)\n"
+
+#: readelf.c:8081
+msgid "version definition section"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³å®šç¾©ã‚»ã‚¯ã‚·ãƒ§ãƒ³"
+
+#: readelf.c:8114
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: Rev: %d フラグ: %s"
+
+#: readelf.c:8117
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " 索引: %d Cnt: %d "
+
+#: readelf.c:8133
+#, c-format
+msgid "Name: %s\n"
+msgstr "åå‰: %s\n"
+
+#: readelf.c:8135
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "åå‰ç´¢å¼•: %ld\n"
+
+#: readelf.c:8157
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: 親 %d: %s\n"
+
+#: readelf.c:8160
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: 親 %d, åå‰ç´¢å¼•: %ld\n"
+
+#: readelf.c:8165
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr " セクション終了後ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³å®šç¾©è£œåŠ©\n"
+
+#: readelf.c:8171
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr " セクション終了後ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³å®šç¾©\n"
+
+#: readelf.c:8186
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"å¿…è¦ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚»ã‚¯ã‚·ãƒ§ãƒ³ '%s' 㯠%u 個ã®ã‚¨ãƒ³ãƒˆãƒªã‹ã‚‰æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:8189
+#, c-format
+msgid " Addr: 0x"
+msgstr " アドレス: 0x"
+
+#: readelf.c:8200
+msgid "version need section"
+msgstr "å¿…è¦ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚»ã‚¯ã‚·ãƒ§ãƒ³"
+
+#: readelf.c:8228
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %d"
+
+#: readelf.c:8231
+#, c-format
+msgid " File: %s"
+msgstr " ファイル: %s"
+
+#: readelf.c:8233
+#, c-format
+msgid " File: %lx"
+msgstr " ファイル: %lx"
+
+#: readelf.c:8235
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " 個数: %d\n"
+
+#: readelf.c:8260
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: åå‰: %s"
+
+#: readelf.c:8263
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: åå‰ç´¢å¼•: %lx"
+
+#: readelf.c:8266
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " フラグ: %s ãƒãƒ¼ã‚¸ãƒ§ãƒ³: %d\n"
+
+#: readelf.c:8278
+#, c-format
+msgid " Version need aux past end of section\n"
+msgstr " セクション終了後ã®å¿…è¦ãƒãƒ¼ã‚¸ãƒ§ãƒ³è£œåŠ©\n"
+
+#: readelf.c:8283
+#, c-format
+msgid " Version need past end of section\n"
+msgstr " セクション終了後ã®å¿…è¦ãƒãƒ¼ã‚¸ãƒ§ãƒ³\n"
+
+#: readelf.c:8320
+msgid "version string table"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æ–‡å­—列表"
+
+#: readelf.c:8327
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚·ãƒ³ãƒœãƒ«ã‚»ã‚¯ã‚·ãƒ§ãƒ³ '%s' 㯠%d 個ã®ã‚¨ãƒ³ãƒˆãƒªã‹ã‚‰æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:8330
+#, c-format
+msgid " Addr: "
+msgstr " アドレス: "
+
+#: readelf.c:8341
+msgid "version symbol data"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚·ãƒ³ãƒœãƒ«ãƒ‡ãƒ¼ã‚¿"
+
+#: readelf.c:8369
+msgid " 0 (*local*) "
+msgstr " 0 (*局 所*) "
+
+#: readelf.c:8373
+msgid " 1 (*global*) "
+msgstr " 1 (*大 域*) "
+
+#: readelf.c:8386
+msgid "invalid index into symbol array\n"
+msgstr "シンボルé…列ã«ç„¡åŠ¹ãªæ·»ãˆå­—ã§ã™\n"
+
+#: readelf.c:8420 readelf.c:9199
+msgid "version need"
+msgstr "å¿…è¦ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
+
+#: readelf.c:8430
+msgid "version need aux (2)"
+msgstr "å¿…è¦ãƒãƒ¼ã‚¸ãƒ§ãƒ³è£œåŠ© (2)"
+
+#: readelf.c:8445 readelf.c:8500
+msgid "*invalid*"
+msgstr "*無効*"
+
+#: readelf.c:8475 readelf.c:9264
+msgid "version def"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³å®šç¾©"
+
+#: readelf.c:8495 readelf.c:9279
+msgid "version def aux"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³å®šç¾©è£œåŠ©"
+
+#: readelf.c:8529
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n"
+
+#: readelf.c:8728
+#, c-format
+msgid "<other>: %x"
+msgstr "<ãã®ä»–>: %x"
+
+#: readelf.c:8789
+msgid "Unable to read in dynamic data\n"
+msgstr "動的データを読込ã‚ã¾ã›ã‚“\n"
+
+#: readelf.c:8839
+#, c-format
+msgid " <corrupt: %14ld>"
+msgstr " <ç ´æ: %14ld>"
+
+#: readelf.c:8882 readelf.c:8934 readelf.c:8958 readelf.c:8988 readelf.c:9012
+msgid "Unable to seek to start of dynamic information\n"
+msgstr "動的情報ã®é–‹å§‹ä½ç½®ã¾ã§æŽ¢æŸ» (seek) ã§ãã¾ã›ã‚“\n"
+
+#: readelf.c:8888 readelf.c:8940
+msgid "Failed to read in number of buckets\n"
+msgstr "ãƒã‚±ãƒƒãƒˆæ•°ã®èª­è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: readelf.c:8894
+msgid "Failed to read in number of chains\n"
+msgstr "ãƒã‚§ã‚¤ãƒ³æ•°ã®èª­è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: readelf.c:8996
+msgid "Failed to determine last chain length\n"
+msgstr "最後ã®ãƒã‚§ã‚¤ãƒ³é•·ã®æ±ºå®šã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: readelf.c:9040
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"イメージã®ã‚·ãƒ³ãƒœãƒ«è¡¨:\n"
+
+#: readelf.c:9042 readelf.c:9060
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " bucketæ•°: 値 サイズ タイプ Bind Vis 索引å\n"
+
+#: readelf.c:9044 readelf.c:9062
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " bucketæ•°: 値 サイズ タイプ Bind Vis 索引å\n"
+
+#: readelf.c:9058
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+"\n"
+"イメージ㮠`.gnu.hash' ã®ã‚·ãƒ³ãƒœãƒ«è¡¨:\n"
+
+#: readelf.c:9101
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' has a sh_entsize of zero!\n"
+msgstr ""
+"\n"
+"シンボル表 '%s' ã® sh_entsize ㌠0 ã§ã™!\n"
+
+#: readelf.c:9106
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"シンボルテーブル '%s' 㯠%lu 個ã®ã‚¨ãƒ³ãƒˆãƒªã‹ã‚‰æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:9111
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " 番å·: 値 サイズ タイプ Bind Vis 索引å\n"
+
+#: readelf.c:9113
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " 番å·: 値 サイズ タイプ Bind Vis 索引å\n"
+
+#: readelf.c:9170
+msgid "version data"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ‡ãƒ¼ã‚¿"
+
+#: readelf.c:9212
+msgid "version need aux (3)"
+msgstr "å¿…è¦ãƒãƒ¼ã‚¸ãƒ§ãƒ³è£œåŠ© (3)"
+
+#: readelf.c:9239
+msgid "bad dynamic symbol\n"
+msgstr "誤ã£ãŸå‹•çš„シンボル\n"
+
+#: readelf.c:9303
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"動的シンボル情報ã¯è¡¨ç¤ºç”¨ã‚·ãƒ³ãƒœãƒ«ã¨ã—ã¦ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。\n"
+
+#: readelf.c:9315
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"ãƒã‚±ãƒƒãƒˆãƒªã‚¹ãƒˆé•·ã®åº¦æ•°åˆ†å¸ƒ (å…¨ %lu 個ã®ãƒã‚±ãƒƒãƒˆ):\n"
+
+#: readelf.c:9317 readelf.c:9387
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " 長㕠個数 å æœ‰çŽ‡ 範囲\n"
+
+#: readelf.c:9385
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"`.gnu.hash' ãƒã‚±ãƒƒãƒˆãƒªã‚¹ãƒˆé•·ã®åº¦æ•°åˆ†å¸ƒ (å…¨ %lu 個ã®ãƒã‚±ãƒƒãƒˆ):\n"
+
+#: readelf.c:9451
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"オフセット 0x%lx ã®å‹•çš„情報セグメント㯠%d 個ã®ã‚¨ãƒ³ãƒˆãƒªã‹ã‚‰æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:9454
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr "番å·: åå‰ å¢ƒç•Œã¾ã§ フラグ\n"
+
+#: readelf.c:9463
+#, c-format
+msgid "<corrupt: %19ld>"
+msgstr "<ç ´æ: %19ld>"
+
+#: readelf.c:9545
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr "SYM_DIFF å†é…置後ã«å‡¦ç†ã•ã‚Œã¦ã„ãªã„ MN10300 å†é…置型ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ"
+
+#: readelf.c:9705
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr "ãƒžã‚·ãƒ³ç•ªå· %d ã® DWARF セクション内ã§ä½¿ç”¨ã•ã‚Œã‚‹ 32ビットå†é…置型ã«é–¢ã™ã‚‹çŸ¥è­˜ãŒã‚ã‚Šã¾ã›ã‚“。\n"
+
+#: readelf.c:10009
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr "セクション %2$s ã«ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„å†é…置型 %1$d ã‚’é©ç”¨ã§ãã¾ã›ã‚“\n"
+
+#: readelf.c:10017
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "セクション %2$s 内ã«ã‚る無効ãªå†é…置オフセット 0x%1$lx をスキップã—ã¦ã„ã¾ã™\n"
+
+#: readelf.c:10041
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr "セクション %3$s ã® %2$ld 番目ã®å†é…ç½®ã«ã‚る予期ã—ãªã„シンボル型 %1$s をスキップã—ã¦ã„ã¾ã™\n"
+
+#: readelf.c:10087
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"セクション %s ã®ã‚¢ã‚»ãƒ³ãƒ–リダンプ\n"
+
+#: readelf.c:10108
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"セクション '%s' ã¯ãƒ€ãƒ³ãƒ—ã§ãるデータをæŒã£ã¦ã„ã¾ã›ã‚“。\n"
+
+#: readelf.c:10114
+msgid "section contents"
+msgstr "セクションã®å†…容"
+
+#: readelf.c:10133
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+"\n"
+"セクション '%s' ã®æ–‡å­—列ダンプ:\n"
+
+#: readelf.c:10151
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " 備考: ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã¯å†é…ç½®ãŒã‚ã‚Šã¾ã™ãŒã€ã“ã®ãƒ€ãƒ³ãƒ—ã«ã¯é©ç”¨ã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
+
+#: readelf.c:10182
+#, c-format
+msgid " No strings found in this section."
+msgstr " ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³å†…ã§ã¯æ–‡å­—列ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚"
+
+#: readelf.c:10204
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"セクション '%s' ã® å六進数ダンプ:\n"
+
+#: readelf.c:10228
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " 備考: ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã«ã¯å†é…ç½®ãŒã‚ã‚Šã¾ã™ãŒã€ã“ã®ãƒ€ãƒ³ãƒ—ã«ã¯é©ç”¨ã•ã‚Œã¦ã„ã¾ã›ã‚“。\n"
+
+#: readelf.c:10362
+#, c-format
+msgid "%s section data"
+msgstr "%s セクションデータ"
+
+#: readelf.c:10427
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+"\n"
+"セクション '%s' ã¯ãƒ‡ãƒãƒƒã‚°ãƒ‡ãƒ¼ã‚¿ã‚’æŒã£ã¦ã„ã¾ã›ã‚“。\n"
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:10436
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr "セクション '%s' 㯠NOBITS åž‹ã§ã™ - 内容ã¯ä¿¡é ¼ã§ãã¾ã›ã‚“\n"
+
+#: readelf.c:10472
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "èªè­˜ã§ããªã„ã§ãƒãƒƒã‚°ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã™: %s\n"
+
+#: readelf.c:10500
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr "セクション '%s' ã¯å­˜åœ¨ã—ãªã„ãŸã‚ダンプã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ!\n"
+
+#: readelf.c:10541
+#, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "セクション %d ã¯å­˜åœ¨ã—ãªã„ãŸã‚ダンプã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ!\n"
+
+#: readelf.c:10719 readelf.c:10733 readelf.c:10752 readelf.c:11070
+#, c-format
+msgid "None\n"
+msgstr "ãªã—\n"
+
+#: readelf.c:10720
+#, c-format
+msgid "Application\n"
+msgstr "アプリケーション\n"
+
+#: readelf.c:10721
+#, c-format
+msgid "Realtime\n"
+msgstr "リアルタイム\n"
+
+#: readelf.c:10722
+#, c-format
+msgid "Microcontroller\n"
+msgstr "マイクロコントローラ\n"
+
+#: readelf.c:10723
+#, c-format
+msgid "Application or Realtime\n"
+msgstr "アプリケーションã¾ãŸã¯ãƒªã‚¢ãƒ«ã‚¿ã‚¤ãƒ \n"
+
+#: readelf.c:10734 readelf.c:10754 readelf.c:11124 readelf.c:11142
+#: readelf.c:11217 readelf.c:11238
+#, c-format
+msgid "8-byte\n"
+msgstr "8-ãƒã‚¤ãƒˆ\n"
+
+#: readelf.c:10735 readelf.c:11220 readelf.c:11241
+#, c-format
+msgid "4-byte\n"
+msgstr "4-ãƒã‚¤ãƒˆ\n"
+
+#: readelf.c:10739 readelf.c:10758
+#, c-format
+msgid "8-byte and up to %d-byte extended\n"
+msgstr "8-ãƒã‚¤ãƒˆãŠã‚ˆã³ %d-ãƒã‚¤ãƒˆã¾ã§ã®æ‹¡å¼µ\n"
+
+#: readelf.c:10753
+#, c-format
+msgid "8-byte, except leaf SP\n"
+msgstr "末端㮠SP を除ã 8-ãƒã‚¤ãƒˆ\n"
+
+#: readelf.c:10769 readelf.c:10859 readelf.c:11256
+#, c-format
+msgid "flag = %d, vendor = %s\n"
+msgstr "フラグ = %d, ベンダー = %s\n"
+
+#: readelf.c:10775
+#, c-format
+msgid "True\n"
+msgstr ""
+
+#: readelf.c:10904 readelf.c:11008
+#, c-format
+msgid "Hard or soft float\n"
+msgstr "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã¾ãŸã¯ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢æµ®å‹•å°æ•°\n"
+
+#: readelf.c:10907
+#, c-format
+msgid "Hard float\n"
+msgstr "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æµ®å‹•å°æ•°\n"
+
+#: readelf.c:10910 readelf.c:11017
+#, c-format
+msgid "Soft float\n"
+msgstr "ソフトウェア浮動å°æ•°\n"
+
+#: readelf.c:10913
+#, c-format
+msgid "Single-precision hard float\n"
+msgstr "å˜ç²¾åº¦ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æµ®å‹•å°æ•°\n"
+
+#: readelf.c:10930 readelf.c:10956
+#, c-format
+msgid "Any\n"
+msgstr ""
+
+#: readelf.c:10933
+#, c-format
+msgid "Generic\n"
+msgstr ""
+
+#: readelf.c:10962
+#, c-format
+msgid "Memory\n"
+msgstr "メモリ\n"
+
+#: readelf.c:11011
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æµ®å‹•å°æ•° (å€ç²¾åº¦)\n"
+
+#: readelf.c:11014
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æµ®å‹•å°æ•° (å˜ç²¾åº¦)\n"
+
+#: readelf.c:11020
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU)\n"
+msgstr "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢æµ®å‹•å°æ•° (MIPS32r2 64-bit FPU)\n"
+
+#: readelf.c:11103
+#, c-format
+msgid "Not used\n"
+msgstr "未使用\n"
+
+#: readelf.c:11106
+#, c-format
+msgid "2 bytes\n"
+msgstr "2 ãƒã‚¤ãƒˆ\n"
+
+#: readelf.c:11109
+#, c-format
+msgid "4 bytes\n"
+msgstr "4 ãƒã‚¤ãƒˆ\n"
+
+#: readelf.c:11127 readelf.c:11145 readelf.c:11223 readelf.c:11244
+#, c-format
+msgid "16-byte\n"
+msgstr "16-ãƒã‚¤ãƒˆ\n"
+
+#: readelf.c:11160
+#, c-format
+msgid "DSBT addressing not used\n"
+msgstr "DSBT アドレスãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã›ã‚“\n"
+
+#: readelf.c:11163
+#, c-format
+msgid "DSBT addressing used\n"
+msgstr "DSBT アドレスãŒä½¿ç”¨ã•ã‚Œã¦ã„ã¾ã™\n"
+
+#: readelf.c:11178
+#, c-format
+msgid "Data addressing position-dependent\n"
+msgstr "データアドレスãŒä½ç½®ä¾å­˜ã§ã™\n"
+
+#: readelf.c:11181
+#, c-format
+msgid "Data addressing position-independent, GOT near DP\n"
+msgstr "データアドレスãŒä½ç½®éžä¾å­˜ã§ã€ GOT ㌠DP ã®è¿‘ãã«ã‚ã‚Šã¾ã™\n"
+
+#: readelf.c:11184
+#, c-format
+msgid "Data addressing position-independent, GOT far from DP\n"
+msgstr "データアドレスãŒä½ç½®éžä¾å­˜ã§ã€GOT ㌠DP ã®é ãã«ã‚ã‚Šã¾ã™\n"
+
+#: readelf.c:11199
+#, c-format
+msgid "Code addressing position-dependent\n"
+msgstr "コードアドレスãŒä½ç½®ä¾å­˜ã§ã™\n"
+
+#: readelf.c:11202
+#, c-format
+msgid "Code addressing position-independent\n"
+msgstr "コードアドレスãŒä½ç½®éžä¾å­˜ã§ã™\n"
+
+#: readelf.c:11308
+msgid "attributes"
+msgstr "属性"
+
+#: readelf.c:11329
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "エラー: 誤ã£ãŸã‚»ã‚¯ã‚·ãƒ§ãƒ³é•· (%d > %d)\n"
+
+#: readelf.c:11335
+#, c-format
+msgid "Attribute Section: %s\n"
+msgstr "属性セクション: %s\n"
+
+#: readelf.c:11360
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "エラー: 誤ã£ãŸå­ã‚»ã‚¯ã‚·ãƒ§ãƒ³é•· (%d > %d)\n"
+
+#: readelf.c:11372
+#, c-format
+msgid "File Attributes\n"
+msgstr "ファイル属性\n"
+
+#: readelf.c:11375
+#, c-format
+msgid "Section Attributes:"
+msgstr "セクション属性:"
+
+#: readelf.c:11378
+#, c-format
+msgid "Symbol Attributes:"
+msgstr "シンボル属性:"
+
+#: readelf.c:11393
+#, c-format
+msgid "Unknown tag: %d\n"
+msgstr "ä¸æ˜Žãªã‚¿ã‚°: %d\n"
+
+#. ??? Do something sensible, like dump hex.
+#: readelf.c:11412
+#, c-format
+msgid " Unknown section contexts\n"
+msgstr " ä¸æ˜Žãªã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆ\n"
+
+#: readelf.c:11419
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "ä¸æ˜Žãªå½¢å¼ '%c'\n"
+
+#: readelf.c:11463 readelf.c:11485
+msgid "<unknown>"
+msgstr "<ä¸æ˜Ž>"
+
+#: readelf.c:11580 readelf.c:12102
+msgid "liblist"
+msgstr "ライブラリリスト"
+
+#: readelf.c:11583
+#, c-format
+msgid ""
+"\n"
+"Section '.liblist' contains %lu entries:\n"
+msgstr ""
+"\n"
+"セクション '.liblist' 㯠%lu 個ã®ã‚¨ãƒ³ãƒˆãƒªã§æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:11585
+msgid " Library Time Stamp Checksum Version Flags\n"
+msgstr " ライブラリ タイムスタンプ Checksum ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ãƒ©ã‚°\n"
+
+#: readelf.c:11611
+#, c-format
+msgid "<corrupt: %9ld>"
+msgstr "<ç ´æ: %9ld>"
+
+#: readelf.c:11616
+msgid " NONE"
+msgstr ""
+
+#: readelf.c:11667
+msgid "options"
+msgstr "オプション"
+
+#: readelf.c:11698
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"セクション '%s' 㯠%d 個ã®ã‚¨ãƒ³ãƒˆãƒªã§æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:11859
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr "動的シンボルテーブルãŒç„¡ã„競åˆãƒªã‚¹ãƒˆãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ\n"
+
+#: readelf.c:11876 readelf.c:11891
+msgid "conflict"
+msgstr "競åˆ"
+
+#: readelf.c:11901
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"セクション '.conflict' 㯠%lu 個ã®ã‚¨ãƒ³ãƒˆãƒªã§æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:11903
+msgid " Num: Index Value Name"
+msgstr " 番å·: 索引 値 åå‰"
+
+#: readelf.c:11915 readelf.c:11995 readelf.c:12063
+#, c-format
+msgid "<corrupt: %14ld>"
+msgstr "<ç ´æ: %14ld>"
+
+#: readelf.c:11936
+msgid "GOT"
+msgstr "GOT"
+
+#: readelf.c:11937
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+"\n"
+"主 GOT:\n"
+
+#: readelf.c:11938
+#, c-format
+msgid " Canonical gp value: "
+msgstr " 正準 GP 値: "
+
+#: readelf.c:11942 readelf.c:12034
+#, c-format
+msgid " Reserved entries:\n"
+msgstr "予約ã•ã‚ŒãŸã‚¨ãƒ³ãƒˆãƒª:\n"
+
+#: readelf.c:11943
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr ""
+
+#: readelf.c:11944 readelf.c:11961 readelf.c:11977 readelf.c:12036
+#: readelf.c:12045
+msgid "Address"
+msgstr "アドレス"
+
+#: readelf.c:11944 readelf.c:11961 readelf.c:11977
+msgid "Access"
+msgstr ""
+
+#: readelf.c:11945 readelf.c:11962 readelf.c:11978 readelf.c:12036
+#: readelf.c:12046
+msgid "Initial"
+msgstr ""
+
+#: readelf.c:11947
+#, c-format
+msgid " Lazy resolver\n"
+msgstr ""
+
+#: readelf.c:11953
+#, c-format
+msgid " Module pointer (GNU extension)\n"
+msgstr " モジュールãƒã‚¤ãƒ³ã‚¿ (GNU æ‹¡å¼µ)\n"
+
+#: readelf.c:11959
+#, c-format
+msgid " Local entries:\n"
+msgstr "局所エントリ:\n"
+
+#: readelf.c:11975
+#, c-format
+msgid " Global entries:\n"
+msgstr "大域エントリ:\n"
+
+#: readelf.c:11979 readelf.c:12047
+msgid "Sym.Val."
+msgstr "シンボル値"
+
+#: readelf.c:11979 readelf.c:12047
+msgid "Type"
+msgstr "åž‹"
+
+#: readelf.c:11979 readelf.c:12047
+msgid "Ndx"
+msgstr ""
+
+#: readelf.c:11979 readelf.c:12047
+msgid "Name"
+msgstr "åå‰"
+
+#: readelf.c:12032
+msgid "PLT GOT"
+msgstr "PLT GOT"
+
+#: readelf.c:12033
+#, c-format
+msgid ""
+"\n"
+"PLT GOT:\n"
+"\n"
+msgstr ""
+"\n"
+"PLT GOT:\n"
+"\n"
+
+#: readelf.c:12035
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr ""
+
+#: readelf.c:12038
+#, c-format
+msgid " PLT lazy resolver\n"
+msgstr ""
+
+#: readelf.c:12040
+#, c-format
+msgid " Module pointer\n"
+msgstr ""
+
+#: readelf.c:12043
+#, c-format
+msgid " Entries:\n"
+msgstr "エントリ:\n"
+
+#: readelf.c:12110
+msgid "liblist string table"
+msgstr "liblist 文字列テーブル"
+
+#: readelf.c:12121
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"ライブラリ一覧セクション '%s' 㯠%lu 個ã®ã‚¨ãƒ³ãƒˆãƒªã§æ§‹æˆã•ã‚Œã¦ã„ã¾ã™:\n"
+
+#: readelf.c:12125
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr " ライブラリ タイムスタンプ Checksum ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãƒ•ãƒ©ã‚°"
+
+#: readelf.c:12175
+msgid "NT_AUXV (auxiliary vector)"
+msgstr "NT_AUXV (補助ベクタ)"
+
+#: readelf.c:12177
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (prstatus 構造体)"
+
+#: readelf.c:12179
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (浮動å°æ•°ç‚¹ãƒ¬ã‚¸ã‚¹ã‚¿)"
+
+#: readelf.c:12181
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (prpsinfo 構造体)"
+
+#: readelf.c:12183
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (task 構造体)"
+
+#: readelf.c:12185
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (user_xfpregs 構造体)"
+
+#: readelf.c:12187
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr "NT_PPC_VMX (ppc Altivec レジスタ)"
+
+#: readelf.c:12189
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr "NT_PPC_VSX (ppc VSX レジスタ)"
+
+#: readelf.c:12191
+msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
+msgstr "NT_X86_XSTATE (x86 XSAVE 拡張状態)"
+
+#: readelf.c:12193
+msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
+msgstr ""
+
+#: readelf.c:12195
+msgid "NT_S390_TIMER (s390 timer register)"
+msgstr "NT_S390_TIMER (s390 タイマーレジスタ)"
+
+#: readelf.c:12197
+msgid "NT_S390_TODCMP (s390 TOD comparator register)"
+msgstr "NT_S390_TODCMP (s390 TOD 比較レジスタ)"
+
+#: readelf.c:12199
+msgid "NT_S390_TODPREG (s390 TOD programmable register)"
+msgstr "NT_S390_TODPREG (s390 TOD プログラムå¯èƒ½ãƒ¬ã‚¸ã‚¹ã‚¿)"
+
+#: readelf.c:12201
+msgid "NT_S390_CTRS (s390 control registers)"
+msgstr "NT_S390_CTRS (s390 制御レジスタ)"
+
+#: readelf.c:12203
+msgid "NT_S390_PREFIX (s390 prefix register)"
+msgstr ""
+
+#: readelf.c:12205
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (pstatus 構造体)"
+
+#: readelf.c:12207
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (浮動å°æ•°ç‚¹ãƒ¬ã‚¸ã‚¹ã‚¿)"
+
+#: readelf.c:12209
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (psinfo 構造体)"
+
+#: readelf.c:12211
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (lwpstatus_t 構造体)"
+
+#: readelf.c:12213
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (lwpsinfo_t 構造体)"
+
+#: readelf.c:12215
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (win32_pstatus 構造体)"
+
+#: readelf.c:12223
+msgid "NT_VERSION (version)"
+msgstr "NT_VERSION (ãƒãƒ¼ã‚¸ãƒ§ãƒ³)"
+
+#: readelf.c:12225
+msgid "NT_ARCH (architecture)"
+msgstr "NT_ARCH (アーキテクãƒãƒ£)"
+
+#: readelf.c:12230 readelf.c:12253 readelf.c:12332 readelf.c:12390
+#: readelf.c:12467
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "ä¸æ˜Žãªå‚™è€ƒã‚¿ã‚¤ãƒ—: (0x%08x)"
+
+#: readelf.c:12242
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr "NT_GNU_ABI_TAG (ABI ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚¿ã‚°)"
+
+#: readelf.c:12244
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr "NT_GNU_HWCAP (DSO ãŒé©ç”¨ã•ã‚Œã‚‹ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ HWCAP 情報)"
+
+#: readelf.c:12246
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr "NT_GNU_BUILD_ID (一æ„ãªãƒ“ルドID ビット列)"
+
+#: readelf.c:12248
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr "NT_GNU_GOLD_VERSION (gold ãƒãƒ¼ã‚¸ãƒ§ãƒ³)"
+
+#: readelf.c:12266
+#, c-format
+msgid " Build ID: "
+msgstr " ビルドID: "
+
+#: readelf.c:12269 readelf.c:12425
+#, c-format
+msgid "\n"
+msgstr "\n"
+
+#: readelf.c:12305
+#, c-format
+msgid " OS: %s, ABI: %ld.%ld.%ld\n"
+msgstr " OS: %s, ABI: %ld.%ld.%ld\n"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:12322
+msgid "NetBSD procinfo structure"
+msgstr "NetBSD procinfo 構造体"
+
+#: readelf.c:12349 readelf.c:12363
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (reg 構造体)"
+
+#: readelf.c:12351 readelf.c:12365
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (fpreg 構造体)"
+
+#: readelf.c:12371
+#, c-format
+msgid "PT_FIRSTMACH+%d"
+msgstr "PT_FIRSTMACH+%d"
+
+#: readelf.c:12384
+msgid "NT_STAPSDT (SystemTap probe descriptors)"
+msgstr ""
+
+#: readelf.c:12417
+#, c-format
+msgid " Provider: %s\n"
+msgstr " Provider: %s\n"
+
+#: readelf.c:12418
+#, c-format
+msgid " Name: %s\n"
+msgstr " åå‰: %s\n"
+
+#: readelf.c:12419
+#, c-format
+msgid " Location: "
+msgstr " ä½ç½®: "
+
+#: readelf.c:12421
+#, c-format
+msgid ", Base: "
+msgstr ", 基底: "
+
+#: readelf.c:12423
+#, c-format
+msgid ", Semaphore: "
+msgstr ", セマフォ: "
+
+#: readelf.c:12426
+#, c-format
+msgid " Arguments: %s\n"
+msgstr " 引数: %s\n"
+
+#: readelf.c:12439
+msgid "NT_VMS_MHD (module header)"
+msgstr "NT_VMS_MHD (モジュールヘッダ)"
+
+#: readelf.c:12441
+msgid "NT_VMS_LNM (language name)"
+msgstr "NT_VMS_LNM (言語å)"
+
+#: readelf.c:12443
+msgid "NT_VMS_SRC (source files)"
+msgstr "NT_VMS_SRC (ソースファイル)"
+
+#: readelf.c:12445
+msgid "NT_VMS_TITLE"
+msgstr "NT_VMS_TITLE"
+
+#: readelf.c:12447
+msgid "NT_VMS_EIDC (consistency check)"
+msgstr "NT_VMS_EIDC (一貫性検査)"
+
+#: readelf.c:12449
+msgid "NT_VMS_FPMODE (FP mode)"
+msgstr "NT_VMS_FPMODE (浮動å°æ•°ãƒ¢ãƒ¼ãƒ‰)"
+
+#: readelf.c:12451
+msgid "NT_VMS_LINKTIME"
+msgstr "NT_VMS_LINKTIME"
+
+#: readelf.c:12453
+msgid "NT_VMS_IMGNAM (image name)"
+msgstr "NT_VMS_IMGNAM (イメージå)"
+
+#: readelf.c:12455
+msgid "NT_VMS_IMGID (image id)"
+msgstr "NT_VMS_IMGID (イメージID)"
+
+#: readelf.c:12457
+msgid "NT_VMS_LINKID (link id)"
+msgstr "NT_VMS_LINKID (リンクID)"
+
+#: readelf.c:12459
+msgid "NT_VMS_IMGBID (build id)"
+msgstr "NT_VMS_IMGBID (ビルドID)"
+
+#: readelf.c:12461
+msgid "NT_VMS_GSTNAM (sym table name)"
+msgstr "NT_VMS_GSTNAM (シンボル表å)"
+
+#: readelf.c:12463
+msgid "NT_VMS_ORIG_DYN"
+msgstr "NT_VMS_ORIG_DYN"
+
+#: readelf.c:12465
+msgid "NT_VMS_PATCHTIME"
+msgstr "NT_VMS_PATCHTIME"
+
+#: readelf.c:12481
+#, c-format
+msgid " Creation date : %.17s\n"
+msgstr " 作æˆæ—¥ : %.17s\n"
+
+#: readelf.c:12482
+#, c-format
+msgid " Last patch date: %.17s\n"
+msgstr " 最終パッãƒé©ç”¨æ—¥: %.17s\n"
+
+#: readelf.c:12483
+#, c-format
+msgid " Module name : %s\n"
+msgstr " モジュールå : %s\n"
+
+#: readelf.c:12484
+#, c-format
+msgid " Module version : %s\n"
+msgstr " モジュールãƒãƒ¼ã‚¸ãƒ§ãƒ³ : %s\n"
+
+#: readelf.c:12487
+#, c-format
+msgid " Invalid size\n"
+msgstr " 無効ãªã‚µã‚¤ã‚ºã§ã™\n"
+
+#: readelf.c:12490
+#, c-format
+msgid " Language: %s\n"
+msgstr " 言語: %s\n"
+
+#: readelf.c:12494
+msgid " FP mode: 0x%016"
+msgstr " 浮動å°æ•°ãƒ¢ãƒ¼ãƒ‰: 0x%016"
+
+#: readelf.c:12498
+#, c-format
+msgid " Link time: "
+msgstr " リンク時間: "
+
+#: readelf.c:12504
+#, c-format
+msgid " Patch time: "
+msgstr " パッãƒæ™‚é–“: "
+
+#: readelf.c:12510
+#, c-format
+msgid " Major id: %u, minor id: %u\n"
+msgstr " Major id: %u, minor id: %u\n"
+
+#: readelf.c:12513
+#, c-format
+msgid " Manip date : "
+msgstr " æ“作日 : "
+
+#: readelf.c:12516
+msgid ""
+"\n"
+" Link flags : 0x%016"
+msgstr ""
+"\n"
+" リンクフラグ: 0x%016"
+
+#: readelf.c:12519
+#, c-format
+msgid " Header flags: 0x%08x\n"
+msgstr " ヘッダフラグ: 0x%08x\n"
+
+#: readelf.c:12521
+#, c-format
+msgid " Image id : %s\n"
+msgstr " イメージID : %s\n"
+
+#: readelf.c:12525
+#, c-format
+msgid " Image name: %s\n"
+msgstr " イメージå: %s\n"
+
+#: readelf.c:12528
+#, c-format
+msgid " Global symbol table name: %s\n"
+msgstr " 大域シンボル表å: %s\n"
+
+#: readelf.c:12531
+#, c-format
+msgid " Image id: %s\n"
+msgstr " イメージID: %s\n"
+
+#: readelf.c:12534
+#, c-format
+msgid " Linker id: %s\n"
+msgstr " リンカID : %s\n"
+
+#: readelf.c:12609
+msgid "notes"
+msgstr "備考"
+
+#: readelf.c:12615
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"オフセット 0x%08lx, é•·ã• 0x%08lx ã®å‚™è€ƒ:\n"
+
+#: readelf.c:12617
+#, c-format
+msgid " %-20s %10s\tDescription\n"
+msgstr " %-20s %10s\t説明\n"
+
+#: readelf.c:12617
+msgid "Owner"
+msgstr "所有者"
+
+#: readelf.c:12617
+msgid "Data size"
+msgstr "データサイズ"
+
+#: readelf.c:12655 readelf.c:12668
+#, c-format
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "core 備考ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ %lx ã«ç ´æã—ãŸå‚™è€ƒãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ\n"
+
+#: readelf.c:12657 readelf.c:12670
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " タイプ: %lx, åå‰ã®ã‚µã‚¤ã‚º: %08lx, 説明ã®ã‚µã‚¤ã‚º: %08lx\n"
+
+#: readelf.c:12766
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr "ã“ã®coreファイルã«å‚™è€ƒã‚»ã‚°ãƒ¡ãƒ³ãƒˆãŒæœ‰ã‚Šã¾ã›ã‚“。\n"
+
+#: readelf.c:12853
+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"
+msgstr ""
+"ã“ã® readelf ã®å®Ÿä½“㯠64 ビットデータ型サãƒãƒ¼ãƒˆç„¡ã—ã§æ§‹ç¯‰ã•ã‚Œã¦ãŠã‚Šã€\n"
+"64 ビット ELF ファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“。\n"
+
+#: readelf.c:12900
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s: ファイルヘッダã®èª­è¾¼ã¿ãŒå¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: readelf.c:12914
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"ファイル: %s\n"
+
+#: readelf.c:13086
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr "%s: 索引ãŒç„¡ã„ãŸã‚ã€ç´¢å¼•ã®ãƒ€ãƒ³ãƒ—ã‚’è¡Œã†ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“\n"
+
+#: readelf.c:13092
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr "書庫 %s ã®ç´¢å¼•: (%ld 個ã®ã‚¨ãƒ³ãƒˆãƒª, シンボル表ã®ã‚µã‚¤ã‚º 0x%lx ãƒã‚¤ãƒˆ)\n"
+
+#: readelf.c:13110
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr "ãƒã‚¤ãƒŠãƒª %s ã®å†…容:\n"
+
+#: readelf.c:13118
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr "%s: 索引ã®çµ‚了å‰ã«ã‚·ãƒ³ãƒœãƒ«è¡¨ã®çµ‚了ã«åˆ°é”ã—ã¾ã—ãŸ\n"
+
+#: readelf.c:13129
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr "%s: シンボル表索引ã«ã‚·ãƒ³ãƒœãƒ«ãŒæ®‹ã£ã¦ã„ã¾ã™ãŒã€ç´¢å¼•è¡¨ã«é–¢é€£ã—ãŸã‚¨ãƒ³ãƒˆãƒªãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: readelf.c:13134
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr "%s: 書庫内ã®ã‚ªãƒ–ジェクトファイルã®é–‹å§‹ä½ç½®ã¸ã®æˆ»ã‚Šæ–¹å‘ã®èµ°æŸ» (seek back) ã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: readelf.c:13217 readelf.c:13300
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr "入力ファイル '%s' ãŒèª­ã¿è¾¼ã‚ã¾ã›ã‚“。\n"
+
+#: readelf.c:13239
+#, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr "%s: 書庫ã®ãƒ¡ãƒ³ãƒã®æŽ¢æŸ» (seek) ã«å¤±æ•—ã—ã¾ã—ãŸã€‚\n"
+
+#: readelf.c:13318
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr "ファイル %s ã¯æ›¸åº«ã§ã¯ãªã„ãŸã‚索引を表示ã§ãã¾ã›ã‚“。\n"
+
+#: rename.c:124
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s: 時刻を設定ã§ãã¾ã›ã‚“: %s"
+
+#. We have to clean up here.
+#: rename.c:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr "'%s' ã®åå‰å¤‰æ›´ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ç†ç”±: %s"
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr "ファイル '%s' をコピーã§ãã¾ã›ã‚“。ç†ç”±: %s"
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: ãƒã‚¤ãƒŠãƒªãƒ‡ãƒ¼ã‚¿ãŒä¸å分ã§ã™"
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr "終端㌠null ã® unicode 文字列ã§ã™"
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr "リソース ID"
+
+#: resbin.c:208
+msgid "cursor"
+msgstr "カーソル"
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr "menu ヘッダ"
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr "メニュー ex ヘッダ"
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr "メニュー ex オフセット"
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„メニューãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d"
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr "メニューアイテムヘッダ"
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr "メニューアイテム"
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr "ダイアログヘッダ"
+
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "予期ã—ãªã„ DIALOGEX ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %d ã§ã™"
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr "ダイアログフォントãƒã‚¤ãƒ³ãƒˆã‚µã‚¤ã‚º"
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr "ダイアログ ex フォント情報"
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr "ダイアログコントロール"
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr "ダイアログ ex コントロール"
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr "ダイアログコントロール末尾"
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr "ダイアログコントロールデータ"
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr "stringtable 文字列長"
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr "stringtable 文字列"
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr "fontdir ヘッダ"
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr "fontdir"
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr "fontdir デãƒã‚¤ã‚¹å"
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr "fontdir フェイスå"
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr "アクセラレータ"
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr "グループカーソルヘッダ"
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "予期ã—ãªã„グループカーソル型 %d"
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr "グループカーソル"
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr "グループアイコンヘッダ"
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "予期ã—ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³æ–‡å­—列 %d"
+
+#: resbin.c:871
+msgid "group icon"
+msgstr "グループアイコン"
+
+#: resbin.c:935 resbin.c:1151
+msgid "unexpected version string"
+msgstr "予期ã—ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³æ–‡å­—列"
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³é•· %d ã¯ãƒªã‚½ãƒ¼ã‚¹é•· %lu ã®ä¸€è‡´ã—ã¾ã›ã‚“"
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr "予期ã—ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚¿ã‚¤ãƒ— %d"
+
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr "予期ã—ãªã„固定ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報長 %ld"
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr "固定ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±"
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "予期ã—ãªã„固定ãƒãƒ¼ã‚¸ãƒ§ãƒ³è­˜åˆ¥ç•ªå· %lu"
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "予期ã—ãªã„固定ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %lu"
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ var 情報"
+
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr "予期ã—ãªã„ stringfileinfo 値ã®é•·ã• %ld"
+
+#: resbin.c:1049
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr "予期ã—ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ stringtable 値ã®é•·ã• %ld"
+
+#: resbin.c:1083
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr "予期ã—ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³æ–‡å­—列長 %ld != %ld + %ld"
+
+#: resbin.c:1094
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr "予期ã—ãªã„変数ファイル情報値ã®é•·ã• %ld < %ld"
+
+#: resbin.c:1111
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr "予期ã—ãªã„ varfileinfo 値ã®é•·ã• %ld"
+
+#: resbin.c:1130
+msgid "version varfileinfo"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ varfileinfo"
+
+#: resbin.c:1145
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr "予期ã—ãªã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³å€¤ã®é•·ã• %ld"
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr "COFF 入力用ã®ãƒ•ã‚¡ã‚¤ãƒ«åãŒå¿…è¦ã§ã™"
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: リソースセクションãŒæœ‰ã‚Šã¾ã›ã‚“"
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: アドレスãŒå¢ƒç•Œã‚’越ãˆã¦ã„ã¾ã™"
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "ディレクトリ"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "åå‰ã¤ãディレクトリ項目"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "ディレクトリ項目å"
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "åå‰ã¤ãサブディレクトリ"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "åå‰ã¤ãリソース"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "ID ディレクトリ項目"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "ID サブディレクトリ"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "ID リソース"
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr "リソース型ãŒä¸æ˜Žã§ã™"
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr "データ項目"
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr "リソースデータ"
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr "リソースデータサイズ"
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr "COFF 出力用ã®ãƒ•ã‚¡ã‚¤ãƒ«åãŒå¿…è¦ã§ã™"
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "BFD_RELOC_RVA å†é…置タイプをå–å¾—ã§ãã¾ã›ã‚“"
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "一時ファイルを開ã‘ã¾ã›ã‚“ `%s': %s"
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "標準出力ã«ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“: `%s': %s"
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "`%s' を実行ã§ãã¾ã›ã‚“: %s"
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "プリプロセッサ出力を読込むãŸã‚ã«ä¸€æ™‚ファイル `%s' を使ã„ã¾ã™\n"
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "`%s' ã‚’ popen ã§ãã¾ã›ã‚“: %s"
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "プリプロセッサ出力を読込むãŸã‚ã« popen を使ã„ã¾ã™\n"
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "`%s' を試ã—ã¾ã—ãŸ\n"
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr "`%s' を使ã„ã¾ã™\n"
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr "å‰å‡¦ç†ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: 予期ã—ãªã„ EOF ã§ã™"
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: %lu 個ã®èª­è¾¼ã¿ã§ %lu ãŒè¿”ã£ã¦ãã¾ã—ãŸ"
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "ビットマップファイル `%s' ã®çŠ¶æ…‹å–å¾— (stat) ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "カーソルファイル `%s' ãŒã‚«ãƒ¼ã‚½ãƒ«ãƒ‡ãƒ¼ã‚¿ã‚’å«ã‚“ã§ã„ã¾ã›ã‚“"
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: %lu ã¸ã®æŽ¢æŸ» (fseek) ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr "ヘルプ ID ã«ã¯ DIALOGEX ãŒå¿…è¦ã¨ãªã‚Šã¾ã™"
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr "コントロールデータã«ã¯ DIALOGEX ãŒå¿…è¦ã¨ãªã‚Šã¾ã™"
+
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "フォントファイル `%s' ã®çŠ¶æ…‹å–å¾— (stat) ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "アイコンファイル `%s' ãŒã‚¢ã‚¤ã‚³ãƒ³ãƒ‡ãƒ¼ã‚¿ã‚’å«ã‚“ã§ã„ã¾ã›ã‚“"
+
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "ファイル `%s' ã®çŠ¶æ…‹å–å¾— (stat) ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: resrc.c:1940
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "出力用㮠`%s' ã‚’é–‹ã‘ã¾ã›ã‚“: %s"
+
+#: size.c:79
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr " ãƒã‚¤ãƒŠãƒªãƒ•ã‚¡ã‚¤ãƒ«å†…ã«ã‚るセクションã®ã‚µã‚¤ã‚ºã‚’表示ã—ã¾ã™\n"
+
+#: size.c:80
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr "入力ファイルãŒæŒ‡å®šã•ã‚Œãªã„å ´åˆã€ a.out ã§ã‚ã‚‹ã¨ä»®å®šã•ã‚Œã¾ã™\n"
+
+#: size.c:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+" オプション:\n"
+" -A|-B --format={sysv|berkeley} 出力形å¼ã‚’é¸æŠžã™ã‚‹ (デフォルト㯠%s)\n"
+" -o|-d|-x --radix={8|10|16} 数字を八進ã€å進ã¾ãŸã¯å六進数ã§è¡¨ç¤ºã™ã‚‹\n"
+" -t --totals åˆè¨ˆã‚µã‚¤ã‚ºã‚’表示ã™ã‚‹ (berkeley ã®ã¿)\n"
+" --common *COM* シンボルã®åˆè¨ˆã‚µã‚¤ã‚ºã‚’表示ã™ã‚‹\n"
+" --target=<bfdname> ãƒã‚¤ãƒŠãƒªãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ã‚’指定ã™ã‚‹\n"
+" @<file> オプションを <file> ã‹ã‚‰èª­ã¿è¾¼ã‚€\n"
+" -h --help ã“ã®æƒ…報を表示ã™ã‚‹\n"
+" -v --version プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã™ã‚‹\n"
+"\n"
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "--format ã«å¯¾ã™ã‚‹ç„¡åŠ¹ãªåŸºæ•°ã§ã™: %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "無効ãªåŸºæ•°ã§ã™: %s\n"
+
+#: srconv.c:1733
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "COFF オブジェクトファイルを SYSROFF オブジェクトファイルã«å¤‰æ›ã—ã¾ã™\n"
+
+#: srconv.c:1734
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+" オプション:\n"
+" -q --quick (廃止 - 無視ã•ã‚Œã‚‹)\n"
+" -n --noprescan Do not perform a scan to convert commons into defs\n"
+" -d --debug 何を実行ã—ã¦ã„ã‚‹ã‹ã«é–¢ã—ã¦æƒ…報を表示ã™ã‚‹\n"
+" @<file> オプションを <file> ã‹ã‚‰èª­ã¿è¾¼ã‚€\n"
+" -h --help ã“ã®æƒ…報を表示ã™ã‚‹\n"
+" -v --version プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã™ã‚‹\n"
+
+#: srconv.c:1880
+#, c-format
+msgid "unable to open output file %s"
+msgstr "出力ファイル %s ã‚’é–‹ã‘ã¾ã›ã‚“"
+
+#: stabs.c:328 stabs.c:1717
+msgid "numeric overflow"
+msgstr "数値ãŒã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "ä¸æ­£ãªã‚¹ã‚¿ãƒ–ã§ã™: %s\n"
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "警告: %s: %s\n"
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC ãŒé–¢æ•°å†…ã«ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "N_RBRAC ã®æ•°ãŒå¤šã™ãŽã¾ã™\n"
+
+#: stabs.c:727
+msgid "unknown C++ encoded name"
+msgstr "ä¸æ˜Žãª C++ エンコードåã§ã™"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1262
+msgid "unrecognized cross reference type"
+msgstr "相互å‚照型をèªè­˜ã§ãã¾ã›ã‚“"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1809
+msgid "missing index type"
+msgstr "インデックス型を欠ã„ã¦ã„ã¾ã™"
+
+#: stabs.c:2129
+msgid "unknown virtual character for baseclass"
+msgstr "基底クラス用仮想文字ãŒä¸æ˜Žã§ã™"
+
+#: stabs.c:2147
+msgid "unknown visibility character for baseclass"
+msgstr "基底クラス用å¯è¦–性文字ãŒä¸æ˜Žã§ã™"
+
+#: stabs.c:2337
+msgid "unnamed $vb type"
+msgstr "$vb åž‹ã®åå‰ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: stabs.c:2343
+msgid "unrecognized C++ abbreviation"
+msgstr "C++ çœç•¥åã‚’èªè­˜ã§ãã¾ã›ã‚“"
+
+#: stabs.c:2419
+msgid "unknown visibility character for field"
+msgstr "フィールド用ã®å¯è¦–性文字ãŒä¸æ˜Žã§ã™"
+
+#: stabs.c:2679
+msgid "const/volatile indicator missing"
+msgstr "const/volatile 指示å­ã‚’欠ã„ã¦ã„ã¾ã™"
+
+#: stabs.c:2924
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "\"%s\" ã®åå‰ã®å¤‰å½¢(mangling) ãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: stabs.c:3224
+msgid "Undefined N_EXCL"
+msgstr "N_EXCL ãŒæœªå®šç¾©ã§ã™"
+
+#: stabs.c:3304
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "ファイル番å·åž‹ %d ãŒç¯„囲外ã§ã™\n"
+
+#: stabs.c:3309
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "インデックス番å·åž‹ %d ãŒç¯„囲外ã§ã™\n"
+
+#: stabs.c:3388
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "XCOFF タイプ %d ã‚’èªè­˜ã§ãã¾ã›ã‚“\n"
+
+#: stabs.c:3680
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "誤ã£ãŸå¤‰å½¢ (mangle) å `%s' ã§ã™\n"
+
+#: stabs.c:3775
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "変形 (mangle) ã•ã‚ŒãŸæ–‡å­—列ã«å¼•æ•°ã®åž‹ãŒã‚ã‚Šã¾ã›ã‚“\n"
+
+#: stabs.c:5125
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "復元 (demangle) ã•ã‚ŒãŸåå‰ãŒé–¢æ•°ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n"
+
+#: stabs.c:5167
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "v3 引数リストã®å¾©å…ƒ (demangle) 内ã§äºˆæœŸã—ãªã„åž‹ã§ã™\n"
+
+#: stabs.c:5234
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "åå‰å¾©å…ƒ (demangle) コンãƒãƒ¼ãƒãƒ³ãƒˆ %d ã‚’èªè­˜ã§ãã¾ã›ã‚“\n"
+
+#: stabs.c:5286
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "åå‰å¾©å…ƒã—ãŸãƒ†ãƒ³ãƒ—レートã®è¡¨ç¤ºã«å¤±æ•—ã—ã¾ã—ãŸ\n"
+
+#: stabs.c:5366
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "åå‰å¾©å…ƒ (demangle) ã•ã‚ŒãŸçµ„ã¿è¾¼ã¿åž‹ã‚’å–å¾—ã§ãã¾ã›ã‚“ã§ã—ãŸ\n"
+
+#: stabs.c:5415
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "予期ã—ãªã„åå‰å¾©å…ƒ (demangle) ã•ã‚ŒãŸ varargs ã§ã™\n"
+
+#: stabs.c:5422
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "èªè­˜ã§ããªã„åå‰å¾©å…ƒ (demangle) ã•ã‚ŒãŸçµ„ã¿è¾¼ã¿åž‹ã§ã™\n"
+
+#: strings.c:186 strings.c:245
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "無効ãªæ•´æ•°å¼•æ•° %s ã§ã™"
+
+#: strings.c:248
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr "無効ãªæœ€å°æ–‡å­—列長 %d ã§ã™"
+
+#: strings.c:651
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr "[file(s)] (デフォルトã¯æ¨™æº–入力) 内ã®è¡¨ç¤ºå¯èƒ½ãªæ–‡å­—列を表示ã—ã¾ã™\n"
+
+#: strings.c:652
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+"オプション:\n"
+" -a - --all データセクションã ã‘ã§ãªãファイル全体を走査ã™ã‚‹\n"
+" -f --print-file-name å„文字列を表示ã™ã‚‹å‰ã«ãƒ•ã‚¡ã‚¤ãƒ«åを表示ã™ã‚‹\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} 文字列ã®ä½ç½®ã‚’基数 8, 10 ã¾ãŸã¯ 16 ã§è¡¨ç¤ºã™ã‚‹\n"
+" -o --radix=o ã®åˆ¥å\n"
+" -T --target=<BFDNAME> ãƒã‚¤ãƒŠãƒªãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ã‚’指定ã™ã‚‹\n"
+" -e --encoding={s,S,b,l,B,L} 文字サイズã¨ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã‚’指定ã™ã‚‹:\n"
+" s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+" @<file> <file> ã‹ã‚‰ã‚ªãƒ—ションを読ã¿è¾¼ã‚€\n"
+" -h --help ã“ã®æƒ…報を表示ã™ã‚‹\n"
+" -v -V --version プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã™ã‚‹\n"
+
+#: sysdump.c:647
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "SYSROFF オブジェクトファイルã®è§£é‡ˆã‚’人間ãŒèª­ã¿ã‚„ã™ã„å½¢å¼ã§è¡¨ç¤ºã™ã‚‹\n"
+
+#: sysdump.c:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+"オプション:\n"
+" -h --help ã“ã®æƒ…報を表示ã™ã‚‹\n"
+" -v --version プログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã™ã‚‹\n"
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "入力ファイル %s ã‚’é–‹ã‘ã¾ã›ã‚“"
+
+#: version.c:36
+#, c-format
+msgid "Copyright 2011 Free Software Foundation, Inc.\n"
+msgstr "Copyright 2011 Free Software Foundation, Inc.\n"
+
+#: version.c:37
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+
+#: windmc.c:190
+#, c-format
+msgid "can't create %s file `%s' for output.\n"
+msgstr "%s ファイル `%s' を出力用ã«ä½œæˆã§ãã¾ã›ã‚“。\n"
+
+#: windmc.c:198
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr "使用法: %s [option(s)] [input-file]\n"
+
+#: windmc.c:200
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianness.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+"オプション:\n"
+" -a --ascii_in 入力ファイルを ASCII ファイルã¨ã—ã¦èª­ã¿è¾¼ã‚€\n"
+" -A --ascii_out ãƒã‚¤ãƒŠãƒªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ ASCII ã¨ã—ã¦æ›¸ã込む\n"
+" -b --binprefix 一æ„性をä¿ã¤ãŸã‚ã« .bin ファイルåã®æŽ¥é ­è¾žã¨ã—ã¦\n"
+" .mc ã® filename_ を付加ã™ã‚‹\n"
+" -c --customflag メッセージã«ã‚«ã‚¹ã‚¿ãƒ ãƒ•ãƒ©ã‚°ã‚’設定ã™ã‚‹\n"
+" -C --codepage_in=<val> mc テキストファイル読ã¿è¾¼ã¿æ™‚ã«ã‚³ãƒ¼ãƒ‰ãƒšãƒ¼ã‚¸ã‚’設定ã™ã‚‹\n"
+" -d --decimal_values テキストファイルã«æ›¸ã込む値をå進数ã§è¡¨ã™\n"
+" -e --extension=<extension> エクスãƒãƒ¼ãƒˆãƒ˜ãƒƒãƒ€ãƒ•ã‚¡ã‚¤ãƒ«ã§ä½¿ç”¨ã•ã‚Œã‚‹æ‹¡å¼µå­ã‚’設定ã™ã‚‹\n"
+" -F --target <target> 出力ターゲットã®ã‚¨ãƒ³ãƒ‡ã‚£ã‚¢ãƒ³ã‚’指定ã™ã‚‹\n"
+" -h --headerdir=<directory> ヘッダã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ¼ã‚’設定ã™ã‚‹\n"
+" -u --unicode_in 入力ファイルを UTF16 ファイルã¨ã—ã¦èª­ã¿è¾¼ã‚€\n"
+" -U --unicode_out ãƒã‚¤ãƒŠãƒªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’ UFT16 ã¨ã—ã¦æ›¸ã込む\n"
+" -m --maxlength=<val> メッセージ長ã®æœ€å¤§è¨±å®¹å€¤ã‚’設定ã™ã‚‹\n"
+" -n --nullterminate 文字列ã®åŒºåˆ‡ã‚Šã¨ã—㦠0 を自動的ã«è¿½åŠ ã™ã‚‹\n"
+" -o --hresult_use 状態コード定義ã®ä»£ã‚ã‚Šã« HRESULT 定義を使用ã™ã‚‹\n"
+" -O --codepage_out=<val> テキストファイルを書ã込む時ã®ã‚³ãƒ¼ãƒ‰ãƒšãƒ¼ã‚¸ã‚’設定ã™ã‚‹\n"
+" -r --rcdir=<directory> rc ファイルã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãƒ¼ã‚’設定ã™ã‚‹\n"
+" -x --xdbg=<directory> メッセージID ã¨ã‚·ãƒ³ãƒœãƒ«åを対応付ã‘ã‚‹ãŸã‚ã® .dbg C\n"
+" インクルードファイルを作æˆã™ã‚‹å ´æ‰€ã‚’指定ã™ã‚‹\n"
+
+#: windmc.c:220
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+" -H --help ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã™ã‚‹\n"
+" -v --verbose 冗長 - 何を実行ã—ã¦ã„ã‚‹ã‹ã‚’表示ã™ã‚‹\n"
+" -V --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã™ã‚‹\n"
+
+#: windmc.c:261 windres.c:411
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: 警告: "
+
+#: windmc.c:262
+#, c-format
+msgid "A codepage was specified switch `%s' and UTF16.\n"
+msgstr "コードページãŒã‚¹ã‚¤ãƒƒãƒ `%s' ãŠã‚ˆã³ UTF16 ã¨ã§æŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚\n"
+
+#: windmc.c:263
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr "\tコードページ設定ã¯ç„¡è¦–ã•ã‚Œã¾ã™ã€‚\n"
+
+#: windmc.c:307
+msgid "try to add a ill language."
+msgstr "ä¸æ­£ãªè¨€èªžã‚’加ãˆã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚"
+
+#: windmc.c:1116
+#, c-format
+msgid "unable to open file `%s' for input.\n"
+msgstr "ファイル `%s' を入力ã¨ã—ã¦é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“。\n"
+
+#: windmc.c:1124
+#, c-format
+msgid "unable to read contents of %s"
+msgstr "%s ã®å†…容を読ã¿è¾¼ã‚ã¾ã›ã‚“"
+
+#: windmc.c:1136
+msgid "input file does not seems to be UFT16.\n"
+msgstr "入力ファイル㌠UFT16 ã§ã¯ç„¡ã„よã†ã§ã™ã€‚\n"
+
+#: windres.c:216
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "%s `%s' ã‚’é–‹ã‘ã¾ã›ã‚“: %s"
+
+#: windres.c:390
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": ディレクトリã§ã‚ã‚‹ã¹ãã§ã™\n"
+
+#: windres.c:402
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": 末尾è¦ç´ ã§ã‚ã‚‹ã¹ãã§ã™\n"
+
+#: windres.c:413
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": é‡è¤‡ã—ãŸå€¤ã§ã™\n"
+
+#: windres.c:563
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "ä¸æ˜Žãªãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆåž‹ `%s'"
+
+#: windres.c:564
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„るフォーマット:"
+
+#. Otherwise, we give up.
+#: windres.c:647
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "ファイル `%s' ã®åž‹ã‚’決定ã§ãã¾ã›ã‚“。-J オプションを使用ã—ã¦ãã ã•ã„"
+
+#: windres.c:659
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "使用法: %s [option(s)] [input-file] [output-file]\n"
+
+#: windres.c:661
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" --preprocessor-arg=<arg> Additional preprocessor argument\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+"オプション:\n"
+" -i --input=<file> 入力ファイルåã‚’ file ã«ã™ã‚‹\n"
+" -o --output=<file> 出力ファイルåã‚’ file ã«ã™ã‚‹\n"
+" -J --input-format=<format> 入力形å¼ã‚’ format ã«æŒ‡å®šã™ã‚‹\n"
+" -O --output-format=<format> 出力形å¼ã‚’ format ã«æŒ‡å®šã™ã‚‹\n"
+" -F --target=<target> COFF ターゲットを target ã«æŒ‡å®šã™ã‚‹\n"
+" --preprocessor=<program> rc ファイルをå‰å‡¦ç†ã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹ãƒ—ログラム\n"
+" --preprocessor-arg=<arg> å‰å‡¦ç†ç³»ã«è¿½åŠ ã§æ¸¡ã™å¼•æ•°ã‚’指定ã™ã‚‹\n"
+" -I --include-dir=<dir> rc ファイルをå‰å‡¦ç†ã™ã‚‹æ™‚ã« dir をディレクトリー\n"
+" ã«å«ã‚ã‚‹\n"
+" -D --define <sym>[=<val>] rc ファイルをå‰å‡¦ç†ã™ã‚‹éš›ã« SYM を定義ã™ã‚‹\n"
+" -U --undefine <sym> rc ファイルをå‰å‡¦ç†ã™ã‚‹éš›ã« SYM を未定義ã«ã™ã‚‹\n"
+" -v --verbose 冗長 - 実行ã—ã¦ã„ã‚‹ã“ã¨ã‚’表示ã™ã‚‹\n"
+" -c --codepage=<codepage> デフォルトコードページを指定ã™ã‚‹\n"
+" -l --language=<val> rc ファイルを読ã¿å‡ºã™ã¨ãã®è¨€èªžã‚’設定ã™ã‚‹\n"
+" --use-temp-file å‰å‡¦ç†ç³»ã®å‡ºåŠ›ã‚’読ã¿è¾¼ã‚€æ™‚ã« popen ã®ä»£ã‚ã‚Šã«ä¸€æ™‚\n"
+" ファイルを使用ã™ã‚‹\n"
+" --no-use-temp-file popen を使用ã™ã‚‹ (デフォルト)\n"
+
+#: windres.c:679
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug 構文解æžã®ãƒ‡ãƒãƒƒã‚°ã‚’有効ã«ã™ã‚‹\n"
+
+#: windres.c:682
+#, 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"
+" @<file> <file> ã‹ã‚‰ã‚ªãƒ—ションを読ã¿å‡ºã™\n"
+" -h --help ã“ã®ãƒ˜ãƒ«ãƒ—メッセージを表示ã™ã‚‹\n"
+" -V --version ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報を表示ã™ã‚‹\n"
+
+#: windres.c:687
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"FORMAT 㯠rc, res ã‚ã‚‹ã„㯠coff ã®ã„ãšã‚Œã‹ã¨ãªã‚Šã€ã“ã‚ŒãŒæŒ‡å®šã•ã‚Œãªã„å ´åˆã€\n"
+"ファイルåã®æ‹¡å¼µå­ã‹ã‚‰æŽ¨å®šã•ã‚Œã¾ã™ã€‚入力ファイルを指定ã—ãªã‘ã‚Œã°æ¨™æº–入力ãŒ\n"
+"使用ã•ã‚Œã€rc å½¢å¼ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã«ãªã‚Šã¾ã™ã€‚出力ファイルãŒæŒ‡å®šã•ã‚Œãªã‘ã‚Œã°\n"
+"標準出力ãŒä½¿ç”¨ã•ã‚Œã€rc å½¢å¼ãŒãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã«ãªã‚Šã¾ã™ã€‚\n"
+
+#: windres.c:850
+msgid "invalid codepage specified.\n"
+msgstr "無効ãªã‚³ãƒ¼ãƒ‰ãƒšãƒ¼ã‚¸ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™ã€‚\n"
+
+#: windres.c:865
+msgid "invalid option -f\n"
+msgstr "無効ãªã‚ªãƒ—ション -f ã§ã™\n"
+
+#: windres.c:870
+msgid "No filename following the -fo option.\n"
+msgstr "-fo オプションã®å¾Œã«ãƒ•ã‚¡ã‚¤ãƒ«åãŒç¶šã„ã¦ã„ã¾ã›ã‚“。\n"
+
+#: windres.c:959
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr "オプション -I ã¯å…¥åŠ›å½¢å¼ã®æŒ‡å®šã¨ã—ã¦ã¯å»ƒæ­¢ã•ã‚Œã¾ã™ã€‚代ã‚ã‚Šã« -J を使用ã—ã¦ãã ã•ã„。\n"
+
+#: windres.c:1072
+msgid "no resources"
+msgstr "リソースãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup ãŒå¤±æ•—ã—ã¾ã—ãŸ: %s"
+
+#: wrstabs.c:637
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: ä¸æ­£ãªã‚µã‚¤ã‚º %u ã§ã™"
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: 警告: 構造体ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ `%s' ã®ã‚µã‚¤ã‚ºãŒä¸æ˜Žã§ã™"
+
+#~ msgid "Usage: %s [emulation options] [--plugin <name>] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+#~ msgstr "使用法: %s [emulation options] [--plugin <name>] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+
+#~ msgid "illegal option -- %c"
+#~ msgstr "ä¸æ­£ãªã‚ªãƒ—ションã§ã™ -- %c"
+
+#~ msgid ""
+#~ "\n"
+#~ "<%s>\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "<%s>\n"
+#~ "\n"
+
+#~ msgid "Usage: %s < input_file > output_file\n"
+#~ msgstr "使用法: %s < input_file > output_file\n"
+
+#~ msgid "Prints bytes from stdin in hex format.\n"
+#~ msgstr "標準入力ã‹ã‚‰èª­ã¿è¾¼ã‚“ã ãƒã‚¤ãƒˆã‚’å六進数ã§è¡¨ç¤ºã—ã¾ã™ã€‚\n"
+
+#~ msgid " %d\t"
+#~ msgstr " %d\t"
+
+#~ msgid ""
+#~ "%s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s\n"
+#~ "\n"
+
+#~ msgid " %d\t"
+#~ msgstr " %d\t"
+
+#~ msgid "%s:\n"
+#~ msgstr "%s:\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "./%s:[++]\n"
+#~ msgstr ""
+#~ "\n"
+#~ "./%s:[++]\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "%s/%s:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s/%s:\n"
+
+#~ msgid "%-35s %11d %#18lx\n"
+#~ msgstr "%-35s %11d %#18lx\n"
+
+#~ msgid "%-35s %11d %#18lx[%d]\n"
+#~ msgstr "%-35s %11d %#18lx[%d]\n"
+
+#~ msgid "%s %11d %#18lx\n"
+#~ msgstr "%s %11d %#18lx\n"
+
+#~ msgid "%s %11d %#18lx[%d]\n"
+#~ msgstr "%s %11d %#18lx[%d]\n"
+
+#~ msgid " %ld %s [%s]\n"
+#~ msgstr " %ld %s [%s]\n"
+
+#~ msgid " %-18s %s\n"
+#~ msgstr " %-18s %s\n"
+
+#~ msgid "Location lists in .debug_info section aren't in ascending order!\n"
+#~ msgstr ".debug_info セクションã®ä½ç½®ãƒªã‚¹ãƒˆãŒæ˜‡é †ã§ã¯ã‚ã‚Šã¾ã›ã‚“!\n"
+
+#~ msgid "target `%s' ignored."
+#~ msgstr "ターゲット `%s' ã¯ç„¡è¦–ã•ã‚Œã¾ã—ãŸã€‚"
+
+#~ msgid " Pg"
+#~ msgstr " Pg"
+
+#~ msgid " (%ld)"
+#~ msgstr " (%ld)"
+
+#~ msgid "0x%02x "
+#~ msgstr "0x%02x "
+
+#~ msgid " vsp = vsp - %d"
+#~ msgstr " vsp = vsp - %d"
+
+#~ msgid " vsp = r%d"
+#~ msgstr " vsp = r%d"
+
+#~ msgid "[unsupported two-byte opcode]"
+#~ msgstr "[サãƒãƒ¼ãƒˆã•ã‚Œãªã„2ãƒã‚¤ãƒˆã®ã‚ªãƒšã‚³ãƒ¼ãƒ‰]"
+
+#~ msgid " %*s %10s %*s\n"
+#~ msgstr " %*s %10s %*s\n"
+
+#~ msgid " %*s %10s %*s %*s %-7s %3s %s\n"
+#~ msgstr " %*s %10s %*s %*s %-7s %3s %s\n"
+
+#~ msgid " %*s %*s %*s %-7s %3s %s\n"
+#~ msgstr " %*s %*s %*s %-7s %3s %s\n"
+
+#~ msgid "%s %s: %s"
+#~ msgstr "%s %s: %s"
+
+#~ msgid "%s:%d: %s\n"
+#~ msgstr "%s:%d: %s\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Can't uncompress section '%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "セクション '%s' を伸張ã§ãã¾ã›ã‚“\n"
+
+#~ msgid ""
+#~ "Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n"
+#~ " [-e executable] [--exe=executable] [--demangle[=style]]\n"
+#~ " [--basenames] [--functions] [addr addr ...]\n"
+#~ msgstr ""
+#~ "使ã„æ–¹: %s [-CfsHV] [-b bfdå] [--target=bfdå]\n"
+#~ " [-e 実行ファイル] [--exe=実行ファイル] [--demangle[=æ–¹å¼]]\n"
+#~ " [--basenames] [--functions] [アドレス アドレス ...]\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "<member %s>\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "<メンム%s>\n"
+#~ "\n"
+
+#~ msgid "GNU %s version %s\n"
+#~ msgstr "GNU %s ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s\n"
+
+#~ msgid "debug_record_variable: no current block"
+#~ msgstr "debug_record_variable: ç¾åœ¨ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#~ msgid "no export definition file provided"
+#~ msgstr "export 定義ファイルãŒæä¾›ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#~ msgid "set .nlmsections flags"
+#~ msgstr ".nlmsections フラグを設定"
+
+#~ msgid ""
+#~ "Usage: %s [-dhV] [-I bfdname] [-O bfdname] [-T header-file] [-l linker]\n"
+#~ " [--input-target=bfdname] [--output-target=bfdname]\n"
+#~ " [--header-file=file] [--linker=linker] [--debug]\n"
+#~ " [--help] [--version]\n"
+#~ " [in-file [out-file]]\n"
+#~ msgstr ""
+#~ "Usage: %s [-dhV] [-I bfdå] [-O bfdå] [-T ヘッダファイル] [-l リンカ]\n"
+#~ " [--input-target=bfdå] [--output-target=bfdå]\n"
+#~ " [--header-file=ファイル] [--linker=リンカ] [--debug]\n"
+#~ " [--help] [--version]\n"
+#~ " [入力ファイル [出力ファイル]]\n"
+
+#~ msgid "Usage: %s [OPTION]... [FILE]...\n"
+#~ msgstr "使ã„æ–¹: %s [オプション]... [ファイル]...\n"
+
+#~ msgid "Usage: %s <switches> in-file [out-file]\n"
+#~ msgstr "使ã„æ–¹: %s <スイッãƒ> 入力ファイル [出力ファイル]\n"
+
+#~ msgid " The switches are:\n"
+#~ msgstr " スイッãƒã¯ä»¥ä¸‹ã®é€šã‚Š:\n"
+
+#~ msgid ""
+#~ " -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+#~ " -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+#~ " -F --target <bfdname> Set both input and output format to <bfdname>\n"
+#~ " --debugging Convert debugging information, if possible\n"
+#~ " -p --preserve-dates Copy modified/access timestamps to the output\n"
+#~ " -j --only-section <name> Only copy section <name> into the output\n"
+#~ " -R --remove-section <name> Remove section <name> from the output\n"
+#~ " -S --strip-all Remove all symbol and relocation information\n"
+#~ " -g --strip-debug Remove all debugging symbols\n"
+#~ " --strip-unneeded Remove all symbols not needed by relocations\n"
+#~ " -N --strip-symbol <name> Do not copy symbol <name>\n"
+#~ " -K --keep-symbol <name> Only copy symbol <name>\n"
+#~ " -L --localize-symbol <name> Force symbol <name> to be marked as a local\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"
+#~ " -x --discard-all Remove all non-global symbols\n"
+#~ " -X --discard-locals Remove any compiler-generated symbols\n"
+#~ " -i --interleave <number> Only copy one out of every <number> bytes\n"
+#~ " -b --byte <num> Select byte <num> in every interleaved block\n"
+#~ " --gap-fill <val> Fill gaps between sections with <val>\n"
+#~ " --pad-to <addr> Pad the last section up to address <addr>\n"
+#~ " --set-start <addr> Set the start address to <addr>\n"
+#~ " {--change-start|--adjust-start} <incr>\n"
+#~ " Add <incr> to the start address\n"
+#~ " {--change-addresses|--adjust-vma} <incr>\n"
+#~ " Add <incr> to LMA, VMA and start addresses\n"
+#~ " {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+#~ " Change LMA and VMA of section <name> by <val>\n"
+#~ " --change-section-lma <name>{=|+|-}<val>\n"
+#~ " Change the LMA of section <name> by <val>\n"
+#~ " --change-section-vma <name>{=|+|-}<val>\n"
+#~ " Change the VMA of section <name> by <val>\n"
+#~ " {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+#~ " Warn if a named section does not exist\n"
+#~ " --set-section-flags <name>=<flags>\n"
+#~ " Set section <name>'s properties to <flags>\n"
+#~ " --add-section <name>=<file> Add section <name> found in <file> to output\n"
+#~ " --change-leading-char Force output format's leading character style\n"
+#~ " --remove-leading-char Remove leading character from global symbols\n"
+#~ " --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+#~ " --srec-len <number> Restrict the length of generated Srecords\n"
+#~ " --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+#~ " -v --verbose List all object files modified\n"
+#~ " -V --version Display this program's version number\n"
+#~ " -h --help Display this output\n"
+#~ msgstr ""
+#~ " -I --input-target <bfdå> 入力ファイルを <bfdå> å½¢å¼ã‚’ã¨ã¿ãªã™\n"
+#~ " -O --output-target <bfdå> 出力形å¼ã‚’ <bfdå> ã¨ã—ã¦ä½œæˆã™ã‚‹\n"
+#~ " -F --target <bfdå> 入力・出力両方㫠<bfdå> å½¢å¼ã‚’使用ã™ã‚‹\n"
+#~ " --debugging å¯èƒ½ã§ã‚ã‚Œã°ãƒ‡ãƒãƒƒã‚°æƒ…報を変æ›ã™ã‚‹\n"
+#~ " -p --preserve-dates 修正/アクセス時刻情報を出力ã«ã‚³ãƒ”ーã™ã‚‹\n"
+#~ " -j --only-section <åå‰> <åå‰> ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã ã‘を出力ã™ã‚‹\n"
+#~ " -R --remove-section <åå‰> <åå‰> ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‚’出力ã‹ã‚‰å–り除ã\n"
+#~ " -S --strip-all å…¨ã¦ã®ã‚·ãƒ³ãƒœãƒ«åŠã³å†é…置情報をå–り除ã\n"
+#~ " -g --strip-debug å…¨ã¦ã®ãƒ‡ãƒãƒƒã‚°ã‚·ãƒ³ãƒœãƒ«ã‚’å–り除ã\n"
+#~ " --strip-unneeded å†é…ç½®ã«å¿…è¦ãªã‚·ãƒ³ãƒœãƒ«ä»¥å¤–ã‚’å…¨ã¦å–り除ã\n"
+#~ " -N --strip-symbol <åå‰> <åå‰> ã®ã‚·ãƒ³ãƒœãƒ«ã‚’コピーã—ãªã„\n"
+#~ " -K --keep-symbol <åå‰> <åå‰> ã®ã‚·ãƒ³ãƒœãƒ«ã‚’コピーã™ã‚‹\n"
+#~ " -L --localize-symbol <åå‰> <åå‰> ã®ã‚·ãƒ³ãƒœãƒ«ã« local マークをã¤ã‘ã‚‹\n"
+#~ " -W --weaken-symbol <åå‰> <åå‰> ã®ã‚·ãƒ³ãƒœãƒ«ã« weak マークをã¤ã‘ã‚‹\n"
+#~ " --weaken å…¨ã¦ã®å¤§åŸŸã‚·ãƒ³ãƒœãƒ«ã« weak マークをã¤ã‘ã‚‹\n"
+#~ " -x --discard-all å…¨ã¦ã®éžå¤§åŸŸã‚·ãƒ³ãƒœãƒ«ã‚’å–り除ã\n"
+#~ " -X --discard-locals ã‚る種ã®ã‚³ãƒ³ãƒ‘イラ生æˆã‚·ãƒ³ãƒœãƒ«ã‚’å–り除ã\n"
+#~ " -i --interleave <数値> <数値> ãƒã‚¤ãƒˆåˆ†ã”ã¨ã«ã‚³ãƒ”ーã™ã‚‹\n"
+#~ " -b --byte <数値> å„ interleave ブロックã§ã®ãƒã‚¤ãƒˆæ•°ã‚’é¸æŠž\n"
+#~ " --gap-fill <値> セクション間ã®éš™é–“ã‚’ <値> ã§åŸ‹ã‚ã‚‹\n"
+#~ " --pad-to <アドレス> ç›´å‰ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã‹ã‚‰ <アドレス> ã¾ã§åŸ‹ã‚ã‚‹\n"
+#~ " --set-start <アドレス> 開始アドレスを <アドレス> ã«è¨­å®šã™ã‚‹\n"
+#~ " {--change-start|--adjust-start} <増分>\n"
+#~ " 開始アドレス㫠<増分> 加ãˆã‚‹\n"
+#~ " {--change-addresses|--adjust-vma} <増分>\n"
+#~ " LMA, VMA åŠã³é–‹å§‹ã‚¢ãƒ‰ãƒ¬ã‚¹ã« <増分> 加ãˆã‚‹\n"
+#~ " {--change-section-address|--adjust-section-vma} <åå‰>{=|+|-}<値>\n"
+#~ " セクション<åå‰>ã® LMA, VMA ã‚’<値>ã«å¤‰æ›´\n"
+#~ " --change-section-lma <name>{=|+|-}<val>\n"
+#~ " セクション <åå‰> ã® LMA ã‚’ <値> ã«å¤‰æ›´\n"
+#~ " --change-section-vma <name>{=|+|-}<val>\n"
+#~ " セクション <åå‰> ã® VMA ã‚’ <値> ã«å¤‰æ›´\n"
+#~ " {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+#~ " åå‰ä»˜ãセクションãŒç„¡ã‘ã‚Œã°è­¦å‘Šã™ã‚‹\n"
+#~ " --set-section-flags <åå‰>=<フラグ>\n"
+#~ " セクション<åå‰> ã®ç‰¹è³ªã‚’ <フラグ> ã«è¨­å®š\n"
+#~ " --add-section <name>=<file> セクション<åå‰> を出力<ファイル>ã«è¿½åŠ \n"
+#~ " --change-leading-char 出力形å¼ã®å…ˆé ­æ–‡å­—æ–¹å¼ã‚’強制ã™ã‚‹\n"
+#~ " --remove-leading-char 大域シンボルã‹ã‚‰å…ˆé ­æ–‡å­—ã‚’å–り除ã\n"
+#~ " --redefine-sym <æ—§>=<æ–°> シンボルå <æ—§> ã‚’ <æ–°> ã«å†å®šç¾©ã™ã‚‹\n"
+#~ " --srec-len <数値> 生æˆã•ã‚Œã‚‹ Sレコード長を厳密ã«<数値>ã¨ã™ã‚‹\n"
+#~ " --srec-forceS3 生æˆã•ã‚Œã‚‹ S3 用 Sレコード型を厳密ã«ã™ã‚‹\n"
+#~ " -v --verbose 修正ã•ã‚ŒãŸå…¨ã‚ªãƒ–ジェクトファイルをリスト\n"
+#~ " -V --version ã“ã®ãƒ—ログラムã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã™ã‚‹\n"
+#~ " -h --help ã“ã®ä½¿ã„方を表示ã™ã‚‹\n"
+
+#~ msgid "making"
+#~ msgstr "作æˆä¸­"
+
+#~ msgid "size"
+#~ msgstr "サイズ"
+
+#~ msgid "vma"
+#~ msgstr "vma "
+
+#~ msgid "alignment"
+#~ msgstr "アラインメント"
+
+#~ msgid "flags"
+#~ msgstr "フラグ"
+
+#~ msgid "private data"
+#~ msgstr "プライベートデータ"
+
+#~ msgid "%s: section `%s': error in %s: %s"
+#~ msgstr "%s: セクション `%s': %sã®ã‚¨ãƒ©ãƒ¼: %s"
+
+#~ msgid "%s: cannot stat: %s"
+#~ msgstr "%s: stat(2) ãŒã§ãã¾ã›ã‚“: %s"
+
+#~ msgid "cannot stat: %s: %s"
+#~ msgstr "stat(2) ã§ãã¾ã›ã‚“: %s: %s"
+
+#~ msgid "Cannot stat: %s: %s"
+#~ msgstr "stat(2) ã§ãã¾ã›ã‚“: %s: %s"
+
+#~ msgid "Usage: %s OPTION... FILE...\n"
+#~ msgstr "使ã„æ–¹: %s オプション... ファイル...\n"
+
+#~ msgid "%s: No dynamic symbols"
+#~ msgstr "%s: 動的シンボルã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#~ msgid "Out of virtual memory"
+#~ msgstr "仮想メモリãŒè¶³ã‚Šã¾ã›ã‚“"
+
+#~ msgid "Reading %s section of %s failed: %s\n"
+#~ msgstr "%s セクション (%s) 読込ã¿ã«å¤±æ•—ã—ã¾ã—ãŸ: %s\n"
+
+#~ msgid "Unable to seek to start of %s at %x\n"
+#~ msgstr "%s ã®å§‹ç‚¹ã¸ seek ã§ãã¾ã›ã‚“(%x)\n"
+
+#~ msgid "Unable to read data at %x for %s\n"
+#~ msgstr "%x ã§ã®ãƒ‡ãƒ¼ã‚¿ã‚ˆè¦‹è¾¼ã¿ãŒã§ãã¾ã›ã‚“ (%s)\n"
+
+#~ msgid " -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+#~ msgstr " -a åˆã¯ --all -h -l -S -s -r -d -V -A -I ã¨åŒã˜\n"
+
+#~ msgid " -h or --file-header Display the ELF file header\n"
+#~ msgstr " -h åˆã¯ --file-header ELF ファイルヘッダを表示ã™ã‚‹\n"
+
+#~ msgid " -l or --program-headers or --segments\n"
+#~ msgstr " -l åˆã¯ --program-headers åˆã¯ --segments\n"
+
+#~ msgid " Display the program headers\n"
+#~ msgstr " プログラムヘッダを表示ã™ã‚‹\n"
+
+#~ msgid " -S or --section-headers or --sections\n"
+#~ msgstr " -S åˆã¯ --section-headers åˆã¯ --sections\n"
+
+#~ msgid " Display the sections' header\n"
+#~ msgstr " セクションã®ãƒ˜ãƒƒãƒ€ã‚’表示ã™ã‚‹\n"
+
+#~ msgid " -e or --headers Equivalent to: -h -l -S\n"
+#~ msgstr " -e åˆã¯ --headers -h -l -S ã¨åŒã˜\n"
+
+#~ msgid " -s or --syms or --symbols Display the symbol table\n"
+#~ msgstr " -s åˆã¯ --syms åˆã¯ --symbols シンボルテーブルを表示ã™ã‚‹\n"
+
+#~ msgid " -n or --notes Display the core notes (if present)\n"
+#~ msgstr " -n åˆã¯ --notes コア note セグメントãŒã‚ã‚Œã°è¡¨ç¤ºã™ã‚‹\n"
+
+#~ msgid " -r or --relocs Display the relocations (if present)\n"
+#~ msgstr " -r åˆã¯ --relocs å†é…置セクションãŒã‚ã‚Œã°è¡¨ç¤ºã™ã‚‹\n"
+
+#~ msgid " -d or --dynamic Display the dynamic segment (if present)\n"
+#~ msgstr " -d åˆã¯ --dynamic 動的セグメントãŒã‚ã‚Œã°è¡¨ç¤ºã™ã‚‹\n"
+
+#~ msgid " -V or --version-info Display the version sections (if present)\n"
+#~ msgstr " -V åˆã¯ --version-info ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚»ã‚¯ã‚·ãƒ§ãƒ³ãŒã‚ã‚Œã°è¡¨ç¤ºã™ã‚‹\n"
+
+#~ msgid " -A or --arch-specific Display architecture specific information (if any).\n"
+#~ msgstr " -A åˆã¯ --arch-specific アーキテクãƒãƒ£å›ºæœ‰æƒ…å ±ãŒã‚ã‚Œã°è¡¨ç¤ºã™ã‚‹\n"
+
+#~ msgid " -D or --use-dynamic Use the dynamic section info when displaying symbols\n"
+#~ msgstr " -D åˆã¯ --use-dynamic シンボル表示ã«å‹•çš„セクション情報を使用ã™ã‚‹\n"
+
+#~ msgid " -x <number> or --hex-dump=<number>\n"
+#~ msgstr " -x <番å·> åˆã¯ --hex-dump=<番å·>\n"
+
+#~ msgid " Dump the contents of section <number>\n"
+#~ msgstr " セクション <番å·> ã®å†…容をダンプã™ã‚‹\n"
+
+#~ msgid " -w[liaprf] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]\n"
+#~ msgstr " -w[liaprf] åˆã¯ --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]\n"
+
+#~ msgid " Display the contents of DWARF2 debug sections\n"
+#~ msgstr " DWARF2 デãƒãƒƒã‚°ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã®å†…容を表示ã™ã‚‹\n"
+
+#~ msgid " -i <number> or --instruction-dump=<number>\n"
+#~ msgstr " -i <番å·> or --instruction-dump=<番å·>\n"
+
+#~ msgid " -I or --histogram Display histogram of bucket list lengths\n"
+#~ msgstr " -I åˆã¯ --histogram ãƒã‚±ãƒƒãƒˆãƒªã‚¹ãƒˆé•·ã®åº¦æ•°åˆ†å¸ƒã‚’表示ã™ã‚‹\n"
+
+#~ msgid " -v or --version Display the version number of readelf\n"
+#~ msgstr " -v åˆã¯ --version readelf ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·ã‚’表示ã™ã‚‹\n"
+
+#~ msgid " -H or --help Display this information\n"
+#~ msgstr " -H åˆã¯ --help ã“ã®ä½¿ã„方を表示ã™ã‚‹\n"
+
+#~ msgid "ELF32"
+#~ msgstr "ELF32"
+
+#~ msgid "ELF64"
+#~ msgstr "ELF64"
+
+#~ msgid "UNIX - System V"
+#~ msgstr "UNIX - System V"
+
+#~ msgid "UNIX - HP-UX"
+#~ msgstr "UNIX - HP-UX"
+
+#~ msgid "UNIX - NetBSD"
+#~ msgstr "UNIX - NetBSD"
+
+#~ msgid "UNIX - Linux"
+#~ msgstr "UNIX - Linux"
+
+#~ msgid "GNU/Hurd"
+#~ msgstr "GNU/Hurd"
+
+#~ msgid "UNIX - Solaris"
+#~ msgstr "UNIX - Solaris"
+
+#~ msgid "UNIX - AIX"
+#~ msgstr "UNIX - AIX"
+
+#~ msgid "UNIX - IRIX"
+#~ msgstr "UNIX - IRIX"
+
+#~ msgid "UNIX - FreeBSD"
+#~ msgstr "UNIX - FreeBSD"
+
+#~ msgid "UNIX - TRU64"
+#~ msgstr "UNIX - TRU64"
+
+#~ msgid "Novell - Modesto"
+#~ msgstr "Novell - Modesto"
+
+#~ msgid "UNIX - OpenBSD"
+#~ msgstr "UNIX - OpenBSD"
+
+#~ msgid "ARM"
+#~ msgstr "ARM"
+
+#~ msgid "Key to Flags:\n"
+#~ msgstr "フラグã®ã‚­ãƒ¼:\n"
+
+#~ msgid " W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+#~ msgstr " W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+
+#~ msgid " I (info), L (link order), G (group), x (unknown)\n"
+#~ msgstr " I (info), L (link order), G (group), x (ä¸æ˜Ž)\n"
+
+#~ msgid " O (extra OS processing required) o (OS specific), p (processor specific)\n"
+#~ msgstr " O (OS ã®ç‰¹æ®Šå‡¦ç†ã«å¿…è¦) o (OS 固有), p (processor 固有)\n"
+
+#~ msgid " Offset: %#08lx Link to section: %ld (%s)\n"
+#~ msgstr " Offset: %#08lx セクションã¸ã®ãƒªãƒ³ã‚¯: %ld (%s)\n"
+
+#~ msgid "Out of memory"
+#~ msgstr "メモリãŒè¶³ã‚Šã¾ã›ã‚“"
+
+#~ msgid "Unable to handle FORM: %d"
+#~ msgstr "FORM を扱ãˆã¾ã›ã‚“: %d"
+
+#~ msgid ""
+#~ "The section %s contains:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "セクション %s ã®å†…容:\n"
+#~ "\n"
+
+#~ msgid "Only version 2 DWARF debug information is currently supported.\n"
+#~ msgstr "ç¾åœ¨ã®ã¨ã“ã‚ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2 DWARF ã ã‘ãŒãƒ‡ãƒãƒƒã‚°æƒ…報をサãƒãƒ¼ãƒˆã—ã¾ã™ã€‚\n"
+
+#~ msgid "Unable to locate entry %lu in the abbreviation table\n"
+#~ msgstr "çœç•¥ãƒ†ãƒ¼ãƒ–ル内ã®ã‚¨ãƒ³ãƒˆãƒª %lu ã®ä½ç½®ã‚’特定ã§ãã¾ã›ã‚“\n"
+
+#~ msgid "64 bit data type and so it cannot read 64 bit ELF files.\n"
+#~ msgstr "64 bit ELF ファイルを読むã“ã¨ãŒã§ãã¾ã›ã‚“。\n"
+
+#~ msgid "Cannot stat input file %s.\n"
+#~ msgstr "入力ファイル %s ã‚’ stat(2) ã§ãã¾ã›ã‚“。\n"
+
+#~ msgid "%s: rename: %s"
+#~ msgstr "%s: rename: %s"
+
+#~ msgid "%s: simple_copy: %s"
+#~ msgstr "%s: simple_copy: %s"
+
+#~ msgid "unexpected dialog signature %d"
+#~ msgstr "予期ã—ãªã„ãƒ€ã‚¤ã‚¢ãƒ­ã‚°è­˜åˆ¥ç•ªå· %d"
+
+#~ msgid ""
+#~ "Usage: %s [-A | --format=sysv | -B | --format=berkeley]\n"
+#~ " [-o | --radix=8 | -d | --radix=10 | -h | --radix=16]\n"
+#~ " [-V | --version] [--target=bfdname] [--help] [file...]\n"
+#~ msgstr ""
+#~ "使ã„æ–¹: %s [-A | --format=sysv | -B | --format=berkeley]\n"
+#~ " [-o | --radix=8 | -d | --radix=10 | -h | --radix=16]\n"
+#~ " [-V | --version] [--target=bfdname] [--help] [ファイル...]\n"
+
+#~ msgid "default is --format=berkeley\n"
+#~ msgstr "デフォルトã§ã¯ --format=berkeley ã§ã™\n"
+
+#~ msgid "default is --format=sysv\n"
+#~ msgstr "デフォルトã§ã¯ --format=sysv ã§ã™\n"
+
+#~ msgid "Usage: %s [-dhVq] in-file [out-file]\n"
+#~ msgstr "使ã„æ–¹: %s [-dhVq] 入力ファイル [出力ファイル]\n"
+
+#~ msgid "invalid number %s"
+#~ msgstr "ä¸é©åˆ‡ãªå€¤ %s"
+
+#~ msgid ""
+#~ "Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-]\n"
+#~ " [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n"
+#~ " [--target=bfdname] [--help] [--version] file...\n"
+#~ msgstr ""
+#~ "使ã„æ–¹: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-]\n"
+#~ " [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n"
+#~ " [--target=bfdname] [--help] [--version] ファイル...\n"
diff --git a/binutils-2.24/binutils/po/ro.gmo b/binutils-2.24/binutils/po/ro.gmo
new file mode 100644
index 00000000..f1c1e0e1
--- /dev/null
+++ b/binutils-2.24/binutils/po/ro.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/ro.po b/binutils-2.24/binutils/po/ro.po
new file mode 100644
index 00000000..e4bfea38
--- /dev/null
+++ b/binutils-2.24/binutils/po/ro.po
@@ -0,0 +1,5090 @@
+# Mesajele în limba românã pentru binutils.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# Acest fiºier este distribuit sub aceeaºi licenþã ca ºi pachetul binutils.
+# Laurentiu Buzdugan <lbuz@rolix.org>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.15.96\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-03 21:03+1030\n"
+"PO-Revision-Date: 2005-03-09 12:00-0500\n"
+"Last-Translator: Laurentiu Buzdugan <lbuz@rolix.org>\n"
+"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: addr2line.c:73
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Folosire: %s [opþiune(i)] [adresã(e)]\n"
+
+#: addr2line.c:74
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " Converteºte adrese în perechi numãr linei/nume fiºier.\n"
+
+#: addr2line.c:75
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Dacã nu este specificatã nici o adresã în linia de comandã, acestea vor fi citite de la intrarea standard (stdin)\n"
+
+#: addr2line.c:76
+#, c-format
+msgid ""
+" The options are:\n"
+" -b --target=<bfdname> Set the binary file format\n"
+" -e --exe=<executable> Set the input file name (default is a.out)\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Opþiunile sunt:\n"
+" -b --target=<bfdname> Seteazã formatul binar al fiºierului\n"
+" -e --exe=<executable> Seteazã numele fiºierului de intrare (implicit a.out)\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Afiºeazã numele funcþiilor\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's 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
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "Raportaþi bug-uri la %s\n"
+
+#: addr2line.c:241
+#, c-format
+msgid "%s: can not get addresses from archive"
+msgstr ""
+
+#: addr2line.c:311 nm.c:1519 objdump.c:2848
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr ""
+
+#: ar.c:205
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr ""
+
+#: ar.c:221
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+msgstr ""
+
+#: ar.c:224
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr ""
+
+#: ar.c:225
+#, c-format
+msgid " commands:\n"
+msgstr " comenzi:\n"
+
+#: ar.c:226
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - ºterge fiºier(e) din arhivã\n"
+
+#: ar.c:227
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - mutã fiºier(e) în arhivã\n"
+
+#: ar.c:228
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - tipãreºte fiºier(e) gãsite în arhivã\n"
+
+#: ar.c:229
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - adaugã rapid fiºier(e) la arhivã\n"
+
+#: ar.c:230
+#, c-format
+msgid " r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
+msgstr ""
+
+#: ar.c:231
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - afiºeazã conþinutul arhivei\n"
+
+#: ar.c:232
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - extrage fiºier(e) din arhivã\n"
+
+#: ar.c:233
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " modificatori specifici pentru comenzi:\n"
+
+#: ar.c:234
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - pune fiºier(e) dupã [nume-membru]\n"
+
+#: ar.c:235
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr ""
+
+#: ar.c:236
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr ""
+
+#: ar.c:237
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr ""
+
+#: ar.c:238
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr ""
+
+#: ar.c:239
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr ""
+
+#: ar.c:240
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr ""
+
+#: ar.c:241
+#, c-format
+msgid " generic modifiers:\n"
+msgstr ""
+
+#: ar.c:242
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr ""
+
+#: ar.c:243
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr ""
+
+#: ar.c:244
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr ""
+
+#: ar.c:245
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr ""
+
+#: ar.c:246
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr ""
+
+#: ar.c:253
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr ""
+
+#: ar.c:254
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr ""
+
+#: ar.c:255
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Print this help message\n"
+" -V --version Print version information\n"
+msgstr ""
+
+#: ar.c:483
+msgid "two different operation options specified"
+msgstr ""
+
+#: ar.c:558
+#, c-format
+msgid "illegal option -- %c"
+msgstr "opþiune ilegalã -- %c"
+
+#: ar.c:604
+msgid "no operation specified"
+msgstr "nici o operaþiune specificatã"
+
+#: ar.c:607
+msgid "`u' is only meaningful with the `r' option."
+msgstr ""
+
+#: ar.c:615
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr ""
+
+#: ar.c:618
+msgid "Value for `N' must be positive."
+msgstr ""
+
+#: ar.c:668
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr ""
+
+#: ar.c:737
+#, c-format
+msgid "creating %s"
+msgstr "creez %s"
+
+#: ar.c:786 ar.c:836 ar.c:1154 objcopy.c:1603
+#, c-format
+msgid "internal stat error on %s"
+msgstr "eroare stat internã pe %s"
+
+#: ar.c:790
+#, c-format
+msgid ""
+"\n"
+"<%s>\n"
+"\n"
+msgstr ""
+
+#: ar.c:806 ar.c:873
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s nu este o arhivã validã"
+
+#: ar.c:841
+#, c-format
+msgid "stat returns negative size for %s"
+msgstr "stat a returnat o dimensiune negativã pentru %s"
+
+#: ar.c:1059
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "Nici un membru numit `%s'\n"
+
+#: ar.c:1109
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr ""
+
+#: ar.c:1246
+#, c-format
+msgid "%s: no archive map to update"
+msgstr ""
+
+#: arsup.c:83
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr ""
+
+#: arsup.c:109
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "Nu pot deschide fiºierul %s\n"
+
+#: arsup.c:162
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: Nu pot deschide arhiva de ieºire %s\n"
+
+#: arsup.c:179
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: Nu pot deschide arhiva de intrare %s\n"
+
+#: arsup.c:188
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr ""
+
+#: arsup.c:227
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr ""
+
+#: arsup.c:247 arsup.c:285 arsup.c:327 arsup.c:347 arsup.c:413
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr ""
+
+#: arsup.c:258 arsup.c:368 arsup.c:394
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: nu pot deschide fiºierul %s\n"
+
+#: arsup.c:312 arsup.c:390 arsup.c:471
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: nu pot gãsi fiºierul modul %s\n"
+
+#: arsup.c:422
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "Arhiva deschisã curent este %s\n"
+
+#: arsup.c:446
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: nici o arhivã deschisã\n"
+
+#: binemul.c:37
+#, c-format
+msgid " No emulation specific options\n"
+msgstr ""
+
+#. Macros for common output.
+#: binemul.h:42
+#, c-format
+msgid " emulation options: \n"
+msgstr ""
+
+#: bucomm.c:109
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr ""
+
+#: bucomm.c:120
+#, c-format
+msgid "%s: Matching formats:"
+msgstr ""
+
+#: bucomm.c:135
+#, c-format
+msgid "Supported targets:"
+msgstr ""
+
+#: bucomm.c:137
+#, c-format
+msgid "%s: supported targets:"
+msgstr ""
+
+#: bucomm.c:153
+#, c-format
+msgid "Supported architectures:"
+msgstr ""
+
+#: bucomm.c:155
+#, c-format
+msgid "%s: supported architectures:"
+msgstr ""
+
+#: bucomm.c:348
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr ""
+
+#: bucomm.c:449
+#, c-format
+msgid "%s: bad number: %s"
+msgstr ""
+
+#: bucomm.c:466 strings.c:386
+#, c-format
+msgid "'%s': No such file"
+msgstr ""
+
+#: bucomm.c:468 strings.c:388
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr ""
+
+#: bucomm.c:472
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr ""
+
+#: coffdump.c:105
+#, c-format
+msgid "#lines %d "
+msgstr ""
+
+#: coffdump.c:459 sysdump.c:648
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr ""
+
+#: coffdump.c:460
+#, c-format
+msgid " Print a human readable interpretation of a SYSROFF object file\n"
+msgstr ""
+
+#: coffdump.c:461
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+
+#: coffdump.c:527 srconv.c:1819 sysdump.c:710
+msgid "no input file specified"
+msgstr ""
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr ""
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr ""
+
+#: debug.c:783
+msgid "debug_record_function: no debug_set_filename call"
+msgstr ""
+
+#: debug.c:835
+msgid "debug_record_parameter: no current function"
+msgstr ""
+
+#: debug.c:867
+msgid "debug_end_function: no current function"
+msgstr ""
+
+#: debug.c:873
+msgid "debug_end_function: some blocks were not closed"
+msgstr ""
+
+#: debug.c:901
+msgid "debug_start_block: no current block"
+msgstr ""
+
+#: debug.c:937
+msgid "debug_end_block: no current block"
+msgstr ""
+
+#: debug.c:944
+msgid "debug_end_block: attempt to close top level block"
+msgstr ""
+
+#: debug.c:967
+msgid "debug_record_line: no current unit"
+msgstr ""
+
+#. FIXME
+#: debug.c:1020
+msgid "debug_start_common_block: not implemented"
+msgstr ""
+
+#. FIXME
+#: debug.c:1031
+msgid "debug_end_common_block: not implemented"
+msgstr ""
+
+#. FIXME.
+#: debug.c:1115
+msgid "debug_record_label: not implemented"
+msgstr ""
+
+#: debug.c:1137
+msgid "debug_record_variable: no current file"
+msgstr ""
+
+#: debug.c:1665
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr ""
+
+#: debug.c:1842
+msgid "debug_name_type: no current file"
+msgstr ""
+
+#: debug.c:1887
+msgid "debug_tag_type: no current file"
+msgstr ""
+
+#: debug.c:1895
+msgid "debug_tag_type: extra tag attempted"
+msgstr ""
+
+#: debug.c:1932
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr ""
+
+#: debug.c:1954
+msgid "debug_find_named_type: no current compilation unit"
+msgstr ""
+
+#: debug.c:2057
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr ""
+
+#: debug.c:2484
+msgid "debug_write_type: illegal type encountered"
+msgstr ""
+
+#: dlltool.c:773 dlltool.c:797 dlltool.c:826
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr ""
+
+#: dlltool.c:862
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Nu pot deschide fiºierul def: %s"
+
+#: dlltool.c:867
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Procesez fiºierul def: %s"
+
+#: dlltool.c:871
+msgid "Processed def file"
+msgstr "Am procesat fiºierul def"
+
+#: dlltool.c:895
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr ""
+
+#: dlltool.c:930
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr ""
+
+#: dlltool.c:939
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr ""
+
+#: dlltool.c:942 dlltool.c:958
+msgid "Can't have LIBRARY and NAME"
+msgstr ""
+
+#: dlltool.c:955
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr ""
+
+#: dlltool.c:1191 resrc.c:269
+#, c-format
+msgid "wait: %s"
+msgstr "aºteaptã: %s"
+
+#: dlltool.c:1196 dllwrap.c:418 resrc.c:274
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "subprocesul a primit semnalul fatal %d"
+
+#: dlltool.c:1202 dllwrap.c:425 resrc.c:281
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s a terminat cu codul %d"
+
+#: dlltool.c:1233
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "Absorb info din secþiunea %s în %s"
+
+#: dlltool.c:1358
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr ""
+
+#: dlltool.c:1447 dlltool.c:1458 nm.c:998 nm.c:1009
+#, c-format
+msgid "%s: no symbols"
+msgstr ""
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1484
+#, c-format
+msgid "Done reading %s"
+msgstr "Am terminat de citit %s"
+
+#: dlltool.c:1494
+#, c-format
+msgid "Unable to open object file: %s"
+msgstr ""
+
+#: dlltool.c:1497
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Scanez fiºierul obiect %s"
+
+#: dlltool.c:1512
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "Nu pot produce dll mcore-elf fin fiºierul arhivã: %s"
+
+#: dlltool.c:1598
+msgid "Adding exports to output file"
+msgstr ""
+
+#: dlltool.c:1646
+msgid "Added exports to output file"
+msgstr ""
+
+#: dlltool.c:1767
+#, c-format
+msgid "Generating export file: %s"
+msgstr "Generez fiºier de export: %s"
+
+#: dlltool.c:1772
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr ""
+
+#: dlltool.c:1775
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr ""
+
+#: dlltool.c:1997
+msgid "Generated exports file"
+msgstr "Am generat fiºier de export"
+
+#: dlltool.c:2203
+#, c-format
+msgid "bfd_open failed open stub file: %s"
+msgstr ""
+
+#: dlltool.c:2206
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "Creez fiºier stub: %s"
+
+#: dlltool.c:2588
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr ""
+
+#: dlltool.c:2647
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr ""
+
+#: dlltool.c:2714
+#, c-format
+msgid "Can't open .lib file: %s"
+msgstr "Nu pot deschide fiºierul .lib: %s"
+
+#: dlltool.c:2717
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Creez fiºier bibliotecã: %s"
+
+#: dlltool.c:2800 dlltool.c:2806
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "nu pot ºterge %s: %s"
+
+#: dlltool.c:2811
+msgid "Created lib file"
+msgstr "Am creat fiºier lib"
+
+#: dlltool.c:2904
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Avertisment, ignor EXPORT duplicat %s %d,%d"
+
+#: dlltool.c:2910
+#, c-format
+msgid "Error, duplicate EXPORT with oridinals: %s"
+msgstr ""
+
+#: dlltool.c:3026
+msgid "Processing definitions"
+msgstr ""
+
+#: dlltool.c:3058
+msgid "Processed definitions"
+msgstr ""
+
+#. xgetext:c-format
+#: dlltool.c:3065 dllwrap.c:479
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr ""
+
+#. xgetext:c-format
+#: dlltool.c:3067
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr ""
+
+#: dlltool.c:3068
+#, c-format
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr ""
+
+#: dlltool.c:3069
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr ""
+
+#: dlltool.c:3070
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr ""
+
+#: dlltool.c:3071
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr ""
+
+#: dlltool.c:3072
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr ""
+
+#: dlltool.c:3073
+#, c-format
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr ""
+
+#: dlltool.c:3074
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr ""
+
+#: dlltool.c:3075
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr ""
+
+#: dlltool.c:3076
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr ""
+
+#: dlltool.c:3077
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr ""
+
+#: dlltool.c:3078
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr ""
+
+#: dlltool.c:3079
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr ""
+
+#: dlltool.c:3080
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr ""
+
+#: dlltool.c:3081
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr ""
+
+#: dlltool.c:3082
+#, c-format
+msgid " -U --add-underscore Add underscores to symbols in interface library.\n"
+msgstr ""
+
+#: dlltool.c:3083
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr ""
+
+#: dlltool.c:3084
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr ""
+
+#: dlltool.c:3085
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr ""
+
+#: dlltool.c:3086
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr ""
+
+#: dlltool.c:3087
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr ""
+
+#: dlltool.c:3088
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr ""
+
+#: dlltool.c:3089
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr ""
+
+#: dlltool.c:3090
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr ""
+
+#: dlltool.c:3091
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr ""
+
+#: dlltool.c:3092
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr ""
+
+#: dlltool.c:3093
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr ""
+
+#: dlltool.c:3095
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr ""
+
+#: dlltool.c:3096
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr ""
+
+#: dlltool.c:3097
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr ""
+
+#: dlltool.c:3211
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr ""
+
+#: dlltool.c:3256
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Nu pot deschide fiºierul-bazã: %s"
+
+#: dlltool.c:3288
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Maºina '%s' nu este suportatã"
+
+#: dlltool.c:3392 dllwrap.c:209
+#, c-format
+msgid "Tried file: %s"
+msgstr "Am încercat fiºier: %s"
+
+#: dlltool.c:3399 dllwrap.c:216
+#, c-format
+msgid "Using file: %s"
+msgstr "Folosesc fiºier: %s"
+
+#: dllwrap.c:299
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr ""
+
+#: dllwrap.c:301
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "ªterg fiºier bazã temporar %s"
+
+#: dllwrap.c:315
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "Pãstrez fiºier exp temporar %s"
+
+#: dllwrap.c:317
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "ªterg fiºier exp temporar %s"
+
+#: dllwrap.c:330
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Pãstrez fiºier def temporar %s"
+
+#: dllwrap.c:332
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "ªterg fiºier def temporar %s"
+
+#: dllwrap.c:480
+#, c-format
+msgid " Generic options:\n"
+msgstr " Opþiuni generice:\n"
+
+#: dllwrap.c:481
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr ""
+
+#: dllwrap.c:482
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr ""
+
+#: dllwrap.c:483
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr ""
+
+#: dllwrap.c:484
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr ""
+
+#: dllwrap.c:485
+#, c-format
+msgid " Options for %s:\n"
+msgstr ""
+
+#: dllwrap.c:486
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr ""
+
+#: dllwrap.c:487
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr ""
+
+#: dllwrap.c:488
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr ""
+
+#: dllwrap.c:489
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr ""
+
+#: dllwrap.c:490
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr ""
+
+#: dllwrap.c:491
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr ""
+
+#: dllwrap.c:492
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr ""
+
+#: dllwrap.c:493
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr ""
+
+#: dllwrap.c:494
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr ""
+
+#: dllwrap.c:495
+#, c-format
+msgid " --machine <machine>\n"
+msgstr ""
+
+#: dllwrap.c:496
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr ""
+
+#: dllwrap.c:497
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr ""
+
+#: dllwrap.c:498
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr ""
+
+#: dllwrap.c:499
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr ""
+
+#: dllwrap.c:500
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr ""
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr ""
+
+#: dllwrap.c:502
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr ""
+
+#: dllwrap.c:503
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr ""
+
+#: dllwrap.c:504
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr ""
+
+#: dllwrap.c:505
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr ""
+
+#: dllwrap.c:506
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr ""
+
+#: dllwrap.c:507
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr ""
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr ""
+
+#: dllwrap.c:509
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr ""
+
+#: dllwrap.c:510
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr ""
+
+#: dllwrap.c:511
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr ""
+
+#: dllwrap.c:512
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr ""
+
+#: dllwrap.c:513
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr ""
+
+#: dllwrap.c:514
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr ""
+
+#: dllwrap.c:784
+msgid "Must provide at least one of -o or --dllname options"
+msgstr ""
+
+#: dllwrap.c:813
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+
+#: dllwrap.c:972
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr ""
+
+#: dllwrap.c:973
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr ""
+
+#: dllwrap.c:974
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr ""
+
+#: dllwrap.c:975
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr ""
+
+#: emul_aix.c:51
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr ""
+
+#: emul_aix.c:52
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:53
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:54
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr ""
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr ""
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "numãr invalid"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "lungime ºir invalidã"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "depãºire stivã pentru expresie"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "operator expresie IEEE nesuportat"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr "secþiune necunoscutã"
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr ""
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr ""
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "tip intern (builtin) necunoscut"
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "tip float BCD nu este suportat"
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "numãr neaºteptat"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "tip înregistrare (record) neaºteptat"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr ""
+
+#: ieee.c:1198
+msgid "unknown BB type"
+msgstr "tip BB necunoscut"
+
+#: ieee.c:1207
+msgid "stack overflow"
+msgstr "depãºire stivã"
+
+#: ieee.c:1230
+msgid "stack underflow"
+msgstr "depãsire negativã stivã"
+
+#: ieee.c:1342 ieee.c:1412 ieee.c:2109
+msgid "illegal variable index"
+msgstr "index variabilã ilegal"
+
+#: ieee.c:1390
+msgid "illegal type index"
+msgstr "index tip ilegal"
+
+#: ieee.c:1400 ieee.c:1437
+msgid "unknown TY code"
+msgstr "cod TY necunoscut"
+
+#: ieee.c:1419
+msgid "undefined variable in TY"
+msgstr "variabila nedefinitã în TY"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1830
+msgid "Pascal file name not supported"
+msgstr "nume fiºier Pascal nesuportat"
+
+#: ieee.c:1878
+msgid "unsupported qualifier"
+msgstr ""
+
+#: ieee.c:2147
+msgid "undefined variable in ATN"
+msgstr ""
+
+#: ieee.c:2190
+msgid "unknown ATN type"
+msgstr "tip ATN necunoscut"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2312
+msgid "unsupported ATN11"
+msgstr "ATN11 nesuportat"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2339
+msgid "unsupported ATN12"
+msgstr "ATN12 nesuportat"
+
+#: ieee.c:2399
+msgid "unexpected string in C++ misc"
+msgstr "ºir neaºteptat în C++ misc"
+
+#: ieee.c:2412
+msgid "bad misc record"
+msgstr "înregistrare misc incorectã"
+
+#: ieee.c:2453
+msgid "unrecognized C++ misc record"
+msgstr "secvenþã C++ misc nerecunoscutã"
+
+#: ieee.c:2568
+msgid "undefined C++ object"
+msgstr "obiect C++ nedefinit"
+
+#: ieee.c:2602
+msgid "unrecognized C++ object spec"
+msgstr "spec obiect C++ nerecunoscut"
+
+#: ieee.c:2638
+msgid "unsupported C++ object type"
+msgstr "tip obiect C++ nesuportat"
+
+#: ieee.c:2648
+msgid "C++ base class not defined"
+msgstr ""
+
+#: ieee.c:2660 ieee.c:2765
+msgid "C++ object has no fields"
+msgstr ""
+
+#: ieee.c:2679
+msgid "C++ base class not found in container"
+msgstr ""
+
+#: ieee.c:2786
+msgid "C++ data member not found in container"
+msgstr ""
+
+#: ieee.c:2827 ieee.c:2977
+msgid "unknown C++ visibility"
+msgstr ""
+
+#: ieee.c:2861
+msgid "bad C++ field bit pos or size"
+msgstr ""
+
+#: ieee.c:2953
+msgid "bad type for C++ method function"
+msgstr ""
+
+#: ieee.c:2963
+msgid "no type information for C++ method function"
+msgstr ""
+
+#: ieee.c:3002
+msgid "C++ static virtual method"
+msgstr ""
+
+#: ieee.c:3097
+msgid "unrecognized C++ object overhead spec"
+msgstr ""
+
+#: ieee.c:3136
+msgid "undefined C++ vtable"
+msgstr ""
+
+#: ieee.c:3205
+msgid "C++ default values not in a function"
+msgstr ""
+
+#: ieee.c:3245
+msgid "unrecognized C++ default type"
+msgstr ""
+
+#: ieee.c:3276
+msgid "reference parameter is not a pointer"
+msgstr ""
+
+#: ieee.c:3359
+msgid "unrecognized C++ reference type"
+msgstr "tip referinþã C++ nerecunoscut"
+
+#: ieee.c:3441
+msgid "C++ reference not found"
+msgstr "referinþa C++ nu a fost gãsitã"
+
+#: ieee.c:3449
+msgid "C++ reference is not pointer"
+msgstr "referinþa C++ nu este pointer"
+
+#: ieee.c:3475 ieee.c:3483
+msgid "missing required ASN"
+msgstr "ASN necesar lipseºte"
+
+#: ieee.c:3510 ieee.c:3518
+msgid "missing required ATN65"
+msgstr "ATN65 necesar lipseºte"
+
+#: ieee.c:3532
+msgid "bad ATN65 record"
+msgstr ""
+
+#: ieee.c:4160
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr ""
+
+#: ieee.c:4204
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr ""
+
+#: ieee.c:5203
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr ""
+
+#: ieee.c:5237
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr ""
+
+#: ieee.c:5271
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr ""
+
+#: nlmconv.c:267 srconv.c:1810
+msgid "input and output files must be different"
+msgstr ""
+
+#: nlmconv.c:314
+msgid "input file named both on command line and with INPUT"
+msgstr ""
+
+#: nlmconv.c:323
+msgid "no input file"
+msgstr "nici un fiºier de intrare"
+
+#: nlmconv.c:353
+msgid "no name for output file"
+msgstr "nici un nume pentru fiºierul de ieºire"
+
+#: nlmconv.c:367
+msgid "warning: input and output formats are not compatible"
+msgstr ""
+
+#: nlmconv.c:396
+msgid "make .bss section"
+msgstr "creazã secþiunea .bss"
+
+#: nlmconv.c:405
+msgid "make .nlmsections section"
+msgstr "creazã secþiunea .nlmsections"
+
+#: nlmconv.c:407
+msgid "set .nlmsections flags"
+msgstr "seteazã atribute .nlmsections"
+
+#: nlmconv.c:435
+msgid "set .bss vma"
+msgstr "seteazã vma .bss"
+
+#: nlmconv.c:442
+msgid "set .data size"
+msgstr "seteazã dimensiune .data"
+
+#: nlmconv.c:622
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "avertisment: simbolul %s importat dar nu este prezent în lista de import"
+
+#: nlmconv.c:642
+msgid "set start address"
+msgstr ""
+
+#: nlmconv.c:691
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr ""
+
+#: nlmconv.c:693
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr ""
+
+#: nlmconv.c:695
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr ""
+
+#: nlmconv.c:716 nlmconv.c:905
+msgid "custom section"
+msgstr "secþiune personalizatã"
+
+#: nlmconv.c:737 nlmconv.c:934
+msgid "help section"
+msgstr "secþiune ajutor"
+
+#: nlmconv.c:759 nlmconv.c:952
+msgid "message section"
+msgstr "secþiune mesaj"
+
+#: nlmconv.c:775 nlmconv.c:985
+msgid "module section"
+msgstr "secþiune modul"
+
+#: nlmconv.c:795 nlmconv.c:1001
+msgid "rpc section"
+msgstr "secþiune rpc"
+
+#. There is no place to record this information.
+#: nlmconv.c:831
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr ""
+
+#: nlmconv.c:852 nlmconv.c:1020
+msgid "shared section"
+msgstr "secþiune partajatã"
+
+#: nlmconv.c:860
+msgid "warning: No version number given"
+msgstr "avertisment: Nici un numãr de versiune furnizat"
+
+#: nlmconv.c:900 nlmconv.c:929 nlmconv.c:947 nlmconv.c:996 nlmconv.c:1015
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: citit: %s"
+
+#: nlmconv.c:922
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "avertisment: FULLMAP nu este suportat; încercaþi ld -M"
+
+#: nlmconv.c:1098
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr ""
+
+#: nlmconv.c:1099
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr ""
+
+#: nlmconv.c:1100
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+msgstr ""
+
+#: nlmconv.c:1140
+#, c-format
+msgid "support not compiled in for %s"
+msgstr ""
+
+#: nlmconv.c:1177
+msgid "make section"
+msgstr "creazã secþiune"
+
+#: nlmconv.c:1191
+msgid "set section size"
+msgstr "seteazã dimensiune secþiune"
+
+#: nlmconv.c:1197
+msgid "set section alignment"
+msgstr "seteazã aliniere secþiune"
+
+#: nlmconv.c:1201
+msgid "set section flags"
+msgstr "seteazã atribute secþiune"
+
+#: nlmconv.c:1212
+msgid "set .nlmsections size"
+msgstr "seteazã dimensiune .nlmsections"
+
+#: nlmconv.c:1293 nlmconv.c:1301 nlmconv.c:1310 nlmconv.c:1315
+msgid "set .nlmsection contents"
+msgstr ""
+
+#: nlmconv.c:1794
+msgid "stub section sizes"
+msgstr "dimensiuni secþiune stub"
+
+#: nlmconv.c:1841
+msgid "writing stub"
+msgstr "scriu stub"
+
+#: nlmconv.c:1925
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr ""
+
+#: nlmconv.c:1989
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr ""
+
+#: nlmconv.c:2116
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr ""
+
+#: nlmconv.c:2131
+#, c-format
+msgid "Execution of %s failed"
+msgstr ""
+
+#: nm.c:224 size.c:80 strings.c:651
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr ""
+
+#: nm.c:225
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr ""
+
+#: nm.c:226
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -u, --undefined-only Display only undefined symbols\n"
+" -X 32_64 (ignored)\n"
+" -h, --help Display this information\n"
+" -V, --version Display this program's version number\n"
+"\n"
+msgstr ""
+
+#: nm.c:262 objdump.c:232
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Raportaþi bug-uri la %s.\n"
+
+#: nm.c:294
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: rãdãcinã (radix) invalidã"
+
+#: nm.c:318
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: format de ieºire invalid"
+
+#: nm.c:339 readelf.c:6342 readelf.c:6378
+#, c-format
+msgid "<processor specific>: %d"
+msgstr ""
+
+#: nm.c:341 readelf.c:6345 readelf.c:6390
+#, c-format
+msgid "<OS specific>: %d"
+msgstr ""
+
+#: nm.c:343 readelf.c:6347 readelf.c:6393
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<necunoscut>: %d"
+
+#: nm.c:380
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+
+#: nm.c:1225
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+
+#: nm.c:1227
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+
+#: nm.c:1229 nm.c:1280
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+
+#: nm.c:1232 nm.c:1283
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+
+#: nm.c:1276
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+
+#: nm.c:1278
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+
+#: nm.c:1580
+msgid "Only -X 32_64 is supported"
+msgstr ""
+
+#: nm.c:1600
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr ""
+
+#: nm.c:1601
+msgid "will produce no output, since undefined symbols have no size."
+msgstr ""
+
+#: nm.c:1629
+#, c-format
+msgid "data size %ld"
+msgstr ""
+
+#: objcopy.c:396 srconv.c:1721
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr ""
+
+#: objcopy.c:397
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr ""
+
+#: objcopy.c:398 objcopy.c:487
+#, c-format
+msgid " The options are:\n"
+msgstr ""
+
+#: objcopy.c:399
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set arch of output file, when input is binary\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" 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"
+" -L --localize-symbol <name> Force symbol <name> to be marked as a local\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"
+" -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"
+" -i --interleave <number> Only copy one out of every <number> bytes\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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"
+" --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"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+msgstr ""
+
+#: objcopy.c:485
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr ""
+
+#: objcopy.c:486
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr ""
+
+#: objcopy.c:488
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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"
+" -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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+
+#: objcopy.c:560
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "atribut secþiune nerecunoscut `%s'"
+
+#: objcopy.c:561
+#, c-format
+msgid "supported flags: %s"
+msgstr "atribute suportate: %s"
+
+#: objcopy.c:638
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "nu pot deschide '%s': %s"
+
+#: objcopy.c:641 objcopy.c:2629
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: fread a eºuat"
+
+#: objcopy.c:714
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr ""
+
+#: objcopy.c:976
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr ""
+
+#: objcopy.c:980
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: Simbolului \"%s\" este destinaþie pentru mai mult de o redefinire"
+
+#: objcopy.c:1008
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr ""
+
+#: objcopy.c:1086
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr ""
+
+#: objcopy.c:1089
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr ""
+
+#: objcopy.c:1099
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr ""
+
+#: objcopy.c:1124
+msgid "Unable to change endianness of input file(s)"
+msgstr ""
+
+#: objcopy.c:1133
+#, c-format
+msgid "copy from %s(%s) to %s(%s)\n"
+msgstr ""
+
+#: objcopy.c:1170
+#, c-format
+msgid "Unable to recognise the format of the input file %s"
+msgstr "Nu pot recunoaºte formatul fiºierului de intrare %s"
+
+#: objcopy.c:1174
+#, c-format
+msgid "Warning: Output file cannot represent architecture %s"
+msgstr ""
+
+#: objcopy.c:1211
+#, c-format
+msgid "can't create section `%s': %s"
+msgstr ""
+
+#: objcopy.c:1277
+msgid "there are no sections to be copied!"
+msgstr ""
+
+#: objcopy.c:1323
+#, c-format
+msgid "Can't fill gap after %s: %s"
+msgstr ""
+
+#: objcopy.c:1348
+#, c-format
+msgid "Can't add padding to %s: %s"
+msgstr ""
+
+#: objcopy.c:1514
+#, c-format
+msgid "%s: error copying private BFD data: %s"
+msgstr ""
+
+#: objcopy.c:1525
+msgid "unknown alternate machine code, ignored"
+msgstr ""
+
+#: objcopy.c:1555 objcopy.c:1585
+#, c-format
+msgid "cannot mkdir %s for archive copying (error: %s)"
+msgstr ""
+
+#: objcopy.c:1790
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "Multiple redenumiri ale secþiunii %s"
+
+#: objcopy.c:1841
+msgid "private header data"
+msgstr "date antet privat"
+
+#: objcopy.c:1849
+#, c-format
+msgid "%s: error in %s: %s"
+msgstr "%s: eroare în %s: %s"
+
+#: objcopy.c:1903
+msgid "making"
+msgstr "creez"
+
+#: objcopy.c:1912
+msgid "size"
+msgstr "mãrime"
+
+#: objcopy.c:1926
+msgid "vma"
+msgstr ""
+
+#: objcopy.c:1951
+msgid "alignment"
+msgstr ""
+
+#: objcopy.c:1966
+msgid "flags"
+msgstr "atribute"
+
+#: objcopy.c:1988
+msgid "private data"
+msgstr "date private"
+
+#: objcopy.c:1996
+#, c-format
+msgid "%s: section `%s': error in %s: %s"
+msgstr "%s: secþiune `%s': eroare în %s: %s"
+
+#: objcopy.c:2274
+#, c-format
+msgid "%s: can't create debugging section: %s"
+msgstr "%s: nu pot crea secþiune de depanare: %s"
+
+#: objcopy.c:2288
+#, c-format
+msgid "%s: can't set debugging section contents: %s"
+msgstr ""
+
+#: objcopy.c:2297
+#, c-format
+msgid "%s: don't know how to write debugging information for %s"
+msgstr ""
+
+#: objcopy.c:2472
+msgid "byte number must be non-negative"
+msgstr ""
+
+#: objcopy.c:2482
+msgid "interleave must be positive"
+msgstr ""
+
+#: objcopy.c:2502 objcopy.c:2510
+#, c-format
+msgid "%s both copied and removed"
+msgstr ""
+
+#: objcopy.c:2603 objcopy.c:2674 objcopy.c:2774 objcopy.c:2805 objcopy.c:2829
+#: objcopy.c:2833 objcopy.c:2853
+#, c-format
+msgid "bad format for %s"
+msgstr "format incorect pentru %s"
+
+#: objcopy.c:2624
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "nu pot deschide : %s: %s"
+
+#: objcopy.c:2743
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Avetisment: trunchez umplere-gol de la 0x%s la 0x%x"
+
+#: objcopy.c:2903
+msgid "alternate machine code index must be positive"
+msgstr ""
+
+#: objcopy.c:2961
+msgid "byte number must be less than interleave"
+msgstr ""
+
+#: objcopy.c:2991
+#, c-format
+msgid "architecture %s unknown"
+msgstr ""
+
+#: objcopy.c:2995
+msgid "Warning: input target 'binary' required for binary architecture parameter."
+msgstr ""
+
+#: objcopy.c:2996
+#, c-format
+msgid " Argument %s ignored"
+msgstr "Argument %s ignorat"
+
+#: objcopy.c:3002
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr ""
+
+#: objcopy.c:3042 objcopy.c:3056
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr ""
+
+#: objdump.c:176
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr ""
+
+#: objdump.c:177
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr ""
+
+#: objdump.c:178
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr ""
+
+#: objdump.c:179
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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"
+" -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"
+" -v, --version Display this program's version number\n"
+" -i, --info List object formats and architectures supported\n"
+" -H, --help Display this information\n"
+msgstr ""
+
+#: objdump.c:202
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+
+#: objdump.c:203
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+"\n"
+msgstr ""
+
+#: objdump.c:378
+#, c-format
+msgid "Sections:\n"
+msgstr "Secþiuni:\n"
+
+#: objdump.c:381 objdump.c:385
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Nume Dim VMA LMA Fiºier off Algn"
+
+#: objdump.c:387
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Nume Dim VMA LMA Fiºier off Algn"
+
+#: objdump.c:391
+#, c-format
+msgid " Flags"
+msgstr " Atribute"
+
+#: objdump.c:393
+#, c-format
+msgid " Pg"
+msgstr ""
+
+#: objdump.c:436
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr ""
+
+#: objdump.c:1722
+#, c-format
+msgid "Disassembly of section %s:\n"
+msgstr ""
+
+#: objdump.c:1884
+#, c-format
+msgid "Can't use supplied machine %s"
+msgstr ""
+
+#: objdump.c:1903
+#, c-format
+msgid "Can't disassemble for architecture %s\n"
+msgstr ""
+
+#: objdump.c:1973
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+
+#: objdump.c:1982
+#, c-format
+msgid "Reading %s section of %s failed: %s"
+msgstr ""
+
+#: objdump.c:2026
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+
+#: objdump.c:2153
+#, c-format
+msgid "architecture: %s, "
+msgstr ""
+
+#: objdump.c:2156
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "atribute 0x%08x:\n"
+
+#: objdump.c:2170
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+
+#: objdump.c:2210
+#, c-format
+msgid "Contents of section %s:\n"
+msgstr ""
+
+#: objdump.c:2335
+#, c-format
+msgid "no symbols\n"
+msgstr ""
+
+#: objdump.c:2342
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr ""
+
+#: objdump.c:2345
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr ""
+
+#: objdump.c:2611
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+
+#: objdump.c:2662
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr ""
+
+#: objdump.c:2753
+#, c-format
+msgid "In archive %s:\n"
+msgstr "În arhivã %s:\n"
+
+#: objdump.c:2873
+msgid "unrecognized -E option"
+msgstr "opþiune -E nerecunoscutã"
+
+#: objdump.c:2884
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "tip opþiune --endian nerecunoscutã `%s'"
+
+#: rdcoff.c:196
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr ""
+
+#: rdcoff.c:404 rdcoff.c:509 rdcoff.c:697
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr ""
+
+#: rdcoff.c:420 rdcoff.c:717
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr ""
+
+#: rdcoff.c:784
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr ""
+
+#: rdcoff.c:834
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr ""
+
+#: rddbg.c:85
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: nici o informaþie de depanare recunoscutã"
+
+#: rddbg.c:394
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr ""
+
+#: readelf.c:272
+#, c-format
+msgid "%s: Error: "
+msgstr ""
+
+#: readelf.c:283
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Avertisment: "
+
+#: readelf.c:298
+#, c-format
+msgid "Unable to seek to 0x%x for %s\n"
+msgstr ""
+
+#: readelf.c:310
+#, c-format
+msgid "Out of memory allocating 0x%x bytes for %s\n"
+msgstr ""
+
+#: readelf.c:318
+#, c-format
+msgid "Unable to read in 0x%x bytes of %s\n"
+msgstr "Nu pot citi în cei 0x%x octeþi ai lui %s\n"
+
+#: readelf.c:364 readelf.c:412 readelf.c:615 readelf.c:647
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr ""
+
+#: readelf.c:752
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr ""
+
+#: readelf.c:772 readelf.c:799 readelf.c:842 readelf.c:869
+msgid "relocs"
+msgstr ""
+
+#: readelf.c:782 readelf.c:809 readelf.c:852 readelf.c:879
+msgid "out of memory parsing relocs"
+msgstr ""
+
+#: readelf.c:933
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr ""
+
+#: readelf.c:935
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr ""
+
+#: readelf.c:940
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr ""
+
+#: readelf.c:942
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr ""
+
+#: readelf.c:950
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr ""
+
+#: readelf.c:952
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr ""
+
+#: readelf.c:957
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr ""
+
+#: readelf.c:959
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr ""
+
+#: readelf.c:1239 readelf.c:1241 readelf.c:1324 readelf.c:1326 readelf.c:1335
+#: readelf.c:1337
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr ""
+
+#: readelf.c:1295
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr ""
+
+#: readelf.c:1297
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr ""
+
+#: readelf.c:1569
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr ""
+
+#: readelf.c:1588
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr ""
+
+#: readelf.c:1592 readelf.c:2370
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "necunoscut>: %lx"
+
+#: readelf.c:1605
+msgid "NONE (None)"
+msgstr "NONE (Nimic)"
+
+#: readelf.c:1606
+msgid "REL (Relocatable file)"
+msgstr "REL (Fiºier realocabil)"
+
+#: readelf.c:1607
+msgid "EXEC (Executable file)"
+msgstr "EXEC (Fiºier executabil)"
+
+#: readelf.c:1608
+msgid "DYN (Shared object file)"
+msgstr ""
+
+#: readelf.c:1609
+msgid "CORE (Core file)"
+msgstr ""
+
+#: readelf.c:1613
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr ""
+
+#: readelf.c:1615
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr ""
+
+#: readelf.c:1617 readelf.c:1724 readelf.c:2554
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<necunoscut>: %x"
+
+#: readelf.c:1629
+msgid "None"
+msgstr "Nimic"
+
+#: readelf.c:2229
+msgid "Standalone App"
+msgstr "Aplicaþie independentã"
+
+#: readelf.c:2232 readelf.c:2952 readelf.c:2968
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<necunoscut: %x>"
+
+#: readelf.c:2597
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr ""
+
+#: readelf.c:2598
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr ""
+
+#: readelf.c:2599
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -S --section-headers Display the sections' header\n"
+" --sections An alias for --section-headers\n"
+" -g --section-groups Display the section groups\n"
+" -e --headers Equivalent to: -h -l -S\n"
+" -s --syms Display the symbol table\n"
+" --symbols An alias for --syms\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number> Dump the contents of section <number>\n"
+" -w[liaprmfFsoR] or\n"
+" --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+
+#: readelf.c:2622
+#, c-format
+msgid ""
+" -i --instruction-dump=<number>\n"
+" Disassemble the contents of section <number>\n"
+msgstr ""
+
+#: readelf.c:2626
+#, c-format
+msgid ""
+" -I --histogram Display histogram of bucket list lengths\n"
+" -W --wide Allow output width to exceed 80 characters\n"
+" -H --help Display this information\n"
+" -v --version Display the version number of readelf\n"
+msgstr ""
+
+#: readelf.c:2651 readelf.c:12118
+msgid "Out of memory allocating dump request table."
+msgstr ""
+
+#: readelf.c:2820 readelf.c:2888
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Opþiune de depanare nerecunoscutã '%s'\n"
+
+#: readelf.c:2922
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Opþiune invalidã '-%c'\n"
+
+#: readelf.c:2936
+msgid "Nothing to do.\n"
+msgstr ""
+
+#: readelf.c:2948 readelf.c:2964 readelf.c:5906
+msgid "none"
+msgstr "nimic"
+
+#: readelf.c:2965
+msgid "2's complement, little endian"
+msgstr ""
+
+#: readelf.c:2966
+msgid "2's complement, big endian"
+msgstr ""
+
+#: readelf.c:2984
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr ""
+
+#: readelf.c:2992
+#, c-format
+msgid "ELF Header:\n"
+msgstr ""
+
+#: readelf.c:2993
+#, c-format
+msgid " Magic: "
+msgstr ""
+
+#: readelf.c:2997
+#, c-format
+msgid " Class: %s\n"
+msgstr " Clasa: %s\n"
+
+#: readelf.c:2999
+#, c-format
+msgid " Data: %s\n"
+msgstr " Date: %s\n"
+
+#: readelf.c:3001
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " Versiune: %d %s\n"
+
+#: readelf.c:3008
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS/ABI: %s\n"
+
+#: readelf.c:3010
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " Versiune ABI: %d\n"
+
+#: readelf.c:3012
+#, c-format
+msgid " Type: %s\n"
+msgstr " Tip: %s\n"
+
+#: readelf.c:3014
+#, c-format
+msgid " Machine: %s\n"
+msgstr " Maºinã: %s\n"
+
+#: readelf.c:3016
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " Versiune: 0x%lx\n"
+
+#: readelf.c:3019
+#, c-format
+msgid " Entry point address: "
+msgstr " Adresã punct de intrare: "
+
+#: readelf.c:3021
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" Începutul antetelor programului: "
+
+#: readelf.c:3023
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+
+#: readelf.c:3025
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (octeþi în fiºier)\n"
+
+#: readelf.c:3027
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Atribute: 0x%lx%s\n"
+
+#: readelf.c:3030
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr ""
+
+#: readelf.c:3032
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr ""
+
+#: readelf.c:3034
+#, c-format
+msgid " Number of program headers: %ld\n"
+msgstr ""
+
+#: readelf.c:3036
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr ""
+
+#: readelf.c:3038
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr ""
+
+#: readelf.c:3043
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr ""
+
+#: readelf.c:3074 readelf.c:3107
+msgid "program headers"
+msgstr "antete program"
+
+#: 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
+msgid "Out of memory\n"
+msgstr "Memorie insuficientã\n"
+
+#: readelf.c:3172
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+
+#: readelf.c:3178
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Tipul fiºierului elf este %s\n"
+
+#: readelf.c:3179
+#, c-format
+msgid "Entry point "
+msgstr ""
+
+#: readelf.c:3181
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+
+#: readelf.c:3193 readelf.c:3195
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+
+#: readelf.c:3199
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr ""
+
+#: readelf.c:3202
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr ""
+
+#: readelf.c:3206
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr ""
+
+#: readelf.c:3208
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr ""
+
+#: readelf.c:3301
+msgid "more than one dynamic segment\n"
+msgstr ""
+
+#: readelf.c:3312
+msgid "no .dynamic section in the dynamic segment"
+msgstr ""
+
+#: readelf.c:3321
+msgid "the .dynamic section is not contained within the dynamic segment"
+msgstr ""
+
+#: readelf.c:3323
+msgid "the .dynamic section is not the first section in the dynamic segment."
+msgstr ""
+
+#: readelf.c:3337
+msgid "Unable to find program interpreter name\n"
+msgstr ""
+
+#: readelf.c:3344
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+
+#: readelf.c:3356
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+
+#: readelf.c:3357
+#, c-format
+msgid " Segment Sections...\n"
+msgstr ""
+
+#: readelf.c:3408
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr ""
+
+#: readelf.c:3424
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr ""
+
+#: readelf.c:3438 readelf.c:3479
+msgid "section headers"
+msgstr "antete secþiune"
+
+#: readelf.c:3523 readelf.c:3586
+msgid "symbols"
+msgstr "simboluri"
+
+#: readelf.c:3533 readelf.c:3596
+msgid "symtab shndx"
+msgstr "symtab shndx"
+
+#: readelf.c:3697 readelf.c:3977
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"Nu existã nici o secþiune în acest fiºier.\n"
+
+#: readelf.c:3703
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr ""
+
+#: readelf.c:3720 readelf.c:4079 readelf.c:4290 readelf.c:4591 readelf.c:5011
+#: readelf.c:6618
+msgid "string table"
+msgstr ""
+
+#: readelf.c:3765
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr ""
+
+#: readelf.c:3777
+msgid "File contains multiple dynamic string tables\n"
+msgstr ""
+
+#: readelf.c:3782
+msgid "dynamic strings"
+msgstr ""
+
+#: readelf.c:3789
+msgid "File contains multiple symtab shndx tables\n"
+msgstr ""
+
+#: readelf.c:3828
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+
+#: readelf.c:3830
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+
+#: readelf.c:3834
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:3837
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:3840
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr ""
+
+#: readelf.c:3841
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr ""
+
+#: readelf.c:3936
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+
+#: readelf.c:3954
+#, c-format
+msgid "[<unknown>: 0x%x]"
+msgstr "[<necunoscut>: 0x%x]"
+
+#: readelf.c:3984
+msgid "Section headers are not available!\n"
+msgstr ""
+
+#: readelf.c:4008
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+
+#: readelf.c:4042
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:4061
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr ""
+
+#: readelf.c:4085 readelf.c:6947
+msgid "section data"
+msgstr "date secþiune"
+
+#: readelf.c:4097
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [Index] Nume\n"
+
+#: readelf.c:4114
+#, c-format
+msgid "section [%5u] already in group section [%5u]\n"
+msgstr ""
+
+#: readelf.c:4127
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr ""
+
+#: readelf.c:4224
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+
+#: readelf.c:4236
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+
+#: readelf.c:4260
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+
+#: readelf.c:4265 readelf.c:4666 readelf.c:4680 readelf.c:5025
+#, c-format
+msgid "'%s'"
+msgstr ""
+
+#: readelf.c:4267 readelf.c:4682 readelf.c:5027
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:4308
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+
+#: readelf.c:4482 readelf.c:4862
+msgid "unwind table"
+msgstr "deruleazã tabel"
+
+#: readelf.c:4540 readelf.c:4959
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr ""
+
+#: readelf.c:4598 readelf.c:5018 readelf.c:5069
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+
+#: readelf.c:4661
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+
+#: readelf.c:4673
+msgid "unwind info"
+msgstr ""
+
+#: readelf.c:4675 readelf.c:5024
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+
+#: readelf.c:5228 readelf.c:5272
+msgid "dynamic section"
+msgstr "secþiune dinamicã"
+
+#: readelf.c:5349
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+
+#: readelf.c:5387
+msgid "Unable to seek to end of file!"
+msgstr ""
+
+#: readelf.c:5400
+msgid "Unable to determine the number of symbols to load\n"
+msgstr ""
+
+#: readelf.c:5435
+msgid "Unable to seek to end of file\n"
+msgstr ""
+
+#: readelf.c:5442
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr ""
+
+#: readelf.c:5447
+msgid "dynamic string table"
+msgstr ""
+
+#: readelf.c:5482
+msgid "symbol information"
+msgstr ""
+
+#: readelf.c:5507
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+
+#: readelf.c:5510
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr ""
+
+#: readelf.c:5546
+#, c-format
+msgid "Auxiliary library"
+msgstr ""
+
+#: readelf.c:5550
+#, c-format
+msgid "Filter library"
+msgstr ""
+
+#: readelf.c:5554
+#, c-format
+msgid "Configuration file"
+msgstr "Fiºier de configurare"
+
+#: readelf.c:5558
+#, c-format
+msgid "Dependency audit library"
+msgstr ""
+
+#: readelf.c:5562
+#, c-format
+msgid "Audit library"
+msgstr ""
+
+#: readelf.c:5580 readelf.c:5608 readelf.c:5636
+#, c-format
+msgid "Flags:"
+msgstr "Atribute:"
+
+#: readelf.c:5583 readelf.c:5611 readelf.c:5638
+#, c-format
+msgid " None\n"
+msgstr "Nimic\n"
+
+#: readelf.c:5759
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Bibliotecã partajatã: [%s]"
+
+#: readelf.c:5762
+#, c-format
+msgid " program interpreter"
+msgstr " interpretor de programe"
+
+#: readelf.c:5766
+#, c-format
+msgid "Library soname: [%s]"
+msgstr ""
+
+#: readelf.c:5770
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr ""
+
+#: readelf.c:5774
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "Cale de rulare bibliotecã: [%s]"
+
+#: readelf.c:5837
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr ""
+
+#: readelf.c:5951
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %ld entries:\n"
+msgstr ""
+
+#: readelf.c:5954
+#, c-format
+msgid " Addr: 0x"
+msgstr ""
+
+#: readelf.c:5956 readelf.c:6148
+#, c-format
+msgid " Offset: %#08lx Link: %lx (%s)\n"
+msgstr ""
+
+#: readelf.c:5961
+msgid "version definition section"
+msgstr ""
+
+#: readelf.c:5987
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: Rev: %d Atribute: %s"
+
+#: readelf.c:5990
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr ""
+
+#: readelf.c:6001
+#, c-format
+msgid "Name: %s\n"
+msgstr "Nume: %s\n"
+
+#: readelf.c:6003
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Nume index: %ld\n"
+
+#: readelf.c:6018
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: Pãrinte %d: %s\n"
+
+#: readelf.c:6021
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr ""
+
+#: readelf.c:6040
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %ld entries:\n"
+msgstr ""
+
+#: readelf.c:6043
+#, c-format
+msgid " Addr: 0x"
+msgstr " Addr: 0x"
+
+#: readelf.c:6045
+#, c-format
+msgid " Offset: %#08lx Link to section: %ld (%s)\n"
+msgstr ""
+
+#: readelf.c:6050
+msgid "version need section"
+msgstr ""
+
+#: readelf.c:6072
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr ""
+
+#: readelf.c:6075
+#, c-format
+msgid " File: %s"
+msgstr " Fiºier: %s"
+
+#: readelf.c:6077
+#, c-format
+msgid " File: %lx"
+msgstr " Fiºier: %lx"
+
+#: readelf.c:6079
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " Cnt: %d\n"
+
+#: readelf.c:6097
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: Nume: %s"
+
+#: readelf.c:6100
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: Nume index: %lx"
+
+#: readelf.c:6103
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Atribute: %s Versiune: %d\n"
+
+#: readelf.c:6139
+msgid "version string table"
+msgstr ""
+
+#: readelf.c:6143
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+
+#: readelf.c:6146
+#, c-format
+msgid " Addr: "
+msgstr " Addr: "
+
+#: readelf.c:6156
+msgid "version symbol data"
+msgstr ""
+
+#: readelf.c:6183
+msgid " 0 (*local*) "
+msgstr ""
+
+#: readelf.c:6187
+msgid " 1 (*global*) "
+msgstr ""
+
+#: readelf.c:6223 readelf.c:6677
+msgid "version need"
+msgstr ""
+
+#: readelf.c:6233
+msgid "version need aux (2)"
+msgstr ""
+
+#: readelf.c:6275 readelf.c:6740
+msgid "version def"
+msgstr ""
+
+#: readelf.c:6294 readelf.c:6755
+msgid "version def aux"
+msgstr ""
+
+#: readelf.c:6325
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+
+#: readelf.c:6456
+msgid "Unable to read in dynamic data\n"
+msgstr ""
+
+#: readelf.c:6509
+msgid "Unable to seek to start of dynamic information"
+msgstr ""
+
+#: readelf.c:6515
+msgid "Failed to read in number of buckets\n"
+msgstr ""
+
+#: readelf.c:6521
+msgid "Failed to read in number of chains\n"
+msgstr ""
+
+#: readelf.c:6541
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+
+#: readelf.c:6543
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:6545
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:6597
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:6601
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:6603
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:6649
+msgid "version data"
+msgstr ""
+
+#: readelf.c:6690
+msgid "version need aux (3)"
+msgstr ""
+
+#: readelf.c:6715
+msgid "bad dynamic symbol"
+msgstr ""
+
+#: readelf.c:6778
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+
+#: readelf.c:6790
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+
+#: readelf.c:6792
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr ""
+
+#: readelf.c:6797 readelf.c:6813 readelf.c:10967 readelf.c:11159
+msgid "Out of memory"
+msgstr ""
+
+#: readelf.c:6862
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+
+#: readelf.c:6865
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr ""
+
+#: readelf.c:6917
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+
+#: readelf.c:6938
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+
+#: readelf.c:6943
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+
+#: readelf.c:7090
+msgid "badly formed extended line op encountered!\n"
+msgstr ""
+
+#: readelf.c:7097
+#, c-format
+msgid " Extended opcode %d: "
+msgstr ""
+
+#: readelf.c:7102
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+
+#: readelf.c:7108
+#, c-format
+msgid "set Address to 0x%lx\n"
+msgstr ""
+
+#: readelf.c:7113
+#, c-format
+msgid " define new File Table entry\n"
+msgstr ""
+
+#: readelf.c:7114 readelf.c:9032
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr ""
+
+#: readelf.c:7116
+#, c-format
+msgid " %d\t"
+msgstr ""
+
+#: 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 ""
+
+#: readelf.c:7128
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr ""
+
+#: readelf.c:7155
+msgid "debug_str section data"
+msgstr ""
+
+#: readelf.c:7173
+msgid "<no .debug_str section>"
+msgstr ""
+
+#: readelf.c:7176
+msgid "<offset is too big>"
+msgstr ""
+
+#: readelf.c:7201
+msgid "debug_loc section data"
+msgstr ""
+
+#: readelf.c:7235
+msgid "debug_range section data"
+msgstr "date secþiune debug_range"
+
+#: readelf.c:7307
+#, c-format
+msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
+msgstr ""
+
+#: readelf.c:7321
+#, c-format
+msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
+msgstr ""
+
+#: readelf.c:7565
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr ""
+
+#: readelf.c:7601
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr ""
+
+#: readelf.c:7610
+#, c-format
+msgid " %lu byte block: "
+msgstr ""
+
+#: 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 ""
+
+#: readelf.c:8113
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr ""
+
+#: readelf.c:8162
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr ""
+
+#: readelf.c:8171
+#, c-format
+msgid "Unrecognized form: %d\n"
+msgstr "Formã nerecunoscutã: %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 ""
+
+#: readelf.c:8413 readelf.c:9537
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr ""
+
+#: readelf.c:8416
+#, c-format
+msgid "(location list)"
+msgstr ""
+
+#: readelf.c:8534
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr ""
+
+#: readelf.c:8602
+msgid "No comp units in .debug_info section ?"
+msgstr ""
+
+#: readelf.c:8611
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr ""
+
+#: readelf.c:8619 readelf.c:9630
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+
+#: readelf.c:8693
+#, c-format
+msgid " Compilation Unit @ %lx:\n"
+msgstr ""
+
+#: readelf.c:8694
+#, c-format
+msgid " Length: %ld\n"
+msgstr ""
+
+#: readelf.c:8695
+#, c-format
+msgid " Version: %d\n"
+msgstr ""
+
+#: readelf.c:8696
+#, c-format
+msgid " Abbrev Offset: %ld\n"
+msgstr ""
+
+#: readelf.c:8697
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr ""
+
+#: readelf.c:8702
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr ""
+
+#: readelf.c:8717
+msgid "Unable to locate .debug_abbrev section!\n"
+msgstr ""
+
+#: readelf.c:8722
+msgid "debug_abbrev section data"
+msgstr ""
+
+#: readelf.c:8759
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr ""
+
+#: readelf.c:8765
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr ""
+
+#: readelf.c:8838
+#, c-format
+msgid "%s section needs a populated .debug_info section\n"
+msgstr ""
+
+#: readelf.c:8845
+#, c-format
+msgid "%s section has more comp units than .debug_info section\n"
+msgstr ""
+
+#: readelf.c:8847
+#, c-format
+msgid ""
+"assuming that the pointer size is %d, from the last comp unit in .debug_info\n"
+"\n"
+msgstr ""
+
+#: readelf.c:8891
+msgid "extracting information from .debug_info section"
+msgstr ""
+
+#: readelf.c:8909
+#, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+
+#: readelf.c:8948
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr ""
+
+#: readelf.c:8957
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr ""
+
+#: readelf.c:8984
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Lungime: %ld\n"
+
+#: readelf.c:8985
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " Versiune DWARF: %d\n"
+
+#: readelf.c:8986
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr ""
+
+#: readelf.c:8987
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr ""
+
+#: readelf.c:8988
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr ""
+
+#: readelf.c:8989
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " Ba Linie: %d\n"
+
+#: readelf.c:8990
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " Interval Linie: %d\n"
+
+#: readelf.c:8991
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " Bazã Opcode: %d\n"
+
+#: readelf.c:8992
+#, c-format
+msgid " (Pointer size: %u)\n"
+msgstr " (Dimensiune Pointer: %u)\n"
+
+#: readelf.c:9001
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Opcode-uri:\n"
+
+#: readelf.c:9004
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " Opcode %d are %d argumente\n"
+
+#: readelf.c:9010
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+
+#: readelf.c:9013
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" Tabelul Director:\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 ""
+
+#: readelf.c:9031
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+
+#: readelf.c:9039
+#, c-format
+msgid " %d\t"
+msgstr ""
+
+#: readelf.c:9050
+#, c-format
+msgid "%s\n"
+msgstr ""
+
+#. Now display the statements.
+#: readelf.c:9058
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+
+#: readelf.c:9073
+#, c-format
+msgid " Special opcode %d: advance Address by %d to 0x%lx"
+msgstr ""
+
+#: readelf.c:9077
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr ""
+
+#: readelf.c:9088
+#, c-format
+msgid " Copy\n"
+msgstr "Copiazã\n"
+
+#: readelf.c:9095
+#, c-format
+msgid " Advance PC by %d to %lx\n"
+msgstr ""
+
+#: readelf.c:9103
+#, c-format
+msgid " Advance Line by %d to %d\n"
+msgstr ""
+
+#: readelf.c:9110
+#, c-format
+msgid " Set File Name to entry %d in the File Name Table\n"
+msgstr ""
+
+#: readelf.c:9118
+#, c-format
+msgid " Set column to %d\n"
+msgstr ""
+
+#: readelf.c:9125
+#, c-format
+msgid " Set is_stmt to %d\n"
+msgstr ""
+
+#: readelf.c:9130
+#, c-format
+msgid " Set basic block\n"
+msgstr ""
+
+#: readelf.c:9138
+#, c-format
+msgid " Advance PC by constant %d to 0x%lx\n"
+msgstr ""
+
+#: readelf.c:9146
+#, c-format
+msgid " Advance PC by fixed size amount %d to 0x%lx\n"
+msgstr ""
+
+#: readelf.c:9151
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr ""
+
+#: readelf.c:9155
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr ""
+
+#: readelf.c:9161
+#, c-format
+msgid " Set ISA to %d\n"
+msgstr ""
+
+#: readelf.c:9165
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr ""
+
+#: readelf.c:9193 readelf.c:9279 readelf.c:9354
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+
+#: readelf.c:9233
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr ""
+
+#: readelf.c:9240
+#, c-format
+msgid " Length: %ld\n"
+msgstr ""
+
+#: readelf.c:9242
+#, c-format
+msgid " Version: %d\n"
+msgstr ""
+
+#: readelf.c:9244
+#, c-format
+msgid " Offset into .debug_info section: %ld\n"
+msgstr ""
+
+#: readelf.c:9246
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr ""
+
+#: readelf.c:9249
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+
+#: readelf.c:9300
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr ""
+
+#: readelf.c:9306
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr ""
+
+#: readelf.c:9314
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr ""
+
+#: readelf.c:9323
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr ""
+
+#: readelf.c:9335
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr ""
+
+#: readelf.c:9363
+#, c-format
+msgid " Number TAG\n"
+msgstr ""
+
+#: readelf.c:9369
+#, c-format
+msgid " %ld %s [%s]\n"
+msgstr ""
+
+#: readelf.c:9372
+msgid "has children"
+msgstr ""
+
+#: readelf.c:9372
+msgid "no children"
+msgstr ""
+
+#: readelf.c:9375
+#, c-format
+msgid " %-18s %s\n"
+msgstr ""
+
+#: readelf.c:9410
+#, c-format
+msgid ""
+"\n"
+"The .debug_loc section is empty.\n"
+msgstr ""
+
+#. FIXME: Should we handle this case?
+#: readelf.c:9455
+msgid "Location lists in .debug_info section aren't in ascending order!\n"
+msgstr ""
+
+#: readelf.c:9458
+msgid "No location lists in .debug_info section!\n"
+msgstr ""
+
+#: readelf.c:9461
+#, c-format
+msgid "Location lists in .debug_loc section start at 0x%lx\n"
+msgstr ""
+
+#: readelf.c:9464
+#, c-format
+msgid ""
+"Contents of the .debug_loc section:\n"
+"\n"
+msgstr ""
+
+#: readelf.c:9465
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr ""
+
+#: readelf.c:9495
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr ""
+
+#: readelf.c:9498
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr ""
+
+#: readelf.c:9512 readelf.c:9837
+#, c-format
+msgid " %8.8lx <End of list>\n"
+msgstr ""
+
+#: 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 ""
+
+#: readelf.c:9570
+#, c-format
+msgid ""
+"Contents of the .debug_str section:\n"
+"\n"
+msgstr ""
+
+#: readelf.c:9675
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr ""
+
+#: readelf.c:9679
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Lungime: %ld\n"
+
+#: readelf.c:9680
+#, c-format
+msgid " Version: %d\n"
+msgstr " Versiune: %d\n"
+
+#: readelf.c:9681
+#, c-format
+msgid " Offset into .debug_info: %lx\n"
+msgstr ""
+
+#: readelf.c:9682
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr ""
+
+#: readelf.c:9683
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr ""
+
+#: readelf.c:9685
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+
+#: readelf.c:9741
+#, c-format
+msgid ""
+"\n"
+"The .debug_ranges section is empty.\n"
+msgstr ""
+
+#. FIXME: Should we handle this case?
+#: readelf.c:9786
+msgid "Range lists in .debug_info section aren't in ascending order!\n"
+msgstr ""
+
+#: readelf.c:9789
+msgid "No range lists in .debug_info section!\n"
+msgstr ""
+
+#: readelf.c:9792
+#, c-format
+msgid "Range lists in .debug_ranges section start at 0x%lx\n"
+msgstr ""
+
+#: readelf.c:9795
+#, c-format
+msgid ""
+"Contents of the .debug_ranges section:\n"
+"\n"
+msgstr ""
+
+#: readelf.c:9796
+#, c-format
+msgid " Offset Begin End\n"
+msgstr ""
+
+#: readelf.c:9820
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
+msgstr ""
+
+#: readelf.c:9823
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
+msgstr ""
+
+#: readelf.c:10017
+#, c-format
+msgid "The section %s contains:\n"
+msgstr ""
+
+#: readelf.c:10663
+#, c-format
+msgid "unsupported or unknown DW_CFA_%d\n"
+msgstr ""
+
+#: readelf.c:10688
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr ""
+
+#: readelf.c:10732
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+
+#: readelf.c:10746
+msgid "debug section data"
+msgstr "date secþiune depanare"
+
+#: readelf.c:10765
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "Secþiune depanare nerecunoscutã: %s\n"
+
+#: readelf.c:10800
+#, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr ""
+
+#: readelf.c:10872 readelf.c:11236
+msgid "liblist"
+msgstr ""
+
+#: readelf.c:10961
+msgid "options"
+msgstr "opþiuni"
+
+#: readelf.c:10991
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+
+#: readelf.c:11152
+msgid "conflict list found without a dynamic symbol table"
+msgstr ""
+
+#: readelf.c:11168 readelf.c:11182
+msgid "conflict"
+msgstr ""
+
+#: readelf.c:11192
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:11194
+msgid " Num: Index Value Name"
+msgstr ""
+
+#: readelf.c:11243
+msgid "liblist string table"
+msgstr ""
+
+#: readelf.c:11252
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:11303
+msgid "NT_AUXV (auxiliary vector)"
+msgstr ""
+
+#: readelf.c:11305
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr ""
+
+#: readelf.c:11307
+msgid "NT_FPREGSET (floating point registers)"
+msgstr ""
+
+#: readelf.c:11309
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr ""
+
+#: readelf.c:11311
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr ""
+
+#: readelf.c:11313
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr ""
+
+#: readelf.c:11315
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr ""
+
+#: readelf.c:11317
+msgid "NT_FPREGS (floating point registers)"
+msgstr ""
+
+#: readelf.c:11319
+msgid "NT_PSINFO (psinfo structure)"
+msgstr ""
+
+#: readelf.c:11321
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr ""
+
+#: readelf.c:11323
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr ""
+
+#: readelf.c:11325
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr ""
+
+#: readelf.c:11333
+msgid "NT_VERSION (version)"
+msgstr ""
+
+#: readelf.c:11335
+msgid "NT_ARCH (architecture)"
+msgstr ""
+
+#: readelf.c:11340 readelf.c:11362
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr ""
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:11352
+msgid "NetBSD procinfo structure"
+msgstr ""
+
+#: readelf.c:11379 readelf.c:11393
+msgid "PT_GETREGS (reg structure)"
+msgstr ""
+
+#: readelf.c:11381 readelf.c:11395
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr ""
+
+#: readelf.c:11401
+#, c-format
+msgid "PT_FIRSTMACH+%d"
+msgstr ""
+
+#: readelf.c:11447
+msgid "notes"
+msgstr "note"
+
+#: readelf.c:11453
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+
+#: readelf.c:11455
+#, c-format
+msgid " Owner\t\tData size\tDescription\n"
+msgstr ""
+
+#: readelf.c:11474
+#, c-format
+msgid "corrupt note found at offset %x into core notes\n"
+msgstr ""
+
+#: readelf.c:11476
+#, c-format
+msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
+msgstr ""
+
+#: readelf.c:11574
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr ""
+
+#: readelf.c:11653
+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"
+msgstr ""
+
+#: readelf.c:11700 readelf.c:12059
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr ""
+
+#: readelf.c:11713
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Fiºier: %s\n"
+
+#: readelf.c:11876 readelf.c:11897 readelf.c:11934 readelf.c:12014
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr ""
+
+#: readelf.c:11887
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr ""
+
+#: readelf.c:11919
+#, c-format
+msgid "%s: failed to read string table\n"
+msgstr ""
+
+#: readelf.c:11955
+#, c-format
+msgid "%s: invalid archive string table offset %lu\n"
+msgstr ""
+
+#: readelf.c:11971
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr ""
+
+#: readelf.c:12003
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr ""
+
+#: readelf.c:12037
+#, c-format
+msgid "'%s': No such file\n"
+msgstr ""
+
+#: readelf.c:12039
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr ""
+
+#: readelf.c:12046
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "'%s' nu este un fiºier obiºnuit\n"
+
+#: readelf.c:12053
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr ""
+
+#: rename.c:127
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s: nu pot seta timpul: %s"
+
+#. We have to clean up here.
+#: rename.c:162 rename.c:200
+#, c-format
+msgid "unable to rename '%s' reason: %s"
+msgstr "nu pot redenumi '%s' motiv: %s"
+
+#: rename.c:208
+#, c-format
+msgid "unable to copy file '%s' reason: %s"
+msgstr "nu pot copia fiºierul '%s' motiv: %s"
+
+#: resbin.c:132
+#, c-format
+msgid "%s: not enough binary data"
+msgstr ""
+
+#: resbin.c:148
+msgid "null terminated unicode string"
+msgstr ""
+
+#: resbin.c:175 resbin.c:181
+msgid "resource ID"
+msgstr ""
+
+#: resbin.c:221
+msgid "cursor"
+msgstr ""
+
+#: resbin.c:253 resbin.c:260
+msgid "menu header"
+msgstr ""
+
+#: resbin.c:270
+msgid "menuex header"
+msgstr ""
+
+#: resbin.c:274
+msgid "menuex offset"
+msgstr ""
+
+#: resbin.c:281
+#, c-format
+msgid "unsupported menu version %d"
+msgstr ""
+
+#: resbin.c:306 resbin.c:321 resbin.c:384
+msgid "menuitem header"
+msgstr ""
+
+#: resbin.c:414
+msgid "menuitem"
+msgstr "articol-meniu"
+
+#: resbin.c:453 resbin.c:481
+msgid "dialog header"
+msgstr "antet dialog"
+
+#: resbin.c:471
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr ""
+
+#: resbin.c:516
+msgid "dialog font point size"
+msgstr ""
+
+#: resbin.c:524
+msgid "dialogex font information"
+msgstr ""
+
+#: resbin.c:550 resbin.c:568
+msgid "dialog control"
+msgstr ""
+
+#: resbin.c:560
+msgid "dialogex control"
+msgstr ""
+
+#: resbin.c:589
+msgid "dialog control end"
+msgstr ""
+
+#: resbin.c:601
+msgid "dialog control data"
+msgstr ""
+
+#: resbin.c:642
+msgid "stringtable string length"
+msgstr ""
+
+#: resbin.c:652
+msgid "stringtable string"
+msgstr ""
+
+#: resbin.c:683
+msgid "fontdir header"
+msgstr ""
+
+#: resbin.c:696
+msgid "fontdir"
+msgstr ""
+
+#: resbin.c:712
+msgid "fontdir device name"
+msgstr ""
+
+#: resbin.c:718
+msgid "fontdir face name"
+msgstr "nume faþã fontdir"
+
+#: resbin.c:759
+msgid "accelerator"
+msgstr "accelerator"
+
+#: resbin.c:819
+msgid "group cursor header"
+msgstr ""
+
+#: resbin.c:823
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr ""
+
+#: resbin.c:838
+msgid "group cursor"
+msgstr ""
+
+#: resbin.c:875
+msgid "group icon header"
+msgstr ""
+
+#: resbin.c:879
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr ""
+
+#: resbin.c:894
+msgid "group icon"
+msgstr "grup pictogramã"
+
+#: resbin.c:957 resbin.c:1174
+msgid "unexpected version string"
+msgstr ""
+
+#: resbin.c:989
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr ""
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected version type %d"
+msgstr ""
+
+#: resbin.c:1005
+#, c-format
+msgid "unexpected fixed version information length %d"
+msgstr ""
+
+#: resbin.c:1008
+msgid "fixed version info"
+msgstr ""
+
+#: resbin.c:1012
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr ""
+
+#: resbin.c:1016
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr ""
+
+#: resbin.c:1045
+msgid "version var info"
+msgstr ""
+
+#: resbin.c:1062
+#, c-format
+msgid "unexpected stringfileinfo value length %d"
+msgstr ""
+
+#: resbin.c:1072
+#, c-format
+msgid "unexpected version stringtable value length %d"
+msgstr ""
+
+#: resbin.c:1106
+#, c-format
+msgid "unexpected version string length %d != %d + %d"
+msgstr ""
+
+#: resbin.c:1117
+#, c-format
+msgid "unexpected version string length %d < %d"
+msgstr ""
+
+#: resbin.c:1134
+#, c-format
+msgid "unexpected varfileinfo value length %d"
+msgstr ""
+
+#: resbin.c:1153
+msgid "version varfileinfo"
+msgstr ""
+
+#: resbin.c:1168
+#, c-format
+msgid "unexpected version value length %d"
+msgstr ""
+
+#: rescoff.c:126
+msgid "filename required for COFF input"
+msgstr ""
+
+#: rescoff.c:143
+#, c-format
+msgid "%s: no resource section"
+msgstr ""
+
+#: rescoff.c:150
+msgid "can't read resource section"
+msgstr ""
+
+#: rescoff.c:174
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr ""
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "director"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "intrare directorul numit"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr ""
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "subdirectorul numit"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "resursã numitã"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "intrare director ID"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "subdirector ID"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "resursã ID"
+
+#: rescoff.c:318
+msgid "resource type unknown"
+msgstr ""
+
+#: rescoff.c:321
+msgid "data entry"
+msgstr ""
+
+#: rescoff.c:329
+msgid "resource data"
+msgstr ""
+
+#: rescoff.c:334
+msgid "resource data size"
+msgstr ""
+
+#: rescoff.c:427
+msgid "filename required for COFF output"
+msgstr ""
+
+#: rescoff.c:719
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr ""
+
+#: resrc.c:238 resrc.c:309
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "nu pot deschide fiºierul temporar `%s': %s"
+
+#: resrc.c:244
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr ""
+
+#: resrc.c:260
+#, c-format
+msgid "%s %s: %s"
+msgstr "%s %s: %s"
+
+#: resrc.c:305
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "nu pot executa `%s': %s"
+
+#: resrc.c:314
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr ""
+
+#: resrc.c:321
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "nu pot popen `%s': %s"
+
+#: resrc.c:323
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr ""
+
+#: resrc.c:362
+#, c-format
+msgid "Tried `%s'\n"
+msgstr ""
+
+#: resrc.c:373
+#, c-format
+msgid "Using `%s'\n"
+msgstr "Folosesc `%s'\n"
+
+#: resrc.c:529
+#, c-format
+msgid "%s:%d: %s\n"
+msgstr "%s:%d: %s\n"
+
+#: resrc.c:537
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr ""
+
+#: resrc.c:586
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr ""
+
+#: resrc.c:624 resrc.c:1134
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr ""
+
+#: resrc.c:675
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr ""
+
+#: resrc.c:707 resrc.c:1003
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr ""
+
+#: resrc.c:831
+msgid "help ID requires DIALOGEX"
+msgstr ""
+
+#: resrc.c:833
+msgid "control data requires DIALOGEX"
+msgstr ""
+
+#: resrc.c:861
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "stat a eºuat pentru fiºierul de font `%s': %s"
+
+#: resrc.c:972
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "fiºier pictogramã `%s' nu conþine date pictogramã"
+
+#: resrc.c:1273 resrc.c:1308
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "stat a eºuat pentru fiºierul `%s': %s"
+
+#: resrc.c:1494
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr ""
+
+#: size.c:81
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr ""
+
+#: size.c:82
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr ""
+
+#: size.c:83
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+
+#: size.c:153
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "argument invalid pentru --format: %s"
+
+#: size.c:180
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Rdãcinã (radix) invalidã: %s\n"
+
+#: srconv.c:1722
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr ""
+
+#: srconv.c:1723
+#, c-format
+msgid ""
+" The options are:\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+
+#: srconv.c:1866
+#, c-format
+msgid "unable to open output file %s"
+msgstr "nu pot deschide fiºierul de ieºire %s"
+
+#: stabs.c:330 stabs.c:1708
+msgid "numeric overflow"
+msgstr ""
+
+#: stabs.c:340
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr ""
+
+#: stabs.c:348
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Avertisment: %s: %s\n"
+
+#: stabs.c:458
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr ""
+
+#: stabs.c:497
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr ""
+
+#: stabs.c:738
+msgid "unknown C++ encoded name"
+msgstr ""
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1253
+msgid "unrecognized cross reference type"
+msgstr "tip referinþã încruciºatã nerecunoscutã"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1800
+msgid "missing index type"
+msgstr ""
+
+#: stabs.c:2114
+msgid "unknown virtual character for baseclass"
+msgstr ""
+
+#: stabs.c:2132
+msgid "unknown visibility character for baseclass"
+msgstr ""
+
+#: stabs.c:2318
+msgid "unnamed $vb type"
+msgstr "Tip $vb fãrã nume"
+
+#: stabs.c:2324
+msgid "unrecognized C++ abbreviation"
+msgstr ""
+
+#: stabs.c:2400
+msgid "unknown visibility character for field"
+msgstr ""
+
+#: stabs.c:2652
+msgid "const/volatile indicator missing"
+msgstr ""
+
+#: stabs.c:2888
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr ""
+
+#: stabs.c:3188
+msgid "Undefined N_EXCL"
+msgstr ""
+
+#: stabs.c:3268
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr ""
+
+#: stabs.c:3273
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Numãr index tip %d în afara domeniului\n"
+
+#: stabs.c:3352
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr ""
+
+#: stabs.c:3644
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr ""
+
+#: stabs.c:3739
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr ""
+
+#: stabs.c:5093
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr ""
+
+#: stabs.c:5135
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr ""
+
+#: stabs.c:5202
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr ""
+
+#: stabs.c:5254
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr ""
+
+#: stabs.c:5334
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr ""
+
+#: stabs.c:5383
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr ""
+
+#: stabs.c:5390
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr ""
+
+#: strings.c:206
+#, c-format
+msgid "invalid number %s"
+msgstr "numãr invalid %s"
+
+#: strings.c:643
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "argument întreg invalid %s"
+
+#: strings.c:652
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr ""
+
+#: strings.c:653
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+
+#: sysdump.c:649
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr ""
+
+#: sysdump.c:650
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "nu pot deschide fiºierul de intrare %s"
+
+#: version.c:35
+#, c-format
+msgid "Copyright 2005 Free Software Foundation, Inc.\n"
+msgstr "Copyright 2005 Free Software Foundation, Inc.\n"
+
+#: version.c:36
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License. This program has absolutely no warranty.\n"
+msgstr ""
+
+#: windres.c:204
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "nu pot deschide %s `%s': %s"
+
+#: windres.c:370
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": am aºteptat sã fie un director\n"
+
+#: windres.c:382
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ""
+
+#: windres.c:391
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: avertisment: "
+
+#: windres.c:393
+#, c-format
+msgid ": duplicate value\n"
+msgstr ""
+
+#: windres.c:543
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "tip format necunoscut `%s'"
+
+#: windres.c:544
+#, c-format
+msgid "%s: supported formats:"
+msgstr ""
+
+#. Otherwise, we give up.
+#: windres.c:627
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr ""
+
+#: windres.c:639
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr ""
+
+#: windres.c:641
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+
+#: windres.c:657
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr ""
+
+#: windres.c:660
+#, c-format
+msgid ""
+" -r Ignored for compatibility with rc\n"
+" -h --help Print this help message\n"
+" -V --version Print version information\n"
+msgstr ""
+
+#: windres.c:664
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+
+#: windres.c:800
+msgid "invalid option -f\n"
+msgstr "opþiune invalidã -f\n"
+
+#: windres.c:805
+msgid "No filename following the -fo option.\n"
+msgstr ""
+
+#: windres.c:863
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr ""
+
+#: windres.c:981
+msgid "no resources"
+msgstr "nici o resursã"
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr ""
+
+#: wrstabs.c:635
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr ""
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr ""
diff --git a/binutils-2.24/binutils/po/ru.gmo b/binutils-2.24/binutils/po/ru.gmo
new file mode 100644
index 00000000..d1e39e87
--- /dev/null
+++ b/binutils-2.24/binutils/po/ru.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/ru.po b/binutils-2.24/binutils/po/ru.po
new file mode 100644
index 00000000..a9b5bd24
--- /dev/null
+++ b/binutils-2.24/binutils/po/ru.po
@@ -0,0 +1,8495 @@
+# Translation of binutils messages to Russian
+# Copyright (C) 2003, 2005, 2006, 2009, 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+#
+# Pavel Maryanov <acid_jack@ukr.net>, 2003, 2005, 2006, 2008, 2010.
+# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2012.
+# Pavel Maryanov <acid@jack.kiev.ua>, 2010, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.21.53\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2011-06-02 14:35+0100\n"
+"PO-Revision-Date: 2012-01-03 11:07+0400\n"
+"Last-Translator: Pavel Maryanov <acid@jack.kiev.ua>\n"
+"Language-Team: Russian <gnu@mx.ru>\n"
+"Language: ru\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Lokalize 1.0\n"
+
+#: addr2line.c:81
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "ИÑпользование: %s [параметры] [адреÑ(а)]\n"
+
+#: addr2line.c:82
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " Конвертирует адреÑа в пары номер_Ñтроки/имÑ_файла.\n"
+
+#: addr2line.c:83
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " ЕÑли адреÑа не указаны в командной Ñтроке, они будут прочитаны из stdin\n"
+
+#: addr2line.c:84
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -a --addresses Show addresses\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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Make the output easier to read for humans\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Параметры:\n"
+" @<файл> читать параметры из <файла>\n"
+" -a --addresses показать адреÑа\n"
+" -b --target=<bfd-имÑ> уÑтановить формат двоичного файла\n"
+" -e --exe=<exe-файл> уÑтановить Ð¸Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла (по умолчанию\n"
+" иÑпользуетÑÑ a.out)\n"
+" -i --inlines Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ð½ÑƒÑ‚Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ð¾ внутриÑтрочным функциÑм\n"
+" -j --section=<имÑ> читать ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² вмеÑто адреÑов\n"
+" -p --pretty-print выдавать результат в понÑтном человеку виде\n"
+" -s --basenames удалить имена каталогов\n"
+" -f --functions показать имена функций\n"
+" -C --demangle[=Ñтиль] декодировать имена функций\n"
+" -h --help показать Ñту информацию\n"
+" -v --version показать верÑию программы\n"
+"\n"
+
+#: addr2line.c:101 ar.c:304 ar.c:333 coffdump.c:470 dlltool.c:3938
+#: dllwrap.c:524 elfedit.c:650 nlmconv.c:1114 objcopy.c:576 objcopy.c:611
+#: readelf.c:3174 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
+#: windmc.c:228 windres.c:695
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "Отчёты об ошибках отправлÑйте в %s\n"
+
+#: addr2line.c:271
+#, c-format
+msgid " at "
+msgstr " у "
+
+#: addr2line.c:296
+#, c-format
+msgid " (inlined by) "
+msgstr " (внутриÑтрочный) "
+
+#: addr2line.c:329
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: невозможно получить адреÑа из архива"
+
+#: addr2line.c:346
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr "%s: невозможно найти раздел %s"
+
+#: addr2line.c:415 nm.c:1566 objdump.c:3423
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "неизвеÑтный Ñтиль Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Â«%s»"
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "в архиве нет пункта %s\n"
+
+#: ar.c:254
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...\n"
+msgstr ""
+"ИÑпользование: %s [параметры ÑмулÑции] [-]{dmpqrstx}[abcDfilMNoPsSTuvV]\n"
+" [--plugin <имÑ>] [имÑ_члена] [Ñчётчик] файл_архива файл…\n"
+
+#: ar.c:260
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] [count] archive-file file...\n"
+msgstr ""
+"ИÑпользование: %s [параметры ÑмулÑции] [-]{dmpqrstx}[abcDfilMNoPsSTuvV]\n"
+" [имÑ_члена] [Ñчётчик] файл_архива файл…\n"
+
+#: ar.c:266
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<mri-Ñкрипт]\n"
+
+#: ar.c:267
+#, c-format
+msgid " commands:\n"
+msgstr " команды:\n"
+
+#: ar.c:268
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - удаление файлов из архива\n"
+
+#: ar.c:269
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - перемещение файлов в архив\n"
+
+#: ar.c:270
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - вывод файлов, найденных в архиве\n"
+
+#: ar.c:271
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - быÑтрое добавление файлов в архив\n"
+
+#: ar.c:272
+#, 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:273
+#, c-format
+msgid " s - act as ranlib\n"
+msgstr " s - дейÑтвовать как ranlib\n"
+
+#: ar.c:274
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - отображение Ñодержимого архива\n"
+
+#: ar.c:275
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - извлечение файлов из архива\n"
+
+#: ar.c:276
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " оÑобые модификаторы Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´:\n"
+
+#: ar.c:277
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - размещение файлов поÑле [имени_члена]\n"
+
+#: ar.c:278
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - размещение файлов до [имени_члена] (то же, что и [i])\n"
+
+#: ar.c:279
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr " [D] - иÑпользование Ð½ÑƒÐ»Ñ Ð´Ð»Ñ Ð¾Ñ‚Ð¼ÐµÑ‚Ð¾Ðº времени и uids/gids\n"
+
+#: ar.c:280
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - иÑпользование [Ñчета], как варианта имени\n"
+
+#: ar.c:281
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - обрезание имен вÑтавленных файлов\n"
+
+#: ar.c:282
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - иÑпользование полных путевых имен при ÑопоÑтавлении\n"
+
+#: ar.c:283
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - Ñохранение иÑходных дат\n"
+
+#: ar.c:284
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - замена только файлов более новых, чем текущее Ñодержимое архива\n"
+
+#: ar.c:285
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " обычные модификаторы:\n"
+
+#: ar.c:286
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - не предупреждать, еÑли должна быть Ñоздана библиотека\n"
+
+#: ar.c:287
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - Ñоздание индекÑа архива (cf. ranlib)\n"
+
+#: ar.c:288
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - не Ñоздавать таблицу Ñимволов\n"
+
+#: ar.c:289
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr " [T] - Ñоздание полупуÑтого архива\n"
+
+#: ar.c:290
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - подробный режим\n"
+
+#: ar.c:291
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - вывод номера верÑии\n"
+
+#: ar.c:292
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr " @<файл> - читать параметры из <файла>\n"
+
+#: ar.c:293
+#, c-format
+msgid " --target=BFDNAME - specify the target object format as BFDNAME\n"
+msgstr " --target=BFDNAME - назначить форматом объекта Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ BFDNAME\n"
+
+#: ar.c:295
+#, c-format
+msgid " optional:\n"
+msgstr " необÑзательные:\n"
+
+#: ar.c:296
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr " --plugin <p> - загрузить указанный модуль\n"
+
+#: ar.c:317
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "ИÑпользование: %s [параметры] архив\n"
+
+#: ar.c:318
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " Создает Ð¸Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ ÑƒÐ²ÐµÐ»Ð¸Ñ‡ÐµÐ½Ð¸Ñ ÑкороÑти доÑтупа к архивам\n"
+
+#: ar.c:319
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+" Параметры:\n"
+" @<файл> читать параметры из <файла>\n"
+
+#: ar.c:322
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr " --plugin <название> загрузить указанный модуль\n"
+
+#: ar.c:325
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+" -t обновить временные отметки карты Ñимволов архива\n"
+" -h --help показать Ñто Ñправочное Ñообщение\n"
+" -V --version показать информацию о верÑии\n"
+
+#: ar.c:449
+msgid "two different operation options specified"
+msgstr "указаны параметры Ð´Ð»Ñ Ð´Ð²ÑƒÑ… различных операций"
+
+#: ar.c:538 nm.c:1639
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr "увы — Ñта программа была Ñобрана без поддержки модулей\n"
+
+#: ar.c:693
+msgid "no operation specified"
+msgstr "Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ указана"
+
+#: ar.c:696
+msgid "`u' is only meaningful with the `r' option."
+msgstr "«u» имеет значение только Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ «r»."
+
+#: ar.c:699
+msgid "`u' is not meaningful with the `D' option."
+msgstr "«u» не имеет ÑмыÑла Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ «D»."
+
+#: ar.c:707
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "«N» имеет значение только Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸ «x» и «d»."
+
+#: ar.c:710
+msgid "Value for `N' must be positive."
+msgstr "Значение Ð´Ð»Ñ Â«N» должно быть положительным."
+
+#: ar.c:724
+msgid "`x' cannot be used on thin archives."
+msgstr "«x» Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÐ¿ÑƒÑтого архива."
+
+#: ar.c:765
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° — Ñтот параметр не реализован"
+
+#: ar.c:834
+#, c-format
+msgid "creating %s"
+msgstr "ÑоздаётÑÑ %s"
+
+#: ar.c:883 ar.c:937 ar.c:1266 objcopy.c:2055
+#, c-format
+msgid "internal stat error on %s"
+msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° stat на %s"
+
+#: ar.c:902 ar.c:970
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s не ÑвлÑетÑÑ Ð²ÐµÑ€Ð½Ñ‹Ð¼ архивом"
+
+#: ar.c:1171
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "Ðет члена Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ «%s»\n"
+
+#: ar.c:1221
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "пункта %s нет в архиве %s!"
+
+#: ar.c:1360
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: нет карты архива Ð´Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "пункта %s нет в архиве.\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "Ðевозможно открыть файл %s\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: Ðевозможно открыть выходной архив %s\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: Ðевозможно открыть входной архив %s\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: файл %s не ÑвлÑетÑÑ Ð°Ñ€Ñ…Ð¸Ð²Ð¾Ð¼\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: выходной архив еще не указан\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: нет открытого выходного архива\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: невозможно открыть файл %s\n"
+
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: невозможно найти файл Ð¼Ð¾Ð´ÑƒÐ»Ñ %s\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "Текущий открытый архив — %s\n"
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: нет открытого архива\n"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " Ðет параметров ÑмулÑции\n"
+
+#. Macros for common output.
+#: binemul.h:49
+#, c-format
+msgid " emulation options: \n"
+msgstr " параметры ÑмулÑции: \n"
+
+#: bucomm.c:163
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "невозможно уÑтановить цель BFD по умолчанию на «%s»: %s"
+
+#: bucomm.c:175
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: Форматы ÑовпадениÑ:"
+
+#: bucomm.c:190
+#, c-format
+msgid "Supported targets:"
+msgstr "Поддерживаемые цели:"
+
+#: bucomm.c:192
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: поддерживаемые цели:"
+
+#: bucomm.c:210
+#, c-format
+msgid "Supported architectures:"
+msgstr "Поддерживаемые архитектуры:"
+
+#: bucomm.c:212
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: поддерживаемые архитектуры:"
+
+#: bucomm.c:407
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "Файл заголовка BFD верÑÐ¸Ñ %s\n"
+
+#: bucomm.c:559
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: плохое чиÑло: %s"
+
+#: bucomm.c:576 strings.c:409
+#, c-format
+msgid "'%s': No such file"
+msgstr "'%s': Ðет такого файла"
+
+#: bucomm.c:578 strings.c:411
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "Предупреждение: невозможно найти '%s'. Причина: %s"
+
+#: bucomm.c:582
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "Предупреждение: '%s' не ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ файлом"
+
+#: bucomm.c:584
+#, c-format
+msgid "Warning: '%s' has negative size, probably it is too large"
+msgstr "Предупреждение: «%s» имеет отрицательный размер, вероÑтно он Ñлишком большой"
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr "#Ñтроки %d "
+
+#: coffdump.c:461 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "ИÑпользование: %s [параметры] in-файл\n"
+
+#: coffdump.c:462
+#, c-format
+msgid " Print a human readable interpretation of a COFF object file\n"
+msgstr " Вывод удобочитаемой Ð´Ð»Ñ Ñ‡ÐµÐ»Ð¾Ð²ÐµÐºÐ° интерпретации объектного файла COFF\n"
+
+#: coffdump.c:463
+#, 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:532 srconv.c:1833 sysdump.c:710
+msgid "no input file specified"
+msgstr "не указан входной файл"
+
+#: cxxfilt.c:119 nm.c:269 objdump.c:281
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Отчёты об ошибках отправлÑйте в %s\n"
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: нет текущего файла"
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: нет вызова debug_set_filename"
+
+#: debug.c:781
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: нет вызова debug_set_filename"
+
+#: debug.c:833
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: нет текущей функции"
+
+#: debug.c:865
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: нет текущей функции"
+
+#: debug.c:871
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: некоторые блоки не были закрыты"
+
+#: debug.c:899
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: нет текущего блока"
+
+#: debug.c:935
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: нет текущего блока"
+
+#: debug.c:942
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: попытка закрыть блок верхнего уровнÑ"
+
+#: debug.c:965
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: нет текущего модулÑ"
+
+#. FIXME
+#: debug.c:1018
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: не выполнен"
+
+#. FIXME
+#: debug.c:1029
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: не выполнен"
+
+#. FIXME.
+#: debug.c:1113
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: не выполнен"
+
+#: debug.c:1135
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: нет текущего файла"
+
+#: debug.c:1663
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: неподдерживаемый тип"
+
+#: debug.c:1840
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: нет текущего файла"
+
+#: debug.c:1885
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: нет текущего файла"
+
+#: debug.c:1893
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: опробован дополнительный тег"
+
+#: debug.c:1930
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Предупреждение: изменÑетÑÑ Ñ€Ð°Ð·Ð¼ÐµÑ€ типа Ñ %d на %d\n"
+
+#: debug.c:1952
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: нет текущего Ð¼Ð¾Ð´ÑƒÐ»Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñции"
+
+#: debug.c:2055
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: циркулÑÑ€Ð½Ð°Ñ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ %s\n"
+
+#: debug.c:2482
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: вÑтречен неверный тип"
+
+#: dlltool.c:902 dlltool.c:928 dlltool.c:959
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ÐеизвеÑтный тип машины: %d"
+
+#: dlltool.c:1000
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Ðевозможно открыть файл def: %s"
+
+#: dlltool.c:1005
+#, c-format
+msgid "Processing def file: %s"
+msgstr "ОбрабатываетÑÑ Ñ„Ð°Ð¹Ð» def: %s"
+
+#: dlltool.c:1009
+msgid "Processed def file"
+msgstr "Обработан файл def"
+
+#: dlltool.c:1033
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Ошибка ÑинтакÑиÑа в файле def %s:%d"
+
+#: dlltool.c:1070
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr "%s: Компоненты пути, извлеченные из имени изображениÑ, '%s'."
+
+#: dlltool.c:1088
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "NAME: %s base: %x"
+
+#: dlltool.c:1091 dlltool.c:1112
+msgid "Can't have LIBRARY and NAME"
+msgstr "Ðевозможно иметь LIBRARY и NAME"
+
+#: dlltool.c:1109
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "LIBRARY: %s base: %x"
+
+#: dlltool.c:1354 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "ожидание: %s"
+
+#: dlltool.c:1359 dllwrap.c:422 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "подпроцеÑÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ð» фатальный Ñигнал %d"
+
+#: dlltool.c:1365 dllwrap.c:429 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s завершен Ñо ÑтатуÑом %d"
+
+#: dlltool.c:1396
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "Ð’ÑаÑываетÑÑ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¸Ð· раздела %s в %s"
+
+#: dlltool.c:1536
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Символ иÑключениÑ: %s"
+
+#: dlltool.c:1625 dlltool.c:1636 nm.c:1012 nm.c:1023
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: нет Ñимволов"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1662
+#, c-format
+msgid "Done reading %s"
+msgstr "Чтение выполнено %s"
+
+#: dlltool.c:1672
+#, c-format
+msgid "Unable to open object file: %s: %s"
+msgstr "Ðе удалоÑÑŒ открыть объектный файл: %s: %s"
+
+#: dlltool.c:1675
+#, c-format
+msgid "Scanning object file %s"
+msgstr "СканируетÑÑ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ файл %s"
+
+#: dlltool.c:1690
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "Ðевозможно Ñформировать mcore-elf dll из файла архива: %s"
+
+#: dlltool.c:1792
+msgid "Adding exports to output file"
+msgstr "ЭкÑпортные данные добавлÑÑŽÑ‚ÑÑ Ð² выходной файл"
+
+#: dlltool.c:1844
+msgid "Added exports to output file"
+msgstr "ЭкÑпортные данные добавлены в выходной файл"
+
+#: dlltool.c:1986
+#, c-format
+msgid "Generating export file: %s"
+msgstr "ГенерируетÑÑ Ñ„Ð°Ð¹Ð» ÑкÑпорта: %s"
+
+#: dlltool.c:1991
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Ðевозможно открыть временный файл аÑÑемблера: %s"
+
+#: dlltool.c:1994
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "Открытый временный файл: %s"
+
+#: dlltool.c:2171
+msgid "failed to read the number of entries from base file"
+msgstr "не удалоÑÑŒ прочитать чиÑло облаÑтей из базового файла"
+
+#: dlltool.c:2219
+msgid "Generated exports file"
+msgstr "Сгенерирован файл ÑкÑпорта"
+
+#: dlltool.c:2428
+#, c-format
+msgid "bfd_open failed open stub file: %s: %s"
+msgstr "bfd_open не Ñмог открыть файл stub: %s: %s"
+
+#: dlltool.c:2432
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "СоздаетÑÑ Ñ„Ð°Ð¹Ð» stub: %s"
+
+#: dlltool.c:2894
+#, c-format
+msgid "bfd_open failed reopen stub file: %s: %s"
+msgstr "bfd_open не Ñмог переоткрыть файл stub: %s: %s"
+
+#: dlltool.c:2908 dlltool.c:2984
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "Ñбой при открытии временного головного файла: %s"
+
+#: dlltool.c:2970 dlltool.c:3050
+#, c-format
+msgid "failed to open temporary head file: %s: %s"
+msgstr "Ñбой при открытии временного головного файла: %s: %s"
+
+#: dlltool.c:3064
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "Ñбой при открытии временного конечного файла: %s"
+
+#: dlltool.c:3121
+#, c-format
+msgid "failed to open temporary tail file: %s: %s"
+msgstr "Ñбой при открытии временного конечного файла: %s: %s"
+
+#: dlltool.c:3143
+#, c-format
+msgid "Can't create .lib file: %s: %s"
+msgstr "Ðе удалоÑÑŒ Ñоздать файл .lib: %s: %s"
+
+#: dlltool.c:3147
+#, c-format
+msgid "Creating library file: %s"
+msgstr "СоздаётÑÑ Ñ„Ð°Ð¹Ð» библиотеки: %s"
+
+#: dlltool.c:3239 dlltool.c:3245
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "невозможно удалить %s: %s"
+
+#: dlltool.c:3250
+msgid "Created lib file"
+msgstr "Создан lib-файл"
+
+#: dlltool.c:3462
+#, c-format
+msgid "Can't open .lib file: %s: %s"
+msgstr "Ðе удалоÑÑŒ открыть файл .lib: %s: %s"
+
+#: dlltool.c:3470 dlltool.c:3492
+#, c-format
+msgid "%s is not a library"
+msgstr "%s не ÑвлÑетÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¾Ð¹"
+
+#: dlltool.c:3510
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr "Библиотека импорта «%s» указывает на две или более dll"
+
+#: dlltool.c:3521
+#, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr "Ðе удалоÑÑŒ определить Ð¸Ð¼Ñ dll длÑ«%s» (не библиотека импорта?)"
+
+#: dlltool.c:3745
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Предупреждение, пропуÑкаетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÑющийÑÑ EXPORT %s %d,%d"
+
+#: dlltool.c:3751
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr "Ошибка, EXPORT повторÑетÑÑ Ñ Ð¿Ð¾Ñ€Ñдковыми чиÑлительными: %s"
+
+#: dlltool.c:3856
+msgid "Processing definitions"
+msgstr "ОбрабатываютÑÑ Ð¾Ð¿Ð¸ÑаниÑ"
+
+#: dlltool.c:3888
+msgid "Processed definitions"
+msgstr "ОпиÑÐ°Ð½Ð¸Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ñ‹"
+
+#. xgetext:c-format
+#: dlltool.c:3895 dllwrap.c:483
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "ИÑпользование %s <параметры> <объектные_файлы>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3897
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <машина> Создание как DLL Ð´Ð»Ñ <машины>. [по умолчанию: %s]\n"
+
+#: dlltool.c:3898
+#, 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:3899
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <вых_имÑ> Создание файла ÑкÑпорта.\n"
+
+#: dlltool.c:3900
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <вых_имÑ> Создание библиотеки интерфейÑа.\n"
+
+#: dlltool.c:3901
+#, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr " -y --output-delaylib <вых_имÑ> Создание библиотеки отложенного импорта.\n"
+
+#: dlltool.c:3902
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect Добавление непрÑмых dll в файл ÑкÑпорта.\n"
+
+#: dlltool.c:3903
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr " -D --dllname <имÑ> Ð˜Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ dll Ð´Ð»Ñ Ð¿Ð¾Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² библиотеку интерфейÑа.\n"
+
+#: dlltool.c:3904
+#, 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:3905
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <def-файл> Ð˜Ð¼Ñ Ñоздаваемого файла .def.\n"
+
+#: dlltool.c:3906
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols ЭкÑпорт вÑех Ñимволов в .def\n"
+
+#: dlltool.c:3907
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols ЭкÑпорт только перечиÑленных Ñимволов\n"
+
+#: dlltool.c:3908
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <ÑпиÑок> Ðе ÑкÑпортировать <ÑпиÑок>\n"
+
+#: dlltool.c:3909
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes ОчиÑтка Ñимволов иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию\n"
+
+#: dlltool.c:3910
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <base-файл> Чтение Ñозданного компоновщиком base-файла.\n"
+
+#: dlltool.c:3911
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 Ðе Ñоздавать раздел idata$4.\n"
+
+#: dlltool.c:3912
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 не Ñоздавать раздел idata$5.\n"
+
+#: dlltool.c:3913
+#, c-format
+msgid " --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"
+msgstr " --use-nul-prefixed-import-tables ИÑпользовать ноль перед idata$4 и idata$5.\n"
+
+#: dlltool.c:3914
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr " -U --add-underscore добавлÑÑ‚ÑŒ Ñимволы Ð¿Ð¾Ð´Ñ‡Ñ‘Ñ€ÐºÐ¸Ð²Ð°Ð½Ð¸Ñ Ð²Ð¾ вÑе Ñимволы библиотеки интерфейÑа.\n"
+
+#: dlltool.c:3915
+#, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr " --add-stdcall-underscore добавлÑÑ‚ÑŒ Ñимволы Ð¿Ð¾Ð´Ñ‡Ñ‘Ñ€ÐºÐ¸Ð²Ð°Ð½Ð¸Ñ Ð² Ñимволы stdcall библиотеки интерфейÑа.\n"
+
+#: dlltool.c:3916
+#, c-format
+msgid " --no-leading-underscore All symbols shouldn't be prefixed by an underscore.\n"
+msgstr " --no-leading-underscore Ð’Ñе Ñимволы не должны начинатьÑÑ Ñ Ð¿Ð¾Ð´Ñ‡Ñ‘Ñ€ÐºÐ¸Ð²Ð°Ð½Ð¸Ñ.\n"
+
+#: dlltool.c:3917
+#, c-format
+msgid " --leading-underscore All symbols should be prefixed by an underscore.\n"
+msgstr " --leading-underscore Ð’Ñе Ñимволы должны начинатьÑÑ Ñ Ð¿Ð¾Ð´Ñ‡Ñ‘Ñ€ÐºÐ¸Ð²Ð°Ð½Ð¸Ñ.\n"
+
+#: dlltool.c:3918
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at Удаление @<n> из ÑкÑпортированных имен.\n"
+
+#: dlltool.c:3919
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Добавление алиаÑов без @<n>.\n"
+
+#: dlltool.c:3920
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -p --ext-prefix-alias <префикÑ> Добавление алиаÑов Ñ <префикÑом>.\n"
+
+#: dlltool.c:3921
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <имÑ> ИÑпользование <имени> Ð´Ð»Ñ Ð°ÑÑемблера.\n"
+
+#: dlltool.c:3922
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <флаги> Передача <флагов> в аÑÑемблер.\n"
+
+#: dlltool.c:3923
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib Создание библиотеки импорта Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ ÑовмеÑтимоÑтью.\n"
+
+#: dlltool.c:3924
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete ОÑтавлÑÑ‚ÑŒ временные файлы (повтор Ð´Ð»Ñ Ð´Ð¾Ð¿. защиты).\n"
+
+#: dlltool.c:3925
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr " -t --temp-prefix <префикÑ> ИÑпользование <префикÑа> Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½ временных файлов.\n"
+
+#: dlltool.c:3926
+#, c-format
+msgid " -I --identify <implib> Report the name of the DLL associated with <implib>.\n"
+msgstr " -I --identify <implib> Сообщить Ð¸Ð¼Ñ DLL, аÑÑоциированной Ñ <implib>.\n"
+
+#: dlltool.c:3927
+#, c-format
+msgid " --identify-strict Causes --identify to report error when multiple DLLs.\n"
+msgstr " --identify-strict ЗаÑтавлÑет --identify выдавать ошибку при неÑкольких DLL.\n"
+
+#: dlltool.c:3928
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose Подробный режим.\n"
+
+#: dlltool.c:3929
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version Вывод верÑии программы.\n"
+
+#: dlltool.c:3930
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help Вывод Ñтой информации.\n"
+
+#: dlltool.c:3931
+#, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr " @<файл> Читать параметры из <файла>.\n"
+
+#: dlltool.c:3933
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr " -M --mcore-elf <вых_имÑ> Обработка объектного файла mcore-elf в <вых_имÑ>.\n"
+
+#: dlltool.c:3934
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <имÑ> ИÑпользование <имени> в качеÑтве компоновщика.\n"
+
+#: dlltool.c:3935
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <флаги> Передача <флагов> компоновщику.\n"
+
+#: dlltool.c:4082
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr "Компоненты пути, извлеченные из имени dll, '%s'."
+
+#: dlltool.c:4130
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Ðевозможно открыть base-файл: %s"
+
+#: dlltool.c:4165
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Машина '%s' не поддерживаетÑÑ"
+
+#: dlltool.c:4245
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr "Предупреждение, тип машины (%d) не поддерживаетÑÑ Ð´Ð»Ñ delayimport."
+
+#: dlltool.c:4313 dllwrap.c:213
+#, c-format
+msgid "Tried file: %s"
+msgstr "Опробованный файл: %s"
+
+#: dlltool.c:4320 dllwrap.c:220
+#, c-format
+msgid "Using file: %s"
+msgstr "ИÑпользуетÑÑ Ñ„Ð°Ð¹Ð»: %s"
+
+#: dllwrap.c:303
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "ОÑтавлÑетÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¹ base-файл %s"
+
+#: dllwrap.c:305
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "УдалÑетÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¹ base-файл %s"
+
+#: dllwrap.c:319
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "ОÑтавлÑетÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¹ exp-файл %s"
+
+#: dllwrap.c:321
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "УдалÑетÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¹ exp-файл %s"
+
+#: dllwrap.c:334
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "ОÑтавлÑетÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¹ def-файл %s"
+
+#: dllwrap.c:336
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "УдалÑетÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¹ def-файл %s"
+
+#: dllwrap.c:484
+#, c-format
+msgid " Generic options:\n"
+msgstr " Общие параметры:\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr " @<файл> Читать параметры из <файла>\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q Молчаливый режим\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Подробный режим\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version Вывод верÑии dllwrap\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <вых_имÑ> Синоним Ð´Ð»Ñ --output-lib\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Параметры Ð´Ð»Ñ %s:\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <драйвер> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ \"gcc\" по умолчанию\n"
+
+#: dllwrap.c:492
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <флаги> Переопределение флагов ld по умолчанию\n"
+
+#: dllwrap.c:493
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dlltool> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ \"dlltool\" по умолчанию\n"
+
+#: dllwrap.c:494
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <пункт> Указание альтернативной точки входа DLL\n"
+
+#: dllwrap.c:495
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <base> Указание базового адреÑа образа\n"
+
+#: dllwrap.c:496
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <машина> i386-cygwin32 или i386-mingw32\n"
+
+#: dllwrap.c:497
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run Показать, что должно быть запущено\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Создание Mingw DLL\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " Параметры, передаваемые в DLLTOOL:\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <машина>\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <вых_имÑ> Создание файла ÑкÑпорта.\n"
+
+#: dllwrap.c:502
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <вых_имÑ> Создание входной библиотеки.\n"
+
+#: dllwrap.c:503
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect Добавление непрÑмых dll в файл ÑкÑпорта.\n"
+
+#: dllwrap.c:504
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <имÑ> Ð˜Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ dll Ð´Ð»Ñ Ð¿Ð¾Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² выходную библиотеку.\n"
+
+#: dllwrap.c:505
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <def-файл> Ð˜Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла .def\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <def-файл> Ð˜Ð¼Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла .def\n"
+
+#: dllwrap.c:507
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols ЭкÑпорт вÑех Ñимволов в .def\n"
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols ЭкÑпорт только Ñимволов .drectve\n"
+
+#: dllwrap.c:509
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <ÑпиÑок> ИÑключить <ÑпиÑок> из .def\n"
+
+#: dllwrap.c:510
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes Удаление Ñимволов иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию\n"
+
+#: dllwrap.c:511
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr " --base-file <base-файл> Чтение Ñозданного компоновщиком base-файла.\n"
+
+#: dllwrap.c:512
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 Ðе Ñоздавать раздел idata$4.\n"
+
+#: dllwrap.c:513
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 Ðе Ñоздавать раздел idata$5.\n"
+
+#: dllwrap.c:514
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U Добавление Ñимволов Ð¿Ð¾Ð´Ñ‡ÐµÑ€ÐºÐ¸Ð²Ð°Ð½Ð¸Ñ Ð² .lib\n"
+
+#: dllwrap.c:515
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k Удаление @<n> из ÑкÑпортированных имен.\n"
+
+#: dllwrap.c:516
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias Добавление алиаÑов без @<n>\n"
+
+#: dllwrap.c:517
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <имÑ> ИÑпользование <имени> Ð´Ð»Ñ Ð°ÑÑемблера\n"
+
+#: dllwrap.c:518
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete ОÑтавлÑÑ‚ÑŒ временные файлы.\n"
+
+#: dllwrap.c:519
+#, c-format
+msgid " --no-leading-underscore Entrypoint without underscore\n"
+msgstr " --no-leading-underscore Точка входа без подчёркиваниÑ\n"
+
+#: dllwrap.c:520
+#, c-format
+msgid " --leading-underscore Entrypoint with underscore.\n"
+msgstr " --leading-underscore Точка входа Ñ Ð¿Ð¾Ð´Ñ‡Ñ‘Ñ€ÐºÐ¸Ð²Ð°Ð½Ð¸ÐµÐ¼.\n"
+
+#: dllwrap.c:521
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " ОÑтальное без изменений передано Ñзыковому драйверу\n"
+
+#: dllwrap.c:805
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "Ðеобходимо указать Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ параметр -o или --dllname"
+
+#: dllwrap.c:834
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"не предоÑтавлен файл опиÑÐ°Ð½Ð¸Ñ ÑкÑпорта.\n"
+"Он ÑоздаетÑÑ, но Ñто может быть не то, что вам нужно."
+
+#: dllwrap.c:1023
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "DLLTOOL Ð¸Ð¼Ñ : %s\n"
+
+#: dllwrap.c:1024
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "DLLTOOL параметры : %s\n"
+
+#: dllwrap.c:1025
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "DRIVER Ð¸Ð¼Ñ : %s\n"
+
+#: dllwrap.c:1026
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "DRIVER параметры : %s\n"
+
+#: dwarf.c:256 dwarf.c:3019
+msgid "badly formed extended line op encountered!\n"
+msgstr "вÑтречен неверно Ñформированный раÑширенный line-up!\n"
+
+#: dwarf.c:263
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " РаÑширенный код операции %d: "
+
+#: dwarf.c:268
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Конец поÑледовательноÑти\n"
+"\n"
+
+#: dwarf.c:274
+#, c-format
+msgid "set Address to 0x%s\n"
+msgstr "уÑтановка адреÑа равным 0x%s\n"
+
+#: dwarf.c:280
+#, c-format
+msgid " define new File Table entry\n"
+msgstr " определение нового пункта Таблицы файлов\n"
+
+#: dwarf.c:281 dwarf.c:2548
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Пункт\tКаталог\tВремÑ\tРазмер\tИмÑ\n"
+
+#: dwarf.c:295
+#, c-format
+msgid "set Discriminator to %s\n"
+msgstr "уÑтановка Discriminator равным %s\n"
+
+#: dwarf.c:356
+#, c-format
+msgid "(%s"
+msgstr "(%s"
+
+#: dwarf.c:360
+#, c-format
+msgid ",%s"
+msgstr ",%s"
+
+#: dwarf.c:364
+#, c-format
+msgid ",%s)\n"
+msgstr ",%s)\n"
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:387
+#, c-format
+msgid "user defined: "
+msgstr "задано пользователем: "
+
+#: dwarf.c:389
+#, c-format
+msgid "UNKNOWN: "
+msgstr "ÐЕИЗВЕСТÐО: "
+
+#: dwarf.c:390
+#, c-format
+msgid "length %d ["
+msgstr "длина %d ["
+
+#: dwarf.c:407
+msgid "<no .debug_str section>"
+msgstr "<нет раздела .debug_str>"
+
+#: dwarf.c:413
+#, c-format
+msgid "DW_FORM_strp offset too big: %s\n"
+msgstr "Смещение DW_FORM_strp Ñлишком большое: %s\n"
+
+#: dwarf.c:415
+msgid "<offset is too big>"
+msgstr "<Ñмещение Ñлишком велико>"
+
+#: dwarf.c:655
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "ÐеизвеÑтное значение TAG: %lx"
+
+#: dwarf.c:696
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "ÐеизвеÑтное значение FORM: %lx"
+
+#: dwarf.c:705
+#, c-format
+msgid " %s byte block: "
+msgstr " %s-байтовый блок: "
+
+#: dwarf.c:1050
+#, c-format
+msgid "(DW_OP_call_ref in frame info)"
+msgstr "(DW_OP_call_ref в информации кадра)"
+
+#: dwarf.c:1122
+#, c-format
+msgid "(DW_OP_GNU_implicit_pointer in frame info)"
+msgstr "(DW_OP_GNU_implicit_pointer в информации кадра)"
+
+#: dwarf.c:1229
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Определенное пользователем размещение операции)"
+
+#: dwarf.c:1231
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(ÐеизвеÑтное размещение операции)"
+
+#: dwarf.c:1278
+msgid "Internal error: DWARF version is not 2, 3 or 4.\n"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: номер верÑии DWARF не 2, 3 или 4.\n"
+
+#: dwarf.c:1384
+msgid "DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"
+msgstr "DW_FORM_data8 не поддерживаетÑÑ, еÑли sizeof (dwarf_vma) != 8\n"
+
+#: dwarf.c:1434
+#, c-format
+msgid " (indirect string, offset: 0x%s): %s"
+msgstr " (коÑÐ²ÐµÐ½Ð½Ð°Ñ Ñтрока, Ñмещение: 0x%s): %s"
+
+#: dwarf.c:1459
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "ÐераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð°: %lu\n"
+
+#: dwarf.c:1552
+#, c-format
+msgid "(not inlined)"
+msgstr "(не внутриÑтрочный)"
+
+#: dwarf.c:1555
+#, c-format
+msgid "(inlined)"
+msgstr "(внутриÑтрочный)"
+
+#: dwarf.c:1558
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(объÑвлен как внутриÑтрочный, но пропущен)"
+
+#: dwarf.c:1561
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(объÑвлен как внутриÑтрочный, так и еÑÑ‚ÑŒ)"
+
+#: dwarf.c:1564
+#, c-format
+msgid " (Unknown inline attribute value: %s)"
+msgstr " (ÐеизвеÑтное значение внутриÑтрочного атрибута: %s)"
+
+#: dwarf.c:1735
+#, c-format
+msgid "(location list)"
+msgstr "(ÑпиÑок меÑтоположениÑ)"
+
+#: dwarf.c:1756 dwarf.c:3722
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [без DW_AT_frame_base]"
+
+#: dwarf.c:1771
+#, c-format
+msgid "Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr "Смещение %s, иÑпользуемое как значение атрибута DW_AT_import в DIE по Ñмещению %lx, Ñлишком большое.\n"
+
+#: dwarf.c:1971
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "ÐеизвеÑтное значение AT: %lx"
+
+#: dwarf.c:2042
+#, c-format
+msgid "Reserved length value (0x%s) found in section %s\n"
+msgstr "Ðайдено зарезервированное значение длины (0x%s) в разделе %s\n"
+
+#: dwarf.c:2054
+#, c-format
+msgid "Corrupt unit length (0x%s) found in section %s\n"
+msgstr "Ðайдено повреждение длины Ð¼Ð¾Ð´ÑƒÐ»Ñ (0x%s) в разделе %s\n"
+
+#: dwarf.c:2062
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "Ð’ разделе %s нет Ñлементов comp?"
+
+#: dwarf.c:2071
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "ÐедоÑтаточно памÑти Ð´Ð»Ñ Ð¼Ð°ÑÑива Ñ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð¹ информацией из %u Ñлементов"
+
+#: dwarf.c:2080 dwarf.c:3288 dwarf.c:3382 dwarf.c:3456 dwarf.c:3588
+#: dwarf.c:3758 dwarf.c:3827 dwarf.c:4024
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Содержимое раздела %s:\n"
+"\n"
+
+#: dwarf.c:2088
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Ðевозможно определить размещение раздела %s!\n"
+
+#: dwarf.c:2169
+#, c-format
+msgid " Compilation Unit @ offset 0x%s:\n"
+msgstr " Единица компилÑции @ Ñмещение 0x%s:\n"
+
+#: dwarf.c:2171
+#, c-format
+msgid " Length: 0x%s (%s)\n"
+msgstr " Длина: 0x%s (%s)\n"
+
+#: dwarf.c:2174
+#, c-format
+msgid " Version: %d\n"
+msgstr " ВерÑиÑ: %d\n"
+
+#: dwarf.c:2175
+#, c-format
+msgid " Abbrev Offset: %s\n"
+msgstr " Смещ. аббрев: %s\n"
+
+#: dwarf.c:2177
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Разм. указат: %d\n"
+
+#: dwarf.c:2181
+#, c-format
+msgid " Signature: "
+msgstr " ПодпиÑÑŒ: "
+
+#: dwarf.c:2185
+#, c-format
+msgid " Type Offset: 0x%s\n"
+msgstr " Tип ÑмещениÑ: 0x%s\n"
+
+#: dwarf.c:2193
+#, c-format
+msgid "Debug info is corrupted, length of CU at %s extends beyond end of section (length = %s)\n"
+msgstr "Данные отладки повреждены, Ñ Ð´Ð»Ð¸Ð½Ð¾Ð¹ CU по адреÑу %s они выходÑÑ‚ за границу раздела (длина = %s)\n"
+
+#: dwarf.c:2206
+#, c-format
+msgid "CU at offset %s contains corrupt or unsupported version number: %d.\n"
+msgstr "CU по Ñмещению %s Ñодержит повреждённый или не поддерживаемый номер верÑии: %d.\n"
+
+#: dwarf.c:2217
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr "Данные отладки повреждены, Ñмещение аббревиатуры (%lx) больше размера раздела аббревиатуры (%lx)\n"
+
+#: dwarf.c:2267
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr "Обнаружен фиктивный маркер конца родÑтвенных узлов по адреÑу %lx в разделе .debug_info\n"
+
+#: dwarf.c:2271
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr "Повторные Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¾ фиктивных маркерах конца родÑтвенных узлов показыватьÑÑ Ð½Ðµ будут\n"
+
+#: dwarf.c:2290
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr " <%d><%lx>: номер аббревиатуры: %lu"
+
+#: dwarf.c:2294
+#, c-format
+msgid " <%d><%lx>: ...\n"
+msgstr " <%d><%lx>: …\n"
+
+#: dwarf.c:2313
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr "DIE по Ñмещению %lx ÑÑылаетÑÑ Ð½Ð° аббревиатуру Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %lu, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ ÑущеÑтвует\n"
+
+#: dwarf.c:2415
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Сырой дамп Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ Ñодержимого раздела %s:\n"
+"\n"
+
+#: dwarf.c:2453
+#, c-format
+msgid "The information in section %s appears to be corrupt - the section is too small\n"
+msgstr "Похоже, что Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð² разделе %s повреждена — раздел Ñлишком мал\n"
+
+#: dwarf.c:2465 dwarf.c:2833
+msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
+msgstr "Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‚ÑÑ Ñтроки инфо только Ð´Ð»Ñ DWARF верÑии 2, 3 и 4.\n"
+
+#: dwarf.c:2479 dwarf.c:2848
+msgid "Invalid maximum operations per insn.\n"
+msgstr "Ðеверное макÑимальное количеÑтво операций на инÑтрукцию.\n"
+
+#: dwarf.c:2498
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr " Смещение: 0x%lx\n"
+
+#: dwarf.c:2499
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Длина: %ld\n"
+
+#: dwarf.c:2500
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " ВерÑÐ¸Ñ DWARF: %d\n"
+
+#: dwarf.c:2501
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " Длина пролога: %d\n"
+
+#: dwarf.c:2502
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " Миним. длина инÑтрукции: %d\n"
+
+#: dwarf.c:2504
+#, c-format
+msgid " Maximum Ops per Instruction: %d\n"
+msgstr " МакÑим. кол-во операций на инÑтрукцию: %d\n"
+
+#: dwarf.c:2505
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " Ðач. значение 'is_stmt': %d\n"
+
+#: dwarf.c:2506
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " ОÑнование Ñтроки: %d\n"
+
+#: dwarf.c:2507
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " Диапазон Ñтроки: %d\n"
+
+#: dwarf.c:2508
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " ОÑнование кода операции: %d\n"
+
+#: dwarf.c:2517
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Коды операций:\n"
+
+#: dwarf.c:2520
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " Код операции %d Ñодержит %d аргументов\n"
+
+#: dwarf.c:2526
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" Таблица каталогов пуÑта.\n"
+
+#: dwarf.c:2529
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" Таблица каталогов:\n"
+
+#: dwarf.c:2544
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" Таблица имен файлов пуÑта.\n"
+
+#: dwarf.c:2547
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" Таблица имен файлов:\n"
+
+#. Now display the statements.
+#: dwarf.c:2577
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Операторы номера Ñтроки:\n"
+
+#: dwarf.c:2596
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s"
+msgstr " Специальный код операции %d: продвижение адреÑа на %s в 0x%s"
+
+#: dwarf.c:2610
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s[%d]"
+msgstr " Специальный код операции %d: продвижение адреÑа на %s в 0x%s[%d]"
+
+#: dwarf.c:2618
+#, c-format
+msgid " and Line by %s to %d\n"
+msgstr " и Ñтроки на %s в %d\n"
+
+#: dwarf.c:2628
+#, c-format
+msgid " Copy\n"
+msgstr " КопиÑ\n"
+
+#: dwarf.c:2638
+#, c-format
+msgid " Advance PC by %s to 0x%s\n"
+msgstr " Продвижение Ñчётчика команд на %s в 0x%s\n"
+
+#: dwarf.c:2651
+#, c-format
+msgid " Advance PC by %s to 0x%s[%d]\n"
+msgstr " Продвижение Ñчётчика команд на %s в 0x%s[%d]\n"
+
+#: dwarf.c:2662
+#, c-format
+msgid " Advance Line by %s to %d\n"
+msgstr " Продвижение Ñтроки на %s в %d\n"
+
+#: dwarf.c:2670
+#, c-format
+msgid " Set File Name to entry %s in the File Name Table\n"
+msgstr " УÑтановка имени файла в пункт %s в таблице имён файлов\n"
+
+#: dwarf.c:2678
+#, c-format
+msgid " Set column to %s\n"
+msgstr " УÑтановка Ñтолбца равным %s\n"
+
+#: dwarf.c:2686
+#, c-format
+msgid " Set is_stmt to %s\n"
+msgstr " УÑтановка is_stmt равным %s\n"
+
+#: dwarf.c:2691
+#, c-format
+msgid " Set basic block\n"
+msgstr " УÑтановка базового блока\n"
+
+#: dwarf.c:2701
+#, c-format
+msgid " Advance PC by constant %s to 0x%s\n"
+msgstr " Продвижение Ñчётчика команд на поÑтоÑнную %s в 0x%s\n"
+
+#: dwarf.c:2714
+#, c-format
+msgid " Advance PC by constant %s to 0x%s[%d]\n"
+msgstr " Продвижение Ñчётчика команд на поÑтоÑнную %s в 0x%s[%d]\n"
+
+#: dwarf.c:2726
+#, c-format
+msgid " Advance PC by fixed size amount %s to 0x%s\n"
+msgstr " Продвижение Ñчётчика команд на величину фикÑированного размера %s в 0x%s\n"
+
+#: dwarf.c:2732
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr " УÑтановка prologue_end в «иÑтина»\n"
+
+#: dwarf.c:2736
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr " УÑтановка epilogue_begin в «иÑтина»\n"
+
+#: dwarf.c:2742
+#, c-format
+msgid " Set ISA to %s\n"
+msgstr " УÑтановка ISA в %s\n"
+
+#: dwarf.c:2746 dwarf.c:3160
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr " ÐеизвеÑтный код операции %d Ñ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð°Ð¼Ð¸: "
+
+#: dwarf.c:2780
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Декодированный дамп Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ Ñодержимого раздела %s:\n"
+"\n"
+
+#: dwarf.c:2821
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "Похоже, что Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ Ñтроке повреждена — раздел Ñлишком мал\n"
+
+#: dwarf.c:2953
+#, c-format
+msgid "CU: %s:\n"
+msgstr "CU: %s:\n"
+
+#: dwarf.c:2954 dwarf.c:2964
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Ðомер Ñтроки Ðачальный адреÑ\n"
+
+#: dwarf.c:2959
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr "CU: %s/%s:\n"
+
+#: dwarf.c:3051
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "ÐЕИЗВЕСТÐЫЙ: длина %d\n"
+
+#: dwarf.c:3156
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr " УÑтановка ISA в %lu\n"
+
+#: dwarf.c:3322 dwarf.c:3872
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr "Смещение .debug_info 0x%lx в разделе %s не указывает на заголовок CU.\n"
+
+#: dwarf.c:3336
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‚ÑÑ pubname только Ð´Ð»Ñ DWARF верÑии 2 и 3\n"
+
+#: dwarf.c:3343
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Длина: %ld\n"
+
+#: dwarf.c:3345
+#, c-format
+msgid " Version: %d\n"
+msgstr " ВерÑиÑ: %d\n"
+
+#: dwarf.c:3347
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr " Смещение в раздел .debug_info: 0x%lx\n"
+
+#: dwarf.c:3349
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr " Разм. облаÑти в разделе .debug_info: %ld\n"
+
+#: dwarf.c:3352
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" Смещение\tИмÑ\n"
+
+#: dwarf.c:3403
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file — номер_Ñтроки: %d номер_файла: %d\n"
+
+#: dwarf.c:3409
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:3417
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define — номер_Ñтроки : %d макро : %s\n"
+
+#: dwarf.c:3426
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef — номер_Ñтроки : %d макро : %s\n"
+
+#: dwarf.c:3438
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext — конÑтанта : %d Ñтрока : %s\n"
+
+#: dwarf.c:3467
+#, c-format
+msgid " Number TAG\n"
+msgstr " ЧиÑло TAG\n"
+
+#: dwarf.c:3476
+msgid "has children"
+msgstr "имеет потомков"
+
+#: dwarf.c:3476
+msgid "no children"
+msgstr "нет потомков"
+
+#: dwarf.c:3527 dwarf.c:3754 dwarf.c:3981
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"Раздел %s пуÑÑ‚.\n"
+
+#: dwarf.c:3533 dwarf.c:3987
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr "Ðе удалоÑÑŒ загрузить/проанализировать раздел .debug_info, поÑтому невозможно проинтерпретировать раздел %s.\n"
+
+#: dwarf.c:3577
+msgid "No location lists in .debug_info section!\n"
+msgstr "Ð’ разделе .debug_info нет ÑпиÑков меÑтоположений!\n"
+
+#: dwarf.c:3582
+#, c-format
+msgid "Location lists in %s section start at 0x%s\n"
+msgstr "СпиÑки меÑтоположений в разделе %s начинаютÑÑ Ñ 0x%s\n"
+
+#: dwarf.c:3589
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr " Смещ. Ðачало Конец РаÑширение\n"
+
+#: dwarf.c:3638
+#, 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:3642
+#, 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:3650
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "Смещение 0x%lx больше, чем размер раздела .debug_loc.\n"
+
+#: dwarf.c:3659 dwarf.c:3694 dwarf.c:3704
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "СпиÑок меÑтоположений, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñо ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ 0x%lx, не завершён.\n"
+
+#: dwarf.c:3678 dwarf.c:4075
+#, c-format
+msgid "<End of list>\n"
+msgstr "<Конец ÑпиÑка>\n"
+
+#: dwarf.c:3688
+#, c-format
+msgid "(base address)\n"
+msgstr "(начальный адреÑ)\n"
+
+#: dwarf.c:3725
+msgid " (start == end)"
+msgstr " (начало == конец)"
+
+#: dwarf.c:3727
+msgid " (start > end)"
+msgstr " (начало > конец)"
+
+#: dwarf.c:3737
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr "Ð’ разделе %2$s еÑÑ‚ÑŒ %1$ld неиÑпользуемых байт\n"
+
+#: dwarf.c:3883
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‚ÑÑ aganges только Ð´Ð»Ñ DWARF верÑии 2 и 3.\n"
+
+#: dwarf.c:3887
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Длина: %ld\n"
+
+#: dwarf.c:3889
+#, c-format
+msgid " Version: %d\n"
+msgstr " ВерÑиÑ: %d\n"
+
+#: dwarf.c:3890
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr " Смещение в .debug_info: 0x%lx\n"
+
+#: dwarf.c:3892
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Разм. указат: %d\n"
+
+#: dwarf.c:3893
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " Разм. Ñегм.: %d\n"
+
+#: dwarf.c:3902
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr "Размер ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ + размер Ñегмента не возводÑÑ‚ÑÑ Ð² квадрат.\n"
+
+#: dwarf.c:3907
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" ÐÐ´Ñ€ÐµÑ Ð”Ð»Ð¸Ð½Ð°\n"
+
+#: dwarf.c:3909
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" ÐÐ´Ñ€ÐµÑ Ð”Ð»Ð¸Ð½Ð°\n"
+
+#: dwarf.c:3997
+msgid "No range lists in .debug_info section!\n"
+msgstr "Ð’ разделе .debug_info нет ÑпиÑков диапазонов!\n"
+
+#: dwarf.c:4021
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "СпиÑки диапазонов в разделе %s начинаютÑÑ Ñ 0x%lx\n"
+
+#: dwarf.c:4025
+#, c-format
+msgid " Offset Begin End\n"
+msgstr " Смещ. Ðачало Конец\n"
+
+#: dwarf.c:4046
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Дыра [0x%lx - 0x%lx] в разделе %s.\n"
+
+#: dwarf.c:4050
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Перекрытие [0x%lx - 0x%lx] в разделе %s.\n"
+
+#: dwarf.c:4093
+msgid "(start == end)"
+msgstr "(начало == конец)"
+
+#: dwarf.c:4095
+msgid "(start > end)"
+msgstr "(начало > конец)"
+
+#: dwarf.c:4347
+msgid "bad register: "
+msgstr "неверный региÑÑ‚Ñ€: "
+
+#. The documentation for the format of this file is in gdb/dwarf2read.c.
+#: dwarf.c:4350 dwarf.c:5159
+#, c-format
+msgid "Contents of the %s section:\n"
+msgstr "Содержимое раздела %s:\n"
+
+#: dwarf.c:5120
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr " DW_CFA_??? (ÐžÐ¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¼ оператор кадра вызова: %#x)\n"
+
+#: dwarf.c:5122
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr "неподдерживаемый или неизвеÑтный номер инÑтрукции кадра вызова Dwarf: %#x\n"
+
+#: dwarf.c:5163
+#, c-format
+msgid "Truncated header in the %s section.\n"
+msgstr "Обрезанный заголовок в разделе %s.\n"
+
+#: dwarf.c:5168
+#, c-format
+msgid "Version %ld\n"
+msgstr "ВерÑÐ¸Ñ %ld\n"
+
+#: dwarf.c:5175
+msgid "The address table data in version 3 may be wrong.\n"
+msgstr "Ð’ верÑии 3 данные в таблице адреÑов могут быть неверны.\n"
+
+#: dwarf.c:5178
+msgid "Version 4 does not support case insensitive lookups.\n"
+msgstr "Ð’ верÑии 4 отÑутÑтвует региÑтронезавиÑимый поиÑк.\n"
+
+#: dwarf.c:5183
+#, c-format
+msgid "Unsupported version %lu.\n"
+msgstr "ÐÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ %lu.\n"
+
+#: dwarf.c:5199
+#, c-format
+msgid "Corrupt header in the %s section.\n"
+msgstr "Повреждённый заголовок в разделе %s.\n"
+
+#: dwarf.c:5214
+#, c-format
+msgid ""
+"\n"
+"CU table:\n"
+msgstr ""
+"\n"
+"Таблица CU:\n"
+
+#: dwarf.c:5220
+#, c-format
+msgid "[%3u] 0x%lx - 0x%lx\n"
+msgstr "[%3u] 0x%lx - 0x%lx\n"
+
+#: dwarf.c:5225
+#, c-format
+msgid ""
+"\n"
+"TU table:\n"
+msgstr ""
+"\n"
+"Таблица TU:\n"
+
+#: dwarf.c:5232
+#, c-format
+msgid "[%3u] 0x%lx 0x%lx "
+msgstr "[%3u] 0x%lx 0x%lx "
+
+#: dwarf.c:5239
+#, c-format
+msgid ""
+"\n"
+"Address table:\n"
+msgstr ""
+"\n"
+"Таблица адреÑов:\n"
+
+#: dwarf.c:5248
+#, c-format
+msgid "%lu\n"
+msgstr "%lu\n"
+
+#: dwarf.c:5251
+#, c-format
+msgid ""
+"\n"
+"Symbol table:\n"
+msgstr ""
+"\n"
+"Таблица Ñимволов:\n"
+
+#: dwarf.c:5285
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Отображение отладочной информации раздела %s еще не поддерживаетÑÑ.\n"
+
+#: dwarf.c:5421 dwarf.c:5491
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "ÐераÑпознанный параметр отладки «%s»\n"
+
+#: elfcomm.c:39
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Ошибка: "
+
+#: elfcomm.c:50
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Предупреждение: "
+
+#: elfcomm.c:82 elfcomm.c:117 elfcomm.c:167 elfcomm.c:216
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Длина необрабатываемых данных: %d\n"
+
+#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3643 readelf.c:3951
+#: readelf.c:3994 readelf.c:4066 readelf.c:4144 readelf.c:4915 readelf.c:4939
+#: readelf.c:7340 readelf.c:7386 readelf.c:7587 readelf.c:8783 readelf.c:8797
+#: readelf.c:9322 readelf.c:9338 readelf.c:9381 readelf.c:9406 readelf.c:11674
+#: readelf.c:11866 readelf.c:12685
+msgid "Out of memory\n"
+msgstr "Ðехватка памÑти\n"
+
+#: elfcomm.c:312
+#, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr "%s: не удалоÑÑŒ перейти на первый заголовок архива\n"
+
+#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13169
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: Ñбой при чтении заголовка архива\n"
+
+#: elfcomm.c:347
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr "%s: пуÑтой Ð¸Ð½Ð´ÐµÐºÑ Ð°Ñ€Ñ…Ð¸Ð²Ð°\n"
+
+#: elfcomm.c:355 elfcomm.c:381
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: Ñбой при чтении заголовка архива\n"
+
+#: elfcomm.c:365
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr "%s: предполагалоÑÑŒ, что Ð¸Ð½Ð´ÐµÐºÑ Ð°Ñ€Ñ…Ð¸Ð²Ð° будет иметь %ld Ñлементов, но Ð´Ð»Ñ Ñтого указан Ñлишком маленький размер в заголовке\n"
+
+#: elfcomm.c:373
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr "Ðе хватает памÑти Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа Ñимволов архива\n"
+
+#: elfcomm.c:392
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr "Ðе хватает памÑти Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа Ñимволов архива\n"
+
+#: elfcomm.c:405
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr "%s: в архиве еÑÑ‚ÑŒ индекÑ, но нет Ñимволов\n"
+
+#
+#: elfcomm.c:413
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr "Ðе хватает памÑти Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа таблицы Ñимволов архива.\n"
+
+#: elfcomm.c:419
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr "%s: Ñбой при чтении таблицы Ñимволов архива\n"
+
+#: elfcomm.c:428
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr "%s: Ñбой при пропуÑке таблицы Ñимволов архива\n"
+
+#: elfcomm.c:440
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr "%s: Ñбой при чтении заголовка архива поÑле индекÑа архива\n"
+
+#: elfcomm.c:446
+#, c-format
+msgid "%s has no archive index\n"
+msgstr "%s: отÑутÑтвует Ð¸Ð½Ð´ÐµÐºÑ Ð°Ñ€Ñ…Ð¸Ð²Ð°\n"
+
+#: elfcomm.c:457
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr "Ðе хватает памÑти Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ñимвольных имён в архиве\n"
+
+#: elfcomm.c:465
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr "%s: не удалоÑÑŒ прочитать таблицу Ñтрок длинных Ñимвольных имён\n"
+
+#: elfcomm.c:605
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr "%s: не удалоÑÑŒ перейти к Ñледующему имени файла\n"
+
+#: elfcomm.c:616 elfedit.c:347 readelf.c:13175
+#, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr "%s: не удалоÑÑŒ найти правильный заголовок архива\n"
+
+#: elfedit.c:73
+#, c-format
+msgid "%s: Not an ELF file - wrong magic bytes at the start\n"
+msgstr "%s: не ELF-файл — он Ñодержит неверные magic-байты в начале\n"
+
+#: elfedit.c:81
+#, c-format
+msgid "%s: Unsupported EI_VERSION: %d is not %d\n"
+msgstr "%s: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ EI_VERSION: %d не равно %d\n"
+
+#: elfedit.c:97
+#, c-format
+msgid "%s: Unmatched EI_CLASS: %d is not %d\n"
+msgstr "%s: неÑовпадение EI_CLASS: %d не равно %d\n"
+
+#: elfedit.c:108
+#, c-format
+msgid "%s: Unmatched e_machine: %d is not %d\n"
+msgstr "%s: неÑовпадение e_machine: %d не равно %d\n"
+
+#: elfedit.c:119
+#, c-format
+msgid "%s: Unmatched e_type: %d is not %d\n"
+msgstr "%s: неÑовпадение e_type: %d не равно %d\n"
+
+#: elfedit.c:130
+#, c-format
+msgid "%s: Unmatched EI_OSABI: %d is not %d\n"
+msgstr "%s: неÑовпадение EI_OSABI: %d не равно %d\n"
+
+#: elfedit.c:163
+#, c-format
+msgid "%s: Failed to update ELF header: %s\n"
+msgstr "%s: не удалоÑÑŒ обновить заголовок ELF: %s\n"
+
+#: elfedit.c:196
+#, c-format
+msgid "Unsupported EI_CLASS: %d\n"
+msgstr "Ðеподдерживаемый EI_CLASS: %d\n"
+
+#: elfedit.c:229
+msgid ""
+"This executable has been built without support for a\n"
+"64 bit data type and so it cannot process 64 bit ELF files.\n"
+msgstr ""
+"Данный иÑполнÑемые файл был Ñобран без поддержки 64-битного типа\n"
+"данных, и поÑтому не может обрабатывать 64-битные файлы ELF.\n"
+
+#: elfedit.c:270
+#, c-format
+msgid "%s: Failed to read ELF header\n"
+msgstr "%s: Ðе удалоÑÑŒ прочитать заголовок ELF\n"
+
+#: elfedit.c:277
+#, c-format
+msgid "%s: Failed to seek to ELF header\n"
+msgstr "%s: не удалоÑÑŒ перемеÑтитьÑÑ Ðº заголовку ELF\n"
+
+#: elfedit.c:331 readelf.c:13161
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s: Ñбой при переходе к Ñледующему заголовку архива\n"
+
+#: elfedit.c:362 elfedit.c:371 readelf.c:13189 readelf.c:13198
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: неверное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° архива\n"
+
+#: elfedit.c:391 elfedit.c:483
+#, c-format
+msgid "Input file '%s' is not readable\n"
+msgstr "Входной файл '%s' ÑвлÑетÑÑ Ð½ÐµÑ‡Ð¸Ñ‚Ð°ÐµÐ¼Ñ‹Ð¼\n"
+
+#: elfedit.c:415
+#, c-format
+msgid "%s: failed to seek to archive member\n"
+msgstr "%s: не удалоÑÑŒ перейти к члену архива\n"
+
+#: elfedit.c:454 readelf.c:13284
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "'%s': Ðет такого файла\n"
+
+#: elfedit.c:456 readelf.c:13286
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr "Ðевозможно найти '%s'. СиÑтемное Ñообщение об ошибке: %s\n"
+
+#: elfedit.c:463 readelf.c:13293
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "%s не ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ файлом\n"
+
+#: elfedit.c:489 readelf.c:13306
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr "%s: не удалоÑÑŒ прочитать идентификатор (magic number) файла\n"
+
+#: elfedit.c:547
+#, c-format
+msgid "Unknown OSABI: %s\n"
+msgstr "ÐеизвеÑтное значение OSABI: %s\n"
+
+#: elfedit.c:566
+#, c-format
+msgid "Unknown machine type: %s\n"
+msgstr "ÐеизвеÑтный тип машины: %s\n"
+
+#: elfedit.c:584
+#, c-format
+msgid "Unknown machine type: %d\n"
+msgstr "ÐеизвеÑтный тип машины: %d\n"
+
+#: elfedit.c:603
+#, c-format
+msgid "Unknown type: %s\n"
+msgstr "ÐеизвеÑтный тип: %s\n"
+
+#: elfedit.c:634
+#, c-format
+msgid "Usage: %s <option(s)> elffile(s)\n"
+msgstr "ИÑпользование: %s <параметр(Ñ‹)> elf-файл(Ñ‹)\n"
+
+#: elfedit.c:636
+#, c-format
+msgid " Update the ELF header of ELF files\n"
+msgstr " Обновление заголовка ELF в файлах ELF\n"
+
+#: elfedit.c:637 objcopy.c:475 objcopy.c:585
+#, c-format
+msgid " The options are:\n"
+msgstr " Параметры:\n"
+
+#: elfedit.c:638
+#, c-format
+msgid ""
+" --input-mach <machine> Set input machine type to <machine>\n"
+" --output-mach <machine> Set output machine type to <machine>\n"
+" --input-type <type> Set input file type to <type>\n"
+" --output-type <type> Set output file type to <type>\n"
+" --input-osabi <osabi> Set input OSABI to <osabi>\n"
+" --output-osabi <osabi> Set output OSABI to <osabi>\n"
+" -h --help Display this information\n"
+" -v --version Display the version number of %s\n"
+msgstr ""
+" --input-mach <machine> Задать тип входной машины как <machine>\n"
+" --output-mach <machine> Задать тип выходной машины как <machine>\n"
+" --input-type <type> Задать тип входного файла как <type>\n"
+" --output-type <type> Задать тип выходного файла как <type>\n"
+" --input-osabi <osabi> Задать тип входного OSABI как <osabi>\n"
+" --output-osabi <osabi> Задать тип выходного OSABI как <osabi>\n"
+" -h --help Показать Ñту Ñправку\n"
+" -v --version Показать верÑию %s\n"
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - 32-битный маленький архив\n"
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - пропуÑкает 64-битные объекты\n"
+
+#: emul_aix.c:47
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - пропуÑкает 32-битные объекты\n"
+
+#: emul_aix.c:48
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] - допуÑкает 32- и 64-битные объекты\n"
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "неожиданное окончание отладочной информации"
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "неверный номер"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ñтроки"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "переполнение Ñтека выражениÑ"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "неподдерживаемый оператор Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ IEEE"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr "неизвеÑтный раздел"
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "опуÑтошение Ñтека выражениÑ"
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "неÑовпадение Ñтека выражениÑ"
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "неизвеÑтный вÑтроенный тип"
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "Двоично-кодированный деÑÑтичный тип Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ запÑтой не поддерживаетÑÑ"
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "неожиданное чиÑло"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "неожиданный комбинированный тип"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "в конце Ñтека оÑталиÑÑŒ блоки"
+
+#: ieee.c:1208
+msgid "unknown BB type"
+msgstr "неизвеÑтный тип BB"
+
+#: ieee.c:1217
+msgid "stack overflow"
+msgstr "переполнение Ñтека"
+
+#: ieee.c:1240
+msgid "stack underflow"
+msgstr "опуÑтошение Ñтека"
+
+#: ieee.c:1352 ieee.c:1422 ieee.c:2120
+msgid "illegal variable index"
+msgstr "неверный Ð¸Ð½Ð´ÐµÐºÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹"
+
+#: ieee.c:1400
+msgid "illegal type index"
+msgstr "неверный Ð¸Ð½Ð´ÐµÐºÑ Ñ‚Ð¸Ð¿Ð°"
+
+#: ieee.c:1410 ieee.c:1447
+msgid "unknown TY code"
+msgstr "неизвеÑтный код TY"
+
+#: ieee.c:1429
+msgid "undefined variable in TY"
+msgstr "Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð² TY"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1841
+msgid "Pascal file name not supported"
+msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Pascal не поддерживаетÑÑ"
+
+#: ieee.c:1889
+msgid "unsupported qualifier"
+msgstr "неподдерживаемый клаÑÑификатор"
+
+#: ieee.c:2158
+msgid "undefined variable in ATN"
+msgstr "Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð² ATN"
+
+#: ieee.c:2201
+msgid "unknown ATN type"
+msgstr "неизвеÑтный тип ATN"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2323
+msgid "unsupported ATN11"
+msgstr "неподдерживаемый ATN11"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2350
+msgid "unsupported ATN12"
+msgstr "неподдерживаемый ATN12"
+
+#: ieee.c:2410
+msgid "unexpected string in C++ misc"
+msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ñтрока в C++ misc"
+
+#: ieee.c:2423
+msgid "bad misc record"
+msgstr "Ð¿Ð»Ð¾Ñ…Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ misc"
+
+#: ieee.c:2464
+msgid "unrecognized C++ misc record"
+msgstr "нераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ C++ запиÑÑŒ misc"
+
+#: ieee.c:2579
+msgid "undefined C++ object"
+msgstr "неопределенный объект C++"
+
+#: ieee.c:2613
+msgid "unrecognized C++ object spec"
+msgstr "нераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° C++"
+
+#: ieee.c:2649
+msgid "unsupported C++ object type"
+msgstr "нераÑпознанный тип объекта C++"
+
+#: ieee.c:2659
+msgid "C++ base class not defined"
+msgstr "базовый клаÑÑ C++ не определен"
+
+#: ieee.c:2671 ieee.c:2776
+msgid "C++ object has no fields"
+msgstr "объект C++ не имеет полей"
+
+#: ieee.c:2690
+msgid "C++ base class not found in container"
+msgstr "базовый клаÑÑ C++ не найден в контейнере"
+
+#: ieee.c:2797
+msgid "C++ data member not found in container"
+msgstr "Ñлемент клаÑÑа C++ не найден в контейнере"
+
+#: ieee.c:2838 ieee.c:2988
+msgid "unknown C++ visibility"
+msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑ‚ÑŒ C++"
+
+#: ieee.c:2872
+msgid "bad C++ field bit pos or size"
+msgstr "неверный двоичный разрÑд или размер Ð¿Ð¾Ð»Ñ C++"
+
+#: ieee.c:2964
+msgid "bad type for C++ method function"
+msgstr "неверный тип функции метода C++"
+
+#: ieee.c:2974
+msgid "no type information for C++ method function"
+msgstr "нет информации о типе Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ метода C++"
+
+#: ieee.c:3013
+msgid "C++ static virtual method"
+msgstr "ÑтатичеÑкий виртуальный метод C++"
+
+#: ieee.c:3108
+msgid "unrecognized C++ object overhead spec"
+msgstr "нераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ ÑÐ»ÑƒÐ¶ÐµÐ±Ð½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° C++"
+
+#: ieee.c:3147
+msgid "undefined C++ vtable"
+msgstr "Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð°Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° C++"
+
+#: ieee.c:3216
+msgid "C++ default values not in a function"
+msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ C++ по умолчанию не в функции"
+
+#: ieee.c:3256
+msgid "unrecognized C++ default type"
+msgstr "нераÑпознанный тип C++ по умолчанию"
+
+#: ieee.c:3287
+msgid "reference parameter is not a pointer"
+msgstr "ÑÑылочный параметр не ÑвлÑетÑÑ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¼"
+
+#: ieee.c:3370
+msgid "unrecognized C++ reference type"
+msgstr "нераÑпознанный ÑÑылочный тип C++"
+
+#: ieee.c:3452
+msgid "C++ reference not found"
+msgstr "ÑÑылка C++ не найдена"
+
+#: ieee.c:3460
+msgid "C++ reference is not pointer"
+msgstr "ÑÑылка C++ не ÑвлÑетÑÑ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¼"
+
+#: ieee.c:3486 ieee.c:3494
+msgid "missing required ASN"
+msgstr "отÑутÑтвует требуемый ASN"
+
+#: ieee.c:3521 ieee.c:3529
+msgid "missing required ATN65"
+msgstr "отÑутÑтвует требуемый ATN65"
+
+#: ieee.c:3543
+msgid "bad ATN65 record"
+msgstr "Ð¿Ð»Ð¾Ñ…Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ ATN65"
+
+#: ieee.c:4171
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "чиÑловое переполнение IEEE: 0x"
+
+#: ieee.c:4215
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "переполнение длины Ñтроки IEEE: %u\n"
+
+#: ieee.c:5213
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "неподдерживаемый размер целого типа IEEE %u\n"
+
+#: ieee.c:5247
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "неподдерживаемый размер типа Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ запÑтой IEEE %u\n"
+
+#: ieee.c:5281
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "неподдерживаемый размер комплекÑного типа IEEE%u\n"
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr "Ð’ ÑпиÑке ключевых Ñлов введён повторÑющийÑÑ Ñимвол."
+
+#: nlmconv.c:274 srconv.c:1824
+msgid "input and output files must be different"
+msgstr "входной и выходной файлы должны быть различными"
+
+#: nlmconv.c:321
+msgid "input file named both on command line and with INPUT"
+msgstr "входной файл назван в командной Ñтроке и в INPUT"
+
+#: nlmconv.c:330
+msgid "no input file"
+msgstr "нет входного файла"
+
+#: nlmconv.c:360
+msgid "no name for output file"
+msgstr "нет имени Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла"
+
+#: nlmconv.c:374
+msgid "warning: input and output formats are not compatible"
+msgstr "предупреждение: входной и выходной форматы не ÑовмеÑтимы"
+
+#: nlmconv.c:404
+msgid "make .bss section"
+msgstr "Ñоздание раздела .bss"
+
+#: nlmconv.c:414
+msgid "make .nlmsections section"
+msgstr "Ñоздание раздела .nlmsections"
+
+#: nlmconv.c:442
+msgid "set .bss vma"
+msgstr "уÑтановка .bss vma"
+
+#: nlmconv.c:449
+msgid "set .data size"
+msgstr "уÑтановка размера .data"
+
+#: nlmconv.c:629
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "предупреждение: Ñимвол %s импортирован, но его нет в ÑпиÑке импорта"
+
+#: nlmconv.c:649
+msgid "set start address"
+msgstr "уÑтановка начального адреÑа"
+
+#: nlmconv.c:698
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "предупреждение: START-процедура %s не определена"
+
+#: nlmconv.c:700
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "предупреждение: EXIT-процедура %s не определена"
+
+#: nlmconv.c:702
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "предупреждение: CHECK-процедура %s не определена"
+
+#: nlmconv.c:722 nlmconv.c:908
+msgid "custom section"
+msgstr "раздел custom"
+
+#: nlmconv.c:742 nlmconv.c:937
+msgid "help section"
+msgstr "раздел help"
+
+#: nlmconv.c:764 nlmconv.c:955
+msgid "message section"
+msgstr "раздел message"
+
+#: nlmconv.c:779 nlmconv.c:988
+msgid "module section"
+msgstr "раздел module"
+
+#: nlmconv.c:798 nlmconv.c:1004
+msgid "rpc section"
+msgstr "раздел rpc"
+
+#. There is no place to record this information.
+#: nlmconv.c:834
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: предупреждение: ÑовмеÑтно иÑпользуемые библиотеки не могут иметь неинициализированные данные"
+
+#: nlmconv.c:855 nlmconv.c:1023
+msgid "shared section"
+msgstr "раздел shared"
+
+#: nlmconv.c:863
+msgid "warning: No version number given"
+msgstr "предупреждение: Ðе указан номер верÑии"
+
+#: nlmconv.c:903 nlmconv.c:932 nlmconv.c:950 nlmconv.c:999 nlmconv.c:1018
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: чтение: %s"
+
+#: nlmconv.c:925
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "предупреждение: FULLMAP не поддерживаетÑÑ; попробуйте ld -M"
+
+#: nlmconv.c:1101
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "ИÑпользование: %s [параметры] [in-файл [out-файл]]\n"
+
+#: nlmconv.c:1102
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " Конвертирует объектный файл в загружаемый модуль ÑиÑтемы NetWare\n"
+
+#: nlmconv.c:1103
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+" Параметры:\n"
+" -I --input-target=<bfd-имÑ> уÑтановить формат входного двоичного файла\n"
+" -O --output-target=<bfd-имÑ> уÑтановить формат выходного двоичного файла\n"
+" -T --header-file=<файл> читать <файл> Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ заголовка NLM\n"
+" -l --linker=<компоновщик> иÑпользовать <компоновщик> Ð´Ð»Ñ Ð»ÑŽÐ±Ð¾Ð³Ð¾ ÑвÑзываниÑ\n"
+" -d --debug выводить на stderr командной Ñтроки компоновщика\n"
+" @<файл> читать параметры из <файла>\n"
+" -h --help показать Ñту информацию\n"
+" -v --version показать верÑию программы\n"
+
+#: nlmconv.c:1144
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "откомпилирован без поддержки %s"
+
+#: nlmconv.c:1181
+msgid "make section"
+msgstr "раздел make"
+
+#: nlmconv.c:1195
+msgid "set section size"
+msgstr "уÑтановка размера раздела"
+
+#: nlmconv.c:1201
+msgid "set section alignment"
+msgstr "уÑтановка ориентации раздела"
+
+#: nlmconv.c:1205
+msgid "set section flags"
+msgstr "уÑтановка флагов раздела"
+
+#: nlmconv.c:1216
+msgid "set .nlmsections size"
+msgstr "уÑтановка размера .nlmsections"
+
+#: nlmconv.c:1297 nlmconv.c:1305 nlmconv.c:1314 nlmconv.c:1319
+msgid "set .nlmsection contents"
+msgstr "уÑтановка Ñодержимого .nlmsections"
+
+#: nlmconv.c:1796
+msgid "stub section sizes"
+msgstr "размеры раздела заглушки"
+
+#: nlmconv.c:1843
+msgid "writing stub"
+msgstr "запиÑываетÑÑ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ°"
+
+#: nlmconv.c:1927
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "нераÑпознанное отноÑительное перемещение по Ñчетчику команд в %s"
+
+#: nlmconv.c:1991
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "переполнение при регулировке Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² %s"
+
+#: nlmconv.c:2118
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: выполнение %s завершилоÑÑŒ неудачей: "
+
+#: nlmconv.c:2133
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Выполнение %s завершилоÑÑŒ неудачей"
+
+#: nm.c:225 size.c:78 strings.c:650
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "ИÑпользование: %s [параметры] [файл(Ñ‹)]\n"
+
+#: nm.c:226
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " Выводит ÑпиÑок Ñимволов в [файл(Ñ‹)] (по умолчанию в a.out).\n"
+
+#: nm.c:227
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+" Параметры:\n"
+" -a, --debug-syms показывать только отладочные Ñимволы\n"
+" -A, --print-file-name показывать Ð¸Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла перед каждым Ñимволом\n"
+" -B То же, что и --format=bsd\n"
+" -C, --demangle[=СТИЛЬ] декодировать низкоуровневые имена Ñимволов в имена\n"
+" ÑƒÑ€Ð¾Ð²Ð½Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ\n"
+" СТИЛЬ, еÑли указан, может быть auto (по умолчанию),\n"
+" gnu, lucid, arm, hp, edg, gnu-v3, java\n"
+" или gnat\n"
+" --no-demangle не декодировать низкоуровневые имена Ñимволов\n"
+" -D, --dynamic показывать динамичеÑкие Ñимволы вмеÑто нормальных Ñимволов\n"
+" --defined-only показывать только определённые Ñимволы\n"
+" -e (игнорируетÑÑ)\n"
+" -f, --format=ФОРМÐТ иÑпользовать ФОРМÐТ в качеÑтве выходного формата.\n"
+" ФОРМÐТ может быть bsd, sysv или posix.\n"
+" По умолчанию иÑпользуетÑÑ bsd.\n"
+" -g, --extern-only показывать только внешние Ñимволы\n"
+" -l, --line-numbers иÑпользовать отладочную информацию Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка\n"
+" имени файла и номера Ñтроки Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñимвола\n"
+" -n, --numeric-sort Ñортировать Ñимволы по адреÑу\n"
+" -o То же, что и -A\n"
+" -p, --no-sort не Ñортировать Ñимволы\n"
+" -P, --portability то же, что и --format=posix\n"
+" -r, --reverse-sort Ñортировать в обратном порÑдке\n"
+
+#: nm.c:250
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr " --plugin ИМЯ загрузить указанный модуль\n"
+
+#: nm.c:253
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+" -S, --print-size показывать размер определённых Ñимволов\n"
+" -s, --print-armap включать Ð¸Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ Ñимволов из членов архива\n"
+" --size-sort Ñортировать Ñимволы по размеру\n"
+" --special-syms включать Ñпециальные Ñимволы в выходные данные\n"
+" --synthetic показывать также ÑинтетичеÑкие Ñимволы\n"
+" -t, --radix=ОСÐОВ иÑпользовать ОСÐОВание при выводе значений Ñимволов\n"
+" --target=BFD-ИМЯ указать целевой формат объекта как BFD-ИМЯ\n"
+" -u, --undefined-only показывать только не определённые Ñимволы\n"
+" -X 32_64 (игнорируетÑÑ)\n"
+" @ФÐЙЛ читать параметры из ФÐЙЛÐ\n"
+" -h, --help показать Ñту Ñправку\n"
+" -V, --version показать верÑию программы\n"
+"\n"
+
+#: nm.c:301
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: неверное оÑнование"
+
+#: nm.c:325
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: неверный выходной формат"
+
+#: nm.c:346 readelf.c:8546 readelf.c:8591
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<Ñпецифичный Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑора>: %d"
+
+#: nm.c:348 readelf.c:8555 readelf.c:8609
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<Ñпецифичный Ð´Ð»Ñ ÐžÐ¡>: %d"
+
+#: nm.c:350 readelf.c:8558 readelf.c:8612
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<неизвеÑтный>: %d"
+
+#: nm.c:390
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Ð˜Ð½Ð´ÐµÐºÑ Ð°Ñ€Ñ…Ð¸Ð²Ð°:\n"
+
+#: nm.c:1254
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ðеопределенные Ñимволы из %s:\n"
+"\n"
+
+#: nm.c:1256
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Символы из %s:\n"
+"\n"
+
+#: nm.c:1258 nm.c:1309
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Ð˜Ð¼Ñ Ð—Ð½Ð°Ñ‡. КлаÑÑ Ð¢Ð¸Ð¿ Размер Строка Раздел\n"
+"\n"
+
+#: nm.c:1261 nm.c:1312
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Ð˜Ð¼Ñ Ð—Ð½Ð°Ñ‡. КлаÑÑ Ð¢Ð¸Ð¿ Размер Строка Раздел\n"
+"\n"
+
+#: nm.c:1305
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ðеопределенные Ñимволы из %s[%s]:\n"
+"\n"
+
+#: nm.c:1307
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Символы из %s[%s]:\n"
+"\n"
+
+#: nm.c:1399
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr "Ширина печати не была инициализирована (%d)"
+
+#: nm.c:1627
+msgid "Only -X 32_64 is supported"
+msgstr "ПоддерживаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ -X 32_64"
+
+#: nm.c:1656
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "ИÑпользование вмеÑте параметров --size-sort и --undefined-only"
+
+#: nm.c:1657
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "не даÑÑ‚ выходных данных, Ñ‚.к. неопределенные Ñимволы не имеют размера."
+
+#: nm.c:1685
+#, c-format
+msgid "data size %ld"
+msgstr "размер данных %ld"
+
+#: objcopy.c:473 srconv.c:1732
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "ИÑпользование: %s [параметры] in-файл [out-файл]\n"
+
+#: objcopy.c:474
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " Копирует двоичный файл, возможно, Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ñ‹Ð²Ð°Ñ ÐµÐ³Ð¾ в процеÑÑе\n"
+
+#: objcopy.c:476
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set output arch, when input is arch-less\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff objects.\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" --compress-debug-sections Compress DWARF debug sections using zlib\n"
+" --decompress-debug-sections Decompress DWARF debug sections using zlib\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"
+msgstr ""
+" -I --input-target <bfd-имÑ> Считать, что входной файл\n"
+" в формате <bfd-имÑ>\n"
+" -O --output-target <bfd-имÑ> Создать выходной файл в формате <bfd-имÑ>\n"
+" -B --binary-architecture <арх> УÑтановить архитектуру Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾\n"
+" файла, еÑли у входного её нет\n"
+" -F --target <bfd-имÑ> УÑтановить входной и выходной форматы\n"
+" в <bfd-имÑ>\n"
+" --debugging Преобразовать отладочную информацию,\n"
+" еÑли Ñто возможно\n"
+" -p --preserve-dates Копировать Ð²Ñ€ÐµÐ¼Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸/доÑтупа\n"
+" на вывод\n"
+" -j --only-section <имÑ> Копировать раздел <имÑ> на вывод\n"
+" --add-gnu-debuglink=<файл> Добавление ÑвÑÐ·Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°\n"
+" .gnu_debuglink в <файл>\n"
+" -R --remove-section <имÑ> Удалить раздел <имÑ> из вывода\n"
+" -S --strip-all Удалить вÑе Ñимволы и информацию\n"
+" о перемещении\n"
+" -g --strip-debug Удалить вÑе отладочные Ñимволы и разделы\n"
+" --strip-unneeded Удалить вÑе Ñимволы, не нужные длÑ\n"
+" перемещений\n"
+" -N --strip-symbol <имÑ> Ðе копировать Ñимвол <имÑ>\n"
+" --strip-unneeded-symbol <имÑ>\n"
+" Ðе копировать Ñимвол <имÑ>, еÑли он не нужен\n"
+" Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹\n"
+" --only-keep-debug ОÑтавить только отладочную информацию\n"
+" --extract-symbol Удалить Ñодержимое раздела, но оÑтавить\n"
+" Ñимволы\n"
+" -K --keep-symbol <имÑ> Ðе удалÑÑ‚ÑŒ Ñимвол <имÑ>\n"
+" --keep-file-symbols Ðе удалÑÑ‚ÑŒ Ñимволы файла\n"
+" --localize-hidden Преобразовать вÑе Ñкрытые Ñимволы ELF\n"
+" в локальные\n"
+" -L --localize-symbol <имÑ> Принудительно пометить Ñимвол <имÑ> как\n"
+" локальный\n"
+" --globalize-symbol <имÑ> Принудительно пометить Ñимвол <имÑ> как\n"
+" глобальный\n"
+" -G --keep-global-symbol <имÑ> Локализовать вÑе Ñимволы кроме <имÑ>\n"
+" -W --weaken-symbol <имÑ> Принудительно пометить Ñимвол <имÑ> как\n"
+" Ñлабый\n"
+" --weaken Принудительно пометить глобальные Ñимволы\n"
+" как Ñлабые\n"
+" -w --wildcard Разрешить маÑку при Ñравнении Ñимволов\n"
+" -x --discard-all Удалить вÑе не глобальные Ñимволы\n"
+" -X --discard-locals Удалить любые Ñимволы, Ñгенерированные\n"
+" компилÑтором\n"
+" -i --interleave <чиÑло> Копировать только N байт через каждое\n"
+" <чиÑло> байт\n"
+" --interleave-width <чиÑло> Задать значение N Ð´Ð»Ñ --interleave\n"
+" -b --byte <номер> Выбрать байт <номер> в каждом чередующемÑÑ\n"
+" блоке\n"
+" --gap-fill <значение> Заполнить промежутки между разделами\n"
+" <значением>\n"
+" --pad-to <адреÑ> Заполнить поÑледний раздел до адреÑа\n"
+" <адреÑ>\n"
+" --set-start <адреÑ> УÑтановить начальный Ð°Ð´Ñ€ÐµÑ Ð² <адреÑ>\n"
+" {--change-start|--adjust-start} <приращение>\n"
+" Добавить <приращение> к начальному адреÑу\n"
+" {--change-addresses|--adjust-vma} <приращение>\n"
+" Добавить <приращение> к LMA, VMA и\n"
+" начальному адреÑам\n"
+" {--change-section-address|--adjust-section-vma} <имÑ>{=|+|-}<значение>\n"
+" Изменить LMA и VMA раздела <имÑ>\n"
+" на <значение>\n"
+" --change-section-lma <имÑ>{=|+|-}<значение>\n"
+" Изменить LMA раздела <имÑ> на <значение>\n"
+" --change-section-vma <имÑ>{=|+|-}<значение>\n"
+" Изменить VMA раздела <имÑ> на <значение>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Предупредить, еÑли указанный раздел\n"
+" не ÑущеÑтвует\n"
+" --set-section-flags <имÑ>=<флаги>\n"
+" УÑтановить ÑвойÑтва раздела <имÑ> в <флаги>\n"
+" --add-section <имÑ>=<файл> Добавить раздел <имÑ>, найденный в\n"
+" <файле>, на вывод\n"
+" --rename-section <Ñтар>=<нов>[,<флаги>] Переименовать раздел <Ñтар>\n"
+" на <нов>\n"
+" --long-section-names {enable|disable|keep}\n"
+" ИÑпользовать длинные имена разделов в\n"
+" объектах Coff.\n"
+" --change-leading-char Принудительно иÑпользовать Ñтиль заглавного\n"
+" Ñимвола Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ формата\n"
+" --remove-leading-char Удалить заглавный Ñимвол из глобальных\n"
+" Ñимволов\n"
+" --reverse-bytes=<чиÑло> ПереÑтавлÑÑ‚ÑŒ <чиÑло> байт за раз,\n"
+" в выходных разделах Ñ Ñодержимым\n"
+" --redefine-sym <Ñтар>=<нов> Переопределить Ð¸Ð¼Ñ Ñимвола <Ñтар> на <нов>\n"
+" --redefine-syms <файл> --redefine-sym Ð´Ð»Ñ Ð²Ñех пар Ñимволов,\n"
+" перечиÑленных в <файле>\n"
+" --srec-len <чиÑло> Ограничить длину Ñозданных S-запиÑей\n"
+" --srec-forceS3 Ограничить тип Ñозданных S-запиÑей до S3\n"
+" --strip-symbols <файл> -N Ð´Ð»Ñ Ð²Ñех Ñимволов, перечиÑленных в\n"
+" <файле>\n"
+" --strip-unneeded-symbols <файл>\n"
+" --strip-unneeded-symbol Ð´Ð»Ñ Ð²Ñех Ñимволов,\n"
+" перечиÑленных в <файле>\n"
+" --keep-symbols <файл> -K Ð´Ð»Ñ Ð²Ñех Ñимволов, перечиÑленных в\n"
+" <файле>\n"
+" --localize-symbols <файл> -L Ð´Ð»Ñ Ð²Ñех Ñимволов, перечиÑленных в\n"
+" <файле>\n"
+" --globalize-symbols <файл> --globalize-symbol Ð´Ð»Ñ Ð²Ñех в <файле>\n"
+" --keep-global-symbols <файл> -G Ð´Ð»Ñ Ð²Ñех Ñимволов, перечиÑленных в\n"
+" <файле>\n"
+" --weaken-symbols <файл> -W Ð´Ð»Ñ Ð²Ñех Ñимволов, перечиÑленных в\n"
+" <файле>\n"
+" --alt-machine-code <индекÑ> ИÑпользовать альтернативный Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑˆÐ¸Ð½Ñ‹\n"
+" Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð°\n"
+" --writable-text Пометить выходной текÑÑ‚ как\n"
+" перезапиÑываемый\n"
+" --readonly-text Пометить выходной текÑÑ‚ как защищенный\n"
+" от запиÑи\n"
+" --pure Пометить выходной файл как имеющий Ñтраницы,\n"
+" которые можно загружать в памÑÑ‚ÑŒ\n"
+" --impure Пометить выходной файл как загрÑзненный\n"
+" --prefix-symbols <префикÑ> Добавить <префикÑ> в начало имени\n"
+" каждого Ñимвола\n"
+" --prefix-sections <префикÑ> Добавить <префикÑ> в начало имени\n"
+" каждого раздела\n"
+" --prefix-alloc-sections <префикÑ>\n"
+" Добавить <префикÑ> в начало имени каждого\n"
+" выделÑемого раздела\n"
+" --file-alignment <чиÑло> УÑтановить выравнивание файла PE равным\n"
+" <чиÑлу>\n"
+" --heap <reserve>[,<commit>] УÑтановить в PE кучу reserve/commit в\n"
+" <reserve>/<commit>\n"
+" --image-base <адреÑ> УÑтановить базу Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð·Ð° PE в <адреÑ>\n"
+" --section-alignment <num> УÑтановить выравнивание раздела PE равным\n"
+" <чиÑлу>\n"
+" --stack <reserve>[,<commit>] УÑтановить в PE Ñтек reserve/commit в\n"
+" <reserve>/<commit>\n"
+" --subsystem <имÑ>[:<верÑиÑ>]\n"
+" УÑтановить подÑиÑтему PE Ñ Ð½ÑƒÐ¶Ð½Ñ‹Ð¼\n"
+" <именем> [и <верÑией>]\n"
+" --compress-debug-sections Сжимать раздела отладки DWARF Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ zlib\n"
+" --decompress-debug-sections Разжимать раздела отладки DWARF Ñ\n"
+" помощью zlib\n"
+" -v --verbose ПеречиÑлить вÑе изменённые объектные файлы\n"
+" @<файл> Читать параметры из <файла>\n"
+" -V --version ВывеÑти номер верÑии программы\n"
+" -h --help ВывеÑти Ñту Ñправку\n"
+" --info ПеречиÑлить поддерживаемые форматы объектов и архитектуры\n"
+
+#: objcopy.c:583
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "ИÑпользование: %s <параметры> in-файл(Ñ‹)\n"
+
+#: objcopy.c:584
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr " УдалÑет Ñимволы и разделы из файлов\n"
+
+#: objcopy.c:586
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target=<bfd-имÑ> подразумеваетÑÑ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ файл в формате <bfd-имÑ>\n"
+" -O --output-target=<bfd-имÑ> Ñоздать выходной файл в формате <bfd-имÑ>\n"
+" -F --target=<bfd-имÑ> уÑтановить входной и выходной форматы в <bfd-имÑ>\n"
+" -p --preserve-dates копировать Ð²Ñ€ÐµÐ¼Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸/доÑтупа на вывод\n"
+" -R --remove-section <имÑ> удалить раздел <имÑ> из вывода\n"
+" -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"
+" -x --discard-all удалить вÑе не глобальные Ñимволы\n"
+" -X --discard-locals удалить любые Ñимволы, Ñгенерированные компилÑтором\n"
+" -v --verbose перечиÑлить вÑе модифицированные объектные файлы\n"
+" -V --version показать номер верÑии Ñтой программы\n"
+" -h --help показать Ñту Ñправку\n"
+" --info вывеÑти ÑпиÑок поддерживаемых форматов объектов и архитектуры\n"
+" -o <файл> помеÑтить обработанные выходные данные в <файл>\n"
+
+#: objcopy.c:659
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "нераÑпознанный флаг раздела «%s»"
+
+#: objcopy.c:660
+#, c-format
+msgid "supported flags: %s"
+msgstr "неподдерживаемые флаги: %s"
+
+#: objcopy.c:761
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ «%s»: %s"
+
+#: objcopy.c:764 objcopy.c:3392
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: ошибка fread"
+
+#: objcopy.c:837
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: ПропуÑкаетÑÑ Ð¼ÑƒÑор, найденный в Ñтой Ñтроке"
+
+#: objcopy.c:1128
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr "Ñимвол «%s» не выделÑетÑÑ, потому что он назван в перемещении"
+
+#: objcopy.c:1211
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: Многократное переопределение Ñимвола «%s»"
+
+#: objcopy.c:1215
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: Символ «%s» ÑвлÑетÑÑ Ñ†ÐµÐ»ÑŒÑŽ более, чем одного переопределениÑ"
+
+#: objcopy.c:1243
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "не удалоÑÑŒ открыть файл Ð¿ÐµÑ€ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñимвола %s (ошибка: %s)"
+
+#: objcopy.c:1321
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: в конце Ñтроки найден муÑор"
+
+#: objcopy.c:1324
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: отÑутÑтвует Ð¸Ð¼Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñимвола"
+
+#: objcopy.c:1334
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: преждевременный конец файла"
+
+#: objcopy.c:1360
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat возвратил отрицательный размер Ð´Ð»Ñ Â«%s»"
+
+#: objcopy.c:1372
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "копирование из «%s» [неизв.] в «%s» [неизв.]\n"
+
+#: objcopy.c:1429
+msgid "Unable to change endianness of input file(s)"
+msgstr "Ðе удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ endianness входного файла"
+
+#: objcopy.c:1438
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "копирование из «%s» [%s] в «%s» [%s]\n"
+
+#: objcopy.c:1487
+#, c-format
+msgid "Input file `%s' ignores binary architecture parameter."
+msgstr "Ð”Ð»Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла «%s» игнорируетÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ двоичной архитектуры."
+
+#: objcopy.c:1495
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "Ðевозможно определить формат входного файла «%s»"
+
+#: objcopy.c:1498
+#, c-format
+msgid "Output file cannot represent architecture `%s'"
+msgstr "Выходной файл не может предоÑтавить архитектуру «%s»"
+
+#: objcopy.c:1561
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr "предупреждение: выравнивание файла (0x%s) > Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (0x%s)"
+
+#: objcopy.c:1620
+#, c-format
+msgid "can't add section '%s'"
+msgstr "не удалоÑÑŒ добавить раздел «%s»"
+
+#: objcopy.c:1634
+#, c-format
+msgid "can't create section `%s'"
+msgstr "не удалоÑÑŒ Ñоздать раздел «%s»"
+
+#: objcopy.c:1680
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr "не удалоÑÑŒ Ñоздать отладочный раздел ÑÑылок «%s»"
+
+#: objcopy.c:1773
+msgid "Can't fill gap after section"
+msgstr "Ðе удалоÑÑŒ заполнить промежуток поÑле раздела"
+
+#: objcopy.c:1797
+msgid "can't add padding"
+msgstr "не удалоÑÑŒ добавить заполнение"
+
+#: objcopy.c:1888
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr "не удалоÑÑŒ заполнить отладочный раздел ÑÑылок «%s»"
+
+#: objcopy.c:1951
+msgid "error copying private BFD data"
+msgstr "ошибка ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‡Ð°Ñтных данных BFD"
+
+#: objcopy.c:1962
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr "Ñта цель не поддерживает альтернативные машинные коды %lu"
+
+#: objcopy.c:1966
+msgid "treating that number as an absolute e_machine value instead"
+msgstr "ÑчитаетÑÑ, что чиÑло ÑвлÑетÑÑ Ð°Ð±Ñолютным значением e_machine"
+
+#: objcopy.c:1970
+msgid "ignoring the alternative value"
+msgstr "игнорируетÑÑ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ðµ значение"
+
+#: objcopy.c:2002 objcopy.c:2038
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr "невозможно Ñоздать временный каталог Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° (ошибка: %s)"
+
+#: objcopy.c:2068
+msgid "Unable to recognise the format of file"
+msgstr "Ðевозможно определить формат файла"
+
+#: objcopy.c:2195
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "ошибка: входной файл '%s' пуÑÑ‚"
+
+#: objcopy.c:2339
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "Многократные Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s"
+
+#: objcopy.c:2390
+msgid "error in private header data"
+msgstr "ошибка в заголовке чаÑтных данных"
+
+#: objcopy.c:2468
+msgid "failed to create output section"
+msgstr "не удалоÑÑŒ Ñоздать выходной раздел"
+
+#: objcopy.c:2482
+msgid "failed to set size"
+msgstr "не удалоÑÑŒ задать размер"
+
+#: objcopy.c:2496
+msgid "failed to set vma"
+msgstr "не удалоÑÑŒ задать vma"
+
+#: objcopy.c:2521
+msgid "failed to set alignment"
+msgstr "не удалоÑÑŒ задать выравнивание"
+
+#: objcopy.c:2555
+msgid "failed to copy private data"
+msgstr "не удалоÑÑŒ Ñкопировать чаÑтные данные"
+
+#: objcopy.c:2637
+msgid "relocation count is negative"
+msgstr "отрицательное значение Ñчётчика перемещений"
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2698
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr "невозможно перевернуть байты: длина раздела %s должна без оÑтатка делитьÑÑ Ð½Ð° %d"
+
+#: objcopy.c:2884
+msgid "can't create debugging section"
+msgstr "невозможно Ñоздать отладочный раздел"
+
+#: objcopy.c:2897
+msgid "can't set debugging section contents"
+msgstr "невозможно задать Ñодержимое отладочного раздела"
+
+#: objcopy.c:2905
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr "неизвеÑтно, как запиÑать отладочную информацию Ð´Ð»Ñ %s"
+
+#: objcopy.c:3048
+msgid "could not create temporary file to hold stripped copy"
+msgstr "невозможно Ñоздать временный файл Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ ÑƒÑ€ÐµÐ·Ð°Ð½Ð½Ð¾Ð¹ копии"
+
+#: objcopy.c:3120
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr "%s: Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð² подÑиÑтеме PE"
+
+#: objcopy.c:3150
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð¿Ð¾Ð´ÑиÑтема PE: %s"
+
+#: objcopy.c:3212
+msgid "byte number must be non-negative"
+msgstr "номер байта должен быть неотрицательным"
+
+#: objcopy.c:3218
+#, c-format
+msgid "architecture %s unknown"
+msgstr "архитектура %s неизвеÑтна"
+
+#: objcopy.c:3226
+msgid "interleave must be positive"
+msgstr "чередование должно быть положительным"
+
+#: objcopy.c:3235
+msgid "interleave width must be positive"
+msgstr "ширина Ñ‡ÐµÑ€ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть положительной"
+
+#: objcopy.c:3255 objcopy.c:3263
+#, c-format
+msgid "%s both copied and removed"
+msgstr "оба %s Ñкопированы и удалены"
+
+#: objcopy.c:3362 objcopy.c:3442 objcopy.c:3550 objcopy.c:3581 objcopy.c:3605
+#: objcopy.c:3609 objcopy.c:3629
+#, c-format
+msgid "bad format for %s"
+msgstr "плохой формат Ð´Ð»Ñ %s"
+
+#: objcopy.c:3374
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "невозможно открыть: %s: %s"
+
+#: objcopy.c:3519
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Предупреждение: обрезаетÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ промежутка от 0x%s до 0x%x"
+
+#: objcopy.c:3680
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr "неизвеÑтный параметр длинных имён раздела '%s'"
+
+#
+#: objcopy.c:3698
+msgid "unable to parse alternative machine code"
+msgstr "невозможно проанализировать альтернативный код машины"
+
+#
+#: objcopy.c:3743
+msgid "number of bytes to reverse must be positive and even"
+msgstr "количеÑтво байтов Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ñ€Ð°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ быть положительным и чётным"
+
+#: objcopy.c:3746
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr "Предупреждение: игнорируетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ %d предыдущего --reverse-bytes"
+
+#: objcopy.c:3761
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr "%s: неверное обратное значение Ð´Ð»Ñ --heap"
+
+#: objcopy.c:3767
+#, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr "%s: неверное фикÑированное значение Ð´Ð»Ñ --heap"
+
+#: objcopy.c:3792
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr "%s: неверное обратное значение Ð´Ð»Ñ --stack"
+
+#: objcopy.c:3798
+#, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr "%s: неверное фикÑированное значение Ð´Ð»Ñ --stack"
+
+#: objcopy.c:3827
+msgid "interleave start byte must be set with --byte"
+msgstr "должен быть задан начальный байт Ñ‡ÐµÑ€ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ --byte"
+
+#: objcopy.c:3830
+msgid "byte number must be less than interleave"
+msgstr "номер байта должен быть меньше чередованиÑ"
+
+#: objcopy.c:3833
+msgid "interleave width must be less than or equal to interleave - byte`"
+msgstr "ширина Ñ‡ÐµÑ€ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð° быть меньше или равна чередованию - byte`"
+
+#: objcopy.c:3860
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ Ñ†ÐµÐ»ÑŒ EFI: %s"
+
+#: objcopy.c:3891
+#, c-format
+msgid "unknown output EFI target: %s"
+msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð°Ñ Ñ†ÐµÐ»ÑŒ EFI: %s"
+
+#: objcopy.c:3904
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr "предупреждение: невозможно найти '%s'. СиÑтемное Ñообщение об ошибке: %s"
+
+#: objcopy.c:3916
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr "предупреждение: не удаётÑÑ Ñоздать временный файл во Ð²Ñ€ÐµÐ¼Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ '%s', (ошибка: %s)"
+
+#: objcopy.c:3944 objcopy.c:3958
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s никогда не иÑпользуетÑÑ"
+
+#: objdump.c:201
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "ИÑпользование: %s <параметры> <файл(Ñ‹)>\n"
+
+#: objdump.c:202
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " Отображает информацию из объекта <файл(ы)>.\n"
+
+#: objdump.c:203
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " Должен быть указан по крайней мере один из Ñледующих ключей:\n"
+
+#: objdump.c:204
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -P, --private=OPT,OPT... Display object format specific contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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[lLiaprmfFsoRt] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+msgstr ""
+" -a, --archive-headers показать информацию заголовка архива\n"
+" -f, --file-headers показать Ñодержимое заголовка вÑего файла\n"
+" -p, --private-headers показать Ñодержимое заголовка файла, Ñпецифичного\n"
+" Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° объекта\n"
+" -P, --private=OPT,OPT… показать Ñодержимое, отноÑÑщееÑÑ Ðº формату объекта\n"
+" -h, --[section-]headers показать Ñодержимое заголовков разделов\n"
+" -x, --all-headers показать Ñодержимое вÑех заголовков\n"
+" -d, --disassemble показать Ñодержимое иÑполнÑемых разделов\n"
+" на аÑÑемблере\n"
+" -D, --disassemble-all показать Ñодержимое вÑех разделов\n"
+" на аÑÑемблере\n"
+" -S, --source перемешать иÑходный код Ñ Ð´Ð¸Ð·Ð°ÑÑемблированием\n"
+" -s, --full-contents показать вÑÑ‘ Ñодержимое вÑех запрошенных\n"
+" разделов\n"
+" -g, --debugging показать отладочную информацию в объектном файле\n"
+" -e, --debugging-tags показать отладочную информацию в Ñтиле ctags\n"
+" -G, --stabs показать (в Ñырой форме) любую информацию STABS\n"
+" в файле\n"
+" -W[lLiaprmfFsoRt] или\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" показать информацию DWARF из файла\n"
+" -t, --syms показать Ñодержимое таблиц(Ñ‹) Ñимволов\n"
+" -T, --dynamic-syms показать Ñодержимое таблицы динамичеÑких Ñимволов\n"
+" -r, --reloc показать Ñлементы Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² файле\n"
+" -R, --dynamic-reloc показать Ñлементы динамичеÑкого Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð² файле\n"
+" @<файл> читать параметры из <файла>\n"
+" -v, --version показать верÑии Ñтой программы\n"
+" -i, --info вывеÑти ÑпиÑок поддерживаемых форматов объектов\n"
+" и архитектур\n"
+" -H, --help показать Ñту Ñправку\n"
+
+#: objdump.c:236
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" Следующие ключи ÑвлÑÑŽÑ‚ÑÑ Ð½ÐµÐ¾Ð±Ñзательными:\n"
+
+#: objdump.c:237
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a single line for -d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+msgstr ""
+" -b, --target=BFD-ИМЯ указать целевой формат объекта как BFD-ИМЯ\n"
+" -m, --architecture=ÐœÐШИÐРуказать целевую архитектуру как ÐœÐШИÐÐ\n"
+" -j, --section=ИМЯ показать информацию только Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° ИМЯ\n"
+" -M, --disassembler-options=OPT передать текÑÑ‚ OPT в дизаÑÑемблер\n"
+" -EB --endian=big предположить формат big endian при\n"
+" дизаÑÑемблировании\n"
+" -EL --endian=little предположить формат little endian при\n"
+" дизаÑÑемблировании\n"
+" --file-start-context включить контекÑÑ‚ из начала файла (Ñ -S)\n"
+" -I, --include=КÐТ добавить КÐТалог в ÑпиÑок поиÑка иÑходных\n"
+" файлов\n"
+" -l, --line-numbers включить номера Ñтрок и имена файлов при\n"
+" выводе\n"
+" -F, --file-offsets показывать файловые ÑмещениÑ\n"
+" -C, --demangle[=СТИЛЬ] декодировать Ñкорректированные/обработанные\n"
+" имена Ñимволов\n"
+" СТИЛЬ, еÑли указан, может быть auto, gnu,\n"
+" lucid, arm, hp, edg, gnu-v3, java\n"
+" или gnat\n"
+" -w, --wide форматировать вывод в более чем 80 колонок\n"
+" -z, --disassemble-zeroes не пропуÑкать блоки нулей при\n"
+" дизаÑÑемблировании\n"
+" --start-address=ÐДРЕС обработать только данные, адреÑ\n"
+" которых >= ÐДРЕС\n"
+" --stop-address=ÐДРЕС обработать только данные, адреÑ\n"
+" которых <= ÐДРЕС\n"
+" --prefix-addresses показать полный Ð°Ð´Ñ€ÐµÑ Ð¿Ñ€Ð¸ дизаÑÑемблировании\n"
+" --[no-]show-raw-insn показать hex при ÑимволичеÑком\n"
+" дизаÑÑемблировании\n"
+" --insn-width=ШИР показать ШИРину байт в отдельной Ñтроке Ð´Ð»Ñ -d\n"
+" --adjust-vma=СМЕЩЕÐИЕ добавить СМЕЩЕÐИЕ ко вÑем адреÑам выводимых\n"
+" разделов\n"
+" --special-syms включить Ñпециальные Ñимволы в дампы Ñимволов\n"
+" --prefix=ПРЕФИКС добавить ПРЕФИКС к абÑолютному пути Ð´Ð»Ñ -S\n"
+" --prefix-strip=УРОВЕÐЬ удалить начальные имена каталогов Ð´Ð»Ñ -S\n"
+
+#: objdump.c:263
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+"\n"
+msgstr ""
+" --dwarf-depth=N не показывать DIE поÑле N вложений или более\n"
+" --dwarf-start=N показывать DIE Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ N, Ñ Ñ‚ÐµÐ¼ же кол-вом\n"
+" вложений или глубже\n"
+"\n"
+
+#: objdump.c:275
+#, c-format
+msgid ""
+"\n"
+"Options supported for -P/--private switch:\n"
+msgstr ""
+"\n"
+"ЗначениÑ, поддерживаемые параметром -P/--private:\n"
+
+#: objdump.c:426
+#, c-format
+msgid "section '%s' mentioned in a -j option, but not found in any input file"
+msgstr "раздел «%s» передан в параметре -j, но не найден во входных файлах"
+
+#: objdump.c:530
+#, c-format
+msgid "Sections:\n"
+msgstr "Разделы:\n"
+
+#: objdump.c:533 objdump.c:537
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Инд Ð˜Ð¼Ñ Ð Ð°Ð·Ð¼ÐµÑ€ VMA LMA Файл Вырав"
+
+#: objdump.c:539
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Инд Ð˜Ð¼Ñ Ð Ð°Ð·Ð¼ÐµÑ€ VMA LMA Файл Вырав"
+
+#: objdump.c:543
+#, c-format
+msgid " Flags"
+msgstr " Флаги"
+
+#: objdump.c:586
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: не динамичеÑкий объект"
+
+#: objdump.c:1012 objdump.c:1036
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr " (файловое Ñмещение: 0x%lx)"
+
+#: objdump.c:1662
+#, c-format
+msgid "disassemble_fn returned length %d"
+msgstr "disassemble_fn вернула длину %d"
+
+#: objdump.c:1967
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+"\n"
+"ДизаÑÑемблирование раздела %s:\n"
+
+#: objdump.c:2143
+#, c-format
+msgid "can't use supplied machine %s"
+msgstr "невозможно иÑпользовать предÑтавленную машину %s"
+
+#: objdump.c:2162
+#, c-format
+msgid "can't disassemble for architecture %s\n"
+msgstr "невозможно выполнить дизаÑÑемблирование Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ %s\n"
+
+#: objdump.c:2242 objdump.c:2265
+#, c-format
+msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"Ðевозможно получить Ñодержимое раздела «%s».\n"
+
+#: objdump.c:2406
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"Раздел %s отÑутÑтвует\n"
+"\n"
+
+#: objdump.c:2415
+#, c-format
+msgid "reading %s section of %s failed: %s"
+msgstr "ошибка при чтении %s раздела %s: %s"
+
+#: objdump.c:2459
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"Содержимое раздела %s:\n"
+"\n"
+
+#: objdump.c:2590
+#, c-format
+msgid "architecture: %s, "
+msgstr "архитектура: %s, "
+
+#: objdump.c:2593
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "флаги 0x%08x:\n"
+
+#: objdump.c:2607
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"начальный Ð°Ð´Ñ€ÐµÑ 0x"
+
+#: objdump.c:2633
+msgid "option -P/--private not supported by this file"
+msgstr "параметр -P/--private не поддерживаетÑÑ Ð´Ð»Ñ Ñтого файла"
+
+#: objdump.c:2657
+#, c-format
+msgid "target specific dump '%s' not supported"
+msgstr "Ñпециальный дамп цели «%s» не поддерживаетÑÑ"
+
+#: objdump.c:2721
+#, c-format
+msgid "Contents of section %s:"
+msgstr "Содержимое раздела %s:"
+
+#: objdump.c:2723
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr " (ÐачинаетÑÑ Ð¿Ð¾ файловому Ñмещению: 0x%lx)"
+
+#: objdump.c:2729
+msgid "Reading section failed"
+msgstr "Ошибка при чтении раздела"
+
+#: objdump.c:2832
+#, c-format
+msgid "no symbols\n"
+msgstr "нет Ñимволов\n"
+
+#: objdump.c:2839
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr "нет информации о Ñимволе номер %ld\n"
+
+#: objdump.c:2842
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "невозможно определить тип Ñимвола номер %ld\n"
+
+#: objdump.c:3163
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: формат файла %s\n"
+
+#: objdump.c:3223
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: вывод отладочной информации завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹"
+
+#: objdump.c:3327
+#, c-format
+msgid "In archive %s:\n"
+msgstr "В архиве %s:\n"
+
+#: objdump.c:3438
+msgid "error: the start address should be before the end address"
+msgstr "ошибка: начальный Ð°Ð´Ñ€ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть перед конечным адреÑом"
+
+#: objdump.c:3443
+msgid "error: the stop address should be after the start address"
+msgstr "ошибка: конечный Ð°Ð´Ñ€ÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть поÑле начального адреÑа"
+
+#: objdump.c:3455
+msgid "error: prefix strip must be non-negative"
+msgstr "ошибка: удалÑемый Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ быть неотрицательным"
+
+#: objdump.c:3460
+msgid "error: instruction width must be positive"
+msgstr "ошибка: значение ширины инÑтрукции должно быть положительным"
+
+#: objdump.c:3469
+msgid "unrecognized -E option"
+msgstr "нераÑпознанный параметр -E"
+
+#: objdump.c:3480
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "нераÑпознанный --endian тип «%s»"
+
+#: od-xcoff.c:75
+#, c-format
+msgid ""
+"For XCOFF files:\n"
+" header Display the file header\n"
+" aout Display the auxiliary header\n"
+" sections Display the section headers\n"
+" syms Display the symbols table\n"
+" relocs Display the relocation entries\n"
+" lineno Display the line number entries\n"
+" loader Display loader section\n"
+" except Display exception table\n"
+" typchk Display type-check section\n"
+" traceback Display traceback tags\n"
+" toc Display toc symbols\n"
+msgstr ""
+"Ð”Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² XCOFF:\n"
+" header показать файловый заголовок\n"
+" aout показать вÑпомогательный заголовок\n"
+" sections показать заголовки разделов\n"
+" syms показать таблицу Ñимволов\n"
+" relocs показать Ñлементы перемещений\n"
+" lineno показать Ñлементы номеров Ñтрок\n"
+" loader показать таблицу загрузчика\n"
+" except показать таблицу иÑключений\n"
+" typchk показать раздел type-check\n"
+" traceback показать теги обратной траÑÑировки\n"
+" toc показать Ñимволы toc\n"
+
+#: od-xcoff.c:416
+#, c-format
+msgid " nbr sections: %d\n"
+msgstr " разделы nbr: %d\n"
+
+#: od-xcoff.c:417
+#, c-format
+msgid " time and date: 0x%08x - "
+msgstr " Ð²Ñ€ÐµÐ¼Ñ Ð¸ дата: 0x%08x - "
+
+#: od-xcoff.c:419
+#, c-format
+msgid "not set\n"
+msgstr "не задано\n"
+
+#: od-xcoff.c:426
+#, c-format
+msgid " symbols off: 0x%08x\n"
+msgstr " ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñимволов: 0x%08x\n"
+
+#: od-xcoff.c:427
+#, c-format
+msgid " nbr symbols: %d\n"
+msgstr " Ñимволы nbr: %d\n"
+
+#: od-xcoff.c:428
+#, c-format
+msgid " opt hdr sz: %d\n"
+msgstr " opt hdr sz: %d\n"
+
+#: od-xcoff.c:429
+#, c-format
+msgid " flags: 0x%04x "
+msgstr " флаги: 0x%04x "
+
+#: od-xcoff.c:443
+#, c-format
+msgid "Auxiliary header:\n"
+msgstr "Ð’Ñпомогательный заголовок:\n"
+
+#: od-xcoff.c:446
+#, c-format
+msgid " No aux header\n"
+msgstr " Ðет вÑпм. заголовка\n"
+
+#: od-xcoff.c:451
+#, c-format
+msgid "warning: optionnal header size too large (> %d)\n"
+msgstr "предупреждение: размер необÑзательного заголовка Ñлишком большой (> %d)\n"
+
+#: od-xcoff.c:457
+msgid "cannot read auxhdr"
+msgstr "не удалоÑÑŒ прочитать auxhdr"
+
+#: od-xcoff.c:462
+#, c-format
+msgid " o_mflag (magic): 0x%04x 0%04o\n"
+msgstr " o_mflag (Ñпец): 0x%04x 0%04o\n"
+
+#: od-xcoff.c:463
+#, c-format
+msgid " o_vstamp: 0x%04x\n"
+msgstr " o_vstamp: 0x%04x\n"
+
+#: od-xcoff.c:465
+#, c-format
+msgid " o_tsize: 0x%08x\n"
+msgstr " o_tsize: 0x%08x\n"
+
+#: od-xcoff.c:467
+#, c-format
+msgid " o_dsize: 0x%08x\n"
+msgstr " o_dsize: 0x%08x\n"
+
+#: od-xcoff.c:469
+#, c-format
+msgid " o_entry: 0x%08x\n"
+msgstr " o_entry: 0x%08x\n"
+
+#: od-xcoff.c:471
+#, c-format
+msgid " o_text_start: 0x%08x\n"
+msgstr " o_text_start: 0x%08x\n"
+
+#: od-xcoff.c:473
+#, c-format
+msgid " o_data_start: 0x%08x\n"
+msgstr " o_data_start: 0x%08x\n"
+
+#: od-xcoff.c:477
+#, c-format
+msgid " o_toc: 0x%08x\n"
+msgstr " o_toc: 0x%08x\n"
+
+#: od-xcoff.c:479
+#, c-format
+msgid " o_snentry: 0x%04x\n"
+msgstr " o_snentry: 0x%04x\n"
+
+#: od-xcoff.c:481
+#, c-format
+msgid " o_sntext: 0x%04x\n"
+msgstr " o_sntext: 0x%04x\n"
+
+#: od-xcoff.c:483
+#, c-format
+msgid " o_sndata: 0x%04x\n"
+msgstr " o_sndata: 0x%04x\n"
+
+#: od-xcoff.c:485
+#, c-format
+msgid " o_sntoc: 0x%04x\n"
+msgstr " o_sntoc: 0x%04x\n"
+
+#: od-xcoff.c:487
+#, c-format
+msgid " o_snloader: 0x%04x\n"
+msgstr " o_snloader: 0x%04x\n"
+
+#: od-xcoff.c:489
+#, c-format
+msgid " o_snbss: 0x%04x\n"
+msgstr " o_snbss: 0x%04x\n"
+
+#: od-xcoff.c:491
+#, c-format
+msgid " o_algntext: %u\n"
+msgstr " o_algntext: %u\n"
+
+#: od-xcoff.c:493
+#, c-format
+msgid " o_algndata: %u\n"
+msgstr " o_algndata: %u\n"
+
+#: od-xcoff.c:495
+#, c-format
+msgid " o_modtype: 0x%04x"
+msgstr " o_modtype: 0x%04x"
+
+#: od-xcoff.c:500
+#, c-format
+msgid " o_cputype: 0x%04x\n"
+msgstr " o_cputype: 0x%04x\n"
+
+#: od-xcoff.c:502
+#, c-format
+msgid " o_maxstack: 0x%08x\n"
+msgstr " o_maxstack: 0x%08x\n"
+
+#: od-xcoff.c:504
+#, c-format
+msgid " o_maxdata: 0x%08x\n"
+msgstr " o_maxdata: 0x%08x\n"
+
+#: od-xcoff.c:507
+#, c-format
+msgid " o_debugger: 0x%08x\n"
+msgstr " o_debugger: 0x%08x\n"
+
+#: od-xcoff.c:521
+#, c-format
+msgid "Section headers (at %u+%u=0x%08x to 0x%08x):\n"
+msgstr "Заголовки разделов (Ñ %u+%u=0x%08x по 0x%08x):\n"
+
+#: od-xcoff.c:526
+#, c-format
+msgid " No section header\n"
+msgstr " Ðет заголовка раздела\n"
+
+#: od-xcoff.c:531 od-xcoff.c:542 od-xcoff.c:598
+msgid "cannot read section header"
+msgstr "не удалоÑÑŒ прочитать заголовок раздела"
+
+#: od-xcoff.c:534
+#, c-format
+msgid " # Name paddr vaddr size scnptr relptr lnnoptr nrel nlnno\n"
+msgstr " # Ð˜Ð¼Ñ paddr vaddr size scnptr relptr lnnoptr nrel nlnno\n"
+
+#: od-xcoff.c:546
+#, c-format
+msgid "%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n"
+msgstr "%2d %-8.8s %08x %08x %08x %08x %08x %08x %-5d %-5d\n"
+
+#: od-xcoff.c:557
+#, c-format
+msgid " Flags: %08x "
+msgstr " Флаги: %08x "
+
+#: od-xcoff.c:565
+#, c-format
+msgid "overflow - nreloc: %u, nlnno: %u\n"
+msgstr "переполнение — nreloc: %u, nlnno: %u\n"
+
+#: od-xcoff.c:586 od-xcoff.c:919 od-xcoff.c:974
+msgid "cannot read section headers"
+msgstr "не удалоÑÑŒ прочитать заголовки разделов"
+
+#: od-xcoff.c:650
+msgid "cannot read strings table len"
+msgstr "не удалоÑÑŒ прочитать длину таблицы Ñтрок"
+
+#: od-xcoff.c:664
+msgid "cannot read strings table"
+msgstr "не удалоÑÑŒ прочитать таблицу Ñтрок"
+
+#: od-xcoff.c:672
+msgid "cannot read symbol table"
+msgstr "не удалоÑÑŒ прочитать таблицу Ñимволов"
+
+#: od-xcoff.c:687
+msgid "cannot read symbol entry"
+msgstr "не удалоÑÑŒ прочитать Ñимвольный Ñлемент"
+
+#: od-xcoff.c:722
+msgid "cannot read symbol aux entry"
+msgstr "не удалоÑÑŒ прочитать Ñлемент aux"
+
+#: od-xcoff.c:744
+#, c-format
+msgid "Symbols table (strtable at 0x%08x)"
+msgstr "Таблица Ñимволов (strtable Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ 0x%08x)"
+
+#: od-xcoff.c:749
+#, c-format
+msgid ""
+":\n"
+" No symbols\n"
+msgstr ""
+":\n"
+" Ðет Ñимволов\n"
+
+#: od-xcoff.c:755
+#, c-format
+msgid " (no strings):\n"
+msgstr " (нет Ñтрок):\n"
+
+#: od-xcoff.c:757
+#, c-format
+msgid " (strings size: %08x):\n"
+msgstr " (размер Ñтрок: %08x):\n"
+
+#: od-xcoff.c:770
+#, c-format
+msgid " # sc value section type aux name/off\n"
+msgstr " # sc знач раздел тип aux имÑ/Ñмещ\n"
+
+#: od-xcoff.c:821
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+
+#: od-xcoff.c:827
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u\n"
+
+#. Function aux entry.
+#: od-xcoff.c:837
+#, c-format
+msgid " exptr: %08x fsize: %08x lnnoptr: %08x endndx: %u\n"
+msgstr " exptr: %08x fsize: %08x lnnoptr: %08x endndx: %u\n"
+
+#: od-xcoff.c:856
+#, c-format
+msgid " scnsym: %-8u"
+msgstr " scnsym: %-8u"
+
+#: od-xcoff.c:858
+#, c-format
+msgid " scnlen: %08x"
+msgstr " scnlen: %08x"
+
+#: od-xcoff.c:859
+#, c-format
+msgid " h: parm=%08x sn=%04x al: 2**%u"
+msgstr " h: parm=%08x sn=%04x al: 2**%u"
+
+#: od-xcoff.c:863
+#, c-format
+msgid " typ: "
+msgstr " typ: "
+
+#: od-xcoff.c:865
+#, c-format
+msgid " cl: "
+msgstr " cl: "
+
+#: od-xcoff.c:878
+#, c-format
+msgid " ftype: %02x "
+msgstr " ftype: %02x "
+
+#: od-xcoff.c:881
+#, c-format
+msgid "fname: %.14s"
+msgstr "fname: %.14s"
+
+#: od-xcoff.c:887
+#, c-format
+msgid " %s"
+msgstr " %s"
+
+#: od-xcoff.c:889
+#, c-format
+msgid "offset: %08x"
+msgstr "Ñмещение: %08x"
+
+#: od-xcoff.c:896
+#, c-format
+msgid " lnno: %u\n"
+msgstr " lnno: %u\n"
+
+#: od-xcoff.c:931
+#, c-format
+msgid "Relocations for %s (%u)\n"
+msgstr "ÐŸÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ %s (%u)\n"
+
+#: od-xcoff.c:934
+msgid "cannot read relocations"
+msgstr "не удалоÑÑŒ прочитать перемещениÑ"
+
+#: od-xcoff.c:937
+#, c-format
+msgid "vaddr sgn mod sz type symndx symbol\n"
+msgstr "vaddr sgn mod sz тип symndx Ñимвол\n"
+
+#: od-xcoff.c:946
+msgid "cannot read relocation entry"
+msgstr "не удалоÑÑŒ прочитать Ñлемент перемещениÑ"
+
+#: od-xcoff.c:950
+#, c-format
+msgid "%08x %c %c %-2u "
+msgstr "%08x %c %c %-2u "
+
+#: od-xcoff.c:986
+#, c-format
+msgid "Line numbers for %s (%u)\n"
+msgstr "Ðомера Ñтрок Ð´Ð»Ñ %s (%u)\n"
+
+#: od-xcoff.c:989
+msgid "cannot read line numbers"
+msgstr "не удалоÑÑŒ прочитать номера Ñтрок"
+
+#: od-xcoff.c:992
+#, c-format
+msgid "lineno symndx/paddr\n"
+msgstr "lineno symndx/paddr\n"
+
+#: od-xcoff.c:1000
+msgid "cannot read line number entry"
+msgstr "не удалоÑÑŒ прочитать Ñлемент номера Ñтроки"
+
+#: od-xcoff.c:1004
+#, c-format
+msgid " %-6u "
+msgstr " %-6u "
+
+#: od-xcoff.c:1043
+#, c-format
+msgid "no .loader section in file\n"
+msgstr "в файле нет раздела .loader\n"
+
+#: od-xcoff.c:1049
+#, c-format
+msgid "section .loader is too short\n"
+msgstr "раздел .loader Ñлишком короткий\n"
+
+#: od-xcoff.c:1056
+#, c-format
+msgid "Loader header:\n"
+msgstr "Заголовок загрузчика:\n"
+
+#: od-xcoff.c:1058
+#, c-format
+msgid " version: %u\n"
+msgstr " верÑиÑ: %u\n"
+
+#: od-xcoff.c:1061
+#, c-format
+msgid " Unhandled version\n"
+msgstr " ÐÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑиÑ\n"
+
+#: od-xcoff.c:1066
+#, c-format
+msgid " nbr symbols: %u\n"
+msgstr " nbr Ñимволов: %u\n"
+
+#: od-xcoff.c:1068
+#, c-format
+msgid " nbr relocs: %u\n"
+msgstr " nbr relocs: %u\n"
+
+#: od-xcoff.c:1069
+#, c-format
+msgid " import strtab len: %u\n"
+msgstr " import strtab len: %u\n"
+
+#: od-xcoff.c:1072
+#, c-format
+msgid " nbr import files: %u\n"
+msgstr " nbr файл. импорта: %u\n"
+
+#: od-xcoff.c:1074
+#, c-format
+msgid " import file off: %u\n"
+msgstr " Ñмещ. файла имп: %u\n"
+
+#: od-xcoff.c:1076
+#, c-format
+msgid " string table len: %u\n"
+msgstr " длина табл. Ñтрок: %u\n"
+
+#: od-xcoff.c:1078
+#, c-format
+msgid " string table off: %u\n"
+msgstr " Ñмещ. табл. Ñтрок: %u\n"
+
+#: od-xcoff.c:1081
+#, c-format
+msgid "Dynamic symbols:\n"
+msgstr "ДинамичеÑкие Ñимволы:\n"
+
+#: od-xcoff.c:1082
+#, c-format
+msgid " # value sc IFEW ty class file pa name\n"
+msgstr " # значение sc IFEW ty клаÑÑ Ñ„Ð°Ð¹Ð» pa имÑ\n"
+
+#: od-xcoff.c:1087
+#, c-format
+msgid " %4u %08x %3u "
+msgstr " %4u %08x %3u "
+
+#: od-xcoff.c:1100
+#, c-format
+msgid " %3u %3u "
+msgstr " %3u %3u "
+
+#: od-xcoff.c:1109
+#, c-format
+msgid "(bad offset: %u)"
+msgstr "(неверное Ñмещение: %u)"
+
+#: od-xcoff.c:1116
+#, c-format
+msgid "Dynamic relocs:\n"
+msgstr "ДинамичеÑкие перемещ.:\n"
+
+#: od-xcoff.c:1117
+#, c-format
+msgid " vaddr sec sz typ sym\n"
+msgstr " vaddr sec sz typ sym\n"
+
+#: od-xcoff.c:1129
+#, c-format
+msgid " %08x %3u %c%c %2u "
+msgstr " %08x %3u %c%c %2u "
+
+#: od-xcoff.c:1140
+#, c-format
+msgid ".text"
+msgstr ".text"
+
+#: od-xcoff.c:1143
+#, c-format
+msgid ".data"
+msgstr ".data"
+
+#: od-xcoff.c:1146
+#, c-format
+msgid ".bss"
+msgstr ".bss"
+
+#: od-xcoff.c:1149
+#, c-format
+msgid "%u"
+msgstr "%u"
+
+#: od-xcoff.c:1155
+#, c-format
+msgid "Import files:\n"
+msgstr "Файлы импорта:\n"
+
+#: od-xcoff.c:1187
+#, c-format
+msgid "no .except section in file\n"
+msgstr "в файле нет раздела .except\n"
+
+#: od-xcoff.c:1195
+#, c-format
+msgid "Exception table:\n"
+msgstr "Таблица иÑключений:\n"
+
+#: od-xcoff.c:1196
+#, c-format
+msgid "lang reason sym/addr\n"
+msgstr "lang reason sym/addr\n"
+
+#: od-xcoff.c:1204
+#, c-format
+msgid " %02x %02x "
+msgstr " %02x %02x "
+
+#: od-xcoff.c:1209
+#, c-format
+msgid "@%08x"
+msgstr "@%08x"
+
+#: od-xcoff.c:1229
+#, c-format
+msgid "no .typchk section in file\n"
+msgstr "в файле нет раздела .typchk\n"
+
+#: od-xcoff.c:1236
+#, c-format
+msgid "Type-check section:\n"
+msgstr "Раздел type-check:\n"
+
+#: od-xcoff.c:1237
+#, c-format
+msgid "offset len lang-id general-hash language-hash\n"
+msgstr "Ñмещение len lang-id general-hash language-hash\n"
+
+#: od-xcoff.c:1282
+#, c-format
+msgid " address beyond section size\n"
+msgstr " Ð°Ð´Ñ€ÐµÑ Ð²Ð½Ðµ размеров раздела\n"
+
+#: od-xcoff.c:1292
+#, c-format
+msgid " tags at %08x\n"
+msgstr " теги от %08x\n"
+
+#: od-xcoff.c:1299
+#, c-format
+msgid " version: %u, lang: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n"
+msgstr " верÑиÑ: %u, Ñзык: %u, global_link: %u, is_eprol: %u, has_tboff: %u, int_proc: %u\n"
+
+#: od-xcoff.c:1306
+#, c-format
+msgid " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n"
+msgstr " has_ctl: %u, tocless: %u, fp_pres: %u, log_abort: %u, int_hndl: %u\n"
+
+#: od-xcoff.c:1312
+#, c-format
+msgid " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n"
+msgstr " name_pres: %u, uses_alloca: %u, cl_dis_inv: %u, saves_cr: %u, saves_lr: %u\n"
+
+#: od-xcoff.c:1318
+#, c-format
+msgid " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n"
+msgstr " stores_bc: %u, fixup: %u, fpr_saved: %-2u, spare3: %u, gpr_saved: %-2u\n"
+
+#: od-xcoff.c:1324
+#, c-format
+msgid " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n"
+msgstr " fixparms: %-3u floatparms: %-3u parm_on_stk: %u\n"
+
+#: od-xcoff.c:1337
+#, c-format
+msgid " parminfo: 0x%08x\n"
+msgstr " parminfo: 0x%08x\n"
+
+#: od-xcoff.c:1348
+#, c-format
+msgid " tb_offset: 0x%08x (start=0x%08x)\n"
+msgstr " tb_offset: 0x%08x (start=0x%08x)\n"
+
+#: od-xcoff.c:1359
+#, c-format
+msgid " hand_mask_offset: 0x%08x\n"
+msgstr " hand_mask_offset: 0x%08x\n"
+
+#: od-xcoff.c:1370
+#, c-format
+msgid " number of CTL anchors: %u\n"
+msgstr " количеÑтво Ñкорей CTL: %u\n"
+
+#: od-xcoff.c:1375
+#, c-format
+msgid " CTL[%u]: %08x\n"
+msgstr " CTL[%u]: %08x\n"
+
+#: od-xcoff.c:1389
+#, c-format
+msgid " Name (len: %u): "
+msgstr " Ð˜Ð¼Ñ (длина: %u): "
+
+#: od-xcoff.c:1392
+#, c-format
+msgid "[truncated]\n"
+msgstr "[обрезано]\n"
+
+#: od-xcoff.c:1407
+#, c-format
+msgid " alloca reg: %u\n"
+msgstr " alloca reg: %u\n"
+
+#: od-xcoff.c:1411
+#, c-format
+msgid " (end of tags at %08x)\n"
+msgstr " (конец тегов от %08x)\n"
+
+#: od-xcoff.c:1414
+#, c-format
+msgid " no tags found\n"
+msgstr " теги не найдены\n"
+
+#: od-xcoff.c:1418
+#, c-format
+msgid " Truncated .text section\n"
+msgstr " Раздел .text обрезан\n"
+
+#: od-xcoff.c:1503
+#, c-format
+msgid "TOC:\n"
+msgstr "TOC:\n"
+
+#: od-xcoff.c:1546
+#, c-format
+msgid "Nbr entries: %-8u Size: %08x (%u)\n"
+msgstr "Nbr Ñлементов: %-8u Размер: %08x (%u)\n"
+
+#: od-xcoff.c:1630
+msgid "cannot read header"
+msgstr "не удалоÑÑŒ прочитать заголовок"
+
+#: od-xcoff.c:1638
+#, c-format
+msgid "File header:\n"
+msgstr "Файловый заголовок:\n"
+
+#: od-xcoff.c:1639
+#, c-format
+msgid " magic: 0x%04x (0%04o) "
+msgstr " Ñпец.: 0x%04x (0%04o) "
+
+#: od-xcoff.c:1643
+#, c-format
+msgid "(WRMAGIC: writable text segments)"
+msgstr "(ЗÐПСПЕЦ: текÑтовые Ñегменты доÑтупны на запиÑÑŒ)"
+
+#: od-xcoff.c:1646
+#, c-format
+msgid "(ROMAGIC: readonly sharablee text segments)"
+msgstr "(ЧТЕСПЕЦ: общие текÑтовые Ñегменты доÑтупны только на чтение)"
+
+#: od-xcoff.c:1649
+#, c-format
+msgid "(TOCMAGIC: readonly text segments and TOC)"
+msgstr "(TOCСПЕЦ: текÑтовые Ñегменты и TOC доÑтупны только на чтение)"
+
+#: od-xcoff.c:1652
+#, c-format
+msgid "unknown magic"
+msgstr "неизвеÑтный опознавательный (Ñпец.) номер"
+
+#: od-xcoff.c:1659
+#, c-format
+msgid " Unhandled magic\n"
+msgstr " Ðеобработанный Ñпец. (magic) номер\n"
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr "Ð´Ð»Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ñ‹ code_page указано недопуÑтимое значение.\n"
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: неправильный код типа 0x%x"
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹: %s"
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹: %s"
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf без предшеÑтвующей функции"
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: неожиданный .ef\n"
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: нет раÑпознанной отладочной информации"
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "ПоÑледние пункты stabs перед ошибкой:\n"
+
+#: readelf.c:265
+msgid "<none>"
+msgstr "<нет>"
+
+#: readelf.c:266
+msgid "<no-name>"
+msgstr "<нет-имени>"
+
+#: readelf.c:267 readelf.c:5026 readelf.c:5536 readelf.c:8077 readelf.c:8195
+#: readelf.c:9154 readelf.c:9234 readelf.c:9287 readelf.c:12150
+#: readelf.c:12153
+msgid "<corrupt>"
+msgstr "<повреждено>"
+
+#: readelf.c:300
+#, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "Ðевозможно найти 0x%lx Ð´Ð»Ñ %s\n"
+
+#: readelf.c:315
+#, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Ðехватка памÑти при раÑпределении 0x%lx байт Ð´Ð»Ñ %s\n"
+
+#: readelf.c:325
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Ðевозможно прочитать 0x%lx байт из %s\n"
+
+#: readelf.c:625
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "ÐеизвеÑтно о перемещениÑÑ… Ð´Ð»Ñ Ñтой архитектуры машины\n"
+
+#: readelf.c:646 readelf.c:676 readelf.c:744 readelf.c:773
+msgid "relocs"
+msgstr "перемещениÑ"
+
+#
+#: readelf.c:658 readelf.c:688 readelf.c:755 readelf.c:784
+msgid "out of memory parsing relocs\n"
+msgstr "нехватка памÑти при анализе перемещений\n"
+
+#: readelf.c:889
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr " Смещение Инфо Тип Знач.Ñимв. Ð˜Ð¼Ñ Ñимвола + Addend\n"
+
+#: readelf.c:891
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr " Смещение Инфо Тип Знач.Ñимв Ð˜Ð¼Ñ Ñимв. + Addend\n"
+
+#: readelf.c:896
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " Смещение Инфо Тип Знач.Ñимв Ð˜Ð¼Ñ Ñимвола\n"
+
+#: readelf.c:898
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " Смещение Инфо Тип Знач.Ñимв Ð˜Ð¼Ñ Ñимв.\n"
+
+#: readelf.c:906
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr " Смещение Инфо Тип Значение Ñимв. Ð˜Ð¼Ñ Ñимвола + Addend\n"
+
+#: readelf.c:908
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr " Смещение Инфо Тип Знач.Ñимв. Ð˜Ð¼Ñ Ñимв. + Addend\n"
+
+#: readelf.c:913
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr " Смещение Инфо Тип Значение Ñимв. Ð˜Ð¼Ñ Ñимвола\n"
+
+#: readelf.c:915
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " Смещение Инфо Тип Знач.Ñимв. Ð˜Ð¼Ñ Ñимв.\n"
+
+#: readelf.c:1219 readelf.c:1378 readelf.c:1386
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "нераÑпознанный: %-7lx"
+
+#: readelf.c:1244
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<неизвеÑтный addend: %lx>"
+
+#: readelf.c:1251
+#, c-format
+msgid " bad symbol index: %08lx"
+msgstr " неправильный Ð¸Ð½Ð´ÐµÐºÑ Ñимвола: %08lx"
+
+#: readelf.c:1336
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr "<Ð¸Ð½Ð´ÐµÐºÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñтрок: %3ld>"
+
+#: readelf.c:1338
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<поврежден Ð¸Ð½Ð´ÐµÐºÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñтрок: %3ld>"
+
+#: readelf.c:1731
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "Специфичный Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑора: %lx"
+
+#: readelf.c:1755
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "Специфичный Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾Ð¹ ÑиÑтемы: %lx"
+
+#: readelf.c:1759 readelf.c:2821
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<неизвеÑтный>: %lx"
+
+#: readelf.c:1772
+msgid "NONE (None)"
+msgstr "ÐЕТ (Ðет)"
+
+#: readelf.c:1773
+msgid "REL (Relocatable file)"
+msgstr "REL (Перемещаемый файл)"
+
+#: readelf.c:1774
+msgid "EXEC (Executable file)"
+msgstr "EXEC (ИÑполнÑемый файл)"
+
+#: readelf.c:1775
+msgid "DYN (Shared object file)"
+msgstr "DYN (Совм. иÑп. объектный файл)"
+
+#: readelf.c:1776
+msgid "CORE (Core file)"
+msgstr "CORE (ОÑновной файл)"
+
+#: readelf.c:1780
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "Специфичный Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑора: (%x)"
+
+#: readelf.c:1782
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "Специфичный Ð´Ð»Ñ ÐžÐ¡: (%x)"
+
+#: readelf.c:1784 readelf.c:3068
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<неизвеÑтный>: %x"
+
+#: readelf.c:1796
+msgid "None"
+msgstr "Ðет"
+
+#: readelf.c:1964
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr "<неизвеÑтный>: 0x%x"
+
+#: readelf.c:2150
+msgid ", <unknown>"
+msgstr ", <неизвеÑтный>"
+
+#
+#: readelf.c:2236 readelf.c:7428
+msgid "unknown"
+msgstr "неизвеÑтный"
+
+#
+#: readelf.c:2237
+msgid "unknown mac"
+msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð°"
+
+#: readelf.c:2301
+msgid ", relocatable"
+msgstr ", перемещаемый"
+
+#: readelf.c:2304
+msgid ", relocatable-lib"
+msgstr ", перемещаемаÑ-библиотека"
+
+#: readelf.c:2327
+msgid ", unknown v850 architecture variant"
+msgstr ", неизвеÑтный вариант архитектуры v850"
+
+#: readelf.c:2384
+msgid ", unknown CPU"
+msgstr ", неизвеÑтный ЦП"
+
+#: readelf.c:2399
+msgid ", unknown ABI"
+msgstr ", неизвеÑтный ABI"
+
+#: readelf.c:2419 readelf.c:2453
+msgid ", unknown ISA"
+msgstr ", неизвеÑтный ISA"
+
+#: readelf.c:2626
+msgid "Standalone App"
+msgstr "Изолированное приложение"
+
+#: readelf.c:2635
+msgid "Bare-metal C6000"
+msgstr "Bare-metal C6000"
+
+#: readelf.c:2645 readelf.c:3431 readelf.c:3447
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<неизвеÑтный: %x>"
+
+#: readelf.c:3123
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "ИÑпользование: readelf <параметры> elf-файл(Ñ‹)\n"
+
+#: readelf.c:3124
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr " Отображает информацию о Ñодержимом файлов в формате ELF\n"
+
+#: readelf.c:3125
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" --dyn-syms Display the dynamic symbol table\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as relocated bytes\n"
+" -w[lLiaprmfFsoRt] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" Параметры:\n"
+" -a --all Ñквивалент: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header показать заголовок файла ELF\n"
+" -l --program-headers показать заголовки программы\n"
+" --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"
+" --dyn-syms показать таблицу динамичеÑких Ñимволов\n"
+" -n --notes показать оÑновные запиÑи (еÑли имеютÑÑ)\n"
+" -r --relocs показать Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ (еÑли имеютÑÑ)\n"
+" -u --unwind показать информацию unwind (еÑли имеетÑÑ)\n"
+" -d --dynamic показать динамичеÑкий раздел (еÑли имеетÑÑ)\n"
+" -V --version-info показать разделы Ñ Ð²ÐµÑ€ÑиÑми (еÑли имеютÑÑ)\n"
+" -A --arch-specific показать ÑведениÑ, Ñпецифичные Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹\n"
+" (еÑли имеютÑÑ).\n"
+" -c --archive-index показать Ð¸Ð½Ð´ÐµÐºÑ Ñимвола/файла в архиве\n"
+" -D --use-dynamic иÑпользовать динамичеÑкую информацию раздела при\n"
+" выводе Ñимволов\n"
+" -x --hex-dump=<номер|имÑ>\n"
+" дамп Ñодержимого раздела Ñ <номером|именем> в\n"
+" в виде байт\n"
+" -p --string-dump=<номер|имÑ>\n"
+" дамп Ñодержимого раздела Ñ <номером|именем> в\n"
+" в виде Ñтрок\n"
+" -R --relocated-dump=<номер|имÑ>\n"
+" дамп Ñодержимого раздела Ñ <номером|именем> в\n"
+" в виде перемещённых байт\n"
+" -w[lLiaprmfFsoRt] или\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,\n"
+" =frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" показать Ñодержимое отладочных разделов DWARF2\n"
+
+#: readelf.c:3157
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+msgstr ""
+" --dwarf-depth=N не показывать DIE поÑле N вложений или более\n"
+" --dwarf-start=N показывать DIE Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ N, Ñ Ñ‚ÐµÐ¼ же кол-вом\n"
+" вложений или глубже\n"
+
+#: readelf.c:3162
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+" -i --instruction-dump=<номер|имÑ>\n"
+" дизаÑÑемблировать Ñодержимое раздела Ñ\n"
+" <номером|именем>\n"
+
+#: readelf.c:3166
+#, 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:3195 readelf.c:3224 readelf.c:3228 readelf.c:13374
+msgid "Out of memory allocating dump request table.\n"
+msgstr "Ðехватка памÑти при размещении дампа таблицы запроÑа.\n"
+
+#: readelf.c:3400
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "ÐедопуÑтимый параметр «-%c»\n"
+
+#: readelf.c:3415
+msgid "Nothing to do.\n"
+msgstr "Ðечего выполнÑÑ‚ÑŒ.\n"
+
+#: readelf.c:3427 readelf.c:3443 readelf.c:8013
+msgid "none"
+msgstr "нет"
+
+#: readelf.c:3444
+msgid "2's complement, little endian"
+msgstr "дополнение до 2, little endian"
+
+#: readelf.c:3445
+msgid "2's complement, big endian"
+msgstr "дополнение до 2, big endian"
+
+#: readelf.c:3463
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "Ðе ELF-файл — он Ñодержит неверные magic-байты в начале\n"
+
+#: readelf.c:3473
+#, c-format
+msgid "ELF Header:\n"
+msgstr "Заголовок ELF:\n"
+
+#: readelf.c:3474
+#, c-format
+msgid " Magic: "
+msgstr " Magic: "
+
+#: readelf.c:3478
+#, c-format
+msgid " Class: %s\n"
+msgstr " КлаÑÑ: %s\n"
+
+#: readelf.c:3480
+#, c-format
+msgid " Data: %s\n"
+msgstr " Данные: %s\n"
+
+#: readelf.c:3482
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " ВерÑиÑ: %d %s\n"
+
+#: readelf.c:3487
+#, c-format
+msgid "<unknown: %lx>"
+msgstr "<неизвеÑтный: %lx>"
+
+#: readelf.c:3489
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS/ABI: %s\n"
+
+#: readelf.c:3491
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " ВерÑÐ¸Ñ ABI: %d\n"
+
+#: readelf.c:3493
+#, c-format
+msgid " Type: %s\n"
+msgstr " Тип: %s\n"
+
+#: readelf.c:3495
+#, c-format
+msgid " Machine: %s\n"
+msgstr " Машина: %s\n"
+
+#: readelf.c:3497
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " ВерÑиÑ: 0x%lx\n"
+
+#: readelf.c:3500
+#, c-format
+msgid " Entry point address: "
+msgstr " ÐÐ´Ñ€ÐµÑ Ñ‚Ð¾Ñ‡ÐºÐ¸ входа: "
+
+#: readelf.c:3502
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" Ðачало заголовков программы: "
+
+#: readelf.c:3504
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (байт в файле)\n"
+" Ðачало заголовков программы: "
+
+#: readelf.c:3506
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (байт в файле)\n"
+
+#: readelf.c:3508
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Флаги: 0x%lx%s\n"
+
+#: readelf.c:3511
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " Размер Ñтого заголовка: %ld (байт)\n"
+
+#: readelf.c:3513
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " Размер заголовков программы: %ld (байт)\n"
+
+#: readelf.c:3515
+#, c-format
+msgid " Number of program headers: %ld"
+msgstr " ЧиÑло заголовков программы: %ld"
+
+#: readelf.c:3522
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " Размер заголовков раздела: %ld (байт)\n"
+
+#: readelf.c:3524
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " ЧиÑло заголовков раздела: %ld"
+
+#: readelf.c:3529
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " Ð˜Ð½Ð´ÐµÐºÑ Ñ‚Ð°Ð±Ð». Ñтрок загол. раздела: %ld"
+
+#: readelf.c:3536
+#, c-format
+msgid " <corrupt: out of range>"
+msgstr " <повреждён: вне диапазона>"
+
+#: readelf.c:3570 readelf.c:3604
+msgid "program headers"
+msgstr "заголовки программы"
+
+#: readelf.c:3671
+msgid "possibly corrupt ELF header - it has a non-zero program header offset, but no program headers"
+msgstr "заголовок ELF, возможно, повреждён — он Ñодержит ненулевое Ñмещение заголовка программы при отÑутÑтвии программных заголовков"
+
+#: readelf.c:3674
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"Ð’ Ñтом файле нет заголовков программы.\n"
+
+#: readelf.c:3680
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Тип файла ELF — %s\n"
+
+#: readelf.c:3681
+#, c-format
+msgid "Entry point "
+msgstr "Точка входа "
+
+#: readelf.c:3683
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"ИмеетÑÑ %d заголовков программы, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñо ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ "
+
+#: readelf.c:3695 readelf.c:3697
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"Заголовки программы:\n"
+
+#: readelf.c:3701
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Тип Смещ. Вирт.адр Физ.адр Рзм.фйл Рзм.пм Флг Выравн\n"
+
+#: readelf.c:3704
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Тип Смещ. Вирт.адр Физ.адр Рзм.фйл Рзм.пм Флг Выравн\n"
+
+#: readelf.c:3708
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " Тип Смещ. Вирт.адр Физ.адр\n"
+
+#: readelf.c:3710
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " Рзм.фйл Рзм.пм Флаги Выравн\n"
+
+#: readelf.c:3803
+msgid "more than one dynamic segment\n"
+msgstr "более одного динамичеÑкого Ñегмента\n"
+
+#
+#: readelf.c:3822
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr "в динамичеÑком Ñегменте нет раздела .dynamic\n"
+
+#
+#: readelf.c:3837
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr "в динамичеÑком Ñегменте не ÑодержитÑÑ Ñ€Ð°Ð·Ð´ÐµÐ» .dynamic\n"
+
+#
+#: readelf.c:3840
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr "раздел .dynamic не ÑвлÑетÑÑ Ð¿ÐµÑ€Ð²Ñ‹Ð¼ разделом динамичеÑкого Ñегмента.\n"
+
+#: readelf.c:3848
+msgid "Unable to find program interpreter name\n"
+msgstr "Ðевозможно найти Ð¸Ð¼Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð¿Ñ€ÐµÑ‚Ð°Ñ‚Ð¾Ñ€Ð° программы\n"
+
+#: readelf.c:3855
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: не удалоÑÑŒ Ñоздать Ñтроку формата Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð¿Ñ€ÐµÑ‚Ð°Ñ‚Ð¾Ñ€Ð° программы\n"
+
+#
+#: readelf.c:3859
+msgid "Unable to read program interpreter name\n"
+msgstr "Ðевозможно прочитать Ð¸Ð¼Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð¿Ñ€ÐµÑ‚Ð°Ñ‚Ð¾Ñ€Ð° программы\n"
+
+#: readelf.c:3862
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [Запрашиваемый интерпретатор программы: %s]"
+
+#: readelf.c:3874
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" СоответÑтвие раздел-Ñегмент:\n"
+
+#: readelf.c:3875
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " Сегмент Разделы...\n"
+
+#: readelf.c:3911
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "Ðевозможно интерпретировать виртуальные адреÑа без заголовков программы.\n"
+
+#: readelf.c:3927
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "Виртуальный Ð°Ð´Ñ€ÐµÑ 0x%lx не размещен в каком-либо Ñегменте PT_LOAD.\n"
+
+#: readelf.c:3942 readelf.c:3985
+msgid "section headers"
+msgstr "заголовки разделов"
+
+#: readelf.c:4032 readelf.c:4107
+msgid "sh_entsize is zero\n"
+msgstr "значение sh_entsize равно нулю\n"
+
+#: readelf.c:4040 readelf.c:4115
+msgid "Invalid sh_entsize\n"
+msgstr "Ðеверное значение sh_entsize\n"
+
+#: readelf.c:4045 readelf.c:4120
+msgid "symbols"
+msgstr "Ñимволы"
+
+#: readelf.c:4057 readelf.c:4132
+msgid "symtab shndx"
+msgstr "symtab shndx"
+
+#: readelf.c:4392
+#, c-format
+msgid "UNKNOWN (%*.*lx)"
+msgstr "ÐЕИЗВЕСТÐО (%*.*lx)"
+
+#: readelf.c:4414
+msgid "possibly corrupt ELF file header - it has a non-zero section header offset, but no section headers\n"
+msgstr "заголовок ELF, возможно, повреждён — он Ñодержит ненулевое Ñмещение заголовка раздела при отÑутÑтвии заголовков разделов\n"
+
+#: readelf.c:4417
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"Ð’ Ñтом файле нет разделов.\n"
+
+#: readelf.c:4423
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "ИмеетÑÑ %d заголовков раздела, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñо ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ 0x%lx:\n"
+
+#: readelf.c:4444 readelf.c:5022 readelf.c:5433 readelf.c:5739 readelf.c:6152
+#: readelf.c:7036 readelf.c:9132
+msgid "string table"
+msgstr "таблица Ñтрок"
+
+#: readelf.c:4511
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "Раздел %d Ñодержит неверный sh_entsize %lx (ожидалоÑÑŒ %lx)\n"
+
+#: readelf.c:4531
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Файл Ñодержит неÑколько таблиц динамичеÑких Ñимволов\n"
+
+#: readelf.c:4544
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Файл Ñодержит неÑколько таблиц динамичеÑких Ñтрок\n"
+
+#: readelf.c:4550
+msgid "dynamic strings"
+msgstr "динамичеÑкие Ñтроки"
+
+#: readelf.c:4557
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Файл Ñодержит неÑколько таблиц symtab shndx\n"
+
+#: readelf.c:4627
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"Заголовки разделов:\n"
+
+#: readelf.c:4629
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"Заголовок раздела:\n"
+
+#: readelf.c:4635 readelf.c:4646 readelf.c:4657
+#, c-format
+msgid " [Nr] Name\n"
+msgstr " [Nr] ИмÑ\n"
+
+#: readelf.c:4636
+#, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr " Тип ÐÐ´Ñ€ÐµÑ Ð¡Ð¼ÐµÑ‰ Разм ES Ð¡Ñ Ð˜Ð½Ñ„ Al\n"
+
+#: readelf.c:4640
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr " [Ðм] Ð˜Ð¼Ñ Ð¢Ð¸Ð¿ ÐÐ´Ñ€ÐµÑ Ð¡Ð¼ÐµÑ‰ Разм ES Флг Ð¡Ñ Ð˜Ð½Ñ„ Al\n"
+
+#: readelf.c:4647
+#, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr " Тип ÐÐ´Ñ€ÐµÑ Ð¡Ð¼ÐµÑ‰ Разм ES Ð¡Ñ Ð˜Ð½Ñ„ Al\n"
+
+#: readelf.c:4651
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr " [Ðм] Ð˜Ð¼Ñ Ð¢Ð¸Ð¿ ÐÐ´Ñ€ÐµÑ Ð¡Ð¼ÐµÑ‰ Разм ES Флг Лк Инф Al\n"
+
+#: readelf.c:4658
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr " Тип ÐÐ´Ñ€ÐµÑ Ð¡Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ СÑылка\n"
+
+#: readelf.c:4659
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr " Размер Разм.Ent Инфо Выравн\n"
+
+#: readelf.c:4663
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [Ðм] Ð˜Ð¼Ñ Ð¢Ð¸Ð¿ ÐÐ´Ñ€ÐµÑ Ð¡Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ\n"
+
+#: readelf.c:4664
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " Размер Разм.Ent Флаги СÑылк Инфо Выравн\n"
+
+#: readelf.c:4669
+#, c-format
+msgid " Flags\n"
+msgstr " Флаги\n"
+
+#: readelf.c:4748
+#, c-format
+msgid "section %u: sh_link value of %u is larger than the number of sections\n"
+msgstr "раздел %u: размер sh_link у %u больше чем количеÑтво разделов\n"
+
+#: readelf.c:4847
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"ÐžÐ±Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ„Ð»Ð°Ð³Ð¾Ð²:\n"
+" W (запиÑÑŒ), A (назнач), X (иÑполнÑемый), M (ÑлиÑние), S (Ñтроки), l (большой)\n"
+" I (инфо), L (порÑдок ÑÑылок), G (группа), T (TLS), E (иÑключён), x (неизв.)\n"
+" O (треб. доп. обработка ОС) o (Ñпецифич. Ð´Ð»Ñ ÐžÐ¡), p (Ñпециф. Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑора)\n"
+
+#: readelf.c:4852
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"ÐžÐ±Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ„Ð»Ð°Ð³Ð¾Ð²:\n"
+" W (запиÑÑŒ), A (назнач), X (иÑполнÑемый), M (ÑлиÑние), S (Ñтроки), \n"
+" I (инфо), L (порÑдок ÑÑылок), G (группа), T (TLS), E (иÑключён), x (неизв.)\n"
+" O (треб. доп. обработка ОС) o (Ñпецифич. Ð´Ð»Ñ ÐžÐ¡), p (Ñпециф. Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑора)\n"
+
+#: readelf.c:4874
+#, c-format
+msgid "[<unknown>: 0x%x] "
+msgstr "[<неизвеÑтный>: 0x%x] "
+
+#: readelf.c:4899
+#, c-format
+msgid ""
+"\n"
+"There are no sections to group in this file.\n"
+msgstr ""
+"\n"
+"Ð’ Ñтом файле нет разделов Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¸Ñ€Ð¾Ð²ÐºÐ¸.\n"
+
+#: readelf.c:4906
+msgid "Section headers are not available!\n"
+msgstr "ÐедоÑтупны заголовки раздела!\n"
+
+#: readelf.c:4930
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"Ð’ Ñтом файле нет групп разделов.\n"
+
+#: readelf.c:4967
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "Ðеверный sh_link в разделе групп «%s»\n"
+
+#: readelf.c:4981
+#, c-format
+msgid "Corrupt header in group section `%s'\n"
+msgstr "Повреждённый заголовок в разделе групп «%s»\n"
+
+#: readelf.c:4992
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "Ðеверный sh_info в разделе групп «%s»\n"
+
+#: readelf.c:5031
+msgid "section data"
+msgstr "данные раздела"
+
+#: readelf.c:5040
+#, c-format
+msgid ""
+"\n"
+"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
+msgstr ""
+"\n"
+"%s раздел групп [%5u] «%s» [%s] Ñодержит %u Ñлементов:\n"
+
+#: readelf.c:5043
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [ИндекÑ] ИмÑ\n"
+
+#: readelf.c:5057
+#, c-format
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "раздел [%5u] уже находитÑÑ Ð² разделе групп [%5u] > макÑимальный раздел [%5u]\n"
+
+#: readelf.c:5066
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "раздел [%5u] из раздела групп [%5u] уже находитÑÑ Ð² разделе групп [%5u]\n"
+
+#: readelf.c:5079
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr "раздел 0 в разделе групп [%5u]\n"
+
+#: readelf.c:5146
+msgid "dynamic section image fixups"
+msgstr "динамичеÑкий раздел адреÑных привÑзок образа"
+
+#: readelf.c:5158
+#, c-format
+msgid ""
+"\n"
+"Image fixups for needed library #%d: %s - ident: %lx\n"
+msgstr ""
+"\n"
+"ÐдреÑные привÑзки образа Ð´Ð»Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ð¹ библиотеки #%d: %s - ident: %lx\n"
+
+#: readelf.c:5161
+#, c-format
+msgid "Seg Offset Type SymVec DataType\n"
+msgstr "Сег Смещение Тип СимВек ТипДанн\n"
+
+#: readelf.c:5193
+msgid "dynamic section image relas"
+msgstr "динамичеÑкий раздел перемещений образа"
+
+#: readelf.c:5197
+#, c-format
+msgid ""
+"\n"
+"Image relocs\n"
+msgstr ""
+"\n"
+"Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¾Ð±Ñ€Ð°Ð·Ð°\n"
+
+#: readelf.c:5199
+#, c-format
+msgid "Seg Offset Type Addend Seg Sym Off\n"
+msgstr "Сег Смещение Тип Добавление Сег Сим Сме\n"
+
+#: readelf.c:5254
+msgid "dynamic string section"
+msgstr "динамичеÑкий раздел Ñтрок"
+
+#: readelf.c:5355
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"'%s' раздел Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñо Ñмещением 0x%lx Ñодержит %ld байт:\n"
+
+#: readelf.c:5370
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"Ð’ Ñтом файле нет динамичеÑких перемещений.\n"
+
+#: readelf.c:5394
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"Раздел Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ "
+
+#: readelf.c:5399 readelf.c:5815 readelf.c:5830 readelf.c:6167
+#, c-format
+msgid "'%s'"
+msgstr "'%s'"
+
+#: readelf.c:5401 readelf.c:5832 readelf.c:6169
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " Ñо Ñмещением 0x%lx Ñодержит %lu пунктов:\n"
+
+#: readelf.c:5452
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"Ð’ Ñтом файле нет перемещений.\n"
+
+#: readelf.c:5590
+#, c-format
+msgid "\tUnknown version.\n"
+msgstr "\tÐеизвеÑÑ‚Ð½Ð°Ñ Ð²ÐµÑ€ÑиÑ.\n"
+
+#: readelf.c:5643 readelf.c:6016
+msgid "unwind table"
+msgstr "Ñ€Ð°Ð·Ð²ÐµÑ€Ð½ÑƒÑ‚Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°"
+
+#: readelf.c:5685 readelf.c:6098 readelf.c:6358
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "ПропуÑкаетÑÑ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %s\n"
+
+#: readelf.c:5747 readelf.c:6160 readelf.c:7044 readelf.c:7091
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"Ð’ Ñтом файле нет развернутых разделов.\n"
+
+#: readelf.c:5810
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"Ðевозможно было найти раздел Ñ Ñ€Ð°Ð·Ð²ÐµÑ€Ð½ÑƒÑ‚Ð¾Ð¹ информацией Ð´Ð»Ñ "
+
+#: readelf.c:5823
+msgid "unwind info"
+msgstr "Ñ€Ð°Ð·Ð²ÐµÑ€Ð½ÑƒÑ‚Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ"
+
+#: readelf.c:5825 readelf.c:6166
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"Развернутый раздел "
+
+#: readelf.c:6275
+msgid "unwind data"
+msgstr "развёрнутые данные"
+
+#: readelf.c:6329
+#, c-format
+msgid "Skipping unexpected relocation at offset 0x%lx\n"
+msgstr "ПропуÑкаетÑÑ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ðµ перемещение Ñо Ñмещением 0x%lx\n"
+
+#: readelf.c:6433
+#, c-format
+msgid "[Truncated opcode]\n"
+msgstr "[Обрезанный код операции]\n"
+
+#: readelf.c:6477 readelf.c:6677
+#, c-format
+msgid "Refuse to unwind"
+msgstr "Октаз от развёртываниÑ"
+
+#: readelf.c:6500
+#, c-format
+msgid " [Reserved]"
+msgstr " [Зарезервировано]"
+
+#: readelf.c:6528
+#, c-format
+msgid " finish"
+msgstr " конец"
+
+#: readelf.c:6533 readelf.c:6619
+#, c-format
+msgid "[Spare]"
+msgstr "[ЗапаÑ]"
+
+#: readelf.c:6640 readelf.c:6774
+#, c-format
+msgid " [unsupported opcode]"
+msgstr " [неподдерживаемый код операции]"
+
+#: readelf.c:6666
+#, c-format
+msgid " 0x%02x "
+msgstr " 0x%02x "
+
+#: readelf.c:6671
+#, c-format
+msgid " sp = sp + %d"
+msgstr " sp = sp + %d"
+
+#: readelf.c:6724
+#, c-format
+msgid "pop frame {"
+msgstr "pop frame {"
+
+#: readelf.c:6735
+msgid "[pad]"
+msgstr "[заполнитель]"
+
+#: readelf.c:6763
+#, c-format
+msgid "sp = sp + %ld"
+msgstr "sp = sp + %ld"
+
+#: readelf.c:6821
+#, c-format
+msgid " Personality routine: "
+msgstr " ПерÑÐ¾Ð½Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°: "
+
+#: readelf.c:6839
+#, c-format
+msgid " [Truncated data]\n"
+msgstr " [Обрезанные данные]\n"
+
+#: readelf.c:6854
+#, c-format
+msgid " Compact model %d\n"
+msgstr " ÐšÐ¾Ð¼Ð¿Ð°ÐºÑ‚Ð½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»ÑŒ %d\n"
+
+#: readelf.c:6890
+#, c-format
+msgid " Restore stack from frame pointer\n"
+msgstr " ВоÑÑтановление Ñтека из ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ñ„Ñ€ÐµÐ¹Ð¼Ð°\n"
+
+#: readelf.c:6892
+#, c-format
+msgid " Stack increment %d\n"
+msgstr " Увеличение Ñтека %d\n"
+
+#: readelf.c:6893
+#, c-format
+msgid " Registers restored: "
+msgstr " РегиÑтры воÑÑтановлены: "
+
+#: readelf.c:6898
+#, c-format
+msgid " Return register: %s\n"
+msgstr " Возвращаемый региÑÑ‚Ñ€: %s\n"
+
+#: readelf.c:6981
+#, c-format
+msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
+msgstr "Ðе удалоÑÑŒ обнаружить раздел .ARM.extab, Ñодержащий 0x%lx.\n"
+
+#: readelf.c:7050
+#, c-format
+msgid ""
+"\n"
+"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+"\n"
+"Таблица индекÑов «%s» Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ñо Ñмещением 0x%lx Ñодержит %lu Ñлементов:\n"
+
+#: readelf.c:7102
+#, c-format
+msgid "NONE\n"
+msgstr "ÐЕТ\n"
+
+#: readelf.c:7128
+#, c-format
+msgid "Interface Version: %s\n"
+msgstr "ВерÑÐ¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñа: %s\n"
+
+#: readelf.c:7130
+#, c-format
+msgid "<corrupt: %ld>\n"
+msgstr "<повреждён: %ld>\n"
+
+#: readelf.c:7143
+#, c-format
+msgid "Time Stamp: %s\n"
+msgstr "ВремÑ: %s\n"
+
+#: readelf.c:7320 readelf.c:7366
+msgid "dynamic section"
+msgstr "динамичеÑкий раздел"
+
+#: readelf.c:7444
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"Ð’ Ñтом файле нет динамичеÑкого раздела.\n"
+
+#
+#: readelf.c:7482
+msgid "Unable to seek to end of file!\n"
+msgstr "Ðевозможно выполнить поиÑк до конца файла!\n"
+
+#: readelf.c:7495
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Ðевозможно определить чиÑло загружаемых Ñимволов\n"
+
+#: readelf.c:7530
+msgid "Unable to seek to end of file\n"
+msgstr "Ðевозможно выполнить поиÑк до конца файла\n"
+
+#: readelf.c:7537
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Ðевозможно определить длину таблицы динамичеÑких Ñтрок\n"
+
+#: readelf.c:7543
+msgid "dynamic string table"
+msgstr "таблица динамичеÑких Ñтрок"
+
+#: readelf.c:7580
+msgid "symbol information"
+msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ Ñимволе"
+
+#: readelf.c:7605
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"ДинамичеÑкий раздел Ñо Ñмещением 0x%lx Ñодержит %u Ñлементов:\n"
+
+#: readelf.c:7608
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " Тег Тип ИмÑ/Знач\n"
+
+#: readelf.c:7644
+#, c-format
+msgid "Auxiliary library"
+msgstr "Ð’ÑÐ¿Ð¾Ð¼Ð¾Ð³Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°"
+
+#: readelf.c:7648
+#, c-format
+msgid "Filter library"
+msgstr "Библиотека фильтров"
+
+#: readelf.c:7652
+#, c-format
+msgid "Configuration file"
+msgstr "Файл наÑтройки"
+
+#: readelf.c:7656
+#, c-format
+msgid "Dependency audit library"
+msgstr "Библиотека аудита завиÑимоÑтей"
+
+#: readelf.c:7660
+#, c-format
+msgid "Audit library"
+msgstr "Библиотека аудита"
+
+#: readelf.c:7678 readelf.c:7706 readelf.c:7734
+#, c-format
+msgid "Flags:"
+msgstr "Флаги:"
+
+#: readelf.c:7681 readelf.c:7709 readelf.c:7736
+#, c-format
+msgid " None\n"
+msgstr " Ðет\n"
+
+#: readelf.c:7857
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Совм. иÑп. библиотека: [%s]"
+
+#: readelf.c:7860
+#, c-format
+msgid " program interpreter"
+msgstr " интерпретатор программы"
+
+#: readelf.c:7864
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "Библиотека soname: [%s]"
+
+#: readelf.c:7868
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "Библиотека rpath: [%s]"
+
+#: readelf.c:7872
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "Библиотека runpath: [%s]"
+
+#: readelf.c:7905
+#, c-format
+msgid " (bytes)\n"
+msgstr " (байт)\n"
+
+#: readelf.c:7935
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Ðенужный объект: [%s]\n"
+
+#: readelf.c:8035
+msgid "| <unknown>"
+msgstr "| <неизвеÑтный>"
+
+#: readelf.c:8068
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Раздел опиÑÐ°Ð½Ð¸Ñ Ð²ÐµÑ€Ñии '%s' Ñодержит %u Ñлементов:\n"
+
+#: readelf.c:8071
+#, c-format
+msgid " Addr: 0x"
+msgstr " ÐдреÑ: 0x"
+
+#: readelf.c:8073 readelf.c:8191 readelf.c:8332
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr " Смещение: %#08lx СÑылка: %u (%s)\n"
+
+#: readelf.c:8081
+msgid "version definition section"
+msgstr "раздел опиÑÐ°Ð½Ð¸Ñ Ð²ÐµÑ€Ñии"
+
+#: readelf.c:8114
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: РевизиÑ: %d Флаги: %s"
+
+#: readelf.c:8117
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " ИндекÑ: %d Счетчик: %d "
+
+#: readelf.c:8133
+#, c-format
+msgid "Name: %s\n"
+msgstr "ИмÑ: %s\n"
+
+#: readelf.c:8135
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ð¸Ð¼ÐµÐ½Ð¸: %ld\n"
+
+#: readelf.c:8157
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: Родитель %d: %s\n"
+
+#: readelf.c:8160
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: Родитель %d, Ð¸Ð½Ð´ÐµÐºÑ Ð¸Ð¼ÐµÐ½Ð¸: %ld\n"
+
+#: readelf.c:8165
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr " ВерÑÐ¸Ñ def aux past end раздела\n"
+
+#: readelf.c:8171
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr " ВерÑÐ¸Ñ definition past end раздела\n"
+
+#: readelf.c:8186
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Раздел завиÑимоÑтей верÑии '%s', Ñодержащий %u Ñлементов:\n"
+
+#: readelf.c:8189
+#, c-format
+msgid " Addr: 0x"
+msgstr " ÐдреÑ: 0x"
+
+#: readelf.c:8200
+msgid "version need section"
+msgstr "раздел завиÑимоÑтей верÑии"
+
+#: readelf.c:8228
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: ВерÑиÑ: %d"
+
+#: readelf.c:8231
+#, c-format
+msgid " File: %s"
+msgstr " Файл: %s"
+
+#: readelf.c:8233
+#, c-format
+msgid " File: %lx"
+msgstr " Файл: %lx"
+
+#: readelf.c:8235
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " Счетчик: %d\n"
+
+#: readelf.c:8260
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: ИмÑ: %s"
+
+#: readelf.c:8263
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: Ð˜Ð½Ð´ÐµÐºÑ Ð¸Ð¼ÐµÐ½Ð¸: %lx"
+
+#: readelf.c:8266
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Флаги: %s ВерÑиÑ: %d\n"
+
+#: readelf.c:8278
+#, c-format
+msgid " Version need aux past end of section\n"
+msgstr " ВерÑÐ¸Ñ need aux past end раздела\n"
+
+#: readelf.c:8283
+#, c-format
+msgid " Version need past end of section\n"
+msgstr " ВерÑÐ¸Ñ need aux past end раздела\n"
+
+#: readelf.c:8320
+msgid "version string table"
+msgstr "таблица Ñтрок верÑии"
+
+#: readelf.c:8327
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Раздел Ñимволов верÑии '%s' Ñодержит %d Ñлементов:\n"
+
+#: readelf.c:8330
+#, c-format
+msgid " Addr: "
+msgstr " ÐдреÑ: "
+
+#: readelf.c:8341
+msgid "version symbol data"
+msgstr "данные Ñимвола верÑии"
+
+#: readelf.c:8369
+msgid " 0 (*local*) "
+msgstr " 0 (*локальный*) "
+
+#: readelf.c:8373
+msgid " 1 (*global*) "
+msgstr " 1 (*глобальный*) "
+
+#: readelf.c:8386
+msgid "invalid index into symbol array\n"
+msgstr "некорректный Ð¸Ð½Ð´ÐµÐºÑ Ð² Ñимвольный маÑÑив\n"
+
+#: readelf.c:8420 readelf.c:9199
+msgid "version need"
+msgstr "завиÑимоÑÑ‚ÑŒ верÑии"
+
+#: readelf.c:8430
+msgid "version need aux (2)"
+msgstr "завиÑимоÑÑ‚ÑŒ верÑии aux (2)"
+
+#: readelf.c:8445 readelf.c:8500
+msgid "*invalid*"
+msgstr "*неверно*"
+
+#: readelf.c:8475 readelf.c:9264
+msgid "version def"
+msgstr "опиÑание верÑии"
+
+#: readelf.c:8495 readelf.c:9279
+msgid "version def aux"
+msgstr "опиÑание верÑии aux"
+
+#: readelf.c:8529
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"Ð’ Ñтом файле не найдена Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ верÑии.\n"
+
+#: readelf.c:8728
+#, c-format
+msgid "<other>: %x"
+msgstr "<другой>: %x"
+
+#: readelf.c:8789
+msgid "Unable to read in dynamic data\n"
+msgstr "Ðевозможно Ñчитать динамичеÑкие данные\n"
+
+#: readelf.c:8839
+#, c-format
+msgid " <corrupt: %14ld>"
+msgstr " <повреждён: %14ld>"
+
+#
+#: readelf.c:8882 readelf.c:8934 readelf.c:8958 readelf.c:8988 readelf.c:9012
+msgid "Unable to seek to start of dynamic information\n"
+msgstr "Ðевозможно выполнить поиÑк до начала динамичеÑких данных\n"
+
+#: readelf.c:8888 readelf.c:8940
+msgid "Failed to read in number of buckets\n"
+msgstr "Сбой при Ñчитывании чиÑла облаÑтей памÑти\n"
+
+#: readelf.c:8894
+msgid "Failed to read in number of chains\n"
+msgstr "Сбой при Ñчитывании чиÑла цепочек\n"
+
+#
+#: readelf.c:8996
+msgid "Failed to determine last chain length\n"
+msgstr "Ðе удалоÑÑŒ определить длину поÑледней цепочки\n"
+
+#: readelf.c:9040
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"Таблица Ñимволов Ð´Ð»Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ:\n"
+
+#: readelf.c:9042 readelf.c:9060
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " ОблаÑти: Знач Размер Тип СвÑз Vis Ð˜Ð½Ð´ÐµÐºÑ Ð¸Ð¼ÐµÐ½Ð¸\n"
+
+#: readelf.c:9044 readelf.c:9062
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " ОблаÑти: Знач Размер Тип СвÑз Vis Ð˜Ð½Ð´ÐµÐºÑ Ð¸Ð¼ÐµÐ½Ð¸\n"
+
+#: readelf.c:9058
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+"\n"
+"Таблица Ñимволов «.gnu.hash» образа:\n"
+
+#: readelf.c:9101
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' has a sh_entsize of zero!\n"
+msgstr ""
+"\n"
+"Таблица Ñимволов «%s» Ñодержит sh_entsize равно нулю!\n"
+
+#: readelf.c:9106
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Таблица Ñимволов «%s» Ñодержит %lu Ñлементов:\n"
+
+#: readelf.c:9111
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " ЧиÑ: Знач Разм Тип СвÑз Vis Ð˜Ð½Ð´ÐµÐºÑ Ð¸Ð¼ÐµÐ½Ð¸\n"
+
+#: readelf.c:9113
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " ЧиÑ: Знач Разм Тип СвÑз Vis Ð˜Ð½Ð´ÐµÐºÑ Ð¸Ð¼ÐµÐ½Ð¸\n"
+
+#: readelf.c:9170
+msgid "version data"
+msgstr "данные верÑии"
+
+#: readelf.c:9212
+msgid "version need aux (3)"
+msgstr "завиÑимоÑÑ‚ÑŒ верÑии aux (3)"
+
+#
+#: readelf.c:9239
+msgid "bad dynamic symbol\n"
+msgstr "неверный динамичеÑкий Ñимвол\n"
+
+#: readelf.c:9303
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого Ñимвола не доÑтупна Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñимволов.\n"
+
+#: readelf.c:9315
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"ГиÑтограмма Ð´Ð»Ñ Ð´Ð»Ð¸Ð½Ñ‹ ÑпиÑка облаÑтей памÑти (вÑего %lu облаÑтей):\n"
+
+#: readelf.c:9317 readelf.c:9387
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " Длина ЧиÑло %% от вÑего Охват\n"
+
+#: readelf.c:9385
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"ГиÑтограмма Ð´Ð»Ñ Ð´Ð»Ð¸Ð½Ñ‹ ÑпиÑка облаÑтей памÑти «.gnu.hash» (вÑего %lu облаÑтей):\n"
+
+#: readelf.c:9451
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Сегмент динамичеÑкой информации Ñо Ñмещением 0x%lx Ñодержит %d Ñлементов:\n"
+
+#: readelf.c:9454
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr " ЧиÑ: Ð˜Ð¼Ñ Ð“Ñ€Ð°Ð½Ð¸Ñ†Ð° Флаги\n"
+
+#: readelf.c:9463
+#, c-format
+msgid "<corrupt: %19ld>"
+msgstr "<повреждён: %19ld>"
+
+#: readelf.c:9545
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr "Обнаружен необработанный перемещаемый тип MN10300 поÑле Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ SYM_DIFF"
+
+#: readelf.c:9705
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr "ОтÑутÑтвуют данные по 32-битным перемещаемым типам в разделах DWARF машины Ñ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %d\n"
+
+#: readelf.c:10009
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr "не удалоÑÑŒ применить неподдерживаемый перемещаемый тип %d к разделу %s\n"
+
+#: readelf.c:10017
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "пропуÑкаетÑÑ Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ðµ Ñмещение Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ 0x%lx в разделе %s\n"
+
+#: readelf.c:10041
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr "пропуÑкаетÑÑ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ тип Ñимвола %s в %ld-м перемещении в разделе %s\n"
+
+#: readelf.c:10087
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"Сборочный дамп раздела %s\n"
+
+#: readelf.c:10108
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"Раздел '%s' не Ñодержит данных Ð´Ð»Ñ Ð´Ð°Ð¼Ð¿Ð°.\n"
+
+#: readelf.c:10114
+msgid "section contents"
+msgstr "Ñодержимое раздела"
+
+#: readelf.c:10133
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+"\n"
+"Строковый дамп раздела '%s':\n"
+
+#: readelf.c:10151
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " Замечание: в Ñтом разделе еÑÑ‚ÑŒ перемещениÑ, но они ÐЕ были применены к Ñтому дампу.\n"
+
+#: readelf.c:10182
+#, c-format
+msgid " No strings found in this section."
+msgstr " Ð’ Ñтом разделе не найдены Ñтроки."
+
+#: readelf.c:10204
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"Hex-дамп раздела '%s':\n"
+
+#: readelf.c:10228
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " ПРИМЕЧÐÐИЕ: в Ñтом разделе еÑÑ‚ÑŒ перемещениÑ, но они ÐЕ были применены к Ñтому дампу.\n"
+
+#: readelf.c:10362
+#, c-format
+msgid "%s section data"
+msgstr "данные раздела %s"
+
+#: readelf.c:10427
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+"\n"
+"Раздел '%s' не Ñодержит отладочных данных.\n"
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:10436
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr "раздел «%s» имеет тип NOBITS — его Ñодержимое недоÑтоверно.\n"
+
+#: readelf.c:10472
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "ÐераÑпознанный раздел отладки: %s\n"
+
+#: readelf.c:10500
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr "Ð”Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° '%s' дамп не был выполнен, потому что он не ÑущеÑтвует!\n"
+
+#: readelf.c:10541
+#, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "Ð”Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d дамп не был выполнен, потому что он не ÑущеÑтвует!\n"
+
+#: readelf.c:10719 readelf.c:10733 readelf.c:10752 readelf.c:11070
+#, c-format
+msgid "None\n"
+msgstr "Ðет\n"
+
+#: readelf.c:10720
+#, c-format
+msgid "Application\n"
+msgstr "Приложение\n"
+
+#: readelf.c:10721
+#, c-format
+msgid "Realtime\n"
+msgstr "В реальном времени\n"
+
+#: readelf.c:10722
+#, c-format
+msgid "Microcontroller\n"
+msgstr "Микроконтроллер\n"
+
+#: readelf.c:10723
+#, c-format
+msgid "Application or Realtime\n"
+msgstr "Приложение или в реальном времени\n"
+
+#: readelf.c:10734 readelf.c:10754 readelf.c:11124 readelf.c:11142
+#: readelf.c:11217 readelf.c:11238
+#, c-format
+msgid "8-byte\n"
+msgstr "8-байтовый\n"
+
+#: readelf.c:10735 readelf.c:11220 readelf.c:11241
+#, c-format
+msgid "4-byte\n"
+msgstr "4-байтовый\n"
+
+#: readelf.c:10739 readelf.c:10758
+#, c-format
+msgid "8-byte and up to %d-byte extended\n"
+msgstr "8-байтовый и раÑширÑемый до %d байт\n"
+
+#: readelf.c:10753
+#, c-format
+msgid "8-byte, except leaf SP\n"
+msgstr "8-байтовый, за иÑключением Ð¾Ñ‚Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ SP\n"
+
+#: readelf.c:10769 readelf.c:10859 readelf.c:11256
+#, c-format
+msgid "flag = %d, vendor = %s\n"
+msgstr "флаг = %d, производитель = %s\n"
+
+#: readelf.c:10775
+#, c-format
+msgid "True\n"
+msgstr "Верно\n"
+
+#: readelf.c:10904 readelf.c:11008
+#, c-format
+msgid "Hard or soft float\n"
+msgstr "ÐÐ¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ Ð¸Ð»Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°\n"
+
+#: readelf.c:10907
+#, c-format
+msgid "Hard float\n"
+msgstr "ÐÐ¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°\n"
+
+#: readelf.c:10910 readelf.c:11017
+#, c-format
+msgid "Soft float\n"
+msgstr "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ°\n"
+
+#: readelf.c:10913
+#, c-format
+msgid "Single-precision hard float\n"
+msgstr "ÐÐ¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° одинарной точноÑти\n"
+
+#: readelf.c:10930 readelf.c:10956
+#, c-format
+msgid "Any\n"
+msgstr "Любой\n"
+
+#: readelf.c:10933
+#, c-format
+msgid "Generic\n"
+msgstr "Общий\n"
+
+#: readelf.c:10962
+#, c-format
+msgid "Memory\n"
+msgstr "ПамÑÑ‚ÑŒ\n"
+
+#: readelf.c:11011
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr "ÐÐ¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° (Ð´Ð²Ð¾Ð¹Ð½Ð°Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾ÑÑ‚ÑŒ)\n"
+
+#: readelf.c:11014
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr "ÐÐ¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° (Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð°Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾ÑÑ‚ÑŒ)\n"
+
+#: readelf.c:11020
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU)\n"
+msgstr "ÐÐ¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° (64-битный ÑопроцеÑÑор MIPS32r2)\n"
+
+#: readelf.c:11103
+#, c-format
+msgid "Not used\n"
+msgstr "Ðе иÑпользуетÑÑ\n"
+
+#: readelf.c:11106
+#, c-format
+msgid "2 bytes\n"
+msgstr "2 байта\n"
+
+#: readelf.c:11109
+#, c-format
+msgid "4 bytes\n"
+msgstr "4 байта\n"
+
+#: readelf.c:11127 readelf.c:11145 readelf.c:11223 readelf.c:11244
+#, c-format
+msgid "16-byte\n"
+msgstr "16-байтовый\n"
+
+#: readelf.c:11160
+#, c-format
+msgid "DSBT addressing not used\n"
+msgstr "ÐдреÑÐ°Ñ†Ð¸Ñ DSBT не иÑпользуетÑÑ\n"
+
+#: readelf.c:11163
+#, c-format
+msgid "DSBT addressing used\n"
+msgstr "ИÑпользуетÑÑ Ð°Ð´Ñ€ÐµÑÐ°Ñ†Ð¸Ñ DSBT\n"
+
+#: readelf.c:11178
+#, c-format
+msgid "Data addressing position-dependent\n"
+msgstr "ÐдреÑÐ°Ñ†Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… завиÑит от положениÑ\n"
+
+#: readelf.c:11181
+#, c-format
+msgid "Data addressing position-independent, GOT near DP\n"
+msgstr "ÐдреÑÐ°Ñ†Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… не завиÑит от положениÑ, GOT Ñ€Ñдом Ñ DP\n"
+
+#: readelf.c:11184
+#, c-format
+msgid "Data addressing position-independent, GOT far from DP\n"
+msgstr "ÐдреÑÐ°Ñ†Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… не завиÑит от положениÑ, GOT далеко от DP\n"
+
+#: readelf.c:11199
+#, c-format
+msgid "Code addressing position-dependent\n"
+msgstr "ÐдреÑÐ°Ñ†Ð¸Ñ ÐºÐ¾Ð´Ð° завиÑит от положениÑ\n"
+
+#: readelf.c:11202
+#, c-format
+msgid "Code addressing position-independent\n"
+msgstr "ÐдреÑÐ°Ñ†Ð¸Ñ ÐºÐ¾Ð´Ð° не завиÑит от положениÑ\n"
+
+#: readelf.c:11308
+msgid "attributes"
+msgstr "атрибуты"
+
+#: readelf.c:11329
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "ОШИБКÐ: ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° раздела (%d > %d)\n"
+
+#: readelf.c:11335
+#, c-format
+msgid "Attribute Section: %s\n"
+msgstr "Раздел атрибутов: %s\n"
+
+#: readelf.c:11360
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "ОШИБКÐ: ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° подраздела (%d > %d)\n"
+
+#: readelf.c:11372
+#, c-format
+msgid "File Attributes\n"
+msgstr "Ðтрибуты файлов\n"
+
+#: readelf.c:11375
+#, c-format
+msgid "Section Attributes:"
+msgstr "Ðтрибуты раздела:"
+
+#: readelf.c:11378
+#, c-format
+msgid "Symbol Attributes:"
+msgstr "Ðтрибуты Ñимвола:"
+
+#: readelf.c:11393
+#, c-format
+msgid "Unknown tag: %d\n"
+msgstr "ÐеизвеÑтный тег: %d\n"
+
+#. ??? Do something sensible, like dump hex.
+#: readelf.c:11412
+#, c-format
+msgid " Unknown section contexts\n"
+msgstr " ÐеизвеÑтные контекÑÑ‚Ñ‹ раздела\n"
+
+#: readelf.c:11419
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "ÐеизвеÑтный формат «%c»\n"
+
+#: readelf.c:11463 readelf.c:11485
+msgid "<unknown>"
+msgstr "<неизвеÑтный>"
+
+#: readelf.c:11580 readelf.c:12102
+msgid "liblist"
+msgstr "liblist"
+
+#: readelf.c:11583
+#, c-format
+msgid ""
+"\n"
+"Section '.liblist' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Раздел «.liblist» Ñодержит %lu Ñлементов:\n"
+
+#: readelf.c:11585
+msgid " Library Time Stamp Checksum Version Flags\n"
+msgstr " Библиотека Ð’Ñ€ÐµÐ¼Ñ ÐšÐ¾Ð½Ñ‚.Ñумма ВерÑÐ¸Ñ Ð¤Ð»Ð°Ð³Ð¸\n"
+
+#: readelf.c:11611
+#, c-format
+msgid "<corrupt: %9ld>"
+msgstr "<повреждён: %9ld>"
+
+#: readelf.c:11616
+msgid " NONE"
+msgstr " ÐЕТ"
+
+#: readelf.c:11667
+msgid "options"
+msgstr "параметры"
+
+#: readelf.c:11698
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Раздел '%s' Ñодержит %d Ñлементов:\n"
+
+#
+#: readelf.c:11859
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr "ÑпиÑок конфликтов найден без таблицы динамичеÑких Ñимволов\n"
+
+#: readelf.c:11876 readelf.c:11891
+msgid "conflict"
+msgstr "конфликт"
+
+#: readelf.c:11901
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Раздел '.conflict' Ñодержит %lu Ñлементов:\n"
+
+#: readelf.c:11903
+msgid " Num: Index Value Name"
+msgstr " Ðом: Ð˜Ð½Ð´ÐµÐºÑ Ð—Ð½Ð°Ñ‡. ИмÑ"
+
+#: readelf.c:11915 readelf.c:11995 readelf.c:12063
+#, c-format
+msgid "<corrupt: %14ld>"
+msgstr "<повреждён: %14ld>"
+
+#: readelf.c:11936
+msgid "GOT"
+msgstr "GOT"
+
+#: readelf.c:11937
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+"\n"
+"ÐŸÐµÑ€Ð²Ð¸Ñ‡Ð½Ð°Ñ GOT:\n"
+
+#: readelf.c:11938
+#, c-format
+msgid " Canonical gp value: "
+msgstr " КаноничеÑкое значение gp: "
+
+#: readelf.c:11942 readelf.c:12034
+#, c-format
+msgid " Reserved entries:\n"
+msgstr " Зарезервированные Ñлементы:\n"
+
+#: readelf.c:11943
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr " %*s %10s %*s Цель\n"
+
+#: readelf.c:11944 readelf.c:11961 readelf.c:11977 readelf.c:12036
+#: readelf.c:12045
+msgid "Address"
+msgstr "ÐдреÑ"
+
+#: readelf.c:11944 readelf.c:11961 readelf.c:11977
+msgid "Access"
+msgstr "ДоÑтуп"
+
+#: readelf.c:11945 readelf.c:11962 readelf.c:11978 readelf.c:12036
+#: readelf.c:12046
+msgid "Initial"
+msgstr "Ðачальный"
+
+#: readelf.c:11947
+#, c-format
+msgid " Lazy resolver\n"
+msgstr " Откладывающий решатель\n"
+
+#: readelf.c:11953
+#, c-format
+msgid " Module pointer (GNU extension)\n"
+msgstr " Модульный указатель (раÑширение GNU)\n"
+
+#: readelf.c:11959
+#, c-format
+msgid " Local entries:\n"
+msgstr " Локальные Ñлементы:\n"
+
+#: readelf.c:11975
+#, c-format
+msgid " Global entries:\n"
+msgstr " Глобальные Ñлементы:\n"
+
+#: readelf.c:11979 readelf.c:12047
+msgid "Sym.Val."
+msgstr "Сим.Знач."
+
+#: readelf.c:11979 readelf.c:12047
+msgid "Type"
+msgstr "Тип"
+
+#: readelf.c:11979 readelf.c:12047
+msgid "Ndx"
+msgstr "Ndx"
+
+#: readelf.c:11979 readelf.c:12047
+msgid "Name"
+msgstr "ИмÑ"
+
+#: readelf.c:12032
+msgid "PLT GOT"
+msgstr "PLT GOT"
+
+#: readelf.c:12033
+#, c-format
+msgid ""
+"\n"
+"PLT GOT:\n"
+"\n"
+msgstr ""
+"\n"
+"PLT GOT:\n"
+"\n"
+
+#: readelf.c:12035
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr " %*s %*s Цель\n"
+
+#: readelf.c:12038
+#, c-format
+msgid " PLT lazy resolver\n"
+msgstr " откладывающий решатель PLT\n"
+
+#: readelf.c:12040
+#, c-format
+msgid " Module pointer\n"
+msgstr " Модульный указатель\n"
+
+#: readelf.c:12043
+#, c-format
+msgid " Entries:\n"
+msgstr " Элементы:\n"
+
+#: readelf.c:12110
+msgid "liblist string table"
+msgstr "таблица Ñтрок liblist"
+
+#: readelf.c:12121
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Раздел ÑпиÑка библиотек '%s' Ñодержит %lu Ñлементов:\n"
+
+#: readelf.c:12125
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr " Библиотека Ð’Ñ€ÐµÐ¼Ñ ÐšÐ¾Ð½Ñ‚.Ñумма ВерÑÐ¸Ñ Ð¤Ð»Ð°Ð³Ð¸"
+
+#: readelf.c:12175
+msgid "NT_AUXV (auxiliary vector)"
+msgstr "NT_AUXV (вÑпомогательный вектор)"
+
+#: readelf.c:12177
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (Ñтруктура prstatus)"
+
+#: readelf.c:12179
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (региÑтры Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой)"
+
+#: readelf.c:12181
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (Ñтруктура prpsinfo)"
+
+#: readelf.c:12183
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (Ñтруктура task)"
+
+#: readelf.c:12185
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (Ñтруктура user_xfpregs)"
+
+#: readelf.c:12187
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr "NT_PPC_VMX (региÑтры Altivec в ppc)"
+
+#: readelf.c:12189
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr "NT_PPC_VSX (региÑтры VSX в ppc)"
+
+#: readelf.c:12191
+msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
+msgstr "NT_X86_XSTATE (раÑширенное ÑоÑтоÑние x86 XSAVE)"
+
+#: readelf.c:12193
+msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
+msgstr "NT_S390_HIGH_GPRS (верхние половинки региÑтров s390)"
+
+#: readelf.c:12195
+msgid "NT_S390_TIMER (s390 timer register)"
+msgstr "NT_S390_TIMER (региÑÑ‚Ñ€ таймера s390)"
+
+#: readelf.c:12197
+msgid "NT_S390_TODCMP (s390 TOD comparator register)"
+msgstr "NT_S390_TODCMP (региÑÑ‚Ñ€ ÑÑ€Ð°Ð²Ð½Ð¸Ð²Ð°Ñ‚ÐµÐ»Ñ s390 TOD)"
+
+#: readelf.c:12199
+msgid "NT_S390_TODPREG (s390 TOD programmable register)"
+msgstr "NT_S390_TODPREG (программируемый региÑÑ‚Ñ€ s390 TOD)"
+
+#: readelf.c:12201
+msgid "NT_S390_CTRS (s390 control registers)"
+msgstr "NT_S390_CTRS (управлÑющие региÑтры s390)"
+
+#: readelf.c:12203
+msgid "NT_S390_PREFIX (s390 prefix register)"
+msgstr "NT_S390_PREFIX (региÑÑ‚Ñ€ префикÑа s390)"
+
+#: readelf.c:12205
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (Ñтруктура pstatus)"
+
+#: readelf.c:12207
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (региÑтры Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой)"
+
+#: readelf.c:12209
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (Ñтруктура psinfo)"
+
+#: readelf.c:12211
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (Ñтруктура lwpstatus_t)"
+
+#: readelf.c:12213
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (Ñтруктура lwpsinfo_t)"
+
+#: readelf.c:12215
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (Ñтруктура win32_pstatus)"
+
+#: readelf.c:12223
+msgid "NT_VERSION (version)"
+msgstr "NT_VERSION (верÑиÑ)"
+
+#: readelf.c:12225
+msgid "NT_ARCH (architecture)"
+msgstr "NT_ARCH (архитектура)"
+
+#: readelf.c:12230 readelf.c:12253 readelf.c:12332 readelf.c:12390
+#: readelf.c:12467
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "ÐеизвеÑтный тип комментариÑ: (0x%08x)"
+
+#: readelf.c:12242
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr "NT_GNU_ABI_TAG (метка верÑии ABI)"
+
+#: readelf.c:12244
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr "NT_GNU_HWCAP (Ð·Ð°Ð´Ð°Ð²Ð°ÐµÐ¼Ð°Ñ DSO Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ HWCAP о ПО)"
+
+#: readelf.c:12246
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr "NT_GNU_BUILD_ID (уникальный ID битовой Ñтроки Ñборки)"
+
+#: readelf.c:12248
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr "NT_GNU_GOLD_VERSION (верÑÐ¸Ñ gold)"
+
+#: readelf.c:12266
+#, c-format
+msgid " Build ID: "
+msgstr " ID Ñборки: "
+
+#: readelf.c:12269 readelf.c:12425
+#, c-format
+msgid "\n"
+msgstr "\n"
+
+#: readelf.c:12305
+#, c-format
+msgid " OS: %s, ABI: %ld.%ld.%ld\n"
+msgstr " ОС: %s, ABI: %ld.%ld.%ld\n"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:12322
+msgid "NetBSD procinfo structure"
+msgstr "Структура procinfo NetBSD"
+
+#: readelf.c:12349 readelf.c:12363
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (Ñтруктура reg)"
+
+#: readelf.c:12351 readelf.c:12365
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (Ñтруктура fpreg)"
+
+#: readelf.c:12371
+#, c-format
+msgid "PT_FIRSTMACH+%d"
+msgstr "PT_FIRSTMACH+%d"
+
+#: readelf.c:12384
+msgid "NT_STAPSDT (SystemTap probe descriptors)"
+msgstr "NT_STAPSDT (деÑкрипторы теÑтов SystemTap)"
+
+#: readelf.c:12417
+#, c-format
+msgid " Provider: %s\n"
+msgstr " ПоÑтавщик: %s\n"
+
+#: readelf.c:12418
+#, c-format
+msgid " Name: %s\n"
+msgstr " ИмÑ: %s\n"
+
+#: readelf.c:12419
+#, c-format
+msgid " Location: "
+msgstr " РаÑположение: "
+
+#: readelf.c:12421
+#, c-format
+msgid ", Base: "
+msgstr ", ОÑнование: "
+
+#: readelf.c:12423
+#, c-format
+msgid ", Semaphore: "
+msgstr ", Семафор: "
+
+#: readelf.c:12426
+#, c-format
+msgid " Arguments: %s\n"
+msgstr " Ðргументы: %s\n"
+
+#: readelf.c:12439
+msgid "NT_VMS_MHD (module header)"
+msgstr "NT_VMS_MHD (заголовок модулÑ)"
+
+#: readelf.c:12441
+msgid "NT_VMS_LNM (language name)"
+msgstr "NT_VMS_LNM (название Ñзыка)"
+
+#: readelf.c:12443
+msgid "NT_VMS_SRC (source files)"
+msgstr "NT_VMS_SRC (иÑходные файлы)"
+
+#: readelf.c:12445
+msgid "NT_VMS_TITLE"
+msgstr "NT_VMS_TITLE"
+
+#: readelf.c:12447
+msgid "NT_VMS_EIDC (consistency check)"
+msgstr "NT_VMS_EIDC (проверка целоÑтноÑти)"
+
+#: readelf.c:12449
+msgid "NT_VMS_FPMODE (FP mode)"
+msgstr "NT_VMS_FPMODE (режим FP)"
+
+#: readelf.c:12451
+msgid "NT_VMS_LINKTIME"
+msgstr "NT_VMS_LINKTIME"
+
+#: readelf.c:12453
+msgid "NT_VMS_IMGNAM (image name)"
+msgstr "NT_VMS_IMGNAM (Ð¸Ð¼Ñ Ð¾Ð±Ñ€Ð°Ð·Ð°)"
+
+#: readelf.c:12455
+msgid "NT_VMS_IMGID (image id)"
+msgstr "NT_VMS_IMGID (id образа)"
+
+#: readelf.c:12457
+msgid "NT_VMS_LINKID (link id)"
+msgstr "NT_VMS_LINKID (id компоновки)"
+
+#: readelf.c:12459
+msgid "NT_VMS_IMGBID (build id)"
+msgstr "NT_VMS_IMGBID (id Ñборки)"
+
+#: readelf.c:12461
+msgid "NT_VMS_GSTNAM (sym table name)"
+msgstr "NT_VMS_GSTNAM (Ð¸Ð¼Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñимволов)"
+
+#: readelf.c:12463
+msgid "NT_VMS_ORIG_DYN"
+msgstr "NT_VMS_ORIG_DYN"
+
+#: readelf.c:12465
+msgid "NT_VMS_PATCHTIME"
+msgstr "NT_VMS_PATCHTIME"
+
+#: readelf.c:12481
+#, c-format
+msgid " Creation date : %.17s\n"
+msgstr " Дата ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ : %.17s\n"
+
+#: readelf.c:12482
+#, c-format
+msgid " Last patch date: %.17s\n"
+msgstr " Дата поÑл. зап.: %.17s\n"
+
+#: readelf.c:12483
+#, c-format
+msgid " Module name : %s\n"
+msgstr " Ð˜Ð¼Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ : %s\n"
+
+#: readelf.c:12484
+#, c-format
+msgid " Module version : %s\n"
+msgstr " ВерÑÐ¸Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ : %s\n"
+
+#: readelf.c:12487
+#, c-format
+msgid " Invalid size\n"
+msgstr " Ðеверный размер\n"
+
+#: readelf.c:12490
+#, c-format
+msgid " Language: %s\n"
+msgstr " Язык: %s\n"
+
+#: readelf.c:12494
+msgid " FP mode: 0x%016"
+msgstr " Реж. FP: 0x%016"
+
+#: readelf.c:12498
+#, c-format
+msgid " Link time: "
+msgstr " Ð’Ñ€ÐµÐ¼Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: "
+
+#: readelf.c:12504
+#, c-format
+msgid " Patch time: "
+msgstr " Ð’Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿Ð»Ð°Ñ‚Ñ‹: "
+
+#: readelf.c:12510
+#, c-format
+msgid " Major id: %u, minor id: %u\n"
+msgstr " ОÑновной id: %u, вÑпомогательный id: %u\n"
+
+#: readelf.c:12513
+#, c-format
+msgid " Manip date : "
+msgstr " Дата измен. : "
+
+#: readelf.c:12516
+msgid ""
+"\n"
+" Link flags : 0x%016"
+msgstr ""
+"\n"
+" Флаги компоновки : 0x%016"
+
+#: readelf.c:12519
+#, c-format
+msgid " Header flags: 0x%08x\n"
+msgstr " Флаги заголовка: 0x%08x\n"
+
+#: readelf.c:12521
+#, c-format
+msgid " Image id : %s\n"
+msgstr " id образа : %s\n"
+
+#: readelf.c:12525
+#, c-format
+msgid " Image name: %s\n"
+msgstr " Ð˜Ð¼Ñ Ð¾Ð±Ñ€Ð°Ð·Ð°: %s\n"
+
+#: readelf.c:12528
+#, c-format
+msgid " Global symbol table name: %s\n"
+msgstr " Ð˜Ð¼Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð¹ таблицы Ñимволов: %s\n"
+
+#: readelf.c:12531
+#, c-format
+msgid " Image id: %s\n"
+msgstr " id образа: %s\n"
+
+#: readelf.c:12534
+#, c-format
+msgid " Linker id: %s\n"
+msgstr " id компоновщика: %s\n"
+
+#: readelf.c:12609
+msgid "notes"
+msgstr "комментарии"
+
+#: readelf.c:12615
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"Комментарии Ñо Ñмещением 0x%08lx длиной 0x%08lx:\n"
+
+#: readelf.c:12617
+#, c-format
+msgid " %-20s %10s\tDescription\n"
+msgstr " %-20s %10s\tОпиÑание\n"
+
+#: readelf.c:12617
+msgid "Owner"
+msgstr "Владелец"
+
+#: readelf.c:12617
+msgid "Data size"
+msgstr "Размер данных"
+
+#: readelf.c:12655 readelf.c:12668
+#, c-format
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "найден повреждённый комментарий Ñо Ñмещением %lx в хранилище комментариев\n"
+
+#: readelf.c:12657 readelf.c:12670
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " тип: %lx, разм_имени: %08lx, разм_опиÑ: %08lx\n"
+
+#: readelf.c:12766
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr "Ð’ файле Ñодержимого отÑутÑтвуют Ñегменты комментариев.\n"
+
+#: readelf.c:12853
+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"
+msgstr ""
+"Эта верÑÐ¸Ñ readelf была Ñобрана без поддержки 64-битного типа\n"
+"данных, и поÑтому она не может читать 64-битные файлы ELF.\n"
+
+#: readelf.c:12900
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s: Сбой при чтении заголовка файла\n"
+
+#: readelf.c:12914
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Файл: %s\n"
+
+#: readelf.c:13086
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr "%s: не удалоÑÑŒ Ñоздать дамп индекÑа, так как он не был найден\n"
+
+#: readelf.c:13092
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ð°Ñ€Ñ…Ð¸Ð²Ð° %s: (%ld Ñлементов, 0x%lx байт в таблице Ñимволов)\n"
+
+#: readelf.c:13110
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr "Двоичный %s Ñодержит:\n"
+
+#: readelf.c:13118
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr "%s: доÑтигнут конец таблицы Ñимволов раньше Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа\n"
+
+#: readelf.c:13129
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr "%s: в индекÑе таблицы Ñимволов оÑталиÑÑŒ Ñимволы, у которых нет ÑоответÑтвующих Ñлементов в таблице индекÑов\n"
+
+#: readelf.c:13134
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr "%s: не удалоÑÑŒ перейти обратно в начало объектных файлов в архиве\n"
+
+#: readelf.c:13217 readelf.c:13300
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr "Входной файл '%s' ÑвлÑетÑÑ Ð½ÐµÑ‡Ð¸Ñ‚Ð°ÐµÐ¼Ñ‹Ð¼.\n"
+
+#: readelf.c:13239
+#, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr "%s: не удалоÑÑŒ перейти к члену архива.\n"
+
+#: readelf.c:13318
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr "Файл %s не ÑвлÑетÑÑ Ð°Ñ€Ñ…Ð¸Ð²Ð¾Ð¼, так как его Ð¸Ð½Ð´ÐµÐºÑ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ отобразить.\n"
+
+#: rename.c:124
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s: невозможно уÑтановить времÑ: %s"
+
+#. We have to clean up here.
+#: rename.c:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr "невозможно переименовать %s; причина: %s"
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr "невозможно Ñкопировать файл %s; причина: %s"
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: недоÑтаточно двоичных данных"
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr "ÑŽÐ½Ð¸ÐºÐ¾Ð´Ð½Ð°Ñ Ñтрока, Ð·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ð°Ñ null"
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr "ID реÑурÑа"
+
+#: resbin.c:208
+msgid "cursor"
+msgstr "указатель"
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr "заголовок menu"
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr "заголовок menuex"
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr "Ñмещение menuex"
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ menu %d"
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr "заголовок menuitem"
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr "menuitem"
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr "заголовок диалога"
+
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "Ð½ÐµÐ¿Ñ€ÐµÐ´Ð²Ð¸Ð´ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ DIALOGEX %d"
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr "размер в пунктах шрифта диалога"
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ шрифте dialogex"
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr "управление диалогом"
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr "управление dialogex"
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr "конец ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð¾Ð¼"
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr "данные ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¸Ð°Ð»Ð¾Ð³Ð¾Ð¼"
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr "длина Ñтроки stringtable"
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr "Ñтрока stringtable"
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr "заголовок fontdir"
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr "fontdir"
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr "Ð¸Ð¼Ñ ÑƒÑтройÑтва fontdir"
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr "Ð¸Ð¼Ñ Ð³Ð°Ñ€Ð½Ð¸Ñ‚ÑƒÑ€Ñ‹ fontdir"
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr "акÑелератор"
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr "заголовок ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹"
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "неожиданный тип ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ %d"
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr "указатель группы"
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr "заголовок значка группы"
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "неожиданный тип значка группы %d"
+
+#: resbin.c:871
+msgid "group icon"
+msgstr "значок группы"
+
+#: resbin.c:935 resbin.c:1151
+msgid "unexpected version string"
+msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ñтрока верÑии"
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "длина верÑии %d не ÑоответÑтвует длине реÑурÑа %lu"
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr "неожиданный тип верÑии %d"
+
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° информации о фикÑированной верÑии %ld"
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ фикÑированной верÑии"
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ñигнатура фикÑированной верÑии %lu"
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ о фикÑированной верÑии %lu"
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ переменной верÑии"
+
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ stringfileinfo %ld"
+
+#: resbin.c:1049
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²ÐµÑ€Ñии stringtable %ld"
+
+#: resbin.c:1083
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ñтроки верÑии %ld != %ld + %ld"
+
+#: resbin.c:1094
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ñтроки верÑии %ld < %ld"
+
+#: resbin.c:1111
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ varfileinfo %ld"
+
+#: resbin.c:1130
+msgid "version varfileinfo"
+msgstr "верÑÐ¸Ñ varfileinfo"
+
+#: resbin.c:1145
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²ÐµÑ€Ñии %ld"
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr "требуетÑÑ Ð¸Ð¼Ñ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ COFF"
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: нет раздела реÑурÑов"
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: Ð°Ð´Ñ€ÐµÑ Ð·Ð° пределами границ"
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "каталог"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "именованный Ñлемент каталога"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "Ð¸Ð¼Ñ Ñлемента каталога"
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "именованный подкаталог"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "именованный реÑурÑ"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "ID Ñлемента каталога"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "ID подкаталога"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "ID реÑурÑа"
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr "неизвеÑтный тип реÑурÑа"
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr "Ñлемент данных"
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr "данные реÑурÑа"
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr "размер данных реÑурÑа"
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr "требуетÑÑ Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ COFF"
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "невозможно получить тип Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ BFD_RELOC_RVA"
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "невозможно открыть временный файл «%s»: %s"
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "невозможно перенаправить stdout: «%s»: %s"
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "невозможно выполнить «%s»: %s"
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "ИÑпользуетÑÑ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¹ файл «%s» Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ñ… данных препроцеÑÑора\n"
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "невозможно popen «%s»: %s"
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "ИÑпользуетÑÑ popen Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ñ… данных препроцеÑÑора\n"
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "Опробован «%s»\n"
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr "ИÑпользуетÑÑ Â«%s»\n"
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr "предварительный анализ завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡Ð½Ð¾."
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: неожиданный конец файла"
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: при чтении %lu было возвращено %lu"
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "Ñбой stat Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° битового образа «%s»: %s"
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "файл курÑора «%s» не Ñодержит данных курÑора"
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: fseek Ð´Ð»Ñ %lu завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹: %s"
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr "Ð´Ð»Ñ ID Ñправки требуетÑÑ DIALOGEX"
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr "Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ требуетÑÑ DIALOGEX"
+
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "Ñбой stat Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° шрифта «%s»: %s"
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "файл значка «%s» не Ñодержит данных значка"
+
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "Ñбой stat Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° «%s»: %s"
+
+#: resrc.c:1940
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "невозможно открыть «%s» Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° данных: %s"
+
+#: size.c:79
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr " Отображает размеры разделов внутри двоичных файлов\n"
+
+#: size.c:80
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr " ЕÑли входные файлы не указаны, подразумеваетÑÑ Ñ„Ð°Ð¹Ð» a.out\n"
+
+#: size.c:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+" Параметры:\n"
+" -A|-B --format={sysv|berkeley} выбрать Ñтиль вывода данных (по умолчанию %s)\n"
+" -o|-d|-x --radix={8|10|16} показать чиÑла в воÑьмеричном, деÑÑтичном\n"
+" или шеÑтнадцатеричном формате\n"
+" -t --totals показать Ñуммарные размеры (только Berkeley)\n"
+" --common показать общий размер Ñимволов *COM*\n"
+" --target=<bfd-имÑ> уÑтановить формат двоичного файла\n"
+" @<файл> читать параметры из <файла>\n"
+" -h --help показать Ñту информацию\n"
+" -v --version показать верÑию программы\n"
+"\n"
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "неверный аргумент --format: %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Ðеверное оÑнование: %s\n"
+
+#: srconv.c:1733
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "Преобразовывает объектный файл COFF в объектный файл SYSROFF\n"
+
+#: srconv.c:1734
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+" Параметры:\n"
+" -q --quick (уÑтарел — игнорируетÑÑ)\n"
+" -n --noprescan не выполнÑÑ‚ÑŒ Ñканирование Ð´Ð»Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ commons в defs\n"
+" -d --debug показать информацию о том, что выполнÑетÑÑ\n"
+" @<файл> читать параметры из <файла>\n"
+" -h --help показать Ñту информацию\n"
+" -v --version показать верÑию программы\n"
+
+#: srconv.c:1880
+#, c-format
+msgid "unable to open output file %s"
+msgstr "невозможно открыть выходной файл %s"
+
+#: stabs.c:328 stabs.c:1717
+msgid "numeric overflow"
+msgstr "чиÑловое переполнение"
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "Плохой stab: %s\n"
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Предупреждение: %s: %s\n"
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC вне функции\n"
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "Слишком много N_RBRACs\n"
+
+#: stabs.c:727
+msgid "unknown C++ encoded name"
+msgstr "неизвеÑтное кодированное Ð¸Ð¼Ñ C++"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1262
+msgid "unrecognized cross reference type"
+msgstr "нераÑпознанный тип перекреÑтной ÑÑылки"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1809
+msgid "missing index type"
+msgstr "отÑутÑтвует индекÑный тип"
+
+#: stabs.c:2129
+msgid "unknown virtual character for baseclass"
+msgstr "неизвеÑтный виртуальный Ñимвол Ð´Ð»Ñ baseclass"
+
+#: stabs.c:2147
+msgid "unknown visibility character for baseclass"
+msgstr "неизвеÑтный Ñимвол видимоÑти Ð´Ð»Ñ baseclass"
+
+#: stabs.c:2337
+msgid "unnamed $vb type"
+msgstr "безымÑнный тип $vb"
+
+#: stabs.c:2343
+msgid "unrecognized C++ abbreviation"
+msgstr "нераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð°Ð±Ð±Ñ€ÐµÐ²Ð¸Ð°Ñ‚ÑƒÑ€Ð° C++"
+
+#: stabs.c:2419
+msgid "unknown visibility character for field"
+msgstr "неизвеÑтный Ñимвол видимоÑти Ð´Ð»Ñ field"
+
+#: stabs.c:2679
+msgid "const/volatile indicator missing"
+msgstr "отÑутÑтвует индикатор поÑтоÑнной/переменной"
+
+#: stabs.c:2924
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "Ðет ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ \"%s\"\n"
+
+#: stabs.c:3224
+msgid "Undefined N_EXCL"
+msgstr "Ðеопределенный N_EXCL"
+
+#: stabs.c:3304
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "Ðомер файла типа %d за пределами диапазона\n"
+
+#: stabs.c:3309
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Ðомер индекÑа типа %d за пределами диапазона\n"
+
+#: stabs.c:3388
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "ÐераÑпознанный тип XCOFF %d\n"
+
+#: stabs.c:3680
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "плохое Ñкорректированное Ð¸Ð¼Ñ Â«%s»\n"
+
+#: stabs.c:3775
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "нет типов аргументов в Ñкорректированной Ñтроке\n"
+
+#: stabs.c:5125
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "Декодированное Ð¸Ð¼Ñ Ð½Ðµ ÑвлÑетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹\n"
+
+#: stabs.c:5167
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "Ðеожиданный тип при декодировании v3 arglist\n"
+
+#: stabs.c:5234
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "ÐераÑпознанный компонент Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ %d\n"
+
+#: stabs.c:5286
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "Сбой вывода декодированного шаблона\n"
+
+#: stabs.c:5366
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "Ðевозможно получить декодированный вÑтроенный тип\n"
+
+#: stabs.c:5415
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "Ðеожиданный декодированный varargs\n"
+
+#: stabs.c:5422
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "Ðеожиданный декодированный вÑтроенный тип\n"
+
+#: strings.c:186 strings.c:245
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "неверный целочиÑленный аргумент %s"
+
+#: strings.c:248
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° (%d) Ñтроки"
+
+#: strings.c:651
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr " Выводит пригодные Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ Ñтроки в [файл(ах)] (по умолчанию stdin)\n"
+
+#: strings.c:652
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+" Параметры:\n"
+" -a - --all Ñканировать веÑÑŒ файл, а не только раздел данных\n"
+" -f --print-file-name показывать Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° перед каждой Ñтрокой\n"
+" -n --bytes=[чиÑло] иÑкать и показывать любые поÑледовательноÑти Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°ÑŽÑ‰Ð¸Ð¼\n"
+" -<чиÑло> нулем длиной в [чиÑло] Ñимволов (по умолчанию 4).\n"
+" -t --radix={o,d,x} показать меÑÑ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñтроки по оÑнованию 8, 10 или 16\n"
+" -o то же, что и --radix=o\n"
+" -T --target=<BFD-ИМЯ> указать формат двоичного файла\n"
+" -e --encoding={s,S,b,l,B,L} выбрать размер Ñимвола и порÑдок байт:\n"
+" s = 7-бит, S = 8-бит, {b,l} = 16-бит, {B,L} = 32-бит\n"
+" @<файл> читать параметры из <файла>\n"
+" -h --help показать Ñту информацию\n"
+" -v -V --version показать верÑию программы\n"
+
+#: sysdump.c:647
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "Вывод удобочитаемой Ð´Ð»Ñ Ñ‡ÐµÐ»Ð¾Ð²ÐµÐºÐ° интерпретации объектного файла SYSROFF\n"
+
+#: sysdump.c:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Параметры:\n"
+" -h --help показать Ñту информацию\n"
+" -v --version показать верÑию программы\n"
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "невозможно открыть входной файл %s"
+
+#: version.c:36
+#, c-format
+msgid "Copyright 2011 Free Software Foundation, Inc.\n"
+msgstr "Copyright 2011 Free Software Foundation, Inc.\n"
+
+#: version.c:37
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"Эта программа ÑвлÑетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ программным обеÑпечением; вы можете\n"
+"раÑпроÑтранÑÑ‚ÑŒ её ÑоглаÑно уÑловиÑм GNU General Public License верÑии 3 или\n"
+"(по вашему выбору) более новой верÑии.\n"
+"Эта программа не имеет абÑолютно никаких гарантий.\n"
+
+#: windmc.c:190
+#, c-format
+msgid "can't create %s file `%s' for output.\n"
+msgstr "не удалоÑÑŒ Ñоздать файл %s, «%s» Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° данных.\n"
+
+#: windmc.c:198
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr "ИÑпользование: %s [параметры] [входной_файл\n"
+
+#: windmc.c:200
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianness.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+" Параметры:\n"
+" -a --ascii_in читать входной файл как файл ASCII\n"
+" -A --ascii_out запиÑывать двоичные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² формате ASCII\n"
+" -b --binprefix Ð´Ð»Ñ ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾Ñти перед именем bin-файла добавлÑетÑÑ Ð¸Ð¼Ñ mc-файла.\n"
+" -c --customflag уÑтановить пользовательÑкие флаги Ð´Ð»Ñ Ñообщений\n"
+" -C --codepage_in=<знач> уÑтановить кодировку при чтении текÑтового mc-файла\n"
+" -d --decimal_values вывеÑти Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² текÑтовый файл в деÑÑтичном виде\n"
+" -e --extension=<раÑширение> уÑтановить раÑширение Ð´Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°, иÑпользуемое в файле ÑкÑпорта заголовка\n"
+" -F --target <цель> указать выходную цель Ð´Ð»Ñ Ð¿Ð¾Ñ€Ñдка ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð°Ð¹Ñ‚.\n"
+" -h --headerdir=<каталог> уÑтановить каталог Ð´Ð»Ñ ÑкÑпорта заголовков\n"
+" -u --unicode_in читать входной файл как файл UTF16\n"
+" -U --unicode_out запиÑывать двоичные ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² формате UFT16\n"
+" -m --maxlength=<знач> уÑтановить макÑимально допуÑтимую длину ÑообщениÑ\n"
+" -n --nullterminate автоматичеÑки добавлÑÑ‚ÑŒ в Ñтроки нулевые окончаниÑ\n"
+" -o --hresult_use иÑпользовать определение HRESULT вмеÑто Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð° ÑтатуÑа\n"
+" -O --codepage_out=<знач> уÑтановить кодировку, иÑпользуемую Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи текÑтового файла\n"
+" -r --rcdir=<каталог> уÑтановить каталог Ð´Ð»Ñ ÑкÑпорта rc-файлов\n"
+" -x --xdbg=<каталог> где Ñоздавать включаемый файл .dbg,\n"
+" определÑющий ÑвÑзь между идентификаторами Ñообщений\n"
+" и их Ñимвольными именами.\n"
+
+#: windmc.c:220
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+" -H --help показать Ñто Ñправочное Ñообщение\n"
+" -v --verbose подробный режим\n"
+" -V --version показать информацию о верÑии\n"
+
+#: windmc.c:261 windres.c:411
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: предупреждение: "
+
+#: windmc.c:262
+#, c-format
+msgid "A codepage was specified switch `%s' and UTF16.\n"
+msgstr "Ð”Ð»Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ¸ был указан ключ «%s» и UTF16.\n"
+
+#: windmc.c:263
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr "\tнаÑтройки кодировки проигнорированы.\n"
+
+#: windmc.c:307
+msgid "try to add a ill language."
+msgstr "попробуйте добавить Ñзык."
+
+#: windmc.c:1116
+#, c-format
+msgid "unable to open file `%s' for input.\n"
+msgstr "невозможно открыть файл «%s» Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð°.\n"
+
+#: windmc.c:1124
+#, c-format
+msgid "unable to read contents of %s"
+msgstr "невозможно прочитать Ñодержимое %s"
+
+#: windmc.c:1136
+msgid "input file does not seems to be UFT16.\n"
+msgstr "входной файл не в кодировке UFT16.\n"
+
+#: windres.c:216
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "невозможно открыть %s «%s»: %s"
+
+#: windres.c:390
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": ожидалоÑÑŒ, что Ñто каталог\n"
+
+#: windres.c:402
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": ожидалоÑÑŒ, что Ñто leaf\n"
+
+#: windres.c:413
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": повторÑющееÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ\n"
+
+#: windres.c:563
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "неизвеÑтный тип формата «%s»"
+
+#: windres.c:564
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: поддерживаемые форматы:"
+
+#. Otherwise, we give up.
+#: windres.c:647
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "не удаётÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ тип файла «%s»; иÑпользуйте параметр -J"
+
+#: windres.c:659
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "ИÑпользование: %s [параметры] [входной_файл] [выходной_файл]\n"
+
+#: windres.c:661
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" --preprocessor-arg=<arg> Additional preprocessor argument\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+" Параметры:\n"
+" -i --input=<файл> Ð¸Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла\n"
+" -o --output=<файл> Ð¸Ð¼Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ файла\n"
+" -J --input-format=<формат> указать входной формат\n"
+" -O --output-format=<формат> указать выходной формат\n"
+" -F --target=<цель> указать цель COFF\n"
+" --preprocessor=<прогр> программа Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ обработки rc-файла\n"
+" --preprocessor-arg=<арг> дополнительный аргумент препроцеÑÑора\n"
+" -I --include-dir=<кат> включать каталог при предварительной обработке rc-файла\n"
+" -D --define <sym>[=<знач>] определить SYM предварительной обработке rc-файла\n"
+" -U --undefine <sym> отменить определение SYM при предварительной обработке rc-файла\n"
+" -v --verbose подробный режим\n"
+" -c --codepage=<кодировка> указать кодировку по умолчанию\n"
+" -l --language=<знач> уÑтановить Ñзык Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ rc-файла\n"
+" --use-temp-file иÑпользовать временный файл вмеÑто иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ popen\n"
+" Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ñ… данных препроцеÑÑора\n"
+" --no-use-temp-file иÑпользовать popen (по умолчанию)\n"
+
+#: windres.c:679
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug Включение отладки анализатора\n"
+
+#: windres.c:682
+#, 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:687
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"FORMAT ÑвлÑетÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из rc, res или coff и определÑетÑÑ Ð¿Ð¾ раÑширению\n"
+"имени файла, еÑли не был указан. Одиночное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° ÑвлÑетÑÑ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ð¼ файлом.\n"
+"Без входного файла иÑпользует stdin, по умолчанию rc. Без выходного файла\n"
+"иÑпользуетÑÑ std-out, по умолчанию rc.\n"
+
+#
+#: windres.c:850
+msgid "invalid codepage specified.\n"
+msgstr "указана недопуÑÑ‚Ð¸Ð¼Ð°Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²ÐºÐ°.\n"
+
+#: windres.c:865
+msgid "invalid option -f\n"
+msgstr "недопуÑтимый параметр -f\n"
+
+#: windres.c:870
+msgid "No filename following the -fo option.\n"
+msgstr "Ðет имени файла поÑле параметры -fo.\n"
+
+#: windres.c:959
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr "Параметр -I крайне не рекомендуетÑÑ Ð´Ð»Ñ ÑƒÑтановки входного формата. Лучше иÑпользовать -J.\n"
+
+#: windres.c:1072
+msgid "no resources"
+msgstr "нет реÑурÑов"
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹: %s"
+
+#: wrstabs.c:637
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: неверный размер %u"
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: предупреждение: неизвеÑтный размер Ð¿Ð¾Ð»Ñ Â«%s» в struct"
+
+#~ msgid "Usage: %s [emulation options] [--plugin <name>] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+#~ msgstr ""
+#~ "ИÑпользование: %s [параметры ÑмулÑции] [--plugin <название>] [-]{dmpqrstx}\n"
+#~ " [abcfilNoPsSuvV] [имÑ_члена] [Ñчет] файл_архива файл...\n"
+
+#~ msgid "illegal option -- %c"
+#~ msgstr "неверный параметр -- %c"
+
+#~ msgid ""
+#~ "\n"
+#~ "<%s>\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "<%s>\n"
+#~ "\n"
+
+#~ msgid "Usage: %s < input_file > output_file\n"
+#~ msgstr "ИÑпользование: %s < входной_файл > выходной_файл\n"
+
+#~ msgid "Prints bytes from stdin in hex format.\n"
+#~ msgstr "Выводит в шеÑтнадцатеричном формате байты Ñо Ñтандартного ввода.\n"
+
+#~ msgid " %d\t"
+#~ msgstr " %d\t"
+
+#~ msgid ""
+#~ "%s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s\n"
+#~ "\n"
+
+#~ msgid " %d\t"
+#~ msgstr " %d\t"
+
+#~ msgid "%s:\n"
+#~ msgstr "%s:\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "./%s:[++]\n"
+#~ msgstr ""
+#~ "\n"
+#~ "./%s:[++]\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "%s/%s:\n"
+#~ msgstr ""
+#~ "\n"
+#~ "%s/%s:\n"
+
+#~ msgid "%-35s %11d %#18lx\n"
+#~ msgstr "%-35s %11d %#18lx\n"
+
+#~ msgid "%-35s %11d %#18lx[%d]\n"
+#~ msgstr "%-35s %11d %#18lx[%d]\n"
+
+#~ msgid "%s %11d %#18lx\n"
+#~ msgstr "%s %11d %#18lx\n"
+
+#~ msgid "%s %11d %#18lx[%d]\n"
+#~ msgstr "%s %11d %#18lx[%d]\n"
+
+#~ msgid " %ld %s [%s]\n"
+#~ msgstr " %ld %s [%s]\n"
+
+#~ msgid " %-18s %s\n"
+#~ msgstr " %-18s %s\n"
+
+#~ msgid "Location lists in .debug_info section aren't in ascending order!\n"
+#~ msgstr "СпиÑки меÑтоположений в разделе .debug_info не упорÑдочены по возраÑтанию!\n"
+
+#~ msgid "target `%s' ignored."
+#~ msgstr "цель %s игнорируетÑÑ."
+
+#~ msgid " Pg"
+#~ msgstr " Стр"
+
+#~ msgid " (%ld)"
+#~ msgstr " (%ld)"
+
+#~ msgid "0x%02x "
+#~ msgstr "0x%02x "
+
+#~ msgid " [reserved compact index %d]\n"
+#~ msgstr " [зарезервированный компактный Ð¸Ð½Ð´ÐµÐºÑ %d]\n"
+
+#~ msgid " vsp = vsp - %d"
+#~ msgstr " vsp = vsp - %d"
+
+#~ msgid " vsp = r%d"
+#~ msgstr " vsp = r%d"
+
+#~ msgid "[unsupported two-byte opcode]"
+#~ msgstr "[неподдерживаемый двух байтный код операции]"
+
+#~ msgid " %*s %10s %*s\n"
+#~ msgstr " %*s %10s %*s\n"
+
+#~ msgid " %*s %10s %*s %*s %-7s %3s %s\n"
+#~ msgstr " %*s %10s %*s %*s %-7s %3s %s\n"
+
+#~ msgid " %*s %*s %*s %-7s %3s %s\n"
+#~ msgstr " %*s %*s %*s %-7s %3s %s\n"
+
+#~ msgid "%s %s: %s"
+#~ msgstr "%s %s: %s"
+
+#~ msgid "%s:%d: %s\n"
+#~ msgstr "%s:%d: %s\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Can't uncompress section '%s'.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ðевозможно раÑжать раздел '%s'.\n"
diff --git a/binutils-2.24/binutils/po/rw.gmo b/binutils-2.24/binutils/po/rw.gmo
new file mode 100644
index 00000000..6d5d7b9e
--- /dev/null
+++ b/binutils-2.24/binutils/po/rw.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/rw.po b/binutils-2.24/binutils/po/rw.po
new file mode 100644
index 00000000..51037188
--- /dev/null
+++ b/binutils-2.24/binutils/po/rw.po
@@ -0,0 +1,4990 @@
+# translation of binutils to Kinyarwanda.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Steve Murphy <murf@e-tools.com>, 2005
+# Steve performed initial rough translation from compendium built from translations provided by the following translators:
+# Philibert Ndandali <ndandali@yahoo.fr>, 2005.
+# Viateur MUGENZI <muvia1@yahoo.fr>, 2005.
+# Noëlla Mupole <s24211045@tuks.co.za>, 2005.
+# Carole Karema <karemacarole@hotmail.com>, 2005.
+# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005.
+# Augustin KIBERWA <akiberwa@yahoo.co.uk>, 2005.
+# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005.
+# Antoine Bigirimana <antoine@e-tools.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.15\n"
+"POT-Creation-Date: 2003-07-11 13:56+0930\n"
+"PO-Revision-Date: 2005-04-03 10:55-0700\n"
+"Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
+"Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: addr2line.c:74
+#, fuzzy, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Ihitamo S Aderesi S"
+
+#: addr2line.c:75
+#, fuzzy
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr "Amaderesi Umurongo Umubare IDOSIYE Izina:"
+
+#: addr2line.c:76
+#, fuzzy
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr "Oya Amaderesi ku i Komandi: Umurongo Gusoma Bivuye"
+
+#: addr2line.c:77
+#, fuzzy
+msgid ""
+" The options are:\n"
+" -b --target=<bfdname> Set the binary file format\n"
+" -e --exe=<executable> Set the input file name (default is a.out)\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr "Amahitamo B Intego i Nyabibiri IDOSIYE E exe i Iyinjiza IDOSIYE Izina: Mburabuzi ni a Inyuma S bushyinguro F Imimaro Umumaro C IMISUSIRE Umumaro h Ifashayobora iyi v Verisiyo i"
+
+#: addr2line.c:89 ar.c:297 coffdump.c:479 nlmconv.c:1121 objcopy.c:484
+#: objcopy.c:518 readelf.c:2649 size.c:104 srconv.c:1962 strings.c:673
+#: sysdump.c:774 windres.c:702
+#, fuzzy, c-format
+msgid "Report bugs to %s\n"
+msgstr "Kuri"
+
+#: addr2line.c:245
+#, fuzzy, c-format
+msgid "%s: can not get addresses from archive"
+msgstr "%s:OYA Kubona Amaderesi Bivuye"
+
+#: addr2line.c:317 nm.c:433 objdump.c:2693
+#, fuzzy, c-format
+msgid "unknown demangling style `%s'"
+msgstr "Kitazwi IMISUSIRE"
+
+#: ar.c:238
+#, fuzzy, c-format
+msgid "no entry %s in archive\n"
+msgstr "Oya Icyinjijwe in"
+
+#: ar.c:255
+#, fuzzy, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+msgstr "Amahitamo Izina: IBARA IDOSIYE IDOSIYE"
+
+#: ar.c:258
+#, fuzzy, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr "%s-IYANDIKA"
+
+# sfx2/source\doc\docvor.src:DLG_ORGANIZE.BTN_EDIT.text
+#: ar.c:259
+#, fuzzy
+msgid " commands:\n"
+msgstr "Amabwiriza"
+
+#: ar.c:260
+#, fuzzy
+msgid " d - delete file(s) from the archive\n"
+msgstr "D Gusiba IDOSIYE S Bivuye i"
+
+#: ar.c:261
+#, fuzzy
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr "M Kwimura IDOSIYE S in i"
+
+#: ar.c:262
+#, fuzzy
+msgid " p - print file(s) found in the archive\n"
+msgstr "P Gucapa IDOSIYE S Byabonetse in i"
+
+#: ar.c:263
+#, fuzzy
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr "Q F Kongeraho... IDOSIYE S Kuri i"
+
+#: ar.c:264
+#, fuzzy
+msgid " r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
+msgstr "R F u Gusimbura Cyangwa Kongeramo Gishya IDOSIYE S i"
+
+#: ar.c:265
+#, fuzzy
+msgid " t - display contents of archive\n"
+msgstr "T Kugaragaza Ibigize Bya"
+
+#: ar.c:266
+#, fuzzy
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr "X o IDOSIYE S Bivuye i"
+
+#: ar.c:267
+#, fuzzy
+msgid " command specific modifiers:\n"
+msgstr "Komandi:"
+
+#: ar.c:268
+#, fuzzy
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr "[a Gushyira IDOSIYE S Nyuma Izina:"
+
+#: ar.c:269
+#, fuzzy
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr "[B Gushyira IDOSIYE S Mbere Izina: Nka i"
+
+#: ar.c:270
+#, fuzzy
+msgid " [N] - use instance [count] of name\n"
+msgstr "[Gukoresha Urugero IBARA Bya"
+
+#: ar.c:271
+#, fuzzy
+msgid " [f] - truncate inserted file names\n"
+msgstr "[F Byinjijwemo IDOSIYE"
+
+#: ar.c:272
+#, fuzzy
+msgid " [P] - use full path names when matching\n"
+msgstr "[Gukoresha Inzira Amazina Ryari:"
+
+#: ar.c:273
+#, fuzzy
+msgid " [o] - preserve original dates\n"
+msgstr "[o Umwimerere"
+
+#: ar.c:274
+#, fuzzy
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr "[u Gusimbura Idosiye KIGEZWEHO"
+
+#: ar.c:275
+#, fuzzy
+msgid " generic modifiers:\n"
+msgstr "Gifitanye isano"
+
+#: ar.c:276
+#, fuzzy
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr "[C OYA NIBA i Isomero Kuri"
+
+#: ar.c:277
+#, fuzzy
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr "[S Kurema Umubarendanga"
+
+#: ar.c:278
+#, fuzzy
+msgid " [S] - do not build a symbol table\n"
+msgstr "[OYA a IKIMENYETSO"
+
+#: ar.c:279
+#, fuzzy
+msgid " [v] - be verbose\n"
+msgstr "[v"
+
+#: ar.c:280
+#, fuzzy
+msgid " [V] - display the version number\n"
+msgstr "[V Kugaragaza i Verisiyo"
+
+#: ar.c:287
+#, fuzzy, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Amahitamo"
+
+#: ar.c:288
+#, fuzzy
+msgid " Generate an index to speed access to archives\n"
+msgstr "Umubarendanga Kuri Umuvuduko Kuri"
+
+#: ar.c:289
+#, fuzzy
+msgid ""
+" The options are:\n"
+" -h --help Print this help message\n"
+" -V --version Print version information\n"
+msgstr "Amahitamo h Ifashayobora iyi Ifashayobora V Verisiyo Verisiyo"
+
+#: ar.c:512
+#, fuzzy
+msgid "two different operation options specified"
+msgstr "Amahitamo"
+
+#: ar.c:587
+#, fuzzy, c-format
+msgid "illegal option -- %c"
+msgstr "Ihitamo"
+
+#: ar.c:619
+#, fuzzy
+msgid "no operation specified"
+msgstr "Oya"
+
+#: ar.c:622
+#, fuzzy
+msgid "`u' is only meaningful with the `r' option."
+msgstr "`ni Na: i Ihitamo"
+
+#: ar.c:632
+#, fuzzy
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "`ni Na: i Na Amahitamo"
+
+#: ar.c:635
+#, fuzzy
+msgid "Value for `N' must be positive."
+msgstr "kugirango"
+
+#: ar.c:718
+#, fuzzy, c-format
+msgid "internal error -- this option not implemented"
+msgstr "By'imbere Ikosa iyi Ihitamo OYA"
+
+#: ar.c:837 ar.c:888 ar.c:1333 objcopy.c:1579
+#, fuzzy, c-format
+msgid "internal stat error on %s"
+msgstr "By'imbere Ikosa ku"
+
+#: ar.c:841
+#, c-format
+msgid ""
+"\n"
+"<member %s>\n"
+"\n"
+msgstr ""
+
+#: ar.c:857 ar.c:925
+#, fuzzy, c-format
+msgid "%s is not a valid archive"
+msgstr "%sni OYA a Byemewe"
+
+#: ar.c:893
+#, fuzzy, c-format
+msgid "stat returns negative size for %s"
+msgstr "Ingano kugirango"
+
+#: ar.c:1020
+#, fuzzy, c-format
+msgid "%s is not an archive"
+msgstr "%sni OYA"
+
+#: ar.c:1027
+#, c-format
+msgid "creating %s"
+msgstr ""
+
+#: ar.c:1233
+#, c-format
+msgid "No member named `%s'\n"
+msgstr ""
+
+#: ar.c:1285
+#, fuzzy, c-format
+msgid "no entry %s in archive %s!"
+msgstr "Oya Icyinjijwe in"
+
+#: ar.c:1422
+#, fuzzy, c-format
+msgid "%s: no archive map to update"
+msgstr "%s:Oya Kuri Kuvugurura"
+
+#: arsup.c:86
+#, fuzzy, c-format
+msgid "No entry %s in archive.\n"
+msgstr "Icyinjijwe in"
+
+# sfx2/source\appl\app.src:STR_ERR_NOFILE.text
+#: arsup.c:117
+#, fuzzy, c-format
+msgid "Can't open file %s\n"
+msgstr "Ntibishoboka gufungura idosiye$."
+
+#: arsup.c:172
+#, fuzzy, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s:Gufungura Ibisohoka"
+
+#: arsup.c:189
+#, fuzzy, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s:Gufungura Iyinjiza"
+
+#: arsup.c:198
+#, fuzzy, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s:IDOSIYE ni OYA"
+
+#: arsup.c:241
+#, fuzzy, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s:Oya Ibisohoka"
+
+#: arsup.c:262 arsup.c:301 arsup.c:343 arsup.c:364 arsup.c:430
+#, fuzzy, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s:Oya Gufungura Ibisohoka"
+
+#: arsup.c:273 arsup.c:385 arsup.c:411
+#, fuzzy, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s:Gufungura IDOSIYE"
+
+#: arsup.c:328 arsup.c:407 arsup.c:489
+#, fuzzy, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s:Gushaka Modire IDOSIYE"
+
+#: arsup.c:439
+#, fuzzy, c-format
+msgid "Current open archive is %s\n"
+msgstr "Gufungura ni"
+
+#: arsup.c:464
+#, fuzzy, c-format
+msgid "%s: no open archive\n"
+msgstr "%s:Oya Gufungura"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr ""
+
+#. Macros for common output.
+#: binemul.h:52
+#, fuzzy, c-format
+msgid " emulation options: \n"
+msgstr "Amahitamo"
+
+#: bucomm.c:113
+#, fuzzy, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "Gushyiraho Mburabuzi Intego Kuri"
+
+#: bucomm.c:125
+#, fuzzy, c-format
+msgid "%s: Matching formats:"
+msgstr "%s:Imiterere"
+
+#: bucomm.c:142
+msgid "Supported targets:"
+msgstr ""
+
+#: bucomm.c:144
+#, c-format
+msgid "%s: supported targets:"
+msgstr ""
+
+#: bucomm.c:162
+msgid "Supported architectures:"
+msgstr ""
+
+#: bucomm.c:164
+#, c-format
+msgid "%s: supported architectures:"
+msgstr ""
+
+#: bucomm.c:360
+#, fuzzy, c-format
+msgid "BFD header file version %s\n"
+msgstr "Umutwempangano IDOSIYE Verisiyo"
+
+#: bucomm.c:467
+#, fuzzy, c-format
+msgid "%s: bad number: %s"
+msgstr "%s:Umubare"
+
+#: coffdump.c:107
+#, fuzzy, c-format
+msgid "#lines %d "
+msgstr "#Imirongo"
+
+#: coffdump.c:471 sysdump.c:767
+#, fuzzy, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Ihitamo S in"
+
+#: coffdump.c:472
+#, fuzzy
+msgid " Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "a Bya a Igikoresho"
+
+#: coffdump.c:473
+#, fuzzy
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr "Amahitamo h Ifashayobora iyi v Verisiyo i"
+
+#: coffdump.c:541 srconv.c:2052 sysdump.c:831
+#, fuzzy
+msgid "no input file specified"
+msgstr "Oya Iyinjiza IDOSIYE"
+
+#: debug.c:654
+#, fuzzy
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "Oya KIGEZWEHO IDOSIYE"
+
+#: debug.c:737
+#, fuzzy
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "Oya"
+
+#: debug.c:796
+#, fuzzy
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "Oya"
+
+#: debug.c:852
+#, fuzzy
+msgid "debug_record_parameter: no current function"
+msgstr "Oya KIGEZWEHO Umumaro"
+
+#: debug.c:886
+#, fuzzy
+msgid "debug_end_function: no current function"
+msgstr "Oya KIGEZWEHO Umumaro"
+
+#: debug.c:892
+#, fuzzy
+msgid "debug_end_function: some blocks were not closed"
+msgstr "OYA"
+
+#: debug.c:922
+#, fuzzy
+msgid "debug_start_block: no current block"
+msgstr "Oya KIGEZWEHO Funga"
+
+#: debug.c:960
+#, fuzzy
+msgid "debug_end_block: no current block"
+msgstr "Oya KIGEZWEHO Funga"
+
+#: debug.c:967
+#, fuzzy
+msgid "debug_end_block: attempt to close top level block"
+msgstr "Kuri Gufunga Hejuru: urwego Funga"
+
+#: debug.c:993
+#, fuzzy
+msgid "debug_record_line: no current unit"
+msgstr "Oya KIGEZWEHO Igice:"
+
+#. FIXME
+#: debug.c:1047
+#, fuzzy
+msgid "debug_start_common_block: not implemented"
+msgstr "OYA"
+
+#. FIXME
+#: debug.c:1059
+#, fuzzy
+msgid "debug_end_common_block: not implemented"
+msgstr "OYA"
+
+#. FIXME.
+#: debug.c:1153
+#, fuzzy
+msgid "debug_record_label: not implemented"
+msgstr "OYA"
+
+#: debug.c:1179
+#, fuzzy
+msgid "debug_record_variable: no current file"
+msgstr "Oya KIGEZWEHO IDOSIYE"
+
+#: debug.c:1762
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr ""
+
+#: debug.c:1963
+#, fuzzy
+msgid "debug_name_type: no current file"
+msgstr "Oya KIGEZWEHO IDOSIYE"
+
+#: debug.c:2011
+#, fuzzy
+msgid "debug_tag_type: no current file"
+msgstr "Oya KIGEZWEHO IDOSIYE"
+
+#: debug.c:2019
+#, fuzzy
+msgid "debug_tag_type: extra tag attempted"
+msgstr "Birenga Itagi:"
+
+#: debug.c:2058
+#, fuzzy, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Ubwoko Ingano Bivuye Kuri"
+
+#: debug.c:2082
+#, fuzzy
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "Oya KIGEZWEHO Igice:"
+
+#: debug.c:2189
+#, fuzzy, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "Cy'uruziga Kosora amakosa Ibisobanuro kugirango"
+
+#: debug.c:2650
+#, fuzzy
+msgid "debug_write_type: illegal type encountered"
+msgstr "Ubwoko"
+
+#: dlltool.c:812 dlltool.c:837 dlltool.c:863
+#, fuzzy, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "Ikosa Ubwoko"
+
+#: dlltool.c:900
+#, fuzzy, c-format
+msgid "Can't open def file: %s"
+msgstr "Gufungura IDOSIYE"
+
+#: dlltool.c:905
+#, fuzzy, c-format
+msgid "Processing def file: %s"
+msgstr "IDOSIYE"
+
+#: dlltool.c:909
+#, fuzzy
+msgid "Processed def file"
+msgstr "IDOSIYE"
+
+#: dlltool.c:935
+#, fuzzy, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Ikosa in IDOSIYE"
+
+#: dlltool.c:974
+#, fuzzy, c-format
+msgid "NAME: %s base: %x"
+msgstr "SHINGIRO"
+
+#: dlltool.c:977 dlltool.c:996
+#, fuzzy
+msgid "Can't have LIBRARY and NAME"
+msgstr "Na"
+
+#: dlltool.c:993
+#, fuzzy, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "SHINGIRO"
+
+#: dlltool.c:1251 resrc.c:271
+#, fuzzy, c-format
+msgid "wait: %s"
+msgstr "Tegereza"
+
+#: dlltool.c:1256 dllwrap.c:430 resrc.c:276
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr ""
+
+#: dlltool.c:1262 dllwrap.c:437 resrc.c:283
+#, fuzzy, c-format
+msgid "%s exited with status %d"
+msgstr "%sNa: Imimerere"
+
+#: dlltool.c:1294
+#, fuzzy, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "in Ibisobanuro Bivuye Icyiciro in"
+
+#: dlltool.c:1423
+#, fuzzy, c-format
+msgid "Excluding symbol: %s"
+msgstr "IKIMENYETSO"
+
+#: dlltool.c:1518 dlltool.c:1529 nm.c:1004 nm.c:1015
+#, fuzzy, c-format
+msgid "%s: no symbols"
+msgstr "%s:Oya Ibimenyetso"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1556
+#, c-format
+msgid "Done reading %s"
+msgstr ""
+
+#: dlltool.c:1567
+#, fuzzy, c-format
+msgid "Unable to open object file: %s"
+msgstr "Kuri Gufungura Igikoresho IDOSIYE"
+
+#: dlltool.c:1570
+#, fuzzy, c-format
+msgid "Scanning object file %s"
+msgstr "Igikoresho IDOSIYE"
+
+#: dlltool.c:1585
+#, fuzzy, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "Bivuye IDOSIYE"
+
+#: dlltool.c:1677
+#, fuzzy
+msgid "Adding exports to output file"
+msgstr "Kuri Ibisohoka IDOSIYE"
+
+#: dlltool.c:1724
+#, fuzzy
+msgid "Added exports to output file"
+msgstr "Kuri Ibisohoka IDOSIYE"
+
+#: dlltool.c:1848
+#, fuzzy, c-format
+msgid "Generating export file: %s"
+msgstr "Kohereza IDOSIYE"
+
+#: dlltool.c:1853
+#, fuzzy, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Kuri Gufungura By'igihe gito IDOSIYE"
+
+#: dlltool.c:1856
+#, fuzzy, c-format
+msgid "Opened temporary file: %s"
+msgstr "By'igihe gito IDOSIYE"
+
+#: dlltool.c:2086
+#, fuzzy
+msgid "Generated exports file"
+msgstr "IDOSIYE"
+
+#: dlltool.c:2378
+#, fuzzy, c-format
+msgid "bfd_open failed open stub file: %s"
+msgstr "Byanze Gufungura IDOSIYE"
+
+#: dlltool.c:2381
+#, fuzzy, c-format
+msgid "Creating stub file: %s"
+msgstr "IDOSIYE"
+
+#: dlltool.c:2766
+#, fuzzy, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "Byanze Kuri Gufungura By'igihe gito IDOSIYE"
+
+#: dlltool.c:2825
+#, fuzzy, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "Byanze Kuri Gufungura By'igihe gito IDOSIYE"
+
+#: dlltool.c:2892
+#, fuzzy, c-format
+msgid "Can't open .lib file: %s"
+msgstr "Gufungura IDOSIYE"
+
+#: dlltool.c:2895
+#, fuzzy, c-format
+msgid "Creating library file: %s"
+msgstr "Isomero IDOSIYE"
+
+#: dlltool.c:2951
+#, fuzzy, c-format
+msgid "cannot delete %s: %s"
+msgstr "Gusiba"
+
+#: dlltool.c:2955
+#, fuzzy
+msgid "Created lib file"
+msgstr "IDOSIYE"
+
+#: dlltool.c:3062
+#, fuzzy, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Gusubiramo"
+
+#: dlltool.c:3068
+#, fuzzy, c-format
+msgid "Error, duplicate EXPORT with oridinals: %s"
+msgstr "Gusubiramo Na:"
+
+#: dlltool.c:3191
+msgid "Processing definitions"
+msgstr ""
+
+#: dlltool.c:3223
+msgid "Processed definitions"
+msgstr ""
+
+#. xgetext:c-format
+#: dlltool.c:3234 dllwrap.c:495
+#, fuzzy, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Ihitamo S Igikoresho IDOSIYE S"
+
+#. xgetext:c-format
+#: dlltool.c:3236
+#, fuzzy, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr "-M Nka kugirango Mburabuzi"
+
+#: dlltool.c:3237
+#, fuzzy
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr "LE"
+
+#: dlltool.c:3238
+#, fuzzy
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr "-E Ibisohoka EXP Kohereza IDOSIYE"
+
+#: dlltool.c:3239
+#, fuzzy
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr "-L Ibisohoka Isomero"
+
+#: dlltool.c:3240
+#, fuzzy
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr "-a Kongeramo BUZIGUYE Kuri Kohereza IDOSIYE"
+
+#: dlltool.c:3241
+#, fuzzy
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr "-Izina: Bya Iyinjiza Kuri Gushyira"
+
+#: dlltool.c:3242
+#, fuzzy
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr "-D Iyinjiza Bya IDOSIYE Kuri Gusoma in"
+
+#: dlltool.c:3243
+#, fuzzy
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr "-Z Ibisohoka Bya IDOSIYE Kuri Byaremwe"
+
+#: dlltool.c:3244
+#, fuzzy
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr "--Kohereza Byose Ibimenyetso Byose Ibimenyetso Kuri"
+
+#: dlltool.c:3245
+#, fuzzy
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr "--Oya Kohereza Byose Ibimenyetso Kohereza"
+
+#: dlltool.c:3246
+#, fuzzy
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr "--Ibimenyetso Urutonde Kohereza Urutonde"
+
+#: dlltool.c:3247
+#, fuzzy
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr "--Oya Mburabuzi Mburabuzi"
+
+#: dlltool.c:3248
+#, fuzzy
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr "-B SHINGIRO IDOSIYE SHINGIRO IDOSIYE"
+
+#: dlltool.c:3249
+#, fuzzy
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr "-X Oya 4. Icyiciro"
+
+#: dlltool.c:3250
+#, fuzzy
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr "-C Oya 5 Icyiciro"
+
+#: dlltool.c:3251
+#, fuzzy
+msgid " -U --add-underscore Add underscores to symbols in interface library.\n"
+msgstr "-U Kongeramo Kuri Ibimenyetso in Isomero"
+
+#: dlltool.c:3252
+#, fuzzy
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr "-K ku N Bivuye Amazina"
+
+#: dlltool.c:3253
+#, fuzzy
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr "-A Kongeramo Irihimbano Irihimbano N"
+
+#: dlltool.c:3254
+#, fuzzy
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr "-Nka Izina: Izina: kugirango"
+
+#: dlltool.c:3255
+#, fuzzy
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr "-F Nka Amabendera Amabendera Amabendera Kuri i"
+
+#: dlltool.c:3256
+#, fuzzy
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr "-C subira inyuma Kuzana Isomero"
+
+#: dlltool.c:3257
+#, fuzzy
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr "-N Oya Gusiba Idosiye Gusubiramo kugirango Birenga"
+
+#: dlltool.c:3258
+#, fuzzy
+msgid " -v --verbose Be verbose.\n"
+msgstr "-v"
+
+#: dlltool.c:3259
+#, fuzzy
+msgid " -V --version Display the program version.\n"
+msgstr "-V Verisiyo i Porogaramu Verisiyo"
+
+#: dlltool.c:3260
+#, fuzzy
+msgid " -h --help Display this information.\n"
+msgstr "-h Ifashayobora iyi Ibisobanuro"
+
+#: dlltool.c:3262
+#, fuzzy
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr "-Igikoresho Idosiye"
+
+#: dlltool.c:3263
+#, fuzzy
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr "-Izina: Izina: Nka i"
+
+#: dlltool.c:3264
+#, fuzzy
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr "-Amabendera Amabendera Amabendera Kuri i"
+
+#: dlltool.c:3418
+#, fuzzy, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Kuri Gufungura SHINGIRO IDOSIYE"
+
+#: dlltool.c:3450
+#, fuzzy, c-format
+msgid "Machine '%s' not supported"
+msgstr "OYA"
+
+#: dlltool.c:3553 dllwrap.c:214
+#, fuzzy, c-format
+msgid "Tried file: %s"
+msgstr "IDOSIYE"
+
+#: dlltool.c:3560 dllwrap.c:221
+#, fuzzy, c-format
+msgid "Using file: %s"
+msgstr "IDOSIYE"
+
+#: dllwrap.c:308
+#, fuzzy, c-format
+msgid "Keeping temporary base file %s"
+msgstr "By'igihe gito SHINGIRO IDOSIYE"
+
+#: dllwrap.c:310
+#, fuzzy, c-format
+msgid "Deleting temporary base file %s"
+msgstr "By'igihe gito SHINGIRO IDOSIYE"
+
+#: dllwrap.c:324
+#, fuzzy, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "By'igihe gito EXP IDOSIYE"
+
+#: dllwrap.c:326
+#, fuzzy, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "By'igihe gito EXP IDOSIYE"
+
+#: dllwrap.c:339
+#, fuzzy, c-format
+msgid "Keeping temporary def file %s"
+msgstr "By'igihe gito IDOSIYE"
+
+#: dllwrap.c:341
+#, fuzzy, c-format
+msgid "Deleting temporary def file %s"
+msgstr "By'igihe gito IDOSIYE"
+
+#: dllwrap.c:496
+#, fuzzy
+msgid " Generic options:\n"
+msgstr "Amahitamo"
+
+#: dllwrap.c:497
+#, fuzzy
+msgid " --quiet, -q Work quietly\n"
+msgstr "--Q"
+
+#: dllwrap.c:498
+#, fuzzy
+msgid " --verbose, -v Verbose\n"
+msgstr "--v"
+
+#: dllwrap.c:499
+#, fuzzy
+msgid " --version Print dllwrap version\n"
+msgstr "--Verisiyo"
+
+#: dllwrap.c:500
+#, fuzzy
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr "--kugirango Ibisohoka"
+
+#: dllwrap.c:501
+#, fuzzy, c-format
+msgid " Options for %s:\n"
+msgstr "kugirango"
+
+#: dllwrap.c:502
+#, fuzzy
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr "--Musomyi: Izina: Musomyi: Kuri"
+
+#: dllwrap.c:503
+#, fuzzy
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr "--Musomyi: Amabendera Amabendera Mburabuzi"
+
+#: dllwrap.c:504
+#, fuzzy
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr "--Izina: Kuri"
+
+#: dllwrap.c:505
+#, fuzzy
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr "--Icyinjijwe Icyinjijwe Icyinjijwe"
+
+#: dllwrap.c:506
+#, fuzzy
+msgid " --image-base <base> Specify image base address\n"
+msgstr "--Ishusho SHINGIRO SHINGIRO Ishusho SHINGIRO"
+
+#: dllwrap.c:507
+#, fuzzy
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr "--Intego Cyangwa"
+
+#: dllwrap.c:508
+#, fuzzy
+msgid " --dry-run Show what needs to be run\n"
+msgstr "--Gukoresha Kuri"
+
+#: dllwrap.c:509
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr ""
+
+#: dllwrap.c:510
+#, fuzzy
+msgid " Options passed to DLLTOOL:\n"
+msgstr "Kuri"
+
+#: dllwrap.c:511
+msgid " --machine <machine>\n"
+msgstr ""
+
+#: dllwrap.c:512
+#, fuzzy
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr "--Ibisohoka EXP Kohereza IDOSIYE"
+
+#: dllwrap.c:513
+#, fuzzy
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr "--Ibisohoka Iyinjiza Isomero"
+
+#: dllwrap.c:514
+#, fuzzy
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr "--Kongeramo BUZIGUYE Kuri Kohereza IDOSIYE"
+
+#: dllwrap.c:515
+#, fuzzy
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr "--Izina: Bya Iyinjiza Kuri Gushyira Ibisohoka"
+
+#: dllwrap.c:516
+#, fuzzy
+msgid " --def <deffile> Name input .def file\n"
+msgstr "--Iyinjiza"
+
+#: dllwrap.c:517
+#, fuzzy
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr "--Ibisohoka Ibisohoka"
+
+#: dllwrap.c:518
+#, fuzzy
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr "--Kohereza Byose Ibimenyetso Byose Ibimenyetso Kuri"
+
+#: dllwrap.c:519
+#, fuzzy
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr "--Oya Kohereza Byose Ibimenyetso Kohereza"
+
+#: dllwrap.c:520
+#, fuzzy
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr "--Ibimenyetso Urutonde Urutonde Bivuye"
+
+#: dllwrap.c:521
+#, fuzzy
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr "--Oya Mburabuzi Mburabuzi"
+
+#: dllwrap.c:522
+#, fuzzy
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr "--SHINGIRO IDOSIYE SHINGIRO"
+
+#: dllwrap.c:523
+#, fuzzy
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr "--Oya 4."
+
+#: dllwrap.c:524
+#, fuzzy
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr "--Oya 5"
+
+#: dllwrap.c:525
+#, fuzzy
+msgid " -U Add underscores to .lib\n"
+msgstr "-U Kuri"
+
+#: dllwrap.c:526
+#, fuzzy
+msgid " -k Kill @<n> from exported names\n"
+msgstr "-K N Bivuye"
+
+#: dllwrap.c:527
+#, fuzzy
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr "--Kongeramo Irihimbano Irihimbano N"
+
+#: dllwrap.c:528
+#, fuzzy
+msgid " --as <name> Use <name> for assembler\n"
+msgstr "--Nka Izina: Izina: kugirango"
+
+#: dllwrap.c:529
+#, fuzzy
+msgid " --nodelete Keep temp files.\n"
+msgstr "--Idosiye"
+
+#: dllwrap.c:530
+#, fuzzy
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr "Kuri i Ururimi"
+
+#: dllwrap.c:802
+#, fuzzy
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "ku Bya o Cyangwa Amahitamo"
+
+#: dllwrap.c:830
+#, fuzzy
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr "Oya Kohereza Insobanuro IDOSIYE Gicurasi OYA"
+
+#: dllwrap.c:992
+#, fuzzy, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "Izina:"
+
+#: dllwrap.c:993
+#, fuzzy, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "Amahitamo"
+
+# offmgr/source\offapp\dialog\connpooloptions.src:RID_OFAPAGE_CONNPOOLOPTIONS.STR_DRIVER_NAME.text
+#: dllwrap.c:994
+#, fuzzy, c-format
+msgid "DRIVER name : %s\n"
+msgstr "Izina rya musomyi"
+
+#: dllwrap.c:995
+#, fuzzy, c-format
+msgid "DRIVER options : %s\n"
+msgstr "Amahitamo"
+
+#: emul_aix.c:58
+#, fuzzy, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr "[-g Gitoya"
+
+#: emul_aix.c:59
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:60
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr ""
+
+#: emul_aix.c:61
+#, fuzzy
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr "[-Na"
+
+#: ieee.c:326
+#, fuzzy
+msgid "unexpected end of debugging information"
+msgstr "Impera Bya Ibisobanuro"
+
+# sch/source\ui\app\strings.src:STR_INVALID_NUMBER.text
+#: ieee.c:421
+#, fuzzy
+msgid "invalid number"
+msgstr "Umubare utari wo"
+
+#: ieee.c:480
+#, fuzzy
+msgid "invalid string length"
+msgstr "Sibyo Ikurikiranyanyuguti Uburebure"
+
+#: ieee.c:537 ieee.c:578
+#, fuzzy
+msgid "expression stack overflow"
+msgstr "imvugo Byarenze urugero"
+
+#: ieee.c:557
+#, fuzzy
+msgid "unsupported IEEE expression operator"
+msgstr "imvugo Mukoresha"
+
+#: ieee.c:572
+#, fuzzy
+msgid "unknown section"
+msgstr "Kitazwi Icyiciro"
+
+#: ieee.c:593
+#, fuzzy
+msgid "expression stack underflow"
+msgstr "imvugo"
+
+#: ieee.c:607
+#, fuzzy
+msgid "expression stack mismatch"
+msgstr "imvugo"
+
+#: ieee.c:646
+#, fuzzy
+msgid "unknown builtin type"
+msgstr "Kitazwi Ubwoko"
+
+#: ieee.c:791
+#, fuzzy
+msgid "BCD float type not supported"
+msgstr "Kureremba Ubwoko OYA"
+
+#: ieee.c:937
+#, fuzzy
+msgid "unexpected number"
+msgstr "Umubare"
+
+#: ieee.c:944
+#, fuzzy
+msgid "unexpected record type"
+msgstr "Icyabitswe Ubwoko"
+
+#: ieee.c:977
+#, fuzzy
+msgid "blocks left on stack at end"
+msgstr "Ibumoso: ku ku Impera"
+
+#: ieee.c:1242
+#, fuzzy
+msgid "unknown BB type"
+msgstr "Kitazwi Ubwoko"
+
+#: ieee.c:1251
+#, fuzzy
+msgid "stack overflow"
+msgstr "Byarenze urugero"
+
+#: ieee.c:1276
+msgid "stack underflow"
+msgstr ""
+
+#: ieee.c:1390 ieee.c:1462 ieee.c:2161
+#, fuzzy
+msgid "illegal variable index"
+msgstr "IMPINDURAGACIRO Umubarendanga"
+
+#: ieee.c:1440
+#, fuzzy
+msgid "illegal type index"
+msgstr "Ubwoko Umubarendanga"
+
+#: ieee.c:1450 ieee.c:1487
+#, fuzzy
+msgid "unknown TY code"
+msgstr "Kitazwi ITEGEKONGENGA"
+
+#: ieee.c:1469
+#, fuzzy
+msgid "undefined variable in TY"
+msgstr "kidasobanuye IMPINDURAGACIRO in"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1880
+#, fuzzy
+msgid "Pascal file name not supported"
+msgstr "IDOSIYE Izina: OYA"
+
+#: ieee.c:1928
+msgid "unsupported qualifier"
+msgstr ""
+
+#: ieee.c:2199
+#, fuzzy
+msgid "undefined variable in ATN"
+msgstr "kidasobanuye IMPINDURAGACIRO in"
+
+#: ieee.c:2242
+#, fuzzy
+msgid "unknown ATN type"
+msgstr "Kitazwi Ubwoko"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2364
+msgid "unsupported ATN11"
+msgstr ""
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2391
+msgid "unsupported ATN12"
+msgstr ""
+
+#: ieee.c:2451
+#, fuzzy
+msgid "unexpected string in C++ misc"
+msgstr "Ikurikiranyanyuguti in C"
+
+#: ieee.c:2464
+#, fuzzy
+msgid "bad misc record"
+msgstr "Icyabitswe"
+
+#: ieee.c:2507
+#, fuzzy
+msgid "unrecognized C++ misc record"
+msgstr "C Icyabitswe"
+
+#: ieee.c:2624
+#, fuzzy
+msgid "undefined C++ object"
+msgstr "kidasobanuye C Igikoresho"
+
+#: ieee.c:2658
+#, fuzzy
+msgid "unrecognized C++ object spec"
+msgstr "C Igikoresho"
+
+#: ieee.c:2694
+#, fuzzy
+msgid "unsupported C++ object type"
+msgstr "C Igikoresho Ubwoko"
+
+#: ieee.c:2704
+#, fuzzy
+msgid "C++ base class not defined"
+msgstr "C SHINGIRO ishuri OYA"
+
+#: ieee.c:2716 ieee.c:2821
+#, fuzzy
+msgid "C++ object has no fields"
+msgstr "C Igikoresho Oya Imyanya"
+
+#: ieee.c:2735
+#, fuzzy
+msgid "C++ base class not found in container"
+msgstr "C SHINGIRO ishuri OYA Byabonetse in"
+
+#: ieee.c:2842
+#, fuzzy
+msgid "C++ data member not found in container"
+msgstr "C Ibyatanzwe OYA Byabonetse in"
+
+#: ieee.c:2883 ieee.c:3033
+#, fuzzy
+msgid "unknown C++ visibility"
+msgstr "Kitazwi C Ukugaragara"
+
+#: ieee.c:2917
+#, fuzzy
+msgid "bad C++ field bit pos or size"
+msgstr "C Umwanya Cyangwa Ingano"
+
+#: ieee.c:3009
+#, fuzzy
+msgid "bad type for C++ method function"
+msgstr "Ubwoko kugirango C Uburyo Umumaro"
+
+#: ieee.c:3019
+#, fuzzy
+msgid "no type information for C++ method function"
+msgstr "Oya Ubwoko Ibisobanuro kugirango C Uburyo Umumaro"
+
+#: ieee.c:3058
+#, fuzzy
+msgid "C++ static virtual method"
+msgstr "C Kitaboneka Uburyo"
+
+#: ieee.c:3153
+#, fuzzy
+msgid "unrecognized C++ object overhead spec"
+msgstr "C Igikoresho"
+
+#: ieee.c:3192
+#, fuzzy
+msgid "undefined C++ vtable"
+msgstr "kidasobanuye C"
+
+#: ieee.c:3263
+#, fuzzy
+msgid "C++ default values not in a function"
+msgstr "C Mburabuzi Uduciro OYA in a Umumaro"
+
+#: ieee.c:3303
+#, fuzzy
+msgid "unrecognized C++ default type"
+msgstr "C Mburabuzi Ubwoko"
+
+#: ieee.c:3334
+#, fuzzy
+msgid "reference parameter is not a pointer"
+msgstr "Indango ni OYA a Mweretsi"
+
+#: ieee.c:3419
+#, fuzzy
+msgid "unrecognized C++ reference type"
+msgstr "C Indango Ubwoko"
+
+#: ieee.c:3501
+#, fuzzy
+msgid "C++ reference not found"
+msgstr "C Indango OYA Byabonetse"
+
+#: ieee.c:3509
+#, fuzzy
+msgid "C++ reference is not pointer"
+msgstr "C Indango ni OYA Mweretsi"
+
+#: ieee.c:3538 ieee.c:3546
+#, fuzzy
+msgid "missing required ASN"
+msgstr "Ibuze Bya ngombwa"
+
+#: ieee.c:3576 ieee.c:3584
+#, fuzzy
+msgid "missing required ATN65"
+msgstr "Ibuze Bya ngombwa"
+
+#: ieee.c:3598
+#, fuzzy
+msgid "bad ATN65 record"
+msgstr "Icyabitswe"
+
+#: ieee.c:4286
+#, fuzzy
+msgid "IEEE numeric overflow: 0x"
+msgstr "Bikurikije umubare Byarenze urugero"
+
+#: ieee.c:4332
+#, fuzzy, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "Ikurikiranyanyuguti Uburebure Byarenze urugero"
+
+#: ieee.c:5382
+#, fuzzy, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "Umubare wuzuye Ubwoko Ingano"
+
+#: ieee.c:5418
+#, fuzzy, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "Kureremba Ubwoko Ingano"
+
+#: ieee.c:5454
+#, fuzzy, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "ITSINDA RY'IMIBARE C Ubwoko Ingano"
+
+#: nlmconv.c:282 srconv.c:2043
+#, fuzzy
+msgid "input and output files must be different"
+msgstr "Iyinjiza Na Ibisohoka Idosiye"
+
+#: nlmconv.c:329
+#, fuzzy
+msgid "input file named both on command line and with INPUT"
+msgstr "Iyinjiza IDOSIYE Byombi ku Komandi: Umurongo Na Na:"
+
+#: nlmconv.c:338
+#, fuzzy
+msgid "no input file"
+msgstr "Oya Iyinjiza IDOSIYE"
+
+#: nlmconv.c:368
+#, fuzzy
+msgid "no name for output file"
+msgstr "Oya Izina: kugirango Ibisohoka IDOSIYE"
+
+#: nlmconv.c:382
+#, fuzzy
+msgid "warning: input and output formats are not compatible"
+msgstr "Iburira Iyinjiza Na Ibisohoka Imiterere OYA"
+
+#: nlmconv.c:411
+#, fuzzy
+msgid "make .bss section"
+msgstr "Ubwoko."
+
+#: nlmconv.c:420
+#, fuzzy
+msgid "make .nlmsections section"
+msgstr "Ubwoko."
+
+#: nlmconv.c:422
+#, fuzzy
+msgid "set .nlmsections flags"
+msgstr "Gushyiraho."
+
+#: nlmconv.c:450
+#, fuzzy
+msgid "set .bss vma"
+msgstr "Gushyiraho."
+
+#: nlmconv.c:457
+#, fuzzy
+msgid "set .data size"
+msgstr "Gushyiraho."
+
+#: nlmconv.c:637
+#, fuzzy, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "Iburira IKIMENYETSO cyavuye ahandi/ cyatumijwe OYA in Kuzana Urutonde"
+
+#: nlmconv.c:657
+#, fuzzy
+msgid "set start address"
+msgstr "Gushyiraho Gutangira Aderesi"
+
+#: nlmconv.c:706
+#, fuzzy, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "Iburira OYA"
+
+#: nlmconv.c:708
+#, fuzzy, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "Iburira OYA"
+
+#: nlmconv.c:710
+#, fuzzy, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "Iburira OYA"
+
+#: nlmconv.c:731 nlmconv.c:920
+#, fuzzy
+msgid "custom section"
+msgstr "Kunoza Icyiciro"
+
+#: nlmconv.c:752 nlmconv.c:949
+#, fuzzy
+msgid "help section"
+msgstr "Ifashayobora Icyiciro"
+
+#: nlmconv.c:774 nlmconv.c:967
+#, fuzzy
+msgid "message section"
+msgstr "Ubutumwa Icyiciro"
+
+#: nlmconv.c:790 nlmconv.c:1000
+#, fuzzy
+msgid "module section"
+msgstr "Modire Icyiciro"
+
+#: nlmconv.c:810 nlmconv.c:1016
+#, fuzzy
+msgid "rpc section"
+msgstr "Icyiciro"
+
+#. There is no place to record this information.
+#: nlmconv.c:846
+#, fuzzy, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s:Iburira Amasomero OYA Itatangijwe Ibyatanzwe"
+
+#: nlmconv.c:867 nlmconv.c:1035
+#, fuzzy
+msgid "shared section"
+msgstr "Icyiciro"
+
+#: nlmconv.c:875
+#, fuzzy
+msgid "warning: No version number given"
+msgstr "Iburira Verisiyo Umubare"
+
+#: nlmconv.c:915 nlmconv.c:944 nlmconv.c:962 nlmconv.c:1011 nlmconv.c:1030
+#, fuzzy, c-format
+msgid "%s: read: %s"
+msgstr "%s:Gusoma"
+
+#: nlmconv.c:937
+#, fuzzy
+msgid "warning: MAP and FULLMAP are not supported; try ld -M"
+msgstr "Iburira Na OYA"
+
+#: nlmconv.c:1109
+#, fuzzy, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Ihitamo S in IDOSIYE Inyuma IDOSIYE"
+
+#: nlmconv.c:1110
+#, fuzzy
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr "Igikoresho IDOSIYE a"
+
+#: nlmconv.c:1111
+#, fuzzy
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+msgstr "Amahitamo Iyinjiza Intego i Iyinjiza Nyabibiri IDOSIYE Ibisohoka Intego i Ibisohoka Nyabibiri IDOSIYE Umutwempangano IDOSIYE IDOSIYE IDOSIYE kugirango Umutwempangano L kugirango D Kosora amakosa ku i Komandi: h Ifashayobora iyi v Verisiyo i"
+
+#: nlmconv.c:1153
+#, fuzzy, c-format
+msgid "support not compiled in for %s"
+msgstr "Gushigikira OYA in kugirango"
+
+#: nlmconv.c:1193
+#, fuzzy
+msgid "make section"
+msgstr "Ubwoko Icyiciro"
+
+#: nlmconv.c:1207
+#, fuzzy
+msgid "set section size"
+msgstr "Gushyiraho Icyiciro Ingano"
+
+#: nlmconv.c:1213
+#, fuzzy
+msgid "set section alignment"
+msgstr "Gushyiraho Icyiciro Itunganya"
+
+#: nlmconv.c:1217
+#, fuzzy
+msgid "set section flags"
+msgstr "Gushyiraho Icyiciro Amabendera"
+
+#: nlmconv.c:1228
+#, fuzzy
+msgid "set .nlmsections size"
+msgstr "Gushyiraho."
+
+#: nlmconv.c:1316 nlmconv.c:1324 nlmconv.c:1333 nlmconv.c:1338
+#, fuzzy
+msgid "set .nlmsection contents"
+msgstr "Gushyiraho."
+
+#: nlmconv.c:1839
+#, fuzzy
+msgid "stub section sizes"
+msgstr "Icyiciro"
+
+#: nlmconv.c:1888
+msgid "writing stub"
+msgstr ""
+
+#: nlmconv.c:1977
+#, fuzzy, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "Bifitanye isano"
+
+#: nlmconv.c:2041
+#, fuzzy, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "Byarenze urugero Ryari:"
+
+#: nlmconv.c:2158
+#, fuzzy, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s:Bya Byanze"
+
+#: nlmconv.c:2173
+#, fuzzy, c-format
+msgid "Execution of %s failed"
+msgstr "Bya Byanze"
+
+#: nm.c:283 size.c:85 strings.c:657
+#, fuzzy, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Ihitamo S IDOSIYE S"
+
+#: nm.c:284
+#, fuzzy
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr "Ibimenyetso in IDOSIYE S a Inyuma ku Mburabuzi"
+
+#: nm.c:285
+#, fuzzy
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -u, --undefined-only Display only undefined symbols\n"
+" -X 32_64 (ignored)\n"
+" -h, --help Display this information\n"
+" -V, --version Display this program's version number\n"
+"\n"
+msgstr "Amahitamo a Kosora amakosa A Gucapa IDOSIYE Izina: Izina: Bya i Iyinjiza IDOSIYE Mbere buri Nka Imiterere C Byo hasi urwego IKIMENYETSO Amazina Ukoresha: urwego NIBA i Mburabuzi Cyangwa Oya OYA Byo hasi urwego IKIMENYETSO Ibimenyetso Bya Bisanzwe E F Imiterere i Ibisohoka Imiterere Cyangwa Mburabuzi ni g external L Umurongo Imibare Ibisobanuro Kuri Gushaka a Izina ry'idosiye: Umurongo Umubare kugirango N Bikurikije umubare Ishungura Ibimenyetso ku o Nka P Oya Ishungura OYA Ishungura i Nka Imiterere R Ihindurakerekezo Ishungura i Bya i Gucapa Ingano Ingano Bya S Gucapa Umubarendanga kugirango Ibimenyetso Bivuye Ingano Ishungura Ibimenyetso ku T radix kugirango Icapa... IKIMENYETSO Intego i Intego Igikoresho Imiterere Nka u kidasobanuye kidasobanuye h Ifashayobora iyi V Verisiyo iyi Verisiyo"
+
+#: nm.c:319 objdump.c:250
+#, fuzzy, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Kuri"
+
+#: nm.c:352
+#, fuzzy, c-format
+msgid "%s: invalid radix"
+msgstr "%s:Sibyo radix"
+
+#: nm.c:377
+#, fuzzy, c-format
+msgid "%s: invalid output format"
+msgstr "%s:Sibyo Ibisohoka Imiterere"
+
+#: nm.c:494
+#, fuzzy
+msgid "Only -X 32_64 is supported"
+msgstr "ni"
+
+#: nm.c:514
+#, fuzzy
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "i Ingano Ishungura Na kidasobanuye Amahitamo"
+
+#: nm.c:515
+#, fuzzy
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "Oya Ibisohoka guhera kidasobanuye Ibimenyetso Oya Ingano"
+
+#: nm.c:543
+#, fuzzy, c-format
+msgid "data size %ld"
+msgstr "Ibyatanzwe Ingano"
+
+#: nm.c:568 readelf.c:5809 readelf.c:5845
+#, c-format
+msgid "<processor specific>: %d"
+msgstr ""
+
+#: nm.c:570 readelf.c:5811 readelf.c:5857
+#, c-format
+msgid "<OS specific>: %d"
+msgstr ""
+
+#: nm.c:572 readelf.c:5813 readelf.c:5860
+#, fuzzy, c-format
+msgid "<unknown>: %d"
+msgstr "<Itazwi>"
+
+#: nm.c:1376
+#, fuzzy, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr "Ibimenyetso Bivuye"
+
+#: nm.c:1378
+#, fuzzy, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr "Bivuye"
+
+#: nm.c:1380 nm.c:1438
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+
+#: nm.c:1383 nm.c:1441
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+
+#: nm.c:1434
+#, fuzzy, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr "Ibimenyetso Bivuye"
+
+#: nm.c:1436
+#, fuzzy, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr "Bivuye"
+
+#: nm.c:1658
+#, fuzzy
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr "Umubarendanga"
+
+#: objcopy.c:414 srconv.c:1952
+#, fuzzy, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Ihitamo S in IDOSIYE Inyuma IDOSIYE"
+
+#: objcopy.c:415
+#, fuzzy
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr "a Nyabibiri IDOSIYE in i"
+
+#: objcopy.c:416 objcopy.c:495
+#, fuzzy
+msgid " The options are:\n"
+msgstr "Amahitamo"
+
+#: objcopy.c:417
+#, fuzzy
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set arch of output file, when input is binary\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" -K --keep-symbol <name> Only copy symbol <name>\n"
+" -L --localize-symbol <name> Force symbol <name> to be marked as a local\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"
+" -x --discard-all Remove all non-global symbols\n"
+" -X --discard-locals Remove any compiler-generated symbols\n"
+" -i --interleave <number> Only copy one out of every <number> bytes\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed 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"
+" --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"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+msgstr "-Iyinjiza Intego Iyinjiza IDOSIYE ni in Imiterere Ibisohoka Intego Ibisohoka IDOSIYE in Imiterere Nyabibiri Bya Ibisohoka IDOSIYE Ryari: Iyinjiza ni Intego Byombi Iyinjiza Na Ibisohoka Imiterere Kuri Ibisobanuro NIBA P Amatariki Byahinduwe Kuri i j Icyiciro Izina: Gukoporora Icyiciro Izina: i Kongeramo IDOSIYE Icyiciro Impuza Kuri IDOSIYE Gukuraho... Icyiciro Izina: Icyiciro Izina: Bivuye i Byose Byose IKIMENYETSO Na g Kosora amakosa Byose Ibimenyetso Byose Ibimenyetso OYA ku IKIMENYETSO Izina: OYA Gukoporora IKIMENYETSO Izina: Gumana: IKIMENYETSO Izina: Gukoporora IKIMENYETSO Izina: IKIMENYETSO Izina: IKIMENYETSO Izina: Kuri cy/ byagarajwe Nka a Gumana: IKIMENYETSO Izina: Byose Ibimenyetso Izina: IKIMENYETSO Izina: IKIMENYETSO Izina: Kuri cy/ byagarajwe Nka a Byose Ibimenyetso Kuri cy/ byagarajwe Nka X Kwanga Byose Byose Kwanga i Umubare Gukoporora Inyuma Bya buri Umubare B Bayite Bayite in buri Umwanya Kuzuza hagati Ibyatoranyijwe Na: Kuri Aderesi i Iheruka Icyiciro Hejuru Kuri Aderesi Aderesi Gushyiraho Gutangira Aderesi i Gutangira Aderesi Kuri Aderesi Guhindura>> Gutangira Gutangira Kuri i Gutangira Guhindura>> Amaderesi Kuri Na Gutangira Guhindura>> Icyiciro Aderesi Icyiciro Izina: Na Bya Icyiciro Izina: ku Guhindura>> Icyiciro Izina: i Bya Icyiciro Izina: ku Guhindura>> Icyiciro Izina: i Bya Icyiciro Izina: ku Oya Guhindura>> Iburira Oya Iburira NIBA a Icyiciro OYA Gushyiraho Icyiciro Amabendera Izina: Amabendera Icyiciro Izina: S Indangakintu... Kuri Amabendera Kongeramo Icyiciro Izina: IDOSIYE Icyiciro Izina: Byabonetse in IDOSIYE Kuri Guhindura izina Icyiciro ki/ bishaje Gishya Amabendera Icyiciro ki/ bishaje Kuri Gishya Guhindura>> Nyobora INYUGUTI Ibisohoka Nyobora Inyuguti Gukuraho... Nyobora INYUGUTI Nyobora Inyuguti Bivuye ki/ bishaje Gishya IKIMENYETSO Izina: ki/ bishaje Kuri Gishya IDOSIYE kugirango Byose IKIMENYETSO in IDOSIYE LEN Umubare i Uburebure Bya i Ubwoko Bya Kuri Ibimenyetso IDOSIYE kugirango Byose Ibimenyetso in IDOSIYE Gumana: Ibimenyetso IDOSIYE kugirango Byose Ibimenyetso in IDOSIYE Ibimenyetso IDOSIYE kugirango Byose Ibimenyetso in IDOSIYE Gumana: Ibimenyetso IDOSIYE kugirango Byose Ibimenyetso in IDOSIYE Ibimenyetso IDOSIYE kugirango Byose Ibimenyetso in IDOSIYE Alt ITEGEKONGENGA Umubarendanga ITEGEKONGENGA kugirango Imbanziriza Ibimenyetso Imbanziriza Imbanziriza Kuri Gutangira Bya buri IKIMENYETSO Imbanziriza Ibyatoranyijwe Imbanziriza Imbanziriza Kuri Gutangira Bya buri Icyiciro Imbanziriza Ibyatoranyijwe Imbanziriza Imbanziriza Kuri Gutangira Bya buri Icyiciro v Byose Igikoresho Idosiye V Verisiyo iyi Verisiyo h Ifashayobora iyi Ibisobanuro Igikoresho Imiterere"
+
+#: objcopy.c:493
+#, fuzzy, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Ihitamo S in IDOSIYE S"
+
+#: objcopy.c:494
+#, fuzzy
+msgid " Removes symbols and sections from files\n"
+msgstr "Ibimenyetso Na Ibyatoranyijwe Bivuye"
+
+#: objcopy.c:496
+#, fuzzy
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol=<name> Do not copy symbol <name>\n"
+" -K --keep-symbol=<name> Only copy symbol <name>\n"
+" -x --discard-all Remove all non-global symbols\n"
+" -X --discard-locals Remove any compiler-generated symbols\n"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr "-Iyinjiza Intego Iyinjiza IDOSIYE ni in Imiterere Ibisohoka Intego Ibisohoka IDOSIYE in Imiterere Intego Byombi Iyinjiza Na Ibisohoka Imiterere Kuri P Amatariki Byahinduwe Kuri i Gukuraho... Icyiciro Izina: Icyiciro Izina: Bivuye i S Byose Byose IKIMENYETSO Na g D Kosora amakosa Byose Ibimenyetso Byose Ibimenyetso OYA ku IKIMENYETSO Izina: OYA Gukoporora IKIMENYETSO Izina: Gumana: IKIMENYETSO Izina: Gukoporora IKIMENYETSO Izina: X Kwanga Byose Byose Kwanga v Byose Igikoresho Idosiye V Verisiyo iyi Verisiyo h Ifashayobora iyi Ibisobanuro Igikoresho Imiterere o IDOSIYE Ibisohoka IDOSIYE"
+
+#: objcopy.c:567
+#, fuzzy, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "Icyiciro Ibendera"
+
+#: objcopy.c:568
+#, fuzzy, c-format
+msgid "supported flags: %s"
+msgstr "Amabendera"
+
+#: objcopy.c:645 objcopy.c:2526
+#, c-format
+msgid "cannot stat: %s: %s"
+msgstr ""
+
+#: objcopy.c:652 objcopy.c:2544
+#, fuzzy, c-format
+msgid "cannot open: %s: %s"
+msgstr "Gufungura"
+
+#: objcopy.c:655 objcopy.c:2548
+#, fuzzy, c-format
+msgid "%s: fread failed"
+msgstr "%s:Byanze"
+
+#: objcopy.c:728
+#, fuzzy, c-format
+msgid "Ignoring rubbish found on line %d of %s"
+msgstr "Kwirengagiza Byabonetse ku Umurongo Bya"
+
+#: objcopy.c:979
+#, fuzzy, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s:Bya IKIMENYETSO"
+
+#: objcopy.c:983
+#, fuzzy, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s:ni Intego Bya Birenzeho"
+
+#: objcopy.c:1010
+#, fuzzy, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "Gufungura IKIMENYETSO IDOSIYE Ikosa"
+
+#: objcopy.c:1088
+#, fuzzy, c-format
+msgid "%s: garbage at end of line %d"
+msgstr "%s:ku Impera Bya Umurongo"
+
+#: objcopy.c:1091
+#, fuzzy, c-format
+msgid "%s: missing new symbol name at line %d"
+msgstr "%s:Ibuze Gishya IKIMENYETSO Izina: ku Umurongo"
+
+#: objcopy.c:1101
+#, fuzzy, c-format
+msgid "%s: premature end of file at line %d"
+msgstr "%s:Impera Bya IDOSIYE ku Umurongo"
+
+#: objcopy.c:1147
+#, fuzzy
+msgid "Unable to change endianness of input file(s)"
+msgstr "Kuri Guhindura>> Bya Iyinjiza IDOSIYE S"
+
+#: objcopy.c:1155
+#, fuzzy, c-format
+msgid "copy from %s(%s) to %s(%s)\n"
+msgstr "Gukoporora Bivuye Kuri"
+
+#: objcopy.c:1182
+#, fuzzy, c-format
+msgid "Warning: Output file cannot represent architecture %s"
+msgstr "IDOSIYE"
+
+#: objcopy.c:1211
+#, fuzzy, c-format
+msgid "can't create section `%s': %s"
+msgstr "Kurema Icyiciro"
+
+#: objcopy.c:1304
+#, fuzzy, c-format
+msgid "Can't fill gap after %s: %s"
+msgstr "Kuzuza Umwanya Nyuma"
+
+#: objcopy.c:1329
+#, fuzzy, c-format
+msgid "Can't add padding to %s: %s"
+msgstr "Kongeramo Wuzuza: Kuri"
+
+#: objcopy.c:1485
+#, fuzzy, c-format
+msgid "%s: error copying private BFD data: %s"
+msgstr "%s:Ikosa By'umwihariko Ibyatanzwe"
+
+#: objcopy.c:1498
+#, fuzzy
+msgid "unknown alternate machine code, ignored"
+msgstr "Kitazwi ITEGEKONGENGA"
+
+#: objcopy.c:1531 objcopy.c:1561
+#, fuzzy, c-format
+msgid "cannot mkdir %s for archive copying (error: %s)"
+msgstr "kugirango Ikosa"
+
+#: objcopy.c:1749
+#, fuzzy, c-format
+msgid "Multiple renames of section %s"
+msgstr "Bya Icyiciro"
+
+#: objcopy.c:1840
+msgid "making"
+msgstr ""
+
+# sc/source\ui\src\scfuncs.src:RID_SC_FUNCTION_DESCRIPTIONS2.SC_OPCODE_CONFIDENCE.6.text
+#: objcopy.c:1849
+msgid "size"
+msgstr "ingano"
+
+#: objcopy.c:1863
+msgid "vma"
+msgstr ""
+
+#: objcopy.c:1888
+#, fuzzy
+msgid "alignment"
+msgstr "Itunganya"
+
+# svx/source\gallery2\galtheme.src:RID_GALLERYSTR_THEME_FLAGS.text
+#: objcopy.c:1896
+#, fuzzy
+msgid "flags"
+msgstr "Amabendera"
+
+# sw/source\ui\envelp\label.src:TP_PRIVATE_DATA.FL_DATA.text
+#: objcopy.c:1918
+#, fuzzy
+msgid "private data"
+msgstr "Ibyashyinguwe mwihariko"
+
+#: objcopy.c:1926
+#, fuzzy, c-format
+msgid "%s: section `%s': error in %s: %s"
+msgstr "%s:Icyiciro Ikosa in"
+
+#: objcopy.c:2199
+#, fuzzy, c-format
+msgid "%s: can't create debugging section: %s"
+msgstr "%s:Kurema Icyiciro"
+
+#: objcopy.c:2214
+#, fuzzy, c-format
+msgid "%s: can't set debugging section contents: %s"
+msgstr "%s:Gushyiraho Icyiciro Ibigize"
+
+#: objcopy.c:2223
+#, fuzzy, c-format
+msgid "%s: don't know how to write debugging information for %s"
+msgstr "%s:Kuri Kwandika Ibisobanuro kugirango"
+
+#: objcopy.c:2346
+#, c-format
+msgid "%s: cannot stat: %s"
+msgstr ""
+
+#: objcopy.c:2400
+#, fuzzy
+msgid "byte number must be non-negative"
+msgstr "Bayite Umubare"
+
+#: objcopy.c:2410
+msgid "interleave must be positive"
+msgstr ""
+
+#: objcopy.c:2430 objcopy.c:2438
+#, fuzzy, c-format
+msgid "%s both copied and removed"
+msgstr "%sByombi Na Cyavanyweho"
+
+#: objcopy.c:2523 objcopy.c:2593 objcopy.c:2693 objcopy.c:2724 objcopy.c:2748
+#: objcopy.c:2752 objcopy.c:2772
+#, fuzzy, c-format
+msgid "bad format for %s"
+msgstr "Imiterere kugirango"
+
+#: objcopy.c:2662
+#, fuzzy, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Umwanya Kuzuza Bivuye Kuri"
+
+#: objcopy.c:2818
+#, fuzzy
+msgid "alternate machine code index must be positive"
+msgstr "ITEGEKONGENGA Umubarendanga"
+
+#: objcopy.c:2856
+#, fuzzy
+msgid "byte number must be less than interleave"
+msgstr "Bayite Umubare Birutwa"
+
+#: objcopy.c:2883
+#, fuzzy, c-format
+msgid "architecture %s unknown"
+msgstr "Kitazwi"
+
+#: objcopy.c:2887
+#, fuzzy
+msgid "Warning: input target 'binary' required for binary architecture parameter."
+msgstr "Iyinjiza Intego Bya ngombwa kugirango Nyabibiri"
+
+#: objcopy.c:2888
+#, c-format
+msgid " Argument %s ignored"
+msgstr ""
+
+#: objcopy.c:2894
+#, c-format
+msgid "Cannot stat: %s: %s"
+msgstr ""
+
+#: objcopy.c:2934 objcopy.c:2948
+#, fuzzy, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s%s%c0x%sNta narimwe"
+
+#: objdump.c:197
+#, fuzzy, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Ihitamo S IDOSIYE S"
+
+#: objdump.c:198
+#, fuzzy
+msgid " Display information from object <file(s)>.\n"
+msgstr "Ibisobanuro Bivuye Igikoresho IDOSIYE S"
+
+#: objdump.c:199
+#, fuzzy
+msgid " At least one of the following switches must be given:\n"
+msgstr "Bya i"
+
+#: objdump.c:200
+#, fuzzy
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -g, --debugging Display debug information in object file\n"
+" -G, --stabs Display (in raw form) any STABS 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"
+" -v, --version Display this program's version number\n"
+" -i, --info List object formats and architectures supported\n"
+" -H, --help Display this information\n"
+msgstr "-a Imitwe Umutwempangano F IDOSIYE Imitwe i Ibigize Bya i IDOSIYE P By'umwihariko Imitwe Igikoresho Imiterere IDOSIYE Umutwempangano h Icyiciro Imitwe i Ibigize Bya i Icyiciro X Byose Imitwe i Ibigize Bya Byose D Gutandukanya Ibigize Bya Gutandukanya Byose Ibigize Bya Byose Inkomoko Inkomoko ITEGEKONGENGA Na: S Ibigize i Ibigize Bya Byose Ibyatoranyijwe g Kosora amakosa Ibisobanuro in Igikoresho in Ifishi Ibisobanuro in i T i Ibigize Bya i IKIMENYETSO imbonerahamwe# S i Ibigize Bya i IKIMENYETSO R i Ibyinjijwe in i i Ibyinjijwe in i v Verisiyo iyi Verisiyo i Ibisobanuro Igikoresho Imiterere Na H Ifashayobora iyi"
+
+#: objdump.c:222
+#, fuzzy
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr "Bitari ngombwa"
+
+#: objdump.c:223
+#, fuzzy
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+"\n"
+msgstr "-B Intego i Intego Igikoresho Imiterere Nka M i Intego Nka j Icyiciro Kugaragaza Ibisobanuro kugirango Icyiciro Amahitamo Umwandiko ku Kuri i Imiterere Ryari: Imiterere Ryari: IDOSIYE Gutangira Imvugiro Imvugiro Bivuye Gutangira Bya IDOSIYE Na: L Umurongo Imibare Umurongo Imibare Na in C IKIMENYETSO NIBA Cyangwa W Ibisohoka kugirango Birenzeho Z Gutandukanya OYA Bya Ryari: Gutangira Aderesi Ibyatanzwe bya Aderesi ni Guhagarara Aderesi Ibyatanzwe bya Aderesi ni Imbanziriza Amaderesi Byuzuye Aderesi Oya Garagaza Kuri Byose Icyiciro"
+
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/source\ui\inc\swmn.hrc:MN_OBJECTMENU_TEXT.FN_EDIT_REGION.text
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/source\ui\inc\swmn.hrc:MN_OBJECTMENU_TABLE.FN_EDIT_REGION.text
+#: objdump.c:391
+#, fuzzy
+msgid "Sections:\n"
+msgstr "Ibyiciro..."
+
+#: objdump.c:394 objdump.c:398
+#, fuzzy
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idosiye Bidakora"
+
+#: objdump.c:400
+#, fuzzy
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idosiye Bidakora"
+
+# svx/source\gallery2\galtheme.src:RID_GALLERYSTR_THEME_FLAGS.text
+#: objdump.c:404
+#, fuzzy
+msgid " Flags"
+msgstr "Amabendera"
+
+#: objdump.c:406
+msgid " Pg"
+msgstr ""
+
+#: objdump.c:451
+#, fuzzy, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s:OYA a Igikoresho"
+
+#: objdump.c:1144
+#, fuzzy
+msgid "Out of virtual memory"
+msgstr "Bya Kitaboneka Ububiko"
+
+#: objdump.c:1574
+#, fuzzy, c-format
+msgid "Can't use supplied machine %s"
+msgstr "Gukoresha"
+
+#: objdump.c:1592
+#, fuzzy, c-format
+msgid "Can't disassemble for architecture %s\n"
+msgstr "Gutandukanya kugirango"
+
+#: objdump.c:1682
+#, fuzzy, c-format
+msgid "Disassembly of section %s:\n"
+msgstr "Bya Icyiciro"
+
+#: objdump.c:1847
+#, fuzzy, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr "Icyiciro"
+
+#: objdump.c:1854
+#, fuzzy, c-format
+msgid "%s has no %s section"
+msgstr "%sOya Icyiciro"
+
+#: objdump.c:1868
+#, fuzzy, c-format
+msgid "Reading %s section of %s failed: %s"
+msgstr "Icyiciro Bya Byanze"
+
+#: objdump.c:1880
+#, fuzzy, c-format
+msgid "Reading %s section of %s failed: %s\n"
+msgstr "Icyiciro Bya Byanze"
+
+#: objdump.c:1923
+#, fuzzy, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr "Bya Icyiciro"
+
+#: objdump.c:2021
+#, c-format
+msgid "architecture: %s, "
+msgstr ""
+
+#: objdump.c:2024
+#, fuzzy, c-format
+msgid "flags 0x%08x:\n"
+msgstr "Amabendera"
+
+#: objdump.c:2038
+#, fuzzy
+msgid ""
+"\n"
+"start address 0x"
+msgstr "Gutangira Aderesi"
+
+#: objdump.c:2071
+#, fuzzy, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr "%s:IDOSIYE Imiterere"
+
+#: objdump.c:2111
+#, fuzzy, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s:Icapa... Ibisobanuro Byanze"
+
+#: objdump.c:2190
+#, c-format
+msgid "In archive %s:\n"
+msgstr ""
+
+#: objdump.c:2249
+#, fuzzy, c-format
+msgid "Contents of section %s:\n"
+msgstr "Bya Icyiciro"
+
+#: objdump.c:2369
+#, fuzzy
+msgid "no symbols\n"
+msgstr "Oya"
+
+#: objdump.c:2718
+#, fuzzy
+msgid "unrecognized -E option"
+msgstr "E Ihitamo"
+
+#: objdump.c:2729
+#, fuzzy, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "Ubwoko"
+
+#: rdcoff.c:206
+#, fuzzy, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "Ubwoko ITEGEKONGENGA"
+
+#: rdcoff.c:424 rdcoff.c:532 rdcoff.c:731
+#, fuzzy, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "Byanze"
+
+#: rdcoff.c:440 rdcoff.c:751
+#, fuzzy, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "Byanze"
+
+#: rdcoff.c:818
+#, fuzzy, c-format
+msgid "%ld: .bf without preceding function"
+msgstr ""
+"%ld:.Project- Id- Version: basctl\n"
+"POT- Creation- Date: 2003- 12- 07 17: 13+ 02\n"
+"PO- Revision- Date: 2004- 11- 04 10: 13- 0700\n"
+"Last- Translator: Language- Team:< en@ li. org> MIME- Version: 1. 0\n"
+"Content- Type: text/ plain; charset= UTF- 8\n"
+"Content- Transfer- Encoding: 8bit\n"
+"X- Generator: KBabel 1. 0\n"
+"."
+
+#: rdcoff.c:868
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr ""
+
+#: rddbg.c:91
+#, fuzzy, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s:Oya Ibisobanuro"
+
+#: rddbg.c:415
+#, fuzzy
+msgid "Last stabs entries before error:\n"
+msgstr "Ibyinjijwe Mbere Ikosa"
+
+# sw/source\ui\utlui\initui.src:RID_SW_SHELLRES.STR_CALC_DEFAULT.text
+#: readelf.c:455
+#, fuzzy, c-format
+msgid "%s: Error: "
+msgstr "%s:Ikosa**"
+
+#: readelf.c:466
+#, fuzzy, c-format
+msgid "%s: Warning: "
+msgstr "%s:Iburira"
+
+#: readelf.c:488
+#, fuzzy, c-format
+msgid "Unable to seek to 0x%x for %s\n"
+msgstr "Kuri Kuri kugirango"
+
+#: readelf.c:499
+#, fuzzy, c-format
+msgid "Out of memory allocating 0x%x bytes for %s\n"
+msgstr "Bya Ububiko Bayite kugirango"
+
+#: readelf.c:507
+#, fuzzy, c-format
+msgid "Unable to read in 0x%x bytes of %s\n"
+msgstr "Kuri Gusoma in Bayite Bya"
+
+#: readelf.c:560 readelf.c:614 readelf.c:798 readelf.c:833
+#, fuzzy, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Ibyatanzwe Uburebure"
+
+#: readelf.c:924
+#, fuzzy
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Ibyerekeye ku iyi"
+
+#: readelf.c:946 readelf.c:975 readelf.c:1021 readelf.c:1049
+msgid "relocs"
+msgstr ""
+
+#: readelf.c:957 readelf.c:986 readelf.c:1031 readelf.c:1059
+#, fuzzy
+msgid "out of memory parsing relocs"
+msgstr "Inyuma Bya Ububiko"
+
+#: readelf.c:1112
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr ""
+
+#: readelf.c:1114
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr ""
+
+#: readelf.c:1119
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr ""
+
+#: readelf.c:1121
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr ""
+
+#: readelf.c:1129
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr ""
+
+#: readelf.c:1131
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr ""
+
+#: readelf.c:1136
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr ""
+
+#: readelf.c:1138
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr ""
+
+#: readelf.c:1414 readelf.c:1416 readelf.c:1492 readelf.c:1494 readelf.c:1503
+#: readelf.c:1505
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr ""
+
+#: readelf.c:1466
+#, fuzzy, c-format
+msgid "<string table index %3ld>"
+msgstr "<Ikurikiranyanyuguti imbonerahamwe# Umubarendanga"
+
+#: readelf.c:1743
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr ""
+
+#: readelf.c:1762
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr ""
+
+#: readelf.c:1765 readelf.c:2417
+#, fuzzy, c-format
+msgid "<unknown>: %lx"
+msgstr "<Itazwi>"
+
+#: readelf.c:1779
+msgid "NONE (None)"
+msgstr ""
+
+#: readelf.c:1780
+#, fuzzy
+msgid "REL (Relocatable file)"
+msgstr "IDOSIYE"
+
+#: readelf.c:1781
+#, fuzzy
+msgid "EXEC (Executable file)"
+msgstr "IDOSIYE"
+
+#: readelf.c:1782
+#, fuzzy
+msgid "DYN (Shared object file)"
+msgstr "Igikoresho IDOSIYE"
+
+#: readelf.c:1783
+#, fuzzy
+msgid "CORE (Core file)"
+msgstr "IDOSIYE"
+
+#: readelf.c:1787
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr ""
+
+#: readelf.c:1789
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr ""
+
+#: readelf.c:1791 readelf.c:1898 readelf.c:2574
+#, fuzzy, c-format
+msgid "<unknown>: %x"
+msgstr "<Itazwi>"
+
+# goodies/source\filter.vcl\eps\dlgeps.src:DLG_EXPORT_EPS.RB_COMPRESSION_NONE.text
+#: readelf.c:1804
+msgid "None"
+msgstr "Nta na kimwe"
+
+#: readelf.c:2616
+#, fuzzy
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Ihitamo S IDOSIYE S"
+
+#: readelf.c:2617
+#, fuzzy
+msgid " Display information about the contents of ELF format files\n"
+msgstr "Ibisobanuro Ibyerekeye i Ibigize Bya Imiterere"
+
+#: readelf.c:2618
+#, fuzzy
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -S --section-headers Display the sections' header\n"
+" --sections An alias for --section-headers\n"
+" -e --headers Equivalent to: -h -l -S\n"
+" -s --syms Display the symbol table\n"
+" --symbols An alias for --syms\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic segment (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number> Dump the contents of section <number>\n"
+" -w[liaprmfFso] or\n"
+" --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr "a Byose Kuri h L S R D V A h IDOSIYE Umutwempangano i IDOSIYE L Porogaramu Imitwe i Porogaramu Ingeri Irihimbano kugirango Porogaramu Icyiciro Imitwe i Ibyatoranyijwe Irihimbano kugirango Icyiciro E Imitwe Kuri h L S i IKIMENYETSO Ibimenyetso Irihimbano kugirango N Ibisobanuro i Ibisobanuro NIBA R i NIBA u i Ibisobanuro NIBA D i NIBA V Verisiyo Ibisobanuro i Verisiyo Ibyatoranyijwe NIBA A Ibisobanuro NIBA Gukoresha i Icyiciro Ibisobanuro Ryari: X Umubare i Ibigize Bya Icyiciro Umubare W Kosora amakosa Umurongo Ibisobanuro Ibice Makoro Amakadiri i Ibigize Bya Kosora amakosa"
+
+#: readelf.c:2640
+#, fuzzy
+msgid ""
+" -i --instruction-dump=<number>\n"
+" Disassemble the contents of section <number>\n"
+msgstr "-i Umubare i Ibigize Bya Icyiciro Umubare"
+
+#: readelf.c:2644
+#, fuzzy
+msgid ""
+" -I --histogram Display histogram of bucket list lengths\n"
+" -W --wide Allow output width to exceed 80 characters\n"
+" -H --help Display this information\n"
+" -v --version Display the version number of readelf\n"
+msgstr "-Bya Urutonde Ibisohoka Ubugari Kuri H Ifashayobora iyi v Verisiyo i Verisiyo Umubare Bya"
+
+#: readelf.c:2666 readelf.c:10765
+#, fuzzy
+msgid "Out of memory allocating dump request table."
+msgstr "Bya Ububiko Kubaza... imbonerahamwe#"
+
+#: readelf.c:2830 readelf.c:2906
+#, fuzzy, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Kosora amakosa Ihitamo"
+
+#: readelf.c:2940
+#, fuzzy, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Ihitamo"
+
+#: readelf.c:2953
+#, fuzzy
+msgid "Nothing to do.\n"
+msgstr "Kuri"
+
+# svx/source\items\svxitems.src:RID_SVXITEMS_EMPHASIS_NONE_STYLE.text
+#: readelf.c:2966 readelf.c:2983 readelf.c:5366
+msgid "none"
+msgstr "ntacyo"
+
+#: readelf.c:2970 readelf.c:2987 readelf.c:3018
+#, fuzzy, c-format
+msgid "<unknown: %x>"
+msgstr "<Itazwi>"
+
+#: readelf.c:2984
+msgid "2's complement, little endian"
+msgstr ""
+
+#: readelf.c:2985
+msgid "2's complement, big endian"
+msgstr ""
+
+#: readelf.c:3015
+msgid "Standalone App"
+msgstr ""
+
+#: readelf.c:3034
+#, fuzzy
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "IDOSIYE i Bayite ku i"
+
+#: readelf.c:3042
+msgid "ELF Header:\n"
+msgstr ""
+
+#: readelf.c:3043
+msgid " Magic: "
+msgstr ""
+
+# officecfg/registry\schema\org\openoffice\Office\Java.xcs:....VirtualMachine.UserClassPath.text
+#: readelf.c:3047
+#, fuzzy, c-format
+msgid " Class: %s\n"
+msgstr "ishuri"
+
+#: readelf.c:3049
+#, fuzzy, c-format
+msgid " Data: %s\n"
+msgstr "Ibyatanzwe"
+
+# goodies/source\filter.vcl\eps\dlgeps.src:DLG_EXPORT_EPS.GRP_VERSION.text
+#: readelf.c:3051
+#, fuzzy, c-format
+msgid " Version: %d %s\n"
+msgstr "Verisiyo"
+
+#: readelf.c:3058
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr ""
+
+#: readelf.c:3060
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr ""
+
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+#: readelf.c:3062
+#, fuzzy, c-format
+msgid " Type: %s\n"
+msgstr "Ubwoko"
+
+#: readelf.c:3064
+#, c-format
+msgid " Machine: %s\n"
+msgstr ""
+
+#: readelf.c:3066
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr ""
+
+#: readelf.c:3069
+#, fuzzy
+msgid " Entry point address: "
+msgstr "Akadomo Aderesi"
+
+#: readelf.c:3071
+#, fuzzy
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr "Gutangira Bya Porogaramu Imitwe"
+
+#: readelf.c:3073
+#, fuzzy
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr "(Bayite IDOSIYE Gutangira Bya Icyiciro Imitwe"
+
+#: readelf.c:3075
+#, fuzzy
+msgid " (bytes into file)\n"
+msgstr "(Bayite IDOSIYE"
+
+#: readelf.c:3077
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr ""
+
+#: readelf.c:3080
+#, fuzzy, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr "Bya iyi Umutwempangano Bayite"
+
+#: readelf.c:3082
+#, fuzzy, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr "Bya Porogaramu Imitwe Bayite"
+
+#: readelf.c:3084
+#, fuzzy, c-format
+msgid " Number of program headers: %ld\n"
+msgstr "Bya Porogaramu Imitwe"
+
+#: readelf.c:3086
+#, fuzzy, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr "Bya Icyiciro Imitwe Bayite"
+
+#: readelf.c:3088
+#, fuzzy, c-format
+msgid " Number of section headers: %ld"
+msgstr "Bya Icyiciro Imitwe"
+
+#: readelf.c:3093
+#, fuzzy, c-format
+msgid " Section header string table index: %ld"
+msgstr "Umutwempangano Ikurikiranyanyuguti imbonerahamwe# Umubarendanga"
+
+#: readelf.c:3127 readelf.c:3163
+#, fuzzy
+msgid "program headers"
+msgstr "Porogaramu Imitwe"
+
+#: readelf.c:3203 readelf.c:3480 readelf.c:3526 readelf.c:3589 readelf.c:3656
+#: readelf.c:4715 readelf.c:4758 readelf.c:4948 readelf.c:5917 readelf.c:5931
+#: readelf.c:10411
+#, fuzzy
+msgid "Out of memory\n"
+msgstr "Bya"
+
+#: readelf.c:3231
+#, fuzzy
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr "Oya Porogaramu Imitwe in iyi IDOSIYE"
+
+#: readelf.c:3237
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr "IDOSIYE Ubwoko ni"
+
+#: readelf.c:3238
+#, fuzzy
+msgid "Entry point "
+msgstr "Akadomo"
+
+#: readelf.c:3240
+#, fuzzy, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr "Porogaramu Imitwe ku Nta- boneza"
+
+#: readelf.c:3252 readelf.c:3254
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+
+#: readelf.c:3258
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr ""
+
+#: readelf.c:3261
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr ""
+
+#: readelf.c:3265
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr ""
+
+#: readelf.c:3267
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr ""
+
+#: readelf.c:3360
+#, fuzzy
+msgid "more than one dynamic segment\n"
+msgstr "Birenzeho"
+
+#: readelf.c:3368
+#, fuzzy
+msgid "Unable to find program interpreter name\n"
+msgstr "Kuri Gushaka Porogaramu"
+
+#: readelf.c:3375
+#, fuzzy, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr "[Porogaramu"
+
+#: readelf.c:3387
+#, fuzzy
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr "Kuri Igereranya"
+
+#: readelf.c:3388
+msgid " Segment Sections...\n"
+msgstr ""
+
+#: readelf.c:3437
+#, fuzzy
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "Kitaboneka Amaderesi Porogaramu Imitwe"
+
+#: readelf.c:3453
+#, fuzzy, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "Aderesi OYA in"
+
+#: readelf.c:3471 readelf.c:3517
+#, fuzzy
+msgid "section headers"
+msgstr "Icyiciro Imitwe"
+
+# sch/source\ui\app\strings.src:STR_SYMBOL.text
+#: readelf.c:3565 readelf.c:3632
+#, fuzzy
+msgid "symbols"
+msgstr "Ibimenyetso"
+
+#: readelf.c:3576 readelf.c:3643
+msgid "symtab shndx"
+msgstr ""
+
+#: readelf.c:3745
+#, fuzzy
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr "Oya Ibyatoranyijwe in iyi IDOSIYE"
+
+#: readelf.c:3751
+#, fuzzy, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "Icyiciro Imitwe ku Nta- boneza"
+
+#: readelf.c:3768 readelf.c:4098 readelf.c:4433 readelf.c:6070
+#, fuzzy
+msgid "string table"
+msgstr "Ikurikiranyanyuguti imbonerahamwe#"
+
+#: readelf.c:3793
+#, fuzzy
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Idosiye Kirimo Igikubo IKIMENYETSO"
+
+#: readelf.c:3805
+#, fuzzy
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Idosiye Kirimo Igikubo Ikurikiranyanyuguti"
+
+#: readelf.c:3811
+#, fuzzy
+msgid "dynamic strings"
+msgstr "Ikurikiranyanyuguti"
+
+#: readelf.c:3817
+#, fuzzy
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Idosiye Kirimo Igikubo"
+
+#: readelf.c:3855
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+
+#: readelf.c:3857
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+
+#: readelf.c:3861
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:3864
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:3867
+msgid " [Nr] Name Type Address Offset\n"
+msgstr ""
+
+#: readelf.c:3868
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr ""
+
+#: readelf.c:3963
+#, fuzzy
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr "Kuri Kwandika A Gukora Gukomatanya Ikurikiranyanyuguti Ibisobanuro Ihuza Itondekanya Itsinda X Kitazwi Birenga Inonosora Bya ngombwa o P"
+
+#: readelf.c:4031
+#, fuzzy, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr "'%s'Icyiciro ku Nta- boneza Kirimo Bayite"
+
+#: readelf.c:4043
+#, fuzzy
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr "Oya in iyi IDOSIYE"
+
+#: readelf.c:4070
+#, fuzzy
+msgid ""
+"\n"
+"Relocation section "
+msgstr "Icyiciro"
+
+# desktop/source\app\ssodlg.src:DLG_SSOLOGIN.text
+#: readelf.c:4075 readelf.c:4496 readelf.c:4510
+#, fuzzy, c-format
+msgid "'%s'"
+msgstr "'%s'"
+
+#: readelf.c:4077 readelf.c:4512
+#, fuzzy, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr "ku Nta- boneza Kirimo Ibyinjijwe"
+
+#: readelf.c:4115
+#, fuzzy
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr "Oya in iyi IDOSIYE"
+
+#: readelf.c:4299
+#, fuzzy
+msgid "unwind table"
+msgstr "imbonerahamwe#"
+
+#: readelf.c:4350 readelf.c:4362 readelf.c:8499 readelf.c:8511
+#, fuzzy, c-format
+msgid "Skipping unexpected symbol type %u\n"
+msgstr "IKIMENYETSO Ubwoko"
+
+#: readelf.c:4370
+#, fuzzy, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Ubwoko"
+
+#: readelf.c:4415 readelf.c:4440
+#, fuzzy
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr "Oya Ibyatoranyijwe in iyi IDOSIYE"
+
+#: readelf.c:4491
+#, fuzzy
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr "OYA Gushaka Ibisobanuro Icyiciro kugirango"
+
+#: readelf.c:4503
+#, fuzzy
+msgid "unwind info"
+msgstr "Ibisobanuro"
+
+#: readelf.c:4505
+#, fuzzy
+msgid ""
+"\n"
+"Unwind section "
+msgstr "Icyiciro"
+
+#: readelf.c:4699 readelf.c:4742
+msgid "dynamic segment"
+msgstr ""
+
+#: readelf.c:4820
+#, fuzzy
+msgid ""
+"\n"
+"There is no dynamic segment in this file.\n"
+msgstr "ni Oya in iyi IDOSIYE"
+
+#: readelf.c:4854
+#, fuzzy
+msgid "Unable to seek to end of file!"
+msgstr "Kuri Kuri Impera Bya IDOSIYE"
+
+#: readelf.c:4865
+#, fuzzy
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Kuri i Umubare Bya Ibimenyetso Kuri"
+
+#: readelf.c:4895
+#, fuzzy
+msgid "Unable to seek to end of file\n"
+msgstr "Kuri Kuri Impera Bya"
+
+#: readelf.c:4901
+#, fuzzy
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Kuri i Uburebure Bya i Ikurikiranyanyuguti"
+
+#: readelf.c:4906
+#, fuzzy
+msgid "dynamic string table"
+msgstr "Ikurikiranyanyuguti imbonerahamwe#"
+
+#: readelf.c:4941
+#, fuzzy
+msgid "symbol information"
+msgstr "IKIMENYETSO Ibisobanuro"
+
+#: readelf.c:4965
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Dynamic segment at offset 0x%lx contains %ld entries:\n"
+msgstr "ku Nta- boneza Kirimo Ibyinjijwe"
+
+#: readelf.c:4968
+msgid " Tag Type Name/Value\n"
+msgstr ""
+
+#: readelf.c:5004
+#, fuzzy
+msgid "Auxiliary library"
+msgstr "Isomero"
+
+#: readelf.c:5008
+#, fuzzy
+msgid "Filter library"
+msgstr "Isomero"
+
+# sfx2/source\explorer\explorer.src:STR_SFX_CFGFILE.text
+#: readelf.c:5012
+msgid "Configuration file"
+msgstr "Idosiye y'iboneza"
+
+#: readelf.c:5016
+#, fuzzy
+msgid "Dependency audit library"
+msgstr "Isomero"
+
+#: readelf.c:5020
+#, fuzzy
+msgid "Audit library"
+msgstr "Isomero"
+
+# svx/source\gallery2\galtheme.src:RID_GALLERYSTR_THEME_FLAGS.text
+#: readelf.c:5038 readelf.c:5066 readelf.c:5094
+#, fuzzy
+msgid "Flags:"
+msgstr "Amabendera"
+
+#: readelf.c:5041 readelf.c:5069 readelf.c:5096
+msgid " None\n"
+msgstr ""
+
+#: readelf.c:5217
+#, fuzzy, c-format
+msgid "Shared library: [%s]"
+msgstr "Isomero"
+
+#: readelf.c:5220
+#, fuzzy
+msgid " program interpreter"
+msgstr "Porogaramu"
+
+#: readelf.c:5224
+#, c-format
+msgid "Library soname: [%s]"
+msgstr ""
+
+#: readelf.c:5228
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr ""
+
+#: readelf.c:5232
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr ""
+
+#: readelf.c:5296
+#, fuzzy, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Igikoresho"
+
+#: readelf.c:5412
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %ld entries:\n"
+msgstr "Insobanuro Icyiciro Kirimo Ibyinjijwe"
+
+#: readelf.c:5415
+msgid " Addr: 0x"
+msgstr ""
+
+#: readelf.c:5417 readelf.c:5612
+#, c-format
+msgid " Offset: %#08lx Link: %lx (%s)\n"
+msgstr ""
+
+#: readelf.c:5424
+#, fuzzy
+msgid "version definition section"
+msgstr "Verisiyo Insobanuro Icyiciro"
+
+#: readelf.c:5450
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr ""
+
+#: readelf.c:5453
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr ""
+
+# basctl/source\basicide\moduldlg.src:RID_DLG_NEWLIB.RID_FT_NEWLIB.text
+#: readelf.c:5464
+#, fuzzy, c-format
+msgid "Name: %s\n"
+msgstr "Izina:"
+
+#: readelf.c:5466
+#, fuzzy, c-format
+msgid "Name index: %ld\n"
+msgstr "Umubarendanga"
+
+#: readelf.c:5481
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr ""
+
+#: readelf.c:5484
+#, fuzzy, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr "%#06x:Izina: Umubarendanga"
+
+#: readelf.c:5503
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %ld entries:\n"
+msgstr "Icyiciro Kirimo Ibyinjijwe"
+
+#: readelf.c:5506
+msgid " Addr: 0x"
+msgstr ""
+
+#: readelf.c:5508
+#, fuzzy, c-format
+msgid " Offset: %#08lx Link to section: %ld (%s)\n"
+msgstr "Kuri Icyiciro"
+
+#: readelf.c:5514
+#, fuzzy
+msgid "version need section"
+msgstr "Verisiyo Icyiciro"
+
+#: readelf.c:5536
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr ""
+
+# sc/source\ui\src\globstr.src:RID_GLOBSTR.STR_HFCMD_FILE.text
+#: readelf.c:5539
+#, fuzzy, c-format
+msgid " File: %s"
+msgstr "IDOSIYE"
+
+# sc/source\ui\src\globstr.src:RID_GLOBSTR.STR_HFCMD_FILE.text
+#: readelf.c:5541
+#, fuzzy, c-format
+msgid " File: %lx"
+msgstr "IDOSIYE"
+
+#: readelf.c:5543
+#, c-format
+msgid " Cnt: %d\n"
+msgstr ""
+
+# sc/source\core\src\compiler.src:RID_SC_FUNCTION_NAMES.SC_OPCODE_NO_NAME.text
+#: readelf.c:5561
+#, fuzzy, c-format
+msgid " %#06x: Name: %s"
+msgstr "%#06x:IZINA!"
+
+#: readelf.c:5564
+#, fuzzy, c-format
+msgid " %#06x: Name index: %lx"
+msgstr "%#06x:Umubarendanga"
+
+#: readelf.c:5567
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr ""
+
+#: readelf.c:5603
+#, fuzzy
+msgid "version string table"
+msgstr "Verisiyo Ikurikiranyanyuguti imbonerahamwe#"
+
+#: readelf.c:5607
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr "Ibimenyetso Icyiciro Kirimo Ibyinjijwe"
+
+#: readelf.c:5610
+#, fuzzy
+msgid " Addr: "
+msgstr "Aderesi"
+
+#: readelf.c:5622
+#, fuzzy
+msgid "version symbol data"
+msgstr "Verisiyo IKIMENYETSO Ibyatanzwe"
+
+#: readelf.c:5649
+#, fuzzy
+msgid " 0 (*local*) "
+msgstr "0"
+
+#: readelf.c:5653
+#, fuzzy
+msgid " 1 (*global*) "
+msgstr "1."
+
+#: readelf.c:5689 readelf.c:6129
+#, fuzzy
+msgid "version need"
+msgstr "Verisiyo"
+
+#: readelf.c:5699
+#, fuzzy
+msgid "version need aux (2)"
+msgstr "Verisiyo 2."
+
+#: readelf.c:5741 readelf.c:6192
+#, fuzzy
+msgid "version def"
+msgstr "Verisiyo"
+
+#: readelf.c:5760 readelf.c:6207
+#, fuzzy
+msgid "version def aux"
+msgstr "Verisiyo"
+
+#: readelf.c:5791
+#, fuzzy
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr "Verisiyo Ibisobanuro Byabonetse in iyi IDOSIYE"
+
+#: readelf.c:5923
+#, fuzzy
+msgid "Unable to read in dynamic data\n"
+msgstr "Kuri Gusoma in"
+
+#: readelf.c:5967
+#, fuzzy
+msgid "Unable to seek to start of dynamic information"
+msgstr "Kuri Kuri Gutangira Bya Ibisobanuro"
+
+#: readelf.c:5973
+#, fuzzy
+msgid "Failed to read in number of buckets\n"
+msgstr "Kuri Gusoma in Umubare Bya"
+
+#: readelf.c:5979
+#, fuzzy
+msgid "Failed to read in number of chains\n"
+msgstr "Kuri Gusoma in Umubare Bya"
+
+#: readelf.c:5999
+#, fuzzy
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr "imbonerahamwe# kugirango Ishusho"
+
+#: readelf.c:6001
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:6003
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:6048
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr "imbonerahamwe# Kirimo Ibyinjijwe"
+
+#: readelf.c:6052
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:6054
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:6101
+#, fuzzy
+msgid "version data"
+msgstr "Verisiyo Ibyatanzwe"
+
+#: readelf.c:6142
+#, fuzzy
+msgid "version need aux (3)"
+msgstr "Verisiyo 3."
+
+#: readelf.c:6167
+#, fuzzy
+msgid "bad dynamic symbol"
+msgstr "IKIMENYETSO"
+
+#: readelf.c:6230
+#, fuzzy
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr "IKIMENYETSO Ibisobanuro ni OYA Bihari kugirango Ibimenyetso"
+
+#: readelf.c:6242
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %d buckets):\n"
+msgstr "kugirango Urutonde Uburebure Igiteranyo Bya"
+
+#: readelf.c:6244
+#, fuzzy, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr "Bya Igiteranyo"
+
+# # @name NO_MEMORY
+# # @loc none
+#: readelf.c:6249 readelf.c:6268 readelf.c:9898 readelf.c:10090
+msgid "Out of memory"
+msgstr "Ububiko bwarenzwe"
+
+#: readelf.c:6317
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr "Ibisobanuro ku Nta- boneza Kirimo Ibyinjijwe"
+
+#: readelf.c:6320
+msgid " Num: Name BoundTo Flags\n"
+msgstr ""
+
+#: readelf.c:6373
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr "Bya Icyiciro"
+
+#: readelf.c:6396
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr "Oya Ibyatanzwe Kuri"
+
+#: readelf.c:6401
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr "Bya Icyiciro"
+
+#: readelf.c:6406
+#, fuzzy
+msgid "section data"
+msgstr "Icyiciro Ibyatanzwe"
+
+#: readelf.c:6555
+#, fuzzy
+msgid "badly formed extended line op encountered!\n"
+msgstr "Byongerewe... Umurongo"
+
+#: readelf.c:6562
+#, c-format
+msgid " Extended opcode %d: "
+msgstr ""
+
+#: readelf.c:6567
+#, fuzzy
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr "Impera Bya"
+
+#: readelf.c:6573
+#, fuzzy, c-format
+msgid "set Address to 0x%lx\n"
+msgstr "Gushyiraho Kuri"
+
+#: readelf.c:6578
+#, fuzzy
+msgid " define new File Table entry\n"
+msgstr "Kugaragaza... Gishya Idosiye"
+
+#: readelf.c:6579 readelf.c:6726
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr ""
+
+# basctl/source\basicide\basidesh.src:RID_IMGBTN_REMOVEWATCH.text
+#: readelf.c:6581
+#, fuzzy, c-format
+msgid " %d\t"
+msgstr "%d"
+
+# basctl/source\basicide\basidesh.src:RID_IMGBTN_REMOVEWATCH.text
+#: readelf.c:6584 readelf.c:6586 readelf.c:6588 readelf.c:6738 readelf.c:6740
+#: readelf.c:6742
+#, fuzzy, c-format
+msgid "%lu\t"
+msgstr "%lu"
+
+# basctl/source\basicide\basidesh.src:RID_IMGBTN_REMOVEWATCH.text
+#: readelf.c:6589
+#, fuzzy, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr "%s"
+
+#: readelf.c:6593
+#, fuzzy, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "Uburebure"
+
+#: readelf.c:6621
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr "Bya Kosora amakosa Ibigize Bya Icyiciro"
+
+#: readelf.c:6649
+#, fuzzy
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "Umurongo Ibisobanuro Kuri i Icyiciro ni"
+
+#: readelf.c:6658
+#, fuzzy
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "Verisiyo 2. Na 3. Umurongo Ibisobanuro ni"
+
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+#: readelf.c:6679
+#, fuzzy, c-format
+msgid " Length: %ld\n"
+msgstr "Uburebure"
+
+#: readelf.c:6680
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr ""
+
+#: readelf.c:6681
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr ""
+
+#: readelf.c:6682
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr ""
+
+#: readelf.c:6683
+#, fuzzy, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr "Agaciro Bya"
+
+#: readelf.c:6684
+#, fuzzy, c-format
+msgid " Line Base: %d\n"
+msgstr "Base"
+
+#: readelf.c:6685
+#, c-format
+msgid " Line Range: %d\n"
+msgstr ""
+
+#: readelf.c:6686
+#, fuzzy, c-format
+msgid " Opcode Base: %d\n"
+msgstr "Base"
+
+#: readelf.c:6695
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+
+#: readelf.c:6698
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr ""
+
+#: readelf.c:6704
+#, fuzzy
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr "ni ubusa"
+
+#: readelf.c:6707
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+
+# basctl/source\basicide\basidesh.src:RID_IMGBTN_REMOVEWATCH.text
+#: readelf.c:6711
+#, fuzzy, c-format
+msgid " %s\n"
+msgstr "%s"
+
+#: readelf.c:6722
+#, fuzzy
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr "Idosiye ni ubusa"
+
+#: readelf.c:6725
+#, fuzzy
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr "Idosiye"
+
+# basctl/source\basicide\basidesh.src:RID_IMGBTN_REMOVEWATCH.text
+#: readelf.c:6733
+#, fuzzy, c-format
+msgid " %d\t"
+msgstr "%d"
+
+# basctl/source\basicide\basidesh.src:RID_IMGBTN_REMOVEWATCH.text
+#: readelf.c:6744
+#, fuzzy, c-format
+msgid "%s\n"
+msgstr "%s"
+
+#. Now display the statements.
+#: readelf.c:6752
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+
+#: readelf.c:6768
+#, fuzzy, c-format
+msgid " Special opcode %d: advance Address by %d to 0x%lx"
+msgstr "ku Kuri"
+
+#: readelf.c:6772
+#, fuzzy, c-format
+msgid " and Line by %d to %d\n"
+msgstr "Na ku Kuri"
+
+#: readelf.c:6783
+msgid " Copy\n"
+msgstr ""
+
+#: readelf.c:6790
+#, fuzzy, c-format
+msgid " Advance PC by %d to %lx\n"
+msgstr "ku Kuri"
+
+#: readelf.c:6798
+#, fuzzy, c-format
+msgid " Advance Line by %d to %d\n"
+msgstr "ku Kuri"
+
+#: readelf.c:6805
+#, fuzzy, c-format
+msgid " Set File Name to entry %d in the File Name Table\n"
+msgstr "Idosiye Kuri Icyinjijwe in i Idosiye"
+
+#: readelf.c:6813
+#, fuzzy, c-format
+msgid " Set column to %d\n"
+msgstr "Inkingi Kuri"
+
+#: readelf.c:6820
+#, fuzzy, c-format
+msgid " Set is_stmt to %d\n"
+msgstr "Kuri"
+
+#: readelf.c:6825
+#, fuzzy
+msgid " Set basic block\n"
+msgstr "BASIC"
+
+#: readelf.c:6833
+#, fuzzy, c-format
+msgid " Advance PC by constant %d to 0x%lx\n"
+msgstr "ku Kuri"
+
+#: readelf.c:6841
+#, fuzzy, c-format
+msgid " Advance PC by fixed size amount %d to 0x%lx\n"
+msgstr "ku BIHAMYE Ingano Igiteranyo Kuri"
+
+#: readelf.c:6846
+#, fuzzy
+msgid " Set prologue_end to true\n"
+msgstr "Kuri"
+
+#: readelf.c:6850
+#, fuzzy
+msgid " Set epilogue_begin to true\n"
+msgstr "Kuri"
+
+#: readelf.c:6856
+#, fuzzy, c-format
+msgid " Set ISA to %d\n"
+msgstr "Kuri"
+
+#: readelf.c:6860
+#, fuzzy, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr "Na:"
+
+#: readelf.c:6891 readelf.c:7371 readelf.c:7443
+#, fuzzy, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr "Bya i Icyiciro"
+
+#: readelf.c:6931
+#, fuzzy
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "2. Na 3."
+
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+#: readelf.c:6938
+#, fuzzy, c-format
+msgid " Length: %ld\n"
+msgstr "Uburebure"
+
+# goodies/source\filter.vcl\eps\dlgeps.src:DLG_EXPORT_EPS.GRP_VERSION.text
+#: readelf.c:6940
+#, fuzzy, c-format
+msgid " Version: %d\n"
+msgstr "Verisiyo"
+
+#: readelf.c:6942
+#, fuzzy, c-format
+msgid " Offset into .debug_info section: %ld\n"
+msgstr "Icyiciro"
+
+#: readelf.c:6944
+#, fuzzy, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr "Bya Ubuso in Icyiciro"
+
+#: readelf.c:6947
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+
+#: readelf.c:7042
+#, fuzzy, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Agaciro"
+
+#: readelf.c:7156
+#, fuzzy, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Agaciro"
+
+#: readelf.c:7193
+#, fuzzy, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Agaciro"
+
+#: readelf.c:7392
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr ""
+
+#: readelf.c:7397
+msgid " DW_MACINFO_end_file\n"
+msgstr ""
+
+#: readelf.c:7405
+#, fuzzy, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr "Makoro"
+
+#: readelf.c:7413
+#, fuzzy, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr "Makoro"
+
+#: readelf.c:7424
+#, fuzzy, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr "Ikurikiranyanyuguti"
+
+#: readelf.c:7452
+msgid " Number TAG\n"
+msgstr ""
+
+#: readelf.c:7458
+#, c-format
+msgid " %ld %s [%s]\n"
+msgstr ""
+
+#: readelf.c:7461
+msgid "has children"
+msgstr ""
+
+#: readelf.c:7461
+#, fuzzy
+msgid "no children"
+msgstr "Oya"
+
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+#: readelf.c:7465
+#, fuzzy, c-format
+msgid " %-18s %s\n"
+msgstr "%-18s%s"
+
+#: readelf.c:7486
+#, fuzzy, c-format
+msgid " %lu byte block: "
+msgstr "%luBayite Funga"
+
+#: readelf.c:7814
+#, fuzzy
+msgid "(User defined location op)"
+msgstr "(Ahantu"
+
+#: readelf.c:7816
+#, fuzzy
+msgid "(Unknown location op)"
+msgstr "(Ahantu"
+
+#: readelf.c:7855
+#, fuzzy
+msgid "debug_loc section data"
+msgstr "Icyiciro Ibyatanzwe"
+
+#: readelf.c:7887
+#, fuzzy
+msgid ""
+"\n"
+"The .debug_loc section is empty.\n"
+msgstr "Icyiciro ni ubusa"
+
+#: readelf.c:7891
+#, fuzzy
+msgid ""
+"Contents of the .debug_loc section:\n"
+"\n"
+msgstr "Bya i Icyiciro"
+
+#: readelf.c:7892
+#, fuzzy
+msgid ""
+"\n"
+" Offset Begin End Expression\n"
+msgstr "Impera"
+
+#: readelf.c:7968
+#, fuzzy
+msgid "debug_str section data"
+msgstr "Icyiciro Ibyatanzwe"
+
+#: readelf.c:7987
+#, fuzzy
+msgid "<no .debug_str section>"
+msgstr "<Oya."
+
+#: readelf.c:7990
+#, fuzzy
+msgid "<offset is too big>"
+msgstr "<Nta- boneza ni"
+
+#: readelf.c:8009
+#, fuzzy
+msgid ""
+"\n"
+"The .debug_str section is empty.\n"
+msgstr "Icyiciro ni ubusa"
+
+#: readelf.c:8013
+#, fuzzy
+msgid ""
+"Contents of the .debug_str section:\n"
+"\n"
+msgstr "Bya i Icyiciro"
+
+#: readelf.c:8088
+#, fuzzy
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "Ikosa Verisiyo ni OYA 2. Cyangwa 3."
+
+#: readelf.c:8203
+#, fuzzy, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr "(BUZIGUYE Ikurikiranyanyuguti Nta- boneza"
+
+#: readelf.c:8212
+#, fuzzy, c-format
+msgid "Unrecognized form: %d\n"
+msgstr "Ifishi"
+
+#: readelf.c:8226
+#, fuzzy
+msgid "(not inlined)"
+msgstr "(OYA"
+
+#: readelf.c:8229
+msgid "(inlined)"
+msgstr ""
+
+#: readelf.c:8232
+#, fuzzy
+msgid "(declared as inline but ignored)"
+msgstr "(Nka Mumurongo"
+
+#: readelf.c:8235
+#, fuzzy
+msgid "(declared as inline and inlined)"
+msgstr "(Nka Mumurongo Na"
+
+#: readelf.c:8238
+#, fuzzy, c-format
+msgid " (Unknown inline attribute value: %lx)"
+msgstr "(Mumurongo Ikiranga Agaciro"
+
+#: readelf.c:8419 readelf.c:8646
+#, fuzzy, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr "Icyiciro Kirimo"
+
+#: readelf.c:8535
+#, c-format
+msgid " Compilation Unit @ %lx:\n"
+msgstr ""
+
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+#: readelf.c:8536
+#, fuzzy, c-format
+msgid " Length: %ld\n"
+msgstr "Uburebure"
+
+# goodies/source\filter.vcl\eps\dlgeps.src:DLG_EXPORT_EPS.GRP_VERSION.text
+#: readelf.c:8537
+#, fuzzy, c-format
+msgid " Version: %d\n"
+msgstr "Verisiyo"
+
+#: readelf.c:8538
+#, c-format
+msgid " Abbrev Offset: %ld\n"
+msgstr ""
+
+#: readelf.c:8539
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr ""
+
+#: readelf.c:8543
+#, fuzzy
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr "Verisiyo 2. Na 3. Kosora amakosa Ibisobanuro ni"
+
+#: readelf.c:8563
+#, fuzzy
+msgid "Unable to locate .debug_abbrev section!\n"
+msgstr "Kuri Icyiciro"
+
+#: readelf.c:8569
+#, fuzzy
+msgid "debug_abbrev section data"
+msgstr "Icyiciro Ibyatanzwe"
+
+#: readelf.c:8606
+#, fuzzy, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "Kuri Icyinjijwe in i Impine"
+
+#: readelf.c:8611
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr ""
+
+#: readelf.c:8691
+#, fuzzy
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "2. Na 3."
+
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+#: readelf.c:8695
+#, fuzzy, c-format
+msgid " Length: %ld\n"
+msgstr "Uburebure"
+
+# goodies/source\filter.vcl\eps\dlgeps.src:DLG_EXPORT_EPS.GRP_VERSION.text
+#: readelf.c:8696
+#, fuzzy, c-format
+msgid " Version: %d\n"
+msgstr "Verisiyo"
+
+#: readelf.c:8697
+#, c-format
+msgid " Offset into .debug_info: %lx\n"
+msgstr ""
+
+#: readelf.c:8698
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr ""
+
+#: readelf.c:8699
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr ""
+
+#: readelf.c:8701
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+
+#: readelf.c:8903
+#, fuzzy, c-format
+msgid "The section %s contains:\n"
+msgstr "Icyiciro Kirimo"
+
+#: readelf.c:9538
+#, fuzzy, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "i Kosora amakosa Ibigize Bya Icyiciro ni OYA"
+
+#: readelf.c:9634
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr "Oya Ibyatanzwe"
+
+#: readelf.c:9639 readelf.c:9701
+#, fuzzy
+msgid "debug section data"
+msgstr "Kosora amakosa Icyiciro Ibyatanzwe"
+
+#: readelf.c:9655
+#, fuzzy, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "Kosora amakosa Icyiciro"
+
+#: readelf.c:9729
+#, fuzzy
+msgid "Some sections were not dumped because they do not exist!\n"
+msgstr "Ibyatoranyijwe OYA OYA"
+
+#: readelf.c:9806 readelf.c:10170
+msgid "liblist"
+msgstr ""
+
+# basctl/source\basicide\moduldlg.src:RID_DLG_LIBS.RID_FL_OPTIONS.text
+#: readelf.c:9891
+#, fuzzy
+msgid "options"
+msgstr "Amahitamo"
+
+#: readelf.c:9922
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr "Kirimo Ibyinjijwe"
+
+#: readelf.c:10083
+#, fuzzy
+msgid "conflict list found without a dynamic symbol table"
+msgstr "Urutonde Byabonetse a IKIMENYETSO imbonerahamwe#"
+
+#: readelf.c:10101 readelf.c:10117
+msgid "conflict"
+msgstr ""
+
+#: readelf.c:10127
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %ld entries:\n"
+msgstr "Kirimo Ibyinjijwe"
+
+#: readelf.c:10129
+msgid " Num: Index Value Name"
+msgstr ""
+
+#: readelf.c:10178
+#, fuzzy
+msgid "liblist string table"
+msgstr "Ikurikiranyanyuguti imbonerahamwe#"
+
+#: readelf.c:10187
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr "Urutonde Icyiciro Kirimo Ibyinjijwe"
+
+#: readelf.c:10236
+#, fuzzy
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "Imiterere"
+
+#: readelf.c:10237
+#, fuzzy
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "Bihindagurika Akadomo"
+
+#: readelf.c:10238
+#, fuzzy
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "Imiterere"
+
+#: readelf.c:10239
+#, fuzzy
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "Igikorwa Imiterere"
+
+#: readelf.c:10240
+#, fuzzy
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "Imiterere"
+
+#: readelf.c:10241
+#, fuzzy
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "Imiterere"
+
+#: readelf.c:10242
+#, fuzzy
+msgid "NT_FPREGS (floating point registers)"
+msgstr "Bihindagurika Akadomo"
+
+#: readelf.c:10243
+#, fuzzy
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "Imiterere"
+
+#: readelf.c:10244
+#, fuzzy
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "Imiterere"
+
+#: readelf.c:10245
+#, fuzzy
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "Imiterere"
+
+#: readelf.c:10246
+#, fuzzy
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "Imiterere"
+
+#: readelf.c:10248 readelf.c:10272
+#, fuzzy, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "Impugukirwa Ubwoko"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:10262
+#, fuzzy
+msgid "NetBSD procinfo structure"
+msgstr "Imiterere"
+
+#: readelf.c:10289 readelf.c:10303
+#, fuzzy
+msgid "PT_GETREGS (reg structure)"
+msgstr "Imiterere"
+
+#: readelf.c:10291 readelf.c:10305
+#, fuzzy
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "Imiterere"
+
+#: readelf.c:10311
+#, c-format
+msgid "PT_FIRSTMACH+%d"
+msgstr ""
+
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Impress.xcs:....Print.Content.Note.text
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\WriterWeb.xcs:....Content.Display.Note.text
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Writer.xcs:....Content.Display.Note.text
+# #-#-#-#-# officecfg.pot (PACKAGE VERSION) #-#-#-#-#
+# officecfg/registry\schema\org\openoffice\Office\Writer.xcs:....Wizard.Agenda.Elements.Notes.text
+#: readelf.c:10365
+#, fuzzy
+msgid "notes"
+msgstr "Ibisobanuro"
+
+#: readelf.c:10371
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr "ku Nta- boneza Na: Uburebure"
+
+#: readelf.c:10373
+msgid " Owner\t\tData size\tDescription\n"
+msgstr ""
+
+#: readelf.c:10392
+#, fuzzy, c-format
+msgid "corrupt note found at offset %x into core notes\n"
+msgstr "Impugukirwa Byabonetse ku Nta- boneza"
+
+#: readelf.c:10394
+#, fuzzy, c-format
+msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
+msgstr "Ubwoko"
+
+#: readelf.c:10476
+#, fuzzy
+msgid "No note segments present in the core file.\n"
+msgstr "Impugukirwa Ingeri in i IDOSIYE"
+
+#: readelf.c:10560
+#, fuzzy
+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"
+msgstr "Urugero Bya Gushigikira kugirango Ibyatanzwe Ubwoko Na Gusoma Idosiye"
+
+#: readelf.c:10606
+#, fuzzy, c-format
+msgid "Cannot stat input file %s.\n"
+msgstr "Iyinjiza IDOSIYE"
+
+#: readelf.c:10613
+#, fuzzy, c-format
+msgid "Input file %s not found.\n"
+msgstr "IDOSIYE OYA Byabonetse"
+
+#: readelf.c:10619
+#, fuzzy, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s:Kuri Gusoma IDOSIYE"
+
+# sc/source\ui\src\globstr.src:RID_GLOBSTR.STR_HFCMD_FILE.text
+#: readelf.c:10633
+#, fuzzy, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr "IDOSIYE"
+
+#: rename.c:132
+#, fuzzy, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s:Gushyiraho Igihe"
+
+#. We have to clean up here.
+#: rename.c:171 rename.c:204
+#, fuzzy, c-format
+msgid "%s: rename: %s"
+msgstr "%s:Guhindura izina"
+
+#: rename.c:212
+#, c-format
+msgid "%s: simple_copy: %s"
+msgstr ""
+
+#: resbin.c:134
+#, fuzzy, c-format
+msgid "%s: not enough binary data"
+msgstr "%s:OYA Nyabibiri Ibyatanzwe"
+
+#: resbin.c:153
+#, fuzzy
+msgid "null terminated unicode string"
+msgstr "NTAGIHARI Inikode Ikurikiranyanyuguti"
+
+#: resbin.c:183 resbin.c:189
+msgid "resource ID"
+msgstr ""
+
+# 1316
+#: resbin.c:233
+#, fuzzy
+msgid "cursor"
+msgstr "indanga"
+
+#: resbin.c:267 resbin.c:274
+#, fuzzy
+msgid "menu header"
+msgstr "Ibikubiyemo Umutwempangano"
+
+#: resbin.c:284
+#, fuzzy
+msgid "menuex header"
+msgstr "Umutwempangano"
+
+#: resbin.c:288
+#, fuzzy
+msgid "menuex offset"
+msgstr "Nta- boneza"
+
+#: resbin.c:295
+#, fuzzy, c-format
+msgid "unsupported menu version %d"
+msgstr "Ibikubiyemo Verisiyo"
+
+#: resbin.c:323 resbin.c:338 resbin.c:404
+#, fuzzy
+msgid "menuitem header"
+msgstr "Umutwempangano"
+
+#: resbin.c:434
+msgid "menuitem"
+msgstr ""
+
+#: resbin.c:475 resbin.c:503
+#, fuzzy
+msgid "dialog header"
+msgstr "Ikiganiro Umutwempangano"
+
+#: resbin.c:493
+#, fuzzy, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "Verisiyo"
+
+#: resbin.c:538
+#, fuzzy
+msgid "dialog font point size"
+msgstr "Ikiganiro Intego- nyuguti Akadomo Ingano"
+
+#: resbin.c:546
+#, fuzzy
+msgid "dialogex font information"
+msgstr "Intego- nyuguti Ibisobanuro"
+
+#: resbin.c:572 resbin.c:590
+#, fuzzy
+msgid "dialog control"
+msgstr "Ikiganiro Igenzura"
+
+#: resbin.c:582
+#, fuzzy
+msgid "dialogex control"
+msgstr "Igenzura"
+
+#: resbin.c:611
+#, fuzzy
+msgid "dialog control end"
+msgstr "Ikiganiro Igenzura Impera"
+
+#: resbin.c:623
+#, fuzzy
+msgid "dialog control data"
+msgstr "Ikiganiro Igenzura Ibyatanzwe"
+
+#: resbin.c:666
+#, fuzzy
+msgid "stringtable string length"
+msgstr "Ikurikiranyanyuguti Uburebure"
+
+#: resbin.c:676
+#, fuzzy
+msgid "stringtable string"
+msgstr "Ikurikiranyanyuguti"
+
+#: resbin.c:709
+#, fuzzy
+msgid "fontdir header"
+msgstr "Umutwempangano"
+
+#: resbin.c:722
+msgid "fontdir"
+msgstr ""
+
+#: resbin.c:738
+#, fuzzy
+msgid "fontdir device name"
+msgstr "APAREYE Izina:"
+
+#: resbin.c:744
+#, fuzzy
+msgid "fontdir face name"
+msgstr "Izina:"
+
+#: resbin.c:787
+msgid "accelerator"
+msgstr ""
+
+#: resbin.c:851
+#, fuzzy
+msgid "group cursor header"
+msgstr "Itsinda indanga Umutwempangano"
+
+#: resbin.c:855
+#, fuzzy, c-format
+msgid "unexpected group cursor type %d"
+msgstr "Itsinda indanga Ubwoko"
+
+#: resbin.c:870
+#, fuzzy
+msgid "group cursor"
+msgstr "Itsinda indanga"
+
+#: resbin.c:909
+#, fuzzy
+msgid "group icon header"
+msgstr "Itsinda Agashushondanga Umutwempangano"
+
+#: resbin.c:913
+#, fuzzy, c-format
+msgid "unexpected group icon type %d"
+msgstr "Itsinda Agashushondanga Ubwoko"
+
+#: resbin.c:928
+#, fuzzy
+msgid "group icon"
+msgstr "Itsinda Agashushondanga"
+
+#: resbin.c:999 resbin.c:1218
+#, fuzzy
+msgid "unexpected version string"
+msgstr "Verisiyo Ikurikiranyanyuguti"
+
+#: resbin.c:1033
+#, fuzzy, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "Verisiyo Uburebure OYA BIHUYE Uburebure"
+
+#: resbin.c:1037
+#, fuzzy, c-format
+msgid "unexpected version type %d"
+msgstr "Verisiyo Ubwoko"
+
+#: resbin.c:1049
+#, fuzzy, c-format
+msgid "unexpected fixed version information length %d"
+msgstr "BIHAMYE Verisiyo Ibisobanuro Uburebure"
+
+#: resbin.c:1052
+#, fuzzy
+msgid "fixed version info"
+msgstr "BIHAMYE Verisiyo Ibisobanuro"
+
+#: resbin.c:1056
+#, fuzzy, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "BIHAMYE Verisiyo Isinya"
+
+#: resbin.c:1060
+#, fuzzy, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "BIHAMYE Verisiyo Ibisobanuro Verisiyo"
+
+#: resbin.c:1089
+#, fuzzy
+msgid "version var info"
+msgstr "Verisiyo VAR Ibisobanuro"
+
+#: resbin.c:1106
+#, fuzzy, c-format
+msgid "unexpected stringfileinfo value length %d"
+msgstr "Agaciro Uburebure"
+
+#: resbin.c:1116
+#, fuzzy, c-format
+msgid "unexpected version stringtable value length %d"
+msgstr "Verisiyo Agaciro Uburebure"
+
+#: resbin.c:1150
+#, fuzzy, c-format
+msgid "unexpected version string length %d != %d + %d"
+msgstr "Verisiyo Ikurikiranyanyuguti Uburebure"
+
+#: resbin.c:1161
+#, fuzzy, c-format
+msgid "unexpected version string length %d < %d"
+msgstr "Verisiyo Ikurikiranyanyuguti Uburebure"
+
+#: resbin.c:1178
+#, fuzzy, c-format
+msgid "unexpected varfileinfo value length %d"
+msgstr "Agaciro Uburebure"
+
+#: resbin.c:1197
+#, fuzzy
+msgid "version varfileinfo"
+msgstr "Verisiyo"
+
+#: resbin.c:1212
+#, fuzzy, c-format
+msgid "unexpected version value length %d"
+msgstr "Verisiyo Agaciro Uburebure"
+
+#: rescoff.c:128
+#, fuzzy
+msgid "filename required for COFF input"
+msgstr "Izina ry'idosiye: Bya ngombwa kugirango Iyinjiza"
+
+#: rescoff.c:145
+#, fuzzy, c-format
+msgid "%s: no resource section"
+msgstr "%s:Oya Icyiciro"
+
+#: rescoff.c:152
+#, fuzzy
+msgid "can't read resource section"
+msgstr "Gusoma Icyiciro"
+
+#: rescoff.c:178
+#, fuzzy, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s:%s:Aderesi Inyuma Bya"
+
+# svtools/source\dialogs\filedlg2.src:STR_FILEDLG_DIR.text
+#: rescoff.c:197
+#, fuzzy
+msgid "directory"
+msgstr "Ububiko"
+
+#: rescoff.c:225
+#, fuzzy
+msgid "named directory entry"
+msgstr "bushyinguro Icyinjijwe"
+
+#: rescoff.c:234
+#, fuzzy
+msgid "directory entry name"
+msgstr "bushyinguro Icyinjijwe Izina:"
+
+#: rescoff.c:254
+msgid "named subdirectory"
+msgstr ""
+
+#: rescoff.c:262
+msgid "named resource"
+msgstr ""
+
+#: rescoff.c:277
+#, fuzzy
+msgid "ID directory entry"
+msgstr "bushyinguro Icyinjijwe"
+
+#: rescoff.c:294
+msgid "ID subdirectory"
+msgstr ""
+
+#: rescoff.c:302
+msgid "ID resource"
+msgstr ""
+
+#: rescoff.c:328
+#, fuzzy
+msgid "resource type unknown"
+msgstr "Ubwoko Kitazwi"
+
+#: rescoff.c:331
+#, fuzzy
+msgid "data entry"
+msgstr "Ibyatanzwe Icyinjijwe"
+
+#: rescoff.c:339
+#, fuzzy
+msgid "resource data"
+msgstr "Ibyatanzwe"
+
+#: rescoff.c:344
+#, fuzzy
+msgid "resource data size"
+msgstr "Ibyatanzwe Ingano"
+
+#: rescoff.c:439
+#, fuzzy
+msgid "filename required for COFF output"
+msgstr "Izina ry'idosiye: Bya ngombwa kugirango Ibisohoka"
+
+#: rescoff.c:738
+#, fuzzy
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "Kubona Ubwoko"
+
+#: resrc.c:240 resrc.c:312
+#, fuzzy, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "Gufungura By'igihe gito IDOSIYE"
+
+#: resrc.c:246
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr ""
+
+#: resrc.c:262
+#, c-format
+msgid "%s %s: %s"
+msgstr ""
+
+#: resrc.c:308
+#, fuzzy, c-format
+msgid "can't execute `%s': %s"
+msgstr "Gukora"
+
+#: resrc.c:317
+#, fuzzy, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "By'igihe gito IDOSIYE Kuri Gusoma"
+
+#: resrc.c:324
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr ""
+
+#: resrc.c:326
+#, fuzzy
+msgid "Using popen to read preprocessor output\n"
+msgstr "Kuri Gusoma"
+
+#: resrc.c:369
+#, c-format
+msgid "Tried `%s'\n"
+msgstr ""
+
+#: resrc.c:380
+#, fuzzy, c-format
+msgid "Using `%s'\n"
+msgstr "ikoresha"
+
+#: resrc.c:542
+#, fuzzy, c-format
+msgid "%s:%d: %s\n"
+msgstr "%s:%d:%sCYOSE"
+
+#: resrc.c:551
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr ""
+
+#: resrc.c:608
+#, fuzzy, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s:Gusoma Bya"
+
+#: resrc.c:650 resrc.c:905 resrc.c:1178 resrc.c:1332
+#, fuzzy, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "Byanze ku Bitimapu IDOSIYE"
+
+#: resrc.c:703
+#, fuzzy, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "indanga IDOSIYE OYA indanga Ibyatanzwe"
+
+#: resrc.c:735 resrc.c:1049
+#, fuzzy, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s:Kuri Byanze"
+
+#: resrc.c:873
+#, fuzzy
+msgid "help ID requires DIALOGEX"
+msgstr "Ifashayobora"
+
+#: resrc.c:875
+#, fuzzy
+msgid "control data requires DIALOGEX"
+msgstr "Igenzura Ibyatanzwe"
+
+#: resrc.c:1018
+#, fuzzy, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "Agashushondanga IDOSIYE OYA Agashushondanga Ibyatanzwe"
+
+#: resrc.c:1537
+#, fuzzy, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "Gufungura kugirango Ibisohoka"
+
+#: size.c:86
+#, fuzzy
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr "i Bya Ibyatoranyijwe Mo Imbere Nyabibiri"
+
+#: size.c:87
+#, fuzzy
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr "Oya Iyinjiza IDOSIYE S a Inyuma ni"
+
+#: size.c:88
+#, fuzzy, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr "Amahitamo A Imiterere Ibisohoka IMISUSIRE Mburabuzi ni o D X radix 8 10 Imibare in NYACUMI Cyangwa T i Igiteranyo Intego i Nyabibiri IDOSIYE h Ifashayobora iyi v Verisiyo i"
+
+#: size.c:160
+#, fuzzy, c-format
+msgid "invalid argument to --format: %s"
+msgstr "Sibyo Kuri Imiterere"
+
+#: size.c:187
+#, fuzzy, c-format
+msgid "Invalid radix: %s\n"
+msgstr "radix"
+
+#: srconv.c:1953
+#, fuzzy
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "a Igikoresho IDOSIYE a Igikoresho"
+
+#: srconv.c:1954
+#, fuzzy
+msgid ""
+" The options are:\n"
+" -q --quick (Obsolete - ignoerd)\n"
+" -n --noprescan Do not perform a scan to convert commons into defs\n"
+" -d --debug Display information about what is being done\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr "Amahitamo Q N OYA a Gusikana Kuri GUHINDURA D Kosora amakosa Ibisobanuro Ibyerekeye ni h Ifashayobora iyi v Verisiyo i Verisiyo"
+
+#: srconv.c:2099
+#, fuzzy, c-format
+msgid "unable to open output file %s"
+msgstr "Kuri Gufungura Ibisohoka IDOSIYE"
+
+#: stabs.c:346 stabs.c:1755
+#, fuzzy
+msgid "numeric overflow"
+msgstr "Bikurikije umubare Byarenze urugero"
+
+#: stabs.c:357
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr ""
+
+#: stabs.c:367
+#, fuzzy, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Iburira"
+
+#: stabs.c:488
+#, fuzzy
+msgid "N_LBRAC not within function\n"
+msgstr "OYA muri"
+
+#: stabs.c:527
+msgid "Too many N_RBRACs\n"
+msgstr ""
+
+#: stabs.c:773
+#, fuzzy
+msgid "unknown C++ encoded name"
+msgstr "Kitazwi C Izina:"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1293
+#, fuzzy
+msgid "unrecognized cross reference type"
+msgstr "Kwambukiranya Indango Ubwoko"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1847
+#, fuzzy
+msgid "missing index type"
+msgstr "Ibuze Umubarendanga Ubwoko"
+
+#: stabs.c:2174
+#, fuzzy
+msgid "unknown virtual character for baseclass"
+msgstr "Kitazwi Kitaboneka Inyuguti kugirango"
+
+#: stabs.c:2192
+#, fuzzy
+msgid "unknown visibility character for baseclass"
+msgstr "Kitazwi Ukugaragara Inyuguti kugirango"
+
+#: stabs.c:2384
+#, fuzzy
+msgid "unnamed $vb type"
+msgstr "Kitiswe Ubwoko"
+
+#: stabs.c:2390
+#, fuzzy
+msgid "unrecognized C++ abbreviation"
+msgstr "C Impine"
+
+#: stabs.c:2470
+#, fuzzy
+msgid "unknown visibility character for field"
+msgstr "Kitazwi Ukugaragara Inyuguti kugirango Umwanya"
+
+#: stabs.c:2726
+#, fuzzy
+msgid "const/volatile indicator missing"
+msgstr "Ibuze"
+
+#: stabs.c:2967
+#, fuzzy, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "kugirango"
+
+#: stabs.c:3281
+msgid "Undefined N_EXCL"
+msgstr ""
+
+#: stabs.c:3369
+#, fuzzy, c-format
+msgid "Type file number %d out of range\n"
+msgstr "IDOSIYE Umubare Inyuma Bya"
+
+#: stabs.c:3374
+#, fuzzy, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Umubarendanga Umubare Inyuma Bya"
+
+#: stabs.c:3461
+#, fuzzy, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "Ubwoko"
+
+#: stabs.c:3762
+#, fuzzy, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "Izina:"
+
+#: stabs.c:3859
+#, fuzzy
+msgid "no argument types in mangled string\n"
+msgstr "Oya in"
+
+# sch/source\ui\app\strings.src:STR_INVALID_NUMBER.text
+#: strings.c:208
+#, fuzzy, c-format
+msgid "invalid number %s"
+msgstr "Umubare utari wo"
+
+#: strings.c:647
+#, fuzzy, c-format
+msgid "invalid integer argument %s"
+msgstr "Sibyo Umubare wuzuye"
+
+#: strings.c:658
+#, fuzzy
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr "Gicapika Ikurikiranyanyuguti in IDOSIYE S ku Mburabuzi"
+
+#: strings.c:659
+#, fuzzy
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,x,d} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr "Amahitamo a Byose i IDOSIYE OYA i Ibyatanzwe F Gucapa IDOSIYE Izina: i Izina: Bya i IDOSIYE Mbere N Bayite Umubare Gucapa Bya Umubare Umubare Inyuguti Mburabuzi 4. T radix o X D i Ahantu Bya i Ikurikiranyanyuguti in SHINGIRO 8 10 Cyangwa o Irihimbano kugirango radix Intego i Nyabibiri IDOSIYE E Imisobekere: S B L Inyuguti Ingano Na S 7 8 B L h Ifashayobora iyi v Verisiyo i Verisiyo"
+
+#: sysdump.c:768
+#, fuzzy
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "a Bya a Igikoresho"
+
+#: sysdump.c:769
+#, fuzzy
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr "Amahitamo h Ifashayobora iyi v Verisiyo i Verisiyo"
+
+#: sysdump.c:836
+#, fuzzy, c-format
+msgid "cannot open input file %s"
+msgstr "Gufungura Iyinjiza IDOSIYE"
+
+#: version.c:36
+msgid "Copyright 2002 Free Software Foundation, Inc.\n"
+msgstr ""
+
+#: version.c:37
+#, fuzzy
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License. This program has absolutely no warranty.\n"
+msgstr "Porogaramu ni Kigenga Gicurasi i Porogaramu Oya"
+
+#: windres.c:205
+#, fuzzy, c-format
+msgid "can't open %s `%s': %s"
+msgstr "Gufungura"
+
+#: windres.c:384
+#, fuzzy
+msgid ": expected to be a directory\n"
+msgstr ":Ikitezwe: Kuri a"
+
+#: windres.c:396
+#, fuzzy
+msgid ": expected to be a leaf\n"
+msgstr ":Ikitezwe: Kuri a"
+
+#: windres.c:405
+#, fuzzy, c-format
+msgid "%s: warning: "
+msgstr "%s:Iburira"
+
+#: windres.c:407
+#, fuzzy
+msgid ": duplicate value\n"
+msgstr ":Gusubiramo"
+
+#: windres.c:569
+#, fuzzy, c-format
+msgid "unknown format type `%s'"
+msgstr "Kitazwi Imiterere Ubwoko"
+
+#: windres.c:570
+#, fuzzy, c-format
+msgid "%s: supported formats:"
+msgstr "%s:Imiterere"
+
+#. Otherwise, we give up.
+#: windres.c:655
+#, fuzzy, c-format
+msgid "can not determine type of file `%s'; use the -I option"
+msgstr "OYA Ubwoko Bya IDOSIYE Gukoresha i Ihitamo"
+
+#: windres.c:669
+#, fuzzy, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Ihitamo S Iyinjiza IDOSIYE Ibisohoka IDOSIYE"
+
+#: windres.c:671
+#, fuzzy
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr "Amahitamo i Iyinjiza IDOSIYE Iyinjiza o Ibisohoka IDOSIYE Ibisohoka Iyinjiza Imiterere Imiterere Iyinjiza Ibisohoka Imiterere Imiterere Ibisohoka Intego Intego Porogaramu Kuri Gukoresha Kuri Gushyiramo bushyinguro Ryari: Kugaragaza... Ryari: U Ryari: v L Ururimi Ururimi Ryari: Gukoresha IDOSIYE a By'igihe gito IDOSIYE Bya Kuri i Oya Gukoresha IDOSIYE Mburabuzi"
+
+#: windres.c:687
+#, fuzzy
+msgid " --yydebug Turn on parser debugging\n"
+msgstr "--ku"
+
+#: windres.c:690
+#, fuzzy
+msgid ""
+" -r Ignored for compatibility with rc\n"
+" -h --help Print this help message\n"
+" -V --version Print version information\n"
+msgstr "-R kugirango Bihuye neza Na: h Ifashayobora iyi Ifashayobora V Verisiyo Verisiyo"
+
+#: windres.c:694
+#, fuzzy
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr "ni Bya Cyangwa Na ni Bivuye i IDOSIYE NIBA OYA A UMWE IDOSIYE Izina: ni Iyinjiza IDOSIYE Iyinjiza IDOSIYE ni Mburabuzi Ibisohoka IDOSIYE ni Mburabuzi"
+
+#: windres.c:833
+#, fuzzy
+msgid "invalid option -f\n"
+msgstr "Sibyo Ihitamo"
+
+#: windres.c:838
+#, fuzzy
+msgid "No filename following the -fo option.\n"
+msgstr "Izina ry'idosiye: i Ihitamo"
+
+#: windres.c:896
+#, fuzzy
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr "ni Bitemewe. kugirango Igenamiterere i Iyinjiza Imiterere Gukoresha"
+
+#: windres.c:1014
+#, fuzzy
+msgid "no resources"
+msgstr "Oya"
+
+#: wrstabs.c:395 wrstabs.c:2055
+#, fuzzy, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "Byanze"
+
+#: wrstabs.c:695
+#, fuzzy, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "Ingano"
+
+#: wrstabs.c:1495
+#, fuzzy, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s:Iburira Kitazwi Ingano kugirango Umwanya in"
diff --git a/binutils-2.24/binutils/po/sk.gmo b/binutils-2.24/binutils/po/sk.gmo
new file mode 100644
index 00000000..df4639ac
--- /dev/null
+++ b/binutils-2.24/binutils/po/sk.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/sk.po b/binutils-2.24/binutils/po/sk.po
new file mode 100644
index 00000000..f7dbe637
--- /dev/null
+++ b/binutils-2.24/binutils/po/sk.po
@@ -0,0 +1,6306 @@
+# Slovak translation for binutils
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Ivan Masár <helix84@centrum.sk>, 2007, 2008, 2009.
+#
+# based on launchpad translation from 30.8.2007 by Jozef KáÄer, analytik
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.18.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2008-09-09 15:56+0930\n"
+"PO-Revision-Date: 2009-02-19 15:33+0100\n"
+"Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
+"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Rosetta-Export-Date: 2007-08-30 01:38:26+0000\n"
+
+#: addr2line.c:76
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Použitie: %s [voľb(a/y)] [adres(a/y)]\n"
+
+#: addr2line.c:77
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " PreviesÅ¥ adresy na páry Äísiel riadkov/názvov súborov.\n"
+
+#: addr2line.c:78
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Ak nie sú žiadne adresy urÄené z príkazového riadka, budú sa ÄítaÅ¥ zo stdin\n"
+
+#: 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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Voľby sú:\n"
+" @<súbor> NaÄítaÅ¥ voľby zo <súboru>\n"
+" -b --target=<bfdname> nastaviť binárny formát súboru\n"
+" -e --exe=<executable> Nastaviť názov vstupného súboru (štandardne a.out)\n"
+" -i --inlines Rozvinúť inline funkcie\n"
+" -j --section=<názov> NaÄítaÅ¥ ofsety relatívne vzhľadom na sekciu namiesto adries\n"
+" -s --basenames Odstrániť názvy adresárov\n"
+" -f --functions Zobraziť názvy funkcií\n"
+" -C --demangle[=style] Formátovať výpis názvov funkcií\n"
+" -h --help Zobraziť tohto pomocníka\n"
+" -v --version Zobraziť verziu programu\n"
+"\n"
+
+#: addr2line.c:94 ar.c:274 coffdump.c:469 dlltool.c:3173 dllwrap.c:510
+#: nlmconv.c:1113 objcopy.c:513 objcopy.c:548 readelf.c:2868 size.c:99
+#: srconv.c:1741 strings.c:664 sysdump.c:654 windmc.c:233 windres.c:698
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "Hlásiť chyby na %s\n"
+
+#: addr2line.c:281
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: nepodarilo sa získať adresu z archívu"
+
+#: addr2line.c:298
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr "%s: nepodarilo sa nájsť sekciu %s"
+
+#: addr2line.c:364 nm.c:1542 objdump.c:3223
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "neznámy štýl opravy „%s“"
+
+#: ar.c:212
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "žíadny záznam %s v archíve\n"
+
+#: ar.c:228
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+msgstr "Použítie: %s [voľby emulácie] [-]{dmpqrstx}[abcfilNoPsSuvV] [názov-Älena] [poÄet] názov archívu...\n"
+
+#: ar.c:231
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<mri-script]\n"
+
+#: ar.c:232
+#, c-format
+msgid " commands:\n"
+msgstr " príkazy:\n"
+
+#: ar.c:233
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - odstrániť súbor(y) z archívu\n"
+
+#: ar.c:234
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - posunúť súbor(y) v archíve\n"
+
+#: ar.c:235
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - vypísať súbor(y) nájdené v archíve\n"
+
+#: ar.c:236
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - rýchlo pripojiť súbor(y) k archívu\n"
+
+#: ar.c:237
+#, c-format
+msgid " r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
+msgstr " r[ab][f][u] - nahradiť existujúci alebo vložiť nový súbor(y) do archívu\n"
+
+#: ar.c:238
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - zobraziť obsah archívu\n"
+
+#: ar.c:239
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - rozbaliť súbor(y) z archívu\n"
+
+#: ar.c:240
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " modifikátory Å¡pecifické pre urÄitý príkaz :\n"
+
+#: ar.c:241
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - vložiÅ¥ súbor(y) za [názov-Älena]\n"
+
+#: ar.c:242
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - vložiÅ¥ súbor(y) pred [názov-Älena] (rovnaké ako [i])\n"
+
+#: ar.c:243
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - použiÅ¥ inÅ¡tanciu [poÄet] názvu\n"
+
+#: ar.c:244
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - skrátiť vložené názvy súborov\n"
+
+#: ar.c:245
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - použiť celú cestu pri zhode\n"
+
+#: ar.c:246
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - zachovať pôvodné dátumy\n"
+
+#: ar.c:247
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - nahradiť iba tie súbory, ktoré sú novšie než aktuálny obsah súboru\n"
+
+#: ar.c:248
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " všeobecné modifikátory:\n"
+
+#: ar.c:249
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - neupozorňovať ak sa knižnica musela vytvoriť\n"
+
+#: ar.c:250
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - vytvoriť index archívu (porovnaj s ranlib)\n"
+
+#: ar.c:251
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - nevytvárať symbolickú tabuľku\n"
+
+#: ar.c:252
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr " [T] - urobiť riedky archív\n"
+
+#: ar.c:253
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - plný výpis\n"
+
+#: ar.c:254
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - zobraziÅ¥ Äíslo verzie\n"
+
+#: ar.c:255
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr " @<súbor> - ÄítaÅ¥ voľby z <súboru>\n"
+
+#: ar.c:262
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Použitie: %s [voľby] archív\n"
+
+#: ar.c:263
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " Vygenerovať index pre rýchly prístup k archívom\n"
+
+#: ar.c:264
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+" The options are:\n"
+" @<súbor> naÄítaÅ¥ voľby zo <súboru>\n"
+" -t aktualizovaÅ¥ Äasovú známku mapy symbolov archívu\n"
+" -h --help vypísať túto správu pomocníka\n"
+" -v --version vypísať informácie o verzii\n"
+
+#: ar.c:499
+msgid "two different operation options specified"
+msgstr "boli Å¡pecifikované dve odliÅ¡né operaÄné voľby"
+
+#: ar.c:577
+#, c-format
+msgid "illegal option -- %c"
+msgstr "neplatná voľba -- %c"
+
+#: ar.c:620
+msgid "no operation specified"
+msgstr "nebola urÄená žiadna operácia"
+
+#: ar.c:623
+msgid "`u' is only meaningful with the `r' option."
+msgstr "„u“ má zmysel iba s voľbou „r“"
+
+#: ar.c:631
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "„N“ má zmysel iba s voľbami „x“ a „d“."
+
+#: ar.c:634
+msgid "Value for `N' must be positive."
+msgstr "Hodnota pre „N“ musí byť kladná."
+
+#: ar.c:646
+msgid "`x' cannot be used on thin archives."
+msgstr "„x“ nemožno použiť na riedkych archívoch."
+
+#: ar.c:687
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "vnútorná chyba -- táto voľba nie je implementovaná"
+
+#: ar.c:756
+#, c-format
+msgid "creating %s"
+msgstr "vytvára sa %s"
+
+#: ar.c:805 ar.c:860 ar.c:1185 objcopy.c:1912
+#, c-format
+msgid "internal stat error on %s"
+msgstr "vnútorná stat chyba na %s"
+
+#: ar.c:809
+#, c-format
+msgid ""
+"\n"
+"<%s>\n"
+"\n"
+msgstr ""
+"\n"
+"<%s>\n"
+"\n"
+
+#: ar.c:825 ar.c:893
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s nie je platný archív"
+
+#: ar.c:1090
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "Žiadny Älen s názvom „%s“\n"
+
+#: ar.c:1140
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "žiadny záznam %s v archíve %s!"
+
+#: ar.c:1279
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: žiadna mapa archívu pre aktualizáciu"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "Žiadny záznam %s v archíve.\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "Nemožno otvoriť súbor %s\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: Nemožno otvoriť výstupný archív %s\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: Nemožno otvoriť vstupný archív %s\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: súbor %s nie je archív\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: nebol eÅ¡te urÄený žiadny výstupný archív\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s žiadny výstupný archív na otvorenie\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: nemožno otvoriť súbor %s\n"
+
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: nemožno nájsť súbor modulu %s\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "SúÄasne otvorený archív je %s\n"
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: žiadny otvorený archív\n"
+
+#: bin2c.c:59
+#, c-format
+msgid "Usage: %s < input_file > output_file\n"
+msgstr "Použitie: %s <VSTUP_SÚBOR> VÃSTUP_SÚBOR\n"
+
+#: bin2c.c:60
+#, c-format
+msgid "Prints bytes from stdin in hex format.\n"
+msgstr "Vypíše bajtu zo štand. vstupu v hexadecimálnom formáte.\n"
+
+#: binemul.c:38
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " Neboli urÄené žiadne emulaÄné voľby\n"
+
+#. Macros for common output.
+#: binemul.h:43
+#, c-format
+msgid " emulation options: \n"
+msgstr " emulaÄné voľby: \n"
+
+#: bucomm.c:157
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "nemožno nastaviť štandardný BFD cieľ na „%s“: %s"
+
+#: bucomm.c:168
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: Zhodujúce sa formáty:"
+
+#: bucomm.c:183
+#, c-format
+msgid "Supported targets:"
+msgstr "Podporované ciele:"
+
+#: bucomm.c:185
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: podporované ciele:"
+
+#: bucomm.c:202
+#, c-format
+msgid "Supported architectures:"
+msgstr "Podporované architektúry:"
+
+#: bucomm.c:204
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: podporované architektúry:"
+
+#: bucomm.c:398
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "Verzia BFD hlaviÄky súboru %s\n"
+
+#: bucomm.c:547
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: nesprávane Äíslo: %s"
+
+#: bucomm.c:564 strings.c:410
+#, c-format
+msgid "'%s': No such file"
+msgstr "„%s“: súbor neexistuje"
+
+#: bucomm.c:566 strings.c:412
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "Upozornenie: nemožno nájsť „%s“. dôvod: %s"
+
+#: bucomm.c:570
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "Upozornenie: „%s“ nie je bežný súbor"
+
+#: coffdump.c:106
+#, c-format
+msgid "#lines %d "
+msgstr "#riadky %d "
+
+#: coffdump.c:460 sysdump.c:647
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Použitie: %s [voľby] vstupný-súbor\n"
+
+#: coffdump.c:461
+#, c-format
+msgid " Print a human readable interpretation of a SYSROFF object file\n"
+msgstr " ZobraziÅ¥ Äitateľnú interpretáciu objektového súboru SYSFOFF\n"
+
+#: coffdump.c:462
+#, 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 ""
+" Voľby sú:\n"
+" @<file> Čítať voľby z <file>\n"
+" -h --help Zobraziť túto informáciu\n"
+" -v --version Zobraziť verziu programu\n"
+"\n"
+
+#: coffdump.c:531 srconv.c:1831 sysdump.c:711
+msgid "no input file specified"
+msgstr "nebol urÄený žiadny vstupný súbor"
+
+#: cxxfilt.c:119 nm.c:256 objdump.c:241
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Hlásiť chyby na %s.\n"
+
+#: debug.c:647
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: žiadny súÄasný súbor"
+
+#: debug.c:726
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: žiadne volanie debug_set_filename"
+
+#: debug.c:782
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: žiadne volanie debug_set_filename"
+
+#: debug.c:834
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: žiadna súÄasná funkcia"
+
+#: debug.c:866
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: žiadna súÄasná funkcia"
+
+#: debug.c:872
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: niektoré bloky neboli uzavreté"
+
+#: debug.c:900
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: žiadny súÄasný blok"
+
+#: debug.c:936
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: žiadny súÄasný blok"
+
+#: debug.c:943
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: pokus o zatvorenie bloku najvyššej úrovne"
+
+#: debug.c:966
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: žiadna súÄasná jednotka"
+
+#. FIXME
+#: debug.c:1019
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: nie je implementované"
+
+#. FIXME
+#: debug.c:1030
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: nie je implementované"
+
+#. FIXME.
+#: debug.c:1114
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: nie je implementované"
+
+#: debug.c:1136
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: žiadny súÄasný súbor"
+
+#: debug.c:1664
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: nepodporovaný druh"
+
+#: debug.c:1841
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: žiadny súÄasný súbor"
+
+#: debug.c:1886
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: žiadny súÄasný súbor"
+
+#: debug.c:1894
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: pokus o extra tag"
+
+#: debug.c:1931
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Upozornenie: mení sa veľkosť typu z %d na %d\n"
+
+#: debug.c:1953
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: žiadna súÄasná kompilaÄná jednotka"
+
+#: debug.c:2056
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: cyklická ladiaca informácia pre %s\n"
+
+#: debug.c:2483
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: objavený neplatný typ"
+
+#: dlltool.c:797 dlltool.c:823 dlltool.c:854
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "Vnútorná chyba: Neznámy typ architektúry: %d"
+
+#: dlltool.c:890
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Nemožno otvoriť def súbor: %s"
+
+#: dlltool.c:895
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Spracováva sa def súbor: %s"
+
+#: dlltool.c:899
+msgid "Processed def file"
+msgstr "def súbor spracovaný"
+
+#: dlltool.c:923
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Syntaktická chyba v def súbore %s:%d"
+
+#: dlltool.c:958
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr "%s: Komponenty cesty boli odrezané z názvu obrázka, „%s“."
+
+#: dlltool.c:967
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "NÃZOV: %s báza: %x"
+
+#: dlltool.c:970 dlltool.c:986
+msgid "Can't have LIBRARY and NAME"
+msgstr "Nemožno maÅ¥ KNIŽNICU a NÃZOV"
+
+#: dlltool.c:983
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "KNIŽNICA: %s báza: %x"
+
+#: dlltool.c:1219 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "ÄakaÅ¥: %s"
+
+#: dlltool.c:1224 dllwrap.c:410 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "podproces obdržal fatálny signá %d"
+
+#: dlltool.c:1230 dllwrap.c:417 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s ukonÄený so stavom %d"
+
+#: dlltool.c:1261
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "Naťahujú sa informácie z %s sekcie v %s"
+
+#: dlltool.c:1386
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Vynecháva sa symbol: %s"
+
+#: dlltool.c:1475 dlltool.c:1486 nm.c:992 nm.c:1003
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: žiadne symboly"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1512
+#, c-format
+msgid "Done reading %s"
+msgstr "Čítanie %s ukonÄené"
+
+#: dlltool.c:1522
+#, c-format
+msgid "Unable to open object file: %s"
+msgstr "Nemožno otvoriť objektový súbor: %s"
+
+#: dlltool.c:1525
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Prebieha skenovanie objektového súboru %s"
+
+#: dlltool.c:1540
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "Nemožno vytvoriť mcore-elf dll zo súboru archívu: %s"
+
+#: dlltool.c:1626
+msgid "Adding exports to output file"
+msgstr "Pridávanie exportov do výstupného súboru"
+
+#: dlltool.c:1674
+msgid "Added exports to output file"
+msgstr "Exporty boli pridané do výstupného súboru"
+
+#: dlltool.c:1813
+#, c-format
+msgid "Generating export file: %s"
+msgstr "Generuje sa súbor exportu: %s"
+
+#: dlltool.c:1818
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Nemožno otvoriÅ¥ doÄasný súbor assembleru: %s"
+
+#: dlltool.c:1821
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "DoÄasný súbor otvorený: %s"
+
+#: dlltool.c:2043
+msgid "Generated exports file"
+msgstr "Export súbor vygenerovaný"
+
+#: dlltool.c:2251
+#, c-format
+msgid "bfd_open failed open stub file: %s"
+msgstr "bfd_open zlyhal pri otváraní testovacieho súboru: %s"
+
+#: dlltool.c:2254
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "Vytváram testovací súbor: %s"
+
+#: dlltool.c:2672
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "nepodarilo sa otvoriÅ¥ doÄasný súbor hlaviÄky: %s"
+
+#: dlltool.c:2734
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "nepodarilo sa otvoriÅ¥ doÄasný súbor zápätia: %s"
+
+#: dlltool.c:2809
+#, c-format
+msgid "Can't open .lib file: %s"
+msgstr "Nemožno otvoriť .lib súbor: %s"
+
+#: dlltool.c:2812
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Vytvára sa súbor knižnice: %s"
+
+#: dlltool.c:2896 dlltool.c:2902
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "nemožno odstrániť %s:%s"
+
+#: dlltool.c:2907
+msgid "Created lib file"
+msgstr "lib súbor vytvorený"
+
+#: dlltool.c:2986
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Upozornenie, ignoruje sa duplikátny EXPORT %s %d,%d"
+
+#: dlltool.c:2992
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr "Chyba, duplicitný EXPORT s ordinálami: %s"
+
+#: dlltool.c:3097
+msgid "Processing definitions"
+msgstr "Spracovávajú sa definície"
+
+#: dlltool.c:3129
+msgid "Processed definitions"
+msgstr "Definície spracované"
+
+#. xgetext:c-format
+#: dlltool.c:3136 dllwrap.c:471
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Použitie %s <voľb(a/y)> <objektový-súbor(y)>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3138
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <architektúra> Vytvoriť ako DLL pre <architektúra>. [štandardne: %s]\n"
+
+#: dlltool.c:3139
+#, c-format
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr " možná <architektúra>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+
+#: dlltool.c:3140
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <výstupný_názov> Vygenerovať export súbor.\n"
+
+#: dlltool.c:3141
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <výstupný_súbor> Vygenerovať knižnicu rozhrania.\n"
+
+#: dlltool.c:3142
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect Pridať dll indirekty do export súboru.\n"
+
+#: dlltool.c:3143
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr " -D --dllname <názov> Názov vstupného dll pre vloženie do knižnice rozhrania.\n"
+
+#: dlltool.c:3144
+#, c-format
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr " -d --input-def <deffile> Názov .def súboru, v ktorom sa má ÄitaÅ¥.\n"
+
+#: dlltool.c:3145
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <deffile> Názov .def súboru, ktorý sa má vytvoriť.\n"
+
+#: dlltool.c:3146
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Exportovať všetky symboly do .def\n"
+
+#: dlltool.c:3147
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols Exportovať iba uvedené symboly\n"
+
+#: dlltool.c:3148
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <zoznam> Neexportovať <zoznam>\n"
+
+#: dlltool.c:3149
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes VyÄistiÅ¥ Å¡tandardné exclude symboly\n"
+
+#: dlltool.c:3150
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <bázový_súbor> Čítať linkerom vygenerovaný bázový súbor.\n"
+
+#: dlltool.c:3151
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 Negenerovať sekciu idata$4.\n"
+
+#: dlltool.c:3152
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 Negenerovať sekciu idata$5.\n"
+
+#: dlltool.c:3153
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr " -U --add-underscore Pridá znak podÄiarknutia ku vÅ¡etkým symbolom knižnice rozhrania.\n"
+
+#: dlltool.c:3154
+#, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr " --add-stdcall-underscore Pridá znak podÄiarknutia ku vÅ¡etkým symbolom stdcall knižnice rozhrania.\n"
+
+#: dlltool.c:3155
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at UkonÄiÅ¥ @<n> z exportovaných názvov.\n"
+
+#: dlltool.c:3156
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Pridať aliasy bez @<n>.\n"
+
+#: dlltool.c:3157
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -p --ext-prefix-alias <prefix> Pridať aliasy s <prefix>om.\n"
+
+#: dlltool.c:3158
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <názov> Použiť <názov> pre assembler.\n"
+
+#: dlltool.c:3159
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <príznaky> Poslať <príznaky> do assembleru.\n"
+
+#: dlltool.c:3160
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib Vytvoriť spätne kompatibilnú importovaciu knižnicu.\n"
+
+#: dlltool.c:3161
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete PonechaÅ¥ doÄasné súbory (opakovaÅ¥ pre extra zachovanie)\n"
+
+#: dlltool.c:3162
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr " -t --temp-prefix <prefix> PoužiÅ¥ <prefix> pre vytvorenie názvov doÄasných súborov.\n"
+
+#: dlltool.c:3163
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose Plný výpis.\n"
+
+#: dlltool.c:3164
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version Zobraziť verziu programu.\n"
+
+#: dlltool.c:3165
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help Zobraziť túto informáciu.\n"
+
+#: dlltool.c:3166
+#, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr " @<file> Čítať voľby z <file>.\n"
+
+#: dlltool.c:3168
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr " -M --mcore-olf <výst_názov> Spracovať objektové súbory mcore-elf do <výst_názvu>.\n"
+
+#: dlltool.c:3169
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <názov> Použiť <názov> ako linker.\n"
+
+#: dlltool.c:3170
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <príznaky> Poslať <príznaky> do linkera.\n"
+
+#: dlltool.c:3293
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr "Komponenty cesty odrezané z dllname, „%s“."
+
+#: dlltool.c:3338
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Nemožno otvoriť bázový-súbor: %s"
+
+#: dlltool.c:3370
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Nepodporovaná architektúra „%s“"
+
+#: dlltool.c:3474 dllwrap.c:201
+#, c-format
+msgid "Tried file: %s"
+msgstr "Pokus o súbor: %s"
+
+#: dlltool.c:3481 dllwrap.c:208
+#, c-format
+msgid "Using file: %s"
+msgstr "Používa sa súbor: %s"
+
+#: dllwrap.c:291
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "Ponecháva sa doÄasného bázového súboru: %s"
+
+#: dllwrap.c:293
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "Odstraňuje sa doÄasný bázový súbor %s"
+
+#: dllwrap.c:307
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "Ponecháva sa doÄasný exp súbor %s"
+
+#: dllwrap.c:309
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "Odstraňuje sa doÄasný exp súbor %s"
+
+#: dllwrap.c:322
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Ponecháva sa doÄasný def súbor %s"
+
+#: dllwrap.c:324
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "Odstraňuje sa doÄasný def súbor %s"
+
+#: dllwrap.c:472
+#, c-format
+msgid " Generic options:\n"
+msgstr " Druhové voľby:\n"
+
+#: dllwrap.c:473
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr " @<file> Čítať voľby z <file>\n"
+
+#: dllwrap.c:474
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q Pracovať potichu\n"
+
+#: dllwrap.c:475
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Plný výpis\n"
+
+#: dllwrap.c:476
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version Vypísať dllwrap verziu\n"
+
+#: dllwrap.c:477
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <výstupný_názov> Synonymum pre --output-lib\n"
+
+#: dllwrap.c:478
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Voľby pre %s:\n"
+
+#: dllwrap.c:479
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <ovládaÄ> Å tandardný je „gcc“\n"
+
+#: dllwrap.c:480
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <príznaky> Preťažiť štandardné ld príznaky\n"
+
+#: dllwrap.c:481
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dlltool> Štandarne „dlltool“\n"
+
+#: dllwrap.c:482
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <položka> UrÄiÅ¥ alternatívne miesto DLL položky\n"
+
+#: dllwrap.c:483
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <báza> UrÄiÅ¥ bázovú adresu obrázku\n"
+
+#: dllwrap.c:484
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <architektúra> i386-cygwin32 alebo i386-mingw32\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run ZobraziÅ¥, Äo treba spustiÅ¥\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Vytvoriť Mingw DLL\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " Voľby posielané do DLLTOOL:\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <architektúra>\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <výstupný_názov> Vygenerovať export súbor.\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <výstupný_názov> Vygenerovať vstupnú knižnicu.\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect Pridať dll indirekty do export súboru.\n"
+
+#: dllwrap.c:492
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <názov> Názov vstupnej dll pre vloženie do výstupnej knižnice.\n"
+
+#: dllwrap.c:493
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <deffile>Názov vstupného .def súboru\n"
+
+#: dllwrap.c:494
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <deffile> Názov výstupného .def súboru\n"
+
+#: dllwrap.c:495
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Exportovať všetky symboly do .def\n"
+
+#: dllwrap.c:496
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols Exportovať iba .drectve symboly\n"
+
+#: dllwrap.c:497
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <zoznam> Vynechať <zoznam> z .def\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes Vymazať štandardné exclude symboly\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr " --base-file <bázový_súbor> Čítať linkerom vygenerovaný bázový súbor\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 Negenerovať idata$4 sekciu\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 Negenerovať idata$5 sekciu\n"
+
+#: dllwrap.c:502
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U Pridať podtržníky do .lib\n"
+
+#: dllwrap.c:503
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k UkonÄiÅ¥ @<n> z exportovaných názvov\n"
+
+#: dllwrap.c:504
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-atdcall-alias Pridať aliasy bez @<n>\n"
+
+#: dllwrap.c:505
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <názov> Použiť <názov> pre assembler\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete PonechaÅ¥ doÄasné súbory.\n"
+
+#: dllwrap.c:507
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " Zbytok je poslaný nezmenený ovláadaÄu jazyka\n"
+
+#: dllwrap.c:781
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "Je nutné uviesť najmenej jednu z volieb -o alebo --dllname"
+
+#: dllwrap.c:810
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"nebol poskytnutý definiÄný export súbor.\n"
+"Jeden sa vytvára, ale nemusí to byÅ¥ to, Äo chcete"
+
+#: dllwrap.c:969
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "DLLTOOL názov : %s\n"
+
+#: dllwrap.c:970
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "DLLTOOL voľby : %s\n"
+
+#: dllwrap.c:971
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "DRIVER názov : %s\n"
+
+#: dllwrap.c:972
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "DRIVER voľby : %s\n"
+
+#: dwarf.c:98 dwarf.c:142 readelf.c:370 readelf.c:526
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Nespracovateľná dĺžka dát %d\n"
+
+#: dwarf.c:267 dwarf.c:2563
+msgid "badly formed extended line op encountered!\n"
+msgstr "narazilo sa na zle formovaný rozšírený operátor riadka\n"
+
+#: dwarf.c:274
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " Rozšírený opkód %d: "
+
+#: dwarf.c:279
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Koniec sekvencie\n"
+"\n"
+
+#: dwarf.c:285
+#, c-format
+msgid "set Address to 0x%lx\n"
+msgstr "nastaviť Adresu na 0x%lx\n"
+
+#: dwarf.c:290
+#, c-format
+msgid " define new File Table entry\n"
+msgstr " definovať novú položku Tabuľky súboru\n"
+
+#: dwarf.c:291 dwarf.c:2178
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Položka\tAdresár\tČas\tVeľkosť\tNázov\n"
+
+#: dwarf.c:293
+#, c-format
+msgid " %d\t"
+msgstr " %d\t"
+
+#: dwarf.c:296 dwarf.c:298 dwarf.c:300 dwarf.c:2190 dwarf.c:2192 dwarf.c:2194
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
+
+#: dwarf.c:301
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:342
+#, c-format
+msgid "user defined: length %d\n"
+msgstr "Používateľom definované: dĺžka %d\n"
+
+#: dwarf.c:344 dwarf.c:2594
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "UNKNOWN: dĺžka %d\n"
+
+#: dwarf.c:357
+msgid "<no .debug_str section>"
+msgstr "<žiadna .debug_str sekcia>"
+
+#: dwarf.c:363
+#, c-format
+msgid "DW_FORM_strp offset too big: %lx\n"
+msgstr "DW_FORM_strp offset priveľký: %lx\n"
+
+#: dwarf.c:364
+msgid "<offset is too big>"
+msgstr "<offset je priveľký>"
+
+#: dwarf.c:597
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Neznáma TAG hodnota: %lx"
+
+#: dwarf.c:633
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Neznáma FORM hodnota: %lx"
+
+#: dwarf.c:642
+#, c-format
+msgid " %lu byte block: "
+msgstr " %lu bajtový blok: "
+
+#: dwarf.c:1031
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Užívateľom definovaný operátor umiestnenia)"
+
+#: dwarf.c:1033
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Neznámy operátor umiestnenia)"
+
+#: dwarf.c:1081
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "Vnútorná chyba: DWARF verzia nie je 2 ani 3.\n"
+
+#: dwarf.c:1180
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr "DW_FORM_data8 nie je podporovaný keÄ sizeof (unsigned long) != 8\n"
+
+#: dwarf.c:1229
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (nepriamy reťazec, offset: 0x%lx): %s"
+
+#: dwarf.c:1238
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Nerozoznaná forma: %lu\n"
+
+#: dwarf.c:1322
+#, c-format
+msgid "(not inlined)"
+msgstr "(ako inline)"
+
+#: dwarf.c:1325
+#, c-format
+msgid "(inlined)"
+msgstr "(nie ako inline)"
+
+#: dwarf.c:1328
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(deklarovaný ako inline, ale ignorovaný)"
+
+#: dwarf.c:1331
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(deklarovaný ako inline a je inline)"
+
+#: dwarf.c:1334
+#, c-format
+msgid " (Unknown inline attribute value: %lx)"
+msgstr " (Neznáma hodnota inline atribútu: %lx)"
+
+#: dwarf.c:1495
+#, c-format
+msgid "(location list)"
+msgstr "(zoznam umiestnení)"
+
+#: dwarf.c:1514 dwarf.c:3193
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [bez DW_AT_frame_base]"
+
+#: dwarf.c:1526
+#, c-format
+msgid "Offset %lx used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr "Ofset %lx použitý ako hodnota atribútu DW_AT_import DIE na ofsete %lx je príliš veľký.\n"
+
+#: dwarf.c:1700
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Neznáma AT hodnota: %lx"
+
+#: dwarf.c:1767
+#, c-format
+msgid "Reserved length value (%lx) found in section %s\n"
+msgstr "Hodnota vyhradenej dĺžky (%lx) nájdená v sekcii %s\n"
+
+#: dwarf.c:1778
+#, c-format
+msgid "Corrupt unit length (%lx) found in section %s\n"
+msgstr "Neplatná dĺžka jednotky (%lx) nájdená v sekcii %s\n"
+
+#: dwarf.c:1785
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "Žiadne výpoÄtové jednotky v sekcii %s ?"
+
+#: dwarf.c:1794
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "Nedostatok pamäte pre ladiace info pole %u položiek"
+
+#: dwarf.c:1802 dwarf.c:3285
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+"Sekcia %s obsahuje:\n"
+"\n"
+
+#: dwarf.c:1810
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Nemožno nájsť sekciu %s!\n"
+
+#: dwarf.c:1873
+#, c-format
+msgid " Compilation Unit @ offset 0x%lx:\n"
+msgstr " KompilaÄná Jednotka @ offset 0x%lx:\n"
+
+#: dwarf.c:1874
+#, c-format
+msgid " Length: 0x%lx (%s)\n"
+msgstr " Dĺžka: 0x%lx (%s)\n"
+
+#: dwarf.c:1876
+#, c-format
+msgid " Version: %d\n"
+msgstr " Verzia: %d\n"
+
+#: dwarf.c:1877
+#, c-format
+msgid " Abbrev Offset: %ld\n"
+msgstr " Offset skratky: %ld\n"
+
+#: dwarf.c:1878
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Veľkosť ukazovateľa: %d\n"
+
+#: dwarf.c:1884
+#, c-format
+msgid "Debug info is corrupted, length of CU at %lx extends beyond end of section (length = %lx)\n"
+msgstr "Ladiace informácie sú poškodené, dĺžka CU na %lx siaha za koniec sekcie (sekcia má dĺžku %lx)\n"
+
+#: dwarf.c:1893
+#, c-format
+msgid "CU at offset %lx contains corrupt or unsupported version number: %d.\n"
+msgstr "CU na ofsete %lx obsahuje neplatné alebo nepodporované Äíslo verzie: %d\n"
+
+#: dwarf.c:1903
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr "Ladiace informácie sú poÅ¡kodené, ofset abbrev (%lx) je väÄší ako veľkosÅ¥ sekcie abbrev (%lx)\n"
+
+#: dwarf.c:1937
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr "Neplatná znaÄka end-of-siblings zistená na ofsete %lx v sekcii .debug_info\n"
+
+#: dwarf.c:1941
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr "Výpis Äalších upozornení na neplatné znaÄky end-of-sibling bude potlaÄený\n"
+
+#: dwarf.c:1948
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr " <%d><%lx>: skrát. Äíslo: %lu"
+
+#: dwarf.c:1965
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr "DIE na ofsete %lx odkazuje na skrátené Äíslo %lu, ktoré neexistuje\n"
+
+#: dwarf.c:1971
+#, c-format
+msgid " (%s)\n"
+msgstr " (%s)\n"
+
+#: dwarf.c:2062
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Nespracovaný výpis obsahu ladenia sekcie %s:\n"
+"\n"
+
+#: dwarf.c:2100 dwarf.c:2387
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "Informácia o riadku je pravdepodobne poškodená - sekcia je príliš krátka\n"
+
+#: dwarf.c:2109 dwarf.c:2397
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "Momentálne je podporovaná iba riadková informácia DWARF verzie 2 a 3.\n"
+
+#: dwarf.c:2130
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr " Ofset: 0x%lx\n"
+
+#: dwarf.c:2131
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Dĺžka: %ld\n"
+
+#: dwarf.c:2132
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " Verzia DWARF: %d\n"
+
+#: dwarf.c:2133
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " Dĺžka prológu: %d\n"
+
+#: dwarf.c:2134
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " Minimálna dĺžka inštrukcie: %d\n"
+
+#: dwarf.c:2135
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " PoÄiatoÄná hodnota 'is_stmt': %d\n"
+
+#: dwarf.c:2136
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " Báza riadka: %d\n"
+
+#: dwarf.c:2137
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " Rozsah riadka: %d\n"
+
+#: dwarf.c:2138
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " Opcode báza: %d\n"
+
+#: dwarf.c:2147
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Opcody:\n"
+
+#: dwarf.c:2150
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " Opcode %d má %d argumentov\n"
+
+#: dwarf.c:2156
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" Tabuľka adresára je prázdna.\n"
+
+#: dwarf.c:2159
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" Tabuľka adresára:\n"
+
+#: dwarf.c:2163
+#, c-format
+msgid " %s\n"
+msgstr " %s\n"
+
+#: dwarf.c:2174
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" Tabuľka názvov súborov je prázdna.\n"
+
+#: dwarf.c:2177
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" Tabuľka názvov súborov:\n"
+
+#: dwarf.c:2185
+#, c-format
+msgid " %d\t"
+msgstr " %d\t"
+
+#: dwarf.c:2196
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#. Now display the statements.
+#: dwarf.c:2204
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Príkazy Äíslovania riadkov:\n"
+
+#: dwarf.c:2220
+#, c-format
+msgid " Special opcode %d: advance Address by %lu to 0x%lx"
+msgstr " Špeciálny opcode %d: posunúť Adresu o %lu do 0x%lx"
+
+#: dwarf.c:2224
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " a Riadok o %d do %d\n"
+
+#: dwarf.c:2234
+#, c-format
+msgid " Copy\n"
+msgstr " Kopírovať\n"
+
+#: dwarf.c:2242
+#, c-format
+msgid " Advance PC by %lu to 0x%lx\n"
+msgstr " Posunúť PC o %lu do 0x%lx\n"
+
+#: dwarf.c:2250
+#, c-format
+msgid " Advance Line by %d to %d\n"
+msgstr " Posunúť Riadok o %d do %d\n"
+
+#: dwarf.c:2257
+#, c-format
+msgid " Set File Name to entry %d in the File Name Table\n"
+msgstr " Nastaviť Názov súboru na položku %d v Tabuľke názvov súborov\n"
+
+#: dwarf.c:2265
+#, c-format
+msgid " Set column to %lu\n"
+msgstr " Nastaviť stĺpec na %lu\n"
+
+#: dwarf.c:2272
+#, c-format
+msgid " Set is_stmt to %d\n"
+msgstr " Nastaviť is_stmt na %d\n"
+
+#: dwarf.c:2277
+#, c-format
+msgid " Set basic block\n"
+msgstr " Nastaviť základný blok\n"
+
+#: dwarf.c:2285
+#, c-format
+msgid " Advance PC by constant %lu to 0x%lx\n"
+msgstr " Posunúť PC o konštantu %lu na 0x%lx\n"
+
+#: dwarf.c:2293
+#, c-format
+msgid " Advance PC by fixed size amount %lu to 0x%lx\n"
+msgstr " Posunúť PC o množstvo fixnej dĺžky %lu na 0x%lx\n"
+
+#: dwarf.c:2298
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr " Nastaviť prologue_end na true\n"
+
+#: dwarf.c:2302
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr " Set_epilogue_begin na true\n"
+
+#: dwarf.c:2308 dwarf.c:2672
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr " Nastaviť ISA na %lu\n"
+
+#: dwarf.c:2312 dwarf.c:2676
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr " Neznámy kód operácie %d s operandami: "
+
+#: dwarf.c:2345
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Dekódovaný výpis obsahu ladenia sekcie %s:\n"
+"\n"
+
+#: dwarf.c:2506
+#, c-format
+msgid "CU: %s:\n"
+msgstr "CU: %s:\n"
+
+#: dwarf.c:2507 dwarf.c:2520
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr "Názov súboru Číslo riadka PoÄiatoÄná adresa\n"
+
+#: dwarf.c:2513
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr "CU: %s/%s:\n"
+
+#: dwarf.c:2518 dwarf.c:2590
+#, c-format
+msgid "%s:\n"
+msgstr "%s:\n"
+
+#. If directory index is 0, that means current directory.
+#: dwarf.c:2623
+#, c-format
+msgid ""
+"\n"
+"./%s:[++]\n"
+msgstr ""
+"\n"
+"./%s:[++]\n"
+
+#. The directory index starts counting at 1.
+#: dwarf.c:2629
+#, c-format
+msgid ""
+"\n"
+"%s/%s:\n"
+msgstr ""
+"\n"
+"%s/%s:\n"
+
+#: dwarf.c:2714
+#, c-format
+msgid "%-35s %11d %#18lx\n"
+msgstr "%-35s %11d %#18lx\n"
+
+#: dwarf.c:2719
+#, c-format
+msgid "%s %11d %#18lx\n"
+msgstr "%s %11d %#18lx\n"
+
+#: dwarf.c:2749 dwarf.c:3024 dwarf.c:3425
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr "Napodarilo sa naÄítaÅ¥ sekciu .debug_info, takže nemožno interpretovaÅ¥ sekciu %s.\n"
+
+#: dwarf.c:2794 dwarf.c:2888 dwarf.c:2962 dwarf.c:3079 dwarf.c:3227
+#: dwarf.c:3480
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Obsah %s sekcie:\n"
+"\n"
+
+#: dwarf.c:2828 dwarf.c:3330
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr ".debug_info ofset 0x%lx v sekcii %s neukazuje na hlaviÄku CU.\n"
+
+#: dwarf.c:2842
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Mometnálne sú podporované iba verejné mená DWARF 2 a 3\n"
+
+#: dwarf.c:2849
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Dĺžka: %ld\n"
+
+#: dwarf.c:2851
+#, c-format
+msgid " Version: %d\n"
+msgstr " Verzia: %d\n"
+
+#: dwarf.c:2853
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr " Ofset do sekcie .debug_info: 0x%lx\n"
+
+#: dwarf.c:2855
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr " Veľkosť oblasti v sekcii .debug_info: %ld\n"
+
+#: dwarf.c:2858
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" Offset\tNázov\n"
+
+#: dwarf.c:2909
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - fileno: %d filenum: %d\n"
+
+#: dwarf.c:2915
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:2923
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define : %d makro : %s\n"
+
+#: dwarf.c:2932
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - lineno : %d makro : %s\n"
+
+#: dwarf.c:2944
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - konštanta : %d reťazec : %s\n"
+
+#: dwarf.c:2973
+#, c-format
+msgid " Number TAG\n"
+msgstr " Číslo TAGu\n"
+
+#: dwarf.c:2979
+#, c-format
+msgid " %ld %s [%s]\n"
+msgstr " %ld %s [%s]\n"
+
+#: dwarf.c:2982
+msgid "has children"
+msgstr "má potomkov"
+
+#: dwarf.c:2982
+msgid "no children"
+msgstr "žiadny potomkovia"
+
+#: dwarf.c:2985
+#, c-format
+msgid " %-18s %s\n"
+msgstr " %-18s %s\n"
+
+#: dwarf.c:3018 dwarf.c:3223 dwarf.c:3419
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"%s sekcia je prázdna.\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:3068
+msgid "Location lists in .debug_info section aren't in ascending order!\n"
+msgstr "Zoznamy umiestení v sekcii .debug_info nie sú v vzostupnom poradí!\n"
+
+#: dwarf.c:3071
+msgid "No location lists in .debug_info section!\n"
+msgstr "Žiadne zoznamy umiestení v sekcii .debug_info!\n"
+
+#: dwarf.c:3076
+#, c-format
+msgid "Location lists in %s section start at 0x%lx\n"
+msgstr "Zoznamy umiestnenia v %s sekcii zaÄínajú na 0x%lx\n"
+
+#: dwarf.c:3080
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr " Offset Begin End Výraz\n"
+
+#: dwarf.c:3111
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Medzera [0x%lx - 0x%lx] v sekcii .debug_loc.\n"
+
+#: dwarf.c:3115
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr "Prekrytie [0x%lx - 0x%lx] v sekcii .debug_loc.\n"
+
+#: dwarf.c:3123
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "Offset 0x%lx je väÄší než veľkosÅ¥ sekcii .debug_loc.\n"
+
+#: dwarf.c:3132 dwarf.c:3167 dwarf.c:3177
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "Zoznam umiestnení zaÄínajúci na offsete 0x%lx nie je ukonÄený.\n"
+
+#: dwarf.c:3151 dwarf.c:3532
+#, c-format
+msgid "<End of list>\n"
+msgstr "<Koniec zoznamu>\n"
+
+#: dwarf.c:3161
+#, c-format
+msgid "(base address)\n"
+msgstr "(bázová adresa)\n"
+
+#: dwarf.c:3196
+msgid " (start == end)"
+msgstr " start == end)"
+
+#: dwarf.c:3198
+msgid " (start > end)"
+msgstr " (start > end)"
+
+#: dwarf.c:3208
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr "Na konci sekcie %2$s je %1$ld nepoužitých bajtov\n"
+
+#: dwarf.c:3341
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Aktuálne sú podporované iba usporiadania DWARF 2 a 3.\n"
+
+#: dwarf.c:3345
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Dĺžka: %ld\n"
+
+#: dwarf.c:3346
+#, c-format
+msgid " Version: %d\n"
+msgstr " Verzia: %d\n"
+
+#: dwarf.c:3347
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr " Ofset do .debug_info: 0x%lx\n"
+
+#: dwarf.c:3348
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Veľkosť ukazovateľa: %d\n"
+
+#: dwarf.c:3349
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " Veľkosť segmentu: %d\n"
+
+#: dwarf.c:3358
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr "Veľkosť smerníka + veľkosť segmentu nie je mocninou dvoch.\n"
+
+#: dwarf.c:3363
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Adresa Dĺžka\n"
+
+#: dwarf.c:3365
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Adresa Dĺžka\n"
+
+#. FIXME: Should we handle this case?
+#: dwarf.c:3469
+msgid "Range lists in .debug_info section aren't in ascending order!\n"
+msgstr "Zoznamy rozsahu v sekcii .debug_info nie sú v vzostupnom poradí!\n"
+
+#: dwarf.c:3472
+msgid "No range lists in .debug_info section!\n"
+msgstr "Žiadne zoznamy rozsahu v sekcii .debug_info!\n"
+
+#: dwarf.c:3477
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "Zoznamy rozsahu v sekcii %s zaÄínajú na 0x%lx\n"
+
+#: dwarf.c:3481
+#, c-format
+msgid " Offset Begin End\n"
+msgstr " Offset ZaÄiatok Koniec\n"
+
+#: dwarf.c:3506
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Medzera [0x%lx - 0x%lx] v sekcii %s.\n"
+
+#: dwarf.c:3510
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Prekrytie [0x%lx - 0x%lx] v sekcii %s.\n"
+
+#: dwarf.c:3548
+msgid "(start == end)"
+msgstr "(zaÄiatok == koniec)"
+
+#: dwarf.c:3550
+msgid "(start > end)"
+msgstr "(zaÄiatok > koniec)"
+
+#: dwarf.c:3801
+#, c-format
+msgid "The section %s contains:\n"
+msgstr "Sekcii %s obsahuje:\n"
+
+#: dwarf.c:4492
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr " DW_CFA_??? (Používateľom definovaný op rámca volania: %#x)\n"
+
+#: dwarf.c:4494
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr "nepodporované alebo neznáme Äíslo Dwarf Call Frame Instruction: %#x\n"
+
+#: dwarf.c:4518
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Zobrazenie obsahu ladenia sekcie %s nie je zatiaľ podporované.\n"
+
+#: dwarf.c:4560
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Chyba: "
+
+#: dwarf.c:4571
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Upozornenie: "
+
+#: emul_aix.c:43
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - 32 bitový malý archív\n"
+
+#: emul_aix.c:44
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - ignoruje 64 bitové objekty\n"
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - ignoruje 32 bitové objekty\n"
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] - akceptuje 32 a 64 bitové objekty\n"
+
+#: ieee.c:309
+msgid "unexpected end of debugging information"
+msgstr "neoÄakávaný koniec ladiacej informácie"
+
+#: ieee.c:396
+msgid "invalid number"
+msgstr "neplatné Äíslo"
+
+#: ieee.c:449
+msgid "invalid string length"
+msgstr "neplatná dĺžka reťazca"
+
+#: ieee.c:504 ieee.c:545
+msgid "expression stack overflow"
+msgstr "preteÄenie zásobníka výrazu"
+
+#: ieee.c:524
+msgid "unsupported IEEE expression operator"
+msgstr "nepodporovaný IEEE operátor výrazu"
+
+#: ieee.c:539
+msgid "unknown section"
+msgstr "neznáma sekcia"
+
+#: ieee.c:560
+msgid "expression stack underflow"
+msgstr "podteÄenie zásobníka výrazu"
+
+#: ieee.c:574
+msgid "expression stack mismatch"
+msgstr "nezhoda zásobníka výrazu"
+
+#: ieee.c:611
+msgid "unknown builtin type"
+msgstr "neznámy vstavaný typ"
+
+#: ieee.c:756
+msgid "BCD float type not supported"
+msgstr "BCD float typ nie je podporovaný"
+
+#: ieee.c:893
+msgid "unexpected number"
+msgstr "neoÄakávané Äíslo"
+
+#: ieee.c:900
+msgid "unexpected record type"
+msgstr "neoÄakávaný typ záznamu"
+
+#: ieee.c:933
+msgid "blocks left on stack at end"
+msgstr "na konci zásobníka sú ponechané bloky"
+
+#: ieee.c:1196
+msgid "unknown BB type"
+msgstr "neznámy BB typ"
+
+#: ieee.c:1205
+msgid "stack overflow"
+msgstr "preteÄenia zásobníka"
+
+#: ieee.c:1228
+msgid "stack underflow"
+msgstr "podteÄenie zásobníka"
+
+#: ieee.c:1340 ieee.c:1410 ieee.c:2107
+msgid "illegal variable index"
+msgstr "neplatný index premennej"
+
+#: ieee.c:1388
+msgid "illegal type index"
+msgstr "neplatný typový index"
+
+#: ieee.c:1398 ieee.c:1435
+msgid "unknown TY code"
+msgstr "neznámy TY kód"
+
+#: ieee.c:1417
+msgid "undefined variable in TY"
+msgstr "nezadefinovaná premenná v TY"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1828
+msgid "Pascal file name not supported"
+msgstr "Pascalovský názov súboru nie je podporovaný"
+
+#: ieee.c:1876
+msgid "unsupported qualifier"
+msgstr "nepodporaný kvalifikátor"
+
+#: ieee.c:2145
+msgid "undefined variable in ATN"
+msgstr "nezadefinovaná premenná v ATN"
+
+#: ieee.c:2188
+msgid "unknown ATN type"
+msgstr "neznámy ATN typ"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2310
+msgid "unsupported ATN11"
+msgstr "nepodporovaný ATN11"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2337
+msgid "unsupported ATN12"
+msgstr "nepodporovaný ATN11"
+
+#: ieee.c:2397
+msgid "unexpected string in C++ misc"
+msgstr "neoÄakávaný reÅ¥azec v C++ misc"
+
+#: ieee.c:2410
+msgid "bad misc record"
+msgstr "nesprávny misc záznam"
+
+#: ieee.c:2451
+msgid "unrecognized C++ misc record"
+msgstr "nerozpoznaný C++ misc záznam"
+
+#: ieee.c:2566
+msgid "undefined C++ object"
+msgstr "nezadefinovaný C++ objekt"
+
+#: ieee.c:2600
+msgid "unrecognized C++ object spec"
+msgstr "nerozpoznaná špecifikácia C++ objektu"
+
+#: ieee.c:2636
+msgid "unsupported C++ object type"
+msgstr "nepodporovaný objektový typ C++"
+
+#: ieee.c:2646
+msgid "C++ base class not defined"
+msgstr "bázová trieda C++ nebola definovaná"
+
+#: ieee.c:2658 ieee.c:2763
+msgid "C++ object has no fields"
+msgstr "C++ objekt nemá žiadne polia"
+
+#: ieee.c:2677
+msgid "C++ base class not found in container"
+msgstr "bázová trieda C++ nebola nájdená v kontajneri"
+
+#: ieee.c:2784
+msgid "C++ data member not found in container"
+msgstr "dátový Älen C++ nebol nájdený v kontajneri"
+
+#: ieee.c:2825 ieee.c:2975
+msgid "unknown C++ visibility"
+msgstr "neznáma C++ viditeľnosť"
+
+#: ieee.c:2859
+msgid "bad C++ field bit pos or size"
+msgstr "zlá bitová pozícia alebo veľkosť C++ poľa"
+
+#: ieee.c:2951
+msgid "bad type for C++ method function"
+msgstr "zlý typ pre metódu funkcie C++"
+
+#: ieee.c:2961
+msgid "no type information for C++ method function"
+msgstr "žiadna informácia o type pre metódu funkcie C++"
+
+#: ieee.c:3000
+msgid "C++ static virtual method"
+msgstr "statická virtuálna metóda C++"
+
+#: ieee.c:3095
+msgid "unrecognized C++ object overhead spec"
+msgstr "nerozpoznaná horná špecifikácia C++ objektu"
+
+#: ieee.c:3134
+msgid "undefined C++ vtable"
+msgstr "nezadefinovaná C++ vtable"
+
+#: ieee.c:3203
+msgid "C++ default values not in a function"
+msgstr "štandardné C++ hodnoty nie sú vo funkcii"
+
+#: ieee.c:3243
+msgid "unrecognized C++ default type"
+msgstr "nerozpoznaný štandardný typ C++"
+
+#: ieee.c:3274
+msgid "reference parameter is not a pointer"
+msgstr "referenÄný parameter nie je ukazovateľ"
+
+#: ieee.c:3357
+msgid "unrecognized C++ reference type"
+msgstr "nerozpoznaný referenÄný typ C++"
+
+#: ieee.c:3439
+msgid "C++ reference not found"
+msgstr "C++ referencia nebola nájdená"
+
+#: ieee.c:3447
+msgid "C++ reference is not pointer"
+msgstr "C++ referencia nie je ukazovateľ"
+
+#: ieee.c:3473 ieee.c:3481
+msgid "missing required ASN"
+msgstr "chýba požadovaný ASN"
+
+#: ieee.c:3508 ieee.c:3516
+msgid "missing required ATN65"
+msgstr "chýba požadovaný ATN65"
+
+#: ieee.c:3530
+msgid "bad ATN65 record"
+msgstr "zlý ATN65 záznam"
+
+#: ieee.c:4158
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "IEEE Äíselné preteÄenie: 0x"
+
+#: ieee.c:4202
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "IEEE preteÄenie dĺžky reÅ¥azca: %u\n"
+
+#: ieee.c:5199
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "IEEE nepodporaná veľkosť typu integer %u\n"
+
+#: ieee.c:5233
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "IEEE nepodporovaná veľkosť typu float %u\n"
+
+#: ieee.c:5267
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "IEEE nepodporovaná veľkosť komplexného typu %u\n"
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr "Do zoznamu kľúÄových slov bol zadaný duplicitný symbol."
+
+#: nlmconv.c:273 srconv.c:1822
+msgid "input and output files must be different"
+msgstr "vstupné a výstupné súbory sa musia líšiť"
+
+#: nlmconv.c:320
+msgid "input file named both on command line and with INPUT"
+msgstr "vstupný súbor bol pomenovaný na príkazovom riadku a aj na VSTUPE"
+
+#: nlmconv.c:329
+msgid "no input file"
+msgstr "žiadny vstupný súbor"
+
+#: nlmconv.c:359
+msgid "no name for output file"
+msgstr "žiadny názov pre výstupný súbor"
+
+#: nlmconv.c:373
+msgid "warning: input and output formats are not compatible"
+msgstr "upozornenie: vstupné a výstupné formáty nie sú kompatibilné"
+
+#: nlmconv.c:403
+msgid "make .bss section"
+msgstr "urobiť .bss sekciu"
+
+#: nlmconv.c:413
+msgid "make .nlmsections section"
+msgstr "urobiť .nlmsections sekciu"
+
+#: nlmconv.c:441
+msgid "set .bss vma"
+msgstr "nastaviť .bss vma"
+
+#: nlmconv.c:448
+msgid "set .data size"
+msgstr "nastaviť .data veľkosť"
+
+#: nlmconv.c:628
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "upozornenie: symbol %s importovaný, ale nie je v importovacom zozname"
+
+#: nlmconv.c:648
+msgid "set start address"
+msgstr "nastaviÅ¥ poÄiatoÄnú adresu"
+
+#: nlmconv.c:697
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "upozornenie: nedefinovaná START procedúra %s"
+
+#: nlmconv.c:699
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "upozornenie: nedefinovaná EXIT procedúra %s"
+
+#: nlmconv.c:701
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "upozornenie: nedefinovaná CHECK procedúra %s"
+
+#: nlmconv.c:721 nlmconv.c:907
+msgid "custom section"
+msgstr "prispôsobená sekcia"
+
+#: nlmconv.c:741 nlmconv.c:936
+msgid "help section"
+msgstr "sekcia pomoci"
+
+#: nlmconv.c:763 nlmconv.c:954
+msgid "message section"
+msgstr "sekcia správ"
+
+#: nlmconv.c:778 nlmconv.c:987
+msgid "module section"
+msgstr "sekcia modulov"
+
+#: nlmconv.c:797 nlmconv.c:1003
+msgid "rpc section"
+msgstr "rpc sekcia"
+
+#. There is no place to record this information.
+#: nlmconv.c:833
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: upozornenie: zdielané knižnice nemôžu mať neinicializované dáta"
+
+#: nlmconv.c:854 nlmconv.c:1022
+msgid "shared section"
+msgstr "zdielaná sekcia"
+
+#: nlmconv.c:862
+msgid "warning: No version number given"
+msgstr "upozornenie: Neuvedené Äíslo verzie"
+
+#: nlmconv.c:902 nlmconv.c:931 nlmconv.c:949 nlmconv.c:998 nlmconv.c:1017
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: ÄítaÅ¥: %s"
+
+#: nlmconv.c:924
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "upozornenie: FULLMAP nie je podporaný; skúste ld -M"
+
+#: nlmconv.c:1100
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Použitie: %s [voľb(a/y)] [vstupný súbor [výstupný súbor]]\n"
+
+#: nlmconv.c:1101
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " Previesť súbor objektu na zavediteľný NetWare Modul\n"
+
+#: nlmconv.c:1102
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+" Voľby sú:\n"
+" -I --input-target=<bfdname> Nastaviť formát vstupného binárneho súboru\n"
+" -O --output-target=<bfdname> Nastaviť formát výstupného binárneho súboru\n"
+" -T --header-file=<súbor> PreÄítaÅ¥ <súbor> pre NLM informáciu hlaviÄky\n"
+" -l --linker=<linker> Použiť <linker> pre všetko linkovanie\n"
+" -d --debug Zobraziť príkazový riadok linkera na stderr \n"
+" @<súbor> Čítať voľby zo <súboru>.\n"
+" -h --help Zobraziť túto informáciu\n"
+" -v --version Zobraziť verziu programu\n"
+
+#: nlmconv.c:1143
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "podpora nie je skompilovaná pre %s"
+
+#: nlmconv.c:1180
+msgid "make section"
+msgstr "vytvoriť sekciu"
+
+#: nlmconv.c:1194
+msgid "set section size"
+msgstr "nastaviť veľkosť sekcie"
+
+#: nlmconv.c:1200
+msgid "set section alignment"
+msgstr "nastaviť zarovnanie sekcie"
+
+#: nlmconv.c:1204
+msgid "set section flags"
+msgstr "nastaviť príznaky sekcie"
+
+#: nlmconv.c:1215
+msgid "set .nlmsections size"
+msgstr "nastaviť veľkosť .nlmsections"
+
+#: nlmconv.c:1296 nlmconv.c:1304 nlmconv.c:1313 nlmconv.c:1318
+msgid "set .nlmsection contents"
+msgstr "nastaviť obsah .nlmsections"
+
+#: nlmconv.c:1795
+msgid "stub section sizes"
+msgstr "veľkost sekcie stub"
+
+#: nlmconv.c:1842
+msgid "writing stub"
+msgstr "zapisuje sa stub"
+
+#: nlmconv.c:1926
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "nezistená relatívna PC relokácia oproti %s"
+
+#: nlmconv.c:1990
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "preteÄenie pri prispôsobovaní relokácie oproti %s"
+
+#: nlmconv.c:2117
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: vykonanie %s zlyhalo: "
+
+#: nlmconv.c:2132
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Vykonanie %s zlyhalo"
+
+#: nm.c:217 size.c:78 strings.c:647
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Použitie: %s [VOĽBY] [SÚBORY]\n"
+
+#: nm.c:218
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " Vypísať symboly v [SÚBOROCH] (štandardne a.out).\n"
+
+#: nm.c:219
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+" Voľby sú:\n"
+" -a, --debug-syms Zobraziť iba symboly ladiaceho nástroja\n"
+" -A, --print-file-name Vypísať názov výstupného súboru pred každý symbol\n"
+" -B Rovnaké ako --format=bsd\n"
+" -C, --demangle[=Å TÃL] DekódovaÅ¥ nízkoúrovňové názvy symbolov na názvy\n"
+" používateľskej úrovne\n"
+" Å TÃL, ak je urÄený, môže byÅ¥ „auto“ (predvolený),\n"
+" „gnu“, „lucid“, „arm“, „hp“, „edg“, „gnu-v3“, „java“\n"
+" alebo „gnat“\n"
+" --no-demangle Neupravovať nízko-úrovňové názvy symbolov\n"
+" -D, --dynamic Zobraziť dynamické symboly namiesto normálnych symbolov\n"
+" --defined-only Zobraziť iba definované symboly\n"
+" -e (ignorované)\n"
+" -f, --format=FORMÃT PoužiÅ¥ výstupný formát FORMÃT. FORMÃT môže byÅ¥ „bsd“,\n"
+" „sysv“ alebo „posix“. Štandardný je „bsd“\n"
+" -g, --extern-only Zobraziť iba externé symboly\n"
+" -l, --line-numbers Použiť ladiacu informáciu na nájdenie súboru a\n"
+" Äíslo riadka pre každý symbol\n"
+" -n, --numeric-sort UtriediÅ¥ symboly Äíselne podľa adresy\n"
+" -o Ravnaký ako -A\n"
+" -p, --no-sort Netriediť symboly\n"
+" -P, --portability Rovnaké ako --format=posix\n"
+" -r, --reverse-sort Prevrátiť zmysel triedenia\n"
+" -S, --print-size Vypísať veľkosť definovaných symbolov\n"
+" -s, --print-armap Zahrnúť index pre symboly z Älenov archívu\n"
+" --size-sort Triediť symboly podľa veľkosti\n"
+" --special-syms Zahrnúť špeciálne symboly do výstupu\n"
+" --synthetic Zobraziť tiež syntetické symboly\n"
+" -t, --radix=RADIX Použiť RADIX pre výpis hodnôt symbolov\n"
+" --target=BFDNAME UrÄiÅ¥ formát cieľového objektu ako BFDNAME\n"
+" -u, --undefined-only Zobraziť iba nedefinované symboly\n"
+" -X 32_64 (ignorované)\n"
+" @SÚBOR Čítať voľby zo SÚBORu\n"
+" -h, --help Zobraziť túto informáciu\n"
+" -V, --version Zobraziť verziu programu\n"
+"\n"
+
+#: nm.c:284
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: neplatný radix"
+
+#: nm.c:308
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: neplatný výstupný formát"
+
+#: nm.c:329 readelf.c:6971 readelf.c:7009
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<špecifické pre procesor>: %d"
+
+#: nm.c:331 readelf.c:6974 readelf.c:7021
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<špecifické pre OS>: %d"
+
+#: nm.c:333 readelf.c:6976 readelf.c:7024
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<neznámy>: %d"
+
+#: nm.c:373
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Index archívu:\n"
+
+#: nm.c:1233
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Nedefinované symboly z %s:\n"
+"\n"
+
+#: nm.c:1235
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboly z %s:\n"
+"\n"
+
+#: nm.c:1237 nm.c:1288
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Názov Hodnota Trieda Typ Veľkosť Riad. Sekcia\n"
+"\n"
+
+#: nm.c:1240 nm.c:1291
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Názov Hodnota Trieda Typ Veľkosť Riad. Sekcia\n"
+"\n"
+
+#: nm.c:1284
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Nedefinovaný symbol z %s[%s]:\n"
+"\n"
+
+#: nm.c:1286
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboly z %s[%s]:\n"
+"\n"
+
+#: nm.c:1378
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr "Výpis šírky nebol inicializovaný (%d)"
+
+#: nm.c:1603
+msgid "Only -X 32_64 is supported"
+msgstr "Je podporovaný iba -X 32_64"
+
+#: nm.c:1623
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "Použitie volieb --size-sort a --undefined-only spolu"
+
+#: nm.c:1624
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "nevytvoria žiadny výstup, pretože nedefinované symboly nemajú žiadnu veľkosť."
+
+#: nm.c:1652
+#, c-format
+msgid "data size %ld"
+msgstr "dátová veľkosť %ld"
+
+#: objcopy.c:424 srconv.c:1730
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Použitie: %s [voľb(a/y)] vstupný-súbor [výstupný-súbor]\n"
+
+#: objcopy.c:425
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " Kopíruje binárny súbor s možnosÅ¥ou transformovania poÄas procesu\n"
+
+#: objcopy.c:426 objcopy.c:522
+#, c-format
+msgid " The options are:\n"
+msgstr " Voľby sú:\n"
+
+#: objcopy.c:427
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set arch of output file, when input is binary\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave <number> Only copy one out of every <number> bytes\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" 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"
+msgstr ""
+" -I --input-target <bfdnázov> Predpokladať vstup vo formáte <bfdnázov>\n"
+" -O --output-target <bfdnázov> Vytvoriť výstup vo formáte <bfdnázov>\n"
+" -B --binary-architecture <arch> NastaviÅ¥ arch výstupného súboru, keÄ vstup je binárny\n"
+" -F --target <bfdnázov> Nastaviť vstupný aj výstupný formát na <bfdnázov>\n"
+" --debugging Previesť ladieace informácie, ak je to možné\n"
+" -p --preserve-dates SkopírovaÅ¥ na výstup Äasové známku zmeny/prístupu\n"
+" -j --only-section <názov> Na výstup skopírovať iba sekciu <názov>\n"
+" --add-gnu-debuglink=<súbor> Pridať sekciu .gnu_debuglink odkazujúcu na <súbor>\n"
+" -R --remove-section <názov> Odstrániť sekciu <názov> z výstupu\n"
+" -S --strip-all Odstrániť všetky informácie o symboloch a relokácii\n"
+" -g --strip-debug Odstrániť všetky ladiace symboly a sekcie\n"
+" --strip-unneeded Odstrániť všetky symboly, ktoré nevyžadujú relokácie\n"
+" -N --strip-symbol <názov> Nekopírovať symbol <názov>\n"
+" --strip-unneeded-symbol <názov>\n"
+" Nekopírovať symbol <názov> ak ho nevyžadujú\n"
+" relokácie\n"
+" --only-keep-debug Odstrániť všetko okrem ladiacich informácií\n"
+" --extract-symbol Odstrániť obsah sekcie ale ponechat symboly\n"
+" -K --keep-symbol <názov> Neodstraňovať symbol <názov>\n"
+" --keep-file-symbols Neodstraňovať symbol(y) súboru\n"
+" --localize-hidden Previesť všetky skryté symboly ELF na lokálne\n"
+" -L --localize-symbol <názov> VynútiÅ¥ oznaÄenie symbolu <názov> ako lokálny\n"
+" --globalize-symbol <názov> VynútiÅ¥ oznaÄenie symbolu <názov> ako globálny\n"
+" -G --keep-global-symbol <názov> Lokalizovať všetky symboly okrem <názov>\n"
+" -W --weaken-symbol <názov> VynútiÅ¥ oznaÄenie symbolu <názov> ako slabý\n"
+" --weaken VynútiÅ¥ oznaÄenie vÅ¡etkých globálnych symbolov ako slabých\n"
+" -w --wildcard Povoliť zástupné znaky pri porovnávaní symbolov\n"
+" -x --discard-all Odstrániť všetky neglobálne symboly\n"
+" -X --discard-locals Odstrániť všetky symboly vygenerované kompilátorom\n"
+" -i --interleave <Äíslo> Iba jedna kópia každých <Äíslo> bajtov\n"
+" -b --byte <num> Vybrať bajt <num> v každom vynechanom bloku\n"
+" --gap-fill <hodn> Vyplniť medzery medzi sekciami pomocou <hodn>\n"
+" --pad-to <adr> Doplniť poslednú sekciu do adresy <adr>\n"
+" --set-start <adr> NastaviÅ¥ adresu zaÄiatku na <adr>\n"
+" {--change-start|--adjust-start} <inkr>\n"
+" PridaÅ¥ <inkr> k adrese zaÄiatku\n"
+" {--change-addresses|--adjust-vma} <inkr>\n"
+" PridaÅ¥ <inkr> k adresám LMA, VMA a zaÄiatku\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Zmeniť LMA a VMA sekcie <name> o <val>\n"
+" --change-section-lma <názov>{=|+|-}<hodn>\n"
+" Zmeniť LMA sekcie <názov> o <hodn>\n"
+" --change-section-vma <názov>{=|+|-}<hodn>\n"
+" Zmeniť VMA sekcie <hodn> o <hodn>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Upozorniť na neexistenciu pomenovanej sekcie\n"
+" --set-section-flags <názov>=<príznaky>\n"
+" Nastaviť vlastnosti sekcie <názov> na <príznaky>\n"
+" --add-section <názov>=<súbor> Pridať sekciu <názov>, ktorá sa nachádza v <súbore> na výstup\n"
+" --rename-section <star>=<nov>[,<príz>] Premenovať sekciu <star> na <nov>\n"
+" --change-leading-char Vynútiť štýl úvodného znaku výstupného formátu\n"
+" --remove-leading-char odstrániť úvodný znak z globálnych symbolov\n"
+" --reverse-bytes=<poÄ> OtoÄiÅ¥ poradie <poÄ> bajtov naraz v sekciách výstupu s obsahom\n"
+" --redefine-sym <star>=<nov> Redefinovať názov symbolu <star> na <nov>\n"
+" --redefine-syms <súbor> --redefine-sym všetkých dvojíc symbolov \n"
+" uvedených v <súbore>\n"
+" --srec-len <number> Obmedziť dĺžku generovaných generated Srecords\n"
+" --srec-forceS3 Obmedziť typ generovaných Srecords na S3\n"
+" --strip-symbols <súbor> -N pre všetky symboly uvedené v <súbore>\n"
+" --strip-unneeded-symbols <súbor>\n"
+" --strip-unneeded-symbol pre všetky symboly uvedené\n"
+" v <súbore>\n"
+" --keep-symbols <súbor> -K pre všetky symboly uvedené v <súbore>\n"
+" --localize-symbols <súbor> -L pre všetky symboly uvedené v <súbore>\n"
+" --globalize-symbols <súbor> --globalize-symbol pre všetky v <súbore>\n"
+" --keep-global-symbols <súbor> -G pre všetky symboly uvedené v <súbore>\n"
+" --weaken-symbols <súbor> -W pre všetky symboly uvedené v <súbore>\n"
+" --alt-machine-code <index> Použiť <index>-tý alternatívny stroj cieľa\n"
+" --writable-text OznaÄiÅ¥ výstupný text ako zapisovateľný\n"
+" --readonly-text OznaÄiÅ¥ výstupný text ako chránený proti zápisu\n"
+" --pure OznaÄiÅ¥ výstupný text ako stránkovaný na žiadosÅ¥\n"
+" --impure OznaÄiÅ¥ výstupný súbor ako neÄistý\n"
+" --prefix-symbols <prefix> PridaÅ¥ <prefix> na zaÄiatok každého názvu symbolu\n"
+" --prefix-sections <prefix> PridaÅ¥ <prefix> na zaÄiatok každého názvu sekcie\n"
+" --prefix-alloc-sections <prefix>\n"
+" PridaÅ¥ <prefix> na zaÄiatok každého názvu relokovateľnej\n"
+" sekcie\n"
+" -v --verbose Vypísať všetky zmenené objekty\n"
+" @<file> NaÄítaÅ¥ voľby zo <file>\n"
+" -V --version Zobraziť verziu programu\n"
+" -h --help Vypísať tohto pomocníka\n"
+" --info Vypísať zoznam objektových formátov a podporovaných architektúr\n"
+
+#: objcopy.c:520
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Použitie: %s <voľb(a/y)> vstupný-súbor(y)\n"
+
+#: objcopy.c:521
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr " Odstráni symboly a sekcie zo súborov\n"
+
+#: objcopy.c:523
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target <bfdnázov> Predpokladať vstup vo formáte <bfdnázov>\n"
+" -O --output-target <bfdnázov> Vytvoriť výstup vo formáte <bfdnázov>\n"
+" -F --target <bfdnázov> Nastaviť vstupný aj výstupný formát na <bfdnázov>\n"
+" -p --preserve-dates SkopírovaÅ¥ na výstup Äasové známku zmeny/prístupu\n"
+" -R --remove-section <názov> Odstrániť sekciu <názov> z výstupu\n"
+" -s --strip-all Odstrániť všetky informácie o symboloch a relokácii\n"
+" -g -S -d --strip-debug Odstrániť všetky ladiace symboly a sekcie\n"
+" --strip-unneeded Odstrániť všetky symboly, ktoré nevyžadujú relokácie\n"
+" --only-keep-debug Odstrániť všetko okrem ladiacich informácií\n"
+" -N --strip-symbol <názov> Nekopírovať symbol <názov>\n"
+" -K --keep-symbol <názov> Neodstraňovať symbol <názov>\n"
+" --keep-file-symbols Neodstraňovať symbol(y) súboru\n"
+" -w --wildcard Povoliť zástupné znaky pri porovnávaní symbolov\n"
+" -x --discard-all Odstrániť všetky neglobálne symboly\n"
+" -X --discard-locals Odstrániť všetky symboly vygenerované kompilátorom\n"
+" -v --verbose Vypísať všetky zmenené objekty\n"
+" -V --version Zobraziť verziu programu\n"
+" -h --help Vypísať tohto pomocníka\n"
+" --info Vypísať zoznam objektových formátov a podporovaných architektúr\n"
+" -o <súbor> Vložiť orezaný výstup do <súboru>\n"
+
+#: objcopy.c:596
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "nerozpoznaný príznak sekcie „%s“"
+
+#: objcopy.c:597
+#, c-format
+msgid "supported flags: %s"
+msgstr "podporované príznaky: %s"
+
+#: objcopy.c:698
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "nemožno otvoriť „%s“: %s"
+
+#: objcopy.c:701 objcopy.c:3065
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: fread zlyhal"
+
+#: objcopy.c:774
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: Ignorujú sa zbytoÄnosti nájdené v tomto riadku"
+
+#: objcopy.c:1069
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr "neodstraňovať symbol „%s“, pretože je spomenutý v relokácii"
+
+#: objcopy.c:1152
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: Viacnásobná redefinícia symbolu „%s“"
+
+#: objcopy.c:1156
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: Symbol „%s“ je cieľom viac ako jednej redefinície"
+
+#: objcopy.c:1184
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "nepodarilo sa otvoriť súbor redefinície symbolov %s (chyba: %s)"
+
+#: objcopy.c:1262
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: nájdené nezmysly na konci riadka"
+
+#: objcopy.c:1265
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: chýba názov nového symbolu"
+
+#: objcopy.c:1275
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: predÄasné ukonÄenie riadka"
+
+#: objcopy.c:1301
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat vracia zápornú veľkosť pre „%s“"
+
+#: objcopy.c:1313
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "kopírovať z „%s“ [neznámy] do „%s“ [neznámy]\n"
+
+#: objcopy.c:1369
+msgid "Unable to change endianness of input file(s)"
+msgstr "Nemožno zmeniť endianitu vstupného súboru(-ov)"
+
+#: objcopy.c:1378
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "kopírovať z „%s“ [%s] do „%s“ [%s]\n"
+
+#: objcopy.c:1421
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "Nemožno rozpoznať formát vstupného súboru „%s“"
+
+#: objcopy.c:1424
+#, c-format
+msgid "Warning: Output file cannot represent architecture `%s'"
+msgstr "Upozornenie: Výstupný súbor nemôže reprezentovať architektúru „%s“"
+
+#: objcopy.c:1489
+#, c-format
+msgid "can't add section '%s'"
+msgstr "nemožno pridať sekciu „%s“"
+
+#: objcopy.c:1498
+#, c-format
+msgid "can't create section `%s'"
+msgstr "nemožno vytvoriť sekciu „%s“"
+
+#: objcopy.c:1544
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr "nemožno vytvoriť ladiacu sekciu: „%s“"
+
+#: objcopy.c:1637
+msgid "Can't fill gap after section"
+msgstr "Nemožno vyplniť medzeru po sekcii"
+
+#: objcopy.c:1661
+msgid "can't add padding"
+msgstr "Nemožno pridať výplň"
+
+#: objcopy.c:1752
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr "nemožno vyplniť ladiacu sekciu: „%s“"
+
+#: objcopy.c:1815
+msgid "error copying private BFD data"
+msgstr "chyba pri kopírovaní privátnych BFD dát"
+
+#: objcopy.c:1826
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr "tento cieľ nepodporuje alternatívne strojové kódy %lu"
+
+#: objcopy.c:1830
+msgid "treating that number as an absolute e_machine value instead"
+msgstr "namiesto toho sa toto Äíslo považuje za absolútnu hodnotu e_machine"
+
+#: objcopy.c:1834
+msgid "ignoring the alternative value"
+msgstr "ignoruje sa alternatívna hodnota"
+
+#: objcopy.c:1864 objcopy.c:1895
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr "nie je možné vytvoriÅ¥ doÄasný adresár pre kopírovanie archívu (chyba: %s)"
+
+#: objcopy.c:1957
+msgid "Unable to recognise the format of file"
+msgstr "Nemožno rozpoznať formát súboru"
+
+#: objcopy.c:2147
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "Viacnásobné premenovanie sekcie %s"
+
+#: objcopy.c:2198
+msgid "error in private h\teader data"
+msgstr "chyba v privátnych dátach hlaviÄky"
+
+#: objcopy.c:2276
+msgid "failed to create output section"
+msgstr "nepodarilo sa vytvoriť výstupnú sekciu"
+
+#: objcopy.c:2290
+msgid "failed to set size"
+msgstr "nepodarilo sa nastaviť veľkosť"
+
+#: objcopy.c:2304
+msgid "failed to set vma"
+msgstr "nepodarilo sa nastaviť vma"
+
+#: objcopy.c:2329
+msgid "failed to set alignment"
+msgstr "nepodarilo sa nastaviť zarovnanie"
+
+#: objcopy.c:2351
+msgid "failed to copy private data"
+msgstr "chyba pri kopírovaní privátnych dát"
+
+#: objcopy.c:2440
+msgid "relocation count is negative"
+msgstr "poÄet relokácií je záporný"
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2501
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr "nie je možné obrátiť poradie bajtov: dĺžka sekcie %s musí byť bezo zvyšku deliteľná %d"
+
+#: objcopy.c:2685
+msgid "can't create debugging section"
+msgstr "nemožno vytvoriť ladiacu sekciu"
+
+#: objcopy.c:2698
+msgid "can't set debugging section contents"
+msgstr "nemožno nastaviť obsah ladiacej sekcie"
+
+#: objcopy.c:2706
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr "nevie sa ako sa má zapísať ladiaca informácia pre %s"
+
+#: objcopy.c:2848
+msgid "could not create temporary file to hold stripped copy"
+msgstr "nebolo možné vytvoriÅ¥ doÄasný súbor pre orezanú kópiu"
+
+#: objcopy.c:2897
+msgid "byte number must be non-negative"
+msgstr "Äíslo bajtu musí byÅ¥ nezáporné"
+
+#: objcopy.c:2907
+msgid "interleave must be positive"
+msgstr "vloženie musí byť kladné"
+
+#: objcopy.c:2927 objcopy.c:2935
+#, c-format
+msgid "%s both copied and removed"
+msgstr "%s obe skopírované a odstránené"
+
+#: objcopy.c:3036 objcopy.c:3110 objcopy.c:3210 objcopy.c:3241 objcopy.c:3265
+#: objcopy.c:3269 objcopy.c:3289
+#, c-format
+msgid "bad format for %s"
+msgstr "zlý formát pre %s"
+
+#: objcopy.c:3060
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "nemožno otvoriť: %s: %s"
+
+#: objcopy.c:3179
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Upozornenie: skracuje sa výplň medzery z 0x%s na 0x%x"
+
+#: objcopy.c:3347
+msgid "unable to parse alternative machine code"
+msgstr "nepodarila sa syntaktická analýza alternatívneho strojového kódu"
+
+#: objcopy.c:3392
+msgid "number of bytes to reverse must be positive and even"
+msgstr "piÄet bajtov, ktorých poradie sa má otoÄiÅ¥ musí byÅ¥ kladný a párny"
+
+#: objcopy.c:3395
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr "Upozornenie: ignoruje sa predošlá hodnota --reverse-bytes %d"
+
+#: objcopy.c:3423
+msgid "byte number must be less than interleave"
+msgstr "Äíslo bajtu musí byÅ¥ menÅ¡ie než vloženie"
+
+#: objcopy.c:3453
+#, c-format
+msgid "architecture %s unknown"
+msgstr "architektúra %s neznáma"
+
+#: objcopy.c:3457
+msgid "Warning: input target 'binary' required for binary architecture parameter."
+msgstr "Upozornenie: vstupný cieľ 'binary' je požadovaný pre parameter binárnej architektúry."
+
+#: objcopy.c:3458
+#, c-format
+msgid " Argument %s ignored"
+msgstr " Argument %s ignorovaný"
+
+#: objcopy.c:3464
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr "upozornenie: nepadarilo sa nájsť „%s“. Sytémové chybové hlásenie: %s"
+
+#: objcopy.c:3475
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr "upozornenie: nebolo možné vytvoriÅ¥ doÄasný súbor poÄas kopírovania „%s“, (chyba: %s)"
+
+#: objcopy.c:3502 objcopy.c:3516
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s nikdy nepoužité"
+
+#: objdump.c:182
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Použitie: %s <voľb(a/y)> <súbor(y)>\n"
+
+#: objdump.c:183
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " Zobraziť informácie z objektového <súboru(-ov)>.\n"
+
+#: objdump.c:184
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " Najmenej jeden z následujúcich prepínaÄov musí byÅ¥ uvedený:\n"
+
+#: objdump.c:185
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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"
+msgstr ""
+" -a, --archive-headers ZobraziÅ¥ informácie hlaviÄky archívu\n"
+" -f, --file-headers ZobraziÅ¥ obsah hlaviÄky celého súboru\n"
+" -p, --private-headers ZobraziÅ¥ objektový formát Å¡pecifický pre obsah hlaviÄky súboru\n"
+" -h, --[section-]headers ZobraziÅ¥ obsah hlaviÄiek sekcií\n"
+" -x, --all-headers ZobraziÅ¥ obsah vÅ¡etkých hlaviÄiek\n"
+" -d, --disassemble Zobraziť assembler obsahu vykonateľných sekcií\n"
+" -D, --disassemble-all Zobraziť assembler obsahu všetkých sekcií\n"
+" -S, --source Premiešať zdrojový kód s výstupom disassemblera\n"
+" -s, --full-contents Zobraziť plný obsah požadovaných sekcií\n"
+" -g, --debugging Zobraziť ladiace informácie objektového súboru\n"
+" -e, --debugging-tags Zobraziť ladiace informácie v štýle ctags\n"
+" -G, --stabs Zobraziť (v nespracovanom formáte) všetky STABS informácie zo súboru\n"
+" -W, --dwarf Zobraziť DWARF informácie zo súboru\n"
+" -t, --syms Zobraziť obsah tabuliek symbolov\n"
+" -T, --dynamic-syms Zobraziť obsah dynamickej tabuľky symbolov\n"
+" -r, --reloc ZobraziÅ¥ relokaÄné záznamy zo súboru\n"
+" -R, --dynamic-reloc ZobraziÅ¥ dynamické relokaÄné záznamy zo súboru\n"
+" @<súbor> NaÄítaÅ¥ voľby zo <súboru>\n"
+" -v, --version Zobraziť verziu tohto programu\n"
+" -i, --info Vypísať objektové formáty a podporované architektúry\n"
+" -H, --help Zobraziť tohto pomocníka\n"
+
+#: objdump.c:210
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" Následujúce prepínaÄe sú voliteľné:\n"
+
+#: objdump.c:211
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+"\n"
+msgstr ""
+" -b, --target=BFDNÃZOV UviesÅ¥ cieľový objektový formát ako BFDNÃZOV\n"
+" -m, --architecture=STROJ Uviesť cieľovú architektúru ako STROJ\n"
+" -j, --section=NÃZOV ZobrazovaÅ¥ iba informácie sekcie NÃZOV\n"
+" -M, --disassembler-options=VOĽ Odovzdať text VOĽ disassembleru\n"
+" -EB --endian=big Disassembler má predpokladať formát big endian\n"
+" -EL --endian=little Disassembler má predpokladať formát little endian\n"
+" --file-start-context VložiÅ¥ kontext od zaÄiatku súboru (s -S)\n"
+" -I, --include=ADR Pridať ADR do zoznamu adresárov pre hľadanie zdrojových súborov\n"
+" -l, --line-numbers Na výstupe uvádzaÅ¥ Äísla riadkov a názvy súborov\n"
+" -C, --demangle[=Å TÃL] DekódovaÅ¥ neformátované/spracované názvy symbolov\n"
+" Å TÃL, ak je uvedený, môlže byÅ¥ „auto“, „gnu“,\n"
+" „lucid“, „arm“, „hp“, „edg“, „gnu-v3“, „java“\n"
+" alebo „gnat“\n"
+" -w, --wide Formátovať výstup na viac ako 80 stĺpcov\n"
+" -z, --disassemble-zeroes Disassember nemá preskakovať bloky núl\n"
+" --start-address=ADDR Spracúvať iba údaje ktorých adresa >= ADDR\n"
+" --stop-address=ADDR Spracúvať iba údaje ktorých adresa <= ADDR\n"
+" --prefix-addresses Disassember má vypisovať aj kompletné adresy\n"
+" --[no-]show-raw-insn Disassember má vedľa symbolického zápisu vypisovať aj hexadecimálny\n"
+" --adjust-vma=OFSET Pridať OFSET ku všetkým zobrazovaným adresám sekcií\n"
+" --special-syms Zahrnúť do výpisu symbolov špeciálne symboly\n"
+"\n"
+
+#: objdump.c:395
+#, c-format
+msgid "Sections:\n"
+msgstr "Sekcie:\n"
+
+#: objdump.c:398 objdump.c:402
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Názov Veľkosť VMA LMA Súb. vyp. Zar."
+
+#: objdump.c:404
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Názov Veľkosť VMA LMA Súb. vyp. Zar."
+
+#: objdump.c:408
+#, c-format
+msgid " Flags"
+msgstr " Príznaky"
+
+#: objdump.c:410
+#, c-format
+msgid " Pg"
+msgstr " Pg"
+
+#: objdump.c:453
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: nie je dynamický objekt"
+
+#: objdump.c:878 objdump.c:902
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr " (Ofset súboru: 0x%lx)"
+
+#: objdump.c:1818
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+"\n"
+"Rozloženie sekcie %s:\n"
+
+#: objdump.c:1980
+#, c-format
+msgid "Can't use supplied machine %s"
+msgstr "Nedá sa použiť zadaná architekúra %s"
+
+#: objdump.c:1999
+#, c-format
+msgid "Can't disassemble for architecture %s\n"
+msgstr "Nedá sa rozložiť pre architekúru %s\n"
+
+#: objdump.c:2114
+#, c-format
+msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"Nedá sa získať obsah pre sekciu „%s“.\n"
+
+#: objdump.c:2125
+#, c-format
+msgid ""
+"\n"
+"Can't uncompress section '%s'.\n"
+msgstr ""
+"\n"
+"Nie je možné dekomprimovať sekciu „%s“.\n"
+
+#: objdump.c:2305
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"Nenachádza sa žiadna sekcia %s\n"
+"\n"
+
+#: objdump.c:2314
+#, c-format
+msgid "Reading %s section of %s failed: %s"
+msgstr "Čítanie %s sekcie z %s zlyhalo: %s"
+
+#: objdump.c:2358
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"Obsah %s sekcie:\n"
+"\n"
+
+#: objdump.c:2489
+#, c-format
+msgid "architecture: %s, "
+msgstr "architektúra: %s, "
+
+#: objdump.c:2492
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "príznaky 0x%08x:\n"
+
+#: objdump.c:2506
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"Å¡tartovacia adresa 0x"
+
+#: objdump.c:2569
+#, c-format
+msgid "Contents of section %s:"
+msgstr "Obsah sekcie %s:"
+
+#: objdump.c:2571
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr " (PoÄínajúc na ofsete súboru: 0x%lx)"
+
+#: objdump.c:2678
+#, c-format
+msgid "no symbols\n"
+msgstr "žiadne symboly\n"
+
+#: objdump.c:2685
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr "žiadne informácie pre Äíslo symbolu %ld\n"
+
+#: objdump.c:2688
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "nedá sa urÄiÅ¥ typ Äísla symbolu %ld\n"
+
+#: objdump.c:2965
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: formát súboru %s\n"
+
+#: objdump.c:3023
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: tlaÄ ladiacich informácii zlahala"
+
+#: objdump.c:3123
+#, c-format
+msgid "In archive %s:\n"
+msgstr "V archíve %s:\n"
+
+#: objdump.c:3238
+msgid "error: the start address should be before the end address"
+msgstr "chyba: štart adresa by mala byť pred koncovou adresou"
+
+#: objdump.c:3243
+msgid "error: the stop address should be after the start address"
+msgstr "chyba: stop adresa by mala byť po štart adrese"
+
+#: objdump.c:3252
+msgid "unrecognized -E option"
+msgstr "nerozpoznaná -E voľba"
+
+#: objdump.c:3263
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "nerozpoznaný --endian typ „%s“"
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr "bola uvedená neplatná hodnota pragma code_page.\n"
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: Zlý typový kód 0x%x"
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment zlyhal: %s"
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent zlyhal: %s"
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf bez predchádzajúcej funkcie"
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: neoÄakávané .ef\n"
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: žiadna rozpoznaná ladiaca informácia"
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "Posledné testovacie záznamy pred chybou:\n"
+
+#: readelf.c:312
+#, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "Nedá sa vyhľadať 0x%lx pre %s\n"
+
+#: readelf.c:327
+#, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Nedostatok pamäti pri alokácii 0x%lx bajtov pre %s\n"
+
+#: readelf.c:337
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Nedá sa preÄítaÅ¥ v 0x%lx bajtoch z %s\n"
+
+#: readelf.c:642
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Nepoznám realokácie pre architektúru tohto poÄítaÄa\n"
+
+#: readelf.c:662 readelf.c:690 readelf.c:756 readelf.c:784
+msgid "relocs"
+msgstr "relocs"
+
+#: readelf.c:673 readelf.c:701 readelf.c:767 readelf.c:795
+msgid "out of memory parsing relocs\n"
+msgstr "nedostatok pamäte pri spracúvaní relokaÄných záznamov\n"
+
+#: readelf.c:901
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr " Ofset Info Typ Hodnota sym Názov sym + SÄítanec\n"
+
+#: readelf.c:903
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr " Ofset Info Typ Hodnota sym Názov sym + SÄítanec\n"
+
+#: readelf.c:908
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " Ofset Info Typ Hodnota sym Názov sym\n"
+
+#: readelf.c:910
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " Ofset Info Typ Hodnota sym Názov sym\n"
+
+#: readelf.c:918
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr " Ofset Info Typ Hodnota sym Názov sym + SÄítanec\n"
+
+#: readelf.c:920
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr " Ofset Info Typ Hodnota sym Názov sym + SÄítanec\n"
+
+#: readelf.c:925
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr " Ofset Info Typ Hodnota sym Názov sym\n"
+
+#: readelf.c:927
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " Ofset Info Typ Hodnota sym Názov sym\n"
+
+#: readelf.c:1204 readelf.c:1324 readelf.c:1332
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "norozpoznaný: %-7lx"
+
+#: readelf.c:1229
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<neznámy sÄítanec: %lx>"
+
+#: readelf.c:1289
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr "<index tabuľky reťazcov: %3ld>"
+
+#: readelf.c:1291
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<poškodený index tabuľky reťazcov: %3ld>"
+
+#: readelf.c:1657
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "Špecifické pre procesor: %lx"
+
+#: readelf.c:1681
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "Å pecifické pre operaÄný systém: %lx"
+
+#: readelf.c:1685 readelf.c:2562
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<neznámy>: %lx"
+
+#: readelf.c:1698
+msgid "NONE (None)"
+msgstr "NONE (Žiadny)"
+
+#: readelf.c:1699
+msgid "REL (Relocatable file)"
+msgstr "REL (RelokaÄný súbor)"
+
+#: readelf.c:1700
+msgid "EXEC (Executable file)"
+msgstr "EXEC (Spustiteľný súbor)"
+
+#: readelf.c:1701
+msgid "DYN (Shared object file)"
+msgstr "DYN (Súbor zdielaného objektu)"
+
+#: readelf.c:1702
+msgid "CORE (Core file)"
+msgstr "CORE (Súbor jadra)"
+
+#: readelf.c:1706
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "Špecifické pre procesor: (%x)"
+
+#: readelf.c:1708
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "Špecifické pre OS: (%x)"
+
+#: readelf.c:1710 readelf.c:2779
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<neznámy>: %x"
+
+#: readelf.c:1722
+msgid "None"
+msgstr "Žiadny"
+
+#: readelf.c:1829
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr "<neznáme>: 0x%x"
+
+#: readelf.c:2086
+msgid "unknown"
+msgstr "neznáme"
+
+#: readelf.c:2087
+msgid "unknown mac"
+msgstr "neznáma mac"
+
+#: readelf.c:2399
+msgid "Standalone App"
+msgstr "Samostatná aplikácia"
+
+#: readelf.c:2402 readelf.c:3221 readelf.c:3237
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<neznámy>: %x"
+
+#: readelf.c:2826
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Použitie: readelf <voľby> elf-súbor(y)\n"
+
+#: readelf.c:2827
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr " Zobraziť informácie o obsahu súborov formátu ELF\n"
+
+#: readelf.c:2828
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -w[lLiaprmfFsoR] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" Voľby sú:\n"
+" -a --all Ekvivalent: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header ZobraziÅ¥ halviÄku ELF súboru\n"
+" -l --program-headers ZobraziÅ¥ hlaviÄky programu\n"
+" --segments Alias pre --program-headers\n"
+" -S --section-headers ZobraziÅ¥ hlaviÄky sekcií\n"
+" --sections Alias pre --section-headers\n"
+" -g --section-groups Zobraziť skupiny sekcií\n"
+" -t --section-details Zobraziť podrobnosti sekcií\n"
+" -e --headers Ekvivalent: -h -l -S\n"
+" -s --syms Zobraziť tabuľku symbolov\n"
+" --symbols Alias pre --syms\n"
+" -n --notes Zobraziť poznámky core (ak sú prítomné)\n"
+" -r --relocs Zobraziť relokácie (ak sú prítomné)\n"
+" -u --unwind Zobraziť informácie o rozvinutí (ak sú prítomné)\n"
+" -d --dynamic Zobraziť dynamickú sekciu (ak je prítomná)\n"
+" -V --version-info Zobraziť sekcie verzií (ak sú prítomné)\n"
+" -A --arch-specific Zobraziť informácie špeicické pre architektúru (ak nejaké sú).\n"
+" -c --archive-index Zobraziť index symbolov/súborov v archíve\n"
+" -D --use-dynamic Použiť na zobrazenie symbolov ifnormácie dynamickej sekcie\n"
+" -x --hex-dump=<Äíslo|názov>\n"
+" VypísaÅ¥ obsah sekcie <Äíslo|názov> vo forme bajtov\n"
+" -p --string-dump=<Äíslo|názov>\n"
+" VypísaÅ¥ obsah sekcie <Äíslo|názov> vo forme reÅ¥azcov\n"
+" -w[liaprmfFsoR] alebo\n"
+" --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+" Zobraziť ladiacich sekcií DWARF2\n"
+
+#: readelf.c:2856
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+" -i --instruction-dump=<Äíslo|názov>\n"
+" RozložiÅ¥ obsah sekcie <Äíslo|názov>\n"
+
+#: readelf.c:2860
+#, 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 Zobraziť histogram dĺžok zoznamu oblasti\n"
+" -W --wide UmožniÅ¥ prekroÄenie 80 znakov\n"
+" @<súbor> Čítať voľby zo <súbor>u\n"
+" -H --help Zobraziť túto informáciu\n"
+" -v --version Zobraziť readelf verziu\n"
+
+#: readelf.c:2888 readelf.c:2916 readelf.c:2920 readelf.c:11007
+msgid "Out of memory allocating dump request table.\n"
+msgstr "Nedostatok pamäte pri alokácii tabuľky požiadaviek o výpis.\n"
+
+#: readelf.c:3090 readelf.c:3160
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Nerozpoznaná ladiaca voľba „%s“\n"
+
+#: readelf.c:3191
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Neplatná voľba „-%c“\n"
+
+#: readelf.c:3205
+msgid "Nothing to do.\n"
+msgstr "Nie je Äo robiÅ¥.\n"
+
+#: readelf.c:3217 readelf.c:3233 readelf.c:6495
+msgid "none"
+msgstr "žiadny"
+
+#: readelf.c:3234
+msgid "2's complement, little endian"
+msgstr "komplement 2, malý endián"
+
+#: readelf.c:3235
+msgid "2's complement, big endian"
+msgstr "domplement 2, veľký endián"
+
+#: readelf.c:3253
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "Nie je ELF súbor - na zaÄiatku má nesprávne kúzelné bajty\n"
+
+#: readelf.c:3263
+#, c-format
+msgid "ELF Header:\n"
+msgstr "ELF HlaviÄka:\n"
+
+#: readelf.c:3264
+#, c-format
+msgid " Magic: "
+msgstr " Kúzlo: "
+
+#: readelf.c:3268
+#, c-format
+msgid " Class: %s\n"
+msgstr " Trieda: %s\n"
+
+#: readelf.c:3270
+#, c-format
+msgid " Data: %s\n"
+msgstr " Dáta: %s\n"
+
+#: readelf.c:3272
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " Verzia: %d %s\n"
+
+#: readelf.c:3279
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS / ABI: %s\n"
+
+#: readelf.c:3281
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " ABI verzia: %d\n"
+
+#: readelf.c:3283
+#, c-format
+msgid " Type: %s\n"
+msgstr " Typ: %s\n"
+
+#: readelf.c:3285
+#, c-format
+msgid " Machine: %s\n"
+msgstr " PoÄítaÄ: %s\n"
+
+#: readelf.c:3287
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " Verzia: 0x%lx\n"
+
+#: readelf.c:3290
+#, c-format
+msgid " Entry point address: "
+msgstr " Adresa vstupného bodu: "
+
+#: readelf.c:3292
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" ZaÄiatok hlaviÄiek programu: "
+
+#: readelf.c:3294
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (bajtov do súboru)\n"
+" ZaÄiatok sekcie hlaviÄiek: "
+
+#: readelf.c:3296
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (bajtov do súboru)\n"
+
+#: readelf.c:3298
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Príznaky: 0x%lx%s\n"
+
+#: readelf.c:3301
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " VeľkosÅ¥ tejto hlaviÄky: %ld (bajtov)\n"
+
+#: readelf.c:3303
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " VeľkosÅ¥ hlaviÄiek programu: %ld (bajtov)\n"
+
+#: readelf.c:3305
+#, c-format
+msgid " Number of program headers: %ld\n"
+msgstr " PoÄet hlaviÄiek programu: %ld\n"
+
+#: readelf.c:3307
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " VeľkosÅ¥ sekcie hlaviÄiek: %ld (bajtov)\n"
+
+#: readelf.c:3309
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " PoÄet hlaviÄiek sekcií: %ld"
+
+#: readelf.c:3314
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " Index tabuľky reÅ¥azcov hlaviÄky sekcie: %ld"
+
+#: readelf.c:3350 readelf.c:3383
+msgid "program headers"
+msgstr "hlaviÄky programu"
+
+#: readelf.c:3421 readelf.c:3719 readelf.c:3760 readelf.c:3819 readelf.c:3884
+#: readelf.c:4553 readelf.c:4577 readelf.c:5827 readelf.c:5871 readelf.c:6069
+#: readelf.c:7127 readelf.c:7141 readelf.c:7635 readelf.c:7651 readelf.c:7694
+#: readelf.c:7719 readelf.c:9475 readelf.c:9667 readelf.c:10194
+#: readelf.c:10857
+msgid "Out of memory\n"
+msgstr "Nedostatok pamäte\n"
+
+#: readelf.c:3448
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"V tomto súbore nie sú žiadne hlaviÄky programu.\n"
+
+#: readelf.c:3454
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Typ súboru Elf je %s\n"
+
+#: readelf.c:3455
+#, c-format
+msgid "Entry point "
+msgstr "Bod vstupu "
+
+#: readelf.c:3457
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"PoÄet nájdených hlaviÄiek programu je %d, zaÄínam na offsete "
+
+#: readelf.c:3469 readelf.c:3471
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"HlaviÄky programu:\n"
+
+#: readelf.c:3475
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Typ Ofset VirtAdr FyzAdr VeľSúb VeľPam Prí Zarovnanie\n"
+
+#: readelf.c:3478
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Typ Ofset VirtAdr FyzAdr VeľSúb VeľPam Prí Zarovnanie\n"
+
+#: readelf.c:3482
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " Typ Ofset VirtAdr FyzAdr\n"
+
+#: readelf.c:3484
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " VeľSúb VeľPam Prízn Zarovnanie\n"
+
+#: readelf.c:3577
+msgid "more than one dynamic segment\n"
+msgstr "viac ako jeden dynamický segment\n"
+
+#: readelf.c:3593
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr "v dynamickom segmente nebola sekcia .dynamic\n"
+
+#: readelf.c:3608
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr "v dynamický segment neobsahoval sekciu .dynamic\n"
+
+#: readelf.c:3611
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr "v dynamický segment neobsahoval sekciu .dynamic ako prvú\n"
+
+#: readelf.c:3619
+msgid "Unable to find program interpreter name\n"
+msgstr "Nedá sa nájsÅ¥ názov prekladaÄa programu\n"
+
+#: readelf.c:3626
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr "Vnútorná chyba: nepodarilo sa vytvoriť formátovací reťazec pre zobrazenie interpreta programu\n"
+
+#: readelf.c:3630
+msgid "Unable to read program interpreter name\n"
+msgstr "Nepodarilo sa preÄítaÅ¥ názov interpreta programu\n"
+
+#: readelf.c:3633
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [Požaduje sa prekladaÄ programu: %s]"
+
+#: readelf.c:3645
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" Sekcia na mapovanie segmentu:\n"
+
+#: readelf.c:3646
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " Sekcie segmentu...\n"
+
+#: readelf.c:3681
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "Virtuálne adresy sa nedajú preložiÅ¥ bez hlaviÄiek programu.\n"
+
+#: readelf.c:3697
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "Virtuálna adresa 0x%lx sa nenachádza v žiadnom PT_LOAD segmente.\n"
+
+#: readelf.c:3711 readelf.c:3752
+msgid "section headers"
+msgstr "hlaviÄky sekcie"
+
+#: readelf.c:3796 readelf.c:3861
+msgid "symbols"
+msgstr "symboly"
+
+#: readelf.c:3806 readelf.c:3871
+msgid "symtab shndx"
+msgstr "symtab shndx"
+
+#: readelf.c:4130 readelf.c:4537
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"V tomto súbore nie sú žiadne sekcie.\n"
+
+#: readelf.c:4136
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "PoÄet hlaviÄiek sekcií je %d, zaÄínajúc na offsete 0x%lx:\n"
+
+#: readelf.c:4156 readelf.c:4653 readelf.c:4879 readelf.c:5178 readelf.c:5584
+#: readelf.c:7445
+msgid "string table"
+msgstr "tabuľka reťazcov"
+
+#: readelf.c:4223
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "Sekcia %d má neplatnú sh_entsize %lx (oÄakávaná %lx)\n"
+
+#: readelf.c:4243
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Súbor obsahuje viacnásobné dynamické tabuľky symbolov\n"
+
+#: readelf.c:4256
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Súbor obsahuje viacnásobné dynamické reťazcové tabuľky\n"
+
+#: readelf.c:4261
+msgid "dynamic strings"
+msgstr "dynamické reťazce"
+
+#: readelf.c:4268
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Súbor obsahuje viacnásobné symtam shndx tabuľky\n"
+
+#: readelf.c:4320
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"HlaviÄky sekcie:\n"
+
+#: readelf.c:4322
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"HlaviÄka sekcie:\n"
+
+#: readelf.c:4328 readelf.c:4339 readelf.c:4350
+#, c-format
+msgid " [Nr] Name\n"
+msgstr " [Nr] Názov\n"
+
+#: readelf.c:4329
+#, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr " Typ Adr Ofs Veľk ES Lk Inf Al\n"
+
+#: readelf.c:4333
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] Názov Typ Adr Ofs Veľk ES Prí Lk Inf Al\n"
+
+#: readelf.c:4340
+#, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr " Typ Adresa Ofs Veľk ES Lk Inf Al\n"
+
+#: readelf.c:4344
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] Názov Typ Adresa Ofs Veľk ES Prí Lk Inf Al\n"
+
+#: readelf.c:4351
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr " Typ Adresa Ofset Odkaz\n"
+
+#: readelf.c:4352
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr " Veľkosť EntVeľkosť Info Zarovnanie\n"
+
+#: readelf.c:4356
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [Nr] Názov Typ Adresa Ofset\n"
+
+#: readelf.c:4357
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " Veľkosť EntVeľk Prízn Odkaz Info Zarovnanie\n"
+
+#: readelf.c:4362
+#, c-format
+msgid " Flags\n"
+msgstr " Príznaky\n"
+
+#: readelf.c:4495
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"KÄ¾ÃºÄ k príznakom:\n"
+" W (zápísať), A (alokovať), X (vykonať), M (spojiť), S (reťazce)\n"
+" I (info), L (poriadie odkazov), G (skupina), x (neznámy)\n"
+" O (vyžadované extra OS spracovanie), o (špecifické pre OS), p (špecifické pre procesor)\n"
+
+#: readelf.c:4513
+#, c-format
+msgid "[<unknown>: 0x%x]"
+msgstr "[<neznámy>: 0x%x]"
+
+#: readelf.c:4544
+msgid "Section headers are not available!\n"
+msgstr "HlaviÄky sekcie nie sú dostupné!\n"
+
+#: readelf.c:4568
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"V tomto súbore nie sú žiadne skupiny sekcie.\n"
+
+#: readelf.c:4604
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "Zlá sh_link v skupinovej sekcii „%s“\n"
+
+#: readelf.c:4623
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "Zlá sh_link v skupinovej sekcii „%s“\n"
+
+#: readelf.c:4661 readelf.c:7851 readelf.c:7932
+msgid "section data"
+msgstr "dáta sekcie"
+
+#: readelf.c:4673
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [Index] Názov\n"
+
+#: readelf.c:4687
+#, c-format
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "sekcia [%5u] v skupinovej sekcii [%5u] > maximum sekcia [%5u]\n"
+
+#: readelf.c:4696
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "sekcia [%5u] v skupinovej sekcii [%5u] už je v skupinovej sekcii [%5u]\n"
+
+#: readelf.c:4709
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr "sekcia 0 v skupinovej sekcii [%5u]\n"
+
+#: readelf.c:4804
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"„%s“ relokaÄná sekcia na ofsete 0x%lx obsahuje %ld bajtov:\n"
+
+#: readelf.c:4816
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"V súbore sa nenachádzajú žiadne dynamické relokácie.\n"
+
+#: readelf.c:4840
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"RelokaÄná sekcia "
+
+#: readelf.c:4845 readelf.c:5254 readelf.c:5268 readelf.c:5599
+#, c-format
+msgid "'%s'"
+msgstr "„%s“"
+
+#: readelf.c:4847 readelf.c:5270 readelf.c:5601
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " na offsete 0x%lx obsahuje %lu položiek:\n"
+
+#: readelf.c:4898
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"V tomto súbore nie sú žiadne relokácie.\n"
+
+#: readelf.c:5077 readelf.c:5450
+msgid "unwind table"
+msgstr "rozvinúť tabuľku"
+
+#: readelf.c:5127 readelf.c:5531
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Preskakujem neoÄakávaný typ relokácie %s\n"
+
+#: readelf.c:5186 readelf.c:5592 readelf.c:5643
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"V tomto súbore nie sú žiadne rozvinuté sekcie.\n"
+
+#: readelf.c:5249
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"Nepodarilo sa nájsť informácie o rozvinutí sekcie pre "
+
+#: readelf.c:5261
+msgid "unwind info"
+msgstr "informácie o rozvinutí"
+
+#: readelf.c:5263 readelf.c:5598
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"Rozvinúť sekciu "
+
+#: readelf.c:5808 readelf.c:5852
+msgid "dynamic section"
+msgstr "dynamická sekcia"
+
+#: readelf.c:5929
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"V tomto súbore nie sú žiadne dynamické sekcie.\n"
+
+#: readelf.c:5967
+msgid "Unable to seek to end of file!\n"
+msgstr "Nepodarilo sa presunúť na koniec súboru!\n"
+
+#: readelf.c:5980
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Nedá sa urÄiÅ¥ poÄet symbolov na naÄítanie\n"
+
+#: readelf.c:6015
+msgid "Unable to seek to end of file\n"
+msgstr "Nedá sa nájsť koniec súboru\n"
+
+#: readelf.c:6022
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Nedá sa urÄiÅ¥ dĺžka dynamickej tabuľky reÅ¥azcov\n"
+
+#: readelf.c:6027
+msgid "dynamic string table"
+msgstr "dynamická tabuľka reťazcov"
+
+#: readelf.c:6062
+msgid "symbol information"
+msgstr "infomácia o symbole"
+
+#: readelf.c:6087
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"Dynamická sekcia na offsete 0x%lx obsahuje %u položiek:\n"
+
+#: readelf.c:6090
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " ZnaÄka Typ Názov/hodnota\n"
+
+#: readelf.c:6126
+#, c-format
+msgid "Auxiliary library"
+msgstr "Pomocná knižnica"
+
+#: readelf.c:6130
+#, c-format
+msgid "Filter library"
+msgstr "Knižnica filtra"
+
+#: readelf.c:6134
+#, c-format
+msgid "Configuration file"
+msgstr "KonfiguraÄný súbor"
+
+#: readelf.c:6138
+#, c-format
+msgid "Dependency audit library"
+msgstr "Auditorská knižnica závislostí"
+
+#: readelf.c:6142
+#, c-format
+msgid "Audit library"
+msgstr "Auditorská knižnica"
+
+#: readelf.c:6160 readelf.c:6188 readelf.c:6216
+#, c-format
+msgid "Flags:"
+msgstr "Príznaky:"
+
+#: readelf.c:6163 readelf.c:6191 readelf.c:6218
+#, c-format
+msgid " None\n"
+msgstr " Žiadne\n"
+
+#: readelf.c:6339
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Zdieľaná knižnica: [%s]"
+
+#: readelf.c:6342
+#, c-format
+msgid " program interpreter"
+msgstr " prekladaÄ programu"
+
+#: readelf.c:6346
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "Knižnica soname: [%s]"
+
+#: readelf.c:6350
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "Knižnica rpath: [%s]"
+
+#: readelf.c:6354
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "Knižnica runpath: [%s]"
+
+#: readelf.c:6417
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Nepotrebný objekt: [%s]\n"
+
+#: readelf.c:6541
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Sekcia definície verzie „%s“ obsahuje %u položiek:\n"
+
+#: readelf.c:6544
+#, c-format
+msgid " Addr: 0x"
+msgstr " Adr: 0x"
+
+#: readelf.c:6546 readelf.c:6648 readelf.c:6769
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr " Ofset: %#08lx Odkaz: %u (%s)\n"
+
+#: readelf.c:6554
+msgid "version definition section"
+msgstr "sekcia definície verzie"
+
+#: readelf.c:6583
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: Rev: %d Príznaky: %s"
+
+#: readelf.c:6586
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " Index: %d Cnt: %d "
+
+#: readelf.c:6597
+#, c-format
+msgid "Name: %s\n"
+msgstr "Názov: %s\n"
+
+#: readelf.c:6599
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Index názvov: %ld\n"
+
+#: readelf.c:6616
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: RodiÄ %d: %s\n"
+
+#: readelf.c:6619
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: RodiÄ %d, index názvov: %ld\n"
+
+#: readelf.c:6623
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr " Pom def verzie za koncom sekcie\n"
+
+#: readelf.c:6628
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr " Definícia verzie za koncom sekcie\n"
+
+#: readelf.c:6643
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Sekcia potreby verzie „%s“ obsahuje %u položiek:\n"
+
+#: readelf.c:6646
+#, c-format
+msgid " Addr: 0x"
+msgstr " Adr: 0x"
+
+#: readelf.c:6656
+msgid "version need section"
+msgstr "sekcia potreby verzie"
+
+#: readelf.c:6681
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: Verzia: %d"
+
+#: readelf.c:6684
+#, c-format
+msgid " File: %s"
+msgstr " Súbor: %s"
+
+#: readelf.c:6686
+#, c-format
+msgid " File: %lx"
+msgstr " Súbor: %lx"
+
+#: readelf.c:6688
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " PoÄet: %d\n"
+
+#: readelf.c:6708
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: Názov: %s"
+
+#: readelf.c:6711
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: Index názvu: %lx"
+
+#: readelf.c:6714
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Príznaky: %s Verzia: %d\n"
+
+#: readelf.c:6721
+#, c-format
+msgid " Version need aux past end of section\n"
+msgstr " Pom. sekcia potreby verzie za koncom sekcie\n"
+
+#: readelf.c:6726
+#, c-format
+msgid " Version need past end of section\n"
+msgstr " Sekcia potreby verzie za koncom sekcie\n"
+
+#: readelf.c:6760
+msgid "version string table"
+msgstr "tabuľka reťazcov verzie"
+
+#: readelf.c:6764
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Sekcia symbolov verzie „%s“ obsahuje %d položiek:\n"
+
+#: readelf.c:6767
+#, c-format
+msgid " Addr: "
+msgstr " Adr: "
+
+#: readelf.c:6777
+msgid "version symbol data"
+msgstr "dáta symbolu verzie"
+
+#: readelf.c:6804
+msgid " 0 (*local*) "
+msgstr " 0 (*lokálny*) "
+
+#: readelf.c:6808
+msgid " 1 (*global*) "
+msgstr " 1 (*globálny*) "
+
+#: readelf.c:6845 readelf.c:7512
+msgid "version need"
+msgstr "nutnosť verzie"
+
+#: readelf.c:6855
+msgid "version need aux (2)"
+msgstr "nutnosť verzie aux (2)"
+
+#: readelf.c:6870 readelf.c:6925
+msgid "*invalid*"
+msgstr "*neplatné*"
+
+#: readelf.c:6900 readelf.c:7577
+msgid "version def"
+msgstr "def verzie"
+
+#: readelf.c:6920 readelf.c:7592
+msgid "version def aux"
+msgstr "verzia def aux"
+
+#: readelf.c:6954
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"V tomto súbore neboli nájdené informácie o verzii.\n"
+
+#: readelf.c:7075
+#, c-format
+msgid "<other>: %x"
+msgstr "<iné>: %x"
+
+#: readelf.c:7133
+msgid "Unable to read in dynamic data\n"
+msgstr "Nedá sa ÄítaÅ¥ v dynamických dátach\n"
+
+#: readelf.c:7224 readelf.c:7264 readelf.c:7288 readelf.c:7318 readelf.c:7342
+msgid "Unable to seek to start of dynamic information\n"
+msgstr "Nepodarilo sa presunúť na zaÄiatok dynamických informácií\n"
+
+#: readelf.c:7230 readelf.c:7270
+msgid "Failed to read in number of buckets\n"
+msgstr "Zlyhalo Äítanie v Äíslach oblastí\n"
+
+#: readelf.c:7236
+msgid "Failed to read in number of chains\n"
+msgstr "Zlyhalo Äítanie v Äíslach zreÅ¥azení\n"
+
+#: readelf.c:7326
+msgid "Failed to determine last chain length\n"
+msgstr "Nepodarilo sa urÄiÅ¥ dĺžku reÅ¥aze\n"
+
+#: readelf.c:7363
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"Tabuľka symbolov pre obraz:\n"
+
+#: readelf.c:7365 readelf.c:7383
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Čísl Buc: Hodn. Veľk. Typ Väz. Vid Ndx Názov\n"
+
+#: readelf.c:7367 readelf.c:7385
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Čísl Buc: Hodnota Veľk. Typ Väz. Vid Ndx Názov\n"
+
+#: readelf.c:7381
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+"\n"
+"Tabuľka symbolov „.gnu.hash“ pre obraz:\n"
+
+#: readelf.c:7421
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Symbolická tabuľka „%s“ obsahuje %lu položiek:\n"
+
+#: readelf.c:7425
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Čísl: Hodn. Veľ. Typ Väzba Vid Ndx Názov\n"
+
+#: readelf.c:7427
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Čísl: Hodnota Veľ. Typ Väzba Vid Ndx Názov\n"
+
+#: readelf.c:7483
+msgid "version data"
+msgstr "verzia"
+
+#: readelf.c:7525
+msgid "version need aux (3)"
+msgstr "potreba verzie aux (3)"
+
+#: readelf.c:7552
+msgid "bad dynamic symbol\n"
+msgstr "chybný dynamický symbol\n"
+
+#: readelf.c:7616
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"Informácia o dynamickom symbole nie je dostupná pre zobrazenie symbolov.\n"
+
+#: readelf.c:7628
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Histogram pre dĺžku zoznamu blokov (celkovo z %lu blokov):\n"
+
+#: readelf.c:7630 readelf.c:7700
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " Veľkosť Číslo %% z celku Pokrytie\n"
+
+#: readelf.c:7698
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Histogram dĺžky bucket listu „.gnu.hash“ (celkom z %lu bucketov):\n"
+
+#: readelf.c:7764
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Dynamický info segment na posune 0x%lx obsahuje %d položiek:\n"
+
+#: readelf.c:7767
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr " Čísl: Názov Zviazaný Príznaky\n"
+
+#: readelf.c:7819
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"Zostaviť výpis pamäte zo sekcie %s\n"
+
+#: readelf.c:7844 readelf.c:7922
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"Sekcia „%s“ nemá žiadne dáta na vypísanie.\n"
+
+#: readelf.c:7855
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+"\n"
+"Výpis reťazcov sekcie „%s“:\n"
+
+#: readelf.c:7873
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " Pozn.: Oproti tejto sekcii existujú relokácie, ale tieto NEBOLI v tomto výpise použité.\n"
+
+#: readelf.c:7900
+#, c-format
+msgid " No strings found in this section."
+msgstr " V tejto sekcii neboli nájdené žiadne reťazce."
+
+#: readelf.c:7927
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"Hexadecimálny výpis pamäte sekcie „%s“:\n"
+
+#: readelf.c:7952
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " POZN.: Oproti tejto sekcii existujú relokácie, ale tieto NEBOLI v tomto výpise použité.\n"
+
+#: readelf.c:8135
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr "Chýba znalosÅ¥ 32-bitových typov reloc používaných v DWARF sekciách stroja Äíslo %d\n"
+
+#: readelf.c:8432
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr "nebolo možné použiÄ nepodporovaný typ reloc %d na sekciu %s\n"
+
+#: readelf.c:8440
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "preskakuje sa neplatný posun relokácie 0x%lx v sekcii %s\n"
+
+#: readelf.c:8461
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr "preskakuje sa neoÄakávaný typ symbolu %s v %ld-tej relokácii v sekcii %s\n"
+
+#: readelf.c:8503
+#, c-format
+msgid "%s section data"
+msgstr "%s dáta sekcie"
+
+#: readelf.c:8568
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+"\n"
+"Sekcia „%s“ nemá žiadne ladiace dáta.\n"
+
+#: readelf.c:8603
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "Nerozpoznaná ladiaca sekcia: %s\n"
+
+#: readelf.c:8631
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr "Sekcia „%s“ nebola vypísaná, pretože neexistuje!\n"
+
+#: readelf.c:8669
+#, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "Pre sekcie %d nebol urobený výpis z pamäte, pretože neexistuje!\n"
+
+#: readelf.c:9118
+msgid "attributes"
+msgstr "atribúty"
+
+#: readelf.c:9139
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "CHYBA: Zlá dĺžka sekcie (%d > %d)\n"
+
+#: readelf.c:9170
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "CHYBA: Zlá dĺžka podsekcie (%d > %d)\n"
+
+#: readelf.c:9229
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "Neznámy formát '%c'\n"
+
+#: readelf.c:9382 readelf.c:9897
+msgid "liblist"
+msgstr "liblist"
+
+#: readelf.c:9469
+msgid "options"
+msgstr "voľby"
+
+#: readelf.c:9499
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Sekcia „%s“ obsahuje %d položiek:\n"
+
+#: readelf.c:9660
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr "bol nájdený zoznam konfliktov bez tabuľky dynamických symbolov\n"
+
+#: readelf.c:9676 readelf.c:9690
+msgid "conflict"
+msgstr "konflikt"
+
+#: readelf.c:9700
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Sekcia '.conflict' obsahuje %lu položiek:\n"
+
+#: readelf.c:9702
+msgid " Num: Index Value Name"
+msgstr " Čísl: Index Hodn. Názov"
+
+#: readelf.c:9734
+msgid "GOT"
+msgstr "GOT"
+
+#: readelf.c:9735
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+"\n"
+"Primárna GOT:\n"
+
+#: readelf.c:9736
+#, c-format
+msgid " Canonical gp value: "
+msgstr " Kanonická hodnota gp: "
+
+#: readelf.c:9740 readelf.c:9831
+#, c-format
+msgid " Reserved entries:\n"
+msgstr " Vyhradené položky:\n"
+
+#: readelf.c:9741
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr " %*s %10s %*s ÚÄel\n"
+
+#: readelf.c:9757
+#, c-format
+msgid " Local entries:\n"
+msgstr " Lokálne položky:\n"
+
+#: readelf.c:9758
+#, c-format
+msgid " %*s %10s %*s\n"
+msgstr " %*s %10s %*s\n"
+
+#: readelf.c:9773
+#, c-format
+msgid " Global entries:\n"
+msgstr " Globálne položky:\n"
+
+#: readelf.c:9774
+#, c-format
+msgid " %*s %10s %*s %*s %-7s %3s %s\n"
+msgstr " %*s %10s %*s %*s %-7s %3s %s\n"
+
+#: readelf.c:9829
+msgid "PLT GOT"
+msgstr "PLT GOT"
+
+#: readelf.c:9830
+#, c-format
+msgid ""
+"\n"
+"PLT GOT:\n"
+"\n"
+msgstr ""
+"\n"
+"PLT GOT:\n"
+"\n"
+
+#: readelf.c:9832
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr " %*s %*s ÚÄel\n"
+
+#: readelf.c:9840
+#, c-format
+msgid " Entries:\n"
+msgstr " Položky:\n"
+
+#: readelf.c:9841
+#, c-format
+msgid " %*s %*s %*s %-7s %3s %s\n"
+msgstr " %*s %*s %*s %-7s %3s %s\n"
+
+#: readelf.c:9904
+msgid "liblist string table"
+msgstr "tabuľka reťazcov liblist"
+
+#: readelf.c:9914
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Sekcia zoznamu knižníc „%s“ obsahuje %lu položiek:\n"
+
+#: readelf.c:9967
+msgid "NT_AUXV (auxiliary vector)"
+msgstr "NT_AUXV (pomocný vektor)"
+
+#: readelf.c:9969
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (štruktúra prstatus)"
+
+#: readelf.c:9971
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (registre pohyblivej Äiarky)"
+
+#: readelf.c:9973
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (štrutkúra prpsinfo)"
+
+#: readelf.c:9975
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (štrukúra úloh)"
+
+#: readelf.c:9977
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (štruktúra user_xfpregs)"
+
+#: readelf.c:9979
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr "NT_PPC_VMX (registre ppc Altivec)"
+
+#: readelf.c:9981
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr "NT_PPC_VSX (registre ppc VSX)"
+
+#: readelf.c:9983
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (štruktúra pstatus)"
+
+#: readelf.c:9985
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (registre pohyblivej Äiarky)"
+
+#: readelf.c:9987
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (štruktúra psinfo)"
+
+#: readelf.c:9989
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (štruktúra lwpstatus_t)"
+
+#: readelf.c:9991
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (štruktúra lwpsinfo_t)"
+
+#: readelf.c:9993
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (štruktúra win32_pstatus)"
+
+#: readelf.c:10001
+msgid "NT_VERSION (version)"
+msgstr "NT_VERSION (verzia)"
+
+#: readelf.c:10003
+msgid "NT_ARCH (architecture)"
+msgstr "NT_ARCH (architektúra)"
+
+#: readelf.c:10008 readelf.c:10031 readelf.c:10053
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "Neznámy typ poznámky: (0x%x08x)"
+
+#: readelf.c:10020
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr "NT_GNU_ABI_TAG (znaÄka verzie ABI)"
+
+#: readelf.c:10022
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr "NT_GNU_HWCAP (softvérové HWCAP informácie, ktoré dodáva DSO)"
+
+#: readelf.c:10024
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr "NT_GNU_BUILD_ID (reÅ¥azec bitov jedineÄného ID zostavenia)"
+
+#: readelf.c:10026
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr "NT_GNU_GOLD_VERSION (zlatá verzia)"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:10043
+msgid "NetBSD procinfo structure"
+msgstr "NetBSD štruktúra procinfo"
+
+#: readelf.c:10070 readelf.c:10084
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (štruktúra reg)"
+
+#: readelf.c:10072 readelf.c:10086
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (štruktúra fpreg)"
+
+#: readelf.c:10092
+#, c-format
+msgid "PT_FIRSTMACH+%d"
+msgstr "PT_FIRSTMACH+%d"
+
+#: readelf.c:10148
+msgid "notes"
+msgstr "poznámky"
+
+#: readelf.c:10154
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"Poznámky na posune 0x%08lx s dĺžkou 0x%08lx:\n"
+
+#: readelf.c:10156
+#, c-format
+msgid " Owner\t\tData size\tDescription\n"
+msgstr " Vlastník\t\tVeľkosť dát\tPopis\n"
+
+#: readelf.c:10175
+#, c-format
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "bola nájdená poškodená poznámka na posune %lx k poznámkam jadra\n"
+
+#: readelf.c:10177
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " typ: %lx, veľkosť názvu: %08lx, veľkosť popisu: %08lx\n"
+
+#: readelf.c:10275
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr "V jadrovom súbore nie sú žiadne segmenty poznámok.\n"
+
+#: readelf.c:10359
+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"
+msgstr ""
+"Táto inštancia readelf bola zostavená bez podpory pre\n"
+"64 bitový dátový typ, a tak nedokáže ÄítaÅ¥ 64 bitové ELF súbory.\n"
+
+#: readelf.c:10406
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s: Nepodarilo sa naÄítaÅ¥ hlaviÄku súboru\n"
+
+#: readelf.c:10419
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Súbor: %s\n"
+
+#: readelf.c:10572 readelf.c:10892
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: nepodarilo sa naÄítaÅ¥ hlaviÄku archívu\n"
+
+#: readelf.c:10595
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr "%s: idnex archívu je prázdny\n"
+
+#: readelf.c:10603 readelf.c:10626
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: nepodarilo sa naÄítaÅ¥ index archívu\n"
+
+#: readelf.c:10612
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr "%s: index archívu má maÅ¥ %ld položiek, ale veľkosÅ¥ hlaviÄky je príliÅ¡ malá\n"
+
+#: readelf.c:10619
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr "Nedostatok pamäte pri pokuse o Äítanie indexu symbolov archívu\n"
+
+#: readelf.c:10637
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr "Nedostatok pamäte pri pokuse o konverziu indexu symbolov archívu\n"
+
+#: readelf.c:10649
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr "%s: archív má index ale nemá symboly\n"
+
+#: readelf.c:10657
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr "Nedostatok pamäte pri pokuse o Äítanie indexu tabuľky symbolov archívu.\n"
+
+#: readelf.c:10664
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr "%s: nepodarilo sa preÄítaÅ¥ index tabuľky symbolov archívu\n"
+
+#: readelf.c:10673
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr "%s: nepodarilo sa preskoÄiÅ¥ tabuľku symbolov v archíve\n"
+
+#: readelf.c:10687
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr "%s: nepodarilo sa naÄítaÅ¥ hlaviÄku archívu po indexe archívu\n"
+
+#: readelf.c:10693
+#, c-format
+msgid "%s has no archive index\n"
+msgstr "%s: nemá index archívu\n"
+
+#: readelf.c:10704
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr "Nedostatok pamäte pri Äítaní dlhých názvov symbolov v archíve\n"
+
+#: readelf.c:10712
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr "%s: nepodarilo sa preÄítaÅ¥ tabuľku reÅ¥azcov dlhých názvov symbolov\n"
+
+#: readelf.c:10727
+#, c-format
+msgid "%s: failed to read archive header following long symbol names\n"
+msgstr "%s: nepodarilo sa naÄítaÅ¥ hlaviÄku archívu nasledujúcu dlhé názvy symbolov\n"
+
+#: readelf.c:10737
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr "%s: nie je možné vypísať index, pretože žiadny nebol nájdený\n"
+
+#: readelf.c:10744
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr "Index archívu %s: (%ld položiek, 0x%lx bajtov v tabuľke symbolov)\n"
+
+#: readelf.c:10754
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr "%s: nepodarilo sa presunúť sa na názov ÄalÅ¡ieho súboru\n"
+
+#: readelf.c:10761
+#, c-format
+msgid "%s: failed to read file name\n"
+msgstr "%s: nepodarilo sa preÄítaÅ¥ názov súboru\n"
+
+#: readelf.c:10773 readelf.c:10782
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr "Binárny %s obsahuje:\n"
+
+#: readelf.c:10787
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr "%s: bol dosiahnutý koniec tabuľky symbolov pred koncom indexu\n"
+
+#: readelf.c:10796
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr "%s: symboly zostávajú v indexovej tabuľke symbolov ale bez zodpovedajúcich položiek v indexovej tabuľke\n"
+
+#: readelf.c:10805
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr "%s: nepodarilo sa presunúť späť na zaÄiaok objektových súborov v archíve\n"
+
+#: readelf.c:10833
+#, c-format
+msgid "%s: invalid archive string table offset %lu\n"
+msgstr "%s: neplatný posun tabuľky reťazcov v archíve %lu\n"
+
+#: readelf.c:10849
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: zlý názov súboru archívu\n"
+
+#: readelf.c:10881
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s: nepodarilo sa nájsÅ¥ hlaviÄku ÄalÅ¡ieho archívu\n"
+
+#: readelf.c:10920
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "„%s“: Taký súbor neexistuje\n"
+
+#: readelf.c:10922
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr "Nepodarilo sa nájsť „%s“. Správa systémovej chyby: %s\n"
+
+#: readelf.c:10929
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "„%s“ nie je bežný súbor\n"
+
+#: readelf.c:10936
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr "Vstupný súbor „%s“ sa nedá ÄítaÅ¥.\n"
+
+#: readelf.c:10942
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr "%s: Nepodarilo sa preÄítaÅ¥ magické Äíslo súboru\n"
+
+#: readelf.c:10952
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr "Súbor %s nie je archív a tak nemožno zobraziť jeho index.\n"
+
+#: rename.c:124
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s: nedá sa nastaviÅ¥ Äas: %s"
+
+#. We have to clean up here.
+#: rename.c:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr "nepodarilo sa premenovať „%s“; dôvod: %s"
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr "nepodarilo sa skopírovať súbor „%s“; dôvod: %s"
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: nedostatok binárnych dát"
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr "unicode reÅ¥azec zakonÄený null-om"
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr "ID zdroja"
+
+#: resbin.c:208
+msgid "cursor"
+msgstr "kurzor"
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr "hlaviÄka menu"
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr "hlaviÄka menuex"
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr "posun menuex"
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "nepodporovaná verzia menu %d"
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr "hlaviÄka menuitem"
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr "menuitem"
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr "hlaviÄka dialogu"
+
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "neoÄakávaná verzia DIALOGEX %d"
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr "bodová veľkosť písma dialogu"
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr "informácia o písme pre dialogex"
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr "riadenie dialogu"
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr "riadenie dialogex"
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr "koniec riadenia dialogu"
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr "dáta riadenia dialogu"
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr "dĺžka reťazca stringtable"
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr "reťazec stringtable"
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr "hlaviÄka fontdir"
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr "fontdir"
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr "názov zariadenia fontdir"
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr "názov prednej strany fontdir"
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr "akcelerátor"
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr "hlaviÄka kurzora skupiny"
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "neoÄakávaný typ kurzora skupiny %d"
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr "kurzor skupiny"
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr "hlaviÄka ikony skupiny"
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "neoÄakávaný typ ikony skupiny %d"
+
+#: resbin.c:871
+msgid "group icon"
+msgstr "ikona skupiny"
+
+#: resbin.c:935 resbin.c:1151
+msgid "unexpected version string"
+msgstr "neoÄakávaný reÅ¥azec verzie"
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "dĺžka verzie %d nie je zhodná s dĺžkou zdroja %lu"
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr "neoÄakávaný typ verzie %d"
+
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr "neoÄakávaná pevná dĺžka hodnoty verzie %ld"
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr "pevné informácie o verzii"
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "neoÄakávaná signatúra pevnej verzie %lu"
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "neoÄakávaná verzia informácie o pevnej verzii %lu"
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr "variabilné informácie o verzii"
+
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr "neoÄakávaná dĺžka hodnoty stringfileinfo %ld"
+
+#: resbin.c:1049
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr "neoÄakávaná dĺžka hodnoty tabuľky reÅ¥azcov %ld"
+
+#: resbin.c:1083
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr "neoÄakávaná dĺžka hodnoty reÅ¥azca %ld != %ld + %ld"
+
+#: resbin.c:1094
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr "neoÄakávaná dĺžka hodnoty reÅ¥azca %ld < %ld"
+
+#: resbin.c:1111
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr "neoÄakávaná dĺžka hodnoty varfileinfo %ld"
+
+#: resbin.c:1130
+msgid "version varfileinfo"
+msgstr "verzia varfileinfo"
+
+#: resbin.c:1145
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr "neoÄakávaná dĺžka hodnoty verzie %ld"
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr "požaduje sa názov súboru pre COFF vstup"
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: žiadna sekcia zdroja"
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: adresa mimo rozsah"
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "prieÄinok"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "nazvaná položka prieÄinku"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "názov položky prieÄinku"
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "nazvaný podprieÄinok"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "nazvaný zdroj"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "ID položka prieÄinku"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "ID podprieÄinku"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "ID zdroja"
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr "neznámy typ zdroja"
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr "dátová položka"
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr "dáta zdroja"
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr "veľkosť zdrojových dát"
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr "vyžaduje sa názov súboru pre COFF výstup"
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "nedá sa získať typ relokácie pre BFD_RELOC_RVA"
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "nedá sa otvoriÅ¥ doÄasný súbor „%s“: %s"
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "nedá sa presmerovať stdout: „%s“: %s"
+
+#: resrc.c:284
+#, c-format
+msgid "%s %s: %s"
+msgstr "%s %s: %s"
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "nedá sa vykonať „%s“: %s"
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "Používa sa doÄasný súbor „%s“ na Äítanie výstupu preprocesora\n"
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "nedá sa otvoriť pomocou popen „%s“: %s"
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "Používa sa popen na Äítanie výstupu preprocesora\n"
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "Vyskúšané „%s“\n"
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr "Používa sa „%s“\n"
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr "predspracovanie zlyhalo."
+
+#: resrc.c:631
+#, c-format
+msgid "%s:%d: %s\n"
+msgstr "%s:%d: %s\n"
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: neoÄakávaný znak konca súboru"
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: preÄitané z %lu vrátených %lu"
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "zlyhal stat na súbor bitmapy „%s“: %s"
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "súboru kurzora „%s“ neobsahuje dáta o kurzore"
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: fseek na %lu zlyhal: %s"
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr "ID pomoci vyžaduje DIALOGEX"
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr "dáta riadenia vyžadujú DIALOGEX"
+
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "nepodaril sa stat na súbor písma „%s“: %s"
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "súbor ikony „%s“ neobsahuje dáta o ikone"
+
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "zlyhal stat súboru „%s“: %s"
+
+#: resrc.c:1940
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "nedá sa otvoriÅ¥ „%s“ na Äítanie: %s"
+
+#: size.c:79
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr " Zobrazuje veľkosti sekcií vo vnútri binárnych súborov\n"
+
+#: size.c:80
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr " Ak sa neurÄia žiadne vstupné súbory, predpokladá sa a.out\n"
+
+#: size.c:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+" Voľby sú:\n"
+" -A|-B --format={sysv|berkeley} Vybrať štýl výstupu (štandardne %s)\n"
+" -o|-d|-x --radix={8|10|16} ZobraziÅ¥ Äísla osmiÄkovo, desiatkovo alebo hexadecimálne\n"
+" -t --totals Zobraziť celkové veľkosti (iba Berkeley)\n"
+" --common Zobraziť celkové veľkosti symbolov *COM*\n"
+" --target=<bfdname> Nastaviť formát binárneho súboru\n"
+" @<súbor> Čítať voľby zo <súboru>\n"
+" -h --help Zobraziť túto informáciu\n"
+" -v --version Zobraziť verziu programu\n"
+"\n"
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "neplatný argument pre --format: %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Neplatný základ Äísla: %s\n"
+
+#: srconv.c:1731
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "Previesť súbor objektu COFF na súbor objektu SYSROFF\n"
+
+#: srconv.c:1732
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+" Voľby sú:\n"
+" -q --quick (Zastaralé - ignorované)\n"
+" -n --noprescan Nevykonať skenovanie pre prevod common-ov na def-y\n"
+" -d --debug ZobraziÅ¥ informáciu o tom, Äo sa robí\n"
+" @<súbor> Čítať voľby zo <súboru>\n"
+" -h --help Zobraziť túto informáciu\n"
+" -v --version Zobraziť verziu programu\n"
+
+#: srconv.c:1878
+#, c-format
+msgid "unable to open output file %s"
+msgstr "nedá sa otvoriť výstupný súbor %s"
+
+#: stabs.c:328 stabs.c:1706
+msgid "numeric overflow"
+msgstr "Äíselné preteÄenie"
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "Zlý stab: %s\n"
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Upozornenie: %s: %s\n"
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC nie je vo funkcii\n"
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "Priveľa N_RBRACov\n"
+
+#: stabs.c:736
+msgid "unknown C++ encoded name"
+msgstr "neznáme meno kódované v C++"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1251
+msgid "unrecognized cross reference type"
+msgstr "nerozpoznaný typ krížového odkazu"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1798
+msgid "missing index type"
+msgstr "chýba typ indexu"
+
+#: stabs.c:2112
+msgid "unknown virtual character for baseclass"
+msgstr "neznámy virtuálny znak pre baseclass"
+
+#: stabs.c:2130
+msgid "unknown visibility character for baseclass"
+msgstr "naznámy viditeľný znak pre baseclass"
+
+#: stabs.c:2316
+msgid "unnamed $vb type"
+msgstr "nepomenovaný $vb typ"
+
+#: stabs.c:2322
+msgid "unrecognized C++ abbreviation"
+msgstr "nerozpoznaná C++ skratka"
+
+#: stabs.c:2398
+msgid "unknown visibility character for field"
+msgstr "neznámy znak viditeľnosti pre pole"
+
+#: stabs.c:2650
+msgid "const/volatile indicator missing"
+msgstr "chýba indikátor const/volatile"
+
+#: stabs.c:2886
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "Žiadne poškodenie pre „%s“\n"
+
+#: stabs.c:3186
+msgid "Undefined N_EXCL"
+msgstr "Nezadefinované N_EXCL"
+
+#: stabs.c:3266
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "Typové Äíslo súboru %d mimo rozsah\n"
+
+#: stabs.c:3271
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Typové Äíslo indexu %d mimo rozsah\n"
+
+#: stabs.c:3350
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "Nerozpoznaný typ XCOFF %d\n"
+
+#: stabs.c:3642
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "chybný neformátovaný názov „%s“\n"
+
+#: stabs.c:3737
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "v neformátovanom reťazci sa nenachádzajú typy argumentov\n"
+
+#: stabs.c:5091
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "Neformátovaný názov nie je funkcia\n"
+
+#: stabs.c:5133
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "NeoÄakávaný typ pri formátovaní zoznamu argumentov v3\n"
+
+#: stabs.c:5200
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "NeoÄakávaná zložka formátovania %d\n"
+
+#: stabs.c:5252
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "Nepodarilo sa vypísať formátovanú šablónu\n"
+
+#: stabs.c:5332
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "Nepodarilo sa zistiť formátovaný vstavaný typ\n"
+
+#: stabs.c:5381
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "neoÄakávané formátované varargs\n"
+
+#: stabs.c:5388
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "Nerozpoznaný formátovaný vstavaný typ\n"
+
+#: strings.c:251
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr "neplatná minimálna dĺžka reťazca %d"
+
+#: strings.c:648
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr " ZobraziÅ¥ vytlaÄiteľné reÅ¥azce v [súbore(-och)] (Å¡tandardne stdin)\n"
+
+#: strings.c:649
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 ""
+" Voľby sú:\n"
+" -a - --all Prezrieť celý súbor, nie len dátovú sekciu\n"
+" -f --print-file-name Vypísať názov súboru pred každým reťazcom\n"
+" -n --bytes=[number] NájsÅ¥ a vypísaÅ¥ každú nulou ukonÄenú postupnosÅ¥ \n"
+" -<poÄet> najmenej [poÄet] znakov (Å¡tandardne 4).\n"
+" -t --radix={o,d,x} Vypísať umiestnenie reťazca v 8, 10 alebo 16 sústave\n"
+" -o Aalias pre --radix=o\n"
+" -T --target=<BFDNAME> Zadať binárny formát súboru\n"
+" -e --encoding={s,S,b,l,B,L} Vybrať veľkosť znaku a endianitu:\n"
+" s = 7 bitov, S = 8 bitov, {b,l} = 16 bitov, {B,L} = 32 bitov\n"
+" @<súbor> NaÄítaÅ¥ voľby zo <súbor>\n"
+" -h --help Zobraziť tohto pomocníka\n"
+" -v --version Vypísať verziu programu\n"
+
+#: sysdump.c:648
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "Zobraziť pre ľudí zrozumiteľnú interpretáciu objektového súboru SYSROFF\n"
+
+#: sysdump.c:649
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Voľby sú:\n"
+" -h --help Zobraziť túto informáciu\n"
+" -v --version Zobraziť verziu programu\n"
+
+#: sysdump.c:716
+#, c-format
+msgid "cannot open input file %s"
+msgstr "nedá sa otvoriť vstupný súbor %s"
+
+#: version.c:35
+#, c-format
+msgid "Copyright 2007 Free Software Foundation, Inc.\n"
+msgstr "Copyright 2007 Free Software Foundation, Inc.\n"
+
+#: version.c:36
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"Tento program je slobodný softvér. Môžete ho šíriť za podmienok GNU General\n"
+"Public License verzie 3 alebo (ako si zvolíte) ktorejkoľvek vyššej verzie.\n"
+"Na tento program sa neposkytuje absolútne žiadna záruka.\n"
+
+#: windmc.c:195
+#, c-format
+msgid "can't create %s file ,%s' for output.\n"
+msgstr "nebolo možné vytvoriť súbor %s, „%s“ pre výstup.\n"
+
+#: windmc.c:203
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr "Použitie: %s [VOĽBY] [VSTUP_SÚBOR]\n"
+
+#: windmc.c:205
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianess.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+" Voľby sú:\n"
+" -a --ascii_in NaÄítaÅ¥ vstupný súbor ako ASCII súbor\n"
+" -A --ascii_out Zapísať binárne správy ako ASCII\n"
+" -b --binprefix názov súboru .bin s predponou .mc filename_, aby bol jedineÄný.\n"
+" -c --customflag Nastaviť vlastné príznaky správ\n"
+" -C --codepage_in=<val> NastaviÄ kódovú stránku pri Äítaní textového súboru mc\n"
+" -d --decimal_values Vypísať hodnoty do textového súboru v desiatkovej sústave\n"
+" -e --extension=<prípona> NastaviÅ¥ príponu hlaviÄiek použitých pri exporte súboru hlaviÄky\n"
+" -F --target <cieľ> Cieľ výstupu endianity.\n"
+" -h --headerdir=<directory> NastaviÅ¥ exportný adresár pre hlaviÄky\n"
+" -u --unicode_in NaÄítaÅ¥ vstup ako súbor UTF-16\n"
+" -U --unicode_out Zapísať binárne správy v UTF-16\n"
+" -m --maxlength=<hod> Nastaviť maximálnu povolenú dĺžku správy\n"
+" -n --nullterminate Automaticky pridávať reťazcom na koniec nulu\n"
+" -o --hresult_use Použiť definíciu HRESULT namiesto definície stavového kódu\n"
+" -O --codepage_out=<hod> Nastaviť kódovú stránku pre zápis textového súboru\n"
+" -r --rcdir=<adresár> Nastaviť exportný adresár rc súborov\n"
+" -x --xdbg=<adresár> Kde sa má vytvárať .dbg C include súbor,\n"
+" ktorý mapuje ID správ na ich symbolický názov.\n"
+
+#: windmc.c:225
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+" -H --help Vypíše túto správu pomocníka\n"
+" -v --verbose VýreÄný - oznamuje, Äo práve robí\n"
+" -V --version Vypíše informácie o verzii\n"
+
+#: windmc.c:296 windres.c:415
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: upozornenie: "
+
+#: windmc.c:297
+#, c-format
+msgid "A codepage was specified switch ,%s' and UTF16.\n"
+msgstr "Kódová stránka bola uvedená, zameňte „%s“ a UTF-16.\n"
+
+#: windmc.c:298
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr "\tnastavenia kódovej stránky sa ignorujú.\n"
+
+#: windmc.c:342
+msgid "try to add a ill language."
+msgstr "pokus o pridanie zlého jazyka."
+
+#: windmc.c:1151
+#, c-format
+msgid "unable to open file ,%s' for input.\n"
+msgstr "nebolo možné otvoriť súbor „%s“ na vstup.\n"
+
+#: windmc.c:1170
+msgid "input file does not seems to be UFT16.\n"
+msgstr "Vstupný súbor nevyzerá byť UTF-16.\n"
+
+#: windres.c:220
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "nedá sa otvoriť %s „%s“: %s"
+
+#: windres.c:394
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": oÄakávalo sa, že je to adresár\n"
+
+#: windres.c:406
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": oÄakávalo sa, že je to list\n"
+
+#: windres.c:417
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": duplicitná hodnota\n"
+
+#: windres.c:567
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "neznámy typ súboru „%s“"
+
+#: windres.c:568
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: podporované formáty:"
+
+#. Otherwise, we give up.
+#: windres.c:651
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "nebolo možné urÄiÅ¥ typ súboru „%s“; použite voľbu -J"
+
+#: windres.c:663
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Použitie: %s [VOĽBY] [VSTUP_SÚBOR] [VÃSTUP_SÚBOR]\n"
+
+#: windres.c:665
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+" Voľby sú:\n"
+" -i --input=<súbor> Vstupný súbor\n"
+" -o --output=<súbor> Výstupný súbor\n"
+" -J --input-format=<formát> Uvádza vstupný formát\n"
+" -O --output-format=<formát> Uvádza výstupný formát\n"
+" -F --target=<cieľ> Uvádza COFF cieľ\n"
+" --preprocessor=<program> Program na predspracovanie rc súboru\n"
+" -I --include-dir=<adr> Include adresár pre predspracovanie rc súboru\n"
+" -D --define <sym>[=<val>] Definovať SYM pre predspracovanie rc súboru\n"
+" -U --undefine <sym> Zrušiť definíciu SYM pre predspracovanie rc súboru\n"
+" -v --verbose VýreÄný - oznamuje, Äo práve robí\n"
+" -c --codepage=<kódstr> Uvádza predvolenú kódovú stránku\n"
+" -l --language=<hodn> NastaviÅ¥ jazyk pre Äítanie rc súboru\n"
+" --use-temp-file Pre Äítanie použiÅ¥ doÄasný súbor namiesto popen\n"
+" výstupu preprocesora\n"
+" --no-use-temp-file Použiť popen (štandardne)\n"
+
+#: windres.c:682
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug Zapnúť ladenie syntaktického analyzátora\n"
+
+#: windres.c:685
+#, 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 Ignorované kvôli kompatibilite s rc\n"
+" @<súbor> Čítať voľby zo <súboru>\n"
+" -h --help Zobraziť túto správu nápovedy\n"
+" -V --version Zobraziť informáciu o verzii\n"
+
+#: windres.c:690
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"FORMAT je jeden z rc, res alebo coff a dedukuje sa z prípony názvu súboru,\n"
+"ak nie je urÄený. Samotný názov súboru je vstupný súbor.\n"
+"Žiadný vstupný súbor je stdin, štandardne je rc. Žiadny výstpuný súbor je stdout, štandardne je rc.\n"
+
+#: windres.c:848
+msgid "invalid codepage specified.\n"
+msgstr "zadaná neplatná kódová stránka.\n"
+
+#: windres.c:863
+msgid "invalid option -f\n"
+msgstr "neplatná voľby -f\n"
+
+#: windres.c:868
+msgid "No filename following the -fo option.\n"
+msgstr "Žiadny názov súboru nenásleduje za voľbou -fo.\n"
+
+#: windres.c:927
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr "Voľba -l je zastaralá pre nastavenie vstupného formátu, prosím, radšej použite -J.\n"
+
+#: windres.c:1037
+msgid "no resources"
+msgstr "žiadne zdroje"
+
+#: wrstabs.c:353 wrstabs.c:1916
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup zlyhal: %s"
+
+#: wrstabs.c:636
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: zlá veľkosť %u"
+
+#: wrstabs.c:1394
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: upozornenie: neznáma veľkosť pre pole „%s“ v štruktúre"
+
+#~ msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+#~ msgstr "Momentálne sú podporované iba vezie 2 a 3 ladiacej informácie DWARF.\n"
+
+#~ msgid "Unable to locate entry %lu in the abbreviation table\n"
+#~ msgstr "Nemožno nájsť položku %lu v tabuľke skratiek\n"
+
+#~ msgid " %8.8lx %8.8lx %8.8lx (base address)\n"
+#~ msgstr " %8.8lx %8.8lx %8.8lx (bázová adresa)\n"
+
+#~ msgid "set .nlmsections flags"
+#~ msgstr "nastaviť .nlmsections príznaky"
+
+#~ msgid "can't add section '%s' - it already exists!"
+#~ msgstr "nie je možné pridať sekciu „%s“ - už existuje!"
+
+#~ msgid "%s: error in %s: %s"
+#~ msgstr "%s: chyba v %s: %s"
+
+#~ msgid "making"
+#~ msgstr "vytvára sa"
+
+#~ msgid "size"
+#~ msgstr "veľkosť"
+
+#~ msgid "vma"
+#~ msgstr "vma"
+
+#~ msgid "alignment"
+#~ msgstr "zarovnanie"
+
+#~ msgid "private data"
+#~ msgstr "privátne dáta"
+
+#~ msgid "%s: section `%s': error in %s: %s"
+#~ msgstr "%s: sekcia „%s“: chyba v %s: %s"
+
+#~ msgid "invalid section [%5u] in group section [%5u]\n"
+#~ msgstr "neplatná sekcia [%5u] v skupinovej sekcii [%5u]\n"
+
+#~ msgid " Offset: %#08lx Link to section: %ld (%s)\n"
+#~ msgstr " Posun: %#08lx Odkaz na sekciu: %ld (%s)\n"
+
+#~ msgid "skipping relocation of unknown size against offset 0x%lx in section %s\n"
+#~ msgstr "preskakujú sa relokácie neznámej veľkosti oproti ofsetu 0x%lx v sekcii %s\n"
+
+#~ msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
+#~ msgstr "preskakuje sa neoÄakávaný typ symbolu %s v relokácii v sekcii .rela.%s\n"
+
+#~ msgid "invalid number %s"
+#~ msgstr "neplatné Äíslo %s"
+
+#~ msgid "invalid integer argument %s"
+#~ msgstr "neplatný celoÄíselný argument %s"
diff --git a/binutils-2.24/binutils/po/sv.gmo b/binutils-2.24/binutils/po/sv.gmo
new file mode 100644
index 00000000..0efae306
--- /dev/null
+++ b/binutils-2.24/binutils/po/sv.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/sv.po b/binutils-2.24/binutils/po/sv.po
new file mode 100644
index 00000000..9a0f7076
--- /dev/null
+++ b/binutils-2.24/binutils/po/sv.po
@@ -0,0 +1,4931 @@
+# Swedish messages for binutils.
+# Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+# Tommy Pettersson <ptp@lysator.liu.se>, 2001, 2002, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.14rel030712\n"
+"POT-Creation-Date: 2003-07-11 13:56+0930\n"
+"PO-Revision-Date: 2004-10-08 17:18+0200\n"
+"Last-Translator: Tommy Pettersson <ptp@lysator.liu.se>\n"
+"Language-Team: Swedish <sv@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: addr2line.c:74
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Användning: %s [flaggor] [adress(er)]]\n"
+
+#: addr2line.c:75
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " Konvertera adresser till radnummer/filnamn-par.\n"
+
+#: addr2line.c:76
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Om inga adresser är valda på kommandoraden läses de från standard in\n"
+
+#: addr2line.c:77
+msgid ""
+" The options are:\n"
+" -b --target=<bfdname> Set the binary file format\n"
+" -e --exe=<executable> Set the input file name (default is a.out)\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Flaggorna är:\n"
+" -b --target=<bfdnamn> Välj format på binärfilen\n"
+" -e --exe=<körfil> Ange infilens namn (standard är a.out)\n"
+" -s --basenames Visa inte katalognamn\n"
+" -f --functions Visa funktionsnamn\n"
+" -C --demangle[=stil] Avkoda manglade funktionsnamn\n"
+" -h --help Visa denna hjälp\n"
+" -v --version Visa programmets versionsinformation\n"
+"\n"
+
+#: addr2line.c:89 ar.c:297 coffdump.c:479 nlmconv.c:1121 objcopy.c:484
+#: objcopy.c:518 readelf.c:2649 size.c:104 srconv.c:1962 strings.c:673
+#: sysdump.c:774 windres.c:702
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr ""
+"Rapportera fel till %s\n"
+"Rapportera synpunkter på översättningen till sv@li.org\n"
+
+#: addr2line.c:245
+#, c-format
+msgid "%s: can not get addresses from archive"
+msgstr "%s: kommer inte åt adresserna i arkivet"
+
+#: addr2line.c:317 nm.c:433 objdump.c:2693
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "okänd avkodningsstil \"%s\""
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "ingen post %s i arkivet\n"
+
+#: ar.c:255
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+msgstr "Användning: %s [emuleringsflaggor] [-]{dmpqrstx}[abcfilNoPsSuvV] [medlemsnamn] [nummer] arkivfil fil...\n"
+
+#: ar.c:258
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<mri-skript]\n"
+
+#: ar.c:259
+msgid " commands:\n"
+msgstr " kommandon:\n"
+
+#: ar.c:260
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - radera fil(er) i arkivet\n"
+
+#: ar.c:261
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - flytta fil(er) i arkivet\n"
+
+#: ar.c:262
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - skriv ut fil(er) som påträffas i arkivet\n"
+
+#: ar.c:263
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - snabbfoga fil(er) till slutet av arkivet\n"
+
+#: ar.c:264
+msgid " r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
+msgstr " r[ab][f][u] - ersätt existerande eller infoga ny(a) fil(er) i arkivet\n"
+
+#: ar.c:265
+msgid " t - display contents of archive\n"
+msgstr " t - visa innehållet i arkivet\n"
+
+#: ar.c:266
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - hämta fil(er) från arkivet\n"
+
+#: ar.c:267
+msgid " command specific modifiers:\n"
+msgstr " modifierare specifika för kommandona:\n"
+
+#: ar.c:268
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - infoga fil(er) efter [medlemsnamn]\n"
+
+#: ar.c:269
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - infoga fil(er) före [medlemsnamn] (samma som [i])\n"
+
+#: ar.c:270
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - använd förekomst [nummer] av namn\n"
+
+#: ar.c:271
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - korta av infogade filnamn\n"
+
+#: ar.c:272
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - mönsterpassa mot namnets hela sökväg\n"
+
+#: ar.c:273
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - bevara ursprungliga datum\n"
+
+#: ar.c:274
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - ersätt bara filer som är nyare än i arkivet\n"
+
+#: ar.c:275
+msgid " generic modifiers:\n"
+msgstr " generella modifierare:\n"
+
+#: ar.c:276
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - varna inte om biblioteket måste skapas\n"
+
+#: ar.c:277
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - skapa ett index över arkivet (jfr. ranlib)\n"
+
+#: ar.c:278
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - skapa inget index över arkivet\n"
+
+#: ar.c:279
+msgid " [v] - be verbose\n"
+msgstr " [v] - beskriv utförligt\n"
+
+#: ar.c:280
+msgid " [V] - display the version number\n"
+msgstr " [V] - visa versionsinformation\n"
+
+#: ar.c:287
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Användning: %s [flaggor] arkiv\n"
+
+#: ar.c:288
+msgid " Generate an index to speed access to archives\n"
+msgstr " Generera ett index för att snabba upp uppslagningar i arkivet\n"
+
+#: ar.c:289
+msgid ""
+" The options are:\n"
+" -h --help Print this help message\n"
+" -V --version Print version information\n"
+msgstr ""
+" Flaggorna är:\n"
+" --help Visa denna hjälp\n"
+" --version Visa versionsinformation\n"
+
+#: ar.c:512
+msgid "two different operation options specified"
+msgstr "två olika kommandoflaggor gavs"
+
+#: ar.c:587
+#, c-format
+msgid "illegal option -- %c"
+msgstr "otillåten flagga -- %c"
+
+#: ar.c:619
+msgid "no operation specified"
+msgstr "ingen kommandoflagga gavs"
+
+#: ar.c:622
+msgid "`u' is only meaningful with the `r' option."
+msgstr "\"u\" är bara meningsfull tillsammans med \"r\"."
+
+#: ar.c:632
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "\"N\" är bara meningsfull tillsammans med \"x\" eller \"d\"."
+
+#: ar.c:635
+msgid "Value for `N' must be positive."
+msgstr "Argumentet till \"N\" måste vara positivt."
+
+#: ar.c:718
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "internt fel -- flaggan är inte implementerad"
+
+#: ar.c:837 ar.c:888 ar.c:1333 objcopy.c:1579
+#, c-format
+msgid "internal stat error on %s"
+msgstr "internt stat-fel för %s"
+
+#: ar.c:841
+#, c-format
+msgid ""
+"\n"
+"<member %s>\n"
+"\n"
+msgstr ""
+"\n"
+"<medlem %s>\n"
+"\n"
+
+#: ar.c:857 ar.c:925
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s är inte ett giltigt arkiv"
+
+#: ar.c:893
+#, c-format
+msgid "stat returns negative size for %s"
+msgstr "stat returnerar negativ storlek på %s"
+
+#: ar.c:1020
+#, c-format
+msgid "%s is not an archive"
+msgstr "%s är inte ett arkiv"
+
+#: ar.c:1027
+#, c-format
+msgid "creating %s"
+msgstr "skapar %s"
+
+#: ar.c:1233
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "Ingen medlem heter \"%s\"\n"
+
+#: ar.c:1285
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "ingen post %s i arkiv %s!"
+
+# archive map verkar vara vad indexet kallas i källkoden
+#: ar.c:1422
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: inget index att uppdatera"
+
+#: arsup.c:86
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "Ingen post %s i arkivet.\n"
+
+#: arsup.c:117
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "Kan inte öppna fil %s\n"
+
+#: arsup.c:172
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: Kan inte öppna utdataakrivet %s\n"
+
+#: arsup.c:189
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: Kan inte öppna indataarkivet %s\n"
+
+#: arsup.c:198
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: fil %s är inte ett arkiv\n"
+
+#: arsup.c:241
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: inget utdataarkiv anvisat än\n"
+
+#: arsup.c:262 arsup.c:301 arsup.c:343 arsup.c:364 arsup.c:430
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: inget öppet utdataarkiv\n"
+
+#: arsup.c:273 arsup.c:385 arsup.c:411
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: kan inte öppna fil %s\n"
+
+# module file är detsamma som member
+#: arsup.c:328 arsup.c:407 arsup.c:489
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: hittar inte medlem %s\n"
+
+#: arsup.c:439
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "Det aktuella öppna arkivet är %s\n"
+
+#: arsup.c:464
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: inget öppet arkiv\n"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " Inga emuleringsspecifika flaggor\n"
+
+#. Macros for common output.
+#: binemul.h:52
+#, c-format
+msgid " emulation options: \n"
+msgstr " emuleringsflaggor:\n"
+
+#: bucomm.c:113
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "kan inte sätta BFD:s standardmål till \"%s\": %s"
+
+#: bucomm.c:125
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: Passande format:"
+
+#: bucomm.c:142
+msgid "Supported targets:"
+msgstr "MÃ¥l som hanteras:"
+
+#: bucomm.c:144
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: mål som hanteras:"
+
+#: bucomm.c:162
+msgid "Supported architectures:"
+msgstr "Arkitekturer som hanteras:"
+
+#: bucomm.c:164
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: arkitekturer som hanteras:"
+
+#: bucomm.c:360
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "BFD-huvudfil version %s\n"
+
+#: bucomm.c:467
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: felaktigt tal: %s"
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr "#rader %d "
+
+#: coffdump.c:471 sysdump.c:767
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Användning: %s [flaggor] infil\n"
+
+#: coffdump.c:472
+msgid " Print a human readable interpretation of a SYSROFF object file\n"
+msgstr " Skriv en mänskligt läsbar tolkning av en SYSROFF-objektfil\n"
+
+#: coffdump.c:473
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Flaggorna är:\n"
+" -h --help Visa denna hjälp\n"
+" -v --version Visa programmets versionsinformation\n"
+"\n"
+
+#: coffdump.c:541 srconv.c:2052 sysdump.c:831
+msgid "no input file specified"
+msgstr "ingen infil valdes"
+
+#: debug.c:654
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: ingen aktuell fil"
+
+#: debug.c:737
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: inget anrop till debug_set_filename"
+
+#: debug.c:796
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: inget anrop till debug_set_filename"
+
+#: debug.c:852
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: ingen aktuell funktion"
+
+#: debug.c:886
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: ingen aktuell funktion"
+
+#: debug.c:892
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: några block avslutades inte"
+
+#: debug.c:922
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: inget aktuellt block"
+
+#: debug.c:960
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: inget aktuellt block"
+
+#: debug.c:967
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: försök gjordes att avsluta yttersta blocket"
+
+#: debug.c:993
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: ingen aktuell kompileringsenhet"
+
+#. FIXME
+#: debug.c:1047
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: inte implementerat"
+
+#. FIXME
+#: debug.c:1059
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: inte implementerat"
+
+#. FIXME.
+#: debug.c:1153
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: inte implementerat"
+
+#: debug.c:1179
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: ingen aktuell fil"
+
+#: debug.c:1762
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: sorten hanteras inte"
+
+#: debug.c:1963
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: ingen aktuell fil"
+
+#: debug.c:2011
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: ingen aktuell fil"
+
+#: debug.c:2019
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: försök gjordes att sätta en extra tagg"
+
+#: debug.c:2058
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Varning: ändrar datatypens storlek från %d till %d\n"
+
+#: debug.c:2082
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: ingen aktuell kompileringsenhet"
+
+#: debug.c:2189
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: %s har cirkulär felsökningsinformation\n"
+
+#: debug.c:2650
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: påträffade en ogiltig typ"
+
+#: dlltool.c:812 dlltool.c:837 dlltool.c:863
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "Internt fel: Okänd maskintyp: %d"
+
+#: dlltool.c:900
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Kan inte öppna def-fil: %s"
+
+#: dlltool.c:905
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Bearbetar def-fil: %s"
+
+#: dlltool.c:909
+msgid "Processed def file"
+msgstr "Def-filen är bearbetad"
+
+#: dlltool.c:935
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Syntaktiskt fel i def-fil %s:%d"
+
+#: dlltool.c:974
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "NAME: %s bas: %x"
+
+#: dlltool.c:977 dlltool.c:996
+msgid "Can't have LIBRARY and NAME"
+msgstr "Kan inte ha både LIBRARY och NAME"
+
+#: dlltool.c:993
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "LIBRARY: %s bas: %x"
+
+#: dlltool.c:1251 resrc.c:271
+#, c-format
+msgid "wait: %s"
+msgstr "wait: %s"
+
+#: dlltool.c:1256 dllwrap.c:430 resrc.c:276
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "subprocessen fick fatal signal %d"
+
+#: dlltool.c:1262 dllwrap.c:437 resrc.c:283
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s avslutade med status %d"
+
+#: dlltool.c:1294
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "Suger åt mig info från sektion %s i %s"
+
+#: dlltool.c:1423
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Undantar symbol: %s"
+
+#: dlltool.c:1518 dlltool.c:1529 nm.c:1004 nm.c:1015
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: inga symboler"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1556
+#, c-format
+msgid "Done reading %s"
+msgstr "Klar med att läsa %s"
+
+#: dlltool.c:1567
+#, c-format
+msgid "Unable to open object file: %s"
+msgstr "Kan inte öppna objektfil: %s"
+
+#: dlltool.c:1570
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Avläser objektfil %s"
+
+#: dlltool.c:1585
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "Kan inte producera en mcore-elf-dll från arkivfil: %s"
+
+#: dlltool.c:1677
+msgid "Adding exports to output file"
+msgstr "Lägger till exporter till utfilen"
+
+#: dlltool.c:1724
+msgid "Added exports to output file"
+msgstr "La till exporter till utfilen"
+
+#: dlltool.c:1848
+#, c-format
+msgid "Generating export file: %s"
+msgstr "Genererar exportfil: %s"
+
+#: dlltool.c:1853
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Kan inte öppna temporär assemblerfil: %s"
+
+#: dlltool.c:1856
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "Öppnade temporär fil: %s"
+
+#: dlltool.c:2086
+msgid "Generated exports file"
+msgstr "Genererade exportfil"
+
+#: dlltool.c:2378
+#, c-format
+msgid "bfd_open failed open stub file: %s"
+msgstr "bfd_open lyckades inte öppna stubbfil: %s"
+
+#: dlltool.c:2381
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "Skapar stubbfil: %s"
+
+#: dlltool.c:2766
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "lyckades inte öppna temporär huvudfil: %s"
+
+#: dlltool.c:2825
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "lyckades inte öppna temporär svansfil: %s"
+
+#: dlltool.c:2892
+#, c-format
+msgid "Can't open .lib file: %s"
+msgstr "Kan inte öppna .lib-fil: %s"
+
+#: dlltool.c:2895
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Skapar biblioteksfil: %s"
+
+#: dlltool.c:2951
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "kan inte radera %s: %s"
+
+#: dlltool.c:2955
+msgid "Created lib file"
+msgstr "Skapade biblioteksfilen"
+
+#: dlltool.c:3062
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Varning, ignorerar dubbel EXPORT %s %d,%d"
+
+#: dlltool.c:3068
+#, c-format
+msgid "Error, duplicate EXPORT with oridinals: %s"
+msgstr "Fel, dubbel EXPORT med ordningstal: %s"
+
+#: dlltool.c:3191
+msgid "Processing definitions"
+msgstr "Bearbetar definitioner"
+
+#: dlltool.c:3223
+msgid "Processed definitions"
+msgstr "Definitionerna är bearbetade"
+
+#. xgetext:c-format
+#: dlltool.c:3234 dllwrap.c:495
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Användning: %s <flaggor> <objektfil(er)>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3236
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <maskin> Skapa som DLL för <maskin>. [förval: %s]\n"
+
+#: dlltool.c:3237
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr " möjliga <maskin>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+
+#: dlltool.c:3238
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <utnamn> Generera en exportfil.\n"
+
+#: dlltool.c:3239
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <utnamn> Generera ett gränssnittsbibliotek.\n"
+
+#: dlltool.c:3240
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect Lägg till indirekta dll till exportfilen.\n"
+
+#: dlltool.c:3241
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr " -D --dllname <namn> Namn på indata-dll att infoga i gränssnittsbiblioteket.\n"
+
+#: dlltool.c:3242
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr " -d --input-def <def-fil> Namn på .def-fil att läsa in.\n"
+
+#: dlltool.c:3243
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <def-fil> Namn på .def-fil att skapa.\n"
+
+#: dlltool.c:3244
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Exportera alla symboler till .def\n"
+
+# Följande sträng har den beskrivande delen indenterad två tecken
+# extra i den engelska texten för att två flaggor är för långa. I den
+# svenska översättningen är de indenterade tre tecken extra för att
+# den ena flaggan blev ytterligare ett tecken för lång.
+#: dlltool.c:3245
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols Exportera endast anvisade symboler\n"
+
+# Följande sträng har den beskrivande delen indenterad två tecken
+# extra i den engelska texten för att två flaggor är för långa. I den
+# svenska översättningen är de indenterade tre tecken extra för att
+# den ena flaggan blev ytterligare ett tecken för lång.
+#: dlltool.c:3246
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <lista> Exportera inte symboler i <lista>\n"
+
+#: dlltool.c:3247
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes LÃ¥t bli att inte exportera vissa standardsymboler\n"
+
+#: dlltool.c:3248
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <basfil> Läs den länkgenererade basfilen.\n"
+
+#: dlltool.c:3249
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 Generera ingen idata$4-sektion.\n"
+
+#: dlltool.c:3250
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 Generera ingen idata$5-sektion.\n"
+
+#: dlltool.c:3251
+msgid " -U --add-underscore Add underscores to symbols in interface library.\n"
+msgstr " -U --add-underscore Sätt dit understreck på symboler i gränssnittsbiblioteket.\n"
+
+#: dlltool.c:3252
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at Utplåna @<n> från exporterade namn.\n"
+
+#: dlltool.c:3253
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Tillför alias utan @<n>.\n"
+
+#: dlltool.c:3254
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <namn> Använd <namn> som assemblerare.\n"
+
+#: dlltool.c:3255
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <flaggor> Skicka <flaggor> till assembleraren.\n"
+
+#: dlltool.c:3256
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib Skapa bakåtkompatibelt importbibliotek.\n"
+
+#: dlltool.c:3257
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete Behåll temporärfiler (repetera för ökat antal).\n"
+
+#: dlltool.c:3258
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose Beskriv utförligt.\n"
+
+#: dlltool.c:3259
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version Visa versionsinformation om programmet.\n"
+
+#: dlltool.c:3260
+msgid " -h --help Display this information.\n"
+msgstr " -h --help Visa den här informationen.\n"
+
+#: dlltool.c:3262
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr " -M --mcore-elf <utnamn> Behandla mcore-elf-objektfiler till <utnamn>.\n"
+
+#: dlltool.c:3263
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <namn> Använd <namn> som länkare.\n"
+
+# Indenteringen blir fel här för <flaggor> är för lång.
+#: dlltool.c:3264
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <flaggor> Skicka <flaggor> till länkaren.\n"
+
+#: dlltool.c:3418
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Kan inte öppna basfilen: %s"
+
+#: dlltool.c:3450
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Maskin \"%s\" hanteras inte"
+
+#: dlltool.c:3553 dllwrap.c:214
+#, c-format
+msgid "Tried file: %s"
+msgstr "Provade fil: %s"
+
+#: dlltool.c:3560 dllwrap.c:221
+#, c-format
+msgid "Using file: %s"
+msgstr "Använder fil: %s"
+
+#: dllwrap.c:308
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "Behåller temporär basfil %s"
+
+#: dllwrap.c:310
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "Tar bort temporär basfil %s"
+
+#: dllwrap.c:324
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "Behåller temporär exportfil %s"
+
+#: dllwrap.c:326
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "Tar bort temporär exportfil %s"
+
+#: dllwrap.c:339
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Behåller temporär def-fil %s"
+
+#: dllwrap.c:341
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "Tar bort temporär def-fil %s"
+
+#: dllwrap.c:496
+msgid " Generic options:\n"
+msgstr " Generella flaggor:\n"
+
+#: dllwrap.c:497
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q Arbeta under tystnad\n"
+
+#: dllwrap.c:498
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Utförlig\n"
+
+#: dllwrap.c:499
+msgid " --version Print dllwrap version\n"
+msgstr " --version Visa versionsinformation för dllwrap\n"
+
+#: dllwrap.c:500
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <utnamn> Synonym för --output-lib\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Flaggor för %s:\n"
+
+#: dllwrap.c:502
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <enhet> Förvald till \"gcc\"\n"
+
+#: dllwrap.c:503
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <flaggor> Förbigå förvalda flaggor för ld\n"
+
+#: dllwrap.c:504
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dllverktyg> Förvalt till \"dlltool\"\n"
+
+#: dllwrap.c:505
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <ingång> Ge alternativ ingångspunkt i DLL:en\n"
+
+#: dllwrap.c:506
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <bas> Ge avbildens basadress\n"
+
+#: dllwrap.c:507
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <maskin> i386-cygwin32 eller i386-mingw32\n"
+
+#: dllwrap.c:508
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run Visa endast vad som behöver göras, verkställ inte\n"
+
+#: dllwrap.c:509
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Skapa Mingw-DLL\n"
+
+#: dllwrap.c:510
+msgid " Options passed to DLLTOOL:\n"
+msgstr " Flaggor som skickas till DLLVERKTYG:\n"
+
+#: dllwrap.c:511
+msgid " --machine <machine>\n"
+msgstr " --machine <maskin>\n"
+
+#: dllwrap.c:512
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <utnamn> Generera exportfil.\n"
+
+#: dllwrap.c:513
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <utnamn> Generera indatabibliotek.\n"
+
+#: dllwrap.c:514
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect Lägg till indirekta dll till exportfilen.\n"
+
+#: dllwrap.c:515
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <namn> Namn på indata-dll som ska infogas i utdatabiblioteket.\n"
+
+#: dllwrap.c:516
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <deffil> Välj .def-infil\n"
+
+#: dllwrap.c:517
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <deffil> Välj .def-utfil\n"
+
+#: dllwrap.c:518
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Exportera alla symboler till .def\n"
+
+#: dllwrap.c:519
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols Exportera endast .drectve-symboler\n"
+
+#: dllwrap.c:520
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <lista> Undanta symbolerna i <lista> från .def\n"
+
+#: dllwrap.c:521
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes Bortse från förvalt undantagna symboler\n"
+
+#: dllwrap.c:522
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr " --base-file <basfil> Läs den länkgenererad basfil\n"
+
+#: dllwrap.c:523
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 Generera ingen idata$4-sektion\n"
+
+#: dllwrap.c:524
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 Generera ingen idata$5-sektion\n"
+
+#: dllwrap.c:525
+msgid " -U Add underscores to .lib\n"
+msgstr " -U Sätt dit understreck i .lib\n"
+
+#: dllwrap.c:526
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k Utplåna @<n> från exporterade namn\n"
+
+#: dllwrap.c:527
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias Tillför alias utan @<n>\n"
+
+#: dllwrap.c:528
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <namn> Använd <namn> som assemblerare\n"
+
+#: dllwrap.c:529
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete Behåll temporära filer.\n"
+
+#: dllwrap.c:530
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " Övriga flaggor skickas oförändrade till programspråksenheten\n"
+
+#: dllwrap.c:802
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "Du måste ange minst en av flaggorna -o och --dllname"
+
+#: dllwrap.c:830
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"ingen export-definitionsfil gavs.\n"
+"En sådan skapas, men det är kanske inte vad du vill"
+
+# Indenteringen är ökad för att översättningen ska få plats framför
+# kolonet på alla 4 strängar.
+#: dllwrap.c:992
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "DLLVERKTYG namn : %s\n"
+
+# Indenteringen är ökad för att översättningen ska få plats framför
+# kolonet på alla 4 strängar.
+#: dllwrap.c:993
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "DLLVERKTYG flaggor: %s\n"
+
+# Indenteringen är ökad för att översättningen ska få plats framför
+# kolonet på alla 4 strängar.
+#: dllwrap.c:994
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "ENHET namn : %s\n"
+
+# Indenteringen är ökad för att översättningen ska få plats framför
+# kolonet på alla 4 strängar.
+#: dllwrap.c:995
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "ENHET flaggor : %s\n"
+
+#: emul_aix.c:58
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - 32-bitars litet arkiv\n"
+
+#: emul_aix.c:59
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - ignorerar 64-bitarsobjekt\n"
+
+#: emul_aix.c:60
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - ignorerar 32-bitarsobject\n"
+
+#: emul_aix.c:61
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] - accepterar 32- och 64-bitarsobjekt\n"
+
+#: ieee.c:326
+msgid "unexpected end of debugging information"
+msgstr "oväntat slut på felsökningsinformationen"
+
+#: ieee.c:421
+msgid "invalid number"
+msgstr "ogiltigt tal"
+
+#: ieee.c:480
+msgid "invalid string length"
+msgstr "ogiltig stränglängd"
+
+#: ieee.c:537 ieee.c:578
+msgid "expression stack overflow"
+msgstr "överspill i uttrycksstacken"
+
+#: ieee.c:557
+msgid "unsupported IEEE expression operator"
+msgstr "IEEE-uttrycksoperator som inte hanteras"
+
+#: ieee.c:572
+msgid "unknown section"
+msgstr "okänd sektion"
+
+#: ieee.c:593
+msgid "expression stack underflow"
+msgstr "underspill i uttrycksstacken"
+
+#: ieee.c:607
+msgid "expression stack mismatch"
+msgstr "felbalanserad uttrycksstack"
+
+#: ieee.c:646
+msgid "unknown builtin type"
+msgstr "okänd inbyggd typ"
+
+#: ieee.c:791
+msgid "BCD float type not supported"
+msgstr "flyttalstypen BCD hanteras inte"
+
+#: ieee.c:937
+msgid "unexpected number"
+msgstr "oväntat tal"
+
+#: ieee.c:944
+msgid "unexpected record type"
+msgstr "oväntad posttyp"
+
+#: ieee.c:977
+msgid "blocks left on stack at end"
+msgstr "block kvar på stacken på slutet"
+
+#: ieee.c:1242
+msgid "unknown BB type"
+msgstr "okänd BB-typ"
+
+#: ieee.c:1251
+msgid "stack overflow"
+msgstr "överspill i stacken"
+
+#: ieee.c:1276
+msgid "stack underflow"
+msgstr "underspill i stacken"
+
+#: ieee.c:1390 ieee.c:1462 ieee.c:2161
+msgid "illegal variable index"
+msgstr "otillåtet variabelindex"
+
+#: ieee.c:1440
+msgid "illegal type index"
+msgstr "otillåtet typindex"
+
+#: ieee.c:1450 ieee.c:1487
+msgid "unknown TY code"
+msgstr "okänd TY-kod"
+
+#: ieee.c:1469
+msgid "undefined variable in TY"
+msgstr "odefinierad variabel i TY"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1880
+msgid "Pascal file name not supported"
+msgstr "Pascalfilnamn hanteras inte"
+
+#: ieee.c:1928
+msgid "unsupported qualifier"
+msgstr "bestämningen hanteras inte"
+
+#: ieee.c:2199
+msgid "undefined variable in ATN"
+msgstr "odefinierad variabel i ATN"
+
+#: ieee.c:2242
+msgid "unknown ATN type"
+msgstr "okänd ATN-typ"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2364
+msgid "unsupported ATN11"
+msgstr "ATN11 hanteras inte"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2391
+msgid "unsupported ATN12"
+msgstr "ATN12 hanteras inte"
+
+#: ieee.c:2451
+msgid "unexpected string in C++ misc"
+msgstr "oväntad sträng i C++-misc"
+
+#: ieee.c:2464
+msgid "bad misc record"
+msgstr "felaktig misc-post"
+
+#: ieee.c:2507
+msgid "unrecognized C++ misc record"
+msgstr "okänd C++-misc-post"
+
+#: ieee.c:2624
+msgid "undefined C++ object"
+msgstr "odefinierat C++-objekt"
+
+#: ieee.c:2658
+msgid "unrecognized C++ object spec"
+msgstr "okänd C++-objektspecifikation"
+
+#: ieee.c:2694
+msgid "unsupported C++ object type"
+msgstr "C++-objekttypen hanteras inte"
+
+#: ieee.c:2704
+msgid "C++ base class not defined"
+msgstr "odefinierad C++-basklass"
+
+#: ieee.c:2716 ieee.c:2821
+msgid "C++ object has no fields"
+msgstr "C++-objektet har inga fält"
+
+#: ieee.c:2735
+msgid "C++ base class not found in container"
+msgstr "Hittade inte C++-basklassen i behållaren"
+
+#: ieee.c:2842
+msgid "C++ data member not found in container"
+msgstr "Hittade inte C++-datamedlemmen i behållaren"
+
+#: ieee.c:2883 ieee.c:3033
+msgid "unknown C++ visibility"
+msgstr "okänd C++-synlighet"
+
+#: ieee.c:2917
+msgid "bad C++ field bit pos or size"
+msgstr "C++-fältets bit-position eller bit-storlek är felaktig"
+
+#: ieee.c:3009
+msgid "bad type for C++ method function"
+msgstr "felaktig typ på C++-metodfunktion"
+
+#: ieee.c:3019
+msgid "no type information for C++ method function"
+msgstr "ingen typinformation om C++-metodfunktion"
+
+#: ieee.c:3058
+msgid "C++ static virtual method"
+msgstr "statisk virtuell C++-metod"
+
+#: ieee.c:3153
+msgid "unrecognized C++ object overhead spec"
+msgstr "okänd C++-objektöversiktsspec"
+
+#: ieee.c:3192
+msgid "undefined C++ vtable"
+msgstr "odefinierad C++-v-tabell"
+
+#: ieee.c:3263
+msgid "C++ default values not in a function"
+msgstr "C++-standardvärden inte inom en funktion"
+
+#: ieee.c:3303
+msgid "unrecognized C++ default type"
+msgstr "okänd C++-standardtyp"
+
+#: ieee.c:3334
+msgid "reference parameter is not a pointer"
+msgstr "referensparametern är inte en pekare"
+
+#: ieee.c:3419
+msgid "unrecognized C++ reference type"
+msgstr "okänd C++-referenstyp"
+
+#: ieee.c:3501
+msgid "C++ reference not found"
+msgstr "hittade inte C++-referensen"
+
+#: ieee.c:3509
+msgid "C++ reference is not pointer"
+msgstr "C++-referensen är ingen pekare"
+
+#: ieee.c:3538 ieee.c:3546
+msgid "missing required ASN"
+msgstr "saknar nödvändig ASN"
+
+#: ieee.c:3576 ieee.c:3584
+msgid "missing required ATN65"
+msgstr "saknar nödvändig ATN65"
+
+#: ieee.c:3598
+msgid "bad ATN65 record"
+msgstr "felaktig ATN65-post"
+
+#: ieee.c:4286
+msgid "IEEE numeric overflow: 0x"
+msgstr "IEEE numeriskt överspill: 0x"
+
+#: ieee.c:4332
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "IEEE överspill i stränglängden: %u\n"
+
+#: ieee.c:5382
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "IEEE klarar inte heltalstyper av storlek %u\n"
+
+#: ieee.c:5418
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "IEEE klarar inte flyttalstyper av storlek %u\n"
+
+#: ieee.c:5454
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "IEEE klarar inte komplextyper av storlek %u\n"
+
+#: nlmconv.c:282 srconv.c:2043
+msgid "input and output files must be different"
+msgstr "in- och ut- måste vara olika filer"
+
+#: nlmconv.c:329
+msgid "input file named both on command line and with INPUT"
+msgstr "infil är vald både på kommandoraden och via INPUT"
+
+#: nlmconv.c:338
+msgid "no input file"
+msgstr "ingen infil"
+
+#: nlmconv.c:368
+msgid "no name for output file"
+msgstr "inget namn på utfilen"
+
+#: nlmconv.c:382
+msgid "warning: input and output formats are not compatible"
+msgstr "varning: formaten för in- och utdata är inte kompatibla"
+
+#: nlmconv.c:411
+msgid "make .bss section"
+msgstr "skapa .bss-sektion"
+
+#: nlmconv.c:420
+msgid "make .nlmsections section"
+msgstr "skapa .nlmsections-sektion"
+
+#: nlmconv.c:422
+msgid "set .nlmsections flags"
+msgstr "sätt flaggor i .nlmsections"
+
+#: nlmconv.c:450
+msgid "set .bss vma"
+msgstr "sätt vma i .bss"
+
+#: nlmconv.c:457
+msgid "set .data size"
+msgstr "sätt storlek på .data"
+
+#: nlmconv.c:637
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "varning: symbolen %s importerades men finns inte med i importlistan"
+
+#: nlmconv.c:657
+msgid "set start address"
+msgstr "sätt startadress"
+
+#: nlmconv.c:706
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "varning: START-procedur %s är inte definierad"
+
+#: nlmconv.c:708
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "varning: EXIT-procedur %s är inte definierad"
+
+#: nlmconv.c:710
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "varning: CHECK-procedur %s är inte definierad"
+
+#: nlmconv.c:731 nlmconv.c:920
+msgid "custom section"
+msgstr "anpassningsbar sektion"
+
+#: nlmconv.c:752 nlmconv.c:949
+msgid "help section"
+msgstr "hjälpsektion"
+
+#: nlmconv.c:774 nlmconv.c:967
+msgid "message section"
+msgstr "meddelandesektion"
+
+#: nlmconv.c:790 nlmconv.c:1000
+msgid "module section"
+msgstr "modulsektion"
+
+#: nlmconv.c:810 nlmconv.c:1016
+msgid "rpc section"
+msgstr "rpc-section"
+
+#. There is no place to record this information.
+#: nlmconv.c:846
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: varning: delade bibliotek kan inte ha oinitierad data"
+
+#: nlmconv.c:867 nlmconv.c:1035
+msgid "shared section"
+msgstr "delad sektion"
+
+#: nlmconv.c:875
+msgid "warning: No version number given"
+msgstr "varning: Inget versionsnummer givet"
+
+#: nlmconv.c:915 nlmconv.c:944 nlmconv.c:962 nlmconv.c:1011 nlmconv.c:1030
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: läsfel: %s"
+
+#: nlmconv.c:937
+msgid "warning: MAP and FULLMAP are not supported; try ld -M"
+msgstr "varning: MAP och FULLMAP hanteras inte; prova med ld -M"
+
+#: nlmconv.c:1109
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Användning: %s [flaggor] [infil [utfil]]\n"
+
+#: nlmconv.c:1110
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " Konvertera en objektfil till en laddbar NetWare-modul\n"
+
+#: nlmconv.c:1111
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+msgstr ""
+" Flaggorna är:\n"
+" -I --input-target=<bfdnamn> Sätt formatet på inbinärfilen\n"
+" -O --output-target=<bfdnamn> Sätt formatet på utbinärfilen\n"
+" -T --header-file=<fil> Läs NLM-huvuden från <fil>\n"
+" -l --linker=<länkare> Använd <länkare> för att länka\n"
+" -d --debug Visa länkkommandot på standard error\n"
+" -h --help Visa denna hjälp\n"
+" -v --version Visa programmets versionsinformation\n"
+
+#: nlmconv.c:1153
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "hantering av %s uteslöts vid kompileringen"
+
+#: nlmconv.c:1193
+msgid "make section"
+msgstr "skapa sektion"
+
+#: nlmconv.c:1207
+msgid "set section size"
+msgstr "sätt sektionsstorlek"
+
+#: nlmconv.c:1213
+msgid "set section alignment"
+msgstr "sätt sektionsjustering"
+
+#: nlmconv.c:1217
+msgid "set section flags"
+msgstr "sätt sektionsflaggor"
+
+#: nlmconv.c:1228
+msgid "set .nlmsections size"
+msgstr "sätt storlek på .nlmsections"
+
+#: nlmconv.c:1316 nlmconv.c:1324 nlmconv.c:1333 nlmconv.c:1338
+msgid "set .nlmsection contents"
+msgstr "sätt inehåll i .nlmsection"
+
+#: nlmconv.c:1839
+msgid "stub section sizes"
+msgstr "stubbsektionsstorlek"
+
+#: nlmconv.c:1888
+msgid "writing stub"
+msgstr "skriver stubbe"
+
+# FIXME
+#: nlmconv.c:1977
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "ouppklarad programräknarrelativ relokering mot %s"
+
+# FIXME
+#: nlmconv.c:2041
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "överspill vid justeringen av relokering mot %s"
+
+#: nlmconv.c:2158
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: lyckades inte köra %s: "
+
+#: nlmconv.c:2173
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Lyckades inte köra %s"
+
+#: nm.c:283 size.c:85 strings.c:657
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Användning: %s [flaggor] [fil(er)]\n"
+
+#: nm.c:284
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr "Lista symboler i [fil(er)] (a.out som standard).\n"
+
+#: nm.c:285
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -u, --undefined-only Display only undefined symbols\n"
+" -X 32_64 (ignored)\n"
+" -h, --help Display this information\n"
+" -V, --version Display this program's version number\n"
+"\n"
+msgstr ""
+" Flaggorna är:\n"
+" -a, --debug-syms Visa endast felsökningssymboler\n"
+" -A, --print-file-name Skriv infilens namn före varje symbol\n"
+" -B Samma som --format=bsd\n"
+" -C, --demangle[=STIL] Omkoda manglade symbolnamn till användarform\n"
+" STIL kan vara \"auto\" (förval), \"gnu\", \"lucid\",\n"
+" \"arm\", \"hp\", \"edg\", \"gnu-v3\", \"java\",\n"
+" eller \"gnat\"\n"
+" --no-demangle Avkoda inte manglade symbolnamn\n"
+" -D, --dynamic Visa dynamiska symboler istället för vanliga symboler\n"
+" --defined-only Visa endast definierade symboler\n"
+" -e (ignorerad)\n"
+" -f, --format=FORMAT Använd FORMAT som utdataformat. FORMAT kan vara\n"
+" \"bsd\", \"sysv\" eller \"posix\". Förvalet är \"bsd\"\n"
+" -g, --extern-only Visa endast externa symboler\n"
+" -l, --line-numbers Använd felsökningsinformationen för att slå upp\n"
+" filnamn och radnummer för varje symbol\n"
+" -n, --numeric-sort Sortera symboler numeriskt efter adress\n"
+" -o Samma som -A\n"
+" -p, --no-sort Sortera inte symbolerna\n"
+" -P, --portability Samma som --format=posix\n"
+" -r, --reverse-sort Sortera baklänges\n"
+" -S, --print-size Skriv ut storleken på definierade symboler\n"
+" -s, --print-armap Ta med index för symboler i arkivmedlemmar\n"
+" --size-sort Sortera symboler efter storlek\n"
+" -t, --radix=BAS Skriv ut siffervärden i talbas BAS\n"
+" --target=BFD-NAMN Välj BFD-NAMN som målobjektets format\n"
+" -u, --undefined-only Visa endast odefinierade symboler\n"
+" -X 32_64 (ignorerad)\n"
+" -h, --help Visa denna hjälptext\n"
+" -V, --version Visa programmets versionsinformation\n"
+"\n"
+
+#: nm.c:319 objdump.c:250
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr ""
+"Rapportera fel till %s.\n"
+"Rapportera synpunkter på översättningen till sv@li.org.\n"
+
+#: nm.c:352
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: ogiltig talbas"
+
+#: nm.c:377
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: ogiltigt utdataformat"
+
+#: nm.c:494
+msgid "Only -X 32_64 is supported"
+msgstr "Endast -X 32_64 hanteras"
+
+#: nm.c:514
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "Användning av --size-sort och --undifined-only samtidigt"
+
+#: nm.c:515
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "ger ingen utdata, eftersom odefinierade symboler inte har någon storlek"
+
+#: nm.c:543
+#, c-format
+msgid "data size %ld"
+msgstr "datastorlek %ld"
+
+#: nm.c:568 readelf.c:5809 readelf.c:5845
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<processorspecifik>: %d"
+
+#: nm.c:570 readelf.c:5811 readelf.c:5857
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<OS-specifik>: %d"
+
+#: nm.c:572 readelf.c:5813 readelf.c:5860
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<okänd>: %d"
+
+#: nm.c:1376
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Odefinierade symboler från %s:\n"
+"\n"
+
+#: nm.c:1378
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboler från %s:\n"
+"\n"
+
+#: nm.c:1380 nm.c:1438
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Namn Värde Klass Typ Storlek Rad Sektion\n"
+"\n"
+
+#: nm.c:1383 nm.c:1441
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Namn Värde Klass Typ Storlek Rad Sektion\n"
+"\n"
+
+#: nm.c:1434
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Odefinierade symboler från %s[%s]:\n"
+"\n"
+
+#: nm.c:1436
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Symboler från %s[%s]:\n"
+"\n"
+
+#: nm.c:1658
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Arkivindex:\n"
+
+#: objcopy.c:414 srconv.c:1952
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Användning: %s [flaggor] infil [utfil]\n"
+
+#: objcopy.c:415
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " Kopierar en binärfil, och formar möjligen om den\n"
+
+#: objcopy.c:416 objcopy.c:495
+msgid " The options are:\n"
+msgstr " Flaggorna är:\n"
+
+#: objcopy.c:417
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set arch of output file, when input is binary\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" -K --keep-symbol <name> Only copy symbol <name>\n"
+" -L --localize-symbol <name> Force symbol <name> to be marked as a local\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"
+" -x --discard-all Remove all non-global symbols\n"
+" -X --discard-locals Remove any compiler-generated symbols\n"
+" -i --interleave <number> Only copy one out of every <number> bytes\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed 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"
+" --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"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+msgstr ""
+" -I --input-target <bfd-namn> Antag infilens format till <bfd-namn>\n"
+" -O --output-target <bfd-namn> Skapa utfilen i format <bfd-namn>\n"
+" -B --binary-architecture <ark> Välj arkitektur för utfil när indata är binär\n"
+" -F --target <bfd-namn> Sätt både in- och utformatet till <bfd-namn>\n"
+" --debugging Konvertera felsökningsinfo, om möjligt\n"
+" -p --preserve-dates Kopiera ändrings/åtkomsttider till utdatan\n"
+" -j --only-section <namn> Kopiera endast sektion <namn> till utdatan\n"
+" --add-gnu-debuglink=<fil> Lägg till .gnu_debuglink-sektion till <fil>\n"
+" -R --remove-section <namn> Ta bort sektion <namn> från utdatan\n"
+" -S --strip-all Rensa bort all symbol- och relokeringsinfo\n"
+" -g --strip-debug Rensa bort alla felsökssymboler och -sektioner\n"
+" --strip-unneeded Rensa bort alla symboler som inte behövs för\n"
+" relokeringen\n"
+" -N --strip-symbol <namn> Kopiera inte symbol <namn>\n"
+" -K --keep-symbol <namn> Kopiera endast symbol <namn>\n"
+" -L --localize-symbol <namn> Markera symbol <namn> som lokal\n"
+" -G --keep-global-symbol <namn> Gör alla symboler lokala, förutom <namn>\n"
+" -W --weaken-symbol <namn> Markera symbol <namn> som vek\n"
+" --weaken Markera alla globala symboler som veka\n"
+" -x --discard-all Ta bort alla icke-globala symboler\n"
+" -X --discard-locals Ta bort alla kompilatorgenererade symboler\n"
+" -i --interleave <antal> Kopiera endast en av varje <antal> byte\n"
+" -b --byte <nr> Välj ut <nr>:e byten i varje intervall\n"
+" --gap-fill <tal> Fyll luckor mellan sektionerna med <tal>\n"
+" --pad-to <adr> Fyll ut efter sista sektionen fram till <adr>\n"
+" --set-start <adr> Sätt startadressen till <adr>\n"
+" {--change-start|--adjust-start} <ökn>\n"
+" Lägg till <ökn> till startadressen\n"
+" {--change-addresses|--adjust-vma} <ökn>\n"
+" Lägg till <ökn> till LMA, VMA och startadr.\n"
+" {--change-section-address|--adjust-section-vma} <namn>{=|+|-}<tal>\n"
+" Ändra LMA och VMA på sektion <namn> med <tal>\n"
+" --change-section-lma <namn>{=|+|-}<tal>\n"
+" Ändra LMA på sektion <namn> med <tal>\n"
+" --change-section-vma <namn>{=|+|-}<tal>\n"
+" Ändra VMA på sektion <namn> med <tal>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Varna (inte/[no-]) om en sektion inte finns\n"
+" --set-section-flags <namn>=<flaggor>\n"
+" Sätt sektion <namn>s attribut till <flaggor>\n"
+" --add-section <namn>=<fil> Lägg till sektion <namn> i <fil> till utdatan\n"
+" --rename-section <gam>=<ny>[,<flaggor>] Byt namn på sektion <gam> till <ny>\n"
+" --change-leading-char Framtvinga utformatets inledande teckentyp\n"
+" --remove-leading-char Ta bort inledningstecken från globala symboler\n"
+" --redefine-sym <gam>=<ny> Definiera om symbolnamn <gam> till <ny>\n"
+" --redefine-syms <fil> --redefine-sym för alla symbolpar i <fil>\n"
+" --srec-len <nr> Begränsa längden på genererade S-poster\n"
+" --srec-forceS3 Begränsa typen av genererade S-poster till S3\n"
+" --strip-symbols <fil> -N för alla symboler som listas i <fil>\n"
+" --keep-symbols <fil> -K för alla symboler som listas i <fil>\n"
+" --localize-symbols <fil> -L för alla symboler som listas i <fil>\n"
+" --keep-global-symbols <fil> -G för alla symboler som listas i <fil>\n"
+" --weaken-symbols <fil> -W för alla symboler som listas i <fil>\n"
+" --alt-machine-code <index> Använd alternativ maskinkod för utdata\n"
+" --prefix-symbols <prefix> Börja varje symbolnamn med <prefix>\n"
+" --prefix-sections <prefix> Börja varje sektionsnamn med <prefix>\n"
+" --prefix-alloc-sections <prefix>\n"
+" Börja varje allokerbar sektions namn med\n"
+" <prefix>\n"
+" -v --verbose Lista alla förändrade objektfiler\n"
+" -V --version Visa programmets versionsinformation\n"
+" -h --help Visa denna hjälp\n"
+" --info Lista objektformat & arkitekturer som stöds\n"
+
+#: objcopy.c:493
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Användning: %s <flaggor> infil(er)\n"
+
+#: objcopy.c:494
+msgid " Removes symbols and sections from files\n"
+msgstr " Tar bort symboler och sektioner från filer\n"
+
+#: objcopy.c:496
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol=<name> Do not copy symbol <name>\n"
+" -K --keep-symbol=<name> Only copy symbol <name>\n"
+" -x --discard-all Remove all non-global symbols\n"
+" -X --discard-locals Remove any compiler-generated symbols\n"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target=<bfd-namn> Antag infilens format till <bfd-namn>\n"
+" -O --output-target=<bfd-namn> Skapa utfilen i format <bfd-namn>\n"
+" -F --target=<bfd-namn> Sätt både in- och utformatet till <bfd-namn>\n"
+" -p --preserve-dates Kopiera ändrings/åtkomsttider till utdatan\n"
+" -R --remove-section=<namn> Ta bort sektion <namn> från utdatan\n"
+" -s --strip-all Rensa bort all symbol- och relokeringsinfo\n"
+" -g -S -d --strip-debug Rensa bort alla felsökssymboler & -sektioner\n"
+" --strip-unneeded Rensa bort alla symboler som inte är\n"
+" nödvändiga för relokeringen\n"
+" -N --strip-symbol=<namn> Kopiera inte symbol <namn>\n"
+" -K --keep-symbol=<namn> Kopiera endast symbol <namn>\n"
+" -x --discard-all Ta bort alla icke-globala symboler\n"
+" -X --discard-locals Ta bort alla kompilatorgenererade symboler\n"
+" -v --verbose Lista alla förändrade objektfiler\n"
+" -V --version Visa programmets versionsinformation\n"
+" -h --help Visa denna hjälp\n"
+" --info Lista objektformat & arkitekturer som stöds\n"
+" -o <fil> Spara den rensade utdatan i <fil>\n"
+
+#: objcopy.c:567
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "okänd sektionsflagga \"%s\""
+
+#: objcopy.c:568
+#, c-format
+msgid "supported flags: %s"
+msgstr "flaggor som hanteras: %s"
+
+#: objcopy.c:645 objcopy.c:2526
+#, c-format
+msgid "cannot stat: %s: %s"
+msgstr "kan inte ta status: %s: %s"
+
+#: objcopy.c:652 objcopy.c:2544
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "kan inte öppna: %s: %s"
+
+#: objcopy.c:655 objcopy.c:2548
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: fread misslyckades"
+
+#: objcopy.c:728
+#, c-format
+msgid "Ignoring rubbish found on line %d of %s"
+msgstr "Ignorerar skräp hittat på rad %d i %s"
+
+#: objcopy.c:979
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: Flera omdefinieringar av symbol \"%s\""
+
+#: objcopy.c:983
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: Mer än en symbol omdefinieras till \"%s\""
+
+#: objcopy.c:1010
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "kunde inte öppna fil \"%s\" med symbolomdefinieringar (fel: %s)"
+
+#: objcopy.c:1088
+#, c-format
+msgid "%s: garbage at end of line %d"
+msgstr "%s: skräp i slutet på rad %d"
+
+#: objcopy.c:1091
+#, c-format
+msgid "%s: missing new symbol name at line %d"
+msgstr "%s: nytt symbolnamn saknas på rad %d"
+
+#: objcopy.c:1101
+#, c-format
+msgid "%s: premature end of file at line %d"
+msgstr "%s: för tidigt filslut på rad %d"
+
+#: objcopy.c:1147
+msgid "Unable to change endianness of input file(s)"
+msgstr "Kan inte ändra endian-typ på infilen(erna)"
+
+#: objcopy.c:1155
+#, c-format
+msgid "copy from %s(%s) to %s(%s)\n"
+msgstr "kopierar från %s(%s) till %s(%s)\n"
+
+#: objcopy.c:1182
+#, c-format
+msgid "Warning: Output file cannot represent architecture %s"
+msgstr "Varning: Utfilen kan inte representera arkitektur %s"
+
+#: objcopy.c:1211
+#, c-format
+msgid "can't create section `%s': %s"
+msgstr "kan inte skapa sektion \"%s\": %s"
+
+#: objcopy.c:1304
+#, c-format
+msgid "Can't fill gap after %s: %s"
+msgstr "Kan inte fylla luckan efter %s: %s"
+
+#: objcopy.c:1329
+#, c-format
+msgid "Can't add padding to %s: %s"
+msgstr "Kan inte fylla ut efter %s: %s"
+
+#: objcopy.c:1485
+#, c-format
+msgid "%s: error copying private BFD data: %s"
+msgstr "%s: fel vid kopiering av privat BFD-data: %s"
+
+#: objcopy.c:1498
+msgid "unknown alternate machine code, ignored"
+msgstr "okänd alternativ maskinkod, ignorerad"
+
+#: objcopy.c:1531 objcopy.c:1561
+#, c-format
+msgid "cannot mkdir %s for archive copying (error: %s)"
+msgstr "kan inte skapa katalog %s för arkivkopiering (fel: %s)"
+
+#: objcopy.c:1749
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "Flera namnbyten på sektion %s"
+
+#: objcopy.c:1840
+msgid "making"
+msgstr "tillverkning"
+
+#: objcopy.c:1849
+msgid "size"
+msgstr "storlek"
+
+#: objcopy.c:1863
+msgid "vma"
+msgstr "vma"
+
+#: objcopy.c:1888
+msgid "alignment"
+msgstr "justering"
+
+#: objcopy.c:1896
+msgid "flags"
+msgstr "flaggor"
+
+#: objcopy.c:1918
+msgid "private data"
+msgstr "privat data"
+
+#: objcopy.c:1926
+#, c-format
+msgid "%s: section `%s': error in %s: %s"
+msgstr "%s: sektion \"%s\": fel på %s: %s"
+
+#: objcopy.c:2199
+#, c-format
+msgid "%s: can't create debugging section: %s"
+msgstr "%s: kan inte skapa felsökningssektion: %s"
+
+#: objcopy.c:2214
+#, c-format
+msgid "%s: can't set debugging section contents: %s"
+msgstr "%s: kan inte sätta innehållet i felsökningssektionen: %s"
+
+#: objcopy.c:2223
+#, c-format
+msgid "%s: don't know how to write debugging information for %s"
+msgstr "%s: vet inte hur man skriver felsökningsinformation för %s"
+
+#: objcopy.c:2346
+#, c-format
+msgid "%s: cannot stat: %s"
+msgstr "%s: kan inte ta status: %s"
+
+#: objcopy.c:2400
+msgid "byte number must be non-negative"
+msgstr "bytenummer får inte vara negativt"
+
+#: objcopy.c:2410
+msgid "interleave must be positive"
+msgstr "intervallstorleken måste vara positiv"
+
+#: objcopy.c:2430 objcopy.c:2438
+#, c-format
+msgid "%s both copied and removed"
+msgstr "%s både kopierad och borttagen"
+
+#: objcopy.c:2523 objcopy.c:2593 objcopy.c:2693 objcopy.c:2724 objcopy.c:2748
+#: objcopy.c:2752 objcopy.c:2772
+#, c-format
+msgid "bad format for %s"
+msgstr "felaktigt format på %s"
+
+#: objcopy.c:2662
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Varning: kortar av utfyllnadsvärdet från 0x%s till 0x%x"
+
+#: objcopy.c:2818
+msgid "alternate machine code index must be positive"
+msgstr "index för alternativ maskinkod måste vara positivt"
+
+#: objcopy.c:2856
+msgid "byte number must be less than interleave"
+msgstr "bytenummer måste vara mindre än antalet byte i intervallet"
+
+#: objcopy.c:2883
+#, c-format
+msgid "architecture %s unknown"
+msgstr "arkitektur %s är okänd"
+
+#: objcopy.c:2887
+msgid "Warning: input target 'binary' required for binary architecture parameter."
+msgstr "Varning: indata måste ha formatet 'binary' för binärarkitektursparametrar."
+
+#: objcopy.c:2888
+#, c-format
+msgid " Argument %s ignored"
+msgstr " Argument %s ignorerat"
+
+#: objcopy.c:2894
+#, c-format
+msgid "Cannot stat: %s: %s"
+msgstr "Kan inte ta status: %s: %s"
+
+#: objcopy.c:2934 objcopy.c:2948
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s användes aldrig"
+
+#: objdump.c:197
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Användning: %s <flaggor> <fil(er)>\n"
+
+#: objdump.c:198
+msgid " Display information from object <file(s)>.\n"
+msgstr "Visa information från objekt<fil(er)>.\n"
+
+#: objdump.c:199
+msgid " At least one of the following switches must be given:\n"
+msgstr " Minst en av följande flaggor måste ges:\n"
+
+#: objdump.c:200
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -g, --debugging Display debug information in object file\n"
+" -G, --stabs Display (in raw form) any STABS 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"
+" -v, --version Display this program's version number\n"
+" -i, --info List object formats and architectures supported\n"
+" -H, --help Display this information\n"
+msgstr ""
+" -a, --archive-headers Visa information från arkivhuvuden\n"
+" -f, --file-headers Visa innehållet i det övergripande filhuvudet\n"
+" -p, --private-headers Visa innehållet i objektformatspecifika filhuvuden\n"
+" -h, --[section-]headers Visa innehållet i sektionshuvuden\n"
+" -x, --all-headers Visa innehållet i alla huvuden\n"
+" -d, --disassemble Visa disassemblering av exekverbara sektioner\n"
+" -D, --disassemble-all Visa disassemblering av alla sektioner\n"
+" -S, --source Varva källkod med disassemblering\n"
+" -s, --full-contents Visa hela innehållet i alla utvalda sektioner\n"
+" -g, --debugging Visa felsökningsinformation från objektfilen\n"
+" -G, --stabs Visa (oformaterat) eventuell STABS-info från filen\n"
+" -t, --syms Visa innehållet i symboltabellen(erna)\n"
+" -T, --dynamic-syms Visa innehållet i tabellen med dynamiska symboler\n"
+" -r, --reloc Visa relokeringsposterna i filen\n"
+" -R, --dynamic-reloc Visa de dynamiska relokeringsposterna i filen\n"
+" -v, --version Visa programmets versionsinformation\n"
+" -i, --info Lista de objektformat och arkitekturer som hanteras\n"
+" -H, --help Visa denna hjälp\n"
+
+#: objdump.c:222
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" Följande flaggor är frivilliga:\n"
+
+#: objdump.c:223
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+"\n"
+msgstr ""
+" -b, --target=BFDNAMN Välj BFDNAMN som målobjektets format\n"
+" -m, --architecture=MASKIN Välj målarkitektur MASKIN\n"
+" -j, --section=NAMN Visa endast information om sektion NAMN\n"
+" -M, --disassembler-options=FLG Skicka vidare FLG till disassembleraren\n"
+" -EB --endian=big Antag big endian-format vid disassemblering\n"
+" -EL --endian=little Antag little endian-format vid disassemblering\n"
+" --file-start-context Ta med omgivningen i början av filen (med -S)\n"
+" -l, --line-numbers Ta med radnummer och filnamn i utdatan\n"
+" -C, --demangle[=STIL] Avkoda manglade symbolnamn\n"
+" STIL, om givet, kan vara: \"auto\", \"gnu\",\n"
+" \"lucid\", \"arm\", \"hp\", \"edg\", \"gnu-v3\"\n"
+" \"java\" eller `gnat'\n"
+" -w, --wide Formatera utdatan för mer än 80 kolumner\n"
+" -z, --disassemble-zeroes Hoppa inte över block av nollor vid\n"
+" disassemblering\n"
+" --start-address=ADR Behandla endast data på adresser >= ADR\n"
+" --stop-address=ADR Behandla endast data på adresser <= ADR\n"
+" --prefix-addresses Visa fullständiga adresser jämte disassembler.\n"
+" --[no-]show-raw-insn Visa hex.-kod jämte disassemblering\n"
+" --adjust-vma=OFFSET Lägg till OFFSET till alla visade sektionsadresser\n"
+"\n"
+
+#: objdump.c:391
+msgid "Sections:\n"
+msgstr "Sektioner:\n"
+
+#: objdump.c:394 objdump.c:398
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Namn Storlek VMA LMA Filoffs Just"
+
+#: objdump.c:400
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Namn Storlek VMA LMA Filoffs Just"
+
+#: objdump.c:404
+msgid " Flags"
+msgstr " Flaggor"
+
+#: objdump.c:406
+msgid " Pg"
+msgstr " Sid"
+
+#: objdump.c:451
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: inte ett dynamiskt objekt"
+
+#: objdump.c:1144
+msgid "Out of virtual memory"
+msgstr "Slut på virtuellt minne"
+
+#: objdump.c:1574
+#, c-format
+msgid "Can't use supplied machine %s"
+msgstr "Kan inte använda den tillhandahållna maskinen %s"
+
+#: objdump.c:1592
+#, c-format
+msgid "Can't disassemble for architecture %s\n"
+msgstr "Kan inte disassemblera för arkitektur %s\n"
+
+#: objdump.c:1682
+#, c-format
+msgid "Disassembly of section %s:\n"
+msgstr "Disassemblering av sektion %s:\n"
+
+#: objdump.c:1847
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"Det finns ingen %s-sektion\n"
+"\n"
+
+#: objdump.c:1854
+#, c-format
+msgid "%s has no %s section"
+msgstr "%s har ingen %s-sektion"
+
+#: objdump.c:1868
+#, c-format
+msgid "Reading %s section of %s failed: %s"
+msgstr "Lyckades inte läsa %s-sektionen i %s: %s"
+
+#: objdump.c:1880
+#, c-format
+msgid "Reading %s section of %s failed: %s\n"
+msgstr "Lyckades inte läsa %s-sektionen i %s: %s\n"
+
+#: objdump.c:1923
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"Innehåll i %s-sektionen:\n"
+"\n"
+
+#: objdump.c:2021
+#, c-format
+msgid "architecture: %s, "
+msgstr "arkitektur: %s, "
+
+#: objdump.c:2024
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "flaggor 0x%08x:\n"
+
+#: objdump.c:2038
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"startadress 0x"
+
+#: objdump.c:2071
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: filformat %s\n"
+
+#: objdump.c:2111
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: lyckades inte visa felsökningsinformationen"
+
+#: objdump.c:2190
+#, c-format
+msgid "In archive %s:\n"
+msgstr "I arkiv %s:\n"
+
+#: objdump.c:2249
+#, c-format
+msgid "Contents of section %s:\n"
+msgstr "Innehåll i %s-sektionen:\n"
+
+#: objdump.c:2369
+msgid "no symbols\n"
+msgstr "inga symboler\n"
+
+#: objdump.c:2718
+msgid "unrecognized -E option"
+msgstr "okänd -E-flagga"
+
+#: objdump.c:2729
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "okänd --endian-typ \"%s\""
+
+#: rdcoff.c:206
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: Felaktig typkod 0x%x"
+
+#: rdcoff.c:424 rdcoff.c:532 rdcoff.c:731
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment misslyckades: %s"
+
+#: rdcoff.c:440 rdcoff.c:751
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent misslyckades: %s"
+
+#: rdcoff.c:818
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf saknar inledande funktion"
+
+#: rdcoff.c:868
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: oväntad .ef\n"
+
+#: rddbg.c:91
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: ingen känd felsökningsinformation"
+
+#: rddbg.c:415
+msgid "Last stabs entries before error:\n"
+msgstr "De sista stabs-posterna före felet:\n"
+
+#: readelf.c:455
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Fel: "
+
+#: readelf.c:466
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Varning: "
+
+#: readelf.c:488
+#, c-format
+msgid "Unable to seek to 0x%x for %s\n"
+msgstr "Kan inte uppsöka %2$s på 0x%1$x\n"
+
+#: readelf.c:499
+#, c-format
+msgid "Out of memory allocating 0x%x bytes for %s\n"
+msgstr "Slut på minne vid allokering av 0x%x byte för %s\n"
+
+#: readelf.c:507
+#, c-format
+msgid "Unable to read in 0x%x bytes of %s\n"
+msgstr "Kan inte läsa in 0x%x byte %s\n"
+
+#: readelf.c:560 readelf.c:614 readelf.c:798 readelf.c:833
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Storlek på data som inte kan behandlas: %d\n"
+
+#: readelf.c:924
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Vet inget om relokering på denna maskinarkitektur\n"
+
+#: readelf.c:946 readelf.c:975 readelf.c:1021 readelf.c:1049
+msgid "relocs"
+msgstr "relokeringar"
+
+#: readelf.c:957 readelf.c:986 readelf.c:1031 readelf.c:1059
+msgid "out of memory parsing relocs"
+msgstr "slut på minne vid tolkning av relokeringar"
+
+#: readelf.c:1112
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr " Offset Info Typ Symbolvärde Symbolnamn + Tillägg\n"
+
+#: readelf.c:1114
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr " Offset Info Typ Sym.värde Symbolnamn + Tillägg\n"
+
+#: readelf.c:1119
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " Offset Info Typ Sym.värde Symbolnamn\n"
+
+#: readelf.c:1121
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " Offset Info Typ Sym.värde Symbolnamn\n"
+
+#: readelf.c:1129
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr " Offset Info Typ Symbolvärde Symbolnamn + Tillägg\n"
+
+#: readelf.c:1131
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr " Offset Info Typ Symbolvärde Symbolnamn + Tillägg\n"
+
+#: readelf.c:1136
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr " Offset Info Typ Symbolvärde Symbolnamn\n"
+
+#: readelf.c:1138
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " Offset Info Typ Symbolvärde Symbolnamn\n"
+
+#: readelf.c:1414 readelf.c:1416 readelf.c:1492 readelf.c:1494 readelf.c:1503
+#: readelf.c:1505
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "okänd: %-7lx"
+
+#: readelf.c:1466
+#, c-format
+msgid "<string table index %3ld>"
+msgstr "<strängtabellsindex %3ld>"
+
+#: readelf.c:1743
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "processorspecifik: %lx"
+
+#: readelf.c:1762
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "operativsystemsspecifik: %lx"
+
+#: readelf.c:1765 readelf.c:2417
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<okänd>: %lx"
+
+#: readelf.c:1779
+msgid "NONE (None)"
+msgstr "NONE (ingen)"
+
+#: readelf.c:1780
+msgid "REL (Relocatable file)"
+msgstr "REL (relokeringsbar fil)"
+
+#: readelf.c:1781
+msgid "EXEC (Executable file)"
+msgstr "EXEC (exekverbar fil)"
+
+#: readelf.c:1782
+msgid "DYN (Shared object file)"
+msgstr "DYN (delad objektfil)"
+
+#: readelf.c:1783
+msgid "CORE (Core file)"
+msgstr "CORE (minnesfil)"
+
+#: readelf.c:1787
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "processorspecifik: (%x)"
+
+#: readelf.c:1789
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "OS-specifik: (%x)"
+
+#: readelf.c:1791 readelf.c:1898 readelf.c:2574
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<okänd>: %x"
+
+#: readelf.c:1804
+msgid "None"
+msgstr "ingen"
+
+#: readelf.c:2616
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Användning: readelf <flaggor> elf-fil(er)\n"
+
+#: readelf.c:2617
+msgid " Display information about the contents of ELF format files\n"
+msgstr " Visa information om innehållet i filer i ELF-format\n"
+
+#: readelf.c:2618
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -S --section-headers Display the sections' header\n"
+" --sections An alias for --section-headers\n"
+" -e --headers Equivalent to: -h -l -S\n"
+" -s --syms Display the symbol table\n"
+" --symbols An alias for --syms\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic segment (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number> Dump the contents of section <number>\n"
+" -w[liaprmfFso] or\n"
+" --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" Flaggor är:\n"
+" -a --all Samma som: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Visa ELF-filens huvud\n"
+" -l --program-headers Visa programhuvuden\n"
+" --segments Synonym för --program-headers\n"
+" -S --section-headers Visa sektionernas huvuden\n"
+" --sections Synonym för --section-headers\n"
+" -e --headers Samma som: -h -l -S\n"
+" -s --syms Visa symboltabellen\n"
+" --symbols Synonym för --syms\n"
+" -n --notes Visa kommentarer från minnesutskriften (om de finns)\n"
+" -r --relocs Visa relokeringsinformationen (om den finns)\n"
+" -u --unwind Visa tillbakarullningsinformationen (om den finns)\n"
+" -d --dynamic Visa det dynamiska segmentet (om det finns)\n"
+" -V --version-info Visa versionssektioner (om de finns)\n"
+" -A --arch-specific Visa arkitekturspecifik information (om den finns)\n"
+" -D --use-dynamic Använd den dynamiska sektionen för att visa symboler\n"
+" -x --hex-dump=<nummer> Visa innehållet i sektion <nummer>\n"
+" -w[liaprmfFso] eller\n"
+" --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n"
+" Visa innehållet i DWARF2-felsökningssektioner\n"
+
+#: readelf.c:2640
+msgid ""
+" -i --instruction-dump=<number>\n"
+" Disassemble the contents of section <number>\n"
+msgstr ""
+" -i --instruction-dump=<nummer>\n"
+" Disassemblera innehållet i sektion <nummer>\n"
+
+#: readelf.c:2644
+msgid ""
+" -I --histogram Display histogram of bucket list lengths\n"
+" -W --wide Allow output width to exceed 80 characters\n"
+" -H --help Display this information\n"
+" -v --version Display the version number of readelf\n"
+msgstr ""
+" -I --histogram Visa ett histogram över hinkarnas listlängder\n"
+" -W --wide Tillåt utskrift bredare än 80 tecken\n"
+" -H --help Visa denna hjälp\n"
+" -v --version Visa versionsinformation för readelf\n"
+
+#: readelf.c:2666 readelf.c:10765
+msgid "Out of memory allocating dump request table."
+msgstr "Slut på minne vid allokering av tabell för önskade utskrifter."
+
+#: readelf.c:2830 readelf.c:2906
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Okänt felsökningsargument \"%s\"\n"
+
+#: readelf.c:2940
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Ogiltig flagga \"-%c\"\n"
+
+#: readelf.c:2953
+msgid "Nothing to do.\n"
+msgstr "Inget att göra.\n"
+
+#: readelf.c:2966 readelf.c:2983 readelf.c:5366
+msgid "none"
+msgstr "ingen"
+
+#: readelf.c:2970 readelf.c:2987 readelf.c:3018
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<okänd: %x>"
+
+#: readelf.c:2984
+msgid "2's complement, little endian"
+msgstr "2-komplement, little endian"
+
+#: readelf.c:2985
+msgid "2's complement, big endian"
+msgstr "2-komplement, big endian"
+
+#: readelf.c:3015
+msgid "Standalone App"
+msgstr "Självständigt program"
+
+#: readelf.c:3034
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "Inte en ELF-fil - den har fel magiska byte i början\n"
+
+#: readelf.c:3042
+msgid "ELF Header:\n"
+msgstr "ELF-huvud:\n"
+
+#: readelf.c:3043
+msgid " Magic: "
+msgstr " Magi: "
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3047
+#, c-format
+msgid " Class: %s\n"
+msgstr " Klass: %s\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3049
+#, c-format
+msgid " Data: %s\n"
+msgstr " Data: %s\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3051
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " Version: %d %s\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3058
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS/ABI: %s\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3060
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " ABI-version: %d\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3062
+#, c-format
+msgid " Type: %s\n"
+msgstr " Typ: %s\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3064
+#, c-format
+msgid " Machine: %s\n"
+msgstr " Maskin: %s\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3066
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " Version: 0x%lx\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3069
+msgid " Entry point address: "
+msgstr " Ingångsadress: "
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3071
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" Start för programhuvuden: "
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3073
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (byte in i filen)\n"
+" Start för sektionshuvuden: "
+
+#: readelf.c:3075
+msgid " (bytes into file)\n"
+msgstr " (byte in i filen)\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3077
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Flaggor: 0x%lx%s\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3080
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " Detta huvuds storlek: %ld (byte)\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3082
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " Programhuvudenas storlek: %ld (byte)\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3084
+#, c-format
+msgid " Number of program headers: %ld\n"
+msgstr " Antal programhuvuden: %ld\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3086
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " Sektionshuvudenas storlek: %ld (byte)\n"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3088
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " Antal sektionshuvuden: %ld"
+
+# 37 tecken i "vänstra" kolumnen
+#: readelf.c:3093
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " Sektionshuvudets strängtabellndx: %ld"
+
+#: readelf.c:3127 readelf.c:3163
+msgid "program headers"
+msgstr "programhuvuden"
+
+#: readelf.c:3203 readelf.c:3480 readelf.c:3526 readelf.c:3589 readelf.c:3656
+#: readelf.c:4715 readelf.c:4758 readelf.c:4948 readelf.c:5917 readelf.c:5931
+#: readelf.c:10411
+msgid "Out of memory\n"
+msgstr "Slut på minne\n"
+
+#: readelf.c:3231
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"Det finns inga programhuvuden i denna fil.\n"
+
+#: readelf.c:3237
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Elf-filtyp är %s\n"
+
+#: readelf.c:3238
+msgid "Entry point "
+msgstr "Ingångspunkt "
+
+#: readelf.c:3240
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"Det finns %d programhuvuden, med början på offset "
+
+# BUGG: plural-s
+#: readelf.c:3252 readelf.c:3254
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"Programhuvuden:\n"
+
+#: readelf.c:3258
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Typ Offset VirtAdr FysAdr FilSt MinneSt Flg Just\n"
+
+#: readelf.c:3261
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Typ Offset VirtAdr FysAdr FilStrl MinneSt Flg Just\n"
+
+#: readelf.c:3265
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " Typ Offset VirtAdr FysAdr\n"
+
+#: readelf.c:3267
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " FilStrl MinneStrl Flagg Just\n"
+
+#: readelf.c:3360
+msgid "more than one dynamic segment\n"
+msgstr "mer än ett dynamiskt segment\n"
+
+#: readelf.c:3368
+msgid "Unable to find program interpreter name\n"
+msgstr "Kan inte hitta namnet på programtolken\n"
+
+#: readelf.c:3375
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [Begär programtolkare: %s]"
+
+#: readelf.c:3387
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" Sektion till segment-avbildning:\n"
+
+#: readelf.c:3388
+msgid " Segment Sections...\n"
+msgstr " Segmentsektioner...\n"
+
+#: readelf.c:3437
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "Kan inte tolka virtuella adresser utan programhuvud.\n"
+
+#: readelf.c:3453
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "Virtuell adress 0x%lx finns ej i något PT_LOAD-segment.\n"
+
+#: readelf.c:3471 readelf.c:3517
+msgid "section headers"
+msgstr "sektionshuvuden"
+
+#: readelf.c:3565 readelf.c:3632
+msgid "symbols"
+msgstr "symboler"
+
+#: readelf.c:3576 readelf.c:3643
+msgid "symtab shndx"
+msgstr "symtab shndx"
+
+#: readelf.c:3745
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"Det finns inga sektioner i denna fil.\n"
+
+#: readelf.c:3751
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "Det finns %d sektionshuvuden, med början på offset 0x%lx:\n"
+
+#: readelf.c:3768 readelf.c:4098 readelf.c:4433 readelf.c:6070
+msgid "string table"
+msgstr "strängtabell"
+
+#: readelf.c:3793
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Filen innehåller flera tabeller med dynamiska symboler\n"
+
+#: readelf.c:3805
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Filen innehåller flera dynamiska strängtabeller\n"
+
+#: readelf.c:3811
+msgid "dynamic strings"
+msgstr "dynamiska strängar"
+
+#: readelf.c:3817
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Filen innehåller flera symtab-shndx-tabeller\n"
+
+#: readelf.c:3855
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"Sektionshuvuden:\n"
+
+#: readelf.c:3857
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"Sektionshuvud:\n"
+
+#: readelf.c:3861
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] Namn Typ Adr Off Strl PS Flg Lk Inf Ju\n"
+
+#: readelf.c:3864
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] Namn Typ Adress Off Strl PS Flg Lk Inf Ju\n"
+
+#: readelf.c:3867
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [Nr] Namn Typ Adress Offset\n"
+
+#: readelf.c:3868
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " Storlek Poststorlek Flagg Länk Info Just\n"
+
+#: readelf.c:3963
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Nyckel till flaggorna:\n"
+" W (skriv), A (allokera), X (exekvera), M (förena), S (strängar)\n"
+" I (info), L (länkordning), G (grupp), x (okänd)\n"
+" O (extra OS-bearbetning krävs) o (OS-specifik), p (processorspecifik)\n"
+
+#: readelf.c:4031
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"\"%s\" relokeringssektion på offset 0x%lx innehåller %ld byte:\n"
+
+#: readelf.c:4043
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"Det finns inga dynamiska relokeringar i denna fil.\n"
+
+#: readelf.c:4070
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"Omrelokeringssektion "
+
+#: readelf.c:4075 readelf.c:4496 readelf.c:4510
+#, c-format
+msgid "'%s'"
+msgstr "\"%s\""
+
+#: readelf.c:4077 readelf.c:4512
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " på offset 0x%lx innehåller %lu poster:\n"
+
+#: readelf.c:4115
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"Det finns inga relokeringar i denna fil.\n"
+
+#: readelf.c:4299
+msgid "unwind table"
+msgstr "tillbakarullningstabell"
+
+#: readelf.c:4350 readelf.c:4362 readelf.c:8499 readelf.c:8511
+#, c-format
+msgid "Skipping unexpected symbol type %u\n"
+msgstr "Hoppar över oväntad symboltyp %u\n"
+
+#: readelf.c:4370
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Hoppar över oväntad relokeringstyp %s\n"
+
+#: readelf.c:4415 readelf.c:4440
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"Det finns inga tillbakarullningssektioner i denna fil.\n"
+
+# BUGG: Fortsättningen är inte markerad för översättning i koden och innehåller '-citattecken.
+#: readelf.c:4491
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"Kunde inte hitta tillbakarullningssektion till "
+
+#: readelf.c:4503
+msgid "unwind info"
+msgstr "tillbakarullningsinfo"
+
+#: readelf.c:4505
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"Tillbakarullningssektion "
+
+#: readelf.c:4699 readelf.c:4742
+msgid "dynamic segment"
+msgstr "dynamiskt segment"
+
+#: readelf.c:4820
+msgid ""
+"\n"
+"There is no dynamic segment in this file.\n"
+msgstr ""
+"\n"
+"Det finns inget dynamiskt segment i denna fil.\n"
+
+#: readelf.c:4854
+msgid "Unable to seek to end of file!"
+msgstr "Kan inte uppsöka slutet av filen!"
+
+#: readelf.c:4865
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Kan inte fastställa hur många symboler som ska läsas in\n"
+
+#: readelf.c:4895
+msgid "Unable to seek to end of file\n"
+msgstr "Kan inte uppsöka slutet av filen\n"
+
+#: readelf.c:4901
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Kan inte fastställa längden på den dynamiska strängtabellen\n"
+
+#: readelf.c:4906
+msgid "dynamic string table"
+msgstr "dynamisk strängtabell"
+
+#: readelf.c:4941
+msgid "symbol information"
+msgstr "symbolinformation"
+
+#: readelf.c:4965
+#, c-format
+msgid ""
+"\n"
+"Dynamic segment at offset 0x%lx contains %ld entries:\n"
+msgstr ""
+"\n"
+"Dynamiskt segment på offset 0x%lx innehåller %ld poster:\n"
+
+#: readelf.c:4968
+msgid " Tag Type Name/Value\n"
+msgstr " Tagg Typ Namn/Värde\n"
+
+#: readelf.c:5004
+msgid "Auxiliary library"
+msgstr "yttre bibliotek"
+
+#: readelf.c:5008
+msgid "Filter library"
+msgstr "filterbibliotek"
+
+#: readelf.c:5012
+msgid "Configuration file"
+msgstr "konfigurationsfil"
+
+#: readelf.c:5016
+msgid "Dependency audit library"
+msgstr "beroendövervakningsbibliotek"
+
+#: readelf.c:5020
+msgid "Audit library"
+msgstr "övervakningsbibliotek"
+
+#: readelf.c:5038 readelf.c:5066 readelf.c:5094
+msgid "Flags:"
+msgstr "flaggor:"
+
+#: readelf.c:5041 readelf.c:5069 readelf.c:5096
+msgid " None\n"
+msgstr " inga\n"
+
+#: readelf.c:5217
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "delat bibliotek: [%s]"
+
+#: readelf.c:5220
+msgid " program interpreter"
+msgstr " programtolk"
+
+#: readelf.c:5224
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "biblioteks so-namn: [%s]"
+
+#: readelf.c:5228
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "bibliotekets rpath: [%s]"
+
+#: readelf.c:5232
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "bibliotekets runpath: [%s]"
+
+#: readelf.c:5296
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "onödigt objekt: [%s]\n"
+
+#: readelf.c:5412
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %ld entries:\n"
+msgstr ""
+"\n"
+"Versiondefinitionssektion \"%s\" innehåller %ld poster:\n"
+
+#: readelf.c:5415
+msgid " Addr: 0x"
+msgstr " Adr: 0x"
+
+#: readelf.c:5417 readelf.c:5612
+#, c-format
+msgid " Offset: %#08lx Link: %lx (%s)\n"
+msgstr " Offset: %#08lx Länk: %lx (%s)\n"
+
+#: readelf.c:5424
+msgid "version definition section"
+msgstr "versiondefinitionssektion"
+
+#: readelf.c:5450
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: Rev: %d Flaggor: %s"
+
+#: readelf.c:5453
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " Index: %d Ant: %d "
+
+#: readelf.c:5464
+#, c-format
+msgid "Name: %s\n"
+msgstr "Namn: %s\n"
+
+#: readelf.c:5466
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Namnindex: %ld\n"
+
+#: readelf.c:5481
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: Förälder %d: %s\n"
+
+#: readelf.c:5484
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: Förälder %d, namnindex: %ld\n"
+
+#: readelf.c:5503
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %ld entries:\n"
+msgstr ""
+"\n"
+"Versionbehovssektion \"%s\" innehåller %ld poster:\n"
+
+#: readelf.c:5506
+msgid " Addr: 0x"
+msgstr " Adr: 0x"
+
+#: readelf.c:5508
+#, c-format
+msgid " Offset: %#08lx Link to section: %ld (%s)\n"
+msgstr " Offset: %#08lx Länk till sektion: %ld (%s)\n"
+
+#: readelf.c:5514
+msgid "version need section"
+msgstr "versionsbehovssektion"
+
+#: readelf.c:5536
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: Version: %d"
+
+#: readelf.c:5539
+#, c-format
+msgid " File: %s"
+msgstr " Fil: %s"
+
+#: readelf.c:5541
+#, c-format
+msgid " File: %lx"
+msgstr " Fil: %lx"
+
+#: readelf.c:5543
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " Ant: %d\n"
+
+#: readelf.c:5561
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: Namn: %s"
+
+#: readelf.c:5564
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: Namnindex: %lx"
+
+#: readelf.c:5567
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Flaggor: %s Version: %d\n"
+
+#: readelf.c:5603
+msgid "version string table"
+msgstr "versionssträngtabell"
+
+#: readelf.c:5607
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Versionsymbolssektion \"%s\" innehåller %d poster:\n"
+
+#: readelf.c:5610
+msgid " Addr: "
+msgstr " Adr: "
+
+#: readelf.c:5622
+msgid "version symbol data"
+msgstr "versionsymbolsdata"
+
+#: readelf.c:5649
+msgid " 0 (*local*) "
+msgstr " 0 (*lokal*) "
+
+#: readelf.c:5653
+msgid " 1 (*global*) "
+msgstr " 1 (*global*) "
+
+#: readelf.c:5689 readelf.c:6129
+msgid "version need"
+msgstr "versionsbehov"
+
+#: readelf.c:5699
+msgid "version need aux (2)"
+msgstr "yttre versionsbehov (2)"
+
+#: readelf.c:5741 readelf.c:6192
+msgid "version def"
+msgstr "versionsdef."
+
+#: readelf.c:5760 readelf.c:6207
+msgid "version def aux"
+msgstr "yttre versionsdef."
+
+#: readelf.c:5791
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"Det fanns ingen versionsinformation i denna fil.\n"
+
+#: readelf.c:5923
+msgid "Unable to read in dynamic data\n"
+msgstr "Kan inte läsa in den dynamiska datan\n"
+
+#: readelf.c:5967
+msgid "Unable to seek to start of dynamic information"
+msgstr "Kan inte uppsöka början av den dynamiska informationen"
+
+#: readelf.c:5973
+msgid "Failed to read in number of buckets\n"
+msgstr "Lyckades inte läsa antal hinkar\n"
+
+#: readelf.c:5979
+msgid "Failed to read in number of chains\n"
+msgstr "Lyckades inte läsa antal kedjor\n"
+
+#: readelf.c:5999
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"Symboltabell för avbilden:\n"
+
+#: readelf.c:6001
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Nr Hin: Värde Strl Typ Bind Synl Idx Namn\n"
+
+#: readelf.c:6003
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Nr Hin: Värde Strl Typ Bind Synl Idx Namn\n"
+
+#: readelf.c:6048
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Symboltabell \"%s\" innehåller %lu poster:\n"
+
+#: readelf.c:6052
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Nr: Värde Strl Typ Bind Synl Idx Namn\n"
+
+#: readelf.c:6054
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Nr: Värde Strl Typ Bind Synl Idx Namn\n"
+
+#: readelf.c:6101
+msgid "version data"
+msgstr "versionsdata"
+
+#: readelf.c:6142
+msgid "version need aux (3)"
+msgstr "yttre versionsbehov (3)"
+
+#: readelf.c:6167
+msgid "bad dynamic symbol"
+msgstr "felaktig dynamisk symbol"
+
+#: readelf.c:6230
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"Informationen om dynamiska symboler är inte tillgänglig för att visa symboler.\n"
+
+#: readelf.c:6242
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %d buckets):\n"
+msgstr ""
+"\n"
+"Histogram över hinkarnas listlängd (totalt %d hinkar):\n"
+
+#: readelf.c:6244
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " Längd Nummer %% av alla Täckning\n"
+
+#: readelf.c:6249 readelf.c:6268 readelf.c:9898 readelf.c:10090
+msgid "Out of memory"
+msgstr "Slut på minne"
+
+#: readelf.c:6317
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Dynamiskt info-segment på offset 0x%lx innehåller %d poster:\n"
+
+#: readelf.c:6320
+msgid " Num: Name BoundTo Flags\n"
+msgstr " Nr: Namn Bind till Flagg\n"
+
+#: readelf.c:6373
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"Disassembleringsutskrift av sektion %s\n"
+
+#: readelf.c:6396
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"Sektion \"%s\" har ingen data att skriva ut.\n"
+
+#: readelf.c:6401
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"Hexadecimal utskrift av sektion \"%s\":\n"
+
+#: readelf.c:6406
+msgid "section data"
+msgstr "sektionsdata"
+
+#: readelf.c:6555
+msgid "badly formed extended line op encountered!\n"
+msgstr "felaktigt utformad utökad rad-op påträffades!\n"
+
+#: readelf.c:6562
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " Utökad op-kod %d: "
+
+#: readelf.c:6567
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Slut på sekvensen\n"
+"\n"
+
+#: readelf.c:6573
+#, c-format
+msgid "set Address to 0x%lx\n"
+msgstr "sätt Adress till 0x%lx\n"
+
+#: readelf.c:6578
+msgid " define new File Table entry\n"
+msgstr " definiera ny filtabellspost\n"
+
+#: readelf.c:6579 readelf.c:6726
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Post\tKatalog\tTid\tStorl.\tNamn\n"
+
+#: readelf.c:6581
+#, c-format
+msgid " %d\t"
+msgstr " %d\t"
+
+#: readelf.c:6584 readelf.c:6586 readelf.c:6588 readelf.c:6738 readelf.c:6740
+#: readelf.c:6742
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
+
+#: readelf.c:6589
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
+
+#: readelf.c:6593
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "OKÄND: längd %d\n"
+
+#: readelf.c:6621
+#, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"Utskrift av felsökningsinnehåll i sektion %s:\n"
+"\n"
+
+#: readelf.c:6649
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "Radinformationen verkar vara trasig - sektionen är för liten\n"
+
+#: readelf.c:6658
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "Endast DWARF 2 och 3 radinfo hanteras för närvarande.\n"
+
+#: readelf.c:6679
+#, c-format
+msgid " Length: %ld\n"
+msgstr " längd: %ld\n"
+
+#: readelf.c:6680
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " DWARF version: %d\n"
+
+#: readelf.c:6681
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " prologlängd: %d\n"
+
+#: readelf.c:6682
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " minsta instruktionslängd: %d\n"
+
+# BUGG: Ska det inte vara `' på engelska?
+#: readelf.c:6683
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " initialvärde på \"is_stmt\": %d\n"
+
+#: readelf.c:6684
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " radbas: %d\n"
+
+#: readelf.c:6685
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " radomfång: %d\n"
+
+#: readelf.c:6686
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " op-kodbas: %d\n"
+
+#: readelf.c:6695
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Op-koder:\n"
+
+#: readelf.c:6698
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " Op-kod %d har %d argument\n"
+
+#: readelf.c:6704
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" Katalogtabellen är tom.\n"
+
+#: readelf.c:6707
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" Katalogtabellen:\n"
+
+#: readelf.c:6711
+#, c-format
+msgid " %s\n"
+msgstr " %s\n"
+
+#: readelf.c:6722
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" Filnamnstabellen är tom.\n"
+
+#: readelf.c:6725
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" Filnamnstabellen:\n"
+
+#: readelf.c:6733
+#, c-format
+msgid " %d\t"
+msgstr " %d\t"
+
+#: readelf.c:6744
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#. Now display the statements.
+#: readelf.c:6752
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Radnummersatser:\n"
+
+#: readelf.c:6768
+#, c-format
+msgid " Special opcode %d: advance Address by %d to 0x%lx"
+msgstr " Särskild op-kod %d: öka adressen med %d till 0x%lx"
+
+#: readelf.c:6772
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " och radnumret med %d till %d\n"
+
+#: readelf.c:6783
+msgid " Copy\n"
+msgstr " Kopiera\n"
+
+#: readelf.c:6790
+#, c-format
+msgid " Advance PC by %d to %lx\n"
+msgstr " Öka programräknaren med %d till %lx\n"
+
+#: readelf.c:6798
+#, c-format
+msgid " Advance Line by %d to %d\n"
+msgstr " Öka radnumret med %d till %d\n"
+
+#: readelf.c:6805
+#, c-format
+msgid " Set File Name to entry %d in the File Name Table\n"
+msgstr " Sätt filnamnet till post %d i filnamnstabellen\n"
+
+#: readelf.c:6813
+#, c-format
+msgid " Set column to %d\n"
+msgstr " Sätt kolumnen till %d\n"
+
+#: readelf.c:6820
+#, c-format
+msgid " Set is_stmt to %d\n"
+msgstr " Sätt is_stmt till %d\n"
+
+#: readelf.c:6825
+msgid " Set basic block\n"
+msgstr " Sätt basblocket\n"
+
+#: readelf.c:6833
+#, c-format
+msgid " Advance PC by constant %d to 0x%lx\n"
+msgstr " Öka programräknaren med konstant %d till 0x%lx\n"
+
+#: readelf.c:6841
+#, c-format
+msgid " Advance PC by fixed size amount %d to 0x%lx\n"
+msgstr " Öka programräknaren med fastlängdsantal %d till 0x%lx\n"
+
+#: readelf.c:6846
+msgid " Set prologue_end to true\n"
+msgstr " Sätt prologue_end till sann\n"
+
+#: readelf.c:6850
+msgid " Set epilogue_begin to true\n"
+msgstr " Sätt epilogue_begin till sann\n"
+
+#: readelf.c:6856
+#, c-format
+msgid " Set ISA to %d\n"
+msgstr " Sätt ISA till %d\n"
+
+#: readelf.c:6860
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr " Okänd op-kod %d med operand: "
+
+#: readelf.c:6891 readelf.c:7371 readelf.c:7443
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"%s-sektionens innehåll:\n"
+"\n"
+
+#: readelf.c:6931
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Endast DWARF 2 och 3 pub.-namn hanteras för närvarande\n"
+
+#: readelf.c:6938
+#, c-format
+msgid " Length: %ld\n"
+msgstr " längd: %ld\n"
+
+#: readelf.c:6940
+#, c-format
+msgid " Version: %d\n"
+msgstr " version: %d\n"
+
+#: readelf.c:6942
+#, c-format
+msgid " Offset into .debug_info section: %ld\n"
+msgstr " offset i .debug_info-sektionen: %ld\n"
+
+#: readelf.c:6944
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr " storl. på omr. i .debug_info-sekt.: %ld\n"
+
+#: readelf.c:6947
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" Offset\tNamn\n"
+
+#: readelf.c:7042
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Okänt TAG-värde: %lx"
+
+#: readelf.c:7156
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Okänt AT-värde: %lx"
+
+#: readelf.c:7193
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Okänt FORM-värde: %lx"
+
+#: readelf.c:7392
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - rad: %d filnr: %d\n"
+
+#: readelf.c:7397
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: readelf.c:7405
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - rad : %d makro : %s\n"
+
+#: readelf.c:7413
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - rad : %d makro : %s\n"
+
+#: readelf.c:7424
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - konstant : %d sträng : %s\n"
+
+#: readelf.c:7452
+msgid " Number TAG\n"
+msgstr " Nummer TAGG\n"
+
+#: readelf.c:7458
+#, c-format
+msgid " %ld %s [%s]\n"
+msgstr " %ld %s [%s]\n"
+
+#: readelf.c:7461
+msgid "has children"
+msgstr "har barn"
+
+#: readelf.c:7461
+msgid "no children"
+msgstr "inga barn"
+
+#: readelf.c:7465
+#, c-format
+msgid " %-18s %s\n"
+msgstr " %-18s %s\n"
+
+#: readelf.c:7486
+#, c-format
+msgid " %lu byte block: "
+msgstr " %lu byte-block: "
+
+#: readelf.c:7814
+msgid "(User defined location op)"
+msgstr "(användardefinierad plats-op)"
+
+#: readelf.c:7816
+msgid "(Unknown location op)"
+msgstr "(okänd plats-op)"
+
+#: readelf.c:7855
+msgid "debug_loc section data"
+msgstr "debug_loc-sektionsdata"
+
+#: readelf.c:7887
+msgid ""
+"\n"
+"The .debug_loc section is empty.\n"
+msgstr ""
+"\n"
+".debug_loc-sektionen är tom.\n"
+
+#: readelf.c:7891
+msgid ""
+"Contents of the .debug_loc section:\n"
+"\n"
+msgstr ""
+"Innehåll i .debug_loc-sektionen:\n"
+"\n"
+
+# Expression är en maskinkodsinstruktion
+#: readelf.c:7892
+msgid ""
+"\n"
+" Offset Begin End Expression\n"
+msgstr ""
+"\n"
+" Offset Start Slut Instruktion\n"
+
+#: readelf.c:7968
+msgid "debug_str section data"
+msgstr "debug_str sektionsdata"
+
+#: readelf.c:7987
+msgid "<no .debug_str section>"
+msgstr "<ingen .debug_str-sektion>"
+
+#: readelf.c:7990
+msgid "<offset is too big>"
+msgstr "<offseten är för stor>"
+
+#: readelf.c:8009
+msgid ""
+"\n"
+"The .debug_str section is empty.\n"
+msgstr ""
+"\n"
+".debug_str-sektionen är tom.\n"
+
+#: readelf.c:8013
+msgid ""
+"Contents of the .debug_str section:\n"
+"\n"
+msgstr ""
+"Innehåll i .debug_str-sektionen:\n"
+"\n"
+
+#: readelf.c:8088
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "Internt fel: DWARF-version inte 2 eller 3.\n"
+
+#: readelf.c:8203
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (indirekt sträng, offset: 0x%lx): %s"
+
+#: readelf.c:8212
+#, c-format
+msgid "Unrecognized form: %d\n"
+msgstr "Okänd formtyp: %d\n"
+
+#: readelf.c:8226
+msgid "(not inlined)"
+msgstr "(inte inlajnad)"
+
+#: readelf.c:8229
+msgid "(inlined)"
+msgstr "(inlajnad)"
+
+#: readelf.c:8232
+msgid "(declared as inline but ignored)"
+msgstr "(deklarerad som inlajn men ignorerad)"
+
+#: readelf.c:8235
+msgid "(declared as inline and inlined)"
+msgstr "(deklarerad som inlajn och inlajnad)"
+
+#: readelf.c:8238
+#, c-format
+msgid " (Unknown inline attribute value: %lx)"
+msgstr " (okänt inlajnattributvärde: %lx)"
+
+#: readelf.c:8419 readelf.c:8646
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+"Sektion %s innehåller:\n"
+"\n"
+
+#: readelf.c:8535
+#, c-format
+msgid " Compilation Unit @ %lx:\n"
+msgstr " Kompileringsenhet @ %lx:\n"
+
+#: readelf.c:8536
+#, c-format
+msgid " Length: %ld\n"
+msgstr " längd: %ld\n"
+
+#: readelf.c:8537
+#, c-format
+msgid " Version: %d\n"
+msgstr " version: %d\n"
+
+#: readelf.c:8538
+#, c-format
+msgid " Abbrev Offset: %ld\n"
+msgstr " förk.-offset: %ld\n"
+
+#: readelf.c:8539
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " pekarstorlek: %d\n"
+
+#: readelf.c:8543
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr "Endast DWARF 2 och 3 felsökningsinformation hanteras för närvarande.\n"
+
+#: readelf.c:8563
+msgid "Unable to locate .debug_abbrev section!\n"
+msgstr "Kan inte hitta någon .debug_abbrev-sektion!\n"
+
+#: readelf.c:8569
+msgid "debug_abbrev section data"
+msgstr "debug_abbrev sektionsdata"
+
+#: readelf.c:8606
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "Kan inte hitta post %lu i förkortningstabellen\n"
+
+#: readelf.c:8611
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr " <%d><%lx>: Förkortningsnummer: %lu (%s)\n"
+
+#: readelf.c:8691
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Endast DWARF 2 och 3 a-intervall hanteras för närvarande.\n"
+
+#: readelf.c:8695
+#, c-format
+msgid " Length: %ld\n"
+msgstr " längd: %ld\n"
+
+#: readelf.c:8696
+#, c-format
+msgid " Version: %d\n"
+msgstr " version: %d\n"
+
+#: readelf.c:8697
+#, c-format
+msgid " Offset into .debug_info: %lx\n"
+msgstr " offset i .debug_info: %lx\n"
+
+#: readelf.c:8698
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " pekarstorlek: %d\n"
+
+#: readelf.c:8699
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " segmentstorlek: %d\n"
+
+#: readelf.c:8701
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" adresslängd\n"
+
+#: readelf.c:8903
+#, c-format
+msgid "The section %s contains:\n"
+msgstr "Sektion %s innehåller:\n"
+
+#: readelf.c:9538
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Visa felsökningsinnehållet i sektion %s hanteras inte än.\n"
+
+#: readelf.c:9634
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+"\n"
+"Sektion \"%s\" innehåller ingen felsökningsdata.\n"
+
+#: readelf.c:9639 readelf.c:9701
+msgid "debug section data"
+msgstr "felsökningssektionsdata"
+
+#: readelf.c:9655
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "Okänd felsökningssektion: %s\n"
+
+#: readelf.c:9729
+msgid "Some sections were not dumped because they do not exist!\n"
+msgstr "NÃ¥gra sektioner skrevs inte ut eftersom de inte existerar!\n"
+
+#: readelf.c:9806 readelf.c:10170
+msgid "liblist"
+msgstr "bibliotekslista"
+
+#: readelf.c:9891
+msgid "options"
+msgstr "flaggor"
+
+#: readelf.c:9922
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Sektion \"%s\" innehåller %d poster:\n"
+
+#: readelf.c:10083
+msgid "conflict list found without a dynamic symbol table"
+msgstr "fann konfliktlista utan dynamisk symboltabell"
+
+#: readelf.c:10101 readelf.c:10117
+msgid "conflict"
+msgstr "konflikt"
+
+#: readelf.c:10127
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %ld entries:\n"
+msgstr ""
+"\n"
+"Sektion \".conflict\" innehåller %ld poster:\n"
+
+#: readelf.c:10129
+msgid " Num: Index Value Name"
+msgstr " Num: Index Värde Namn"
+
+#: readelf.c:10178
+msgid "liblist string table"
+msgstr "liblist-strängtabell"
+
+#: readelf.c:10187
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Bibliotekslistsektion \"%s\" innehåller %lu poster:\n"
+
+#: readelf.c:10236
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (prstatus-struktur)"
+
+#: readelf.c:10237
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (flyttalsregister)"
+
+#: readelf.c:10238
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (prpsinfo-struktur)"
+
+#: readelf.c:10239
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (task-struktur)"
+
+#: readelf.c:10240
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (user_xfpregs-struktur)"
+
+#: readelf.c:10241
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (pstatus-struktur)"
+
+#: readelf.c:10242
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (flyttalsregister)"
+
+#: readelf.c:10243
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (psinfo-struktur)"
+
+#: readelf.c:10244
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (lwpstatus_t-struktur)"
+
+#: readelf.c:10245
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (lwpsinfo_t-struktur)"
+
+#: readelf.c:10246
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (win32_pstatus-struktur)"
+
+#: readelf.c:10248 readelf.c:10272
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "Okänd kommentarstyp: (0x%08x)"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:10262
+msgid "NetBSD procinfo structure"
+msgstr "NetBSD processinfo-struktur"
+
+#: readelf.c:10289 readelf.c:10303
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (reg-struktur)"
+
+#: readelf.c:10291 readelf.c:10305
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (fpreg-struktur)"
+
+#: readelf.c:10311
+#, c-format
+msgid "PT_FIRSTMACH+%d"
+msgstr "PT_FIRSTMACH+%d"
+
+#: readelf.c:10365
+msgid "notes"
+msgstr "kommentarer"
+
+#: readelf.c:10371
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"Kommentarer på offset 0x%08lx av längd 0x%08lx:\n"
+
+#: readelf.c:10373
+msgid " Owner\t\tData size\tDescription\n"
+msgstr " Ägare\t\tData-storlek\tBeskrivning\n"
+
+#: readelf.c:10392
+#, c-format
+msgid "corrupt note found at offset %x into core notes\n"
+msgstr "fann trasig kommentar på offset %x i minnesutskriftskommentarerna\n"
+
+#: readelf.c:10394
+#, c-format
+msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
+msgstr " typ: %x, namnstorlek: %08lx, beskrivningsstorlek: %08lx\n"
+
+#: readelf.c:10476
+msgid "No note segments present in the core file.\n"
+msgstr "Det finns inga kommentarer i minnesfilen.\n"
+
+#: readelf.c:10560
+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"
+msgstr ""
+"Den här binären av readelf har byggts utan hantering av 64-bitars\n"
+"datatyper och kan därför inte läsa 64-bitars ELF-filer.\n"
+
+#: readelf.c:10606
+#, c-format
+msgid "Cannot stat input file %s.\n"
+msgstr "Kan inte ta status på infil %s.\n"
+
+#: readelf.c:10613
+#, c-format
+msgid "Input file %s not found.\n"
+msgstr "Infil %s finns inte.\n"
+
+#: readelf.c:10619
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s: Lyckades inte läsa filhuvudet\n"
+
+#: readelf.c:10633
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Fil: %s\n"
+
+#: rename.c:132
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s: kan inte sätta tiden: %s"
+
+#. We have to clean up here.
+#: rename.c:171 rename.c:204
+#, c-format
+msgid "%s: rename: %s"
+msgstr "%s: kan inte byta namn: %s"
+
+#: rename.c:212
+#, c-format
+msgid "%s: simple_copy: %s"
+msgstr "%s: kopieringsfel: %s"
+
+#: resbin.c:134
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: inte tillräckligt med rådata"
+
+#: resbin.c:153
+msgid "null terminated unicode string"
+msgstr "nollterminerad unicode-sträng"
+
+#: resbin.c:183 resbin.c:189
+msgid "resource ID"
+msgstr "resurs-ID"
+
+#: resbin.c:233
+msgid "cursor"
+msgstr "markör"
+
+#: resbin.c:267 resbin.c:274
+msgid "menu header"
+msgstr "menyhuvud"
+
+#: resbin.c:284
+msgid "menuex header"
+msgstr "meny-ext.-huvud"
+
+#: resbin.c:288
+msgid "menuex offset"
+msgstr "meny-ext.-offset"
+
+#: resbin.c:295
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "menyversion %d hanteras inte"
+
+#: resbin.c:323 resbin.c:338 resbin.c:404
+msgid "menuitem header"
+msgstr "menyobjektshuvud"
+
+#: resbin.c:434
+msgid "menuitem"
+msgstr "menyobjekt"
+
+#: resbin.c:475 resbin.c:503
+msgid "dialog header"
+msgstr "dialoghuvud"
+
+#: resbin.c:493
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "oväntad DIALOGEX-versionstyp %d"
+
+#: resbin.c:538
+msgid "dialog font point size"
+msgstr "typsnittets punktstorlek i dialog"
+
+#: resbin.c:546
+msgid "dialogex font information"
+msgstr "dialog-ext.-typsnittsinformation"
+
+#: resbin.c:572 resbin.c:590
+msgid "dialog control"
+msgstr "dialogkontroll"
+
+#: resbin.c:582
+msgid "dialogex control"
+msgstr "dioalog-ext.kontroll"
+
+#: resbin.c:611
+msgid "dialog control end"
+msgstr "dialogkontrollsslut"
+
+#: resbin.c:623
+msgid "dialog control data"
+msgstr "dialogkontrollsdata"
+
+#: resbin.c:666
+msgid "stringtable string length"
+msgstr "längd på sträng i strängtabellen"
+
+#: resbin.c:676
+msgid "stringtable string"
+msgstr "sträng i strängtabellen"
+
+#: resbin.c:709
+msgid "fontdir header"
+msgstr "typsnittskatalogens huvud"
+
+#: resbin.c:722
+msgid "fontdir"
+msgstr "typsnittskatalog"
+
+#: resbin.c:738
+msgid "fontdir device name"
+msgstr "typsnittskatalogens enhetsnamn"
+
+#: resbin.c:744
+msgid "fontdir face name"
+msgstr "typsnittskatalogens formnamn"
+
+#: resbin.c:787
+msgid "accelerator"
+msgstr "accelererare"
+
+#: resbin.c:851
+msgid "group cursor header"
+msgstr "gruppmarkörshuvud"
+
+#: resbin.c:855
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "oväntad gruppmarkörstyp %d"
+
+#: resbin.c:870
+msgid "group cursor"
+msgstr "gruppmarkör"
+
+#: resbin.c:909
+msgid "group icon header"
+msgstr "gruppikonshuvud"
+
+#: resbin.c:913
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "oväntad gruppikonstyp %d"
+
+#: resbin.c:928
+msgid "group icon"
+msgstr "gruppikon"
+
+#: resbin.c:999 resbin.c:1218
+msgid "unexpected version string"
+msgstr "oväntad versionssträng"
+
+#: resbin.c:1033
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "versionslängd %d överensstämmer inte med resurslängd %lu"
+
+#: resbin.c:1037
+#, c-format
+msgid "unexpected version type %d"
+msgstr "oväntad versionstyp %d"
+
+#: resbin.c:1049
+#, c-format
+msgid "unexpected fixed version information length %d"
+msgstr "oväntad längd %d på fast versionsinformation"
+
+#: resbin.c:1052
+msgid "fixed version info"
+msgstr "fast versionsinfo"
+
+#: resbin.c:1056
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "oväntad fast versionssignatur %lu"
+
+#: resbin.c:1060
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "oväntad version %lu av fast versionsinformation"
+
+#: resbin.c:1089
+msgid "version var info"
+msgstr "variabel versionsinfo"
+
+#: resbin.c:1106
+#, c-format
+msgid "unexpected stringfileinfo value length %d"
+msgstr "oväntad längd %d på värde för strängfilsinfo"
+
+#: resbin.c:1116
+#, c-format
+msgid "unexpected version stringtable value length %d"
+msgstr "oväntad längd %d på värde för versionssträngtabell"
+
+#: resbin.c:1150
+#, c-format
+msgid "unexpected version string length %d != %d + %d"
+msgstr "oväntad längd %d != %d + %d på versionssträng"
+
+#: resbin.c:1161
+#, c-format
+msgid "unexpected version string length %d < %d"
+msgstr "oväntad längd %d < %d på versionssträng"
+
+#: resbin.c:1178
+#, c-format
+msgid "unexpected varfileinfo value length %d"
+msgstr "oväntad längd %d på värde för var.filinfo"
+
+#: resbin.c:1197
+msgid "version varfileinfo"
+msgstr "versionsvar.filinfo"
+
+#: resbin.c:1212
+#, c-format
+msgid "unexpected version value length %d"
+msgstr "oväntad längd %d på värde för version"
+
+#: rescoff.c:128
+msgid "filename required for COFF input"
+msgstr "filnamn krävs för COFF-indata"
+
+#: rescoff.c:145
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: ingen resurssektion"
+
+#: rescoff.c:152
+msgid "can't read resource section"
+msgstr "kan inte läsa resurssektionen"
+
+#: rescoff.c:178
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: adress utanför begränsningen"
+
+#: rescoff.c:197
+msgid "directory"
+msgstr "katalog"
+
+#: rescoff.c:225
+msgid "named directory entry"
+msgstr "namngiven katalogpost"
+
+#: rescoff.c:234
+msgid "directory entry name"
+msgstr "katalogpostnamn"
+
+#: rescoff.c:254
+msgid "named subdirectory"
+msgstr "namngiven underkatalog"
+
+#: rescoff.c:262
+msgid "named resource"
+msgstr "namngiven resurs"
+
+#: rescoff.c:277
+msgid "ID directory entry"
+msgstr "ID-katalogpost"
+
+#: rescoff.c:294
+msgid "ID subdirectory"
+msgstr "ID-underkatalog"
+
+#: rescoff.c:302
+msgid "ID resource"
+msgstr "ID-resurs"
+
+#: rescoff.c:328
+msgid "resource type unknown"
+msgstr "okänd resurstyp"
+
+#: rescoff.c:331
+msgid "data entry"
+msgstr "datapost"
+
+#: rescoff.c:339
+msgid "resource data"
+msgstr "resursdata"
+
+#: rescoff.c:344
+msgid "resource data size"
+msgstr "storlek på resursdata"
+
+#: rescoff.c:439
+msgid "filename required for COFF output"
+msgstr "filnamn krävs för COFF-utdata"
+
+#: rescoff.c:738
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "kan inte få fram BFD_RELOC_RVA-relokeringstyp"
+
+#: resrc.c:240 resrc.c:312
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "kan inte öppna temporärfil \"%s\": %s"
+
+#: resrc.c:246
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "kan inte omdirigera standard ut: \"%s\": %s"
+
+#: resrc.c:262
+#, c-format
+msgid "%s %s: %s"
+msgstr "%s %s: %s"
+
+#: resrc.c:308
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "kan inte exekvera \"%s\": %s"
+
+#: resrc.c:317
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "Läser utdata från förbehandlaren via temporärfil \"%s\"\n"
+
+#: resrc.c:324
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "kan inte anropa popen \"%s\": %s"
+
+#: resrc.c:326
+msgid "Using popen to read preprocessor output\n"
+msgstr "Läser utdata från förbehandlaren via popen\n"
+
+#: resrc.c:369
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "Provade \"%s\"\n"
+
+#: resrc.c:380
+#, c-format
+msgid "Using `%s'\n"
+msgstr "Använder \"%s\"\n"
+
+#: resrc.c:542
+#, c-format
+msgid "%s:%d: %s\n"
+msgstr "%s:%d: %s\n"
+
+#: resrc.c:551
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: oväntat filslut"
+
+#: resrc.c:608
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: läsning av %lu byte gav %lu"
+
+#: resrc.c:650 resrc.c:905 resrc.c:1178 resrc.c:1332
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "stat misslyckades på bildfil \"%s\": %s"
+
+#: resrc.c:703
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "markörfil \"%s\" innehåller inte markördata"
+
+#: resrc.c:735 resrc.c:1049
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: fseek till %lu misslyckades: %s"
+
+#: resrc.c:873
+msgid "help ID requires DIALOGEX"
+msgstr "hjälp-ID kräver DIALOGEX"
+
+#: resrc.c:875
+msgid "control data requires DIALOGEX"
+msgstr "kontrolldata kräver DIALOGEX"
+
+#: resrc.c:1018
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "ikonfil \"%s\" innehåller inte ikondata"
+
+#: resrc.c:1537
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "kan inte öppna \"%s\" för utmatning: %s"
+
+#: size.c:86
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr " Visa storleken på sektioner i binärfiler\n"
+
+#: size.c:87
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr " Om ingen infil är vald används a.out\n"
+
+#: size.c:88
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Flaggorna är:\n"
+" -A|-B --format={sysv|berkeley} Välj utdatastil (standard är %s)\n"
+" -o|-d|-x --radix={8|10|16} Visa tal oktalt, decimalt eller hexadecimalt\n"
+" -t --totals Visa samanlagd storlek (endast Berkeley)\n"
+" --target=<bfdnamn> Välj binärfilens format\n"
+" -h --help Visa denna hjälp\n"
+" -v --version Visa programmets versionsinformation\n"
+"\n"
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "ogiltigt argument till --format: %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Ogiltig talbas: %s\n"
+
+#: srconv.c:1953
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "Konverterar en COFF-objektfil till en SYSROFF-objektfil\n"
+
+#: srconv.c:1954
+msgid ""
+" The options are:\n"
+" -q --quick (Obsolete - ignoerd)\n"
+" -n --noprescan Do not perform a scan to convert commons into defs\n"
+" -d --debug Display information about what is being done\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Flaggorna är:\n"
+" -q --quick (Utgått - ignoreras)\n"
+" -n --noprescan Gör inte sök-och-ersätt från commons till defs\n"
+" -d --debug Visa information om vad som händer\n"
+" -h --help Visa denna hjälp\n"
+" -v --version Visa programets versionsinformation\n"
+
+#: srconv.c:2099
+#, c-format
+msgid "unable to open output file %s"
+msgstr "kan inte öppna utfil %s"
+
+#: stabs.c:346 stabs.c:1755
+msgid "numeric overflow"
+msgstr "numeriskt överspill"
+
+#: stabs.c:357
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "Felaktig stab: %s\n"
+
+#: stabs.c:367
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Varning: %s: %s\n"
+
+#: stabs.c:488
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC inte inuti funktion\n"
+
+#: stabs.c:527
+msgid "Too many N_RBRACs\n"
+msgstr "För många N_RBRAC:s\n"
+
+#: stabs.c:773
+msgid "unknown C++ encoded name"
+msgstr "okänt C++-kodat namn"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1293
+msgid "unrecognized cross reference type"
+msgstr "okänd korsreferenstyp"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1847
+msgid "missing index type"
+msgstr "utebliven indextyp"
+
+#: stabs.c:2174
+msgid "unknown virtual character for baseclass"
+msgstr "okänt virtuellt tecken för basklass"
+
+#: stabs.c:2192
+msgid "unknown visibility character for baseclass"
+msgstr "okänt synlighetstecken för basklass"
+
+#: stabs.c:2384
+msgid "unnamed $vb type"
+msgstr "$vb-typ utan namn"
+
+#: stabs.c:2390
+msgid "unrecognized C++ abbreviation"
+msgstr "okänd C++-förkortning"
+
+#: stabs.c:2470
+msgid "unknown visibility character for field"
+msgstr "okänt synlighetstecken för fält"
+
+#: stabs.c:2726
+msgid "const/volatile indicator missing"
+msgstr "const/volatile-indikator saknas"
+
+#: stabs.c:2967
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "Ingen kodning av \"%s\"\n"
+
+#: stabs.c:3281
+msgid "Undefined N_EXCL"
+msgstr "Odefinierad N_EXCL"
+
+#: stabs.c:3369
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "Typs filnummer %d utanför sitt intervall\n"
+
+#: stabs.c:3374
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Typs indexnummer %d utanför sitt intervall\n"
+
+#: stabs.c:3461
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "Okänd XCOFF-typ %d\n"
+
+#: stabs.c:3762
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "felaktigt manglat namn \"%s\"\n"
+
+#: stabs.c:3859
+msgid "no argument types in mangled string\n"
+msgstr "inga argumenttyper i den manglade strängen\n"
+
+#: strings.c:208
+#, c-format
+msgid "invalid number %s"
+msgstr "ogiltigt tal %s"
+
+#: strings.c:647
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "ogiltigt heltalsargument %s"
+
+#: strings.c:658
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr " Visa läsbara strängar i [fil(er)] (eller från standard in)\n"
+
+#: strings.c:659
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,x,d} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Flaggorna är:\n"
+" -a - --all Undersök hela filen, inte bara datasektionen\n"
+" -f --print-file-name Skriv filens namn före varje sträng\n"
+" -n --bytes=[antal] Hitta och skriv ut varje NUL-terminerad sekvens\n"
+" -<antal> med minst [antal] tecken (standard 4).\n"
+" -t --radix={o,d,x} Skriv strängens position i talbas 8, 10 eller 16\n"
+" -o Synonym för --radix=o\n"
+" -T --target=<BFDNAMN> Välj binärfilens format\n"
+" -e --encoding={s,S,b,l,B,L} Välj teckenstorlek och typ av endian:\n"
+" s=7-bit, S=8-bit, {b,l}=16-bit, {B,L}=32-bit\n"
+" -h --help Visa denna hjälp\n"
+" -v --version Visa programmets versionsinformation\n"
+
+#: sysdump.c:768
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "Skriv en mänskligt läsbar tolkning av en SYSROFF-objektfil\n"
+
+#: sysdump.c:769
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Flaggorna är:\n"
+" -h --help Visa denna hjälp\n"
+" -v --version Visa programment versionsinformation\n"
+
+#: sysdump.c:836
+#, c-format
+msgid "cannot open input file %s"
+msgstr "kan inte öppna infil %s"
+
+#: version.c:36
+msgid "Copyright 2002 Free Software Foundation, Inc.\n"
+msgstr "Copyright 2002 Free Software Foundation, Inc.\n"
+
+#: version.c:37
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License. This program has absolutely no warranty.\n"
+msgstr ""
+"Detta program är fri programvara; du kan sprida det vidare under villkoren\n"
+"i GNU General Public License. Detta program har inga som helst garantier.\n"
+
+#: windres.c:205
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "kan inte öppna %s \"%s\": %s"
+
+#: windres.c:384
+msgid ": expected to be a directory\n"
+msgstr ": förväntades vara en katalog\n"
+
+#: windres.c:396
+msgid ": expected to be a leaf\n"
+msgstr ": förväntades vara ett löv\n"
+
+#: windres.c:405
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: varning: "
+
+#: windres.c:407
+msgid ": duplicate value\n"
+msgstr ": dublett av värdet\n"
+
+#: windres.c:569
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "okänd formattyp \"%s\""
+
+#: windres.c:570
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: format som hanteras:"
+
+#. Otherwise, we give up.
+#: windres.c:655
+#, c-format
+msgid "can not determine type of file `%s'; use the -I option"
+msgstr "kan inte fastställa filtyp på \"%s\"; använd flagga -I"
+
+#: windres.c:669
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Användning: %s [flaggor] [infil] [utfil]\n"
+
+#: windres.c:671
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+" Flaggorna är:\n"
+" -i --input=<fil> Välj infil\n"
+" -o --output=<fil> Välj utfil\n"
+" -J --input-format=<format> Välj indataformat\n"
+" -O --output-format=<format> Välj utdataformat\n"
+" -F --target=<mål> Välj COFF-mål\n"
+" --preprocessor=<program> Program att förbehandla rc-filen med\n"
+" -I --include-dir=<katalog> Inkludera ur katalog när rc-filen förbehandlas\n"
+" -D --define <sym>[=<värde>] Definiera SYM när rc-filen förbehandlas\n"
+" -U --undefine <sym> Odefiniera SYM när rc-filen förbehandlas\n"
+" -v --verbose Utförlig - berättar vad den gör\n"
+" -l --language=<värde> Välj språk när rc-filen läses\n"
+" --use-temp-file Använd en tempfil istället för popen för att\n"
+" läsa utdata från förbehandlaren\n"
+" --no-use-temp-file Använd popen (standard)\n"
+
+#: windres.c:687
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug Slå på tolkens felsökning\n"
+
+#: windres.c:690
+msgid ""
+" -r Ignored for compatibility with rc\n"
+" -h --help Print this help message\n"
+" -V --version Print version information\n"
+msgstr ""
+" -r Ignorerad, för kompabilitet med rc\n"
+" -h --help Visa denna hjälp\n"
+" -V --version Visa versionsinformation\n"
+
+#: windres.c:694
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"FORMAT är ett av rc, res eller coff, och härleds från filändelsen\n"
+"om det inte anges. Ett ensamt filnamn är en infil. Ingen infil\n"
+"betyder standard in, med formatet rc. Ingen utfil betyder standard ut,\n"
+"med formatet rc.\n"
+
+#: windres.c:833
+msgid "invalid option -f\n"
+msgstr "ogiltig flagga -f\n"
+
+#: windres.c:838
+msgid "No filename following the -fo option.\n"
+msgstr "Inget filnamn efter flaggan -fo.\n"
+
+#: windres.c:896
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr "Flagga -I för att välja informat har utgått, vänligen använd -J istället.\n"
+
+#: windres.c:1014
+msgid "no resources"
+msgstr "inga resurser"
+
+#: wrstabs.c:395 wrstabs.c:2055
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup misslyckades: %s"
+
+#: wrstabs.c:695
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: felaktig storlek %u"
+
+#: wrstabs.c:1495
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: varning: okänd storleken på fält \"%s\" i strukturen"
diff --git a/binutils-2.24/binutils/po/tr.gmo b/binutils-2.24/binutils/po/tr.gmo
new file mode 100644
index 00000000..71904464
--- /dev/null
+++ b/binutils-2.24/binutils/po/tr.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/tr.po b/binutils-2.24/binutils/po/tr.po
new file mode 100644
index 00000000..61a51e6c
--- /dev/null
+++ b/binutils-2.24/binutils/po/tr.po
@@ -0,0 +1,5790 @@
+# translation of binutils-2.15.96.tr.po to Turkish
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+# Deniz Akkus Kanca <deniz@arayan.com>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.15.96\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-03 21:03+1030\n"
+"PO-Revision-Date: 2005-03-13 09:19+0200\n"
+"Last-Translator: Deniz Akkus Kanca <deniz@arayan.com>\n"
+"Language-Team: Turkish <gnu-tr-u12a@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.9.1\n"
+
+#: addr2line.c:73
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Kullanım: %s [seçenekler] [adresler]\n"
+
+#: addr2line.c:74
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " adresleri satır numarası/dosya adı çiftlerine çevirir.\n"
+
+#: addr2line.c:75
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Eğer komut satırında adres belirtilmezse, standart girdiden okunur\n"
+
+#: addr2line.c:76
+#, c-format
+msgid ""
+" The options are:\n"
+" -b --target=<bfdname> Set the binary file format\n"
+" -e --exe=<executable> Set the input file name (default is a.out)\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Seçenekler:\n"
+" -b --target=<bfdadı> İkilik dosya biçemini belirtir\n"
+" -e --exe=<çalıştırılabilir dosya> Girdi adını belirtir (öntanımlı: a.out)\n"
+" -s --basenames Dizin adlarını soyar\n"
+" -f --functions İşlev adlarını gösterir\n"
+" -C --demangle[=tarz] İşlev adlarını düzeltir\n"
+" -h --help Bu bilgiyi gösterir\n"
+" -v --version Program sürüm no'sunu gösterir\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
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr ""
+"Yazılım hatalarını %s adresine, \n"
+"çeviri hatalarını <gnu-tr@belgeler.org> adresine gönderin\n"
+
+#: addr2line.c:241
+#, c-format
+msgid "%s: can not get addresses from archive"
+msgstr "%s: arşivden adresler alınamadı"
+
+#: addr2line.c:311 nm.c:1519 objdump.c:2848
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "bilinmeyen düzeltme tarzı '%s'"
+
+#: ar.c:205
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "arÅŸivde %s girdisi yok\n"
+
+#: ar.c:221
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+msgstr "Kullanım: %s [öykünüm seçenekleri] [-]{dmpqrstx}[abcfilNoPsSuvV] [üye-adı] [sayı] arşiv-dosyası dosya...\n"
+
+#: ar.c:224
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<mri-betiÄŸi]\n"
+
+#: ar.c:225
+#, c-format
+msgid " commands:\n"
+msgstr " komutlar:\n"
+
+#: ar.c:226
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - arÅŸivden dosya(lar) siler\n"
+
+#: ar.c:227
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - arşivde dosya(ları) taşır\n"
+
+#: ar.c:228
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - arşivde bulunan dosya(ları) yazdırır\n"
+
+#: ar.c:229
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - dosya(ları) arşivin sonuna çabucak ekler\n"
+
+#: ar.c:230
+#, c-format
+msgid " r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
+msgstr " r[ab][f][u] - arşivde olan bir dosyanın yerine yenisi koyar veya arşive yeni dosya(lar) ekler\n"
+
+#: ar.c:231
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - arşivin içeriğini gösterir\n"
+
+#: ar.c:232
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - arşivdeki dosya(ları) açar\n"
+
+#: ar.c:233
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " komuta özgü değiştiriciler:\n"
+
+#: ar.c:234
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - dosyaları [üye-adı]'ndan sonra ekler\n"
+
+#: ar.c:235
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - dosya(ları) [üye-adı]'ndan önce ekler ([i] ile aynı)\n"
+
+#: ar.c:236
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - adın [sayı] numaralı geçişini kullanır\n"
+
+#: ar.c:237
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - eklenen dosya adlarını kırpar\n"
+
+#: ar.c:238
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - eşleştirmede tam yol adlarını kullanır\n"
+
+#: ar.c:239
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - orjinal zaman damgalarını korur\n"
+
+#: ar.c:240
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - yalnızca şimdiki arşiv içeriğinden daha yeni olan dosyaları değiştirir\n"
+
+#: ar.c:241
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " genel deÄŸiÅŸtiriciler:\n"
+
+#: ar.c:242
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - eğer kitaplık oluşturulmak zorunda kalınırsa, uyarı vermez\n"
+
+#: ar.c:243
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - arÅŸiv endeksi oluÅŸturur (ranlib)\n"
+
+#: ar.c:244
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - sembol tablosu oluÅŸturmaz\n"
+
+#: ar.c:245
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - açıklama verir\n"
+
+#: ar.c:246
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - sürüm numarasını gösterir\n"
+
+#: ar.c:253
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Kullanım: %s [seçenekler] arşiv\n"
+
+#: ar.c:254
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " Arşiv erişimini hızlandırmak için indeks üretir\n"
+
+#: ar.c:255
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Print this help message\n"
+" -V --version Print version information\n"
+msgstr ""
+" Seçenekler:\n"
+" -h --help Bu yardımı gösterir\n"
+" -V --version Sürüm bilgisini gösterir\n"
+
+#: ar.c:483
+msgid "two different operation options specified"
+msgstr "iki farklı işlev seçeneği belirtilmiş"
+
+#: ar.c:558
+#, c-format
+msgid "illegal option -- %c"
+msgstr "geçersiz seçenek -- %c"
+
+#: ar.c:604
+msgid "no operation specified"
+msgstr "iÅŸlev belirtilmemiÅŸ"
+
+#: ar.c:607
+msgid "`u' is only meaningful with the `r' option."
+msgstr "`u' yalnızca `r' seçeneği ile anlamlıdır."
+
+#: ar.c:615
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "`N' yalnızca `x' ve `d' seçenekleri ile anlamlıdır."
+
+#: ar.c:618
+msgid "Value for `N' must be positive."
+msgstr "`N' değeri pozitif olmalı."
+
+#: ar.c:668
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "iç hata -- bu seçenek henüz yazılmadı"
+
+#: ar.c:737
+#, c-format
+msgid "creating %s"
+msgstr "%s oluÅŸturuluyor"
+
+#: ar.c:786 ar.c:836 ar.c:1154 objcopy.c:1603
+#, c-format
+msgid "internal stat error on %s"
+msgstr "%s üzerinde iç durumlama hatası"
+
+#: ar.c:790
+#, c-format
+msgid ""
+"\n"
+"<%s>\n"
+"\n"
+msgstr ""
+"\n"
+"<%s>\n"
+"\n"
+
+#: ar.c:806 ar.c:873
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s geçerli bir arşiv değil"
+
+#: ar.c:841
+#, c-format
+msgid "stat returns negative size for %s"
+msgstr "stat komutu, %s için negatif büyüklük gösteriyor"
+
+#: ar.c:1059
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "`%s' adında bir üye yok\n"
+
+#: ar.c:1109
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "arşiv %2$s içerisinde %1$s girdisi yok!"
+
+#: ar.c:1246
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: güncellenecek arşiv eşlemesi yok"
+
+#: arsup.c:83
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "Arşiv içinde %s girdisi yok.\n"
+
+#: arsup.c:109
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "%s dosyası açılamadı\n"
+
+#: arsup.c:162
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: Çıktı arşivi %s açılamadı\n"
+
+#: arsup.c:179
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: Girdi arşivi %s açılamadı\n"
+
+#: arsup.c:188
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: %s dosyası bir arşiv değil\n"
+
+#: arsup.c:227
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: henüz bir çıktı arşivi belirtilmedi\n"
+
+#: arsup.c:247 arsup.c:285 arsup.c:327 arsup.c:347 arsup.c:413
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: açık çıktı arşivi yok\n"
+
+#: arsup.c:258 arsup.c:368 arsup.c:394
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: %s dosyası açılamadı\n"
+
+#: arsup.c:312 arsup.c:390 arsup.c:471
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: modül dosyası %s bulunamadı\n"
+
+#: arsup.c:422
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "Şimdiki açık arşiv %s\n"
+
+#: arsup.c:446
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: açık arşiv yok\n"
+
+#: binemul.c:37
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " Öykünüme özgü seçenekler yok\n"
+
+#. Macros for common output.
+#: binemul.h:42
+#, c-format
+msgid " emulation options: \n"
+msgstr " öykünüm seçenekleri: \n"
+
+#: bucomm.c:109
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "BFD öntanımlı hedef `%s' olarak atanamadı: %s"
+
+#: bucomm.c:120
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: Eşleşen biçemler:"
+
+#: bucomm.c:135
+#, c-format
+msgid "Supported targets:"
+msgstr "Desteklenen hedefler:"
+
+#: bucomm.c:137
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: desteklenen hedefler:"
+
+#: bucomm.c:153
+#, c-format
+msgid "Supported architectures:"
+msgstr "Desteklenen platformlar:"
+
+#: bucomm.c:155
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: desteklenen platformlar:"
+
+#: bucomm.c:348
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "BFD başlık dosyası sürümü %s\n"
+
+#: bucomm.c:449
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: hatalı sayı: %s"
+
+#: bucomm.c:466 strings.c:386
+#, c-format
+msgid "'%s': No such file"
+msgstr "'%s': Böyle bir dosya yok"
+
+#: bucomm.c:468 strings.c:388
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "Uyarı: '%s' bulunamadı. Sebep: %s"
+
+#: bucomm.c:472
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "Uyarı: '%s' normal bir dosya değil"
+
+#: coffdump.c:105
+#, c-format
+msgid "#lines %d "
+msgstr "#satırlar %d "
+
+#: coffdump.c:459 sysdump.c:648
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Kullanım: %s [seçenek(ler)] girdi-dosyası\n"
+
+#: coffdump.c:460
+#, c-format
+msgid " Print a human readable interpretation of a SYSROFF object file\n"
+msgstr " SYSROFF nesne dosyasını insan tarafından okunabilir biçemde yazdırır\n"
+
+#: coffdump.c:461
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Seçenekler:\n"
+" -h --help Bu bilgiyi gösterir\n"
+" -v --version Program sürüm no'sunu gösterir\n"
+"\n"
+
+#: coffdump.c:527 srconv.c:1819 sysdump.c:710
+msgid "no input file specified"
+msgstr "girdi dosyası belirtilmedi"
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "hata_ayıkla_mevcut_isim_uzayına_ekle: mevcut dosya yok"
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "hata_ayıkla_kaynak: hata_ayıkla_dosya_adı_ata çağrılmadı"
+
+#: debug.c:783
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "hata_ayıkla_kayıt_işlevi: hata_ayıkla_dosya_adı_ata çağrılmadı"
+
+#: debug.c:835
+msgid "debug_record_parameter: no current function"
+msgstr "hata_ayıkla_kayıt_parametresi: mevcut işlev yok"
+
+#: debug.c:867
+msgid "debug_end_function: no current function"
+msgstr "hata_ayıkla_son_işlev: mevcut işlev yok"
+
+#: debug.c:873
+msgid "debug_end_function: some blocks were not closed"
+msgstr "hata_ayıkla_son_işlev: bazı bloklar kapatılmamış"
+
+#: debug.c:901
+msgid "debug_start_block: no current block"
+msgstr "hata_ayıkla_başla_blok: mevcut blok yok"
+
+#: debug.c:937
+msgid "debug_end_block: no current block"
+msgstr "hata_ayıkla_son_blok: mevcut blok yok"
+
+#: debug.c:944
+msgid "debug_end_block: attempt to close top level block"
+msgstr "hata_ayıkla_son_blok: tepe seviye bloğu kapama denemesi"
+
+#: debug.c:967
+msgid "debug_record_line: no current unit"
+msgstr "hata_ayıkla_kayıt_satır: mevcut birim yok"
+
+#. FIXME
+#: debug.c:1020
+msgid "debug_start_common_block: not implemented"
+msgstr "hata_ayıkla_ortak_blok_başla: henüz tamamlanmamış"
+
+#. FIXME
+#: debug.c:1031
+msgid "debug_end_common_block: not implemented"
+msgstr "hata_ayıkla_ortak_blok_son: henüz tamamlanmamış"
+
+#. FIXME.
+#: debug.c:1115
+msgid "debug_record_label: not implemented"
+msgstr "hata_ayıkla_kayıt_etiket: henüz tamamlanmamış"
+
+#: debug.c:1137
+msgid "debug_record_variable: no current file"
+msgstr "hata_ayıkla_kayıt_değişken: mevcut dosya yok"
+
+#: debug.c:1665
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "hata_ayıkla_tanımlanmamış_tip: desteklenmeyen tip"
+
+#: debug.c:1842
+msgid "debug_name_type: no current file"
+msgstr "hata_ayıkla_isim_tipi: mevcut dosya yok"
+
+#: debug.c:1887
+msgid "debug_tag_type: no current file"
+msgstr "hata_ayıkla_etiket_tipi: mevcut dosya yok"
+
+#: debug.c:1895
+msgid "debug_tag_type: extra tag attempted"
+msgstr "hata_ayıkla_etiket_tipi: fazla etiketleme denendi"
+
+#: debug.c:1932
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Uyarı: tip boyutu %d'den %d'ye değiştirildi\n"
+
+#: debug.c:1954
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "hata_ayıkla_isimli_tipi_bul: mevcut derleme birimi yok"
+
+#: debug.c:2057
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "hata_ayıkla_gerçek_tipi_al: %s için çevrimsel hata ayıklama bilgisi\n"
+
+#: debug.c:2484
+msgid "debug_write_type: illegal type encountered"
+msgstr "hata_ayıkla_yaz_tipi: geçersiz tip bulundu"
+
+#: dlltool.c:773 dlltool.c:797 dlltool.c:826
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "İç hata: Bilinmeyen makine tipi: %d"
+
+#: dlltool.c:862
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Tanım dosyası açılamadı: %s"
+
+#: dlltool.c:867
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Tanım dosyası işleniyor: %s"
+
+#: dlltool.c:871
+msgid "Processed def file"
+msgstr "Tanım dosyası işlendi"
+
+#: dlltool.c:895
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Tanım dosyası %s'nda sözdizim hatası:%d"
+
+#: dlltool.c:930
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr "%s: İmaj ismi '%s' içinden yol dizgeleri çıkarıldı."
+
+#: dlltool.c:939
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "Ä°SÄ°M: %s temel: %x"
+
+#: dlltool.c:942 dlltool.c:958
+msgid "Can't have LIBRARY and NAME"
+msgstr "KÄ°TAPLIK ve Ä°SÄ°M beraber olamaz"
+
+#: dlltool.c:955
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "KÄ°TAPLIK: %s temel: %x"
+
+#: dlltool.c:1191 resrc.c:269
+#, c-format
+msgid "wait: %s"
+msgstr "bekle: %s"
+
+#: dlltool.c:1196 dllwrap.c:418 resrc.c:274
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "Ast-işlem %d ölümcül sinyalini aldı"
+
+#: dlltool.c:1202 dllwrap.c:425 resrc.c:281
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s %d durumu ile çıktı"
+
+#: dlltool.c:1233
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "%2$s'in %1$s bölümünden bilgi emiliyor"
+
+#: dlltool.c:1358
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Sembol dışlandı: %s"
+
+#: dlltool.c:1447 dlltool.c:1458 nm.c:998 nm.c:1009
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: sembol yok"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1484
+#, c-format
+msgid "Done reading %s"
+msgstr "%s okundu"
+
+#: dlltool.c:1494
+#, c-format
+msgid "Unable to open object file: %s"
+msgstr "Nesne dosyası açılamadı: %s"
+
+#: dlltool.c:1497
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Nesne dosyası %s taranıyor"
+
+#: dlltool.c:1512
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "Arşiv dosyasından mcore-elf dll oluşturulamadı: %s"
+
+#: dlltool.c:1598
+msgid "Adding exports to output file"
+msgstr "Çıktı dosyasına ihraçlar ekleniyor"
+
+#: dlltool.c:1646
+msgid "Added exports to output file"
+msgstr "Çıktı dosyasına ihraçlar eklendi"
+
+#: dlltool.c:1767
+#, c-format
+msgid "Generating export file: %s"
+msgstr "İhraç dosyası oluşturuluyor: %s"
+
+#: dlltool.c:1772
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Geçiçi üretici dosyası açılamadı: %s"
+
+#: dlltool.c:1775
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "Geçici dosya açıldı: %s"
+
+#: dlltool.c:1997
+msgid "Generated exports file"
+msgstr "İhraç dosyası oluşturuldu"
+
+#: dlltool.c:2203
+#, c-format
+msgid "bfd_open failed open stub file: %s"
+msgstr "koçan dosyası bfd_open ile açılamadı: %s"
+
+#: dlltool.c:2206
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "Koçan dosyası oluşturuluyor: %s"
+
+#: dlltool.c:2588
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "geçici başlık dosyası açılamadı: %s"
+
+#: dlltool.c:2647
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "geçici kuyruk dosyası açılamadı: %s"
+
+#: dlltool.c:2714
+#, c-format
+msgid "Can't open .lib file: %s"
+msgstr ".lib dosyası açılamadı: %s"
+
+#: dlltool.c:2717
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Kitaplık dosyası açılamadı: %s"
+
+#: dlltool.c:2800 dlltool.c:2806
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "%s silinemedi: %s"
+
+#: dlltool.c:2811
+msgid "Created lib file"
+msgstr "Lib dosyası oluşturuldu"
+
+#: dlltool.c:2904
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Uyarı, EXPORT tekrarı %s %d,%d yoksayıldı"
+
+#: dlltool.c:2910
+#, c-format
+msgid "Error, duplicate EXPORT with oridinals: %s"
+msgstr "Hata, orjinal hali ile EXPORT tekrarı: %s"
+
+#: dlltool.c:3026
+msgid "Processing definitions"
+msgstr "Tanımlar işleniyor"
+
+#: dlltool.c:3058
+msgid "Processed definitions"
+msgstr "Tanımlar işlendi"
+
+#. xgetext:c-format
+#: dlltool.c:3065 dllwrap.c:479
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Kullanım %s <seçenekler> <nesne-dosyaları>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3067
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <makine> <makine> için DLL olarak oluştur. [öntanımlı: %s]\n"
+
+#: dlltool.c:3068
+#, c-format
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr " tanımlı <makine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+
+#: dlltool.c:3069
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <çıktıadı> İhraç dosyası oluşturur.\n"
+
+#: dlltool.c:3070
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <çıktıadı> Arayüz kitaplığı oluşturur.\n"
+
+#: dlltool.c:3071
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect İhraç dosyasına dll yönlendirmelerini ekler.\n"
+
+#: dlltool.c:3072
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr " -D --dllname <isim> Arayüz kitaplığına eklenecek girdi dll adı.\n"
+
+#: dlltool.c:3073
+#, c-format
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr " -d --input-def <tanım_dosyası> Okunacak .def dosyasının adı.\n"
+
+#: dlltool.c:3074
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <tanım_dosyası> Oluşturulacak .def dosyasının adı.\n"
+
+#: dlltool.c:3075
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Bütün sembolleri .def'e ihraç eder\n"
+
+#: dlltool.c:3076
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols Yalnızca listelenmiş sembolleri ihraç eder\n"
+
+#: dlltool.c:3077
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <liste> <liste>'yi ihraç etmez\n"
+
+#: dlltool.c:3078
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes Öntanımlı ihraç edilmeyecek sembol listesini boşaltır\n"
+
+#: dlltool.c:3079
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <temel_dosyası> Bağlayıcının oluşturduğu temel dosyayı okur.\n"
+
+#: dlltool.c:3080
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 idata$4 bölümü oluşturmaz.\n"
+
+#: dlltool.c:3081
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 idata$5 bölümü oluşturmaz.\n"
+
+#: dlltool.c:3082
+#, c-format
+msgid " -U --add-underscore Add underscores to symbols in interface library.\n"
+msgstr " -U --add-underscore Arayüz kitaplığındaki sembollere alt-tire ekler.\n"
+
+#: dlltool.c:3083
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at İhraç edilmiş isimlerden @<n>'da öldürür.\n"
+
+#: dlltool.c:3084
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Rumuzları @<n> içermeksizin ekler.\n"
+
+#: dlltool.c:3085
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -p --ext-prefix-alias <önek> Rumuzları <önek> öneki ile ekler.\n"
+
+#: dlltool.c:3086
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <isim> Üretici olarak <isim> kullanır.\n"
+
+#: dlltool.c:3087
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <seçenekler> Üreticiye <seçenekler>i geçirir.\n"
+
+#: dlltool.c:3088
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib Geçmişe uyumlu ithal kitaplığı oluşturur.\n"
+
+#: dlltool.c:3089
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete Geçici dosyaları tutar (daha da koruyucu olması için tekrarlanabilir).\n"
+
+#: dlltool.c:3090
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr " -t --temp-prefix <önek> <önek> kullanılarak geçici dosya ismi oluşturur.\n"
+
+#: dlltool.c:3091
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose Açıklama verir.\n"
+
+#: dlltool.c:3092
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version Sürüm bilgilerini gösterir.\n"
+
+#: dlltool.c:3093
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help Bu yardımı gösterir.\n"
+
+#: dlltool.c:3095
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr " -M --mcore-elf <çıktı_adı> mcore-elf nesne dosyalarını <çıktı_adı>'na işler.\n"
+
+#: dlltool.c:3096
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <isim> Bağlayıcı olarak <isim> kullanır.\n"
+
+#: dlltool.c:3097
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <seçenekler> <seçenekler>i bağlayıcıya geçirir.\n"
+
+#: dlltool.c:3211
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr "Dll ismi '%s' içinden yol dizgeleri çıkarıldı."
+
+#: dlltool.c:3256
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Temel-dosyası açılamadı: %s"
+
+#: dlltool.c:3288
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "'%s' makinesi desteklenmiyor"
+
+#: dlltool.c:3392 dllwrap.c:209
+#, c-format
+msgid "Tried file: %s"
+msgstr "Dosya denendi: %s"
+
+#: dlltool.c:3399 dllwrap.c:216
+#, c-format
+msgid "Using file: %s"
+msgstr "Dosya kullanılıyor: %s"
+
+#: dllwrap.c:299
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "Geçici temel dosya %s tutuldu"
+
+#: dllwrap.c:301
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "Geçici temel dosya %s silindi"
+
+#: dllwrap.c:315
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "Geçici ihraç dosyası %s tutuldu"
+
+#: dllwrap.c:317
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "Geçici ihraç dosyası %s silindi"
+
+#: dllwrap.c:330
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Geçici tanım dosyası %s tutuldu"
+
+#: dllwrap.c:332
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "Geçici tanım dosyası %s silindi"
+
+#: dllwrap.c:480
+#, c-format
+msgid " Generic options:\n"
+msgstr " Genel seçenekler: \n"
+
+#: dllwrap.c:481
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q Sessiz çalışır\n"
+
+#: dllwrap.c:482
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Açıklamalı\n"
+
+#: dllwrap.c:483
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version dllwrap sürümünü yazdırır\n"
+
+#: dllwrap.c:484
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <çıktı_adı> --output-lib ile eşanlamlı\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " Options for %s:\n"
+msgstr " %s için seçenekler:\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <sürücü> \"gcc\"ye öntanımlı\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <seçenekler> Öntanımlı ld seçeneklerinin yerine geçer\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dll_aracı> \"dlltool\"a öntanımlı\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <giriş> Alternatif DLL giriş noktası belirtir\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <temel> Ä°maj temel adresini belirtir\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <makine> hedef makine, i386-cygwin32 veya i386-mingw32\n"
+
+#: dllwrap.c:492
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run Çalıştırılması gerekenleri gösterir\n"
+
+#: dllwrap.c:493
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Mingw DLL oluÅŸturur\n"
+
+#: dllwrap.c:494
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " DLLTOOL'a geçirilen seçenekler:\n"
+
+#: dllwrap.c:495
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <makine>\n"
+
+#: dllwrap.c:496
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <çıktı_adı> İhraç dosyası oluşturur.\n"
+
+#: dllwrap.c:497
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <çıktı_adı> Girdi kitaplığı oluşturur.\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect Dll yönlendirmelerini ihraç dosyasına ekler.\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <isim> Çıktı kitaplığına konulacak girdi dll adı.\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <tanım_dosyası> Girdi .def dosyası adı\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <tanım_dosyası> Çıktı .def dosyasının adı\n"
+
+#: dllwrap.c:502
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols Bütün sembolleri .def'e ihraç eder\n"
+
+#: dllwrap.c:503
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols Yalnızca .drectve sembollerini ihraç eder\n"
+
+#: dllwrap.c:504
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <liste> <liste>deki sembolleri .def'e ihraç etmez\n"
+
+#: dllwrap.c:505
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes Dışlanacak sembol öntanımlarını boşaltır\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr " --base-file <temel_dosya> Bağlayıcı tarafından oluşturulan temel dosyayı okur\n"
+
+#: dllwrap.c:507
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 idata$4 bölümünü oluşturmaz\n"
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 idata$5 bölümünü oluşturmaz\n"
+
+#: dllwrap.c:509
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U .lib'e alt-tire ekler\n"
+
+#: dllwrap.c:510
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k @<n>'i ihraç edilmiş isimlerden çıkartır\n"
+
+#: dllwrap.c:511
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias Rumuzları @<n> olmaksızın ekler\n"
+
+#: dllwrap.c:512
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <isim> Üretici olarak <isim>'i kullanır\n"
+
+#: dllwrap.c:513
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete Geçici dosyaları tutar.\n"
+
+#: dllwrap.c:514
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " Kalanlar dil sürücüsüne değiştirilmeksizin geçirilir\n"
+
+#: dllwrap.c:784
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "-o veya --dllname (dll adı) seçeneklerinin en azından bir tanesi belirtilmelidir"
+
+#: dllwrap.c:813
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"ihraç tanım dosyası verilmemiş.\n"
+"Bir tane oluÅŸturuluyor fakat istediÄŸiniz bu olmayabilir"
+
+#: dllwrap.c:972
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "DLLTOOL adı : %s\n"
+
+#: dllwrap.c:973
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "DLLTOOL seçenekleri : %s\n"
+
+#: dllwrap.c:974
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "SÜRÜCÜ adı : %s\n"
+
+#: dllwrap.c:975
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "SÜRÜCÜ seçenekleri : %s\n"
+
+#: emul_aix.c:51
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - 32 bitlik küçük arşiv\n"
+
+#: emul_aix.c:52
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - 64 bitlik nesneleri yok sayar\n"
+
+#: emul_aix.c:53
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - 32 bitlik nesneleri yok sayar\n"
+
+#: emul_aix.c:54
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] - 32 ve 64 bitlik nesneleri kabul eder\n"
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "hata ayıklama bilgilerinde beklenmeyen son"
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "geçersiz sayı"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "geçersiz dizge uzunluğu"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "ifade yığıtında taşma"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "desteklenmeyen IEEE ifade iÅŸlemimi"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr "bilinmeyen bölüm"
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "ifade yığıt taşması"
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "ifade yığıtı uyumsuzluğu"
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "bilinmeyen oluşumiçi tip"
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "BCD gerçel tipi desteklenmiyor"
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "beklenmeyen sayı"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "beklenmeyen kayıt tipi"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "yığıt üzerinde bloklar kaldı"
+
+#: ieee.c:1198
+msgid "unknown BB type"
+msgstr "bilinmeyen BB tipi"
+
+#: ieee.c:1207
+msgid "stack overflow"
+msgstr "yığıt taşması"
+
+#: ieee.c:1230
+msgid "stack underflow"
+msgstr "yığıt alt taşması"
+
+#: ieee.c:1342 ieee.c:1412 ieee.c:2109
+msgid "illegal variable index"
+msgstr "geçersiz değişken endeksi"
+
+#: ieee.c:1390
+msgid "illegal type index"
+msgstr "geçersiz tip endeksi"
+
+#: ieee.c:1400 ieee.c:1437
+msgid "unknown TY code"
+msgstr "bilinmeyen TY kodu"
+
+#: ieee.c:1419
+msgid "undefined variable in TY"
+msgstr "TY'de tanımsız değişken"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1830
+msgid "Pascal file name not supported"
+msgstr "Pascal dosya adı desteklenmiyor"
+
+#: ieee.c:1878
+msgid "unsupported qualifier"
+msgstr "desteklenmeyen niteleyici"
+
+#: ieee.c:2147
+msgid "undefined variable in ATN"
+msgstr "ATN'de tanımsız değişken"
+
+#: ieee.c:2190
+msgid "unknown ATN type"
+msgstr "bilinmeyen ATN tipi"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2312
+msgid "unsupported ATN11"
+msgstr "desteklenmeyen ATN11"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2339
+msgid "unsupported ATN12"
+msgstr "desteklenmeyen ATN12"
+
+#: ieee.c:2399
+msgid "unexpected string in C++ misc"
+msgstr "C++ misc içinde beklenmeyen dizge"
+
+#: ieee.c:2412
+msgid "bad misc record"
+msgstr "hatalı misc kaydı"
+
+#: ieee.c:2453
+msgid "unrecognized C++ misc record"
+msgstr "bilinmeyen C++ misc kaydı"
+
+#: ieee.c:2568
+msgid "undefined C++ object"
+msgstr "tanımlanmamış C++ nesnesi"
+
+#: ieee.c:2602
+msgid "unrecognized C++ object spec"
+msgstr "bilinmeyen C++ nesne tanımı"
+
+#: ieee.c:2638
+msgid "unsupported C++ object type"
+msgstr "desteklenmeyen C++ nesne tipi"
+
+#: ieee.c:2648
+msgid "C++ base class not defined"
+msgstr "C++ temel sınıfı tanımlanmamış"
+
+#: ieee.c:2660 ieee.c:2765
+msgid "C++ object has no fields"
+msgstr "C++ nesnesinde hiç alan yok"
+
+#: ieee.c:2679
+msgid "C++ base class not found in container"
+msgstr "C++ temel sınıfı taşıyıcı içinde bulunamadı"
+
+#: ieee.c:2786
+msgid "C++ data member not found in container"
+msgstr "C++ veri üyesi taşıyıcı içinde bulunamadı"
+
+#: ieee.c:2827 ieee.c:2977
+msgid "unknown C++ visibility"
+msgstr "bilinmeyen C++ görünürlüğü"
+
+#: ieee.c:2861
+msgid "bad C++ field bit pos or size"
+msgstr "hatalı C++ alan biti konum veya boyu"
+
+#: ieee.c:2953
+msgid "bad type for C++ method function"
+msgstr "C++ yöntem işlevi için hatalı tip"
+
+#: ieee.c:2963
+msgid "no type information for C++ method function"
+msgstr "C++ yöntem işlevi için tip bilgisi yok"
+
+#: ieee.c:3002
+msgid "C++ static virtual method"
+msgstr "C++ statik sanal yöntem"
+
+#: ieee.c:3097
+msgid "unrecognized C++ object overhead spec"
+msgstr "bilinmeyen C++ nesne masraf tanımı"
+
+#: ieee.c:3136
+msgid "undefined C++ vtable"
+msgstr "tanımlanmamış C++ vtablosu"
+
+#: ieee.c:3205
+msgid "C++ default values not in a function"
+msgstr "C++ öntanımlı değerleri işlev içerisinde değil"
+
+#: ieee.c:3245
+msgid "unrecognized C++ default type"
+msgstr "bilinmeyen öntanımlı C++ tipi"
+
+#: ieee.c:3276
+msgid "reference parameter is not a pointer"
+msgstr "referans parametresi imleyici deÄŸil"
+
+#: ieee.c:3359
+msgid "unrecognized C++ reference type"
+msgstr "bilinmeyen C++ referans tipi"
+
+#: ieee.c:3441
+msgid "C++ reference not found"
+msgstr "C++ referansı bulunamadı"
+
+#: ieee.c:3449
+msgid "C++ reference is not pointer"
+msgstr "C++ referansı imleyici değil"
+
+#: ieee.c:3475 ieee.c:3483
+msgid "missing required ASN"
+msgstr "Gerekli ASN yok"
+
+#: ieee.c:3510 ieee.c:3518
+msgid "missing required ATN65"
+msgstr "Gerekli ATN65 yok"
+
+#: ieee.c:3532
+msgid "bad ATN65 record"
+msgstr "hatalı ATN65 kaydı"
+
+#: ieee.c:4160
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "IEEE sayısal taşma: 0x"
+
+#: ieee.c:4204
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "IEEE dizge uzunluk taşması: %u\n"
+
+#: ieee.c:5203
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "IEEE desteklenmeyen tamsayı tip boyu %u\n"
+
+#: ieee.c:5237
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "IEEE desteklenmeyen gerçel tip boyu %u\n"
+
+#: ieee.c:5271
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "IEEE desteklenmeyen karmaşık tip boyu %u\n"
+
+#: nlmconv.c:267 srconv.c:1810
+msgid "input and output files must be different"
+msgstr "girdi ve çıktı dosyaları farklı olmalı"
+
+#: nlmconv.c:314
+msgid "input file named both on command line and with INPUT"
+msgstr "girdi dosyası ismi hem komut satırında hem INPUT olarak verilmiş"
+
+#: nlmconv.c:323
+msgid "no input file"
+msgstr "girdi dosyası yok"
+
+#: nlmconv.c:353
+msgid "no name for output file"
+msgstr "çıktı dosyası için isim yok"
+
+#: nlmconv.c:367
+msgid "warning: input and output formats are not compatible"
+msgstr "uyarı: girdi ve çıktı biçemleri uyumlu değil"
+
+#: nlmconv.c:396
+msgid "make .bss section"
+msgstr ".bss bölümü oluştur"
+
+#: nlmconv.c:405
+msgid "make .nlmsections section"
+msgstr ".nlmsections bölümü oluştur"
+
+#: nlmconv.c:407
+msgid "set .nlmsections flags"
+msgstr ".nlmsections seçenekleri atar"
+
+#: nlmconv.c:435
+msgid "set .bss vma"
+msgstr ".bss vma atar"
+
+#: nlmconv.c:442
+msgid "set .data size"
+msgstr ".data boyu atar"
+
+#: nlmconv.c:622
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "uyarı: %s sembolü ithal edildi ama ithal listesinde değil"
+
+#: nlmconv.c:642
+msgid "set start address"
+msgstr "başlangıç adresini atar"
+
+#: nlmconv.c:691
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "uyarı: START altyordamı %s tanımsız"
+
+#: nlmconv.c:693
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "uyarı: EXIT altyordamı %s tanımsız"
+
+#: nlmconv.c:695
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "warning: CHECK altyordamı %s tanımsız"
+
+#: nlmconv.c:716 nlmconv.c:905
+msgid "custom section"
+msgstr "özel bölüm"
+
+#: nlmconv.c:737 nlmconv.c:934
+msgid "help section"
+msgstr "yardım bölümü"
+
+#: nlmconv.c:759 nlmconv.c:952
+msgid "message section"
+msgstr "ileti bölümü"
+
+#: nlmconv.c:775 nlmconv.c:985
+msgid "module section"
+msgstr "modül bölümü"
+
+#: nlmconv.c:795 nlmconv.c:1001
+msgid "rpc section"
+msgstr "rpc bölümü"
+
+#. There is no place to record this information.
+#: nlmconv.c:831
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: uyarı: paylaşımlı kitaplıklar öndeğer atanmamış veri kapsayamaz"
+
+#: nlmconv.c:852 nlmconv.c:1020
+msgid "shared section"
+msgstr "paylaşımlı bölüm"
+
+#: nlmconv.c:860
+msgid "warning: No version number given"
+msgstr "uyarı: Sürüm numarası verilmemiş"
+
+#: nlmconv.c:900 nlmconv.c:929 nlmconv.c:947 nlmconv.c:996 nlmconv.c:1015
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: okundu: %s"
+
+#: nlmconv.c:922
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "uyarı: FULLMAP desteklenmiyor; ld -M komutunu deneyin"
+
+#: nlmconv.c:1098
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Kullanım: %s [seçenekler] [girdi-dosyası [çıktı-dosyası]]\n"
+
+#: nlmconv.c:1099
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " Bir nesne dosyasını NetWare Yüklenebilir Modül haline getirir\n"
+
+#: nlmconv.c:1100
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+msgstr ""
+" Seçenekler:\n"
+" -I --input-target=<bfdadı > Girdi ikilik dosya biçemini belirler\n"
+" -O --output-target=<bfdadı> Çıktı ikilik dosya biçemini belirler\n"
+" -T --header-file=<dosya> NLM başlık bilgilerini <dosya>dan okur\n"
+" -l --linker=<bağlayıcı> Bağlama işlemi için <bağlayıcı>yı kullanır\n"
+" -d --debug Standart hatada bağlayıcı komut satırını gösterir\n"
+" -h --help Bu bilgiyi gösterir\n"
+" -v --version Program sürüm no'sunu gösterir\n"
+
+#: nlmconv.c:1140
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "%s için destek derlenmemiş"
+
+#: nlmconv.c:1177
+msgid "make section"
+msgstr "bölüm oluştur"
+
+#: nlmconv.c:1191
+msgid "set section size"
+msgstr "bölüm boyu belirtir"
+
+#: nlmconv.c:1197
+msgid "set section alignment"
+msgstr "bölüm hizalanması atar"
+
+#: nlmconv.c:1201
+msgid "set section flags"
+msgstr "bölüm seçeneklerini atar"
+
+#: nlmconv.c:1212
+msgid "set .nlmsections size"
+msgstr ".nlmsections boyunu atar"
+
+#: nlmconv.c:1293 nlmconv.c:1301 nlmconv.c:1310 nlmconv.c:1315
+msgid "set .nlmsection contents"
+msgstr ".nlmsection içeriğini atar"
+
+#: nlmconv.c:1794
+msgid "stub section sizes"
+msgstr "koçan bölüm boyları"
+
+#: nlmconv.c:1841
+msgid "writing stub"
+msgstr "koçan yazılıyor"
+
+#: nlmconv.c:1925
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "%s'e göreli PC yer değiştirme çözümlenemedi"
+
+#: nlmconv.c:1989
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "%s'e göreli yer değiştirme ayarlanırken taşma oluştu"
+
+#: nlmconv.c:2116
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: %s'in çalıştırılması başarısız oldu: "
+
+#: nlmconv.c:2131
+#, c-format
+msgid "Execution of %s failed"
+msgstr "%s'in çalıştırılması başarısız oldu"
+
+#: nm.c:224 size.c:80 strings.c:651
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Kullanım: %s [seçenekler] [dosya(lar)]\n"
+
+#: nm.c:225
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " [dosya(lar)]daki sembolleri listeler (öntanımlı a.out).\n"
+
+#: nm.c:226
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -u, --undefined-only Display only undefined symbols\n"
+" -X 32_64 (ignored)\n"
+" -h, --help Display this information\n"
+" -V, --version Display this program's version number\n"
+"\n"
+msgstr ""
+" Seçenekler:\n"
+" -a, --debug-syms Yalnızca hata ayıklamaya dair sembolleri gösterir\n"
+" -A, --print-file-name Her sembolden önce girdi dosyasının adını yazdırır\n"
+" -B --format=bsd ile aynı\n"
+" -C, --demangle[=TARZ] Alt düzey sembol adlarını kullanıcı seviyesinde adlara çevirir\n"
+" TARZ, eğer belirtilirse, 'auto' (öntanımlı),\n"
+" `gnu', 'lucid', 'arm', 'hp', 'edg' 'gnu-v3',\n"
+" 'java' veya 'gnat' olabilir\n"
+" --no-demangle Alt düzey sembol adlarını çevirmez\n"
+" -D, --dynamic Normal semboller yerine dinamik sembolleri gösterir\n"
+" --defined-only Yalnızca tanımlanmış sembolleri gösterir\n"
+" -e (yoksayılır)\n"
+" -f, --format=BİÇEM Çıktı biçemi için BİÇEM'i kullanır.\n"
+" BİÇEM, 'bsd' (öntanımlı), `sysv' veya\n"
+" `posix' olabilir\n"
+" -g, --extern-only Yalnızca harici sembolleri gösterir\n"
+" -l, --line-numbers Hata ayıklama bilgisini kullanarak her sembol için bir\n"
+" satır numarası ve dosya adı bulur.\n"
+" -n, --numeric-sort Sembolleri adres numarasına göre sıralar\n"
+" -o -A ile aynı\n"
+" -p, --no-sort Sembolleri sıralamaz\n"
+" -P, --portability --format=posix ile aynı\n"
+" -r, --reverse-sort Ters sıralar\n"
+" -S, --print-size Tanımlı sembollerin boyunu gösterir\n"
+" -s, --print-armap Arşiv üyelerinden gelen semboller için endeks içerir\n"
+" --size-sort Sembolleri büyüklüğe göre sıralar\n"
+" --special-syms Çıktıda özel sembolleri de gösterir\n"
+" --synthetic Sentetik sembolleri de gösterir\n"
+" -t, --radix=RADIX Sembol değerlerini yazdırmak için RADIX kullanır\n"
+" --target=BFD_ADI Hedef nesne biçemini BFD_ADI olarak belirler\n"
+" -u, --undefined-only Yalnızca tanımlanmamış sembolleri gösterir\n"
+" -X 32_64 (yok sayılır)\n"
+" -h, --help Bu bilgiyi gösterir\n"
+" -V, --version Sürüm bilgilerini gösterir\n"
+"\n"
+
+#: nm.c:262 objdump.c:232
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr ""
+"Hataları %s adresine, \n"
+"çeviri hatalarını <gnu-tr@belgeler.org> adresine bildiriniz.\n"
+
+#: nm.c:294
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: geçersiz radix"
+
+#: nm.c:318
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: geçersiz çıktı biçemi"
+
+#: nm.c:339 readelf.c:6342 readelf.c:6378
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<işlemciye özel>: %d"
+
+#: nm.c:341 readelf.c:6345 readelf.c:6390
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<İS'e özel>: %d"
+
+#: nm.c:343 readelf.c:6347 readelf.c:6393
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<bilinmeyen>: %d"
+
+#: nm.c:380
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"ArÅŸiv endeksi:\n"
+
+#: nm.c:1225
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"%s'de tanımlanmamış semboller:\n"
+"\n"
+
+#: nm.c:1227
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"%s'de semboller:\n"
+"\n"
+
+#: nm.c:1229 nm.c:1280
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"İsim Değer Sınıf Tip Boy Satır Bölüm\n"
+"\n"
+
+#: nm.c:1232 nm.c:1283
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"İsim Değer Sınıf Tip Boy Satır Bölüm\n"
+"\n"
+
+#: nm.c:1276
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"%s[%s]'de tanımlanmamış semboller:\n"
+"\n"
+
+#: nm.c:1278
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"%s[%s]'de semboller:\n"
+"\n"
+
+#: nm.c:1580
+msgid "Only -X 32_64 is supported"
+msgstr "Yalnız -X 32_64 destekleniyor"
+
+#: nm.c:1600
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "--size-sort ve --undefined-only seçenekleri beraber kullanılıyor"
+
+#: nm.c:1601
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "tanımsız sembollerin boyları olmadığından çıktı üretilmeyecek."
+
+#: nm.c:1629
+#, c-format
+msgid "data size %ld"
+msgstr "veri büyüklüğü %ld"
+
+#: objcopy.c:396 srconv.c:1721
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Kullanım: %s [seçenekler] girdi-dosyası [çıktı-dosyası]\n"
+
+#: objcopy.c:397
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " İkilik dosyayı, muhtemelen değiştirerek kopyalar\n"
+
+#: objcopy.c:398 objcopy.c:487
+#, c-format
+msgid " The options are:\n"
+msgstr " Seçenekler:\n"
+
+#: objcopy.c:399
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set arch of output file, when input is binary\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" 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"
+" -L --localize-symbol <name> Force symbol <name> to be marked as a local\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"
+" -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"
+" -i --interleave <number> Only copy one out of every <number> bytes\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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"
+" --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"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+msgstr ""
+" -I --input-target <bfd_adı> Girdi dosyasının <bfd_adı> biçeminde\n"
+" olduÄŸunu varsayar\n"
+" -O --output-target <bfd_adı> Çıktı dosyasını <bfd_adı> biçeminde\n"
+" oluÅŸturur\n"
+" -B --binary-architecture <plat> Girdi ikilik biçeminde olduğu zaman çıktı\n"
+" dosyasının platformunu belirler.\n"
+" -F --target <bfd_adı> Hem girdi, hem de çıktı biçemini <bfd_adı>\n"
+" olarak atar\n"
+" --debugging Mümkün olduğu kadar hata ayıklama\n"
+" bilgisini dönüştürür\n"
+" -p --preserve-dates Çıktıya değişim/erişim zaman damgalarını\n"
+" kopyalar\n"
+" -j --only-section <isim> Çıktıya yalnızca <isim> bölümünü kopyalar\n"
+" --add-gnu-debuglink=<dosya>....gnu_debuglink bölümünü <dosya>'ya ekler\n"
+" -R --remove-section <isim> Çıktıdan <isim> bölümünü çıkarır\n"
+" -S --strip-all Bütün sembol ve yer değiştirme bilgisini\n"
+" siler\n"
+" -g --strip-debug Bütün hata ayıklama sembollerini siler\n"
+" --strip-unneeded Yer değiştirmeler için gerekmeyen bütün\n"
+" sembolleri siler\n"
+" -N --strip-symbol <isim> <isim> sembolünü kopyalamaz\n"
+" --strip-unneeded-symbol <isim>\n"
+" <isim> sembolünü, yer değiştirme için\n"
+" gerekmiyorsa kopyalamaz\n"
+" --only-keep-debug Hata ayıklama bilgisi dışında bütün\n"
+" bilgileri siler\n"
+" -K --keep-symbol <isim> Yalnızca <isim> sembolünü kopyalar\n"
+" -L --localize-symbol <isim> <isim> sembolünün yerel olarak\n"
+" tanımlanmasını sağlar\n"
+" -G --keep-global-symbol <isim> <isim> haricindeki bütün sembolleri\n"
+" yerelleÅŸtirir.\n"
+" -W --weaken-symbol <isim> <isim> sembolünün zayıf olarak\n"
+" tanımlanmasını sağlar\n"
+" --weaken Bütün evrensel sembollerin zayıf olarak\n"
+" tanımlanmasını sağlar\n"
+" -w --wildcard Sembol karşılaştırmada şablon kullanımına\n"
+" izin verir\n"
+" -x --discard-all Evrensel olmayan bütün sembolleri siler\n"
+" -X --discard-locals Derleyici tarafından oluşturulan bütün\n"
+" sembolleri siler\n"
+" -i --interleave <sayı> Her <sayı> bayttan yalnız birini kopyalar\n"
+" -b --byte <sayı> Her serpiştirilmiş bloktan <sayı> numaralı\n"
+" baytı seçer\n"
+" --gap-fill <değer> Bölümler arası boşlukları <değer> ile\n"
+" doldurur\n"
+" --pad-to <adres> Son bölümü <adres>e kadar boşlukla doldurur\n"
+" --set-start <adres> Başlangıç adresini <adres> olarak belirtir\n"
+" {--change-start|--adjust-start} <basamak>\n"
+" Başlangıç adresine <basamak> ekler\n"
+" {--change-addresses|--adjust-vma} <basamak>\n"
+" LMA, VMA ve başlangıç adreslerine <basamak>\n"
+" ekler\n"
+" {--change-section-address|--adjust-section-vma} <isim>{=|+|-}<deÄŸer>\n"
+" <isim> bölümünün LMA ve VMA'sını <değer>\n"
+" kadar deÄŸiÅŸtirir\n"
+" --change-section-lma <isim>{=|+|-}<deÄŸer>\n"
+" <isim> bölümünün LMA'sını <değer> kadar\n"
+" deÄŸiÅŸtirir\n"
+" --change-section-vma <isim>{=|+|-}<deÄŸer>\n"
+" <isim> bölümünün VMA'sını <değer> kadar\n"
+" deÄŸiÅŸtirir\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Eğer isimli bir bölüm yok ise uyarı verir\n"
+" --set-section-flags <isim>=<seçenekler>\n"
+" <isim> bölümünün özniteliklerini\n"
+" <seçenekler>e ayarlar\n"
+" --add-section <isim>=<dosya> <dosya> içinde bulunan <isim> bölümünü\n"
+" çıktıya ekler\n"
+" --rename-section <eski>=<yeni>[,<bayrak>] <eski> bölümünü <yeni> olarak\n"
+" yeniden adlandırır\n"
+" --change-leading-char Çıktı biçeminin başlangıç karakter tipini\n"
+" deÄŸiÅŸtirir\n"
+" --remove-leading-char Evrensel sembollerden başlangıç\n"
+" karakterini çıkarır\n"
+" --redefine-sym <eski>=<yeni> <eski> isimli sembolü <yeni> isimli olarak\n"
+" yeniden tanımlar\n"
+" --redefine-syms <dosya> <dosya> içinde tanımlı bütün sembol\n"
+" çiftleri için --redefine-sym uygular\n"
+" --srec-len <sayı> Oluşturulan S kayıtlarının boyutunu\n"
+" kısıtlar\n"
+" --srec-forceS3 Oluşturulan S kayıtları tipini S3 olarak\n"
+" kısıtlar\n"
+" --strip-symbols <dosya> <dosya>daki bütün semboller için -N uygular\n"
+" --strip-unneeded-symbols <dosya>\n"
+" <dosya>daki bütün semboller için\n"
+" --strip-unneeded-symbol uygular\n"
+" --keep-symbols <dosya> <dosya>daki bütün semboller için -K uygular\n"
+" --localize-symbols <dosya> <dosya>daki bütün semboller için -L uygular\n"
+" --keep-global-symbols <dosya> <dosya>daki bütün semboller için -G uygular\n"
+" --weaken-symbols <dosya> <dosya>daki bütün semboller için -W uygular\n"
+" --alt-machine-code <indeks> Çıktı için alternatif makine kodu kullanır\n"
+" --writable-text Çıktı metnini yazılabilir olarak imler\n"
+" --readonly-text Çıktı metnini salt-okunur olarak imler\n"
+" --pure Çıktı metnini istek üzerine sayfalanan\n"
+" olarak imler\n"
+" --impure Çıktı metnini saf değil olarak imler\n"
+" --prefix-symbols <önek> Her sembol adına <önek> ekler\n"
+" --prefix-sections <önek> Her bölüm adına <önek> ekler\n"
+" --prefix-alloc-sections <önek>\n"
+" Her ayrılabilir bölüm adına <önek> ekler\n"
+" -v --verbose Değiştirilen tüm nesne dosyalarını listeler\n"
+" -V --version Bu yazılımın sürüm bilgilerini gösterir\n"
+" -h --help Bu çıktıyı gösterir\n"
+" --info Desteklenen nesne biçemlerini ve mimarileri\n"
+" gösterir\n"
+
+#: objcopy.c:485
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Kullanım: %s <seçenekler> girdi-dosya(ları)\n"
+
+#: objcopy.c:486
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr " Dosyalardan sembol ve bölümleri çıkarır\n"
+
+#: objcopy.c:488
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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"
+" -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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target=<bfd_adı> Girdi dosyasının <bfd_adı> biçeminde \n"
+" olduÄŸunu varsayar\n"
+" -O --output-target=<bfd_adı> Çıktı dosyasını <bfd_adı> biçeminde \n"
+" oluÅŸturur\n"
+" -F --target=<bfd_adı> Girdi ve çıktı biçemlerini <bfd_adı> olarak\n"
+" atar\n"
+" -p --preserve-dates Çıktıya değişim/erişim zaman damgalarını \n"
+" kopyalar\n"
+" -R --remove-section=<isim> Çıktıdan <isim> bölümünü çıkarır\n"
+" -s --strip-all Bütün sembol ve yer değiştirme bilgisini\n"
+" siler\n"
+" -g -S -d --strip-debug Bütün hata ayıklama sembollerini ve\n"
+" bölümlerini siler\n"
+" --strip-unneeded Yer değiştirmeler için gerekmeyen bütün\n"
+" sembolleri siler\n"
+" --only-keep-debug Hata ayıklama için gerekmeyen bütün\n"
+" sembolleri siler\n"
+" -N --strip-symbol=<isim> <isim> sembolünü kopyalamaz\n"
+" -K --keep-symbol=<isim> Yalnızca <isim> sembolünü kopyalar\n"
+" -w --wildcard Sembol karşılaştırmada şablon kullanımına\n"
+" izin verir\n"
+" -x --discard-all Evrensel olmayan bütün sembolleri siler\n"
+" -X --discard-locals Derleyici tarafından oluşturulan bütün\n"
+" sembolleri siler\n"
+" -v --verbose Değiştirilen tüm nesne dosyalarını listeler\n"
+" -V --version Bu yazılımın sürüm bilgilerini gösterir\n"
+" -h --help Bu çıktıyı gösterir\n"
+" --info Desteklenen nesne biçemlerini ve\n"
+" mimarileri gösterir\n"
+" -o <dosya> Sembolleri silinmiş çıktıyı <dosya>ya \n"
+" yerleÅŸtirir\n"
+
+#: objcopy.c:560
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "bilinmeyen bölüm seçeneği `%s'"
+
+#: objcopy.c:561
+#, c-format
+msgid "supported flags: %s"
+msgstr "desteklenen seçenekler: %s"
+
+#: objcopy.c:638
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "'%s' açılamadı: %s"
+
+#: objcopy.c:641 objcopy.c:2629
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: fread başarısız"
+
+#: objcopy.c:714
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: Bu satırda bulunan bozukluk yoksayıldı"
+
+#: objcopy.c:976
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: \"%s\" sembolü tekrar tanımlanmış"
+
+#: objcopy.c:980
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: \"%s\" sembolü birden fazla yeniden tanımlamanın hedefi"
+
+#: objcopy.c:1008
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "sembol yeniden tanımlama dosyası %s açılamadı (hata: %s)"
+
+#: objcopy.c:1086
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: satırın sonu bozuk"
+
+#: objcopy.c:1089
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: yeni sembol adı eksik"
+
+#: objcopy.c:1099
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: erken sonlanmış dosya"
+
+#: objcopy.c:1124
+msgid "Unable to change endianness of input file(s)"
+msgstr "Girdi dosyanın küçük/büyük sonluluğu değiştirilemedi"
+
+#: objcopy.c:1133
+#, c-format
+msgid "copy from %s(%s) to %s(%s)\n"
+msgstr "%s(%s)'dan %s(%s)'a kopyalar\n"
+
+#: objcopy.c:1170
+#, c-format
+msgid "Unable to recognise the format of the input file %s"
+msgstr "%s girdi dosyasının biçemi tanınmadı"
+
+#: objcopy.c:1174
+#, c-format
+msgid "Warning: Output file cannot represent architecture %s"
+msgstr "Uyarı: Çıktı dosyası %s mimarisini temsil edemez"
+
+#: objcopy.c:1211
+#, c-format
+msgid "can't create section `%s': %s"
+msgstr "`%s' bölümü oluşturulamadı: %s"
+
+#: objcopy.c:1277
+msgid "there are no sections to be copied!"
+msgstr "kopyalanacak bölüm yok!"
+
+#: objcopy.c:1323
+#, c-format
+msgid "Can't fill gap after %s: %s"
+msgstr "%s'den sonraki boşluk doldurulamadı: %s"
+
+#: objcopy.c:1348
+#, c-format
+msgid "Can't add padding to %s: %s"
+msgstr "%s'ye dolgu eklenemedi: %s"
+
+#: objcopy.c:1514
+#, c-format
+msgid "%s: error copying private BFD data: %s"
+msgstr "%s: özel BFD verisi kopyalanırken hata: %s"
+
+#: objcopy.c:1525
+msgid "unknown alternate machine code, ignored"
+msgstr "bilinmeyen alternatif makine kodu, yoksayıldı"
+
+#: objcopy.c:1555 objcopy.c:1585
+#, c-format
+msgid "cannot mkdir %s for archive copying (error: %s)"
+msgstr "arşiv kopyalaması için mkdir %s başarılı olamadı (hata: %s)"
+
+#: objcopy.c:1790
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "%s bölümünde birden fazla yeniden isimleme"
+
+#: objcopy.c:1841
+msgid "private header data"
+msgstr "özel başlık verisi"
+
+#: objcopy.c:1849
+#, c-format
+msgid "%s: error in %s: %s"
+msgstr "%s: %s içinde hata: %s"
+
+#: objcopy.c:1903
+msgid "making"
+msgstr "oluÅŸturuluyor"
+
+#: objcopy.c:1912
+msgid "size"
+msgstr "boyut"
+
+#: objcopy.c:1926
+msgid "vma"
+msgstr "vma"
+
+#: objcopy.c:1951
+msgid "alignment"
+msgstr "hizalama"
+
+#: objcopy.c:1966
+msgid "flags"
+msgstr "seçenekler"
+
+#: objcopy.c:1988
+msgid "private data"
+msgstr "özel veri"
+
+#: objcopy.c:1996
+#, c-format
+msgid "%s: section `%s': error in %s: %s"
+msgstr "%s: bölüm `%s': %s'da hata: %s"
+
+#: objcopy.c:2274
+#, c-format
+msgid "%s: can't create debugging section: %s"
+msgstr "%s: hata ayıklama bölümü oluşturulamadı: %s"
+
+#: objcopy.c:2288
+#, c-format
+msgid "%s: can't set debugging section contents: %s"
+msgstr "%s: hata ayıklama bölüm içeriği atanamadı: %s"
+
+#: objcopy.c:2297
+#, c-format
+msgid "%s: don't know how to write debugging information for %s"
+msgstr "%s: %s için hata ayıklama bilgisinin nasıl yazılacağı bilinmiyor"
+
+#: objcopy.c:2472
+msgid "byte number must be non-negative"
+msgstr "bayt numarası negatif olmamalı"
+
+#: objcopy.c:2482
+msgid "interleave must be positive"
+msgstr "serpiştirme pozitif olmalı"
+
+#: objcopy.c:2502 objcopy.c:2510
+#, c-format
+msgid "%s both copied and removed"
+msgstr "%s hem kopyalandı hem silindi"
+
+#: objcopy.c:2603 objcopy.c:2674 objcopy.c:2774 objcopy.c:2805 objcopy.c:2829
+#: objcopy.c:2833 objcopy.c:2853
+#, c-format
+msgid "bad format for %s"
+msgstr "%s için hatalı biçem"
+
+#: objcopy.c:2624
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "açılamadı: %s: %s"
+
+#: objcopy.c:2743
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Uyarı: dolgu, 0x%s'dan 0x%x'ya kırpıldı"
+
+#: objcopy.c:2903
+msgid "alternate machine code index must be positive"
+msgstr "alternatif makine kodu indeksi pozitif olmalı"
+
+#: objcopy.c:2961
+msgid "byte number must be less than interleave"
+msgstr "bayt numarası serpiştirmeden daha küçük olmalı"
+
+#: objcopy.c:2991
+#, c-format
+msgid "architecture %s unknown"
+msgstr "%s platformu bilinmiyor"
+
+#: objcopy.c:2995
+msgid "Warning: input target 'binary' required for binary architecture parameter."
+msgstr "Uyarı: ikilik platform parametresi için ikilik (`binary') girdi hedefi gerekli."
+
+#: objcopy.c:2996
+#, c-format
+msgid " Argument %s ignored"
+msgstr " %s argümanı yoksayıldı"
+
+#: objcopy.c:3002
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr "uyarı: '%s' bulunamadı. Sistem hata iletisi: %s"
+
+#: objcopy.c:3042 objcopy.c:3056
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s hiç kullanılmadı"
+
+#: objdump.c:176
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Kullanım: %s <seçenekler> <girdi-dosya(ları)>\n"
+
+#: objdump.c:177
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr "Nesne <dosya>'sından bilgi gösterir.\n"
+
+#: objdump.c:178
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " En azından aşağıdaki seçeneklerin biri verilmelidir:\n"
+
+#: objdump.c:179
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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"
+" -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"
+" -v, --version Display this program's version number\n"
+" -i, --info List object formats and architectures supported\n"
+" -H, --help Display this information\n"
+msgstr ""
+" -a, --archive-headers Arşiv başlık bilgilerini gösterir\n"
+" -f, --file-headers Dosya başlık bilgilerini gösterir\n"
+" -p, --private-headers Nesne biçemine özgü dosya başlık bilgilerini gösterir\n"
+" -h, --[section-]headers Bölüm başlıklarını gösterir\n"
+" -x, --all-headers Bütün başlıkları gösterir\n"
+" -d, --disassemble Uygulama bölümlerinin üretici içeriğini gösterir\n"
+" -D, --disassemble-all Bütün bölümlerin üretici içeriklerini gösterir\n"
+" -S, --source Üretici içerikleri ile kaynak kodunu bir arada gösterir\n"
+" -s, --full-contents İstenen bütün bölümlerin bütün içeriğini gösterir\n"
+" -g, --debugging Nesne dosyasındaki hata ayıklama bilgilerini gösterir\n"
+" -e, --debugging-tags Hata ayıklama bilgilerini ctags tarzında gösterir\n"
+" -G, --stabs Dosyadaki STABS bilgisini (ham hali ile) gösterir\n"
+" -t, --syms Sembol tablolarının içeriğini gösterir\n"
+" -T, --dynamic-syms Dinamik sembol tablolarının içeriğini gösterir\n"
+" -r, --reloc Dosyadaki yer değiştirme girdilerini gösterir\n"
+" -R, --dynamic-reloc Dosyadaki dinamik yer değiştirme bilgilerini gösterir\n"
+" -v, --version Bu yazılımın sürüm bilgilerini gösterir\n"
+" -i, --info Desteklenen biçem ve mimarileri gösterir\n"
+" -H, --help Bu bilgiyi gösterir\n"
+
+#: objdump.c:202
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" Aşağıdaki seçenekler isteğe bağlı:\n"
+
+#: objdump.c:203
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+"\n"
+msgstr ""
+" -b, --target=BFD_ADI Hedef nesne biçemini BFD_ADI olarak belirtir\n"
+" -m, --architecture=MAKÄ°NE Hedef mimariyi MAKÄ°NE olarak belirtir\n"
+" -j, --section=İSİM Yalnızca İSİM bölümü için bilgi gösterir\n"
+" -M, --disassembler-options=SEÇ Karşıt-çeviriciye metin SEÇeneklerini geçirir\n"
+" -EB --endian=big Karşıt-çevirim esnasında big-endian biçemini\n"
+" varsayar\n"
+" -EL --endian=little Karşıt-çevirim esnasında little-endian\n"
+" biçemini varsayar\n"
+" --file-start-context Dosyanın başlangıcından itibaren bağlamı\n"
+" içerir (-S ile)\n"
+" -I, --include=DÄ°Z Kaynak dosya arama listesine DÄ°Z'i ekler\n"
+" -l, --line-numbers Çıktıda dosya isimleri ve satır numaraları\n"
+" gösterir\n"
+" -C, --demangle[=TARZ] Karıştırılmış/işlenmiş sembol isimlerini\n"
+" çözümler.\n"
+" Tarz, eÄŸer belirtilmiÅŸse, `auto', 'gnu',\n"
+" 'lucid', 'arm', 'hp', 'edg', 'gnu-v3', \n"
+" 'java' veya 'gnat' olabilir\n"
+" -w, --wide Çıktıyı 80 sütundan daha geniş olarak biçemler\n"
+" -z, --disassemble-zeroes Karşıt-çevirim esnasında sıfır bloklarını \n"
+" atlamaz\n"
+" --start-address=ADRES Yalnızca adresi >= ADRES olan verileri işler\n"
+" --stop-address=ADRES Yalnızca adresi <= ADRES olan verileri işler\n"
+" --prefix-addresses Tam adresi karşıt çevirim ile birlikte\n"
+" yazdırır\n"
+" --[no-]show-raw-insn Onaltılık bilgi ile sembolik karşıt-çevrimi\n"
+" birlikte yazdırır\n"
+" --adjust-vma=BASAMAK Bütün gösterilen bölüm adreslerine BASAMAK \n"
+" ekler\n"
+" --special-syms Sembol yığıt çıktılarına özel sembolleri de\n"
+" ekler\n"
+"\n"
+
+#: objdump.c:378
+#, c-format
+msgid "Sections:\n"
+msgstr "Bölümler:\n"
+
+#: objdump.c:381 objdump.c:385
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Adı Boy VMA LMA Dosya of Hiza"
+
+#: objdump.c:387
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Adı Boy VMA LMA Dosya of Hiza"
+
+#: objdump.c:391
+#, c-format
+msgid " Flags"
+msgstr " Seçenekler"
+
+#: objdump.c:393
+#, c-format
+msgid " Pg"
+msgstr " Pg"
+
+#: objdump.c:436
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: dinamik nesne deÄŸil"
+
+#: objdump.c:1722
+#, c-format
+msgid "Disassembly of section %s:\n"
+msgstr "%s bölümünün karşıt çevrimi:\n"
+
+#: objdump.c:1884
+#, c-format
+msgid "Can't use supplied machine %s"
+msgstr "Verilen makine %s kullanılamadı"
+
+#: objdump.c:1903
+#, c-format
+msgid "Can't disassemble for architecture %s\n"
+msgstr "%s mimarisi için karşıt çevirim yapılamadı\n"
+
+#: objdump.c:1973
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"%s bölümü yok\n"
+"\n"
+
+#: objdump.c:1982
+#, c-format
+msgid "Reading %s section of %s failed: %s"
+msgstr "%2$s'nin %1$s bölümünün okunması başarısız: %3$s"
+
+#: objdump.c:2026
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"%s bölümünün içeriği:\n"
+"\n"
+
+#: objdump.c:2153
+#, c-format
+msgid "architecture: %s, "
+msgstr "mimari: %s,"
+
+#: objdump.c:2156
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "seçenekler 0x%08x:\n"
+
+#: objdump.c:2170
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"başlangıç adresi 0x"
+
+#: objdump.c:2210
+#, c-format
+msgid "Contents of section %s:\n"
+msgstr "%s bölümünün içeriği:\n"
+
+#: objdump.c:2335
+#, c-format
+msgid "no symbols\n"
+msgstr "sembol yok\n"
+
+#: objdump.c:2342
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr "%ld numaralı sembol için bilgi yok\n"
+
+#: objdump.c:2345
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "%ld numaralı sembolün türü belirlenemedi\n"
+
+#: objdump.c:2611
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: %s dosya biçemi\n"
+
+#: objdump.c:2662
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: hata ayıklama bilgisinin yazdırılması başarısız"
+
+#: objdump.c:2753
+#, c-format
+msgid "In archive %s:\n"
+msgstr "%s arşivi içinde:\n"
+
+#: objdump.c:2873
+msgid "unrecognized -E option"
+msgstr "tanınmayan -E seçeneği"
+
+#: objdump.c:2884
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "tanınmayan --endian tipi `%s'"
+
+#: rdcoff.c:196
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: Kötü tip kodu 0x%x"
+
+#: rdcoff.c:404 rdcoff.c:509 rdcoff.c:697
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment başarısız: %s"
+
+#: rdcoff.c:420 rdcoff.c:717
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent başarısız: %s"
+
+#: rdcoff.c:784
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: öncesinde işlev olmadan .bf"
+
+#: rdcoff.c:834
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: beklenmeyen .ef\n"
+
+#: rddbg.c:85
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: tanınan hata ayıklama bilgisi yok"
+
+#: rddbg.c:394
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "Hata öncesi son stabs girdileri:\n"
+
+#: readelf.c:272
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Hata: "
+
+#: readelf.c:283
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Uyarı: "
+
+#: readelf.c:298
+#, c-format
+msgid "Unable to seek to 0x%x for %s\n"
+msgstr "%2$s için 0x%1$x'e kadar arama yapılamadı\n"
+
+#: readelf.c:310
+#, c-format
+msgid "Out of memory allocating 0x%x bytes for %s\n"
+msgstr "%2$s için 0x%1$x bayt ayrılırken bellek tükendi\n"
+
+#: readelf.c:318
+#, c-format
+msgid "Unable to read in 0x%x bytes of %s\n"
+msgstr "%2$s'in 0x%1$x baytı okunamadı\n"
+
+#: readelf.c:364 readelf.c:412 readelf.c:615 readelf.c:647
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Desteklenmeyen veri uzunluÄŸu: %d\n"
+
+#: readelf.c:752
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Bu makine mimarisi üzerinde yer değiştirmeler konusunda bilgi yok\n"
+
+#: readelf.c:772 readelf.c:799 readelf.c:842 readelf.c:869
+msgid "relocs"
+msgstr "yerdeÄŸiÅŸimler"
+
+#: readelf.c:782 readelf.c:809 readelf.c:852 readelf.c:879
+msgid "out of memory parsing relocs"
+msgstr "yer değiştirmeleri tararken bellek tükendi"
+
+#: readelf.c:933
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr " Görece Bilgi Tür Sembol Değeri Sembol Adı + Sonekleme\n"
+
+#: readelf.c:935
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr " Görece Bilgi Tür Sembol Değeri Sembol Adı + Sonekleme\n"
+
+#: readelf.c:940
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " Görece Bilgi Tür Sembol Değeri Sembol Adı\n"
+
+#: readelf.c:942
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " Görece Bilgi Tür Sembol Değeri Sembol Adı\n"
+
+#: readelf.c:950
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr " Görece Bilgi Tür Sembol Değeri Sembol Adı + Sonek\n"
+
+#: readelf.c:952
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr " Görece Bilgi Tür Sembol Değeri Sembol Adı + Sonekleme\n"
+
+#: readelf.c:957
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr " Görece Bilgi Tür Sembol Değeri Sembol Adı\n"
+
+#: readelf.c:959
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " Görece Bilgi Tür Sembol Değeri Sembol Adı\n"
+
+#: readelf.c:1239 readelf.c:1241 readelf.c:1324 readelf.c:1326 readelf.c:1335
+#: readelf.c:1337
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "bilinmeyen: %-7lx"
+
+#: readelf.c:1295
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr "<dizge tablo endeksi: %3ld>"
+
+#: readelf.c:1297
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<bozuk dizge tablo endeksi: %3ld>"
+
+#: readelf.c:1569
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "İşlemciye Özel: %lx"
+
+#: readelf.c:1588
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "İşletim Sistemine Özel: %lx"
+
+#: readelf.c:1592 readelf.c:2370
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<bilinmeyen>: %lx"
+
+#: readelf.c:1605
+msgid "NONE (None)"
+msgstr "HİÇBİRİ (Hiçbiri)"
+
+#: readelf.c:1606
+msgid "REL (Relocatable file)"
+msgstr "YER (Yer deÄŸiÅŸtirebilen dosya)"
+
+#: readelf.c:1607
+msgid "EXEC (Executable file)"
+msgstr "UYGU (Uygulama dosyası)"
+
+#: readelf.c:1608
+msgid "DYN (Shared object file)"
+msgstr "DİN (Paylaşımlı nesne dosyası)"
+
+#: readelf.c:1609
+msgid "CORE (Core file)"
+msgstr "CORE (Core dosyası)"
+
+#: readelf.c:1613
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "İşlemciye Özel: (%x)"
+
+#: readelf.c:1615
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "İşletim Sistemine Özel: (%x)"
+
+#: readelf.c:1617 readelf.c:1724 readelf.c:2554
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<bilinmeyen>: %x"
+
+#: readelf.c:1629
+msgid "None"
+msgstr "Hiçbiri"
+
+#: readelf.c:2229
+msgid "Standalone App"
+msgstr "Tekbaşına Uygulama"
+
+#: readelf.c:2232 readelf.c:2952 readelf.c:2968
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<bilinmeyen: %x>"
+
+#: readelf.c:2597
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Kullanım: readelf <seçenekler> elf-dosya(ları)\n"
+
+#: readelf.c:2598
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr " ELF biçem dosyalarının içeriği hakkında bilgi gösterir\n"
+
+#: readelf.c:2599
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -S --section-headers Display the sections' header\n"
+" --sections An alias for --section-headers\n"
+" -g --section-groups Display the section groups\n"
+" -e --headers Equivalent to: -h -l -S\n"
+" -s --syms Display the symbol table\n"
+" --symbols An alias for --syms\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number> Dump the contents of section <number>\n"
+" -w[liaprmfFsoR] or\n"
+" --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" Seçenekler:\n"
+" -a --all -h -l -S -s -r -d -V -A -I ile aynı\n"
+" -h --file-header ELF dosya başlığını gösterir\n"
+" -l --program-headers Yazılım başlıklarını gösterir\n"
+" --segments --program-headers ile aynı\n"
+" -S --section-headers Bölüm başlıklarını gösterir\n"
+" --sections --section-headers ile aynı\n"
+" -g --section-groups Bölüm gruplarını gösterir\n"
+" -e --headers -h -l -S ile aynı\n"
+" -s --syms Sembol tablosunu gösterir\n"
+" --symbols --syms ile aynı\n"
+" -n --notes Eğer varsa, 'core' açıklamalarını gösterir\n"
+" -r --relocs Eğer varsa, yerdeğişimleri gösterir\n"
+" -u --unwind Eğer varsa, geri dönüşümleri gösterir\n"
+" -d --dynamic Eğer varsa, dinamik bölümleri gösterir\n"
+" -V --version-info Eğer varsa, sürüm bölümlerini gösterir\n"
+" -A --arch-specific Eğer varsa, platforma özgü bilgileri gösterir\n"
+" -D --use-dynamic Sembolleri gösterirken dinamik bölümleri kullanır\n"
+" -x --hex-dump=<sayı> <sayı> no'lu bölümün içeriğini gösterir\n"
+" -w[liaprmfFsoR] veya\n"
+" --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+" DWARF2 hata ayıklama bölümlerinin içeriğini gösterir\n"
+
+#: readelf.c:2622
+#, c-format
+msgid ""
+" -i --instruction-dump=<number>\n"
+" Disassemble the contents of section <number>\n"
+msgstr ""
+" -i --instruction-dump=<sayı>\n"
+" <sayı> bölümünün içeriğini karşıt-çevirir\n"
+
+#: readelf.c:2626
+#, c-format
+msgid ""
+" -I --histogram Display histogram of bucket list lengths\n"
+" -W --wide Allow output width to exceed 80 characters\n"
+" -H --help Display this information\n"
+" -v --version Display the version number of readelf\n"
+msgstr ""
+" -I --histogram Küme listesi uzunluklarının geçmiş grafiğini gösterir\n"
+" -W --wide Çıktı genişliğinin 80 karakteri geçmesine izin verir\n"
+" -H --help Bu bilgiyi gösterir\n"
+" -v --version readelf'in sürüm no'sunu gösterir\n"
+
+#: readelf.c:2651 readelf.c:12118
+msgid "Out of memory allocating dump request table."
+msgstr "Döküm istek tablosu ayrılırken bellek tükendi."
+
+#: readelf.c:2820 readelf.c:2888
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Tanınmayan hata ayıklama seçeneği '%s'\n"
+
+#: readelf.c:2922
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Geçersiz seçenek '-%c'\n"
+
+#: readelf.c:2936
+msgid "Nothing to do.\n"
+msgstr "Yapılacak bir şey yok.\n"
+
+#: readelf.c:2948 readelf.c:2964 readelf.c:5906
+msgid "none"
+msgstr "yok"
+
+#: readelf.c:2965
+msgid "2's complement, little endian"
+msgstr "2's complement, little endian"
+
+#: readelf.c:2966
+msgid "2's complement, big endian"
+msgstr "2's complement, big endian"
+
+#: readelf.c:2984
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "ELF dosyası değil - başlangıçta yanlış sihirli baytlar var\n"
+
+#: readelf.c:2992
+#, c-format
+msgid "ELF Header:\n"
+msgstr "ELF Başlığı:\n"
+
+#: readelf.c:2993
+#, c-format
+msgid " Magic: "
+msgstr " Sihir: "
+
+#: readelf.c:2997
+#, c-format
+msgid " Class: %s\n"
+msgstr " Sınıf: %s\n"
+
+#: readelf.c:2999
+#, c-format
+msgid " Data: %s\n"
+msgstr " Veri: %s\n"
+
+#: readelf.c:3001
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " Sürüm: %d %s\n"
+
+#: readelf.c:3008
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS/ABI: %s\n"
+
+#: readelf.c:3010
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " ABI Sürümü: %d\n"
+
+#: readelf.c:3012
+#, c-format
+msgid " Type: %s\n"
+msgstr " Tip: %s\n"
+
+#: readelf.c:3014
+#, c-format
+msgid " Machine: %s\n"
+msgstr " Makine: %s\n"
+
+#: readelf.c:3016
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " Sürüm: 0x%lx\n"
+
+#: readelf.c:3019
+#, c-format
+msgid " Entry point address: "
+msgstr " Girdi noktası adresi: "
+
+#: readelf.c:3021
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" Yazılım başlıkları başlangıcı: "
+
+#: readelf.c:3023
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (bayt dosya içinde)\n"
+" Bölüm başlıkları başlangıcı: "
+
+#: readelf.c:3025
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (bayt dosya içinde)\n"
+
+#: readelf.c:3027
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Seçenekler: 0x%lx%s\n"
+
+#: readelf.c:3030
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " Bu başlığın boyu: %ld (bayt)\n"
+
+#: readelf.c:3032
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " Yazılım başlık boyu: %ld (bayt)\n"
+
+#: readelf.c:3034
+#, c-format
+msgid " Number of program headers: %ld\n"
+msgstr " Yazılım başlık sayısı: %ld\n"
+
+#: readelf.c:3036
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " Bölüm başlık boyu: %ld (bayt)\n"
+
+#: readelf.c:3038
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " Bölüm başlıkları sayısı: %ld"
+
+#: readelf.c:3043
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " Bölüm başlığı dizge tablo endeksi: %ld"
+
+#: readelf.c:3074 readelf.c:3107
+msgid "program headers"
+msgstr "Yazılım Başlıkları"
+
+#: 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
+msgid "Out of memory\n"
+msgstr "Bellek tükendi\n"
+
+#: readelf.c:3172
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"Bu dosyada yazılım başlığı yok.\n"
+
+#: readelf.c:3178
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Elf dosya tipi: %s\n"
+
+#: readelf.c:3179
+#, c-format
+msgid "Entry point "
+msgstr "Giriş noktası "
+
+#: readelf.c:3181
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"%d adet yazılım başlığı var, göreli konumdan başlanıyor"
+
+#: readelf.c:3193 readelf.c:3195
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"Yazılım Başlıkları:\n"
+
+#: readelf.c:3199
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Tip Basamak SanalAdr GerçAdrs DosyaBoyBelBoy Seç Hiza\n"
+
+#: readelf.c:3202
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Tür Görece SanalAdr GerçAdrs DosyaBoy BelBoy Seç Hiza\n"
+
+#: readelf.c:3206
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " Tip Basamak SanalAdres GerçekAdres\n"
+
+#: readelf.c:3208
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " DosyaBoyu BellekBoyu Seç Hiza\n"
+
+#: readelf.c:3301
+msgid "more than one dynamic segment\n"
+msgstr "bir dinamik parçadan fazla\n"
+
+#: readelf.c:3312
+msgid "no .dynamic section in the dynamic segment"
+msgstr "dinamik bölüm içinde dinamik alt bölüm yok"
+
+#: readelf.c:3321
+msgid "the .dynamic section is not contained within the dynamic segment"
+msgstr "dinamik alt bölüm, dinamik bölüm içinde değil"
+
+#: readelf.c:3323
+msgid "the .dynamic section is not the first section in the dynamic segment."
+msgstr "dinamik alt bölüm, dinamik bölüm içindeki ilk alt bölüm değil."
+
+#: readelf.c:3337
+msgid "Unable to find program interpreter name\n"
+msgstr "Yazılım yorumlayıcısı adı bulunamadı\n"
+
+#: readelf.c:3344
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [Yazılım yorumlayıcısı isteniyor: %s]"
+
+#: readelf.c:3356
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" Bölümden parçaya eşleşme:\n"
+
+#: readelf.c:3357
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " Parça Bölümleri...\n"
+
+#: readelf.c:3408
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "Yazılım başlıkları olmadan sanal adresler yorumlanamaz. \n"
+
+#: readelf.c:3424
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "0x%lx sanal adresi hiç bir PT_LOAD bölümünde bulunamadı.\n"
+
+#: readelf.c:3438 readelf.c:3479
+msgid "section headers"
+msgstr "Bölüm Başlıkları"
+
+#: readelf.c:3523 readelf.c:3586
+msgid "symbols"
+msgstr "semboller"
+
+#: readelf.c:3533 readelf.c:3596
+msgid "symtab shndx"
+msgstr "symtab shndx"
+
+#: readelf.c:3697 readelf.c:3977
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"Bu dosyada bölüm yok.\n"
+
+#: readelf.c:3703
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "%d adet bölüm başlığı mevcut, göreli konum 0x%lx'dan başlanıyor:\n"
+
+#: readelf.c:3720 readelf.c:4079 readelf.c:4290 readelf.c:4591 readelf.c:5011
+#: readelf.c:6618
+msgid "string table"
+msgstr "dizge tablosu"
+
+#: readelf.c:3765
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Dosyada birden fazla dinamik sembol tablosu var\n"
+
+#: readelf.c:3777
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Dosyada birden fazla dinamik dizge tablosu var\n"
+
+#: readelf.c:3782
+msgid "dynamic strings"
+msgstr "dinamik dizgeler"
+
+#: readelf.c:3789
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Dosyada birden fazla symtab shndx tablosu var\n"
+
+#: readelf.c:3828
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"Bölüm Başlıkları:\n"
+
+#: readelf.c:3830
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"Bölüm Başlığı:\n"
+
+#: readelf.c:3834
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] İsim Tip Adres Bas Boy ES Seç Lk Inf Al\n"
+
+#: readelf.c:3837
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] İsim Tür Adres Görece Boy ES Seç Lk Inf Al\n"
+
+#: readelf.c:3840
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [Nr] Ä°sim Tip Adres Basamak\n"
+
+#: readelf.c:3841
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " Boy EntBoy Seç Bağ Bilgi Hiza\n"
+
+#: readelf.c:3936
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Seçenekler:\n"
+" W (yazdırır), A (ayırır), X (uygular), M (birleştirir), S (dizgeler)\n"
+" I (bilgi), L (bağ sırası), G (grup), x (bilinmeyen)\n"
+" O (daha fazla OS işlemesi gerekli) o (OS'e özgü), p (işlemciye özgü)\n"
+
+#: readelf.c:3954
+#, c-format
+msgid "[<unknown>: 0x%x]"
+msgstr "<bilinmeyen>: 0x%x"
+
+#: readelf.c:3984
+msgid "Section headers are not available!\n"
+msgstr "Alt bölüm başlıkları yok!\n"
+
+#: readelf.c:4008
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"Bu dosyada alt bölüm grupları yok.\n"
+
+#: readelf.c:4042
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "Grup alt bölümü `%s' içinde hatalı sh_link\n"
+
+#: readelf.c:4061
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "Grup alt bölümü `%s' içinde hatalı sh_info\n"
+
+#: readelf.c:4085 readelf.c:6947
+msgid "section data"
+msgstr "bölüm verisi"
+
+#: readelf.c:4097
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [Ä°ndeks] Ä°sim\n"
+
+#: readelf.c:4114
+#, c-format
+msgid "section [%5u] already in group section [%5u]\n"
+msgstr "alt bölüm [%5u] zaten alt bölüm grubu [%5u] içinde\n"
+
+#: readelf.c:4127
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr "alt bölüm 0 alt bölüm grubu [%5u] içinde\n"
+
+#: readelf.c:4224
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"Göreli konum 0x%2$lx'da bulunan `%1$s' yer değiştirme bölümü %3$ld bayt içeriyor:\n"
+
+#: readelf.c:4236
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"Bu dosyada dinamik yer deÄŸiÅŸtirmeler yok.\n"
+
+#: readelf.c:4260
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"Yer değiştirme bölümü "
+
+#: readelf.c:4265 readelf.c:4666 readelf.c:4680 readelf.c:5025
+#, c-format
+msgid "'%s'"
+msgstr "'%s'"
+
+#: readelf.c:4267 readelf.c:4682 readelf.c:5027
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr "göreli konum 0x%lx %lu girdi içeriyor:\n"
+
+#: readelf.c:4308
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"Bu dosyada yer deÄŸiÅŸtirmeler yok.\n"
+
+#: readelf.c:4482 readelf.c:4862
+msgid "unwind table"
+msgstr "geri alma tablosu"
+
+#: readelf.c:4540 readelf.c:4959
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "beklenmeyen yerdeğişim türü %s atlanıyor\n"
+
+#: readelf.c:4598 readelf.c:5018 readelf.c:5069
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"Bu dosyada geri alma bölümü yok.\n"
+
+#: readelf.c:4661
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"Geri alma bilgi bölümü bulunamadı "
+
+#: readelf.c:4673
+msgid "unwind info"
+msgstr "geri alma bilgisi"
+
+#: readelf.c:4675 readelf.c:5024
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"Geri alma bölümü "
+
+#: readelf.c:5228 readelf.c:5272
+msgid "dynamic section"
+msgstr "dinamik alt bölüm"
+
+#: readelf.c:5349
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"Bu dosyada dinamik alt bölüm yok.\n"
+
+#: readelf.c:5387
+msgid "Unable to seek to end of file!"
+msgstr "Dosya sonuna kadar aranamıyor!"
+
+#: readelf.c:5400
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Yüklenecek sembol sayısı belirlenemedi\n"
+
+#: readelf.c:5435
+msgid "Unable to seek to end of file\n"
+msgstr "Dosyanın sonuna kadar aranamadı\n"
+
+#: readelf.c:5442
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Dinamik dizge tablosunun uzunluÄŸu belirlenemedi\n"
+
+#: readelf.c:5447
+msgid "dynamic string table"
+msgstr "dinamik dizge tablosu"
+
+#: readelf.c:5482
+msgid "symbol information"
+msgstr "sembol bilgisi"
+
+#: readelf.c:5507
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"Göreli konum 0x%lx'deki dinamik alt bölüm %u girdi içeriyor:\n"
+
+#: readelf.c:5510
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " Etiket Tip Ä°sim/DeÄŸer\n"
+
+#: readelf.c:5546
+#, c-format
+msgid "Auxiliary library"
+msgstr "Yardımcı kitaplık"
+
+#: readelf.c:5550
+#, c-format
+msgid "Filter library"
+msgstr "Filtre kitaplığı"
+
+#: readelf.c:5554
+#, c-format
+msgid "Configuration file"
+msgstr "Ayar dosyası"
+
+#: readelf.c:5558
+#, c-format
+msgid "Dependency audit library"
+msgstr "Bağımlılık denetim kitaplığı"
+
+#: readelf.c:5562
+#, c-format
+msgid "Audit library"
+msgstr "Denetim kitaplığı"
+
+#: readelf.c:5580 readelf.c:5608 readelf.c:5636
+#, c-format
+msgid "Flags:"
+msgstr "Seçenekler:"
+
+#: readelf.c:5583 readelf.c:5611 readelf.c:5638
+#, c-format
+msgid " None\n"
+msgstr " Hiçbiri\n"
+
+#: readelf.c:5759
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Paylaşımlı kitaplık: [%s]"
+
+#: readelf.c:5762
+#, c-format
+msgid " program interpreter"
+msgstr " yazılım yorumlayıcısı"
+
+#: readelf.c:5766
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "Kitaplık so_adı: [%s]"
+
+#: readelf.c:5770
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "Kitaplık r_yolu: [%s]"
+
+#: readelf.c:5774
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "Kitaplık çalışım yolu: [%s]"
+
+#: readelf.c:5837
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Gereksiz nesne: [%s]\n"
+
+#: readelf.c:5951
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %ld entries:\n"
+msgstr ""
+"\n"
+"Sürüm tanımı bölümü '%s' %ld girdi içeriyor:\n"
+
+#: readelf.c:5954
+#, c-format
+msgid " Addr: 0x"
+msgstr " Adres: 0x"
+
+#: readelf.c:5956 readelf.c:6148
+#, c-format
+msgid " Offset: %#08lx Link: %lx (%s)\n"
+msgstr " Basamak: %#08lx BaÄŸ: %lx (%s)\n"
+
+#: readelf.c:5961
+msgid "version definition section"
+msgstr "sürüm tanımı bölümü"
+
+#: readelf.c:5987
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: Sür: %d Seçenek: %s"
+
+#: readelf.c:5990
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " Endeks: %d Sayı: %d "
+
+#: readelf.c:6001
+#, c-format
+msgid "Name: %s\n"
+msgstr "Ä°sim: %s\n"
+
+#: readelf.c:6003
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Ä°sim Endeksi: %ld\n"
+
+#: readelf.c:6018
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: Ãœst %d: %s\n"
+
+#: readelf.c:6021
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: Ãœst %d, isim endeksi: %ld\n"
+
+#: readelf.c:6040
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %ld entries:\n"
+msgstr ""
+"\n"
+"Sürüm gereksinimleri bölümü '%s' %ld girdi içeriyor:\n"
+
+#: readelf.c:6043
+#, c-format
+msgid " Addr: 0x"
+msgstr " Adres: 0x"
+
+#: readelf.c:6045
+#, c-format
+msgid " Offset: %#08lx Link to section: %ld (%s)\n"
+msgstr " Basamak: %#08lx Bölüme bağ: %ld (%s)\n"
+
+#: readelf.c:6050
+msgid "version need section"
+msgstr "Sürüm Gereksinim Bölüm"
+
+#: readelf.c:6072
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: Sürüm: %d"
+
+#: readelf.c:6075
+#, c-format
+msgid " File: %s"
+msgstr " Dosya: %s"
+
+#: readelf.c:6077
+#, c-format
+msgid " File: %lx"
+msgstr " Dosya: %lx"
+
+#: readelf.c:6079
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " Sayı: %d\n"
+
+#: readelf.c:6097
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: Ä°sim: %s"
+
+#: readelf.c:6100
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: Ä°sim endeksi: %lx"
+
+#: readelf.c:6103
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Seçenekler: %s Sürüm: %d\n"
+
+#: readelf.c:6139
+msgid "version string table"
+msgstr "Sürüm Dizge Tablo"
+
+#: readelf.c:6143
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Sürüm sembolleri bölümü '%s' %d girdi içeriyor:\n"
+
+#: readelf.c:6146
+#, c-format
+msgid " Addr: "
+msgstr " Adres: "
+
+#: readelf.c:6156
+msgid "version symbol data"
+msgstr "Sürüm Sembol Veri"
+
+#: readelf.c:6183
+msgid " 0 (*local*) "
+msgstr " 0 (*yerel*) "
+
+#: readelf.c:6187
+msgid " 1 (*global*) "
+msgstr " 1 (*evrensel*) "
+
+#: readelf.c:6223 readelf.c:6677
+msgid "version need"
+msgstr "Sürüm Gereksinim"
+
+#: readelf.c:6233
+msgid "version need aux (2)"
+msgstr "Sürüm Gereksinim Yardımcı (2)"
+
+#: readelf.c:6275 readelf.c:6740
+msgid "version def"
+msgstr "sürüm tanımı"
+
+#: readelf.c:6294 readelf.c:6755
+msgid "version def aux"
+msgstr "Sürüm yardımcı tanımı"
+
+#: readelf.c:6325
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"Bu dosyada sürüm bilgisi yok.\n"
+
+#: readelf.c:6456
+msgid "Unable to read in dynamic data\n"
+msgstr "Dinamik veri okunamadı\n"
+
+#: readelf.c:6509
+msgid "Unable to seek to start of dynamic information"
+msgstr "Dinamik bilginin başlangıcına kadar aranamadı"
+
+#: readelf.c:6515
+msgid "Failed to read in number of buckets\n"
+msgstr "Küme sayısı okunamadı\n"
+
+#: readelf.c:6521
+msgid "Failed to read in number of chains\n"
+msgstr "Zincir sayısı okunamadı\n"
+
+#: readelf.c:6541
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"İmaj için sembol tablosu:\n"
+
+#: readelf.c:6543
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Küme Num: Değer Boy Tip Bağ Gör Ndx İsim\n"
+
+#: readelf.c:6545
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Küme Num: Değer Boy Tip Bağ Gör Ndx İsim\n"
+
+#: readelf.c:6597
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"'%s' sembol tablosu %lu girdi içeriyor:\n"
+
+#: readelf.c:6601
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Num: Değer Boy Tip Bağ Gör Ndx İsim\n"
+
+#: readelf.c:6603
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " Num: Değer Boy Tip Bağ Gör Ndx İsim\n"
+
+#: readelf.c:6649
+msgid "version data"
+msgstr "sürüm verisi"
+
+#: readelf.c:6690
+msgid "version need aux (3)"
+msgstr "Sürüm Gereksinim Yardımcı (3)"
+
+#: readelf.c:6715
+msgid "bad dynamic symbol"
+msgstr "hatalı dinamik sembol"
+
+#: readelf.c:6778
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"Dinamik sembolleri göstermek için dinamik sembol bilgisi mevcut değil.\n"
+
+#: readelf.c:6790
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Küme liste boyu (toplam %lu küme) geçmiş grafiği:\n"
+
+#: readelf.c:6792
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr ""
+" Length Number %% of total Coverage\n"
+" Boy Numara toplam kapsamın %%\n"
+
+#: readelf.c:6797 readelf.c:6813 readelf.c:10967 readelf.c:11159
+msgid "Out of memory"
+msgstr "Bellek yetersiz"
+
+#: readelf.c:6862
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Göreli konum 0x%lx'de yer alan dinamik bilgi parçası %d girdi içeriyor:\n"
+
+#: readelf.c:6865
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr " Num: İsim Bağlı Seçenekler\n"
+
+#: readelf.c:6917
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"%s bölümünün üretici dökümü\n"
+
+#: readelf.c:6938
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"'%s' bölümünde dökülecek veri yok.\n"
+
+#: readelf.c:6943
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"'%s' bölümünün onaltılık dökümü:\n"
+
+#: readelf.c:7090
+msgid "badly formed extended line op encountered!\n"
+msgstr "hatalı oluşturulmuş uzun satır işlevi bulundu!\n"
+
+#: readelf.c:7097
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " Ek opkod %d: "
+
+#: readelf.c:7102
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Dizi Sonu\n"
+"\n"
+
+#: readelf.c:7108
+#, c-format
+msgid "set Address to 0x%lx\n"
+msgstr "Adresi 0x%lx olarak atar\n"
+
+#: readelf.c:7113
+#, c-format
+msgid " define new File Table entry\n"
+msgstr " yeni Dosya Tablosu girdisi tanımlar\n"
+
+#: readelf.c:7114 readelf.c:9032
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Girdi\tDizin\tZaman\tBoy\tÄ°sim\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 "TANIMSIZ: uzunluk %d\n"
+
+#: readelf.c:7155
+msgid "debug_str section data"
+msgstr "debug_str bölüm verisi"
+
+#: readelf.c:7173
+msgid "<no .debug_str section>"
+msgstr "<.debug_str bölümü yok>"
+
+#: readelf.c:7176
+msgid "<offset is too big>"
+msgstr "<görece fazla büyük>"
+
+#: readelf.c:7201
+msgid "debug_loc section data"
+msgstr "hata ayıklama bölüm verisi"
+
+#: readelf.c:7235
+msgid "debug_range section data"
+msgstr "debug_range alt bölüm verisi"
+
+#: readelf.c:7307
+#, c-format
+msgid "%s: skipping unexpected symbol type %s in relocation in section .rela%s\n"
+msgstr "%s: beklenmeyen sembol türü %s, yerdeğişim esnasında atlanıyor .rela%s\n"
+
+#: readelf.c:7321
+#, c-format
+msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
+msgstr "beklenmeyen sembol türü %s, yerdeğişim esnasında atlanıyor .rela.%s\n"
+
+#: readelf.c:7565
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Bilinmeyen TAG deÄŸeri: %lx"
+
+#: readelf.c:7601
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Bilinmeyen FORM deÄŸeri: %lx"
+
+#: readelf.c:7610
+#, c-format
+msgid " %lu byte block: "
+msgstr " %lu baytlık blok: "
+
+#: readelf.c:7944
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Kullanıcı tanımlı yer yönergesi)"
+
+#: readelf.c:7946
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Bilinmeyen yer yönergesi)"
+
+#: readelf.c:8015
+msgid "Internal error: DWARF version is not 2 or 3.\n"
+msgstr "İç hata: DWARF sürümü 2 veya 3 değil.\n"
+
+#: readelf.c:8113
+msgid "DW_FORM_data8 is unsupported when sizeof (unsigned long) != 8\n"
+msgstr "DW_FORM_data8, sizeof (unsigned long) != 8 durumunda desteklenmez\n"
+
+#: readelf.c:8162
+#, c-format
+msgid " (indirect string, offset: 0x%lx): %s"
+msgstr " (dolaylı dizge, görece: 0x%lx): %s"
+
+#: readelf.c:8171
+#, c-format
+msgid "Unrecognized form: %d\n"
+msgstr "Bilinmeyen form: %d\n"
+
+#: readelf.c:8256
+#, c-format
+msgid "(not inlined)"
+msgstr "(inline'lanamadı)"
+
+#: readelf.c:8259
+#, c-format
+msgid "(inlined)"
+msgstr "(inline'landı)"
+
+#: readelf.c:8262
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(inline olarak tanımlandı ama yoksayıldı)"
+
+#: readelf.c:8265
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(inline olarak tanımlandı ve inline'landı)"
+
+#: readelf.c:8268
+#, c-format
+msgid " (Unknown inline attribute value: %lx)"
+msgstr " (Bilinmeyen inline öznitelik değeri: %lx)"
+
+#: readelf.c:8413 readelf.c:9537
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [DW_AT_frame_base yok]"
+
+#: readelf.c:8416
+#, c-format
+msgid "(location list)"
+msgstr "(yer listesi)"
+
+#: readelf.c:8534
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Bilinmeyen AT deÄŸeri: %lx"
+
+#: readelf.c:8602
+msgid "No comp units in .debug_info section ?"
+msgstr ".debug_info alt bölümünde comp birimi yok mu?"
+
+#: readelf.c:8611
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "%u girdilik bir hata ayıklama bilgi dizgisi için yeterli bellek yok"
+
+#: readelf.c:8619 readelf.c:9630
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+"%s bölümü içeriyor:\n"
+"\n"
+
+#: readelf.c:8693
+#, c-format
+msgid " Compilation Unit @ %lx:\n"
+msgstr " Derleme Birimi @ %lx:\n"
+
+#: readelf.c:8694
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Uzunluk: %ld\n"
+
+#: readelf.c:8695
+#, c-format
+msgid " Version: %d\n"
+msgstr " Sürüm: %d\n"
+
+#: readelf.c:8696
+#, c-format
+msgid " Abbrev Offset: %ld\n"
+msgstr " Kısaltma Basamağı: %ld\n"
+
+#: readelf.c:8697
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Ä°mleyici Boyu: %d\n"
+
+#: readelf.c:8702
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr "Şimdilik yalnızca DWARF Sürüm 2 ve 3 hata ayıklama bilgisi destekleniyor.\n"
+
+#: readelf.c:8717
+msgid "Unable to locate .debug_abbrev section!\n"
+msgstr ".debug_abbrev bölümü bulunamadı!\n"
+
+#: readelf.c:8722
+msgid "debug_abbrev section data"
+msgstr "debug_abbrev bölüm verisi"
+
+#: readelf.c:8759
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "Kısaltma tablosunda %lu girdisi bulunamadı\n"
+
+#: readelf.c:8765
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr " <%d><%lx>: Kısaltma Numarası: %lu (%s)\n"
+
+#: readelf.c:8838
+#, c-format
+msgid "%s section needs a populated .debug_info section\n"
+msgstr "%s alt bölümü içi doldurulmuş .debug_info alt bölümünü gerektirir\n"
+
+#: readelf.c:8845
+#, c-format
+msgid "%s section has more comp units than .debug_info section\n"
+msgstr "%s alt bölümü,.debug_info alt bölümünden daha fazla comp birimi içeriyor\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 ""
+".debug_info içindeki son comp biriminden, imleyici boyunun %d olduğu çıkarıldı\n"
+"\n"
+
+#: readelf.c:8891
+msgid "extracting information from .debug_info section"
+msgstr ".debug_info alt bölümünden bilgi alınıyor"
+
+#: readelf.c:8909
+#, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"%s bölümünün hata ayıklama içeriği dökümü:\n"
+"\n"
+
+#: readelf.c:8948
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "Satır bilgisi bozuk - bölüm çok küçük\n"
+
+#: readelf.c:8957
+msgid "Only DWARF version 2 and 3 line info is currently supported.\n"
+msgstr "Şimdilik yalnızca DWARF sürüm 2 ve 3 satır bilgisi destekleniyor.\n"
+
+#: readelf.c:8984
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Uzunluk: %ld\n"
+
+#: readelf.c:8985
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " DWARF Sürümü: %d\n"
+
+#: readelf.c:8986
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " GiriÅŸ UzunluÄŸu: %d\n"
+
+#: readelf.c:8987
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " Minimum Ä°ÅŸlem UzunluÄŸu: %d\n"
+
+#: readelf.c:8988
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " 'is_stmt' başlangıç değeri: %d\n"
+
+#: readelf.c:8989
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " Satır Temeli: %d\n"
+
+#: readelf.c:8990
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " Satır Aralığı: %d\n"
+
+#: readelf.c:8991
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " Opkod Temeli: %d\n"
+
+#: readelf.c:8992
+#, c-format
+msgid " (Pointer size: %u)\n"
+msgstr " (Ä°mleyici boyu: %u)\n"
+
+#: readelf.c:9001
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Opkodlar:\n"
+
+#: readelf.c:9004
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " %d opkodunun %d seçeneği var\n"
+
+#: readelf.c:9010
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" Dizin Tablosu boÅŸ.\n"
+
+#: readelf.c:9013
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" Dizin Tablosu:\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"
+" Dosya Adı Tablosu boş.\n"
+
+#: readelf.c:9031
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" Dosya Adı Tablosu:\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"
+" Satır Numarası Deyimleri:\n"
+
+#: readelf.c:9073
+#, c-format
+msgid " Special opcode %d: advance Address by %d to 0x%lx"
+msgstr " Özel opkod %1$d: Adresi 0x%3$lx'e kadar %2$d ilerletir"
+
+#: readelf.c:9077
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr " ve Satır'ı %2$d'ye kadar %1$d\n"
+
+#: readelf.c:9088
+#, c-format
+msgid " Copy\n"
+msgstr " Kopyalar\n"
+
+#: readelf.c:9095
+#, c-format
+msgid " Advance PC by %d to %lx\n"
+msgstr " PC'yi %2$lx'ye kadar, %1$d ilerletir\n"
+
+#: readelf.c:9103
+#, c-format
+msgid " Advance Line by %d to %d\n"
+msgstr " Satırı %2$d'ye kadar %1$d ilerletir\n"
+
+#: readelf.c:9110
+#, c-format
+msgid " Set File Name to entry %d in the File Name Table\n"
+msgstr " Dosya Adını, Dosya İsim Tablosunda, %d numaralı girdi olarak atar\n"
+
+#: readelf.c:9118
+#, c-format
+msgid " Set column to %d\n"
+msgstr " Sütunu %d olarak atar\n"
+
+#: readelf.c:9125
+#, c-format
+msgid " Set is_stmt to %d\n"
+msgstr " is_stmt'i %d olarak atar\n"
+
+#: readelf.c:9130
+#, c-format
+msgid " Set basic block\n"
+msgstr " Temel bloÄŸu atar\n"
+
+#: readelf.c:9138
+#, c-format
+msgid " Advance PC by constant %d to 0x%lx\n"
+msgstr " PC'yi 0x%2$lx'e kadar %1$d ilerletir\n"
+
+#: readelf.c:9146
+#, c-format
+msgid " Advance PC by fixed size amount %d to 0x%lx\n"
+msgstr " PC'yi 0x%2$lx'e kadar %1$d ilerletir\n"
+
+#: readelf.c:9151
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr " Prologue_end'i doÄŸru (true) olarak atar\n"
+
+#: readelf.c:9155
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr " Epilogue_begin'i doÄŸru (true) olarak atar\n"
+
+#: readelf.c:9161
+#, c-format
+msgid " Set ISA to %d\n"
+msgstr " ISA'yı %d olarak atar\n"
+
+#: readelf.c:9165
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr " Bilinmeyen %d opkodu ve iÅŸlenenleri: "
+
+#: readelf.c:9193 readelf.c:9279 readelf.c:9354
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"%s bölümünün içeriği:\n"
+"\n"
+
+#: readelf.c:9233
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Şimdilik yalnız DWARF 2 ve 3 genel isimleri destekleniyor\n"
+
+#: readelf.c:9240
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Uzunluk: %ld\n"
+
+#: readelf.c:9242
+#, c-format
+msgid " Version: %d\n"
+msgstr " Sürüm: %d\n"
+
+#: readelf.c:9244
+#, c-format
+msgid " Offset into .debug_info section: %ld\n"
+msgstr ".debug_info bölümünün içine göreli konum: %ld\n"
+
+#: readelf.c:9246
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr ".debug_info bölümünde alan büyüklüğü: %ld\n"
+
+#: readelf.c:9249
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" Basamak\tÄ°sim\n"
+
+#: readelf.c:9300
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - satır no: %d dosya no: %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 - satır no : %d makro : %s\n"
+
+#: readelf.c:9323
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - satır no : %d makro : %s\n"
+
+#: readelf.c:9335
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - sabit : %d dizge : %s\n"
+
+#: readelf.c:9363
+#, c-format
+msgid " Number TAG\n"
+msgstr " Sayı TAG\n"
+
+#: readelf.c:9369
+#, c-format
+msgid " %ld %s [%s]\n"
+msgstr " %ld %s [%s]\n"
+
+#: readelf.c:9372
+msgid "has children"
+msgstr "astları var"
+
+#: readelf.c:9372
+msgid "no children"
+msgstr "astları yok"
+
+#: 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 bölümü boş.\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 alt bölümündeki yer listeleri artan sırada değil!\n"
+
+#: readelf.c:9458
+msgid "No location lists in .debug_info section!\n"
+msgstr ".debug_info alt bölümünde yer listesi yok!\n"
+
+#: readelf.c:9461
+#, c-format
+msgid "Location lists in .debug_loc section start at 0x%lx\n"
+msgstr ".debug_loc alt bölümünde yer listeleri başlangıç konumu 0x%lx\n"
+
+#: readelf.c:9464
+#, c-format
+msgid ""
+"Contents of the .debug_loc section:\n"
+"\n"
+msgstr ""
+".debug_loc bölümünün içeriği:\n"
+"\n"
+
+#: readelf.c:9465
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr " Görece Başlan. Son İfade\n"
+
+#: readelf.c:9495
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr ".debug_loc alt bölümünde [0x%lx - 0x%lx] deliği mevcut.\n"
+
+#: readelf.c:9498
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_loc section.\n"
+msgstr ".debug_loc alt bölümünde [0x%lx - 0x%lx] örtüşmesi var.\n"
+
+#: readelf.c:9512 readelf.c:9837
+#, c-format
+msgid " %8.8lx <End of list>\n"
+msgstr " %8.8lx <Liste sonu>\n"
+
+#: readelf.c:9540 readelf.c:9854
+msgid " (start == end)"
+msgstr " (başlangıç == son)"
+
+#: readelf.c:9542 readelf.c:9856
+msgid " (start > end)"
+msgstr " (başlangıç > son)"
+
+#: readelf.c:9566
+#, c-format
+msgid ""
+"\n"
+"The .debug_str section is empty.\n"
+msgstr ""
+"\n"
+".debug_str bölümü boş.\n"
+
+#: readelf.c:9570
+#, c-format
+msgid ""
+"Contents of the .debug_str section:\n"
+"\n"
+msgstr ""
+".debug_str bölümünün içeriği:\n"
+"\n"
+
+#: readelf.c:9675
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Şimdilik yalnızca DWARF 2 ve 3 a-aralıkları destekleniyor.\n"
+
+#: readelf.c:9679
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Uzunluk: %ld\n"
+
+#: readelf.c:9680
+#, c-format
+msgid " Version: %d\n"
+msgstr " Sürüm: %d\n"
+
+#: readelf.c:9681
+#, c-format
+msgid " Offset into .debug_info: %lx\n"
+msgstr " .debug_info'nun içine göreli konum: %lx\n"
+
+#: readelf.c:9682
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Ä°mleyici Boyu: %d\n"
+
+#: readelf.c:9683
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " Parça Boyu: %d\n"
+
+#: readelf.c:9685
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Adres Uzunluk\n"
+
+#: readelf.c:9741
+#, c-format
+msgid ""
+"\n"
+"The .debug_ranges section is empty.\n"
+msgstr ""
+"\n"
+".debug_ranges alt bölümü boş.\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 alt bölümündeki aralık listeleri artan sıralı değil!\n"
+
+#: readelf.c:9789
+msgid "No range lists in .debug_info section!\n"
+msgstr ".debug_info alt bölümünde aralık listesi yok!\n"
+
+#: readelf.c:9792
+#, c-format
+msgid "Range lists in .debug_ranges section start at 0x%lx\n"
+msgstr ".debug_ranges alt bölümünde aralık listeleri 0x%lx konumunda başlıyor\n"
+
+#: readelf.c:9795
+#, c-format
+msgid ""
+"Contents of the .debug_ranges section:\n"
+"\n"
+msgstr ""
+".debug_ranges alt bölümünün içeriği:\n"
+"\n"
+
+#: readelf.c:9796
+#, c-format
+msgid " Offset Begin End\n"
+msgstr " Görece Başlan. Son\n"
+
+#: readelf.c:9820
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in .debug_ranges section.\n"
+msgstr ".debug_ranges alt bölümünde [0x%lx - 0x%lx] deliği mevcut.\n"
+
+#: readelf.c:9823
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in .debug_ranges section.\n"
+msgstr ".debug_ranges alt bölümünde [0x%lx - 0x%lx] örtüşmesi var.\n"
+
+#: readelf.c:10017
+#, c-format
+msgid "The section %s contains:\n"
+msgstr "%s bölümü içeriyor:\n"
+
+#: readelf.c:10663
+#, c-format
+msgid "unsupported or unknown DW_CFA_%d\n"
+msgstr "desteklenmeyen veya bilinmeyen DW_CFA_%d\n"
+
+#: readelf.c:10688
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "%s bölümünün hata ayıklama içerik bilgilerini göstermek henüz desteklenmiyor.\n"
+
+#: readelf.c:10732
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+"\n"
+"'%s' bölümünde hata ayıklama bilgisi yok.\n"
+
+#: readelf.c:10746
+msgid "debug section data"
+msgstr "hata ayıklama bölüm verisi"
+
+#: readelf.c:10765
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "Tanınmayan hata ayıklama bölümü: %s\n"
+
+#: readelf.c:10800
+#, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "%d alt bölümü dökülmedi çünkü mevcut değil!\n"
+
+#: readelf.c:10872 readelf.c:11236
+msgid "liblist"
+msgstr "liblist"
+
+#: readelf.c:10961
+msgid "options"
+msgstr "seçenekler"
+
+#: readelf.c:10991
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"'%s' bölümü %d girdi içeriyor:\n"
+
+#: readelf.c:11152
+msgid "conflict list found without a dynamic symbol table"
+msgstr "dinamik sembol tablosu olmayan çelişki listesi bulundu"
+
+#: readelf.c:11168 readelf.c:11182
+msgid "conflict"
+msgstr "çakışma"
+
+#: readelf.c:11192
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"'.conflict' alt bölümü %lu girdi içeriyor:\n"
+
+#: readelf.c:11194
+msgid " Num: Index Value Name"
+msgstr " Num: Endeks DeÄŸer Ä°sim"
+
+#: readelf.c:11243
+msgid "liblist string table"
+msgstr "liblist dizge tablosu"
+
+#: readelf.c:11252
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Kitaplık liste bölümü '%s', %lu girdi içeriyor:\n"
+
+#: readelf.c:11303
+msgid "NT_AUXV (auxiliary vector)"
+msgstr "NT_AUXV (yardımcı vektör)"
+
+#: readelf.c:11305
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (prstatus yapısı)"
+
+#: readelf.c:11307
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (kayan nokta yazmaçları)"
+
+#: readelf.c:11309
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (prpsinfo yapısı)"
+
+#: readelf.c:11311
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (görev yapısı)"
+
+#: readelf.c:11313
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (user_xfpregs yapısı)"
+
+#: readelf.c:11315
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (pstatus yapısı)"
+
+#: readelf.c:11317
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (kayan nokta yazmaçları)"
+
+#: readelf.c:11319
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (psinfo yapısı)"
+
+#: readelf.c:11321
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (lwpstatus_t yapısı)"
+
+#: readelf.c:11323
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (lwpsinfo_t yapısı)"
+
+#: readelf.c:11325
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (win32_pstatus yapısı)"
+
+#: readelf.c:11333
+msgid "NT_VERSION (version)"
+msgstr "NT_VERSION (sürüm)"
+
+#: readelf.c:11335
+msgid "NT_ARCH (architecture)"
+msgstr "NT_ARCH (mimari)"
+
+#: readelf.c:11340 readelf.c:11362
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "Bilinmeyen not tipi: (0x%08x)"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:11352
+msgid "NetBSD procinfo structure"
+msgstr "NetBSD procinfo yapısı"
+
+#: readelf.c:11379 readelf.c:11393
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (yazmaç yapısı)"
+
+#: readelf.c:11381 readelf.c:11395
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (kayan nokta yazmaç yapısı)"
+
+#: readelf.c:11401
+#, c-format
+msgid "PT_FIRSTMACH+%d"
+msgstr "PT_FIRSTMACH+%d"
+
+#: readelf.c:11447
+msgid "notes"
+msgstr "notlar"
+
+#: readelf.c:11453
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"0x%08lx göreli konumunda, 0x%08lx uzunluğunda notlar:\n"
+
+#: readelf.c:11455
+#, c-format
+msgid " Owner\t\tData size\tDescription\n"
+msgstr " Sahip\t\tVeri Boyu\tAçıklama\n"
+
+#: readelf.c:11474
+#, c-format
+msgid "corrupt note found at offset %x into core notes\n"
+msgstr "'core' notlarının içinde, %x görecesinde bozuk not bulundu\n"
+
+#: readelf.c:11476
+#, c-format
+msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
+msgstr " tür: %x, isimboyu: %08lx, tanımboyu: %08lx\n"
+
+#: readelf.c:11574
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr "Core dosyasında not parçaları yok.\n"
+
+#: readelf.c:11653
+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"
+msgstr ""
+"Bu readelf, 64 bitlik veri türü desteği olmaksızın derlenmiştir ve\n"
+"64 bitlik ELF dosyalarını okuyamaz.\n"
+
+#: readelf.c:11700 readelf.c:12059
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s: Dosya başlığı okunamadı\n"
+
+#: readelf.c:11713
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Dosya: %s\n"
+
+#: readelf.c:11876 readelf.c:11897 readelf.c:11934 readelf.c:12014
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: arşiv başlığı okunamadı\n"
+
+#: readelf.c:11887
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr "%s: arşiv sembol tablosu atlanamadı\n"
+
+#: readelf.c:11919
+#, c-format
+msgid "%s: failed to read string table\n"
+msgstr "%s: dizge tablosu okunamadı\n"
+
+#: readelf.c:11955
+#, c-format
+msgid "%s: invalid archive string table offset %lu\n"
+msgstr "%s: geçersiz arşiv dizge tablo görecesi %lu\n"
+
+#: readelf.c:11971
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: hatalı arşiv dosya adı\n"
+
+#: readelf.c:12003
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s: sonraki arşiv başlığına geçilemedi\n"
+
+#: readelf.c:12037
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "'%s': Böyle bir dosya yok\n"
+
+#: readelf.c:12039
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr "'%s' bulunamadı. Sistem hata iletisi: %s\n"
+
+#: readelf.c:12046
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "'%s' normal bir dosya deÄŸil\n"
+
+#: readelf.c:12053
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr "Girdi dosyası '%s' okunamaz.\n"
+
+#: rename.c:127
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s: zaman atanamadı: %s"
+
+#. We have to clean up here.
+#: rename.c:162 rename.c:200
+#, c-format
+msgid "unable to rename '%s' reason: %s"
+msgstr "'%s' yeniden adlandırılamadı sebep: %s"
+
+#: rename.c:208
+#, c-format
+msgid "unable to copy file '%s' reason: %s"
+msgstr "'%s' dosyası kopyalanamadı sebep: %s"
+
+#: resbin.c:132
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: yeterli ikilik veri yok"
+
+#: resbin.c:148
+msgid "null terminated unicode string"
+msgstr "boş değerle sonlanmış unicode dizgesi"
+
+#: resbin.c:175 resbin.c:181
+msgid "resource ID"
+msgstr "kaynak ID"
+
+#: resbin.c:221
+msgid "cursor"
+msgstr "gösterge"
+
+#: resbin.c:253 resbin.c:260
+msgid "menu header"
+msgstr "menü başlığı"
+
+#: resbin.c:270
+msgid "menuex header"
+msgstr "menuex başlığı"
+
+#: resbin.c:274
+msgid "menuex offset"
+msgstr "menuex basamağı"
+
+#: resbin.c:281
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "desteklenmeyen menü sürümü %d"
+
+#: resbin.c:306 resbin.c:321 resbin.c:384
+msgid "menuitem header"
+msgstr "menü üyesi başlığı"
+
+#: resbin.c:414
+msgid "menuitem"
+msgstr "menü üyesi"
+
+#: resbin.c:453 resbin.c:481
+msgid "dialog header"
+msgstr "diyalog başlığı"
+
+#: resbin.c:471
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "beklenmeyen DIALOGEX sürümü %d"
+
+#: resbin.c:516
+msgid "dialog font point size"
+msgstr "diyalog yazıtipi büyüklüğü"
+
+#: resbin.c:524
+msgid "dialogex font information"
+msgstr "dialogex yazıtipi bilgisi"
+
+#: resbin.c:550 resbin.c:568
+msgid "dialog control"
+msgstr "diyalog kontrolü"
+
+#: resbin.c:560
+msgid "dialogex control"
+msgstr "dialogex kontrolü"
+
+#: resbin.c:589
+msgid "dialog control end"
+msgstr "diyalog kontrol sonu"
+
+#: resbin.c:601
+msgid "dialog control data"
+msgstr "diyalog kontrol verisi"
+
+#: resbin.c:642
+msgid "stringtable string length"
+msgstr "dizgetablosu dizge uzunluÄŸu"
+
+#: resbin.c:652
+msgid "stringtable string"
+msgstr "dizgetablosu dizgesi"
+
+#: resbin.c:683
+msgid "fontdir header"
+msgstr "yazıtipi dizin başlığı"
+
+#: resbin.c:696
+msgid "fontdir"
+msgstr "yazıtipi dizini"
+
+#: resbin.c:712
+msgid "fontdir device name"
+msgstr "yazıtipi aygıt adı"
+
+#: resbin.c:718
+msgid "fontdir face name"
+msgstr "yazıtipi dizini aile ismi"
+
+#: resbin.c:759
+msgid "accelerator"
+msgstr "hızlandırıcı"
+
+#: resbin.c:819
+msgid "group cursor header"
+msgstr "grup gösterge başlığı"
+
+#: resbin.c:823
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "beklenmeyen grup gösterge tipi %d"
+
+#: resbin.c:838
+msgid "group cursor"
+msgstr "grup göstergesi"
+
+#: resbin.c:875
+msgid "group icon header"
+msgstr "grup ikon başlığı"
+
+#: resbin.c:879
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "beklenmeyen grup ikon tipi %d"
+
+#: resbin.c:894
+msgid "group icon"
+msgstr "grup ikonu"
+
+#: resbin.c:957 resbin.c:1174
+msgid "unexpected version string"
+msgstr "dizgenin beklenmeyen sürümü"
+
+#: resbin.c:989
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "sürüm uzunluğu %d, kaynak uzunluğu %lu ile eşleşmiyor"
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected version type %d"
+msgstr "beklenmeyen sürüm tipi %d"
+
+#: resbin.c:1005
+#, c-format
+msgid "unexpected fixed version information length %d"
+msgstr "beklenmeyen sabit sürüm bilgi uzunluğu %d"
+
+#: resbin.c:1008
+msgid "fixed version info"
+msgstr "sabit sürüm bilgisi"
+
+#: resbin.c:1012
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "beklenmeyen sabit sürüm imzası %lu"
+
+#: resbin.c:1016
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "beklenmeyen sabit sürüm bilgisi sürümü %lu"
+
+#: resbin.c:1045
+msgid "version var info"
+msgstr "sürüm değişken bilgisi"
+
+#: resbin.c:1062
+#, c-format
+msgid "unexpected stringfileinfo value length %d"
+msgstr "beklenmeyen dizge dosya bilgi deÄŸer uzunluÄŸu %d"
+
+#: resbin.c:1072
+#, c-format
+msgid "unexpected version stringtable value length %d"
+msgstr "beklenmeyen sürüm dizge tablo değer uzunluğu %d"
+
+#: resbin.c:1106
+#, c-format
+msgid "unexpected version string length %d != %d + %d"
+msgstr "beklenmeyen sürüm dizge uzunluğu %d != %d + %d"
+
+#: resbin.c:1117
+#, c-format
+msgid "unexpected version string length %d < %d"
+msgstr "beklenmeyen sürüm dizge uzunluğu %d < %d"
+
+#: resbin.c:1134
+#, c-format
+msgid "unexpected varfileinfo value length %d"
+msgstr "beklenmeyen deÄŸiÅŸken dosya bilgi deÄŸer uzunluÄŸu %d"
+
+#: resbin.c:1153
+msgid "version varfileinfo"
+msgstr "değişken dosya bilgi sürümü"
+
+#: resbin.c:1168
+#, c-format
+msgid "unexpected version value length %d"
+msgstr "beklenmeyen sürüm değer uzunluğu %d"
+
+#: rescoff.c:126
+msgid "filename required for COFF input"
+msgstr "COFF girdisi için dosya adı gerekli"
+
+#: rescoff.c:143
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: kaynak bölümü yok"
+
+#: rescoff.c:150
+msgid "can't read resource section"
+msgstr "kaynak bölümü okunamıyor"
+
+#: rescoff.c:174
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: adres sınırların dışında"
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "dizin"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "isimli dizin girdisi"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "dizin girdi ismi"
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "isimli altdizin"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "isimli kaynak"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "ID dizin girdisi"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "ID altdizini"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "ID kaynağı"
+
+#: rescoff.c:318
+msgid "resource type unknown"
+msgstr "kaynak tipi bilinmiyor"
+
+#: rescoff.c:321
+msgid "data entry"
+msgstr "veri girdisi"
+
+#: rescoff.c:329
+msgid "resource data"
+msgstr "kaynak verisi"
+
+#: rescoff.c:334
+msgid "resource data size"
+msgstr "kaynak veri boyu"
+
+#: rescoff.c:427
+msgid "filename required for COFF output"
+msgstr "COFF çıktı için dosya adı gerekli"
+
+#: rescoff.c:719
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "BFD_RELOC_RVA yer değiştirme tipi alınamıyor"
+
+#: resrc.c:238 resrc.c:309
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "`%s' geçici dosyası açılamıyor: %s"
+
+#: resrc.c:244
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "standart çıktı yönlendirilemiyor: `%s': %s"
+
+#: resrc.c:260
+#, c-format
+msgid "%s %s: %s"
+msgstr "%s %s: %s"
+
+#: resrc.c:305
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "`%s' çalıştırılamıyor: %s"
+
+#: resrc.c:314
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "`%s' geçici dosyası önişlemci çıktısını okumak için kullanılıyor\n"
+
+#: resrc.c:321
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "`%s' popen yapılamıyor: %s"
+
+#: resrc.c:323
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "Önişlemci çıktısı popen ile okunuyor\n"
+
+#: resrc.c:362
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "`%s' denendi\n"
+
+#: resrc.c:373
+#, c-format
+msgid "Using `%s'\n"
+msgstr "`%s' kullanılıyor\n"
+
+#: resrc.c:529
+#, c-format
+msgid "%s:%d: %s\n"
+msgstr "%s:%d: %s\n"
+
+#: resrc.c:537
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: beklenmeyen dosya sonu"
+
+#: resrc.c:586
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: %lu'nun okunması %lu döndürdü"
+
+#: resrc.c:624 resrc.c:1134
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "`%s' bitmap dosyası durumlanamadı: %s"
+
+#: resrc.c:675
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "gösterge dosyası '%s' gösterge verisi içermiyor"
+
+#: resrc.c:707 resrc.c:1003
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: %lu'ya fseek başarısız: %s"
+
+#: resrc.c:831
+msgid "help ID requires DIALOGEX"
+msgstr "yardım ID için DIALOGEX gerekli"
+
+#: resrc.c:833
+msgid "control data requires DIALOGEX"
+msgstr "kontrol verisi için DIALOGEX gerekli"
+
+#: resrc.c:861
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "`%s' yazıtipi dosyası durumlanamadı: %s"
+
+#: resrc.c:972
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "ikon dosyası '%s' ikon verisi içermiyor"
+
+#: resrc.c:1273 resrc.c:1308
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "`%s' dosyası durumlanamadı: %s"
+
+#: resrc.c:1494
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "'%s' çıktı için açılamadı: %s"
+
+#: size.c:81
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr " İkilik dosyalar içinde bölüm boylarını gösterir\n"
+
+#: size.c:82
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr " Eğer girdi dosyası belirtilmezse, a.out varsayılır\n"
+
+#: size.c:83
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Seçenekler:\n"
+" -A|-B --format={sysv|berkeley} Çıktı tarzını belirler (%s öntanımlı)\n"
+" -o|-d|-x --radix={8|10|16} Rakamları sekizlik, onluk, onaltılık\n"
+" olarak gösterir\n"
+" -t --totals Toplam boyları gösterir (yalnız\n"
+" Berkeley'de)\n"
+" --target=<bfdadı> İkilik dosya biçemini belirler\n"
+" -h --help Bu bilgileri gösterir\n"
+" -v --version Sürüm bilgilerini gösterir\n"
+"\n"
+
+#: size.c:153
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "--format'a geçersiz seçenek: %s"
+
+#: size.c:180
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Geçersiz radix: %s\n"
+
+#: srconv.c:1722
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "Bir COFF nesne dosyasını SYSROFF nesne dosyasına çevirir\n"
+
+#: srconv.c:1723
+#, c-format
+msgid ""
+" The options are:\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Seçenekler:\n"
+" -q --quick (Eski - yoksayılır)\n"
+" -n --noprescan common'ları def'lere çevirmek için taramaz\n"
+" -d --debug Ne yapıldığı hakkında bilgi verir\n"
+" -h --help Bu bilgiyi gösterir\n"
+" -v --version Sürüm numarasını gösterir\n"
+
+#: srconv.c:1866
+#, c-format
+msgid "unable to open output file %s"
+msgstr "çıktı dosyası %s açılamadı"
+
+#: stabs.c:330 stabs.c:1708
+msgid "numeric overflow"
+msgstr "sayısal taşma"
+
+#: stabs.c:340
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "Kötü stab: %s\n"
+
+#: stabs.c:348
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Uyarı: %s: %s\n"
+
+#: stabs.c:458
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC işlev içerisinde değil\n"
+
+#: stabs.c:497
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "Fazla sayıda N_RBRAC\n"
+
+#: stabs.c:738
+msgid "unknown C++ encoded name"
+msgstr "Bilinmeyen C++ ÅŸifreli ismi"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1253
+msgid "unrecognized cross reference type"
+msgstr "tanınmayan çapraz başvuru tipi"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1800
+msgid "missing index type"
+msgstr "eksik endeks tipi"
+
+#: stabs.c:2114
+msgid "unknown virtual character for baseclass"
+msgstr "temel sınıf için bilinmeyen sanal karakter"
+
+#: stabs.c:2132
+msgid "unknown visibility character for baseclass"
+msgstr "temel sınıf için bilinmeyen görünebilirlik karakteri"
+
+#: stabs.c:2318
+msgid "unnamed $vb type"
+msgstr "isimlenmemiÅŸ $vb tipi"
+
+#: stabs.c:2324
+msgid "unrecognized C++ abbreviation"
+msgstr "tanınmayan C++ kısaltması"
+
+#: stabs.c:2400
+msgid "unknown visibility character for field"
+msgstr "alan için bilinmeyen görünürlük karakteri"
+
+#: stabs.c:2652
+msgid "const/volatile indicator missing"
+msgstr "sabit/deÄŸiÅŸken belirteci eksik"
+
+#: stabs.c:2888
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "\"%s\" için karıştırma yok\n"
+
+#: stabs.c:3188
+msgid "Undefined N_EXCL"
+msgstr "N_EXCL tanımsız"
+
+#: stabs.c:3268
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "Tip dosya numarası %d aralık dışı\n"
+
+#: stabs.c:3273
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Tip endeks numarası %d aralık dışı\n"
+
+#: stabs.c:3352
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "Bilinmeyen XCOFF tipi %d\n"
+
+#: stabs.c:3644
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "kötü karıştırılmış isim '%s'\n"
+
+#: stabs.c:3739
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "karıştırılmış dizgede argüman tipi yok\n"
+
+#: stabs.c:5093
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "Düzeltilmiş isim bir işlev değil\n"
+
+#: stabs.c:5135
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "v3 argüman listesi düzeltme işleminde beklenmeyen tür\n"
+
+#: stabs.c:5202
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "Tanınmayan düzeltme bileşeni %d\n"
+
+#: stabs.c:5254
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "Düzeltilmiş şablon yazdırılamadı\n"
+
+#: stabs.c:5334
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "Düzeltilmiş oluşumiçi tür alınamadı\n"
+
+#: stabs.c:5383
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "Beklenmeyen düzeltilmiş değişken argümanlar\n"
+
+#: stabs.c:5390
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "Bilinmeyen düzeltilmiş çevrimiçi tür\n"
+
+#: strings.c:206
+#, c-format
+msgid "invalid number %s"
+msgstr "geçersiz sayı %s"
+
+#: strings.c:643
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "geçersiz tamsayı argümanı %s"
+
+#: strings.c:652
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr " [dosya(lar)]daki yazdırılabilir dizgeleri gösterir (öntanımlı standart girdi)\n"
+
+#: strings.c:653
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Seçenekler:\n"
+" -a - --all Yalnız veri bölümünü değil, bütün dosyayı tarar\n"
+" -f --print-file-name Her dizgeden önce dosya adını yazdırır\n"
+" -n --bytes=[sayı] En az [sayı] karakterde ve NUL ile sonlanmış olan\n"
+" -<sayı> bütün dizgeleri yazdırır (öntanımlı 4)\n"
+" -t --radix={o,d,x} Dizgenin yerini 8'lik, 10'luk veya 16'lık düzende\n"
+" yazdırır\n"
+" -o --radix=o ile aynı\n"
+" -T --target=<BFDADI> İkilik dosya biçemini belirtir\n"
+" -e --encoding={s,S,b,l,B,L} Karakter boyu ve sonlamayı seçtirir:\n"
+" s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+" -h --help Bu bilgiyi gösterir\n"
+" -v --version Yazılımın sürüm no'sunu gösterir\n"
+
+#: sysdump.c:649
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "SYSROFF nesne dosyasını insan tarafından okunabilir biçemde yazdırır\n"
+
+#: sysdump.c:650
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Seçenekler:\n"
+" -h --help Bu bilgiyi gösterir\n"
+" -v --version Yazılımın sürüm no'sunu gösterir\n"
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "%s girdi dosyası açılamadı"
+
+#: version.c:35
+#, c-format
+msgid "Copyright 2005 Free Software Foundation, Inc.\n"
+msgstr "Telif Hakkı (c) 2005 Free Software Foundation, Inc.\n"
+
+#: version.c:36
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License. This program has absolutely no warranty.\n"
+msgstr ""
+"Bu, bir serbest yazılımdır; GNU Genel Kamu Lisansı koşulları altında değişiklik \n"
+"yapabilir ve/veya yeniden dağıtabilirsiniz. \n"
+"Bu yazılımın herhangi bir garantisi yoktur.\n"
+
+#: windres.c:204
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "%s `%s' açılamadı: %s"
+
+#: windres.c:370
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": dizin beklendi\n"
+
+#: windres.c:382
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": yaprak beklendi\n"
+
+#: windres.c:391
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: uyarı: "
+
+#: windres.c:393
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": çift değer\n"
+
+#: windres.c:543
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "bilinmeyen biçem tipi `%s'"
+
+#: windres.c:544
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: desteklenen biçemler:"
+
+#. Otherwise, we give up.
+#: windres.c:627
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "`%s' dosyasının türü belirlenemedi; -J seçeneğini kullanın"
+
+#: windres.c:639
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Kullanım: %s [seçenekler] [girdi-dosyası] [çıktı-dosyası]\n"
+
+#: windres.c:641
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+"Seçenekler:\n"
+" -i --input=<DOSYA> Girdi dosyası ismi\n"
+" -o --output=<DOSYA> Çıktı dosyası ismi\n"
+" -J --input-format=<BİÇEM> Girdi biçemini belirtir\n"
+" -O --output-format=<BİÇEM> Çıktı biçemini belirtir\n"
+" -F --target=<HEDEF> COFF hedefini belirtir\n"
+" --preprocessor=<YAZILIM> rc dosyasını önişlemek için kullanılacak yazılım\n"
+" -I --include-dir=<DİZİN> rc dosyası önişlenirken dizini dahil et\n"
+" -D --define SYM[=DEĞER] rc dosyası önişlenirken SYM'i tanımlar\n"
+" -v --verbose Açıklamalı - ne yapıldığını anlatır\n"
+" -l --language=<DEĞER> rc dosyası okunurken dili belirtir\n"
+" --use-temp-file Önişlemci çıktısını okumak için popen yerine\n"
+" geçici dosya kullanır\n"
+" --no-use-temp-file (öntanımlı) popen kullanır\n"
+
+#: windres.c:657
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug Tarayıcıda hata ayıklamayı etkinleştirir\n"
+
+#: windres.c:660
+#, c-format
+msgid ""
+" -r Ignored for compatibility with rc\n"
+" -h --help Print this help message\n"
+" -V --version Print version information\n"
+msgstr ""
+" -r rc ile uyumluluk için yok sayılır\n"
+" -h --help Bu yardımı gösterir\n"
+" -V --version Sürüm bilgisini gösterir\n"
+
+#: windres.c:664
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"BİÇEM rc, res, veya coff değerlerinden biri olup, eğer belirtilmezse dosya ismi sonekinden bulunur. Tek bir dosya ismi bir girdi dosyası kabul edilir\n"
+"Girdi dosya ismi verilmezse standart girdi, öntanımlı rc okunur. \n"
+"Çıktı dosya ismi verilmezse standart çıktı, öntanımlı rc okunur.\n"
+
+#: windres.c:800
+msgid "invalid option -f\n"
+msgstr "Geçersiz seçenek -f\n"
+
+#: windres.c:805
+msgid "No filename following the -fo option.\n"
+msgstr "-fo seçeneğinden sonra dosya adı verilmemiş.\n"
+
+#: windres.c:863
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr "Girdi biçemini belirlemek için -I seçeneği artık kullanılmıyor, -J kullanın.\n"
+
+#: windres.c:981
+msgid "no resources"
+msgstr "kaynak yok"
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup başarısız: %s"
+
+#: wrstabs.c:635
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: hatalı boy %u"
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: uyarı: Yapı içinde `%s' alanı için bilinmeyen boy"
+
+#~ msgid ""
+#~ "\n"
+#~ "<member %s>\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "<üye %s>\n"
+#~ "\n"
+
+#~ msgid "cannot stat: %s: %s"
+#~ msgstr "durumlanamadı: %s: %s"
+
+#~ msgid "%s: cannot stat: %s"
+#~ msgstr "%s: durumlanamadı: %s"
+
+#~ msgid "Cannot stat: %s: %s"
+#~ msgstr "Durumlanamadı: %s: %s"
+
+#~ msgid "Out of virtual memory"
+#~ msgstr "Sanal bellek tükendi"
+
+#~ msgid "%s has no %s section"
+#~ msgstr "%s %s bölümü yok"
+
+#~ msgid "Reading %s section of %s failed: %s\n"
+#~ msgstr "%2$s'nin %1$s bölümünün okunması başarısız: %3$s\n"
+
+#~ msgid "Skipping unexpected symbol type %u\n"
+#~ msgstr "beklenmeyen sembol türü %u atlanıyor\n"
+
+#~ msgid "dynamic segment"
+#~ msgstr "dinamik bölüm"
+
+#~ msgid "Cannot stat input file %s.\n"
+#~ msgstr "%s girdi dosyası durumlanamadı.\n"
+
+#~ msgid "%s: rename: %s"
+#~ msgstr "%s: yeniden adlandırma: %s"
+
+#~ msgid "%s: simple_copy: %s"
+#~ msgstr "%s: simple_copy: %s"
+
+#~ msgid "debug_record_variable: no current block"
+#~ msgstr "hata_ayıkla_kayıt_değişken: mevcut blok yok"
+
+#~ msgid "%s: No dynamic symbols"
+#~ msgstr "%s: Dinamik sembol yok"
+
+#~ msgid "64-bit DWARF line info is not supported yet.\n"
+#~ msgstr "64 bitlik DWARF satır bilgisi henüz desteklenmiyor.\n"
+
+#~ msgid "64-bit DWARF pubnames are not supported yet.\n"
+#~ msgstr "64 bitlik DWARF genel isimleri henüz desteklenmiyor\n"
+
+#~ msgid "64-bit DWARF debug info is not supported yet.\n"
+#~ msgstr "64 bitlik DWARF hata ayıklama bilgisi henüz desteklenmiyor.\n"
+
+#~ msgid "64-bit DWARF aranges are not supported yet.\n"
+#~ msgstr "64 bitlik DWARF a-aralıkları henüz desteklenmiyor.\n"
+
+#~ msgid "64-bit DWARF format frames are not supported yet.\n"
+#~ msgstr "64 bitlik DWARF biçem çerçeveleri henüz desteklenmiyor.\n"
+
+#~ msgid ""
+#~ " -h --help Print this help message\n"
+#~ " -V --version Print version information\n"
+#~ msgstr ""
+#~ " -h --help Bu yardımı gösterir\n"
+#~ " -V --version Bu sürüm bilgisini gösterir\n"
+
+#~ msgid ""
+#~ "Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n"
+#~ " [-e executable] [--exe=executable] [--demangle[=style]]\n"
+#~ " [--basenames] [--functions] [addr addr ...]\n"
+#~ msgstr ""
+#~ "Kullanım: %s [-CfsHV] [-b bfd_adı] \n"
+#~ " [--target=bfd_adı] hedef\n"
+#~ " [-e uygulama] [--exe=uygulama] \n"
+#~ " [--demangle[=tarz]] düzeltme tarzı\n"
+#~ " [--basenames] temel isimler\n"
+#~ " [--functions] [adres adres ...] iÅŸlevler\n"
+
+#~ msgid ""
+#~ "Usage: %s [-dhV] [-I bfdname] [-O bfdname] [-T header-file] [-l linker]\n"
+#~ " [--input-target=bfdname] [--output-target=bfdname]\n"
+#~ " [--header-file=file] [--linker=linker] [--debug]\n"
+#~ " [--help] [--version]\n"
+#~ " [in-file [out-file]]\n"
+#~ msgstr ""
+#~ "Kullanım: %s [-dhV] [-I bfd_adı] [-O bfd_adı] [-T başlık-dosyası]\n"
+#~ " [-l bağlayıcı]\n"
+#~ " [--input-target=bfd_adı] girdi dosyası adı\n"
+#~ " [--output-target=bfd_adı] çıktı dosyası adı\n"
+#~ " [--header-file=dosya] başlık dosyası adı\n"
+#~ " [--linker=bağlayıcı] bağlayıcı yazılım adı\n"
+#~ " [--debug] hata ayıklama kipi\n"
+#~ " [--help] bu yardımı gösterir\n"
+#~ " [--version] sürüm bilgisini gösterir\n"
+#~ " [girdi-dosyası [çıktı-dosyası]]\n"
+
+#~ msgid "Usage: %s [OPTION]... [FILE]...\n"
+#~ msgstr "Kullanım: %s [SEÇENEK]... [DOSYA]...\n"
+
+#~ msgid "Usage: %s OPTION... FILE...\n"
+#~ msgstr "Kullanım: %s SEÇENEK... DOSYA...\n"
+
+#~ msgid " Options are:\n"
+#~ msgstr " Seçenekler:\n"
+
+#~ msgid " -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+#~ msgstr " -a veya --all Buna eÅŸit: -h -l -S -s -r -d -V -A -I\n"
+
+#~ msgid " -h or --file-header Display the ELF file header\n"
+#~ msgstr " -h veya --file-header ELF dosyası başlığını gösterir\n"
+
+#~ msgid " -l or --program-headers or --segments\n"
+#~ msgstr " -l veya --program-headers veya --segments\n"
+
+#~ msgid " Display the program headers\n"
+#~ msgstr " Yazılım başlıklarını gösterir\n"
+
+#~ msgid " -S or --section-headers or --sections\n"
+#~ msgstr " -S veya --section-headers veya --sections\n"
+
+#~ msgid " Display the sections' header\n"
+#~ msgstr " Bölüm başlıklarını gösterir\n"
+
+#~ msgid " -e or --headers Equivalent to: -h -l -S\n"
+#~ msgstr " -e veya --headers Buna eÅŸit: -h -l -S\n"
+
+#~ msgid " -s or --syms or --symbols Display the symbol table\n"
+#~ msgstr " -s veya --syms veya --symbols Sembol tablosunu gösterir\n"
+
+#~ msgid " -n or --notes Display the core notes (if present)\n"
+#~ msgstr " -n veya --notes (Eğer varsa) core notlarını gösterir\n"
+
+#~ msgid " -r or --relocs Display the relocations (if present)\n"
+#~ msgstr " -r veya --relocs (Eğer varsa) yer değiştirmeleri gösterir\n"
+
+#~ msgid " -u or --unwind Display the unwind info (if present)\n"
+#~ msgstr " -u veya --unwind (Eğer varsa) geri alma bilgisini gösterir\n"
+
+#~ msgid " -d or --dynamic Display the dynamic segment (if present)\n"
+#~ msgstr " -d veya --dynamic (Eğer varsa) dinamik bölümü gösterir\n"
+
+#~ msgid " -V or --version-info Display the version sections (if present)\n"
+#~ msgstr " -V veya --version-info (Eğer varsa) sürüm bölümlerini gösterir\n"
+
+#~ msgid " -A or --arch-specific Display architecture specific information (if any).\n"
+#~ msgstr " -A veya --arch-specific (Eğer varsa) mimariye özel bilgiyi gösterir.\n"
+
+#~ msgid " -D or --use-dynamic Use the dynamic section info when displaying symbols\n"
+#~ msgstr " -D veya --use-dynamic Sembolleri gösterirken dinamik bölüm bilgisini kullanır\n"
+
+#~ msgid " -x <number> or --hex-dump=<number>\n"
+#~ msgstr " -x <sayı> veya --hex-dump=<sayı>\n"
+
+#~ msgid " Dump the contents of section <number>\n"
+#~ msgstr " <sayı> bölümünün içeriğini gösterir\n"
+
+#~ msgid " -w[liaprmfs] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n"
+#~ msgstr " -w[liaprmfs] veya --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str]\n"
+
+#~ msgid " Display the contents of DWARF2 debug sections\n"
+#~ msgstr " DWARF2 hata ayıklama bölümlerinin içeriğini gösterir\n"
+
+#~ msgid " -i <number> or --instruction-dump=<number>\n"
+#~ msgstr " -i <sayı> veya --instruction-dump=<sayı>\n"
+
+#~ msgid " -I or --histogram Display histogram of bucket list lengths\n"
+#~ msgstr " -I veya --histogram Küme liste uzunluğu geçmiş grafiğini gösterir\n"
+
+#~ msgid " -v or --version Display the version number of readelf\n"
+#~ msgstr " -v veya --version readelf'in sürüm numarasını gösterir\n"
+
+#~ msgid " -W or --wide Don't split lines or truncate symbols to fit into 80 columns\n"
+#~ msgstr " -W veya --wide 80 sütuna sığdırmak için satırları bölmez veya kesmez\n"
+
+#~ msgid " -H or --help Display this information\n"
+#~ msgstr " -H veya --help Bu bilgiyi gösterir\n"
+
+#~ msgid "unexpected dialog signature %d"
+#~ msgstr "beklenmeyen diyalog imzası %d"
+
+#~ msgid ""
+#~ "Usage: %s [-A | --format=sysv | -B | --format=berkeley]\n"
+#~ " [-o | --radix=8 | -d | --radix=10 | -h | --radix=16]\n"
+#~ " [-V | --version] [--target=bfdname] [--help] [file...]\n"
+#~ msgstr ""
+#~ "Kullanım: %s [-A | --format=sysv | -B | --format=berkeley] Biçem\n"
+#~ " [-o | --radix=8 | -d | --radix=10 | -h | --radix=16]\n"
+#~ " [-V | --version] Sürüm\n"
+#~ " [--target=bfd_adı] Hedef\n"
+#~ " [--help] Yardım\n"
+#~ " [dosya...] [dosya]\n"
+
+#~ msgid "default is --format=berkeley\n"
+#~ msgstr "--format=berkeley öntanımlı\n"
+
+#~ msgid "default is --format=sysv\n"
+#~ msgstr "--format=sysv öntanımlı\n"
+
+#~ msgid "Usage: %s [-dhVq] in-file [out-file]\n"
+#~ msgstr "Kullanım: %s [-dhVq] girdi-dosyası [çıktı-dosyası]\n"
+
+#~ msgid ""
+#~ "Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-e {s,b,l,B,L}]\n"
+#~ " [-] [--all] [--print-file-name] [--bytes=min-len] [--radix={o,x,d}]\n"
+#~ " [--target=bfdname] [--encoding {s,b,l,B,L}] [--help] [--version] file...\n"
+#~ msgstr ""
+#~ "Kullanım: %s [-afov] [-n min-uzun] [-min-len] En az uzunluk\n"
+#~ " [-t {o,x,d}] [-e {s,b,l,B,L}] [-]\n"
+#~ " [--all] Hepsi\n"
+#~ " [--print-file-name] Dosya adını yazdırır\n"
+#~ " [--bytes=min-uzun] En az bayt\n"
+#~ " [--radix={o,x,d}]\n"
+#~ " [--target=bfd_adı] Hedef\n"
+#~ " [--encoding {s,b,l,B,L}] Kodlama\n"
+#~ " [--help] Yardım\n"
+#~ " [--version] Sürüm bilgisi\n"
+#~ " dosya... \n"
+
+#~ msgid "Usage: %s [-hV] in-file\n"
+#~ msgstr "Kullanım: %s [-hV] girdi-dosyası\n"
diff --git a/binutils-2.24/binutils/po/uk.gmo b/binutils-2.24/binutils/po/uk.gmo
new file mode 100644
index 00000000..5b91ef98
--- /dev/null
+++ b/binutils-2.24/binutils/po/uk.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/uk.po b/binutils-2.24/binutils/po/uk.po
new file mode 100644
index 00000000..58768680
--- /dev/null
+++ b/binutils-2.24/binutils/po/uk.po
@@ -0,0 +1,8546 @@
+# Translation of binutils to Ukrainian
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+#
+# Maxim V. Dziumanenko <dziumanenko@gmail.com>, 2007.
+# Yuri Chornoivan <yurchor@ukr.net>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.22.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2011-10-25 11:20+0100\n"
+"PO-Revision-Date: 2012-07-28 20:05+0300\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: addr2line.c:81
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "ВикориÑтаннÑ: %s [ключі] [адреÑи]\n"
+
+#: addr2line.c:82
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " Перетворює адреÑи на пари номер_Ñ€Ñдка/назва_файла.\n"
+
+#: addr2line.c:83
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Якщо адреÑи не вказані у командному Ñ€Ñдку, вони читатимутьÑÑ Ð· stdin\n"
+
+#: addr2line.c:84
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -a --addresses Show addresses\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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Make the output easier to read for humans\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Ключі:\n"
+" @<файл> Читати параметри з <файла>\n"
+" -a --addresses Показувати адреÑи\n"
+" -b --target=<bfd-назва> Ð’Ñтановити формат двійкового файла\n"
+" -e --exe=<виконуваний> Ð’Ñтановити назву вхідного файла (типово викориÑтовуєтьÑÑ a.out)\n"
+" -i --inlines Розкрутити inline-функції\n"
+" -j --section=<назва> Читати відноÑні до розділу зÑуви заміÑÑ‚ÑŒ адреÑ\n"
+" -p --pretty-print Зробити виведені дані зручнішим Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ\n"
+" -s --basenames Виділити назви каталогів\n"
+" -f --functions Показати назви функцій\n"
+" -C --demangle[=Ñтиль] Декодувати назви функцій\n"
+" -h --help Показати ці дані\n"
+" -v --version Показати верÑÑ–ÑŽ програми\n"
+"\n"
+
+#: addr2line.c:101 ar.c:304 ar.c:333 coffdump.c:471 dlltool.c:3938
+#: dllwrap.c:524 elfedit.c:653 nlmconv.c:1114 objcopy.c:576 objcopy.c:611
+#: readelf.c:3214 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
+#: windmc.c:228 windres.c:695
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "Звіти про помилки надÑилайте на %s\n"
+
+#. Note for translators: This printf is used to join the
+#. function name just printed above to the line number/
+#. file name pair that is about to be printed below. Eg:
+#.
+#. foo at 123:bar.c
+#: addr2line.c:276
+#, c-format
+msgid " at "
+msgstr " у "
+
+#. Note for translators: This printf is used to join the
+#. line number/file name pair that has just been printed with
+#. the line number/file name pair that is going to be printed
+#. by the next iteration of the while loop. Eg:
+#.
+#. 123:bar.c (inlined by) 456:main.c
+#: addr2line.c:308
+#, c-format
+msgid " (inlined by) "
+msgstr " (вÑередині) "
+
+#: addr2line.c:341
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: неможливо отримати адреÑи з архіву"
+
+#: addr2line.c:358
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr "%s: неможливо знайти розділ: %s"
+
+#: addr2line.c:427 nm.c:1570 objdump.c:3423
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "невідомий Ñтиль Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ `%s'"
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "в архіві відÑутній Ð·Ð°Ð¿Ð¸Ñ %s\n"
+
+#: ar.c:254
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...\n"
+msgstr "ВикориÑтаннÑ: %s [параметри емулÑції] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <назва>] [назва_члена] [лічильник] файл_архіву файл...\n"
+
+#: ar.c:260
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] [count] archive-file file...\n"
+msgstr "ВикориÑтаннÑ: %s [параметри емулÑції] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [назва_члена] [лічильник] файл_архіву файл...\n"
+
+#: ar.c:266
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<Ñценарій mri]\n"
+
+#: ar.c:267
+#, c-format
+msgid " commands:\n"
+msgstr " команди:\n"
+
+#: ar.c:268
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² з архіву\n"
+
+#: ar.c:269
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² у архів\n"
+
+#: ar.c:270
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - вивід файлів, знайдених у архіві\n"
+
+#: ar.c:271
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - швидке Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² до архіву\n"
+
+#: ar.c:272
+#, 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:273
+#, c-format
+msgid " s - act as ranlib\n"
+msgstr " s — працювати у режимі ranlib\n"
+
+#: ar.c:274
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - показати вміÑÑ‚ архіву\n"
+
+#: ar.c:275
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² з архіву\n"
+
+#: ar.c:276
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " оÑобливі модифікатори Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´:\n"
+
+#: ar.c:277
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² піÑÐ»Ñ [назви_члена]\n"
+
+#: ar.c:278
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² до [назви_члена] (те ж Ñаме, що й [i])\n"
+
+#: ar.c:279
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr " [D] - викориÑтовувати нуль Ð´Ð»Ñ Ñ‡Ð°Ñових позначок Ñ– uid/gid\n"
+
+#: ar.c:280
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - викориÑÑ‚Ð°Ð½Ð½Ñ [відліку], Ñк варіанту назви\n"
+
+#: ar.c:281
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð½Ñ Ð½Ð°Ð·Ð² вÑтавлених файлів\n"
+
+#: ar.c:282
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ð½Ð¸Ñ… назв шлÑхів при порівнÑнні\n"
+
+#: ar.c:283
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ñ… дат\n"
+
+#: ar.c:284
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - заміна лише новіших файлів, ніж поточний вміÑÑ‚ архіву\n"
+
+#: ar.c:285
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " звичайні модифікатори:\n"
+
+#: ar.c:286
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - не попереджувати, Ñкщо має бути Ñтворена бібліотека\n"
+
+#: ar.c:287
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ–Ð½Ð´ÐµÐºÑу архіву (cf. ranlib)\n"
+
+#: ar.c:288
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - не Ñтворювати таблицю Ñимволів\n"
+
+#: ar.c:289
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr " [T] - Ñтворити тонкий архів\n"
+
+#: ar.c:290
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - докладний режим\n"
+
+#: ar.c:291
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - вивід номера верÑÑ–Ñ—\n"
+
+#: ar.c:292
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr " @<файл> - читати ключі з <файла>\n"
+
+#: ar.c:293
+#, c-format
+msgid " --target=BFDNAME - specify the target object format as BFDNAME\n"
+msgstr " --target=BFD-назва — вказати Ñк формат об’єкта Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ BFD-назву\n"
+
+#: ar.c:295
+#, c-format
+msgid " optional:\n"
+msgstr " додаткові:\n"
+
+#: ar.c:296
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr " --plugin <p> — завантажити вказаний додаток\n"
+
+#: ar.c:317
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "ВикориÑтаннÑ: %s [ключі] архів\n"
+
+#: ar.c:318
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " Створює Ñ–Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ ÑˆÐ²Ð¸Ð´ÐºÐ¾ÑÑ‚Ñ– доÑтупу до архівів\n"
+
+#: ar.c:319
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+" Ключі:\n"
+" @<файл> Читати ключі з <файла>.\n"
+
+#: ar.c:322
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr " --plugin <назва> Завантажити вказаний додаток\n"
+
+#: ar.c:325
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+" -t Оновити чаÑову позначку карти Ñимволів архіву\n"
+" -h --help ВивеÑти це довідкове повідомленнÑ\n"
+" -v --version ВивеÑти дані щодо верÑÑ–Ñ—\n"
+
+#: ar.c:449
+msgid "two different operation options specified"
+msgstr "вказані ключі Ð´Ð»Ñ Ð´Ð²Ð¾Ñ… різних операцій"
+
+#: ar.c:538 nm.c:1643
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr "Вибачте, цю програму було зібрано без підтримки додатків.\n"
+
+#: ar.c:693
+msgid "no operation specified"
+msgstr "Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð½Ðµ вказана"
+
+#: ar.c:696
+msgid "`u' is only meaningful with the `r' option."
+msgstr "`u' має Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð»Ð¸ÑˆÐµ з ключем `r'."
+
+#: ar.c:699
+msgid "`u' is not meaningful with the `D' option."
+msgstr "`u' не матиме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð· `D'."
+
+#: ar.c:707
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "`N' має Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð»Ð¸ÑˆÐµ з ключами `x' та `d'."
+
+#: ar.c:710
+msgid "Value for `N' must be positive."
+msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ `N' має бути додатнім."
+
+#: ar.c:724
+msgid "`x' cannot be used on thin archives."
+msgstr "`x' не можна викориÑтовувати Ð´Ð»Ñ Ñ‚Ð¾Ð½ÐºÐ¸Ñ… архівів."
+
+#: ar.c:771
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° -- цей ключ не реалізований"
+
+#: ar.c:840
+#, c-format
+msgid "creating %s"
+msgstr "ÑтворюєтьÑÑ %s"
+
+#: ar.c:889 ar.c:943 ar.c:1272 objcopy.c:2080
+#, c-format
+msgid "internal stat error on %s"
+msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° stat на %s"
+
+#: ar.c:908 ar.c:976
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s не є правильним архівом"
+
+#: ar.c:1034
+msgid "could not create temporary file whilst writing archive"
+msgstr "не вдалоÑÑ Ñтворити тимчаÑовий файл під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñу архіву"
+
+#: ar.c:1177
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "Ðемає члена з назвою `%s'\n"
+
+#: ar.c:1227
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "пункт %s відÑутній у архіві %s!"
+
+#: ar.c:1366
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: немає карти архіву Ð´Ð»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "пункт %s відÑутній у архіві.\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "Ðеможливо відкрити файл %s\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: Ðеможливо відкрити архів Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ %s\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: Ðеможливо відкрити вхідний архів %s\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: файл %s не є архівом\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: архів Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ ще не вказаний\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: немає відкритого архіву Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: неможливо відкрити файл %s\n"
+
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: неможливо знайти файл Ð¼Ð¾Ð´ÑƒÐ»Ñ %s\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "Поточний відкритий архів - %s\n"
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: немає відкритого архіву\n"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " Ðе вказані Ñпецифічні Ð´Ð»Ñ ÐµÐ¼ÑƒÐ»Ñції параметри\n"
+
+#. Macros for common output.
+#: binemul.h:49
+#, c-format
+msgid " emulation options: \n"
+msgstr " ключі емулÑції: \n"
+
+#: bucomm.c:163
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "неможливо вÑтановити типову ціль BFD на `%s': %s"
+
+#: bucomm.c:175
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: Формати відповідноÑÑ‚Ñ–:"
+
+#: bucomm.c:190
+#, c-format
+msgid "Supported targets:"
+msgstr "Підтримувані цілі:"
+
+#: bucomm.c:192
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: підтримувані цілі:"
+
+#: bucomm.c:210
+#, c-format
+msgid "Supported architectures:"
+msgstr "Підтримувані архітектури:"
+
+#: bucomm.c:212
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: підтримувані архітектури:"
+
+#: bucomm.c:228
+msgid "big endian"
+msgstr "зворотний порÑдок"
+
+#: bucomm.c:229
+msgid "little endian"
+msgstr "прÑмий порÑдок"
+
+#: bucomm.c:230
+msgid "endianness unknown"
+msgstr "невідомий порÑдок"
+
+#: bucomm.c:251
+#, c-format
+msgid ""
+"%s\n"
+" (header %s, data %s)\n"
+msgstr ""
+"%s\n"
+" (заголовок %s, дані %s)\n"
+
+#: bucomm.c:407
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "Файл заголовка BFD верÑÑ–Ñ— %s\n"
+
+#: bucomm.c:559
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: некоректне чиÑло: %s"
+
+#: bucomm.c:576 strings.c:409
+#, c-format
+msgid "'%s': No such file"
+msgstr "'%s': Такий файл відÑутній"
+
+#: bucomm.c:578 strings.c:411
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "ПопередженнÑ: неможливо знайти '%s'. Причина: %s"
+
+#: bucomm.c:582
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "ПопередженнÑ: '%s' не Ñ” звичайним файлом"
+
+#: bucomm.c:584
+#, c-format
+msgid "Warning: '%s' has negative size, probably it is too large"
+msgstr "ПопередженнÑ: «%s» має від’ємний розмір, ймовірно Ñ” надто великим."
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr "#Ñ€Ñдки %d "
+
+#: coffdump.c:130
+#, c-format
+msgid "size %d "
+msgstr "розмір %d "
+
+#: coffdump.c:135
+#, c-format
+msgid "section definition at %x size %x\n"
+msgstr "Ð¾Ð¿Ð¸Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ у %x, розмір %x\n"
+
+#: coffdump.c:141
+#, c-format
+msgid "pointer to"
+msgstr "вказівник на"
+
+#: coffdump.c:146
+#, c-format
+msgid "array [%d] of"
+msgstr "маÑив [%d] з"
+
+#: coffdump.c:151
+#, c-format
+msgid "function returning"
+msgstr "функціÑ, що повертає"
+
+#: coffdump.c:155
+#, c-format
+msgid "arguments"
+msgstr "аргументи"
+
+#: coffdump.c:159
+#, c-format
+msgid "code"
+msgstr "код"
+
+#: coffdump.c:165
+#, c-format
+msgid "structure definition"
+msgstr "Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñтруктури"
+
+#: coffdump.c:171
+#, c-format
+msgid "structure ref to UNKNOWN struct"
+msgstr "поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñтруктури на ÐЕВІДОМУ Ñтруктуру"
+
+#: coffdump.c:173
+#, c-format
+msgid "structure ref to %s"
+msgstr "поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñтруктури на %s"
+
+#: coffdump.c:176
+#, c-format
+msgid "enum ref to %s"
+msgstr "поÑÐ¸Ð»Ð°Ð½Ð½Ñ enum на %s"
+
+#: coffdump.c:179
+#, c-format
+msgid "enum definition"
+msgstr "Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ»Ñ–ÐºÑƒ (enum)"
+
+#: coffdump.c:252
+#, c-format
+msgid "Stack offset %x"
+msgstr "ВідÑтуп у Ñтеку %x"
+
+#: coffdump.c:255
+#, c-format
+msgid "Memory section %s+%x"
+msgstr "Розділ пам’ÑÑ‚Ñ– %s+%x"
+
+#: coffdump.c:258
+#, c-format
+msgid "Register %d"
+msgstr "РегіÑÑ‚Ñ€ %d"
+
+#: coffdump.c:261
+#, c-format
+msgid "Struct Member offset %x"
+msgstr "ВідÑтуп члена Ñтруктури %x"
+
+#: coffdump.c:264
+#, c-format
+msgid "Enum Member offset %x"
+msgstr "ВідÑтуп члена переліку %x"
+
+#: coffdump.c:267
+#, c-format
+msgid "Undefined symbol"
+msgstr "Ðевизначений Ñимвол"
+
+#: coffdump.c:334
+#, c-format
+msgid "List of symbols"
+msgstr "СпиÑок Ñимволів"
+
+#: coffdump.c:341
+#, c-format
+msgid "Symbol %s, tag %d, number %d"
+msgstr "Символ %s, теґ %d, номер %d"
+
+#: coffdump.c:345 readelf.c:12215 readelf.c:12289
+#, c-format
+msgid "Type"
+msgstr "Тип"
+
+#: coffdump.c:350
+#, c-format
+msgid "Where"
+msgstr "МіÑце"
+
+#: coffdump.c:354
+#, c-format
+msgid "Visible"
+msgstr "Видимий"
+
+#: coffdump.c:370
+msgid "List of blocks "
+msgstr "СпиÑок блоків "
+
+#: coffdump.c:383
+#, c-format
+msgid "vars %d"
+msgstr "змінні %d"
+
+#: coffdump.c:386
+#, c-format
+msgid "blocks"
+msgstr "блоки"
+
+#: coffdump.c:404
+#, c-format
+msgid "List of source files"
+msgstr "СпиÑок файлів початкових кодів"
+
+#: coffdump.c:410
+#, c-format
+msgid "Source file %s"
+msgstr "Файл коду %s"
+
+#: coffdump.c:424
+#, c-format
+msgid "section %s %d %d address %x size %x number %d nrelocs %d"
+msgstr "розділ %s %d %d адреÑа %x розмір %x номер %d к-Ñ‚ÑŒ переÑувань %d"
+
+#: coffdump.c:449
+#, c-format
+msgid "#sources %d"
+msgstr "#джерела %d"
+
+#: coffdump.c:462 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "ВикориÑтаннÑ: %s [ключі] вх-файл\n"
+
+#: coffdump.c:463
+#, c-format
+msgid " Print a human readable interpretation of a COFF object file\n"
+msgstr " Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ð¿Ñ€ÐµÑ‚Ð°Ñ†Ñ–Ñ— об'єктного файла COFF у зрозумілій людині формі\n"
+
+#: coffdump.c:464
+#, 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:533 srconv.c:1833 sysdump.c:710
+msgid "no input file specified"
+msgstr "не вказаний вхідний файл"
+
+#: cxxfilt.c:119 nm.c:269 objdump.c:281
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Звіти про помилки надÑилайте у %s\n"
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: немає поточного файла"
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: немає виклику debug_set_filename"
+
+#: debug.c:781
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: немає виклику debug_set_filename"
+
+#: debug.c:833
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: немає поточної функції"
+
+#: debug.c:865
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: немає поточної функції"
+
+#: debug.c:871
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: деÑкі блоки не були закриті"
+
+#: debug.c:899
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: немає поточного блоку"
+
+#: debug.c:935
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: немає поточного блоку"
+
+#: debug.c:942
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: Ñпроба закрити блок верхнього рівнÑ"
+
+#: debug.c:965
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: немає поточного модулÑ"
+
+#. FIXME
+#: debug.c:1018
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: не виконаний"
+
+#. FIXME
+#: debug.c:1029
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: не виконаний"
+
+#. FIXME.
+#: debug.c:1113
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: не виконаний"
+
+#: debug.c:1135
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: немає поточного файла"
+
+#: debug.c:1663
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: непідтримуваний тип"
+
+#: debug.c:1840
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: немає поточного файла"
+
+#: debug.c:1885
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: немає поточного файла"
+
+#: debug.c:1893
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: випробуваний додатковий тег"
+
+#: debug.c:1930
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "ПопередженнÑ: змінюєтьÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ типу з %d на %d\n"
+
+#: debug.c:1952
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: немає поточного Ð¼Ð¾Ð´ÑƒÐ»Ñ ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñції"
+
+#: debug.c:2055
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: циклічна діагноÑтична Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð´Ð»Ñ %s\n"
+
+#: debug.c:2482
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type: виÑвлено некоректний тип"
+
+#: dlltool.c:902 dlltool.c:928 dlltool.c:959
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: невідомий тип машини: %d"
+
+#: dlltool.c:1000
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Ðеможливо відкрити файл def: %s"
+
+#: dlltool.c:1005
+#, c-format
+msgid "Processing def file: %s"
+msgstr "ОброблюєтьÑÑ Ñ„Ð°Ð¹Ð» def: %s"
+
+#: dlltool.c:1009
+msgid "Processed def file"
+msgstr "Оброблено файл def"
+
+#: dlltool.c:1033
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "Помилка ÑинтакÑиÑу у файлі def %s:%d"
+
+#: dlltool.c:1070
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr "%s: Компоненти шлÑху, що отримані з назви зображеннÑ, '%s'."
+
+#: dlltool.c:1088
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "NAME: %s base: %x"
+
+#: dlltool.c:1091 dlltool.c:1112
+msgid "Can't have LIBRARY and NAME"
+msgstr "LIBRARY та NAME не можуть викориÑтовуватиÑÑŒ одночаÑно"
+
+#: dlltool.c:1109
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "LIBRARY: %s база: %x"
+
+#: dlltool.c:1266
+#, c-format
+msgid "VERSION %d.%d\n"
+msgstr "ВЕРСІЯ %d.%d\n"
+
+#: dlltool.c:1314
+#, c-format
+msgid "run: %s %s"
+msgstr "запуÑк: %s %s"
+
+#: dlltool.c:1354 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "очікуваннÑ: %s"
+
+#: dlltool.c:1359 dllwrap.c:422 resrc.c:298
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "Ð¿Ñ–Ð´Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð² критичний Ñигнал %d"
+
+#: dlltool.c:1365 dllwrap.c:429 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s завершений зі ÑтатуÑом %d"
+
+#: dlltool.c:1396
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "ОтримуєтьÑÑ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð· розділу %s в %s"
+
+#: dlltool.c:1536
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Символ виключеннÑ: %s"
+
+#: dlltool.c:1625 dlltool.c:1636 nm.c:1012 nm.c:1023
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s: немає Ñимволів"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1662
+#, c-format
+msgid "Done reading %s"
+msgstr "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð¾ %s"
+
+#: dlltool.c:1672
+#, c-format
+msgid "Unable to open object file: %s: %s"
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ об’єктний файл: %s: %s"
+
+#: dlltool.c:1675
+#, c-format
+msgid "Scanning object file %s"
+msgstr "СкануєтьÑÑ Ð¾Ð±'єктний файл %s"
+
+#: dlltool.c:1690
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "Ðеможливо Ñформувати mcore-elf dll з файла архіву: %s"
+
+#: dlltool.c:1792
+msgid "Adding exports to output file"
+msgstr "ЕкÑпортні дані додаютьÑÑ Ñƒ файл Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ"
+
+#: dlltool.c:1844
+msgid "Added exports to output file"
+msgstr "ЕкÑпортні дані додані у файл Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ"
+
+#: dlltool.c:1986
+#, c-format
+msgid "Generating export file: %s"
+msgstr "СтворюєтьÑÑ Ñ„Ð°Ð¹Ð» екÑпорту: %s"
+
+#: dlltool.c:1991
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "Ðеможливо відкрити тимчаÑовий файл аÑемблера: %s"
+
+#: dlltool.c:1994
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "Відкритий тимчаÑовий файл: %s"
+
+#: dlltool.c:2171
+msgid "failed to read the number of entries from base file"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ кількіÑÑ‚ÑŒ запиÑів з оÑновного файла"
+
+#: dlltool.c:2219
+msgid "Generated exports file"
+msgstr "Створено файл екÑпорту"
+
+#: dlltool.c:2428
+#, c-format
+msgid "bfd_open failed open stub file: %s: %s"
+msgstr "bfd_open не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл stub: %s: %s"
+
+#: dlltool.c:2432
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "СтворюєтьÑÑ Ñ„Ð°Ð¹Ð» stub: %s"
+
+#: dlltool.c:2894
+#, c-format
+msgid "bfd_open failed reopen stub file: %s: %s"
+msgstr "bfd_open не вдалоÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ відкрити файл stub: %s: %s"
+
+#: dlltool.c:2908 dlltool.c:2984
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "помилка при відкриванні тимчаÑового файла заголовка: %s"
+
+#: dlltool.c:2970 dlltool.c:3050
+#, c-format
+msgid "failed to open temporary head file: %s: %s"
+msgstr "помилка при відкриванні тимчаÑового файла заголовка: %s: %s"
+
+#: dlltool.c:3064
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "помилка при відкриванні тимчаÑового кінцевого файла: %s"
+
+#: dlltool.c:3121
+#, c-format
+msgid "failed to open temporary tail file: %s: %s"
+msgstr "помилка при відкриванні тимчаÑового кінцевого файла: %s: %s"
+
+#: dlltool.c:3143
+#, c-format
+msgid "Can't create .lib file: %s: %s"
+msgstr "Ðе вдалоÑÑ Ñтворити файл .lib: %s: %s"
+
+#: dlltool.c:3147
+#, c-format
+msgid "Creating library file: %s"
+msgstr "СтворюєтьÑÑ Ñ„Ð°Ð¹Ð» бібліотеки: %s"
+
+#: dlltool.c:3239 dlltool.c:3245
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "неможливо видалити %s: %s"
+
+#: dlltool.c:3250
+msgid "Created lib file"
+msgstr "Створено lib-файл"
+
+#: dlltool.c:3462
+#, c-format
+msgid "Can't open .lib file: %s: %s"
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл .lib: %s: %s"
+
+#: dlltool.c:3470 dlltool.c:3492
+#, c-format
+msgid "%s is not a library"
+msgstr "%s не є бібліотекою"
+
+#: dlltool.c:3510
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr "У імпортованій бібліотеці «%s» визначено дві або більше dll"
+
+#: dlltool.c:3521
+#, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ назву dll Ð´Ð»Ñ Â«%s» (не Ñ” імпортованою бібліотекою?)"
+
+#: dlltool.c:3745
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "ПопередженнÑ, пропуÑкаєтьÑÑ Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚ EXPORT %s %d,%d"
+
+#: dlltool.c:3751
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr "Помилка, EXPORT повторюєтьÑÑ Ð· порÑдковими чиÑлівниками: %s"
+
+#: dlltool.c:3856
+msgid "Processing definitions"
+msgstr "ОброблюютьÑÑ Ð¾Ð¿Ð¸Ñи"
+
+#: dlltool.c:3888
+msgid "Processed definitions"
+msgstr "ОпиÑи оброблені"
+
+#. xgetext:c-format
+#: dlltool.c:3895 dllwrap.c:483
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ %s <ключі> <об'єктні_файли>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3897
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <машина> Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñк DLL Ð´Ð»Ñ <машини>. [типово: %s]\n"
+
+#: dlltool.c:3898
+#, 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:3899
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <вих_назва> Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° екÑпорту.\n"
+
+#: dlltool.c:3900
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <вих_назва> Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ інтерфейÑу.\n"
+
+#: dlltool.c:3901
+#, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr " -y --output-delaylib <вих_назва> Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ відкладеного імпортуваннÑ.\n"
+
+#: dlltool.c:3902
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð½ÐµÐ¿Ñ€Ñмих dll у файл екÑпорту.\n"
+
+#: dlltool.c:3903
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr " -D --dllname <назва> Ðазва вхідної dll Ð´Ð»Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñƒ бібліотеці інтерфейÑу.\n"
+
+#: dlltool.c:3904
+#, 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:3905
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <def-файл> Ðазва файла .def, що ÑтворюєтьÑÑ.\n"
+
+#: dlltool.c:3906
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols ЕкÑпорт вÑÑ–Ñ… Ñимволів у .def\n"
+
+#: dlltool.c:3907
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols ЕкÑпорт лише перелічених Ñимволів\n"
+
+#: dlltool.c:3908
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <ÑпиÑок> Ðе екÑпортувати <ÑпиÑок>\n"
+
+#: dlltool.c:3909
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes ÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… Ñимволів виключеннÑ\n"
+
+#: dlltool.c:3910
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <base-файл> Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñтвореного компонувальником base-файла.\n"
+
+#: dlltool.c:3911
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 Ðе Ñтворювати розділ idata$4.\n"
+
+#: dlltool.c:3912
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 Ðе Ñтворювати розділ idata$5.\n"
+
+#: dlltool.c:3913
+#, c-format
+msgid " --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"
+msgstr " --use-nul-prefixed-import-tables ВикориÑтовувати idata$4 Ñ– idata$5 з порожніми префікÑами.\n"
+
+#: dlltool.c:3914
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr " -U --add-underscore Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñимволів підкреÑÐ»ÐµÐ½Ð½Ñ Ð´Ð¾ уÑÑ–Ñ… Ñимволів у бібліотеці інтерфейÑу.\n"
+
+#: dlltool.c:3915
+#, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr " --add-stdcall-underscore Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñимволів підкреÑÐ»ÐµÐ½Ð½Ñ stdcall-Ñимволів у бібліотеці інтерфейÑу.\n"
+
+#: dlltool.c:3916
+#, c-format
+msgid " --no-leading-underscore All symbols shouldn't be prefixed by an underscore.\n"
+msgstr " --no-leading-underscore Ð’ÑÑ– Ñимволи не повинні починатиÑÑ Ð· підкреÑлюваннÑ.\n"
+
+#: dlltool.c:3917
+#, c-format
+msgid " --leading-underscore All symbols should be prefixed by an underscore.\n"
+msgstr " --leading-underscore Ð’ÑÑ– Ñимволи мають починатиÑÑ Ð· підкреÑлюваннÑ.\n"
+
+#: dlltool.c:3918
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ @<n> з екÑпортованих назв.\n"
+
+#: dlltool.c:3919
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ñевдонімів без @<n>.\n"
+
+#: dlltool.c:3920
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -p --ext-prefix-alias <префікÑ> Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ñевдонімів з <префікÑом>.\n"
+
+#: dlltool.c:3921
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <назва> ВикориÑÑ‚Ð°Ð½Ð½Ñ <назви> Ð´Ð»Ñ Ð°Ñемблера.\n"
+
+#: dlltool.c:3922
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <ключі> Передача <ключів> в аÑемблер.\n"
+
+#: dlltool.c:3923
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ імпорту із зворотною ÑуміÑніÑÑ‚ÑŽ.\n"
+
+#: dlltool.c:3924
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete Залишати тимчаÑові файли (повтор Ð´Ð»Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ захиÑту).\n"
+
+#: dlltool.c:3925
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr " -t --temp-prefix <префікÑ> ВикориÑÑ‚Ð°Ð½Ð½Ñ <префікÑу> Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð°Ð·Ð² чаÑових файлів.\n"
+
+#: dlltool.c:3926
+#, c-format
+msgid " -I --identify <implib> Report the name of the DLL associated with <implib>.\n"
+msgstr " -I --identify <імпбібл> Повідомити про назву DLL, пов’Ñзаної з <імпбібл>.\n"
+
+#: dlltool.c:3927
+#, c-format
+msgid " --identify-strict Causes --identify to report error when multiple DLLs.\n"
+msgstr " --identify-strict Змушує --identify повідомлÑти про помилку, Ñкщо визначено декілька DLL.\n"
+
+#: dlltool.c:3928
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose Режим з докладним виводом.\n"
+
+#: dlltool.c:3929
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— програми.\n"
+
+#: dlltool.c:3930
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— інформації.\n"
+
+#: dlltool.c:3931
+#, c-format
+msgid " @<file> Read options from <file>.\n"
+msgstr " @<файл> Читати ключі з <файла>.\n"
+
+#: dlltool.c:3933
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr " -M --mcore-elf <вих_назва> Обробка об'єктного файла mcore-elf у <вих_назва>.\n"
+
+#: dlltool.c:3934
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <назва> ВикориÑÑ‚Ð°Ð½Ð½Ñ <назви> у ÑкоÑÑ‚Ñ– компонувальника.\n"
+
+#: dlltool.c:3935
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <ознаки> Передача <ознак> компонувальнику.\n"
+
+#: dlltool.c:4082
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr "Компоненти шлÑху, що отримані з назви dll, '%s'."
+
+#: dlltool.c:4130
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Ðеможливо відкрити base-файл: %s"
+
+#: dlltool.c:4165
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Машина '%s' не підтримуєтьÑÑ"
+
+#: dlltool.c:4245
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr "ПопередженнÑ, не передбачено підтримки типу архітектури (%d) Ð´Ð»Ñ Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ імпортуваннÑ."
+
+#: dlltool.c:4313 dllwrap.c:213
+#, c-format
+msgid "Tried file: %s"
+msgstr "Випробуваний файл: %s"
+
+#: dlltool.c:4320 dllwrap.c:220
+#, c-format
+msgid "Using file: %s"
+msgstr "ВикориÑтовуєтьÑÑ Ñ„Ð°Ð¹Ð»: %s"
+
+#: dllwrap.c:303
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "Ð’ÑтавлÑєтьÑÑ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñовий base-файл %s"
+
+#: dllwrap.c:305
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "ВидалÑєтьÑÑ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñовий base-файл %s"
+
+#: dllwrap.c:319
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "ЗалишаєтьÑÑ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñовий exp-файл %s"
+
+#: dllwrap.c:321
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "ВидалÑєтьÑÑ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñовий exp-файл %s"
+
+#: dllwrap.c:334
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "ЗалишаєтьÑÑ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñовий def-файл %s"
+
+#: dllwrap.c:336
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "ВидалÑєтьÑÑ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñовий def-файл %s"
+
+#: dllwrap.c:417
+#, c-format
+msgid "pwait returns: %s"
+msgstr "pwait повернуто: %s"
+
+#: dllwrap.c:484
+#, c-format
+msgid " Generic options:\n"
+msgstr " Загальні ключі:\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " @<file> Read options from <file>\n"
+msgstr " @<файл> Читати ключі з <файла>\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q Мовчазний режим\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Докладний режим\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— dllwrap\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <вих_назва> Синонім Ð´Ð»Ñ --output-lib\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Ключі Ð´Ð»Ñ %s:\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <драйвер> Типові Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"gcc\"\n"
+
+#: dllwrap.c:492
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <ознаки> Типові Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ñ–Ð² ld\n"
+
+#: dllwrap.c:493
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dlltool> Типові Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"dlltool\"\n"
+
+#: dllwrap.c:494
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <пункт> Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ñ— точки входу DLL\n"
+
+#: dllwrap.c:495
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <base> Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ адреÑа образа\n"
+
+#: dllwrap.c:496
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <машина> i386-cygwin32 або i386-mingw32\n"
+
+#: dllwrap.c:497
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run Показати, що повинно бути запущено\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Mingw DLL\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " Ключі, що передаютьÑÑ Ñƒ DLLTOOL:\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <машина>\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <вих_назва> Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° екÑпорту.\n"
+
+#: dllwrap.c:502
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <вих_назва> Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ñ— бібліотеки.\n"
+
+#: dllwrap.c:503
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð½ÐµÐ¿Ñ€Ñмих dll у файл екÑпорту.\n"
+
+#: dllwrap.c:504
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <назва> Ðазва вхідної dll Ð´Ð»Ñ Ð²ÑтавлÑÐ½Ð½Ñ Ñƒ бібліотеку Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ.\n"
+
+#: dllwrap.c:505
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <def-файл> Ðазва вхідного файла .def\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <def-файл> Ðазва файла виводу .def\n"
+
+#: dllwrap.c:507
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols ЕкÑпорт вÑÑ–Ñ… Ñимволів у .def\n"
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols ЕкÑпорт лише Ñимволів .drectve\n"
+
+#: dllwrap.c:509
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <ÑпиÑок> Виключити <ÑпиÑок> з .def\n"
+
+#: dllwrap.c:510
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… Ñимволів виключеннÑ\n"
+
+#: dllwrap.c:511
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr " --base-file <base-файл> Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñтвореного компонувальником base-файла.\n"
+
+#: dllwrap.c:512
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 Ðе Ñтворювати розділ idata$4.\n"
+
+#: dllwrap.c:513
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 Ðе Ñтворювати розділ idata$5.\n"
+
+#: dllwrap.c:514
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ñимволів підкреÑÐ»ÐµÐ½Ð½Ñ Ð² .lib\n"
+
+#: dllwrap.c:515
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ @<n> з екÑпортованих назв.\n"
+
+#: dllwrap.c:516
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ñевдонімів без @<n>\n"
+
+#: dllwrap.c:517
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <назва> ВикориÑÑ‚Ð°Ð½Ð½Ñ <назви> Ð´Ð»Ñ Ð°Ñемблера\n"
+
+#: dllwrap.c:518
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete Залишати тимчаÑові файли.\n"
+
+#: dllwrap.c:519
+#, c-format
+msgid " --no-leading-underscore Entrypoint without underscore\n"
+msgstr " --no-leading-underscore Точка Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð±ÐµÐ· підкреÑлюваннÑ\n"
+
+#: dllwrap.c:520
+#, c-format
+msgid " --leading-underscore Entrypoint with underscore.\n"
+msgstr " --leading-underscore Точка Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð· підкреÑлюваннÑм.\n"
+
+#: dllwrap.c:521
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " Решта без змін передано драйверу мови\n"
+
+#: dllwrap.c:805
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "Потрібно надати принаймні один з параметрів -o або --dllname"
+
+#: dllwrap.c:834
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"не наданий файл опиÑу екÑпорту.\n"
+"Він ÑтворюєтьÑÑ, але це може бути не те, що вам потрібно"
+
+#: dllwrap.c:1023
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "DLLTOOL назва : %s\n"
+
+#: dllwrap.c:1024
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "DLLTOOL ключі : %s\n"
+
+#: dllwrap.c:1025
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "DRIVER назва : %s\n"
+
+#: dllwrap.c:1026
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "DRIVER ключі : %s\n"
+
+#: dwarf.c:132
+msgid "Wrong size in print_dwarf_vma"
+msgstr "Помилковий розмір у print_dwarf_vma"
+
+#: dwarf.c:256 dwarf.c:3027
+msgid "badly formed extended line op encountered!\n"
+msgstr "виÑвлено неправильно Ñформований розширений line-up!\n"
+
+#: dwarf.c:263
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " Розширений код операції %d: "
+
+#: dwarf.c:268
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Кінець поÑлідовноÑÑ‚Ñ–\n"
+"\n"
+
+#: dwarf.c:274
+#, c-format
+msgid "set Address to 0x%s\n"
+msgstr "вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð°Ð´Ñ€ÐµÑи у 0x%s\n"
+
+#: dwarf.c:280
+#, c-format
+msgid " define new File Table entry\n"
+msgstr " Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ пункту таблиці файлів\n"
+
+#: dwarf.c:281 dwarf.c:2555
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Пункт\tКаталог\tЧаÑ\tРозмір\tÐазва\n"
+
+#: dwarf.c:295
+#, c-format
+msgid "set Discriminator to %s\n"
+msgstr "вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Discriminator (розрізненнÑ) Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s\n"
+
+#: dwarf.c:370
+#, c-format
+msgid " UNKNOWN DW_LNE_HP_SFC opcode (%u)\n"
+msgstr " ÐЕВІДОМИЙ код операції DW_LNE_HP_SFC (%u)\n"
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:387
+#, c-format
+msgid "user defined: "
+msgstr "визначений кориÑтувачем: "
+
+#: dwarf.c:389
+#, c-format
+msgid "UNKNOWN: "
+msgstr "ÐЕВІДОМИЙ: "
+
+#: dwarf.c:390
+#, c-format
+msgid "length %d ["
+msgstr "довжина %d ["
+
+#: dwarf.c:407
+msgid "<no .debug_str section>"
+msgstr "<немає розділу .debug_str>"
+
+#: dwarf.c:413
+#, c-format
+msgid "DW_FORM_strp offset too big: %s\n"
+msgstr "Ðадто великий зÑув DW_FORM_strp: %s\n"
+
+#: dwarf.c:415
+msgid "<offset is too big>"
+msgstr "<надто великий зÑув>"
+
+#: dwarf.c:655
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Ðевідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ TAG: %lx"
+
+#: dwarf.c:696
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Ðевідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ FORM: %lx"
+
+#: dwarf.c:705
+#, c-format
+msgid " %s byte block: "
+msgstr " байтовий блок %s: "
+
+#: dwarf.c:1050
+#, c-format
+msgid "(DW_OP_call_ref in frame info)"
+msgstr "(DW_OP_call_ref у даних кадру)"
+
+#: dwarf.c:1075
+#, c-format
+msgid "size: %s "
+msgstr "розмір: %s"
+
+#: dwarf.c:1078
+#, c-format
+msgid "offset: %s "
+msgstr "зÑув: %s "
+
+#: dwarf.c:1098
+#, c-format
+msgid "DW_OP_GNU_push_tls_address or DW_OP_HP_unknown"
+msgstr "DW_OP_GNU_push_tls_address або DW_OP_HP_unknown"
+
+#: dwarf.c:1122
+#, c-format
+msgid "(DW_OP_GNU_implicit_pointer in frame info)"
+msgstr "(DW_OP_GNU_implicit_pointer у даних кадру)"
+
+#: dwarf.c:1234
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Визначене кориÑтувачем Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ—)"
+
+#: dwarf.c:1236
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Ðевідоме Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ—)"
+
+#: dwarf.c:1283
+msgid "Internal error: DWARF version is not 2, 3 or 4.\n"
+msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: номер верÑÑ–Ñ— DWARF не дорівнює 2, 3 або 4.\n"
+
+#: dwarf.c:1389
+msgid "DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"
+msgstr "Ðе передбачено підтримки DW_FORM_data8, Ñкщо розмір (dwarf_vma) != 8\n"
+
+#: dwarf.c:1439
+#, c-format
+msgid " (indirect string, offset: 0x%s): %s"
+msgstr " (опоÑередкований Ñ€Ñдок, зÑув: 0x%s): %s"
+
+#: dwarf.c:1464
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Ðевідома форма: %lu\n"
+
+#: dwarf.c:1557
+#, c-format
+msgid "(not inlined)"
+msgstr "(не вÑередині Ñ€Ñдка)"
+
+#: dwarf.c:1560
+#, c-format
+msgid "(inlined)"
+msgstr "(вÑередині Ñ€Ñдка)"
+
+#: dwarf.c:1563
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(оголошений Ñк inline, але пропущений)"
+
+#: dwarf.c:1566
+#, c-format
+msgid "(declared as inline and inlined)"
+msgstr "(оголошений Ñк inline, так Ñ– Ñ”)"
+
+#: dwarf.c:1569
+#, c-format
+msgid " (Unknown inline attribute value: %s)"
+msgstr " (Ðевідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð±ÑƒÐ´Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ атрибута: %s)"
+
+#: dwarf.c:1608
+#, c-format
+msgid "(implementation defined: %s)"
+msgstr "(визначено реалізацією: %s)"
+
+#: dwarf.c:1611
+#, c-format
+msgid "(Unknown: %s)"
+msgstr "(Ðевідомо: %s)"
+
+#: dwarf.c:1649
+#, c-format
+msgid "(user defined type)"
+msgstr "(визначений кориÑтувачем тип)"
+
+#: dwarf.c:1651
+#, c-format
+msgid "(unknown type)"
+msgstr "(невідомий тип)"
+
+#: dwarf.c:1663
+#, c-format
+msgid "(unknown accessibility)"
+msgstr "(невідома доÑтупніÑÑ‚ÑŒ)"
+
+#: dwarf.c:1674
+#, c-format
+msgid "(unknown visibility)"
+msgstr "(невідома видиміÑÑ‚ÑŒ)"
+
+#: dwarf.c:1684
+#, c-format
+msgid "(unknown virtuality)"
+msgstr "(невідома віртуальніÑÑ‚ÑŒ)"
+
+#: dwarf.c:1695
+#, c-format
+msgid "(unknown case)"
+msgstr "(невідомий випадок)"
+
+#: dwarf.c:1708
+#, c-format
+msgid "(user defined)"
+msgstr "(визначено кориÑтувачем)"
+
+#: dwarf.c:1710
+#, c-format
+msgid "(unknown convention)"
+msgstr "(невідома угода)"
+
+#: dwarf.c:1717
+#, c-format
+msgid "(undefined)"
+msgstr "(не визначено)"
+
+#: dwarf.c:1740
+#, c-format
+msgid "(location list)"
+msgstr "(ÑпиÑок розташуваннÑ)"
+
+#: dwarf.c:1761 dwarf.c:4045
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [без DW_AT_frame_base]"
+
+#: dwarf.c:1777
+#, c-format
+msgid "Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr "ЗÑув %s, викориÑтаний Ñк Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° DW_AT_import DIE за зÑувом %lx, Ñ” надто великим.\n"
+
+#: dwarf.c:1787
+#, c-format
+msgid "[Abbrev Number: %ld"
+msgstr "[Ðомер абревіатури: %ld"
+
+#: dwarf.c:1978
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Ðевідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ AT: %lx "
+
+#: dwarf.c:2049
+#, c-format
+msgid "Reserved length value (0x%s) found in section %s\n"
+msgstr "ВиÑвлено зарезервоване Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ (0x%s) у розділі %s\n"
+
+#: dwarf.c:2061
+#, c-format
+msgid "Corrupt unit length (0x%s) found in section %s\n"
+msgstr "ÐŸÐ¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… щодо довжини Ð¼Ð¾Ð´ÑƒÐ»Ñ (0x%s) у розділі %s\n"
+
+#: dwarf.c:2069
+#, c-format
+msgid "No comp units in %s section ?"
+msgstr "У розділі %s відÑутні елементів comp?"
+
+#: dwarf.c:2078
+#, c-format
+msgid "Not enough memory for a debug info array of %u entries"
+msgstr "ÐедоÑтатньо пам'ÑÑ‚Ñ– Ð´Ð»Ñ Ð¼Ð°Ñиву з діагноÑтичними даними з %u елементів"
+
+#: dwarf.c:2087 dwarf.c:3296 dwarf.c:3390 dwarf.c:3551 dwarf.c:3779
+#: dwarf.c:3911 dwarf.c:4081 dwarf.c:4150 dwarf.c:4354
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"ВміÑÑ‚ розділу %s:\n"
+"\n"
+
+#: dwarf.c:2095
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Ðеможливо визначити Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s!\n"
+
+#: dwarf.c:2176
+#, c-format
+msgid " Compilation Unit @ offset 0x%s:\n"
+msgstr " Модуль Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ @ зÑув 0x%s:\n"
+
+#: dwarf.c:2178
+#, c-format
+msgid " Length: 0x%s (%s)\n"
+msgstr " Довжина: 0x%s (%s)\n"
+
+#: dwarf.c:2181
+#, c-format
+msgid " Version: %d\n"
+msgstr " ВерÑÑ–Ñ: %d\n"
+
+#: dwarf.c:2182
+#, c-format
+msgid " Abbrev Offset: %s\n"
+msgstr " ЗÑув абрев.: %s\n"
+
+#: dwarf.c:2184
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Розмір вказів: %d\n"
+
+#: dwarf.c:2188
+#, c-format
+msgid " Signature: "
+msgstr " ПідпиÑ: "
+
+#: dwarf.c:2192
+#, c-format
+msgid " Type Offset: 0x%s\n"
+msgstr " ЗÑув типу: 0x%s\n"
+
+#: dwarf.c:2200
+#, c-format
+msgid "Debug info is corrupted, length of CU at %s extends beyond end of section (length = %s)\n"
+msgstr "ДіагноÑтичні дані пошкоджено, довжина CU у %s призведе до виходу за межі розділу (довжина = %s)\n"
+
+#: dwarf.c:2213
+#, c-format
+msgid "CU at offset %s contains corrupt or unsupported version number: %d.\n"
+msgstr "CU за зÑувом %s міÑтить пошкоджені або непідтримувані дані щодо номера верÑÑ–Ñ—: %d.\n"
+
+#: dwarf.c:2224
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr "ДіагноÑтичні дані пошкоджено, відÑтуп абревіатури (%lx) перевищує розмір розділу абревіатур (%lx)\n"
+
+#: dwarf.c:2274
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr "У розділі .debug_info виÑвлено фіктивну позначку Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñпоріднених вузлів за зÑувом %lx\n"
+
+#: dwarf.c:2278
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr "Подальші Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ фіктивних позначок ÐºÑ–Ð½Ñ†Ñ Ñпоріднених вузлів придушено.\n"
+
+#: dwarf.c:2297
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr " <%d><%lx>: Ðомер абревіатури: %lu"
+
+#: dwarf.c:2301
+#, c-format
+msgid " <%d><%lx>: ...\n"
+msgstr " <%d><%lx>: ...\n"
+
+#: dwarf.c:2320
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr "DIE за зÑувом %lx поÑилаєтьÑÑ Ð½Ð° абревіатуру з номером %lu, Ñкої не Ñ–Ñнує\n"
+
+#: dwarf.c:2422
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Ðеоброблений дамп діагноÑтичних даних розділу %s:\n"
+"\n"
+
+#: dwarf.c:2460
+#, c-format
+msgid "The information in section %s appears to be corrupt - the section is too small\n"
+msgstr "Схоже, дані у розділі %s пошкоджено - розділ надто малий\n"
+
+#: dwarf.c:2472 dwarf.c:2840
+msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
+msgstr "У поточній верÑÑ–Ñ— передбачено підтримку даних Ñ€Ñдків лише DWARF верÑій 2, 3 або 4.\n"
+
+#: dwarf.c:2486 dwarf.c:2855
+msgid "Invalid maximum operations per insn.\n"
+msgstr "Ðекоректна макÑимальна кількіÑÑ‚ÑŒ операцій на інÑтрукцію.\n"
+
+#: dwarf.c:2505 dwarf.c:3574
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr " ЗÑув: 0x%lx\n"
+
+#: dwarf.c:2506
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Довжина: %ld\n"
+
+#: dwarf.c:2507
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " DWARF верÑÑ–Ñ: %d\n"
+
+#: dwarf.c:2508
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " Довжина прологу: %d\n"
+
+#: dwarf.c:2509
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " Мінім. довжина інÑтрукції: %d\n"
+
+#: dwarf.c:2511
+#, c-format
+msgid " Maximum Ops per Instruction: %d\n"
+msgstr " МакÑ. к-Ñ‚ÑŒ операцій на інÑтрукцію: %d\n"
+
+#: dwarf.c:2512
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " Поч. Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 'is_stmt': %d\n"
+
+#: dwarf.c:2513
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " ОÑнова Ñ€Ñдка: %d\n"
+
+#: dwarf.c:2514
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " Діапазон Ñ€Ñдка : %d\n"
+
+#: dwarf.c:2515
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " ОÑнова коду операції: %d\n"
+
+#: dwarf.c:2524
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Коди операцій:\n"
+
+#: dwarf.c:2527
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " Код операції %d міÑтить %d аргументів\n"
+
+#: dwarf.c:2533
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñ–Ð² порожнÑ.\n"
+
+#: dwarf.c:2536
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñ–Ð²:\n"
+
+#: dwarf.c:2551
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð½Ð°Ð·Ð² файлів порожнÑ.\n"
+
+#: dwarf.c:2554
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð½Ð°Ð·Ð² файлів:\n"
+
+#. Now display the statements.
+#: dwarf.c:2584
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Оператори номера Ñ€Ñдка:\n"
+
+#: dwarf.c:2603
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s"
+msgstr " Спеціальний код операції %d: проÑÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð´Ñ€ÐµÑи на %s до 0x%s"
+
+#: dwarf.c:2617
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s[%d]"
+msgstr " Спеціальний код операції %d: проÑÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð´Ñ€ÐµÑи на %s до 0x%s[%d]"
+
+#: dwarf.c:2625
+#, c-format
+msgid " and Line by %s to %d\n"
+msgstr " та Ñ€Ñдка на %s до %d\n"
+
+#: dwarf.c:2635
+#, c-format
+msgid " Copy\n"
+msgstr " КопіÑ\n"
+
+#: dwarf.c:2645
+#, c-format
+msgid " Advance PC by %s to 0x%s\n"
+msgstr " ПроÑÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° команд на %s до 0x%s\n"
+
+#: dwarf.c:2658
+#, c-format
+msgid " Advance PC by %s to 0x%s[%d]\n"
+msgstr " ПроÑÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° команд на %s до 0x%s[%d]\n"
+
+#: dwarf.c:2669
+#, c-format
+msgid " Advance Line by %s to %d\n"
+msgstr " ПроÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдка на %s до %d\n"
+
+#: dwarf.c:2677
+#, c-format
+msgid " Set File Name to entry %s in the File Name Table\n"
+msgstr " Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð·Ð²Ð¸ файла до пункту %s у таблиці назв файлів\n"
+
+#: dwarf.c:2685
+#, c-format
+msgid " Set column to %s\n"
+msgstr " Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñтовпчика у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s\n"
+
+#: dwarf.c:2693
+#, c-format
+msgid " Set is_stmt to %s\n"
+msgstr " Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ is_stmt Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s\n"
+
+#: dwarf.c:2698
+#, c-format
+msgid " Set basic block\n"
+msgstr " Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ блоку\n"
+
+#: dwarf.c:2708
+#, c-format
+msgid " Advance PC by constant %s to 0x%s\n"
+msgstr " ПроÑÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° команд на Ñталу %s до 0x%s\n"
+
+#: dwarf.c:2721
+#, c-format
+msgid " Advance PC by constant %s to 0x%s[%d]\n"
+msgstr " ПроÑÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° команд на Ñталу %s до 0x%s[%d]\n"
+
+#: dwarf.c:2733
+#, c-format
+msgid " Advance PC by fixed size amount %s to 0x%s\n"
+msgstr " ПроÑÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° команд на величину фікÑованого розміру %s до 0x%s\n"
+
+#: dwarf.c:2739
+#, c-format
+msgid " Set prologue_end to true\n"
+msgstr " Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ prologue_end в `Ñ–Ñтина'\n"
+
+#: dwarf.c:2743
+#, c-format
+msgid " Set epilogue_begin to true\n"
+msgstr " Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ epilogue_begin в `Ñ–Ñтина'\n"
+
+#: dwarf.c:2749
+#, c-format
+msgid " Set ISA to %s\n"
+msgstr " Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ISA у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ %s\n"
+
+#: dwarf.c:2753 dwarf.c:3168
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr " Ðевідомий код операції %d Ñ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð°Ð¼Ð¸: "
+
+#: dwarf.c:2787
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Розпакований дамп діагноÑтичних даних розділу %s:\n"
+"\n"
+
+#: dwarf.c:2828
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "Схоже, що Ñ€Ñдок info пошкоджений - розділ надто малий\n"
+
+#: dwarf.c:2960
+#, c-format
+msgid "CU: %s:\n"
+msgstr "CU: %s:\n"
+
+#: dwarf.c:2961 dwarf.c:2972
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr "Ðазва файла Ðомер Ñ€Ñдка Початкова адреÑа\n"
+
+#: dwarf.c:2968
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr "CU: %s/%s:\n"
+
+#: dwarf.c:3059
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "ÐЕВІДОМИЙ: довжина %d\n"
+
+#: dwarf.c:3164
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr " Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ISA в %lu\n"
+
+#: dwarf.c:3330 dwarf.c:4195
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr "ЗÑув .debug_info 0x%lx у розділі %s не вказує на заголовок CU.\n"
+
+#: dwarf.c:3344
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Ðаразі підтримуютьÑÑ pubname лише Ð´Ð»Ñ DWARF верÑÑ–Ñ— 2 Ñ– 3\n"
+
+#: dwarf.c:3351
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Довжина: %ld\n"
+
+#: dwarf.c:3353
+#, c-format
+msgid " Version: %d\n"
+msgstr " ВерÑÑ–Ñ: %d\n"
+
+#: dwarf.c:3355
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr " ЗÑув до розділу .debug_info: 0x%lx\n"
+
+#: dwarf.c:3357
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr " Розм. облаÑÑ‚Ñ– у розділі .debug_info: %ld\n"
+
+#: dwarf.c:3360
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" ЗÑув\tÐазва\n"
+
+#: dwarf.c:3411
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - номер_Ñ€Ñдка: %d номер_файла: %d\n"
+
+#: dwarf.c:3417
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: dwarf.c:3425
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - номер_Ñ€Ñдка : %d Ð¼Ð°ÐºÑ€Ð¾Ñ : %s\n"
+
+#: dwarf.c:3434
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - номер_Ñ€Ñдка : %d Ð¼Ð°ÐºÑ€Ð¾Ñ : %s\n"
+
+#: dwarf.c:3446
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - конÑтанта : %d Ñ€Ñдок : %s\n"
+
+#: dwarf.c:3566
+#, c-format
+msgid "Only GNU extension to DWARF 4 of %s is currently supported.\n"
+msgstr "У поточній верÑÑ–Ñ— передбачено підтримку лише Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ GNU до DWARF 4 %s.\n"
+
+#: dwarf.c:3576
+#, c-format
+msgid " Version: %d\n"
+msgstr " ВерÑÑ–Ñ: %d\n"
+
+#: dwarf.c:3577
+#, c-format
+msgid " Offset size: %d\n"
+msgstr " Розмір зÑуву: %d\n"
+
+#: dwarf.c:3582
+#, c-format
+msgid " Offset into .debug_line: 0x%lx\n"
+msgstr " ЗÑув до .debug_line: 0x%lx\n"
+
+#: dwarf.c:3593
+#, c-format
+msgid " Extension opcode arguments:\n"
+msgstr " Ðргументи коду операції розширеннÑ:\n"
+
+#: dwarf.c:3601
+#, c-format
+msgid " DW_MACRO_GNU_%02x has no arguments\n"
+msgstr " DW_MACRO_GNU_%02x не має аргументів\n"
+
+#: dwarf.c:3604
+#, c-format
+msgid " DW_MACRO_GNU_%02x arguments: "
+msgstr " Ðргументи DW_MACRO_GNU_%02x: "
+
+#: dwarf.c:3628
+#, c-format
+msgid "Invalid extension opcode form %s\n"
+msgstr "Ðекоректна форма коду операції розширеннÑ, %s\n"
+
+#: dwarf.c:3645
+msgid ".debug_macro section not zero terminated\n"
+msgstr "Розділ .debug_macro не завершуєтьÑÑ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ байтом\n"
+
+#: dwarf.c:3666
+msgid "DW_MACRO_GNU_start_file used, but no .debug_line offset provided.\n"
+msgstr "ВикориÑтано DW_MACRO_GNU_start_file, але не надано зÑуву .debug_line.\n"
+
+#: dwarf.c:3672
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACRO_GNU_start_file - номер_Ñ€Ñдка: %d номер_файла: %d\n"
+
+#: dwarf.c:3675
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d filename: %s%s%s\n"
+msgstr " DW_MACRO_GNU_start_file - номер_Ñ€Ñдка: %d номер_файла: %d назва файла: %s%s%s\n"
+
+#: dwarf.c:3683
+#, c-format
+msgid " DW_MACRO_GNU_end_file\n"
+msgstr " DW_MACRO_GNU_end_file\n"
+
+#: dwarf.c:3691
+#, c-format
+msgid " DW_MACRO_GNU_define - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_define - номер_Ñ€Ñдка : %d Ð¼Ð°ÐºÑ€Ð¾Ñ : %s\n"
+
+#: dwarf.c:3700
+#, c-format
+msgid " DW_MACRO_GNU_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_undef - номер_Ñ€Ñдка : %d Ð¼Ð°ÐºÑ€Ð¾Ñ : %s\n"
+
+#: dwarf.c:3710
+#, c-format
+msgid " DW_MACRO_GNU_define_indirect - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_define_indirect - номер Ñ€Ñдка: %d макроÑ: %s\n"
+
+#: dwarf.c:3720
+#, c-format
+msgid " DW_MACRO_GNU_undef_indirect - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_undef_indirect - номер Ñ€Ñдка: %d макроÑ: %s\n"
+
+#: dwarf.c:3727
+#, c-format
+msgid " DW_MACRO_GNU_transparent_include - offset : 0x%lx\n"
+msgstr " DW_MACRO_GNU_transparent_include - зÑув: 0x%lx\n"
+
+#: dwarf.c:3734
+#, c-format
+msgid " Unknown macro opcode %02x seen\n"
+msgstr " ВиÑвлено невідомий код операції макроÑу %02x\n"
+
+#: dwarf.c:3746
+#, c-format
+msgid " DW_MACRO_GNU_%02x\n"
+msgstr " DW_MACRO_GNU_%02x\n"
+
+#: dwarf.c:3749
+#, c-format
+msgid " DW_MACRO_GNU_%02x -"
+msgstr " DW_MACRO_GNU_%02x -"
+
+#: dwarf.c:3790
+#, c-format
+msgid " Number TAG\n"
+msgstr " ЧиÑло TAG\n"
+
+#: dwarf.c:3799
+msgid "has children"
+msgstr "має нащадків"
+
+#: dwarf.c:3799
+msgid "no children"
+msgstr "немає нащадків"
+
+#: dwarf.c:3850 dwarf.c:4077 dwarf.c:4311
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"Розділ %s порожній.\n"
+
+#: dwarf.c:3856 dwarf.c:4317
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ або обробити розділ .debug_info, отже обробка розділу %s неможлива.\n"
+
+#: dwarf.c:3900
+msgid "No location lists in .debug_info section!\n"
+msgstr "У розділі .debug_info немає ÑпиÑків розташуваннÑ!\n"
+
+#: dwarf.c:3905
+#, c-format
+msgid "Location lists in %s section start at 0x%s\n"
+msgstr "СпиÑки розташувань у розділі %s починаютьÑÑ Ð· 0x%s\n"
+
+#: dwarf.c:3912
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr " ЗÑув Початок Кінець РозширеннÑ\n"
+
+#: dwarf.c:3961
+#, 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:3965
+#, 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:3973
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "ЗÑув 0x%lx більш, ніж розмір розділу .debug_loc.\n"
+
+#: dwarf.c:3982 dwarf.c:4017 dwarf.c:4027
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "СпиÑок розташувань, починаючи із зÑуву 0x%lx, не завершений.\n"
+
+#: dwarf.c:4001 dwarf.c:4405
+#, c-format
+msgid "<End of list>\n"
+msgstr "<Кінець ÑпиÑку>\n"
+
+#: dwarf.c:4011
+#, c-format
+msgid "(base address)\n"
+msgstr "(оÑновна адреÑа)\n"
+
+#: dwarf.c:4048
+msgid " (start == end)"
+msgstr " (початок == кінець)"
+
+#: dwarf.c:4050
+msgid " (start > end)"
+msgstr " (початок > кінець)"
+
+#: dwarf.c:4060
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr "У розділі %2$s виÑвлено %1$ld невикориÑтаних байтів\n"
+
+#: dwarf.c:4206
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Ðаразі підтримуютьÑÑ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ DWARF верÑÑ–Ñ— 2 та 3.\n"
+
+#: dwarf.c:4210
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Довжина: %ld\n"
+
+#: dwarf.c:4212
+#, c-format
+msgid " Version: %d\n"
+msgstr " ВерÑÑ–Ñ: %d\n"
+
+#: dwarf.c:4213
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr " ЗÑув до .debug_info: 0x%lx\n"
+
+#: dwarf.c:4215
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Розмір вказівника: %d\n"
+
+#: dwarf.c:4216
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " Розмір Ñегменту: %d\n"
+
+#: dwarf.c:4222
+#, c-format
+msgid "Invalid address size in %s section!\n"
+msgstr "Ðекоректний розмір адреÑи у розділі %s!\n"
+
+#: dwarf.c:4232
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr "Розмір вказівника + розмір Ñегменту не Ñ” Ñтупенем двійки.\n"
+
+#: dwarf.c:4237
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" ÐдреÑа Довжина\n"
+
+#: dwarf.c:4239
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" ÐдреÑа Довжина\n"
+
+#: dwarf.c:4327
+msgid "No range lists in .debug_info section!\n"
+msgstr "У розділі .debug_info немає ÑпиÑків діапазонів!\n"
+
+#: dwarf.c:4351
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "СпиÑки діапазонів в розділі %s починаютьÑÑ Ñ 0x%lx\n"
+
+#: dwarf.c:4355
+#, c-format
+msgid " Offset Begin End\n"
+msgstr " ЗÑув Початок Кінець\n"
+
+#: dwarf.c:4376
+#, c-format
+msgid "There is a hole [0x%lx - 0x%lx] in %s section.\n"
+msgstr "Дірка [0x%lx - 0x%lx] у розділі %s.\n"
+
+#: dwarf.c:4380
+#, c-format
+msgid "There is an overlap [0x%lx - 0x%lx] in %s section.\n"
+msgstr "ÐŸÐµÑ€ÐµÐºÑ€Ð¸Ñ‚Ñ‚Ñ [0x%lx - 0x%lx] у розділі %s.\n"
+
+#: dwarf.c:4423
+msgid "(start == end)"
+msgstr "(початок == кінець)"
+
+#: dwarf.c:4425
+msgid "(start > end)"
+msgstr "(початок > кінець)"
+
+#: dwarf.c:4678
+msgid "bad register: "
+msgstr "помилковий регіÑÑ‚Ñ€: "
+
+#. The documentation for the format of this file is in gdb/dwarf2read.c.
+#: dwarf.c:4681 dwarf.c:5490
+#, c-format
+msgid "Contents of the %s section:\n"
+msgstr "ВміÑÑ‚ розділу %s:\n"
+
+#: dwarf.c:5451
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr " DW_CFA_??? (Визначена кориÑтувачем Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ñ„Ñ€ÐµÐ¹Ð¼Ñƒ викликів: %#x)\n"
+
+#: dwarf.c:5453
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr "непідтримуваний або невідомий номер інÑтрукції фрейму викликів Dwarf: %#x\n"
+
+#: dwarf.c:5494
+#, c-format
+msgid "Truncated header in the %s section.\n"
+msgstr "Обрізаний заголовок у розділі %s.\n"
+
+#: dwarf.c:5499
+#, c-format
+msgid "Version %ld\n"
+msgstr "ВерÑÑ–Ñ %ld\n"
+
+#: dwarf.c:5506
+msgid "The address table data in version 3 may be wrong.\n"
+msgstr "Дані таблиці Ð°Ð´Ñ€ÐµÑ Ñƒ верÑÑ–Ñ— 3 можуть бути помилковими.\n"
+
+#: dwarf.c:5509
+msgid "Version 4 does not support case insensitive lookups.\n"
+msgstr "У верÑÑ–Ñ— 4 не передбачено підтримки фільтрувань без Ð²Ñ€Ð°Ñ…ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ³Ñ–Ñтру.\n"
+
+#: dwarf.c:5514
+#, c-format
+msgid "Unsupported version %lu.\n"
+msgstr "Ðепідтримувана верÑÑ–Ñ %lu.\n"
+
+#: dwarf.c:5530
+#, c-format
+msgid "Corrupt header in the %s section.\n"
+msgstr "Заголовок у розділі %s пошкоджено.\n"
+
+#: dwarf.c:5545
+#, c-format
+msgid ""
+"\n"
+"CU table:\n"
+msgstr ""
+"\n"
+"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ CU:\n"
+
+#: dwarf.c:5551
+#, c-format
+msgid "[%3u] 0x%lx - 0x%lx\n"
+msgstr "[%3u] 0x%lx - 0x%lx\n"
+
+#: dwarf.c:5556
+#, c-format
+msgid ""
+"\n"
+"TU table:\n"
+msgstr ""
+"\n"
+"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ TU:\n"
+
+#: dwarf.c:5563
+#, c-format
+msgid "[%3u] 0x%lx 0x%lx "
+msgstr "[%3u] 0x%lx 0x%lx "
+
+#: dwarf.c:5570
+#, c-format
+msgid ""
+"\n"
+"Address table:\n"
+msgstr ""
+"\n"
+"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð°Ð´Ñ€ÐµÑ:\n"
+
+#: dwarf.c:5579
+#, c-format
+msgid "%lu\n"
+msgstr "%lu\n"
+
+#: dwarf.c:5582
+#, c-format
+msgid ""
+"\n"
+"Symbol table:\n"
+msgstr ""
+"\n"
+"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів:\n"
+
+#: dwarf.c:5616
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтичної інформації розділу %s ще не підтримуєтьÑÑ.\n"
+
+#: dwarf.c:5752 dwarf.c:5822
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Ðерозпізнаний діагноÑтичний ключ '%s'\n"
+
+#: elfcomm.c:39
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Помилка: "
+
+#: elfcomm.c:50
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: ПопередженнÑ: "
+
+#: elfcomm.c:82 elfcomm.c:117 elfcomm.c:167 elfcomm.c:216
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Довжина даних, що не оброблÑÑŽÑ‚ÑŒÑÑ: %d\n"
+
+#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3683 readelf.c:3991
+#: readelf.c:4034 readelf.c:4108 readelf.c:4187 readelf.c:4965 readelf.c:4989
+#: readelf.c:7397 readelf.c:7443 readelf.c:7642 readelf.c:8863 readelf.c:8877
+#: readelf.c:9423 readelf.c:9439 readelf.c:9482 readelf.c:9507 readelf.c:11904
+#: readelf.c:12096 readelf.c:12929
+msgid "Out of memory\n"
+msgstr "Бракує пам'ÑÑ‚Ñ–\n"
+
+#: elfcomm.c:312
+#, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr "%s: помилка при позиціюванні першого заголовка архіву\n"
+
+#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13418
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: помилка при читанні заголовка архіву\n"
+
+#: elfcomm.c:347
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr "%s: покажчик архіву є порожнім\n"
+
+#: elfcomm.c:355 elfcomm.c:381
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ покажчик архіву\n"
+
+#: elfcomm.c:365
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr "%s: визначено, що у покажчику архіву має бути %ld запиÑів, але розміри заголовка Ñ” надто малими\n"
+
+#: elfcomm.c:373
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr "Під Ñ‡Ð°Ñ Ñпроби Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ° Ñимволів архіву вичерпано пам’ÑÑ‚ÑŒ\n"
+
+#: elfcomm.c:392
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr "Під Ñ‡Ð°Ñ Ñпроби Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ° Ñимволів архіву вичерпано пам’ÑÑ‚ÑŒ\n"
+
+#: elfcomm.c:405
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr "%s: у архіві Ñ” покажчик, але немає Ñимволів\n"
+
+#: elfcomm.c:413
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr "Вичерпано пам’ÑÑ‚ÑŒ під Ñ‡Ð°Ñ Ð¿Ñ€Ð¾Ð±Ð¸ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ° таблиці Ñимволів архіву\n"
+
+#: elfcomm.c:419
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr "%s: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ таблицю Ñимволів покажчика архіву\n"
+
+#: elfcomm.c:428
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr "%s: помилка при пропуÑку таблиці Ñимволів архіву\n"
+
+#: elfcomm.c:440
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr "%s: помилка при читанні заголовка архіву, за Ñким Ñлідує покажчик архіву\n"
+
+#: elfcomm.c:446
+#, c-format
+msgid "%s has no archive index\n"
+msgstr "%s не має покажчика архіву\n"
+
+#: elfcomm.c:457
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr "Під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð¾Ð²Ð³Ð¸Ñ… назв Ñимволів у архіві вичерпано пам’ÑÑ‚ÑŒ\n"
+
+#: elfcomm.c:465
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr "%s: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ таблицю Ñ€Ñдків довгих назв Ñимволів\n"
+
+#: elfcomm.c:605
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr "%s: помилка при Ð¿Ð¾Ð·Ð¸Ñ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ð° наÑтупну назву файла\n"
+
+#: elfcomm.c:616 elfedit.c:347 readelf.c:13424
+#, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr "%s: не знайдено коректного заголовка архіву\n"
+
+#: elfedit.c:73
+#, c-format
+msgid "%s: Not an ELF file - wrong magic bytes at the start\n"
+msgstr "%s: не Ñ” файлом ELF. Помилкові байти контрольної Ñуми на початку.\n"
+
+#: elfedit.c:81
+#, c-format
+msgid "%s: Unsupported EI_VERSION: %d is not %d\n"
+msgstr "%s: непідтримуване Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ EI_VERSION: %d не дорівнює %d\n"
+
+#: elfedit.c:97
+#, c-format
+msgid "%s: Unmatched EI_CLASS: %d is not %d\n"
+msgstr "%s: невідповідніÑÑ‚ÑŒ EI_CLASS: %d не дорівнює %d\n"
+
+#: elfedit.c:108
+#, c-format
+msgid "%s: Unmatched e_machine: %d is not %d\n"
+msgstr "%s: невідповідніÑÑ‚ÑŒ e_machine: %d не дорівнює %d\n"
+
+#: elfedit.c:119
+#, c-format
+msgid "%s: Unmatched e_type: %d is not %d\n"
+msgstr "%s: невідповідніÑÑ‚ÑŒ e_type: %d не дорівнює %d\n"
+
+#: elfedit.c:130
+#, c-format
+msgid "%s: Unmatched EI_OSABI: %d is not %d\n"
+msgstr "%s: EI_OSABI без відповідника: %d не дорівнює %d\n"
+
+#: elfedit.c:163
+#, c-format
+msgid "%s: Failed to update ELF header: %s\n"
+msgstr "%s: не вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ заголовок ELF: %s\n"
+
+#: elfedit.c:196
+#, c-format
+msgid "Unsupported EI_CLASS: %d\n"
+msgstr "Ðепідтримуваний EI_CLASS: %d\n"
+
+#: elfedit.c:229
+msgid ""
+"This executable has been built without support for a\n"
+"64 bit data type and so it cannot process 64 bit ELF files.\n"
+msgstr ""
+"Це виконуваний файл було зібрано без підтримки 64-бітового типу\n"
+"даних, тому він не може оброблÑти 64-бітові файли ELF.\n"
+
+#: elfedit.c:270
+#, c-format
+msgid "%s: Failed to read ELF header\n"
+msgstr "%s: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ заголовок ELF\n"
+
+#: elfedit.c:277
+#, c-format
+msgid "%s: Failed to seek to ELF header\n"
+msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ð° заголовок ELF\n"
+
+#: elfedit.c:331 readelf.c:13410
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s: помилка при пошуку наÑтупного заголовка архіву\n"
+
+#: elfedit.c:362 elfedit.c:371 readelf.c:13438 readelf.c:13447
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: неправильна назва файла архіву\n"
+
+#: elfedit.c:391 elfedit.c:483
+#, c-format
+msgid "Input file '%s' is not readable\n"
+msgstr "Вхідний файл '%s' Ñ” непридатним до читаннÑ.\n"
+
+#: elfedit.c:415
+#, c-format
+msgid "%s: failed to seek to archive member\n"
+msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ð° член архіву\n"
+
+#: elfedit.c:454 readelf.c:13533
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "'%s': Ðемає такого файла\n"
+
+#: elfedit.c:456 readelf.c:13535
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr "Ðеможливо найти '%s'. СиÑтемне Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку: %s\n"
+
+#: elfedit.c:463 readelf.c:13542
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "%s не є звичайним файлом\n"
+
+#: elfedit.c:489 readelf.c:13555
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr "%s: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ контрольну Ñуму файла\n"
+
+#: elfedit.c:547
+#, c-format
+msgid "Unknown OSABI: %s\n"
+msgstr "Ðевідоме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ OSABI: %s\n"
+
+#: elfedit.c:568
+#, c-format
+msgid "Unknown machine type: %s\n"
+msgstr "Ðевідомий тип архітектури: %s\n"
+
+#: elfedit.c:587
+#, c-format
+msgid "Unknown machine type: %d\n"
+msgstr "Ðевідомий тип архітектури: %d\n"
+
+#: elfedit.c:606
+#, c-format
+msgid "Unknown type: %s\n"
+msgstr "Ðевідомий тип: %s\n"
+
+#: elfedit.c:637
+#, c-format
+msgid "Usage: %s <option(s)> elffile(s)\n"
+msgstr "ВикориÑтаннÑ: %s <ключі> файли_elf\n"
+
+#: elfedit.c:639
+#, c-format
+msgid " Update the ELF header of ELF files\n"
+msgstr " ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF файлів ELF\n"
+
+#: elfedit.c:640 objcopy.c:475 objcopy.c:585
+#, c-format
+msgid " The options are:\n"
+msgstr " Ключі:\n"
+
+#: elfedit.c:641
+#, c-format
+msgid ""
+" --input-mach <machine> Set input machine type to <machine>\n"
+" --output-mach <machine> Set output machine type to <machine>\n"
+" --input-type <type> Set input file type to <type>\n"
+" --output-type <type> Set output file type to <type>\n"
+" --input-osabi <osabi> Set input OSABI to <osabi>\n"
+" --output-osabi <osabi> Set output OSABI to <osabi>\n"
+" -h --help Display this information\n"
+" -v --version Display the version number of %s\n"
+msgstr ""
+" --input-mach <арх> вÑтановити Ð´Ð»Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ñ— архітектури тип <арх>\n"
+" --output-mach <архe> вÑтановити Ð´Ð»Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¾Ñ— архітектури тип <арх>\n"
+" --input-type <тип> вÑтановити Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ñƒ файла вхідних даних <тип>\n"
+" --output-type <тип> вÑтановити Ð´Ð»Ñ Ñ‚Ð¸Ð¿Ñƒ файла вихідних даних <тип>\n"
+" --input-osabi <osabi> вÑтановити Ð´Ð»Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ OSABI Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ <osabi>\n"
+" --output-osabi <osabi> вÑтановити Ð´Ð»Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ OSABI Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ <osabi>\n"
+" -h --help показати ці дані\n"
+" -v --version показати дані щодо номера верÑÑ–Ñ— %s\n"
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - 32-бітний маленький архів\n"
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - пропуÑкає 64-бітні об'єкти\n"
+
+#: emul_aix.c:47
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - пропуÑкає 32-бітні об'єкти\n"
+
+#: emul_aix.c:48
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] - допуÑкає 32- Ñ– 64-бітні об'єкти\n"
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "неочікуване Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтичних даних"
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "неправильний номер"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "неправильна довжина Ñтроки"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñтеку виразу"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "непідтримуваний оператор виразу IEEE"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr "невідомий розділ"
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "ÑпуÑÑ‚Ð¾ÑˆÐµÐ½Ð½Ñ Ñтеку виразу"
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "невідповідніÑÑ‚ÑŒ Ñтеку виразу"
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "невідомий вбудований тип"
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "Двійково-кодований деÑÑтковий тип з плаваючою комою не підтримуєтьÑÑ"
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "неочікуване чиÑло"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "неÑподіваний комбінований тип"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "наприкінці Ñтеку залишилиÑÑŒ блоки"
+
+#: ieee.c:1208
+msgid "unknown BB type"
+msgstr "невідомий тип BB"
+
+#: ieee.c:1217
+msgid "stack overflow"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñтеку"
+
+#: ieee.c:1240
+msgid "stack underflow"
+msgstr "ÑпуÑÑ‚Ð¾ÑˆÐµÐ½Ð½Ñ Ñтеку"
+
+#: ieee.c:1352 ieee.c:1422 ieee.c:2120
+msgid "illegal variable index"
+msgstr "неправильний Ñ–Ð½Ð´ÐµÐºÑ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—"
+
+#: ieee.c:1400
+msgid "illegal type index"
+msgstr "неправильний Ñ–Ð½Ð´ÐµÐºÑ Ñ‚Ð¸Ð¿Ñƒ"
+
+#: ieee.c:1410 ieee.c:1447
+msgid "unknown TY code"
+msgstr "невідомий код TY"
+
+#: ieee.c:1429
+msgid "undefined variable in TY"
+msgstr "невизначена змінна в TY"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1841
+msgid "Pascal file name not supported"
+msgstr "Ðазви файла у Ñтилі Pascal не підтримуєтьÑÑ"
+
+#: ieee.c:1889
+msgid "unsupported qualifier"
+msgstr "непідтримуваний клаÑифікатор"
+
+#: ieee.c:2158
+msgid "undefined variable in ATN"
+msgstr "невизначена змінна в ATN"
+
+#: ieee.c:2201
+msgid "unknown ATN type"
+msgstr "невідомий тип ATN"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2323
+msgid "unsupported ATN11"
+msgstr "непідтримуваний ATN11"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2350
+msgid "unsupported ATN12"
+msgstr "непідтримуваний ATN12"
+
+#: ieee.c:2410
+msgid "unexpected string in C++ misc"
+msgstr "неочікуваний Ñ€Ñдок у C++ misc"
+
+#: ieee.c:2423
+msgid "bad misc record"
+msgstr "некоректний Ð·Ð°Ð¿Ð¸Ñ misc"
+
+#: ieee.c:2464
+msgid "unrecognized C++ misc record"
+msgstr "нерозпізнаний Ð·Ð°Ð¿Ð¸Ñ C++ misc"
+
+#: ieee.c:2579
+msgid "undefined C++ object"
+msgstr "невизначений об'єкт C++"
+
+#: ieee.c:2613
+msgid "unrecognized C++ object spec"
+msgstr "нерозпізнана ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¾Ð±'єкта C++"
+
+#: ieee.c:2649
+msgid "unsupported C++ object type"
+msgstr "нерозпізнаний тип об'єкта C++"
+
+#: ieee.c:2659
+msgid "C++ base class not defined"
+msgstr "базовий ÐºÐ»Ð°Ñ C++ не визначений"
+
+#: ieee.c:2671 ieee.c:2776
+msgid "C++ object has no fields"
+msgstr "об'єкт C++ не має полів"
+
+#: ieee.c:2690
+msgid "C++ base class not found in container"
+msgstr "базовий ÐºÐ»Ð°Ñ C++ не знайдений у контейнері"
+
+#: ieee.c:2797
+msgid "C++ data member not found in container"
+msgstr "елемент клаÑу C++ не знайдений в контейнері"
+
+#: ieee.c:2838 ieee.c:2988
+msgid "unknown C++ visibility"
+msgstr "невідома видиміÑÑ‚ÑŒ C++"
+
+#: ieee.c:2872
+msgid "bad C++ field bit pos or size"
+msgstr "неправильний двійковий розрÑд або розмір Ð¿Ð¾Ð»Ñ C++"
+
+#: ieee.c:2964
+msgid "bad type for C++ method function"
+msgstr "неправильний тип функції методу C++"
+
+#: ieee.c:2974
+msgid "no type information for C++ method function"
+msgstr "немає інформації про тип Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— методу C++"
+
+#: ieee.c:3013
+msgid "C++ static virtual method"
+msgstr "Ñтатичний віртуальний метод C++"
+
+#: ieee.c:3108
+msgid "unrecognized C++ object overhead spec"
+msgstr "нерозпізнана Ñлужбова ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð¾Ð±'єкта C++"
+
+#: ieee.c:3147
+msgid "undefined C++ vtable"
+msgstr "невизначена віртуальна Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ C++"
+
+#: ieee.c:3216
+msgid "C++ default values not in a function"
+msgstr "типові Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ C++ не у функції"
+
+#: ieee.c:3256
+msgid "unrecognized C++ default type"
+msgstr "нерозпізнаний типовий тип C++"
+
+#: ieee.c:3287
+msgid "reference parameter is not a pointer"
+msgstr "параметр-поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ðµ Ñ” вказівником"
+
+#: ieee.c:3370
+msgid "unrecognized C++ reference type"
+msgstr "нерозпізнаний тип поÑÐ¸Ð»Ð°Ð½Ð½Ñ C++"
+
+#: ieee.c:3452
+msgid "C++ reference not found"
+msgstr "поÑÐ¸Ð»Ð°Ð½Ð½Ñ C++ не знайдено"
+
+#: ieee.c:3460
+msgid "C++ reference is not pointer"
+msgstr "поÑÐ¸Ð»Ð°Ð½Ð½Ñ C++ не Ñ” вказівником"
+
+#: ieee.c:3486 ieee.c:3494
+msgid "missing required ASN"
+msgstr "відÑутній необхідний ASN"
+
+#: ieee.c:3521 ieee.c:3529
+msgid "missing required ATN65"
+msgstr "відÑутній необхідний ATN65"
+
+#: ieee.c:3543
+msgid "bad ATN65 record"
+msgstr "некоректний Ð·Ð°Ð¿Ð¸Ñ ATN65"
+
+#: ieee.c:4171
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "чиÑлове Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ IEEE: 0x"
+
+#: ieee.c:4215
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ Ñ€Ñдка IEEE: %u\n"
+
+#: ieee.c:5213
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "непідтримуваний розмір цілого типу IEEE %u\n"
+
+#: ieee.c:5247
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "непідтримуваний розмір типу з плаваючою комою IEEE %u\n"
+
+#: ieee.c:5281
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "непідтримуваний розмір комплекÑного типу IEEE%u\n"
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr "У ÑпиÑку ключових Ñлів введено дублікат Ñимволу."
+
+#: nlmconv.c:274 srconv.c:1824
+msgid "input and output files must be different"
+msgstr "вхідний файл та файл виводу мають бути різними"
+
+#: nlmconv.c:321
+msgid "input file named both on command line and with INPUT"
+msgstr "вхідний файл вказаний Ñк у командному Ñ€Ñдку так Ñ– в INPUT"
+
+#: nlmconv.c:330
+msgid "no input file"
+msgstr "вхідний файл відÑутній"
+
+#: nlmconv.c:360
+msgid "no name for output file"
+msgstr "не вказано назву файла виводу"
+
+#: nlmconv.c:374
+msgid "warning: input and output formats are not compatible"
+msgstr "попередженнÑ: вхідний формат та формат виводу неÑуміÑні"
+
+#: nlmconv.c:404
+msgid "make .bss section"
+msgstr "ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .bss"
+
+#: nlmconv.c:414
+msgid "make .nlmsections section"
+msgstr "ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .nlmsections"
+
+#: nlmconv.c:442
+msgid "set .bss vma"
+msgstr "вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ .bss vma"
+
+#: nlmconv.c:449
+msgid "set .data size"
+msgstr "вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ .data"
+
+#: nlmconv.c:629
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "попередженнÑ: Ñимвол %s імпортований, але він відÑутній у ÑпиÑку імпорту"
+
+#: nlmconv.c:649
+msgid "set start address"
+msgstr "вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾Ñ— адреÑи"
+
+#: nlmconv.c:698
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "попередженнÑ: START-процедура %s не визначена"
+
+#: nlmconv.c:700
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "попередженнÑ: EXIT-процедура %s не визначена"
+
+#: nlmconv.c:702
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "попередженнÑ: CHECK-процедура %s не визначена"
+
+#: nlmconv.c:722 nlmconv.c:908
+msgid "custom section"
+msgstr "розділ custom"
+
+#: nlmconv.c:742 nlmconv.c:937
+msgid "help section"
+msgstr "розділ help"
+
+#: nlmconv.c:764 nlmconv.c:955
+msgid "message section"
+msgstr "розділ message"
+
+#: nlmconv.c:779 nlmconv.c:988
+msgid "module section"
+msgstr "розділ module"
+
+#: nlmconv.c:798 nlmconv.c:1004
+msgid "rpc section"
+msgstr "розділ rpc"
+
+#. There is no place to record this information.
+#: nlmconv.c:834
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s: попередженнÑ: бібліотеки Ñпільного викориÑÑ‚Ð°Ð½Ð½Ñ Ð½Ðµ можуть мати неініціалізовані дані"
+
+#: nlmconv.c:855 nlmconv.c:1023
+msgid "shared section"
+msgstr "розділ shared"
+
+#: nlmconv.c:863
+msgid "warning: No version number given"
+msgstr "попередженнÑ: Ðе вказаний номер верÑÑ–Ñ—"
+
+#: nlmconv.c:903 nlmconv.c:932 nlmconv.c:950 nlmconv.c:999 nlmconv.c:1018
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: читаннÑ: %s"
+
+#: nlmconv.c:925
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "попередженнÑ: FULLMAP не підтримуєтьÑÑ; Ñпробуйте ld -M"
+
+#: nlmconv.c:1101
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "ВикориÑтаннÑ: %s [ключі] [in-файл [out-файл]]\n"
+
+#: nlmconv.c:1102
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " Перетворює об'єктний файл на завантажувальний модуль ÑиÑтеми NetWare\n"
+
+#: nlmconv.c:1103
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 ""
+" Ключі:\n"
+" -I --input-target=<bfd-назва> Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ вхідного двійкового файла\n"
+" -O --output-target=<bfd-назва> Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ виводу двійкового файла\n"
+" -T --header-file=<файл> Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ <файла> Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ”ÑŽ заголовка NLM\n"
+" -l --linker=<компонувальник> ВикориÑÑ‚Ð°Ð½Ð½Ñ <компонувальника> Ð´Ð»Ñ Ð±ÑƒÐ´ÑŒ-Ñкого типу зв'ÑзуваннÑ\n"
+" -d --debug Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ð° stderr командного Ñ€Ñдка компонувальника\n"
+" @<файл> Читати ключі з <файла>\n"
+" -h --help Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— інформації\n"
+" -v --version Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— програми\n"
+
+#: nlmconv.c:1144
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "Ñкомпільовано без підтримки %s"
+
+#: nlmconv.c:1181
+msgid "make section"
+msgstr "розділ make"
+
+#: nlmconv.c:1195
+msgid "set section size"
+msgstr "вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ розділу"
+
+#: nlmconv.c:1201
+msgid "set section alignment"
+msgstr "вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¾Ñ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ— розділу"
+
+#: nlmconv.c:1205
+msgid "set section flags"
+msgstr "вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¾Ð·Ð½Ð°Ðº розділу"
+
+#: nlmconv.c:1216
+msgid "set .nlmsections size"
+msgstr "вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ .nlmsections"
+
+#: nlmconv.c:1297 nlmconv.c:1305 nlmconv.c:1314 nlmconv.c:1319
+msgid "set .nlmsection contents"
+msgstr "вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð¼Ñ–Ñту .nlmsections"
+
+#: nlmconv.c:1796
+msgid "stub section sizes"
+msgstr "розміри розділу заглушки"
+
+#: nlmconv.c:1843
+msgid "writing stub"
+msgstr "запиÑуєтьÑÑ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ°"
+
+#: nlmconv.c:1927
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "нерозпізнане відноÑне Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñƒ лічильнику команд в %s"
+
+#: nlmconv.c:1991
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ регулюванні Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð² %s"
+
+#: nlmconv.c:2118
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ %s завершилоÑÑŒ невдало: "
+
+#: nlmconv.c:2133
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Ð’Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ %s завершилоÑÑŒ невдало"
+
+#: nm.c:225 size.c:78 strings.c:650
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "ВикориÑтаннÑ: %s [ключі] [файл(и)]\n"
+
+#: nm.c:226
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ ÑпиÑку Ñимволів у [файл(и)] (типово в a.out).\n"
+
+#: nm.c:227
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+" Ключі:\n"
+" -a, --debug-syms Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð»Ð¸ÑˆÐµ діагноÑтичних Ñимволів\n"
+" -A, --print-file-name Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ð°Ð·Ð²Ð¸ вхідного файла перед кожним Ñимволом\n"
+" -B То же, що і --format=bsd\n"
+" -C, --demangle[=СТИЛЬ] Ð”ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð¸Ð·ÑŒÐºÐ¾Ñ€Ñ–Ð²Ð½ÐµÐ²Ð¸Ñ… назв Ñимволів у назви\n"
+" Ñ€Ñ–Ð²Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача\n"
+" СТИЛЬ, Ñкщо вказаний, може бути `auto' (типово),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" або `gnat'\n"
+" --no-demangle Ðе декодувати низькорівневі назви Ñимволів\n"
+" -D, --dynamic Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñимволів заміÑÑ‚ÑŒ звичайних Ñимволів\n"
+" --defined-only Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð»Ð¸ÑˆÐµ визначених Ñимволів\n"
+" -e (ігноруєтьÑÑ)\n"
+" -f, --format=ФОРМÐТ ВикориÑÑ‚Ð°Ð½Ð½Ñ Ð¤ÐžÐ ÐœÐТ Ñк формату виводу.\n"
+" ФОРМÐТ може бути `bsd', `sysv' або `posix'.\n"
+" Типово викориÑтовуєтьÑÑ `bsd'.\n"
+" -g, --extern-only Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð»Ð¸ÑˆÐµ зовнішніх Ñимволів\n"
+" -l, --line-numbers ВикориÑÑ‚Ð°Ð½Ð½Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтичних даних Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ\n"
+" назви файла Ñ– номеру Ñ€Ñдка Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ Ñимволу\n"
+" -n, --numeric-sort Ð¡Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñимволів за чиÑловими характериÑтиками адреÑи\n"
+" -o Те Ñаме, що Ñ– -A\n"
+" -p, --no-sort Без ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñимволів\n"
+" -P, --portability Те Ñаме, що Ñ– --format=posix\n"
+" -r, --reverse-sort Ð¡Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ зворотному порÑдку\n"
+
+#: nm.c:250
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr " --plugin ÐÐЗВРЗавантажити вказаний додаток\n"
+
+#: nm.c:253
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+" -S, --print-size Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ визначених Ñимволів\n"
+" -s, --print-armap Ð’ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ° Ð´Ð»Ñ Ñимволів з членів архіву\n"
+" --size-sort Ð¡Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñимволів за розміром\n"
+" --special-syms Ð’ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñпеціальних Ñимволів у дані, що виводÑÑ‚ÑŒÑÑ\n"
+" --synthetic Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ‚Ð°ÐºÐ¾Ð¶ Ñинтетичних Ñимволів\n"
+" -t, --radix=RADIX ВикориÑÑ‚Ð°Ð½Ð½Ñ RADIX Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ значень Ñимволів\n"
+" --target=BFD-ÐÐÐ—Ð’Ð Ð’ÐºÐ°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†Ñ–Ð»ÑŒÐ¾Ð²Ð¾Ð³Ð¾ формату об'єкта Ñк BFD-ÐÐЗВÐ\n"
+" -u, --undefined-only Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð»Ð¸ÑˆÐµ невизначених Ñимволів\n"
+" -X 32_64 (ігноруєтьÑÑ)\n"
+" @ФÐЙЛ Читати ключі з ФÐЙЛÐ\n"
+" -h, --help Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— інформації\n"
+" -V, --version Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ð¾Ð¼ÐµÑ€Ð° верÑÑ–Ñ— програми\n"
+"\n"
+
+#: nm.c:301
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: неправильний radix"
+
+#: nm.c:325
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: неправильний формат виводу"
+
+#: nm.c:346 readelf.c:8616 readelf.c:8661
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<Ñпецифічний Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора>: %d"
+
+#: nm.c:348 readelf.c:8625 readelf.c:8679
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<Ñпецифічний Ð´Ð»Ñ ÐžÐ¡>: %d"
+
+#: nm.c:350 readelf.c:8628 readelf.c:8682
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<невідомий>: %d"
+
+#: nm.c:390
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Ð†Ð½Ð´ÐµÐºÑ Ð°Ñ€Ñ…Ñ–Ð²Ñƒ:\n"
+
+#: nm.c:1258
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ðевизначені Ñимволи з %s:\n"
+"\n"
+
+#: nm.c:1260
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Символи з %s:\n"
+"\n"
+
+#: nm.c:1262 nm.c:1313
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Ðазва Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐšÐ»Ð°Ñ Ð¢Ð¸Ð¿ Розмір РÑдок Розділ\n"
+"\n"
+
+#: nm.c:1265 nm.c:1316
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Ðазва Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐšÐ»Ð°Ñ Ð¢Ð¸Ð¿ Розмір РÑдок Розділ\n"
+"\n"
+
+#: nm.c:1309
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ðевизначені Ñимволи з %s[%s]:\n"
+"\n"
+
+#: nm.c:1311
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Символи з %s[%s]:\n"
+"\n"
+
+#: nm.c:1403
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr "Ширина друку не була ініціалізована (%d)"
+
+#: nm.c:1631
+msgid "Only -X 32_64 is supported"
+msgstr "ПідтримуютьÑÑ Ð»Ð¸ÑˆÐµ -X 32_64"
+
+#: nm.c:1660
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ€Ð°Ð·Ð¾Ð¼ ключів --size-sort та --undefined-only"
+
+#: nm.c:1661
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "не дає даних на вивід, оÑкільки невизначені Ñимволи не мають розмір."
+
+#: nm.c:1689
+#, c-format
+msgid "data size %ld"
+msgstr "розмір даних %ld"
+
+#: objcopy.c:473 srconv.c:1732
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "ВикориÑтаннÑ: %s [ключі] in-файл [out-файл]\n"
+
+#: objcopy.c:474
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " Копіює двійковий файл, можливо, перетворюючи його у процеÑÑ–\n"
+
+#: objcopy.c:476
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set output arch, when input is arch-less\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff objects.\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" --compress-debug-sections Compress DWARF debug sections using zlib\n"
+" --decompress-debug-sections Decompress DWARF debug sections using zlib\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"
+msgstr ""
+" -I --input-target <bfd-назва> Вважати вхідний файл файлом у форматі <bfd-назва>\n"
+" -O --output-target <bfd-назва> Створити файл у форматі <bfd-назва>\n"
+" -B --binary-architecture <арх> Ð’Ñтановити архітектуру Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° виводу, Ñкщо вхідний файл двійковий\n"
+" -F --target <bfd-назва> Ð’Ñтановити вхідний формат та формат виводу у <bfd-назва>\n"
+" --debugging Якщо можна, перетворити діагноÑтичні дані\n"
+" -p --preserve-dates Копіювати Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸/доÑтупу у вивід\n"
+" -j --only-section <назва> Копіювати розділ <назва> у вивід\n"
+" --add-gnu-debuglink=<файл> Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð·Ð²'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .gnu_debuglink в <файл>\n"
+" -R --remove-section <назва> Видалити розділ <назва> з виводу\n"
+" -S --strip-all Видалити вÑе Ñимволи та інформацію щодо переÑуваннÑ\n"
+" -g --strip-debug Видалити вÑÑ– діагноÑтичні Ñимволи та розділи\n"
+" --strip-unneeded Видалити вÑÑ– Ñимволи, що непотрібні Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ\n"
+" -N --strip-symbol <назва> Ðе копіювати Ñимвол <назва>\n"
+" --strip-unneeded-symbol <назва>\n"
+" Ðе копіювати Ñимвол <назва>, Ñкщо він не потрібен\n"
+" Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑуваннÑ\n"
+" --only-keep-debug Залишити лише діагноÑтичні дані\n"
+" --extract-symbol Вилучити вміÑÑ‚ розділу, але зберегти Ñимволи\n"
+" -K --keep-symbol <назва> Копіювати лише Ñимвол <назва>\n"
+" --keep-file-symbols Ðе обрізати файлові Ñимволи\n"
+" --localize-hidden Увімкнути уÑÑ– приховані Ñимволи ELF у локальні\n"
+" -L --localize-symbol <назва> ПримуÑово позначати Ñимвол <назва> Ñк локальний\n"
+" --globalize-symbol <назва> ПримуÑово позначати Ñимвол <назва> Ñк загальний\n"
+" -G --keep-global-symbol <назва> Локалізувати вÑÑ– Ñимволи, окрім <назва>\n"
+" -W --weaken-symbol <назва> ПримуÑово позначити Ñимвол <назва> Ñк Ñлабкий\n"
+" --weaken ПримуÑово позначити глобальні Ñимволи Ñк Ñлабкі\n"
+" -w --wildcard Дозволити маÑку при порівнÑнні Ñимволів\n"
+" -x --discard-all Видалити вÑе незагальні Ñимволи\n"
+" -X --discard-locals Видалити уÑÑ– Ñимволи, Ñтворені компілÑтором\n"
+" -i --interleave <чиÑло> Копіювати лише один байт через кожне <чиÑло> байт\n"
+" -b --byte <номер> Вибрати байт <номер> у кожному блоці, що чергуєтьÑÑ\n"
+" --gap-fill <значеннÑ> Заповнити проміжки між розділами <значеннÑм>\n"
+" --pad-to <адреÑ> Заповнити оÑтанній розділ до адреÑи <адреÑ>\n"
+" --set-start <адреÑа> Ð’Ñтановити початкову адреÑу в <адреÑа>\n"
+" {--change-start|--adjust-start} <приріÑÑ‚>\n"
+" Додати <приріÑÑ‚> до початкової адреÑи\n"
+" {--change-addresses|--adjust-vma} <приріÑÑ‚>\n"
+" Додати <приріÑÑ‚> до LMA, VMA та початкової адреÑ\n"
+" {--change-section-address|--adjust-section-vma} <назва>{=|+|-}<значеннÑ>\n"
+" Змінити LMA та VMA розділу <назва> на <значеннÑ>\n"
+" --change-section-lma <назва>{=|+|-}<значеннÑ>\n"
+" Змінити LMA розділу <назва> на <значеннÑ>\n"
+" --change-section-vma <назва>{=|+|-}<значеннÑ>\n"
+" Змінити VMA розділу <назва> на <значеннÑ>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Попередити, Ñкщо вказаного розділу не Ñ–Ñнує\n"
+" --set-section-flags <назва>=<ознаки>\n"
+" Ð’Ñтановити влаÑтивоÑÑ‚Ñ– розділу <назва> у <ознаки>\n"
+" --add-section <назва>=<файл> Додати розділ <назва>, знайдений у <файлі>, на вивід\n"
+" --rename-section <Ñтар>=<нов>[,<ознаки>] Перейменувати розділ <Ñтар> на <нов>\n"
+" --change-leading-char ПримуÑово викориÑтовувати Ñтиль початкової літери Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ виводу\n"
+" --remove-leading-char Вилучати початкову літеру з глобальних Ñимволів\n"
+" --reverse-bytes=<чиÑло> Зворотний порÑдок <чиÑло> байтів за раз, у розділів із вміÑтом\n"
+" --redefine-sym <Ñтар>=<нов> Перевизначити назву Ñимволу <Ñтар> на <нов>\n"
+" --redefine-syms <файл> --redefine-sym Ð´Ð»Ñ Ð²ÑÑ–Ñ… пар Ñимволів,\n"
+" перелічених у <файлі>\n"
+" --srec-len <чиÑло> Обмежити довжину S-запиÑів, що ÑтворюютьÑÑ\n"
+" --srec-forceS3 Обмежити тип Ñтворених S-запиÑів до S3\n"
+" --strip-symbols <файл> -N Ð´Ð»Ñ Ð²ÑÑ–Ñ… Ñимволів, що перелічені у <файлі>\n"
+" --strip-unneeded-symbols <файл>\n"
+" --strip-unneeded-symbol Ð´Ð»Ñ Ð²ÑÑ–Ñ… Ñимволів, перелічених\n"
+" в <файлі>\n"
+" --keep-symbols <файл> -K Ð´Ð»Ñ Ð²ÑÑ–Ñ… Ñимволів, перелічених у <файлі>\n"
+" --localize-symbols <файл> -L Ð´Ð»Ñ Ð²ÑÑ–Ñ… Ñимволів, перелічених у <файлі>\n"
+" --globalize-symbols <файл> --globalize-symbol Ð´Ð»Ñ Ð²Ñього вміÑту у <файлі>\n"
+" --keep-global-symbols <файл> -G Ð´Ð»Ñ Ð²ÑÑ–Ñ… Ñимволів, перелічених у <файлі>\n"
+" --weaken-symbols <файл> -W Ð´Ð»Ñ Ð²ÑÑ–Ñ… Ñимволів, перелічених у <файлі>\n"
+" --alt-machine-code <індекÑ> ВикориÑтовувати альтернативний код машини Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ\n"
+" --writable-text Позначити текÑÑ‚ виводу Ñк перезапиÑуваний\n"
+" --readonly-text Позначити текÑÑ‚ виводу Ñк захищений від запиÑу\n"
+" --pure Позначити файл виводу з розбиттÑм на Ñторінки за викликом\n"
+" --impure Позначити файл виводу Ñк змішаний\n"
+" --prefix-symbols <префікÑ> Додати <префікÑ> на початок назви кожного Ñимволу\n"
+" --prefix-sections <префікÑ> Додати <префікÑ> на початок назви кожного розділу\n"
+" --prefix-alloc-sections <префікÑ>\n"
+" Додати <префікÑ> на початок назви кожного\n"
+" розділу, що призначаєтьÑÑ\n"
+" --file-alignment <чиÑло> Ð’Ñтановити Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² PE у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ <чиÑло>\n"
+" --heap <reserve>[,<commit>] Ð’Ñтановити Ð´Ð»Ñ ÐºÑƒÐ¿Ð¸ reserve/commit PE Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ <reserve>/\n"
+" <commit>\n"
+" --image-base <адреÑа> Ð’Ñтановити Ð´Ð»Ñ Ð¾Ñнови образу PE Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ <адреÑа>\n"
+" --section-alignment <чиÑло> Ð’Ñтановити Ð´Ð»Ñ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² PE Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ <чиÑло>\n"
+" --stack <reserve>[,<commit>] Ð’Ñтановити Ð´Ð»Ñ Ñтека reserve/commit PE Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ <reserve>/\n"
+" <commit>\n"
+" --subsystem <назва>[:<верÑÑ–Ñ>]\n"
+" Ð’Ñтановити Ð´Ð»Ñ Ð¿Ñ–Ð´ÑиÑтеми PE Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ <назва> [Ñ– <верÑÑ–Ñ>]\n"
+" --compress-debug-sections СтиÑнути розділі діагноÑтики DWARF за допомогою zlib\n"
+" --decompress-debug-sections Розпакувати розділи діагноÑтики DWARF за допомогою zlib\n"
+" -v --verbose Перелічити вÑÑ– змінені об'єктні файли\n"
+" @<файл> Читати ключі з <файла>\n"
+" -V --version ВивеÑти номер верÑÑ–Ñ— цієї програми\n"
+" -h --help ВивеÑти цю довідку\n"
+" --info Показати ÑпиÑок підтримуваних форматів об'єктів та архітектур\n"
+
+#: objcopy.c:583
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "ВикориÑтаннÑ: %s <ключі> in-файл(и)\n"
+
+#: objcopy.c:584
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr " ВидалÑÑ” Ñимволи та розділи з файлів\n"
+
+#: objcopy.c:586
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target=<bfd-назва> ВважаєтьÑÑ Ð²Ñ…Ñ–Ð´Ð½Ð¸Ð¹ файл у форматі <bfd-назва>\n"
+" -O --output-target=<bfd-назва> Створити файл Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ в форматі <bfd-назва>\n"
+" -F --target=<bfd-назва> Ð’Ñтановити вхідний формати та формат виводу в <bfd-назва>\n"
+" -p --preserve-dates Копіювати Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸/доÑтупу у вивід\n"
+" -R --remove-section <назва> Видалити розділ <назва> з виводу\n"
+" -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"
+" --keep-file-symbols Ðе обрізати Ñимволи у файлі\n"
+" -w --wildcard Дозволити маÑку при порівнÑнні Ñимволів\n"
+" -x --discard-all Видалити вÑÑ– не глобальні Ñимволи\n"
+" -X --discard-locals Видалити вÑÑ– Ñимволи, згенеровані компілÑтором\n"
+" -v --verbose Перелічити вÑÑ– змінені об'єктні файли\n"
+" -V --version ВивеÑти номер верÑÑ–Ñ— цієї програми\n"
+" -h --help ВивеÑти цю довідку\n"
+" --info Перелічити підтримувані формати об'єктів та архітектури\n"
+" -o <файл> ПоміÑтити оброблені вихідні дані у <файл>\n"
+
+#: objcopy.c:659
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "нерозпізнана ознака розділу `%s'"
+
+#: objcopy.c:660
+#, c-format
+msgid "supported flags: %s"
+msgstr "непідтримувані ознаки: %s"
+
+#: objcopy.c:761
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "неможливо відкрити '%s': %s"
+
+#: objcopy.c:764 objcopy.c:3417
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: помилка при fread"
+
+#: objcopy.c:837
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: ПропуÑкаєтьÑÑ ÑміттÑ, що знайдене у цьому Ñ€Ñдку"
+
+#: objcopy.c:1153
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr "Ñимвол `%s' не обрізуєтьÑÑ, оÑкільки його назва перелічена при переміщенні"
+
+#: objcopy.c:1236
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s: Багатократне Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñимволу \"%s\""
+
+#: objcopy.c:1240
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s: Символ \"%s\" Ñ” ціллю більш, ніж одного перевизначеннÑ"
+
+#: objcopy.c:1268
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "неможливо відкрити файл Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñимволу %s (помилка: %s)"
+
+#: objcopy.c:1346
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: наприкінці Ñ€Ñдка знайдено ÑміттÑ"
+
+#: objcopy.c:1349
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: відÑÑƒÑ‚Ð½Ñ Ð½Ð°Ð·Ð²Ð° нового Ñимволу"
+
+#: objcopy.c:1359
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: передчаÑний кінець файла"
+
+#: objcopy.c:1385
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "stat повернув від'ємний розмір Ð´Ð»Ñ `%s'"
+
+#: objcopy.c:1397
+#, c-format
+msgid "copy from `%s' [unknown] to `%s' [unknown]\n"
+msgstr "ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð· `%s' [невідомо] у `%s' [невідомо]\n"
+
+#: objcopy.c:1454
+msgid "Unable to change endianness of input file(s)"
+msgstr "Ðеможливо змінити endianness вхідного файла"
+
+#: objcopy.c:1463
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð· `%s' [%s] у `%s' [%s]\n"
+
+#: objcopy.c:1512
+#, c-format
+msgid "Input file `%s' ignores binary architecture parameter."
+msgstr "У файлі вхідних даних, «%s», ігноруєтьÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ двійкової архітектури."
+
+#: objcopy.c:1520
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "Ðеможливо визначити формат вхідного файла `%s'"
+
+#: objcopy.c:1523
+#, c-format
+msgid "Output file cannot represent architecture `%s'"
+msgstr "Файл виведених даних не може предÑтавити архітектуру «%s»"
+
+#: objcopy.c:1586
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr "попередженнÑ: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñƒ файлі (0x%s) > Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ñƒ розділі (0x%s)"
+
+#: objcopy.c:1645
+#, c-format
+msgid "can't add section '%s'"
+msgstr "не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ розділ «%s»"
+
+#: objcopy.c:1659
+#, c-format
+msgid "can't create section `%s'"
+msgstr "не вдалоÑÑ Ñтворити розділ «%s»"
+
+#: objcopy.c:1705
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr "не вдалоÑÑ Ñтворити розділ діагноÑтичних зв’Ñзків «%s»"
+
+#: objcopy.c:1798
+msgid "Can't fill gap after section"
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ проміжок піÑÐ»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
+
+#: objcopy.c:1822
+msgid "can't add padding"
+msgstr "не вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ заповненнÑ"
+
+#: objcopy.c:1913
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr "не вдалоÑÑ Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ розділ діагноÑтичних зв’Ñзків «%s»"
+
+#: objcopy.c:1976
+msgid "error copying private BFD data"
+msgstr "помилка під Ñ‡Ð°Ñ Ñпроби ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸Ñ… даних BFD"
+
+#: objcopy.c:1987
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr "Ñ†Ñ Ñ†Ñ–Ð»ÑŒ не підтримує %lu альтернативних машинних кодів"
+
+#: objcopy.c:1991
+msgid "treating that number as an absolute e_machine value instead"
+msgstr "натоміÑÑ‚ÑŒ це чиÑло вважаєтьÑÑ Ð°Ð±Ñолютним значеннÑм e_machine"
+
+#: objcopy.c:1995
+msgid "ignoring the alternative value"
+msgstr "ігноруєтьÑÑ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ðµ значеннÑ"
+
+#: objcopy.c:2027 objcopy.c:2063
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr "неможливо Ñтворити тимчаÑовий каталог Ð´Ð»Ñ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð°Ñ€Ñ…Ñ–Ð²Ñƒ (помилка: %s)"
+
+#: objcopy.c:2093
+msgid "Unable to recognise the format of file"
+msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ формат файла"
+
+#: objcopy.c:2220
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "помилка: вхідний файл '%s' порожній"
+
+#: objcopy.c:2364
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "Багатократні Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s"
+
+#: objcopy.c:2415
+msgid "error in private header data"
+msgstr "помилка у даних закритого заголовка"
+
+#: objcopy.c:2493
+msgid "failed to create output section"
+msgstr "не вдалоÑÑ Ñтворити розділ виведеннÑ"
+
+#: objcopy.c:2507
+msgid "failed to set size"
+msgstr "не вдалоÑÑ Ð²Ñтановити розмір"
+
+#: objcopy.c:2521
+msgid "failed to set vma"
+msgstr "не вдалоÑÑ Ð·Ð°Ð´Ð°Ñ‚Ð¸ vma"
+
+#: objcopy.c:2546
+msgid "failed to set alignment"
+msgstr "не вдалоÑÑ Ð²Ñтановити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ"
+
+#: objcopy.c:2580
+msgid "failed to copy private data"
+msgstr "не вдалоÑÑ Ñкопіювати закриті дані"
+
+#: objcopy.c:2662
+msgid "relocation count is negative"
+msgstr "лічильник переÑÑƒÐ²Ð°Ð½Ð½Ñ Ñ” від’ємним"
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2723
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÑтавити байти у зворотному порÑдку: довжина розділу %s має ділитиÑÑ Ð±ÐµÐ· залишку на %d"
+
+#: objcopy.c:2909
+msgid "can't create debugging section"
+msgstr "не вдалоÑÑ Ñтворити розділ діагноÑтики"
+
+#: objcopy.c:2922
+msgid "can't set debugging section contents"
+msgstr "не вдалоÑÑ Ð²Ñтановити вміÑÑ‚ діагноÑтичного розділу"
+
+#: objcopy.c:2930
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr "невідомо, Ñк запиÑувати діагноÑтичні дані Ð´Ð»Ñ %s"
+
+#: objcopy.c:3073
+msgid "could not create temporary file to hold stripped copy"
+msgstr "не вдалоÑÑ Ñтворити файл тимчаÑових даних Ð´Ð»Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾Ñ— копії"
+
+#: objcopy.c:3145
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr "%s: помилковий Ð·Ð°Ð¿Ð¸Ñ Ð²ÐµÑ€ÑÑ–Ñ— у підÑиÑтемі PE"
+
+#: objcopy.c:3175
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr "невідома підÑиÑтема PE: %s"
+
+#: objcopy.c:3237
+msgid "byte number must be non-negative"
+msgstr "номер байту має бути не від'ємним"
+
+#: objcopy.c:3243
+#, c-format
+msgid "architecture %s unknown"
+msgstr "архітектура %s невідома"
+
+#: objcopy.c:3251
+msgid "interleave must be positive"
+msgstr "Ñ‡ÐµÑ€Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°Ñ” бути додатнім"
+
+#: objcopy.c:3260
+msgid "interleave width must be positive"
+msgstr "ширина Ñ‡ÐµÑ€Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°Ñ” бути додатною"
+
+#: objcopy.c:3280 objcopy.c:3288
+#, c-format
+msgid "%s both copied and removed"
+msgstr "обидва %s Ñкопійовані та видалені"
+
+#: objcopy.c:3387 objcopy.c:3467 objcopy.c:3575 objcopy.c:3606 objcopy.c:3630
+#: objcopy.c:3634 objcopy.c:3654
+#, c-format
+msgid "bad format for %s"
+msgstr "некоректний формат Ð´Ð»Ñ %s"
+
+#: objcopy.c:3399
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "неможливо відкрити: %s: %s"
+
+#: objcopy.c:3544
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "ПопередженнÑ: обрізуєтьÑÑ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð¼Ñ–Ð¶ÐºÑƒ от 0x%s до 0x%x"
+
+#: objcopy.c:3705
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr "невідомий параметр довгих назв розділів, «%s»"
+
+#: objcopy.c:3723
+msgid "unable to parse alternative machine code"
+msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ альтернативний машинний код"
+
+#: objcopy.c:3768
+msgid "number of bytes to reverse must be positive and even"
+msgstr "чиÑло байтів, порÑдок Ñких має змінитиÑÑ Ð½Ð° зворотній повинно бути додатнім та парним"
+
+#: objcopy.c:3771
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr "ПопередженнÑ: попереднє Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ --reverse-bytes, що дорівнює %d буде проігнороване"
+
+#: objcopy.c:3786
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr "%s: некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ --heap"
+
+#: objcopy.c:3792
+#, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr "%s: некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð½ÐµÑÐµÐ½Ð½Ñ Ð´Ð»Ñ --heap"
+
+#: objcopy.c:3817
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr "%s: некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ --stack"
+
+#: objcopy.c:3823
+#, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr "%s: некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð½ÐµÑÐµÐ½Ð½Ñ Ð´Ð»Ñ --stack"
+
+#: objcopy.c:3852
+msgid "interleave start byte must be set with --byte"
+msgstr "початок Ñ‡ÐµÑ€Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°Ñ” бути задано за допомогою --byte"
+
+#: objcopy.c:3855
+msgid "byte number must be less than interleave"
+msgstr "номер байту має бути меншим чергуваннÑ"
+
+#: objcopy.c:3858
+msgid "interleave width must be less than or equal to interleave - byte`"
+msgstr "ширина Ñ‡ÐµÑ€Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°Ñ” бути меншою або рівною чергуванню - байт`"
+
+#: objcopy.c:3885
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr "невідоме вхідне Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ EFI: %s"
+
+#: objcopy.c:3916
+#, c-format
+msgid "unknown output EFI target: %s"
+msgstr "невідоме оÑтаточне Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ EFI: %s"
+
+#: objcopy.c:3929
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr "попередженнÑ: неможливо знайти '%s'. СиÑтемне Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку: %s"
+
+#: objcopy.c:3941
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr "попередженнÑ: не вдалоÑÑ Ñтворити тимчаÑовий файл доки копіюєтьÑÑ '%s', (помилка: %s)"
+
+#: objcopy.c:3969 objcopy.c:3983
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s ніколи не викориÑтовуєтьÑÑ"
+
+#: objdump.c:201
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "ВикориÑтаннÑ: %s <ключі> <файл(и)>\n"
+
+#: objdump.c:202
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " Відображає інформацію з об'єкта <файл(и)>.\n"
+
+#: objdump.c:203
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " Має бути вказаний принаймні один з наÑтупних ключів:\n"
+
+#: objdump.c:204
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -P, --private=OPT,OPT... Display object format specific contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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[lLiaprmfFsoRt] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+msgstr ""
+" -a, --archive-headers ВивеÑти інформацію заголовка архіву\n"
+" -f, --file-headers ВивеÑти вміÑÑ‚ заголовка вÑього файла\n"
+" -P, --private=КЛЮЧ,КЛЮЧ... Показати Ñпецифічний Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ об’єктів вміÑÑ‚\n"
+" -p, --private-headers ВивеÑти вміÑÑ‚ заголовка файла, Ñпецифічного Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ об'єктів\n"
+" -h, --[section-]headers ВивеÑти вміÑÑ‚ заголовків розділів\n"
+" -x, --all-headers ВивеÑти вміÑÑ‚ вÑÑ–Ñ… заголовків\n"
+" -d, --disassemble ВивеÑти вміÑÑ‚ аÑемблера виконуваних розділів\n"
+" -D, --disassemble-all ВивеÑти вміÑÑ‚ аÑемблера вÑÑ–Ñ… розділів\n"
+" -S, --source Перемішати первинний код з дизаÑемблюваннÑм\n"
+" -s, --full-contents ВивеÑти повний вміÑÑ‚ вÑÑ–Ñ… запитаних розділів\n"
+" -g, --debugging ВивеÑти діагноÑтичну інформацію у об'єктному файлі\n"
+" -e, --debugging-tags ВивеÑти діагноÑтичну інформацію в Ñтилі ctags\n"
+" -G, --stabs ВивеÑти (в Ñирій формі) будь-Ñку інформацію STABS у файлі\n"
+" -W[lLiaprmfFsoRt] або\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Показати дані DWARF у файлі\n"
+" -t, --syms ВивеÑти вміÑÑ‚ таблиць Ñимволів\n"
+" -T, --dynamic-syms ВивеÑти вміÑÑ‚ таблиці динамічних Ñимволів\n"
+" -r, --reloc ВивеÑти пункти Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñƒ файлі\n"
+" -R, --dynamic-reloc ВивеÑти пункти динамічного Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñƒ файлі\n"
+" @<файл> Читати ключі з <файла>\n"
+" -v, --version ВивеÑти номер верÑÑ–Ñ— цієї програми\n"
+" -i, --info ВивеÑти ÑпиÑок підтримуваних форматів об'єктів та архітектур\n"
+" -H, --help ВивеÑти цю інформацію\n"
+
+#: objdump.c:236
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" ÐаÑтупні ключі Ñ” необов'Ñзковими:\n"
+
+#: objdump.c:237
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a single line for -d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+msgstr ""
+" -b, --target=BFD-ÐÐЗВРВказати цільовий формат об'єкта Ñк BFD-ÐÐЗВУ\n"
+" -m, --architecture=ÐœÐШИÐРВказати цільову архітектуру Ñк ÐœÐШИÐÐ\n"
+" -j, --section=ÐÐЗВРВивеÑти інформацію лише Ð´Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ ÐÐЗВУ\n"
+" -M, --disassembler-options=OPT Передати текÑÑ‚ OPT у дизаÑемблер\n"
+" -EB --endian=big Вважати при дизаÑемблюванні порÑдок байтів зворотним\n"
+" -EL --endian=little Вважати при дизаÑемблюванні порÑдок байтів прÑмим\n"
+" --file-start-context Включити контекÑÑ‚ з початку файла (з -S)\n"
+" -I, --include=КÐТÐЛОГ Додати КÐТÐЛОГ до ÑпиÑку пошуку первинних файлів\n"
+" -l, --line-numbers Включити номера Ñ€Ñдків та назви файлів на виводі\n"
+" -F, --file-offsets Включити зÑуви файлів до показаних даних\n"
+" -C, --demangle[=СТИЛЬ] Декодувати Ñкоректовані/оброблені назви Ñимволів\n"
+" СТИЛЬ, Ñкщо вказаний, може бути `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" або `gnat'\n"
+" -w, --wide Форматувати вивід Ð´Ð»Ñ Ð±Ñ–Ð»ÑŒÑˆ, ніж 80 колонок\n"
+" -z, --disassemble-zeroes Ðе пропуÑкати блоки нулів при дизаÑемблюванні\n"
+" --start-address=ÐДРЕСРОбробити лише дані, адреÑа Ñких >= ÐДРЕСÐ\n"
+" --stop-address=ÐДРЕСРОбробити лише дані, адреÑа Ñких <= ÐДРЕСÐ\n"
+" --prefix-addresses ВивеÑти повну адреÑу при дизаÑемблюванні\n"
+" --[no-]show-raw-insn ВивеÑти hex при Ñимволічному дизаÑемблюванні\n"
+" --insn-width=ШИРИÐРВивеÑти ШИРИÐРбайтів у одному Ñ€Ñдку Ð´Ð»Ñ -d\n"
+" --adjust-vma=ЗСУВ Додати ЗСУВ до вÑÑ–Ñ… Ð°Ð´Ñ€ÐµÑ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð², що виводÑÑ‚ÑŒÑÑ\n"
+" --special-syms Включити Ñпеціальні Ñимволи у дампи Ñимволів\n"
+" --prefix=ПРЕФІКС Додати ПРЕФІКС до абÑолютних шлÑхів Ð´Ð»Ñ -S\n"
+" --prefix-strip=РІВЕÐЬ Обрізати початкові назви каталогів Ð´Ð»Ñ -S\n"
+
+#: objdump.c:263
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+"\n"
+msgstr ""
+" --dwarf-depth=N Ðе показувати DIE глибиною N або більше\n"
+" --dwarf-start=N Показувати DIE, що починаютьÑÑ Ð· N, на тій Ñамій глибині\n"
+" або більшій\n"
+"\n"
+
+#: objdump.c:275
+#, c-format
+msgid ""
+"\n"
+"Options supported for -P/--private switch:\n"
+msgstr ""
+"\n"
+"Ключі, підтримку Ñких передбачено Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ñ‡Ð° -P/--private:\n"
+
+#: objdump.c:426
+#, c-format
+msgid "section '%s' mentioned in a -j option, but not found in any input file"
+msgstr "розділ «%s» згадано у параметрі -j, але його не знайдено у жодному файлі вхідних даних"
+
+#: objdump.c:530
+#, c-format
+msgid "Sections:\n"
+msgstr "Розділи:\n"
+
+#: objdump.c:533 objdump.c:537
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Інд Ðазва Розмір VMA LMA Файл Вирівн"
+
+#: objdump.c:539
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Инд Ðазва Розмір VMA LMA Файл Вирівн"
+
+#: objdump.c:543
+#, c-format
+msgid " Flags"
+msgstr " Ознаки"
+
+#: objdump.c:586
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s: не динамічний об'єкт"
+
+#: objdump.c:1012 objdump.c:1036
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr " (зÑув у файлі: 0x%lx)"
+
+#: objdump.c:1662
+#, c-format
+msgid "disassemble_fn returned length %d"
+msgstr "disassemble_fn повернуто довжину %d"
+
+#: objdump.c:1967
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+"\n"
+"ДизаÑÐµÐ¼Ð±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s:\n"
+
+#: objdump.c:2143
+#, c-format
+msgid "can't use supplied machine %s"
+msgstr "не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтати надану архітектуру, %s"
+
+#: objdump.c:2162
+#, c-format
+msgid "can't disassemble for architecture %s\n"
+msgstr "дизаÑÐµÐ¼Ð±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ %s неможливе\n"
+
+#: objdump.c:2242 objdump.c:2265
+#, c-format
+msgid ""
+"\n"
+"Can't get contents for section '%s'.\n"
+msgstr ""
+"\n"
+"Ðеможливо отримати вміÑÑ‚ розділу '%s'.\n"
+
+#: objdump.c:2406
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"Розділ %s відÑутній\n"
+"\n"
+
+#: objdump.c:2415
+#, c-format
+msgid "reading %s section of %s failed: %s"
+msgstr "помилка під Ñ‡Ð°Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s %s: %s"
+
+#: objdump.c:2459
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"ЗміÑÑ‚ розділу %s:\n"
+"\n"
+
+#: objdump.c:2590
+#, c-format
+msgid "architecture: %s, "
+msgstr "архітектура: %s, "
+
+#: objdump.c:2593
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "ознаки 0x%08x:\n"
+
+#: objdump.c:2607
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"початкова адреÑа 0x"
+
+#: objdump.c:2633
+msgid "option -P/--private not supported by this file"
+msgstr "ключ -P/--private не підтримуєтьÑÑ Ñ†Ð¸Ð¼ файлом"
+
+#: objdump.c:2657
+#, c-format
+msgid "target specific dump '%s' not supported"
+msgstr "підтримки Ñпецифічних до Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð°Ð¼Ð¿Ñ–Ð² «%s» не передбачено"
+
+#: objdump.c:2721
+#, c-format
+msgid "Contents of section %s:"
+msgstr "ВміÑÑ‚ розділу %s:"
+
+#: objdump.c:2723
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr " (ПочинаєтьÑÑ Ð· такого зÑуву у файлі: 0x%lx)"
+
+#: objdump.c:2729
+msgid "Reading section failed"
+msgstr "Спроба Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ завершилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾"
+
+#: objdump.c:2832
+#, c-format
+msgid "no symbols\n"
+msgstr "немає Ñимволів\n"
+
+#: objdump.c:2839
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr "немає інформації про Ñимвол номер %ld\n"
+
+#: objdump.c:2842
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "неможливо визначити тип Ñимволу номер %ld\n"
+
+#: objdump.c:3163
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: формат файла %s\n"
+
+#: objdump.c:3223
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s: вивід діагноÑтичних даних завершивÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ"
+
+#: objdump.c:3327
+#, c-format
+msgid "In archive %s:\n"
+msgstr "В архіві %s:\n"
+
+#: objdump.c:3438
+msgid "error: the start address should be before the end address"
+msgstr "помилка: початкова адреÑа має бути меншою за кінцеву адреÑу"
+
+#: objdump.c:3443
+msgid "error: the stop address should be after the start address"
+msgstr "помилка: кінцева адреÑа має бути більшою за початкову адреÑу"
+
+#: objdump.c:3455
+msgid "error: prefix strip must be non-negative"
+msgstr "помилка: префікÑ, що обрізаєтьÑÑ, має бути невід’ємним"
+
+#: objdump.c:3460
+msgid "error: instruction width must be positive"
+msgstr "помилка: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð¸ інÑтрукції має бути додатним"
+
+#: objdump.c:3469
+msgid "unrecognized -E option"
+msgstr "нерозпізнаний ключ -E"
+
+#: objdump.c:3480
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "нерозпізнаний --endian тип `%s'"
+
+#: od-xcoff.c:75
+#, c-format
+msgid ""
+"For XCOFF files:\n"
+" header Display the file header\n"
+" aout Display the auxiliary header\n"
+" sections Display the section headers\n"
+" syms Display the symbols table\n"
+" relocs Display the relocation entries\n"
+" lineno Display the line number entries\n"
+" loader Display loader section\n"
+" except Display exception table\n"
+" typchk Display type-check section\n"
+" traceback Display traceback tags\n"
+" toc Display toc symbols\n"
+msgstr ""
+"Ð”Ð»Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² XCOFF:\n"
+" header вивеÑти заголовок файла\n"
+" aout вивеÑти допоміжний заголовок\n"
+" sections вивеÑти заголовки розділів\n"
+" syms вивеÑти таблицю Ñимволів\n"
+" relocs вивеÑти запиÑи переÑувань\n"
+" lineno вивеÑти запиÑи номерів Ñ€Ñдків\n"
+" loader вивеÑти розділ завантажувача\n"
+" except вивеÑти таблицю виключень\n"
+" typchk вивеÑти розділ перевірки типів\n"
+" traceback вивеÑти теґи зворотного траÑуваннÑ\n"
+" toc вивеÑти Ñимволи toc\n"
+
+#: od-xcoff.c:416
+#, c-format
+msgid " nbr sections: %d\n"
+msgstr " к-ть розділів: %d\n"
+
+#: od-xcoff.c:417
+#, c-format
+msgid " time and date: 0x%08x - "
+msgstr " Ñ‡Ð°Ñ Ñ– дата: 0x%08x - "
+
+#: od-xcoff.c:419
+#, c-format
+msgid "not set\n"
+msgstr "не вÑтановлено\n"
+
+#: od-xcoff.c:426
+#, c-format
+msgid " symbols off: 0x%08x\n"
+msgstr " зÑув Ñимволів: 0x%08x\n"
+
+#: od-xcoff.c:427
+#, c-format
+msgid " nbr symbols: %d\n"
+msgstr " к-Ñ‚ÑŒ Ñимволів: %d\n"
+
+#: od-xcoff.c:428
+#, c-format
+msgid " opt hdr sz: %d\n"
+msgstr " опт. розм. заг.: %d\n"
+
+#: od-xcoff.c:429
+#, c-format
+msgid " flags: 0x%04x "
+msgstr " прапорці: 0x%04x "
+
+#: od-xcoff.c:443
+#, c-format
+msgid "Auxiliary header:\n"
+msgstr "Допоміжний заголовок:\n"
+
+#: od-xcoff.c:446
+#, c-format
+msgid " No aux header\n"
+msgstr " Ðемає допом. заголовка\n"
+
+#: od-xcoff.c:451
+#, c-format
+msgid "warning: optionnal header size too large (> %d)\n"
+msgstr "попередженнÑ: розмір додаткового заголовка Ñ” надто великим (> %d)\n"
+
+#: od-xcoff.c:457
+msgid "cannot read auxhdr"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ auxhdr"
+
+#: od-xcoff.c:522
+#, c-format
+msgid "Section headers (at %u+%u=0x%08x to 0x%08x):\n"
+msgstr "Заголовки розділів (з %u+%u=0x%08x до 0x%08x):\n"
+
+#: od-xcoff.c:527
+#, c-format
+msgid " No section header\n"
+msgstr " Ðемає заголовка розділу\n"
+
+#: od-xcoff.c:532 od-xcoff.c:544 od-xcoff.c:599
+msgid "cannot read section header"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ заголовок розділу"
+
+#: od-xcoff.c:558
+#, c-format
+msgid " Flags: %08x "
+msgstr " Прапорці: %08x "
+
+#: od-xcoff.c:566
+#, c-format
+msgid "overflow - nreloc: %u, nlnno: %u\n"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ - nreloc: %u, nlnno: %u\n"
+
+#: od-xcoff.c:587 od-xcoff.c:922 od-xcoff.c:978
+msgid "cannot read section headers"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ заголовки розділів"
+
+#: od-xcoff.c:646
+msgid "cannot read strings table length"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ довжину таблиці Ñ€Ñдків"
+
+#: od-xcoff.c:662
+msgid "cannot read strings table"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ таблицю Ñ€Ñдків"
+
+#: od-xcoff.c:670
+msgid "cannot read symbol table"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ таблицю Ñимволів"
+
+#: od-xcoff.c:685
+msgid "cannot read symbol entry"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ñимволу"
+
+#: od-xcoff.c:720
+msgid "cannot read symbol aux entry"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ допоміжний Ð·Ð°Ð¿Ð¸Ñ Ñимволу"
+
+#: od-xcoff.c:742
+#, c-format
+msgid "Symbols table (strtable at 0x%08x)"
+msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів (strtable з 0x%08x)"
+
+#: od-xcoff.c:747
+#, c-format
+msgid ""
+":\n"
+" No symbols\n"
+msgstr ""
+":\n"
+" Ðемає Ñимволів\n"
+
+#: od-xcoff.c:753
+#, c-format
+msgid " (no strings):\n"
+msgstr " (немає Ñ€Ñдків):\n"
+
+#: od-xcoff.c:755
+#, c-format
+msgid " (strings size: %08x):\n"
+msgstr " (розмір Ñ€Ñдків: %08x):\n"
+
+#. Translators: 'sc' is for storage class, 'off' for offset.
+#: od-xcoff.c:769
+#, c-format
+msgid " # sc value section type aux name/off\n"
+msgstr " # кз Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð» тип доп назва/зÑув\n"
+
+#. Section length, number of relocs and line number.
+#: od-xcoff.c:821
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+
+#. Section length and number of relocs.
+#: od-xcoff.c:828
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u\n"
+
+#: od-xcoff.c:891
+#, c-format
+msgid "offset: %08x"
+msgstr "зÑув: %08x"
+
+#: od-xcoff.c:934
+#, c-format
+msgid "Relocations for %s (%u)\n"
+msgstr "ПереÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ %s (%u)\n"
+
+#: od-xcoff.c:937
+msgid "cannot read relocations"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ переÑуваннÑ"
+
+#: od-xcoff.c:950
+msgid "cannot read relocation entry"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ñ‰Ð¾Ð´Ð¾ переÑуваннÑ"
+
+#: od-xcoff.c:990
+#, c-format
+msgid "Line numbers for %s (%u)\n"
+msgstr "Ðомери Ñ€Ñдків %s (%u)\n"
+
+#: od-xcoff.c:993
+msgid "cannot read line numbers"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ дані щодо номерів Ñ€Ñдків"
+
+#. Line number, symbol index and physical address.
+#: od-xcoff.c:997
+#, c-format
+msgid "lineno symndx/paddr\n"
+msgstr "â„–Ñ€Ñдка symndx/paddr\n"
+
+#: od-xcoff.c:1005
+msgid "cannot read line number entry"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ Ñ‰Ð¾Ð´Ð¾ номера Ñ€Ñдка"
+
+#: od-xcoff.c:1048
+#, c-format
+msgid "no .loader section in file\n"
+msgstr "у файлі немає розділу .loader\n"
+
+#: od-xcoff.c:1054
+#, c-format
+msgid "section .loader is too short\n"
+msgstr "розділ .loader є надто коротким\n"
+
+#: od-xcoff.c:1061
+#, c-format
+msgid "Loader header:\n"
+msgstr "Заголовок завантажувача:\n"
+
+#: od-xcoff.c:1063
+#, c-format
+msgid " version: %u\n"
+msgstr " верÑÑ–Ñ: %u\n"
+
+#: od-xcoff.c:1066
+#, c-format
+msgid " Unhandled version\n"
+msgstr " Ðепридатна до обробки верÑÑ–Ñ\n"
+
+#: od-xcoff.c:1071
+#, c-format
+msgid " nbr symbols: %u\n"
+msgstr " к-Ñ‚ÑŒ Ñимволів: %u\n"
+
+#: od-xcoff.c:1073
+#, c-format
+msgid " nbr relocs: %u\n"
+msgstr " к-Ñ‚ÑŒ переÑувань: %u\n"
+
+#. Import string table length.
+#: od-xcoff.c:1075
+#, c-format
+msgid " import strtab len: %u\n"
+msgstr " довжина імпортованої strtab: %u\n"
+
+#: od-xcoff.c:1078
+#, c-format
+msgid " nbr import files: %u\n"
+msgstr " к-ть імпортованих файлів: %u\n"
+
+#: od-xcoff.c:1080
+#, c-format
+msgid " import file off: %u\n"
+msgstr " зÑув імп. файла: %u\n"
+
+#: od-xcoff.c:1082
+#, c-format
+msgid " string table len: %u\n"
+msgstr " довж. табл. Ñ€Ñдків: %u\n"
+
+#: od-xcoff.c:1084
+#, c-format
+msgid " string table off: %u\n"
+msgstr " зÑув табл. Ñ€Ñдків: %u\n"
+
+#: od-xcoff.c:1087
+#, c-format
+msgid "Dynamic symbols:\n"
+msgstr "Динамічні Ñимволи:\n"
+
+#: od-xcoff.c:1094
+#, c-format
+msgid " %4u %08x %3u "
+msgstr " %4u %08x %3u "
+
+#: od-xcoff.c:1107
+#, c-format
+msgid " %3u %3u "
+msgstr " %3u %3u "
+
+#: od-xcoff.c:1116
+#, c-format
+msgid "(bad offset: %u)"
+msgstr "(помилковий відÑтуп: %u)"
+
+#: od-xcoff.c:1123
+#, c-format
+msgid "Dynamic relocs:\n"
+msgstr "Динамічні переÑуваннÑ:\n"
+
+#: od-xcoff.c:1163
+#, c-format
+msgid "Import files:\n"
+msgstr "Імпортовані файли:\n"
+
+#: od-xcoff.c:1195
+#, c-format
+msgid "no .except section in file\n"
+msgstr "у файлі немає розділу .except\n"
+
+#: od-xcoff.c:1203
+#, c-format
+msgid "Exception table:\n"
+msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½ÑŒ:\n"
+
+#: od-xcoff.c:1238
+#, c-format
+msgid "no .typchk section in file\n"
+msgstr "у файлі немає розділу .typchk\n"
+
+#: od-xcoff.c:1245
+#, c-format
+msgid "Type-check section:\n"
+msgstr "Розділ перевірки типів:\n"
+
+#: od-xcoff.c:1292
+#, c-format
+msgid " address beyond section size\n"
+msgstr " адреÑа поза межами розмірів розділу\n"
+
+#: od-xcoff.c:1302
+#, c-format
+msgid " tags at %08x\n"
+msgstr " теґи з %08x\n"
+
+#: od-xcoff.c:1380
+#, c-format
+msgid " number of CTL anchors: %u\n"
+msgstr " кількіÑÑ‚ÑŒ прив’Ñзок CTL: %u\n"
+
+#: od-xcoff.c:1399
+#, c-format
+msgid " Name (len: %u): "
+msgstr " Ðазва (довж.: %u): "
+
+#: od-xcoff.c:1402
+#, c-format
+msgid "[truncated]\n"
+msgstr "[обрізано]\n"
+
+#: od-xcoff.c:1421
+#, c-format
+msgid " (end of tags at %08x)\n"
+msgstr " (кінець теґів у %08x)\n"
+
+#: od-xcoff.c:1424
+#, c-format
+msgid " no tags found\n"
+msgstr " теґів не знайдено\n"
+
+#: od-xcoff.c:1428
+#, c-format
+msgid " Truncated .text section\n"
+msgstr " Обрізано розділ .text\n"
+
+#: od-xcoff.c:1513
+#, c-format
+msgid "TOC:\n"
+msgstr "ЗМІСТ:\n"
+
+#: od-xcoff.c:1556
+#, c-format
+msgid "Nbr entries: %-8u Size: %08x (%u)\n"
+msgstr "К-Ñ‚ÑŒ запиÑів: %-8u Розмір: %08x (%u)\n"
+
+#: od-xcoff.c:1640
+msgid "cannot read header"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ заголовок"
+
+#: od-xcoff.c:1648
+#, c-format
+msgid "File header:\n"
+msgstr "Заголовок файла:\n"
+
+#: od-xcoff.c:1649
+#, c-format
+msgid " magic: 0x%04x (0%04o) "
+msgstr " контр. Ñума: 0x%04x (0%04o) "
+
+#: od-xcoff.c:1653
+#, c-format
+msgid "(WRMAGIC: writable text segments)"
+msgstr "(WRMAGIC: придатні до запиÑу Ñегменти текÑту)"
+
+#: od-xcoff.c:1656
+#, c-format
+msgid "(ROMAGIC: readonly sharablee text segments)"
+msgstr "(ROMAGIC: придатні лише до Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñпільні текÑтові Ñегменти)"
+
+#: od-xcoff.c:1659
+#, c-format
+msgid "(TOCMAGIC: readonly text segments and TOC)"
+msgstr "(TOCMAGIC: придатні лише до Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñегменти Ñ– зміÑÑ‚)"
+
+#: od-xcoff.c:1662
+#, c-format
+msgid "unknown magic"
+msgstr "невідома контр. Ñума"
+
+#: od-xcoff.c:1669
+#, c-format
+msgid " Unhandled magic\n"
+msgstr " Ðепридатна до обробки контрольна Ñума\n"
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr "вказано неправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿Ñ€Ð°Ð³Ð¼Ð¸ code_page.\n"
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: Ðекоректний код типу 0x%x"
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment завершивÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ: %s"
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent завершивÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ: %s"
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf без попередньої функції"
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: неочікуваний .ef\n"
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: немає розпізнаних діагноÑтичних даних"
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "ОÑтанні пункти stabs перед помилкою:\n"
+
+#: readelf.c:268
+msgid "<none>"
+msgstr "<немає>"
+
+#: readelf.c:269
+msgid "<no-name>"
+msgstr "<без-назви>"
+
+#: readelf.c:270 readelf.c:5083 readelf.c:5594 readelf.c:8132 readelf.c:8250
+#: readelf.c:9233 readelf.c:9327 readelf.c:9388 readelf.c:12391
+#: readelf.c:12394
+msgid "<corrupt>"
+msgstr "<пошкоджено>"
+
+#: readelf.c:309
+#, c-format
+msgid "Unable to seek to 0x%lx for %s\n"
+msgstr "Ðеможливо знайти 0x%lx Ð´Ð»Ñ %s\n"
+
+#: readelf.c:324
+#, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Бракує пам'ÑÑ‚Ñ– при розподілі 0x%lx байт Ð´Ð»Ñ %s\n"
+
+#: readelf.c:334
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Ðеможливо прочитати 0x%lx байт з %s\n"
+
+#: readelf.c:638
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Ðевідомо про Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— архітектури машини\n"
+
+#: readelf.c:659 readelf.c:757
+msgid "32-bit relocation data"
+msgstr "32-бітові дані переÑуваннÑ"
+
+#: readelf.c:671 readelf.c:701 readelf.c:768 readelf.c:797
+msgid "out of memory parsing relocs\n"
+msgstr "бракує пам'ÑÑ‚Ñ– при розборі relocs\n"
+
+#: readelf.c:689 readelf.c:786
+msgid "64-bit relocation data"
+msgstr "64-бітові дані переÑуваннÑ"
+
+#: readelf.c:902
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr " ЗÑув Інфо Тип Знач.Ñимв. Ðазва Ñимволу + Addend\n"
+
+#: readelf.c:904
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr " ЗÑув Інфо Тип Знач.Ñимв Ðазва Ñимв. + Addend\n"
+
+#: readelf.c:909
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " ЗÑув Інфо Тип Знач.Ñимв Ðазва Ñимволу\n"
+
+#: readelf.c:911
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " ЗÑув Інфо Тип Знач.Ñимв Ðазва Ñимв.\n"
+
+#: readelf.c:919
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr " ЗÑув Інфо Тип Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñимв. Ðазва Ñимволу + Addend\n"
+
+#: readelf.c:921
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr " ЗÑув Інфо Тип Знач.Ñимв. Ðазва Ñимв. + Addend\n"
+
+#: readelf.c:926
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr " ЗÑув Інфо Тип Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñимв. Ðазва Ñимволу\n"
+
+#: readelf.c:928
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " ЗÑув Інфо Тип Знач.Ñимв. Ðазва Ñимв.\n"
+
+#: readelf.c:1245 readelf.c:1405 readelf.c:1413
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "нерозпізнаний: %-7lx"
+
+#: readelf.c:1270
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<невідомий addend: %lx>"
+
+#: readelf.c:1277
+#, c-format
+msgid " bad symbol index: %08lx"
+msgstr " помилковий Ñ–Ð½Ð´ÐµÐºÑ Ñимволу: %08lx"
+
+#: readelf.c:1363
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr "<Ñ–Ð½Ð´ÐµÐºÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñдків: %3ld>"
+
+#: readelf.c:1365
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<пошкоджений Ñ–Ð½Ð´ÐµÐºÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñдків: %3ld>"
+
+#: readelf.c:1758
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "Специфічний Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора: %lx"
+
+#: readelf.c:1782
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "Специфічний Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ð¹Ð½Ð¾Ñ— ÑиÑтеми: %lx"
+
+#: readelf.c:1786 readelf.c:2858
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<невідомий>: %lx"
+
+#: readelf.c:1799
+msgid "NONE (None)"
+msgstr "ÐЕМÐЄ (Ðемає)"
+
+#: readelf.c:1800
+msgid "REL (Relocatable file)"
+msgstr "REL (Переміщуваний файл)"
+
+#: readelf.c:1801
+msgid "EXEC (Executable file)"
+msgstr "EXEC (Виконуваний файл)"
+
+#: readelf.c:1802
+msgid "DYN (Shared object file)"
+msgstr "DYN (Спільний об'єктний файл)"
+
+#: readelf.c:1803
+msgid "CORE (Core file)"
+msgstr "CORE (ОÑновний файл)"
+
+#: readelf.c:1807
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "Специфічний Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора: (%x)"
+
+#: readelf.c:1809
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "Специфічний Ð´Ð»Ñ ÐžÐ¡: (%x)"
+
+#: readelf.c:1811
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<невідомий>: %x"
+
+#: readelf.c:1823
+msgid "None"
+msgstr "Ðемає"
+
+#: readelf.c:1994
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr "<невідомий>: 0x%x"
+
+#: readelf.c:2180
+msgid ", <unknown>"
+msgstr ", <невідомий>"
+
+#: readelf.c:2266 readelf.c:7485
+msgid "unknown"
+msgstr "невідомий"
+
+#: readelf.c:2267
+msgid "unknown mac"
+msgstr "невідомий mac"
+
+#: readelf.c:2331
+msgid ", relocatable"
+msgstr ", придатний до переÑуваннÑ"
+
+#: readelf.c:2334
+msgid ", relocatable-lib"
+msgstr ", придатна до переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ°"
+
+#: readelf.c:2357
+msgid ", unknown v850 architecture variant"
+msgstr ", невідомий варіант архітектури v850"
+
+#: readelf.c:2414
+msgid ", unknown CPU"
+msgstr ", невідомий процеÑор"
+
+#: readelf.c:2429
+msgid ", unknown ABI"
+msgstr ", невідомий ABI"
+
+#: readelf.c:2452 readelf.c:2486
+msgid ", unknown ISA"
+msgstr ", невідомий ISA"
+
+#: readelf.c:2663
+msgid "Standalone App"
+msgstr "Ізольована програма"
+
+#: readelf.c:2672
+msgid "Bare-metal C6000"
+msgstr "Bare-metal C6000"
+
+#: readelf.c:2682 readelf.c:3471 readelf.c:3487
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<невідомий: %x>"
+
+#. This message is probably going to be displayed in a 15
+#. character wide field, so put the hex value first.
+#: readelf.c:3108
+#, c-format
+msgid "%08x: <unknown>"
+msgstr "%08x: <невідомо>"
+
+#: readelf.c:3163
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "ВикориÑтаннÑ: readelf <ключі> elf-файл(и)\n"
+
+#: readelf.c:3164
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr " Відображає інформацію про вміÑÑ‚ файлів у форматі ELF\n"
+
+#: readelf.c:3165
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" --dyn-syms Display the dynamic symbol table\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as relocated bytes\n"
+" -w[lLiaprmfFsoRt] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" Ключі:\n"
+" -a --all Еквівалент -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° файла ELF\n"
+" -l --program-headers Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ–Ð² програми\n"
+" --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"
+" --dyn-syms Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ñ— таблиці Ñимволів\n"
+" -n --notes Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¾Ñновних запиÑів (Ñкщо Ñ”)\n"
+" -r --relocs Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½ÑŒ (Ñкщо Ñ”)\n"
+" -u --unwind Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про розклад (Ñкщо Ñ”)\n"
+" -d --dynamic Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñегменту (Ñкщо Ñ”)\n"
+" -V --version-info Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ñ Ð²ÐµÑ€Ñією (Ñкщо Ñ”)\n"
+" -A --arch-specific Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ—, Ñпецифічної Ð´Ð»Ñ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ (Ñкщо Ñ”).\n"
+" -c --archive-index Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ° Ñимволів або файлів у архіві\n"
+" -D --use-dynamic ВикориÑÑ‚Ð°Ð½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ñ— інформації розділу при виводі Ñимволів\n"
+" -x --hex-dump=<номер|назва> Дамп вміÑту розділу <номер|назва>\n"
+" -p --string-dump=<номер|назва>\n"
+" Дамп вміÑту розділу <номер|назва> у форматі Ñ€Ñдків\n"
+" -R --relocated-dump=<номер|назва>\n"
+" Дамп вміÑту розділу <номер|назва> у форматі переміщених байтів\n"
+" -w[lLiaprmfFsoRt] або\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð²Ð¼Ñ–Ñту розділів діагноÑтичних даних DWARF2\n"
+
+#: readelf.c:3197
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+msgstr ""
+" --dwarf-depth=N Ðе показувати DIE глибиною N або більше\n"
+" --dwarf-start=N Показувати DIE, що починаютьÑÑ Ð· N, на тій Ñамій глибині\n"
+" або більшій\n"
+
+#: readelf.c:3202
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+" -i --instruction-dump=<номер|назва>\n"
+" ДизаÑÐµÐ¼Ð±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ð¼Ñ–Ñту розділу <номер|назва>\n"
+
+#: readelf.c:3206
+#, 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:3235 readelf.c:3264 readelf.c:3268 readelf.c:13623
+msgid "Out of memory allocating dump request table.\n"
+msgstr "Бракує пам'ÑÑ‚Ñ– при розміщенні дампу таблиці запиту.\n"
+
+#: readelf.c:3440
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Ðеправильний ключ '-%c'\n"
+
+#: readelf.c:3455
+msgid "Nothing to do.\n"
+msgstr "Ðемає що виконувати.\n"
+
+#: readelf.c:3467 readelf.c:3483 readelf.c:8068
+msgid "none"
+msgstr "немає"
+
+#: readelf.c:3484
+msgid "2's complement, little endian"
+msgstr "Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð´Ð¾ 2, little endian"
+
+#: readelf.c:3485
+msgid "2's complement, big endian"
+msgstr "Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð´Ð¾ 2, big endian"
+
+#: readelf.c:3503
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "Ðе ELF-файл - він міÑтить неправильні magic-байти на початку\n"
+
+#: readelf.c:3513
+#, c-format
+msgid "ELF Header:\n"
+msgstr "Заголовок ELF:\n"
+
+#: readelf.c:3514
+#, c-format
+msgid " Magic: "
+msgstr " Magic: "
+
+#: readelf.c:3518
+#, c-format
+msgid " Class: %s\n"
+msgstr " КлаÑ: %s\n"
+
+#: readelf.c:3520
+#, c-format
+msgid " Data: %s\n"
+msgstr " Дані: %s\n"
+
+#: readelf.c:3522
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " ВерÑÑ–Ñ: %d %s\n"
+
+#: readelf.c:3527
+#, c-format
+msgid "<unknown: %lx>"
+msgstr "<невідомий: %lx>"
+
+#: readelf.c:3529
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS/ABI: %s\n"
+
+#: readelf.c:3531
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " ВерÑÑ–Ñ ABI: %d\n"
+
+#: readelf.c:3533
+#, c-format
+msgid " Type: %s\n"
+msgstr " Тип: %s\n"
+
+#: readelf.c:3535
+#, c-format
+msgid " Machine: %s\n"
+msgstr " Машина: %s\n"
+
+#: readelf.c:3537
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " ВерÑÑ–Ñ: 0x%lx\n"
+
+#: readelf.c:3540
+#, c-format
+msgid " Entry point address: "
+msgstr " ÐдреÑа точки входу: "
+
+#: readelf.c:3542
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" Початок заголовків програми: "
+
+#: readelf.c:3544
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (байт в файлі)\n"
+" Початок заголовків програми: "
+
+#: readelf.c:3546
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (байт в файлі)\n"
+
+#: readelf.c:3548
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Ознаки: 0x%lx%s\n"
+
+#: readelf.c:3551
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " Розмір цього заголовка: %ld (байт)\n"
+
+#: readelf.c:3553
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " Розмір заголовків програми: %ld (байт)\n"
+
+#: readelf.c:3555
+#, c-format
+msgid " Number of program headers: %ld"
+msgstr " КількіÑÑ‚ÑŒ заголовків програми: %ld"
+
+#: readelf.c:3562
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " Розмір заголовків розділу: %ld (байт)\n"
+
+#: readelf.c:3564
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " ЧиÑло заголовків розділу: %ld"
+
+#: readelf.c:3569
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " Ð†Ð½Ð´ÐµÐºÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñдків заголовка розділу: %ld"
+
+#: readelf.c:3576
+#, c-format
+msgid " <corrupt: out of range>"
+msgstr " <пошкоджений: поза діапазоном>"
+
+#: readelf.c:3610 readelf.c:3644
+msgid "program headers"
+msgstr "заголовки програми"
+
+#: readelf.c:3711
+msgid "possibly corrupt ELF header - it has a non-zero program header offset, but no program headers"
+msgstr "ймовірно, пошкоджено заголовок ELF: він має ненульовий зÑув заголовка програми, але не міÑтить Ñамого заголовка програми"
+
+#: readelf.c:3714
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"У цьому файлі немає заголовків програми.\n"
+
+#: readelf.c:3720
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Тип elf-файла - %s\n"
+
+#: readelf.c:3721
+#, c-format
+msgid "Entry point "
+msgstr "Точка входу "
+
+#: readelf.c:3723
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"ВиÑвлено %d заголовків програми, починаючи зі зÑуву "
+
+#: readelf.c:3735 readelf.c:3737
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"Заголовки програми:\n"
+
+#: readelf.c:3741
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Тип ЗÑув Вірт.адр Фіз.адр Рзм.фйл Рзм.пм Озн Вирівн\n"
+
+#: readelf.c:3744
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Тип ЗÑув Віртуальна адреÑа Фізична адреÑа Рзм.фйл Рзм.пм Озн Вирівн\n"
+
+#: readelf.c:3748
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " Тип ЗÑув Віртуальна адреÑа Фізична адреÑа\n"
+
+#: readelf.c:3750
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " Розмір файла Розмір пам'ÑÑ‚Ñ– ВирівнюваннÑ\n"
+
+#: readelf.c:3843
+msgid "more than one dynamic segment\n"
+msgstr "більш ніж один динамічний Ñегмент\n"
+
+#: readelf.c:3862
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr "у динамічному Ñегменті немає розділу .dynamic\n"
+
+#: readelf.c:3877
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr "в динамічному Ñегменті не міÑтитьÑÑ Ñ€Ð¾Ð·Ð´Ñ–Ð» .dynamic\n"
+
+#: readelf.c:3880
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr "розділ .dynamic не Ñ” першим розділом динамічного Ñегменту.\n"
+
+#: readelf.c:3888
+msgid "Unable to find program interpreter name\n"
+msgstr "Ðеможливо знайти назву інтерпретатора програми\n"
+
+#: readelf.c:3895
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: не вдалоÑÑ Ñтворити Ñ€Ñдок формату Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ð¿Ñ€ÐµÑ‚Ð°Ñ‚Ð¾Ñ€Ð° програми\n"
+
+#: readelf.c:3899
+msgid "Unable to read program interpreter name\n"
+msgstr "Ðеможливо прочитати назву інтерпретатора програми\n"
+
+#: readelf.c:3902
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [Запитаний інтерпретатор програми: %s]"
+
+#: readelf.c:3914
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" ВідповідніÑÑ‚ÑŒ розділ-Ñегмент:\n"
+
+#: readelf.c:3915
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " Сегмент Розділи...\n"
+
+#: readelf.c:3951
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "Ðеможливо інтерпретувати віртуальні адреÑи без заголовків програми.\n"
+
+#: readelf.c:3967
+#, c-format
+msgid "Virtual address 0x%lx not located in any PT_LOAD segment.\n"
+msgstr "Віртуальна адреÑа 0x%lx не розміщена у жодному Ñегменті PT_LOAD.\n"
+
+#: readelf.c:3982 readelf.c:4025
+msgid "section headers"
+msgstr "заголовки розділів"
+
+#: readelf.c:4074 readelf.c:4154
+msgid "sh_entsize is zero\n"
+msgstr "sh_entsize дорівнює нулю\n"
+
+#: readelf.c:4082 readelf.c:4162
+msgid "Invalid sh_entsize\n"
+msgstr "Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ sh_entsize\n"
+
+#: readelf.c:4087 readelf.c:4167
+msgid "symbols"
+msgstr "Ñимволи"
+
+#: readelf.c:4099 readelf.c:4178
+msgid "symbol table section indicies"
+msgstr "індекÑи розділу таблиці Ñимволів"
+
+#: readelf.c:4439
+#, c-format
+msgid "UNKNOWN (%*.*lx)"
+msgstr "ÐЕВІДОМО (%*.*lx)"
+
+#: readelf.c:4461
+msgid "possibly corrupt ELF file header - it has a non-zero section header offset, but no section headers\n"
+msgstr "ймовірно, пошкоджено заголовок файла ELF: він має ненульовий зÑув заголовка розділів, але не міÑтить Ñамих заголовків розділів.\n"
+
+#: readelf.c:4464
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"У цьому файлі немає розділів.\n"
+
+#: readelf.c:4470
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "ВиÑвлено %d заголовків розділу, починаючи зі зÑуву 0x%lx:\n"
+
+#: readelf.c:4491 readelf.c:5079 readelf.c:5491 readelf.c:5797 readelf.c:6210
+#: readelf.c:7093 readelf.c:9213
+msgid "string table"
+msgstr "Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ñ€Ñдків"
+
+#: readelf.c:4558
+#, c-format
+msgid "Section %d has invalid sh_entsize %lx (expected %lx)\n"
+msgstr "Розділ %d міÑтить неправильний sh_entsize %lx (очікувалоÑÑŒ %lx)\n"
+
+#: readelf.c:4578
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Файл міÑтить декілька таблиць динамічних Ñимволів\n"
+
+#: readelf.c:4590
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Файл міÑтить декілька таблиць динамічних Ñ€Ñдків\n"
+
+#: readelf.c:4596
+msgid "dynamic strings"
+msgstr "динамічні Ñ€Ñдки"
+
+#: readelf.c:4603
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Файл міÑтить декілька таблиць symtab shndx\n"
+
+#: readelf.c:4674
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"Заголовки розділів:\n"
+
+#: readelf.c:4676
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"Заголовок розділу:\n"
+
+#: readelf.c:4682 readelf.c:4693 readelf.c:4704
+#, c-format
+msgid " [Nr] Name\n"
+msgstr " [Nr] Ðазва\n"
+
+#: readelf.c:4683
+#, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr " Тип ÐдреÑа ЗÑув Розм ES Ð¡Ñ Ð†Ð½Ñ„ Al\n"
+
+#: readelf.c:4687
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr " [Ðм] Ðазва Тип ÐдреÑа ЗÑув Розм ES Флг Ð¡Ñ Ð†Ð½Ñ„ Al\n"
+
+#: readelf.c:4694
+#, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr " Тип ÐдреÑа ЗÑув Розм ES Ð¡Ñ Ð†Ð½Ñ„ Al\n"
+
+#: readelf.c:4698
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr " [Ðм] Ðазва Тип ÐдреÑа ЗÑув Розм ES Озн Лк Інф Al\n"
+
+#: readelf.c:4705
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr " Тип ÐдреÑа ЗÑув ПоÑиланнÑ\n"
+
+#: readelf.c:4706
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr " Розмір Розм.Ent Інфо Вирівн\n"
+
+#: readelf.c:4710
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [Ðм] Ðазва Тип ÐдреÑа ЗÑув\n"
+
+#: readelf.c:4711
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " Розмір Розм.Ent Ознаки ПоÑил Інфо Вирівн\n"
+
+#: readelf.c:4716
+#, c-format
+msgid " Flags\n"
+msgstr " Ознаки\n"
+
+#: readelf.c:4796
+#, c-format
+msgid "section %u: sh_link value of %u is larger than the number of sections\n"
+msgstr "розділ %u: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ sh_link %u Ñ” більшим за кількіÑÑ‚ÑŒ розділів\n"
+
+#: readelf.c:4896
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð·Ð½Ð°Ðº:\n"
+" W (запиÑ), A (признач), X (виконуваний), M (злиттÑ), S (Ñ€Ñдки), l (великий)\n"
+" I (інфо), L (порÑдок поÑилань), G (група), T (TLS), E (виключений), x (невідомий.)\n"
+" O (потрібна додаткова обробка ОС), o (Ñпецифічний Ð´Ð»Ñ ÐžÐ¡), p (Ñпецифічний Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора)\n"
+
+#: readelf.c:4901
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð·Ð½Ð°Ðº:\n"
+" W (запиÑ), A (признач), X (виконуваний), M (злиттÑ), S (Ñ€Ñдки)\n"
+" I (інфо), L (порÑдок поÑилань), G (група), T (TLS), E (виключений), x (невідомий.)\n"
+" O (потрібна додаткова обробка ОС), o (Ñпецифічний Ð´Ð»Ñ ÐžÐ¡), p (Ñпецифічний Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора)\n"
+
+#: readelf.c:4923
+#, c-format
+msgid "[<unknown>: 0x%x] "
+msgstr "[<невідомий>: 0x%x] "
+
+#: readelf.c:4949
+#, c-format
+msgid ""
+"\n"
+"There are no sections to group in this file.\n"
+msgstr ""
+"\n"
+"У цьому файлі немає розділів Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿ÑƒÐ²Ð°Ð½Ð½Ñ.\n"
+
+#: readelf.c:4956
+msgid "Section headers are not available!\n"
+msgstr "ÐедоÑтупні заголовки розділу!\n"
+
+#: readelf.c:4980
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"В цьому файлі немає груп розділів.\n"
+
+#: readelf.c:5018
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "Ðеправильний sh_link у розділі груп `%s'\n"
+
+#: readelf.c:5032
+#, c-format
+msgid "Corrupt header in group section `%s'\n"
+msgstr "Пошкоджений заголовок у розділі груп, «%s»\n"
+
+#: readelf.c:5038 readelf.c:5049
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "Ðеправильний sh_info у розділі груп `%s'\n"
+
+#: readelf.c:5088
+msgid "section data"
+msgstr "дані розділу"
+
+#: readelf.c:5099
+#, c-format
+msgid ""
+"\n"
+"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
+msgstr ""
+"\n"
+"%sрозділ груп [%5u] «%s» [%s] міÑтить %u розділів:\n"
+
+#: readelf.c:5102
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [ІндекÑ] Ðазва\n"
+
+#: readelf.c:5116
+#, c-format
+msgid "section [%5u] in group section [%5u] > maximum section [%5u]\n"
+msgstr "розділ [%5u] вже знаходитьÑÑ Ñƒ розділі груп [%5u] > макÑимальний розділ [%5u]\n"
+
+#: readelf.c:5125
+#, c-format
+msgid "section [%5u] in group section [%5u] already in group section [%5u]\n"
+msgstr "розділ [%5u] з розділу груп [%5u] вже знаходитьÑÑ Ñƒ розділі груп [%5u]\n"
+
+#: readelf.c:5138
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr "розділ 0 у розділі груп [%5u]\n"
+
+#: readelf.c:5205
+msgid "dynamic section image fixups"
+msgstr "динамічний розділі прив’Ñзок образу"
+
+#: readelf.c:5217
+#, c-format
+msgid ""
+"\n"
+"Image fixups for needed library #%d: %s - ident: %lx\n"
+msgstr ""
+"\n"
+"Прив’Ñзки образу Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— бібліотеки %d: %s - ідент.: %lx\n"
+
+#: readelf.c:5220
+#, c-format
+msgid "Seg Offset Type SymVec DataType\n"
+msgstr "Сег ЗÑув Тип СимВек ТипДаних\n"
+
+#: readelf.c:5252
+msgid "dynamic section image relocations"
+msgstr "переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±Ñ€Ð°Ð·Ñƒ динамічного розділу"
+
+#: readelf.c:5256
+#, c-format
+msgid ""
+"\n"
+"Image relocs\n"
+msgstr ""
+"\n"
+"ПереÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±Ñ€Ð°Ð·Ñƒ\n"
+
+#: readelf.c:5258
+#, c-format
+msgid "Seg Offset Type Addend Seg Sym Off\n"
+msgstr "Сег ЗÑув Тип Доданок Сег Сим ЗÑув\n"
+
+#: readelf.c:5313
+msgid "dynamic string section"
+msgstr "динамічний розділ Ñ€Ñдків"
+
+#: readelf.c:5414
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"'%s' розділ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð·Ñ– зÑувом 0x%lx міÑтить %ld байт:\n"
+
+#: readelf.c:5429
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"В цьому файлі немає динамічних переміщень .\n"
+
+#: readelf.c:5453
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"Розділ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ "
+
+#: readelf.c:5460 readelf.c:5890 readelf.c:6227
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " зі зÑувом 0x%lx міÑтить %lu пунктів:\n"
+
+#: readelf.c:5510
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"В цьому файлі немає переміщень.\n"
+
+#: readelf.c:5648
+#, c-format
+msgid "\tUnknown version.\n"
+msgstr "\tÐевідома верÑÑ–Ñ.\n"
+
+#: readelf.c:5701 readelf.c:6074
+msgid "unwind table"
+msgstr "розгорнута таблицÑ"
+
+#: readelf.c:5743 readelf.c:6156 readelf.c:6415
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "ПропуÑкаєтьÑÑ Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ тип Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ %s\n"
+
+#: readelf.c:5805 readelf.c:6218 readelf.c:7101 readelf.c:7148
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"В цьому файлі немає розгорнутих розділів.\n"
+
+#: readelf.c:5868
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"Ðе вдаєтьÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ розділ з розгорнутою інформацією длÑ"
+
+#: readelf.c:5873 readelf.c:5888 readelf.c:6225
+#, c-format
+msgid "'%s'"
+msgstr "'%s'"
+
+#: readelf.c:5880
+msgid "unwind info"
+msgstr "розгорнута інформаціÑ"
+
+#: readelf.c:5883 readelf.c:6224
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"Розгорнутий розділ "
+
+#: readelf.c:6333
+msgid "unwind data"
+msgstr "розгорнуті дані"
+
+#: readelf.c:6386
+#, c-format
+msgid "Skipping unexpected relocation at offset 0x%lx\n"
+msgstr "ПропуÑкаємо неочікуване переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° зÑувом 0x%lx\n"
+
+#: readelf.c:6490
+#, c-format
+msgid "[Truncated opcode]\n"
+msgstr "[Обрізаний код операції]\n"
+
+#: readelf.c:6534 readelf.c:6734
+#, c-format
+msgid "Refuse to unwind"
+msgstr "Відмова у розгортанні"
+
+#: readelf.c:6557
+#, c-format
+msgid " [Reserved]"
+msgstr " [Зарезервовано]"
+
+#: readelf.c:6585
+#, c-format
+msgid " finish"
+msgstr " кінець"
+
+#: readelf.c:6590 readelf.c:6676
+#, c-format
+msgid "[Spare]"
+msgstr "[ЗапаÑ]"
+
+#: readelf.c:6697 readelf.c:6831
+#, c-format
+msgid " [unsupported opcode]"
+msgstr " [непідтримуваний код операції]"
+
+#: readelf.c:6781
+#, c-format
+msgid "pop frame {"
+msgstr "pop frame {"
+
+#: readelf.c:6792
+msgid "[pad]"
+msgstr "[заповнювач]"
+
+#: readelf.c:6820
+#, c-format
+msgid "sp = sp + %ld"
+msgstr "sp = sp + %ld"
+
+#: readelf.c:6878
+#, c-format
+msgid " Personality routine: "
+msgstr " Підпрограма перÑоналізації: "
+
+#: readelf.c:6896
+#, c-format
+msgid " [Truncated data]\n"
+msgstr " [Обрізані дані]\n"
+
+#: readelf.c:6911
+#, c-format
+msgid " Compact model %d\n"
+msgstr " Компактна модель %d\n"
+
+#: readelf.c:6947
+#, c-format
+msgid " Restore stack from frame pointer\n"
+msgstr " Відновити Ñтек на оÑнові вказівник кадру\n"
+
+#: readelf.c:6949
+#, c-format
+msgid " Stack increment %d\n"
+msgstr " Крок Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ Ñтека %d\n"
+
+#: readelf.c:6950
+#, c-format
+msgid " Registers restored: "
+msgstr " Відновлено регіÑтри: "
+
+#: readelf.c:6955
+#, c-format
+msgid " Return register: %s\n"
+msgstr " РегіÑÑ‚Ñ€ поверненнÑ: %s\n"
+
+#: readelf.c:7038
+#, c-format
+msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .ARM.extab, що міÑтить 0x%lx.\n"
+
+#: readelf.c:7107
+#, c-format
+msgid ""
+"\n"
+"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+"\n"
+"Покажчик таблиці Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Â«%s» за зÑувом 0x%lx міÑтить %lu запиÑів:\n"
+
+#: readelf.c:7159
+#, c-format
+msgid "NONE\n"
+msgstr "ÐЕМÐЄ\n"
+
+#: readelf.c:7185
+#, c-format
+msgid "Interface Version: %s\n"
+msgstr "ВерÑÑ–Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñу: %s\n"
+
+#: readelf.c:7187
+#, c-format
+msgid "<corrupt: %ld>\n"
+msgstr "<пошкоджений: %ld>\n"
+
+#: readelf.c:7200
+#, c-format
+msgid "Time Stamp: %s\n"
+msgstr "ЧаÑова позначка: %s\n"
+
+#: readelf.c:7377 readelf.c:7423
+msgid "dynamic section"
+msgstr "динамічний розділ"
+
+#: readelf.c:7501
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"В цьому файлі немає динамічного розділу.\n"
+
+#: readelf.c:7539
+msgid "Unable to seek to end of file!\n"
+msgstr "Ðе вдаєтьÑÑ Ð¿ÐµÑ€ÐµÐ¹Ñ‚Ð¸ до ÐºÑ–Ð½Ñ†Ñ Ñ„Ð°Ð¹Ð»Ð°!\n"
+
+#: readelf.c:7552
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "Ðеможливо визначити чиÑло завантажених Ñимволів\n"
+
+#: readelf.c:7585
+msgid "Unable to seek to end of file\n"
+msgstr "Ðеможливо виконати пошук до ÐºÑ–Ð½Ñ†Ñ Ñ„Ð°Ð¹Ð»Ð°\n"
+
+#: readelf.c:7592
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Ðеможливо визначити довжину таблиці динамічних Ñ€Ñдків\n"
+
+#: readelf.c:7598
+msgid "dynamic string table"
+msgstr "Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ€Ñдків"
+
+#: readelf.c:7635
+msgid "symbol information"
+msgstr "Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ Ñимвол"
+
+#: readelf.c:7660
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"Динамічний розділ із зÑувом 0x%lx міÑтить %u пунктів:\n"
+
+#: readelf.c:7663
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " Тег Тип Ðазва/ЗначеннÑ\n"
+
+#: readelf.c:7699
+#, c-format
+msgid "Auxiliary library"
+msgstr "Допоміжна бібліотека"
+
+#: readelf.c:7703
+#, c-format
+msgid "Filter library"
+msgstr "Бібліотека фільтрів"
+
+#: readelf.c:7707
+#, c-format
+msgid "Configuration file"
+msgstr "Файл налаштовуваннÑ"
+
+#: readelf.c:7711
+#, c-format
+msgid "Dependency audit library"
+msgstr "Бібліотека аудиту залежноÑтей"
+
+#: readelf.c:7715
+#, c-format
+msgid "Audit library"
+msgstr "Бібліотека аудиту"
+
+#: readelf.c:7733 readelf.c:7761 readelf.c:7789
+#, c-format
+msgid "Flags:"
+msgstr "Ознаки:"
+
+#: readelf.c:7736 readelf.c:7764 readelf.c:7791
+#, c-format
+msgid " None\n"
+msgstr " Ðемає\n"
+
+#: readelf.c:7912
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Спільна бібліотека: [%s]"
+
+#: readelf.c:7915
+#, c-format
+msgid " program interpreter"
+msgstr " інтерпретатор програми"
+
+#: readelf.c:7919
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "Бібліотека soname: [%s]"
+
+#: readelf.c:7923
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "Бібліотека rpath: [%s]"
+
+#: readelf.c:7927
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "Бібліотека runpath: [%s]"
+
+#: readelf.c:7960
+#, c-format
+msgid " (bytes)\n"
+msgstr " (байтів)\n"
+
+#: readelf.c:7990
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Ðепотрібний об'єкт: [%s]\n"
+
+#: readelf.c:8090
+msgid "| <unknown>"
+msgstr "| <невідомий>"
+
+#: readelf.c:8123
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Розділ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ—, «%s», міÑтить %u запиÑів:\n"
+
+#: readelf.c:8126
+#, c-format
+msgid " Addr: 0x"
+msgstr " ÐдреÑа: 0x"
+
+#: readelf.c:8128 readelf.c:8246 readelf.c:8390
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr " ЗÑув: %#08lx Зв’Ñзок: %u (%s)\n"
+
+#: readelf.c:8136
+msgid "version definition section"
+msgstr "розділ опиÑу верÑÑ–Ñ—"
+
+#: readelf.c:8169
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: ВипуÑк: %d Ознаки: %s"
+
+#: readelf.c:8172
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " ІндекÑ: %d Лічильник: %d "
+
+#: readelf.c:8188
+#, c-format
+msgid "Name: %s\n"
+msgstr "Ðазва: %s\n"
+
+#: readelf.c:8190
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Ð†Ð½Ð´ÐµÐºÑ Ð½Ð°Ð·Ð²Ð¸: %ld\n"
+
+#: readelf.c:8212
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: Батько %d: %s\n"
+
+#: readelf.c:8215
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: Батько %d, Ñ–Ð½Ð´ÐµÐºÑ Ð½Ð°Ð·Ð²Ð¸: %ld\n"
+
+#: readelf.c:8220
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr " ВерÑÑ–Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾Ð¿Ð¾Ð¼Ñ–Ð¶Ð½Ð¸Ñ… даних піÑÐ»Ñ ÐºÑ–Ð½Ñ†Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ\n"
+
+#: readelf.c:8226
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr " Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— за кінцем розділу\n"
+
+#: readelf.c:8241
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Розділ залежноÑтей верÑÑ–Ñ— '%s' міÑтить %u запиÑів:\n"
+
+#: readelf.c:8244
+#, c-format
+msgid " Addr: 0x"
+msgstr " ÐдреÑа: 0x"
+
+#: readelf.c:8255
+msgid "Version Needs section"
+msgstr "Розділ залежноÑтей верÑÑ–Ñ—"
+
+#: readelf.c:8283
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: ВерÑÑ–Ñ: %d"
+
+#: readelf.c:8286
+#, c-format
+msgid " File: %s"
+msgstr " Файл: %s"
+
+#: readelf.c:8288
+#, c-format
+msgid " File: %lx"
+msgstr " Файл: %lx"
+
+#: readelf.c:8290
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " Лічильник: %d\n"
+
+#: readelf.c:8315
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: Ðазва: %s"
+
+#: readelf.c:8318
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: Ð†Ð½Ð´ÐµÐºÑ Ð½Ð°Ð·Ð²Ð¸: %lx"
+
+#: readelf.c:8321
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Ознаки: %s ВерÑÑ–Ñ: %d\n"
+
+#: readelf.c:8334
+msgid "Missing Version Needs auxillary information\n"
+msgstr "Ðе виÑтачає допоміжних даних щодо залежноÑтей за верÑÑ–Ñми\n"
+
+#: readelf.c:8340
+msgid "Missing Version Needs information\n"
+msgstr "Ðе виÑтачає даних щодо залежноÑтей за верÑÑ–Ñми\n"
+
+#: readelf.c:8378
+msgid "version string table"
+msgstr "Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ñ€Ñдків верÑÑ–Ñ—"
+
+#: readelf.c:8385
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Розділ Ñимволів верÑÑ–Ñ— '%s' міÑтить %d пунктів:\n"
+
+#: readelf.c:8388
+#, c-format
+msgid " Addr: "
+msgstr " ÐдреÑа: "
+
+#: readelf.c:8399
+msgid "version symbol data"
+msgstr "дані Ñимволу верÑÑ–Ñ—"
+
+#: readelf.c:8427
+msgid " 0 (*local*) "
+msgstr " 0 (*локальна*) "
+
+#: readelf.c:8431
+msgid " 1 (*global*) "
+msgstr " 1 (*глобальна*) "
+
+#: readelf.c:8442
+msgid "invalid index into symbol array\n"
+msgstr "некоректний Ñ–Ð½Ð´ÐµÐºÑ Ñƒ маÑиві Ñимволів\n"
+
+#: readelf.c:8476 readelf.c:9279
+msgid "version need"
+msgstr "залежніÑÑ‚ÑŒ верÑÑ–Ñ—"
+
+#: readelf.c:8487
+msgid "version need aux (2)"
+msgstr "залежніÑÑ‚ÑŒ верÑÑ–Ñ— aux (2)"
+
+#: readelf.c:8508 readelf.c:8570
+msgid "*invalid*"
+msgstr "*некоректний*"
+
+#: readelf.c:8538 readelf.c:9357
+msgid "version def"
+msgstr "Ð¾Ð¿Ð¸Ñ Ð²ÐµÑ€ÑÑ–Ñ—"
+
+#: readelf.c:8564 readelf.c:9379
+msgid "version def aux"
+msgstr "Ð¾Ð¿Ð¸Ñ Ð²ÐµÑ€ÑÑ–Ñ— aux"
+
+#: readelf.c:8599
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"Ð’ цьому файлі не знайдено інформацію про верÑÑ–Ñ—.\n"
+
+#: readelf.c:8807
+#, c-format
+msgid "<other>: %x"
+msgstr "<інше>: %x"
+
+#: readelf.c:8869
+msgid "Unable to read in dynamic data\n"
+msgstr "Ðеможливо прочитати динамічні дані\n"
+
+#: readelf.c:8919
+#, c-format
+msgid " <corrupt: %14ld>"
+msgstr " <пошкоджено: %14ld>"
+
+#: readelf.c:8962 readelf.c:9014 readelf.c:9038 readelf.c:9068 readelf.c:9092
+msgid "Unable to seek to start of dynamic information\n"
+msgstr "Ðеможливо перейти до початку динамічної інформації\n"
+
+#: readelf.c:8968 readelf.c:9020
+msgid "Failed to read in number of buckets\n"
+msgstr "Помилка при читанні кількоÑÑ‚Ñ– облаÑтей пам'ÑÑ‚Ñ–\n"
+
+#: readelf.c:8974
+msgid "Failed to read in number of chains\n"
+msgstr "Помилка при читанні кількоÑÑ‚Ñ– ланцюжків\n"
+
+#: readelf.c:9076
+msgid "Failed to determine last chain length\n"
+msgstr "Помилка при читанні кількоÑÑ‚Ñ– ланцюжків\n"
+
+#: readelf.c:9120
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів Ð´Ð»Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ:\n"
+
+#: readelf.c:9122 readelf.c:9140
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " ОблаÑÑ‚Ñ–: Знач Розмір Тип Зв'Ñз Vis Ð†Ð½Ð´ÐµÐºÑ Ð½Ð°Ð·Ð²Ð¸\n"
+
+#: readelf.c:9124 readelf.c:9142
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " ОблаÑÑ‚Ñ–: Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð Ð¾Ð·Ð¼Ñ–Ñ€ Тип Зв'Ñз Vis Ð†Ð½Ð´ÐµÐºÑ Ð½Ð°Ð·Ð²Ð¸\n"
+
+#: readelf.c:9138
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+"\n"
+"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів «.gnu.hash» Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð·Ñƒ:\n"
+
+#: readelf.c:9182
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' has a sh_entsize of zero!\n"
+msgstr ""
+"\n"
+"sh_entsize таблиці Ñимволів «%s» Ñ” нульовим!\n"
+
+#: readelf.c:9187
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів '%s' міÑтить %lu пунктів:\n"
+
+#: readelf.c:9192
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " ЧиÑ: Знач Розм Тип Зв'Ñз Vis Ð†Ð½Ð´ÐµÐºÑ Ð½Ð°Ð·Ð²Ð¸\n"
+
+#: readelf.c:9194
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " ЧиÑ: Знач Розм Тип Зв'Ñз Vis Ð†Ð½Ð´ÐµÐºÑ Ð½Ð°Ð·Ð²Ð¸\n"
+
+#: readelf.c:9249
+msgid "version data"
+msgstr "дані верÑÑ–Ñ—"
+
+#: readelf.c:9298
+msgid "version need aux (3)"
+msgstr "залежніÑÑ‚ÑŒ верÑÑ–Ñ— aux (3)"
+
+#: readelf.c:9332
+msgid "bad dynamic symbol\n"
+msgstr "неправильний динамічний Ñимвол\n"
+
+#: readelf.c:9404
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñимволу не доÑтупна Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñимволів.\n"
+
+#: readelf.c:9416
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"ГіÑтограма довжини ÑпиÑку облаÑтей пам'ÑÑ‚Ñ– (вÑього %lu облаÑтей):\n"
+
+#: readelf.c:9418 readelf.c:9488
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " Довжина ЧиÑло %% від уÑÑ–Ñ… ОхопленнÑ\n"
+
+#: readelf.c:9486
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"ГіÑтограма довжини ÑпиÑку облаÑтей `.gnu.hash' (вÑього %lu облаÑтей):\n"
+
+#: readelf.c:9552
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Сегмент динамічної інформації із зÑувом 0x%lx міÑтить %d пунктів:\n"
+
+#: readelf.c:9555
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr " ЧиÑ: Ðазва Межа Ознаки\n"
+
+#: readelf.c:9564
+#, c-format
+msgid "<corrupt: %19ld>"
+msgstr "<пошкоджено: %19ld>"
+
+#: readelf.c:9646
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr "ПіÑÐ»Ñ Ð¿ÐµÑ€ÐµÑÑƒÐ²Ð°Ð½Ð½Ñ SYM_DIFF виÑвлено непридатний до обробки тип переÑÑƒÐ²Ð°Ð½Ð½Ñ MN10300"
+
+#: readelf.c:9813
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr "Ðе виÑтачає даних щодо 32-бітових типів переÑуваннÑ, викориÑтаних у розділах DWARF архітектури з номером %d\n"
+
+#: readelf.c:10138
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr "не вдалоÑÑ Ð·Ð°ÑтоÑувати непідтримуваний тип переÑуваннÑ, %d, до розділу %s\n"
+
+#: readelf.c:10146
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "пропуÑкаєтьÑÑ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ зÑув Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ 0x%lx у розділі %s\n"
+
+#: readelf.c:10155
+#, c-format
+msgid "skipping invalid relocation symbol index 0x%lx in section %s\n"
+msgstr "пропуÑкаємо некоректний Ñ–Ð½Ð´ÐµÐºÑ Ð¿ÐµÑ€ÐµÑÑƒÐ²Ð°Ð½Ð½Ñ Ñимволу 0x%lx у розділі %s\n"
+
+#: readelf.c:10177
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr "пропуÑкаємо неочікуваний тип Ñимволу %s у переÑуванні %ld у розділі %s\n"
+
+#: readelf.c:10223
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"Зібраний дамп розділу %s\n"
+
+#: readelf.c:10244
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"Розділ '%s' не міÑтить даних Ð´Ð»Ñ Ð´Ð°Ð¼Ð¿Ñƒ.\n"
+
+#: readelf.c:10250
+msgid "section contents"
+msgstr "вміÑÑ‚ розділу"
+
+#: readelf.c:10269
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+"\n"
+"Дамп Ñ€Ñдків розділу '%s':\n"
+
+#: readelf.c:10287
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " ЗауваженнÑ: цей розділ міÑтить Ñимволи, що переÑуваютьÑÑ Ñамі на Ñебе, ці Ñимволи не було заÑтоÑовано до цього дампу.\n"
+
+#: readelf.c:10318
+#, c-format
+msgid " No strings found in this section."
+msgstr " У цьому розділі не знайдено Ñ€Ñдків."
+
+#: readelf.c:10340
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"Hex-дамп розділу '%s':\n"
+
+#: readelf.c:10364
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " ПРИМІТКÐ: Цей розділ міÑтить переміщувані Ñимволи на Ñамого Ñебе, але вони ÐЕ були заÑтоÑовані до цього дампу.\n"
+
+#: readelf.c:10498
+#, c-format
+msgid "%s section data"
+msgstr "дані розділу %s"
+
+#: readelf.c:10568
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+"\n"
+"Розділ '%s' не міÑтить діагноÑтичних даних.\n"
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:10577
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr "розділ «%s» належить до типу NOBITS — його вміÑту не можна довірÑти.\n"
+
+#: readelf.c:10613
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "Ðерозпізнаний розділ діагноÑтики: %s\n"
+
+#: readelf.c:10641
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr "Ð”Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ '%s' дамп не був виконаний, оÑкільки він не Ñ–Ñнує!\n"
+
+#: readelf.c:10682
+#, c-format
+msgid "Section %d was not dumped because it does not exist!\n"
+msgstr "Ð”Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d дамп не був виконаний, оÑкільки він не Ñ–Ñнує!\n"
+
+#: readelf.c:10860 readelf.c:10874 readelf.c:10893 readelf.c:11293
+#, c-format
+msgid "None\n"
+msgstr "Ðемає\n"
+
+#: readelf.c:10861
+#, c-format
+msgid "Application\n"
+msgstr "Програма\n"
+
+#: readelf.c:10862
+#, c-format
+msgid "Realtime\n"
+msgstr "У режимі реального чаÑу\n"
+
+#: readelf.c:10863
+#, c-format
+msgid "Microcontroller\n"
+msgstr "Мікроконтролер\n"
+
+#: readelf.c:10864
+#, c-format
+msgid "Application or Realtime\n"
+msgstr "Програма або режим реального чаÑу\n"
+
+#: readelf.c:10875 readelf.c:10895 readelf.c:11347 readelf.c:11365
+#: readelf.c:11440 readelf.c:11461
+#, c-format
+msgid "8-byte\n"
+msgstr "8-байтовий\n"
+
+#: readelf.c:10876 readelf.c:11443 readelf.c:11464
+#, c-format
+msgid "4-byte\n"
+msgstr "4-байтовий\n"
+
+#: readelf.c:10880 readelf.c:10899
+#, c-format
+msgid "8-byte and up to %d-byte extended\n"
+msgstr "8-байтовий і розширюваний до %d-байтового\n"
+
+#: readelf.c:10894
+#, c-format
+msgid "8-byte, except leaf SP\n"
+msgstr "8-байтовий, окрім Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ SP\n"
+
+#: readelf.c:10910 readelf.c:11000 readelf.c:11479
+#, c-format
+msgid "flag = %d, vendor = %s\n"
+msgstr "прапорець = %d, виробник = %s\n"
+
+#: readelf.c:10916
+#, c-format
+msgid "True\n"
+msgstr "True\n"
+
+#: readelf.c:11045 readelf.c:11231
+#, c-format
+msgid "Hard or soft float\n"
+msgstr "Ðпаратна або програмна рухома крапка\n"
+
+#: readelf.c:11048
+#, c-format
+msgid "Hard float\n"
+msgstr "Ðпаратна рухома крапка\n"
+
+#: readelf.c:11051 readelf.c:11240
+#, c-format
+msgid "Soft float\n"
+msgstr "Програма рухома крапка\n"
+
+#: readelf.c:11054
+#, c-format
+msgid "Single-precision hard float\n"
+msgstr "Ðпаратна рухома крапка з одинарною точніÑÑ‚ÑŽ\n"
+
+#: readelf.c:11071 readelf.c:11097
+#, c-format
+msgid "Any\n"
+msgstr "Будь-Ñка\n"
+
+#: readelf.c:11074
+#, c-format
+msgid "Generic\n"
+msgstr "Типовий\n"
+
+#: readelf.c:11103
+#, c-format
+msgid "Memory\n"
+msgstr "Пам’ÑÑ‚ÑŒ\n"
+
+#: readelf.c:11234
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr "Ðпаратна рухома крапка (подвійна точніÑÑ‚ÑŒ)\n"
+
+#: readelf.c:11237
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr "Ðпаратна рухома крапка (одинарна точніÑÑ‚ÑŒ)\n"
+
+#: readelf.c:11243
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU)\n"
+msgstr "Ðпаратна рухома крапка (64-бітовий ÑпівпроцеÑор MIPS32r2)\n"
+
+#: readelf.c:11326
+#, c-format
+msgid "Not used\n"
+msgstr "Ðе викориÑтовуєтьÑÑ\n"
+
+#: readelf.c:11329
+#, c-format
+msgid "2 bytes\n"
+msgstr "2 байти\n"
+
+#: readelf.c:11332
+#, c-format
+msgid "4 bytes\n"
+msgstr "4 байти\n"
+
+#: readelf.c:11350 readelf.c:11368 readelf.c:11446 readelf.c:11467
+#, c-format
+msgid "16-byte\n"
+msgstr "16-байтовий\n"
+
+#: readelf.c:11383
+#, c-format
+msgid "DSBT addressing not used\n"
+msgstr "ÐдреÑÑƒÐ²Ð°Ð½Ð½Ñ DSBT не викориÑтовуєтьÑÑ\n"
+
+#: readelf.c:11386
+#, c-format
+msgid "DSBT addressing used\n"
+msgstr "ÐдреÑÑƒÐ²Ð°Ð½Ð½Ñ DSBT викориÑтовуєтьÑÑ\n"
+
+#: readelf.c:11401
+#, c-format
+msgid "Data addressing position-dependent\n"
+msgstr "ÐдреÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… залежить від позиції\n"
+
+#: readelf.c:11404
+#, c-format
+msgid "Data addressing position-independent, GOT near DP\n"
+msgstr "ÐдреÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… не залежить від позиції, GOT порÑд з DP\n"
+
+#: readelf.c:11407
+#, c-format
+msgid "Data addressing position-independent, GOT far from DP\n"
+msgstr "ÐдреÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… не залежить від позиції, GOT віддалено від DP\n"
+
+#: readelf.c:11422
+#, c-format
+msgid "Code addressing position-dependent\n"
+msgstr "ÐдреÑÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ залежить від позиції\n"
+
+#: readelf.c:11425
+#, c-format
+msgid "Code addressing position-independent\n"
+msgstr "ÐдреÑÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ не залежить від позиції\n"
+
+#: readelf.c:11531
+msgid "attributes"
+msgstr "атрибути"
+
+#: readelf.c:11552
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "ПОМИЛКÐ: Ðеправильна довжина розділу (%d > %d)\n"
+
+#: readelf.c:11558
+#, c-format
+msgid "Attribute Section: %s\n"
+msgstr "Розділ атрибутів: %s\n"
+
+#: readelf.c:11583
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "ПОМИЛКÐ: Ðеправильна довжина підрозділу (%d > %d)\n"
+
+#: readelf.c:11595
+#, c-format
+msgid "File Attributes\n"
+msgstr "Ðтрибути файла\n"
+
+#: readelf.c:11598
+#, c-format
+msgid "Section Attributes:"
+msgstr "Ðтрибути розділу:"
+
+#: readelf.c:11601
+#, c-format
+msgid "Symbol Attributes:"
+msgstr "Ðтрибути Ñимволу:"
+
+#: readelf.c:11616
+#, c-format
+msgid "Unknown tag: %d\n"
+msgstr "Ðевідомий теґ: %d\n"
+
+#. ??? Do something sensible, like dump hex.
+#: readelf.c:11635
+#, c-format
+msgid " Unknown section contexts\n"
+msgstr " Ðевідомі контекÑти розділу\n"
+
+#: readelf.c:11642
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "Ðевідомий формат '%c'\n"
+
+#: readelf.c:11693 readelf.c:11715
+msgid "<unknown>"
+msgstr "<невідомий>"
+
+#: readelf.c:11810 readelf.c:12344
+msgid "liblist section data"
+msgstr "дані розділу liblist"
+
+#: readelf.c:11813
+#, c-format
+msgid ""
+"\n"
+"Section '.liblist' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Розділ '.liblist' міÑтить %lu запиÑів:\n"
+
+#: readelf.c:11815
+msgid " Library Time Stamp Checksum Version Flags\n"
+msgstr " Бібліотека ЧаÑова позначка Контр. Ñума ВерÑÑ–Ñ ÐŸÑ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–\n"
+
+#: readelf.c:11841
+#, c-format
+msgid "<corrupt: %9ld>"
+msgstr "<пошкоджено: %9ld>"
+
+#: readelf.c:11846
+msgid " NONE"
+msgstr " ÐЕМÐЄ"
+
+#: readelf.c:11897
+msgid "options"
+msgstr "ключі"
+
+#: readelf.c:11928
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Розділ '%s' міÑтить %d пунктів:\n"
+
+#: readelf.c:12089
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr "знайдено ÑпиÑок конфліктів без таблиці динамічних Ñимволів\n"
+
+#: readelf.c:12106 readelf.c:12121
+msgid "conflict"
+msgstr "конфлікт"
+
+#: readelf.c:12131
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Розділ '.conflict' міÑтить %lu пунктів:\n"
+
+#: readelf.c:12133
+msgid " Num: Index Value Name"
+msgstr " Ðом: Ð†Ð½Ð´ÐµÐºÑ Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ðазва"
+
+#: readelf.c:12145 readelf.c:12234 readelf.c:12305
+#, c-format
+msgid "<corrupt: %14ld>"
+msgstr "<пошкоджено: %14ld>"
+
+#: readelf.c:12167
+msgid "Global Offset Table data"
+msgstr "Дані загальної таблиці зÑувів"
+
+#: readelf.c:12171
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+"\n"
+"ОÑновний GOT:\n"
+
+#: readelf.c:12172
+#, c-format
+msgid " Canonical gp value: "
+msgstr " Канонічне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ gp: "
+
+#: readelf.c:12176 readelf.c:12276
+#, c-format
+msgid " Reserved entries:\n"
+msgstr " Зарезервовані запиÑи:\n"
+
+#: readelf.c:12177
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr " %*s %10s %*s призначеннÑ\n"
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12211 readelf.c:12278
+#: readelf.c:12287
+msgid "Address"
+msgstr "ÐдреÑа"
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12212
+msgid "Access"
+msgstr "ДоÑтуп"
+
+#: readelf.c:12179 readelf.c:12196 readelf.c:12213 readelf.c:12278
+#: readelf.c:12288
+msgid "Initial"
+msgstr "Початковий"
+
+#: readelf.c:12181
+#, c-format
+msgid " Lazy resolver\n"
+msgstr " Вирішувач з відкладеннÑм\n"
+
+#: readelf.c:12187
+#, c-format
+msgid " Module pointer (GNU extension)\n"
+msgstr " Модульний вказівник (Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ GNU)\n"
+
+#: readelf.c:12193
+#, c-format
+msgid " Local entries:\n"
+msgstr " Локальні запиÑи:\n"
+
+#: readelf.c:12209
+#, c-format
+msgid " Global entries:\n"
+msgstr " Загальні запиÑи:\n"
+
+#: readelf.c:12214 readelf.c:12289
+msgid "Sym.Val."
+msgstr "Сим.Знач."
+
+#. Note for translators: "Ndx" = abbreviated form of "Index".
+#: readelf.c:12217 readelf.c:12289
+msgid "Ndx"
+msgstr "Інд"
+
+#: readelf.c:12217 readelf.c:12289
+msgid "Name"
+msgstr "Ðазва"
+
+#: readelf.c:12271
+msgid "Procedure Linkage Table data"
+msgstr "Дані таблиці ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€"
+
+#: readelf.c:12277
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr " %*s %*s призначеннÑ\n"
+
+#: readelf.c:12280
+#, c-format
+msgid " PLT lazy resolver\n"
+msgstr " Вирішувач з відкладеннÑм ТКП\n"
+
+#: readelf.c:12282
+#, c-format
+msgid " Module pointer\n"
+msgstr " Модульний вказівник\n"
+
+#: readelf.c:12285
+#, c-format
+msgid " Entries:\n"
+msgstr " ЗапиÑи:\n"
+
+#: readelf.c:12352
+msgid "liblist string table"
+msgstr "Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ñ€Ñдків liblist"
+
+#: readelf.c:12362
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Розділ ÑпиÑку бібліотек '%s' міÑтить %lu пунктів:\n"
+
+#: readelf.c:12366
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr " Бібліотека ЧаÑова позначка Контр. Ñума ВерÑÑ–Ñ ÐŸÑ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–"
+
+#: readelf.c:12416
+msgid "NT_AUXV (auxiliary vector)"
+msgstr "NT_AUXV (допоміжний вектор)"
+
+#: readelf.c:12418
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (Ñтруктура prstatus)"
+
+#: readelf.c:12420
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (регіÑтри з плаваючою комою)"
+
+#: readelf.c:12422
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (Ñтруктура prpsinfo)"
+
+#: readelf.c:12424
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (Ñтруктура task)"
+
+#: readelf.c:12426
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (Ñтруктура user_xfpregs)"
+
+#: readelf.c:12428
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr "NT_PPC_VMX (регіÑтри Altivec ppc)"
+
+#: readelf.c:12430
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr "NT_PPC_VSX (регіÑтри VSX ppc)"
+
+#: readelf.c:12432
+msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
+msgstr "NT_X86_XSTATE (розширений Ñтан XSAVE x86)"
+
+#: readelf.c:12434
+msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
+msgstr "NT_S390_HIGH_GPRS (верхні половинки регіÑтрів s390)"
+
+#: readelf.c:12436
+msgid "NT_S390_TIMER (s390 timer register)"
+msgstr "NT_S390_TIMER (регіÑÑ‚Ñ€ таймера s390)"
+
+#: readelf.c:12438
+msgid "NT_S390_TODCMP (s390 TOD comparator register)"
+msgstr "NT_S390_TODCMP (регіÑÑ‚Ñ€ порівнювача TOD s390)"
+
+#: readelf.c:12440
+msgid "NT_S390_TODPREG (s390 TOD programmable register)"
+msgstr "NT_S390_TODPREG (програмований регіÑÑ‚Ñ€ TOD s390)"
+
+#: readelf.c:12442
+msgid "NT_S390_CTRS (s390 control registers)"
+msgstr "NT_S390_CTRS (керівні регіÑтри s390)"
+
+#: readelf.c:12444
+msgid "NT_S390_PREFIX (s390 prefix register)"
+msgstr "NT_S390_PREFIX (регіÑÑ‚Ñ€ префікÑа s390)"
+
+#: readelf.c:12446
+msgid "NT_ARM_VFP (arm VFP registers)"
+msgstr "NT_ARM_VFP (регіÑтри VFP arm)"
+
+#: readelf.c:12448
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (Ñтруктура pstatus)"
+
+#: readelf.c:12450
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (регіÑтри з плаваючою комою)"
+
+#: readelf.c:12452
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (Ñтруктура psinfo)"
+
+#: readelf.c:12454
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (Ñтруктура lwpstatus_t)"
+
+#: readelf.c:12456
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (Ñтруктура lwpsinfo_t)"
+
+#: readelf.c:12458
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (Ñтруктура win32_pstatus)"
+
+#: readelf.c:12466
+msgid "NT_VERSION (version)"
+msgstr "NT_VERSION (верÑÑ–Ñ)"
+
+#: readelf.c:12468
+msgid "NT_ARCH (architecture)"
+msgstr "NT_ARCH (архітектура)"
+
+#: readelf.c:12473 readelf.c:12496 readelf.c:12575 readelf.c:12633
+#: readelf.c:12710
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "Ðевідомий тип коментарÑ: (0x%08x)"
+
+#: readelf.c:12485
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr "NT_GNU_ABI_TAG (теґ верÑÑ–Ñ— ABI)"
+
+#: readelf.c:12487
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr "NT_GNU_HWCAP (програмні дані щодо HWCAP, надані DSO)"
+
+#: readelf.c:12489
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr "NT_GNU_BUILD_ID (бітовий Ñ€Ñдок унікального ідентифікатора збираннÑ)"
+
+#: readelf.c:12491
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr "NT_GNU_GOLD_VERSION (верÑÑ–Ñ gold)"
+
+#: readelf.c:12509
+#, c-format
+msgid " Build ID: "
+msgstr " Ід. збираннÑ: "
+
+#: readelf.c:12548
+#, c-format
+msgid " OS: %s, ABI: %ld.%ld.%ld\n"
+msgstr " ОС: %s, ABI: %ld.%ld.%ld\n"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:12565
+msgid "NetBSD procinfo structure"
+msgstr "Структура procinfo NetBSD"
+
+#: readelf.c:12592 readelf.c:12606
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (Ñтруктура reg)"
+
+#: readelf.c:12594 readelf.c:12608
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (Ñтруктура fpreg)"
+
+#: readelf.c:12627
+msgid "NT_STAPSDT (SystemTap probe descriptors)"
+msgstr "NT_STAPSDT (деÑкриптори Ð·Ð¾Ð½Ð´ÑƒÐ²Ð°Ð½Ð½Ñ SystemTap)"
+
+#: readelf.c:12660
+#, c-format
+msgid " Provider: %s\n"
+msgstr " ПоÑтачальник: %s\n"
+
+#: readelf.c:12661
+#, c-format
+msgid " Name: %s\n"
+msgstr " Ðазва: %s\n"
+
+#: readelf.c:12662
+#, c-format
+msgid " Location: "
+msgstr " РозташуваннÑ: "
+
+#: readelf.c:12664
+#, c-format
+msgid ", Base: "
+msgstr ", ОÑнова: "
+
+#: readelf.c:12666
+#, c-format
+msgid ", Semaphore: "
+msgstr ", Семафор: "
+
+#: readelf.c:12669
+#, c-format
+msgid " Arguments: %s\n"
+msgstr " Ðргументи: %s\n"
+
+#: readelf.c:12682
+msgid "NT_VMS_MHD (module header)"
+msgstr "NT_VMS_MHD (заголовок модулÑ)"
+
+#: readelf.c:12684
+msgid "NT_VMS_LNM (language name)"
+msgstr "NT_VMS_LNM (назва мови)"
+
+#: readelf.c:12686
+msgid "NT_VMS_SRC (source files)"
+msgstr "NT_VMS_SRC (файли коду)"
+
+#: readelf.c:12690
+msgid "NT_VMS_EIDC (consistency check)"
+msgstr "NT_VMS_EIDC (перевірка ціліÑноÑÑ‚Ñ–)"
+
+#: readelf.c:12692
+msgid "NT_VMS_FPMODE (FP mode)"
+msgstr "NT_VMS_FPMODE (режим FP)"
+
+#: readelf.c:12696
+msgid "NT_VMS_IMGNAM (image name)"
+msgstr "NT_VMS_IMGNAM (назва образу)"
+
+#: readelf.c:12698
+msgid "NT_VMS_IMGID (image id)"
+msgstr "NT_VMS_IMGID (ідентифікатор образу)"
+
+#: readelf.c:12700
+msgid "NT_VMS_LINKID (link id)"
+msgstr "NT_VMS_LINKID (ідентифікатор компонуваннÑ)"
+
+#: readelf.c:12702
+msgid "NT_VMS_IMGBID (build id)"
+msgstr "NT_VMS_IMGBID (ідентифікатор збираннÑ)"
+
+#: readelf.c:12704
+msgid "NT_VMS_GSTNAM (sym table name)"
+msgstr "NT_VMS_GSTNAM (назва таблиці Ñимволів)"
+
+#: readelf.c:12724
+#, c-format
+msgid " Creation date : %.17s\n"
+msgstr " Дата ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ : %.17s\n"
+
+#: readelf.c:12725
+#, c-format
+msgid " Last patch date: %.17s\n"
+msgstr " Дата оÑтаннього латаннÑ: %.17s\n"
+
+#: readelf.c:12726
+#, c-format
+msgid " Module name : %s\n"
+msgstr " Ðазва Ð¼Ð¾Ð´ÑƒÐ»Ñ : %s\n"
+
+#: readelf.c:12727
+#, c-format
+msgid " Module version : %s\n"
+msgstr " ВерÑÑ–Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ : %s\n"
+
+#: readelf.c:12730
+#, c-format
+msgid " Invalid size\n"
+msgstr " Ðекоректний розмір\n"
+
+#: readelf.c:12733
+#, c-format
+msgid " Language: %s\n"
+msgstr " Мова: %s\n"
+
+#: readelf.c:12737
+#, c-format
+msgid " Floating Point mode: "
+msgstr " Режим рухомої крапки: "
+
+#: readelf.c:12742
+#, c-format
+msgid " Link time: "
+msgstr " Ð§Ð°Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ: "
+
+#: readelf.c:12748
+#, c-format
+msgid " Patch time: "
+msgstr " Ð§Ð°Ñ Ð»Ð°Ñ‚Ð°Ð½Ð½Ñ: "
+
+#: readelf.c:12754
+#, c-format
+msgid " Major id: %u, minor id: %u\n"
+msgstr " ОÑновний ід.: %u, допоміжний ід.: %u\n"
+
+#: readelf.c:12757
+#, c-format
+msgid " Last modified : "
+msgstr " ОÑтанні зміни : "
+
+#: readelf.c:12760
+#, c-format
+msgid ""
+"\n"
+" Link flags : "
+msgstr ""
+"\n"
+" Прапорці комонуваннÑ: "
+
+#: readelf.c:12763
+#, c-format
+msgid " Header flags: 0x%08x\n"
+msgstr " Прапорці заголовка: 0x%08x\n"
+
+#: readelf.c:12765
+#, c-format
+msgid " Image id : %s\n"
+msgstr " Ід. образу : %s\n"
+
+#: readelf.c:12769
+#, c-format
+msgid " Image name: %s\n"
+msgstr " Ðазва образу: %s\n"
+
+#: readelf.c:12772
+#, c-format
+msgid " Global symbol table name: %s\n"
+msgstr " Ðазва загальної таблиці Ñимволів: %s\n"
+
+#: readelf.c:12775
+#, c-format
+msgid " Image id: %s\n"
+msgstr " Ід. образу: %s\n"
+
+#: readelf.c:12778
+#, c-format
+msgid " Linker id: %s\n"
+msgstr " Ідентифікатор компонувальника: %s\n"
+
+#: readelf.c:12853
+msgid "notes"
+msgstr "коментар"
+
+#: readelf.c:12859
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"Коментар із зÑувом 0x%08lx довжиною 0x%08lx:\n"
+
+#: readelf.c:12861
+#, c-format
+msgid " %-20s %10s\tDescription\n"
+msgstr " %-20s %10s\tОпиÑ\n"
+
+#: readelf.c:12861
+msgid "Owner"
+msgstr "ВлаÑник"
+
+#: readelf.c:12861
+msgid "Data size"
+msgstr "Розмір даних"
+
+#: readelf.c:12899 readelf.c:12912
+#, c-format
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "знайдено пошкоджений коментар зі зÑувом %lx у Ñховищі коментарів\n"
+
+#: readelf.c:12901 readelf.c:12914
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " тип: %lx, розм_назви: %08lx, розм_опиÑ: %08lx\n"
+
+#: readelf.c:13010
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr "Ð’ файлі вміÑту відÑутні Ñегменти коментарів.\n"
+
+#: readelf.c:13102
+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"
+msgstr ""
+"Ð¦Ñ ÐºÐ¾Ð¿Ñ–Ñ readelf була Ñтворена без підтримки 64-бітного типу\n"
+"даних, і тому вона не може читати 64-бітні файли ELF.\n"
+
+#: readelf.c:13149
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s: Помилка при читанні заголовка файла\n"
+
+#: readelf.c:13163
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Файл: %s\n"
+
+#: readelf.c:13335
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr "%s: не вдалоÑÑ Ñтворити дамп покажчика, оÑкільки такого не було виÑвлено\n"
+
+#: readelf.c:13341
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr "Покажчик архіву %s: (у таблиці Ñимволів запиÑів: %ld, байтів: 0x%lx)\n"
+
+#: readelf.c:13359
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr "Двійковий %s міÑтить:\n"
+
+#: readelf.c:13367
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr "%s: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ñимволів завершилаÑÑ Ð´Ð¾ ÐºÑ–Ð½Ñ†Ñ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ°\n"
+
+#: readelf.c:13378
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr "%s: у таблиці Ñимволів покажчика залишилиÑÑ Ñимволи без відповідних запиÑів у таблиці покажчика\n"
+
+#: readelf.c:13383
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr "%s: не вдалоÑÑ Ð¿Ð¾Ð²ÐµÑ€Ð½ÑƒÑ‚Ð¸ позицію до початку об’єктних файлів у архіві\n"
+
+#: readelf.c:13466 readelf.c:13549
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr "Вхідний файл '%s' Ñ” непридатним до читаннÑ.\n"
+
+#: readelf.c:13488
+#, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ð° член архіву.\n"
+
+#: readelf.c:13567
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr "Файл %s не є архівом, отже його покажчик не може бути показано.\n"
+
+#: rename.c:124
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s: неможливо вÑтановити чаÑ: %s"
+
+#. We have to clean up here.
+#: rename.c:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸ «%s»; причина: %s"
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr "не вдалоÑÑ Ñкопіювати файл «%s»; причина: %s"
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: недоÑтатньо двійкових даних"
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr "Ñ€Ñдок unicode, завершений `0'"
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr "ID реÑурÑу"
+
+#: resbin.c:208
+msgid "cursor"
+msgstr "вказівник"
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr "заголовок menu"
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr "заголовок menuex"
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr "зÑув menuex"
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "непідтримувана верÑÑ–Ñ menu %d"
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr "заголовок menuitem"
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr "menuitem"
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr "заголовок діалогу"
+
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "непередбачена верÑÑ–Ñ DIALOGEX %d"
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr "розмір в пунктах шрифту діалогу"
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr "Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ шрифт dialogex"
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr "ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ñ–Ð°Ð»Ð¾Ð³Ð¾Ð¼"
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr "ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ dialogex"
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr "кінець ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ñ–Ð°Ð»Ð¾Ð³Ð¾Ð¼"
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr "дані ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ñ–Ð°Ð»Ð¾Ð³Ð¾Ð¼"
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr "довжина Ñтроки stringtable"
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr "Ñ€Ñдок stringtable"
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr "заголовок fontdir"
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr "fontdir"
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr "назва приÑтрою fontdir"
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr "назва гарнітури fontdir"
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr "акÑелератор"
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr "заголовок вказівника групи"
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "неочікуваний тип вказівника групи %d"
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr "вказівник групи"
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr "заголовок значка групи"
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "неочікуваний тип значка групи %d"
+
+#: resbin.c:871
+msgid "group icon"
+msgstr "значок групи"
+
+#: resbin.c:935 resbin.c:1173
+msgid "unexpected version string"
+msgstr "неочікуваний Ñ€Ñдок верÑÑ–Ñ—"
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "довжина верÑÑ–Ñ— %d не відповідає довжині реÑурÑу %lu"
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr "неочікуваний тип верÑÑ–Ñ— %d"
+
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr "неочікувана довжина інформації про фікÑовану верÑÑ–ÑŽ %ld"
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr "Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ фікÑовану верÑÑ–Ñ—"
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "неочікуваний Ñигнатура фікÑованої верÑÑ–Ñ— %lu"
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "неочікувана верÑÑ–Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про фікÑовану верÑÑ–ÑŽ %lu"
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr "Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ змінної верÑÑ–Ñ—"
+
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr "неочікувана довжина Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ stringfileinfo %ld"
+
+#: resbin.c:1059
+msgid "version stringtable"
+msgstr "Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ Ñ€Ñдків верÑÑ–Ñ—"
+
+#: resbin.c:1067
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr "неочікувана довжина Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— stringtable %ld"
+
+#: resbin.c:1084
+msgid "version string"
+msgstr "Ñ€Ñдок верÑÑ–Ñ—"
+
+#: resbin.c:1101
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr "неочікувана довжина Ñтроки верÑÑ–Ñ— %ld != %ld + %ld"
+
+#: resbin.c:1108
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr "неочікувана довжина Ñтроки верÑÑ–Ñ— %ld < %ld"
+
+#: resbin.c:1133
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr "неочікувана довжина Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ varfileinfo %ld"
+
+#: resbin.c:1152
+msgid "version varfileinfo"
+msgstr "верÑÑ–Ñ varfileinfo"
+
+#: resbin.c:1167
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr "неочікувана довжина Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— %ld"
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr "потрібна назва Ð´Ð»Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ñ— COFF"
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: немає розділу реÑурÑів"
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: адреÑа за допуÑтимими межами"
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "каталог"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "іменований елемент каталогу"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "назва елементу каталогу"
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "іменований підкаталог"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "іменований реÑурÑ"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "ID елемента каталогу"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "ID підкаталогу"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "ID реÑурÑу"
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr "невідомий тип реÑурÑу"
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr "елемент даних"
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr "дані реÑурÑу"
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr "розмір даних реÑурÑу"
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr "вимагаєтьÑÑ Ð½Ð°Ð·Ð²Ð° файла Ð´Ð»Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ COFF"
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "неможливо отримати тип Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ BFD_RELOC_RVA"
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "неможливо відкрити тимчаÑовий файл `%s': %s"
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "неможливо перенаправити stdout: `%s': %s"
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "неможливо виконати `%s': %s"
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "ВикориÑтовуєтьÑÑ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñовий файл `%s' Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… даних препроцеÑора\n"
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "неможливо popen `%s': %s"
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "ВикориÑтовуєтьÑÑ popen Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… виводу препроцеÑора\n"
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "Випробуваний `%s'\n"
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr "ВикориÑтовуєтьÑÑ `%s'\n"
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr "помилка під Ñ‡Ð°Ñ Ñпроби попередньої обробки."
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: неочікуваний кінець файла"
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: при читанні %lu було повернено %lu"
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "помилка stat Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° бітового образу `%s': %s"
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "файл курÑору `%s' не міÑтить даних курÑора"
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: fseek Ð´Ð»Ñ %lu завершивÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ: %s"
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr "Ð´Ð»Ñ ID довідки вимагаєтьÑÑ DIALOGEX"
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr "Ð´Ð»Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ð¼Ð¸ вимагаєтьÑÑ DIALOGEX"
+
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "помилка stat на файлі шрифту `%s': %s"
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "файл значка `%s' не міÑтить даних значка"
+
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "помилка stat на файлі `%s': %s"
+
+#: resrc.c:1958
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "неможливо відкрити `%s' Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ даних: %s"
+
+#: size.c:79
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr " Відображає розміри розділів вÑередині двійкових файлів\n"
+
+#: size.c:80
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr " Якщо вхідні файли не вказані, вважаєтьÑÑ Ñ„Ð°Ð¹Ð» a.out\n"
+
+#: size.c:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+" Ключі:\n"
+" -A|-B --format={sysv|berkeley} Вибір Ñтилю Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… (типово %s)\n"
+" -o|-d|-x --radix={8|10|16} Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ‡Ð¸Ñел в віÑімковому, деÑÑтковому\n"
+" або шіÑтнадцÑтковому форматі\n"
+" -t --totals Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñумарних розмірів (лише Berkeley)\n"
+" --target=<bfd-назва> Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ двійкового файла\n"
+" @<файл> Читати ключі з <файла>\n"
+" -h --help Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— інформації\n"
+" -v --version Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ— програми\n"
+"\n"
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "неправильний аргумент --format: %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Ðекоректний radix: %s\n"
+
+#: srconv.c:1733
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "Перетворює об'єктний файл COFF на об'єктний файл SYSROFF\n"
+
+#: srconv.c:1734
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+" Ключі:\n"
+" -q --quick (заÑтаріла - ігноруєтьÑÑ)\n"
+" -n --noprescan Ðе виконувати ÑÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ commons у defs\n"
+" -d --debug Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— про те, що виконуєтьÑÑ\n"
+" @<файл> Читати ключі з <файла>\n"
+" -h --help Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— інформації\n"
+" -v --version Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ð¾Ð¼ÐµÑ€Ð° верÑÑ–Ñ— програми\n"
+
+#: srconv.c:1880
+#, c-format
+msgid "unable to open output file %s"
+msgstr "неможливо відкрити файл Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ %s"
+
+#: stabs.c:328 stabs.c:1717
+msgid "numeric overflow"
+msgstr "чиÑлове переповненнÑ"
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "Ðекоректний stab: %s\n"
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "ПопередженнÑ: %s: %s\n"
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC поза функцією\n"
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "Ðадто багато N_RBRACs\n"
+
+#: stabs.c:727
+msgid "unknown C++ encoded name"
+msgstr "невідома кодована назва C++"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1262
+msgid "unrecognized cross reference type"
+msgstr "нерозпізнаний тип перехреÑного поÑиланнÑ"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1809
+msgid "missing index type"
+msgstr "відÑутній індекÑний тип"
+
+#: stabs.c:2129
+msgid "unknown virtual character for baseclass"
+msgstr "невідомий віртуальний Ñимвол Ð´Ð»Ñ baseclass"
+
+#: stabs.c:2147
+msgid "unknown visibility character for baseclass"
+msgstr "невідомий Ñимвол видимоÑÑ‚Ñ– Ð´Ð»Ñ baseclass"
+
+#: stabs.c:2337
+msgid "unnamed $vb type"
+msgstr "тип без назви $vb"
+
+#: stabs.c:2343
+msgid "unrecognized C++ abbreviation"
+msgstr "нерозпізнана абревіатура C++"
+
+#: stabs.c:2419
+msgid "unknown visibility character for field"
+msgstr "невідомий Ñимвол видимоÑÑ‚Ñ– Ð´Ð»Ñ field"
+
+#: stabs.c:2679
+msgid "const/volatile indicator missing"
+msgstr "відÑутній індикатор поÑтійної/змінної"
+
+#: stabs.c:2924
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "Ðемає ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ \"%s\"\n"
+
+#: stabs.c:3224
+msgid "Undefined N_EXCL"
+msgstr "Ðевизначений N_EXCL"
+
+#: stabs.c:3304
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "Ðомер файла типу %d за межами діапазону\n"
+
+#: stabs.c:3309
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Ðомер індекÑу типу %d за межами діапазону\n"
+
+#: stabs.c:3388
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "Ðерозпізнаний тип XCOFF %d\n"
+
+#: stabs.c:3680
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "некоректна Ñкорегована назва `%s'\n"
+
+#: stabs.c:3775
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "немає типів аргументів у Ñкорегованому Ñ€Ñдку\n"
+
+#: stabs.c:5125
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "Декодована назва не є функцією\n"
+
+#: stabs.c:5167
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "Ðеочікуваний тип при декодуванні v3 arglist\n"
+
+#: stabs.c:5234
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "Ðерозпізнаний компонент Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ %d\n"
+
+#: stabs.c:5286
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "Помилка при виводі декодованого шаблону\n"
+
+#: stabs.c:5366
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "Ðеможливо отримати декодований вбудований тип\n"
+
+#: stabs.c:5415
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "Ðеочікуваний декодований varargs\n"
+
+#: stabs.c:5422
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "Ðеочікуваний декодований вбудований тип\n"
+
+#: strings.c:186 strings.c:245
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "неправильний ціле чиÑло у аргументі %s"
+
+#: strings.c:248
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr "некоректна мінімальна довжина Ñ€Ñдка, %d"
+
+#: strings.c:651
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr " Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ñ… Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ Ñ€Ñдків у [файл(ах)] (типово stdin)\n"
+
+#: strings.c:652
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+" Ключі:\n"
+" -a - --all Ð¡ÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñього файла, а не лише розділу даних\n"
+" -f --print-file-name Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ð°Ð·Ð²Ð¸ файла перед кожним Ñ€Ñдком\n"
+" -n --bytes=[чиÑло] ВиÑÐ²Ð»ÐµÐ½Ð½Ñ Ñ‚Ð° вивід будь-Ñких поÑлідовноÑтей із завершальним\n"
+" -<чиÑло> нулем довжиною у [чиÑло] Ñимволів (типово 4).\n"
+" -t --radix={o,d,x} Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдка у оÑнові чиÑÐ»ÐµÐ½Ð½Ñ 8, 10 або 16\n"
+" -o ПÑевдонім Ð´Ð»Ñ --radix=o\n"
+" -T --target=<BFD-ÐÐЗВÐ> Ð’ÐºÐ°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ двійкового файла\n"
+" -e --encoding={s,S,b,l,B,L} Вибір розміру Ñимволу та порÑдку байтів:\n"
+" s = 7-біт, S = 8-біт, {b,l} = 16-біт, {B,L} = 32-біт\n"
+" @<файл> Читати ключі з <файла>\n"
+" -h --help Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— інформації\n"
+" -v --version Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ð¾Ð¼ÐµÑ€Ð° верÑÑ–Ñ— програми\n"
+
+#: sysdump.c:66
+msgid "*undefined*"
+msgstr "*не визначено*"
+
+#: sysdump.c:137
+#, c-format
+msgid "SUM IS %x\n"
+msgstr "СУМРДОРІВÐЮЄ %x\n"
+
+#: sysdump.c:503
+#, c-format
+msgid "GOT A %x\n"
+msgstr "ОТРИМÐÐО %x\n"
+
+#: sysdump.c:521
+#, c-format
+msgid "WANTED %x!!\n"
+msgstr "ПОТРІБÐЕ %x!!\n"
+
+#: sysdump.c:539
+msgid "SYMBOL INFO"
+msgstr "ДÐÐІ СИМВОЛУ"
+
+#: sysdump.c:557
+msgid "DERIVED TYPE"
+msgstr "ПОХІДÐИЙ ТИП"
+
+#: sysdump.c:614
+msgid "MODULE***\n"
+msgstr "МОДУЛЬ***\n"
+
+#: sysdump.c:647
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ð¿Ñ€ÐµÑ‚Ð°Ñ†Ñ–Ñ— об'єктного файла SYSROFF у зрозумілій людині формі\n"
+
+#: sysdump.c:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Ключі:\n"
+" -h --help Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— інформації\n"
+" -v --version Ð’Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ð¾Ð¼ÐµÑ€Ð° верÑÑ–Ñ— програми\n"
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "неможливо відкрити вхідний файл %s"
+
+#: version.c:36
+#, c-format
+msgid "Copyright 2011 Free Software Foundation, Inc.\n"
+msgstr "© Free Software Foundation, Inc., 2011\n"
+
+#: version.c:37
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"Ð¦Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° вільною; ви можете розповÑюджувати Ñ—Ñ— за умов Ð´Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÑƒÐ¼Ð¾Ð²\n"
+"GNU General Public License верÑÑ–Ñ— 3 або (Ñкщо хочете) будь-Ñкої пізнішої\n"
+"верÑÑ–Ñ—.\n"
+"Ðвторами цієї програми не надаєтьÑÑ Ð¶Ð¾Ð´Ð½Ð¸Ñ… гарантій.\n"
+
+#: windmc.c:190
+#, c-format
+msgid "can't create %s file `%s' for output.\n"
+msgstr "не вдалоÑÑ Ñтворити файл %s, «%s», Ð´Ð»Ñ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ….\n"
+
+#: windmc.c:198
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr "ВикориÑтаннÑ: %s [ключі] [вх-файл]\n"
+
+#: windmc.c:200
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianness.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+" Параметри:\n"
+" -a --ascii_in Читати вхідний файл викориÑтовуючи ASCII\n"
+" -A --ascii_out ЗапиÑати двійкові Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñƒ форматі ASCII\n"
+" -b --binprefix до назви .bin-файла додаєтьÑÑ Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ .mc filename_ Ð´Ð»Ñ ÑƒÐ½Ñ–ÐºÐ°Ð»ÑŒÐ½Ð¾ÑÑ‚Ñ–.\n"
+" -c --customflag Ð’Ñтановити інші ознаки Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ\n"
+" -C --codepage_in=<значеннÑ> Ð’Ñтановити кодову Ñторінку при читанні текÑтового файла mc\n"
+" -d --decimal_values Виводити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ текÑтовий файл у деÑÑтковому форматі\n"
+" -e --extension=<розширеннÑ> Ð’Ñтановити Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ°, що викориÑтовувалоÑÑŒ при екÑпорті файла заголовка\n"
+" -F --target <призначеннÑ> Вказує ціль виводу Ð´Ð»Ñ Ð´Ð°Ð½Ð¸Ñ… без впорÑÐ´ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð¹Ñ‚Ñ–Ð².\n"
+" -h --headerdir=<каталог> Ð’Ñтановити каталог екÑпорту Ð´Ð»Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ–Ð²\n"
+" -u --unicode_in ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ файла UTF16\n"
+" -U --unicode_out ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð° виводу UFT16\n"
+" -m --maxlength=<значеннÑ> МакÑимальна припуÑтима довжина повідомленнÑ\n"
+" -n --nullterminate Ðвтоматично додавати Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ñдків нулем\n"
+" -o --hresult_use ВикориÑтати Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ HRESULT заміÑÑ‚ÑŒ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð´Ñƒ ÑтатуÑу\n"
+" -O --codepage_out=<значеннÑ> Ð’Ñтановити кодову Ñторінку, що викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу текÑтового файла\n"
+" -r --rcdir=<каталог> Ð’Ñтановити каталог екÑпорту Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² rc\n"
+" -x --xdbg=<каталог> Куди запиÑувати include-файл .dbg C\n"
+" Ñкий міÑтить відповідноÑÑ‚Ñ– ідентифікаторів повідомлень до Ñ—Ñ… назв.\n"
+
+#: windmc.c:220
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+" -H --help Вивід довідки\n"
+" -v --verbose Докладний вивід про виконувані дії\n"
+" -V --version Вивід інформації про верÑÑ–ÑŽ\n"
+
+#: windmc.c:261 windres.c:411
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: попередженнÑ: "
+
+#: windmc.c:262
+#, c-format
+msgid "A codepage was specified switch `%s' and UTF16.\n"
+msgstr "Ð”Ð»Ñ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÐ»Ð¾ вказано ключ «%s» Ñ– UTF16.\n"
+
+#: windmc.c:263
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr "\tпараметри кодової Ñторінки ігноруютьÑÑ.\n"
+
+#: windmc.c:307
+msgid "try to add a ill language."
+msgstr "Ñпроба додати некоректну мову."
+
+#: windmc.c:1116
+#, c-format
+msgid "unable to open file `%s' for input.\n"
+msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл «%s» Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… даних.\n"
+
+#: windmc.c:1124
+#, c-format
+msgid "unable to read contents of %s"
+msgstr "не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ вміÑÑ‚ %s"
+
+#: windmc.c:1136
+msgid "input file does not seems to be UFT16.\n"
+msgstr "вхідний файл не у кодуванні UFT16.\n"
+
+#: windres.c:216
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "неможливо відкрити %s `%s': %s "
+
+#: windres.c:390
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": очікувалоÑÑŒ, що це каталог\n"
+
+#: windres.c:402
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": очікувалоÑÑŒ, що це leaf\n"
+
+#: windres.c:413
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": дублікати значеннÑ\n"
+
+#: windres.c:563
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "невідомий тип формату `%s'"
+
+#: windres.c:564
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: підтримувані формати:"
+
+#. Otherwise, we give up.
+#: windres.c:647
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "неможливо визначити тип файла `%s'; викориÑтовуйте ключ -J"
+
+#: windres.c:659
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "ВикориÑтаннÑ: %s [ключі] [вхідний_файл] [файл_виводу]\n"
+
+#: windres.c:661
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" --preprocessor-arg=<arg> Additional preprocessor argument\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+" Ключі:\n"
+" -i --input=<файл> Ðазва вхідного файла\n"
+" -o --output=<файл> Ðазва файла виводу\n"
+" -J --input-format=<формат> Ð’ÐºÐ°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ñ— формату\n"
+" -O --output-format=<формат> Ð’ÐºÐ°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ виводу\n"
+" -F --target=<цель> Ð’ÐºÐ°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†Ñ–Ð»Ñ– COFF\n"
+" --preprocessor=<програма> Програма Ð´Ð»Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ñ— обробки файла rc\n"
+" --preprocessor-arg=<арг> Додатковий аргумент заÑобу попередньої обробки\n"
+" -I --include-dir=<каталог> Каталог, що включаєтьÑÑ Ð¿Ñ€Ð¸ попередній обробці файла rc\n"
+" -D --define <sym>[=<знач>] Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ SYM при попередній обробці файла rc\n"
+" -U --undefine <sym> СкаÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ SYM при попередній обробці файла rc\n"
+" -v --verbose Докладно - повідомлÑÑ” про вÑÑ– Ñвої дії\n"
+" -c --codepage=<кодуваннÑ> Вказати типове ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñимволів\n"
+" -l --language=<знач> Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð²Ð¸ при читанні файла rc\n"
+" --use-temp-file ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¼Ñ‡Ð°Ñового файла заміÑÑ‚ÑŒ popen\n"
+" Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… виводу препроцеÑора\n"
+" --no-use-temp-file ВикориÑÑ‚Ð°Ð½Ð½Ñ popen (типово)\n"
+
+#: windres.c:679
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug Ð’Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñтики обробки\n"
+
+#: windres.c:682
+#, 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:687
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"FORMAT Ñ” одним з rc, res або coff, та визначаєтьÑÑ Ð·Ð° розширеннÑм\n"
+"назви файла, Ñкщо не був вказаний. Одиночна назва файла Ñ” вхідним файлом.\n"
+"Якщо вхідний файл не вказаний викориÑтовуєтьÑÑ stdin, типово rc. Якщо не\n"
+"вказаний файл виводу викориÑтовуєтьÑÑ stdout, типово rc.\n"
+
+#: windres.c:850
+msgid "invalid codepage specified.\n"
+msgstr "вказано некоректне ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ñимволів.\n"
+
+#: windres.c:865
+msgid "invalid option -f\n"
+msgstr "некоректний ключ -f\n"
+
+#: windres.c:870
+msgid "No filename following the -fo option.\n"
+msgstr "Ðемає назви файла піÑÐ»Ñ ÐºÐ»ÑŽÑ‡Ñ– -fo.\n"
+
+#: windres.c:959
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr "Ключ -I не рекомендуєтьÑÑ Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ формату, натоміÑÑ‚ÑŒ викориÑтовуйте -J.\n"
+
+#: windres.c:1072
+msgid "no resources"
+msgstr "немає реÑурÑів"
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup завершивÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾ÑŽ: %s"
+
+#: wrstabs.c:637
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: неправильний розмір %u"
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: попередженнÑ: невідомий розмір Ð¿Ð¾Ð»Ñ `%s' в struct"
+
+#~ msgid "illegal option -- %c"
+#~ msgstr "неправильний ключ -- %c"
+
+#~ msgid ""
+#~ "\n"
+#~ "<%s>\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "<%s>\n"
+#~ "\n"
+
+#~ msgid "Usage: %s < input_file > output_file\n"
+#~ msgstr "ВикориÑтаннÑ: %s < вхідний_файл > файл_виводу\n"
+
+#~ msgid "Prints bytes from stdin in hex format.\n"
+#~ msgstr "Виводити байти з stdin у шіÑтнадцÑтковому форматі.\n"
+
+#~ msgid " %d\t"
+#~ msgstr " %d\t"
+
+#~ msgid "%lu\t"
+#~ msgstr "%lu\t"
+
+#~ msgid ""
+#~ "%s\n"
+#~ "\n"
+#~ msgstr ""
+#~ "%s\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "The section %s contains:\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Розділ %s міÑтить:\n"
+#~ "\n"
+
+#~ msgid "Unable to locate entry %lu in the abbreviation table\n"
+#~ msgstr "Ðеможливо визначити Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿ÑƒÐ½ÐºÑ‚Ñƒ %lu у таблиці абревіації\n"
+
+#~ msgid " (%s)\n"
+#~ msgstr " (%s)\n"
+
+#~ msgid " %s\n"
+#~ msgstr " %s\n"
+
+#~ msgid " %d\t"
+#~ msgstr " %d\t"
+
+#~ msgid "%s\n"
+#~ msgstr "%s\n"
+
+#~ msgid " %ld %s [%s]\n"
+#~ msgstr " %ld %s [%s]\n"
+
+#~ msgid " %-18s %s\n"
+#~ msgstr " %-18s %s\n"
+
+#~ msgid "Location lists in .debug_info section aren't in ascending order!\n"
+#~ msgstr "СпиÑки Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ розділі .debug_info не впорÑдковані за зроÑтаннÑм!\n"
+
+#~ msgid " %8.8lx %8.8lx %8.8lx (base address)\n"
+#~ msgstr " %8.8lx %8.8lx %8.8lx (базова адреÑа)\n"
+
+#~ msgid "Range lists in .debug_info section aren't in ascending order!\n"
+#~ msgstr "СпиÑки діапазонів у розділі .debug_info не впорÑдковані за зроÑтаннÑм!\n"
+
+#~ msgid "set .nlmsections flags"
+#~ msgstr "вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¾Ð·Ð½Ð°Ðº .nlmsections"
+
+#~ msgid "can't add section '%s' - it already exists!"
+#~ msgstr "не вдаєтьÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ розділ '%s' - він вже Ñ–Ñнує!"
+
+#~ msgid "%s: error in %s: %s"
+#~ msgstr "%s: помилка у %s: %s"
+
+#~ msgid "making"
+#~ msgstr "ÑтворюєтьÑÑ"
+
+#~ msgid "size"
+#~ msgstr "розмір"
+
+#~ msgid "vma"
+#~ msgstr "vma"
+
+#~ msgid "private data"
+#~ msgstr "приватні дані"
+
+#~ msgid "%s: section `%s': error in %s: %s"
+#~ msgstr "%s: розділ `%s': помилка у %s: %s"
+
+#~ msgid " Pg"
+#~ msgstr " Стор"
+
+#~ msgid "symtab shndx"
+#~ msgstr "symtab shndx"
+
+#~ msgid "invalid section [%5u] in group section [%5u]\n"
+#~ msgstr "неправильний розділ [%5u] у розділі груп [%5u]\n"
+
+#~ msgid " Offset: %#08lx Link to section: %ld (%s)\n"
+#~ msgstr " ЗÑув: %#08lx ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° розділ: %ld (%s)\n"
+
+#~ msgid "skipping relocation of unknown size against offset 0x%lx in section %s\n"
+#~ msgstr "пропуÑкаєтьÑÑ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ð³Ð¾ розміру відноÑно зÑуву 0x%lx у розділі %s\n"
+
+#~ msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
+#~ msgstr "пропуÑкаєтьÑÑ Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ тип Ñимволу %s у переміщенні в розділі .rela.%s\n"
+
+#~ msgid "liblist"
+#~ msgstr "liblist"
+
+#~ msgid "PT_FIRSTMACH+%d"
+#~ msgstr "PT_FIRSTMACH+%d"
+
+#~ msgid "%s: invalid archive string table offset %lu\n"
+#~ msgstr "%s: неправильний зÑув таблиці Ñ€Ñдків архіву %lu\n"
+
+#~ msgid "%s %s: %s"
+#~ msgstr "%s %s: %s"
+
+#~ msgid "%s:%d: %s\n"
+#~ msgstr "%s:%d: %s\n"
+
+#~ msgid "invalid number %s"
+#~ msgstr "некоректне чиÑло %s"
+
+#~ msgid "stat returns negative size for %s"
+#~ msgstr "stat повернув від'ємний розмір Ð´Ð»Ñ %s"
+
+#~ msgid "%s section needs a populated .debug_info section\n"
+#~ msgstr "Ð”Ð»Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s потрібен заповнений розділ .debug_info\n"
+
+#~ msgid "%s section has more comp units than .debug_info section\n"
+#~ msgstr "Розділ %s міÑтить більше елементів comp, ніж розділ .debug_info\n"
+
+#~ 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"
+
+#~ msgid " (Pointer size: %u)%s\n"
+#~ msgstr " (Розмір вказівника: %u)%s\n"
+
+#~ msgid "Extend line ops need a valid pointer size, guessing at 4\n"
+#~ msgstr "Ð”Ð»Ñ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ… кодів операцій потрібне правильний розмір вказівника; вважаєтьÑÑ 4\n"
+
+#~ msgid "unsupported or unknown DW_CFA_%d\n"
+#~ msgstr "непідтримуваний або невідомий DW_CFA_%d\n"
+
+#~ msgid "there are no sections to be copied!"
+#~ msgstr "немає розділів Ð´Ð»Ñ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ!"
+
+#~ msgid "Out of memory"
+#~ msgstr "Бракує пам'ÑÑ‚Ñ–"
diff --git a/binutils-2.24/binutils/po/vi.gmo b/binutils-2.24/binutils/po/vi.gmo
new file mode 100644
index 00000000..dee68e3e
--- /dev/null
+++ b/binutils-2.24/binutils/po/vi.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/vi.po b/binutils-2.24/binutils/po/vi.po
new file mode 100644
index 00000000..78180132
--- /dev/null
+++ b/binutils-2.24/binutils/po/vi.po
@@ -0,0 +1,8492 @@
+# Vietnamese translation for BinUtils.
+# Copyright © 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Clytie Siddall <clytie@riverland.net.au>, 2006-2010.
+# Trần Ngá»c Quân <vnwildman@gmail.com>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils-2.22.90\n"
+"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
+"POT-Creation-Date: 2011-10-25 11:20+0100\n"
+"PO-Revision-Date: 2012-07-31 14:15+0700\n"
+"Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n"
+"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
+"Language: vi\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.8\n"
+"X-Poedit-Language: Vietnamese\n"
+"X-Poedit-Country: VIET NAM\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: addr2line.c:81
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Sá»­ dụng: %s [tùy_chá»n...] [địa_chỉ...)]\n"
+
+#: addr2line.c:82
+#, 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:83
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Không ghi rõ địa chỉ trên dòng lệnh thì Ä‘á»c từ đầu vào tiêu chuẩn\n"
+
+#: addr2line.c:84
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+" -a --addresses Show addresses\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 Unwind inlined functions\n"
+" -j --section=<name> Read section-relative offsets instead of addresses\n"
+" -p --pretty-print Make the output easier to read for humans\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Tùy chá»n:\n"
+" @<tập_tin>\t\t\tÄá»c các tùy chá»n từ tập tin này\n"
+" -b --target=<định_dạng> \tÄặt định dạng tập tin nhị phân\n"
+" -e --exe=<trình> \tÄặt tên tập tin nhập vào (mặc định là \"a.out\")\n"
+" -i --inlines\t\t\tTháo ra các hàm trực tiếp (chung dòng)\n"
+" -j --section=<tên>\tÄá»c các hiệu tÆ°Æ¡ng đối vá»›i phần thay cho địa chỉ\n"
+" -p --pretty-print Làm cho kết xuất dá»… Ä‘á»c đối vá»›i con ngÆ°á»i\n"
+" -s --basenames\t\tTước các tên thư mục\n"
+" -f --functions \tHiện tên các chức năng\n"
+" -C --demangle[=kiểu_dáng] \tTháo gỡ các tên chức năng\n"
+" -h --help \tHiện thông tin trợ giúp này\n"
+" -v --version \tHiện phiên bản của chương trình\n"
+"\n"
+
+#: addr2line.c:101 ar.c:304 ar.c:333 coffdump.c:471 dlltool.c:3938
+#: dllwrap.c:524 elfedit.c:653 nlmconv.c:1114 objcopy.c:576 objcopy.c:611
+#: readelf.c:3214 size.c:99 srconv.c:1743 strings.c:667 sysdump.c:653
+#: windmc.c:228 windres.c:695
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "Hãy trình báo lỗi cho %s\n"
+
+#. Note for translators: This printf is used to join the
+#. function name just printed above to the line number/
+#. file name pair that is about to be printed below. Eg:
+#.
+#. foo at 123:bar.c
+#: addr2line.c:276
+#, c-format
+msgid " at "
+msgstr " tại "
+
+#. Note for translators: This printf is used to join the
+#. line number/file name pair that has just been printed with
+#. the line number/file name pair that is going to be printed
+#. by the next iteration of the while loop. Eg:
+#.
+#. 123:bar.c (inlined by) 456:main.c
+#: addr2line.c:308
+#, c-format
+msgid " (inlined by) "
+msgstr " (chung dòng bởi) "
+
+#: addr2line.c:341
+#, c-format
+msgid "%s: cannot get addresses from archive"
+msgstr "%s: không thể lấy địa chỉ từ kho"
+
+#: addr2line.c:358
+#, c-format
+msgid "%s: cannot find section %s"
+msgstr "%s: không tìm thấy phần %s"
+
+#: addr2line.c:427 nm.c:1570 objdump.c:3423
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "không rõ kiểu dáng tháo gõ \"%s\""
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "không có mục nhập %s trong kho\n"
+
+#: ar.c:254
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <name>] [member-name] [count] archive-file file...\n"
+msgstr "Sá»­ dụng: %s [tùy chá»n mô phá»ng] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [--plugin <tên>] [tên-thành-viên] [số-đếm] tập_tin_kho tập_tin...\n"
+
+#: ar.c:260
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [member-name] [count] archive-file file...\n"
+msgstr "Sá»­ dụng: %s [tùy chá»n mô phá»ng] [-]{dmpqrstx}[abcDfilMNoPsSTuvV] [tên-thành-viên] [số-đếm] tập_tin_kho tập_tin...\n"
+
+#: ar.c:266
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<văn_lệnh-mri]\n"
+
+#: ar.c:267
+#, c-format
+msgid " commands:\n"
+msgstr " lệnh:\n"
+
+#: ar.c:268
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d • xoá tập tin ra kho\n"
+
+#: ar.c:269
+#, 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:270
+#, 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:271
+#, 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:272
+#, 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:273
+#, c-format
+msgid " s - act as ranlib\n"
+msgstr " s - thực hiện như là thư viện ranlib\n"
+
+#: ar.c:274
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t • hiển thị nội dung của kho\n"
+
+#: ar.c:275
+#, 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:276
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " bộ sửa đổi đặc trưng cho lệnh:\n"
+
+#: ar.c:277
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] • để tập tin đẳng sau [tên bộ phạn]\n"
+
+#: ar.c:278
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] • để tập tin đẳng trước [tên bộ phạn] (bằng [i])\n"
+
+#: ar.c:279
+#, c-format
+msgid " [D] - use zero for timestamps and uids/gids\n"
+msgstr " [D] - dùng số không cho nhãn thá»i gian và UID/GID\n"
+
+#: ar.c:280
+#, 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:281
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] • cắt ngắn tên tập tin đã chèn\n"
+
+#: ar.c:282
+#, 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:283
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] • bảo tồn các ngày gốc\n"
+
+#: ar.c:284
+#, 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 của kho hiện thá»i\n"
+
+#: ar.c:285
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " bộ sửa đổi chung:\n"
+
+#: ar.c:286
+#, 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:287
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] • tạo một chỉ mục kho (như ranlib)\n"
+
+#: ar.c:288
+#, 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:289
+#, c-format
+msgid " [T] - make a thin archive\n"
+msgstr " [T] • tạo một kho lưu mảnh\n"
+
+#: ar.c:290
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] • xuất chi tiết\n"
+
+#: ar.c:291
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] • hiển thị số thứ tự phiên bản\n"
+
+#: ar.c:292
+#, c-format
+msgid " @<file> - read options from <file>\n"
+msgstr " @<tập_tin>\t• Ä‘á»c các tùy chá»n từ tập tin này\n"
+
+#: ar.c:293
+#, c-format
+msgid " --target=BFDNAME - specify the target object format as BFDNAME\n"
+msgstr " --target=BFDNAME - chỉ định định dạng đối tượng đích là BFDNAME\n"
+
+#: ar.c:295
+#, c-format
+msgid " optional:\n"
+msgstr " vẫn tùy chá»n:\n"
+
+#: ar.c:296
+#, c-format
+msgid " --plugin <p> - load the specified plugin\n"
+msgstr " --plugin <p> - nạp phần bổ sung chỉ ra\n"
+
+#: ar.c:317
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Sá»­ dụng: %s [tùy_chá»n] kho\n"
+
+#: ar.c:318
+#, 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 đến kho\n"
+
+#: ar.c:319
+#, c-format
+msgid ""
+" The options are:\n"
+" @<file> Read options from <file>\n"
+msgstr ""
+"Tùy:\n"
+" @<tập_tin>\t\tÄá»c các tùy chá»n từ tập tin này\n"
+
+#: ar.c:322
+#, c-format
+msgid " --plugin <name> Load the specified plugin\n"
+msgstr " --plugin <tên> Nạp phần bổ sung chỉ ra\n"
+
+#: ar.c:325
+#, c-format
+msgid ""
+" -t Update the archive's symbol map timestamp\n"
+" -h --help Print this help message\n"
+" -v --version Print version information\n"
+msgstr ""
+" -t Cập nhật nhãn thá»i gian sÆ¡ đồ ký hiệu của kho lÆ°u\n"
+" -h --help Hiển thị trợ giúp này\n"
+" -v --version Hiển thị thông tin vỠphiên bản\n"
+
+#: ar.c:449
+msgid "two different operation options specified"
+msgstr "chỉ định hai tùy chá»n thao tác khác nhau"
+
+#: ar.c:538 nm.c:1643
+#, c-format
+msgid "sorry - this program has been built without plugin support\n"
+msgstr "tiếc là chương trình này được xây dựng mà không hỗ trợ phần bổ sung\n"
+
+#: ar.c:693
+msgid "no operation specified"
+msgstr "chưa ghi rõ thao tác"
+
+#: ar.c:696
+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:699
+msgid "`u' is not meaningful with the `D' option."
+msgstr "\"u\" có nghÄ©a chỉ cùng vá»›i tùy chá»n \"D\"."
+
+#: ar.c:707
+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:710
+msgid "Value for `N' must be positive."
+msgstr "Giá trị cho \"N\" phải là số dương."
+
+#: ar.c:724
+msgid "`x' cannot be used on thin archives."
+msgstr "không thể sử dụng \"x\" với kho mảnh."
+
+#: ar.c:771
+#, 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:840
+#, c-format
+msgid "creating %s"
+msgstr "đang tạo %s"
+
+#: ar.c:889 ar.c:943 ar.c:1272 objcopy.c:2080
+#, c-format
+msgid "internal stat error on %s"
+msgstr "lỗi stat (lấy trạng thái) nội bộ trên %s"
+
+#: ar.c:908 ar.c:976
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s không phải là một kho hợp lệ"
+
+#: ar.c:1034
+msgid "could not create temporary file whilst writing archive"
+msgstr "không thể tạo tập tin tạm trong khi ghi vào lưu trữ"
+
+#: ar.c:1177
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "Không có bộ phận tên \"%s\"\n"
+
+#: ar.c:1227
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "không có mục nhập %s trong kho %s."
+
+#: ar.c:1366
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s: không có sơ đồ kho cần cập nhật"
+
+#: arsup.c:89
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "Không có mục nhập %s trong kho.\n"
+
+#: arsup.c:114
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "Không thể mở tập tin %s\n"
+
+#: arsup.c:164
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s: Không thể mở kho lưu kết xuất %s\n"
+
+#: arsup.c:181
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s: Không thể mở kho lưu nhập vào %s\n"
+
+#: arsup.c:190
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s: tập tin %s không phải là một kho lưu\n"
+
+#: arsup.c:230
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s: chưa ghi rõ kho lưu kết xuất\n"
+
+#: arsup.c:250 arsup.c:288 arsup.c:330 arsup.c:350 arsup.c:416
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s: không có kho lưu kết xuất đã mở\n"
+
+#: arsup.c:261 arsup.c:371 arsup.c:397
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s: không thể mở tập tin %s\n"
+
+#: arsup.c:315 arsup.c:393 arsup.c:474
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s: không tìm thấy tập tin mô-đun %s\n"
+
+#: arsup.c:425
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "Kho lÆ°u đã mở hiện thá»i là %s\n"
+
+#: arsup.c:449
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s: không có kho lưu đã mở\n"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " Không có tùy chá»n đặc trÆ°ng cho mô phá»ng\n"
+
+#. Macros for common output.
+#: binemul.h:49
+#, c-format
+msgid " emulation options: \n"
+msgstr " tùy chá»n mô phá»ng:\n"
+
+#: bucomm.c:163
+#, 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:175
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s: định dạng khớp:"
+
+#: bucomm.c:190
+#, c-format
+msgid "Supported targets:"
+msgstr "Äích được há»— trợ :"
+
+#: bucomm.c:192
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s: đích được hỗ trợ :"
+
+#: bucomm.c:210
+#, c-format
+msgid "Supported architectures:"
+msgstr "Kiến trúc được hỗ trợ :"
+
+#: bucomm.c:212
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s: kiến trúc được hỗ trợ :"
+
+#: bucomm.c:228
+msgid "big endian"
+msgstr "big endian"
+
+#: bucomm.c:229
+msgid "little endian"
+msgstr "little endian"
+
+#: bucomm.c:230
+msgid "endianness unknown"
+msgstr "không rõ endian"
+
+#: bucomm.c:251
+#, c-format
+msgid ""
+"%s\n"
+" (header %s, data %s)\n"
+msgstr ""
+"%s\n"
+" (phần đầu %s, dữ liệu %s)\n"
+
+#: bucomm.c:407
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "Phiên bản tập tin đầu BFD %s\n"
+
+#: bucomm.c:559
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s: con số sai: %s"
+
+#: bucomm.c:576 strings.c:409
+#, c-format
+msgid "'%s': No such file"
+msgstr "\"%s\": không có tập tin như vậy"
+
+#: bucomm.c:578 strings.c:411
+#, 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:582
+#, 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"
+
+#: bucomm.c:584
+#, c-format
+msgid "Warning: '%s' has negative size, probably it is too large"
+msgstr "Cảnh báo: '%s' có kích thước âm, hầu như chắc chắn là nó quá dài"
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr "#dòng %d "
+
+#: coffdump.c:130
+#, c-format
+msgid "size %d "
+msgstr "kích cỡ %d"
+
+#: coffdump.c:135
+#, c-format
+msgid "section definition at %x size %x\n"
+msgstr "phần định nghĩa tại %x kích thước %x\n"
+
+#: coffdump.c:141
+#, c-format
+msgid "pointer to"
+msgstr "con trá» tá»›i"
+
+#: coffdump.c:146
+#, c-format
+msgid "array [%d] of"
+msgstr "mảng [%d] của"
+
+#: coffdump.c:151
+#, c-format
+msgid "function returning"
+msgstr "trả vỠtừ hàm"
+
+#: coffdump.c:155
+#, c-format
+msgid "arguments"
+msgstr "các đối số"
+
+#: coffdump.c:159
+#, c-format
+msgid "code"
+msgstr "mã"
+
+#: coffdump.c:165
+#, c-format
+msgid "structure definition"
+msgstr "định nghĩa cấu trúc"
+
+#: coffdump.c:171
+#, c-format
+msgid "structure ref to UNKNOWN struct"
+msgstr "cấu trúc tham chiếu đến một cấu trúc KHÔNG-RÕ"
+
+#: coffdump.c:173
+#, c-format
+msgid "structure ref to %s"
+msgstr "cấu trúc tham chiếu đến %s"
+
+#: coffdump.c:176
+#, c-format
+msgid "enum ref to %s"
+msgstr "enum tham chiếu đến %s"
+
+#: coffdump.c:179
+#, c-format
+msgid "enum definition"
+msgstr "định nghĩa kiểu enum (liệt kê)"
+
+#: coffdump.c:252
+#, c-format
+msgid "Stack offset %x"
+msgstr "Khoảng bù stack %x"
+
+#: coffdump.c:255
+#, c-format
+msgid "Memory section %s+%x"
+msgstr "Phần bộ nhớ %s+%x"
+
+#: coffdump.c:258
+#, c-format
+msgid "Register %d"
+msgstr "Thanh ghi %d"
+
+#: coffdump.c:261
+#, c-format
+msgid "Struct Member offset %x"
+msgstr "Khoảng bù các thành viên của cấu trúc %x"
+
+#: coffdump.c:264
+#, c-format
+msgid "Enum Member offset %x"
+msgstr "Khoảng bù các thành viên của enum %x"
+
+#: coffdump.c:267
+#, c-format
+msgid "Undefined symbol"
+msgstr "Ký hiệu chưa định nghĩa"
+
+#: coffdump.c:334
+#, c-format
+msgid "List of symbols"
+msgstr "Danh sách ký hiệu"
+
+#: coffdump.c:341
+#, c-format
+msgid "Symbol %s, tag %d, number %d"
+msgstr "Ký hiệu %s, thẻ %d, kiểu số %d"
+
+#: coffdump.c:345 readelf.c:12215 readelf.c:12289
+#, c-format
+msgid "Type"
+msgstr "Kiểu"
+
+#: coffdump.c:350
+#, c-format
+msgid "Where"
+msgstr "Tại"
+
+#: coffdump.c:354
+#, c-format
+msgid "Visible"
+msgstr "Khả dụng"
+
+#: coffdump.c:370
+msgid "List of blocks "
+msgstr "danh sách các khối"
+
+#: coffdump.c:383
+#, c-format
+msgid "vars %d"
+msgstr "biến %d"
+
+#: coffdump.c:386
+#, c-format
+msgid "blocks"
+msgstr "khối"
+
+#: coffdump.c:404
+#, c-format
+msgid "List of source files"
+msgstr "Liệt kê tất cả các tập tin nguồn."
+
+#: coffdump.c:410
+#, c-format
+msgid "Source file %s"
+msgstr "Tập tin mã nguồn %s"
+
+#: coffdump.c:424
+#, c-format
+msgid "section %s %d %d address %x size %x number %d nrelocs %d"
+msgstr "phần %s %d %d địa chỉ %x kích thước %x số %d nrelocs %d"
+
+#: coffdump.c:449
+#, c-format
+msgid "#sources %d"
+msgstr "#nguồn %d"
+
+#: coffdump.c:462 sysdump.c:646
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Sá»­ dụng: %s [tùy_chá»n...] tập_tin_nhập\n"
+
+#: coffdump.c:463
+#, c-format
+msgid " Print a human readable interpretation of a COFF object file\n"
+msgstr " Hiển thị ở định dạng dá»… hiểu dành cho con ngÆ°á»i để thể hiện tập tin đối tượng COFF\n"
+
+#: coffdump.c:464
+#, 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"
+" @<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:533 srconv.c:1833 sysdump.c:710
+msgid "no input file specified"
+msgstr "chưa ghi rõ tập tin nhập vào"
+
+#: cxxfilt.c:119 nm.c:269 objdump.c:281
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "Hãy trình báo lỗi cho %s.\n"
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace: (gỡ lá»—i thêm vào vùng tên hiện có) không có tập tin hiện thá»i"
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source: (gỡ lá»—i bắt đầu nguồn) không có cuá»™c gá»i kiểu \"debug_set_filename\" (gỡ lá»—i lập tên tập tin)"
+
+#: debug.c:781
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function: (gỡ lá»—i ghi lÆ°u chứa năng) không có cuá»™c gá»i kiểu \"debug_set_filename\" (gỡ lá»—i lập tên tập tin)"
+
+#: debug.c:833
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter: (gỡ lá»—i ghi lÆ°u tham số) không có chức năng hiện thá»i"
+
+#: debug.c:865
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function: (gỡ lá»—i kết thúc chức năng) không có chức năng hiện thá»i"
+
+#: debug.c:871
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function: (gỡ lỗi kết thúc chức năng) một số khối chưa được đóng"
+
+#: debug.c:899
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block: (gỡ lá»—i bắt đầu khối) không có khối hiện thá»i"
+
+#: debug.c:935
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block: (gỡ lá»—i kết thúc khối) không có khối hiện thá»i"
+
+#: debug.c:942
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block: (gỡ lỗi kết thúc khối) cố đóng khối cấp đầu"
+
+#: debug.c:965
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line: (gỡ lá»—i ghi lÆ°u dòng) không có Ä‘Æ¡n vị hiện thá»i"
+
+#. FIXME
+#: debug.c:1018
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block: chưa thực hiện"
+
+#. FIXME
+#: debug.c:1029
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block: chưa thực hiện"
+
+#. FIXME.
+#: debug.c:1113
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label: chưa thực hiện"
+
+#: debug.c:1135
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable: (gỡ lá»—i ghi lÆ°u biến) không có tập tin hiện thá»i"
+
+#: debug.c:1663
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type: (gỡ lỗi tạo kiểu chưa được định nghĩa) kiểu chưa được hỗ trợ"
+
+#: debug.c:1840
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type: không có tập tin hiện thá»i"
+
+#: debug.c:1885
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type: (gỡ lá»—i kiểu thẻ) không có tập tin hiện thá»i"
+
+#: debug.c:1893
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type: (gỡ lỗi kiểu thẻ) đã thử một thẻ bổ sung"
+
+#: debug.c:1930
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "Cảnh báo : đang thay đổi kích cỡ kiểu từ %d đến %d\n"
+
+#: debug.c:1952
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type: (gỡ lá»—i tìm kiểu tên đã cho) không có Ä‘Æ¡n vị biên dịch hiện thá»i"
+
+#: debug.c:2055
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type: (gỡ lỗi lấy kiểu thật) thông tin gỡ lỗi vòng cho %s\n"
+
+#: debug.c:2482
+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:902 dlltool.c:928 dlltool.c:959
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "Lỗi nội bộ : không rõ kiểu máy: %d"
+
+#: dlltool.c:1000
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "Không thể mở tập tin định nghĩa: %s"
+
+#: dlltool.c:1005
+#, c-format
+msgid "Processing def file: %s"
+msgstr "Äang xá»­ lý tập tin định nghÄ©a: %s"
+
+#: dlltool.c:1009
+msgid "Processed def file"
+msgstr "Äã xá»­ lý tập tin định nghÄ©a"
+
+#: dlltool.c:1033
+#, 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:1070
+#, 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:1088
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "TÊN: %s cơ bản: %x"
+
+#: dlltool.c:1091 dlltool.c:1112
+msgid "Can't have LIBRARY and NAME"
+msgstr "Không cho phép dùng với nhau THƯ VIỆN và TÊN"
+
+#: dlltool.c:1109
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "THƯ VIỆN: %s cơ bản: %x"
+
+#: dlltool.c:1266
+#, c-format
+msgid "VERSION %d.%d\n"
+msgstr "PHIÊN BẢN %d.%d\n"
+
+#: dlltool.c:1314
+#, c-format
+msgid "run: %s %s"
+msgstr "chạy: %s %s"
+
+#: dlltool.c:1354 resrc.c:293
+#, c-format
+msgid "wait: %s"
+msgstr "đợi: %s"
+
+#: dlltool.c:1359 dllwrap.c:422 resrc.c:298
+#, 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:1365 dllwrap.c:429 resrc.c:305
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s đã thoát với trạng thái %d"
+
+#: dlltool.c:1396
+#, 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:1536
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "Äang loại trừ ký hiệu : %s"
+
+#: dlltool.c:1625 dlltool.c:1636 nm.c:1012 nm.c:1023
+#, 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:1662
+#, c-format
+msgid "Done reading %s"
+msgstr "Hoàn tất Ä‘á»c %s"
+
+#: dlltool.c:1672
+#, c-format
+msgid "Unable to open object file: %s: %s"
+msgstr "Không thể mở tập tin đối tượng: %s: %s"
+
+#: dlltool.c:1675
+#, c-format
+msgid "Scanning object file %s"
+msgstr "Äang quét tập tin đối tượng %s"
+
+#: dlltool.c:1690
+#, 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:1792
+msgid "Adding exports to output file"
+msgstr "Äang thêm các bản xuất vào nhóm kết xuất..."
+
+#: dlltool.c:1844
+msgid "Added exports to output file"
+msgstr "Äã thêm các bản xuất vào tập tin kết xuất"
+
+#: dlltool.c:1986
+#, c-format
+msgid "Generating export file: %s"
+msgstr "Äang tạo ra tập tin xuất ra: %s"
+
+#: dlltool.c:1991
+#, 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:1994
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "Äã mở tập tin tạm thá»i: %s"
+
+#: dlltool.c:2171
+msgid "failed to read the number of entries from base file"
+msgstr "lá»—i Ä‘á»c số các mục nhập từ tập tin cÆ¡ bản"
+
+#: dlltool.c:2219
+msgid "Generated exports file"
+msgstr "Äã tạo tập tin xuất ra"
+
+#: dlltool.c:2428
+#, c-format
+msgid "bfd_open failed open stub file: %s: %s"
+msgstr "bfd_open gặp lỗi khi mở tập tin stub: %s: %s"
+
+#: dlltool.c:2432
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "Äang tạo tập tin stub: %s"
+
+#: dlltool.c:2894
+#, c-format
+msgid "bfd_open failed reopen stub file: %s: %s"
+msgstr "bfd_open gặp lỗi khi mở lại tập tin stub: %s: %s"
+
+#: dlltool.c:2908 dlltool.c:2984
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "lá»—i mở tập tin đầu tạm thá»i: %s"
+
+#: dlltool.c:2970 dlltool.c:3050
+#, c-format
+msgid "failed to open temporary head file: %s: %s"
+msgstr "gặp lá»—i khi mở phần đầu tập tin đầu tạm thá»i: %s: %s"
+
+#: dlltool.c:3064
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "lá»—i mở tập tin Ä‘uôi tạm thá»i: %s"
+
+#: dlltool.c:3121
+#, c-format
+msgid "failed to open temporary tail file: %s: %s"
+msgstr "gặp lá»—i mở phần Ä‘uôi tập tin tạm thá»i: %s: %s"
+
+#: dlltool.c:3143
+#, c-format
+msgid "Can't create .lib file: %s: %s"
+msgstr "Không thể tạo tập tin \".lib\" (thư viện): %s: %s"
+
+#: dlltool.c:3147
+#, c-format
+msgid "Creating library file: %s"
+msgstr "Äang tạo tập tin thÆ° viện: %s"
+
+#: dlltool.c:3239 dlltool.c:3245
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "không thể xoá %s: %s"
+
+#: dlltool.c:3250
+msgid "Created lib file"
+msgstr "Äã tạo tập tin thÆ° viện"
+
+#: dlltool.c:3462
+#, c-format
+msgid "Can't open .lib file: %s: %s"
+msgstr "Không thể mở tập tin \".lib\" (thư viện): %s: %s"
+
+#: dlltool.c:3470 dlltool.c:3492
+#, c-format
+msgid "%s is not a library"
+msgstr "%s không phải là một thư viện"
+
+#: dlltool.c:3510
+#, c-format
+msgid "Import library `%s' specifies two or more dlls"
+msgstr "Thư viện nhập \"%s\" chỉ ra ít nhất hai dll"
+
+#: dlltool.c:3521
+#, c-format
+msgid "Unable to determine dll name for `%s' (not an import library?)"
+msgstr "Không thể quyết định tên dll cho \"%s\" (không phải thư viện nhập ?)"
+
+#: dlltool.c:3745
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "Cảnh báo, đang bỠqua bản XUẤT trùng %s %d,%d"
+
+#: dlltool.c:3751
+#, c-format
+msgid "Error, duplicate EXPORT with ordinals: %s"
+msgstr "Lá»—i: bản XUẤT trùng vá»›i Ä‘iá»u thứ tá»± : %s"
+
+#: dlltool.c:3856
+msgid "Processing definitions"
+msgstr "Äang xá»­ lý các lá»i định nghÄ©a"
+
+#: dlltool.c:3888
+msgid "Processed definitions"
+msgstr "Äã xá»­ lý các lá»i định nghÄ©a"
+
+#. xgetext:c-format
+#: dlltool.c:3895 dllwrap.c:483
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Sá»­ dụng %s <tùy_chá»n...> <tập_tin_đối_tượng...>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3897
+#, 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:3898
+#, 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:3899
+#, 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 kết xuất.\n"
+
+#: dlltool.c:3900
+#, 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:3901
+#, c-format
+msgid " -y --output-delaylib <outname> Create a delay-import library.\n"
+msgstr " -y --output-delaylib <tên_tập_tin> Tạo một thư viện nhập trệ.\n"
+
+#: dlltool.c:3902
+#, 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:3903
+#, 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:3904
+#, 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:3905
+#, 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.\n"
+
+#: dlltool.c:3906
+#, 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"
+
+#: dlltool.c:3907
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols Xuất chỉ những ký hiệu đã liệt kê\n"
+
+#: dlltool.c:3908
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <danh_sách> Äừng xuất gì trên danh sách này\n"
+
+#: dlltool.c:3909
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes Xoá sạch các ký hiệu cần loại trừ theo mặc định\n"
+
+#: dlltool.c:3910
+#, 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:3911
+#, 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:3912
+#, 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:3913
+#, c-format
+msgid " --use-nul-prefixed-import-tables Use zero prefixed idata$4 and idata$5.\n"
+msgstr " --use-nul-prefixed-import-tables Dùng idata$4 và idata$5 có tiá»n tố số không.\n"
+
+#: dlltool.c:3914
+#, c-format
+msgid " -U --add-underscore Add underscores to all symbols in interface library.\n"
+msgstr " -U --add-underscore Thêm dấu gạch dÆ°á»›i vào má»i ký hiệu trong thÆ° viện giao diện.\n"
+
+#: dlltool.c:3915
+#, c-format
+msgid " --add-stdcall-underscore Add underscores to stdcall symbols in interface library.\n"
+msgstr ""
+" --add-stdcall-underscore\n"
+"\t\tThêm dấu gạch dÆ°á»›i vào má»i ký hiệu stdcall trong thÆ° viện giao diện.\n"
+
+#: dlltool.c:3916
+#, c-format
+msgid " --no-leading-underscore All symbols shouldn't be prefixed by an underscore.\n"
+msgstr " --no-leading-underscore Tất cả các ký kiệu không đặt tiá»n tố bằng má»™t dấu gạch dÆ°á»›i.\n"
+
+#: dlltool.c:3917
+#, c-format
+msgid " --leading-underscore All symbols should be prefixed by an underscore.\n"
+msgstr " --leading-underscore Tất cả các ký kiệu được đặt tiá»n tố bằng má»™t dấu gạch dÆ°á»›i.\n"
+
+#: dlltool.c:3918
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at Giết \"@<n>\" từ các tên đã xuất ra.\n"
+
+#: dlltool.c:3919
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Thêm biệt hiệu mà không có \"@<n>\".\n"
+
+#: dlltool.c:3920
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -p --ext-prefix-alias <tiá»n_tố> Thêm các biệt hiệu có tiá»n tố này.\n"
+
+#: dlltool.c:3921
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <tên> Dùng tên này cho chương trình dịch mã số.\n"
+
+#: dlltool.c:3922
+#, 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 cho chÆ°Æ¡ng trình dịch mã số.\n"
+
+#: dlltool.c:3923
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib Tạo thư viện nhập tương thích ngược.\n"
+
+#: dlltool.c:3924
+#, 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"
+
+#: dlltool.c:3925
+#, 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 thá»i.\n"
+
+#: dlltool.c:3926
+#, c-format
+msgid " -I --identify <implib> Report the name of the DLL associated with <implib>.\n"
+msgstr " -I --identify <implib> Thông báo tên của DLL tương ứng với <implib>.\n"
+
+#: dlltool.c:3927
+#, c-format
+msgid " --identify-strict Causes --identify to report error when multiple DLLs.\n"
+msgstr " --identify-strict Gây ra \"--identify\" thông báo lá»—i khi gặp nhiá»u DLLs.\n"
+
+#: dlltool.c:3928
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose Xuất chi tiết.\n"
+
+#: dlltool.c:3929
+#, 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"
+
+#: dlltool.c:3930
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help \tHiển thị trợ giúp này.\n"
+
+#: dlltool.c:3931
+#, 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:3933
+#, c-format
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr ""
+" -M --mcore-elf <tập_tin>\n"
+"\t\tXử lý các tập tin đối tượng kiểu \"mcore-elf\" vào tập tin này.\n"
+
+#: dlltool.c:3934
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <tên> \tDùng tên này làm bộ liên kết.\n"
+
+#: dlltool.c:3935
+#, 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 cho bá»™ liên kết.\n"
+
+#: dlltool.c:4082
+#, 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:4130
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "Không thể mở tập tin cơ bản: %s"
+
+#: dlltool.c:4165
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "Không hỗ trợ máy \"%s\""
+
+#: dlltool.c:4245
+#, c-format
+msgid "Warning, machine type (%d) not supported for delayimport."
+msgstr "Cảnh báo : loại máy (%d) không được hỗ trợ cho delayimport."
+
+#: dlltool.c:4313 dllwrap.c:213
+#, c-format
+msgid "Tried file: %s"
+msgstr "Äã thá»­ tập tin: %s"
+
+#: dlltool.c:4320 dllwrap.c:220
+#, c-format
+msgid "Using file: %s"
+msgstr "Äang dùng tập tin: %s"
+
+#: dllwrap.c:303
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "Äang giữ tập tin cÆ¡ bản tạm thá»i %s"
+
+#: dllwrap.c:305
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "Äang xoá tập tin cÆ¡ bản tạm thá»i %s"
+
+#: dllwrap.c:319
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "Äang giữ tập tin xuất ra tạm thá»i %s"
+
+#: dllwrap.c:321
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "Äang xoá tập tin xuất ra tạm thá»i %s"
+
+#: dllwrap.c:334
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "Äang giữ tập tin định nghÄ©a tạm thá»i %s"
+
+#: dllwrap.c:336
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "Äang xoá tập tin định nghÄ©a tạm thá»i %s"
+
+#: dllwrap.c:417
+#, c-format
+msgid "pwait returns: %s"
+msgstr "pwait trả vá»: %s"
+
+#: dllwrap.c:484
+#, c-format
+msgid " Generic options:\n"
+msgstr " Tùy chá»n chung:\n"
+
+#: dllwrap.c:485
+#, 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:486
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q Không xuất chi tiết\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Xuất chi tiết\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version In ra phiên bản dllwrap\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <tên_tập_tin> Bằng \"--output-lib\"\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " Options for %s:\n"
+msgstr " Tùy chá»n cho %s:\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <trình_Ä‘iá»u_khiển> Mặc định là \"gcc\"\n"
+
+#: dllwrap.c:492
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <các_cá»> Có quyá»n cao hÆ¡n các cá» ld mặc định\n"
+
+#: dllwrap.c:493
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dlltool> Mặc định là \"dlltool\"\n"
+
+#: dllwrap.c:494
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <điểm_vào> Ghi rõ điểm vào DLL xen kẽ\n"
+
+#: dllwrap.c:495
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <cơ_bản> Ghi rõ địa chỉ cơ bản ảnh\n"
+
+#: dllwrap.c:496
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <máy> i386-cygwin32 hay i386-mingw32\n"
+
+#: dllwrap.c:497
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run Hiển thị các Ä‘iá»u cần chạy\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin Tạo DLL dạng Mingw\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " Các tùy chá»n được gá»­i qua cho DLLTOOL:\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <máy>\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <tên_tập_tin> Tạo ra tập tin xuất ra.\n"
+
+#: dllwrap.c:502
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <tên_tập_tin> Tạo ra thư viện nhập vào.\n"
+
+#: dllwrap.c:503
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect Thêm các lá»i gián tiếp vào tập tin xuất ra.\n"
+
+#: dllwrap.c:504
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <tên> Tên dll nhập cần để vào thư viện kết xuất.\n"
+
+#: dllwrap.c:505
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <tên_tập_tin> Tên tập tin định nghĩa nhập vào\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <tên_tập_tin> Tên tập tin định nghĩa kết xuất\n"
+
+#: dllwrap.c:507
+#, 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 .def (định nghÄ©a)\n"
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols Xuất chỉ ký hiệu kiểu \".drectve\".\n"
+
+#: dllwrap.c:509
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr ""
+" --exclude-symbols <danh_sách>\n"
+"\t\t\t\t\tLoại trừ danh sách này ra tập tin .def.\n"
+
+#: dllwrap.c:510
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes Sá»­a má»i ký hiệu loại trừ mặc định.\n"
+
+#: dllwrap.c:511
+#, 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:512
+#, 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:513
+#, 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:514
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U Thêm dấu gạch dưới vào thư viện (.lib)\n"
+
+#: dllwrap.c:515
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k Giết \"@<n>\" ra các tên đã xuất ra\n"
+
+#: dllwrap.c:516
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias Thêm biệt hiệu mà không có \"@<n>\".\n"
+
+#: dllwrap.c:517
+#, 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ố\n"
+
+#: dllwrap.c:518
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete Giữ các tập tin tạm thá»i.\n"
+
+#: dllwrap.c:519
+#, c-format
+msgid " --no-leading-underscore Entrypoint without underscore\n"
+msgstr " --no-leading-underscore Entrypoint không có dấu gạch dưới\n"
+
+#: dllwrap.c:520
+#, c-format
+msgid " --leading-underscore Entrypoint with underscore.\n"
+msgstr " --leading-underscore Entrypoint với dấu gạch dưới.\n"
+
+#: dllwrap.c:521
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " Các Ä‘iá»u còn lại được gá»­i mà chÆ°a được sá»­a đổi cho trình Ä‘iá»u khiển ngôn ngữ\n"
+
+#: dllwrap.c:805
+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:834
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"chưa cung cấp tập tin định nghĩa xuất ra.\n"
+"Äang tạo má»™t Ä‘iá»u, mà có lẽ không phải là Ä‘iá»u bạn muốn"
+
+#: dllwrap.c:1023
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "Tên công cụ DLLTOOL : %s\n"
+
+#: dllwrap.c:1024
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "Tùy chá»n DLLTOOL: %s\n"
+
+#: dllwrap.c:1025
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "Tên TRÃŒNH ÄIỀU KHIỀN : %s\n"
+
+#: dllwrap.c:1026
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "Tùy chá»n TRÃŒNH ÄIỀU KHIỂN : %s\n"
+
+#: dwarf.c:132
+msgid "Wrong size in print_dwarf_vma"
+msgstr "Sai kích thước trong hàm print_dwarf_vma"
+
+#: dwarf.c:256 dwarf.c:3027
+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:263
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " Opcode (mã thao tác) đã mở rộng %d: "
+
+#: dwarf.c:268
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"Kết thúc dãy\n"
+"\n"
+
+#: dwarf.c:274
+#, c-format
+msgid "set Address to 0x%s\n"
+msgstr "đặt Äịa chỉ thành 0x%s\n"
+
+#: dwarf.c:280
+#, 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:281 dwarf.c:2555
+#, c-format
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " Mục\tTMục\tGiá»\tCỡ\tTên\n"
+
+#: dwarf.c:295
+#, c-format
+msgid "set Discriminator to %s\n"
+msgstr "đặt Discriminator (bộ phân biệt) thành %s\n"
+
+#: dwarf.c:370
+#, c-format
+msgid " UNKNOWN DW_LNE_HP_SFC opcode (%u)\n"
+msgstr " KHÔNG RÕ mã DW_LNE_HP_SFC (%u)\n"
+
+#. The test against DW_LNW_hi_user is redundant due to
+#. the limited range of the unsigned char data type used
+#. for op_code.
+#. && op_code <= DW_LNE_hi_user
+#: dwarf.c:387
+#, c-format
+msgid "user defined: "
+msgstr "ngÆ°á»i dùng định nghÄ©a:"
+
+#: dwarf.c:389
+#, c-format
+msgid "UNKNOWN: "
+msgstr "KHÔNG RÕ:"
+
+#: dwarf.c:390
+#, c-format
+msgid "length %d ["
+msgstr "độ dài %d ["
+
+#: dwarf.c:407
+msgid "<no .debug_str section>"
+msgstr "<không có phần .debug_str>"
+
+#: dwarf.c:413
+#, c-format
+msgid "DW_FORM_strp offset too big: %s\n"
+msgstr "khoảng bù (offset) DW_FORM_strp quá lớn: %s\n"
+
+#: dwarf.c:415
+msgid "<offset is too big>"
+msgstr "<khoảng bù quá lớn>"
+
+#: dwarf.c:655
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "Giá trị TAG (thẻ) không rõ : %lx"
+
+#: dwarf.c:696
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "Giá trị FORM (dạng) không rõ : %lx"
+
+#: dwarf.c:705
+#, c-format
+msgid " %s byte block: "
+msgstr " %s khối byte: "
+
+#: dwarf.c:1050
+#, c-format
+msgid "(DW_OP_call_ref in frame info)"
+msgstr "(DW_OP_call_ref trong thông tin khung (frame info))"
+
+#: dwarf.c:1075
+#, c-format
+msgid "size: %s "
+msgstr "kích thước: %s"
+
+#: dwarf.c:1078
+#, c-format
+msgid "offset: %s "
+msgstr "khoảng bù: %s "
+
+#: dwarf.c:1098
+#, c-format
+msgid "DW_OP_GNU_push_tls_address or DW_OP_HP_unknown"
+msgstr "DW_OP_GNU_push_tls_address hoặc DW_OP_HP_unknown"
+
+#: dwarf.c:1122
+#, c-format
+msgid "(DW_OP_GNU_implicit_pointer in frame info)"
+msgstr "(DW_OP_GNU_implicit_pointer trong thông tin khung)"
+
+#: dwarf.c:1234
+#, c-format
+msgid "(User defined location op)"
+msgstr "(Thao tác định vị do ngÆ°á»i dùng định nghÄ©a)"
+
+#: dwarf.c:1236
+#, c-format
+msgid "(Unknown location op)"
+msgstr "(Thao tác định vị không rõ)"
+
+#: dwarf.c:1283
+msgid "Internal error: DWARF version is not 2, 3 or 4.\n"
+msgstr "Lỗi nội bộ: phiên bản DWARF không phải là 2,3 hay 4.\n"
+
+#: dwarf.c:1389
+msgid "DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"
+msgstr "Không hỗ trợ \"DW_FORM_data8\" khi \"sizeof (dwarf_vma) != 8\"\n"
+
+#: dwarf.c:1439
+#, c-format
+msgid " (indirect string, offset: 0x%s): %s"
+msgstr " (chuỗi gián tiếp, khoảng bù (offset): 0x%s): %s"
+
+#: dwarf.c:1464
+#, c-format
+msgid "Unrecognized form: %lu\n"
+msgstr "Không nhận ra dạng: %lu\n"
+
+#: dwarf.c:1557
+#, c-format
+msgid "(not inlined)"
+msgstr "(không đặt trực tiếp)"
+
+#: dwarf.c:1560
+#, c-format
+msgid "(inlined)"
+msgstr "(đặt trực tiếp)"
+
+#: dwarf.c:1563
+#, c-format
+msgid "(declared as inline but ignored)"
+msgstr "(khai báo là trực tiếp mà bị bỠqua)"
+
+#: dwarf.c:1566
+#, 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:1569
+#, c-format
+msgid " (Unknown inline attribute value: %s)"
+msgstr " (Không hiểu giá trị thuộc tính chung dòng: %s)"
+
+#: dwarf.c:1608
+#, c-format
+msgid "(implementation defined: %s)"
+msgstr "(phần mã thực thi đã định nghĩa: %s)"
+
+#: dwarf.c:1611
+#, c-format
+msgid "(Unknown: %s)"
+msgstr "(Không rõ: %s)"
+
+#: dwarf.c:1649
+#, c-format
+msgid "(user defined type)"
+msgstr "(kiểu ngÆ°á»i dùng định nghÄ©a)"
+
+#: dwarf.c:1651
+#, c-format
+msgid "(unknown type)"
+msgstr "(không nhận ra kiểu)"
+
+#: dwarf.c:1663
+#, c-format
+msgid "(unknown accessibility)"
+msgstr "(không rõ khả năng truy cập)"
+
+#: dwarf.c:1674
+#, c-format
+msgid "(unknown visibility)"
+msgstr "(không rõ tính khả dụng)"
+
+#: dwarf.c:1684
+#, c-format
+msgid "(unknown virtuality)"
+msgstr "(không rõ tính ảo)"
+
+#: dwarf.c:1695
+#, c-format
+msgid "(unknown case)"
+msgstr "(không rõ trÆ°á»ng hợp nào)"
+
+#: dwarf.c:1708
+#, c-format
+msgid "(user defined)"
+msgstr "(ngÆ°á»i dùng định nghÄ©a)"
+
+#: dwarf.c:1710
+#, c-format
+msgid "(unknown convention)"
+msgstr "(không rõ quy ước)"
+
+#: dwarf.c:1717
+#, c-format
+msgid "(undefined)"
+msgstr "(chưa định nghĩa)"
+
+#: dwarf.c:1740
+#, c-format
+msgid "(location list)"
+msgstr "(danh sách vị trí)"
+
+#: dwarf.c:1761 dwarf.c:4045
+#, c-format
+msgid " [without DW_AT_frame_base]"
+msgstr " [không có DW_AT_frame_base]"
+
+#: dwarf.c:1777
+#, c-format
+msgid "Offset %s used as value for DW_AT_import attribute of DIE at offset %lx is too big.\n"
+msgstr "Khoảng bù %s đã dùng làm giá trị cho thuộc tính nhập DW_AT_import của DIE tại khoảng bù %lx là quá lớn.\n"
+
+#: dwarf.c:1787
+#, c-format
+msgid "[Abbrev Number: %ld"
+msgstr "[Số Abbrev: %ld"
+
+#: dwarf.c:1978
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "Không rõ giá trị AT: %lx"
+
+#: dwarf.c:2049
+#, c-format
+msgid "Reserved length value (0x%s) found in section %s\n"
+msgstr "Giá trị độ dài để dành (0x%s) được tìm trong phần %s\n"
+
+#: dwarf.c:2061
+#, c-format
+msgid "Corrupt unit length (0x%s) found in section %s\n"
+msgstr "Äá»™ dài Ä‘Æ¡n vị bị há»ng (0x%s) được tìm trong phần %s\n"
+
+#: dwarf.c:2069
+#, 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:2078
+#, 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ó %u mục nhập"
+
+#: dwarf.c:2087 dwarf.c:3296 dwarf.c:3390 dwarf.c:3551 dwarf.c:3779
+#: dwarf.c:3911 dwarf.c:4081 dwarf.c:4150 dwarf.c:4354
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+"Nội dung của phần %s:\n"
+"\n"
+
+#: dwarf.c:2095
+#, c-format
+msgid "Unable to locate %s section!\n"
+msgstr "Không thể định vị phần %s !\n"
+
+#: dwarf.c:2176
+#, c-format
+msgid " Compilation Unit @ offset 0x%s:\n"
+msgstr " ÄÆ¡n vị So sánh @ offset 0x%s:\n"
+
+#: dwarf.c:2178
+#, c-format
+msgid " Length: 0x%s (%s)\n"
+msgstr " Äá»™ dài: 0x%s (%s)\n"
+
+#: dwarf.c:2181
+#, c-format
+msgid " Version: %d\n"
+msgstr " Phiên bản: %d\n"
+
+#: dwarf.c:2182
+#, c-format
+msgid " Abbrev Offset: %s\n"
+msgstr " Khoảng bù (Offset) Abbrev: %s\n"
+
+#: dwarf.c:2184
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Kích cỡ con trỠ: %d\n"
+
+#: dwarf.c:2188
+#, c-format
+msgid " Signature: "
+msgstr " Chữ ký: "
+
+#: dwarf.c:2192
+#, c-format
+msgid " Type Offset: 0x%s\n"
+msgstr " Kiểu bù (Offset): 0x%s\n"
+
+#: dwarf.c:2200
+#, c-format
+msgid "Debug info is corrupted, length of CU at %s extends beyond end of section (length = %s)\n"
+msgstr "Thông tin gỡ lá»—i bị há»ng, chiá»u dài của CU ở %s kéo dài qua kết thúc phần (chiá»u dài = %s)\n"
+
+#: dwarf.c:2213
+#, c-format
+msgid "CU at offset %s contains corrupt or unsupported version number: %d.\n"
+msgstr "CU ở khoảng bù %s chứa số thứ tá»± phiên bản bị há»ng hay không được há»— trợ : %d.\n"
+
+#: dwarf.c:2224
+#, c-format
+msgid "Debug info is corrupted, abbrev offset (%lx) is larger than abbrev section size (%lx)\n"
+msgstr "Thông tin gỡ lá»—i bị há»ng, khoảng bù viết tắt (%lx) lá»›n hÆ¡n kích cỡ phần viết tắt (%lx)\n"
+
+#: dwarf.c:2274
+#, c-format
+msgid "Bogus end-of-siblings marker detected at offset %lx in .debug_info section\n"
+msgstr "Dấu end-of-siblings giả được phát hiện ở khoảng bù %lx trong phần \".debug_info\"\n"
+
+#: dwarf.c:2278
+msgid "Further warnings about bogus end-of-sibling markers suppressed\n"
+msgstr "Sau đó thu hồi cảnh báo vỠdấu end-of-siblings giả\n"
+
+#: dwarf.c:2297
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu"
+msgstr " <%d><%lx>: Số viết tắt: %lu"
+
+#: dwarf.c:2301
+#, c-format
+msgid " <%d><%lx>: ...\n"
+msgstr " <%d><%lx>: ...\n"
+
+#: dwarf.c:2320
+#, c-format
+msgid "DIE at offset %lx refers to abbreviation number %lu which does not exist\n"
+msgstr "DIE ở khoảng bù %lx tham chiếu đến số viết tắt %lu mà không tồn tại\n"
+
+#: dwarf.c:2422
+#, c-format
+msgid ""
+"Raw dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Việc đổ thô nội dung gỡ lỗi của phần %s:\n"
+"\n"
+
+#: dwarf.c:2460
+#, c-format
+msgid "The information in section %s appears to be corrupt - the section is too small\n"
+msgstr "Hình nhÆ° thông tin trong phần %s bị há»ng — phần quá nhá»\n"
+
+#: dwarf.c:2472 dwarf.c:2840
+msgid "Only DWARF version 2, 3 and 4 line info is currently supported.\n"
+msgstr "Hiện tại chỉ hỗ trợ thông tin dòng DWARF phiên bản 2, 3 và 4.\n"
+
+#: dwarf.c:2486 dwarf.c:2855
+msgid "Invalid maximum operations per insn.\n"
+msgstr "Số thao tác tối đa trên mỗi insn không hợp lệ.\n"
+
+#: dwarf.c:2505 dwarf.c:3574
+#, c-format
+msgid " Offset: 0x%lx\n"
+msgstr " Khoảng bù : 0x%lx\n"
+
+#: dwarf.c:2506
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Dài: %ld\n"
+
+#: dwarf.c:2507
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " Phiên bản DWARF: %d\n"
+
+#: dwarf.c:2508
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr " Chiá»u dài Ä‘oạn mở đầu : %d\n"
+
+#: dwarf.c:2509
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " Chiá»u dài câu lệnh tối thiểu : %d\n"
+
+#: dwarf.c:2511
+#, c-format
+msgid " Maximum Ops per Instruction: %d\n"
+msgstr " Số thao tác trên mỗi chỉ lệnh tối đa: %d\n"
+
+#: dwarf.c:2512
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " Giá trị đầu tiên của \"is_stmt\": %d\n"
+
+#: dwarf.c:2513
+#, c-format
+msgid " Line Base: %d\n"
+msgstr " Cơ bản dòng: %d\n"
+
+#: dwarf.c:2514
+#, c-format
+msgid " Line Range: %d\n"
+msgstr " Phạm vi dòng: %d\n"
+
+#: dwarf.c:2515
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr " Cơ bản mã thao tác: %d\n"
+
+#: dwarf.c:2524
+#, c-format
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+"\n"
+" Mã thao tác:\n"
+
+#: dwarf.c:2527
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr " Mã thao tác %d có %d đối số\n"
+
+#: dwarf.c:2533
+#, c-format
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" Bảng Thư Mục vẫn trống\n"
+
+#: dwarf.c:2536
+#, c-format
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" Bảng Thư mục:\n"
+
+#: dwarf.c:2551
+#, c-format
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" Bảng Tên Tập Tin trống:\n"
+
+#: dwarf.c:2554
+#, c-format
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" Bảng Tên Tập Tin:\n"
+
+#. Now display the statements.
+#: dwarf.c:2584
+#, c-format
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" Câu Số thứ tự Dòng:\n"
+
+#: dwarf.c:2603
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s"
+msgstr " Mã thao tác đặc biệt %d: nâng cao Äịa chỉ bÆ°á»›c %s tá»›i 0x%s"
+
+#: dwarf.c:2617
+#, c-format
+msgid " Special opcode %d: advance Address by %s to 0x%s[%d]"
+msgstr " Mã thao tác đặc biệt %d: nâng cao Äịa chỉ bÆ°á»›c %s tá»›i 0x%s[%d]"
+
+#: dwarf.c:2625
+#, c-format
+msgid " and Line by %s to %d\n"
+msgstr " và Dòng bởi %s tới %d\n"
+
+#: dwarf.c:2635
+#, c-format
+msgid " Copy\n"
+msgstr " Chép\n"
+
+#: dwarf.c:2645
+#, c-format
+msgid " Advance PC by %s to 0x%s\n"
+msgstr " Nâng cao PC bước %s tới 0x%s\n"
+
+#: dwarf.c:2658
+#, c-format
+msgid " Advance PC by %s to 0x%s[%d]\n"
+msgstr " Nâng cao PC bước %s tới 0x%s[%d]\n"
+
+#: dwarf.c:2669
+#, c-format
+msgid " Advance Line by %s to %d\n"
+msgstr " Nâng Dòng từ %s tới %d\n"
+
+#: dwarf.c:2677
+#, c-format
+msgid " Set File Name to entry %s in the File Name Table\n"
+msgstr " Äặt Tên Tập Tin vào mục %s trong Bảng Tên Tập Tin\n"
+
+#: dwarf.c:2685
+#, c-format
+msgid " Set column to %s\n"
+msgstr " Äặt cá»™t thành %s\n"
+
+#: dwarf.c:2693
+#, c-format
+msgid " Set is_stmt to %s\n"
+msgstr " Äặt is_stmt thành %s\n"
+
+#: dwarf.c:2698
+#, c-format
+msgid " Set basic block\n"
+msgstr " Lập khối cơ bản\n"
+
+#: dwarf.c:2708
+#, c-format
+msgid " Advance PC by constant %s to 0x%s\n"
+msgstr " Nâng PC (con đếm chương trình) từ hằng số %s tới 0x%s\n"
+
+#: dwarf.c:2721
+#, c-format
+msgid " Advance PC by constant %s to 0x%s[%d]\n"
+msgstr " Nâng PC (con đếm chương trình) từ hằng số %s tới 0x%s[%d]\n"
+
+#: dwarf.c:2733
+#, c-format
+msgid " Advance PC by fixed size amount %s to 0x%s\n"
+msgstr " Nâng cao PC (con đếm chương trình) bằng cách định tổng kích cỡ cố định %s tới 0x%s\n"
+
+#: dwarf.c:2739
+#, 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:2743
+#, 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:2749
+#, c-format
+msgid " Set ISA to %s\n"
+msgstr " Äặt ISA thành %s\n"
+
+#: dwarf.c:2753 dwarf.c:3168
+#, 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:2787
+#, c-format
+msgid ""
+"Decoded dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"Äã giải mã bản đổ ná»™i dung gỡ lá»—i của phần %s:\n"
+"\n"
+
+#: dwarf.c:2828
+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"
+
+# Literal: don't translate/Nghĩa chữ : đừng dịch
+#: dwarf.c:2960
+#, c-format
+msgid "CU: %s:\n"
+msgstr "CU: %s:\n"
+
+#: dwarf.c:2961 dwarf.c:2972
+#, c-format
+msgid "File name Line number Starting address\n"
+msgstr "Tên tập tin Số thứ tá»± dòng Äịa chỉ bắt đầu\n"
+
+#: dwarf.c:2968
+#, c-format
+msgid "CU: %s/%s:\n"
+msgstr "CU: %s/%s:\n"
+
+#: dwarf.c:3059
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "KHÔNG RÕ: chiá»u dài %d\n"
+
+#: dwarf.c:3164
+#, c-format
+msgid " Set ISA to %lu\n"
+msgstr " Lập ISA thành %lu\n"
+
+#: dwarf.c:3330 dwarf.c:4195
+#, c-format
+msgid ".debug_info offset of 0x%lx in %s section does not point to a CU header.\n"
+msgstr "Khoảng bù \".debug_info\" 0x%lx trong phần %s không chỉ tới một phần đầu CU.\n"
+
+#: dwarf.c:3344
+msgid "Only DWARF 2 and 3 pubnames are currently supported\n"
+msgstr "Há»— trợ hiện thá»i chỉ pubnames (tên công) kiểu DWARF phiên bản 2 và 3 thôi\n"
+
+#: dwarf.c:3351
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Chiá»u dài : %ld\n"
+
+#: dwarf.c:3353
+#, c-format
+msgid " Version: %d\n"
+msgstr " Phiên bản: %d\n"
+
+#: dwarf.c:3355
+#, c-format
+msgid " Offset into .debug_info section: 0x%lx\n"
+msgstr " Bù vào phần .debug_info: 0x%lx\n"
+
+#: dwarf.c:3357
+#, 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\": %ld\n"
+
+#: dwarf.c:3360
+#, c-format
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" Bù\tTên\n"
+
+#: dwarf.c:3411
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file (bắt đầu tập tin) — dòng số: %d; tập tin số: %d\n"
+
+#: dwarf.c:3417
+#, c-format
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file (kết thúc tập tin)\n"
+
+#: dwarf.c:3425
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define (định nghĩa) — dòng số: %d; vĩ lệnh: %s\n"
+
+#: dwarf.c:3434
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef (chưa định nghĩa) — dòng số: %d; vĩ lệnh: %s\n"
+
+#: dwarf.c:3446
+#, 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:3566
+#, c-format
+msgid "Only GNU extension to DWARF 4 of %s is currently supported.\n"
+msgstr "Chỉ phần bổ xung GNU với DWARF 4 của %s là hiện đang được hỗ trợ.\n"
+
+#: dwarf.c:3576
+#, c-format
+msgid " Version: %d\n"
+msgstr " Phiên bản : %d\n"
+
+#: dwarf.c:3577
+#, c-format
+msgid " Offset size: %d\n"
+msgstr " Kích thước bù: %d\n"
+
+#: dwarf.c:3582
+#, c-format
+msgid " Offset into .debug_line: 0x%lx\n"
+msgstr " Khoảng bù vào .debug_line: 0x%lx\n"
+
+#: dwarf.c:3593
+#, c-format
+msgid " Extension opcode arguments:\n"
+msgstr " Äối sá»— mã lệnh mở rá»™ng:\n"
+
+#: dwarf.c:3601
+#, c-format
+msgid " DW_MACRO_GNU_%02x has no arguments\n"
+msgstr " DW_MACRO_GNU_%02x không có đối số\n"
+
+#: dwarf.c:3604
+#, c-format
+msgid " DW_MACRO_GNU_%02x arguments: "
+msgstr " Äối số DW_MACRO_GNU_%02x: "
+
+#: dwarf.c:3628
+#, c-format
+msgid "Invalid extension opcode form %s\n"
+msgstr "Sai dạng mã mở rộng %s\n"
+
+#: dwarf.c:3645
+msgid ".debug_macro section not zero terminated\n"
+msgstr "phần .debug_macro không được chấm dứt bằng không (zero)\n"
+
+#: dwarf.c:3666
+msgid "DW_MACRO_GNU_start_file used, but no .debug_line offset provided.\n"
+msgstr "đã dùng DW_MACRO_GNU_start_file, nhưng lại không được cung cấp khoảng bù .debug_line.\n"
+
+#: dwarf.c:3672
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACRO_GNU_start_file - dòngsố: %d tậptinsố: %d\n"
+
+#: dwarf.c:3675
+#, c-format
+msgid " DW_MACRO_GNU_start_file - lineno: %d filenum: %d filename: %s%s%s\n"
+msgstr " DW_MACRO_GNU_start_file - dòngsố: %d tậptinsố: %d tập tin: %s%s%s\n"
+
+#: dwarf.c:3683
+#, c-format
+msgid " DW_MACRO_GNU_end_file\n"
+msgstr " DW_MACRO_GNU_end_file\n"
+
+#: dwarf.c:3691
+#, c-format
+msgid " DW_MACRO_GNU_define - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_define - dòngsố : %d macro : %s\n"
+
+#: dwarf.c:3700
+#, c-format
+msgid " DW_MACRO_GNU_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_undef - dòngsố : %d macro : %s\n"
+
+#: dwarf.c:3710
+#, c-format
+msgid " DW_MACRO_GNU_define_indirect - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_define_indirect - dòngsố : %d macro : %s\n"
+
+#: dwarf.c:3720
+#, c-format
+msgid " DW_MACRO_GNU_undef_indirect - lineno : %d macro : %s\n"
+msgstr " DW_MACRO_GNU_undef_indirect - dòngsố : %d macro : %s\n"
+
+#: dwarf.c:3727
+#, c-format
+msgid " DW_MACRO_GNU_transparent_include - offset : 0x%lx\n"
+msgstr " DW_MACRO_GNU_transparent_include - khoảng bù : 0x%lx\n"
+
+#: dwarf.c:3734
+#, c-format
+msgid " Unknown macro opcode %02x seen\n"
+msgstr "Không rõ mã lệnh macro %02x nghĩa là gì\n"
+
+#: dwarf.c:3746
+#, c-format
+msgid " DW_MACRO_GNU_%02x\n"
+msgstr " DW_MACRO_GNU_%02x\n"
+
+#: dwarf.c:3749
+#, c-format
+msgid " DW_MACRO_GNU_%02x -"
+msgstr " DW_MACRO_GNU_%02x -"
+
+#: dwarf.c:3790
+#, c-format
+msgid " Number TAG\n"
+msgstr " Số THẺ\n"
+
+#: dwarf.c:3799
+msgid "has children"
+msgstr "có Ä‘iá»u con"
+
+#: dwarf.c:3799
+msgid "no children"
+msgstr "không có con"
+
+#: dwarf.c:3850 dwarf.c:4077 dwarf.c:4311
+#, c-format
+msgid ""
+"\n"
+"The %s section is empty.\n"
+msgstr ""
+"\n"
+"Phần %s vẫn trống.\n"
+
+#: dwarf.c:3856 dwarf.c:4317
+#, c-format
+msgid "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
+msgstr "Không thể nạp/phân tích phần \".debug_info\" thì không thể Ä‘á»c phần %s.\n"
+
+#: dwarf.c:3900
+msgid "No location lists in .debug_info section!\n"
+msgstr "Không có danh sách vị trí trong phần \".debug_info\" (thông tin gỡ lỗi).\n"
+
+#: dwarf.c:3905
+#, c-format
+msgid "Location lists in %s section start at 0x%s\n"
+msgstr "Danh sách vị trí trong phần %s bắt đầu tại 0x%s\n"
+
+#: dwarf.c:3912
+#, c-format
+msgid " Offset Begin End Expression\n"
+msgstr " Bù Äầu Cuối Biểu thức\n"
+
+#: dwarf.c:3961
+#, 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_loc\" (gỡ lỗi vị trí).\n"
+
+#: dwarf.c:3965
+#, 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_loc\" (gỡ lỗi vị trí).\n"
+
+#: dwarf.c:3973
+#, c-format
+msgid "Offset 0x%lx is bigger than .debug_loc section size.\n"
+msgstr "Khoảng bù 0x%lx lớn hơn kích cỡ của phần \".debug_loc\" (gỡ lỗi vị trí).\n"
+
+#: dwarf.c:3982 dwarf.c:4017 dwarf.c:4027
+#, c-format
+msgid "Location list starting at offset 0x%lx is not terminated.\n"
+msgstr "Danh sách vị trí bắt đầu tại khoảng bù 0x%lx chưa được chấm dứt.\n"
+
+#: dwarf.c:4001 dwarf.c:4405
+#, c-format
+msgid "<End of list>\n"
+msgstr "<Kết thúc danh sách>\n"
+
+#: dwarf.c:4011
+#, c-format
+msgid "(base address)\n"
+msgstr "(địa chỉ cơ bản)\n"
+
+#: dwarf.c:4048
+msgid " (start == end)"
+msgstr " (đầu == cuối)"
+
+#: dwarf.c:4050
+msgid " (start > end)"
+msgstr " (đầu > cuối)"
+
+#: dwarf.c:4060
+#, c-format
+msgid "There are %ld unused bytes at the end of section %s\n"
+msgstr "Có %ld byte chưa dùng ở kết thúc của phần %s\n"
+
+#: dwarf.c:4206
+msgid "Only DWARF 2 and 3 aranges are currently supported.\n"
+msgstr "Há»— trợ hiện thá»i chỉ arange (phạm vi a) kiểu DWARF phiên bản 2 và 3 thôi.\n"
+
+#: dwarf.c:4210
+#, c-format
+msgid " Length: %ld\n"
+msgstr " Dài: %ld\n"
+
+#: dwarf.c:4212
+#, c-format
+msgid " Version: %d\n"
+msgstr " Phiên bản: %d\n"
+
+#: dwarf.c:4213
+#, c-format
+msgid " Offset into .debug_info: 0x%lx\n"
+msgstr " Khoảng bù vào .debug_info: 0x%lx\n"
+
+#: dwarf.c:4215
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Kích cỡ con trỠ: %d\n"
+
+#: dwarf.c:4216
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr " Kích cỡ phân đoạn: %d\n"
+
+#: dwarf.c:4222
+#, c-format
+msgid "Invalid address size in %s section!\n"
+msgstr "Sai kích thước địa chỉ trong %s phần!\n"
+
+#: dwarf.c:4232
+msgid "Pointer size + Segment size is not a power of two.\n"
+msgstr "Kích cỡ con trỠ+ kích cỡ đoạn không phải là hai lũy thừa.\n"
+
+#: dwarf.c:4237
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Äịa chỉ Dài\n"
+
+#: dwarf.c:4239
+#, c-format
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+"\n"
+" Äịa chỉ Dài\n"
+
+#: dwarf.c:4327
+msgid "No range lists in .debug_info section!\n"
+msgstr "Không có danh sách phạm vi trong phần \".debug_info\" (thông tin gỡ lỗi).\n"
+
+#: dwarf.c:4351
+#, c-format
+msgid "Range lists in %s section start at 0x%lx\n"
+msgstr "Danh sách phạm vi trong phần %s bắt đầu tại 0x%lx\n"
+
+#: dwarf.c:4355
+#, c-format
+msgid " Offset Begin End\n"
+msgstr " Bù Äầu Cuối\n"
+
+#: dwarf.c:4376
+#, 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:4380
+#, 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:4423
+msgid "(start == end)"
+msgstr "(đầu == cuối)"
+
+#: dwarf.c:4425
+msgid "(start > end)"
+msgstr "(đầu > cuối)"
+
+#: dwarf.c:4678
+msgid "bad register: "
+msgstr "thanh ghi sai: "
+
+#. The documentation for the format of this file is in gdb/dwarf2read.c.
+#: dwarf.c:4681 dwarf.c:5490
+#, c-format
+msgid "Contents of the %s section:\n"
+msgstr "Nội dung của phần %s:\n"
+
+#: dwarf.c:5451
+#, c-format
+msgid " DW_CFA_??? (User defined call frame op: %#x)\n"
+msgstr " DW_CFA_??? (Toán tá»­ khung gá»i do ngÆ°á»i dùng định nghÄ©a): %#x)\n"
+
+#: dwarf.c:5453
+#, c-format
+msgid "unsupported or unknown Dwarf Call Frame Instruction number: %#x\n"
+msgstr "số hÆ°á»›ng dẫn khung gá»i nhá» xíu (Dwarf Call Frame Instruction) không được há»— trợ hay không được nhận ra: %#x\n"
+
+#: dwarf.c:5494
+#, c-format
+msgid "Truncated header in the %s section.\n"
+msgstr "Phần đầu bị cắt cụt trong %s phần.\n"
+
+#: dwarf.c:5499
+#, c-format
+msgid "Version %ld\n"
+msgstr "Phiên bản %ld\n"
+
+#: dwarf.c:5506
+msgid "The address table data in version 3 may be wrong.\n"
+msgstr "Dữ liệu bảng địa chỉ trong phiên bản 3 có lẽ bị sai.\n"
+
+#: dwarf.c:5509
+msgid "Version 4 does not support case insensitive lookups.\n"
+msgstr "Phiên bản 4 không há»— trợ tìm kiếm phân biệt HOA/thÆ°á»ng.\n"
+
+#: dwarf.c:5514
+#, c-format
+msgid "Unsupported version %lu.\n"
+msgstr "Không hỗ trợ phiên bản %lu.\n"
+
+#: dwarf.c:5530
+#, c-format
+msgid "Corrupt header in the %s section.\n"
+msgstr "Phần đầu hÆ° há»ng trong %s phần.\n"
+
+#: dwarf.c:5545
+#, c-format
+msgid ""
+"\n"
+"CU table:\n"
+msgstr ""
+"\n"
+"Bảng CU:\n"
+
+#: dwarf.c:5551
+#, c-format
+msgid "[%3u] 0x%lx - 0x%lx\n"
+msgstr "[%3u] 0x%lx - 0x%lx\n"
+
+#: dwarf.c:5556
+#, c-format
+msgid ""
+"\n"
+"TU table:\n"
+msgstr ""
+"\n"
+"Bảng TU:\n"
+
+#: dwarf.c:5563
+#, c-format
+msgid "[%3u] 0x%lx 0x%lx "
+msgstr "[%3u] 0x%lx 0x%lx "
+
+#: dwarf.c:5570
+#, c-format
+msgid ""
+"\n"
+"Address table:\n"
+msgstr ""
+"\n"
+"Bảng địa chỉ:\n"
+
+#: dwarf.c:5579
+#, c-format
+msgid "%lu\n"
+msgstr "%lu\n"
+
+#: dwarf.c:5582
+#, c-format
+msgid ""
+"\n"
+"Symbol table:\n"
+msgstr ""
+"\n"
+"Bảng ký hiệu:\n"
+
+#: dwarf.c:5616
+#, 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 gỡ lỗi của phần %s.\n"
+
+#: dwarf.c:5752 dwarf.c:5822
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "Không nhận ra tùy chá»n gỡ lá»—i \"%s\"\n"
+
+#: elfcomm.c:39
+#, c-format
+msgid "%s: Error: "
+msgstr "%s: Lá»—i: "
+
+#: elfcomm.c:50
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s: Cảnh báo : "
+
+#: elfcomm.c:82 elfcomm.c:117 elfcomm.c:167 elfcomm.c:216
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "Chiá»u dài dữ liệu không được quản lý: %d\n"
+
+#: elfcomm.c:263 elfcomm.c:277 elfcomm.c:645 readelf.c:3683 readelf.c:3991
+#: readelf.c:4034 readelf.c:4108 readelf.c:4187 readelf.c:4965 readelf.c:4989
+#: readelf.c:7397 readelf.c:7443 readelf.c:7642 readelf.c:8863 readelf.c:8877
+#: readelf.c:9423 readelf.c:9439 readelf.c:9482 readelf.c:9507 readelf.c:11904
+#: readelf.c:12096 readelf.c:12929
+msgid "Out of memory\n"
+msgstr "Không đủ bộ nhớ\n"
+
+#: elfcomm.c:312
+#, c-format
+msgid "%s: failed to seek to first archive header\n"
+msgstr "%s: lỗi tìm nơi tới dòng đầu kho đầu tiên\n"
+
+#: elfcomm.c:321 elfcomm.c:611 elfedit.c:340 readelf.c:13418
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s: lá»—i Ä‘á»c dòng đầu kho lÆ°u\n"
+
+#: elfcomm.c:347
+#, c-format
+msgid "%s: the archive index is empty\n"
+msgstr "%s: chỉ mục kho lưu vẫn trống\n"
+
+#: elfcomm.c:355 elfcomm.c:381
+#, c-format
+msgid "%s: failed to read archive index\n"
+msgstr "%s: lá»—i Ä‘á»c chỉ mục kho lÆ°u\n"
+
+#: elfcomm.c:365
+#, c-format
+msgid "%s: the archive index is supposed to have %ld entries, but the size in the header is too small\n"
+msgstr "%s: chỉ mục kho lưu nên có %ld mục nhập, còn phần đầu chứa kích cỡ quá nhở\n"
+
+#: elfcomm.c:373
+msgid "Out of memory whilst trying to read archive symbol index\n"
+msgstr "Không đủ bá»™ nhá»› trong khi thá»­ Ä‘á»c chỉ mục ký hiệu kho lÆ°u\n"
+
+#: elfcomm.c:392
+msgid "Out of memory whilst trying to convert the archive symbol index\n"
+msgstr "Không đủ bộ nhớ trong khi thử chuyển đổi chỉ mục ký hiệu kho lưu\n"
+
+#: elfcomm.c:405
+#, c-format
+msgid "%s: the archive has an index but no symbols\n"
+msgstr "%s: kho lưu có một chỉ mục nhưng chưa có ký hiệu\n"
+
+#: elfcomm.c:413
+msgid "Out of memory whilst trying to read archive index symbol table\n"
+msgstr "Không đủ bá»™ nhá»› trong khi thá»­ Ä‘á»c bảng ký hiệu chỉ mục kho lÆ°u\n"
+
+# Type: error
+# Description
+#: elfcomm.c:419
+#, c-format
+msgid "%s: failed to read archive index symbol table\n"
+msgstr "%s: lá»—i Ä‘á»c bảng ký hiệu chỉ mục kho lÆ°u\n"
+
+# Type: error
+# Description
+#: elfcomm.c:428
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr "%s: lỗi nhảy qua bảng ký hiệu kho lưu\n"
+
+#: elfcomm.c:440
+#, c-format
+msgid "%s: failed to read archive header following archive index\n"
+msgstr "%s: lá»—i Ä‘á»c phần đầu kho lÆ°u theo sau chỉ mục kho lÆ°u\n"
+
+#: elfcomm.c:446
+#, c-format
+msgid "%s has no archive index\n"
+msgstr "%s không có chỉ mục kho lưu\n"
+
+#: elfcomm.c:457
+msgid "Out of memory reading long symbol names in archive\n"
+msgstr "Không đủ bá»™ nhá»› trong khi Ä‘á»c các tên ký hiệu dài trong kho lÆ°u\n"
+
+# Type: error
+# Description
+#: elfcomm.c:465
+#, c-format
+msgid "%s: failed to read long symbol name string table\n"
+msgstr "%s: lá»—i Ä‘á»c bảng chuá»—i tên ký hiệu dài\n"
+
+#: elfcomm.c:605
+#, c-format
+msgid "%s: failed to seek to next file name\n"
+msgstr "%s: lỗi tìm nơi tới tên tập tin kế tiếp\n"
+
+#: elfcomm.c:616 elfedit.c:347 readelf.c:13424
+#, c-format
+msgid "%s: did not find a valid archive header\n"
+msgstr "%s: không tìm thấy phần đầu kho lưu hợp lệ\n"
+
+#: elfedit.c:73
+#, c-format
+msgid "%s: Not an ELF file - wrong magic bytes at the start\n"
+msgstr "%s: Không phải là tập tin ELF - có những byte ma thuật không đúng tại vị trí bắt đầu\n"
+
+#: elfedit.c:81
+#, c-format
+msgid "%s: Unsupported EI_VERSION: %d is not %d\n"
+msgstr "%s: Không hỗ trợ EI_VERSION: %d thì không %d\n"
+
+#: elfedit.c:97
+#, c-format
+msgid "%s: Unmatched EI_CLASS: %d is not %d\n"
+msgstr "%s: Không khớp EI_CLASS: %d thì không %d\n"
+
+#: elfedit.c:108
+#, c-format
+msgid "%s: Unmatched e_machine: %d is not %d\n"
+msgstr "%s: Không khớp e_machine: %d thì không %d\n"
+
+#: elfedit.c:119
+#, c-format
+msgid "%s: Unmatched e_type: %d is not %d\n"
+msgstr "%s: Không khớp e_type: %d thì không %d\n"
+
+#: elfedit.c:130
+#, c-format
+msgid "%s: Unmatched EI_OSABI: %d is not %d\n"
+msgstr "%s: Không khớp EI_OSABI: %d thì không %d\n"
+
+#: elfedit.c:163
+#, c-format
+msgid "%s: Failed to update ELF header: %s\n"
+msgstr "%s: Gặp lỗi khi cập nhật phần đầu ELF: %s\n"
+
+#: elfedit.c:196
+#, c-format
+msgid "Unsupported EI_CLASS: %d\n"
+msgstr "Không hỗ trợ EI_CLASS: %d\n"
+
+#: elfedit.c:229
+msgid ""
+"This executable has been built without support for a\n"
+"64 bit data type and so it cannot process 64 bit ELF files.\n"
+msgstr ""
+"Chương trình thực thi mày không hỗ trợ kiểu dữ liệu 64-bit\n"
+"nên nó không thể xử lý đượcc tập tin ELF kiểu 64-bit.\n"
+
+#: elfedit.c:270
+#, c-format
+msgid "%s: Failed to read ELF header\n"
+msgstr "%s: Gặp lá»—i khi Ä‘á»c phần đầu ELF\n"
+
+#: elfedit.c:277
+#, c-format
+msgid "%s: Failed to seek to ELF header\n"
+msgstr "%s: Gặp lá»—i khi di chuyển vị trí Ä‘á»c tá»›i phần đầu ELF\n"
+
+#: elfedit.c:331 readelf.c:13410
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s: lỗi tìm nơi tới dòng đầu kho lưu kế tiếp\n"
+
+#: elfedit.c:362 elfedit.c:371 readelf.c:13438 readelf.c:13447
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s: tên tập tin kho lưu sai\n"
+
+#: elfedit.c:391 elfedit.c:483
+#, c-format
+msgid "Input file '%s' is not readable\n"
+msgstr "Tập tin nhập \"%s\" không thể Ä‘á»c được\n"
+
+#: elfedit.c:415
+#, c-format
+msgid "%s: failed to seek to archive member\n"
+msgstr "%s: gặp lỗi khi tìm tới thành viên kho lưu.\n"
+
+#: elfedit.c:454 readelf.c:13533
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "\"%s\": không có tập tin như vậy\n"
+
+#: elfedit.c:456 readelf.c:13535
+#, 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"
+
+#: elfedit.c:463 readelf.c:13542
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "\"%s\" không phải là má»™t tập tin thông thÆ°á»ng\n"
+
+#: elfedit.c:489 readelf.c:13555
+#, c-format
+msgid "%s: Failed to read file's magic number\n"
+msgstr "%s: lá»—i Ä‘á»c số ma thuật của tập tin\n"
+
+#: elfedit.c:547
+#, c-format
+msgid "Unknown OSABI: %s\n"
+msgstr "Không hiểu OSABI: %s\n"
+
+#: elfedit.c:568
+#, c-format
+msgid "Unknown machine type: %s\n"
+msgstr "Không rõ kiểu máy: %s\n"
+
+#: elfedit.c:587
+#, c-format
+msgid "Unknown machine type: %d\n"
+msgstr "Không hiểu kiểu máy: %d\n"
+
+#: elfedit.c:606
+#, c-format
+msgid "Unknown type: %s\n"
+msgstr "Không nhận ra kiểu: %s\n"
+
+#: elfedit.c:637
+#, c-format
+msgid "Usage: %s <option(s)> elffile(s)\n"
+msgstr "Sá»­ dụng: %s <các_tùy_chá»n> các_tệp_tin_elf\n"
+
+#: elfedit.c:639
+#, c-format
+msgid " Update the ELF header of ELF files\n"
+msgstr " Cập nhật phần đầu ELF của tập tin ELF\n"
+
+#: elfedit.c:640 objcopy.c:475 objcopy.c:585
+#, c-format
+msgid " The options are:\n"
+msgstr " Tùy chá»n:\n"
+
+#: elfedit.c:641
+#, c-format
+msgid ""
+" --input-mach <machine> Set input machine type to <machine>\n"
+" --output-mach <machine> Set output machine type to <machine>\n"
+" --input-type <type> Set input file type to <type>\n"
+" --output-type <type> Set output file type to <type>\n"
+" --input-osabi <osabi> Set input OSABI to <osabi>\n"
+" --output-osabi <osabi> Set output OSABI to <osabi>\n"
+" -h --help Display this information\n"
+" -v --version Display the version number of %s\n"
+msgstr ""
+" --input-mach <machine> Äặt kiểu máy đầu vào là <machine>\n"
+" --output-mach <machine> Äặt kiểu máy kết xuất là <machine>\n"
+" --input-type <type> Äặt kiểu tập tin đầu vào thành <type>\n"
+" --output-type <type> Äặt kiểu tập tin kết xuất thành <type>\n"
+" --input-osabi <osabi> Äặt OSABI đầu vào thành <osabi>\n"
+" --output-osabi <osabi> Äặt OSABI kết xuất thành <osabi>\n"
+" -h --help Hiển thị thông tin này\n"
+" -v --version Hiển thị số phiên bản của %s\n"
+
+#: emul_aix.c:45
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] • kho nhỠ32-bit\n"
+
+#: emul_aix.c:46
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] • bỠqua các đối tượng kiểu 64 bit\n"
+
+#: emul_aix.c:47
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] • bỠqua các đối tượng kiểu 32 bit\n"
+
+#: emul_aix.c:48
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] • chấp nhận các đối tượng kiểu cả hai 32 bit và 64 bit\n"
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "gặp kết thúc bất thÆ°á»ng trong thông tin gỡ lá»—i"
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "con số không hợp lệ"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "chiá»u dài chuá»—i không hợp lệ"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "tràn đống biểu thức"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "toán tử biểu thức IEE không được hỗ trợ"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr "không rõ phần"
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "tràn ngược đống biểu thức"
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "sai khớp đống biểu thức"
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "không rõ kiểu builtin"
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "Kiểu nổi BDC không được hỗ trợ"
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "con số bất thÆ°á»ng"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "kiểu mục ghi bất thÆ°á»ng"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "có một số khối còn lại trên đống khi kết thúc"
+
+#: ieee.c:1208
+msgid "unknown BB type"
+msgstr "không rõ kiểu BB"
+
+#: ieee.c:1217
+msgid "stack overflow"
+msgstr "tràn đống"
+
+#: ieee.c:1240
+msgid "stack underflow"
+msgstr "tràn ngược đống"
+
+#: ieee.c:1352 ieee.c:1422 ieee.c:2120
+msgid "illegal variable index"
+msgstr "chỉ mục biến không được phép"
+
+#: ieee.c:1400
+msgid "illegal type index"
+msgstr "chỉ mục kiểu không được phép"
+
+#: ieee.c:1410 ieee.c:1447
+msgid "unknown TY code"
+msgstr "không rõ mã TY"
+
+#: ieee.c:1429
+msgid "undefined variable in TY"
+msgstr "gặp biến chưa được định nghĩa trong TY"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1841
+msgid "Pascal file name not supported"
+msgstr "Chưa hỗ trợ tên tập tin kiểu Pascal"
+
+#: ieee.c:1889
+msgid "unsupported qualifier"
+msgstr "bộ dè dặt chưa được hỗ trợ"
+
+#: ieee.c:2158
+msgid "undefined variable in ATN"
+msgstr "gặp biến chưa định nghĩa trong ATN"
+
+#: ieee.c:2201
+msgid "unknown ATN type"
+msgstr "không rõ kiểu ATN"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2323
+msgid "unsupported ATN11"
+msgstr "ATN11 không được hỗ trơ"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2350
+msgid "unsupported ATN12"
+msgstr "ATN12 không được hỗ trơ"
+
+#: ieee.c:2410
+msgid "unexpected string in C++ misc"
+msgstr "gặp chuỗi không được hỗ trơ trong C++ lặt vặt"
+
+#: ieee.c:2423
+msgid "bad misc record"
+msgstr "mục ghi linh tinh sai"
+
+#: ieee.c:2464
+msgid "unrecognized C++ misc record"
+msgstr "không chấp nhận mục ghi C++ linh tinh"
+
+#: ieee.c:2579
+msgid "undefined C++ object"
+msgstr "đối tượng C++ chưa được định nghĩa"
+
+#: ieee.c:2613
+msgid "unrecognized C++ object spec"
+msgstr "chưa chấp nhận đặc tả đối tượng C++"
+
+#: ieee.c:2649
+msgid "unsupported C++ object type"
+msgstr "kiểu đối tượng C++ chưa được hỗ trợ"
+
+#: ieee.c:2659
+msgid "C++ base class not defined"
+msgstr "chưa định nghĩa hạng cơ bản C++"
+
+#: ieee.c:2671 ieee.c:2776
+msgid "C++ object has no fields"
+msgstr "Äối tượng C++ không có trÆ°á»ng"
+
+#: ieee.c:2690
+msgid "C++ base class not found in container"
+msgstr "Không tìm thấy hạng cơ bản C++ trong bộ chứa"
+
+#: ieee.c:2797
+msgid "C++ data member not found in container"
+msgstr "Không tìm thấy bộ phạn dữ liệu C++ trong bộ chứa"
+
+#: ieee.c:2838 ieee.c:2988
+msgid "unknown C++ visibility"
+msgstr "không rõ độ thấy rõ C++"
+
+#: ieee.c:2872
+msgid "bad C++ field bit pos or size"
+msgstr "vị trí bit hay kích cỡ trÆ°á»ng C++ sai"
+
+#: ieee.c:2964
+msgid "bad type for C++ method function"
+msgstr "kiểu sai cho hàm phương pháp C++"
+
+#: ieee.c:2974
+msgid "no type information for C++ method function"
+msgstr "không có thông tin kiểu cho hàm phương pháp C++"
+
+#: ieee.c:3013
+msgid "C++ static virtual method"
+msgstr "phương pháp ảo tĩnh C++"
+
+#: ieee.c:3108
+msgid "unrecognized C++ object overhead spec"
+msgstr "chưa chấp nhận đặc tả duy tu đối tượng C++"
+
+#: ieee.c:3147
+msgid "undefined C++ vtable"
+msgstr "chưa định nghĩa vtable C++"
+
+#: ieee.c:3216
+msgid "C++ default values not in a function"
+msgstr "Giá trị C++ mặc định không phải trong hàm"
+
+#: ieee.c:3256
+msgid "unrecognized C++ default type"
+msgstr "chưa chấp nhận kiểu C++ mặc định"
+
+#: ieee.c:3287
+msgid "reference parameter is not a pointer"
+msgstr "tham số tham chiếu không phải là con trá»"
+
+#: ieee.c:3370
+msgid "unrecognized C++ reference type"
+msgstr "chưa chấp nhận kiểu tham chiếu C++"
+
+#: ieee.c:3452
+msgid "C++ reference not found"
+msgstr "Không tìm thấy tham chiếu C++"
+
+#: ieee.c:3460
+msgid "C++ reference is not pointer"
+msgstr "Tham chiếu C++ không phải là con trá»"
+
+#: ieee.c:3486 ieee.c:3494
+msgid "missing required ASN"
+msgstr "thiếu ASN cần thiết"
+
+#: ieee.c:3521 ieee.c:3529
+msgid "missing required ATN65"
+msgstr "thiếu ATN65 cần thiết"
+
+#: ieee.c:3543
+msgid "bad ATN65 record"
+msgstr "mục ghi ATN65 sai"
+
+#: ieee.c:4171
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "tràn thuộc số IEEE: 0x"
+
+#: ieee.c:4215
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "tràn độ dài chuỗi IEEE: %u\n"
+
+#: ieee.c:5213
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "Kích cỡ kiểu số nguyên không được hỗ trợ IEEE %u\n"
+
+#: ieee.c:5247
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "Kích cỡ kiểu nổi không được hỗ trợ IEEE %u\n"
+
+#: ieee.c:5281
+#, c-format
+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"
+
+#: mclex.c:241
+msgid "Duplicate symbol entered into keyword list."
+msgstr "Ký hiệu trùng được nhập vào danh sách từ khoá."
+
+#: nlmconv.c:274 srconv.c:1824
+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:321
+msgid "input file named both on command line and with INPUT"
+msgstr "tên tập tin được đặt tên cả hai trên dòng lệnh và bằng INPUT"
+
+#: nlmconv.c:330
+msgid "no input file"
+msgstr "không có tập tin nhập vào"
+
+#: nlmconv.c:360
+msgid "no name for output file"
+msgstr "không có tên cho tập tin kết xuất"
+
+#: nlmconv.c:374
+msgid "warning: input and output formats are not compatible"
+msgstr "cảnh báo : định dạng nhập và xuất không tương thích với nhau"
+
+#: nlmconv.c:404
+msgid "make .bss section"
+msgstr "tạo phần \".bss\""
+
+#: nlmconv.c:414
+msgid "make .nlmsections section"
+msgstr "tạo phần \".nlmsections\""
+
+#: nlmconv.c:442
+msgid "set .bss vma"
+msgstr "đặt vma .bss"
+
+#: nlmconv.c:449
+msgid "set .data size"
+msgstr "đặt kích cỡ dữ liệu .data"
+
+#: nlmconv.c:629
+#, 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:649
+msgid "set start address"
+msgstr "đặt địa chỉ bắt đầu"
+
+#: nlmconv.c:698
+#, 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:700
+#, 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:702
+#, 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:722 nlmconv.c:908
+msgid "custom section"
+msgstr "phần riêng"
+
+#: nlmconv.c:742 nlmconv.c:937
+msgid "help section"
+msgstr "phần trợ giúp"
+
+#: nlmconv.c:764 nlmconv.c:955
+msgid "message section"
+msgstr "phần thông điệp"
+
+#: nlmconv.c:779 nlmconv.c:988
+msgid "module section"
+msgstr "phần mô-đun"
+
+#: nlmconv.c:798 nlmconv.c:1004
+msgid "rpc section"
+msgstr "phần rpc"
+
+#. There is no place to record this information.
+#: nlmconv.c:834
+#, 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:855 nlmconv.c:1023
+msgid "shared section"
+msgstr "phần dùng chung"
+
+#: nlmconv.c:863
+msgid "warning: No version number given"
+msgstr "cảnh báo : chưa đưa ra số thứ tự phiên bản"
+
+#: nlmconv.c:903 nlmconv.c:932 nlmconv.c:950 nlmconv.c:999 nlmconv.c:1018
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s: Ä‘á»c: %s"
+
+#: nlmconv.c:925
+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:1101
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Sá»­ dụng: %s [tùy_chá»n...] [tập_tin_nhập [tập_tin_xuất]]\n"
+
+#: nlmconv.c:1102
+#, 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 Nạp Äược NetWare (NetWare Loadable Module)\n"
+
+#: nlmconv.c:1103
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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 Lập định dạng 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>\t Lập định dạng 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> \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"
+" @<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:1144
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "chưa biên dịch cách hỗ trợ %s"
+
+#: nlmconv.c:1181
+msgid "make section"
+msgstr "tạo phần"
+
+#: nlmconv.c:1195
+msgid "set section size"
+msgstr "lập kích cỡ phần"
+
+#: nlmconv.c:1201
+msgid "set section alignment"
+msgstr "lập canh lỠphần"
+
+#: nlmconv.c:1205
+msgid "set section flags"
+msgstr "lập các cỠphân"
+
+#: nlmconv.c:1216
+msgid "set .nlmsections size"
+msgstr "lập kích cỡ \".nlmsections\""
+
+#: nlmconv.c:1297 nlmconv.c:1305 nlmconv.c:1314 nlmconv.c:1319
+msgid "set .nlmsection contents"
+msgstr "lập nội dung \".nlmsections\""
+
+#: nlmconv.c:1796
+msgid "stub section sizes"
+msgstr "kích cỡ phần stub"
+
+#: nlmconv.c:1843
+msgid "writing stub"
+msgstr "Ä‘ang ghi stub"
+
+#: nlmconv.c:1927
+#, 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:1991
+#, 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:2118
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s: việc thực hiện %s bị lỗi: "
+
+#: nlmconv.c:2133
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Việc thực hiện %s bị lỗi"
+
+#: nm.c:225 size.c:78 strings.c:650
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Sá»­ dụng: %s [tùy_chá»n...] [tập_tin...]\n"
+
+#: nm.c:226
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr " Liệt kê các ký hiệu trong những tập tin này (mặc định là <a.out>).\n"
+
+#: nm.c:227
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+msgstr ""
+" Tùy chá»n:\n"
+" -a, --debug-syms \tHiển thị ký hiệu chỉ kiểu bộ gỡ lỗi\n"
+" -A, --print-file-name \tIn ra tên tập tin nhập vào trÆ°á»›c má»i ký hiệu\n"
+" -B \t\t\tBằng \"--format=bsd\"\n"
+" -C, --demangle[=KIỂU_DÃNG]\n"
+"\tGiải mã các tên ký hiệu cấp thấp thành tên cấp ngÆ°á»i dùng (_tháo gỡ_)\n"
+" Kiểu dáng này, nếu được ghi rõ, có thể là \"auto\" (tự động: mặc định)\n"
+"\t\"gnu\", \"lucid\", \"arm\", \"hp\", \"edg\", \"gnu-v3\", \"java\" hay \"gnat\".\n"
+" --no-demangle \t\tÄừng tháo gỡ tên ký hiệu cấp thấp\n"
+" -D, --dynamic \t\tHiển thị ký hiệu động thay vào ký hiệu chuẩn\n"
+" --defined-only \t\tHiển thị chỉ ký hiệu được định nghĩa\n"
+" -e \t\t\t(bị bỠqua)\n"
+" -f, --format=ÄỊNH_DẠNG \tDùng định dạng kết xuất này, má»™t của\n"
+"\t\t\t\t\t\t\t\"bsd\" (mặc định), \"sysv\" hay \"posix\"\n"
+" -g, --extern-only \t\tHiển thị chỉ ký hiệubên ngoài_\n"
+" -l, --line-numbers \t\tDùng thông tin gỡ lỗi để tìm tên tập tin\n"
+"\t\t\t\t\t\tvà số thứ tự dòng cho mỗi ký hiệu\n"
+" -n, --numeric-sort \t\tSắp xếp các ký hiệu một cách thuộc số theo địa chỉ\n"
+" -o \t\t\tBằng \"-A\"\n"
+" -p, --no-sort \t\tÄừng sắp xếp các ký hiệu\n"
+" -P, --portability \t\tBằng \"--format=posix\"\n"
+" -r, --reverse-sort \t\tSắp xếp ngược\n"
+
+#: nm.c:250
+#, c-format
+msgid " --plugin NAME Load the specified plugin\n"
+msgstr " --plugin TÊN Nạp phần bổ sung chỉ ra\n"
+
+#: nm.c:253
+#, c-format
+msgid ""
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --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"
+msgstr ""
+" -S, --print-size In ra kích cỡ của ký hiệu đã định nghĩa\n"
+"\t\t -s, --print-armap Bao gồm chỉ mục cho các ký hiệu từ mục của kho lưu\n"
+" --size-sort Sắp xếp các ký hiệu theo kích cỡ\n"
+" --special-syms Bao gồm các ký hiệu đặc biệt trong kết xuất\n"
+" --synthetic Cũng hiển thị các ký hiệu tổng hợp\n"
+" -t, --radix=CƠ_SỠDùng cơ số này để in ra giá trị các ký hiệu\n"
+" --target=BFDNAME Chỉ ra định dạng đối tượng đích như BFDNAME\n"
+" -u, --undefined-only Hiển thị chỉ những ký hiệu chưa định nghĩa\n"
+" -X 32_64 (bị lỠđi)\n"
+" @TẬP_TIN Äá»c các tùy từ tập tin này\n"
+" -h, --help Hiển thị trợ giúp này\n"
+" -V, --version Hiển thị số thứ tự phiên bản của chương trình này\n"
+"\n"
+
+#: nm.c:301
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s: cơ sở không hợp lệ"
+
+#: nm.c:325
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s: định dạng kết xuất không hợp lệ"
+
+#: nm.c:346 readelf.c:8616 readelf.c:8661
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<đặc trưng cho bộ xử lý>: %d"
+
+#: nm.c:348 readelf.c:8625 readelf.c:8679
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<đặc trÆ°ng cho hệ Ä‘iá»u hành>: %d"
+
+#: nm.c:350 readelf.c:8628 readelf.c:8682
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<không rõ>: %d"
+
+#: nm.c:390
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"Chỉ mục kho lưu:\n"
+
+#: nm.c:1258
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ký hiệu chưa được định nghĩa từ %s:\n"
+"\n"
+
+#: nm.c:1260
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ký hiệu từ %s:\n"
+"\n"
+
+#: nm.c:1262 nm.c:1313
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Tên Giá trị Hạng Kiểu Cỡ Dòng Phần\n"
+"\n"
+
+#: nm.c:1265 nm.c:1316
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"Tên Giá trị Hạng Kiểu Cỡ Dòng Phần\n"
+"\n"
+
+#: nm.c:1309
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ký hiệu chưa được định nghĩa từ %s[%s]:\n"
+"\n"
+
+#: nm.c:1311
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"Ký hiệu từ %s[%s]:\n"
+"\n"
+
+#: nm.c:1403
+#, c-format
+msgid "Print width has not been initialized (%d)"
+msgstr "ChÆ°a sở khởi chiá»u rá»™ng in (%d)"
+
+#: nm.c:1631
+msgid "Only -X 32_64 is supported"
+msgstr "Chỉ hỗ trợ \"-X 32_64\" thôi"
+
+#: nm.c:1660
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "Äang dùng vá»›i nhau hai tùy chá»n \"--size-sort\" và \"--undefined-only\""
+
+#: nm.c:1661
+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 thì không có kích cỡ."
+
+#: nm.c:1689
+#, c-format
+msgid "data size %ld"
+msgstr "kích cỡ dữ liệu %ld"
+
+#: objcopy.c:473 srconv.c:1732
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Sá»­ dụng: %s [tùy_chá»n...] tập_tin_nhập [tập_tin_xuất]\n"
+
+#: objcopy.c:474
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " Sao chép một tập tin nhị phân, cũng có thể chuyển dạng nó\n"
+
+#: objcopy.c:476
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set output arch, when input is arch-less\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" Do not copy symbol <name> unless needed by\n"
+" relocations\n"
+" --only-keep-debug Strip everything but the debug information\n"
+" --extract-symbol Remove section contents but keep symbols\n"
+" -K --keep-symbol <name> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\n"
+" --localize-hidden Turn all ELF hidden symbols into locals\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"
+" -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"
+" -i --interleave [<number>] Only copy N out of every <number> bytes\n"
+" --interleave-width <number> Set N for --interleave\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --long-section-names {enable|disable|keep}\n"
+" Handle long section names in Coff objects.\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --reverse-bytes=<num> Reverse <num> bytes at a time, in output sections with content\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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 the target's <index>'th alternative machine\n"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" --file-alignment <num> Set PE file alignment to <num>\n"
+" --heap <reserve>[,<commit>] Set PE reserve/commit heap to <reserve>/\n"
+" <commit>\n"
+" --image-base <address> Set PE image base to <address>\n"
+" --section-alignment <num> Set PE section alignment to <num>\n"
+" --stack <reserve>[,<commit>] Set PE reserve/commit stack to <reserve>/\n"
+" <commit>\n"
+" --subsystem <name>[:<version>]\n"
+" Set PE subsystem to <name> [& <version>]\n"
+" --compress-debug-sections Compress DWARF debug sections using zlib\n"
+" --decompress-debug-sections Decompress DWARF debug sections using zlib\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"
+msgstr ""
+" -I --input-target <tên_bfd> Giả định tập tin nhập có định dạng <tên_bfd>\n"
+" -O --output-target <tên_bfd> Tạo tập tin định dạng <tên_bfd>\n"
+" -B --binary-architecture <kiến_trúc> Äặt kiến trúc cho tập tin xuất, khi đầu vào không có kiến trúc\n"
+" -F --target <tên_bfd> Äặt định dạng cả nhập lẫn xuất Ä‘á»u thành <tên_bfd>\n"
+" --debugging Chuyển đổi thông tin gỡ lỗi, nếu có thể\n"
+" -p --preserve-dates Sao chép nhãn thá»i gian truy cập/sá»­a đổi ra kết xuất\n"
+" -j --only-section <tên> Chỉ sao chép <tên> phần ra kết xuất\n"
+" --add-gnu-debuglink=<tập_tin> Thêm liên kết phần \".gnu_debuglink\" vào <tập_tin>\n"
+" -R --remove-section <tên> Gỡ bỠphần <tên> ra kết xuất\n"
+" -S --strip-all Gỡ bá» má»i thông tin ký hiệu và định vị lại\n"
+" -g --strip-debug Gỡ bá» má»i ký hiệu và phần kiểu gỡ lá»—i\n"
+" --strip-unneeded Gỡ bá» má»i ký hiệu không cần thiết để định vị lại\n"
+" -N --strip-symbol <tên> Äừng sao chép ký hiệu <tên>\n"
+" --strip-unneeded-symbol <tên>\n"
+" Äừng sao chép ký hiệu <tên> trừ những cái cần thiết để định vị lại\n"
+" --only-keep-debug Tước hết, trừ thông tin gỡ lỗi\n"
+" --extract-symbol Gỡ bỠnội dung của phần, nhưng giữ các ký hiệu\n"
+" -K --keep-symbol <tên> Không bỠqua ký hiệu <tên>\n"
+" --keep-file-symbols Không tước các ký hiệu tập tin\n"
+" --localize-hidden Chuyển đổi má»i ký hiệu bị ẩn ELF sang cục bá»™\n"
+" -L --localize-symbol <tên> Buộc ký hiệu <tên> đánh dấu là cục bộ\n"
+" --globalize-symbol <tên> Buộc ký hiệu <tên> đánh dấu là cục bộ\n"
+" -G --keep-global-symbol <tên> \tÄịa phÆ°Æ¡ng hóa má»i ký hiệu trừ <name>\n"
+" -W --weaken-symbol <tên> \tBuộc ký hiệu <name> đánh dấu là yếu\n"
+" --weaken Buá»™c má»i ký hiệu toàn cục đánh dấu là yếu\n"
+" -w --wildcard Cho phép so sánh ký hiệu sử dụng wildcard\n"
+" -x --discard-all Gỡ bá» má»i ký hiệu không toàn cục\n"
+" -X --discard-locals Gỡ bỠký hiệu nào được tạo ra bởi bộ biên dịch\n"
+" -i --interleave [<số>] Chỉ sao chép N của mỗi <số> byte\n"
+" --interleave-width <số> Äặt N cho --interleave\n"
+" -b --byte <số> Chá»n byte số thứ tá»± <số> trong má»—i khối tin đã chen vào\n"
+" --gap-fill <giá_trị> Äiá»n vào khe_ giữa hai phần bằng <giá_trị>\n"
+" --pad-to <địa_chỉ> Äệm_ phần cuối cùng cho tá»›i địa chỉ <địa_chỉ>\n"
+" --set-start <địa_chỉ> Äặt địa chỉ bắt đầu thành <địa_chỉ>\n"
+" {--change-start|--adjust-start} <tăng>\n"
+" Thêm <tăng> vào địa chỉ bắt đầu\n"
+" {--change-addresses|--adjust-vma} <tang>\n"
+" Thêm <tăng> LMA và VMA vào địa chỉ bắt đầu\n"
+" {--change-section-address|--adjust-section-vma} <tên>{=|+|-}<giá_trị>\n"
+" Thay đổi LMA và VMA của phần <tên> bằng <giá_trị>\n"
+" --change-section-lma <tên>{=|+|-}<giá_trị>\n"
+" Thay đổi LMA của phần <tên> bằng <giá_trị>\n"
+" --change-section-vma <tên>{=|+|-}<giá_trị>\n"
+" Thay đổi VMA của phần <tên> bằng <giá_trị>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Cảnh báo nếu không có phần có tên\n"
+" --set-section-flags <tên>=<cỠ...>\n"
+" Äặt thuá»™c tính của phần <tên> thành <cá» ...>\n"
+" --add-section <tên>=<tập_tin> Thêm phần <tên> được tìm trong <tập_tin> vào kết xuất\n"
+" --rename-section <cũ>=<mới>[,<cỠ...>] Thay đổi phần <cũ> thành <mới>\n"
+" --long-section-names {enable|disable|keep}\t(bật|tắt|giữ)\n"
+" Xử lý tên phần dài trong đối tượng Coff.\n"
+" --change-leading-char Buộc kiểu dáng của ký tự đi trước của định dạng xuất\n"
+" --remove-leading-char Gỡ bỠký tự đi trước từ các ký hiệu toàn cục\n"
+" --reverse-bytes=<số> Äảo ngược <số> byte má»—i lần, trong phần kết xuất có ná»™i dung\n"
+" --redefine-sym <cÅ©>=<má»›i> Äịnh nghÄ©a lại_ tên _ký hiệu_ <cÅ©> thành <má»›i>\n"
+" --redefine-syms <tập_tin> Tùy chá»n \"--redefine-sym\" cho má»i cặp ký hiệu\n"
+" được liệt kê trong <tập_tin>\n"
+" --srec-len <số> Giới hạn _độ dài_ của các Srecords đã tạo ra\n"
+" --srec-forceS3 Giới hạn kiểu Srecords thành S3\n"
+" --strip-symbols <tập_tin> \"-N\" cho má»i ký hiệu được liệt kê trong <tập_tin>\n"
+" --strip-unneeded-symbols <tập_tin>\n"
+" \"--strip-unneeded-symbol\" cho má»i ký hiệu\n"
+" được liệt kê trong <tập_tin>\n"
+" --keep-symbols <tập_tin>\n"
+" \"-K\" cho má»i ký hiệu được liệt kê trong <tập_tin>\n"
+" --localize-symbols <tập_tin> \"-L\" cho má»i ký hiệu được liệt kê trong <tập_tin>\n"
+" --globalize-symbols <file> --globalize-symbol cho má»i ký hiệu được liệt kê trong <tập_tin>\n"
+" --keep-global-symbols <tập_tin> \"-G\" cho má»i ký hiệu được liệt kê trong <tập_tin>\n"
+" --weaken-symbols <tập_tin> \"-W\" cho má»i ký hiệu được liệt kê trong <tập_tin>\n"
+" --alt-machine-code <chỉ-số> Dùng máy xen kẽ thứ <chỉ-số> của đích\n"
+" --writable-text Äánh dấu văn bản xuất có khả năng ghi\n"
+" --readonly-text Làm cho văn bản xuất được bảo vệ chống ghi\n"
+" --pure\n"
+" Äánh dấu tập tin xuất sẽ đánh trang theo yêu cầu\n"
+" --impure \t\tÄánh dấu tập tin xuất _không tinh khiết_\n"
+" --prefix-symbols <tiá»n_tố> Thêm <tiá»n_tố> vào đầu của má»i tên ký hiệu\n"
+" --prefix-sections <tiá»n_tố>\n"
+" Thêm <tiá»n_tố> vào đầu của má»i tên phần\n"
+" --prefix-alloc-sections <tiá»n_tố>\n"
+" Thêm <tiá»n_tố> vào đầu của má»i tên phần có thể cấp phát\n"
+" --file-alignment <số> Äặt cách sắp hàng tập tin PE thành số này\n"
+" --heap <reserve>[,<commit>] Äặt miá»n nhá»› giữ lại/gài vào PE thành <reserve>/\n"
+" <commit>\n"
+" --image-base <địa_chỉ> Äặt cÆ¡ bản ảnh PE thành địa chỉ này\n"
+" --section-alignment <số> Äặt cách sắp hàng phần PE thành số này\n"
+" --stack <reserve>[,<commit>] Äặt đống giữ lại/gài vào PE thành <reserve>/\n"
+" <commit>\n"
+" --subsystem <tên>[:<phiên_bản>]\n"
+" Äặt hệ thống phụ PE thành <tên> [& <phiên_bản>]\n"
+" --compress-debug-sections Nén chương gỡ lỗi DWARF sử dụng zlib\n"
+" --decompress-debug-sections Giải nén chương gỡ lỗi DWARF sử dụng zlib\n"
+" -v --verbose Liệt kê má»i tập tin đối tượng đã được sá»­a đổi\n"
+" @<file> Äá»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 Hiển thị _trợ giúp_ này\n"
+" --info Liệt kê các định dạng và kiến trúc được hỗ trợ\n"
+
+#: objcopy.c:583
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Sá»­ dụng: %s <các_tùy_chá»n> các_tập_tin_nhập\n"
+
+#: objcopy.c:584
+#, 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:586
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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> Do not strip symbol <name>\n"
+" --keep-file-symbols Do not strip file symbol(s)\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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target=<tên_bfd> Giả sử tập tin nhập có định dạng <tên_bfd>\n"
+"\t\t(đích nhập)\n"
+" -O --output-target=<tên_bfd> Tạo một tập tin xuất có định dạng <tên_bfd>\n"
+"\t\t(đích xuất)\n"
+" -F --target=<tên_bfd> Äặt định dạng cả nhập lẫn xuất Ä‘á»u thành <tên_bfd>\n"
+"\t\t(đích)\n"
+" -p --preserve-dates\n"
+"\t\tSao chép các nhãn thá»i gian truy cập/đã sá»­a đổi vào kết xuất\n"
+"\t\t(bảo tồn các ngày)\n"
+" -R --remove-section=<tên> \t_Gỡ bỠphần_ <name> ra dữ liệu xuất\n"
+" -s --strip-all \t\tGỡ bá» má»i thông tin kiểu ký hiệu và định vị lại\n"
+"\t\t(tước hết)\n"
+" -g -S -d --strip-debug \tGỡ bá» má»i ký hiệu và phần kiểu gỡ lá»—i\n"
+"\t\t(tước gỡ lỗi)\n"
+" --strip-unneeded Gỡ bá» má»i ký hiệu không cần thiết khi định vị lại\n"
+"\t\t(tước không cần thiết)\n"
+" --only-keep-debug \tTước hết, trừ thông tin gỡ lỗi\n"
+"\t\t(chỉ giữ gỡ lỗi)\n"
+" -N --strip-symbol=<tên> \tÄừng sao chép ký hiệu <tên>\n"
+"\t\t(tước ký hiệu)\n"
+" -K --keep-symbol=<tên> \tSao chép chỉ ký hiệu <tên>\n"
+"\t\t(giữ ký hiệu)\n"
+" --keep-file-symbols Äừng tÆ°á»›c các ký hiệu tập tin.\n"
+"\t\t(_giữ các ký hiệu tập tin_)\n"
+" -w --wildcard Cho phép _ký tự đại diện_ trong chuỗi so sánh ký hiệu\n"
+" -x --discard-all \t\tGỡ bá» má»i ký hiệu không toàn cục\n"
+"\t\t(hủy hết)\n"
+" -X --discard-locals \tGỡ bo ký hiệu nào do bộ biên dịch tạo ra\n"
+"\t\t(hủy các Ä‘iá»u cục bá»™)\n"
+" -v --verbose \t\tLiệt kê má»i tập tin đối tượng đã sá»­a đổi\n"
+"\t\t(chi tiết)\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\tHiển thị _trợ giúp_ này\n"
+" --info Liệt kê các định dạng đố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:659
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "không nhận ra cỠphần \"%s\""
+
+#: objcopy.c:660
+#, c-format
+msgid "supported flags: %s"
+msgstr "các cỠđược hỗ trợ : %s"
+
+#: objcopy.c:761
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "không thể mở \"%s\": %s"
+
+#: objcopy.c:764 objcopy.c:3417
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s: fread bị lỗi"
+
+#: objcopy.c:837
+#, 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:1153
+#, c-format
+msgid "not stripping symbol `%s' because it is named in a relocation"
+msgstr "sẽ không gỡ bỠký hiệu \"%s\" vì tên của nó được đặt trong việc định vị lại"
+
+#: objcopy.c:1236
+#, 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:1240
+#, 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:1268
+#, 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:1346
+#, 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:1349
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: thiếu tên ký hiệu mới"
+
+#: objcopy.c:1359
+#, 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:1385
+#, c-format
+msgid "stat returns negative size for `%s'"
+msgstr "việc stat (lấy trạng thái) trả lại kích cỡ âm cho \"%s\""
+
+#: objcopy.c:1397
+#, 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:1454
+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 vào"
+
+#: objcopy.c:1463
+#, c-format
+msgid "copy from `%s' [%s] to `%s' [%s]\n"
+msgstr "chép từ \"%s\" [%s] sang \"%s\" [%s]\n"
+
+#: objcopy.c:1512
+#, c-format
+msgid "Input file `%s' ignores binary architecture parameter."
+msgstr "Tập tin đầu vào `%s' bỠqua tham số kiến trúc nhị phân."
+
+#: objcopy.c:1520
+#, c-format
+msgid "Unable to recognise the format of the input file `%s'"
+msgstr "Không nhận ra định dạng của tập tin nhập \"%s\""
+
+#: objcopy.c:1523
+#, c-format
+msgid "Output file cannot represent architecture `%s'"
+msgstr "Tập tin kết xuất không tương ứng với kiến trúc `%s'"
+
+#: objcopy.c:1586
+#, c-format
+msgid "warning: file alignment (0x%s) > section alignment (0x%s)"
+msgstr "cảnh báo : sự sắp hàng tập tin (0x%s) > sự sắp hàng phần (0x%s)"
+
+#: objcopy.c:1645
+#, c-format
+msgid "can't add section '%s'"
+msgstr "không thể thêm phần \"%s\""
+
+#: objcopy.c:1659
+#, c-format
+msgid "can't create section `%s'"
+msgstr "không thể tạo phần \"%s\""
+
+#: objcopy.c:1705
+#, c-format
+msgid "cannot create debug link section `%s'"
+msgstr "không thể tạo phần liên kết gỡ lỗi \"%s\""
+
+#: objcopy.c:1798
+msgid "Can't fill gap after section"
+msgstr "Không thể Ä‘iá»n vào khe đằng sau phần"
+
+#: objcopy.c:1822
+msgid "can't add padding"
+msgstr "không thể đệm thêm"
+
+#: objcopy.c:1913
+#, c-format
+msgid "cannot fill debug link section `%s'"
+msgstr "không thể Ä‘iá»n vào phần liên kết gỡ lá»—i \"%s\""
+
+#: objcopy.c:1976
+msgid "error copying private BFD data"
+msgstr "gặp lỗi khi sao chép dữ liệu BFD riêng"
+
+#: objcopy.c:1987
+#, c-format
+msgid "this target does not support %lu alternative machine codes"
+msgstr "đích này không hỗ trợ %lu mã máy xen kẽ"
+
+#: objcopy.c:1991
+msgid "treating that number as an absolute e_machine value instead"
+msgstr "sẽ xử lý con số đó dạng giá trị e_machine tuyệt đối để thay thế"
+
+#: objcopy.c:1995
+msgid "ignoring the alternative value"
+msgstr "sẽ bỠqua giá trị xen kẽ"
+
+#: objcopy.c:2027 objcopy.c:2063
+#, c-format
+msgid "cannot create tempdir for archive copying (error: %s)"
+msgstr "không thể tạo thÆ° mục tạm thá»i để sao chép kho lÆ°u (lá»—i: %s)"
+
+#: objcopy.c:2093
+msgid "Unable to recognise the format of file"
+msgstr "Không nhân ra định dạng của tập tin"
+
+#: objcopy.c:2220
+#, c-format
+msgid "error: the input file '%s' is empty"
+msgstr "lỗi: tập tin nhập vào \"%s\" còn trống"
+
+#: objcopy.c:2364
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "Äã thay đổi nhiá»u lần tên phần %s"
+
+#: objcopy.c:2415
+msgid "error in private header data"
+msgstr "gặp lỗi trong dữ liệu phần đầu riêng"
+
+#: objcopy.c:2493
+msgid "failed to create output section"
+msgstr "lỗi tạo phần kết xuất"
+
+#: objcopy.c:2507
+msgid "failed to set size"
+msgstr "lỗi đặt kích cỡ"
+
+#: objcopy.c:2521
+msgid "failed to set vma"
+msgstr "lỗi đặt vma"
+
+#: objcopy.c:2546
+msgid "failed to set alignment"
+msgstr "lỗi đặt cách chỉnh canh"
+
+#: objcopy.c:2580
+msgid "failed to copy private data"
+msgstr "lỗi sao chép dữ liệu riêng"
+
+#: objcopy.c:2662
+msgid "relocation count is negative"
+msgstr "số đếm định vị lại vẫn là âm"
+
+#. User must pad the section up in order to do this.
+#: objcopy.c:2723
+#, c-format
+msgid "cannot reverse bytes: length of section %s must be evenly divisible by %d"
+msgstr "không thể đảo ngược các byte: chiá»u dài của phần %s phải có thể chia hết Ä‘á»u Ä‘á»u cho %d"
+
+#: objcopy.c:2909
+msgid "can't create debugging section"
+msgstr "không thể tạo phần gỡ lỗi"
+
+#: objcopy.c:2922
+msgid "can't set debugging section contents"
+msgstr "không thể đặt nội dung của phần gỡ lỗi"
+
+#: objcopy.c:2930
+#, c-format
+msgid "don't know how to write debugging information for %s"
+msgstr "không biết cách ghi thông tin gỡ lỗi cho %s"
+
+#: objcopy.c:3073
+msgid "could not create temporary file to hold stripped copy"
+msgstr "không thể tạo tập tin tạm thá»i để chứa bản sao bị tÆ°á»›c"
+
+#: objcopy.c:3145
+#, c-format
+msgid "%s: bad version in PE subsystem"
+msgstr "%s: gặp phiên bản sai trong hệ thống phụ PE"
+
+#: objcopy.c:3175
+#, c-format
+msgid "unknown PE subsystem: %s"
+msgstr "không rõ hệ thống phụ PE: %s"
+
+#: objcopy.c:3237
+msgid "byte number must be non-negative"
+msgstr "số byte phải là khác âm"
+
+#: objcopy.c:3243
+#, c-format
+msgid "architecture %s unknown"
+msgstr "không rõ kiến trúc %s"
+
+#: objcopy.c:3251
+msgid "interleave must be positive"
+msgstr "khoảng chen vào phải là dương"
+
+#: objcopy.c:3260
+msgid "interleave width must be positive"
+msgstr "độ rộng xen kẽ phải là dương"
+
+#: objcopy.c:3280 objcopy.c:3288
+#, c-format
+msgid "%s both copied and removed"
+msgstr "%s cả hai được sao chép và bị gỡ bá»"
+
+#: objcopy.c:3387 objcopy.c:3467 objcopy.c:3575 objcopy.c:3606 objcopy.c:3630
+#: objcopy.c:3634 objcopy.c:3654
+#, c-format
+msgid "bad format for %s"
+msgstr "định dạng sai cho %s"
+
+#: objcopy.c:3399
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "không thể mở : %s: %s"
+
+#: objcopy.c:3544
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "Cảnh báo : Ä‘ang cắt xén khoảng Ä‘iá»n-khe từ 0x%s đến 0x%x"
+
+#: objcopy.c:3705
+#, c-format
+msgid "unknown long section names option '%s'"
+msgstr "không rõ tùy tên phần dài \"%s\""
+
+#: objcopy.c:3723
+msgid "unable to parse alternative machine code"
+msgstr "không thể phân tích cú pháp của mã máy xen kẽ"
+
+#: objcopy.c:3768
+msgid "number of bytes to reverse must be positive and even"
+msgstr "số các byte cần đảo ngược phải là một số dương chẵn"
+
+#: objcopy.c:3771
+#, c-format
+msgid "Warning: ignoring previous --reverse-bytes value of %d"
+msgstr "Cảnh báo : sẽ bỠqua giá trị \"--reverse-bytes\" trước %d"
+
+#: objcopy.c:3786
+#, c-format
+msgid "%s: invalid reserve value for --heap"
+msgstr "%s: sai đặt giá trị giữ lại cho \"--heap\""
+
+#: objcopy.c:3792
+#, c-format
+msgid "%s: invalid commit value for --heap"
+msgstr "%s: sai đặt giá trị gài vào cho \"--heap\""
+
+#: objcopy.c:3817
+#, c-format
+msgid "%s: invalid reserve value for --stack"
+msgstr "%s: sai đặt giá trị giữ lại cho \"--stack\""
+
+#: objcopy.c:3823
+#, c-format
+msgid "%s: invalid commit value for --stack"
+msgstr "%s: sai đặt giá trị gài vào cho \"--stack\""
+
+#: objcopy.c:3852
+msgid "interleave start byte must be set with --byte"
+msgstr "byte bắt đầu khoảng chen vào phải được đặt với tùy --byte"
+
+#: objcopy.c:3855
+msgid "byte number must be less than interleave"
+msgstr "số các byte phải ít hơn khoảng chen vào"
+
+#: objcopy.c:3858
+msgid "interleave width must be less than or equal to interleave - byte`"
+msgstr "độ rộng chen vào phải nhỠhơn hay bằng với số byte chen vào`"
+
+#: objcopy.c:3885
+#, c-format
+msgid "unknown input EFI target: %s"
+msgstr "không rõ đích EFI nhập vào : %s"
+
+#: objcopy.c:3916
+#, c-format
+msgid "unknown output EFI target: %s"
+msgstr "không rõ đích EFI kết xuất : %s"
+
+#: objcopy.c:3929
+#, 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:3941
+#, c-format
+msgid "warning: could not create temporary file whilst copying '%s', (error: %s)"
+msgstr "cảnh báo : không thể tạo tập tin tạm thá»i trong khi sao chép \"%s\" (lá»—i: %s)"
+
+#: objcopy.c:3969 objcopy.c:3983
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s chưa bao giỠdùng"
+
+#: objdump.c:201
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Sá»­ dụng: %s <tùy_chá»n...> <tập_tin...>\n"
+
+#: objdump.c:202
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " Hiển thị thông tin từ các <tập_tin> đối tượng.\n"
+
+#: objdump.c:203
+#, 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:204
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -P, --private=OPT,OPT... Display object format specific contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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[lLiaprmfFsoRt] or\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" 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"
+msgstr ""
+" -a, --archive-headers Hiển thị thông tin vỠcác phần đầu kho\n"
+" -f, --file-headers Hiển thị nội dung của toàn bộ \"phần đầu tập tin\"\n"
+" -p, --private-headers\n"
+" Hiển thị nội dung của phần đầu tập tin đặc trưng cho đối tượng\n"
+"\t\t(các phần đầu riêng)\n"
+" -P, --private=OPT,OPT... Hiển thị nội dung đặc trưng định dạng đối tượng\n"
+" -h, --[section-]headers Hiển thị nội dung của \"các phần đầu của phần\"\n"
+" -x, --all-headers Hiển thị ná»™i dung của \"má»i phần đầu\"\n"
+" -d, --disassemble\n"
+"\t\tHiển thị nội dung của mã của các phần có khả năng thực hiện\n"
+"\t\t(dịch ngược)\n"
+" -D, --disassemble-all Hiển thị ná»™i dung mã được dịch ngược của má»i phần\n"
+"\t\t(dịch ngược hết)\n"
+" -S, --source Trộn lẫn mã \"nguồn\" với việc dịch ngược\n"
+" -s, --full-contents Hiển thị \"ná»™i dung đầy đủ\" của má»i phần đã yêu cầu\n"
+" -g, --debugging Hiển thị thông tin \"gỡ lỗi\" trong tập tin đối tượng\n"
+" -e, --debugging-tags Hiển thị thông tin gỡ lỗi, dùng kiểu dáng ctags\n"
+"\t\t(các thẻ gỡ lỗi)\n"
+" -G, --stabs Hiển thị (dạng thô) thông tin STABS nào trong thông tin\n"
+" -W[lLiaprmfFsoRt] hoặc\n"
+" --dwarf[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Hiển thị thông tin DWARF trong tập tin\n"
+" -t, --syms \t\t\t Hiển thị nội dung của các bảng ký hiệu\n"
+"\t\t(các ký hiệu [viết tắt])\n"
+" -T, --dynamic-syms \t\tHiển thị nội dung của bảng ký hiệu động\n"
+"\t\t(các ký hiệu động [viết tắt])\n"
+" -r, --reloc Hiển thị các mục nhập định vị lại trong tập tin\n"
+"\t\t(định vị lại [viết tắt])\n"
+" -R, --dynamic-reloc 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> Äá»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 định dạng đối tượng và kiến trúc được hỗ trợ\n"
+"\t\t(thông tin [viết tắt])\n"
+" -H, --help Hiển thị \"trợ giúp\" này\n"
+
+#: objdump.c:236
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" Những cái chuyển theo đây vẫn tùy chá»n:\n"
+
+#: objdump.c:237
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -F, --file-offsets Include file offsets when displaying information\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --insn-width=WIDTH Display WIDTH bytes on a single line for -d\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+" --prefix=PREFIX Add PREFIX to absolute paths for -S\n"
+" --prefix-strip=LEVEL Strip initial directory names for -S\n"
+msgstr ""
+" -b, --target=TÊN_BFD Chỉ định định dạng đối tượng đích là TÊN_BFD\n"
+" -m, --architecture=MÃY Ghi rõ kiến trúc đích là MÃY\n"
+" -j, --section=TÊN Hiển thị thông tin chỉ cho phần TÊN\n"
+" -M, --disassembler-options=TÙY_CHỌN\n"
+"\t\tChuyển TÙY_CHỌN qua cho bộ dịch ngược disassembler\n"
+" -EB --endian=big\n"
+"\t\tCoi định dạng tình trạng cuối lớn (big-endian) khi dịch ngược disassembler\n"
+" -EL --endian=little\n"
+"\t\tCoi định dạng tình trạng cuối nhỠ(little-endian) khi dịch ngược disassembler\n"
+" --file-start-context Bao gồm ngữ cảnh từ đầu tập tin (bằng \"-S\")\n"
+" -I, --include=THƯ_MỤC\n"
+"\t\tThêm THƯ_MỤC vào danh sách tìm kiếm tập tin nguồn\n"
+" -l, --line-numbers\n"
+"\t\tGồm các _số thứ tự dòng_ và tên tập tin trong kết xuất\n"
+" -F, --file-offsets Bao gồm các hiệu số tập tin khi hiển thị thông tin\n"
+" -C, --demangle[=KIỂU_DÃNG] giải mã các tên ký hiệu đã rối/xá»­ lý\n"
+"\t\tKIỂU_DÃNG, nếu đã ghi rõ, có thể là:\n"
+"\t\t • auto\t\ttự động\n"
+"\t\t • gnu\n"
+"\t\t • lucid\t\trõ ràng\n"
+"\t\t • arm\n"
+"\t\t • hp\n"
+"\t\t • edg\n"
+"\t\t • gnu-v3\n"
+" \t\t • java\n"
+"\t\t • gnat\n"
+" -w, --wide \t\tÄịnh dạng dữ liệu xuất chiếm hÆ¡n 80 cá»™t\n"
+" -z, --disassemble-zeroes \t\tÄừng nhảy qua khối ố không khi rã\n"
+" --start-address=ÄỊA_CHỈ Xá»­ lý chỉ dữ liệu có địa chỉ ≥ ÄỊA_CHỈ\n"
+" --stop-address=ÄỊA_CHỈ Xá»­ lý chỉ dữ liệu có địa chỉ ≤ ÄỊA_CHỈ\n"
+" --prefix-addresses In ra địa chỉ hoàn toàn địa chỉ khi dịch ngược\n"
+" --[no-]show-raw-insn Hiển thị thập lục phân ở bên việc dịch ngược kiểu ký hiệu\n"
+" --insn-width=RỘNG Hiển thị RỘNG byte trên một dòng đơn cho -d\n"
+" --adjust-vma=HIỆU_Sá»\t\tThêm HIỆU_Sá» vào má»i địa chỉ phần đã hiển thị\n"
+" --special-syms Gồm _các ký hiệu đặc biệt_ trong việc đổ ký hiệu\n"
+" --prefix=TIỀN_Tá» Thêm TIỀN_Tá» này vào Ä‘Æ°á»ng dẫn tÆ°Æ¡ng đối cho \"-S\"\n"
+" --prefix-strip=CẤP Tước tên thư mục đầu tiên cho \"-S\"\n"
+
+#: objdump.c:263
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+"\n"
+msgstr ""
+" --dwarf-depth=N Không hiển thị DIEs ở độ sâu N hay lớn hơn\n"
+" --dwarf-start=N Hiển thị DIEs bắt đầu từ N, ở cùng độ sâu\n"
+" haysâu hơn\n"
+"\n"
+
+#: objdump.c:275
+#, c-format
+msgid ""
+"\n"
+"Options supported for -P/--private switch:\n"
+msgstr ""
+"\n"
+"Các tùy hỗ trợ cho tùy chuyển -P/--private:\n"
+
+#: objdump.c:426
+#, c-format
+msgid "section '%s' mentioned in a -j option, but not found in any input file"
+msgstr "phần '%s' được đỠcập đến trong tùy -j, nhưng lại không tìm thấy trong tập tin đầu vào"
+
+#: objdump.c:530
+#, c-format
+msgid "Sections:\n"
+msgstr "Phần:\n"
+
+#: objdump.c:533 objdump.c:537
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Tên Cỡ VMA LMA Tập tin ra Canh"
+
+#: objdump.c:539
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "Idx Tên Cỡ VMA LMA Tập tin ra Canh"
+
+#: objdump.c:543
+#, c-format
+msgid " Flags"
+msgstr " Cá»"
+
+#: objdump.c:586
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s không phải là môt đối tượng động"
+
+#: objdump.c:1012 objdump.c:1036
+#, c-format
+msgid " (File Offset: 0x%lx)"
+msgstr " (Bù tập tin: 0x%lx)"
+
+#: objdump.c:1662
+#, c-format
+msgid "disassemble_fn returned length %d"
+msgstr "disassemble_fn trả vỠđộ dài %d"
+
+#: objdump.c:1967
+#, c-format
+msgid ""
+"\n"
+"Disassembly of section %s:\n"
+msgstr ""
+"\n"
+"Việc rã phần %s:\n"
+
+#: objdump.c:2143
+#, c-format
+msgid "can't use supplied machine %s"
+msgstr "không thể sử dụng máy đã áp dụng %s"
+
+#: objdump.c:2162
+#, c-format
+msgid "can't disassemble for architecture %s\n"
+msgstr "không thể địch ngược mã (disassemble) cho kiến trúc %s\n"
+
+#: objdump.c:2242 objdump.c:2265
+#, 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:2406
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"Không có phần %s ở\n"
+"\n"
+
+#: objdump.c:2415
+#, c-format
+msgid "reading %s section of %s failed: %s"
+msgstr "Ä‘á»c phần %s của %s gặp lá»—i: %s"
+
+#: objdump.c:2459
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"Nội dung của phần %s\n"
+"\n"
+
+#: objdump.c:2590
+#, c-format
+msgid "architecture: %s, "
+msgstr "kiến trúc: %s, "
+
+#: objdump.c:2593
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "cá» 0x%08x:\n"
+
+#: objdump.c:2607
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"địa chỉ đầu 0x"
+
+#: objdump.c:2633
+msgid "option -P/--private not supported by this file"
+msgstr "tùy -P/--private không được hỗ trợ bởi tập tin này"
+
+#: objdump.c:2657
+#, c-format
+msgid "target specific dump '%s' not supported"
+msgstr "đích đã chỉ định đổ đống '%s' không được hỗ trợ"
+
+#: objdump.c:2721
+#, c-format
+msgid "Contents of section %s:"
+msgstr "Nội dung của phần %s:"
+
+#: objdump.c:2723
+#, c-format
+msgid " (Starting at file offset: 0x%lx)"
+msgstr " (Bắt đầu ở khoảng bù tập tin: 0x%lx)"
+
+#: objdump.c:2729
+msgid "Reading section failed"
+msgstr "Äá»c phần (section) gặp lá»—i"
+
+#: objdump.c:2832
+#, c-format
+msgid "no symbols\n"
+msgstr "không có ký hiệu\n"
+
+#: objdump.c:2839
+#, 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:2842
+#, 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:3163
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: định dạng tập tin %s\n"
+
+#: objdump.c:3223
+#, 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:3327
+#, c-format
+msgid "In archive %s:\n"
+msgstr "Trong kho lÆ°u %s\n"
+
+#: objdump.c:3438
+msgid "error: the start address should be before the end address"
+msgstr "lỗi: địa chỉ đầu nên nằm trước địa chỉ cuối"
+
+#: objdump.c:3443
+msgid "error: the stop address should be after the start address"
+msgstr "lỗi: địa chỉ cuối nên nằm sau địa chỉ đầu"
+
+#: objdump.c:3455
+msgid "error: prefix strip must be non-negative"
+msgstr "lá»—i: việc tÆ°á»›c tiá»n tố phải khác âm"
+
+#: objdump.c:3460
+msgid "error: instruction width must be positive"
+msgstr "lá»—i: chiá»u dài chỉ dẫn phải là dÆ°Æ¡ng"
+
+#: objdump.c:3469
+msgid "unrecognized -E option"
+msgstr "không nhận ra tùy chá»n \"-E\""
+
+#: objdump.c:3480
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "không nhận ra kiểu tình trạng cuối (endian) \"%s\""
+
+#: od-xcoff.c:75
+#, c-format
+msgid ""
+"For XCOFF files:\n"
+" header Display the file header\n"
+" aout Display the auxiliary header\n"
+" sections Display the section headers\n"
+" syms Display the symbols table\n"
+" relocs Display the relocation entries\n"
+" lineno Display the line number entries\n"
+" loader Display loader section\n"
+" except Display exception table\n"
+" typchk Display type-check section\n"
+" traceback Display traceback tags\n"
+" toc Display toc symbols\n"
+msgstr ""
+"Cho các tập tin XCOFF:\n"
+" header Hiển thị phần đầu tập tin\n"
+" aout Hiển thị phần đầu auxiliary\n"
+" sections Hiển thị phần chương\n"
+" syms Hiển thị bảng ký hiệu\n"
+" relocs Hiển thị mục tái định vị\n"
+" lineno Hiển thị mục số dòng\n"
+" loader Hiển thị chương tải\n"
+" except Hiển thị bảng ngoại lệ\n"
+" typchk Hiển thị chương kiểm-tra-kiểu\n"
+" traceback Hiển thị thẻ traceback\n"
+" toc Hiển thị mục lục (toc) ký hiệu\n"
+
+#: od-xcoff.c:416
+#, c-format
+msgid " nbr sections: %d\n"
+msgstr " các đoạn nbr: %d\n"
+
+#: od-xcoff.c:417
+#, c-format
+msgid " time and date: 0x%08x - "
+msgstr " thá»i gian và ngày tháng: 0x%08x - "
+
+#: od-xcoff.c:419
+#, c-format
+msgid "not set\n"
+msgstr "chưa đặt\n"
+
+#: od-xcoff.c:426
+#, c-format
+msgid " symbols off: 0x%08x\n"
+msgstr " symbols off: 0x%08x\n"
+
+#: od-xcoff.c:427
+#, c-format
+msgid " nbr symbols: %d\n"
+msgstr " các ký hiệu nbr: %d\n"
+
+#: od-xcoff.c:428
+#, c-format
+msgid " opt hdr sz: %d\n"
+msgstr " opt hdr sz: %d\n"
+
+#: od-xcoff.c:429
+#, c-format
+msgid " flags: 0x%04x "
+msgstr " các cá»: 0x%04x "
+
+#: od-xcoff.c:443
+#, c-format
+msgid "Auxiliary header:\n"
+msgstr "Phần đầu bổ trợ:\n"
+
+#: od-xcoff.c:446
+#, c-format
+msgid " No aux header\n"
+msgstr " Không phần đầu aux\n"
+
+#: od-xcoff.c:451
+#, c-format
+msgid "warning: optionnal header size too large (> %d)\n"
+msgstr "cảnh báo: độ dài phần đầu tùy quá lớn (> %d)\n"
+
+#: od-xcoff.c:457
+msgid "cannot read auxhdr"
+msgstr "không Ä‘á»c được auxhdr"
+
+#: od-xcoff.c:522
+#, c-format
+msgid "Section headers (at %u+%u=0x%08x to 0x%08x):\n"
+msgstr "Phần đầu đoạn (tại vị trí %u+%u=0x%08x đến 0x%08x):\n"
+
+#: od-xcoff.c:527
+#, c-format
+msgid " No section header\n"
+msgstr " Không phần đầu đoạn\n"
+
+#: od-xcoff.c:532 od-xcoff.c:544 od-xcoff.c:599
+msgid "cannot read section header"
+msgstr "không thể Ä‘á»c phần đầu của phần"
+
+#: od-xcoff.c:558
+#, c-format
+msgid " Flags: %08x "
+msgstr " Các cá»: %08x "
+
+#: od-xcoff.c:566
+#, c-format
+msgid "overflow - nreloc: %u, nlnno: %u\n"
+msgstr "tràn - nreloc: %u, nlnno: %u\n"
+
+#: od-xcoff.c:587 od-xcoff.c:922 od-xcoff.c:978
+msgid "cannot read section headers"
+msgstr "lá»—i Ä‘á»c các phần đầu của phần"
+
+#: od-xcoff.c:646
+msgid "cannot read strings table length"
+msgstr "không Ä‘á»c được Ä‘á»™ dài bảng các chuá»—i"
+
+#: od-xcoff.c:662
+msgid "cannot read strings table"
+msgstr "không Ä‘á»c được bảng các chuá»—i"
+
+#: od-xcoff.c:670
+msgid "cannot read symbol table"
+msgstr "không Ä‘á»c được bảng ký hiệu"
+
+#: od-xcoff.c:685
+msgid "cannot read symbol entry"
+msgstr "không thể Ä‘á»c mục ký hiệu"
+
+#: od-xcoff.c:720
+msgid "cannot read symbol aux entry"
+msgstr "không thể Ä‘á»c mục ký hiệu aux"
+
+#: od-xcoff.c:742
+#, c-format
+msgid "Symbols table (strtable at 0x%08x)"
+msgstr "Bảng ký hiệu (strtable at 0x%08x)"
+
+#: od-xcoff.c:747
+#, c-format
+msgid ""
+":\n"
+" No symbols\n"
+msgstr ""
+":\n"
+" Không có ký hiệu\n"
+
+#: od-xcoff.c:753
+#, c-format
+msgid " (no strings):\n"
+msgstr " (không có chuỗi):\n"
+
+#: od-xcoff.c:755
+#, c-format
+msgid " (strings size: %08x):\n"
+msgstr " (kích thước chuỗi: %08x):\n"
+
+#. Translators: 'sc' is for storage class, 'off' for offset.
+#: od-xcoff.c:769
+#, c-format
+msgid " # sc value section type aux name/off\n"
+msgstr " # sc giá trị phần kiểu aux tên/off\n"
+
+#. Section length, number of relocs and line number.
+#: od-xcoff.c:821
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u nlinno: %-6u\n"
+
+#. Section length and number of relocs.
+#: od-xcoff.c:828
+#, c-format
+msgid " scnlen: %08x nreloc: %-6u\n"
+msgstr " scnlen: %08x nreloc: %-6u\n"
+
+#: od-xcoff.c:891
+#, c-format
+msgid "offset: %08x"
+msgstr "khoảng bù (offset): %08x"
+
+#: od-xcoff.c:934
+#, c-format
+msgid "Relocations for %s (%u)\n"
+msgstr "Xây dựng lại cho %s (%u)\n"
+
+#: od-xcoff.c:937
+msgid "cannot read relocations"
+msgstr "không Ä‘á»c được thông tin xây dá»±ng lại"
+
+#: od-xcoff.c:950
+msgid "cannot read relocation entry"
+msgstr "không thể Ä‘á»c mục của thông tin xây dá»±ng lại"
+
+#: od-xcoff.c:990
+#, c-format
+msgid "Line numbers for %s (%u)\n"
+msgstr "Số của dòng cho %s (%u)\n"
+
+#: od-xcoff.c:993
+msgid "cannot read line numbers"
+msgstr "không thể Ä‘á»c được số dòng"
+
+#. Line number, symbol index and physical address.
+#: od-xcoff.c:997
+#, c-format
+msgid "lineno symndx/paddr\n"
+msgstr "lineno symndx/paddr\n"
+
+#: od-xcoff.c:1005
+msgid "cannot read line number entry"
+msgstr "không thể Ä‘á»c mục số của dòng"
+
+#: od-xcoff.c:1048
+#, c-format
+msgid "no .loader section in file\n"
+msgstr "không có phần .loader trong tập tin\n"
+
+#: od-xcoff.c:1054
+#, c-format
+msgid "section .loader is too short\n"
+msgstr "phần .loader quá ngắn\n"
+
+#: od-xcoff.c:1061
+#, c-format
+msgid "Loader header:\n"
+msgstr "Phần đầu bộ tải:\n"
+
+#: od-xcoff.c:1063
+#, c-format
+msgid " version: %u\n"
+msgstr " phiên bản: %u\n"
+
+#: od-xcoff.c:1066
+#, c-format
+msgid " Unhandled version\n"
+msgstr " Phiên bản không nắm được\n"
+
+#: od-xcoff.c:1071
+#, c-format
+msgid " nbr symbols: %u\n"
+msgstr " ký hiệu nbr: %u\n"
+
+#: od-xcoff.c:1073
+#, c-format
+msgid " nbr relocs: %u\n"
+msgstr " nbr relocs: %u\n"
+
+#. Import string table length.
+#: od-xcoff.c:1075
+#, c-format
+msgid " import strtab len: %u\n"
+msgstr " nhập vào độ dài strtab: %u\n"
+
+#: od-xcoff.c:1078
+#, c-format
+msgid " nbr import files: %u\n"
+msgstr " các tập tin nhập nbr: %u\n"
+
+#: od-xcoff.c:1080
+#, c-format
+msgid " import file off: %u\n"
+msgstr " tắt nhập khẩu tập tin: %u\n"
+
+#: od-xcoff.c:1082
+#, c-format
+msgid " string table len: %u\n"
+msgstr " độ dài bảng chuỗi: %u\n"
+
+#: od-xcoff.c:1084
+#, c-format
+msgid " string table off: %u\n"
+msgstr " tắt bảng chuỗi: %u\n"
+
+#: od-xcoff.c:1087
+#, c-format
+msgid "Dynamic symbols:\n"
+msgstr "Các ký hiệu động:\n"
+
+#: od-xcoff.c:1094
+#, c-format
+msgid " %4u %08x %3u "
+msgstr " %4u %08x %3u "
+
+#: od-xcoff.c:1107
+#, c-format
+msgid " %3u %3u "
+msgstr " %3u %3u "
+
+#: od-xcoff.c:1116
+#, c-format
+msgid "(bad offset: %u)"
+msgstr "(khoảng bù (offset) sai: %u)"
+
+#: od-xcoff.c:1123
+#, c-format
+msgid "Dynamic relocs:\n"
+msgstr "relocs Ä‘á»™ng:\n"
+
+#: od-xcoff.c:1163
+#, c-format
+msgid "Import files:\n"
+msgstr "Nhập các tập tin:\n"
+
+#: od-xcoff.c:1195
+#, c-format
+msgid "no .except section in file\n"
+msgstr "không có phần .except trong tập tin\n"
+
+#: od-xcoff.c:1203
+#, c-format
+msgid "Exception table:\n"
+msgstr "Bảng ngoại lệ:\n"
+
+#: od-xcoff.c:1238
+#, c-format
+msgid "no .typchk section in file\n"
+msgstr "không có phần .typchk trong tập tin\n"
+
+#: od-xcoff.c:1245
+#, c-format
+msgid "Type-check section:\n"
+msgstr "Phần kiểm-tra-kiểu:\n"
+
+#: od-xcoff.c:1292
+#, c-format
+msgid " address beyond section size\n"
+msgstr " địa chỉ vượt quá kích cỡ phần\n"
+
+#: od-xcoff.c:1302
+#, c-format
+msgid " tags at %08x\n"
+msgstr " các thẻ tại %08x\n"
+
+#: od-xcoff.c:1380
+#, c-format
+msgid " number of CTL anchors: %u\n"
+msgstr " số của các điểm neo CTL: %u\n"
+
+#: od-xcoff.c:1399
+#, c-format
+msgid " Name (len: %u): "
+msgstr " Tên (dài: %u): "
+
+#: od-xcoff.c:1402
+#, c-format
+msgid "[truncated]\n"
+msgstr "[bị cắt ngắn]\n"
+
+#: od-xcoff.c:1421
+#, c-format
+msgid " (end of tags at %08x)\n"
+msgstr " (cuối thẻ tại %08x)\n"
+
+#: od-xcoff.c:1424
+#, c-format
+msgid " no tags found\n"
+msgstr "không tìm thấy thẻ nào\n"
+
+#: od-xcoff.c:1428
+#, c-format
+msgid " Truncated .text section\n"
+msgstr "Phần \".text\" (văn bản) bị cắt cụt\n"
+
+#: od-xcoff.c:1513
+#, c-format
+msgid "TOC:\n"
+msgstr "Mục Lục (TOC):\n"
+
+#: od-xcoff.c:1556
+#, c-format
+msgid "Nbr entries: %-8u Size: %08x (%u)\n"
+msgstr "Mục Nbr: %-8u Kích thước: %08x (%u)\n"
+
+#: od-xcoff.c:1640
+msgid "cannot read header"
+msgstr "không thể Ä‘á»c phần đầu"
+
+#: od-xcoff.c:1648
+#, c-format
+msgid "File header:\n"
+msgstr "Äầu tập tin:\n"
+
+#: od-xcoff.c:1649
+#, c-format
+msgid " magic: 0x%04x (0%04o) "
+msgstr " số mầu nhiệm: 0x%04x (0%04o) "
+
+#: od-xcoff.c:1653
+#, c-format
+msgid "(WRMAGIC: writable text segments)"
+msgstr "(WRMAGIC: đoạn nhớ có thể ghi chữ được)"
+
+#: od-xcoff.c:1656
+#, c-format
+msgid "(ROMAGIC: readonly sharablee text segments)"
+msgstr "(ROMAGIC: các Ä‘oan sharablee text chỉ cho Ä‘á»c)"
+
+#: od-xcoff.c:1659
+#, c-format
+msgid "(TOCMAGIC: readonly text segments and TOC)"
+msgstr "(TOCMAGIC: Ä‘oạn chữ và MỤC-LỤC (TOC) chỉ cho Ä‘á»c)"
+
+#: od-xcoff.c:1662
+#, c-format
+msgid "unknown magic"
+msgstr "không hiểu số mầu nhiệm"
+
+#: od-xcoff.c:1669
+#, c-format
+msgid " Unhandled magic\n"
+msgstr " Không nắm được số mầu nhiệm\n"
+
+#: rclex.c:197
+msgid "invalid value specified for pragma code_page.\n"
+msgstr "giá trị không hợp lệ được chỉ định cho lệnh mã nguồn Ä‘iá»u khiển trình biên dịch \"code_page\" (trang mã).\n"
+
+#: rdcoff.c:198
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type: (phân tách kiểu coff) Mã kiểu sai 0x%x"
+
+#: rdcoff.c:406 rdcoff.c:511 rdcoff.c:699
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "\"bfd_coff_get_syment\" bị lỗi: %s"
+
+#: rdcoff.c:422 rdcoff.c:719
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "\"bfd_coff_get_auxent\" bị lỗi: %s"
+
+#: rdcoff.c:786
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: \".bf\" không có hàm đi trước"
+
+#: rdcoff.c:836
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld: \".ef\" bất thÆ°á»ng\n"
+
+#: rddbg.c:88
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s: không có thông tin gỡ lỗi đã nhận ra"
+
+#: rddbg.c:402
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "Những mục stabs cuối cùng được nhập vào trước khi gặp lỗi:\n"
+
+#: readelf.c:268
+msgid "<none>"
+msgstr "<không>"
+
+#: readelf.c:269
+msgid "<no-name>"
+msgstr "<không-tên>"
+
+#: readelf.c:270 readelf.c:5083 readelf.c:5594 readelf.c:8132 readelf.c:8250
+#: readelf.c:9233 readelf.c:9327 readelf.c:9388 readelf.c:12391
+#: readelf.c:12394
+msgid "<corrupt>"
+msgstr "<hÆ° há»ng>"
+
+#: readelf.c:309
+#, c-format
+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:324
+#, c-format
+msgid "Out of memory allocating 0x%lx bytes for %s\n"
+msgstr "Không đủ bộ nhớ khi cấp phát 0x%lx byte cho %s\n"
+
+#: readelf.c:334
+#, c-format
+msgid "Unable to read in 0x%lx bytes of %s\n"
+msgstr "Không thể Ä‘á»c vào 0x%lx byte của %s\n"
+
+#: readelf.c:638
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "Không rõ vỠviệc định vị lại trên kiến trúc máy này\n"
+
+#: readelf.c:659 readelf.c:757
+msgid "32-bit relocation data"
+msgstr "Phân bổ động dữ liệu 32-bit"
+
+#: readelf.c:671 readelf.c:701 readelf.c:768 readelf.c:797
+msgid "out of memory parsing relocs\n"
+msgstr "không đủ bộ nhớ khi phân tích cú pháp của các việc định vị lại\n"
+
+#: readelf.c:689 readelf.c:786
+msgid "64-bit relocation data"
+msgstr "Phân bổ động dữ liệu 64-bit"
+
+#: readelf.c:902
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr " Bù Tin Kiểu Giá trị ký hiệu Tên ký hiệu + gì thêm\n"
+
+#: readelf.c:904
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr " Bù Tin Kiểu Giá trị ký hiệu Tên ký hiệu + gì thêm\n"
+
+#: readelf.c:909
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " Bù Tin Kiểu Giá trị ký hiệu Tên ký hiệu\n"
+
+#: readelf.c:911
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " Bù Tin Kiểu Giá trị ký hiệu Tên ký hiệu\n"
+
+#: readelf.c:919
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr " Bù Tin Kiểu Giá trị ký hiệu Tên ký hiệu + Phần cộng\n"
+
+#: readelf.c:921
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr " Bù Tin Kiểu Giá trị ký hiệu Tên ký hiệu + Phần cộng\n"
+
+#: readelf.c:926
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr " Bù Tin Kiểu Giá trị ký hiệu Tên ký hiệu\n"
+
+#: readelf.c:928
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr " Bù Tin Kiểu Giá trị ký hiệu Tên ký hiệu\n"
+
+#: readelf.c:1245 readelf.c:1405 readelf.c:1413
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "không nhận ra: %-7lx"
+
+#: readelf.c:1270
+#, c-format
+msgid "<unknown addend: %lx>"
+msgstr "<không rõ phần cộng: %lx>"
+
+#: readelf.c:1277
+#, c-format
+msgid " bad symbol index: %08lx"
+msgstr " chỉ mục ký hiệu sai: %08lx"
+
+#: readelf.c:1363
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr "<chỉ mục bảng chuỗi: %3ld>"
+
+#: readelf.c:1365
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<chỉ mục bảng chuá»—i bị há»ng: %3ld>"
+
+#: readelf.c:1758
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "Äặc trÆ°ng cho bá»™ xá»­ lý: %lx"
+
+#: readelf.c:1782
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "Äặc trÆ°ng cho Hệ Ä‘iá»u hành: %lx"
+
+#: readelf.c:1786 readelf.c:2858
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<không rõ>: %lx"
+
+#: readelf.c:1799
+msgid "NONE (None)"
+msgstr "NONE (Không có)"
+
+#: readelf.c:1800
+msgid "REL (Relocatable file)"
+msgstr "REL (Tập tin có thể định vị lại)"
+
+#: readelf.c:1801
+msgid "EXEC (Executable file)"
+msgstr "EXEC (Tập tin có thể thực hiện)"
+
+#: readelf.c:1802
+msgid "DYN (Shared object file)"
+msgstr "DYN (Tập tin đối tượng dùng chung)"
+
+#: readelf.c:1803
+msgid "CORE (Core file)"
+msgstr "CORE (Tập tin lõi)"
+
+#: readelf.c:1807
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "Äặc trÆ°ng cho bá»™ xá»­ lý: (%x)"
+
+#: readelf.c:1809
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "Äặc trÆ°ng cho HÄH: (%x)"
+
+#: readelf.c:1811
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<không rõ>: %x"
+
+#: readelf.c:1823
+msgid "None"
+msgstr "Không có"
+
+#: readelf.c:1994
+#, c-format
+msgid "<unknown>: 0x%x"
+msgstr "<không rõ>: 0x%x"
+
+#: readelf.c:2180
+msgid ", <unknown>"
+msgstr ", <không rõ>"
+
+#: readelf.c:2266 readelf.c:7485
+msgid "unknown"
+msgstr "không rõ"
+
+#: readelf.c:2267
+msgid "unknown mac"
+msgstr "không rõ mac"
+
+#: readelf.c:2331
+msgid ", relocatable"
+msgstr ", relocatable (có thể tái định vị được)"
+
+#: readelf.c:2334
+msgid ", relocatable-lib"
+msgstr ", thư viện relocatable-lib (có thể tái định vị được)"
+
+#: readelf.c:2357
+msgid ", unknown v850 architecture variant"
+msgstr ", không hiểu biến thể kiến trúc v850"
+
+#: readelf.c:2414
+msgid ", unknown CPU"
+msgstr ", không rõ kiến trúc CPU"
+
+#: readelf.c:2429
+msgid ", unknown ABI"
+msgstr ", không hiểu ABI"
+
+#: readelf.c:2452 readelf.c:2486
+msgid ", unknown ISA"
+msgstr ", không hiểu ISA"
+
+#: readelf.c:2663
+msgid "Standalone App"
+msgstr "Ứng dụng Äá»™c lập"
+
+#: readelf.c:2672
+msgid "Bare-metal C6000"
+msgstr "Bare-metal C6000"
+
+#: readelf.c:2682 readelf.c:3471 readelf.c:3487
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<không rõ : %x>"
+
+#. This message is probably going to be displayed in a 15
+#. character wide field, so put the hex value first.
+#: readelf.c:3108
+#, c-format
+msgid "%08x: <unknown>"
+msgstr "%08x: <không rõ>"
+
+#: readelf.c:3163
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Sá»­ dụng: readelf <tùy_chá»n...> tập_tin_elf...\n"
+
+#: readelf.c:3164
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr " Hiển thị thông tin vỠnội dung của tập tin định dạng ELF\n"
+
+#: readelf.c:3165
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -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"
+" --dyn-syms Display the dynamic symbol table\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -c --archive-index Display the symbol/file index in an archive\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number|name>\n"
+" Dump the contents of section <number|name> as bytes\n"
+" -p --string-dump=<number|name>\n"
+" Dump the contents of section <number|name> as strings\n"
+" -R --relocated-dump=<number|name>\n"
+" Dump the contents of section <number|name> as relocated bytes\n"
+" -w[lLiaprmfFsoRt] or\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" Tùy chá»n:\n"
+" -a --all \t\t\t\t\tTÆ°Æ¡ng Ä‘Æ°Æ¡ng vá»›i: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header \t\t\t\tHiển thị đầu tập tin ELF\n"
+" -l --program-headers \t\tHiển thị phần đầu chương trình\n"
+" --segments \t\t\tBí danh cho \"--program-headers\"\n"
+" -S --section-headers \t\t\tHiển thị đầu của các phần\n"
+" --sections \t\t\tBí danh \"--section-headers\"\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\tTÆ°Æ¡ng Ä‘Æ°Æ¡ng vá»›i: -h -l -S\n"
+" -s --syms \t\t\tHiển thị bảng ký hiệu\n"
+" --symbols \t\t\tBí danh cho \"--syms\"\n"
+" --dyn-syms Hiển thị bảng ký hiệu năng động\n"
+" -n --notes \t\t\tHiển thị các ghi chú lõi (nếu có)\n"
+" -r --relocs \t\tHiển thị các việc định vị lại (nếu có)\n"
+" -u --unwind \t\tHiển thị thông tin tháo ra (nếu có)\n"
+" -d --dynamic \t\tHiển thị phần động (nếu có)\n"
+" -V --version-info \t\tHiển thị các phần phiên bản (nếu có)\n"
+" -A --arch-specific Hiển thị thông tin đặc trưng cho kiến trúc (nếu có)\n"
+" -c --archive-index Hiển thị chỉ mục ký hiệu/tập tin trong một kho\n"
+" -D --use-dynamic Dùng thông tin phần động khi hiển thị ký hiệu\n"
+" -x --hex-dump=<số|tên>\n"
+" Äổ ná»™i dung của phần <số|tên> (dạng byte)\n"
+" -p --string-dump=<số|tên>\n"
+" Äổ ná»™i dung của phần <số|tên> (dạng chuá»—i)\n"
+" -R --relocated-dump=<số|tên>\n"
+" Äổ ná»™i dung của phần <số|tên> (dạng byte đã định vị lại)\n"
+" -w[lLiaprmfFsoRt] hay\n"
+" --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n"
+" =frames-interp,=str,=loc,=Ranges,=pubtypes,\n"
+" =gdb_index,=trace_info,=trace_abbrev,=trace_aranges]\n"
+" Hiển thị nội dung của chương gỡ lỗi DWARF2\n"
+" • rawline\t\tdòng thô\n"
+" • decodeline\t\tgiải mã dòng\n"
+" • info\t\t\tthông tin\n"
+" • abbrev\t\t\tviết tắt\n"
+" • pubnames\t\txuất các tên\n"
+" • aranges\t\ta các phạm vi\n"
+" • macro\t\t\tvĩ lệnh\n"
+" • frames\t\t\tcác khung\n"
+" • str\t\t\tchuỗi\n"
+" • loc\t\t\tđịnh vị\n"
+" • Ranges\t\tcác phạm vi\n"
+
+#: readelf.c:3197
+#, c-format
+msgid ""
+" --dwarf-depth=N Do not display DIEs at depth N or greater\n"
+" --dwarf-start=N Display DIEs starting with N, at the same depth\n"
+" or deeper\n"
+msgstr ""
+" --dwarf-depth=N Không hiển thị DIEs ở độ sâu N hay lớn hơn\n"
+" --dwarf-start=N Hiển thị DIEs bắt đầu từ N, ở cùng độ sâu hay\n"
+" sâu hơn\n"
+
+#: readelf.c:3202
+#, c-format
+msgid ""
+" -i --instruction-dump=<number|name>\n"
+" Disassemble the contents of section <number|name>\n"
+msgstr ""
+" -i --instruction-dump=<số|tên>\n"
+" Tháo ra nội dung của phần <số|tên>\n"
+
+#: readelf.c:3206
+#, 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 chiá»u 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ày\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:3235 readelf.c:3264 readelf.c:3268 readelf.c:13623
+msgid "Out of memory allocating dump request table.\n"
+msgstr "Không đủ bộ nhớ khi cấp phát bảng yêu cầu đổ.\n"
+
+#: readelf.c:3440
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "Tùy chá»n không hợp lệ \"-%c\"\n"
+
+#: readelf.c:3455
+msgid "Nothing to do.\n"
+msgstr "Không có gì cần làm.\n"
+
+#: readelf.c:3467 readelf.c:3483 readelf.c:8068
+msgid "none"
+msgstr "không có"
+
+#: readelf.c:3484
+msgid "2's complement, little endian"
+msgstr "phần bù của 2, tình trạng cuối nhá»"
+
+#: readelf.c:3485
+msgid "2's complement, big endian"
+msgstr "phần bù của 2, tình trạng cuối lớn"
+
+#: readelf.c:3503
+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:3513
+#, c-format
+msgid "ELF Header:\n"
+msgstr "Dòng đầu ELF:\n"
+
+#: readelf.c:3514
+#, c-format
+msgid " Magic: "
+msgstr " Ma thuật: "
+
+#: readelf.c:3518
+#, c-format
+msgid " Class: %s\n"
+msgstr " Hạng: %s\n"
+
+#: readelf.c:3520
+#, c-format
+msgid " Data: %s\n"
+msgstr " Dữ liệu: %s\n"
+
+#: readelf.c:3522
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " Phiên bản: %d %s\n"
+
+#: readelf.c:3527
+#, c-format
+msgid "<unknown: %lx>"
+msgstr "<không rõ: %lx>"
+
+#: readelf.c:3529
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS/ABI: %s\n"
+
+#: readelf.c:3531
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " Phiên bản ABI: %d\n"
+
+#: readelf.c:3533
+#, c-format
+msgid " Type: %s\n"
+msgstr " Kiểu : %s\n"
+
+#: readelf.c:3535
+#, c-format
+msgid " Machine: %s\n"
+msgstr " Máy: %s\n"
+
+#: readelf.c:3537
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " Phiên bản: 0x%lx\n"
+
+#: readelf.c:3540
+#, c-format
+msgid " Entry point address: "
+msgstr " Äịa chỉ Ä‘iểm vào : "
+
+#: readelf.c:3542
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" Äầu các dòng đầu chÆ°Æ¡ng trình: "
+
+#: readelf.c:3544
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (byte vào tập tin)\n"
+" Äầu các dòng đầu phần: "
+
+#: readelf.c:3546
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (byte vào tập tin)\n"
+
+#: readelf.c:3548
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " Cá» : 0x%lx%s\n"
+
+#: readelf.c:3551
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " Kích cỡ phần này: %ld (byte)\n"
+
+#: readelf.c:3553
+#, 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:3555
+#, c-format
+msgid " Number of program headers: %ld"
+msgstr " Số các dòng đầu phần chương trình: %ld"
+
+#: readelf.c:3562
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " Cỡ các dòng đầu phần: %ld (byte)\n"
+
+#: readelf.c:3564
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " Số các dòng đầu phần: %ld"
+
+#: readelf.c:3569
+#, 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:3576
+#, c-format
+msgid " <corrupt: out of range>"
+msgstr "<hÆ° há»ng: nằm ngoài phạm vi>"
+
+#: readelf.c:3610 readelf.c:3644
+msgid "program headers"
+msgstr "các dòng đầu chương trình"
+
+#: readelf.c:3711
+msgid "possibly corrupt ELF header - it has a non-zero program header offset, but no program headers"
+msgstr "gần nhÆ° chắc chắn là phần đầu ELF sai há»ngr - nó có khoảng bù phần đầu chÆ°Æ¡ng trình khác không, nhÆ°ng lại không có các phần đầu chÆ°Æ¡ng trình"
+
+#: readelf.c:3714
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"Không có dòng đầu chương trình trong tập tin này.\n"
+
+#: readelf.c:3720
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Kiểu tập tin Elf là %s\n"
+
+#: readelf.c:3721
+#, c-format
+msgid "Entry point "
+msgstr "Äiểm vào "
+
+#: readelf.c:3723
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"Có %d dòng đầu chương trình, bắt đầu tại khoảng bù"
+
+#: readelf.c:3735 readelf.c:3737
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"Dòng đầu chương trình:\n"
+
+#: readelf.c:3741
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Kiểu Bù Äịa Chỉ Ảo Äịa Chỉ Vật lý CỡTập CỡNhá»› Cá» Canh\n"
+
+#: readelf.c:3744
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " Kiểu Bù Äịa Chỉ Ảo Äịa Chỉ Vật lý CỡTập CỡNhá»› Cá» Canh\n"
+
+#: readelf.c:3748
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " Kiểu Bù Äịa Chỉ Ảo Äịa Chỉ Vật lý\n"
+
+#: readelf.c:3750
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " CỡTập CỡNhớ CỠCanh\n"
+
+#: readelf.c:3843
+msgid "more than one dynamic segment\n"
+msgstr "hơn một phân đoạn động\n"
+
+#: readelf.c:3862
+msgid "no .dynamic section in the dynamic segment\n"
+msgstr "không có phần \".dynamic\" (động) trong phân đoạn động\n"
+
+#: readelf.c:3877
+msgid "the .dynamic section is not contained within the dynamic segment\n"
+msgstr "phần \".dynamic\" (động) không nằm bên trong phân đoạn động\n"
+
+#: readelf.c:3880
+msgid "the .dynamic section is not the first section in the dynamic segment.\n"
+msgstr "phần \".dynamic\" (động) không phải là phần thứ nhất trong phân đoạn động.\n"
+
+#: readelf.c:3888
+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:3895
+msgid "Internal error: failed to create format string to display program interpreter\n"
+msgstr "Lỗi nội bộ : không tạo được chuỗi định dạng để hiển thị bộ giải thích chương trình\n"
+
+#: readelf.c:3899
+msgid "Unable to read program interpreter name\n"
+msgstr "Không thể Ä‘á»c tên của bá»™ giải dịch chÆ°Æ¡ng trình\n"
+
+#: readelf.c:3902
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [Äang yêu cầu bá»™ giải dịch chÆ°Æ¡ng trình: %s]"
+
+#: readelf.c:3914
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" Ãnh xạ Phần đến Phân Ä‘oạn:\n"
+
+#: readelf.c:3915
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " Các phần phân đoạn...\n"
+
+#: readelf.c:3951
+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:3967
+#, 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"
+
+#: readelf.c:3982 readelf.c:4025
+msgid "section headers"
+msgstr "dòng đầu phần"
+
+#: readelf.c:4074 readelf.c:4154
+msgid "sh_entsize is zero\n"
+msgstr "sh_entsize là số không\n"
+
+#: readelf.c:4082 readelf.c:4162
+msgid "Invalid sh_entsize\n"
+msgstr "sh_entsize không hợp lệ\n"
+
+#: readelf.c:4087 readelf.c:4167
+msgid "symbols"
+msgstr "ký hiệu"
+
+#: readelf.c:4099 readelf.c:4178
+msgid "symbol table section indicies"
+msgstr "các chỉ số của phần bảng ký hiệu"
+
+#: readelf.c:4439
+#, c-format
+msgid "UNKNOWN (%*.*lx)"
+msgstr "KHÔNG RÕ (%*.*lx)"
+
+#: readelf.c:4461
+msgid "possibly corrupt ELF file header - it has a non-zero section header offset, but no section headers\n"
+msgstr "gần nhÆ° chắc chắn là phần đầu tập tin ELF sai há»ng - nó có khoảng bù phần đầu chÆ°Æ¡ng khác không, nhÆ°ng lại không có phần đầu chÆ°Æ¡ng\n"
+
+#: readelf.c:4464
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"Không có phần trong tập tin này.\n"
+
+#: readelf.c:4470
+#, 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 khoảng bù 0x%lx:\n"
+
+#: readelf.c:4491 readelf.c:5079 readelf.c:5491 readelf.c:5797 readelf.c:6210
+#: readelf.c:7093 readelf.c:9213
+msgid "string table"
+msgstr "bảng chuỗi"
+
+#: readelf.c:4558
+#, 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 (mong đợi %lx)\n"
+
+#: readelf.c:4578
+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:4590
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Tập tin chứa nhiá»u bảng chuá»—i Ä‘á»™ng\n"
+
+#: readelf.c:4596
+msgid "dynamic strings"
+msgstr "chuá»—i Ä‘á»™ng"
+
+#: readelf.c:4603
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "Tập tin chứa nhiá»u bảng symtab shndx\n"
+
+#: readelf.c:4674
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"Dòng đầu phần:\n"
+
+#: readelf.c:4676
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"Dòng đầu phần:\n"
+
+#: readelf.c:4682 readelf.c:4693 readelf.c:4704
+#, c-format
+msgid " [Nr] Name\n"
+msgstr " [Nr] Tên\n"
+
+#: readelf.c:4683
+#, c-format
+msgid " Type Addr Off Size ES Lk Inf Al\n"
+msgstr " Kiểu ÄChỉ Bù Cỡ ES Lk Tin Cl\n"
+
+#: readelf.c:4687
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] Tên Kiểu ÄChỉ Bù Cỡ ES Cá» Lkết Tin Canh\n"
+
+#: readelf.c:4694
+#, c-format
+msgid " Type Address Off Size ES Lk Inf Al\n"
+msgstr " Kiểu Äịa chỉ Bù Cỡ ES Lkết Tin Canh\n"
+
+#: readelf.c:4698
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr " [Nr] Tên Kiểu Äịa chỉ Bù Cỡ ES Cá» Lkết Tin Canh\n"
+
+#: readelf.c:4705
+#, c-format
+msgid " Type Address Offset Link\n"
+msgstr " Kiểu Äịa chỉ Bù Liên kết\n"
+
+#: readelf.c:4706
+#, c-format
+msgid " Size EntSize Info Align\n"
+msgstr " Cỡ CỡEnt Tin Canh\n"
+
+#: readelf.c:4710
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [Nr] Tên Kiểu Äịa chỉ Bù\n"
+
+#: readelf.c:4711
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " Cỡ CỡEnt CỠLiên kết Tin Canh\n"
+
+#: readelf.c:4716
+#, c-format
+msgid " Flags\n"
+msgstr " Cá»\n"
+
+#: readelf.c:4796
+#, c-format
+msgid "section %u: sh_link value of %u is larger than the number of sections\n"
+msgstr "phần %u : giá trị sh_link của %u vẫn lớn hơn số các phần\n"
+
+#: readelf.c:4896
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Các từ khoá Cá»:\n"
+"\tW\tghi\n"
+" \tA\tcấp phát\n"
+"\tX\tthực hiện\n"
+"\tM\ttrá»™n\n"
+"\tS\tcác chuỗi\n"
+"\tl\tlá»›n\n"
+"\tI\tthông tin\n"
+"\tL\tthứ tự liên kết\n"
+"\tG\tnhóm\n"
+"\tT (TLS)\n"
+"\tE\tloại trừ\n"
+"\tx\tkhông hiểu\n"
+"\tO\tcần thiết xá»­ lý hệ Ä‘iá»u hành thêm\n"
+"\to \tđặc trÆ°ng cho hệ Ä‘iá»u hành\n"
+"\ts\tchỉ định bộ xử lý\n"
+
+#: readelf.c:4901
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"Các từ khoá Cá»:\n"
+"\tW\tghi\n"
+"\tA\tcấp phát\n"
+"\tX\tthực hiện\n"
+"\tM\ttrá»™n\n"
+"\tS\tcác chuỗi\n"
+"\tI\tthông tin\n"
+"\tL\tthứ tự liên kết\n"
+"\tG\tnhóm\n"
+"\tT (TLS)\n"
+"\tE\tloại trừ\n"
+"\tx\tkhông hiểu\n"
+"\tO\tcần thiết xá»­ lý hệ Ä‘iá»u hành thêm\n"
+"\to \tđặc trÆ°ng cho hệ Ä‘iá»u hành\n"
+"\ts\tchỉ định bộ xử lý\n"
+
+#: readelf.c:4923
+#, c-format
+msgid "[<unknown>: 0x%x] "
+msgstr "[<không rõ>: 0x%x] "
+
+#: readelf.c:4949
+#, c-format
+msgid ""
+"\n"
+"There are no sections to group in this file.\n"
+msgstr ""
+"\n"
+"Không có phần cho nhóm trong tập tin này.\n"
+
+#: readelf.c:4956
+msgid "Section headers are not available!\n"
+msgstr "Dòng đầu phần không sẵn sàng.\n"
+
+#: readelf.c:4980
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"Không có nhóm phần trong tập tin này.\n"
+
+#: readelf.c:5018
+#, 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:5032
+#, c-format
+msgid "Corrupt header in group section `%s'\n"
+msgstr "Phần đầu há»ng trong chÆ°Æ¡ng nhóm `%s'\n"
+
+#: readelf.c:5038 readelf.c:5049
+#, 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:5088
+msgid "section data"
+msgstr "dữ liệu phần"
+
+#: readelf.c:5099
+#, c-format
+msgid ""
+"\n"
+"%sgroup section [%5u] `%s' [%s] contains %u sections:\n"
+msgstr ""
+"\n"
+"%snhóm phần [%5u] `%s' [%s] chứa %u phần:\n"
+
+#: readelf.c:5102
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [Chỉ mục] Tên\n"
+
+#: readelf.c:5116
+#, c-format
+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:5125
+#, 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:5138
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr "phần 0 trong phần nhóm [%5u]\n"
+
+#: readelf.c:5205
+msgid "dynamic section image fixups"
+msgstr "bộ sửa chữa ảnh chương động"
+
+#: readelf.c:5217
+#, c-format
+msgid ""
+"\n"
+"Image fixups for needed library #%d: %s - ident: %lx\n"
+msgstr ""
+"\n"
+"Bộ sửa chữa ảnh là cần thiết cho thư viện #%d: %s - ident: %lx\n"
+
+#: readelf.c:5220
+#, c-format
+msgid "Seg Offset Type SymVec DataType\n"
+msgstr "Seg Offset Kiểu SymVec KiểuDữLiệu\n"
+
+#: readelf.c:5252
+msgid "dynamic section image relocations"
+msgstr "tái định vị ảnh phần động"
+
+#: readelf.c:5256
+#, c-format
+msgid ""
+"\n"
+"Image relocs\n"
+msgstr ""
+"\n"
+"Tái định vị ảnh\n"
+
+#: readelf.c:5258
+#, c-format
+msgid "Seg Offset Type Addend Seg Sym Off\n"
+msgstr "Seg Offset Kiểu SốCộng Seg Sym Off\n"
+
+#: readelf.c:5313
+msgid "dynamic string section"
+msgstr "phần chuỗi động"
+
+#: readelf.c:5414
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"phần định vị lại \"%s\" tại khoảng bù 0x%lx chứa %ld byte:\n"
+
+#: readelf.c:5429
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"Không có việc định vị lại động trong tập tin này.\n"
+
+#: readelf.c:5453
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"Phần định vị lại"
+
+#: readelf.c:5460 readelf.c:5890 readelf.c:6227
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " tại khoảng bù 0x%lx chứa %lu mục nhập:\n"
+
+#: readelf.c:5510
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"Không có việc định vị lại trong tập tin này.\n"
+
+#: readelf.c:5648
+#, c-format
+msgid "\tUnknown version.\n"
+msgstr "\tKhông hiểu phiên bản.\n"
+
+#: readelf.c:5701 readelf.c:6074
+msgid "unwind table"
+msgstr "tri ra bảng"
+
+#: readelf.c:5743 readelf.c:6156 readelf.c:6415
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Äang bá» qua kiểu định vị lại bất thÆ°á»ng %s\n"
+
+#: readelf.c:5805 readelf.c:6218 readelf.c:7101 readelf.c:7148
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"Không có phần tri ra trong tập tin này.\n"
+
+#: readelf.c:5868
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"Không thể tìm thấy phần thông tin tri ra cho "
+
+#: readelf.c:5873 readelf.c:5888 readelf.c:6225
+#, c-format
+msgid "'%s'"
+msgstr "\"%s\""
+
+#: readelf.c:5880
+msgid "unwind info"
+msgstr "thông tin tri ra"
+
+#: readelf.c:5883 readelf.c:6224
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"Phần tri ra "
+
+#: readelf.c:6333
+msgid "unwind data"
+msgstr "dữ liệu unwind"
+
+#: readelf.c:6386
+#, c-format
+msgid "Skipping unexpected relocation at offset 0x%lx\n"
+msgstr "đang bỠqua tái định vị không như mong đợi trong phần bù 0x%lx\n"
+
+#: readelf.c:6490
+#, c-format
+msgid "[Truncated opcode]\n"
+msgstr "[Opcode (mã thao tác) đã bị cắt cụt]\n"
+
+#: readelf.c:6534 readelf.c:6734
+#, c-format
+msgid "Refuse to unwind"
+msgstr "Từ chối tháo ra"
+
+#: readelf.c:6557
+#, c-format
+msgid " [Reserved]"
+msgstr " [Dành riêng]"
+
+#: readelf.c:6585
+#, c-format
+msgid " finish"
+msgstr " hoàn tất"
+
+#: readelf.c:6590 readelf.c:6676
+#, c-format
+msgid "[Spare]"
+msgstr "[Dư thừa]"
+
+#: readelf.c:6697 readelf.c:6831
+#, c-format
+msgid " [unsupported opcode]"
+msgstr " [Opcode (mã thao tác) không hỗ trợ]"
+
+#: readelf.c:6781
+#, c-format
+msgid "pop frame {"
+msgstr "khung pop {"
+
+#: readelf.c:6792
+msgid "[pad]"
+msgstr "[đệm]"
+
+#: readelf.c:6820
+#, c-format
+msgid "sp = sp + %ld"
+msgstr "sp = sp + %ld"
+
+#: readelf.c:6878
+#, c-format
+msgid " Personality routine: "
+msgstr " Thủ tục cá nhân: "
+
+#: readelf.c:6896
+#, c-format
+msgid " [Truncated data]\n"
+msgstr " [Dữ liệu đã cắt cụt]\n"
+
+#: readelf.c:6911
+#, c-format
+msgid " Compact model %d\n"
+msgstr " Kiểu mẫu nén %d\n"
+
+#: readelf.c:6947
+#, c-format
+msgid " Restore stack from frame pointer\n"
+msgstr " Phục hồi stack từ con trỠkhung\n"
+
+#: readelf.c:6949
+#, c-format
+msgid " Stack increment %d\n"
+msgstr " Gia số Stack %d\n"
+
+#: readelf.c:6950
+#, c-format
+msgid " Registers restored: "
+msgstr " Các thanh ghi đã được phục hồi lại: "
+
+#: readelf.c:6955
+#, c-format
+msgid " Return register: %s\n"
+msgstr " Thanh ghi trả vá»: %s\n"
+
+#: readelf.c:7038
+#, c-format
+msgid "Could not locate .ARM.extab section containing 0x%lx.\n"
+msgstr "Không thể xác định phần .ARM.extab đang chứa 0x%lx.\n"
+
+#: readelf.c:7107
+#, c-format
+msgid ""
+"\n"
+"Unwind table index '%s' at offset 0x%lx contains %lu entries:\n"
+msgstr ""
+"\n"
+"Tháo chỉ số bảng '%s' tại khoảng bù 0x%lx chứa %lu các mục:\n"
+
+#: readelf.c:7159
+#, c-format
+msgid "NONE\n"
+msgstr "KHÔNG\n"
+
+#: readelf.c:7185
+#, c-format
+msgid "Interface Version: %s\n"
+msgstr "Phiên bản Giao diện: %s\n"
+
+#: readelf.c:7187
+#, c-format
+msgid "<corrupt: %ld>\n"
+msgstr "<hÆ° há»ng: %ld>\n"
+
+#: readelf.c:7200
+#, c-format
+msgid "Time Stamp: %s\n"
+msgstr "Dấu vết thá»i gian: %s\n"
+
+#: readelf.c:7377 readelf.c:7423
+msgid "dynamic section"
+msgstr "phần động"
+
+#: readelf.c:7501
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"Không có phần động trong tập tin này.\n"
+
+#: readelf.c:7539
+msgid "Unable to seek to end of file!\n"
+msgstr "Không thể tìm nơi tới kết thúc của tập tin.\n"
+
+#: readelf.c:7552
+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:7585
+msgid "Unable to seek to end of file\n"
+msgstr "Không thể tìm nơi tới kết thúc tập tin\n"
+
+#: readelf.c:7592
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "Không thể quyết định chiá»u dài của bảng chuá»—i Ä‘á»™ng\n"
+
+#: readelf.c:7598
+msgid "dynamic string table"
+msgstr "bảng chuỗi động"
+
+#: readelf.c:7635
+msgid "symbol information"
+msgstr "thông tin ký hiệu"
+
+#: readelf.c:7660
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"Phần động tại khoảng bù 0x%lx chứa %u mục nhập:\n"
+
+#: readelf.c:7663
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " Thẻ Kiểu Tên/Giá trị\n"
+
+#: readelf.c:7699
+#, c-format
+msgid "Auxiliary library"
+msgstr "Thư viện phụ"
+
+#: readelf.c:7703
+#, c-format
+msgid "Filter library"
+msgstr "ThÆ° viện lá»c"
+
+#: readelf.c:7707
+#, c-format
+msgid "Configuration file"
+msgstr "Tập tin cấu hình"
+
+#: readelf.c:7711
+#, c-format
+msgid "Dependency audit library"
+msgstr "Thư viện kiểm tra quan hệ phụ thuộc"
+
+#: readelf.c:7715
+#, c-format
+msgid "Audit library"
+msgstr "Thư viện kiểm tra"
+
+#: readelf.c:7733 readelf.c:7761 readelf.c:7789
+#, c-format
+msgid "Flags:"
+msgstr "Cá» :"
+
+#: readelf.c:7736 readelf.c:7764 readelf.c:7791
+#, c-format
+msgid " None\n"
+msgstr " Không có\n"
+
+#: readelf.c:7912
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "Thư viện dùng chung: [%s]"
+
+#: readelf.c:7915
+#, c-format
+msgid " program interpreter"
+msgstr " bộ giải dịch chương trình"
+
+#: readelf.c:7919
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "soname thư viện: [%s]"
+
+#: readelf.c:7923
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "rpath thư viện: [%s]"
+
+#: readelf.c:7927
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "runpath thư viện: [%s]"
+
+#: readelf.c:7960
+#, c-format
+msgid " (bytes)\n"
+msgstr " (bytes)\n"
+
+#: readelf.c:7990
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "Äối tượng không cần thiết: [%s]\n"
+
+#: readelf.c:8090
+msgid "| <unknown>"
+msgstr "| <không rõ>"
+
+#: readelf.c:8123
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Phần định nghĩa phiên bản \"%s\" chứa %u mục nhập:\n"
+
+#: readelf.c:8126
+#, c-format
+msgid " Addr: 0x"
+msgstr " ÄChỉ: 0x"
+
+#: readelf.c:8128 readelf.c:8246 readelf.c:8390
+#, c-format
+msgid " Offset: %#08lx Link: %u (%s)\n"
+msgstr " Bù : %#08lx Liên kết: %u (%s)\n"
+
+#: readelf.c:8136
+msgid "version definition section"
+msgstr "phần định nghĩa phiên bản"
+
+#: readelf.c:8169
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: Bản: %d Cá»: %s"
+
+#: readelf.c:8172
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " Chỉ mục: %d Äếm: %d "
+
+#: readelf.c:8188
+#, c-format
+msgid "Name: %s\n"
+msgstr "Tên: %s\n"
+
+#: readelf.c:8190
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Chỉ mục tên: %ld\n"
+
+#: readelf.c:8212
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: Mẹ %d: %s\n"
+
+#: readelf.c:8215
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: Mẹ %d, chỉ mục tên: %ld\n"
+
+#: readelf.c:8220
+#, c-format
+msgid " Version def aux past end of section\n"
+msgstr " Xác định phiên bản phụ qua kết thúc phần\n"
+
+#: readelf.c:8226
+#, c-format
+msgid " Version definition past end of section\n"
+msgstr " Xác định phiên bản qua kết thúc phần\n"
+
+#: readelf.c:8241
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %u entries:\n"
+msgstr ""
+"\n"
+"Phần phiên bản cần thiết \"%s\" chứa %u mục nhập:\n"
+
+#: readelf.c:8244
+#, c-format
+msgid " Addr: 0x"
+msgstr " ÄChỉ: 0x"
+
+#: readelf.c:8255
+msgid "Version Needs section"
+msgstr "Phần xác định phiên bản"
+
+#: readelf.c:8283
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: PhBản: %d"
+
+#: readelf.c:8286
+#, c-format
+msgid " File: %s"
+msgstr " Tập tin: %s"
+
+#: readelf.c:8288
+#, c-format
+msgid " File: %lx"
+msgstr " Tập tin: %lx"
+
+#: readelf.c:8290
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " Äếm: %d\n"
+
+#: readelf.c:8315
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x: Tên: %s"
+
+#: readelf.c:8318
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x: Chỉ mục tên: %lx"
+
+#: readelf.c:8321
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " Cá»: %s Phiên bản: %d\n"
+
+#: readelf.c:8334
+msgid "Missing Version Needs auxillary information\n"
+msgstr "Thiếu thông tin phụ cần thiết cho phiên bản\n"
+
+#: readelf.c:8340
+msgid "Missing Version Needs information\n"
+msgstr "Thiếu thông tin cần thiết cho phiên bản\n"
+
+#: readelf.c:8378
+msgid "version string table"
+msgstr "bảng chuỗi phiên bản"
+
+#: readelf.c:8385
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Phần ký hiệu phiên bản \"%s\" chứa %d mục nhập:\n"
+
+#: readelf.c:8388
+#, c-format
+msgid " Addr: "
+msgstr " ÄChỉ: "
+
+#: readelf.c:8399
+msgid "version symbol data"
+msgstr "dữ liệu ký hiệu phiên bản"
+
+#: readelf.c:8427
+msgid " 0 (*local*) "
+msgstr " 0 (*cục bộ*) "
+
+#: readelf.c:8431
+msgid " 1 (*global*) "
+msgstr " 1 (*toàn cục*) "
+
+#: readelf.c:8442
+msgid "invalid index into symbol array\n"
+msgstr "chỉ số không hợp lệ trong mảng ký kiệu\n"
+
+#: readelf.c:8476 readelf.c:9279
+msgid "version need"
+msgstr "phiên bản cần"
+
+#: readelf.c:8487
+msgid "version need aux (2)"
+msgstr "phiên bản cần phụ (2)"
+
+#: readelf.c:8508 readelf.c:8570
+msgid "*invalid*"
+msgstr "*không hợp lệ*"
+
+#: readelf.c:8538 readelf.c:9357
+msgid "version def"
+msgstr "đặt phiên bản"
+
+#: readelf.c:8564 readelf.c:9379
+msgid "version def aux"
+msgstr "đặt phiên bản phụ"
+
+#: readelf.c:8599
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"Không tìm thấy thông tin phiên bản trong tập tin này.\n"
+
+#: readelf.c:8807
+#, c-format
+msgid "<other>: %x"
+msgstr "<khác>: %x"
+
+#: readelf.c:8869
+msgid "Unable to read in dynamic data\n"
+msgstr "Không thể Ä‘á»c vào dữ liệu Ä‘á»™ng\n"
+
+#: readelf.c:8919
+#, c-format
+msgid " <corrupt: %14ld>"
+msgstr "<hÆ° há»ng: %14ld>"
+
+#: readelf.c:8962 readelf.c:9014 readelf.c:9038 readelf.c:9068 readelf.c:9092
+msgid "Unable to seek to start of dynamic information\n"
+msgstr "Không thể tìm nơi tới đầu của thông tin động\n"
+
+#: readelf.c:8968 readelf.c:9020
+msgid "Failed to read in number of buckets\n"
+msgstr "Lá»—i Ä‘á»c vào số các xô\n"
+
+#: readelf.c:8974
+msgid "Failed to read in number of chains\n"
+msgstr "Lá»—i Ä‘á»c vào số các dãy\n"
+
+#: readelf.c:9076
+msgid "Failed to determine last chain length\n"
+msgstr "Lá»—i xác định chiá»u dài dãy cuối cùng\n"
+
+#: readelf.c:9120
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"Bảng ký hiệu cho ảnh:\n"
+
+#: readelf.c:9122 readelf.c:9140
+#, 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:9124 readelf.c:9142
+#, 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:9138
+#, c-format
+msgid ""
+"\n"
+"Symbol table of `.gnu.hash' for image:\n"
+msgstr ""
+"\n"
+"Bảng ký hiệu của \".gnu.hash\" cho ảnh:\n"
+
+#: readelf.c:9182
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' has a sh_entsize of zero!\n"
+msgstr ""
+"\n"
+"Bảng ký hiệu '%s' có một sh_entsize số không!\n"
+
+#: readelf.c:9187
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Bảng ký hiệu \"%s\" chứa %lu mục nhập:\n"
+
+#: readelf.c:9192
+#, 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:9194
+#, 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:9249
+msgid "version data"
+msgstr "dữ liệu phiên bản"
+
+#: readelf.c:9298
+msgid "version need aux (3)"
+msgstr "phiên bản phụ cần (3)"
+
+#: readelf.c:9332
+msgid "bad dynamic symbol\n"
+msgstr "ký hiệu động sai\n"
+
+#: readelf.c:9404
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"Không có sẵn sàng thông tin ký hiệu động để hiển thị ký hiệu.\n"
+
+#: readelf.c:9416
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Biểu đồ tần xuất cho chiá»u dài danh sách xô (tổng số %lu xô):\n"
+
+#: readelf.c:9418 readelf.c:9488
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " Dài Số %% tổng Phạm vi\n"
+
+#: readelf.c:9486
+#, c-format
+msgid ""
+"\n"
+"Histogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"Biểu đồ tần xuất cho chiá»u dài danh sách xô \".gnu.hash\" (tổng số %lu xô):\n"
+
+#: readelf.c:9552
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"Phân đoạn thông tin động tại khoảng bù 0x%lx chứa %d mục nhập:\n"
+
+#: readelf.c:9555
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr " Số : Tên ÄóngVá»›i Cá»\n"
+
+#: readelf.c:9564
+#, c-format
+msgid "<corrupt: %19ld>"
+msgstr "<hÆ° há»ng: %19ld>"
+
+#: readelf.c:9646
+msgid "Unhandled MN10300 reloc type found after SYM_DIFF reloc"
+msgstr "Loại sự định vị lại MN10300 chưa xử lý được tìm sau sự định vị lại SYM_DIFF"
+
+#: readelf.c:9813
+#, c-format
+msgid "Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"
+msgstr "Thiếu thông tin vỠkiểu định vị lại 32-bit được dùng trong phần DWARF có số thứ tự máy %d\n"
+
+#: readelf.c:10138
+#, c-format
+msgid "unable to apply unsupported reloc type %d to section %s\n"
+msgstr "không thể áp dụng kiểu định vị lại không được hỗ trợ %d cho phần %s\n"
+
+#: readelf.c:10146
+#, c-format
+msgid "skipping invalid relocation offset 0x%lx in section %s\n"
+msgstr "đang bỠqua khoảng bù định vị lại không hợp lệ 0x%lx trong phần %s\n"
+
+#: readelf.c:10155
+#, c-format
+msgid "skipping invalid relocation symbol index 0x%lx in section %s\n"
+msgstr "đang bỠqua ký hiệu chỉ mục tái định vị không hợp lệ 0x%lx trong phần %s\n"
+
+#: readelf.c:10177
+#, c-format
+msgid "skipping unexpected symbol type %s in %ld'th relocation in section %s\n"
+msgstr "Ä‘ang bá» qua kiểu ký hiệu bất thÆ°á»ng %s trong việc định vị lại thứ %ld trong phần %s\n"
+
+#: readelf.c:10223
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"Việc đổ thanh ghi của phần %s\n"
+
+#: readelf.c:10244
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"Phần \"%s\" không có dữ liệu cần đổ.\n"
+
+#: readelf.c:10250
+msgid "section contents"
+msgstr "nội dung phần"
+
+#: readelf.c:10269
+#, c-format
+msgid ""
+"\n"
+"String dump of section '%s':\n"
+msgstr ""
+"\n"
+"Äổ chuá»—i của phần \"%s\":\n"
+
+#: readelf.c:10287
+#, c-format
+msgid " Note: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " Ghi chú : phần này có một số việc định vị lại được gán, nhưng chúng CHƯA được áp dụng cho việc đổ này.\n"
+
+#: readelf.c:10318
+#, c-format
+msgid " No strings found in this section."
+msgstr " Không tìm thấy chuỗi trong phần này."
+
+#: readelf.c:10340
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"Việc đổ thập lục của phần \"%s\":\n"
+
+#: readelf.c:10364
+#, c-format
+msgid " NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"
+msgstr " GHI CHÚ : phần này có một số việc định vị lại được gán, nhưng chúng CHƯA được áp dụng cho việc đổ này.\n"
+
+#: readelf.c:10498
+#, c-format
+msgid "%s section data"
+msgstr "dữ liệu phần %s"
+
+#: readelf.c:10568
+#, 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"
+
+#. There is no point in dumping the contents of a debugging section
+#. which has the NOBITS type - the bits in the file will be random.
+#. This can happen when a file containing a .eh_frame section is
+#. stripped with the --only-keep-debug command line option.
+#: readelf.c:10577
+#, c-format
+msgid "section '%s' has the NOBITS type - its contents are unreliable.\n"
+msgstr "phần \"%s\" có loại NOBITS thì nó có nội dung không xác thực.\n"
+
+#: readelf.c:10613
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "Không nhận ra phần gỡ lỗi: %s\n"
+
+#: readelf.c:10641
+#, c-format
+msgid "Section '%s' was not dumped because it does not exist!\n"
+msgstr "Phần \"%s\" không được đổ vì nó không tồn tại.\n"
+
+#: readelf.c:10682
+#, 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:10860 readelf.c:10874 readelf.c:10893 readelf.c:11293
+#, c-format
+msgid "None\n"
+msgstr "Không\n"
+
+#: readelf.c:10861
+#, c-format
+msgid "Application\n"
+msgstr "Ứng dụng\n"
+
+#: readelf.c:10862
+#, c-format
+msgid "Realtime\n"
+msgstr "Thá»i gian thá»±c\n"
+
+#: readelf.c:10863
+#, c-format
+msgid "Microcontroller\n"
+msgstr "Vi Ä‘iá»u khiển\n"
+
+#: readelf.c:10864
+#, c-format
+msgid "Application or Realtime\n"
+msgstr "Ứng dụng hay Ứng dụng thá»i gian thá»±c\n"
+
+#: readelf.c:10875 readelf.c:10895 readelf.c:11347 readelf.c:11365
+#: readelf.c:11440 readelf.c:11461
+#, c-format
+msgid "8-byte\n"
+msgstr "8-byte\n"
+
+#: readelf.c:10876 readelf.c:11443 readelf.c:11464
+#, c-format
+msgid "4-byte\n"
+msgstr "4-byte\n"
+
+#: readelf.c:10880 readelf.c:10899
+#, c-format
+msgid "8-byte and up to %d-byte extended\n"
+msgstr "8-byte và mở rộng đến %d-byte\n"
+
+#: readelf.c:10894
+#, c-format
+msgid "8-byte, except leaf SP\n"
+msgstr "8-byte, loại trừ leaf SP\n"
+
+#: readelf.c:10910 readelf.c:11000 readelf.c:11479
+#, c-format
+msgid "flag = %d, vendor = %s\n"
+msgstr "cỠ= %d, tác nhân = %s\n"
+
+#: readelf.c:10916
+#, c-format
+msgid "True\n"
+msgstr "Äúng\n"
+
+#: readelf.c:11045 readelf.c:11231
+#, c-format
+msgid "Hard or soft float\n"
+msgstr "Xá»­ lý số thá»±c dấu chấm Ä‘á»™ng bằng phần cứng hay má»m\n"
+
+#: readelf.c:11048
+#, c-format
+msgid "Hard float\n"
+msgstr "Xử lý số thực dấu chấm động bằng phần cứng\n"
+
+#: readelf.c:11051 readelf.c:11240
+#, c-format
+msgid "Soft float\n"
+msgstr "Xá»­ lý số thá»±c dấu chấm Ä‘á»™ng bằng phần má»m\n"
+
+#: readelf.c:11054
+#, c-format
+msgid "Single-precision hard float\n"
+msgstr "Xử lý số thực dấu chấm động chính đơn bằng phần cứng\n"
+
+#: readelf.c:11071 readelf.c:11097
+#, c-format
+msgid "Any\n"
+msgstr "Bất kỳ\n"
+
+#: readelf.c:11074
+#, c-format
+msgid "Generic\n"
+msgstr "Chung (Generic)\n"
+
+#: readelf.c:11103
+#, c-format
+msgid "Memory\n"
+msgstr "Bá»™ nhá»›\n"
+
+#: readelf.c:11234
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr "Xử lý số thực dấu chấm động bằng phần cứng (chính đôi)\n"
+
+#: readelf.c:11237
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr "Xử lý số thực dấu chấm động bằng phần cứng (chính đơn)\n"
+
+#: readelf.c:11243
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU)\n"
+msgstr "Tính số thực dấu chấm động bằng phần cứng (MIPS32r2 64-bit FPU)\n"
+
+#: readelf.c:11326
+#, c-format
+msgid "Not used\n"
+msgstr "Không dùng\n"
+
+#: readelf.c:11329
+#, c-format
+msgid "2 bytes\n"
+msgstr "2 bytes\n"
+
+#: readelf.c:11332
+#, c-format
+msgid "4 bytes\n"
+msgstr "4 bytes\n"
+
+#: readelf.c:11350 readelf.c:11368 readelf.c:11446 readelf.c:11467
+#, c-format
+msgid "16-byte\n"
+msgstr "16-byte\n"
+
+#: readelf.c:11383
+#, c-format
+msgid "DSBT addressing not used\n"
+msgstr "Äánh địa chỉ kiểu DSBT không được sá»­ dụng\n"
+
+#: readelf.c:11386
+#, c-format
+msgid "DSBT addressing used\n"
+msgstr "Äánh địa chỉ kiểu DSBT được sá»­ dụng\n"
+
+#: readelf.c:11401
+#, c-format
+msgid "Data addressing position-dependent\n"
+msgstr "Dữ liệu định địa chỉ phụ thuộc vị trí\n"
+
+#: readelf.c:11404
+#, c-format
+msgid "Data addressing position-independent, GOT near DP\n"
+msgstr "Dữ liệu định địa chỉ không phụ thuộc vị trí, GOT gần DP\n"
+
+#: readelf.c:11407
+#, c-format
+msgid "Data addressing position-independent, GOT far from DP\n"
+msgstr "Dữ liệu định địa chỉ không phụ thuộc vị trí, GOT cách xa DP\n"
+
+#: readelf.c:11422
+#, c-format
+msgid "Code addressing position-dependent\n"
+msgstr "Mã định địa chỉ phụ thuộc vị trí\n"
+
+#: readelf.c:11425
+#, c-format
+msgid "Code addressing position-independent\n"
+msgstr "Mã định địa chỉ không phụ thuộc vị trí\n"
+
+#: readelf.c:11531
+msgid "attributes"
+msgstr "thuộc tính"
+
+#: readelf.c:11552
+#, c-format
+msgid "ERROR: Bad section length (%d > %d)\n"
+msgstr "Lá»–I : chiá»u dài phần sai (%d > %d)\n"
+
+#: readelf.c:11558
+#, c-format
+msgid "Attribute Section: %s\n"
+msgstr "Phần Thuộc tính: %s\n"
+
+#: readelf.c:11583
+#, c-format
+msgid "ERROR: Bad subsection length (%d > %d)\n"
+msgstr "Lá»–I : chiá»u dài phần phụ sai (%d > %d)\n"
+
+#: readelf.c:11595
+#, c-format
+msgid "File Attributes\n"
+msgstr "Thuộc tính Tập tin\n"
+
+#: readelf.c:11598
+#, c-format
+msgid "Section Attributes:"
+msgstr "Thuộc tính Phần:"
+
+#: readelf.c:11601
+#, c-format
+msgid "Symbol Attributes:"
+msgstr "Thuộc tính Ký hiệu:"
+
+#: readelf.c:11616
+#, c-format
+msgid "Unknown tag: %d\n"
+msgstr "Thẻ không hiểu: %d\n"
+
+#. ??? Do something sensible, like dump hex.
+#: readelf.c:11635
+#, c-format
+msgid " Unknown section contexts\n"
+msgstr " Không hiểu ngữ cảnh của phần\n"
+
+#: readelf.c:11642
+#, c-format
+msgid "Unknown format '%c'\n"
+msgstr "Không rõ định dạng \"%c\"\n"
+
+#: readelf.c:11693 readelf.c:11715
+msgid "<unknown>"
+msgstr "<không rõ>"
+
+#: readelf.c:11810 readelf.c:12344
+msgid "liblist section data"
+msgstr "dữ liệu phần liblist"
+
+#: readelf.c:11813
+#, c-format
+msgid ""
+"\n"
+"Section '.liblist' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Phần '.liblist' có chứa %lu mục tin:\n"
+
+#: readelf.c:11815
+msgid " Library Time Stamp Checksum Version Flags\n"
+msgstr " ThÆ° viện Dấu vết Thá»i gian Tổng kiểm tra Phiên bản Các cá»\n"
+
+#: readelf.c:11841
+#, c-format
+msgid "<corrupt: %9ld>"
+msgstr "<hÆ° há»ng: %9ld>"
+
+#: readelf.c:11846
+msgid " NONE"
+msgstr "KHÔNG"
+
+#: readelf.c:11897
+msgid "options"
+msgstr "tùy chá»n"
+
+#: readelf.c:11928
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"Phần \"%s\" chứa %d mục nhập:\n"
+
+#: readelf.c:12089
+msgid "conflict list found without a dynamic symbol table\n"
+msgstr "tìm được danh sách xung đột không có bảng ký hiệu động\n"
+
+#: readelf.c:12106 readelf.c:12121
+msgid "conflict"
+msgstr "xung Ä‘á»™t"
+
+#: readelf.c:12131
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Phần \".conflict\" (xung đột) chứa %lu mục nhập:\n"
+
+#: readelf.c:12133
+msgid " Num: Index Value Name"
+msgstr " Số : CMục Giá trị Tên"
+
+#: readelf.c:12145 readelf.c:12234 readelf.c:12305
+#, c-format
+msgid "<corrupt: %14ld>"
+msgstr "<hÆ° há»ng: %14ld>"
+
+#: readelf.c:12167
+msgid "Global Offset Table data"
+msgstr "Dữ liệu bảng khoảng bù toàn cục"
+
+#: readelf.c:12171
+#, c-format
+msgid ""
+"\n"
+"Primary GOT:\n"
+msgstr ""
+"\n"
+"GOT chính:\n"
+
+#: readelf.c:12172
+#, c-format
+msgid " Canonical gp value: "
+msgstr " Giá trị gp chính tắc: "
+
+#: readelf.c:12176 readelf.c:12276
+#, c-format
+msgid " Reserved entries:\n"
+msgstr " Mục nhập dành riêng:\n"
+
+#: readelf.c:12177
+#, c-format
+msgid " %*s %10s %*s Purpose\n"
+msgstr " Mục đích %*s %10s %*s\n"
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12211 readelf.c:12278
+#: readelf.c:12287
+msgid "Address"
+msgstr "Äịa chỉ"
+
+#: readelf.c:12178 readelf.c:12195 readelf.c:12212
+msgid "Access"
+msgstr "Truy cập"
+
+#: readelf.c:12179 readelf.c:12196 readelf.c:12213 readelf.c:12278
+#: readelf.c:12288
+msgid "Initial"
+msgstr "Khởi tạo"
+
+#: readelf.c:12181
+#, c-format
+msgid " Lazy resolver\n"
+msgstr " Thiết bị Lazy\n"
+
+#: readelf.c:12187
+#, c-format
+msgid " Module pointer (GNU extension)\n"
+msgstr " Con trỠmôđun (phần mở rộng GNU)\n"
+
+#: readelf.c:12193
+#, c-format
+msgid " Local entries:\n"
+msgstr " Mục nhập cục bộ :\n"
+
+#: readelf.c:12209
+#, c-format
+msgid " Global entries:\n"
+msgstr " Mục nhập toàn cục:\n"
+
+#: readelf.c:12214 readelf.c:12289
+msgid "Sym.Val."
+msgstr "Sym.Val."
+
+#. Note for translators: "Ndx" = abbreviated form of "Index".
+#: readelf.c:12217 readelf.c:12289
+msgid "Ndx"
+msgstr "Ndx"
+
+#: readelf.c:12217 readelf.c:12289
+msgid "Name"
+msgstr "Tên"
+
+#: readelf.c:12271
+msgid "Procedure Linkage Table data"
+msgstr "Dữ liệu bảng liên kết các thủ tục"
+
+#: readelf.c:12277
+#, c-format
+msgid " %*s %*s Purpose\n"
+msgstr " Mục đích %*s %*s\n"
+
+#: readelf.c:12280
+#, c-format
+msgid " PLT lazy resolver\n"
+msgstr "Bộ giải quyết PLT lazy\n"
+
+#: readelf.c:12282
+#, c-format
+msgid " Module pointer\n"
+msgstr " Con trỠmôđun\n"
+
+#: readelf.c:12285
+#, c-format
+msgid " Entries:\n"
+msgstr " Mục nhập:\n"
+
+#: readelf.c:12352
+msgid "liblist string table"
+msgstr "bảng chuỗi danh sách thư viện"
+
+#: readelf.c:12362
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"Phần danh sách thư viện \"%s\" chứa %lu mục nhập:\n"
+
+#: readelf.c:12366
+msgid " Library Time Stamp Checksum Version Flags"
+msgstr " ThÆ° viện Dấu vết Thá»i gian Tổng kiểm tra Phiên bản Các cá»"
+
+#: readelf.c:12416
+msgid "NT_AUXV (auxiliary vector)"
+msgstr "NT_AUXV (véc-tơ phụ)"
+
+#: readelf.c:12418
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (cấu trúc trạng thái prstatus)"
+
+#: readelf.c:12420
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (thanh ghi điểm phù động)"
+
+#: readelf.c:12422
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (cấu trúc thông tin prpsinfo)"
+
+#: readelf.c:12424
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (cấu trúc tác vụ)"
+
+#: readelf.c:12426
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (cấu trúc \"user_xfpregs\")"
+
+#: readelf.c:12428
+msgid "NT_PPC_VMX (ppc Altivec registers)"
+msgstr "NT_PPC_VMX (thanh ghi ppc Altivec)"
+
+#: readelf.c:12430
+msgid "NT_PPC_VSX (ppc VSX registers)"
+msgstr "NT_PPC_VSX (thanh ghi ppc VSX)"
+
+#: readelf.c:12432
+msgid "NT_X86_XSTATE (x86 XSAVE extended state)"
+msgstr "NT_X86_XSTATE (trạng thái mở rộng x86 XSAVE)"
+
+#: readelf.c:12434
+msgid "NT_S390_HIGH_GPRS (s390 upper register halves)"
+msgstr "NT_S390_HIGH_GPRS (nửa trên thanh ghi s390)"
+
+#: readelf.c:12436
+msgid "NT_S390_TIMER (s390 timer register)"
+msgstr "NT_S390_TIMER (thanh ghi thá»i gian s390)"
+
+#: readelf.c:12438
+msgid "NT_S390_TODCMP (s390 TOD comparator register)"
+msgstr "NT_S390_TODCMP (thanh ghi so sánh s390 TOD)"
+
+#: readelf.c:12440
+msgid "NT_S390_TODPREG (s390 TOD programmable register)"
+msgstr "NT_S390_TODPREG (thanh ghi lập trình được s390 TOD )"
+
+#: readelf.c:12442
+msgid "NT_S390_CTRS (s390 control registers)"
+msgstr "NT_S390_CTRS (các thanh ghi Ä‘iá»u khiển s390)"
+
+#: readelf.c:12444
+msgid "NT_S390_PREFIX (s390 prefix register)"
+msgstr "NT_S390_PREFIX (thanh ghi tiá»n tố s390)"
+
+#: readelf.c:12446
+msgid "NT_ARM_VFP (arm VFP registers)"
+msgstr "NT_ARM_VFP (thanh ghi VFP arm)"
+
+#: readelf.c:12448
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (cấu trúc trạng thái pstatus)"
+
+#: readelf.c:12450
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (thanh ghi điểm phù động)"
+
+#: readelf.c:12452
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (cấu trúc thông tin psinfo)"
+
+#: readelf.c:12454
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (cấu trúc trạng thái \"lwpstatus_t\")"
+
+#: readelf.c:12456
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (cấu trúc thông tin \"lwpsinfo_t\")"
+
+#: readelf.c:12458
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (cấu trúc trạng thái \"win32_pstatus\")"
+
+#: readelf.c:12466
+msgid "NT_VERSION (version)"
+msgstr "NT_VERSION (phiên bản)"
+
+#: readelf.c:12468
+msgid "NT_ARCH (architecture)"
+msgstr "NT_ARCH (kiến trúc)"
+
+#: readelf.c:12473 readelf.c:12496 readelf.c:12575 readelf.c:12633
+#: readelf.c:12710
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "Không rõ kiểu ghi chú : (0x%08x)"
+
+#: readelf.c:12485
+msgid "NT_GNU_ABI_TAG (ABI version tag)"
+msgstr "NT_GNU_ABI_TAG (thẻ phiên bản ABI)"
+
+#: readelf.c:12487
+msgid "NT_GNU_HWCAP (DSO-supplied software HWCAP info)"
+msgstr "NT_GNU_HWCAP (thông tin HWCAP được DSO cung cấp)"
+
+#: readelf.c:12489
+msgid "NT_GNU_BUILD_ID (unique build ID bitstring)"
+msgstr "NT_GNU_BUILD_ID (chuỗi bit có mã số xây dựng duy nhất)"
+
+#: readelf.c:12491
+msgid "NT_GNU_GOLD_VERSION (gold version)"
+msgstr "NT_GNU_GOLD_VERSION (phiên bản gold)"
+
+#: readelf.c:12509
+#, c-format
+msgid " Build ID: "
+msgstr " ID xây dựng: "
+
+#: readelf.c:12548
+#, c-format
+msgid " OS: %s, ABI: %ld.%ld.%ld\n"
+msgstr " OS: %s, ABI: %ld.%ld.%ld\n"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:12565
+msgid "NetBSD procinfo structure"
+msgstr "Cấu trúc thông tin tiến trình procinfo NetBSD"
+
+#: readelf.c:12592 readelf.c:12606
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (cấu trúc thanh ghi)"
+
+#: readelf.c:12594 readelf.c:12608
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (cấu trúc thanh ghi \"fpreg\")"
+
+#: readelf.c:12627
+msgid "NT_STAPSDT (SystemTap probe descriptors)"
+msgstr "NT_STAPSDT (bộ mô tả thăm dò SystemTap)"
+
+#: readelf.c:12660
+#, c-format
+msgid " Provider: %s\n"
+msgstr " Nơi cung cấp: %s\n"
+
+#: readelf.c:12661
+#, c-format
+msgid " Name: %s\n"
+msgstr " Tên: %s\n"
+
+#: readelf.c:12662
+#, c-format
+msgid " Location: "
+msgstr " Vị trí:"
+
+#: readelf.c:12664
+#, c-format
+msgid ", Base: "
+msgstr ", Cơ sở: "
+
+#: readelf.c:12666
+#, c-format
+msgid ", Semaphore: "
+msgstr ", CỠhiệu:"
+
+#: readelf.c:12669
+#, c-format
+msgid " Arguments: %s\n"
+msgstr " Các đối số: %s\n"
+
+#: readelf.c:12682
+msgid "NT_VMS_MHD (module header)"
+msgstr "NT_VMS_MHD (module header)"
+
+#: readelf.c:12684
+msgid "NT_VMS_LNM (language name)"
+msgstr "NT_VMS_LNM (tên ngôn ngữ)"
+
+#: readelf.c:12686
+msgid "NT_VMS_SRC (source files)"
+msgstr "NT_VMS_SRC (tập tin mã nguồn)"
+
+#: readelf.c:12690
+msgid "NT_VMS_EIDC (consistency check)"
+msgstr "NT_VMS_EIDC (kiểm tra tính nhất quán)"
+
+#: readelf.c:12692
+msgid "NT_VMS_FPMODE (FP mode)"
+msgstr "NT_VMS_FPMODE (chế độ FP)"
+
+#: readelf.c:12696
+msgid "NT_VMS_IMGNAM (image name)"
+msgstr "NT_VMS_IMGNAM (tên ảnh)"
+
+#: readelf.c:12698
+msgid "NT_VMS_IMGID (image id)"
+msgstr "NT_VMS_IMGID (id ảnh)"
+
+#: readelf.c:12700
+msgid "NT_VMS_LINKID (link id)"
+msgstr "NT_VMS_LINKID (id liên kết)"
+
+#: readelf.c:12702
+msgid "NT_VMS_IMGBID (build id)"
+msgstr "NT_VMS_IMGBID (id xây dựng)"
+
+#: readelf.c:12704
+msgid "NT_VMS_GSTNAM (sym table name)"
+msgstr "NT_VMS_GSTNAM (tên bảng sym)"
+
+#: readelf.c:12724
+#, c-format
+msgid " Creation date : %.17s\n"
+msgstr " Ngày tạo : %.17s\n"
+
+#: readelf.c:12725
+#, c-format
+msgid " Last patch date: %.17s\n"
+msgstr " Ngày vá cuối: %.17s\n"
+
+#: readelf.c:12726
+#, c-format
+msgid " Module name : %s\n"
+msgstr " Tên mô-đun : %s\n"
+
+#: readelf.c:12727
+#, c-format
+msgid " Module version : %s\n"
+msgstr " Phiên bản môđun : %s\n"
+
+#: readelf.c:12730
+#, c-format
+msgid " Invalid size\n"
+msgstr " Kích cỡ sai\n"
+
+#: readelf.c:12733
+#, c-format
+msgid " Language: %s\n"
+msgstr " Ngôn ngữ: %s\n"
+
+#: readelf.c:12737
+#, c-format
+msgid " Floating Point mode: "
+msgstr " Chế độ dấu chấm động: "
+
+#: readelf.c:12742
+#, c-format
+msgid " Link time: "
+msgstr " Thá»i gian liên kết:"
+
+#: readelf.c:12748
+#, c-format
+msgid " Patch time: "
+msgstr " Thá»i gian vá: "
+
+#: readelf.c:12754
+#, c-format
+msgid " Major id: %u, minor id: %u\n"
+msgstr " id lá»›n: %u, id nhá»: %u\n"
+
+#: readelf.c:12757
+#, c-format
+msgid " Last modified : "
+msgstr " Lần cuối sửa :"
+
+#: readelf.c:12760
+#, c-format
+msgid ""
+"\n"
+" Link flags : "
+msgstr ""
+"\n"
+" Các cỠliên kết :"
+
+#: readelf.c:12763
+#, c-format
+msgid " Header flags: 0x%08x\n"
+msgstr " Các cỠphần đầu: 0x%08x\n"
+
+#: readelf.c:12765
+#, c-format
+msgid " Image id : %s\n"
+msgstr " id ảnh : %s\n"
+
+#: readelf.c:12769
+#, c-format
+msgid " Image name: %s\n"
+msgstr " Tên ảnh: %s\n"
+
+#: readelf.c:12772
+#, c-format
+msgid " Global symbol table name: %s\n"
+msgstr " Tên bảng ký hiệu toàn cục: %s\n"
+
+#: readelf.c:12775
+#, c-format
+msgid " Image id: %s\n"
+msgstr " id ảnh: %s\n"
+
+#: readelf.c:12778
+#, c-format
+msgid " Linker id: %s\n"
+msgstr " id bộ liên kết: %s\n"
+
+#: readelf.c:12853
+msgid "notes"
+msgstr "ghi chú"
+
+#: readelf.c:12859
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"Gặp ghi chú tại khoảng bù 0x%08lx có chiá»u dài 0x%08lx:\n"
+
+#: readelf.c:12861
+#, c-format
+msgid " %-20s %10s\tDescription\n"
+msgstr " %-20s %10s\tMô tả\n"
+
+#: readelf.c:12861
+msgid "Owner"
+msgstr "Chủ sở hữu"
+
+#: readelf.c:12861
+msgid "Data size"
+msgstr "Kích thước dữ liệu"
+
+#: readelf.c:12899 readelf.c:12912
+#, c-format
+msgid "corrupt note found at offset %lx into core notes\n"
+msgstr "tìm thấy ghi chú bị há»ng tại khoảng bù %lx vào ghi chú lõi\n"
+
+#: readelf.c:12901 readelf.c:12914
+#, c-format
+msgid " type: %lx, namesize: %08lx, descsize: %08lx\n"
+msgstr " kiểu: %lx, cỡ_tên: %08lx, cỡ_mô_tả: %08lx\n"
+
+#: readelf.c:13010
+#, 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:13102
+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"
+msgstr ""
+"Tức thá»i readelf này đã được xây dá»±ng\n"
+"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:13149
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s: lá»—i Ä‘á»c dòng đầu tập tin\n"
+
+#: readelf.c:13163
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Tập tin: %s\n"
+
+#: readelf.c:13335
+#, c-format
+msgid "%s: unable to dump the index as none was found\n"
+msgstr "%s: không thể đổ chỉ mục vì không tìm thấy\n"
+
+#: readelf.c:13341
+#, c-format
+msgid "Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"
+msgstr "Chỉ mục của kho lưu %s: (%ld mục nhập, 0x%lx byte trong bảng ký hiệu)\n"
+
+#: readelf.c:13359
+#, c-format
+msgid "Binary %s contains:\n"
+msgstr "Bản nhị phân %s chứa:\n"
+
+#: readelf.c:13367
+#, c-format
+msgid "%s: end of the symbol table reached before the end of the index\n"
+msgstr "%s: gặp kết thúc bảng ký hiệu đằng trước kết thúc chỉ mục\n"
+
+#: readelf.c:13378
+#, c-format
+msgid "%s: symbols remain in the index symbol table, but without corresponding entries in the index table\n"
+msgstr "%s: có ký hiệu còn lại trong bảng ký hiệu chỉ mục, mà không có mục nhập tương ứng trong bảng chỉ mục\n"
+
+#: readelf.c:13383
+#, c-format
+msgid "%s: failed to seek back to start of object files in the archive\n"
+msgstr "%s: lỗi tìm nơi ngược vỠđầu của các tập tin đối tượng trong kho lưu\n"
+
+#: readelf.c:13466 readelf.c:13549
+#, 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"
+
+#: readelf.c:13488
+#, c-format
+msgid "%s: failed to seek to archive member.\n"
+msgstr "%s: lỗi tìm nơi tới mục kho lưu.\n"
+
+#: readelf.c:13567
+#, c-format
+msgid "File %s is not an archive so its index cannot be displayed.\n"
+msgstr "Tập tin %s không phải là một kho lưu thì không có chỉ mục để hiển thị.\n"
+
+#: rename.c:124
+#, 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:159 rename.c:197
+#, c-format
+msgid "unable to rename '%s'; reason: %s"
+msgstr "không thể thay tên \"%s\"; lý do : %s"
+
+#: rename.c:205
+#, c-format
+msgid "unable to copy file '%s'; reason: %s"
+msgstr "không thể sao chép tập tin \"%s\"; lý do : %s"
+
+#: resbin.c:120
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s: không đủ dữ liệu nhị phân"
+
+#: resbin.c:136
+msgid "null terminated unicode string"
+msgstr "chuỗi Unicode được chấm dứt vô giá trị"
+
+#: resbin.c:163 resbin.c:169
+msgid "resource ID"
+msgstr "mã số tài nguyên"
+
+#: resbin.c:208
+msgid "cursor"
+msgstr "con chạy"
+
+#: resbin.c:239 resbin.c:246
+msgid "menu header"
+msgstr "dòng đầu trình đơn"
+
+#: resbin.c:255
+msgid "menuex header"
+msgstr "dòng đầu trình đơn menuex"
+
+#: resbin.c:259
+msgid "menuex offset"
+msgstr "khoảng bù trình đơn menuex"
+
+#: resbin.c:264
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "phiên bản trình đơn không được hỗ trợ %d"
+
+#: resbin.c:289 resbin.c:304 resbin.c:366
+msgid "menuitem header"
+msgstr "dòng đầu mục trình đơn"
+
+#: resbin.c:396
+msgid "menuitem"
+msgstr "mục trình đơn"
+
+#: resbin.c:433 resbin.c:461
+msgid "dialog header"
+msgstr "dòng đầu đối thoại"
+
+#: resbin.c:451
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "gặp phiên bản DIALOGEX bất thÆ°á»ng %d"
+
+#: resbin.c:496
+msgid "dialog font point size"
+msgstr "kích cỡ điểm phông chữ đối thoại"
+
+#: resbin.c:504
+msgid "dialogex font information"
+msgstr "thông tin phông chữ đối thoại dialogex"
+
+#: resbin.c:530 resbin.c:548
+msgid "dialog control"
+msgstr "Ä‘iá»u khiển đối thoại"
+
+#: resbin.c:540
+msgid "dialogex control"
+msgstr "Ä‘iá»u khiển đối thoại dialogex"
+
+#: resbin.c:569
+msgid "dialog control end"
+msgstr "kết thúc Ä‘iá»u khiển đối thoại"
+
+#: resbin.c:581
+msgid "dialog control data"
+msgstr "dữ liệu Ä‘iá»u khiển đối thoại"
+
+#: resbin.c:621
+msgid "stringtable string length"
+msgstr "chiá»u dài bảng chuá»—i"
+
+#: resbin.c:631
+msgid "stringtable string"
+msgstr "chuỗi kiểu bảng chuỗi"
+
+#: resbin.c:661
+msgid "fontdir header"
+msgstr "dòng đầu thư mục phông chữ"
+
+#: resbin.c:675
+msgid "fontdir"
+msgstr "thư mục phông chữ"
+
+#: resbin.c:692
+msgid "fontdir device name"
+msgstr "tên thiết bị thư mục phông chữ"
+
+#: resbin.c:698
+msgid "fontdir face name"
+msgstr "tên mặt chữ thư mục phông chữ"
+
+#: resbin.c:738
+msgid "accelerator"
+msgstr "phím tắt"
+
+#: resbin.c:797
+msgid "group cursor header"
+msgstr "dòng đầu con chạy nhóm"
+
+#: resbin.c:801 resrc.c:1355
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "kiểu con chạy nhóm bất thÆ°á»ng %d"
+
+#: resbin.c:816
+msgid "group cursor"
+msgstr "con chạy nhóm"
+
+#: resbin.c:852
+msgid "group icon header"
+msgstr "dòng đầu biểu tượng nhóm"
+
+#: resbin.c:856 resrc.c:1302
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "kiểu biểu tượng nhóm bất thÆ°á»ng %d"
+
+#: resbin.c:871
+msgid "group icon"
+msgstr "biểu tượng nhóm"
+
+#: resbin.c:935 resbin.c:1173
+msgid "unexpected version string"
+msgstr "chuá»—i phiên bản bất thÆ°á»ng"
+
+#: resbin.c:966
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "chiá»u dài phiên bản %d không tÆ°Æ¡ng ứng vá»›i chiá»u dài tài nguyên %lu."
+
+#: resbin.c:970
+#, c-format
+msgid "unexpected version type %d"
+msgstr "kiểu phiên bản bất thÆ°á»ng %d"
+
+#: resbin.c:982
+#, c-format
+msgid "unexpected fixed version information length %ld"
+msgstr "chiá»u dài thông tin phiên bản cố định bất thÆ°á»ng %ld"
+
+#: resbin.c:985
+msgid "fixed version info"
+msgstr "thông tin phiên bản cố định"
+
+#: resbin.c:989
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "chữ ký phiên bản cố định bất thÆ°á»ng %lu"
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "phiên bản thông tin phiên bản cố định %lu"
+
+#: resbin.c:1022
+msgid "version var info"
+msgstr "thông tin tạm phiên bản"
+
+#: resbin.c:1039
+#, c-format
+msgid "unexpected stringfileinfo value length %ld"
+msgstr "chiá»u dài giá trị thông tin tập tin chuá»—i bất thÆ°á»ng %ld"
+
+#: resbin.c:1059
+msgid "version stringtable"
+msgstr "bảng chuỗi phiên bản"
+
+#: resbin.c:1067
+#, c-format
+msgid "unexpected version stringtable value length %ld"
+msgstr "chiá»u dài giá trị bảng chuá»—i phiên bản bất thÆ°á»ng %ld"
+
+#: resbin.c:1084
+msgid "version string"
+msgstr "chuỗi phiên bản"
+
+#: resbin.c:1101
+#, c-format
+msgid "unexpected version string length %ld != %ld + %ld"
+msgstr "chiá»u dài chuá»—i phiên bản bất thÆ°á»ng %ld != %ld + %ld"
+
+#: resbin.c:1108
+#, c-format
+msgid "unexpected version string length %ld < %ld"
+msgstr "chiá»u dài chuá»—i phiên bản bất thÆ°á»ng %ld < %ld"
+
+#: resbin.c:1133
+#, c-format
+msgid "unexpected varfileinfo value length %ld"
+msgstr "chiá»u dài giá trị thông tin tập tin tạm bất thÆ°á»ng %ld"
+
+#: resbin.c:1152
+msgid "version varfileinfo"
+msgstr "thông tin tập tin tạm phiên bản"
+
+#: resbin.c:1167
+#, c-format
+msgid "unexpected version value length %ld"
+msgstr "chiá»u dài giá trị phiên bản bất thÆ°á»ng %ld"
+
+#: rescoff.c:124
+msgid "filename required for COFF input"
+msgstr "tên tập tin cần thiết cho dữ liệu nhập COFF"
+
+#: rescoff.c:141
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s: không có phần tài nguyên"
+
+#: rescoff.c:173
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s: %s: địa chỉ ở ngoại phạm vi"
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "thư mục"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "mục nhập thư mục có tên"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "tên mục nhập thư mục"
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "thư mục con có tên"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "tài nguyên có tên"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "mục nhập thư mục ID"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "thư mục con ID"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "tài nguyên ID"
+
+#: rescoff.c:320
+msgid "resource type unknown"
+msgstr "không rõ kiểu tài nguyên"
+
+#: rescoff.c:323
+msgid "data entry"
+msgstr "mục nhập dữ liệu"
+
+#: rescoff.c:331
+msgid "resource data"
+msgstr "dữ liệu tài nguyên"
+
+#: rescoff.c:336
+msgid "resource data size"
+msgstr "kích cỡ dữ liệu tài nguyên"
+
+#: rescoff.c:431
+msgid "filename required for COFF output"
+msgstr "tên tập tin cần thiết cho kết xuất COFF"
+
+#: rescoff.c:715
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "không thể lấy kiểu việc định vị lại \"BFD_RELOC_RVA\""
+
+#: resrc.c:262 resrc.c:333
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "không thể mở tập tin tạm thá»i \"%s\": %s"
+
+#: resrc.c:268
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "không thể chuyển hướng đầu ra tiêu chuẩn \"%s\": %s"
+
+#: resrc.c:329
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "không thể thực hiện \"%s\": %s"
+
+#: resrc.c:338
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "Äang dùng tập tin tạm thá»i \"%s\" để Ä‘á»c kết xuất bá»™ tiá»n xá»­ lý\n"
+
+#: resrc.c:345
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "không thể popen \"%s\": %s"
+
+#: resrc.c:347
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "Äang dùng popen để Ä‘á»c kết xuất bá»™ tiá»n xá»­ lý\n"
+
+#: resrc.c:413
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "Äã thá»­ \"%s\"\n"
+
+#: resrc.c:424
+#, c-format
+msgid "Using `%s'\n"
+msgstr "Äang dùng \"%s\"\n"
+
+#: resrc.c:608
+msgid "preprocessing failed."
+msgstr "lá»—i tiá»n xá»­ lý."
+
+#: resrc.c:639
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s: gặp kết thúc tập tin bất thÆ°á»ng"
+
+#: resrc.c:688
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s: việc Ä‘á»c %lu đã trả lại %lu"
+
+#: resrc.c:727 resrc.c:1502
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "lỗi lấy trạng thái vỠtập tin mảng ảnh \"%s\": %s"
+
+#: resrc.c:778
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "tập tin con chạy \"%s\" không chứa dữ liệu con chạy"
+
+#: resrc.c:810 resrc.c:1210
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: lá»—i fseek tá»›i %lu: %s"
+
+#: resrc.c:936
+msgid "help ID requires DIALOGEX"
+msgstr "mã số trợ giúp cần thiết DIALOGEX"
+
+#: resrc.c:938
+msgid "control data requires DIALOGEX"
+msgstr "dữ liệu Ä‘iá»u khiển cần thiết DIALOGEX"
+
+#: resrc.c:966
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "lỗi lấy trạng thái vỠtập tin phông chữ \"%s\": %s"
+
+#: resrc.c:1179
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "tập tin biểu tượng \"%s\" không chứa dữ liệu biểu tượng"
+
+#: resrc.c:1724 resrc.c:1759
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "lỗi lấy trạng thái vỠtập tin \"%s\": %s"
+
+#: resrc.c:1958
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "không thể mở \"%s\" cho kết xuất: %s"
+
+#: size.c:79
+#, 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 bên trong tập tin nhị phân\n"
+
+#: size.c:80
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr " Không ghi rõ tập tin nhập vào thì giả sử <a.out>\n"
+
+#: size.c:81
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n"
+" -t --totals Display the total sizes (Berkeley only)\n"
+" --common Display total size for *COM* syms\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"
+msgstr ""
+" Tùy chá»n:\n"
+" -A|-B --format={sysv|berkeley}\n"
+"\t\t\tChá»n kiểu dáng kết xuất (mặc định là %s)\n"
+" -o|-d|-x --radix={8|10|16}\n"
+"\t\t\tHiển thị các số dạng bát phân, thập phân hay thập lục\n"
+" -t --totals Hiển thị các kích cỡ tổng cộng (chỉ Berkeley)\n"
+" --common Hiển thị kích cỡ tổng cổng cho các sym *COM*\n"
+" --target=<tên_bfd> Lập định dạng tập tin nhị phân\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:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "đối sô không hợp lệ tới \"--format\" (định dạng): %s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "Cơ sở không hợp lệ: %s\n"
+
+#: srconv.c:1733
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "Chuyển đổi một tập tin đối tượng COFF thành một tập tin đối tượng SYSROFF\n"
+
+#: srconv.c:1734
+#, c-format
+msgid ""
+" The options are:\n"
+" -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 ""
+" Tùy chá»n:\n"
+" -q --quick (Cũ nên bị bỠqua)\n"
+" -n --noprescan Äừng quét để chuyển đổi các Ä‘iá»u dùng chung (common)\n"
+"\t\tthành lá»i định nghÄ©a (def)\n"
+" -d --debug Hiển thị thông tin vá» hành Ä‘á»™ng hiện thá»i\n"
+" @<file> Äá»c các tùy chá»n từ tập tin này\n"
+" -h --help Hiển thị trợ giúp này\n"
+" -v --version In ra số thứ tự phiên bản của chương trình\n"
+
+#: srconv.c:1880
+#, c-format
+msgid "unable to open output file %s"
+msgstr "không thể mở tập tin kết xuất %s"
+
+#: stabs.c:328 stabs.c:1717
+msgid "numeric overflow"
+msgstr "tràn thuộc số"
+
+#: stabs.c:338
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "stab sai: %s\n"
+
+#: stabs.c:346
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "Cảnh báo : %s: %s\n"
+
+#: stabs.c:456
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "\"N_LBRAC\" không phải bên trong hàm\n"
+
+#: stabs.c:495
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "Quá nhiá»u \"N_RBRAC\"\n"
+
+#: stabs.c:727
+msgid "unknown C++ encoded name"
+msgstr "không rõ tên mã C++"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1262
+msgid "unrecognized cross reference type"
+msgstr "không nhận ra kiểu tham chiếu chéo"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1809
+msgid "missing index type"
+msgstr "thiếu kiểu chỉ mục"
+
+#: stabs.c:2129
+msgid "unknown virtual character for baseclass"
+msgstr "không rõ ký tự ảo cho hạng cơ bản"
+
+#: stabs.c:2147
+msgid "unknown visibility character for baseclass"
+msgstr "không rõ ký tự tình trạng hiển thị cho hạng cơ bản"
+
+#: stabs.c:2337
+msgid "unnamed $vb type"
+msgstr "kiểu $vb chưa có tên"
+
+#: stabs.c:2343
+msgid "unrecognized C++ abbreviation"
+msgstr "không nhận ra lá»i viết tắt C++"
+
+#: stabs.c:2419
+msgid "unknown visibility character for field"
+msgstr "không rõ ký tá»± tình trạng hiển thị cho trÆ°á»ng"
+
+#: stabs.c:2679
+msgid "const/volatile indicator missing"
+msgstr "thiếu chỉ thị bất biến/hay thay đổi"
+
+#: stabs.c:2924
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "Không có việc tháo gỡ cho \"%s\"\n"
+
+#: stabs.c:3224
+msgid "Undefined N_EXCL"
+msgstr "Chưa định nghĩa \"N_EXCL\""
+
+#: stabs.c:3304
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "Con số kiểu tập tin %d ở ngoài phạm vi\n"
+
+#: stabs.c:3309
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "Con số kiểu chỉ mục %d ở ngoài phạm vi\n"
+
+#: stabs.c:3388
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "Không nhận ra kiểu XCOFF %d\n"
+
+#: stabs.c:3680
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "tên đã rối sai \"%s\"\n"
+
+#: stabs.c:3775
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "không có kiểu đối số trong chuỗi đã rối\n"
+
+#: stabs.c:5125
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "Tên đã tháo gỡ không phải là hàm\n"
+
+#: stabs.c:5167
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "Gặp kiểu bất thÆ°á»ng trong việc tháo gỡ danh sách đối số v3\n"
+
+#: stabs.c:5234
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "Không nhận ra thành phần tháo gỡ %d\n"
+
+#: stabs.c:5286
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "Lỗi in ra biểu mẫu đã tháo gỡ\n"
+
+#: stabs.c:5366
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "Không thể lấy kiểu dựng sẳn (builtin) đã tháo gỡ\n"
+
+#: stabs.c:5415
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "Gặp má»™t số varargs đã tháo gỡ bất thÆ°á»ng\n"
+
+#: stabs.c:5422
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "Không nhận ra kiểu dựng sẳn (builtin) đã tháo gỡ\n"
+
+#: strings.c:186 strings.c:245
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "đối số kiểu số nguyên vẫn không hợp lệ %s"
+
+#: strings.c:248
+#, c-format
+msgid "invalid minimum string length %d"
+msgstr "sai đắt chiá»u dài chuá»—i tối thiểu %d"
+
+#: strings.c:651
+#, 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à đầu vào tiêu chuẩn)\n"
+
+#: strings.c:652
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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 -V --version Print the program's version number\n"
+msgstr ""
+" Tùy chá»n:\n"
+" -a - --all Quét toàn bộ tập tin, không chỉ phần dữ liệu\n"
+" -f --print-file-name Hiển thị tên tập tin ở trước mỗi chuỗi\n"
+" -n --bytes=[số]\n"
+" Tìm và in ra dãy đã chấm dứt NUL nào có ít nhất\n"
+" -<số> số ký tự này (mặc định là 4).\n"
+" -t --radix={o,d,x}\n"
+"\t\tIn ra địa điểm của chuỗi dạng bát phân, thập phân hay thập lục\n"
+" -o Biệt hiệu cho \"--radix=o\" \n"
+" -T --target=<TÊN_BFD> Ghi rõ định dạng tập tin nhị phân\n"
+" -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 Hiển thị trợ giúp này\n"
+" -v -V --version In ra số thứ tự phiên bản của chương trình\n"
+
+#: sysdump.c:66
+msgid "*undefined*"
+msgstr "*chưa định nghĩa*"
+
+#: sysdump.c:137
+#, c-format
+msgid "SUM IS %x\n"
+msgstr "SUM IS %x\n"
+
+#: sysdump.c:503
+#, c-format
+msgid "GOT A %x\n"
+msgstr "GOT A %x\n"
+
+#: sysdump.c:521
+#, c-format
+msgid "WANTED %x!!\n"
+msgstr "MUá»N %x!!\n"
+
+#: sysdump.c:539
+msgid "SYMBOL INFO"
+msgstr "SYMBOL INFO"
+
+#: sysdump.c:557
+msgid "DERIVED TYPE"
+msgstr "DERIVED TYPE"
+
+#: sysdump.c:614
+msgid "MODULE***\n"
+msgstr "MODULE***\n"
+
+#: sysdump.c:647
+#, 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 được\n"
+
+#: sysdump.c:648
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Tùy chá»n:\n"
+" -h --help Hiển thị trợ giúp này\n"
+" -v --version In ra số thứ tự phiên bản của chương trình\n"
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "không thể mở tập tin nhập liệu %s"
+
+#: version.c:36
+#, c-format
+msgid "Copyright 2011 Free Software Foundation, Inc.\n"
+msgstr "Tác quyá»n năm 2011 của Tổ chức Phần má»m Tá»± do.\n"
+
+#: version.c:37
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License version 3 or (at your option) any later version.\n"
+"This program has absolutely no warranty.\n"
+msgstr ""
+"ChÆ°Æ¡ng trình này là phần má»m tá»± do; bạn có quyá»n phát hành lại\n"
+"nó vá»›i Ä‘iá»u kiện của Giấy Phép Công Cá»™ng GNU (GPL)\n"
+"phiên bản 3 hoặc (tùy chá»n) bắt cứ phiên bản sau nào.\n"
+"Chương trình này không bảo đảm gì cả.\n"
+
+#: windmc.c:190
+#, c-format
+msgid "can't create %s file `%s' for output.\n"
+msgstr "không thể tạo %s tập tin `%s' để kết xuất.\n"
+
+#: windmc.c:198
+#, c-format
+msgid "Usage: %s [option(s)] [input-file]\n"
+msgstr "Sá»­ dụng: %s [tùy_chá»n] [tập_tin_nhập]\n"
+
+#: windmc.c:200
+#, c-format
+msgid ""
+" The options are:\n"
+" -a --ascii_in Read input file as ASCII file\n"
+" -A --ascii_out Write binary messages as ASCII\n"
+" -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n"
+" -c --customflag Set custom flags for messages\n"
+" -C --codepage_in=<val> Set codepage when reading mc text file\n"
+" -d --decimal_values Print values to text files decimal\n"
+" -e --extension=<extension> Set header extension used on export header file\n"
+" -F --target <target> Specify output target for endianness.\n"
+" -h --headerdir=<directory> Set the export directory for headers\n"
+" -u --unicode_in Read input file as UTF16 file\n"
+" -U --unicode_out Write binary messages as UFT16\n"
+" -m --maxlength=<val> Set the maximal allowed message length\n"
+" -n --nullterminate Automatic add a zero termination to strings\n"
+" -o --hresult_use Use HRESULT definition instead of status code definition\n"
+" -O --codepage_out=<val> Set codepage used for writing text file\n"
+" -r --rcdir=<directory> Set the export directory for rc files\n"
+" -x --xdbg=<directory> Where to create the .dbg C include file\n"
+" that maps message ID's to their symbolic name.\n"
+msgstr ""
+" Các tùy chá»n là:\n"
+" -a --ascii_in Äá»c tập tin nhập vào dạng tập tin ASCII\n"
+" -A --ascii_out Ghi các thông điệp nhị phân dạng ASCII\n"
+" -b --binprefix Tên tập tin \".bin\" có tiá»n tố \".mc filename_\" để duy nhất.\n"
+" -c --customflag Äặt các _cá» riêng_ cho thông Ä‘iệp\n"
+" -C --codepage_in=<giá_trị> Äặt trang mã khi Ä‘á»c tập tin văn bản mc\n"
+" -d --decimal_values In ra các giá trị vào tập tin văn bản thập phân\n"
+" -e --extension=<phần_mở_rá»™ng> Äặt Ä‘uôi mở rá»™ng sá»­ dụng khi xuất tập tin phần đầu\n"
+" -F --target <đích> Ghi rõ đích xuất cho endianness\n"
+" -h --headerdir=<thÆ°_mục> Äặt thÆ° mục xuất khẩu cho các phần đầu\n"
+" -u --unicode_in Äá»c tập tin nhập vào dạng UTF16\n"
+" -U --unicode_out Ghi các thông điệp nhị phân dạng UFT16\n"
+" -m --maxlength=<giá_trị> Äặt Ä‘á»™ dài thông Ä‘iệp tối Ä‘a được phép\n"
+" -n --nullterminate Tự động thêm vào chuỗi sự chấm dứt số không\n"
+" -o --hresult_use _Dùng_ lá»i xác định HRESULT thay cho\n"
+"\t\tlá»i xác định mã trạng thái\n"
+" -O --codepage_out=<giá_trị> Äặt trang mã dùng để ghi tập tin văn bản\n"
+" -r --rcdir=<thÆ°_mục> Äặt thÆ° mục xuất khẩu cho các tập tin rc\n"
+" -x --xdbg=<thư_mục> Nơi cần tạo tập tin bao gồm C .dbg mà\n"
+" ánh xạ các mã nhận diện thông điệp tới tên kiểu ký hiệu của nó.\n"
+
+#: windmc.c:220
+#, c-format
+msgid ""
+" -H --help Print this help message\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -V --version Print version information\n"
+msgstr ""
+" -H --help In ra trợ giúp này\n"
+" -v --verbose Hiển thị chi tiết vỠtiến hành\n"
+" -V --version In ra thông tin vỠphiên bản\n"
+
+#: windmc.c:261 windres.c:411
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: cảnh báo : "
+
+#: windmc.c:262
+#, c-format
+msgid "A codepage was specified switch `%s' and UTF16.\n"
+msgstr "Một trang mã được chỉ định chuyển đổi giữa \"%s\" và UTF16.\n"
+
+#: windmc.c:263
+#, c-format
+msgid "\tcodepage settings are ignored.\n"
+msgstr "\tthiết lập trang mã bị bỠqua.\n"
+
+#: windmc.c:307
+msgid "try to add a ill language."
+msgstr "thử thêm một ngôn ngữ sai."
+
+#: windmc.c:1116
+#, c-format
+msgid "unable to open file `%s' for input.\n"
+msgstr "không thể mở tập tin `%s' để nhập.\n"
+
+#: windmc.c:1124
+#, c-format
+msgid "unable to read contents of %s"
+msgstr "không thể Ä‘á»c ná»™i dung của %s"
+
+#: windmc.c:1136
+msgid "input file does not seems to be UFT16.\n"
+msgstr "tập tin nhập vào có vẻ không phải UTF16.\n"
+
+#: windres.c:216
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "không thể mở %s \"%s\": %s"
+
+#: windres.c:390
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ": mong đợi một thư mục\n"
+
+#: windres.c:402
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ": mong đợi một lá\n"
+
+#: windres.c:413
+#, c-format
+msgid ": duplicate value\n"
+msgstr ": giá trị trùng\n"
+
+#: windres.c:563
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "không rõ kiểu định dạng \"%s\""
+
+#: windres.c:564
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s: định dạng được hỗ trợ :"
+
+#. Otherwise, we give up.
+#: windres.c:647
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "không thể quyết định kiểu tập tin \"%s\": hãy sá»­ dụng tùy chá»n \"-J\""
+
+#: windres.c:659
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Sá»­ dụng: %s [tùy_chá»n...] [tập_tin_nhập] [tập_tin_xuất]\n"
+
+#: windres.c:661
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" --preprocessor-arg=<arg> Additional preprocessor argument\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -c --codepage=<codepage> Specify default codepage\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+" Tùy chá»n:\n"
+" -i --input=<tập_tin> Tập tin nhập vào\n"
+" -o --output=<tập_tin> Tập tin kết xuất\n"
+" -J --input-format=<định_dạng> Ghi rõ định dạng nhập vào\n"
+" -O --output-format=<định_dạng> Ghi rõ định dạng kết xuất\n"
+" -F --target=<đích> Ghi rõ đích COFF\n"
+" --preprocessor=<chÆ°Æ¡ng_trình> ChÆ°Æ¡ng trình cần dùng để tiá»n xá»­ lý tập tin rc (tài nguyên)\n"
+" --preprocessor-arg=<arg> Các đối số phụ thêm của bá»™ tiá»n xá»­ lý\n"
+" -I --include-dir=<thÆ°_mục> Bao gồm thÆ° mục này khi tiá»n xá»­ lý tập tin rc\n"
+" -D --define <ký_hiệu>[=<giá_trị>] Äịnh nghÄ©a ký hiệu SYM khi tiá»n xá»­ lý tập tin rc\n"
+" -U --undefine <ký_hiệu> Hủy định nghÄ©a ký hiệu SYM khi tiá»n xá»­ lý tập tin rc\n"
+" -v --verbose Chi tiết: xuất thông tin vá» hành Ä‘á»™ng hiện thá»i\n"
+" -c --codepage=<trang_mã> Ghi rõ trang mã mặc định\n"
+" -l --language=<giá_trị> Äặt ngôn ngữ để Ä‘á»c tập tin rc (tài nguyên)\n"
+" --use-temp-file Dùng tập tin tạm thá»i thay cho popen để Ä‘á»c kết xuất tiá»n xá»­ lý\n"
+" --no-use-temp-file Dùng popen (mặc định)\n"
+
+#: windres.c:679
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug Bật khả năng gỡ lỗi kiểu bộ phân tích\n"
+
+#: windres.c:682
+#, 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 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ày\n"
+" -h, --help Hiển thị trợ giúp này\n"
+" -V, --version Hiển thị thông tin vỠphiên bản\n"
+
+#: windres.c:687
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"ÄỊNH DẠNG là má»™t của rc, res hay coff, và được quyết định\n"
+"từ phần mở rộng tên tập tin nếu chưa ghi rõ.\n"
+"Một tên tập tin đơn là tập tin nhập. Không có tập tin nhập thì\n"
+"đầu vào tiêu chuẩn, mặc định là rc. Không có tập tin kết xuất thì\n"
+"đầu ra tiêu chuẩn, mặc định là rc.\n"
+
+#: windres.c:850
+msgid "invalid codepage specified.\n"
+msgstr "ghi rõ trang mã không hợp lệ.\n"
+
+#: windres.c:865
+msgid "invalid option -f\n"
+msgstr "tùy chá»n không hợp lệ \"-f\"\n"
+
+#: windres.c:870
+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:959
+#, 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 định dạng nhập, hãy dùng \"-J\" để thay thế.\n"
+
+#: windres.c:1072
+msgid "no resources"
+msgstr "không có tài nguyên"
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "việc \"string_hash_lookup\" (tra tìm băm chuỗi) bị lỗi: %s"
+
+#: wrstabs.c:637
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type: (kiểu số nguyên stab) kích cỡ sai %u"
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s: cảnh báo : không rõ kích cỡ cho trÆ°á»ng \"%s\" trong cấu trúc"
diff --git a/binutils-2.24/binutils/po/zh_CN.gmo b/binutils-2.24/binutils/po/zh_CN.gmo
new file mode 100644
index 00000000..b4448b15
--- /dev/null
+++ b/binutils-2.24/binutils/po/zh_CN.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/zh_CN.po b/binutils-2.24/binutils/po/zh_CN.po
new file mode 100644
index 00000000..52c10895
--- /dev/null
+++ b/binutils-2.24/binutils/po/zh_CN.po
@@ -0,0 +1,4742 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# Wang Li <charles@linux.net.cn>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.12.91\n"
+"POT-Creation-Date: 2002-07-23 15:55-0400\n"
+"PO-Revision-Date: 2003-05-09 17:28+0800\n"
+"Last-Translator: Wang Li <charles@linux.net.cn>\n"
+"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=gb2312\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: addr2line.c:74
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "Ó÷¨£º%s [Ñ¡Ïî] [µØÖ·]\n"
+
+#: addr2line.c:75
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " ½«µØַת»»³ÉÎļþÃû/ÐкŶԡ£\n"
+
+#: addr2line.c:76
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " Èç¹ûûÓÐÔÚÃüÁîÐÐÖиø³öµØÖ·£¬¾Í´Ó±ê×¼ÊäÈëÖжÁÈ¡ËüÃÇ\n"
+
+#: addr2line.c:77
+msgid ""
+" The options are:\n"
+" -b --target=<bfdname> Set the binary file format\n"
+" -e --exe=<executable> Set the input file name (default is a.out)\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Ñ¡ÏîΪ£º\n"
+" -b --target=<bfdname> É趨¶þ½øÖÆÎļþ¸ñʽ\n"
+" -e --exe=<executable> É趨ÊäÈëÎļþÃû (ĬÈÏΪ a.out)\n"
+" -s --basenames È¥³ýĿ¼Ãû\n"
+" -f --functions ÏÔʾº¯ÊýÃû\n"
+" -C --demangle[=style] ½âÂ뺯ÊýÃû\n"
+" -h --help ÏÔʾ±¾ÐÅÏ¢\n"
+" -v --version ÏÔʾ³ÌÐòµÄ°æ±¾ºÅ\n"
+"\n"
+
+#: addr2line.c:89 ar.c:297 coffdump.c:479 nlmconv.c:1119 objcopy.c:424
+#: objcopy.c:457 readelf.c:2310 size.c:104 srconv.c:1962 strings.c:666
+#: sysdump.c:774 windres.c:733
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "½« bug ±¨¸æµ½ %s\n"
+
+#: addr2line.c:248
+#, c-format
+msgid "%s: can not get addresses from archive"
+msgstr "%s£ºÎÞ·¨´Ó¹éµµÎļþÖеõ½µØÖ·"
+
+#: addr2line.c:320 nm.c:395 objdump.c:2782
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "δ֪µÄ½âÂë(demangle)·ç¸ñ¡°%s¡±"
+
+#: ar.c:238
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "¹éµµÎļþÖÐûÓÐÌõÄ¿ %s\n"
+
+#: ar.c:255
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+msgstr "Ó÷¨£º%s [·ÂÕæÑ¡Ïî] [-]{dmpqrstx}[abcfilNoPsSuvV] [³ÉÔ±Ãû] [¼ÆÊý] ¹éµµÎļþ Îļþ...\n"
+
+#: ar.c:258
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<mri-½Å±¾]\n"
+
+#: ar.c:259
+msgid " commands:\n"
+msgstr " ÃüÁ\n"
+
+#: ar.c:260
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - ´Ó¹éµµÎļþÖÐɾ³ýÎļþ\n"
+
+#: ar.c:261
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - Ôڹ鵵ÎļþÖÐÒƶ¯Îļþ\n"
+
+#: ar.c:262
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - ´òÓ¡Ôڹ鵵ÎļþÖÐÕÒµ½µÄÎļþ\n"
+
+#: ar.c:263
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - ½«Îļþ¿ìËÙ×·¼Óµ½¹éµµÎļþÖÐ\n"
+
+#: ar.c:264
+msgid " r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
+msgstr " r[ab][f][u] - Ìæ»»¹éµµÎļþÖÐÒÑÓеÄÎļþ»ò¼ÓÈëÐÂÎļþ\n"
+
+#: ar.c:265
+msgid " t - display contents of archive\n"
+msgstr " t - ÏÔʾ¹éµµÎļþµÄÄÚÈÝ\n"
+
+#: ar.c:266
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - ´Ó¹éµµÎļþÖзֽâÎļþ\n"
+
+#: ar.c:267
+msgid " command specific modifiers:\n"
+msgstr " Ìض¨ÃüÁîÐÞÊηû£º\n"
+
+#: ar.c:268
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - ½«ÎļþÖÃÓÚ [³ÉÔ±Ãû] Ö®ºó\n"
+
+#: ar.c:269
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - ½«ÎļþÖÃÓÚ [³ÉÔ±Ãû] ֮ǰ (ÓÚ [i] Ïàͬ)\n"
+
+#: ar.c:270
+msgid " [N] - use instance [count] of name\n"
+msgstr ""
+
+#: ar.c:271
+msgid " [f] - truncate inserted file names\n"
+msgstr ""
+
+#: ar.c:272
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - ÔÚÆ¥ÅäʱʹÓÃÍêÕûµÄ·¾¶Ãû\n"
+
+#: ar.c:273
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - ±£ÁôÔ­À´µÄÈÕÆÚ\n"
+
+#: ar.c:274
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - Ö»Ìæ»»±Èµ±Ç°¹éµµÄÚÈݸüеÄÎļþ\n"
+
+#: ar.c:275
+msgid " generic modifiers:\n"
+msgstr " ͨÓÃÐÞÊηû£º\n"
+
+#: ar.c:276
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - ²»ÔÚ±ØÐë´´½¨¿âµÄʱºò¸ø³ö¾¯¸æ\n"
+
+#: ar.c:277
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - ´´½¨¹éµµË÷Òý (cf. ranlib)\n"
+
+#: ar.c:278
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - ²»Òª´´½¨·ûºÅ±í\n"
+
+#: ar.c:279
+msgid " [v] - be verbose\n"
+msgstr " [v] - Êä³ö½Ï¶àÐÅÏ¢\n"
+
+#: ar.c:280
+msgid " [V] - display the version number\n"
+msgstr " [V] - ÏÔʾ°æ±¾ºÅ\n"
+
+#: ar.c:287
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "Ó÷¨£º%s [Ñ¡Ïî] ¹éµµÎļþ\n"
+
+#: ar.c:288
+msgid " Generate an index to speed access to archives\n"
+msgstr " Éú³ÉË÷ÒýÒÔ¼Ó¿ì¶Ô¹éµµÎļþµÄ·ÃÎÊ\n"
+
+#: ar.c:289
+msgid ""
+" The options are:\n"
+" -h --help Print this help message\n"
+" -V --version Print version information\n"
+msgstr ""
+" Ñ¡ÏîΪ£º\n"
+" -h --help ´òÓ¡±¾ÇóÖúÐÅÏ¢\n"
+" -V --version ´òÓ¡°æ±¾ÐÅÏ¢\n"
+
+#: ar.c:512
+msgid "two different operation options specified"
+msgstr "¸ø³öÁËÁ½¸ö²»Í¬µÄ²Ù×÷Ñ¡Ïî"
+
+#: ar.c:587
+#, c-format
+msgid "illegal option -- %c"
+msgstr "·Ç·¨Ñ¡Ïî -- %c"
+
+#: ar.c:619
+msgid "no operation specified"
+msgstr "ûÓÐÖ¸¶¨²Ù×÷"
+
+#: ar.c:622
+msgid "`u' is only meaningful with the `r' option."
+msgstr "¡°u¡±Ö»ÔÚʹÓá°r¡±Ñ¡ÏîµÄʱºò²ÅÓÐÒâÒå¡£"
+
+#: ar.c:632
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "¡°N¡±Ö»ÔÚʹÓá°x¡±ºÍ¡°d¡±Ñ¡ÏîµÄʱºò²ÅÓÐÒâÒå¡£"
+
+#: ar.c:635
+msgid "Value for `N' must be positive."
+msgstr "¡°N¡±µÄÖµ±ØÐëÊÇÕýÊý¡£"
+
+#: ar.c:718
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "ÄÚ²¿´íÎó -- ¸ÃÑ¡ÏîÉÐδʵÏÖ"
+
+#: ar.c:837 ar.c:888 ar.c:1333 objcopy.c:1348
+#, c-format
+msgid "internal stat error on %s"
+msgstr ""
+
+#: ar.c:841
+#, c-format
+msgid ""
+"\n"
+"<member %s>\n"
+"\n"
+msgstr ""
+"\n"
+"<³ÉÔ± %s>\n"
+"\n"
+
+#: ar.c:857 ar.c:925
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s ²»ÊÇÓÐЧµÄ¹éµµÎļþ"
+
+#: ar.c:893
+#, c-format
+msgid "stat returns negative size for %s"
+msgstr "stat %s ·µ»Ø¸ºÊý´óС"
+
+#: ar.c:1020
+#, c-format
+msgid "%s is not an archive"
+msgstr "%s ²»Êǹ鵵Îļþ"
+
+#: ar.c:1027
+#, c-format
+msgid "creating %s"
+msgstr "ÕýÔÚ´´½¨ %s"
+
+#: ar.c:1233
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "ûÓÐÃûΪ¡°%s¡±µÄ³ÉÔ±\n"
+
+#: ar.c:1285
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "¹éµµÎļþ %2$s ÖÐûÓÐÌõÄ¿ %1$s£¡"
+
+#: ar.c:1422
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s£ºÃ»ÓÐÒª¸üеĹ鵵ӳÉä"
+
+#: arsup.c:86
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "¹éµµÎļþÖÐûÓÐÌõÄ¿ %s¡£\n"
+
+#: arsup.c:117
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "ÎÞ·¨´ò¿ªÎļþ %s\n"
+
+#: arsup.c:172
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s£ºÎÞ·¨´ò¿ªÊä³ö¹éµµ %s\n"
+
+#: arsup.c:189
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s£ºÎÞ·¨´ò¿ªÊäÈë¹éµµ %s\n"
+
+#: arsup.c:198
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s£ºÎļþ %s ²»Êǹ鵵Îļþ\n"
+
+#: arsup.c:241
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s£ºÉÐδָ¶¨Êä³ö¹éµµÎļþ\n"
+
+#: arsup.c:262 arsup.c:301 arsup.c:343 arsup.c:364 arsup.c:430
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s£ºÎ´´ò¿ªÊä³ö¹éµµÎļþ\n"
+
+#: arsup.c:273 arsup.c:385 arsup.c:411
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s£ºÎÞ·¨´ò¿ªÎļþ %s\n"
+
+#: arsup.c:328 arsup.c:407 arsup.c:489
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s£ºÎÞ·¨ÕÒµ½Ä£¿éÎļþ %s\n"
+
+#: arsup.c:439
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "µ±Ç°´ò¿ªµÄ¹éµµÎļþÊÇ %s\n"
+
+#: arsup.c:464
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s£ºÎ´´ò¿ª¹éµµÎļþ\n"
+
+#: binemul.c:39
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " ûÓзÂÕæÌØÓеÄÑ¡Ïî\n"
+
+#. Macros for common output.
+#: binemul.h:42
+#, c-format
+msgid " emulation options: \n"
+msgstr " ·ÂÕæÑ¡Ï\n"
+
+#: bucomm.c:106
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "ÎÞ·¨½« BFD ĬÈϱêµÄÉèÖÃΪ¡°%s¡±£º%s"
+
+#: bucomm.c:118
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s£ºÆ¥Åä¸ñʽ£º"
+
+#: bucomm.c:135
+msgid "Supported targets:"
+msgstr "Ö§³ÖµÄÄ¿±ê£º"
+
+#: bucomm.c:137
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s£ºÖ§³ÖµÄÄ¿±ê£º"
+
+#: bucomm.c:153
+msgid "Supported architectures:"
+msgstr "Ö§³ÖµÄÌåϵ½á¹¹£º"
+
+#: bucomm.c:155
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s£ºÖ§³ÖµÄÌåϵ½á¹¹£º"
+
+#: bucomm.c:262
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s£º´íÎóµÄ±àºÅ£º%s"
+
+#: coffdump.c:107
+#, c-format
+msgid "#lines %d "
+msgstr "#ÐкŠ%d "
+
+#: coffdump.c:471 sysdump.c:767
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "Ó÷¨£º%s [Ñ¡Ïî] ÊäÈëÎļþ\n"
+
+#: coffdump.c:472
+msgid " Print a human readable interpretation of a SYSROFF object file\n"
+msgstr " ´òÓ¡ÊÊÓÚÔĶÁµÄ¶Ô SYSROFF Ä¿±êÎļþµÄ½âÊÍ\n"
+
+#: coffdump.c:473
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Ñ¡ÏîΪ£º\n"
+" -h --help ÏÔʾ±¾ÇóÖúÐÅÏ¢\n"
+" -v --version ÏÔʾ³ÌÐòµÄ°æ±¾ºÅ\n"
+"\n"
+
+#: coffdump.c:541 srconv.c:2052 sysdump.c:831
+msgid "no input file specified"
+msgstr "δָ¶¨ÊäÈëÎļþ"
+
+#: debug.c:653
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace£ºÃ»Óе±Ç°Îļþ"
+
+#: debug.c:736
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source£ºÃ»ÓÐ debug_set_filename µ÷ÓÃ"
+
+#: debug.c:795
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function£ºÃ»ÓÐ debug_set_filename µ÷ÓÃ"
+
+#: debug.c:851
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter£ºÃ»Óе±Ç°º¯Êý"
+
+#: debug.c:885
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function£ºÃ»Óе±Ç°º¯Êý"
+
+#: debug.c:891
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function£ºÄ³Ð©¿éûÓйرÕ"
+
+#: debug.c:921
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block£ºÃ»Óе±Ç°¿é"
+
+#: debug.c:959
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block£ºÃ»Óе±Ç°¿é"
+
+#: debug.c:966
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block£ºÊÔͼ¹Ø±Õ¶¥²ã¿é"
+
+#: debug.c:992
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line£ºÃ»Óе±Ç°µ¥Ôª"
+
+#. FIXME
+#: debug.c:1046
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block£ºÎ´ÊµÏÖ"
+
+#. FIXME
+#: debug.c:1058
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block£ºÎ´ÊµÏÖ"
+
+#. FIXME.
+#: debug.c:1152
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label£ºÎ´ÊµÏÖ"
+
+#: debug.c:1178
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable£ºÃ»Óе±Ç°Îļþ"
+
+#: debug.c:1194
+msgid "debug_record_variable: no current block"
+msgstr "debug_record_variable£ºÃ»Óе±Ç°¿é"
+
+#: debug.c:1763
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type£º²»Ö§³ÖµÄÖÖÀà"
+
+#: debug.c:1964
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type£ºÃ»Óе±Ç°Îļþ"
+
+#: debug.c:2012
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type£ºÃ»Óе±Ç°Îļþ"
+
+#: debug.c:2020
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type£ºÒѳ¢ÊÔ¸ü¶àµÄ±ê¼Ç"
+
+#: debug.c:2059
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "¾¯¸æ£ºÀàÐÍ´óСÓÉ %d ¸ÄΪ %d\n"
+
+#: debug.c:2083
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type£ºÃ»Óе±Ç°±àÒëµ¥Ôª"
+
+#: debug.c:2190
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type£º¹ØÓÚ %s µÄÑ­»·µ÷ÊÔÐÅÏ¢\n"
+
+#: debug.c:2650
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type£ºÓöµ½·Ç·¨ÀàÐÍ"
+
+#: dlltool.c:735 dlltool.c:760 dlltool.c:786
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "ÄÚ²¿´íÎó£ºÎ´ÖªµÄ»úÆ÷ÀàÐÍ£º%d"
+
+#: dlltool.c:823
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "ÎÞ·¨´ò¿ª def Îļþ£º%s"
+
+#: dlltool.c:828
+#, c-format
+msgid "Processing def file: %s"
+msgstr "´¦Àí def Îļþ£º%s"
+
+#: dlltool.c:832
+msgid "Processed def file"
+msgstr "ÒÑ´¦ÀíµÄ def Îļþ"
+
+#: dlltool.c:858
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "def ÎļþÖÐÓï·¨´íÎó %s£º%d"
+
+#: dlltool.c:897
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr ""
+
+#: dlltool.c:900 dlltool.c:919
+msgid "Can't have LIBRARY and NAME"
+msgstr ""
+
+#: dlltool.c:916
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr ""
+
+#: dlltool.c:1174 resrc.c:271
+#, c-format
+msgid "wait: %s"
+msgstr "µÈ´ý£º%s"
+
+#: dlltool.c:1179 dllwrap.c:430 resrc.c:276
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "×Ó½ø³ÌÊÕµ½ÖÂÃüÐźŠ%d"
+
+#: dlltool.c:1185 dllwrap.c:437 resrc.c:283
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s ÒÔ״̬ %d Í˳ö"
+
+#: dlltool.c:1217
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "´Ó %2$s ÖÐµÄ %1$s ½Ú»ñÈ¡ÐÅÏ¢"
+
+#: dlltool.c:1341
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr ""
+
+#: dlltool.c:1436 dlltool.c:1447 nm.c:959 nm.c:970 objdump.c:386 objdump.c:401
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s£ºÎÞ·ûºÅ"
+
+#. FIXME: we ought to read in and block out the base relocations
+#: dlltool.c:1474
+#, c-format
+msgid "Done reading %s"
+msgstr "¶ÁÈë %s Íê³É"
+
+#: dlltool.c:1485
+#, c-format
+msgid "Unable to open object file: %s"
+msgstr "ÎÞ·¨´ò¿ªÄ¿±êÎļþ£º%s"
+
+#: dlltool.c:1488
+#, c-format
+msgid "Scanning object file %s"
+msgstr "ÕýÔÚɨÃèÄ¿±êÎļþ %s"
+
+#: dlltool.c:1503
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "ÎÞ·¨´Ó¹éµµÎļþÖÐÉú³É mcore-elf ¶¯Ì¬Á¬½Ó¿â£º%s"
+
+#: dlltool.c:1595
+msgid "Adding exports to output file"
+msgstr ""
+
+#: dlltool.c:1640
+msgid "Added exports to output file"
+msgstr ""
+
+#: dlltool.c:1764
+#, c-format
+msgid "Generating export file: %s"
+msgstr "ÕýÔÚÉú³Éµ¼³öÎļþ£º%s"
+
+#: dlltool.c:1769
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "ÎÞ·¨´ò¿ªÁÙʱ»ã±àÎļþ£º%s"
+
+#: dlltool.c:1772
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "ÒÑ´ò¿ªµÄÁÙʱÎļþ£º%s"
+
+#: dlltool.c:1996
+msgid "Generated exports file"
+msgstr "ÒÑÉú³ÉµÄµ¼³öÎļþ"
+
+#: dlltool.c:2258
+#, c-format
+msgid "bfd_open failed open stub file: %s"
+msgstr ""
+
+#: dlltool.c:2261
+#, c-format
+msgid "Creating stub file: %s"
+msgstr ""
+
+#: dlltool.c:2650
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "´ò¿ªÁÙʱͷÎļþʧ°Ü£º%s"
+
+#: dlltool.c:2709
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "´ò¿ªÁÙʱβÎļþʧ°Ü£º%s"
+
+#: dlltool.c:2777
+#, c-format
+msgid "Can't open .lib file: %s"
+msgstr "ÎÞ·¨´ò¿ª .lib Îļþ£º%s"
+
+#: dlltool.c:2780
+#, c-format
+msgid "Creating library file: %s"
+msgstr "ÕýÔÚ´´½¨¿âÎļþ£º%s"
+
+#: dlltool.c:2839
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "ÎÞ·¨É¾³ý %s£º%s"
+
+#: dlltool.c:2843
+msgid "Created lib file"
+msgstr "ÒÑ´´½¨µÄ lib Îļþ"
+
+#: dlltool.c:2948
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr ""
+
+#: dlltool.c:2954
+#, c-format
+msgid "Error, duplicate EXPORT with oridinals: %s"
+msgstr ""
+
+#: dlltool.c:3081
+msgid "Processing definitions"
+msgstr "ÕýÔÚ´¦Àí¶¨Òå"
+
+#: dlltool.c:3119
+msgid "Processed definitions"
+msgstr "ÒÑ´¦Àí¶¨Òå"
+
+#. xgetext:c-format
+#: dlltool.c:3130 dllwrap.c:495
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "Ó÷¨ %s <Ñ¡Ïî> <Ä¿±êÎļþ>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3132
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <machine> Ϊ <machine> ´´½¨ DLL¡£[ĬÈÏ£º%s]\n"
+
+#: dlltool.c:3133
+msgid " possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, ppc, thumb\n"
+msgstr " ¿ÉÄÜµÄ <machine>£ºarm[_interwork]¡¢i386¡¢mcore[-elf]{-le|-be}¡¢ppc¡¢thumb\n"
+
+#: dlltool.c:3134
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <outname> Éú³Éµ¼³öÎļþ¡£\n"
+
+#: dlltool.c:3135
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <outname> Éú³É½çÃæ¿â¡£\n"
+
+#: dlltool.c:3136
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr ""
+
+#: dlltool.c:3137
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr ""
+
+#: dlltool.c:3138
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr " -d --input-def <deffile> Ðè¶ÁÈëµÄ .def ÎļþÃû¡£\n"
+
+#: dlltool.c:3139
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <deffile> Ðè´´½¨µÄ .def ÎļþÃû¡£\n"
+
+#: dlltool.c:3140
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols ½«ËùÓзûºÅµ¼³öµ½ .def\n"
+
+#: dlltool.c:3141
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols Ö»µ¼³öÁоٵķûºÅ\n"
+
+#: dlltool.c:3142
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <list> ²»Òªµ¼³ö <list>\n"
+
+#: dlltool.c:3143
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr ""
+
+#: dlltool.c:3144
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr ""
+
+#: dlltool.c:3145
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 ²»Éú³É idata$4 ½Ú¡£\n"
+
+#: dlltool.c:3146
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 ²»Éú³É idata$5 ½Ú¡£\n"
+
+#: dlltool.c:3147
+msgid " -U --add-underscore Add underscores to symbols in interface library.\n"
+msgstr ""
+
+#: dlltool.c:3148
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr ""
+
+#: dlltool.c:3149
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias Ìí¼Ó²»´ø @<n> µÄ±ðÃû¡£\n"
+
+#: dlltool.c:3150
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <name> ½« <name> ÓÃ×÷»ã±à³ÌÐò¡£\n"
+
+#: dlltool.c:3151
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <flags> °Ñ <flags> ´«µÝ¸ø»ã±à³ÌÐò¡£\n"
+
+#: dlltool.c:3152
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib ´´½¨Ïòºó¼æÈݵĵ¼Èë¿â¡£\n"
+
+#: dlltool.c:3153
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr ""
+
+#: dlltool.c:3154
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose Êä³ö¸ü¶àÐÅÏ¢¡£\n"
+
+#: dlltool.c:3155
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version ÏÔʾ³ÌÐò°æ±¾ºÅ¡£\n"
+
+#: dlltool.c:3156
+msgid " -h --help Display this information.\n"
+msgstr " -h --help ÏÔʾ±¾ÐÅÏ¢¡£\n"
+
+#: dlltool.c:3158
+msgid " -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
+msgstr ""
+
+#: dlltool.c:3159
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <name> ½« <name> ÓÃ×÷Á¬½ÓÆ÷¡£\n"
+
+#: dlltool.c:3160
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <flags> °Ñ <flags> ´«µÝ¸øÁ¬½ÓÆ÷¡£\n"
+
+#: dlltool.c:3310
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr ""
+
+#: dlltool.c:3339
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "²»Ö§³Ö»úÆ÷¡°%s¡±"
+
+#: dlltool.c:3442 dllwrap.c:214
+#, c-format
+msgid "Tried file: %s"
+msgstr ""
+
+#: dlltool.c:3449 dllwrap.c:221
+#, c-format
+msgid "Using file: %s"
+msgstr ""
+
+#: dllwrap.c:308
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr ""
+
+#: dllwrap.c:310
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr ""
+
+#: dllwrap.c:324
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr ""
+
+#: dllwrap.c:326
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr ""
+
+#: dllwrap.c:339
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "±£ÁôÁÙʱ def Îļþ %s"
+
+#: dllwrap.c:341
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "ɾ³ýÁÙʱ def Îļþ %s"
+
+#: dllwrap.c:496
+msgid " Generic options:\n"
+msgstr " ͨÓÃÑ¡Ï\n"
+
+#: dllwrap.c:497
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q °²¾²µØ¹¤×÷\n"
+
+#: dllwrap.c:498
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v Êä³ö½Ï¶àÐÅÏ¢\n"
+
+#: dllwrap.c:499
+msgid " --version Print dllwrap version\n"
+msgstr " --version ´òÓ¡ dllwrap µÄ°æ±¾ºÅ\n"
+
+#: dllwrap.c:500
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <outname> --output-lib µÄͬÒåÓï\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " Options for %s:\n"
+msgstr " %s µÄÑ¡Ï\n"
+
+#: dllwrap.c:502
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <driver> ĬÈÏΪ¡°gcc¡±\n"
+
+#: dllwrap.c:503
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <flags> ¸²¸ÇĬÈ쵀 ld ±êÖ¾\n"
+
+#: dllwrap.c:504
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dlltool> ĬÈÏΪ¡°dlltool¡±\n"
+
+#: dllwrap.c:505
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr ""
+
+#: dllwrap.c:506
+msgid " --image-base <base> Specify image base address\n"
+msgstr ""
+
+#: dllwrap.c:507
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <machine> i386-cygwin32 »ò i386-mingw32\n"
+
+#: dllwrap.c:508
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run Ö»ÏÔʾÐèÒªÔËÐÐÄÇЩ¶¯×÷\n"
+
+#: dllwrap.c:509
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin ´´½¨ Mingw DLL\n"
+
+#: dllwrap.c:510
+msgid " Options passed to DLLTOOL:\n"
+msgstr " ´«µÝ¸ø DLLTOOL µÄÑ¡Ï\n"
+
+#: dllwrap.c:511
+msgid " --machine <machine>\n"
+msgstr " --machine <machine>\n"
+
+#: dllwrap.c:512
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <outname> Éú³Éµ¼³öÎļþ¡£\n"
+
+#: dllwrap.c:513
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <outname> Éú³ÉÊäÈë¿â¡£\n"
+
+#: dllwrap.c:514
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr ""
+
+#: dllwrap.c:515
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr ""
+
+#: dllwrap.c:516
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <deffile> ÊäÈë .def ÎļþµÄÎļþÃû\n"
+
+#: dllwrap.c:517
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <deffile> Êä³ö .def ÎļþµÄÎļþÃû\n"
+
+#: dllwrap.c:518
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols ½«ËùÓзûºÅµ¼³öµ½ .def ÖÐ\n"
+
+#: dllwrap.c:519
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols Ö»µ¼³ö·ûºÅ .drectve\n"
+
+#: dllwrap.c:520
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <list> ´Ó .def ÖÐÅųý <list>\n"
+
+#: dllwrap.c:521
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes Çå¿ÕĬÈÏÅųý·ûºÅ\n"
+
+#: dllwrap.c:522
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr ""
+
+#: dllwrap.c:523
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 ²»Éú³É idata$4 ½Ú\n"
+
+#: dllwrap.c:524
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 ²»Éú³É idata$5 ½Ú\n"
+
+#: dllwrap.c:525
+msgid " -U Add underscores to .lib\n"
+msgstr " -U Ϊ .lib Ìí¼ÓÏ»®Ïß\n"
+
+#: dllwrap.c:526
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k ɾȥµ¼³öÃû×ÖÖÐµÄ @<n>\n"
+
+#: dllwrap.c:527
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias Ìí¼Ó²»´ø @<n> µÄ±ðÃû\n"
+
+#: dllwrap.c:528
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <name> ½« <name> ÓÃ×÷»ã±à³ÌÐò\n"
+
+#: dllwrap.c:529
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete ±£ÁôÁÙʱÎļþ¡£\n"
+
+#: dllwrap.c:530
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " ÆäÓàµÄ¶¼²»¼ÓÈκÎÐ޸ĵڴ«µÝ¸øÓïÑÔÇý¶¯Æ÷\n"
+
+#: dllwrap.c:802
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "±ØÐëÌṩÖÁÉÙÒ»¸ö -o »ò --dllname Ñ¡Ïî"
+
+#: dllwrap.c:830
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"δÌṩµ¼³ö¶¨ÒåÎļþ¡£\n"
+"´´½¨Ò»¸ö£¬µ«¿ÉÄܲ»ÊÇÄúËùÒªµÄ"
+
+#: dllwrap.c:992
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "DLLTOOL Ãû³Æ £º%s\n"
+
+#: dllwrap.c:993
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "DLLTOOL Ñ¡Ïî £º%s\n"
+
+#: dllwrap.c:994
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "Çý¶¯Æ÷Ãû³Æ £º%s\n"
+
+#: dllwrap.c:995
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "Çý¶¯Æ÷Ñ¡Ïî £º%s\n"
+
+#: emul_aix.c:52
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - 32 λС¹éµµÎļþ\n"
+
+#: emul_aix.c:53
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - ºöÂÔ 64 λ¶ÔÏó\n"
+
+#: emul_aix.c:54
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - ºöÂÔ 32 λ¶ÔÏó\n"
+
+#: emul_aix.c:55
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] - ½ÓÊÜ 32 λºÍ 64 λ¶ÔÏó\n"
+
+#: ieee.c:317
+msgid "unexpected end of debugging information"
+msgstr "µ÷ÊÔÐÅÏ¢ÒâÍâ½áÊø"
+
+#: ieee.c:412
+msgid "invalid number"
+msgstr "ÎÞЧ±àºÅ"
+
+#: ieee.c:471
+msgid "invalid string length"
+msgstr "ÎÞЧµÄ×Ö·û´®³¤¶È"
+
+#: ieee.c:528 ieee.c:569
+msgid "expression stack overflow"
+msgstr "±í´ïʽջÒç³ö"
+
+#: ieee.c:548
+msgid "unsupported IEEE expression operator"
+msgstr "²»Ö§³ÖµÄ IEEE ±í´ïʽ²Ù×÷·û"
+
+#: ieee.c:563
+msgid "unknown section"
+msgstr "δ֪µÄ½Ú"
+
+#: ieee.c:584
+msgid "expression stack underflow"
+msgstr "±í´ïʽջÏÂÒç³ö"
+
+#: ieee.c:598
+msgid "expression stack mismatch"
+msgstr "±í´ïʽջ²»Æ¥Åä"
+
+#: ieee.c:637
+msgid "unknown builtin type"
+msgstr "δ֪µÄÄÚÖÃÀàÐÍ"
+
+#: ieee.c:782
+msgid "BCD float type not supported"
+msgstr "²»Ö§³ÖµÄ BCD ¸¡µãÀàÐÍ"
+
+#: ieee.c:928
+msgid "unexpected number"
+msgstr "ÒâÍâµÄ±àºÅ"
+
+#: ieee.c:935
+msgid "unexpected record type"
+msgstr "ÒâÍâµÄ¼Ç¼ÀàÐÍ"
+
+#: ieee.c:968
+msgid "blocks left on stack at end"
+msgstr "½áÊøʱÈÔÁôÔÚÕ»ÖеĿé"
+
+#: ieee.c:1233
+msgid "unknown BB type"
+msgstr "δ֪µÄ BB ÀàÐÍ"
+
+#: ieee.c:1242
+msgid "stack overflow"
+msgstr "Õ»ÉÏÒç³ö"
+
+#: ieee.c:1267
+msgid "stack underflow"
+msgstr "Õ»ÏÂÒç³ö"
+
+#: ieee.c:1381 ieee.c:1453 ieee.c:2152
+msgid "illegal variable index"
+msgstr "·Ç·¨µÄ±äÁ¿Ë÷Òý"
+
+#: ieee.c:1431
+msgid "illegal type index"
+msgstr "·Ç·¨µÄÀàÐÍË÷Òý"
+
+#: ieee.c:1441 ieee.c:1478
+msgid "unknown TY code"
+msgstr "δ֪µÄ TY ´úÂë"
+
+#: ieee.c:1460
+msgid "undefined variable in TY"
+msgstr "TY ÖÐ䶨ÒåµÄ±äÁ¿"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1871
+msgid "Pascal file name not supported"
+msgstr "²»Ö§³Ö Pascal ÎļþÃû"
+
+#: ieee.c:1919
+msgid "unsupported qualifier"
+msgstr "²»Ö§³ÖµÄÏÞ¶¨·û"
+
+#: ieee.c:2190
+msgid "undefined variable in ATN"
+msgstr "ATN ÖÐ䶨ÒåµÄ±äÁ¿"
+
+#: ieee.c:2233
+msgid "unknown ATN type"
+msgstr "δ֪µÄ ATN ÀàÐÍ"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2355
+msgid "unsupported ATN11"
+msgstr "²»Ö§³Ö ATN11"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2382
+msgid "unsupported ATN12"
+msgstr "²»Ö§³Ö ATN12"
+
+#: ieee.c:2442
+msgid "unexpected string in C++ misc"
+msgstr ""
+
+#: ieee.c:2455
+msgid "bad misc record"
+msgstr ""
+
+#: ieee.c:2498
+msgid "unrecognized C++ misc record"
+msgstr ""
+
+#: ieee.c:2615
+msgid "undefined C++ object"
+msgstr "䶨ÒåµÄ C++ ¶ÔÏó"
+
+#: ieee.c:2649
+msgid "unrecognized C++ object spec"
+msgstr ""
+
+#: ieee.c:2685
+msgid "unsupported C++ object type"
+msgstr "²»Ö§³ÖµÄ C++ ¶ÔÏóÀàÐÍ"
+
+#: ieee.c:2695
+msgid "C++ base class not defined"
+msgstr "䶨Òå C++ »ùÀà"
+
+#: ieee.c:2707 ieee.c:2812
+msgid "C++ object has no fields"
+msgstr "C++ ¶ÔÏóûÓÐÓò"
+
+#: ieee.c:2726
+msgid "C++ base class not found in container"
+msgstr ""
+
+#: ieee.c:2833
+msgid "C++ data member not found in container"
+msgstr ""
+
+#: ieee.c:2874 ieee.c:3024
+msgid "unknown C++ visibility"
+msgstr ""
+
+#: ieee.c:2908
+msgid "bad C++ field bit pos or size"
+msgstr ""
+
+#: ieee.c:3000
+msgid "bad type for C++ method function"
+msgstr ""
+
+#: ieee.c:3010
+msgid "no type information for C++ method function"
+msgstr ""
+
+#: ieee.c:3049
+msgid "C++ static virtual method"
+msgstr "C++ ¾²Ì¬ÐéÄâ·½·¨"
+
+#: ieee.c:3144
+msgid "unrecognized C++ object overhead spec"
+msgstr ""
+
+#: ieee.c:3183
+msgid "undefined C++ vtable"
+msgstr "䶨ÒåµÄ C++ vtable"
+
+#: ieee.c:3254
+msgid "C++ default values not in a function"
+msgstr ""
+
+#: ieee.c:3294
+msgid "unrecognized C++ default type"
+msgstr "ÎÞ·¨Ê¶±ðµÄ C++ ĬÈÏÀàÐÍ"
+
+#: ieee.c:3325
+msgid "reference parameter is not a pointer"
+msgstr "ÒýÓòÎÊý²»ÊÇÖ¸Õë"
+
+#: ieee.c:3410
+msgid "unrecognized C++ reference type"
+msgstr "ÎÞ·¨Ê¶±ðµÄ C++ ÒýÓÃÀàÐÍ"
+
+#: ieee.c:3492
+msgid "C++ reference not found"
+msgstr "ÕÒ²»µ½ C++ ÒýÓÃ"
+
+#: ieee.c:3500
+msgid "C++ reference is not pointer"
+msgstr "C++ ÒýÓò»ÊÇÖ¸Õë"
+
+#: ieee.c:3529 ieee.c:3537
+msgid "missing required ASN"
+msgstr "ÒÅʧ±ØÐëµÄ ASN"
+
+#: ieee.c:3567 ieee.c:3575
+msgid "missing required ATN65"
+msgstr "ÒÅʧ±ØÐëµÄ ATN65"
+
+#: ieee.c:3589
+msgid "bad ATN65 record"
+msgstr "´íÎóµÄ ATN65 ¼Ç¼"
+
+#: ieee.c:4234
+msgid "IEEE numeric overflow: 0x"
+msgstr "IEEE ÊýÖµÒç³ö£º0x"
+
+#: ieee.c:4280
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "IEEE ×Ö·û´®³¤¶ÈÒç³ö£º%u\n"
+
+#: ieee.c:5330
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "IEEE ²»Ö§³ÖµÄÕûÊýÀàÐÍ´óС %u\n"
+
+#: ieee.c:5366
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "IEEE ²»Ö§³ÖµÄ¸¡µãÀàÐÍ´óС %u\n"
+
+#: ieee.c:5402
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "IEEE ²»Ö§³ÖµÄ¸ºÔØÀàÐÍ´óС %u\n"
+
+#: nlmconv.c:281 srconv.c:2043
+msgid "input and output files must be different"
+msgstr "ÊäÈëÊä³öÎļþ±ØÐ벻ͬ"
+
+#: nlmconv.c:328
+msgid "input file named both on command line and with INPUT"
+msgstr "ͬʱÔÚÃüÁîÐÐºÍ INPU ÖÐÃüÃûÊäÈëÎļþ"
+
+#: nlmconv.c:337
+msgid "no input file"
+msgstr "ûÓÐÊäÈëÎļþ"
+
+#: nlmconv.c:367
+msgid "no name for output file"
+msgstr "Êä³öÎļþûÓÐÃû³Æ"
+
+#: nlmconv.c:380
+msgid "warning: input and output formats are not compatible"
+msgstr "¾¯¸æ£ºÊäÈëºÍÊä³ö¸ñʽ²»¼æÈÝ"
+
+#: nlmconv.c:409
+msgid "make .bss section"
+msgstr "Éú³É .bss ½Ú"
+
+#: nlmconv.c:418
+msgid "make .nlmsections section"
+msgstr "Éú³É .nlmsections ½Ú"
+
+#: nlmconv.c:420
+msgid "set .nlmsections flags"
+msgstr "É趨 .nlmsections ±êÖ¾"
+
+#: nlmconv.c:448
+msgid "set .bss vma"
+msgstr "É趨 .bss vma"
+
+#: nlmconv.c:455
+msgid "set .data size"
+msgstr "É趨 .data µÄ´óС"
+
+#: nlmconv.c:635
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "¾¯¸æ£ºµ¼ÈëµÄ·ûºÅ %s ²»ÔÚµ¼ÈëÁбíÖÐ"
+
+#: nlmconv.c:655
+msgid "set start address"
+msgstr "É趨ÆðʼµØÖ·"
+
+#: nlmconv.c:704
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "¾¯¸æ£ºÎ´¶¨Òå START ×Ó³ÌÐò %s"
+
+#: nlmconv.c:706
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "¾¯¸æ£ºÎ´¶¨Òå×Ó³ÌÐò %s"
+
+#: nlmconv.c:708
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "¾¯¸æ£ºÎ´¶¨Òå×Ó³ÌÐò %s"
+
+#: nlmconv.c:729 nlmconv.c:918
+msgid "custom section"
+msgstr "¶¨ÖƽÚ"
+
+#: nlmconv.c:750 nlmconv.c:947
+msgid "help section"
+msgstr "ÇóÖú½Ú"
+
+#: nlmconv.c:772 nlmconv.c:965
+msgid "message section"
+msgstr "ÏûÏ¢½Ú"
+
+#: nlmconv.c:788 nlmconv.c:998
+msgid "module section"
+msgstr "Ä£¿é½Ú"
+
+#: nlmconv.c:808 nlmconv.c:1014
+msgid "rpc section"
+msgstr "rpc ½Ú"
+
+#. There is no place to record this information.
+#: nlmconv.c:844
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s£º¾¯¸æ£º¹²Ïí¿â²»Äܺ¬ÓÐδ³õʼ»¯µÄÊý¾Ý"
+
+#: nlmconv.c:865 nlmconv.c:1033
+msgid "shared section"
+msgstr "¹²Ïí½Ú"
+
+#: nlmconv.c:873
+msgid "warning: No version number given"
+msgstr "¾¯¸æ£ºÎ´¸ø³ö°æ±¾ºÅ"
+
+#: nlmconv.c:913 nlmconv.c:942 nlmconv.c:960 nlmconv.c:1009 nlmconv.c:1028
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s£º¶ÁÈ¡£º%s"
+
+#: nlmconv.c:935
+msgid "warning: MAP and FULLMAP are not supported; try ld -M"
+msgstr "¾¯¸æ£º²»Ö§³Ö MAP ºÍ FULLMAP£»ÇëÊÔÓà ld -M"
+
+#: nlmconv.c:1107
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "Ó÷¨£º%s [Ñ¡Ïî] [ÊäÈëÎļþ [Êä³öÎļþ]]\n"
+
+#: nlmconv.c:1108
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " ½«¶ÔÏóÎļþת»»Îª NetWare ¿ÉÔØÈëÄ£¿é\n"
+
+#: nlmconv.c:1109
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+msgstr ""
+" Ñ¡ÏîΪ£º\n"
+" -I --input-target=<bfdname> É趨ÊäÈë¶þ½øÖÆÎļþ¸ñʽ\n"
+" -O --output-target=<bfdname> É趨Êä³ö¶þ½øÖÆÎļþ¸ñʽ\n"
+" -T --header-file=<file> ´Ó <file> ÖжÁÈë NLM Í·ÐÅÏ¢\n"
+" -l --linker=<linker> ÔÚËùÓÐÁ¬½ÓÖÐʹÓà <linker>\n"
+" -d --debug ÔÚ±ê×¼´íÎóÊä³öÖÐÏÔʾÁ¬½ÓÆ÷ÃüÁîÐÐ\n"
+" -h --help ÏÔʾ±¾ÐÅÏ¢\n"
+" -v --version ÏÔʾ³ÌÐòµÄ°æ±¾ºÅ\n"
+
+#: nlmconv.c:1151
+#, c-format
+msgid "support not compiled in for %s"
+msgstr ""
+
+#: nlmconv.c:1191
+msgid "make section"
+msgstr ""
+
+#: nlmconv.c:1205
+msgid "set section size"
+msgstr "É趨½Ú´óС"
+
+#: nlmconv.c:1211
+msgid "set section alignment"
+msgstr "É趨½Ú¶ÔÆë"
+
+#: nlmconv.c:1215
+msgid "set section flags"
+msgstr "É趨½Ú±êÖ¾"
+
+#: nlmconv.c:1226
+msgid "set .nlmsections size"
+msgstr "É趨 .nlmsections ´óС"
+
+#: nlmconv.c:1314 nlmconv.c:1322 nlmconv.c:1331 nlmconv.c:1336
+msgid "set .nlmsection contents"
+msgstr "É趨 .nlmsection µÄÄÚÈÝ"
+
+#: nlmconv.c:1837
+msgid "stub section sizes"
+msgstr "ռλ½Ú´óС"
+
+#: nlmconv.c:1886
+msgid "writing stub"
+msgstr "ÕýÔÚдÈëռλ½Ú"
+
+#: nlmconv.c:1975
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr ""
+
+#: nlmconv.c:2039
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr ""
+
+#: nlmconv.c:2156
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s£ºÖ´ÐÐ %s ʧ°Ü£º"
+
+#: nlmconv.c:2171
+#, c-format
+msgid "Execution of %s failed"
+msgstr "Ö´ÐÐ %s ʧ°Ü"
+
+#: nm.c:246 size.c:85 strings.c:650
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "Ó÷¨£º%s [Ñ¡Ïî] [Îļþ]\n"
+
+#: nm.c:247
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr "Áо٠[Îļþ] ÖеķûºÅ (ĬÈÏΪ a.out)¡£\n"
+
+#: nm.c:248
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', 'lucid', 'arm', 'hp', 'edg' or 'gnu-new-abi'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -u, --undefined-only Display only undefined symbols\n"
+" -X 32_64 (ignored)\n"
+" -h, --help Display this information\n"
+" -V, --version Display this program's version number\n"
+"\n"
+msgstr ""
+" Ñ¡ÏîΪ£º\n"
+" -a, --debug-syms ÏÔʾֻÓÃÓÚµ÷ÊԵķûºÅ\n"
+" -A, --print-file-name ÔÚÿ¸ö·ûºÅÇ°´òÓ¡ÊäÈëÎļþÃû\n"
+" -B ÓÚ --format=bsd Ïàͬ\n"
+" -C, --demangle[=STYLE] ½«µ×²ã·ûºÅÃû½âÂëΪÓû§¼¶Ãû³Æ\n"
+" Èç¹û¸ø³ö STYLE£¬STYLE ¿ÉÄÜΪ¡°auto¡± (ĬÈÏ)¡¢\n"
+" ¡°gnu¡±¡¢¡°lucid¡±¡¢¡°arm¡±¡¢¡°hp¡±¡¢¡°edg¡±»ò¡°gnu-new-abi¡±\n"
+" --no-demangle ²»Òª½âÂëµ×²ã·ûºÅÃû\n"
+" -D, --dynamic ÏÔʾ¶¯Ì¬·ûºÅ¶ø²»ÊÇÆÕͨ·ûºÅ\n"
+" --defined-only Ö»ÏÔʾÒѶ¨ÒåµÄ·ûºÅ\n"
+" -e (ºöÂÔ)\n"
+" -f, --format=FORMAT ʹÓÃÊä³ö¸ñʽ FORMAT¡£FORMAT ¿ÉÄÜÊÇ¡°bsd¡±¡¢\n"
+" ¡°sysv¡±»ò¡°posix¡±¡£Ä¬ÈÏΪ¡°bsd¡±\n"
+" -g, --extern-only Ö»ÏÔʾÍⲿ·ûºÅ\n"
+" -l, --line-numbers ʹÓõ÷ÊÔÐÅÏ¢ÒÔ±ãΪÿ¸ö·ûºÅÑ°ÕÒÎļþÃûºÍÐкÅ\n"
+" -n, --numeric-sort °´µØÖ·ÅÅÐò·ûºÅ\n"
+" -o ÓÚ -A Ïàͬ\n"
+" -p, --no-sort ²»Òª¶Ô·ûºÅ½øÐÐÅÅÐò\n"
+" -P, --portability ÓÚ --format=posix Ïàͬ\n"
+" -r, --reverse-sort ·´×ªÅÅÐò˳Ðò\n"
+" -S, --print-size ´òÓ¡¶¨ÒåÁ˵ķûºÅµÄ´óС\n"
+" -s, --print-armap ´òÓ¡¹éµµÎļþ³ÉÔ±ÖзûºÅµÄË÷Òý\n"
+" --size-sort °´´óСÅÅÐò·ûºÅ\n"
+" -t, --radix=RADIX ½« RADIX ÓÃÓÚ´òÓ¡·ûºÅÖµ\n"
+" --target=BFDNAME ½«±êµÄÄ¿±ê¸ñʽָ¶¨Îª BFDNAME\n"
+" -u, --undefined-only Ö»ÏÔʾ䶨ÒåµÄ·ûºÅ\n"
+" -X 32_64 (ºöÂÔ)\n"
+" -h, --help ÏÔʾ±¾ÐÅÏ¢\n"
+" -V, --version ÏÔʾ±¾³ÌÐòµÄ°æ±¾ºÅ\n"
+"\n"
+
+#: nm.c:281 objdump.c:217
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "½« bug ±¨¸æµ½ %s¡£\n"
+
+#: nm.c:314
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s£ºÎÞЧµÄ»ùÊý"
+
+#: nm.c:339
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s£ºÎÞЧµÄÊä³ö¸ñʽ"
+
+#: nm.c:456
+msgid "Only -X 32_64 is supported"
+msgstr "Ö»Ö§³Ö -X 32_64"
+
+#: nm.c:498
+#, c-format
+msgid "data size %ld"
+msgstr "Êý¾Ý´óС %ld"
+
+#: nm.c:523 readelf.c:5306 readelf.c:5342
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<´¦ÀíÆ÷רÓÃ>£º%d"
+
+#: nm.c:525 readelf.c:5308 readelf.c:5354
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<²Ù×÷ϵͳרÓÃ>£º%d"
+
+#: nm.c:527 readelf.c:5310 readelf.c:5357
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<δ֪>£º%d"
+
+#: nm.c:1339
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"À´×Ô %s µÄ䶨Òå·ûºÅ£º\n"
+"\n"
+
+#: nm.c:1341
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"À´×Ô %s µÄ·ûºÅ£º\n"
+"\n"
+
+#: nm.c:1343 nm.c:1401
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+
+#: nm.c:1346 nm.c:1404
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+
+#: nm.c:1397
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"À´×Ô %s[%s] µÄ䶨ÒåµÄ·ûºÅ£º\n"
+"\n"
+
+#: nm.c:1399
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"À´×Ô %s[%s] µÄ·ûºÅ£º\n"
+"\n"
+
+#: nm.c:1614
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"¹éµµË÷Òý£º\n"
+
+#: objcopy.c:363 srconv.c:1952
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "Ó÷¨£º%s [Ñ¡Ïî] ÊäÈëÎļþ [Êä³öÎļþ]\n"
+
+#: objcopy.c:364
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " ¸´Öƶþ½øÖÆÎļþ£¬¿ÉÄÜÔڴ˹ý³ÌÖнøÐб任\n"
+
+#: objcopy.c:365 objcopy.c:435
+msgid " The options are:\n"
+msgstr " Ñ¡ÏîΪ£º\n"
+
+#: objcopy.c:366
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set arch of output file, when input is binary\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" -K --keep-symbol <name> Only copy symbol <name>\n"
+" -L --localize-symbol <name> Force symbol <name> to be marked as a local\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"
+" -x --discard-all Remove all non-global symbols\n"
+" -X --discard-locals Remove any compiler-generated symbols\n"
+" -i --interleave <number> Only copy one out of every <number> bytes\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed 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"
+" --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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+msgstr ""
+" -I --input-target <bfdname> ¼Ù¶¨ÊäÈëÎļþµÄ¸ñʽΪ <bfdname>\n"
+" -O --output-target <bfdname> ´´½¨¸ñʽΪ <bfdname> µÄÊä³öÎļþ\n"
+" -B --binary-architecture <arch> µ±ÊäÈëÎļþΪ¶þ½øÖÆÎļþʱ£¬É趨Êä³öÎļþµÄÌåϵ½á¹¹\n"
+" -F --target <bfdname> ½«ÊäÈëÊä³ö¸ñʽÉ趨Ϊ <bfdname>\n"
+" --debugging Èç¹û¿ÉÄÜ£¬×ª»»µ÷ÊÔÐÅÏ¢\n"
+" -p --preserve-dates ½«ÐÞ¸Ä/·ÃÎÊʱ¼ä´Á¸´ÖƵ½Êä³öÎļþ\n"
+" -j --only-section <name> Ö»½« <name> ½Ú¸´ÖƵ½Êä³öÎļþÖÐ\n"
+" -R --remove-section <name> ´ÓÊä³öÖÐɾ³ý <name> ½Ú\n"
+" -S --strip-all ɾ³ýËùÓзûºÅºÍÖض¨Î»ÐÅÏ¢\n"
+" -g --strip-debug ɾ³ýËùÓе÷ÊÔ·ûºÅ\n"
+" --strip-unneeded ɾ³ýËùÓÐÖض¨Î»²»ÐèÒªµÄ·ûºÅ\n"
+" -N --strip-symbol <name> ²»Òª¸´ÖÆ·ûºÅ <name>\n"
+" -K --keep-symbol <name> Ö»¸´ÖÆ·ûºÅ <name>\n"
+" -L --localize-symbol <name> ½«·ûºÅ <name> Ç¿ÖƱêʶΪ±¾µØ·ûºÅ\n"
+" -G --keep-global-symbol <name> ½«³ýÁË·ûºÅ <name> ÒÔÍâµÄËùÓзûºÅ±êʶΪ±¾µØ·ûºÅ\n"
+" -W --weaken-symbol <name> ½«·ûºÅ <name> Ç¿ÖƱêʶΪÈõ·ûºÅ\n"
+" --weaken ½«ËùÓÐÈ«¾Ö·ûºÅ±êʶΪÈõ·ûºÅ\n"
+" -x --discard-all ɾ³ýËùÓзÇÈ«¾Ö·ûºÅ\n"
+" -X --discard-locals ɾ³ýËùÓбàÒëÆ÷Éú³ÉµÄ·ûºÅ\n"
+" -i --interleave <number> Ö»ÔÚÿ <number> ¸ö×Ö½ÚÖи´ÖÆÒ»¸ö\n"
+" -b --byte <num> ÔÚÿ¸ö²åÈë¿éÖÐÑ¡Ôñ×Ö½Ú <num>\n"
+" --gap-fill <val> ÔÚ½Ú¿Õ϶ÖÐÒÔ <val> Ìî³ä\n"
+" --pad-to <addr> ²¹³ä×îºóÒ»½ÚÖ±µ½µØÖ· <addr>\n"
+" --set-start <addr> ½«ÆðʼµØÖ·ÉèÖÃΪ <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" ½« <incr> Ôö¼Óµ½ÆðʼµØÖ·\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" ½« <incr> Ôö¼Óµ½ LMA¡¢VMA ºÍÆðʼµØÖ·\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" ÒÔ <val> ÐÞ¸Ä <name> ½ÚµÄ LMA ºÍ VMA\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" ÒÔ <val> ÐÞ¸Ä <name> ½ÚµÄ LMA\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" ÒÔ <val> ÐÞ¸Ä <name> ½ÚµÄ VMA\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Èç¹ûÃüÃû½Ú²»´æÔھ͸ø³ö¾¯¸æ\n"
+" --set-section-flags <name>=<flags>\n"
+" ½« <name> ½ÚµÄÊôÐÔÉèÖÃΪ <flags>\n"
+" --add-section <name>=<file> ½« <file> ÖÐµÄ <name> ½ÚÌí¼Óµ½Êä³öÖÐ\n"
+" --rename-section <old>=<new>[,<flags>] ½«½ÚÓÉ <old> ¸ÄÃûΪ <new>\n"
+" --change-leading-char Ç¿ÐÐÉ趨Êä³ö¸ñʽµÄÇ°µ¼×Ö·û·ç¸ñ\n"
+" --remove-leading-char ɾ³ýÈ«¾Ö·ûºÅµÄÇ°µ¼×Ö·û\n"
+" --redefine-sym <old>=<new> ½«·ûºÅÓÉ <old> ¸ÄÃûΪ <new>\n"
+" --srec-len <number> ÏÞÖÆÉú³ÉµÄ Srecords µÄ³¤¶È\n"
+" --srec-forceS3 ½«Éú³ÉµÄ Srecords µÄÀàÐÍÏÞÖÆΪ S3\n"
+" --strip-symbols <file> ¶ÔÁоÙÔÚ <file> ÖеÄËùÓзûºÅÖ´ÐÐ -N\n"
+" --keep-symbols <file> ¶ÔÁоÙÔÚ <file> ÖеÄËùÓзûºÅÖ´ÐÐ -K\n"
+" --localize-symbols <file> ¶ÔÁоÙÔÚ <file> ÖеÄËùÓзûºÅÖ´ÐÐ -L\n"
+" --keep-global-symbols <file> ¶ÔÁоÙÔÚ <file> ÖеÄËùÓзûºÅÖ´ÐÐ -G\n"
+" --weaken-symbols <file> ¶ÔÁоÙÔÚ <file> ÖеÄËùÓзûºÅÖ´ÐÐ -W\n"
+" --alt-machine-code <index> Êä³öʹÓÃÌæ´úµÄ»úÆ÷Âë\n"
+" -v --verbose ÁгöËùÓÐÐ޸ĵÄÄ¿±êÎļþ\n"
+" -V --version ÏÔʾ±¾³ÌÐòµÄ°æ±¾ºÅ\n"
+" -h --help ÏÔʾ±¾Êä³ö\n"
+
+#: objcopy.c:433
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "Ó÷¨£º%s <Ñ¡Ïî> ÊäÈëÎļþ\n"
+
+#: objcopy.c:434
+msgid " Removes symbols and sections from files\n"
+msgstr "´ÓÎļþÖÐɾ³ý·ûºÅºÍ½Ú\n"
+
+#: objcopy.c:436
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol=<name> Do not copy symbol <name>\n"
+" -K --keep-symbol=<name> Only copy symbol <name>\n"
+" -x --discard-all Remove all non-global symbols\n"
+" -X --discard-locals Remove any compiler-generated symbols\n"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target=<bfdname> ¼Ù¶¨ÊäÈëÎļþµÄ¸ñʽΪ <bfdname>\n"
+" -O --output-target=<bfdname> ´´½¨¸ñʽΪ <bfdname> µÄÊä³öÎļþ\n"
+" -F --target=<bfdname> ½«ÊäÈëºÍÊä³öµÄ¸ñʽÉ趨Ϊ <bfdname>\n"
+" -p --preserve-dates ½« ÐÞ¸Ä/·ÃÎÊ Ê±¼ä´Á¸´ÖƵ½Êä³öÎļþ\n"
+" -R --remove-section=<name> ´ÓÊä³öÖÐɾ³ý <name> ½Ú\n"
+" -s --strip-all ɾ³ýËùÓзûºÅºÍÖض¨Î»ÐÅÏ¢\n"
+" -g -S -d --strip-debug ɾ³ýËùÓе÷ÊÔ·ûºÅ\n"
+" --strip-unneeded ɾ³ýËùÓÐÖض¨Î»²»ÐèÒªµÄ·ûºÅ\n"
+" -N --strip-symbol=<name> ²»Òª¸´ÖÆ·ûºÅ <name>\n"
+" -K --keep-symbol=<name> Ö»¸´ÖÆ·ûºÅ <name>\n"
+" -x --discard-all ɾ³ýËùÓзÇÈ«¾Ö·ûºÅ\n"
+" -X --discard-locals ɾ³ýËùÓбàÒëÆ÷Éú³ÉµÄ·ûºÅ\n"
+" -v --verbose ÁгöËùÓÐÐÞ¸ÄÁ˵ÄÄ¿±êÎļþ\n"
+" -V --version ÏÔʾ±¾³ÌÐòµÄ°æ±¾ºÅ\n"
+" -h --help ÏÔʾ±¾Êä³ö\n"
+" -o <file> ½« strip ¹ýµÄÊä³ö±£´æµ½ <file>\n"
+
+#: objcopy.c:506
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "²»ÄÜʶ±ðµÄ½Ú±êÖ¾¡°%s¡±"
+
+#: objcopy.c:507
+#, c-format
+msgid "supported flags: %s"
+msgstr "Ö§³ÖµÄ±êÖ¾£º%s"
+
+#: objcopy.c:584 objcopy.c:2243
+#, c-format
+msgid "cannot stat: %s: %s"
+msgstr "ÎÞ·¨ stat£º%s£º%s"
+
+#: objcopy.c:591 objcopy.c:2261
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "ÎÞ·¨´ò¿ª£º%s£º%s"
+
+#: objcopy.c:594 objcopy.c:2265
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s£ºfread ʧ°Ü"
+
+#: objcopy.c:667
+#, c-format
+msgid "Ignoring rubbish found on line %d of %s"
+msgstr ""
+
+#: objcopy.c:888
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s£º¶à´ÎÖظ´¶¨Òå·ûºÅ¡°%s¡±"
+
+#: objcopy.c:893
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s£º·ûºÅ¡°%s¡±ÊǶà´ÎÖظ´¶¨ÒåµÄ±êµÄ"
+
+#: objcopy.c:945
+msgid "Unable to change endianness of input file(s)"
+msgstr ""
+
+#: objcopy.c:953
+#, c-format
+msgid "copy from %s(%s) to %s(%s)\n"
+msgstr "´Ó %s(%s) ¸´ÖƵ½ %s(%s)\n"
+
+#: objcopy.c:977
+#, c-format
+msgid "Warning: Output file cannot represent architecture %s"
+msgstr "¾¯¸æ£ºÊä³öÎļþÎÞ·¨±í´ïÌåϵ½á¹¹ %s"
+
+#: objcopy.c:1004
+#, c-format
+msgid "can't create section `%s': %s"
+msgstr "ÎÞ·¨´´½¨½Ú¡°%s¡±£º%s"
+
+#: objcopy.c:1090
+#, c-format
+msgid "Can't fill gap after %s: %s"
+msgstr "ÎÞ·¨Ìî³ä %s Ö®ºóµÄ¿Õ϶£º%s"
+
+#: objcopy.c:1115
+#, c-format
+msgid "Can't add padding to %s: %s"
+msgstr ""
+
+#: objcopy.c:1254
+#, c-format
+msgid "%s: error copying private BFD data: %s"
+msgstr "%s£º¸´ÖÆ BFD ˽ÓÐÊý¾Ý³ö´í£º%s"
+
+#: objcopy.c:1267
+msgid "unknown alternate machine code, ignored"
+msgstr ""
+
+#: objcopy.c:1300 objcopy.c:1330
+#, c-format
+msgid "cannot mkdir %s for archive copying (error: %s)"
+msgstr "ÎÞ·¨Îª¹éµµ¸´ÖÆ´´½¨Ä¿Â¼ %s (´íÎó£º%s)"
+
+#: objcopy.c:1497
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "¶à´Î¸ÄÃû½Ú %s"
+
+#: objcopy.c:1581
+msgid "making"
+msgstr ""
+
+#: objcopy.c:1590
+msgid "size"
+msgstr "´óС"
+
+#: objcopy.c:1604
+msgid "vma"
+msgstr "vma"
+
+#: objcopy.c:1630
+msgid "alignment"
+msgstr "¶ÔÆë"
+
+#: objcopy.c:1638
+msgid "flags"
+msgstr "±êÖ¾"
+
+#: objcopy.c:1655
+msgid "private data"
+msgstr "˽ÓÐÊý¾Ý"
+
+#: objcopy.c:1663
+#, c-format
+msgid "%s: section `%s': error in %s: %s"
+msgstr "%s£º½Ú¡°%s¡±£º%s Öгö´í£º%s"
+
+#: objcopy.c:1946
+#, c-format
+msgid "%s: can't create debugging section: %s"
+msgstr "%s£ºÎÞ·¨´´½¨µ÷ÊÔ½Ú£º%s"
+
+#: objcopy.c:1961
+#, c-format
+msgid "%s: can't set debugging section contents: %s"
+msgstr "%s£ºÎÞ·¨É趨µ÷ÊÔ½ÚÄÚÈÝ£º%s"
+
+#: objcopy.c:1970
+#, c-format
+msgid "%s: don't know how to write debugging information for %s"
+msgstr "%s£º²»ÖªµÀÈçºÎΪ %s дÈëµ÷ÊÔÐÅÏ¢"
+
+#: objcopy.c:2078
+#, c-format
+msgid "%s: cannot stat: %s"
+msgstr "%s£ºÎÞ·¨ stat£º%s"
+
+#: objcopy.c:2129
+msgid "byte number must be non-negative"
+msgstr "×Ö½Ú±àºÅ±ØÐëÊǷǸºÊý"
+
+#: objcopy.c:2139
+msgid "interleave must be positive"
+msgstr ""
+
+#: objcopy.c:2159 objcopy.c:2167
+#, c-format
+msgid "%s both copied and removed"
+msgstr "¼´Òª¸´ÖÆ %s ÓÖҪɾ³ýËü"
+
+#: objcopy.c:2240 objcopy.c:2310 objcopy.c:2410 objcopy.c:2437 objcopy.c:2461
+#: objcopy.c:2465 objcopy.c:2485
+#, c-format
+msgid "bad format for %s"
+msgstr "%s ¸ñʽ´íÎó"
+
+#: objcopy.c:2379
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "¾¯¸æ£º½«¼ä϶Ìî³äÓÉ 0x%s ½Ø¶Ìµ½ 0x%x"
+
+#: objcopy.c:2531
+msgid "alternate machine code index must be positive"
+msgstr ""
+
+#: objcopy.c:2550
+msgid "byte number must be less than interleave"
+msgstr ""
+
+#: objcopy.c:2577
+#, c-format
+msgid "architecture %s unknown"
+msgstr "δ֪µÄÌåϵ½á¹¹ %s"
+
+#: objcopy.c:2581
+msgid "Warning: input target 'binary' required for binary architecture parameter."
+msgstr ""
+
+#: objcopy.c:2582
+#, c-format
+msgid " Argument %s ignored"
+msgstr " ºöÂÔ²ÎÊý %s"
+
+#: objcopy.c:2588
+#, c-format
+msgid "Cannot stat: %s: %s"
+msgstr "ÎÞ·¨ stat£º%s£º%s"
+
+#: objcopy.c:2628 objcopy.c:2642
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr ""
+
+#: objdump.c:165
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "Ó÷¨£º%s <Ñ¡Ïî> <Îļþ>\n"
+
+#: objdump.c:166
+msgid " Display information from object <file(s)>.\n"
+msgstr " ÏÔʾÀ´×ÔÄ¿±ê <Îļþ> µÄÐÅÏ¢¡£\n"
+
+#: objdump.c:167
+msgid " At least one of the following switches must be given:\n"
+msgstr " ÖÁÉÙ±ØÐë¸ø³öÒÔÏÂÑ¡ÏîÖ®Ò»£º\n"
+
+#: objdump.c:168
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -g, --debugging Display debug information in object file\n"
+" -G, --stabs Display (in raw form) any STABS 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"
+" -v, --version Display this program's version number\n"
+" -i, --info List object formats and architectures supported\n"
+" -H, --help Display this information\n"
+msgstr ""
+" -a, --archive-headers ÏÔʾ¹éµµÎļþÍ·ÐÅÏ¢\n"
+" -f, --file-headers ÏÔʾÕûÌåÎļþÍ·µÄÄÚÈÝ\n"
+" -p, --private-headers ÏÔʾĿ±ê¸ñʽÌØÓеÄÎļþÍ·ÄÚÈÝ\n"
+" -h, --[section-]headers ÏÔʾ½ÚÍ·µÄÄÚÈÝ\n"
+" -x, --all-headers ÏÔʾËùÓÐÍ·µÄÄÚÈÝ\n"
+" -d, --disassemble ÏÔʾ¿ÉÖ´ÐнڵĻã±àÄÚÈÝ\n"
+" -D, --disassemble-all ÏÔʾËùÓнڵĻã±àÄÚÈÝ\n"
+" -S, --source ½«Ô´´úÂëºÍ·´»ã±à»ìºÏÆðÀ´\n"
+" -s, --full-contents ÏÔʾËùÓÐÇëÇó½ÚµÄÍêÕûÄÚÈÝ\n"
+" -g, --debugging ÏÔʾĿ±êÎļþµÄµ÷ÊÔÐÅÏ¢\n"
+" -G, --stabs ÒÔԭʼÐÎʽÏÔʾÎļþÖÐËùÓÐµÄ STABS ÐÅÏ¢\n"
+" -t, --syms ÏÔʾ·ûºÅ±íµÄÄÚÈÝ\n"
+" -T, --dynamic-syms ÏÔʾ¶¯Ì¬·ûºÅ±íµÄÄÚÈÝ\n"
+" -r, --reloc ÏÔʾÎļþÖеÄÖض¨Î»ÌõÄ¿\n"
+" -R, --dynamic-reloc ÏÔʾÎļþÖеĶ¯Ì¬Öض¨Î»ÌõÄ¿\n"
+" -v, --version ÏÔʾ±¾³ÌÐòµÄ°æ±¾ºÅ\n"
+" -i, --info ÁоÙÖ§³ÖµÄÄ¿±ê¸ñʽºÍÌåϵ½á¹¹\n"
+" -H, --help ÏÔʾ±¾ÐÅÏ¢\n"
+
+#: objdump.c:190
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" ÒÔÏÂÑ¡ÏîÊÇ¿ÉÑ¡µÄ£º\n"
+
+#: objdump.c:191
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', 'gnu',\n"
+" 'lucid', 'arm', 'hp', 'edg', or 'gnu-new-abi'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whoes address is >= ADDR\n"
+" --stop-address=ADDR Only process data whoes address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+"\n"
+msgstr ""
+" -b, --target=BFDNAME ½«±êµÄÄ¿±êÎļþ¸ñʽָ¶¨Îª BFDNAME\n"
+" -m, --architecture=MACHINE ½«±êµÄÌåϵ½á¹¹Ö¸¶¨Îª MACHINE\n"
+" -j, --section=NAME Ö»ÏÔʾ NAME ½ÚµÄÐÅÏ¢\n"
+" -M, --disassembler-options=OPT ½«Îı¾´«µÝµ½ OPT ·´»ã±à³ÌÐò\n"
+" -EB --endian=big ·´»ã±àʱ¼Ù¶¨¸ßλ×Ö½ÚÔÚÇ°\n"
+" -EL --endian=little ·´»ã±àʱ¼Ù¶¨µÍλ×Ö½ÚÔÚÇ°\n"
+" --file-start-context ´ÓÎļþµÄÆðµãÒýÈëÉÏÏÂÎÄ (´øÓÐ -S)\n"
+" -l, --line-numbers ÔÚÊä³öÖиø³öÐкźÍÎļþÃû\n"
+" -C, --demangle[=STYLE] ¶Ô mangled/´¦Àí¹ýµÄ·ûºÅÃû½øÐнâÂë\n"
+" Èç¹û¸ø³öÁË STYLE£¬STYLE ¿ÉÄÜΪ¡°auto¡±¡¢¡°gnu¡±¡¢\n"
+" ¡°lucid¡±¡¢¡°arm¡±¡¢¡°hp¡±¡¢¡°edg¡±»ò¡°gnu-new-abi¡±\n"
+" -w, --wide ÒÔ¶àÓÚ 80 ÁеĿí¶È¶ÔÊä³ö½øÐиñʽ»¯\n"
+" -z, --disassemble-zeroes ·´»ã±àʱ²»ÒªÌø¹ýΪÁãµÄ¿é\n"
+" --start-address=ADDR Ö»Óнø³ÌÊý¾ÝµÄµØÖ· >= ADDR\n"
+" --stop-address=ADDR Ö»Óнø³ÌÊý¾ÝµÄµØÖ· <= ADDR\n"
+" --prefix-addresses ͬ·´»ã±à´úÂë²¢ÁÐÏÔʾÍêÕûµÄµØÖ·\n"
+" --[no-]show-raw-insn ͬ·ûºÅ·´»ã±à²¢ÁÐÏÔʾʮÁù½øÖÆÖµ\n"
+" --adjust-vma=OFFSET ΪËùÓÐÏÔʾµÄ½ÚµØÖ·Ôö¼Ó OFFSET\n"
+"\n"
+
+#: objdump.c:358
+msgid "Sections:\n"
+msgstr "½Ú£º\n"
+
+#: objdump.c:361 objdump.c:365
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr ""
+
+#: objdump.c:367
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr ""
+
+#: objdump.c:371
+msgid " Flags"
+msgstr " ±êÖ¾"
+
+#: objdump.c:419
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s£º²»ÊǶ¯Ì¬¶ÔÏó"
+
+#: objdump.c:433
+#, c-format
+msgid "%s: No dynamic symbols"
+msgstr "%s£ºÃ»Óж¯Ì¬·ûºÅ"
+
+#: objdump.c:1114
+msgid "Out of virtual memory"
+msgstr "Ðé´æ²»×ã"
+
+#: objdump.c:1543
+#, c-format
+msgid "Can't use supplied machine %s"
+msgstr "ÎÞ·¨Ê¹ÓÃÖ§³ÖµÄ»úÆ÷ %s"
+
+#: objdump.c:1561
+#, c-format
+msgid "Can't disassemble for architecture %s\n"
+msgstr "ÎÞ·¨·´»ã±àÌåϵ½á¹¹ %s\n"
+
+#: objdump.c:1643
+#, c-format
+msgid "Disassembly of section %s:\n"
+msgstr "·´»ã±à %s ½Ú£º\n"
+
+#: objdump.c:1818
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"%s ½Ú²»´æÔÚ\n"
+"\n"
+
+#: objdump.c:1825
+#, c-format
+msgid "%s has no %s section"
+msgstr "%s ûÓÐ %s ½Ú"
+
+#: objdump.c:1839
+#, c-format
+msgid "Reading %s section of %s failed: %s"
+msgstr "¶ÁÈë %2$s µÄ %1$s ½Úʧ°Ü£º%3$s"
+
+#: objdump.c:1851
+#, c-format
+msgid "Reading %s section of %s failed: %s\n"
+msgstr "¶ÁÈë %2$s µÄ %1$s ½Úʧ°Ü£º%3$s\n"
+
+#: objdump.c:1894
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"%s ½ÚµÄÄÚÈÝ£º\n"
+"\n"
+
+#: objdump.c:1994
+#, c-format
+msgid "architecture: %s, "
+msgstr "Ìåϵ½á¹¹£º%s£¬"
+
+#: objdump.c:1997
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "±êÖ¾ 0x%08x£º\n"
+
+#: objdump.c:2010
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"ÆðʼµØÖ· 0x"
+
+#: objdump.c:2042
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s£º Îļþ¸ñʽ %s\n"
+
+#: objdump.c:2084
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s£º´òÓ¡µ÷ÊÔÐÅϢʧ°Ü"
+
+#: objdump.c:2161
+#, c-format
+msgid "In archive %s:\n"
+msgstr "Ôڹ鵵Îļþ %s ÖУº\n"
+
+#: objdump.c:2213
+#, c-format
+msgid "Contents of section %s:\n"
+msgstr "%s ½ÚµÄÄÚÈÝ£º\n"
+
+#: objdump.c:2718
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "BFD Í·Îļþ°æ±¾ %s\n"
+
+#: objdump.c:2807
+msgid "unrecognized -E option"
+msgstr "ÎÞ·¨Ê¶±ðµÄ -E Ñ¡Ïî"
+
+#: objdump.c:2818
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "ÎÞ·¨Ê¶±ðµÄ --endian ÀàÐÍ¡°%s¡±"
+
+#: rdcoff.c:204
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type£º´íÎóµÄÀàÐÍÂë 0x%x"
+
+#: rdcoff.c:422 rdcoff.c:530 rdcoff.c:729
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment ʧ°Ü£º%s"
+
+#: rdcoff.c:438 rdcoff.c:749
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent ʧ°Ü£º%s"
+
+#: rdcoff.c:816
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr ""
+
+#: rdcoff.c:866
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld£ºÒâÍâµÄ .ef\n"
+
+#: rddbg.c:87
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s£ºÎ´Ê¶±ðµÄµ÷ÊÔÐÅÏ¢"
+
+#: rddbg.c:410
+msgid "Last stabs entries before error:\n"
+msgstr ""
+
+#: readelf.c:328
+#, c-format
+msgid "%s: Error: "
+msgstr "%s£º´íÎó£º"
+
+#: readelf.c:339
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s£º¾¯¸æ£º"
+
+#: readelf.c:361
+#, c-format
+msgid "Unable to seek to %x for %s\n"
+msgstr ""
+
+#: readelf.c:372
+#, c-format
+msgid "Out of memory allocating %d bytes for %s\n"
+msgstr ""
+
+#: readelf.c:380
+#, c-format
+msgid "Unable to read in %d bytes of %s\n"
+msgstr ""
+
+#: readelf.c:433 readelf.c:591
+#, c-format
+msgid "Unhandled data length: %d\n"
+msgstr "δ´¦ÀíµÄÊý¾Ý³¤¶È£º%d\n"
+
+#: readelf.c:675
+msgid "Don't know about relocations on this machine architecture\n"
+msgstr "²»ÖªµÀ¹ØÓÚ±¾»úÆ÷Ìåϵ½á¹¹ÖÐÖض¨Î»µÄÇé¿ö\n"
+
+#: readelf.c:697 readelf.c:726 readelf.c:772 readelf.c:799
+msgid "relocs"
+msgstr "Öض¨Î»"
+
+#: readelf.c:708 readelf.c:737 readelf.c:782 readelf.c:809
+msgid "out of memory parsing relocs"
+msgstr "½âÎöÖض¨Î»ÄÚ´æ²»×ã"
+
+#: readelf.c:861
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr ""
+
+#: readelf.c:863
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr ""
+
+#: readelf.c:868
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr ""
+
+#: readelf.c:870
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr ""
+
+#: readelf.c:878
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr ""
+
+#: readelf.c:880
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr ""
+
+#: readelf.c:885
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr ""
+
+#: readelf.c:887
+msgid " Offset Info Type Sym. Value Sym. Name\n"
+msgstr ""
+
+#: readelf.c:1134 readelf.c:1136 readelf.c:1184 readelf.c:1186 readelf.c:1195
+#: readelf.c:1197
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "²»ÄÜʶ±ðµÄ£º%-7lx"
+
+#: readelf.c:1158
+#, c-format
+msgid "<string table index %3ld>"
+msgstr "<×Ö·û´®±íË÷Òý %3ld>"
+
+#: readelf.c:1423
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "´¦ÀíÆ÷ÌØÓУº%lx"
+
+#: readelf.c:1442
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "²Ù×÷ϵͳÌØÓУº%lx"
+
+#: readelf.c:1445 readelf.c:2086
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<δ֪>£º%lx"
+
+#: readelf.c:1459
+msgid "NONE (None)"
+msgstr "NONE (ÎÞ)"
+
+#: readelf.c:1460
+msgid "REL (Relocatable file)"
+msgstr "REL (¿ÉÖض¨Î»Îļþ)"
+
+#: readelf.c:1461
+msgid "EXEC (Executable file)"
+msgstr "EXEC (¿ÉÖ´ÐÐÎļþ)"
+
+#: readelf.c:1462
+msgid "DYN (Shared object file)"
+msgstr "DYN (¹²ÏíÄ¿±êÎļþ)"
+
+#: readelf.c:1463
+msgid "CORE (Core file)"
+msgstr "CORE (Core Îļþ)"
+
+#: readelf.c:1467
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "´¦ÀíÆ÷ÌØÓУº(%x)"
+
+#: readelf.c:1469
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "²Ù×÷ϵͳÌØÓУº(%x)"
+
+#: readelf.c:1471 readelf.c:1573 readelf.c:2238
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<δ֪>£º%x"
+
+#: readelf.c:1484
+msgid "None"
+msgstr "ÎÞ"
+
+#: readelf.c:2278
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "Ó÷¨£ºreadelf <Ñ¡Ïî> elf-Îļþ\n"
+
+#: readelf.c:2279
+msgid " Display information about the contents of ELF format files\n"
+msgstr " ÏÔʾ¹ØÓÚ ELF ¸ñʽÎļþÄÚÈݵÄÐÅÏ¢\n"
+
+#: readelf.c:2280
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -S --section-headers Display the sections' header\n"
+" --sections An alias for --section-headers\n"
+" -e --headers Equivalent to: -h -l -S\n"
+" -s --syms Display the symbol table\n"
+" --symbols An alias for --syms\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic segment (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number> Dump the contents of section <number>\n"
+" -w --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" Ñ¡ÏîΪ£º\n"
+" -a --all µÈ¼ÛÓÚ£º-h -l -S -s -r -d -V -A -I\n"
+" -h --file-header ÏÔʾ ELF ÎļþÍ·\n"
+" -l --program-headers ÏÔʾ³ÌÐòÍ·\n"
+" --segments --program-headers µÄ±ðÃû\n"
+" -S --section-headers ÏÔʾ½ÚÍ·\n"
+" --sections --section-headers µÄ±ðÃû\n"
+" -e --headers µÈ¼ÛÓÚ£º-h -l -S\n"
+" -s --syms ÏÔʾ·ûºÅ±í\n"
+" --symbols --syms µÄ±ðÃû\n"
+" -n --notes ÏÔʾºËÐÄ×¢ÊÍ (Èç¹ûÓеĻ°)\n"
+" -r --relocs ÏÔʾÖض¨Î» (Èç¹ûÓеĻ°)\n"
+" -u --unwind ÏÔʾչ¿ª(unwind)ÐÅÏ¢ (Èç¹ûÓеĻ°)\n"
+" -d --dynamic ÏÔʾ¶¯Ì¬½Ú (Èç¹ûÓеĻ°)\n"
+" -V --version-info ÏÔʾ°æ±¾½Ú (Èç¹ûÓеĻ°)\n"
+" -A --arch-specific ÏÔʾÌåϵ½á¹¹ÌØÓеÄÐÅÏ¢ (Èç¹ûÓеĻ°).\n"
+" -D --use-dynamic ÏÔʾ·ûºÅµÄʱºòʹÓö¯Ì¬½ÚÐÅÏ¢\n"
+" -x --hex-dump=<±àºÅ> Êä³ö <±àºÅ> ½ÚµÄÄÚÈÝ\n"
+" -w --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=macro,=frames,=str,=loc]\n"
+" ÏÔʾ DWARF2 µ÷ÊÔ½ÚµÄÄÚÈÝ\n"
+
+#: readelf.c:2301
+msgid ""
+" -i --instruction-dump=<number>\n"
+" Disassemble the contents of section <number>\n"
+msgstr ""
+" -i --instruction-dump=<񅧏>\n"
+" ·´»ã±à½Ú <±àºÅ> µÄÄÚÈÝ\n"
+
+#: readelf.c:2305
+msgid ""
+" -I --histogram Display histogram of bucket list lengths\n"
+" -W --wide Allow output width to exceed 80 characters\n"
+" -H --help Display this information\n"
+" -v --version Display the version number of readelf\n"
+msgstr ""
+
+#: readelf.c:2327
+msgid "Out of memory allocating dump request table."
+msgstr ""
+
+#: readelf.c:2491
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "ÎÞ·¨Ê¶±ðµÄµ÷ÊÔÑ¡Ïî¡°%s¡±\n"
+
+#: readelf.c:2519
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "ÎÞЧµÄÑ¡Ïî¡°-%c¡±\n"
+
+#: readelf.c:2532
+msgid "Nothing to do.\n"
+msgstr "ÎÞÊ¿É×ö¡£\n"
+
+#: readelf.c:2545 readelf.c:2562 readelf.c:4867
+msgid "none"
+msgstr "ÎÞ"
+
+#: readelf.c:2549 readelf.c:2566 readelf.c:2594
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<δ֪£º%x>"
+
+#: readelf.c:2563
+msgid "2's complement, little endian"
+msgstr ""
+
+#: readelf.c:2564
+msgid "2's complement, big endian"
+msgstr ""
+
+#: readelf.c:2591
+msgid "Standalone App"
+msgstr "¶ÀÁ¢Ó¦ÓóÌÐò"
+
+#: readelf.c:2609
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "²»ÊÇ ELF Îļþ - Ëü¿ªÍ·µÄ magic ×Ö½Ú´íÎó\n"
+
+#: readelf.c:2617
+msgid "ELF Header:\n"
+msgstr "ELF Í·£º\n"
+
+#: readelf.c:2618
+msgid " Magic: "
+msgstr " Magic£º "
+
+#: readelf.c:2622
+#, c-format
+msgid " Class: %s\n"
+msgstr ""
+
+#: readelf.c:2624
+#, c-format
+msgid " Data: %s\n"
+msgstr ""
+
+#: readelf.c:2626
+#, c-format
+msgid " Version: %d %s\n"
+msgstr ""
+
+#: readelf.c:2633
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr ""
+
+#: readelf.c:2635
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr ""
+
+#: readelf.c:2637
+#, c-format
+msgid " Type: %s\n"
+msgstr ""
+
+#: readelf.c:2639
+#, c-format
+msgid " Machine: %s\n"
+msgstr ""
+
+#: readelf.c:2641
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr ""
+
+#: readelf.c:2644
+msgid " Entry point address: "
+msgstr " Èë¿ÚµãµØÖ·£º "
+
+#: readelf.c:2646
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" ³ÌÐòÍ·Æðµã£º "
+
+#: readelf.c:2648
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+
+#: readelf.c:2650
+msgid " (bytes into file)\n"
+msgstr ""
+
+#: readelf.c:2652
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " ±êÖ¾£º 0x%lx%s\n"
+
+#: readelf.c:2655
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " ±¾Í·µÄ´óС£º %ld (×Ö½Ú)\n"
+
+#: readelf.c:2657
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " ³ÌÐòÍ·´óС£º %ld (×Ö½Ú)\n"
+
+#: readelf.c:2659
+#, c-format
+msgid " Number of program headers: %ld\n"
+msgstr " ³ÌÐòÍ·ÊýÁ¿£º %ld\n"
+
+#: readelf.c:2661
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " ½ÚÍ·´óС£º %ld (×Ö½Ú)\n"
+
+#: readelf.c:2663
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " ½ÚÍ·ÊýÁ¿£º %ld"
+
+#: readelf.c:2668
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " ×Ö·û´®±íË÷Òý½ÚÍ·£º %ld"
+
+#: readelf.c:2702 readelf.c:2738
+msgid "program headers"
+msgstr "³ÌÐòÍ·"
+
+#: readelf.c:2772
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"±¾ÎļþÖÐûÓгÌÐòÍ·¡£\n"
+
+#: readelf.c:2778
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Elf ÎļþÀàÐÍΪ %s\n"
+
+#: readelf.c:2779
+msgid "Entry point "
+msgstr "Èë¿Úµã "
+
+#: readelf.c:2781
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"¹²ÓÐ %d ¸ö³ÌÐòÍ·£¬¿ªÊ¼ÓÚÆ«ÒÆÁ¿"
+
+#: readelf.c:2792 readelf.c:3019 readelf.c:3065 readelf.c:3128 readelf.c:3195
+#: readelf.c:4229 readelf.c:4272 readelf.c:4461 readelf.c:5414 readelf.c:5428
+#: readelf.c:9659 readelf.c:9699
+msgid "Out of memory\n"
+msgstr "ÄÚ´æ²»×ã\n"
+
+#: readelf.c:2810 readelf.c:2812
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"³ÌÐòÍ·£º\n"
+
+#: readelf.c:2816
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr ""
+
+#: readelf.c:2819
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr ""
+
+#: readelf.c:2823
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr ""
+
+#: readelf.c:2825
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr ""
+
+#: readelf.c:2925
+msgid "more than one dynamic segment\n"
+msgstr "¶àÓÚÒ»¸ö¶¯Ì¬¶Î\n"
+
+#: readelf.c:2933
+msgid "Unable to find program interpreter name\n"
+msgstr "ÎÞ·¨ÕÒµ½³ÌÐò½âÊÍÆ÷Ãû³Æ\n"
+
+#: readelf.c:2940
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [ÕýÔÚÇëÇó³ÌÐò½âÊÍÆ÷£º%s]"
+
+#: readelf.c:2958
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+
+#: readelf.c:2959
+msgid " Segment Sections...\n"
+msgstr " ¶Î½Ú...\n"
+
+#: readelf.c:3010 readelf.c:3056
+msgid "section headers"
+msgstr "½ÚÍ·"
+
+#: readelf.c:3104 readelf.c:3171
+msgid "symbols"
+msgstr "·ûºÅ"
+
+#: readelf.c:3115 readelf.c:3182
+msgid "symtab shndx"
+msgstr ""
+
+#: readelf.c:3284
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"±¾ÎļþÖÐûÓнڡ£\n"
+
+#: readelf.c:3290
+#, c-format
+msgid "There are %d section headers, starting at offset 0x%lx:\n"
+msgstr "¹²ÓÐ %d ¸ö½ÚÍ·£¬´ÓÆ«ÒÆÁ¿ 0x%lx ¿ªÊ¼£º\n"
+
+#: readelf.c:3307 readelf.c:3621 readelf.c:3968 readelf.c:5565
+msgid "string table"
+msgstr "×Ö·û´®±í"
+
+#: readelf.c:3328
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "Îļþº¬Óжà¸ö¶¯Ì¬·ûºÅ±í\n"
+
+#: readelf.c:3340
+msgid "File contains multiple dynamic string tables\n"
+msgstr "Îļþº¬Óжà¸ö¶¯Ì¬×Ö·û´®±í\n"
+
+#: readelf.c:3346
+msgid "dynamic strings"
+msgstr "¶¯Ì¬×Ö·û´®"
+
+#: readelf.c:3352
+msgid "File contains multiple symtab shndx tables\n"
+msgstr ""
+
+#: readelf.c:3390
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"½ÚÍ·£º\n"
+
+#: readelf.c:3392
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"½ÚÍ·£º\n"
+
+#: readelf.c:3396
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:3399
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr ""
+
+#: readelf.c:3402
+msgid " [Nr] Name Type Address Offset\n"
+msgstr ""
+
+#: readelf.c:3403
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr ""
+
+#: readelf.c:3498
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+
+#: readelf.c:3559
+#, c-format
+msgid ""
+"\n"
+"Relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"λÓÚÆ«ÒÆÁ¿ 0x%lx µÄÖض¨Î»½Úº¬ÓÐ %ld ¸ö×Ö½Ú£º\n"
+
+#: readelf.c:3566
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"±¾ÎļþÖÐûÓж¯Ì¬Öض¨Î»¡£\n"
+
+#: readelf.c:3593
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"Öض¨Î»½Ú "
+
+#: readelf.c:3598 readelf.c:4031 readelf.c:4045
+#, c-format
+msgid "'%s'"
+msgstr "¡°%s¡±"
+
+#: readelf.c:3600 readelf.c:4047
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " λÓÚÆ«ÒÆÁ¿ 0x%lx º¬ÓÐ %lu ¸öÌõÄ¿£º\n"
+
+#: readelf.c:3638
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"¸ÃÎļþÖÐûÓÐÖض¨Î»ÐÅÏ¢¡£\n"
+
+#: readelf.c:3834
+msgid "unwind table"
+msgstr ""
+
+#: readelf.c:3885 readelf.c:3897 readelf.c:7890 readelf.c:7901
+#, c-format
+msgid "Skipping unexpected symbol type %u\n"
+msgstr "Ìø¹ýÒâÍâµÄ·ûºÅÀàÐÍ %u\n"
+
+#: readelf.c:3905
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "Ìø¹ýÒâÍâµÄÖض¨Î»ÀàÐÍ %s\n"
+
+#: readelf.c:3950 readelf.c:3975
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+
+#: readelf.c:4026
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+
+#: readelf.c:4038
+msgid "unwind info"
+msgstr ""
+
+#: readelf.c:4040
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+
+#: readelf.c:4213 readelf.c:4256
+msgid "dynamic segment"
+msgstr "¶¯Ì¬½Ú"
+
+#: readelf.c:4334
+msgid ""
+"\n"
+"There is no dynamic segment in this file.\n"
+msgstr ""
+"\n"
+"±¾ÎļþûÓж¯Ì¬½Ú¡£\n"
+
+#: readelf.c:4368
+msgid "Unable to seek to end of file!"
+msgstr "ÎÞ·¨¶¨Î»µÄÎļþĩβ£¡"
+
+#: readelf.c:4379
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "ÎÞ·¨È·¶¨Òª¶ÁÈëµÄ·ûºÅÊýÁ¿\n"
+
+#: readelf.c:4409
+msgid "Unable to seek to end of file\n"
+msgstr "ÎÞ·¨¶¨Î»µ½Îļþĩβ\n"
+
+#: readelf.c:4415
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "ÎÞ·¨È·¶¨¶¯Ì¬×Ö·û´®±íµÄ³¤¶È\n"
+
+#: readelf.c:4420
+msgid "dynamic string table"
+msgstr "¶¯Ì¬×Ö·û´®±í"
+
+#: readelf.c:4454
+msgid "symbol information"
+msgstr "·ûºÅÐÅÏ¢"
+
+#: readelf.c:4478
+#, c-format
+msgid ""
+"\n"
+"Dynamic segment at offset 0x%x contains %ld entries:\n"
+msgstr ""
+"\n"
+"λÓÚÆ«ÒÆÁ¿ 0x%x ´¦µÄ¶¯Ì¬½Úº¬ÓÐ %ld ¸öÌõÄ¿£º\n"
+
+#: readelf.c:4481
+msgid " Tag Type Name/Value\n"
+msgstr " ±ê¼Ç ÀàÐÍ Ãû³Æ/Öµ\n"
+
+#: readelf.c:4517
+msgid "Auxiliary library"
+msgstr "¸½¼Ó¿â"
+
+#: readelf.c:4521
+msgid "Filter library"
+msgstr "¹ýÂËÆ÷¿â"
+
+#: readelf.c:4525
+msgid "Configuration file"
+msgstr "ÅäÖÃÎļþ"
+
+#: readelf.c:4529
+msgid "Dependency audit library"
+msgstr ""
+
+#: readelf.c:4533
+msgid "Audit library"
+msgstr ""
+
+#: readelf.c:4551 readelf.c:4577 readelf.c:4603
+msgid "Flags:"
+msgstr "±êÖ¾£º"
+
+#: readelf.c:4553 readelf.c:4579 readelf.c:4605
+msgid " None\n"
+msgstr " ÎÞ\n"
+
+#: readelf.c:4724
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "¹²Ïí¿â£º[%s]"
+
+#: readelf.c:4727
+msgid " program interpreter"
+msgstr " ³ÌÐò½âÊÍÆ÷"
+
+#: readelf.c:4731
+#, c-format
+msgid "Library soname: [%s]"
+msgstr ""
+
+#: readelf.c:4735
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr ""
+
+#: readelf.c:4739
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr ""
+
+#: readelf.c:4802
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "²»ÐèÒªµÄÄ¿±ê£º[%s]\n"
+
+#: readelf.c:4913
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %ld entries:\n"
+msgstr ""
+"\n"
+"°æ±¾¶¨Òå½Ú¡°%s¡±º¬ÓÐ %ld ¸öÌõÄ¿£º\n"
+
+#: readelf.c:4916
+msgid " Addr: 0x"
+msgstr " µØÖ·£º0x"
+
+#: readelf.c:4918 readelf.c:5113
+#, c-format
+msgid " Offset: %#08lx Link: %lx (%s)\n"
+msgstr " Æ«ÒÆÁ¿£º%#08lx Á¬½Ó£º%lx (%s)\n"
+
+#: readelf.c:4925
+msgid "version definition section"
+msgstr "°æ±¾¶¨Òå½Ú"
+
+#: readelf.c:4951
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr ""
+
+#: readelf.c:4954
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr ""
+
+#: readelf.c:4965
+#, c-format
+msgid "Name: %s\n"
+msgstr "Ãû³Æ£º%s\n"
+
+#: readelf.c:4967
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "Ãû³ÆË÷Òý£º%ld\n"
+
+#: readelf.c:4982
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr ""
+
+#: readelf.c:4985
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr ""
+
+#: readelf.c:5004
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %ld entries:\n"
+msgstr ""
+
+#: readelf.c:5007
+msgid " Addr: 0x"
+msgstr " µØÖ·£º0x"
+
+#: readelf.c:5009
+#, c-format
+msgid " Offset: %#08lx Link to section: %ld (%s)\n"
+msgstr ""
+
+#: readelf.c:5015
+msgid "version need section"
+msgstr "°æ±¾ÐèÒª½Ú"
+
+#: readelf.c:5037
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr ""
+
+#: readelf.c:5040
+#, c-format
+msgid " File: %s"
+msgstr " Îļþ£º%s"
+
+#: readelf.c:5042
+#, c-format
+msgid " File: %lx"
+msgstr " Îļþ£º%lx"
+
+#: readelf.c:5044
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " ¼ÆÊý£º%d\n"
+
+#: readelf.c:5062
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x£ºÃû³Æ£º%s"
+
+#: readelf.c:5065
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x£ºÃû³ÆË÷Òý£º%lx"
+
+#: readelf.c:5068
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " ±êÖ¾£º%s °æ±¾£º%d\n"
+
+#: readelf.c:5104
+msgid "version string table"
+msgstr "°æ±¾×Ö·û´®±í"
+
+#: readelf.c:5108
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"°æ±¾·ûºÅ½Ú¡°%s¡±º¬ÓÐ %d ¸öÌõÄ¿£º\n"
+
+#: readelf.c:5111
+msgid " Addr: "
+msgstr " µØÖ·£º"
+
+#: readelf.c:5121
+msgid "version symbol data"
+msgstr "°æ±¾·ûºÅÊý¾Ý"
+
+#: readelf.c:5148
+msgid " 0 (*local*) "
+msgstr " 0 (*±¾µØ*) "
+
+#: readelf.c:5152
+msgid " 1 (*global*) "
+msgstr " 1 (*È«¾Ö*) "
+
+#: readelf.c:5187 readelf.c:5622
+msgid "version need"
+msgstr ""
+
+#: readelf.c:5197
+msgid "version need aux (2)"
+msgstr ""
+
+#: readelf.c:5238 readelf.c:5684
+msgid "version def"
+msgstr ""
+
+#: readelf.c:5257 readelf.c:5699
+msgid "version def aux"
+msgstr ""
+
+#: readelf.c:5288
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+
+#: readelf.c:5420
+msgid "Unable to read in dynamic data\n"
+msgstr "ÎÞ·¨¶ÁÈ붯̬Êý¾Ý\n"
+
+#: readelf.c:5462
+msgid "Unable to seek to start of dynamic information"
+msgstr "ÎÞ·¨¶¨Î»µ½¶¯Ì¬ÐÅÏ¢µÄÆðµã"
+
+#: readelf.c:5468
+msgid "Failed to read in number of buckets\n"
+msgstr ""
+
+#: readelf.c:5474
+msgid "Failed to read in number of chains\n"
+msgstr ""
+
+#: readelf.c:5494
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+
+#: readelf.c:5496
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:5498
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:5543
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:5547
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:5549
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr ""
+
+#: readelf.c:5595
+msgid "version data"
+msgstr "°æ±¾Êý¾Ý"
+
+#: readelf.c:5635
+msgid "version need aux (3)"
+msgstr ""
+
+#: readelf.c:5660
+msgid "bad dynamic symbol"
+msgstr "´íÎóµÄ¶¯Ì¬·ûºÅ"
+
+#: readelf.c:5722
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+
+#: readelf.c:5734
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %d buckets):\n"
+msgstr ""
+
+#: readelf.c:5736
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr ""
+
+#: readelf.c:5741 readelf.c:5760 readelf.c:9146 readelf.c:9338
+msgid "Out of memory"
+msgstr "ÄÚ´æ²»×ã"
+
+#: readelf.c:5809
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"λÓÚÆ«ÒÆÁ¿ 0x%lx µÄ¶¯Ì¬ÐÅÏ¢½Úº¬ÓÐ %d ¸öÌõÄ¿£º\n"
+
+#: readelf.c:5812
+msgid " Num: Name BoundTo Flags\n"
+msgstr ""
+
+#: readelf.c:5864
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+
+#: readelf.c:5887
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"¡°%s¡±½ÚûÓпÉÊä³öµÄÊý¾Ý¡£\n"
+
+#: readelf.c:5892
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"¡°%s¡±½ÚµÄÊ®Áù½øÖÆÊä³ö£º\n"
+
+#: readelf.c:5897
+msgid "section data"
+msgstr "½ÚÊä³ö"
+
+#: readelf.c:6046
+msgid "badly formed extended line op encountered!\n"
+msgstr ""
+
+#: readelf.c:6053
+#, c-format
+msgid " Extended opcode %d: "
+msgstr ""
+
+#: readelf.c:6058
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"ÐòÁнáÊø\n"
+"\n"
+
+#: readelf.c:6064
+#, c-format
+msgid "set Address to 0x%lx\n"
+msgstr ""
+
+#: readelf.c:6069
+msgid " define new File Table entry\n"
+msgstr " ¶¨ÒåÐÂÎļþ±íÌõÄ¿\n"
+
+#: readelf.c:6070 readelf.c:6199
+msgid " Entry\tDir\tTime\tSize\tName\n"
+msgstr " ÌõÄ¿\tĿ¼\tʱ¼ä\t´óС\tÃû³Æ\n"
+
+#: readelf.c:6072
+#, c-format
+msgid " %d\t"
+msgstr " %d\t"
+
+#: readelf.c:6075 readelf.c:6077 readelf.c:6079 readelf.c:6211 readelf.c:6213
+#: readelf.c:6215
+#, c-format
+msgid "%lu\t"
+msgstr "%lu\t"
+
+#: readelf.c:6080
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+msgstr ""
+"%s\n"
+"\n"
+
+#: readelf.c:6084
+#, c-format
+msgid "UNKNOWN: length %d\n"
+msgstr "δ֪£º³¤¶È %d\n"
+
+#: readelf.c:6110
+#, c-format
+msgid ""
+"\n"
+"Dump of debug contents of section %s:\n"
+"\n"
+msgstr ""
+"\n"
+"Êä³ö %s ½ÚµÄµ÷ÊÔÄÚÈÝ£º\n"
+"\n"
+
+#: readelf.c:6122
+msgid "64-bit DWARF line info is not supported yet.\n"
+msgstr "Éв»Ö§³Ö 64-λ DWARF ÐÐÐÅÏ¢¡£\n"
+
+#: readelf.c:6129
+msgid "The line info appears to be corrupt - the section is too small\n"
+msgstr "ÐÐÐÅÏ¢ËƺõÒÑË𻵠- ½Ú¹ýС\n"
+
+#: readelf.c:6137
+msgid "Only DWARF version 2 line info is currently supported.\n"
+msgstr "Ä¿Ç°Ö»Ö§³ÖµÚ¶þ°æ DWARF ÐÐÐÅÏ¢¡£\n"
+
+#: readelf.c:6152
+#, c-format
+msgid " Length: %ld\n"
+msgstr " ³¤¶È£º %ld\n"
+
+#: readelf.c:6153
+#, c-format
+msgid " DWARF Version: %d\n"
+msgstr " DWARF °æ±¾£º %d\n"
+
+#: readelf.c:6154
+#, c-format
+msgid " Prologue Length: %d\n"
+msgstr ""
+
+#: readelf.c:6155
+#, c-format
+msgid " Minimum Instruction Length: %d\n"
+msgstr " ×îСָÁ¶È£º %d\n"
+
+#: readelf.c:6156
+#, c-format
+msgid " Initial value of 'is_stmt': %d\n"
+msgstr " ¡°is_stmt¡±µÄ³õʼֵ£º %d\n"
+
+#: readelf.c:6157
+#, c-format
+msgid " Line Base: %d\n"
+msgstr ""
+
+#: readelf.c:6158
+#, c-format
+msgid " Line Range: %d\n"
+msgstr ""
+
+#: readelf.c:6159
+#, c-format
+msgid " Opcode Base: %d\n"
+msgstr ""
+
+#: readelf.c:6168
+msgid ""
+"\n"
+" Opcodes:\n"
+msgstr ""
+
+#: readelf.c:6171
+#, c-format
+msgid " Opcode %d has %d args\n"
+msgstr ""
+
+#: readelf.c:6177
+msgid ""
+"\n"
+" The Directory Table is empty.\n"
+msgstr ""
+"\n"
+" Ŀ¼±íΪ¿Õ¡£\n"
+
+#: readelf.c:6180
+msgid ""
+"\n"
+" The Directory Table:\n"
+msgstr ""
+"\n"
+" Ŀ¼±í£º\n"
+
+#: readelf.c:6184
+#, c-format
+msgid " %s\n"
+msgstr " %s\n"
+
+#: readelf.c:6195
+msgid ""
+"\n"
+" The File Name Table is empty.\n"
+msgstr ""
+"\n"
+" ÎļþÃû±íΪ¿Õ¡£\n"
+
+#: readelf.c:6198
+msgid ""
+"\n"
+" The File Name Table:\n"
+msgstr ""
+"\n"
+" ÎļþÃû±í£º\n"
+
+#: readelf.c:6206
+#, c-format
+msgid " %d\t"
+msgstr " %d\t"
+
+#: readelf.c:6217
+#, c-format
+msgid "%s\n"
+msgstr "%s\n"
+
+#. Now display the statements.
+#: readelf.c:6225
+msgid ""
+"\n"
+" Line Number Statements:\n"
+msgstr ""
+"\n"
+" ÐкÅÓï¾ä£º\n"
+
+#: readelf.c:6241
+#, c-format
+msgid " Special opcode %d: advance Address by %d to 0x%lx"
+msgstr ""
+
+#: readelf.c:6245
+#, c-format
+msgid " and Line by %d to %d\n"
+msgstr ""
+
+#: readelf.c:6256
+msgid " Copy\n"
+msgstr " ¸´ÖÆ\n"
+
+#: readelf.c:6263
+#, c-format
+msgid " Advance PC by %d to %lx\n"
+msgstr ""
+
+#: readelf.c:6271
+#, c-format
+msgid " Advance Line by %d to %d\n"
+msgstr ""
+
+#: readelf.c:6278
+#, c-format
+msgid " Set File Name to entry %d in the File Name Table\n"
+msgstr ""
+
+#: readelf.c:6286
+#, c-format
+msgid " Set column to %d\n"
+msgstr " ½«ÁÐÉ趨Ϊ %d\n"
+
+#: readelf.c:6293
+#, c-format
+msgid " Set is_stmt to %d\n"
+msgstr " ½« is_stmt É趨Ϊ %d\n"
+
+#: readelf.c:6298
+msgid " Set basic block\n"
+msgstr " É趨»ù±¾¿é\n"
+
+#: readelf.c:6306
+#, c-format
+msgid " Advance PC by constant %d to 0x%lx\n"
+msgstr ""
+
+#: readelf.c:6314
+#, c-format
+msgid " Advance PC by fixed size amount %d to 0x%lx\n"
+msgstr ""
+
+#: readelf.c:6319
+msgid " Set prologue_end to true\n"
+msgstr ""
+
+#: readelf.c:6323
+msgid " Set epilogue_begin to true\n"
+msgstr ""
+
+#: readelf.c:6329
+#, c-format
+msgid " Set ISA to %d\n"
+msgstr ""
+
+#: readelf.c:6333
+#, c-format
+msgid " Unknown opcode %d with operands: "
+msgstr ""
+
+#: readelf.c:6365 readelf.c:6827 readelf.c:6899
+#, c-format
+msgid ""
+"Contents of the %s section:\n"
+"\n"
+msgstr ""
+
+#: readelf.c:6384
+msgid "64-bit DWARF pubnames are not supported yet.\n"
+msgstr ""
+
+#: readelf.c:6394
+msgid "Only DWARF 2 pubnames are currently supported\n"
+msgstr ""
+
+#: readelf.c:6401
+#, c-format
+msgid " Length: %ld\n"
+msgstr " ³¤¶È£º %ld\n"
+
+#: readelf.c:6403
+#, c-format
+msgid " Version: %d\n"
+msgstr " °æ±¾£º %d\n"
+
+#: readelf.c:6405
+#, c-format
+msgid " Offset into .debug_info section: %ld\n"
+msgstr " ÔÚ .debug_info ½ÚÖеÄÆ«ÒÆÁ¿£º %ld\n"
+
+#: readelf.c:6407
+#, c-format
+msgid " Size of area in .debug_info section: %ld\n"
+msgstr " ÔÚ .debug_info ½ÚÖÐÇøÓòµÄ´óС£º %ld\n"
+
+#: readelf.c:6410
+msgid ""
+"\n"
+" Offset\tName\n"
+msgstr ""
+"\n"
+" Æ«ÒÆÁ¿\tÃû³Æ\n"
+
+#: readelf.c:6501
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "δ֪µÄ TAG Öµ£º%lx"
+
+#: readelf.c:6612
+#, c-format
+msgid "Unknown AT value: %lx"
+msgstr "δ֪µÄ AT Öµ£º%lx"
+
+#: readelf.c:6649
+#, c-format
+msgid "Unknown FORM value: %lx"
+msgstr "δ֪µÄ FORM Öµ£º%lx"
+
+#: readelf.c:6848
+#, c-format
+msgid " DW_MACINFO_start_file - lineno: %d filenum: %d\n"
+msgstr " DW_MACINFO_start_file - Ðкţº%d Îļþ±àºÅ£º%d\n"
+
+#: readelf.c:6853
+msgid " DW_MACINFO_end_file\n"
+msgstr " DW_MACINFO_end_file\n"
+
+#: readelf.c:6861
+#, c-format
+msgid " DW_MACINFO_define - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_define - Ðкţº%d ºê£º%s\n"
+
+#: readelf.c:6869
+#, c-format
+msgid " DW_MACINFO_undef - lineno : %d macro : %s\n"
+msgstr " DW_MACINFO_undef - Ðкţº%d ºê£º%s\n"
+
+#: readelf.c:6880
+#, c-format
+msgid " DW_MACINFO_vendor_ext - constant : %d string : %s\n"
+msgstr " DW_MACINFO_vendor_ext - ³£Á¿£º%d ×Ö·û´®£º%s\n"
+
+#: readelf.c:6908
+msgid " Number TAG\n"
+msgstr ""
+
+#: readelf.c:6914
+#, c-format
+msgid " %ld %s [%s]\n"
+msgstr ""
+
+#: readelf.c:6917
+msgid "has children"
+msgstr ""
+
+#: readelf.c:6917
+msgid "no children"
+msgstr ""
+
+#: readelf.c:6921
+#, c-format
+msgid " %-18s %s\n"
+msgstr " %-18s %s\n"
+
+#: readelf.c:6942
+#, c-format
+msgid " %lu byte block: "
+msgstr " %lu ×ֽڵĿ飺"
+
+#: readelf.c:7265
+msgid "(User defined location op)"
+msgstr ""
+
+#: readelf.c:7267
+msgid "(Unknown location op)"
+msgstr ""
+
+#: readelf.c:7305
+msgid "debug_loc section data"
+msgstr "debug_loc ½ÚÊý¾Ý"
+
+#: readelf.c:7336
+msgid ""
+"\n"
+"The .debug_loc section is empty.\n"
+msgstr ""
+"\n"
+".debug_loc ½ÚΪ¿Õ¡£\n"
+
+#: readelf.c:7339
+msgid ""
+"Contents of the .debug_loc section:\n"
+"\n"
+msgstr ""
+".debug_loc ½ÚµÄÄÚÈÝ£º\n"
+"\n"
+
+#: readelf.c:7340
+msgid ""
+"\n"
+" Offset Begin End Expression\n"
+msgstr ""
+
+#: readelf.c:7412
+msgid "debug_str section data"
+msgstr "debug_str ½ÚÊý¾Ý"
+
+#: readelf.c:7431
+msgid "<no .debug_str section>"
+msgstr "<ûÓÐ .debug_str ½Ú>"
+
+#: readelf.c:7434
+msgid "<offset is too big>"
+msgstr "<Æ«ÒÆÁ¿¹ý´ó>"
+
+#: readelf.c:7454
+msgid ""
+"\n"
+"The .debug_str section is empty.\n"
+msgstr ""
+"\n"
+".debug_str ½ÚΪ¿Õ¡£\n"
+
+#: readelf.c:7458
+msgid ""
+"Contents of the .debug_str section:\n"
+"\n"
+msgstr ""
+".debug_str ½ÚµÄÄÚÈÝ£º\n"
+"\n"
+
+#: readelf.c:7629
+#, c-format
+msgid " (indirect string, offset: 0x%lx): "
+msgstr " (¼ä½Ó×Ö·û´®£¬Æ«ÒÆÁ¿£º0x%lx)£º"
+
+#: readelf.c:7638
+#, c-format
+msgid "Unrecognized form: %d\n"
+msgstr "ÎÞ·¨Ê¶±ðµÄÐÎʽ£º%d\n"
+
+#: readelf.c:7651
+msgid "(not inlined)"
+msgstr "(δÄÚÁ¬)"
+
+#: readelf.c:7652
+msgid "(inlined)"
+msgstr "(ÒÑÄÚÁ¬)"
+
+#: readelf.c:7653
+msgid "(declared as inline but ignored)"
+msgstr "(ÉùÃ÷ΪÄÚÁ¬µ«±»ºöÂÔ)"
+
+#: readelf.c:7654
+msgid "(declared as inline and inlined)"
+msgstr "(ÉùÃ÷ΪÄÚÁ¬²¢ÒÑÄÚÁ¬)"
+
+#: readelf.c:7655
+#, c-format
+msgid " (Unknown inline attribute value: %lx)"
+msgstr " (δ֪µÄÄÚÁ¬ÊôÐÔÖµ£º%lx)"
+
+#: readelf.c:7826 readelf.c:8029
+#, c-format
+msgid ""
+"The section %s contains:\n"
+"\n"
+msgstr ""
+"%s ½Úº¬ÓУº\n"
+"\n"
+
+#: readelf.c:7850
+msgid "64-bit DWARF debug info is not supported yet.\n"
+msgstr "Éв»Ö§³Ö 64-λ DWARF µ÷ÊÔÐÅÏ¢¡£\n"
+
+#: readelf.c:7919
+#, c-format
+msgid " Compilation Unit @ %lx:\n"
+msgstr " ±àÒëµ¥Ôª @ %lx£º\n"
+
+#: readelf.c:7920
+#, c-format
+msgid " Length: %ld\n"
+msgstr " ³¤¶È£º %ld\n"
+
+#: readelf.c:7921
+#, c-format
+msgid " Version: %d\n"
+msgstr " °æ±¾£º %d\n"
+
+#: readelf.c:7922
+#, c-format
+msgid " Abbrev Offset: %ld\n"
+msgstr " ËõдƫÒÆÁ¿£º %ld\n"
+
+#: readelf.c:7923
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " Ö¸Õë´óС£º %d\n"
+
+#: readelf.c:7927
+msgid "Only version 2 DWARF debug information is currently supported.\n"
+msgstr "Ö»Ö§³ÖµÚ¶þ°æ DWARF µ÷ÊÔÐÅÏ¢¡£\n"
+
+#: readelf.c:7948
+msgid "Unable to locate .debug_abbrev section!\n"
+msgstr "ÎÞ·¨¶¨Î» .debug_abbrev ½Ú£¡\n"
+
+#: readelf.c:7954
+msgid "debug_abbrev section data"
+msgstr "debug_abbrev ½ÚÊý¾Ý"
+
+#: readelf.c:7991
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "ÎÞ·¨ÔÚËõд±íÖж¨Î»ÌõÄ¿ %lu\n"
+
+#: readelf.c:7996
+#, c-format
+msgid " <%d><%lx>: Abbrev Number: %lu (%s)\n"
+msgstr " <%d><%lx>£ºËõд±àºÅ£º%lu (%s)\n"
+
+#: readelf.c:8050
+msgid "64-bit DWARF aranges are not supported yet.\n"
+msgstr ""
+
+#: readelf.c:8056
+msgid "Only DWARF 2 aranges are currently supported.\n"
+msgstr ""
+
+#: readelf.c:8060
+#, c-format
+msgid " Length: %ld\n"
+msgstr ""
+
+#: readelf.c:8061
+#, c-format
+msgid " Version: %d\n"
+msgstr ""
+
+#: readelf.c:8062
+#, c-format
+msgid " Offset into .debug_info: %lx\n"
+msgstr ""
+
+#: readelf.c:8063
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr ""
+
+#: readelf.c:8064
+#, c-format
+msgid " Segment Size: %d\n"
+msgstr ""
+
+#: readelf.c:8066
+msgid ""
+"\n"
+" Address Length\n"
+msgstr ""
+
+#: readelf.c:8248
+#, c-format
+msgid "The section %s contains:\n"
+msgstr "%s ½Úº¬ÓУº\n"
+
+#: readelf.c:8271
+msgid "64-bit DWARF format frames are not supported yet.\n"
+msgstr ""
+
+#: readelf.c:8820
+#, c-format
+msgid "Displaying the debug contents of section %s is not yet supported.\n"
+msgstr "Éв»Ö§³ÖÏÔʾ %s ½ÚµÄµ÷ÊÔÄÚÈÝ¡£\n"
+
+#: readelf.c:8886
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no debugging data.\n"
+msgstr ""
+
+#: readelf.c:8891 readelf.c:8953
+msgid "debug section data"
+msgstr "µ÷ÊÔ½ÚÊý¾Ý"
+
+#: readelf.c:8907
+#, c-format
+msgid "Unrecognized debug section: %s\n"
+msgstr "ÎÞ·¨Ê¶±ðµÄµ÷ÊÔ½Ú£º%s\n"
+
+#: readelf.c:8981
+msgid "Some sections were not dumped because they do not exist!\n"
+msgstr "ûÓÐÊä³öijЩ½ÚÊÇÒòΪËüÃDz¢²»´æÔÚ£¡\n"
+
+#: readelf.c:9054 readelf.c:9418
+msgid "liblist"
+msgstr ""
+
+#: readelf.c:9139
+msgid "options"
+msgstr "Ñ¡Ïî"
+
+#: readelf.c:9170
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"¡°%s¡±½Úº¬ÓÐ %d ¸öÌõÄ¿£º\n"
+
+#: readelf.c:9331
+msgid "conflict list found without a dynamic symbol table"
+msgstr ""
+
+#: readelf.c:9349 readelf.c:9365
+msgid "conflict"
+msgstr "³åÍ»"
+
+#: readelf.c:9375
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %ld entries:\n"
+msgstr ""
+
+#: readelf.c:9377
+msgid " Num: Index Value Name"
+msgstr ""
+
+#: readelf.c:9426
+msgid "liblist string table"
+msgstr ""
+
+#: readelf.c:9435
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+
+#: readelf.c:9484
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (prstatus ½á¹¹)"
+
+#: readelf.c:9485
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (¸¡µã¼Ä´æÆ÷)"
+
+#: readelf.c:9486
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (prpsinfo ½á¹¹)"
+
+#: readelf.c:9487
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (ÈÎÎñ½á¹¹)"
+
+#: readelf.c:9488
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (user_xfpregs ½á¹¹)"
+
+#: readelf.c:9489
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (pstatus ½á¹¹)"
+
+#: readelf.c:9490
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (¸¡µãÊý¼Ä´æÆ÷)"
+
+#: readelf.c:9491
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (psinfo ½á¹¹)"
+
+#: readelf.c:9492
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (lwpstatus_t ½á¹¹)"
+
+#: readelf.c:9493
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (lwpsinfo_t ½á¹¹)"
+
+#: readelf.c:9494
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (win32_pstatus ½á¹¹)"
+
+#: readelf.c:9496 readelf.c:9520
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "δ֪µÄ×¢ÊÍÀàÐÍ£º(0x%08x)"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:9510
+msgid "NetBSD procinfo structure"
+msgstr "NetBSD procinfo ½á¹¹"
+
+#: readelf.c:9537 readelf.c:9551
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (reg ½á¹¹)"
+
+#: readelf.c:9539 readelf.c:9553
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (fpreg ½á¹¹)"
+
+#: readelf.c:9559
+#, c-format
+msgid "PT_FIRSTMACH+%d"
+msgstr ""
+
+#: readelf.c:9613
+msgid "notes"
+msgstr "×¢ÊÍ"
+
+#: readelf.c:9619
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"×¢ÊÍλÓÚÆ«ÒÆÁ¿ 0x%08lx ³¤¶ÈΪ 0x%08lx£º\n"
+
+#: readelf.c:9621
+msgid " Owner\t\tData size\tDescription\n"
+msgstr " ËùÓÐÕß\t\tÊý¾Ý´óС\tÃèÊö\n"
+
+#: readelf.c:9640
+#, c-format
+msgid "corrupt note found at offset %x into core notes\n"
+msgstr ""
+
+#: readelf.c:9642
+#, c-format
+msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
+msgstr " ÀàÐÍ£º%x£¬Ãû³Æ´óС£º%08lx£¬ÃèÊö´óС£º%08lx\n"
+
+#: readelf.c:9744
+msgid "No note segments present in the core file.\n"
+msgstr "core ÎļþÖÐûÓÐ×¢ÊͶΡ£\n"
+
+#: readelf.c:9822
+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"
+msgstr ""
+"±¾ readelf ʵÀý±àÒëʱδ¼ÓÈë 64 λÊý¾ÝÀàÐÍÖ§³Ö£¬\n"
+"Òò¶øÎÞ·¨¶ÁÈë 64 λ ELF Îļþ¡£\n"
+
+#: readelf.c:9868
+#, c-format
+msgid "Cannot stat input file %s.\n"
+msgstr "ÎÞ·¨¶ÔÊäÈëÎļþ %s Ö´ÐÐ stat ²Ù×÷¡£\n"
+
+#: readelf.c:9875
+#, c-format
+msgid "Input file %s not found.\n"
+msgstr "ÕÒ²»µ½ÊäÈëÎļþ %s¡£\n"
+
+#: readelf.c:9881
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s£º¶ÁÈëÎļþͷʧ°Ü\n"
+
+#: readelf.c:9895
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"Îļþ£º%s\n"
+
+#: rename.c:131
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s£ºÎÞ·¨ÉèÖÃʱ¼ä£º%s"
+
+#. We have to clean up here.
+#: rename.c:170 rename.c:203
+#, c-format
+msgid "%s: rename: %s"
+msgstr "%s£ºÖØÃüÃû£º%s"
+
+#: rename.c:211
+#, c-format
+msgid "%s: simple_copy: %s"
+msgstr ""
+
+#: resbin.c:134
+#, c-format
+msgid "%s: not enough binary data"
+msgstr ""
+
+#: resbin.c:153
+msgid "null terminated unicode string"
+msgstr "ÒÔ null ÖÕÖ¹µÄ unicode ×Ö·û´®"
+
+#: resbin.c:183 resbin.c:189
+msgid "resource ID"
+msgstr "×ÊÔ´ ID"
+
+#: resbin.c:233
+msgid "cursor"
+msgstr "¹â±ê"
+
+#: resbin.c:267 resbin.c:274
+msgid "menu header"
+msgstr "²Ëµ¥Í·"
+
+#: resbin.c:284
+msgid "menuex header"
+msgstr "À©Õ¹²Ëµ¥Í·"
+
+#: resbin.c:288
+msgid "menuex offset"
+msgstr "À©Õ¹²Ëµ¥Æ«ÒÆÁ¿"
+
+#: resbin.c:295
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "²»Ö§³ÖµÄ²Ëµ¥°æ±¾ %d"
+
+#: resbin.c:323 resbin.c:338 resbin.c:404
+msgid "menuitem header"
+msgstr "²Ëµ¥ÏîÍ·"
+
+#: resbin.c:434
+msgid "menuitem"
+msgstr "²Ëµ¥Ïî"
+
+#: resbin.c:475 resbin.c:503
+msgid "dialog header"
+msgstr "¶Ô»°¿òÍ·"
+
+#: resbin.c:493
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "ÒâÍâµÄÀ©Õ¹¶Ô»°¿ò°æ±¾ %d"
+
+#: resbin.c:538
+msgid "dialog font point size"
+msgstr ""
+
+#: resbin.c:546
+msgid "dialogex font information"
+msgstr ""
+
+#: resbin.c:572 resbin.c:590
+msgid "dialog control"
+msgstr "¶Ô»°¿ò¿ØÖÆ"
+
+#: resbin.c:582
+msgid "dialogex control"
+msgstr "¶Ô»°¿òÀ©Õ¹¿ØÖÆ"
+
+#: resbin.c:611
+msgid "dialog control end"
+msgstr "¶Ô»°¿ò¿ØÖƽáÊø"
+
+#: resbin.c:623
+msgid "dialog control data"
+msgstr "¶Ô»°¿ò¿ØÖÆÊý¾Ý"
+
+#: resbin.c:666
+msgid "stringtable string length"
+msgstr "×Ö·û´®±í×Ö·û´®³¤¶È"
+
+#: resbin.c:676
+msgid "stringtable string"
+msgstr "×Ö·û´®±í×Ö·û´®"
+
+#: resbin.c:709
+msgid "fontdir header"
+msgstr "×ÖÌåĿ¼ͷ"
+
+#: resbin.c:722
+msgid "fontdir"
+msgstr "×ÖÌåĿ¼"
+
+#: resbin.c:738
+msgid "fontdir device name"
+msgstr "×ÖÌåĿ¼É豸Ãû"
+
+#: resbin.c:744
+msgid "fontdir face name"
+msgstr ""
+
+#: resbin.c:787
+msgid "accelerator"
+msgstr "¼ÓËÙ¼ü"
+
+#: resbin.c:851
+msgid "group cursor header"
+msgstr "×é¹â±êÍ·"
+
+#: resbin.c:855
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "ÒâÍâµÄ×é¹â±êÀàÐÍ %d"
+
+#: resbin.c:870
+msgid "group cursor"
+msgstr "×é¹â±ê"
+
+#: resbin.c:909
+msgid "group icon header"
+msgstr "×éͼ±êÍ·"
+
+#: resbin.c:913
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "ÒâÍâµÄ×éͼ±êÀàÐÍ %d"
+
+#: resbin.c:928
+msgid "group icon"
+msgstr "×éͼ±ê"
+
+#: resbin.c:999 resbin.c:1218
+msgid "unexpected version string"
+msgstr "ÒâÍâµÄ°æ±¾×Ö·û´®"
+
+#: resbin.c:1033
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "°æ±¾³¤¶È %d ²»Æ¥Åä×ÊÔ´³¤¶È %lu"
+
+#: resbin.c:1037
+#, c-format
+msgid "unexpected version type %d"
+msgstr "ÒâÍâµÄ°æ±¾ÀàÐÍ %d"
+
+#: resbin.c:1049
+#, c-format
+msgid "unexpected fixed version information length %d"
+msgstr ""
+
+#: resbin.c:1052
+msgid "fixed version info"
+msgstr ""
+
+#: resbin.c:1056
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "ÒâÍâµÄ¹Ì¶¨°æ±¾Ç©Ãû %lu"
+
+#: resbin.c:1060
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "ÒâÍâµÄ¹Ì¶¨°æ±¾ÐÅÏ¢°æ±¾ %lu"
+
+#: resbin.c:1089
+msgid "version var info"
+msgstr ""
+
+#: resbin.c:1106
+#, c-format
+msgid "unexpected stringfileinfo value length %d"
+msgstr ""
+
+#: resbin.c:1116
+#, c-format
+msgid "unexpected version stringtable value length %d"
+msgstr ""
+
+#: resbin.c:1150
+#, c-format
+msgid "unexpected version string length %d != %d + %d"
+msgstr "ÒâÍâµÄ°æ±¾×Ö·û´®³¤¶È %d != %d + %d"
+
+#: resbin.c:1161
+#, c-format
+msgid "unexpected version string length %d < %d"
+msgstr "ÒâÍâµÄ°æ±¾×Ö·û´®³¤¶È %d < %d"
+
+#: resbin.c:1178
+#, c-format
+msgid "unexpected varfileinfo value length %d"
+msgstr ""
+
+#: resbin.c:1197
+msgid "version varfileinfo"
+msgstr ""
+
+#: resbin.c:1212
+#, c-format
+msgid "unexpected version value length %d"
+msgstr "ÒâÍâµÄ°æ±¾Öµ³¤¶È %d"
+
+#: rescoff.c:128
+msgid "filename required for COFF input"
+msgstr "COFF ÊäÈëÐèÒªÎļþÃû"
+
+#: rescoff.c:145
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s£ºÃ»ÓÐ×ÊÔ´½Ú"
+
+#: rescoff.c:152
+msgid "can't read resource section"
+msgstr "ÎÞ·¨¶ÁÈë×ÊÔ´½Ú"
+
+#: rescoff.c:178
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s£º%s£ºµØÖ·³¬³ö½çÏÞ"
+
+#: rescoff.c:197
+msgid "directory"
+msgstr "Ŀ¼"
+
+#: rescoff.c:225
+msgid "named directory entry"
+msgstr "ÒÑÃüÃûµÄĿ¼ÌõÄ¿"
+
+#: rescoff.c:234
+msgid "directory entry name"
+msgstr "Ŀ¼ÌõÄ¿Ãû"
+
+#: rescoff.c:254
+msgid "named subdirectory"
+msgstr "ÒÑÃüÃûµÄ×ÓĿ¼"
+
+#: rescoff.c:262
+msgid "named resource"
+msgstr "ÒÑÃüÃûµÄ×ÊÔ´"
+
+#: rescoff.c:277
+msgid "ID directory entry"
+msgstr ""
+
+#: rescoff.c:294
+msgid "ID subdirectory"
+msgstr ""
+
+#: rescoff.c:302
+msgid "ID resource"
+msgstr ""
+
+#: rescoff.c:328
+msgid "resource type unknown"
+msgstr "×ÊÔ´ÀàÐÍδ֪"
+
+#: rescoff.c:331
+msgid "data entry"
+msgstr "Êý¾ÝÌõÄ¿"
+
+#: rescoff.c:339
+msgid "resource data"
+msgstr "×ÊÔ´Êý¾Ý"
+
+#: rescoff.c:344
+msgid "resource data size"
+msgstr "×ÊÔ´Êý¾Ý´óС"
+
+#: rescoff.c:439
+msgid "filename required for COFF output"
+msgstr "COFF Êä³öÐèÒªÎļþÃû"
+
+#: rescoff.c:738
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "ÎÞ·¨µÃµ½ BFD_RELOC_RVA Öض¨ÏòÀàÐÍ"
+
+#: resrc.c:240 resrc.c:312
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "ÎÞ·¨´ò¿ªÁÙʱÎļþ¡°%s¡±£º%s"
+
+#: resrc.c:246
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "ÎÞ·¨Öض¨Ïò±ê×¼Êä³ö£º¡°%s¡±£º%s"
+
+#: resrc.c:262
+#, c-format
+msgid "%s %s: %s"
+msgstr "%s %s£º%s"
+
+#: resrc.c:308
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "ÎÞ·¨Ö´ÐС°%s¡±£º%s"
+
+#: resrc.c:317
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "ʹÓÃÁÙʱÎļþ¡°%s¡±ÒÔ¶ÁÈëÔ¤´¦ÀíÆ÷Êä³ö\n"
+
+#: resrc.c:324
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "ÎÞ·¨ popen ¡°%s¡±£º%s"
+
+#: resrc.c:326
+msgid "Using popen to read preprocessor output\n"
+msgstr "ʹÓà popen ¶ÁÈëÔ¤´¦ÀíÆ÷Êä³ö\n"
+
+#: resrc.c:369
+#, c-format
+msgid "Tried `%s'\n"
+msgstr ""
+
+#: resrc.c:380
+#, c-format
+msgid "Using `%s'\n"
+msgstr "ʹÓá°%s¡±\n"
+
+#: resrc.c:542
+#, c-format
+msgid "%s:%d: %s\n"
+msgstr "%s£º%d£º%s\n"
+
+#: resrc.c:551
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s£ºÎļþÒâÍâ½áÊø"
+
+#: resrc.c:608
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%s£º¶ÁÈ¡ %lu ·µ»Ø %lu"
+
+#: resrc.c:650 resrc.c:904 resrc.c:1177 resrc.c:1331
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "¶ÔλͼÎļþ¡°%s¡±½øÐÐ stat ²Ù×÷ʧ°Ü£º%s"
+
+#: resrc.c:703
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "¹â±êÎļþ¡°%s¡±²»º¬Óйâ±êÊý¾Ý"
+
+#: resrc.c:735 resrc.c:1048
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr ""
+
+#: resrc.c:872
+msgid "help ID requires DIALOGEX"
+msgstr ""
+
+#: resrc.c:874
+msgid "control data requires DIALOGEX"
+msgstr ""
+
+#: resrc.c:1017
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "ͼ±êÎļþ¡°%s¡±²»º¬ÓÐͼ±êÊý¾Ý"
+
+#: resrc.c:1536
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "ÎÞ·¨ÎªÊä³ö´ò¿ª¡°%s¡±£º%s"
+
+#: size.c:86
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr " ÏÔʾ¶þ½øÖÆÎļþÖнڵĴóС\n"
+
+#: size.c:87
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr " ûÓиø³öÊäÈëÎļþ£¬Ä¬ÈÏΪ a.out\n"
+
+#: size.c:88
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -o|-d|-h --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"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" Ñ¡ÏîΪ£º\n"
+" -A|-B --format={sysv|berkeley} Ñ¡ÔñÊä³ö·ç¸ñ (ĬÈÏΪ %s)\n"
+" -o|-d|-h --radix={8|10|16} Ò԰˽øÖÆ¡¢Ê®½øÖÆ»òÊ®Áù½øÖÆÏÔʾÊýÖµ\n"
+" -t --totals ÏÔʾ×Ü´óС (Ö»ÓÃÓÚ Berkeley ·ç¸ñ)\n"
+" --target=<bfdname> É趨¶þ½øÖÆÎļþ¸ñʽ\n"
+" -h --help ÏÔʾ±¾ÐÅÏ¢\n"
+" -v --version ÏÔʾ³ÌÐòµÄ°æ±¾ºÅ\n"
+"\n"
+
+#: size.c:160
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "--format µÄÎÞЧ²ÎÊý£º%s"
+
+#: size.c:187
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr ""
+
+#: srconv.c:1953
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "½« COFF Ä¿±êÎļþת»»Îª SYSROFF Ä¿±êÎļþ\n"
+
+#: srconv.c:1954
+msgid ""
+" The options are:\n"
+" -q --quick (Obsolete - ignoerd)\n"
+" -n --noprescan Do not perform a scan to convert commons into defs\n"
+" -d --debug Display information about what is being done\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Ñ¡ÏîΪ£º\n"
+" -q --quick (¹ýÆÚ - ºöÂÔ)\n"
+" -n --noprescan ²»Ö´ÐÐɨÃèÒÔ½« commons ת»»Îª defs\n"
+" -d --debug ÏÔʾ¹ØÓÚÒÑÍê³ÉÊÂÎñµÄÐÅÏ¢\n"
+" -h --help ÏÔʾ±¾ÐÅÏ¢\n"
+" -v --version ´òÓ¡³ÌÐòµÄ°æ±¾ºÅ\n"
+
+#: srconv.c:2099
+#, c-format
+msgid "unable to open output file %s"
+msgstr "ÎÞ·¨´ò¿ªÊä³öÎļþ %s"
+
+#: stabs.c:343 stabs.c:1759
+msgid "numeric overflow"
+msgstr "ÊýÖµÒç³ö"
+
+#: stabs.c:354
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr ""
+
+#: stabs.c:364
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "¾¯¸æ£º%s£º%s\n"
+
+#: stabs.c:485
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC ²»ÔÚº¯ÊýÖÐ\n"
+
+#: stabs.c:524
+msgid "Too many N_RBRACs\n"
+msgstr "¹ý¶àµÄ N_RBRAC\n"
+
+#: stabs.c:769
+msgid "unknown C++ encoded name"
+msgstr "δ֪µÄ C++ ±àÂëÃû³Æ"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1296
+msgid "unrecognized cross reference type"
+msgstr "ÎÞ·¨Ê¶±ðµÄ½»²æÒýÓÃÀàÐÍ"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1851
+msgid "missing index type"
+msgstr "ÒÅ©µÄË÷ÒýÀàÐÍ"
+
+#: stabs.c:2178
+msgid "unknown virtual character for baseclass"
+msgstr ""
+
+#: stabs.c:2196
+msgid "unknown visibility character for baseclass"
+msgstr ""
+
+#: stabs.c:2388
+msgid "unnamed $vb type"
+msgstr ""
+
+#: stabs.c:2394
+msgid "unrecognized C++ abbreviation"
+msgstr "ÎÞ·¨Ê¶±ðµÄ C++ Ëõд"
+
+#: stabs.c:2474
+msgid "unknown visibility character for field"
+msgstr ""
+
+#: stabs.c:2730
+msgid "const/volatile indicator missing"
+msgstr "ÒÅ© const/volatile ָʾ·û"
+
+#: stabs.c:2970
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr ""
+
+#: stabs.c:3283
+msgid "Undefined N_EXCL"
+msgstr "䶨Òå N_EXCL"
+
+#: stabs.c:3371
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "ÀàÐÍÎļþ±àºÅ %d ³¬³ö·¶Î§\n"
+
+#: stabs.c:3376
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "ÀàÐÍË÷Òý±àºÅ %d ³¬³ö·¶Î§\n"
+
+#: stabs.c:3463
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "ÎÞ·¨Ê¶±ðµÄ XCOFF ÀàÐÍ %d\n"
+
+#: stabs.c:3762
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr ""
+
+#: stabs.c:3858
+msgid "no argument types in mangled string\n"
+msgstr ""
+
+#: strings.c:200
+#, c-format
+msgid "invalid number %s"
+msgstr "ÎÞЧµÄ±àºÅ %s"
+
+#: strings.c:640
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "ÎÞЧµÄÕûÊý²ÎÊý %s"
+
+#: strings.c:651
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr " ´òÓ¡ [Îļþ] (ĬÈÏΪ±ê×¼ÊäÈë) ÖпɴòÓ¡µÄ×Ö·û´®\n"
+
+#: strings.c:652
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,x,d} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -T --target=<BFDNAME> Specify the binary file format\n"
+" -e --encoding={s,b,l,B,L} Select character size and endianness:\n"
+" s = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+
+#: sysdump.c:768
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "´òÓ¡ÊÊÓÚÔĶÁµÄ SYSROFF Ä¿±êÎļþµÄ½âÊÍ\n"
+
+#: sysdump.c:769
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" Ñ¡ÏîΪ£º\n"
+" -h --help ÏÔʾ±¾ÐÅÏ¢\n"
+" -v --version ´òÓ¡³ÌÐòµÄ°æ±¾ºÅ\n"
+
+#: sysdump.c:836
+#, c-format
+msgid "cannot open input file %s"
+msgstr "ÎÞ·¨´ò¿ªÊäÈëÎļþ %s"
+
+#: version.c:35
+msgid "Copyright 2002 Free Software Foundation, Inc.\n"
+msgstr "°æȨËùÓÐ 2002 ×ÔÓÉÈí¼þ»ù½ð»á¡£\n"
+
+#: version.c:36
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License. This program has absolutely no warranty.\n"
+msgstr ""
+"±¾³ÌÐòÊÇ×ÔÓÉÈí¼þ£»Äú¿ÉÒÔ°´ÕÕ GNU ͨÓù«¹²Ðí¿ÉÖ¤\n"
+"µÄÌõ¿î¶ÔÆä½øÐÐÔÙ·¢ÐС£±¾³ÌÐòûÓÐÈκε£±£¡£\n"
+
+#: windres.c:239
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "ÎÞ·¨´ò¿ª %s¡°%s¡±£º%s"
+
+#: windres.c:418
+msgid ": expected to be a directory\n"
+msgstr "£ºÓ¦ÎªÄ¿Â¼\n"
+
+#: windres.c:430
+msgid ": expected to be a leaf\n"
+msgstr ""
+
+#: windres.c:439
+#, c-format
+msgid "%s: warning: "
+msgstr "%s£º¾¯¸æ£º"
+
+#: windres.c:441
+msgid ": duplicate value\n"
+msgstr ""
+
+#: windres.c:602
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "δ֪µÄ¸ñʽÀàÐÍ¡°%s¡±"
+
+#: windres.c:603
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s£ºÖ§³ÖµÄ¸ñʽ£º"
+
+#. Otherwise, we give up.
+#: windres.c:688
+#, c-format
+msgid "can not determine type of file `%s'; use the -I option"
+msgstr "ÎÞ·¨È·¶¨Îļþ¡°%s¡±µÄÀàÐÍ£»ÇëʹÓà -I Ñ¡Ïî"
+
+#: windres.c:702
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "Ó÷¨£º%s [Ñ¡Ïî] [ÊäÈëÎļþ] [Êä³öÎļþ]\n"
+
+#: windres.c:704
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -I --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+
+#: windres.c:719
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug ´ò¿ª½âÎöÆ÷µ÷ÊÔ\n"
+
+#: windres.c:722
+msgid ""
+" -h --help Print this help message\n"
+" -V --version Print version information\n"
+msgstr ""
+" -h --help ´òÓ¡±¾ÇóÖúÐÅÏ¢\n"
+" -V --version ´òÓ¡°æ±¾ÐÅÏ¢\n"
+
+#: windres.c:725
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"FORMAT ÊÇ rc¡¢res »ò coff Ö®Ò»£¬ÔÚδָ¶¨Ê±¸ù¾ÝÎļþµÄÀ©Õ¹Ãû½øÐÐÅжϡ£\n"
+"µ¥¸öÎļþÃû±»ÈÏΪÊÇÊäÈëÎļþ¡£Ã»ÓÐÊäÈëÎļþʱ¾ÍʹÓñê×¼ÊäÈ룬ĬÈϸñʽ\n"
+"Ϊ rc¡£Ã»ÓÐÊä³öÎļþʱ¾ÍʹÓñê×¼Êä³ö£¬Ä¬ÈϸñʽΪ rc¡£\n"
+
+#: windres.c:988
+msgid "no resources"
+msgstr "ûÓÐ×ÊÔ´"
+
+#: wrstabs.c:366 wrstabs.c:2026
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup ʧ°Ü£º%s"
+
+#: wrstabs.c:666
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_type£º´íÎó´óС %u"
+
+#: wrstabs.c:1466
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s£º¾¯¸æ£º½á¹¹µÄ¡°%s¡±ÓòµÄ´óСδ֪"
diff --git a/binutils-2.24/binutils/po/zh_TW.gmo b/binutils-2.24/binutils/po/zh_TW.gmo
new file mode 100644
index 00000000..b02a71ee
--- /dev/null
+++ b/binutils-2.24/binutils/po/zh_TW.gmo
Binary files differ
diff --git a/binutils-2.24/binutils/po/zh_TW.po b/binutils-2.24/binutils/po/zh_TW.po
new file mode 100644
index 00000000..0e02eed1
--- /dev/null
+++ b/binutils-2.24/binutils/po/zh_TW.po
@@ -0,0 +1,5497 @@
+# Traditional Chinese Messages for binutils
+# Copyright (C) 2003, 05 Free Software Foundation, Inc.
+# Wang Li <charles@linux.net.cn>, 2003
+# Wei-Lun Chao <chaoweilun@pcmail.com.tw>, 2005
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: binutils 2.15.96\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-03-03 21:03+1030\n"
+"PO-Revision-Date: 2005-06-02 09:05+0800\n"
+"Last-Translator: Wei-Lun Chao <chaoweilun@pcmail.com.tw>\n"
+"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\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"
+
+#: addr2line.c:73
+#, c-format
+msgid "Usage: %s [option(s)] [addr(s)]\n"
+msgstr "用法:%s [é¸é …] [ä½å€]\n"
+
+#: addr2line.c:74
+#, c-format
+msgid " Convert addresses into line number/file name pairs.\n"
+msgstr " å°‡ä½å€è½‰æ›æˆæª”案å/列號å°ã€‚\n"
+
+#: addr2line.c:75
+#, c-format
+msgid " If no addresses are specified on the command line, they will be read from stdin\n"
+msgstr " 如果沒有在命令列中指定ä½å€ï¼Œå°±å¾žæ¨™æº–輸入中讀å–它們\n"
+
+#: addr2line.c:76
+#, c-format
+msgid ""
+" The options are:\n"
+" -b --target=<bfdname> Set the binary file format\n"
+" -e --exe=<executable> Set the input file name (default is a.out)\n"
+" -s --basenames Strip directory names\n"
+" -f --functions Show function names\n"
+" -C --demangle[=style] Demangle function names\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" é¸é …為:\n"
+" -b --target=<bfdname> 設定二進制檔案格å¼\n"
+" -e --exe=<executable> 設定輸入檔案å (é è¨­ç‚º a.out)\n"
+" -s --basenames 去除目錄å\n"
+" -f --functions 顯示函數å\n"
+" -C --demangle[=style] 解碼函數å\n"
+" -h --help 顯示本資訊\n"
+" -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
+#, c-format
+msgid "Report bugs to %s\n"
+msgstr "將 bug 報告到 %s\n"
+
+#: addr2line.c:241
+#, c-format
+msgid "%s: can not get addresses from archive"
+msgstr "%s:無法從ä¿å­˜æª”中得到ä½å€"
+
+#: addr2line.c:311 nm.c:1519 objdump.c:2848
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr "未知的解碼(demangle)風格「%sã€"
+
+#: ar.c:205
+#, c-format
+msgid "no entry %s in archive\n"
+msgstr "ä¿å­˜æª”中沒有æ¢ç›® %s\n"
+
+#: ar.c:221
+#, c-format
+msgid "Usage: %s [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"
+msgstr "用法:%s [模擬é¸é …] [-]{dmpqrstx}[abcfilNoPsSuvV] [æˆå“¡å] [計數] ä¿å­˜æª” 文件...\n"
+
+#: ar.c:224
+#, c-format
+msgid " %s -M [<mri-script]\n"
+msgstr " %s -M [<mri-命令稿]\n"
+
+#: ar.c:225
+#, c-format
+msgid " commands:\n"
+msgstr " 命令:\n"
+
+#: ar.c:226
+#, c-format
+msgid " d - delete file(s) from the archive\n"
+msgstr " d - 從ä¿å­˜æª”中刪除檔案\n"
+
+#: ar.c:227
+#, c-format
+msgid " m[ab] - move file(s) in the archive\n"
+msgstr " m[ab] - 在ä¿å­˜æª”中移動檔案\n"
+
+#: ar.c:228
+#, c-format
+msgid " p - print file(s) found in the archive\n"
+msgstr " p - 列å°åœ¨ä¿å­˜æª”中找到的檔案\n"
+
+#: ar.c:229
+#, c-format
+msgid " q[f] - quick append file(s) to the archive\n"
+msgstr " q[f] - 將檔案快速追加到ä¿å­˜æª”中\n"
+
+#: ar.c:230
+#, 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
+#, c-format
+msgid " t - display contents of archive\n"
+msgstr " t - 顯示ä¿å­˜æª”的內容\n"
+
+#: ar.c:232
+#, c-format
+msgid " x[o] - extract file(s) from the archive\n"
+msgstr " x[o] - 從ä¿å­˜æª”中分解檔案\n"
+
+#: ar.c:233
+#, c-format
+msgid " command specific modifiers:\n"
+msgstr " 特定命令修飾符:\n"
+
+#: ar.c:234
+#, c-format
+msgid " [a] - put file(s) after [member-name]\n"
+msgstr " [a] - 將檔案置於 [æˆå“¡å] 之後\n"
+
+#: ar.c:235
+#, c-format
+msgid " [b] - put file(s) before [member-name] (same as [i])\n"
+msgstr " [b] - 將檔案置於 [æˆå“¡å] ä¹‹å‰ (æ–¼ [i] 相åŒ)\n"
+
+#: ar.c:236
+#, c-format
+msgid " [N] - use instance [count] of name\n"
+msgstr " [N] - 使用å稱的實例 [數é‡]\n"
+
+#: ar.c:237
+#, c-format
+msgid " [f] - truncate inserted file names\n"
+msgstr " [f] - 截去æ’入的檔案å稱\n"
+
+#: ar.c:238
+#, c-format
+msgid " [P] - use full path names when matching\n"
+msgstr " [P] - 在匹é…時使用完整的路徑å\n"
+
+#: ar.c:239
+#, c-format
+msgid " [o] - preserve original dates\n"
+msgstr " [o] - ä¿ç•™åŽŸä¾†çš„日期\n"
+
+#: ar.c:240
+#, c-format
+msgid " [u] - only replace files that are newer than current archive contents\n"
+msgstr " [u] - åªæ›¿æ›æ¯”ç›®å‰ä¿å­˜æª”內容更新的檔案\n"
+
+#: ar.c:241
+#, c-format
+msgid " generic modifiers:\n"
+msgstr " 通用修飾符:\n"
+
+#: ar.c:242
+#, c-format
+msgid " [c] - do not warn if the library had to be created\n"
+msgstr " [c] - ä¸åœ¨å¿…須建立函å¼åº«çš„時候æ出警告\n"
+
+#: ar.c:243
+#, c-format
+msgid " [s] - create an archive index (cf. ranlib)\n"
+msgstr " [s] - 建立ä¿å­˜æª”索引 (cf. ranlib)\n"
+
+#: ar.c:244
+#, c-format
+msgid " [S] - do not build a symbol table\n"
+msgstr " [S] - ä¸è¦å»ºç«‹ç¬¦è™Ÿè¡¨\n"
+
+#: ar.c:245
+#, c-format
+msgid " [v] - be verbose\n"
+msgstr " [v] - 輸出較多資訊\n"
+
+#: ar.c:246
+#, c-format
+msgid " [V] - display the version number\n"
+msgstr " [V] - 顯示版本號\n"
+
+#: ar.c:253
+#, c-format
+msgid "Usage: %s [options] archive\n"
+msgstr "用法:%s [é¸é …] ä¿å­˜æª”\n"
+
+#: ar.c:254
+#, c-format
+msgid " Generate an index to speed access to archives\n"
+msgstr " 產生索引以加快å°ä¿å­˜æª”çš„å­˜å–\n"
+
+#: ar.c:255
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Print this help message\n"
+" -V --version Print version information\n"
+msgstr ""
+" é¸é …為:\n"
+" -h --help 列å°æœ¬æ±‚助資訊\n"
+" -V --version 列å°ç‰ˆæœ¬è³‡è¨Š\n"
+
+#: ar.c:483
+msgid "two different operation options specified"
+msgstr "指定了兩個ä¸åŒçš„æ“作é¸é …"
+
+#: ar.c:558
+#, c-format
+msgid "illegal option -- %c"
+msgstr "ä¸æ­£ç¢ºé¸é … -- %c"
+
+#: ar.c:604
+msgid "no operation specified"
+msgstr "沒有指定æ“作"
+
+#: ar.c:607
+msgid "`u' is only meaningful with the `r' option."
+msgstr "「uã€åªåœ¨ä½¿ç”¨ã€Œrã€é¸é …的時候æ‰æœ‰æ„義。"
+
+#: ar.c:615
+msgid "`N' is only meaningful with the `x' and `d' options."
+msgstr "「Nã€åªåœ¨ä½¿ç”¨ã€Œxã€å’Œã€Œdã€é¸é …的時候æ‰æœ‰æ„義。"
+
+#: ar.c:618
+msgid "Value for `N' must be positive."
+msgstr "「Nã€çš„值必須是正數。"
+
+#: ar.c:668
+#, c-format
+msgid "internal error -- this option not implemented"
+msgstr "內部錯誤 -- 該é¸é …尚未實ç¾"
+
+#: ar.c:737
+#, c-format
+msgid "creating %s"
+msgstr "正在建立 %s"
+
+#: ar.c:786 ar.c:836 ar.c:1154 objcopy.c:1603
+#, c-format
+msgid "internal stat error on %s"
+msgstr "在 %s 內部狀態錯誤"
+
+#: ar.c:790
+#, c-format
+msgid ""
+"\n"
+"<%s>\n"
+"\n"
+msgstr ""
+"\n"
+"<%s>\n"
+"\n"
+
+#: ar.c:806 ar.c:873
+#, c-format
+msgid "%s is not a valid archive"
+msgstr "%s ä¸æ˜¯æœ‰æ•ˆçš„ä¿å­˜æª”"
+
+#: ar.c:841
+#, c-format
+msgid "stat returns negative size for %s"
+msgstr "stat 回傳 %s 的大å°ç‚ºè² æ•¸"
+
+#: ar.c:1059
+#, c-format
+msgid "No member named `%s'\n"
+msgstr "沒有å為「%sã€çš„æˆå“¡\n"
+
+#: ar.c:1109
+#, c-format
+msgid "no entry %s in archive %s!"
+msgstr "ä¿å­˜æª” %2$s 中沒有æ¢ç›® %1$sï¼"
+
+#: ar.c:1246
+#, c-format
+msgid "%s: no archive map to update"
+msgstr "%s:沒有è¦æ›´æ–°çš„ä¿å­˜æª”映射"
+
+#: arsup.c:83
+#, c-format
+msgid "No entry %s in archive.\n"
+msgstr "ä¿å­˜æª”中沒有æ¢ç›® %s。\n"
+
+#: arsup.c:109
+#, c-format
+msgid "Can't open file %s\n"
+msgstr "無法打開檔案 %s\n"
+
+#: arsup.c:162
+#, c-format
+msgid "%s: Can't open output archive %s\n"
+msgstr "%s:無法打開輸出ä¿å­˜æª” %s\n"
+
+#: arsup.c:179
+#, c-format
+msgid "%s: Can't open input archive %s\n"
+msgstr "%s:無法打開輸入ä¿å­˜æª” %s\n"
+
+#: arsup.c:188
+#, c-format
+msgid "%s: file %s is not an archive\n"
+msgstr "%s:檔案 %s ä¸æ˜¯ä¿å­˜æª”\n"
+
+#: arsup.c:227
+#, c-format
+msgid "%s: no output archive specified yet\n"
+msgstr "%s:尚未指定輸出ä¿å­˜æª”\n"
+
+#: arsup.c:247 arsup.c:285 arsup.c:327 arsup.c:347 arsup.c:413
+#, c-format
+msgid "%s: no open output archive\n"
+msgstr "%s:未打開輸出ä¿å­˜æª”\n"
+
+#: arsup.c:258 arsup.c:368 arsup.c:394
+#, c-format
+msgid "%s: can't open file %s\n"
+msgstr "%s:無法打開檔案 %s\n"
+
+#: arsup.c:312 arsup.c:390 arsup.c:471
+#, c-format
+msgid "%s: can't find module file %s\n"
+msgstr "%s:無法找到模組檔案 %s\n"
+
+#: arsup.c:422
+#, c-format
+msgid "Current open archive is %s\n"
+msgstr "ç›®å‰æ‰“é–‹çš„ä¿å­˜æª”是 %s\n"
+
+#: arsup.c:446
+#, c-format
+msgid "%s: no open archive\n"
+msgstr "%s:未打開ä¿å­˜æª”\n"
+
+#: binemul.c:37
+#, c-format
+msgid " No emulation specific options\n"
+msgstr " 沒有模擬特有的é¸é …\n"
+
+#. Macros for common output.
+#: binemul.h:42
+#, c-format
+msgid " emulation options: \n"
+msgstr " 模擬é¸é …:\n"
+
+#: bucomm.c:109
+#, c-format
+msgid "can't set BFD default target to `%s': %s"
+msgstr "無法將 BFD é è¨­æ¨™çš„設置為「%sã€ï¼š%s"
+
+#: bucomm.c:120
+#, c-format
+msgid "%s: Matching formats:"
+msgstr "%s:匹é…æ ¼å¼ï¼š"
+
+#: bucomm.c:135
+#, c-format
+msgid "Supported targets:"
+msgstr "支æ´çš„目標:"
+
+#: bucomm.c:137
+#, c-format
+msgid "%s: supported targets:"
+msgstr "%s:支æ´çš„目標:"
+
+#: bucomm.c:153
+#, c-format
+msgid "Supported architectures:"
+msgstr "支æ´çš„系統架構:"
+
+#: bucomm.c:155
+#, c-format
+msgid "%s: supported architectures:"
+msgstr "%s:支æ´çš„系統架構:"
+
+#: bucomm.c:348
+#, c-format
+msgid "BFD header file version %s\n"
+msgstr "BFD 標頭檔案版本 %s\n"
+
+#: bucomm.c:449
+#, c-format
+msgid "%s: bad number: %s"
+msgstr "%s:錯誤的編號:%s"
+
+#: bucomm.c:466 strings.c:386
+#, c-format
+msgid "'%s': No such file"
+msgstr "%s:無此檔案"
+
+#: bucomm.c:468 strings.c:388
+#, c-format
+msgid "Warning: could not locate '%s'. reason: %s"
+msgstr "警告:無法找到 %s çš„ä½ç½®ã€‚原因:%s"
+
+#: bucomm.c:472
+#, c-format
+msgid "Warning: '%s' is not an ordinary file"
+msgstr "警告:'%s' ä¸æ˜¯ä¸€èˆ¬æª”案"
+
+#: coffdump.c:105
+#, c-format
+msgid "#lines %d "
+msgstr "#列號 %d "
+
+#: coffdump.c:459 sysdump.c:648
+#, c-format
+msgid "Usage: %s [option(s)] in-file\n"
+msgstr "用法:%s [é¸é …] 輸入檔案\n"
+
+#: coffdump.c:460
+#, c-format
+msgid " Print a human readable interpretation of a SYSROFF object file\n"
+msgstr " 列å°é©æ–¼é–±è®€çš„å° SYSROFF 目標檔案的解釋\n"
+
+#: coffdump.c:461
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" é¸é …為:\n"
+" -h --help 顯示本求助資訊\n"
+" -v --version 顯示程åºçš„版本號\n"
+"\n"
+
+#: coffdump.c:527 srconv.c:1819 sysdump.c:710
+msgid "no input file specified"
+msgstr "未指定輸入檔案"
+
+#: debug.c:648
+msgid "debug_add_to_current_namespace: no current file"
+msgstr "debug_add_to_current_namespace:沒有目å‰æª”案"
+
+#: debug.c:727
+msgid "debug_start_source: no debug_set_filename call"
+msgstr "debug_start_source:沒有 debug_set_filename 呼å«"
+
+#: debug.c:783
+msgid "debug_record_function: no debug_set_filename call"
+msgstr "debug_record_function:沒有 debug_set_filename 呼å«"
+
+#: debug.c:835
+msgid "debug_record_parameter: no current function"
+msgstr "debug_record_parameter:沒有目å‰å‡½æ•¸"
+
+#: debug.c:867
+msgid "debug_end_function: no current function"
+msgstr "debug_end_function:沒有目å‰å‡½æ•¸"
+
+#: debug.c:873
+msgid "debug_end_function: some blocks were not closed"
+msgstr "debug_end_function:æŸäº›å€å¡Šæ²’有關閉"
+
+#: debug.c:901
+msgid "debug_start_block: no current block"
+msgstr "debug_start_block:沒有目å‰å€å¡Š"
+
+#: debug.c:937
+msgid "debug_end_block: no current block"
+msgstr "debug_end_block:沒有目å‰å€å¡Š"
+
+#: debug.c:944
+msgid "debug_end_block: attempt to close top level block"
+msgstr "debug_end_block:試圖關閉頂層å€å¡Š"
+
+#: debug.c:967
+msgid "debug_record_line: no current unit"
+msgstr "debug_record_line:沒有目å‰å–®å…ƒ"
+
+#. FIXME
+#: debug.c:1020
+msgid "debug_start_common_block: not implemented"
+msgstr "debug_start_common_block:未實作"
+
+#. FIXME
+#: debug.c:1031
+msgid "debug_end_common_block: not implemented"
+msgstr "debug_end_common_block:未實作"
+
+#. FIXME.
+#: debug.c:1115
+msgid "debug_record_label: not implemented"
+msgstr "debug_record_label:未實作"
+
+#: debug.c:1137
+msgid "debug_record_variable: no current file"
+msgstr "debug_record_variable:沒有目å‰æª”案"
+
+#: debug.c:1665
+msgid "debug_make_undefined_type: unsupported kind"
+msgstr "debug_make_undefined_type:ä¸æ”¯æ´çš„種類"
+
+#: debug.c:1842
+msgid "debug_name_type: no current file"
+msgstr "debug_name_type:沒有目å‰æª”案"
+
+#: debug.c:1887
+msgid "debug_tag_type: no current file"
+msgstr "debug_tag_type:沒有目å‰æª”案"
+
+#: debug.c:1895
+msgid "debug_tag_type: extra tag attempted"
+msgstr "debug_tag_type:已嘗試更多的標記"
+
+#: debug.c:1932
+#, c-format
+msgid "Warning: changing type size from %d to %d\n"
+msgstr "警告:類型大å°ç”± %d 改為 %d\n"
+
+#: debug.c:1954
+msgid "debug_find_named_type: no current compilation unit"
+msgstr "debug_find_named_type:沒有目å‰ç·¨è­¯å–®å…ƒ"
+
+#: debug.c:2057
+#, c-format
+msgid "debug_get_real_type: circular debug information for %s\n"
+msgstr "debug_get_real_type:關於 %s 的循環除錯資訊\n"
+
+#: debug.c:2484
+msgid "debug_write_type: illegal type encountered"
+msgstr "debug_write_type:é‡åˆ°ä¸æ­£ç¢ºé¡žåž‹"
+
+#: dlltool.c:773 dlltool.c:797 dlltool.c:826
+#, c-format
+msgid "Internal error: Unknown machine type: %d"
+msgstr "內部錯誤:未知的機器類型:%d"
+
+#: dlltool.c:862
+#, c-format
+msgid "Can't open def file: %s"
+msgstr "無法打開 def 檔案:%s"
+
+#: dlltool.c:867
+#, c-format
+msgid "Processing def file: %s"
+msgstr "è™•ç† def 檔案:%s"
+
+#: dlltool.c:871
+msgid "Processed def file"
+msgstr "已處ç†çš„ def 檔案"
+
+#: dlltool.c:895
+#, c-format
+msgid "Syntax error in def file %s:%d"
+msgstr "def 檔案中語法錯誤 %s:%d"
+
+#: dlltool.c:930
+#, c-format
+msgid "%s: Path components stripped from image name, '%s'."
+msgstr "%s:從映åƒæª” '%s' 中截去路徑æˆåˆ†ã€‚"
+
+#: dlltool.c:939
+#, c-format
+msgid "NAME: %s base: %x"
+msgstr "å稱:%s 基於:%x"
+
+#: dlltool.c:942 dlltool.c:958
+msgid "Can't have LIBRARY and NAME"
+msgstr "ä¸å…·æœ‰ LIBRARY 與 NAME"
+
+#: dlltool.c:955
+#, c-format
+msgid "LIBRARY: %s base: %x"
+msgstr "LIBRARY:%s 基於:%x"
+
+#: dlltool.c:1191 resrc.c:269
+#, c-format
+msgid "wait: %s"
+msgstr "等待:%s"
+
+#: dlltool.c:1196 dllwrap.c:418 resrc.c:274
+#, c-format
+msgid "subprocess got fatal signal %d"
+msgstr "å­è¡Œç¨‹æ”¶åˆ°è‡´å‘½ä¿¡è™Ÿ %d"
+
+#: dlltool.c:1202 dllwrap.c:425 resrc.c:281
+#, c-format
+msgid "%s exited with status %d"
+msgstr "%s 以狀態 %d 離開"
+
+#: dlltool.c:1233
+#, c-format
+msgid "Sucking in info from %s section in %s"
+msgstr "從 %2$s 中的 %1$s å€æ®µç²å–資訊"
+
+#: dlltool.c:1358
+#, c-format
+msgid "Excluding symbol: %s"
+msgstr "排除符號:%s"
+
+#: dlltool.c:1447 dlltool.c:1458 nm.c:998 nm.c:1009
+#, c-format
+msgid "%s: no symbols"
+msgstr "%s:沒有符號"
+
+#. FIXME: we ought to read in and block out the base relocations.
+#: dlltool.c:1484
+#, c-format
+msgid "Done reading %s"
+msgstr "讀入 %s 完æˆ"
+
+#: dlltool.c:1494
+#, c-format
+msgid "Unable to open object file: %s"
+msgstr "無法打開目標檔案:%s"
+
+#: dlltool.c:1497
+#, c-format
+msgid "Scanning object file %s"
+msgstr "正在掃瞄目標檔案 %s"
+
+#: dlltool.c:1512
+#, c-format
+msgid "Cannot produce mcore-elf dll from archive file: %s"
+msgstr "無法從ä¿å­˜æª”中產生 mcore-elf 動態連接庫:%s"
+
+#: dlltool.c:1598
+msgid "Adding exports to output file"
+msgstr "正在加入導出至輸出檔案"
+
+#: dlltool.c:1646
+msgid "Added exports to output file"
+msgstr "已加入導出至輸出檔案"
+
+#: dlltool.c:1767
+#, c-format
+msgid "Generating export file: %s"
+msgstr "正在產生導出檔案:%s"
+
+#: dlltool.c:1772
+#, c-format
+msgid "Unable to open temporary assembler file: %s"
+msgstr "無法打開臨時組譯檔案:%s"
+
+#: dlltool.c:1775
+#, c-format
+msgid "Opened temporary file: %s"
+msgstr "已打開的臨時檔案:%s"
+
+#: dlltool.c:1997
+msgid "Generated exports file"
+msgstr "已產生的導出檔案"
+
+#: dlltool.c:2203
+#, c-format
+msgid "bfd_open failed open stub file: %s"
+msgstr "無法打開輸出檔案 %s"
+
+#: dlltool.c:2206
+#, c-format
+msgid "Creating stub file: %s"
+msgstr "正在建立佔ä½æª”案:%s"
+
+#: dlltool.c:2588
+#, c-format
+msgid "failed to open temporary head file: %s"
+msgstr "打開臨時標頭檔案失敗:%s"
+
+#: dlltool.c:2647
+#, c-format
+msgid "failed to open temporary tail file: %s"
+msgstr "打開臨時標尾檔案失敗:%s"
+
+#: dlltool.c:2714
+#, c-format
+msgid "Can't open .lib file: %s"
+msgstr "無法打開 .lib 檔案:%s"
+
+#: dlltool.c:2717
+#, c-format
+msgid "Creating library file: %s"
+msgstr "正在建立函å¼åº«æª”案:%s"
+
+#: dlltool.c:2800 dlltool.c:2806
+#, c-format
+msgid "cannot delete %s: %s"
+msgstr "無法刪除 %s:%s"
+
+#: dlltool.c:2811
+msgid "Created lib file"
+msgstr "已建立的 lib 檔案"
+
+#: dlltool.c:2904
+#, c-format
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
+msgstr "警告,正在忽略é‡è¦†çš„ EXPORT %s %d,%d"
+
+#: dlltool.c:2910
+#, c-format
+msgid "Error, duplicate EXPORT with oridinals: %s"
+msgstr "錯誤,é‡è¦†çš„ EXPORT 以åŠåŽŸå§‹å‡ºè™•: %s"
+
+#: dlltool.c:3026
+msgid "Processing definitions"
+msgstr "正在處ç†å®šç¾©"
+
+#: dlltool.c:3058
+msgid "Processed definitions"
+msgstr "已處ç†å®šç¾©"
+
+#. xgetext:c-format
+#: dlltool.c:3065 dllwrap.c:479
+#, c-format
+msgid "Usage %s <option(s)> <object-file(s)>\n"
+msgstr "用法: %s <é¸é …> <目標檔案>\n"
+
+#. xgetext:c-format
+#: dlltool.c:3067
+#, c-format
+msgid " -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
+msgstr " -m --machine <架構> 為 <架構> 建立 DLL。[é è¨­ï¼š%s]\n"
+
+#: dlltool.c:3068
+#, 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
+#, c-format
+msgid " -e --output-exp <outname> Generate an export file.\n"
+msgstr " -e --output-exp <導出檔> 產生導出檔案。\n"
+
+#: dlltool.c:3070
+#, c-format
+msgid " -l --output-lib <outname> Generate an interface library.\n"
+msgstr " -l --output-lib <導出檔> 產生介é¢å‡½å¼åº«ã€‚\n"
+
+#: dlltool.c:3071
+#, c-format
+msgid " -a --add-indirect Add dll indirects to export file.\n"
+msgstr " -a --add-indirect 間接添加 dll 至導出檔案。\n"
+
+#: dlltool.c:3072
+#, c-format
+msgid " -D --dllname <name> Name of input dll to put into interface lib.\n"
+msgstr " -D --dllname <å稱> è¦ç½®å…¥ä»‹é¢å‡½å¼åº«çš„輸入 dll å稱。\n"
+
+#: dlltool.c:3073
+#, c-format
+msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
+msgstr " -d --input-def <定義檔> å°‡è¦è®€å…¥çš„ .def 檔案å。\n"
+
+#: dlltool.c:3074
+#, c-format
+msgid " -z --output-def <deffile> Name of .def file to be created.\n"
+msgstr " -z --output-def <定義檔> å°‡è¦å»ºç«‹çš„ .def 檔案å。\n"
+
+#: dlltool.c:3075
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols 將所有符號導出到 .def\n"
+
+#: dlltool.c:3076
+#, c-format
+msgid " --no-export-all-symbols Only export listed symbols\n"
+msgstr " --no-export-all-symbols åªå°Žå‡ºåˆ—舉的符號\n"
+
+#: dlltool.c:3077
+#, c-format
+msgid " --exclude-symbols <list> Don't export <list>\n"
+msgstr " --exclude-symbols <列表> ä¸è¦å°Žå‡º <列表>\n"
+
+#: dlltool.c:3078
+#, c-format
+msgid " --no-default-excludes Clear default exclude symbols\n"
+msgstr " --no-default-excludes 清空é è¨­æŽ’除的符號\n"
+
+#: dlltool.c:3079
+#, c-format
+msgid " -b --base-file <basefile> Read linker generated base file.\n"
+msgstr " -b --base-file <基本檔> 讀å–連接程å¼æ‰€ç”¢ç”Ÿçš„ base 檔案。\n"
+
+#: dlltool.c:3080
+#, c-format
+msgid " -x --no-idata4 Don't generate idata$4 section.\n"
+msgstr " -x --no-idata4 ä¸ç”¢ç”Ÿ idata$4 å€æ®µã€‚\n"
+
+#: dlltool.c:3081
+#, c-format
+msgid " -c --no-idata5 Don't generate idata$5 section.\n"
+msgstr " -c --no-idata5 ä¸ç”¢ç”Ÿ idata$5 å€æ®µã€‚\n"
+
+#: dlltool.c:3082
+#, c-format
+msgid " -U --add-underscore Add underscores to symbols in interface library.\n"
+msgstr " -U --add-underscore 於介é¢ä¸­çš„符號添加底線。\n"
+
+#: dlltool.c:3083
+#, c-format
+msgid " -k --kill-at Kill @<n> from exported names.\n"
+msgstr " -k --kill-at 刪去導出å稱中的 @<n>。\n"
+
+#: dlltool.c:3084
+#, c-format
+msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
+msgstr " -A --add-stdcall-alias 添加ä¸å¸¶ @<n> 的別å。\n"
+
+#: dlltool.c:3085
+#, c-format
+msgid " -p --ext-prefix-alias <prefix> Add aliases with <prefix>.\n"
+msgstr " -p --ext-prefix-alias <å‰ç½®> 添加附帶 <å‰ç½®> 的別å。\n"
+
+#: dlltool.c:3086
+#, c-format
+msgid " -S --as <name> Use <name> for assembler.\n"
+msgstr " -S --as <å稱> 用 <å稱> åšç‚ºçµ„譯程å¼ã€‚\n"
+
+#: dlltool.c:3087
+#, c-format
+msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
+msgstr " -f --as-flags <旗標> 把 <旗標> 傳éžçµ¦çµ„譯程å¼ã€‚\n"
+
+#: dlltool.c:3088
+#, c-format
+msgid " -C --compat-implib Create backward compatible import library.\n"
+msgstr " -C --compat-implib 建立å‘後相容的導入函å¼åº«ã€‚\n"
+
+#: dlltool.c:3089
+#, c-format
+msgid " -n --no-delete Keep temp files (repeat for extra preservation).\n"
+msgstr " -n --no-delete ä¿ç•™è‡¨æ™‚檔案 (é‡è¦†ä»¥é”到é¡å¤–çš„ä¿ç•™)。\n"
+
+#: dlltool.c:3090
+#, c-format
+msgid " -t --temp-prefix <prefix> Use <prefix> to construct temp file names.\n"
+msgstr " -t --temp-prefix <å‰ç½®> 使用 <å‰ç½®> 來建構臨時檔案å稱。\n"
+
+#: dlltool.c:3091
+#, c-format
+msgid " -v --verbose Be verbose.\n"
+msgstr " -v --verbose 輸出更多資訊。\n"
+
+#: dlltool.c:3092
+#, c-format
+msgid " -V --version Display the program version.\n"
+msgstr " -V --version 顯示程å¼ç‰ˆæœ¬è™Ÿç¢¼ã€‚\n"
+
+#: dlltool.c:3093
+#, c-format
+msgid " -h --help Display this information.\n"
+msgstr " -h --help 顯示本資訊。\n"
+
+#: dlltool.c:3095
+#, 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
+#, c-format
+msgid " -L --linker <name> Use <name> as the linker.\n"
+msgstr " -L --linker <å稱> 以 <å稱> åšç‚ºé€£æŽ¥ç¨‹å¼ã€‚\n"
+
+#: dlltool.c:3097
+#, c-format
+msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
+msgstr " -F --linker-flags <旗標> 把 <旗標> 傳éžçµ¦é€£æŽ¥ç¨‹å¼ã€‚\n"
+
+#: dlltool.c:3211
+#, c-format
+msgid "Path components stripped from dllname, '%s'."
+msgstr "已從 dll å稱 '%s' 中截去路徑部分。"
+
+#: dlltool.c:3256
+#, c-format
+msgid "Unable to open base-file: %s"
+msgstr "無法開啟基本檔案:%s"
+
+#: dlltool.c:3288
+#, c-format
+msgid "Machine '%s' not supported"
+msgstr "ä¸æ”¯æ´æž¶æ§‹ã€Œ%sã€"
+
+#: dlltool.c:3392 dllwrap.c:209
+#, c-format
+msgid "Tried file: %s"
+msgstr "已試檔案:%s"
+
+#: dlltool.c:3399 dllwrap.c:216
+#, c-format
+msgid "Using file: %s"
+msgstr "正在處ç†æª”案:%s"
+
+#: dllwrap.c:299
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr "ä¿ç•™è‡¨æ™‚ base 檔案 %s"
+
+#: dllwrap.c:301
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr "刪除臨時 base 檔案 %s"
+
+#: dllwrap.c:315
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr "ä¿ç•™è‡¨æ™‚ exp 檔案 %s"
+
+#: dllwrap.c:317
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr "刪除臨時 exp 檔案 %s"
+
+#: dllwrap.c:330
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr "ä¿ç•™è‡¨æ™‚ def 檔案 %s"
+
+#: dllwrap.c:332
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr "刪除臨時 def 檔案 %s"
+
+#: dllwrap.c:480
+#, c-format
+msgid " Generic options:\n"
+msgstr " 通用é¸é …:\n"
+
+#: dllwrap.c:481
+#, c-format
+msgid " --quiet, -q Work quietly\n"
+msgstr " --quiet, -q 安éœåœ°å·¥ä½œ\n"
+
+#: dllwrap.c:482
+#, c-format
+msgid " --verbose, -v Verbose\n"
+msgstr " --verbose, -v 輸出較多資訊\n"
+
+#: dllwrap.c:483
+#, c-format
+msgid " --version Print dllwrap version\n"
+msgstr " --version åˆ—å° dllwrap 的版本號\n"
+
+#: dllwrap.c:484
+#, c-format
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr " --implib <outname> --output-lib çš„åŒç¾©èªž\n"
+
+#: dllwrap.c:485
+#, c-format
+msgid " Options for %s:\n"
+msgstr " %s çš„é¸é …:\n"
+
+#: dllwrap.c:486
+#, c-format
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr " --driver-name <驅動器> é è¨­ç‚ºã€Œgccã€\n"
+
+#: dllwrap.c:487
+#, c-format
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr " --driver-flags <旗標> 覆蓋é è¨­çš„ ld 旗標\n"
+
+#: dllwrap.c:488
+#, c-format
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr " --dlltool-name <dlltool> é è¨­ç‚ºã€Œdlltoolã€\n"
+
+#: dllwrap.c:489
+#, c-format
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr " --entry <å…¥å£> 指定é¡å¤–çš„ DLL 進入點\n"
+
+#: dllwrap.c:490
+#, c-format
+msgid " --image-base <base> Specify image base address\n"
+msgstr " --image-base <基å€> 指定映åƒçš„基本ä½å€\n"
+
+#: dllwrap.c:491
+#, c-format
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr " --target <架構> i386-cygwin32 或 i386-mingw32\n"
+
+#: dllwrap.c:492
+#, c-format
+msgid " --dry-run Show what needs to be run\n"
+msgstr " --dry-run åªé¡¯ç¤ºéœ€è¦åŸ·è¡Œé‚£äº›å‹•ä½œ\n"
+
+#: dllwrap.c:493
+#, c-format
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr " --mno-cygwin 建立 Mingw DLL\n"
+
+#: dllwrap.c:494
+#, c-format
+msgid " Options passed to DLLTOOL:\n"
+msgstr " 傳éžçµ¦ DLLTOOL çš„é¸é …:\n"
+
+#: dllwrap.c:495
+#, c-format
+msgid " --machine <machine>\n"
+msgstr " --machine <架構>\n"
+
+#: dllwrap.c:496
+#, c-format
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr " --output-exp <導出å> 產生導出檔案。\n"
+
+#: dllwrap.c:497
+#, c-format
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr " --output-lib <導出å> 產生輸入函å¼åº«ã€‚\n"
+
+#: dllwrap.c:498
+#, c-format
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr " --add-indirect 間接添加 dll 至導出檔案。\n"
+
+#: dllwrap.c:499
+#, c-format
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr " --dllname <å稱> è¦ç½®å…¥è¼¸å‡ºå‡½å¼åº«çš„輸入 dll å稱。\n"
+
+#: dllwrap.c:500
+#, c-format
+msgid " --def <deffile> Name input .def file\n"
+msgstr " --def <deffile> 輸入 .def 檔案的å稱\n"
+
+#: dllwrap.c:501
+#, c-format
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr " --output-def <deffile> 輸出 .def 檔案的å稱\n"
+
+#: dllwrap.c:502
+#, c-format
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr " --export-all-symbols 將所有符號導出到 .def 中\n"
+
+#: dllwrap.c:503
+#, c-format
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr " --no-export-all-symbols åªå°Žå‡ºç¬¦è™Ÿ .drectve\n"
+
+#: dllwrap.c:504
+#, c-format
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr " --exclude-symbols <列表> 從 .def 中排除 <列表>\n"
+
+#: dllwrap.c:505
+#, c-format
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr " --no-default-excludes 清空é è¨­æŽ’除的符號\n"
+
+#: dllwrap.c:506
+#, c-format
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr " --base-file <basefile> Read linker generated base file\n"
+
+#: dllwrap.c:507
+#, c-format
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr " --no-idata4 ä¸ç”¢ç”Ÿ idata$4 å€æ®µ\n"
+
+#: dllwrap.c:508
+#, c-format
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr " --no-idata5 ä¸ç”¢ç”Ÿ idata$5 å€æ®µ\n"
+
+#: dllwrap.c:509
+#, c-format
+msgid " -U Add underscores to .lib\n"
+msgstr " -U 為 .lib 添加底線\n"
+
+#: dllwrap.c:510
+#, c-format
+msgid " -k Kill @<n> from exported names\n"
+msgstr " -k 刪去導出å字中的 @<n>\n"
+
+#: dllwrap.c:511
+#, c-format
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr " --add-stdcall-alias 添加ä¸å¸¶ @<n> 的別å\n"
+
+#: dllwrap.c:512
+#, c-format
+msgid " --as <name> Use <name> for assembler\n"
+msgstr " --as <å稱> 以 <å稱> åšç‚ºçµ„譯程å¼\n"
+
+#: dllwrap.c:513
+#, c-format
+msgid " --nodelete Keep temp files.\n"
+msgstr " --nodelete ä¿ç•™è‡¨æ™‚檔案。\n"
+
+#: dllwrap.c:514
+#, c-format
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr " 其餘的都ä¸åŠ ä»»ä½•ä¿®æ”¹åœ°å‚³éžçµ¦èªžè¨€é©…動器\n"
+
+#: dllwrap.c:784
+msgid "Must provide at least one of -o or --dllname options"
+msgstr "å¿…é ˆæ供至少一個 -o 或 --dllname é¸é …"
+
+#: dllwrap.c:813
+msgid ""
+"no export definition file provided.\n"
+"Creating one, but that may not be what you want"
+msgstr ""
+"未æ供導出定義檔案。\n"
+"ç¾åœ¨å»ºç«‹ä¸€å€‹ï¼Œä½†å¯èƒ½ä¸æ˜¯æ‚¨æ‰€è¦çš„"
+
+#: dllwrap.c:972
+#, c-format
+msgid "DLLTOOL name : %s\n"
+msgstr "DLLTOOL å稱 :%s\n"
+
+#: dllwrap.c:973
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr "DLLTOOL é¸é … :%s\n"
+
+#: dllwrap.c:974
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr "驅動器å稱 :%s\n"
+
+#: dllwrap.c:975
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr "驅動器é¸é … :%s\n"
+
+#: emul_aix.c:51
+#, c-format
+msgid " [-g] - 32 bit small archive\n"
+msgstr " [-g] - 32 ä½å…ƒå°åž‹ä¿å­˜æª”\n"
+
+#: emul_aix.c:52
+#, c-format
+msgid " [-X32] - ignores 64 bit objects\n"
+msgstr " [-X32] - 忽略 64 ä½å…ƒç‰©ä»¶\n"
+
+#: emul_aix.c:53
+#, c-format
+msgid " [-X64] - ignores 32 bit objects\n"
+msgstr " [-X64] - 忽略 32 ä½å…ƒç‰©ä»¶\n"
+
+#: emul_aix.c:54
+#, c-format
+msgid " [-X32_64] - accepts 32 and 64 bit objects\n"
+msgstr " [-X32_64] - æŽ¥å— 32 ä½å…ƒå’Œ 64 ä½å…ƒç‰©ä»¶\n"
+
+#: ieee.c:311
+msgid "unexpected end of debugging information"
+msgstr "除錯資訊æ„外çµæŸ"
+
+#: ieee.c:398
+msgid "invalid number"
+msgstr "無效的編號"
+
+#: ieee.c:451
+msgid "invalid string length"
+msgstr "無效的字串長度"
+
+#: ieee.c:506 ieee.c:547
+msgid "expression stack overflow"
+msgstr "表示å¼å †ç–Šå‘上溢出"
+
+#: ieee.c:526
+msgid "unsupported IEEE expression operator"
+msgstr "ä¸æ”¯æ´çš„ IEEE 表示å¼é‹ç®—å­"
+
+#: ieee.c:541
+msgid "unknown section"
+msgstr "未知的å€æ®µ"
+
+#: ieee.c:562
+msgid "expression stack underflow"
+msgstr "表示å¼å †ç–Šå‘下溢出"
+
+#: ieee.c:576
+msgid "expression stack mismatch"
+msgstr "表示å¼å †ç–Šä¸åŒ¹é…"
+
+#: ieee.c:613
+msgid "unknown builtin type"
+msgstr "未知的內建類型"
+
+#: ieee.c:758
+msgid "BCD float type not supported"
+msgstr "ä¸æ”¯æ´çš„ BCD 浮點類型"
+
+#: ieee.c:895
+msgid "unexpected number"
+msgstr "æ„外的編號"
+
+#: ieee.c:902
+msgid "unexpected record type"
+msgstr "æ„外的紀錄類型"
+
+#: ieee.c:935
+msgid "blocks left on stack at end"
+msgstr "çµæŸæ™‚ä»ç•™åœ¨å †ç–Šä¸­çš„å€å¡Š"
+
+#: ieee.c:1198
+msgid "unknown BB type"
+msgstr "未知的 BB 類型"
+
+#: ieee.c:1207
+msgid "stack overflow"
+msgstr "堆疊å‘上溢出"
+
+#: ieee.c:1230
+msgid "stack underflow"
+msgstr "堆疊å‘下溢出"
+
+#: ieee.c:1342 ieee.c:1412 ieee.c:2109
+msgid "illegal variable index"
+msgstr "ä¸æ­£ç¢ºçš„變數索引"
+
+#: ieee.c:1390
+msgid "illegal type index"
+msgstr "ä¸æ­£ç¢ºçš„類型索引"
+
+#: ieee.c:1400 ieee.c:1437
+msgid "unknown TY code"
+msgstr "未知的 TY 代碼"
+
+#: ieee.c:1419
+msgid "undefined variable in TY"
+msgstr "TY 中未定義的變é‡"
+
+#. Pascal file name. FIXME.
+#: ieee.c:1830
+msgid "Pascal file name not supported"
+msgstr "ä¸æ”¯æ´ Pascal 檔案å"
+
+#: ieee.c:1878
+msgid "unsupported qualifier"
+msgstr "ä¸æ”¯æ´çš„é™å®šç¬¦è™Ÿ"
+
+#: ieee.c:2147
+msgid "undefined variable in ATN"
+msgstr "ATN 中未定義的變數"
+
+#: ieee.c:2190
+msgid "unknown ATN type"
+msgstr "未知的 ATN 類型"
+
+#. Reserved for FORTRAN common.
+#: ieee.c:2312
+msgid "unsupported ATN11"
+msgstr "ä¸æ”¯æ´ ATN11"
+
+#. We have no way to record this information. FIXME.
+#: ieee.c:2339
+msgid "unsupported ATN12"
+msgstr "ä¸æ”¯æ´ ATN12"
+
+#: ieee.c:2399
+msgid "unexpected string in C++ misc"
+msgstr "æ„外的 C++ 雜項字串"
+
+#: ieee.c:2412
+msgid "bad misc record"
+msgstr "ä¸è‰¯çš„雜項記錄"
+
+#: ieee.c:2453
+msgid "unrecognized C++ misc record"
+msgstr "無法識別的 C++ 雜項紀錄"
+
+#: ieee.c:2568
+msgid "undefined C++ object"
+msgstr "未定義的 C++ 物件"
+
+#: ieee.c:2602
+msgid "unrecognized C++ object spec"
+msgstr "無法識別的 C++ 物件è¦æ ¼"
+
+#: ieee.c:2638
+msgid "unsupported C++ object type"
+msgstr "ä¸æ”¯æ´çš„ C++ 物件類型"
+
+#: ieee.c:2648
+msgid "C++ base class not defined"
+msgstr "未定義 C++ 基本類別"
+
+#: ieee.c:2660 ieee.c:2765
+msgid "C++ object has no fields"
+msgstr "C++ 物件沒有欄ä½"
+
+#: ieee.c:2679
+msgid "C++ base class not found in container"
+msgstr "容器中找ä¸åˆ° C++ 基本類別"
+
+#: ieee.c:2786
+msgid "C++ data member not found in container"
+msgstr "容器中找ä¸åˆ° C++ 資料æˆå“¡"
+
+#: ieee.c:2827 ieee.c:2977
+msgid "unknown C++ visibility"
+msgstr "未知的 C++ å¯è¦‹åº¦"
+
+#: ieee.c:2861
+msgid "bad C++ field bit pos or size"
+msgstr "ä¸è‰¯çš„ C++ 欄ä½ä½å…ƒä½ç½®æˆ–大å°"
+
+#: ieee.c:2953
+msgid "bad type for C++ method function"
+msgstr "ä¸è‰¯çš„ C++ 方法函å¼é¡žåž‹"
+
+#: ieee.c:2963
+msgid "no type information for C++ method function"
+msgstr "å°æ–¼ C++ 方法函å¼æ²’有類型資訊"
+
+#: ieee.c:3002
+msgid "C++ static virtual method"
+msgstr "C++ éœæ…‹è™›æ“¬æ–¹æ³•"
+
+#: ieee.c:3097
+msgid "unrecognized C++ object overhead spec"
+msgstr "無法識別的 C++ 物件頂層è¦æ ¼"
+
+#: ieee.c:3136
+msgid "undefined C++ vtable"
+msgstr "未定義的 C++ vtable"
+
+#: ieee.c:3205
+msgid "C++ default values not in a function"
+msgstr "C++ é è¨­å€¼ä¸åœ¨å‡½å¼ä¹‹ä¸­"
+
+#: ieee.c:3245
+msgid "unrecognized C++ default type"
+msgstr "無法識別的 C++ é è¨­é¡žåž‹"
+
+#: ieee.c:3276
+msgid "reference parameter is not a pointer"
+msgstr "åƒè€ƒåƒæ•¸ä¸æ˜¯æŒ‡æ¨™"
+
+#: ieee.c:3359
+msgid "unrecognized C++ reference type"
+msgstr "無法識別的 C++ åƒè€ƒé¡žåž‹"
+
+#: ieee.c:3441
+msgid "C++ reference not found"
+msgstr "找ä¸åˆ° C++ åƒè€ƒ"
+
+#: ieee.c:3449
+msgid "C++ reference is not pointer"
+msgstr "C++ åƒè€ƒä¸æ˜¯æŒ‡æ¨™"
+
+#: ieee.c:3475 ieee.c:3483
+msgid "missing required ASN"
+msgstr "éºå¤±å¿…須的 ASN"
+
+#: ieee.c:3510 ieee.c:3518
+msgid "missing required ATN65"
+msgstr "éºå¤±å¿…須的 ATN65"
+
+#: ieee.c:3532
+msgid "bad ATN65 record"
+msgstr "ä¸è‰¯çš„ ATN65 記錄"
+
+#: ieee.c:4160
+#, c-format
+msgid "IEEE numeric overflow: 0x"
+msgstr "IEEE 數值溢出:0x"
+
+#: ieee.c:4204
+#, c-format
+msgid "IEEE string length overflow: %u\n"
+msgstr "IEEE 字串長度溢出:%u\n"
+
+#: ieee.c:5203
+#, c-format
+msgid "IEEE unsupported integer type size %u\n"
+msgstr "IEEE ä¸æ”¯æ´çš„æ•´æ•¸é¡žåž‹å¤§å° %u\n"
+
+#: ieee.c:5237
+#, c-format
+msgid "IEEE unsupported float type size %u\n"
+msgstr "IEEE ä¸æ”¯æ´çš„æµ®é»žé¡žåž‹å¤§å° %u\n"
+
+#: ieee.c:5271
+#, c-format
+msgid "IEEE unsupported complex type size %u\n"
+msgstr "IEEE ä¸æ”¯æ´çš„è¤‡æ•¸é¡žåž‹å¤§å° %u\n"
+
+#: nlmconv.c:267 srconv.c:1810
+msgid "input and output files must be different"
+msgstr "輸入輸出檔案必須ä¸åŒ"
+
+#: nlmconv.c:314
+msgid "input file named both on command line and with INPUT"
+msgstr "åŒæ™‚在命令列和 INPUT 中輸入檔案å稱"
+
+#: nlmconv.c:323
+msgid "no input file"
+msgstr "沒有輸入檔案"
+
+#: nlmconv.c:353
+msgid "no name for output file"
+msgstr "輸出檔案沒有å稱"
+
+#: nlmconv.c:367
+msgid "warning: input and output formats are not compatible"
+msgstr "警告:輸入和輸出格å¼ä¸ç›¸å®¹"
+
+#: nlmconv.c:396
+msgid "make .bss section"
+msgstr "產生 .bss å€æ®µ"
+
+#: nlmconv.c:405
+msgid "make .nlmsections section"
+msgstr "產生 .nlmsections å€æ®µ"
+
+#: nlmconv.c:407
+msgid "set .nlmsections flags"
+msgstr "設定 .nlmsections 旗標"
+
+#: nlmconv.c:435
+msgid "set .bss vma"
+msgstr "設定 .bss vma"
+
+#: nlmconv.c:442
+msgid "set .data size"
+msgstr "設定 .data 的大å°"
+
+#: nlmconv.c:622
+#, c-format
+msgid "warning: symbol %s imported but not in import list"
+msgstr "警告:導入的符號 %s ä¸åœ¨å°Žå…¥åˆ—表中"
+
+#: nlmconv.c:642
+msgid "set start address"
+msgstr "設定起始ä½å€"
+
+#: nlmconv.c:691
+#, c-format
+msgid "warning: START procedure %s not defined"
+msgstr "警告:未定義 START å­ç¨‹åº %s"
+
+#: nlmconv.c:693
+#, c-format
+msgid "warning: EXIT procedure %s not defined"
+msgstr "警告:未定義 EXIT å­ç¨‹åº %s"
+
+#: nlmconv.c:695
+#, c-format
+msgid "warning: CHECK procedure %s not defined"
+msgstr "警告:未定義 CHECK å­ç¨‹åº %s"
+
+#: nlmconv.c:716 nlmconv.c:905
+msgid "custom section"
+msgstr "自訂å€æ®µ"
+
+#: nlmconv.c:737 nlmconv.c:934
+msgid "help section"
+msgstr "輔助å€æ®µ"
+
+#: nlmconv.c:759 nlmconv.c:952
+msgid "message section"
+msgstr "訊æ¯å€æ®µ"
+
+#: nlmconv.c:775 nlmconv.c:985
+msgid "module section"
+msgstr "模組å€æ®µ"
+
+#: nlmconv.c:795 nlmconv.c:1001
+msgid "rpc section"
+msgstr "rpc å€æ®µ"
+
+#. There is no place to record this information.
+#: nlmconv.c:831
+#, c-format
+msgid "%s: warning: shared libraries can not have uninitialized data"
+msgstr "%s:警告:共享函å¼åº«ä¸èƒ½å«æœ‰æœªåˆå§‹åŒ–的資料"
+
+#: nlmconv.c:852 nlmconv.c:1020
+msgid "shared section"
+msgstr "共享å€æ®µ"
+
+#: nlmconv.c:860
+msgid "warning: No version number given"
+msgstr "警告:未指定版本號"
+
+#: nlmconv.c:900 nlmconv.c:929 nlmconv.c:947 nlmconv.c:996 nlmconv.c:1015
+#, c-format
+msgid "%s: read: %s"
+msgstr "%s:讀å–:%s"
+
+#: nlmconv.c:922
+msgid "warning: FULLMAP is not supported; try ld -M"
+msgstr "警告:ä¸æ”¯æ´ FULLMAP;請試用 ld -M"
+
+#: nlmconv.c:1098
+#, c-format
+msgid "Usage: %s [option(s)] [in-file [out-file]]\n"
+msgstr "用法:%s [é¸é …] [輸入檔案 [輸出檔案]]\n"
+
+#: nlmconv.c:1099
+#, c-format
+msgid " Convert an object file into a NetWare Loadable Module\n"
+msgstr " 將物件檔案轉æ›ç‚º NetWare å¯è¼‰å…¥æ¨¡çµ„\n"
+
+#: nlmconv.c:1100
+#, c-format
+msgid ""
+" The options are:\n"
+" -I --input-target=<bfdname> Set the input binary file format\n"
+" -O --output-target=<bfdname> Set the output binary file format\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+msgstr ""
+" é¸é …為:\n"
+" -I --input-target=<bfdname> 設定輸入二進ä½æª”案格å¼\n"
+" -O --output-target=<bfdname> 設定輸出二進ä½æª”案格å¼\n"
+" -T --header-file=<file> 從 <file> 中讀入 NLM 頭資訊\n"
+" -l --linker=<linker> 在所有連接中使用 <linker>\n"
+" -d --debug 在標準錯誤輸出中顯示連接器命令列\n"
+" -h --help 顯示本資訊\n"
+" -v --version 顯示程å¼çš„版本號\n"
+
+#: nlmconv.c:1140
+#, c-format
+msgid "support not compiled in for %s"
+msgstr "未將å°æ–¼ %s 的支æ´ç·¨è­¯é€²åŽ»"
+
+#: nlmconv.c:1177
+msgid "make section"
+msgstr "製作å€æ®µ"
+
+#: nlmconv.c:1191
+msgid "set section size"
+msgstr "設定å€æ®µå¤§å°"
+
+#: nlmconv.c:1197
+msgid "set section alignment"
+msgstr "設定å€æ®µå°é½Š"
+
+#: nlmconv.c:1201
+msgid "set section flags"
+msgstr "設定å€æ®µæ——標"
+
+#: nlmconv.c:1212
+msgid "set .nlmsections size"
+msgstr "設定 .nlmsections 大å°"
+
+#: nlmconv.c:1293 nlmconv.c:1301 nlmconv.c:1310 nlmconv.c:1315
+msgid "set .nlmsection contents"
+msgstr "設定 .nlmsection 內容"
+
+#: nlmconv.c:1794
+msgid "stub section sizes"
+msgstr "ä½”ä½å€æ®µå¤§å°"
+
+#: nlmconv.c:1841
+msgid "writing stub"
+msgstr "正在寫入佔ä½å€æ®µ"
+
+#: nlmconv.c:1925
+#, c-format
+msgid "unresolved PC relative reloc against %s"
+msgstr "無法解æžçš„以 %s 為準之 PC 相å°é‡å®šä½"
+
+#: nlmconv.c:1989
+#, c-format
+msgid "overflow when adjusting relocation against %s"
+msgstr "以 %s 為準å°é½Šé‡å®šä½æ™‚發生溢出"
+
+#: nlmconv.c:2116
+#, c-format
+msgid "%s: execution of %s failed: "
+msgstr "%s:執行 %s 失敗:"
+
+#: nlmconv.c:2131
+#, c-format
+msgid "Execution of %s failed"
+msgstr "執行 %s 失敗"
+
+#: nm.c:224 size.c:80 strings.c:651
+#, c-format
+msgid "Usage: %s [option(s)] [file(s)]\n"
+msgstr "用法:%s [é¸é …] [檔案]\n"
+
+#: nm.c:225
+#, c-format
+msgid " List symbols in [file(s)] (a.out by default).\n"
+msgstr "列舉 [檔案] 中的符號 (é è¨­ç‚º a.out)。\n"
+
+#: nm.c:226
+#, c-format
+msgid ""
+" The options are:\n"
+" -a, --debug-syms Display debugger-only symbols\n"
+" -A, --print-file-name Print name of the input file before every symbol\n"
+" -B Same as --format=bsd\n"
+" -C, --demangle[=STYLE] Decode low-level symbol names into user-level names\n"
+" The STYLE, if specified, can be `auto' (the default),\n"
+" `gnu', `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" --no-demangle Do not demangle low-level symbol names\n"
+" -D, --dynamic Display dynamic symbols instead of normal symbols\n"
+" --defined-only Display only defined symbols\n"
+" -e (ignored)\n"
+" -f, --format=FORMAT Use the output format FORMAT. FORMAT can be `bsd',\n"
+" `sysv' or `posix'. The default is `bsd'\n"
+" -g, --extern-only Display only external symbols\n"
+" -l, --line-numbers Use debugging information to find a filename and\n"
+" line number for each symbol\n"
+" -n, --numeric-sort Sort symbols numerically by address\n"
+" -o Same as -A\n"
+" -p, --no-sort Do not sort the symbols\n"
+" -P, --portability Same as --format=posix\n"
+" -r, --reverse-sort Reverse the sense of the sort\n"
+" -S, --print-size Print size of defined symbols\n"
+" -s, --print-armap Include index for symbols from archive members\n"
+" --size-sort Sort symbols by size\n"
+" --special-syms Include special symbols in the output\n"
+" --synthetic Display synthetic symbols as well\n"
+" -t, --radix=RADIX Use RADIX for printing symbol values\n"
+" --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -u, --undefined-only Display only undefined symbols\n"
+" -X 32_64 (ignored)\n"
+" -h, --help Display this information\n"
+" -V, --version Display this program's version number\n"
+"\n"
+msgstr ""
+" é¸é …為:\n"
+" -a, --debug-syms 顯示åªç”¨æ–¼é™¤éŒ¯çš„符號\n"
+" -A, --print-file-name 在æ¯å€‹ç¬¦è™Ÿå‰å°å‡ºè¼¸å…¥æª”案å\n"
+" -B 與 --format=bsd 相åŒ\n"
+" -C, --demangle[=STYLE] 將低階符號å稱解碼為用戶階層å稱\n"
+" 如果指定 STYLE,STYLE å¯èƒ½ç‚ºã€Œautoã€(é è¨­)ã€\n"
+" 「gnuã€ã€ã€Œlucidã€ã€ã€Œarmã€ã€ã€Œhpã€ã€ã€Œedgã€ã€\n"
+" 「gnu-v3ã€ã€ã€Œjavaã€æˆ–「gnatã€\n"
+" --no-demangle ä¸è¦è§£ç¢¼ä½ŽéšŽç¬¦è™Ÿå稱\n"
+" -D, --dynamic 顯示動態符號而ä¸æ˜¯æ™®é€šç¬¦è™Ÿ\n"
+" --defined-only åªé¡¯ç¤ºå·²å®šç¾©çš„符號\n"
+" -e (忽略)\n"
+" -f, --format=FORMAT ä½¿ç”¨è¼¸å‡ºæ ¼å¼ FORMAT。FORMAT å¯èƒ½æ˜¯ã€Œbsdã€ã€\n"
+" 「sysvã€æˆ–「posixã€ã€‚é è¨­ç‚ºã€Œbsdã€\n"
+" -g, --extern-only åªé¡¯ç¤ºå¤–部符號\n"
+" -l, --line-numbers 使用除錯資訊以便為æ¯å€‹ç¬¦è™Ÿå°‹æ‰¾æª”案å和列號\n"
+" -n, --numeric-sort 按ä½å€æŽ’åºç¬¦è™Ÿ\n"
+" -o 與 -A 相åŒ\n"
+" -p, --no-sort ä¸è¦å°ç¬¦è™Ÿé€²è¡ŒæŽ’åº\n"
+" -P, --portability 與 --format=posix 相åŒ\n"
+" -r, --reverse-sort å轉排åºé †åº\n"
+" -S, --print-size 列å°å®šç¾©äº†çš„符號的大å°\n"
+" -s, --print-armap 列å°ä¿å­˜æª”æˆå“¡ä¸­ç¬¦è™Ÿçš„索引\n"
+" --size-sort 按大å°æŽ’åºç¬¦è™Ÿ\n"
+" --special-syms 在輸出中包å«ç‰¹æ®Šç¬¦è™Ÿ\n"
+" --synthetic åŒæ¨£ä¹Ÿé¡¯ç¤ºåˆæˆçš„符號\n"
+" -t, --radix=RADIX å°‡ RADIX 用於å°å‡ºç¬¦è™Ÿå€¼\n"
+" --target=BFDNAME 將標的目標物件格å¼æŒ‡å®šç‚º BFDNAME\n"
+" -u, --undefined-only åªé¡¯ç¤ºæœªå®šç¾©çš„符號\n"
+" -X 32_64 (忽略)\n"
+" -h, --help 顯示本資訊\n"
+" -V, --version 顯示本程å¼çš„版本號碼\n"
+"\n"
+
+#: nm.c:262 objdump.c:232
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr "將程å¼éŒ¯èª¤å ±å‘Šåˆ° %s。\n"
+
+#: nm.c:294
+#, c-format
+msgid "%s: invalid radix"
+msgstr "%s:無效的基數"
+
+#: nm.c:318
+#, c-format
+msgid "%s: invalid output format"
+msgstr "%s:無效的輸出格å¼"
+
+#: nm.c:339 readelf.c:6342 readelf.c:6378
+#, c-format
+msgid "<processor specific>: %d"
+msgstr "<特定處ç†å™¨>:%d"
+
+#: nm.c:341 readelf.c:6345 readelf.c:6390
+#, c-format
+msgid "<OS specific>: %d"
+msgstr "<特定作業系統>:%d"
+
+#: nm.c:343 readelf.c:6347 readelf.c:6393
+#, c-format
+msgid "<unknown>: %d"
+msgstr "<未知>:%d"
+
+#: nm.c:380
+#, c-format
+msgid ""
+"\n"
+"Archive index:\n"
+msgstr ""
+"\n"
+"ä¿å­˜æª”索引:\n"
+
+#: nm.c:1225
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"來自 %s 的未定義符號:\n"
+"\n"
+
+#: nm.c:1227
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"來自 %s 的符號:\n"
+"\n"
+
+#: nm.c:1229 nm.c:1280
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"å稱 值 類別 åž‹æ…‹ å¤§å° åˆ—è™Ÿ å€æ®µ\n"
+"\n"
+
+#: nm.c:1232 nm.c:1283
+#, c-format
+msgid ""
+"Name Value Class Type Size Line Section\n"
+"\n"
+msgstr ""
+"å稱 值 類別 åž‹æ…‹ å¤§å° åˆ—è™Ÿ å€æ®µ\n"
+"\n"
+
+#: nm.c:1276
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Undefined symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"來自 %s[%s] 的未定義的符號:\n"
+"\n"
+
+#: nm.c:1278
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Symbols from %s[%s]:\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"來自 %s[%s] 的符號:\n"
+"\n"
+
+#: nm.c:1580
+msgid "Only -X 32_64 is supported"
+msgstr "åªæ”¯æ´ -X 32_64"
+
+#: nm.c:1600
+msgid "Using the --size-sort and --undefined-only options together"
+msgstr "åŒæ™‚使用 --size-sort 與 --undefined-only é¸é …"
+
+#: nm.c:1601
+msgid "will produce no output, since undefined symbols have no size."
+msgstr "由於未定義的符號ä¸å…·å¤§å°ï¼Œå°‡ä¸æœƒç”¢ç”Ÿè¼¸å‡º"
+
+#: nm.c:1629
+#, c-format
+msgid "data size %ld"
+msgstr "è³‡æ–™å¤§å° %ld"
+
+#: objcopy.c:396 srconv.c:1721
+#, c-format
+msgid "Usage: %s [option(s)] in-file [out-file]\n"
+msgstr "用法:%s [é¸é …] 輸入檔案 [輸出檔案]\n"
+
+#: objcopy.c:397
+#, c-format
+msgid " Copies a binary file, possibly transforming it in the process\n"
+msgstr " 複製二進ä½æª”案,它å¯èƒ½åœ¨æ­¤éŽç¨‹ä¸­é€²è¡Œè®Šæ›\n"
+
+#: objcopy.c:398 objcopy.c:487
+#, c-format
+msgid " The options are:\n"
+msgstr " é¸é …為:\n"
+
+#: objcopy.c:399
+#, c-format
+msgid ""
+" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target <bfdname> Create an output file in format <bfdname>\n"
+" -B --binary-architecture <arch> Set arch of output file, when input is binary\n"
+" -F --target <bfdname> Set both input and output format to <bfdname>\n"
+" --debugging Convert debugging information, if possible\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -j --only-section <name> Only copy section <name> into the output\n"
+" --add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n"
+" -R --remove-section <name> Remove section <name> from the output\n"
+" -S --strip-all Remove all symbol and relocation information\n"
+" -g --strip-debug Remove all debugging symbols & sections\n"
+" --strip-unneeded Remove all symbols not needed by relocations\n"
+" -N --strip-symbol <name> Do not copy symbol <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" 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"
+" -L --localize-symbol <name> Force symbol <name> to be marked as a local\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"
+" -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"
+" -i --interleave <number> Only copy one out of every <number> bytes\n"
+" -b --byte <num> Select byte <num> in every interleaved block\n"
+" --gap-fill <val> Fill gaps between sections with <val>\n"
+" --pad-to <addr> Pad the last section up to address <addr>\n"
+" --set-start <addr> Set the start address to <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" Add <incr> to the start address\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" Add <incr> to LMA, VMA and start addresses\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" Change LMA and VMA of section <name> by <val>\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" Change the LMA of section <name> by <val>\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" Change the VMA of section <name> by <val>\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" Warn if a named section does not exist\n"
+" --set-section-flags <name>=<flags>\n"
+" Set section <name>'s properties to <flags>\n"
+" --add-section <name>=<file> Add section <name> found in <file> to output\n"
+" --rename-section <old>=<new>[,<flags>] Rename section <old> to <new>\n"
+" --change-leading-char Force output format's leading character style\n"
+" --remove-leading-char Remove leading character from global symbols\n"
+" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --redefine-syms <file> --redefine-sym for all symbol pairs \n"
+" listed in <file>\n"
+" --srec-len <number> Restrict the length of generated Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords to S3\n"
+" --strip-symbols <file> -N for all symbols listed in <file>\n"
+" --strip-unneeded-symbols <file>\n"
+" --strip-unneeded-symbol for all symbols listed\n"
+" 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"
+" --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"
+" --writable-text Mark the output text as writable\n"
+" --readonly-text Make the output text write protected\n"
+" --pure Mark the output file as demand paged\n"
+" --impure Mark the output file as impure\n"
+" --prefix-symbols <prefix> Add <prefix> to start of every symbol name\n"
+" --prefix-sections <prefix> Add <prefix> to start of every section name\n"
+" --prefix-alloc-sections <prefix>\n"
+" Add <prefix> to start of every allocatable\n"
+" section name\n"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+msgstr ""
+" -I --input-target <bfdname> å‡å®šè¼¸å…¥æª”案的格å¼ç‚º <bfdname>\n"
+" -O --output-target <bfdname> 建立格å¼ç‚º <bfdname> 的輸出檔案\n"
+" -B --binary-architecture <arch> 當輸入檔案為二進ä½æª”案時,設定輸出檔案的系統架構\n"
+" -F --target <bfdname> 將輸入輸出格å¼è¨­å®šç‚º <bfdname>\n"
+" --debugging 如果å¯èƒ½ï¼Œè½‰æ›é™¤éŒ¯è³‡è¨Š\n"
+" -p --preserve-dates 將修改/å­˜å–時間戳記複製到輸出檔案\n"
+" -j --only-section <name> åªå°‡ <name> å€æ®µè¤‡è£½åˆ°è¼¸å‡ºæª”案中\n"
+" --add-gnu-debuglink=<file> 添加å€æ®µ .gnu_debuglink 的連çµåˆ° <file>\n"
+" -R --remove-section <name> 從輸出中刪除 <name> å€æ®µ\n"
+" -S --strip-all 除去所有符號和é‡å®šä½è³‡è¨Š\n"
+" -g --strip-debug 除去所有除錯符號\n"
+" --strip-unneeded 除去所有é‡å®šä½ä¸éœ€è¦çš„符號\n"
+" -N --strip-symbol <name> ä¸è¦è¤‡è£½ç¬¦è™Ÿ <name>\n"
+" --strip-unneeded-symbol <name>\n"
+" ä¸è¦è¤‡è£½ç¬¦è™Ÿ <name> 除éžé‡å®šä½æ™‚需è¦\n"
+" --only-keep-debug 除去除錯相關以外的所有資訊\n"
+" -K --keep-symbol <name> åªè¤‡è£½ç¬¦è™Ÿ <name>\n"
+" -L --localize-symbol <name> 將符號 <name> 強制標識為本地符號\n"
+" -G --keep-global-symbol <name> 將除了 <name> 以外的所有符號標識為本地\n"
+" -W --weaken-symbol <name> 將符號 <name> 強制標識為弱符號\n"
+" --weaken 將所有全域符號標識為弱符號\n"
+" -x --discard-all 刪除所有éžå…¨åŸŸç¬¦è™Ÿ\n"
+" -X --discard-locals 刪除所有編譯器產生的符號\n"
+" -i --interleave <number> åªåœ¨æ¯ <number> 個ä½å…ƒçµ„中複製一個\n"
+" -b --byte <num> 在æ¯å€‹æ’å…¥å€å¡Šä¸­é¸æ“‡ä½å…ƒçµ„ <num>\n"
+" --gap-fill <val> 在å€æ®µç©ºéš™ä¸­ä»¥ <val> å¡«å……\n"
+" --pad-to <addr> 補充最後一å€æ®µç›´åˆ°ä½å€ <addr>\n"
+" --set-start <addr> 將起始ä½å€è¨­ç½®ç‚º <addr>\n"
+" {--change-start|--adjust-start} <incr>\n"
+" å°‡ <incr> 增加到起始ä½å€\n"
+" {--change-addresses|--adjust-vma} <incr>\n"
+" å°‡ <incr> 增加到 LMAã€VMA 和起始ä½å€\n"
+" {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>\n"
+" 以 <val> 修改 <name> å€æ®µçš„ LMA å’Œ VMA\n"
+" --change-section-lma <name>{=|+|-}<val>\n"
+" 以 <val> 修改 <name> å€æ®µçš„ LMA\n"
+" --change-section-vma <name>{=|+|-}<val>\n"
+" 以 <val> 修改 <name> å€æ®µçš„ VMA\n"
+" {--[no-]change-warnings|--[no-]adjust-warnings}\n"
+" 如果命åå€æ®µä¸å­˜åœ¨å°±ç”¢ç”Ÿè­¦å‘Š\n"
+" --set-section-flags <name>=<flags>\n"
+" å°‡ <name> å€æ®µçš„屬性設置為 <flags>\n"
+" --add-section <name>=<file> å°‡ <file> 中的 <name> å€æ®µæ·»åŠ åˆ°è¼¸å‡ºä¸­\n"
+" --rename-section <old>=<new>[,<flags>] å°‡å€æ®µç”± <old> 改å為 <new>\n"
+" --change-leading-char 強行設定輸出格å¼çš„å‰å°Žå­—元風格\n"
+" --remove-leading-char 刪除全域符號的å‰å°Žå­—å…ƒ\n"
+" --redefine-sym <old>=<new> 將符號由 <old> 改å為 <new>\n"
+" --redefine-syms <file> å°æ‰€æœ‰åˆ—æ–¼ <file> 中的符號執行 --redefine-sym\n"
+" --srec-len <number> é™åˆ¶æ‰€ç”¢ç”Ÿ Srecords 的長度\n"
+" --srec-forceS3 將所產生 Srecords çš„é¡žåž‹é™åˆ¶ç‚º S3\n"
+" --strip-symbols <file> å°åˆ—舉在 <file> 中的所有符號執行 -N\n"
+" --strip-unneeded-symbols <file>\n"
+" å°æ‰€æœ‰åˆ—æ–¼ <file> 中的符號執行 --strip-unneeded-symbol\n"
+" --keep-symbols <file> å°åˆ—舉在 <file> 中的所有符號執行 -K\n"
+" --localize-symbols <file> å°åˆ—舉在 <file> 中的所有符號執行 -L\n"
+" --keep-global-symbols <file> å°åˆ—舉在 <file> 中的所有符號執行 -G\n"
+" --weaken-symbols <file> å°åˆ—舉在 <file> 中的所有符號執行 -W\n"
+" --alt-machine-code <index> 輸出使用替代的機器碼\n"
+" --writable-text 將輸出文字標記為å¯å¯«\n"
+" --readonly-text 將輸出文字標記為防寫\n"
+" --pure 將輸出檔案標記為需è¦åˆ†é \n"
+" --impure 將輸出檔案標記為混雜的\n"
+" --prefix-symbols <prefix> 添加 <prefix> 至æ¯å€‹ç¬¦è™Ÿå稱的å‰ç«¯\n"
+" --prefix-sections <prefix> 添加 <prefix> 至æ¯å€‹å€æ®µå稱的å‰ç«¯\n"
+" --prefix-alloc-sections <prefix>\n"
+" 添加 <prefix> 至æ¯å€‹å®šä½è¡¨å€æ®µå稱的å‰ç«¯\n"
+" -v --verbose 列出所有修改的目標檔案\n"
+" -V --version 顯示本程åºçš„版本號碼\n"
+" -h --help 顯示本輸出\n"
+" --info 列出支æ´çš„ç‰©ä»¶æ ¼å¼ & 系統架構\n"
+
+#: objcopy.c:485
+#, c-format
+msgid "Usage: %s <option(s)> in-file(s)\n"
+msgstr "用法:%s <é¸é …> 輸入檔案\n"
+
+#: objcopy.c:486
+#, c-format
+msgid " Removes symbols and sections from files\n"
+msgstr "從檔案中刪除符號和å€æ®µ\n"
+
+#: objcopy.c:488
+#, c-format
+msgid ""
+" -I --input-target=<bfdname> Assume input file is in format <bfdname>\n"
+" -O --output-target=<bfdname> Create an output file in format <bfdname>\n"
+" -F --target=<bfdname> Set both input and output format to <bfdname>\n"
+" -p --preserve-dates Copy modified/access timestamps to the output\n"
+" -R --remove-section=<name> Remove section <name> from the output\n"
+" -s --strip-all Remove all symbol and relocation information\n"
+" -g -S -d --strip-debug Remove all debugging symbols & sections\n"
+" --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"
+" -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"
+" -v --verbose List all object files modified\n"
+" -V --version Display this program's version number\n"
+" -h --help Display this output\n"
+" --info List object formats & architectures supported\n"
+" -o <file> Place stripped output into <file>\n"
+msgstr ""
+" -I --input-target=<bfdname> å‡å®šè¼¸å…¥æª”案的格å¼ç‚º <bfdname>\n"
+" -O --output-target=<bfdname> 建立格å¼ç‚º <bfdname> 的輸出檔案\n"
+" -F --target=<bfdname> 將輸入和輸出的格å¼è¨­å®šç‚º <bfdname>\n"
+" -p --preserve-dates å°‡ 修改/å­˜å– æ™‚é–“æˆ³è¤‡è£½åˆ°è¼¸å‡ºæª”æ¡ˆ\n"
+" -R --remove-section=<name> 從輸出中刪除 <name> å€æ®µ\n"
+" -s --strip-all 除去所有符號和é‡å®šä½è³‡è¨Š\n"
+" -g -S -d --strip-debug 除去所有除錯符號\n"
+" --strip-unneeded 除去所有é‡å®šä½ä¸éœ€è¦çš„符號\n"
+" --only-keep-debug 除去除錯以外的所有資訊\n"
+" -N --strip-symbol=<name> ä¸è¦è¤‡è£½ç¬¦è™Ÿ <name>\n"
+" -K --keep-symbol=<name> åªè¤‡è£½ç¬¦è™Ÿ <name>\n"
+" -w --wildcard 符號比較時容許è¬ç”¨å­—å…ƒ\n"
+" -x --discard-all 刪除所有éžå…¨åŸŸç¬¦è™Ÿ\n"
+" -X --discard-locals 刪除所有編譯器產生的符號\n"
+" -v --verbose 列出所有修改éŽçš„目標檔案\n"
+" -V --version 顯示本程åºçš„版本號碼\n"
+" -h --help 顯示本輸出\n"
+" --info 列出支æ´çš„ç‰©ä»¶æ ¼å¼ & 系統架構\n"
+" -o <file> å°‡ strip éŽçš„輸出置於 <file>\n"
+
+#: objcopy.c:560
+#, c-format
+msgid "unrecognized section flag `%s'"
+msgstr "ä¸èƒ½è­˜åˆ¥çš„å€æ®µæ——標「%sã€"
+
+#: objcopy.c:561
+#, c-format
+msgid "supported flags: %s"
+msgstr "支æ´çš„旗標:%s"
+
+#: objcopy.c:638
+#, c-format
+msgid "cannot open '%s': %s"
+msgstr "無法開啟:%s:%s"
+
+#: objcopy.c:641 objcopy.c:2629
+#, c-format
+msgid "%s: fread failed"
+msgstr "%s:fread 失敗"
+
+#: objcopy.c:714
+#, c-format
+msgid "%s:%d: Ignoring rubbish found on this line"
+msgstr "%s:%d: 忽略本列所å«ç„¡ç”¨è³‡æ–™"
+
+#: objcopy.c:976
+#, c-format
+msgid "%s: Multiple redefinition of symbol \"%s\""
+msgstr "%s:多次é‡è¤‡å®šç¾©ç¬¦è™Ÿã€Œ%sã€"
+
+#: objcopy.c:980
+#, c-format
+msgid "%s: Symbol \"%s\" is target of more than one redefinition"
+msgstr "%s:符號「%sã€æ˜¯å¤šæ¬¡é‡è¤‡å®šç¾©çš„標的"
+
+#: objcopy.c:1008
+#, c-format
+msgid "couldn't open symbol redefinition file %s (error: %s)"
+msgstr "無法開啟符號é‡å®šç¾©æª” %s (錯誤: %s)"
+
+#: objcopy.c:1086
+#, c-format
+msgid "%s:%d: garbage found at end of line"
+msgstr "%s:%d: 列尾出ç¾ç„¡ç”¨å­—å…ƒ"
+
+#: objcopy.c:1089
+#, c-format
+msgid "%s:%d: missing new symbol name"
+msgstr "%s:%d: 缺少新的符號å稱"
+
+#: objcopy.c:1099
+#, c-format
+msgid "%s:%d: premature end of file"
+msgstr "%s:%d: 檔案末尾ä¸å®Œæ•´"
+
+#: objcopy.c:1124
+msgid "Unable to change endianness of input file(s)"
+msgstr "無法改變輸入檔案的çµå°¾æ ¼å¼"
+
+#: objcopy.c:1133
+#, c-format
+msgid "copy from %s(%s) to %s(%s)\n"
+msgstr "從 %s(%s) 複製到 %s(%s)\n"
+
+#: objcopy.c:1170
+#, c-format
+msgid "Unable to recognise the format of the input file %s"
+msgstr "無法確èªè¼¸å…¥æª”案 %s çš„æ ¼å¼"
+
+#: objcopy.c:1174
+#, c-format
+msgid "Warning: Output file cannot represent architecture %s"
+msgstr "警告:輸出檔案無法代表系統架構 %s"
+
+#: objcopy.c:1211
+#, c-format
+msgid "can't create section `%s': %s"
+msgstr "無法建立å€æ®µã€Œ%sã€ï¼š%s"
+
+#: objcopy.c:1277
+msgid "there are no sections to be copied!"
+msgstr "沒有å¯ä¾›è¤‡è£½çš„å€æ®µï¼"
+
+#: objcopy.c:1323
+#, c-format
+msgid "Can't fill gap after %s: %s"
+msgstr "無法填充 %s 之後的間隙:%s"
+
+#: objcopy.c:1348
+#, c-format
+msgid "Can't add padding to %s: %s"
+msgstr "無法添加 %s æ—邊的空隙:%s"
+
+#: objcopy.c:1514
+#, c-format
+msgid "%s: error copying private BFD data: %s"
+msgstr "%s:複製 BFD ç§æœ‰è³‡æ–™å‡ºéŒ¯ï¼š%s"
+
+#: objcopy.c:1525
+msgid "unknown alternate machine code, ignored"
+msgstr "ä¸æ˜Žçš„é¡å¤–機器碼,將它忽略"
+
+#: objcopy.c:1555 objcopy.c:1585
+#, c-format
+msgid "cannot mkdir %s for archive copying (error: %s)"
+msgstr "無法為ä¿å­˜æª”複製建立目錄 %s (錯誤:%s)"
+
+#: objcopy.c:1790
+#, c-format
+msgid "Multiple renames of section %s"
+msgstr "多次將å€æ®µ %s 改å"
+
+#: objcopy.c:1841
+msgid "private header data"
+msgstr "ç§æœ‰æ¨™é ­è³‡æ–™"
+
+#: objcopy.c:1849
+#, c-format
+msgid "%s: error in %s: %s"
+msgstr "%s:å€æ®µ %s 中出錯:%s"
+
+#: objcopy.c:1903
+msgid "making"
+msgstr "製作中"
+
+#: objcopy.c:1912
+msgid "size"
+msgstr "大å°"
+
+#: objcopy.c:1926
+msgid "vma"
+msgstr "vma"
+
+#: objcopy.c:1951
+msgid "alignment"
+msgstr "å°é½Š"
+
+#: objcopy.c:1966
+msgid "flags"
+msgstr "旗標"
+
+#: objcopy.c:1988
+msgid "private data"
+msgstr "ç§æœ‰è³‡æ–™"
+
+#: objcopy.c:1996
+#, c-format
+msgid "%s: section `%s': error in %s: %s"
+msgstr "%s:å€æ®µã€Œ%sã€ï¼š%s 中出錯:%s"
+
+#: objcopy.c:2274
+#, c-format
+msgid "%s: can't create debugging section: %s"
+msgstr "%s:無法建立除錯å€æ®µï¼š%s"
+
+#: objcopy.c:2288
+#, c-format
+msgid "%s: can't set debugging section contents: %s"
+msgstr "%s:無法設定除錯å€æ®µå…§å®¹ï¼š%s"
+
+#: objcopy.c:2297
+#, c-format
+msgid "%s: don't know how to write debugging information for %s"
+msgstr "%s:ä¸çŸ¥é“如何為 %s 寫入除錯資訊"
+
+#: objcopy.c:2472
+msgid "byte number must be non-negative"
+msgstr "ä½å…ƒçµ„編號必須是éžè² æ•¸"
+
+#: objcopy.c:2482
+msgid "interleave must be positive"
+msgstr "間斷值必須是正數。"
+
+#: objcopy.c:2502 objcopy.c:2510
+#, 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
+#, c-format
+msgid "bad format for %s"
+msgstr "%s æ ¼å¼éŒ¯èª¤"
+
+#: objcopy.c:2624
+#, c-format
+msgid "cannot open: %s: %s"
+msgstr "無法開啟:%s:%s"
+
+#: objcopy.c:2743
+#, c-format
+msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
+msgstr "警告:將間隙填充由 0x%s 截短到 0x%x"
+
+#: objcopy.c:2903
+msgid "alternate machine code index must be positive"
+msgstr "é¡å¤–機器碼索引值必須是正數。"
+
+#: objcopy.c:2961
+msgid "byte number must be less than interleave"
+msgstr "ä½å…ƒçµ„編號必須å°æ–¼é–“斷值"
+
+#: objcopy.c:2991
+#, c-format
+msgid "architecture %s unknown"
+msgstr "未知的系統架構 %s"
+
+#: objcopy.c:2995
+msgid "Warning: input target 'binary' required for binary architecture parameter."
+msgstr "警告:二進ä½çš„系統架構åƒæ•¸éœ€è¦è¼¸å…¥ç›®æ¨™ 'binary'"
+
+#: objcopy.c:2996
+#, c-format
+msgid " Argument %s ignored"
+msgstr " 忽略引數 %s"
+
+#: objcopy.c:3002
+#, c-format
+msgid "warning: could not locate '%s'. System error message: %s"
+msgstr "警告:無法找到 '%s' çš„ä½ç½®ã€‚系統錯誤訊æ¯ç‚ºï¼š%s"
+
+#: objcopy.c:3042 objcopy.c:3056
+#, c-format
+msgid "%s %s%c0x%s never used"
+msgstr "%s %s%c0x%s 完全沒用éŽ"
+
+#: objdump.c:176
+#, c-format
+msgid "Usage: %s <option(s)> <file(s)>\n"
+msgstr "用法:%s <é¸é …> <檔案>\n"
+
+#: objdump.c:177
+#, c-format
+msgid " Display information from object <file(s)>.\n"
+msgstr " 顯示來自目標 <檔案> 的資訊。\n"
+
+#: objdump.c:178
+#, c-format
+msgid " At least one of the following switches must be given:\n"
+msgstr " 至少必須指定以下é¸é …之一:\n"
+
+#: objdump.c:179
+#, c-format
+msgid ""
+" -a, --archive-headers Display archive header information\n"
+" -f, --file-headers Display the contents of the overall file header\n"
+" -p, --private-headers Display object format specific file header contents\n"
+" -h, --[section-]headers Display the contents of the section headers\n"
+" -x, --all-headers Display the contents of all headers\n"
+" -d, --disassemble Display assembler contents of executable sections\n"
+" -D, --disassemble-all Display assembler contents of all sections\n"
+" -S, --source Intermix source code with disassembly\n"
+" -s, --full-contents Display the full contents of all sections requested\n"
+" -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"
+" -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"
+" -v, --version Display this program's version number\n"
+" -i, --info List object formats and architectures supported\n"
+" -H, --help Display this information\n"
+msgstr ""
+" -a, --archive-headers 顯示ä¿å­˜æª”頭資訊\n"
+" -f, --file-headers 顯示整體檔案頭的內容\n"
+" -p, --private-headers 顯示目標格å¼ç‰¹æœ‰çš„檔案頭內容\n"
+" -h, --[section-]headers 顯示å€æ®µé ­çš„內容\n"
+" -x, --all-headers 顯示所有標頭的內容\n"
+" -d, --disassemble 顯示å¯åŸ·è¡Œå€æ®µçš„組譯內容\n"
+" -D, --disassemble-all 顯示所有å€æ®µçš„組譯內容\n"
+" -S, --source 將原始碼和å組譯混åˆèµ·ä¾†\n"
+" -s, --full-contents 顯示所有請求å€æ®µçš„完整內容\n"
+" -g, --debugging 顯示目標檔案的除錯資訊\n"
+" -e, --debugging-tags 顯示使用 ctags 風格的除錯資訊\n"
+" -G, --stabs 以原始形å¼é¡¯ç¤ºæª”案中所有的 STABS 資訊\n"
+" -t, --syms 顯示符號表的內容\n"
+" -T, --dynamic-syms 顯示動態符號表的內容\n"
+" -r, --reloc 顯示檔案中的é‡å®šä½æ¢ç›®\n"
+" -R, --dynamic-reloc 顯示檔案中的動態é‡å®šä½æ¢ç›®\n"
+" -v, --version 顯示本程å¼çš„版本號碼\n"
+" -i, --info 列舉支æ´çš„目標格å¼å’Œç³»çµ±æž¶æ§‹\n"
+" -H, --help 顯示本資訊\n"
+
+#: objdump.c:202
+#, c-format
+msgid ""
+"\n"
+" The following switches are optional:\n"
+msgstr ""
+"\n"
+" 以下é¸é …是å¯é¸çš„:\n"
+
+#: objdump.c:203
+#, c-format
+msgid ""
+" -b, --target=BFDNAME Specify the target object format as BFDNAME\n"
+" -m, --architecture=MACHINE Specify the target architecture as MACHINE\n"
+" -j, --section=NAME Only display information for section NAME\n"
+" -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n"
+" -EB --endian=big Assume big endian format when disassembling\n"
+" -EL --endian=little Assume little endian format when disassembling\n"
+" --file-start-context Include context from start of file (with -S)\n"
+" -I, --include=DIR Add DIR to search list for source files\n"
+" -l, --line-numbers Include line numbers and filenames in output\n"
+" -C, --demangle[=STYLE] Decode mangled/processed symbol names\n"
+" The STYLE, if specified, can be `auto', `gnu',\n"
+" `lucid', `arm', `hp', `edg', `gnu-v3', `java'\n"
+" or `gnat'\n"
+" -w, --wide Format output for more than 80 columns\n"
+" -z, --disassemble-zeroes Do not skip blocks of zeroes when disassembling\n"
+" --start-address=ADDR Only process data whose address is >= ADDR\n"
+" --stop-address=ADDR Only process data whose address is <= ADDR\n"
+" --prefix-addresses Print complete address alongside disassembly\n"
+" --[no-]show-raw-insn Display hex alongside symbolic disassembly\n"
+" --adjust-vma=OFFSET Add OFFSET to all displayed section addresses\n"
+" --special-syms Include special symbols in symbol dumps\n"
+"\n"
+msgstr ""
+" -b, --target=BFDNAME 將目標物件檔案格å¼æŒ‡å®šç‚º BFDNAME\n"
+" -m, --architecture=MACHINE 將目標系統架構指定為 MACHINE\n"
+" -j, --section=NAME åªé¡¯ç¤º NAME å€æ®µçš„資訊\n"
+" -M, --disassembler-options=OPT 將文字傳éžåˆ° OPT å組譯程åº\n"
+" -EB --endian=big å組譯時å‡å®šé«˜ä½ä½å…ƒçµ„在å‰\n"
+" -EL --endian=little å組譯時å‡å®šä½Žä½ä½å…ƒçµ„在å‰\n"
+" --file-start-context 從檔案的起點引入上下文 (帶有 -S)\n"
+" -I, --include=DIR å°‡ DIR 加入æœå°‹åŽŸå§‹ç¢¼æª”案的列表\n"
+" -l, --line-numbers 在輸出中指定列號和檔案å\n"
+" -C, --demangle[=STYLE] å°æ–¼å·²æ壞/處ç†éŽçš„符號å稱進行解碼\n"
+" 如果指定了 STYLE,STYLE å¯èƒ½ç‚ºã€Œautoã€ã€ã€Œgnuã€ã€\n"
+" 「lucidã€ã€ã€Œarmã€ã€ã€Œhpã€ã€ã€Œedgã€ã€ã€Œgnu-v3ã€ã€ã€Œjavaã€æˆ–「gnatã€\n"
+" -w, --wide 以多於 80 行的寬度å°è¼¸å‡ºé€²è¡Œæ ¼å¼åŒ–\n"
+" -z, --disassemble-zeroes å組譯時ä¸è¦è·³éŽç‚ºé›¶çš„å€å¡Š\n"
+" --start-address=ADDR åªæœ‰è¡Œç¨‹è³‡æ–™çš„ä½å€ >= ADDR\n"
+" --stop-address=ADDR åªæœ‰è¡Œç¨‹è³‡æ–™çš„ä½å€ <= ADDR\n"
+" --prefix-addresses åŒå組譯代碼並列顯示完整的ä½å€\n"
+" --[no-]show-raw-insn åŒç¬¦è™Ÿå組譯並列顯示å六進ä½å€¼\n"
+" --adjust-vma=OFFSET 為所有顯示的å€æ®µä½å€å¢žåŠ  OFFSET\n"
+" --special-syms 在符號傾å°ä¸­åŒ…å«ç‰¹æ®Šç¬¦è™Ÿ\n"
+"\n"
+
+#: objdump.c:378
+#, c-format
+msgid "Sections:\n"
+msgstr "å€æ®µï¼š\n"
+
+#: objdump.c:381 objdump.c:385
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "索引å稱 å¤§å° VMA LMA 檔案關閉 å°é½Š"
+
+#: objdump.c:387
+#, c-format
+msgid "Idx Name Size VMA LMA File off Algn"
+msgstr "索引å稱 å¤§å° VMA LMA 檔案關閉 å°é½Š"
+
+#: objdump.c:391
+#, c-format
+msgid " Flags"
+msgstr " 旗標"
+
+#: objdump.c:393
+#, c-format
+msgid " Pg"
+msgstr " é "
+
+#: objdump.c:436
+#, c-format
+msgid "%s: not a dynamic object"
+msgstr "%s:ä¸æ˜¯å‹•æ…‹ç‰©ä»¶"
+
+#: objdump.c:1722
+#, c-format
+msgid "Disassembly of section %s:\n"
+msgstr "å組譯 %s å€æ®µï¼š\n"
+
+#: objdump.c:1884
+#, c-format
+msgid "Can't use supplied machine %s"
+msgstr "無法使用支æ´çš„機器 %s"
+
+#: objdump.c:1903
+#, c-format
+msgid "Can't disassemble for architecture %s\n"
+msgstr "無法å組譯系統架構 %s\n"
+
+#: objdump.c:1973
+#, c-format
+msgid ""
+"No %s section present\n"
+"\n"
+msgstr ""
+"%s å€æ®µä¸å­˜åœ¨\n"
+"\n"
+
+#: objdump.c:1982
+#, c-format
+msgid "Reading %s section of %s failed: %s"
+msgstr "讀入 %2$s çš„ %1$s å€æ®µå¤±æ•—:%3$s"
+
+#: objdump.c:2026
+#, c-format
+msgid ""
+"Contents of %s section:\n"
+"\n"
+msgstr ""
+"%s å€æ®µçš„內容:\n"
+"\n"
+
+#: objdump.c:2153
+#, c-format
+msgid "architecture: %s, "
+msgstr "系統架構:%s,"
+
+#: objdump.c:2156
+#, c-format
+msgid "flags 0x%08x:\n"
+msgstr "旗標 0x%08x:\n"
+
+#: objdump.c:2170
+#, c-format
+msgid ""
+"\n"
+"start address 0x"
+msgstr ""
+"\n"
+"起始ä½å€ 0x"
+
+#: objdump.c:2210
+#, c-format
+msgid "Contents of section %s:\n"
+msgstr "%s å€æ®µçš„內容:\n"
+
+#: objdump.c:2335
+#, c-format
+msgid "no symbols\n"
+msgstr "無符號\n"
+
+#: objdump.c:2342
+#, c-format
+msgid "no information for symbol number %ld\n"
+msgstr "沒有關於符號號碼 %ld 的資訊\n"
+
+#: objdump.c:2345
+#, c-format
+msgid "could not determine the type of symbol number %ld\n"
+msgstr "無法確定符號號碼「%ldã€çš„é¡žåž‹\n"
+
+#: objdump.c:2611
+#, c-format
+msgid ""
+"\n"
+"%s: file format %s\n"
+msgstr ""
+"\n"
+"%s: æª”æ¡ˆæ ¼å¼ %s\n"
+
+#: objdump.c:2662
+#, c-format
+msgid "%s: printing debugging information failed"
+msgstr "%s:列å°é™¤éŒ¯è³‡è¨Šå¤±æ•—"
+
+#: objdump.c:2753
+#, c-format
+msgid "In archive %s:\n"
+msgstr "在ä¿å­˜æª” %s 中:\n"
+
+#: objdump.c:2873
+msgid "unrecognized -E option"
+msgstr "無法識別的 -E é¸é …"
+
+#: objdump.c:2884
+#, c-format
+msgid "unrecognized --endian type `%s'"
+msgstr "無法識別的 --endian 類型「%sã€"
+
+#: rdcoff.c:196
+#, c-format
+msgid "parse_coff_type: Bad type code 0x%x"
+msgstr "parse_coff_type:ä¸è‰¯çš„類型碼 0x%x"
+
+#: rdcoff.c:404 rdcoff.c:509 rdcoff.c:697
+#, c-format
+msgid "bfd_coff_get_syment failed: %s"
+msgstr "bfd_coff_get_syment 失敗:%s"
+
+#: rdcoff.c:420 rdcoff.c:717
+#, c-format
+msgid "bfd_coff_get_auxent failed: %s"
+msgstr "bfd_coff_get_auxent 失敗:%s"
+
+#: rdcoff.c:784
+#, c-format
+msgid "%ld: .bf without preceding function"
+msgstr "%ld: .bf 未å«å‰å°Žå‡½æ•¸"
+
+#: rdcoff.c:834
+#, c-format
+msgid "%ld: unexpected .ef\n"
+msgstr "%ld:æ„外的 .ef\n"
+
+#: rddbg.c:85
+#, c-format
+msgid "%s: no recognized debugging information"
+msgstr "%s:未識別的除錯資訊"
+
+#: rddbg.c:394
+#, c-format
+msgid "Last stabs entries before error:\n"
+msgstr "錯誤發生å‰æœ€å¾Œçš„ stabs 進入點:\n"
+
+#: readelf.c:272
+#, c-format
+msgid "%s: Error: "
+msgstr "%s:錯誤:"
+
+#: readelf.c:283
+#, c-format
+msgid "%s: Warning: "
+msgstr "%s:警告:"
+
+#: readelf.c:298
+#, c-format
+msgid "Unable to seek to 0x%x for %s\n"
+msgstr "無法定ä½åˆ° %2$s çš„ 0x%1$x\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 "無法讀入 %2$s çš„ 0x%1$x ä½å…ƒçµ„\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
+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
+msgid "relocs"
+msgstr "é‡å®šä½"
+
+#: readelf.c:782 readelf.c:809 readelf.c:852 readelf.c:879
+msgid "out of memory parsing relocs"
+msgstr "解æžé‡å®šä½æ™‚記憶體ä¸è¶³"
+
+#: readelf.c:933
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name + Addend\n"
+msgstr " åç§»é‡ è³‡è¨Š é¡žåž‹ 符號值 符號å稱 + 加數\n"
+
+#: readelf.c:935
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name + Addend\n"
+msgstr " åç§»é‡ è³‡è¨Š é¡žåž‹ 符號值 符號å稱 + 加數\n"
+
+#: readelf.c:940
+#, c-format
+msgid " Offset Info Type Sym. Value Symbol's Name\n"
+msgstr " åç§»é‡ è³‡è¨Š é¡žåž‹ 符號值 符號å稱\n"
+
+#: readelf.c:942
+#, c-format
+msgid " Offset Info Type Sym.Value Sym. Name\n"
+msgstr " åç§»é‡ è³‡è¨Š é¡žåž‹ 符號值 符號å稱\n"
+
+#: readelf.c:950
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name + Addend\n"
+msgstr " åç§»é‡ è³‡è¨Š é¡žåž‹ 符號值 符號å稱 + 加數\n"
+
+#: readelf.c:952
+#, c-format
+msgid " Offset Info Type Sym. Value Sym. Name + Addend\n"
+msgstr " åç§»é‡ è³‡è¨Š é¡žåž‹ 符號值 符號å稱 + 加數\n"
+
+#: readelf.c:957
+#, c-format
+msgid " Offset Info Type Symbol's Value Symbol's Name\n"
+msgstr " åç§»é‡ è³‡è¨Š é¡žåž‹ 符號值 符號å稱\n"
+
+#: readelf.c:959
+#, 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
+#, c-format
+msgid "unrecognized: %-7lx"
+msgstr "ä¸èƒ½è­˜åˆ¥çš„:%-7lx"
+
+#: readelf.c:1295
+#, c-format
+msgid "<string table index: %3ld>"
+msgstr "<字串表索引:%3ld>"
+
+#: readelf.c:1297
+#, c-format
+msgid "<corrupt string table index: %3ld>"
+msgstr "<毀æ字串表索引:%3ld>"
+
+#: readelf.c:1569
+#, c-format
+msgid "Processor Specific: %lx"
+msgstr "特定處ç†å™¨ï¼š%lx"
+
+#: readelf.c:1588
+#, c-format
+msgid "Operating System specific: %lx"
+msgstr "特定作業系統:%lx"
+
+#: readelf.c:1592 readelf.c:2370
+#, c-format
+msgid "<unknown>: %lx"
+msgstr "<未知>:%lx"
+
+#: readelf.c:1605
+msgid "NONE (None)"
+msgstr "NONE (ç„¡)"
+
+#: readelf.c:1606
+msgid "REL (Relocatable file)"
+msgstr "REL (å¯é‡å®šä½æª”案)"
+
+#: readelf.c:1607
+msgid "EXEC (Executable file)"
+msgstr "EXEC (å¯åŸ·è¡Œæª”案)"
+
+#: readelf.c:1608
+msgid "DYN (Shared object file)"
+msgstr "DYN (共享物件檔案)"
+
+#: readelf.c:1609
+msgid "CORE (Core file)"
+msgstr "CORE (核心檔案)"
+
+#: readelf.c:1613
+#, c-format
+msgid "Processor Specific: (%x)"
+msgstr "特定處ç†å™¨ï¼š(%x)"
+
+#: readelf.c:1615
+#, c-format
+msgid "OS Specific: (%x)"
+msgstr "特定作業系統:(%x)"
+
+#: readelf.c:1617 readelf.c:1724 readelf.c:2554
+#, c-format
+msgid "<unknown>: %x"
+msgstr "<未知>:%x"
+
+#: readelf.c:1629
+msgid "None"
+msgstr "ç„¡"
+
+#: readelf.c:2229
+msgid "Standalone App"
+msgstr "ç¨ç«‹æ‡‰ç”¨ç¨‹å¼"
+
+#: readelf.c:2232 readelf.c:2952 readelf.c:2968
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<未知:%x>"
+
+#: readelf.c:2597
+#, c-format
+msgid "Usage: readelf <option(s)> elf-file(s)\n"
+msgstr "用法:readelf <é¸é …> elf-檔案\n"
+
+#: readelf.c:2598
+#, c-format
+msgid " Display information about the contents of ELF format files\n"
+msgstr " 顯示關於 ELF æ ¼å¼æª”案內容的資訊\n"
+
+#: readelf.c:2599
+#, c-format
+msgid ""
+" Options are:\n"
+" -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
+" -h --file-header Display the ELF file header\n"
+" -l --program-headers Display the program headers\n"
+" --segments An alias for --program-headers\n"
+" -S --section-headers Display the sections' header\n"
+" --sections An alias for --section-headers\n"
+" -g --section-groups Display the section groups\n"
+" -e --headers Equivalent to: -h -l -S\n"
+" -s --syms Display the symbol table\n"
+" --symbols An alias for --syms\n"
+" -n --notes Display the core notes (if present)\n"
+" -r --relocs Display the relocations (if present)\n"
+" -u --unwind Display the unwind info (if present)\n"
+" -d --dynamic Display the dynamic section (if present)\n"
+" -V --version-info Display the version sections (if present)\n"
+" -A --arch-specific Display architecture specific information (if any).\n"
+" -D --use-dynamic Use the dynamic section info when displaying symbols\n"
+" -x --hex-dump=<number> Dump the contents of section <number>\n"
+" -w[liaprmfFsoR] or\n"
+" --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+" Display the contents of DWARF2 debug sections\n"
+msgstr ""
+" é¸é …為:\n"
+" -a --all ç­‰åŒæ–¼ï¼š-h -l -S -s -r -d -V -A -I\n"
+" -h --file-header 顯示 ELF 檔案標頭\n"
+" -l --program-headers 顯示程å¼æ¨™é ­\n"
+" --segments --program-headers 的別å\n"
+" -S --section-headers 顯示å€æ®µæ¨™é ­\n"
+" --sections --section-headers 的別å\n"
+" -g --section-groups 顯示å€æ®µç¾¤çµ„\n"
+" -e --headers ç­‰åŒæ–¼ï¼š-h -l -S\n"
+" -s --syms 顯示符號表\n"
+" --symbols --syms 的別å\n"
+" -n --notes 顯示核心備註 (如果有的話)\n"
+" -r --relocs 顯示é‡å®šä½ (如果有的話)\n"
+" -u --unwind 顯示展開(unwind)資訊 (如果有的話)\n"
+" -d --dynamic 顯示動態å€æ®µ (如果有的話)\n"
+" -V --version-info 顯示版本å€æ®µ (如果有的話)\n"
+" -A --arch-specific 顯示系統架構特有的資訊 (如果有的話)\n"
+" -D --use-dynamic 顯示符號的時候使用動態å€æ®µè³‡è¨Š\n"
+" -x --hex-dump=<編號> 輸出 <編號> å€æ®µçš„內容\n"
+" -w[liaprmfFsoR] 或\n"
+" --debug-dump[=line,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=str,=loc,=Ranges]\n"
+" 顯示 DWARF2 除錯å€æ®µçš„內容\n"
+
+#: readelf.c:2622
+#, c-format
+msgid ""
+" -i --instruction-dump=<number>\n"
+" Disassemble the contents of section <number>\n"
+msgstr ""
+" -i --instruction-dump=<編號>\n"
+" å組譯å€æ®µ <編號> 的內容\n"
+
+#: readelf.c:2626
+#, c-format
+msgid ""
+" -I --histogram Display histogram of bucket list lengths\n"
+" -W --wide Allow output width to exceed 80 characters\n"
+" -H --help Display this information\n"
+" -v --version Display the version number of readelf\n"
+msgstr ""
+" -I --histogram 顯示存儲桶列表長度的長æ¢åœ–\n"
+" -W --wide å…è¨±è¼¸å‡ºå¯¬åº¦è¶…éŽ 80 個字元\n"
+" -H --help 顯示本資訊\n"
+" -v --version 顯示 readelf 的版本號碼\n"
+
+#: readelf.c:2651 readelf.c:12118
+msgid "Out of memory allocating dump request table."
+msgstr "傾å°éœ€æ±‚表時記憶體定ä½ä¸è¶³ã€‚"
+
+#: readelf.c:2820 readelf.c:2888
+#, c-format
+msgid "Unrecognized debug option '%s'\n"
+msgstr "無法識別的除錯é¸é …「%sã€\n"
+
+#: readelf.c:2922
+#, c-format
+msgid "Invalid option '-%c'\n"
+msgstr "無效的é¸é …「-%cã€\n"
+
+#: readelf.c:2936
+msgid "Nothing to do.\n"
+msgstr "無事å¯åšã€‚\n"
+
+#: readelf.c:2948 readelf.c:2964 readelf.c:5906
+msgid "none"
+msgstr "ç„¡"
+
+#: readelf.c:2965
+msgid "2's complement, little endian"
+msgstr "2 的補數,å°å°¾åº(little endian)"
+
+#: readelf.c:2966
+msgid "2's complement, big endian"
+msgstr "2 的補數,大尾åº(big endian)"
+
+#: readelf.c:2984
+msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
+msgstr "ä¸æ˜¯ ELF 檔案 - 它開頭的魔術ä½å…ƒçµ„錯誤\n"
+
+#: readelf.c:2992
+#, c-format
+msgid "ELF Header:\n"
+msgstr "ELF 檔頭:\n"
+
+#: readelf.c:2993
+#, c-format
+msgid " Magic: "
+msgstr "魔術ä½å…ƒçµ„:"
+
+#: readelf.c:2997
+#, c-format
+msgid " Class: %s\n"
+msgstr " 類別: %s\n"
+
+#: readelf.c:2999
+#, c-format
+msgid " Data: %s\n"
+msgstr " 資料: %s\n"
+
+#: readelf.c:3001
+#, c-format
+msgid " Version: %d %s\n"
+msgstr " 版本: %d %s\n"
+
+#: readelf.c:3008
+#, c-format
+msgid " OS/ABI: %s\n"
+msgstr " OS/ABI: %s\n"
+
+#: readelf.c:3010
+#, c-format
+msgid " ABI Version: %d\n"
+msgstr " ABI 版本: %d\n"
+
+#: readelf.c:3012
+#, c-format
+msgid " Type: %s\n"
+msgstr " é¡žåž‹: %s\n"
+
+#: readelf.c:3014
+#, c-format
+msgid " Machine: %s\n"
+msgstr " 系統架構: %s\n"
+
+#: readelf.c:3016
+#, c-format
+msgid " Version: 0x%lx\n"
+msgstr " 版本: 0x%lx\n"
+
+#: readelf.c:3019
+#, c-format
+msgid " Entry point address: "
+msgstr " 進入點ä½å€ï¼š "
+
+#: readelf.c:3021
+#, c-format
+msgid ""
+"\n"
+" Start of program headers: "
+msgstr ""
+"\n"
+" 程å¼æ¨™é ­èµ·é»žï¼š "
+
+#: readelf.c:3023
+#, c-format
+msgid ""
+" (bytes into file)\n"
+" Start of section headers: "
+msgstr ""
+" (檔案內之ä½å…ƒçµ„)\n"
+" å€æ®µæ¨™é ­èµ·é»žï¼š "
+
+#: readelf.c:3025
+#, c-format
+msgid " (bytes into file)\n"
+msgstr " (檔案內之ä½å…ƒçµ„)\n"
+
+#: readelf.c:3027
+#, c-format
+msgid " Flags: 0x%lx%s\n"
+msgstr " 旗標: 0x%lx%s\n"
+
+#: readelf.c:3030
+#, c-format
+msgid " Size of this header: %ld (bytes)\n"
+msgstr " 此標頭的大å°ï¼š %ld (ä½å…ƒçµ„)\n"
+
+#: readelf.c:3032
+#, c-format
+msgid " Size of program headers: %ld (bytes)\n"
+msgstr " 程å¼æ¨™é ­å¤§å°ï¼š %ld (ä½å…ƒçµ„)\n"
+
+#: readelf.c:3034
+#, c-format
+msgid " Number of program headers: %ld\n"
+msgstr " 程å¼æ¨™é ­æ•¸é‡ï¼š %ld\n"
+
+#: readelf.c:3036
+#, c-format
+msgid " Size of section headers: %ld (bytes)\n"
+msgstr " å€æ®µæ¨™é ­å¤§å°ï¼š %ld (ä½å…ƒçµ„)\n"
+
+#: readelf.c:3038
+#, c-format
+msgid " Number of section headers: %ld"
+msgstr " å€æ®µæ¨™é ­æ•¸é‡ï¼š %ld"
+
+#: readelf.c:3043
+#, c-format
+msgid " Section header string table index: %ld"
+msgstr " 字串表索引å€æ®µæ¨™é ­ï¼š %ld"
+
+#: readelf.c:3074 readelf.c:3107
+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
+msgid "Out of memory\n"
+msgstr "記憶體ä¸è¶³\n"
+
+#: readelf.c:3172
+#, c-format
+msgid ""
+"\n"
+"There are no program headers in this file.\n"
+msgstr ""
+"\n"
+"本檔案中沒有程å¼æ¨™é ­ã€‚\n"
+
+#: readelf.c:3178
+#, c-format
+msgid ""
+"\n"
+"Elf file type is %s\n"
+msgstr ""
+"\n"
+"Elf 檔案類型為 %s\n"
+
+#: readelf.c:3179
+#, c-format
+msgid "Entry point "
+msgstr "進入點 "
+
+#: readelf.c:3181
+#, c-format
+msgid ""
+"\n"
+"There are %d program headers, starting at offset "
+msgstr ""
+"\n"
+"共有 %d 個程å¼æ¨™é ­ï¼Œé–‹å§‹æ–¼å移é‡"
+
+#: readelf.c:3193 readelf.c:3195
+#, c-format
+msgid ""
+"\n"
+"Program Headers:\n"
+msgstr ""
+"\n"
+"程å¼æ¨™é ­ï¼š\n"
+
+#: readelf.c:3199
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " é¡žåž‹ åç§»é‡ è™›æ“¬ä½å€ 實體ä½å€ æª”æ¡ˆå¤§å° è¨˜æ†¶å¤§å° æ——æ¨™ å°é½Š\n"
+
+#: readelf.c:3202
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
+msgstr " é¡žåž‹ åç§»é‡ è™›æ“¬ä½å€ 實體ä½å€ æª”æ¡ˆå¤§å° è¨˜æ†¶å¤§å° æ——æ¨™ å°é½Š\n"
+
+#: readelf.c:3206
+#, c-format
+msgid " Type Offset VirtAddr PhysAddr\n"
+msgstr " é¡žåž‹ åç§»é‡ è™›æ“¬ä½å€ 實體ä½å€\n"
+
+#: readelf.c:3208
+#, c-format
+msgid " FileSiz MemSiz Flags Align\n"
+msgstr " æª”æ¡ˆå¤§å° è¨˜æ†¶å¤§å° æ——æ¨™ å°é½Š\n"
+
+#: readelf.c:3301
+msgid "more than one dynamic segment\n"
+msgstr "多於一個動態節å€\n"
+
+#: readelf.c:3312
+msgid "no .dynamic section in the dynamic segment"
+msgstr "在動態節å€ä¸­æ²’有動態å€æ®µ"
+
+#: readelf.c:3321
+msgid "the .dynamic section is not contained within the dynamic segment"
+msgstr "在動態節å€ä¸­æœªåŒ…å«å‹•æ…‹å€æ®µ"
+
+#: readelf.c:3323
+msgid "the .dynamic section is not the first section in the dynamic segment."
+msgstr "動態節å€ä¸­çš„第一å€æ®µä¸¦éžå‹•æ…‹å€æ®µ"
+
+#: readelf.c:3337
+msgid "Unable to find program interpreter name\n"
+msgstr "無法找到程å¼è§£è­¯å™¨å稱\n"
+
+#: readelf.c:3344
+#, c-format
+msgid ""
+"\n"
+" [Requesting program interpreter: %s]"
+msgstr ""
+"\n"
+" [正在è¦æ±‚程å¼è§£è­¯å™¨ï¼š%s]"
+
+#: readelf.c:3356
+#, c-format
+msgid ""
+"\n"
+" Section to Segment mapping:\n"
+msgstr ""
+"\n"
+" å€æ®µåˆ°ç¯€å€æ˜ å°„中:\n"
+
+#: readelf.c:3357
+#, c-format
+msgid " Segment Sections...\n"
+msgstr " 節å€æ®µ...\n"
+
+#: readelf.c:3408
+msgid "Cannot interpret virtual addresses without program headers.\n"
+msgstr "無法ä¸é ç¨‹å¼æ¨™é ­è€Œè§£è­¯è™›æ“¬ä½å€\n"
+
+#: readelf.c:3424
+#, 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
+msgid "section headers"
+msgstr "å€æ®µæ¨™é ­"
+
+#: readelf.c:3523 readelf.c:3586
+msgid "symbols"
+msgstr "符號"
+
+#: readelf.c:3533 readelf.c:3596
+msgid "symtab shndx"
+msgstr "符號分é ç´¢å¼•"
+
+#: readelf.c:3697 readelf.c:3977
+#, c-format
+msgid ""
+"\n"
+"There are no sections in this file.\n"
+msgstr ""
+"\n"
+"本檔案中沒有å€æ®µã€‚\n"
+
+#: readelf.c:3703
+#, 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
+msgid "string table"
+msgstr "字串表"
+
+#: readelf.c:3765
+msgid "File contains multiple dynamic symbol tables\n"
+msgstr "檔案å«æœ‰å¤šå€‹å‹•æ…‹ç¬¦è™Ÿè¡¨\n"
+
+#: readelf.c:3777
+msgid "File contains multiple dynamic string tables\n"
+msgstr "檔案å«æœ‰å¤šå€‹å‹•æ…‹å­—串表\n"
+
+#: readelf.c:3782
+msgid "dynamic strings"
+msgstr "動態字串"
+
+#: readelf.c:3789
+msgid "File contains multiple symtab shndx tables\n"
+msgstr "檔案å«æœ‰å¤šå€‹ç¬¦è™Ÿåˆ†é ç´¢å¼•è¡¨\n"
+
+#: readelf.c:3828
+#, c-format
+msgid ""
+"\n"
+"Section Headers:\n"
+msgstr ""
+"\n"
+"å€æ®µæ¨™é ­ï¼š\n"
+
+#: readelf.c:3830
+#, c-format
+msgid ""
+"\n"
+"Section Header:\n"
+msgstr ""
+"\n"
+"å€æ®µæ¨™é ­ï¼š\n"
+
+#: readelf.c:3834
+#, c-format
+msgid " [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"
+msgstr " [號] å稱 é¡žåž‹ ä½å€ å移 å¤§å° å…¨ 旗標 é€£çµ è³‡ 齊\n"
+
+#: readelf.c:3837
+#, c-format
+msgid " [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"
+msgstr " [號] å稱 é¡žåž‹ ä½å€ å移 å¤§å° å…¨ 標 連 資 齊\n"
+
+#: readelf.c:3840
+#, c-format
+msgid " [Nr] Name Type Address Offset\n"
+msgstr " [號] å稱 é¡žåž‹ ä½å€ å移é‡\n"
+
+#: readelf.c:3841
+#, c-format
+msgid " Size EntSize Flags Link Info Align\n"
+msgstr " å¤§å° å…¨é«”å¤§å° æ——æ¨™ é€£çµ è³‡è¨Š å°é½Š\n"
+
+#: readelf.c:3936
+#, c-format
+msgid ""
+"Key to Flags:\n"
+" W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+" I (info), L (link order), G (group), x (unknown)\n"
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
+msgstr ""
+"旗標關éµå­—:\n"
+" W (寫入), A (定ä½), X (執行), M (èžåˆ), S (字串)\n"
+" I (資訊), L (連çµé †åº), G (群組), x (未知)\n"
+" O (è¦æ±‚é¡å¤–的作業系統處ç†) o (特定作業系統), p (特定處ç†å™¨)\n"
+
+#: readelf.c:3954
+#, c-format
+msgid "[<unknown>: 0x%x]"
+msgstr "[<未知>: 0x%x]"
+
+#: readelf.c:3984
+msgid "Section headers are not available!\n"
+msgstr "å€æ®µæ¨™é ­ç„¡æ³•å–用ï¼\n"
+
+#: readelf.c:4008
+#, c-format
+msgid ""
+"\n"
+"There are no section groups in this file.\n"
+msgstr ""
+"\n"
+"本檔案中沒有å€æ®µç¾¤çµ„。\n"
+
+#: readelf.c:4042
+#, c-format
+msgid "Bad sh_link in group section `%s'\n"
+msgstr "在群組å€æ®µã€Œ%sã€ä¸­ä¸è‰¯çš„ sh_link\n"
+
+#: readelf.c:4061
+#, c-format
+msgid "Bad sh_info in group section `%s'\n"
+msgstr "在群組å€æ®µã€Œ%sã€ä¸­ä¸è‰¯çš„ sh_info\n"
+
+#: readelf.c:4085 readelf.c:6947
+msgid "section data"
+msgstr "å€æ®µè³‡æ–™"
+
+#: readelf.c:4097
+#, c-format
+msgid " [Index] Name\n"
+msgstr " [索引] å稱\n"
+
+#: readelf.c:4114
+#, c-format
+msgid "section [%5u] already in group section [%5u]\n"
+msgstr "å€æ®µ [%5u] 已在群組å€æ®µ [%5u] 之中\n"
+
+#: readelf.c:4127
+#, c-format
+msgid "section 0 in group section [%5u]\n"
+msgstr "å€æ®µ 0 在群組å€æ®µ [%5u] 之中\n"
+
+#: readelf.c:4224
+#, c-format
+msgid ""
+"\n"
+"'%s' relocation section at offset 0x%lx contains %ld bytes:\n"
+msgstr ""
+"\n"
+"「%sã€ä½æ–¼åç§»é‡ 0x%lx çš„é‡å®šä½å€æ®µå«æœ‰ %ld 個ä½å…ƒçµ„:\n"
+
+#: readelf.c:4236
+#, c-format
+msgid ""
+"\n"
+"There are no dynamic relocations in this file.\n"
+msgstr ""
+"\n"
+"本檔案中沒有動態é‡å®šä½ã€‚\n"
+
+#: readelf.c:4260
+#, c-format
+msgid ""
+"\n"
+"Relocation section "
+msgstr ""
+"\n"
+"é‡å®šä½å€æ®µ "
+
+#: readelf.c:4265 readelf.c:4666 readelf.c:4680 readelf.c:5025
+#, c-format
+msgid "'%s'"
+msgstr "「%sã€"
+
+#: readelf.c:4267 readelf.c:4682 readelf.c:5027
+#, c-format
+msgid " at offset 0x%lx contains %lu entries:\n"
+msgstr " ä½æ–¼åç§»é‡ 0x%lx å«æœ‰ %lu 個æ¢ç›®ï¼š\n"
+
+#: readelf.c:4308
+#, c-format
+msgid ""
+"\n"
+"There are no relocations in this file.\n"
+msgstr ""
+"\n"
+"該檔案中沒有é‡å®šä½è³‡è¨Šã€‚\n"
+
+#: readelf.c:4482 readelf.c:4862
+msgid "unwind table"
+msgstr "展開表格"
+
+#: readelf.c:4540 readelf.c:4959
+#, c-format
+msgid "Skipping unexpected relocation type %s\n"
+msgstr "è·³éŽæ„外的é‡å®šä½é¡žåž‹ %s\n"
+
+#: readelf.c:4598 readelf.c:5018 readelf.c:5069
+#, c-format
+msgid ""
+"\n"
+"There are no unwind sections in this file.\n"
+msgstr ""
+"\n"
+"本檔案中沒有展開的å€æ®µã€‚\n"
+
+#: readelf.c:4661
+#, c-format
+msgid ""
+"\n"
+"Could not find unwind info section for "
+msgstr ""
+"\n"
+"找ä¸åˆ°å±•é–‹çš„資訊å€æ®µä¹‹æ–¼"
+
+#: readelf.c:4673
+msgid "unwind info"
+msgstr "展開的資訊"
+
+#: readelf.c:4675 readelf.c:5024
+#, c-format
+msgid ""
+"\n"
+"Unwind section "
+msgstr ""
+"\n"
+"展開的å€æ®µ"
+
+#: readelf.c:5228 readelf.c:5272
+msgid "dynamic section"
+msgstr "å‹•æ…‹å€æ®µ"
+
+#: readelf.c:5349
+#, c-format
+msgid ""
+"\n"
+"There is no dynamic section in this file.\n"
+msgstr ""
+"\n"
+"本檔案沒有動態å€æ®µã€‚\n"
+
+#: readelf.c:5387
+msgid "Unable to seek to end of file!"
+msgstr "無法æœç´¢çš„檔案çµå°¾ï¼"
+
+#: readelf.c:5400
+msgid "Unable to determine the number of symbols to load\n"
+msgstr "無法確定è¦è®€å…¥çš„符號數é‡\n"
+
+#: readelf.c:5435
+msgid "Unable to seek to end of file\n"
+msgstr "無法æœç´¢åˆ°æª”案末尾\n"
+
+#: readelf.c:5442
+msgid "Unable to determine the length of the dynamic string table\n"
+msgstr "無法確定動態字串表的長度\n"
+
+#: readelf.c:5447
+msgid "dynamic string table"
+msgstr "動態字串表"
+
+#: readelf.c:5482
+msgid "symbol information"
+msgstr "符號資訊"
+
+#: readelf.c:5507
+#, c-format
+msgid ""
+"\n"
+"Dynamic section at offset 0x%lx contains %u entries:\n"
+msgstr ""
+"\n"
+"ä½æ–¼åç§»é‡ 0x%lx 處的動態å€æ®µå«æœ‰ %u 個æ¢ç›®ï¼š\n"
+
+#: readelf.c:5510
+#, c-format
+msgid " Tag Type Name/Value\n"
+msgstr " 標記 é¡žåž‹ å稱/值\n"
+
+#: readelf.c:5546
+#, c-format
+msgid "Auxiliary library"
+msgstr "附加函å¼åº«"
+
+#: readelf.c:5550
+#, c-format
+msgid "Filter library"
+msgstr "éŽæ¿¾å™¨å‡½å¼åº«"
+
+#: readelf.c:5554
+#, c-format
+msgid "Configuration file"
+msgstr "é…置檔案"
+
+#: readelf.c:5558
+#, c-format
+msgid "Dependency audit library"
+msgstr "ä¾å­˜å¯©æŸ¥å‡½å¼åº«"
+
+#: readelf.c:5562
+#, c-format
+msgid "Audit library"
+msgstr "審查函å¼åº«"
+
+#: readelf.c:5580 readelf.c:5608 readelf.c:5636
+#, c-format
+msgid "Flags:"
+msgstr "旗標:"
+
+#: readelf.c:5583 readelf.c:5611 readelf.c:5638
+#, c-format
+msgid " None\n"
+msgstr " ç„¡\n"
+
+#: readelf.c:5759
+#, c-format
+msgid "Shared library: [%s]"
+msgstr "共享函å¼åº«ï¼š[%s]"
+
+#: readelf.c:5762
+#, c-format
+msgid " program interpreter"
+msgstr " 程å¼è§£è­¯å™¨"
+
+#: readelf.c:5766
+#, c-format
+msgid "Library soname: [%s]"
+msgstr "函å¼åº«æª”å:[%s]"
+
+#: readelf.c:5770
+#, c-format
+msgid "Library rpath: [%s]"
+msgstr "函å¼åº«è·¯å¾‘:[%s]"
+
+#: readelf.c:5774
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr "函å¼åº«åŸ·è¡Œè·¯å¾‘:[%s]"
+
+#: readelf.c:5837
+#, c-format
+msgid "Not needed object: [%s]\n"
+msgstr "ä¸éœ€è¦çš„物件:[%s]\n"
+
+#: readelf.c:5951
+#, c-format
+msgid ""
+"\n"
+"Version definition section '%s' contains %ld entries:\n"
+msgstr ""
+"\n"
+"版本定義å€æ®µã€Œ%sã€å«æœ‰ %ld 個æ¢ç›®ï¼š\n"
+
+#: readelf.c:5954
+#, c-format
+msgid " Addr: 0x"
+msgstr " ä½å€ï¼š0x"
+
+#: readelf.c:5956 readelf.c:6148
+#, c-format
+msgid " Offset: %#08lx Link: %lx (%s)\n"
+msgstr " å移é‡ï¼š%#08lx 連çµï¼š%lx (%s)\n"
+
+#: readelf.c:5961
+msgid "version definition section"
+msgstr "版本定義å€æ®µ"
+
+#: readelf.c:5987
+#, c-format
+msgid " %#06x: Rev: %d Flags: %s"
+msgstr " %#06x: 修訂: %d 旗標: %s"
+
+#: readelf.c:5990
+#, c-format
+msgid " Index: %d Cnt: %d "
+msgstr " 索引: %d 計數: %d "
+
+#: readelf.c:6001
+#, c-format
+msgid "Name: %s\n"
+msgstr "å稱:%s\n"
+
+#: readelf.c:6003
+#, c-format
+msgid "Name index: %ld\n"
+msgstr "å稱索引:%ld\n"
+
+#: readelf.c:6018
+#, c-format
+msgid " %#06x: Parent %d: %s\n"
+msgstr " %#06x: å‰ä¸€ç‰ˆ %d: %s\n"
+
+#: readelf.c:6021
+#, c-format
+msgid " %#06x: Parent %d, name index: %ld\n"
+msgstr " %#06x: å‰ä¸€ç‰ˆ %d, å稱索引: %ld\n"
+
+#: readelf.c:6040
+#, c-format
+msgid ""
+"\n"
+"Version needs section '%s' contains %ld entries:\n"
+msgstr ""
+"\n"
+"版本需è¦å€æ®µã€Œ%sã€å«æœ‰ %ld 個æ¢ç›®ï¼š\n"
+
+#: readelf.c:6043
+#, c-format
+msgid " Addr: 0x"
+msgstr " ä½å€ï¼š0x"
+
+#: readelf.c:6045
+#, c-format
+msgid " Offset: %#08lx Link to section: %ld (%s)\n"
+msgstr " å移é‡ï¼š%#08lx 連接到å€æ®µï¼š%ld (%s)\n"
+
+#: readelf.c:6050
+msgid "version need section"
+msgstr "版本需è¦å€æ®µ"
+
+#: readelf.c:6072
+#, c-format
+msgid " %#06x: Version: %d"
+msgstr " %#06x: 版本: %d"
+
+#: readelf.c:6075
+#, c-format
+msgid " File: %s"
+msgstr " 檔案:%s"
+
+#: readelf.c:6077
+#, c-format
+msgid " File: %lx"
+msgstr " 檔案:%lx"
+
+#: readelf.c:6079
+#, c-format
+msgid " Cnt: %d\n"
+msgstr " 計數:%d\n"
+
+#: readelf.c:6097
+#, c-format
+msgid " %#06x: Name: %s"
+msgstr " %#06x:å稱:%s"
+
+#: readelf.c:6100
+#, c-format
+msgid " %#06x: Name index: %lx"
+msgstr " %#06x:å稱索引:%lx"
+
+#: readelf.c:6103
+#, c-format
+msgid " Flags: %s Version: %d\n"
+msgstr " 旗標:%s 版本:%d\n"
+
+#: readelf.c:6139
+msgid "version string table"
+msgstr "版本字串表"
+
+#: readelf.c:6143
+#, c-format
+msgid ""
+"\n"
+"Version symbols section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"版本符號å€æ®µã€Œ%sã€å«æœ‰ %d 個æ¢ç›®ï¼š\n"
+
+#: readelf.c:6146
+#, c-format
+msgid " Addr: "
+msgstr " ä½å€ï¼š"
+
+#: readelf.c:6156
+msgid "version symbol data"
+msgstr "版本符號資料"
+
+#: readelf.c:6183
+msgid " 0 (*local*) "
+msgstr " 0 (*本地*) "
+
+#: readelf.c:6187
+msgid " 1 (*global*) "
+msgstr " 1 (*全域*) "
+
+#: readelf.c:6223 readelf.c:6677
+msgid "version need"
+msgstr "版本需è¦"
+
+#: readelf.c:6233
+msgid "version need aux (2)"
+msgstr "版本需è¦å¤–部 (2)"
+
+#: readelf.c:6275 readelf.c:6740
+msgid "version def"
+msgstr "版本定義"
+
+#: readelf.c:6294 readelf.c:6755
+msgid "version def aux"
+msgstr "版本定義外部"
+
+#: readelf.c:6325
+#, c-format
+msgid ""
+"\n"
+"No version information found in this file.\n"
+msgstr ""
+"\n"
+"本檔案中沒有å€æ®µè³‡è¨Šã€‚\n"
+
+#: readelf.c:6456
+msgid "Unable to read in dynamic data\n"
+msgstr "無法讀入動態資料\n"
+
+#: readelf.c:6509
+msgid "Unable to seek to start of dynamic information"
+msgstr "無法定ä½åˆ°å‹•æ…‹è³‡è¨Šçš„起點"
+
+#: readelf.c:6515
+msgid "Failed to read in number of buckets\n"
+msgstr "讀入存儲桶數é‡å¤±æ•—\n"
+
+#: readelf.c:6521
+msgid "Failed to read in number of chains\n"
+msgstr "讀入éˆçµæ•¸é‡å¤±æ•—\n"
+
+#: readelf.c:6541
+#, c-format
+msgid ""
+"\n"
+"Symbol table for image:\n"
+msgstr ""
+"\n"
+"映åƒç¬¦è™Ÿè¡¨ï¼š\n"
+
+#: readelf.c:6543
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " 存儲桶號: 值 å¤§å° é¡žåž‹ ç´„æŸ ç‰ˆæœ¬ 索引å稱\n"
+
+#: readelf.c:6545
+#, c-format
+msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
+msgstr " 存儲桶號: 值 å¤§å° é¡žåž‹ ç´„æŸ ç‰ˆæœ¬ 索引å稱\n"
+
+#: readelf.c:6597
+#, c-format
+msgid ""
+"\n"
+"Symbol table '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"符號表「%sã€å«æœ‰ %lu 個æ¢ç›®ï¼š\n"
+
+#: readelf.c:6601
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " 編號: 值 å¤§å° é¡žåž‹ ç´„æŸ ç‰ˆæœ¬ 索引å稱\n"
+
+#: readelf.c:6603
+#, c-format
+msgid " Num: Value Size Type Bind Vis Ndx Name\n"
+msgstr " 編號: 值 å¤§å° é¡žåž‹ ç´„æŸ ç‰ˆæœ¬ 索引å稱\n"
+
+#: readelf.c:6649
+msgid "version data"
+msgstr "版本資料"
+
+#: readelf.c:6690
+msgid "version need aux (3)"
+msgstr "版本需è¦å¤–部 (3)"
+
+#: readelf.c:6715
+msgid "bad dynamic symbol"
+msgstr "ä¸è‰¯çš„動態符號"
+
+#: readelf.c:6778
+#, c-format
+msgid ""
+"\n"
+"Dynamic symbol information is not available for displaying symbols.\n"
+msgstr ""
+"\n"
+"無法å–得顯示符號所需之動態符號資訊。\n"
+
+#: readelf.c:6790
+#, c-format
+msgid ""
+"\n"
+"Histogram for bucket list length (total of %lu buckets):\n"
+msgstr ""
+"\n"
+"存儲桶列表長度的長æ¢åœ– (總計 %lu 存儲桶):\n"
+
+#: readelf.c:6792
+#, c-format
+msgid " Length Number %% of total Coverage\n"
+msgstr " 長度 編號 總計之%% 覆蓋度\n"
+
+#: readelf.c:6797 readelf.c:6813 readelf.c:10967 readelf.c:11159
+msgid "Out of memory"
+msgstr "記憶體ä¸è¶³"
+
+#: readelf.c:6862
+#, c-format
+msgid ""
+"\n"
+"Dynamic info segment at offset 0x%lx contains %d entries:\n"
+msgstr ""
+"\n"
+"ä½æ–¼åç§»é‡ 0x%lx 的動態資訊節å€å«æœ‰ %d 個æ¢ç›®ï¼š\n"
+
+#: readelf.c:6865
+#, c-format
+msgid " Num: Name BoundTo Flags\n"
+msgstr "編號: å稱 ç›¸ç´„æŸ æ——æ¨™\n"
+
+#: readelf.c:6917
+#, c-format
+msgid ""
+"\n"
+"Assembly dump of section %s\n"
+msgstr ""
+"\n"
+"「%sã€å€æ®µçš„組åˆèªžè¨€å‚¾å°ï¼š\n"
+
+#: readelf.c:6938
+#, c-format
+msgid ""
+"\n"
+"Section '%s' has no data to dump.\n"
+msgstr ""
+"\n"
+"「%sã€å€æ®µæ²’有å¯å‚¾å°çš„資料。\n"
+
+#: readelf.c:6943
+#, c-format
+msgid ""
+"\n"
+"Hex dump of section '%s':\n"
+msgstr ""
+"\n"
+"「%sã€å€æ®µçš„å六進ä½å‚¾å°ï¼š\n"
+
+#: readelf.c:7090
+msgid "badly formed extended line op encountered!\n"
+msgstr "é‡åˆ°ä¸æ­£å¸¸çš„擴充型列æ“作碼ï¼\n"
+
+#: readelf.c:7097
+#, c-format
+msgid " Extended opcode %d: "
+msgstr " æ“´å……æ“作碼 %d: "
+
+#: readelf.c:7102
+#, c-format
+msgid ""
+"End of Sequence\n"
+"\n"
+msgstr ""
+"åºåˆ—çµå°¾\n"
+"\n"
+
+#: readelf.c:7108
+#, 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 "%1$s: 在å€æ®µ .rela%3$s 中跳éŽæ„外的é‡å®šä½ç¬¦è™Ÿé¡žåž‹ %2$s\n"
+
+#: readelf.c:7321
+#, c-format
+msgid "skipping unexpected symbol type %s in relocation in section .rela.%s\n"
+msgstr "在å€æ®µ .rela.%2$s 中跳éŽæ„外的é‡å®šä½ç¬¦è™Ÿé¡žåž‹ %1$s\n"
+
+#: readelf.c:7565
+#, c-format
+msgid "Unknown TAG value: %lx"
+msgstr "未知的 TAG 值:%lx"
+
+#: readelf.c:7601
+#, 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 "當 sizeof (unsigned long) != 8 時,ä¸æ”¯æ´ DW_FORM_data8\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 å€æ®µä¸­æ²’有編譯單元?"
+
+#: 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"
+msgstr ""
+"%s å€æ®µå«æœ‰ï¼š\n"
+"\n"
+
+#: readelf.c:8693
+#, c-format
+msgid " Compilation Unit @ %lx:\n"
+msgstr " 編譯單元 @ %lx:\n"
+
+#: readelf.c:8694
+#, c-format
+msgid " Length: %ld\n"
+msgstr " 長度: %ld\n"
+
+#: readelf.c:8695
+#, c-format
+msgid " Version: %d\n"
+msgstr " 版本: %d\n"
+
+#: readelf.c:8696
+#, c-format
+msgid " Abbrev Offset: %ld\n"
+msgstr " 縮寫å移é‡ï¼š %ld\n"
+
+#: readelf.c:8697
+#, c-format
+msgid " Pointer Size: %d\n"
+msgstr " 指標大å°ï¼š %d\n"
+
+#: readelf.c:8702
+msgid "Only version 2 and 3 DWARF debug information is currently supported.\n"
+msgstr "ç›®å‰åªæ”¯æ´ç¬¬äºŒèˆ‡ç¬¬ä¸‰ç‰ˆ DWARF 除錯資訊。\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
+#, c-format
+msgid "Unable to locate entry %lu in the abbreviation table\n"
+msgstr "無法在縮寫表中找到æ¢ç›® %lu çš„ä½ç½®\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 具有比 .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 ""
+"從å‰ä¸€å€‹ .debug_info 中的編譯單元,å‡å®šæŒ‡æ¨™å¤§å°ç‚º %d\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 列資訊。\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 " 增加 PC 由 %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 " 增加 PC 常數 %d 到 0x%lx\n"
+
+#: readelf.c:9146
+#, c-format
+msgid " Advance PC by fixed size amount %d to 0x%lx\n"
+msgstr " 增加 PC 固定大å°çš„é‡ %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 "ç›®å‰åªæ”¯æ´ç¬¬äºŒèˆ‡ç¬¬ä¸‰ç‰ˆ DWARF çš„ pubname\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 " 數字標記\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_info å€æ®µä¸­çš„定ä½åˆ—表起始自 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 "ç›®å‰åªæ”¯æ´ç¬¬äºŒèˆ‡ç¬¬ä¸‰ç‰ˆ DWARF çš„ arange。\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_ranges å€æ®µä¸­çš„範åœåˆ—表起始自 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
+msgid "liblist"
+msgstr "函å¼åº«æ¸…å–®"
+
+#: readelf.c:10961
+msgid "options"
+msgstr "é¸é …"
+
+#: readelf.c:10991
+#, c-format
+msgid ""
+"\n"
+"Section '%s' contains %d entries:\n"
+msgstr ""
+"\n"
+"「%sã€å€æ®µå«æœ‰ %d 個æ¢ç›®ï¼š\n"
+
+#: readelf.c:11152
+msgid "conflict list found without a dynamic symbol table"
+msgstr "ä¸å…·å‹•æ…‹ç¬¦è™Ÿè¡¨å»ç™¼ç¾è¡çªçš„表列"
+
+#: readelf.c:11168 readelf.c:11182
+msgid "conflict"
+msgstr "è¡çª"
+
+#: readelf.c:11192
+#, c-format
+msgid ""
+"\n"
+"Section '.conflict' contains %lu entries:\n"
+msgstr ""
+"\n"
+"「.conflictã€å€æ®µå«æœ‰ %lu 個æ¢ç›®ï¼š\n"
+
+#: readelf.c:11194
+msgid " Num: Index Value Name"
+msgstr " 編號: 索引 值 å稱"
+
+#: readelf.c:11243
+msgid "liblist string table"
+msgstr "函å¼åº«å­—串表"
+
+#: readelf.c:11252
+#, c-format
+msgid ""
+"\n"
+"Library list section '%s' contains %lu entries:\n"
+msgstr ""
+"\n"
+"「%sã€å‡½å¼åº«åˆ—表å€æ®µå«æœ‰ %lu 個æ¢ç›®ï¼š\n"
+
+#: readelf.c:11303
+msgid "NT_AUXV (auxiliary vector)"
+msgstr "NT_AUXV (auxiliary å‘é‡)"
+
+#: readelf.c:11305
+msgid "NT_PRSTATUS (prstatus structure)"
+msgstr "NT_PRSTATUS (prstatus çµæ§‹)"
+
+#: readelf.c:11307
+msgid "NT_FPREGSET (floating point registers)"
+msgstr "NT_FPREGSET (浮點暫存器)"
+
+#: readelf.c:11309
+msgid "NT_PRPSINFO (prpsinfo structure)"
+msgstr "NT_PRPSINFO (prpsinfo çµæ§‹)"
+
+#: readelf.c:11311
+msgid "NT_TASKSTRUCT (task structure)"
+msgstr "NT_TASKSTRUCT (任務çµæ§‹)"
+
+#: readelf.c:11313
+msgid "NT_PRXFPREG (user_xfpregs structure)"
+msgstr "NT_PRXFPREG (user_xfpregs çµæ§‹)"
+
+#: readelf.c:11315
+msgid "NT_PSTATUS (pstatus structure)"
+msgstr "NT_PSTATUS (pstatus çµæ§‹)"
+
+#: readelf.c:11317
+msgid "NT_FPREGS (floating point registers)"
+msgstr "NT_FPREGS (浮點暫存器)"
+
+#: readelf.c:11319
+msgid "NT_PSINFO (psinfo structure)"
+msgstr "NT_PSINFO (psinfo çµæ§‹)"
+
+#: readelf.c:11321
+msgid "NT_LWPSTATUS (lwpstatus_t structure)"
+msgstr "NT_LWPSTATUS (lwpstatus_t çµæ§‹)"
+
+#: readelf.c:11323
+msgid "NT_LWPSINFO (lwpsinfo_t structure)"
+msgstr "NT_LWPSINFO (lwpsinfo_t çµæ§‹)"
+
+#: readelf.c:11325
+msgid "NT_WIN32PSTATUS (win32_pstatus structure)"
+msgstr "NT_WIN32PSTATUS (win32_pstatus çµæ§‹)"
+
+#: readelf.c:11333
+msgid "NT_VERSION (version)"
+msgstr "NT_VERSION (版本)"
+
+#: readelf.c:11335
+msgid "NT_ARCH (architecture)"
+msgstr "NT_ARCH (系統架構)"
+
+#: readelf.c:11340 readelf.c:11362
+#, c-format
+msgid "Unknown note type: (0x%08x)"
+msgstr "未知的備註類型:(0x%08x)"
+
+#. NetBSD core "procinfo" structure.
+#: readelf.c:11352
+msgid "NetBSD procinfo structure"
+msgstr "NetBSD procinfo çµæ§‹"
+
+#: readelf.c:11379 readelf.c:11393
+msgid "PT_GETREGS (reg structure)"
+msgstr "PT_GETREGS (reg çµæ§‹)"
+
+#: readelf.c:11381 readelf.c:11395
+msgid "PT_GETFPREGS (fpreg structure)"
+msgstr "PT_GETFPREGS (fpreg çµæ§‹)"
+
+#: readelf.c:11401
+#, c-format
+msgid "PT_FIRSTMACH+%d"
+msgstr "PT_FIRSTMACH+%d"
+
+#: readelf.c:11447
+msgid "notes"
+msgstr "備註"
+
+#: readelf.c:11453
+#, c-format
+msgid ""
+"\n"
+"Notes at offset 0x%08lx with length 0x%08lx:\n"
+msgstr ""
+"\n"
+"備註ä½æ–¼åç§»é‡ 0x%08lx 長度為 0x%08lx:\n"
+
+#: readelf.c:11455
+#, c-format
+msgid " Owner\t\tData size\tDescription\n"
+msgstr " 所有者\t\t資料大å°\tæè¿°\n"
+
+#: readelf.c:11474
+#, c-format
+msgid "corrupt note found at offset %x into core notes\n"
+msgstr "核心備註中ä½æ–¼åç§»é‡ %x 處發ç¾æ毀的備註\n"
+
+#: readelf.c:11476
+#, c-format
+msgid " type: %x, namesize: %08lx, descsize: %08lx\n"
+msgstr " 類型:%x,å稱大å°ï¼š%08lx,æ述大å°ï¼š%08lx\n"
+
+#: readelf.c:11574
+#, c-format
+msgid "No note segments present in the core file.\n"
+msgstr "核心檔案中沒有備註節å€ã€‚\n"
+
+#: readelf.c:11653
+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"
+msgstr ""
+"本 readelf 實例於編譯時未加入 64 ä½å…ƒè³‡æ–™é¡žåž‹æ”¯æ´ï¼Œ\n"
+"因而無法讀入 64 ä½å…ƒ ELF 檔案。\n"
+
+#: readelf.c:11700 readelf.c:12059
+#, c-format
+msgid "%s: Failed to read file header\n"
+msgstr "%s:讀入檔案頭標失敗\n"
+
+#: readelf.c:11713
+#, c-format
+msgid ""
+"\n"
+"File: %s\n"
+msgstr ""
+"\n"
+"檔案:%s\n"
+
+#: readelf.c:11876 readelf.c:11897 readelf.c:11934 readelf.c:12014
+#, c-format
+msgid "%s: failed to read archive header\n"
+msgstr "%s:讀入ä¿å­˜æª”標頭失敗\n"
+
+#: readelf.c:11887
+#, c-format
+msgid "%s: failed to skip archive symbol table\n"
+msgstr "%s:跳éŽä¿å­˜æª”符號表失敗\n"
+
+#: readelf.c:11919
+#, c-format
+msgid "%s: failed to read string table\n"
+msgstr "%s:讀入字串表失敗\n"
+
+#: readelf.c:11955
+#, c-format
+msgid "%s: invalid archive string table offset %lu\n"
+msgstr "%s:無效的ä¿å­˜æª”字串表åç§»é‡ %lu\n"
+
+#: readelf.c:11971
+#, c-format
+msgid "%s: bad archive file name\n"
+msgstr "%s:ä¸è‰¯çš„ä¿å­˜æª”案å稱\n"
+
+#: readelf.c:12003
+#, c-format
+msgid "%s: failed to seek to next archive header\n"
+msgstr "%s:æœç´¢è‡³ä¸‹ä¸€å€‹ä¿å­˜æª”標頭失敗\n"
+
+#: readelf.c:12037
+#, c-format
+msgid "'%s': No such file\n"
+msgstr "「%sã€ï¼šæ‰¾ä¸åˆ°æ­¤æª”案\n"
+
+#: readelf.c:12039
+#, c-format
+msgid "Could not locate '%s'. System error message: %s\n"
+msgstr "無法找到「%sã€çš„ä½ç½®ã€‚錯誤訊æ¯ç‚ºï¼š%s\n"
+
+#: readelf.c:12046
+#, c-format
+msgid "'%s' is not an ordinary file\n"
+msgstr "「%sã€ä¸æ˜¯ä¸€èˆ¬çš„檔案\n"
+
+#: readelf.c:12053
+#, c-format
+msgid "Input file '%s' is not readable.\n"
+msgstr "輸入檔案「%sã€ä¸¦ä¸å¯è®€ã€‚\n"
+
+#: rename.c:127
+#, c-format
+msgid "%s: cannot set time: %s"
+msgstr "%s:無法設置時間:%s"
+
+#. We have to clean up here.
+#: rename.c:162 rename.c:200
+#, c-format
+msgid "unable to rename '%s' reason: %s"
+msgstr "無法更改「%sã€çš„å稱,原因:%s"
+
+#: rename.c:208
+#, c-format
+msgid "unable to copy file '%s' reason: %s"
+msgstr "無法複製檔案「%sã€ï¼ŒåŽŸå› ï¼š%s"
+
+#: resbin.c:132
+#, c-format
+msgid "%s: not enough binary data"
+msgstr "%s:ä¸è¶³çš„二進ä½è³‡æ–™"
+
+#: resbin.c:148
+msgid "null terminated unicode string"
+msgstr "以 null çµæŸçš„ unicode 字串"
+
+#: resbin.c:175 resbin.c:181
+msgid "resource ID"
+msgstr "è³‡æº ID"
+
+#: resbin.c:221
+msgid "cursor"
+msgstr "游標"
+
+#: resbin.c:253 resbin.c:260
+msgid "menu header"
+msgstr "é¸å–®æ¨™é ­"
+
+#: resbin.c:270
+msgid "menuex header"
+msgstr "擴展é¸å–®æ¨™é ­"
+
+#: resbin.c:274
+msgid "menuex offset"
+msgstr "擴展é¸å–®å移é‡"
+
+#: resbin.c:281
+#, c-format
+msgid "unsupported menu version %d"
+msgstr "ä¸æ”¯æ´çš„é¸å–®ç‰ˆæœ¬ %d"
+
+#: resbin.c:306 resbin.c:321 resbin.c:384
+msgid "menuitem header"
+msgstr "é¸å–®ç´°é …標頭"
+
+#: resbin.c:414
+msgid "menuitem"
+msgstr "é¸å–®ç´°é …"
+
+#: resbin.c:453 resbin.c:481
+msgid "dialog header"
+msgstr "å°è©±æ¡†æ¨™é ­"
+
+#: resbin.c:471
+#, c-format
+msgid "unexpected DIALOGEX version %d"
+msgstr "æ„外的 DIALOGEX 版本 %d"
+
+#: resbin.c:516
+msgid "dialog font point size"
+msgstr "å°è©±æ¡†å­—型點數大å°"
+
+#: resbin.c:524
+msgid "dialogex font information"
+msgstr "å°è©±æ¡†æ“´å±•å­—型資訊"
+
+#: resbin.c:550 resbin.c:568
+msgid "dialog control"
+msgstr "å°è©±æ¡†æŽ§åˆ¶"
+
+#: resbin.c:560
+msgid "dialogex control"
+msgstr "å°è©±æ¡†æ“´å±•æŽ§åˆ¶"
+
+#: resbin.c:589
+msgid "dialog control end"
+msgstr "å°è©±æ¡†æŽ§åˆ¶çµæŸ"
+
+#: resbin.c:601
+msgid "dialog control data"
+msgstr "å°è©±æ¡†æŽ§åˆ¶è³‡æ–™"
+
+#: resbin.c:642
+msgid "stringtable string length"
+msgstr "字串表字串長度"
+
+#: resbin.c:652
+msgid "stringtable string"
+msgstr "字串表字串"
+
+#: resbin.c:683
+msgid "fontdir header"
+msgstr "字型目錄標頭"
+
+#: resbin.c:696
+msgid "fontdir"
+msgstr "字型目錄"
+
+#: resbin.c:712
+msgid "fontdir device name"
+msgstr "字型目錄設備å稱"
+
+#: resbin.c:718
+msgid "fontdir face name"
+msgstr "字型目錄字é¢å稱"
+
+#: resbin.c:759
+msgid "accelerator"
+msgstr "加速éµ"
+
+#: resbin.c:819
+msgid "group cursor header"
+msgstr "群組游標標頭"
+
+#: resbin.c:823
+#, c-format
+msgid "unexpected group cursor type %d"
+msgstr "æ„外的群組游標類型 %d"
+
+#: resbin.c:838
+msgid "group cursor"
+msgstr "群組游標"
+
+#: resbin.c:875
+msgid "group icon header"
+msgstr "群組圖示標頭"
+
+#: resbin.c:879
+#, c-format
+msgid "unexpected group icon type %d"
+msgstr "æ„外的群組圖示類型 %d"
+
+#: resbin.c:894
+msgid "group icon"
+msgstr "群組圖示"
+
+#: resbin.c:957 resbin.c:1174
+msgid "unexpected version string"
+msgstr "æ„外的版本字串"
+
+#: resbin.c:989
+#, c-format
+msgid "version length %d does not match resource length %lu"
+msgstr "版本長度 %d ä¸ç¬¦åˆè³‡æºé•·åº¦ %lu"
+
+#: resbin.c:993
+#, c-format
+msgid "unexpected version type %d"
+msgstr "æ„外的版本類型 %d"
+
+#: resbin.c:1005
+#, c-format
+msgid "unexpected fixed version information length %d"
+msgstr "æ„外的固定版本資訊長度 %d"
+
+#: resbin.c:1008
+msgid "fixed version info"
+msgstr "固定版本資訊"
+
+#: resbin.c:1012
+#, c-format
+msgid "unexpected fixed version signature %lu"
+msgstr "æ„外的固定版本簽å %lu"
+
+#: resbin.c:1016
+#, c-format
+msgid "unexpected fixed version info version %lu"
+msgstr "æ„外的固定版本資訊版本 %lu"
+
+#: resbin.c:1045
+msgid "version var info"
+msgstr "版本變動資訊"
+
+#: resbin.c:1062
+#, c-format
+msgid "unexpected stringfileinfo value length %d"
+msgstr "æ„外的字串檔資訊值長度 %d"
+
+#: resbin.c:1072
+#, c-format
+msgid "unexpected version stringtable value length %d"
+msgstr "æ„外的版本字串表格值長度 %d"
+
+#: resbin.c:1106
+#, c-format
+msgid "unexpected version string length %d != %d + %d"
+msgstr "æ„外的版本字串長度 %d != %d + %d"
+
+#: resbin.c:1117
+#, c-format
+msgid "unexpected version string length %d < %d"
+msgstr "æ„外的版本字串長度 %d < %d"
+
+#: resbin.c:1134
+#, c-format
+msgid "unexpected varfileinfo value length %d"
+msgstr "æ„外的變動檔資訊值長度 %d"
+
+#: resbin.c:1153
+msgid "version varfileinfo"
+msgstr "版本變動檔資訊"
+
+#: resbin.c:1168
+#, c-format
+msgid "unexpected version value length %d"
+msgstr "æ„外的版本值長度 %d"
+
+#: rescoff.c:126
+msgid "filename required for COFF input"
+msgstr "COFF 輸入需è¦æª”å"
+
+#: rescoff.c:143
+#, c-format
+msgid "%s: no resource section"
+msgstr "%s:沒有資æºå€æ®µ"
+
+#: rescoff.c:150
+msgid "can't read resource section"
+msgstr "無法讀入資æºå€æ®µ"
+
+#: rescoff.c:174
+#, c-format
+msgid "%s: %s: address out of bounds"
+msgstr "%s:%s:ä½å€è¶…出界é™"
+
+#: rescoff.c:190
+msgid "directory"
+msgstr "目錄"
+
+#: rescoff.c:218
+msgid "named directory entry"
+msgstr "已命å的目錄æ¢ç›®"
+
+#: rescoff.c:227
+msgid "directory entry name"
+msgstr "目錄æ¢ç›®å稱"
+
+#: rescoff.c:247
+msgid "named subdirectory"
+msgstr "已命åçš„å­ç›®éŒ„"
+
+#: rescoff.c:255
+msgid "named resource"
+msgstr "已命å的資æº"
+
+#: rescoff.c:270
+msgid "ID directory entry"
+msgstr "ID 目錄項目"
+
+#: rescoff.c:287
+msgid "ID subdirectory"
+msgstr "ID å­ç›®éŒ„"
+
+#: rescoff.c:295
+msgid "ID resource"
+msgstr "ID 資æº"
+
+#: rescoff.c:318
+msgid "resource type unknown"
+msgstr "資æºé¡žåž‹æœªçŸ¥"
+
+#: rescoff.c:321
+msgid "data entry"
+msgstr "資料æ¢ç›®"
+
+#: rescoff.c:329
+msgid "resource data"
+msgstr "資æºè³‡æ–™"
+
+#: rescoff.c:334
+msgid "resource data size"
+msgstr "資æºè³‡æ–™å¤§å°"
+
+#: rescoff.c:427
+msgid "filename required for COFF output"
+msgstr "COFF 輸出需è¦æª”å"
+
+#: rescoff.c:719
+msgid "can't get BFD_RELOC_RVA relocation type"
+msgstr "無法得到 BFD_RELOC_RVA é‡å®šå‘é¡žåž‹"
+
+#: resrc.c:238 resrc.c:309
+#, c-format
+msgid "can't open temporary file `%s': %s"
+msgstr "無法開啟臨時檔案「%sã€ï¼š%s"
+
+#: resrc.c:244
+#, c-format
+msgid "can't redirect stdout: `%s': %s"
+msgstr "無法é‡å®šå‘標準輸出:「%sã€ï¼š%s"
+
+#: resrc.c:260
+#, c-format
+msgid "%s %s: %s"
+msgstr "%s %s:%s"
+
+#: resrc.c:305
+#, c-format
+msgid "can't execute `%s': %s"
+msgstr "無法執行「%sã€ï¼š%s"
+
+#: resrc.c:314
+#, c-format
+msgid "Using temporary file `%s' to read preprocessor output\n"
+msgstr "使用臨時檔案「%sã€ä»¥è®€å…¥å‰ç½®è™•ç†å™¨è¼¸å‡º\n"
+
+#: resrc.c:321
+#, c-format
+msgid "can't popen `%s': %s"
+msgstr "無法 popen「%sã€ï¼š%s"
+
+#: resrc.c:323
+#, c-format
+msgid "Using popen to read preprocessor output\n"
+msgstr "使用 popen 讀入å‰ç½®è™•ç†å™¨è¼¸å‡º\n"
+
+#: resrc.c:362
+#, c-format
+msgid "Tried `%s'\n"
+msgstr "已嘗試「%sã€\n"
+
+#: resrc.c:373
+#, c-format
+msgid "Using `%s'\n"
+msgstr "正使用「%sã€\n"
+
+#: resrc.c:529
+#, c-format
+msgid "%s:%d: %s\n"
+msgstr "%s:%d:%s\n"
+
+#: resrc.c:537
+#, c-format
+msgid "%s: unexpected EOF"
+msgstr "%s:檔案æ„外çµå°¾"
+
+#: resrc.c:586
+#, c-format
+msgid "%s: read of %lu returned %lu"
+msgstr "%sï¼šè®€å– %lu 返回 %lu"
+
+#: resrc.c:624 resrc.c:1134
+#, c-format
+msgid "stat failed on bitmap file `%s': %s"
+msgstr "å°ä½å…ƒåœ–檔案「%sã€é€²è¡Œ stat æ“作失敗:%s"
+
+#: resrc.c:675
+#, c-format
+msgid "cursor file `%s' does not contain cursor data"
+msgstr "游標檔案「%sã€ä¸å«æœ‰æ¸¸æ¨™è³‡æ–™"
+
+#: resrc.c:707 resrc.c:1003
+#, c-format
+msgid "%s: fseek to %lu failed: %s"
+msgstr "%s: fseek 到 %lu æ“作失敗: %s"
+
+#: resrc.c:831
+msgid "help ID requires DIALOGEX"
+msgstr "輔助 ID è¦æ±‚ DIALOGEX"
+
+#: resrc.c:833
+msgid "control data requires DIALOGEX"
+msgstr "控制資料è¦æ±‚ DIALOGEX"
+
+#: resrc.c:861
+#, c-format
+msgid "stat failed on font file `%s': %s"
+msgstr "å°å­—型檔案「%sã€é€²è¡Œ stat æ“作失敗:%s"
+
+#: resrc.c:972
+#, c-format
+msgid "icon file `%s' does not contain icon data"
+msgstr "圖示檔案「%sã€ä¸å«æœ‰åœ–示資料"
+
+#: resrc.c:1273 resrc.c:1308
+#, c-format
+msgid "stat failed on file `%s': %s"
+msgstr "å°æª”案「%sã€é€²è¡Œ stat æ“作失敗:%s"
+
+#: resrc.c:1494
+#, c-format
+msgid "can't open `%s' for output: %s"
+msgstr "無法為輸出而開啟「%sã€ï¼š%s"
+
+#: size.c:81
+#, c-format
+msgid " Displays the sizes of sections inside binary files\n"
+msgstr " 顯示二進ä½æª”案中å€æ®µçš„大å°\n"
+
+#: size.c:82
+#, c-format
+msgid " If no input file(s) are specified, a.out is assumed\n"
+msgstr " 如果沒有指定輸入檔案,é è¨­ç‚º a.out\n"
+
+#: size.c:83
+#, c-format
+msgid ""
+" The options are:\n"
+" -A|-B --format={sysv|berkeley} Select output style (default is %s)\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Display the program's version\n"
+"\n"
+msgstr ""
+" é¸é …為:\n"
+" -A|-B --format={sysv|berkeley} é¸æ“‡è¼¸å‡ºé¢¨æ ¼ (é è¨­ç‚º %s)\n"
+" -o|-d|-x --radix={8|10|16} 以八進ä½ã€å進ä½æˆ–å六進ä½é¡¯ç¤ºæ•¸å€¼\n"
+" -t --totals é¡¯ç¤ºç¸½è¨ˆå¤§å° (åªç”¨æ–¼ Berkeley 風格)\n"
+" --target=<bfdname> 設定二進ä½æª”案格å¼\n"
+" -h --help 顯示本資訊\n"
+" -v --version 顯示程å¼çš„版本號碼\n"
+"\n"
+
+#: size.c:153
+#, c-format
+msgid "invalid argument to --format: %s"
+msgstr "--format 的無效引數:%s"
+
+#: size.c:180
+#, c-format
+msgid "Invalid radix: %s\n"
+msgstr "無效的 radix: %s\n"
+
+#: srconv.c:1722
+#, c-format
+msgid "Convert a COFF object file into a SYSROFF object file\n"
+msgstr "å°‡ COFF 目標檔案轉æ›ç‚º SYSROFF 目標檔案\n"
+
+#: srconv.c:1723
+#, c-format
+msgid ""
+" The options are:\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" é¸é …為:\n"
+" -q --quick (éŽæœŸ - 忽略)\n"
+" -n --noprescan ä¸åŸ·è¡ŒæŽƒçž„以將 commons 轉æ›ç‚º defs\n"
+" -d --debug 顯示關於已完æˆäº‹ä»¶çš„資訊\n"
+" -h --help 顯示本資訊\n"
+" -v --version 列å°ç¨‹å¼çš„版本號碼\n"
+
+#: srconv.c:1866
+#, c-format
+msgid "unable to open output file %s"
+msgstr "無法打開輸出檔案 %s"
+
+#: stabs.c:330 stabs.c:1708
+msgid "numeric overflow"
+msgstr "數值溢出"
+
+#: stabs.c:340
+#, c-format
+msgid "Bad stab: %s\n"
+msgstr "ä¸è‰¯ stab: %s\n"
+
+#: stabs.c:348
+#, c-format
+msgid "Warning: %s: %s\n"
+msgstr "警告:%s:%s\n"
+
+#: stabs.c:458
+#, c-format
+msgid "N_LBRAC not within function\n"
+msgstr "N_LBRAC ä¸åœ¨å‡½æ•¸ä¸­\n"
+
+#: stabs.c:497
+#, c-format
+msgid "Too many N_RBRACs\n"
+msgstr "éŽå¤šçš„ N_RBRAC\n"
+
+#: stabs.c:738
+msgid "unknown C++ encoded name"
+msgstr "未知的 C++ 編碼å稱"
+
+#. Complain and keep going, so compilers can invent new
+#. cross-reference types.
+#: stabs.c:1253
+msgid "unrecognized cross reference type"
+msgstr "無法識別的交å‰åƒè€ƒé¡žåž‹"
+
+#. Does this actually ever happen? Is that why we are worrying
+#. about dealing with it rather than just calling error_type?
+#: stabs.c:1800
+msgid "missing index type"
+msgstr "éºæ¼çš„索引類型"
+
+#: stabs.c:2114
+msgid "unknown virtual character for baseclass"
+msgstr "ä¸æ˜Žä¹‹åšç‚ºåŸºæœ¬é¡žåˆ¥çš„虚擬字元"
+
+#: stabs.c:2132
+msgid "unknown visibility character for baseclass"
+msgstr "ä¸æ˜Žä¹‹åšç‚ºåŸºæœ¬é¡žåˆ¥çš„å¯è¦‹å­—å…ƒ"
+
+#: stabs.c:2318
+msgid "unnamed $vb type"
+msgstr "未命åçš„ $vb é¡žåž‹"
+
+#: stabs.c:2324
+msgid "unrecognized C++ abbreviation"
+msgstr "無法識別的 C++ 縮寫"
+
+#: stabs.c:2400
+msgid "unknown visibility character for field"
+msgstr "欄ä½ä¸­æœªçŸ¥çš„å¯è¦‹å­—å…ƒ"
+
+#: stabs.c:2652
+msgid "const/volatile indicator missing"
+msgstr "éºæ¼ const/volatile 指示符號"
+
+#: stabs.c:2888
+#, c-format
+msgid "No mangling for \"%s\"\n"
+msgstr "\"%s\" 沒有æ壞\n"
+
+#: stabs.c:3188
+msgid "Undefined N_EXCL"
+msgstr "未定義 N_EXCL"
+
+#: stabs.c:3268
+#, c-format
+msgid "Type file number %d out of range\n"
+msgstr "類型檔案編號 %d 超出範åœ\n"
+
+#: stabs.c:3273
+#, c-format
+msgid "Type index number %d out of range\n"
+msgstr "類型索引編號 %d 超出範åœ\n"
+
+#: stabs.c:3352
+#, c-format
+msgid "Unrecognized XCOFF type %d\n"
+msgstr "無法識別的 XCOFF 類型 %d\n"
+
+#: stabs.c:3644
+#, c-format
+msgid "bad mangled name `%s'\n"
+msgstr "ä¸è‰¯çš„æ毀å稱「%sã€\n"
+
+#: stabs.c:3739
+#, c-format
+msgid "no argument types in mangled string\n"
+msgstr "å·²æ毀字串中沒有引數類型\n"
+
+#: stabs.c:5093
+#, c-format
+msgid "Demangled name is not a function\n"
+msgstr "æ毀後修復的å稱ä¸æ˜¯å‡½æ•¸\n"
+
+#: stabs.c:5135
+#, c-format
+msgid "Unexpected type in v3 arglist demangling\n"
+msgstr "在 v3 引數表修復æ毀時有æ„外的類型\n"
+
+#: stabs.c:5202
+#, c-format
+msgid "Unrecognized demangle component %d\n"
+msgstr "無法識別的ææ¯€ä¿®å¾©çµ„æˆ %d\n"
+
+#: stabs.c:5254
+#, c-format
+msgid "Failed to print demangled template\n"
+msgstr "å°å‡ºæ毀修復之模版失敗\n"
+
+#: stabs.c:5334
+#, c-format
+msgid "Couldn't get demangled builtin type\n"
+msgstr "無法å–å¾—æ毀修復之內建類型\n"
+
+#: stabs.c:5383
+#, c-format
+msgid "Unexpected demangled varargs\n"
+msgstr "æ„外的æ毀修復變數\n"
+
+#: stabs.c:5390
+#, c-format
+msgid "Unrecognized demangled builtin type\n"
+msgstr "無法識別的æ毀修復之內建類型\n"
+
+#: strings.c:206
+#, c-format
+msgid "invalid number %s"
+msgstr "無效的編號 %s"
+
+#: strings.c:643
+#, c-format
+msgid "invalid integer argument %s"
+msgstr "無效的整數引數 %s"
+
+#: strings.c:652
+#, c-format
+msgid " Display printable strings in [file(s)] (stdin by default)\n"
+msgstr " 顯示 [檔案] (é è¨­ç‚ºæ¨™æº–輸入) 中å¯åˆ—å°çš„字串\n"
+
+#: strings.c:653
+#, c-format
+msgid ""
+" The options are:\n"
+" -a - --all Scan the entire file, not just the data section\n"
+" -f --print-file-name Print the name of the file before each string\n"
+" -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n"
+" -<number> least [number] characters (default 4).\n"
+" -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n"
+" -o An alias for --radix=o\n"
+" -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"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" é¸é …為:\n"
+" -a - --all 掃瞄整個檔案,而éžåªæœ‰è³‡æ–™å€æ®µ\n"
+" -f --print-file-name 在æ¯å€‹å­—串之å‰å°å‡ºæª”案的å稱\n"
+" -n --bytes=[number] å®šå€ & å°å‡ºä»»ä½•ä»¥ NUL çµå°¾çš„åºåˆ—æ–¼ number\n"
+" -<number> 至少 [number] 個字元 (é è¨­ 4)\n"
+" -t --radix={o,d,x} 以八進ä½ã€å進ä½æˆ–å六進ä½å°å‡ºå­—串ä½ç½®\n"
+" -o --radix=o 的別å\n"
+" -T --target=<BFDNAME> 指定二進ä½æª”案格å¼\n"
+" -e --encoding={s,S,b,l,B,L} é¸æ“‡å­—元大å°èˆ‡å°¾åºï¼š\n"
+" s=7ä½å…ƒ, S=8ä½å…ƒ, {b,l}=16ä½å…ƒ, {B,L}=32ä½å…ƒ\n"
+" -h --help 顯示本資訊\n"
+" -v --version 顯示程å¼çš„版本號碼\n"
+
+#: sysdump.c:649
+#, c-format
+msgid "Print a human readable interpretation of a SYSROFF object file\n"
+msgstr "å°å‡ºé©æ–¼é–±è®€ä¹‹ SYSROFF 目標檔案的解釋\n"
+
+#: sysdump.c:650
+#, c-format
+msgid ""
+" The options are:\n"
+" -h --help Display this information\n"
+" -v --version Print the program's version number\n"
+msgstr ""
+" é¸é …為:\n"
+" -h --help 顯示本資訊\n"
+" -v --version 列å°ç¨‹å¼çš„版本號碼\n"
+
+#: sysdump.c:715
+#, c-format
+msgid "cannot open input file %s"
+msgstr "無法開啟輸入檔案 %s"
+
+#: version.c:35
+#, c-format
+msgid "Copyright 2005 Free Software Foundation, Inc.\n"
+msgstr "版權所有 2005 自由軟體基金會。\n"
+
+#: version.c:36
+#, c-format
+msgid ""
+"This program is free software; you may redistribute it under the terms of\n"
+"the GNU General Public License. This program has absolutely no warranty.\n"
+msgstr ""
+"本程å¼æ˜¯è‡ªç”±è»Ÿé«”;您å¯ä»¥æŒ‰ç…§ GNU 通用公共許å¯è­‰\n"
+"çš„æ¢æ¬¾å°å…¶é€²è¡Œå†ç™¼ä½ˆã€‚本程å¼å®Œå…¨æ²’有任何擔ä¿ã€‚\n"
+
+#: windres.c:204
+#, c-format
+msgid "can't open %s `%s': %s"
+msgstr "無法開啟 %s「%sã€ï¼š%s"
+
+#: windres.c:370
+#, c-format
+msgid ": expected to be a directory\n"
+msgstr ":應該是目錄\n"
+
+#: windres.c:382
+#, c-format
+msgid ": expected to be a leaf\n"
+msgstr ":應該是分支\n"
+
+#: windres.c:391
+#, c-format
+msgid "%s: warning: "
+msgstr "%s:警告:"
+
+#: windres.c:393
+#, c-format
+msgid ": duplicate value\n"
+msgstr ":é‡è¦†çš„值\n"
+
+#: windres.c:543
+#, c-format
+msgid "unknown format type `%s'"
+msgstr "未知的格å¼é¡žåž‹ã€Œ%sã€"
+
+#: windres.c:544
+#, c-format
+msgid "%s: supported formats:"
+msgstr "%s:支æ´çš„æ ¼å¼ï¼š"
+
+#. Otherwise, we give up.
+#: windres.c:627
+#, c-format
+msgid "can not determine type of file `%s'; use the -J option"
+msgstr "無法確定檔案「%sã€çš„類型;請使用 -J é¸é …"
+
+#: windres.c:639
+#, c-format
+msgid "Usage: %s [option(s)] [input-file] [output-file]\n"
+msgstr "用法:%s [é¸é …] [輸入檔案] [輸出檔案]\n"
+
+#: windres.c:641
+#, c-format
+msgid ""
+" The options are:\n"
+" -i --input=<file> Name input file\n"
+" -o --output=<file> Name output file\n"
+" -J --input-format=<format> Specify input format\n"
+" -O --output-format=<format> Specify output format\n"
+" -F --target=<target> Specify COFF target\n"
+" --preprocessor=<program> Program to use to preprocess rc file\n"
+" -I --include-dir=<dir> Include directory when preprocessing rc file\n"
+" -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n"
+" -U --undefine <sym> Undefine SYM when preprocessing rc file\n"
+" -v --verbose Verbose - tells you what it's doing\n"
+" -l --language=<val> Set language when reading rc file\n"
+" --use-temp-file Use a temporary file instead of popen to read\n"
+" the preprocessor output\n"
+" --no-use-temp-file Use popen (default)\n"
+msgstr ""
+" é¸é …為:\n"
+" -i --input=<file> 指å輸入檔案\n"
+" -o --output=<file> 指å輸出檔案\n"
+" -J --input-format=<format> 指定輸入格å¼\n"
+" -O --output-format=<format> 指定輸出格å¼\n"
+" -F --target=<target> 指定 COFF 目標\n"
+" --preprocessor=<program> 用於å‰ç½®è™•ç† rc 檔案的程å¼\n"
+" -I --include-dir=<dir> å‰ç½®è™•ç† rc 檔案時包å«çš„目錄\n"
+" -D --define <sym>[=<val>] å‰ç½®è™•ç† rc 檔案時定義 SYM\n"
+" -U --undefine <sym> å‰ç½®è™•ç† rc 檔案時解除 SYM\n"
+" -v --verbose 詳細 - 告訴您正在åšä»€éº¼\n"
+" -l --language=<val> è®€å– rc 檔案時設定之語言\n"
+" --use-temp-file ä½¿ç”¨è‡¨æ™‚æª”æ¡ˆè€Œéž popen 來讀å–å‰ç½®è™•ç†å™¨è¼¸å‡º\n"
+" --no-use-temp-file 使用 popen (é è¨­)\n"
+
+#: windres.c:657
+#, c-format
+msgid " --yydebug Turn on parser debugging\n"
+msgstr " --yydebug 打開解æžå™¨é™¤éŒ¯\n"
+
+#: windres.c:660
+#, c-format
+msgid ""
+" -r Ignored for compatibility with rc\n"
+" -h --help Print this help message\n"
+" -V --version Print version information\n"
+msgstr ""
+" é¸é …為:\n"
+" -r 忽略與 rc 的相容性\n"
+" -h --help 列å°æœ¬æ±‚助訊æ¯\n"
+" -V --version 列å°ç‰ˆæœ¬è³‡è¨Š\n"
+
+#: windres.c:664
+#, c-format
+msgid ""
+"FORMAT is one of rc, res, or coff, and is deduced from the file name\n"
+"extension if not specified. A single file name is an input file.\n"
+"No input-file is stdin, default rc. No output-file is stdout, default rc.\n"
+msgstr ""
+"FORMAT 是 rcã€res 或 coff 之一,在未指定時根據檔案的擴展å進行判斷。\n"
+"單一檔å被èªç‚ºæ˜¯è¼¸å…¥æª”案。沒有輸入檔案時就使用標準輸入,é è¨­æ ¼å¼\n"
+"為 rc。沒有輸出檔案時就使用標準輸出,é è¨­æ ¼å¼ç‚º rc。\n"
+
+#: windres.c:800
+msgid "invalid option -f\n"
+msgstr "無效的é¸é …「-fã€\n"
+
+#: windres.c:805
+msgid "No filename following the -fo option.\n"
+msgstr "在é¸é … -fo 之後沒有檔å。\n"
+
+#: windres.c:863
+#, c-format
+msgid "Option -I is deprecated for setting the input format, please use -J instead.\n"
+msgstr "é¸é … -I 用åšè¨­å®šè¼¸å…¥æ ¼å¼å·²éŽæ™‚,請使用 -J 代替。\n"
+
+#: windres.c:981
+msgid "no resources"
+msgstr "沒有資æº"
+
+#: wrstabs.c:354 wrstabs.c:1915
+#, c-format
+msgid "string_hash_lookup failed: %s"
+msgstr "string_hash_lookup 失敗:%s"
+
+#: wrstabs.c:635
+#, c-format
+msgid "stab_int_type: bad size %u"
+msgstr "stab_int_typeï¼šéŒ¯èª¤å¤§å° %u"
+
+#: wrstabs.c:1393
+#, c-format
+msgid "%s: warning: unknown size for field `%s' in struct"
+msgstr "%s:警告:çµæ§‹ä¸­ã€Œ%sã€æ¬„ä½çš„大å°æœªçŸ¥"
diff --git a/binutils-2.24/binutils/prdbg.c b/binutils-2.24/binutils/prdbg.c
new file mode 100644
index 00000000..091cefea
--- /dev/null
+++ b/binutils-2.24/binutils/prdbg.c
@@ -0,0 +1,2838 @@
+/* prdbg.c -- Print out generic debugging information.
+ Copyright 1995, 1996, 1999, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+ 2009, 2011 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor <ian@cygnus.com>.
+ Tags style generation written by Salvador E. Tropea <set@computer.org>.
+
+ 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 3 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 file prints out the generic debugging information, by
+ supplying a set of routines to debug_write. */
+
+#include "sysdep.h"
+#include <assert.h>
+#include "bfd.h"
+#include "libiberty.h"
+#include "demangle.h"
+#include "debug.h"
+#include "budbg.h"
+
+/* This is the structure we use as a handle for these routines. */
+
+struct pr_handle
+{
+ /* File to print information to. */
+ FILE *f;
+ /* Current indentation level. */
+ unsigned int indent;
+ /* Type stack. */
+ struct pr_stack *stack;
+ /* Parameter number we are about to output. */
+ int parameter;
+ /* The following are used only by the tags code (tg_). */
+ /* Name of the file we are using. */
+ char *filename;
+ /* The BFD. */
+ bfd *abfd;
+ /* The symbols table for this BFD. */
+ asymbol **syms;
+ /* Pointer to a function to demangle symbols. */
+ char *(*demangler) (bfd *, const char *, int);
+};
+
+/* The type stack. */
+
+struct pr_stack
+{
+ /* Next element on the stack. */
+ struct pr_stack *next;
+ /* This element. */
+ char *type;
+ /* Current visibility of fields if this is a class. */
+ enum debug_visibility visibility;
+ /* Name of the current method we are handling. */
+ const char *method;
+ /* The following are used only by the tags code (tg_). */
+ /* Type for the container (struct, union, class, union class). */
+ const char *flavor;
+ /* A comma separated list of parent classes. */
+ char *parents;
+ /* How many parents contains parents. */
+ int num_parents;
+};
+
+static void indent (struct pr_handle *);
+static bfd_boolean push_type (struct pr_handle *, const char *);
+static bfd_boolean prepend_type (struct pr_handle *, const char *);
+static bfd_boolean append_type (struct pr_handle *, const char *);
+static bfd_boolean substitute_type (struct pr_handle *, const char *);
+static bfd_boolean indent_type (struct pr_handle *);
+static char *pop_type (struct pr_handle *);
+static void print_vma (bfd_vma, char *, bfd_boolean, bfd_boolean);
+static bfd_boolean pr_fix_visibility
+ (struct pr_handle *, enum debug_visibility);
+static bfd_boolean pr_start_compilation_unit (void *, const char *);
+static bfd_boolean pr_start_source (void *, const char *);
+static bfd_boolean pr_empty_type (void *);
+static bfd_boolean pr_void_type (void *);
+static bfd_boolean pr_int_type (void *, unsigned int, bfd_boolean);
+static bfd_boolean pr_float_type (void *, unsigned int);
+static bfd_boolean pr_complex_type (void *, unsigned int);
+static bfd_boolean pr_bool_type (void *, unsigned int);
+static bfd_boolean pr_enum_type
+ (void *, const char *, const char **, bfd_signed_vma *);
+static bfd_boolean pr_pointer_type (void *);
+static bfd_boolean pr_function_type (void *, int, bfd_boolean);
+static bfd_boolean pr_reference_type (void *);
+static bfd_boolean pr_range_type (void *, bfd_signed_vma, bfd_signed_vma);
+static bfd_boolean pr_array_type
+ (void *, bfd_signed_vma, bfd_signed_vma, bfd_boolean);
+static bfd_boolean pr_set_type (void *, bfd_boolean);
+static bfd_boolean pr_offset_type (void *);
+static bfd_boolean pr_method_type (void *, bfd_boolean, int, bfd_boolean);
+static bfd_boolean pr_const_type (void *);
+static bfd_boolean pr_volatile_type (void *);
+static bfd_boolean pr_start_struct_type
+ (void *, const char *, unsigned int, bfd_boolean, unsigned int);
+static bfd_boolean pr_struct_field
+ (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
+static bfd_boolean pr_end_struct_type (void *);
+static bfd_boolean pr_start_class_type
+ (void *, const char *, unsigned int, bfd_boolean, unsigned int,
+ bfd_boolean, bfd_boolean);
+static bfd_boolean pr_class_static_member
+ (void *, const char *, const char *, enum debug_visibility);
+static bfd_boolean pr_class_baseclass
+ (void *, bfd_vma, bfd_boolean, enum debug_visibility);
+static bfd_boolean pr_class_start_method (void *, const char *);
+static bfd_boolean pr_class_method_variant
+ (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean,
+ bfd_vma, bfd_boolean);
+static bfd_boolean pr_class_static_method_variant
+ (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean);
+static bfd_boolean pr_class_end_method (void *);
+static bfd_boolean pr_end_class_type (void *);
+static bfd_boolean pr_typedef_type (void *, const char *);
+static bfd_boolean pr_tag_type
+ (void *, const char *, unsigned int, enum debug_type_kind);
+static bfd_boolean pr_typdef (void *, const char *);
+static bfd_boolean pr_tag (void *, const char *);
+static bfd_boolean pr_int_constant (void *, const char *, bfd_vma);
+static bfd_boolean pr_float_constant (void *, const char *, double);
+static bfd_boolean pr_typed_constant (void *, const char *, bfd_vma);
+static bfd_boolean pr_variable
+ (void *, const char *, enum debug_var_kind, bfd_vma);
+static bfd_boolean pr_start_function (void *, const char *, bfd_boolean);
+static bfd_boolean pr_function_parameter
+ (void *, const char *, enum debug_parm_kind, bfd_vma);
+static bfd_boolean pr_start_block (void *, bfd_vma);
+static bfd_boolean pr_end_block (void *, bfd_vma);
+static bfd_boolean pr_end_function (void *);
+static bfd_boolean pr_lineno (void *, const char *, unsigned long, bfd_vma);
+static bfd_boolean append_parent (struct pr_handle *, const char *);
+/* Only used by tg_ code. */
+static bfd_boolean tg_fix_visibility
+ (struct pr_handle *, enum debug_visibility);
+static void find_address_in_section (bfd *, asection *, void *);
+static void translate_addresses (bfd *, char *, FILE *, asymbol **);
+static const char *visibility_name (enum debug_visibility);
+/* Tags style replacements. */
+static bfd_boolean tg_start_compilation_unit (void *, const char *);
+static bfd_boolean tg_start_source (void *, const char *);
+static bfd_boolean tg_enum_type
+ (void *, const char *, const char **, bfd_signed_vma *);
+static bfd_boolean tg_start_struct_type
+ (void *, const char *, unsigned int, bfd_boolean, unsigned int);
+static bfd_boolean pr_struct_field
+ (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
+static bfd_boolean tg_struct_field
+ (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
+static bfd_boolean tg_struct_field
+ (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
+static bfd_boolean tg_end_struct_type (void *);
+static bfd_boolean tg_start_class_type
+ (void *, const char *, unsigned int, bfd_boolean, unsigned int, bfd_boolean, bfd_boolean);
+static bfd_boolean tg_class_static_member
+ (void *, const char *, const char *, enum debug_visibility);
+static bfd_boolean tg_class_baseclass
+ (void *, bfd_vma, bfd_boolean, enum debug_visibility);
+static bfd_boolean tg_class_method_variant
+ (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean, bfd_vma, bfd_boolean);
+static bfd_boolean tg_class_static_method_variant
+ (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean);
+static bfd_boolean tg_end_class_type (void *);
+static bfd_boolean tg_tag_type
+ (void *, const char *, unsigned int, enum debug_type_kind);
+static bfd_boolean tg_typdef (void *, const char *);
+static bfd_boolean tg_tag (void *, const char *);
+static bfd_boolean tg_int_constant (void *, const char *, bfd_vma);
+static bfd_boolean tg_float_constant (void *, const char *, double);
+static bfd_boolean tg_typed_constant (void *, const char *, bfd_vma);
+static bfd_boolean tg_variable
+ (void *, const char *, enum debug_var_kind, bfd_vma);
+static bfd_boolean tg_start_function (void *, const char *, bfd_boolean);
+static bfd_boolean tg_function_parameter
+ (void *, const char *, enum debug_parm_kind, bfd_vma);
+static bfd_boolean tg_start_block (void *, bfd_vma);
+static bfd_boolean tg_end_block (void *, bfd_vma);
+static bfd_boolean tg_lineno (void *, const char *, unsigned long, bfd_vma);
+
+static const struct debug_write_fns pr_fns =
+{
+ pr_start_compilation_unit,
+ pr_start_source,
+ pr_empty_type,
+ pr_void_type,
+ pr_int_type,
+ pr_float_type,
+ pr_complex_type,
+ pr_bool_type,
+ pr_enum_type,
+ pr_pointer_type,
+ pr_function_type,
+ pr_reference_type,
+ pr_range_type,
+ pr_array_type,
+ pr_set_type,
+ pr_offset_type,
+ pr_method_type,
+ pr_const_type,
+ pr_volatile_type,
+ pr_start_struct_type,
+ pr_struct_field,
+ pr_end_struct_type,
+ pr_start_class_type,
+ pr_class_static_member,
+ pr_class_baseclass,
+ pr_class_start_method,
+ pr_class_method_variant,
+ pr_class_static_method_variant,
+ pr_class_end_method,
+ pr_end_class_type,
+ pr_typedef_type,
+ pr_tag_type,
+ pr_typdef,
+ pr_tag,
+ pr_int_constant,
+ pr_float_constant,
+ pr_typed_constant,
+ pr_variable,
+ pr_start_function,
+ pr_function_parameter,
+ pr_start_block,
+ pr_end_block,
+ pr_end_function,
+ pr_lineno
+};
+
+static const struct debug_write_fns tg_fns =
+{
+ tg_start_compilation_unit,
+ tg_start_source,
+ pr_empty_type, /* Same, push_type. */
+ pr_void_type, /* Same, push_type. */
+ pr_int_type, /* Same, push_type. */
+ pr_float_type, /* Same, push_type. */
+ pr_complex_type, /* Same, push_type. */
+ pr_bool_type, /* Same, push_type. */
+ tg_enum_type,
+ pr_pointer_type, /* Same, changes to pointer. */
+ pr_function_type, /* Same, push_type. */
+ pr_reference_type, /* Same, changes to reference. */
+ pr_range_type, /* FIXME: What's that?. */
+ pr_array_type, /* Same, push_type. */
+ pr_set_type, /* FIXME: What's that?. */
+ pr_offset_type, /* FIXME: What's that?. */
+ pr_method_type, /* Same. */
+ pr_const_type, /* Same, changes to const. */
+ pr_volatile_type, /* Same, changes to volatile. */
+ tg_start_struct_type,
+ tg_struct_field,
+ tg_end_struct_type,
+ tg_start_class_type,
+ tg_class_static_member,
+ tg_class_baseclass,
+ pr_class_start_method, /* Same, remembers that's a method. */
+ tg_class_method_variant,
+ tg_class_static_method_variant,
+ pr_class_end_method, /* Same, forgets that's a method. */
+ tg_end_class_type,
+ pr_typedef_type, /* Same, just push type. */
+ tg_tag_type,
+ tg_typdef,
+ tg_tag,
+ tg_int_constant, /* Untested. */
+ tg_float_constant, /* Untested. */
+ tg_typed_constant, /* Untested. */
+ tg_variable,
+ tg_start_function,
+ tg_function_parameter,
+ tg_start_block,
+ tg_end_block,
+ pr_end_function, /* Same, does nothing. */
+ tg_lineno
+};
+
+/* Print out the generic debugging information recorded in dhandle. */
+
+bfd_boolean
+print_debugging_info (FILE *f, void *dhandle, bfd *abfd, asymbol **syms,
+ void *demangler, bfd_boolean as_tags)
+{
+ struct pr_handle info;
+
+ info.f = f;
+ info.indent = 0;
+ info.stack = NULL;
+ info.parameter = 0;
+ info.filename = NULL;
+ info.abfd = abfd;
+ info.syms = syms;
+ info.demangler = (char * (*)(struct bfd *, const char *, int)) demangler;
+
+ if (as_tags)
+ {
+ fputs ("!_TAG_FILE_FORMAT\t2\t/extended format/\n", f);
+ fputs ("!_TAG_FILE_SORTED\t0\t/0=unsorted, 1=sorted/\n", f);
+ fputs ("!_TAG_PROGRAM_AUTHOR\tIan Lance Taylor, Salvador E. Tropea and others\t//\n", f);
+ fputs ("!_TAG_PROGRAM_NAME\tobjdump\t/From GNU binutils/\n", f);
+ }
+
+ return as_tags ? debug_write (dhandle, &tg_fns, (void *) & info)
+ : debug_write (dhandle, &pr_fns, (void *) & info);
+}
+
+/* Indent to the current indentation level. */
+
+static void
+indent (struct pr_handle *info)
+{
+ unsigned int i;
+
+ for (i = 0; i < info->indent; i++)
+ putc (' ', info->f);
+}
+
+/* Push a type on the type stack. */
+
+static bfd_boolean
+push_type (struct pr_handle *info, const char *type)
+{
+ struct pr_stack *n;
+
+ if (type == NULL)
+ return FALSE;
+
+ n = (struct pr_stack *) xmalloc (sizeof *n);
+ memset (n, 0, sizeof *n);
+
+ n->type = xstrdup (type);
+ n->visibility = DEBUG_VISIBILITY_IGNORE;
+ n->method = NULL;
+ n->next = info->stack;
+ info->stack = n;
+
+ return TRUE;
+}
+
+/* Prepend a string onto the type on the top of the type stack. */
+
+static bfd_boolean
+prepend_type (struct pr_handle *info, const char *s)
+{
+ char *n;
+
+ assert (info->stack != NULL);
+
+ n = (char *) xmalloc (strlen (s) + strlen (info->stack->type) + 1);
+ sprintf (n, "%s%s", s, info->stack->type);
+ free (info->stack->type);
+ info->stack->type = n;
+
+ return TRUE;
+}
+
+/* Append a string to the type on the top of the type stack. */
+
+static bfd_boolean
+append_type (struct pr_handle *info, const char *s)
+{
+ unsigned int len;
+
+ if (s == NULL)
+ return FALSE;
+
+ assert (info->stack != NULL);
+
+ len = strlen (info->stack->type);
+ info->stack->type = (char *) xrealloc (info->stack->type,
+ len + strlen (s) + 1);
+ strcpy (info->stack->type + len, s);
+
+ return TRUE;
+}
+
+/* Append a string to the parents on the top of the type stack. */
+
+static bfd_boolean
+append_parent (struct pr_handle *info, const char *s)
+{
+ unsigned int len;
+
+ if (s == NULL)
+ return FALSE;
+
+ assert (info->stack != NULL);
+
+ len = info->stack->parents ? strlen (info->stack->parents) : 0;
+ info->stack->parents = (char *) xrealloc (info->stack->parents,
+ len + strlen (s) + 1);
+ strcpy (info->stack->parents + len, s);
+
+ return TRUE;
+}
+
+/* We use an underscore to indicate where the name should go in a type
+ string. This function substitutes a string for the underscore. If
+ there is no underscore, the name follows the type. */
+
+static bfd_boolean
+substitute_type (struct pr_handle *info, const char *s)
+{
+ char *u;
+
+ assert (info->stack != NULL);
+
+ u = strchr (info->stack->type, '|');
+ if (u != NULL)
+ {
+ char *n;
+
+ n = (char *) xmalloc (strlen (info->stack->type) + strlen (s));
+
+ memcpy (n, info->stack->type, u - info->stack->type);
+ strcpy (n + (u - info->stack->type), s);
+ strcat (n, u + 1);
+
+ free (info->stack->type);
+ info->stack->type = n;
+
+ return TRUE;
+ }
+
+ if (strchr (s, '|') != NULL
+ && (strchr (info->stack->type, '{') != NULL
+ || strchr (info->stack->type, '(') != NULL))
+ {
+ if (! prepend_type (info, "(")
+ || ! append_type (info, ")"))
+ return FALSE;
+ }
+
+ if (*s == '\0')
+ return TRUE;
+
+ return (append_type (info, " ")
+ && append_type (info, s));
+}
+
+/* Indent the type at the top of the stack by appending spaces. */
+
+static bfd_boolean
+indent_type (struct pr_handle *info)
+{
+ unsigned int i;
+
+ for (i = 0; i < info->indent; i++)
+ {
+ if (! append_type (info, " "))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Pop a type from the type stack. */
+
+static char *
+pop_type (struct pr_handle *info)
+{
+ struct pr_stack *o;
+ char *ret;
+
+ assert (info->stack != NULL);
+
+ o = info->stack;
+ info->stack = o->next;
+ ret = o->type;
+ free (o);
+
+ return ret;
+}
+
+/* Print a VMA value into a string. */
+
+static void
+print_vma (bfd_vma vma, char *buf, bfd_boolean unsignedp, bfd_boolean hexp)
+{
+ if (sizeof (vma) <= sizeof (unsigned long))
+ {
+ if (hexp)
+ sprintf (buf, "0x%lx", (unsigned long) vma);
+ else if (unsignedp)
+ sprintf (buf, "%lu", (unsigned long) vma);
+ else
+ sprintf (buf, "%ld", (long) vma);
+ }
+#if BFD_HOST_64BIT_LONG_LONG
+ else if (sizeof (vma) <= sizeof (unsigned long long))
+ {
+#ifndef __MSVCRT__
+ if (hexp)
+ sprintf (buf, "0x%llx", (unsigned long long) vma);
+ else if (unsignedp)
+ sprintf (buf, "%llu", (unsigned long long) vma);
+ else
+ sprintf (buf, "%lld", (long long) vma);
+#else
+ if (hexp)
+ sprintf (buf, "0x%I64x", (unsigned long long) vma);
+ else if (unsignedp)
+ sprintf (buf, "%I64u", (unsigned long long) vma);
+ else
+ sprintf (buf, "%I64d", (long long) vma);
+#endif
+ }
+#endif
+ else
+ {
+ buf[0] = '0';
+ buf[1] = 'x';
+ sprintf_vma (buf + 2, vma);
+ }
+}
+
+/* Start a new compilation unit. */
+
+static bfd_boolean
+pr_start_compilation_unit (void *p, const char *filename)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ assert (info->indent == 0);
+
+ fprintf (info->f, "%s:\n", filename);
+
+ return TRUE;
+}
+
+/* Start a source file within a compilation unit. */
+
+static bfd_boolean
+pr_start_source (void *p, const char *filename)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ assert (info->indent == 0);
+
+ fprintf (info->f, " %s:\n", filename);
+
+ return TRUE;
+}
+
+/* Push an empty type onto the type stack. */
+
+static bfd_boolean
+pr_empty_type (void *p)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ return push_type (info, "<undefined>");
+}
+
+/* Push a void type onto the type stack. */
+
+static bfd_boolean
+pr_void_type (void *p)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ return push_type (info, "void");
+}
+
+/* Push an integer type onto the type stack. */
+
+static bfd_boolean
+pr_int_type (void *p, unsigned int size, bfd_boolean unsignedp)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char ab[10];
+
+ sprintf (ab, "%sint%d", unsignedp ? "u" : "", size * 8);
+ return push_type (info, ab);
+}
+
+/* Push a floating type onto the type stack. */
+
+static bfd_boolean
+pr_float_type (void *p, unsigned int size)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char ab[10];
+
+ if (size == 4)
+ return push_type (info, "float");
+ else if (size == 8)
+ return push_type (info, "double");
+
+ sprintf (ab, "float%d", size * 8);
+ return push_type (info, ab);
+}
+
+/* Push a complex type onto the type stack. */
+
+static bfd_boolean
+pr_complex_type (void *p, unsigned int size)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ if (! pr_float_type (p, size))
+ return FALSE;
+
+ return prepend_type (info, "complex ");
+}
+
+/* Push a bfd_boolean type onto the type stack. */
+
+static bfd_boolean
+pr_bool_type (void *p, unsigned int size)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char ab[10];
+
+ sprintf (ab, "bool%d", size * 8);
+
+ return push_type (info, ab);
+}
+
+/* Push an enum type onto the type stack. */
+
+static bfd_boolean
+pr_enum_type (void *p, const char *tag, const char **names,
+ bfd_signed_vma *values)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ unsigned int i;
+ bfd_signed_vma val;
+
+ if (! push_type (info, "enum "))
+ return FALSE;
+ if (tag != NULL)
+ {
+ if (! append_type (info, tag)
+ || ! append_type (info, " "))
+ return FALSE;
+ }
+ if (! append_type (info, "{ "))
+ return FALSE;
+
+ if (names == NULL)
+ {
+ if (! append_type (info, "/* undefined */"))
+ return FALSE;
+ }
+ else
+ {
+ val = 0;
+ for (i = 0; names[i] != NULL; i++)
+ {
+ if (i > 0)
+ {
+ if (! append_type (info, ", "))
+ return FALSE;
+ }
+
+ if (! append_type (info, names[i]))
+ return FALSE;
+
+ if (values[i] != val)
+ {
+ char ab[20];
+
+ print_vma (values[i], ab, FALSE, FALSE);
+ if (! append_type (info, " = ")
+ || ! append_type (info, ab))
+ return FALSE;
+ val = values[i];
+ }
+
+ ++val;
+ }
+ }
+
+ return append_type (info, " }");
+}
+
+/* Turn the top type on the stack into a pointer. */
+
+static bfd_boolean
+pr_pointer_type (void *p)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *s;
+
+ assert (info->stack != NULL);
+
+ s = strchr (info->stack->type, '|');
+ if (s != NULL && s[1] == '[')
+ return substitute_type (info, "(*|)");
+ return substitute_type (info, "*|");
+}
+
+/* Turn the top type on the stack into a function returning that type. */
+
+static bfd_boolean
+pr_function_type (void *p, int argcount, bfd_boolean varargs)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char **arg_types;
+ unsigned int len;
+ char *s;
+
+ assert (info->stack != NULL);
+
+ len = 10;
+
+ if (argcount <= 0)
+ {
+ arg_types = NULL;
+ len += 15;
+ }
+ else
+ {
+ int i;
+
+ arg_types = (char **) xmalloc (argcount * sizeof *arg_types);
+ for (i = argcount - 1; i >= 0; i--)
+ {
+ if (! substitute_type (info, ""))
+ {
+ free (arg_types);
+ return FALSE;
+ }
+ arg_types[i] = pop_type (info);
+ if (arg_types[i] == NULL)
+ {
+ free (arg_types);
+ return FALSE;
+ }
+ len += strlen (arg_types[i]) + 2;
+ }
+ if (varargs)
+ len += 5;
+ }
+
+ /* Now the return type is on the top of the stack. */
+
+ s = (char *) xmalloc (len);
+ LITSTRCPY (s, "(|) (");
+
+ if (argcount < 0)
+ strcat (s, "/* unknown */");
+ else
+ {
+ int i;
+
+ for (i = 0; i < argcount; i++)
+ {
+ if (i > 0)
+ strcat (s, ", ");
+ strcat (s, arg_types[i]);
+ }
+ if (varargs)
+ {
+ if (i > 0)
+ strcat (s, ", ");
+ strcat (s, "...");
+ }
+ if (argcount > 0)
+ free (arg_types);
+ }
+
+ strcat (s, ")");
+
+ if (! substitute_type (info, s))
+ return FALSE;
+
+ free (s);
+
+ return TRUE;
+}
+
+/* Turn the top type on the stack into a reference to that type. */
+
+static bfd_boolean
+pr_reference_type (void *p)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ assert (info->stack != NULL);
+
+ return substitute_type (info, "&|");
+}
+
+/* Make a range type. */
+
+static bfd_boolean
+pr_range_type (void *p, bfd_signed_vma lower, bfd_signed_vma upper)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char abl[20], abu[20];
+
+ assert (info->stack != NULL);
+
+ if (! substitute_type (info, ""))
+ return FALSE;
+
+ print_vma (lower, abl, FALSE, FALSE);
+ print_vma (upper, abu, FALSE, FALSE);
+
+ return (prepend_type (info, "range (")
+ && append_type (info, "):")
+ && append_type (info, abl)
+ && append_type (info, ":")
+ && append_type (info, abu));
+}
+
+/* Make an array type. */
+
+static bfd_boolean
+pr_array_type (void *p, bfd_signed_vma lower, bfd_signed_vma upper,
+ bfd_boolean stringp)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *range_type;
+ char abl[20], abu[20], ab[50];
+
+ range_type = pop_type (info);
+ if (range_type == NULL)
+ return FALSE;
+
+ if (lower == 0)
+ {
+ if (upper == -1)
+ sprintf (ab, "|[]");
+ else
+ {
+ print_vma (upper + 1, abu, FALSE, FALSE);
+ sprintf (ab, "|[%s]", abu);
+ }
+ }
+ else
+ {
+ print_vma (lower, abl, FALSE, FALSE);
+ print_vma (upper, abu, FALSE, FALSE);
+ sprintf (ab, "|[%s:%s]", abl, abu);
+ }
+
+ if (! substitute_type (info, ab))
+ return FALSE;
+
+ if (strcmp (range_type, "int") != 0)
+ {
+ if (! append_type (info, ":")
+ || ! append_type (info, range_type))
+ return FALSE;
+ }
+
+ if (stringp)
+ {
+ if (! append_type (info, " /* string */"))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Make a set type. */
+
+static bfd_boolean
+pr_set_type (void *p, bfd_boolean bitstringp)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ if (! substitute_type (info, ""))
+ return FALSE;
+
+ if (! prepend_type (info, "set { ")
+ || ! append_type (info, " }"))
+ return FALSE;
+
+ if (bitstringp)
+ {
+ if (! append_type (info, "/* bitstring */"))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Make an offset type. */
+
+static bfd_boolean
+pr_offset_type (void *p)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+
+ if (! substitute_type (info, ""))
+ return FALSE;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ return (substitute_type (info, "")
+ && prepend_type (info, " ")
+ && prepend_type (info, t)
+ && append_type (info, "::|"));
+}
+
+/* Make a method type. */
+
+static bfd_boolean
+pr_method_type (void *p, bfd_boolean domain, int argcount, bfd_boolean varargs)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ unsigned int len;
+ char *domain_type;
+ char **arg_types;
+ char *s;
+
+ len = 10;
+
+ if (! domain)
+ domain_type = NULL;
+ else
+ {
+ if (! substitute_type (info, ""))
+ return FALSE;
+ domain_type = pop_type (info);
+ if (domain_type == NULL)
+ return FALSE;
+ if (CONST_STRNEQ (domain_type, "class ")
+ && strchr (domain_type + sizeof "class " - 1, ' ') == NULL)
+ domain_type += sizeof "class " - 1;
+ else if (CONST_STRNEQ (domain_type, "union class ")
+ && (strchr (domain_type + sizeof "union class " - 1, ' ')
+ == NULL))
+ domain_type += sizeof "union class " - 1;
+ len += strlen (domain_type);
+ }
+
+ if (argcount <= 0)
+ {
+ arg_types = NULL;
+ len += 15;
+ }
+ else
+ {
+ int i;
+
+ arg_types = (char **) xmalloc (argcount * sizeof *arg_types);
+ for (i = argcount - 1; i >= 0; i--)
+ {
+ if (! substitute_type (info, ""))
+ {
+ free (arg_types);
+ return FALSE;
+ }
+ arg_types[i] = pop_type (info);
+ if (arg_types[i] == NULL)
+ {
+ free (arg_types);
+ return FALSE;
+ }
+ len += strlen (arg_types[i]) + 2;
+ }
+ if (varargs)
+ len += 5;
+ }
+
+ /* Now the return type is on the top of the stack. */
+
+ s = (char *) xmalloc (len);
+ if (! domain)
+ *s = '\0';
+ else
+ strcpy (s, domain_type);
+ strcat (s, "::| (");
+
+ if (argcount < 0)
+ strcat (s, "/* unknown */");
+ else
+ {
+ int i;
+
+ for (i = 0; i < argcount; i++)
+ {
+ if (i > 0)
+ strcat (s, ", ");
+ strcat (s, arg_types[i]);
+ }
+ if (varargs)
+ {
+ if (i > 0)
+ strcat (s, ", ");
+ strcat (s, "...");
+ }
+ if (argcount > 0)
+ free (arg_types);
+ }
+
+ strcat (s, ")");
+
+ if (! substitute_type (info, s))
+ return FALSE;
+
+ free (s);
+
+ return TRUE;
+}
+
+/* Make a const qualified type. */
+
+static bfd_boolean
+pr_const_type (void *p)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ return substitute_type (info, "const |");
+}
+
+/* Make a volatile qualified type. */
+
+static bfd_boolean
+pr_volatile_type (void *p)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ return substitute_type (info, "volatile |");
+}
+
+/* Start accumulating a struct type. */
+
+static bfd_boolean
+pr_start_struct_type (void *p, const char *tag, unsigned int id,
+ bfd_boolean structp, unsigned int size)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ info->indent += 2;
+
+ if (! push_type (info, structp ? "struct " : "union "))
+ return FALSE;
+ if (tag != NULL)
+ {
+ if (! append_type (info, tag))
+ return FALSE;
+ }
+ else
+ {
+ char idbuf[20];
+
+ sprintf (idbuf, "%%anon%u", id);
+ if (! append_type (info, idbuf))
+ return FALSE;
+ }
+
+ if (! append_type (info, " {"))
+ return FALSE;
+ if (size != 0 || tag != NULL)
+ {
+ char ab[30];
+
+ if (! append_type (info, " /*"))
+ return FALSE;
+
+ if (size != 0)
+ {
+ sprintf (ab, " size %u", size);
+ if (! append_type (info, ab))
+ return FALSE;
+ }
+ if (tag != NULL)
+ {
+ sprintf (ab, " id %u", id);
+ if (! append_type (info, ab))
+ return FALSE;
+ }
+ if (! append_type (info, " */"))
+ return FALSE;
+ }
+ if (! append_type (info, "\n"))
+ return FALSE;
+
+ info->stack->visibility = DEBUG_VISIBILITY_PUBLIC;
+
+ return indent_type (info);
+}
+
+/* Output the visibility of a field in a struct. */
+
+static bfd_boolean
+pr_fix_visibility (struct pr_handle *info, enum debug_visibility visibility)
+{
+ const char *s = NULL;
+ char *t;
+ unsigned int len;
+
+ assert (info->stack != NULL);
+
+ if (info->stack->visibility == visibility)
+ return TRUE;
+
+ switch (visibility)
+ {
+ case DEBUG_VISIBILITY_PUBLIC:
+ s = "public";
+ break;
+ case DEBUG_VISIBILITY_PRIVATE:
+ s = "private";
+ break;
+ case DEBUG_VISIBILITY_PROTECTED:
+ s = "protected";
+ break;
+ case DEBUG_VISIBILITY_IGNORE:
+ s = "/* ignore */";
+ break;
+ default:
+ abort ();
+ return FALSE;
+ }
+
+ /* Trim off a trailing space in the struct string, to make the
+ output look a bit better, then stick on the visibility string. */
+
+ t = info->stack->type;
+ len = strlen (t);
+ assert (t[len - 1] == ' ');
+ t[len - 1] = '\0';
+
+ if (! append_type (info, s)
+ || ! append_type (info, ":\n")
+ || ! indent_type (info))
+ return FALSE;
+
+ info->stack->visibility = visibility;
+
+ return TRUE;
+}
+
+/* Add a field to a struct type. */
+
+static bfd_boolean
+pr_struct_field (void *p, const char *name, bfd_vma bitpos, bfd_vma bitsize,
+ enum debug_visibility visibility)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char ab[20];
+ char *t;
+
+ if (! substitute_type (info, name))
+ return FALSE;
+
+ if (! append_type (info, "; /* "))
+ return FALSE;
+
+ if (bitsize != 0)
+ {
+ print_vma (bitsize, ab, TRUE, FALSE);
+ if (! append_type (info, "bitsize ")
+ || ! append_type (info, ab)
+ || ! append_type (info, ", "))
+ return FALSE;
+ }
+
+ print_vma (bitpos, ab, TRUE, FALSE);
+ if (! append_type (info, "bitpos ")
+ || ! append_type (info, ab)
+ || ! append_type (info, " */\n")
+ || ! indent_type (info))
+ return FALSE;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ if (! pr_fix_visibility (info, visibility))
+ return FALSE;
+
+ return append_type (info, t);
+}
+
+/* Finish a struct type. */
+
+static bfd_boolean
+pr_end_struct_type (void *p)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *s;
+
+ assert (info->stack != NULL);
+ assert (info->indent >= 2);
+
+ info->indent -= 2;
+
+ /* Change the trailing indentation to have a close brace. */
+ s = info->stack->type + strlen (info->stack->type) - 2;
+ assert (s[0] == ' ' && s[1] == ' ' && s[2] == '\0');
+
+ *s++ = '}';
+ *s = '\0';
+
+ return TRUE;
+}
+
+/* Start a class type. */
+
+static bfd_boolean
+pr_start_class_type (void *p, const char *tag, unsigned int id,
+ bfd_boolean structp, unsigned int size,
+ bfd_boolean vptr, bfd_boolean ownvptr)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *tv = NULL;
+
+ info->indent += 2;
+
+ if (vptr && ! ownvptr)
+ {
+ tv = pop_type (info);
+ if (tv == NULL)
+ return FALSE;
+ }
+
+ if (! push_type (info, structp ? "class " : "union class "))
+ return FALSE;
+ if (tag != NULL)
+ {
+ if (! append_type (info, tag))
+ return FALSE;
+ }
+ else
+ {
+ char idbuf[20];
+
+ sprintf (idbuf, "%%anon%u", id);
+ if (! append_type (info, idbuf))
+ return FALSE;
+ }
+
+ if (! append_type (info, " {"))
+ return FALSE;
+ if (size != 0 || vptr || ownvptr || tag != NULL)
+ {
+ if (! append_type (info, " /*"))
+ return FALSE;
+
+ if (size != 0)
+ {
+ char ab[20];
+
+ sprintf (ab, "%u", size);
+ if (! append_type (info, " size ")
+ || ! append_type (info, ab))
+ return FALSE;
+ }
+
+ if (vptr)
+ {
+ if (! append_type (info, " vtable "))
+ return FALSE;
+ if (ownvptr)
+ {
+ if (! append_type (info, "self "))
+ return FALSE;
+ }
+ else
+ {
+ if (! append_type (info, tv)
+ || ! append_type (info, " "))
+ return FALSE;
+ }
+ }
+
+ if (tag != NULL)
+ {
+ char ab[30];
+
+ sprintf (ab, " id %u", id);
+ if (! append_type (info, ab))
+ return FALSE;
+ }
+
+ if (! append_type (info, " */"))
+ return FALSE;
+ }
+
+ info->stack->visibility = DEBUG_VISIBILITY_PRIVATE;
+
+ return (append_type (info, "\n")
+ && indent_type (info));
+}
+
+/* Add a static member to a class. */
+
+static bfd_boolean
+pr_class_static_member (void *p, const char *name, const char *physname,
+ enum debug_visibility visibility)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+
+ if (! substitute_type (info, name))
+ return FALSE;
+
+ if (! prepend_type (info, "static ")
+ || ! append_type (info, "; /* ")
+ || ! append_type (info, physname)
+ || ! append_type (info, " */\n")
+ || ! indent_type (info))
+ return FALSE;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ if (! pr_fix_visibility (info, visibility))
+ return FALSE;
+
+ return append_type (info, t);
+}
+
+/* Add a base class to a class. */
+
+static bfd_boolean
+pr_class_baseclass (void *p, bfd_vma bitpos, bfd_boolean is_virtual,
+ enum debug_visibility visibility)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+ const char *prefix;
+ char ab[20];
+ char *s, *l, *n;
+
+ assert (info->stack != NULL && info->stack->next != NULL);
+
+ if (! substitute_type (info, ""))
+ return FALSE;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ if (CONST_STRNEQ (t, "class "))
+ t += sizeof "class " - 1;
+
+ /* Push it back on to take advantage of the prepend_type and
+ append_type routines. */
+ if (! push_type (info, t))
+ return FALSE;
+
+ if (is_virtual)
+ {
+ if (! prepend_type (info, "virtual "))
+ return FALSE;
+ }
+
+ switch (visibility)
+ {
+ case DEBUG_VISIBILITY_PUBLIC:
+ prefix = "public ";
+ break;
+ case DEBUG_VISIBILITY_PROTECTED:
+ prefix = "protected ";
+ break;
+ case DEBUG_VISIBILITY_PRIVATE:
+ prefix = "private ";
+ break;
+ default:
+ prefix = "/* unknown visibility */ ";
+ break;
+ }
+
+ if (! prepend_type (info, prefix))
+ return FALSE;
+
+ if (bitpos != 0)
+ {
+ print_vma (bitpos, ab, TRUE, FALSE);
+ if (! append_type (info, " /* bitpos ")
+ || ! append_type (info, ab)
+ || ! append_type (info, " */"))
+ return FALSE;
+ }
+
+ /* Now the top of the stack is something like "public A / * bitpos
+ 10 * /". The next element on the stack is something like "class
+ xx { / * size 8 * /\n...". We want to substitute the top of the
+ stack in before the {. */
+ s = strchr (info->stack->next->type, '{');
+ assert (s != NULL);
+ --s;
+
+ /* If there is already a ':', then we already have a baseclass, and
+ we must append this one after a comma. */
+ for (l = info->stack->next->type; l != s; l++)
+ if (*l == ':')
+ break;
+ if (! prepend_type (info, l == s ? " : " : ", "))
+ return FALSE;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ n = (char *) xmalloc (strlen (info->stack->type) + strlen (t) + 1);
+ memcpy (n, info->stack->type, s - info->stack->type);
+ strcpy (n + (s - info->stack->type), t);
+ strcat (n, s);
+
+ free (info->stack->type);
+ info->stack->type = n;
+
+ free (t);
+
+ return TRUE;
+}
+
+/* Start adding a method to a class. */
+
+static bfd_boolean
+pr_class_start_method (void *p, const char *name)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ assert (info->stack != NULL);
+ info->stack->method = name;
+ return TRUE;
+}
+
+/* Add a variant to a method. */
+
+static bfd_boolean
+pr_class_method_variant (void *p, const char *physname,
+ enum debug_visibility visibility,
+ bfd_boolean constp, bfd_boolean volatilep,
+ bfd_vma voffset, bfd_boolean context)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *method_type;
+ char *context_type;
+
+ assert (info->stack != NULL);
+ assert (info->stack->next != NULL);
+
+ /* Put the const and volatile qualifiers on the type. */
+ if (volatilep)
+ {
+ if (! append_type (info, " volatile"))
+ return FALSE;
+ }
+ if (constp)
+ {
+ if (! append_type (info, " const"))
+ return FALSE;
+ }
+
+ /* Stick the name of the method into its type. */
+ if (! substitute_type (info,
+ (context
+ ? info->stack->next->next->method
+ : info->stack->next->method)))
+ return FALSE;
+
+ /* Get the type. */
+ method_type = pop_type (info);
+ if (method_type == NULL)
+ return FALSE;
+
+ /* Pull off the context type if there is one. */
+ if (! context)
+ context_type = NULL;
+ else
+ {
+ context_type = pop_type (info);
+ if (context_type == NULL)
+ return FALSE;
+ }
+
+ /* Now the top of the stack is the class. */
+
+ if (! pr_fix_visibility (info, visibility))
+ return FALSE;
+
+ if (! append_type (info, method_type)
+ || ! append_type (info, " /* ")
+ || ! append_type (info, physname)
+ || ! append_type (info, " "))
+ return FALSE;
+ if (context || voffset != 0)
+ {
+ char ab[20];
+
+ if (context)
+ {
+ if (! append_type (info, "context ")
+ || ! append_type (info, context_type)
+ || ! append_type (info, " "))
+ return FALSE;
+ }
+ print_vma (voffset, ab, TRUE, FALSE);
+ if (! append_type (info, "voffset ")
+ || ! append_type (info, ab))
+ return FALSE;
+ }
+
+ return (append_type (info, " */;\n")
+ && indent_type (info));
+}
+
+/* Add a static variant to a method. */
+
+static bfd_boolean
+pr_class_static_method_variant (void *p, const char *physname,
+ enum debug_visibility visibility,
+ bfd_boolean constp, bfd_boolean volatilep)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *method_type;
+
+ assert (info->stack != NULL);
+ assert (info->stack->next != NULL);
+ assert (info->stack->next->method != NULL);
+
+ /* Put the const and volatile qualifiers on the type. */
+ if (volatilep)
+ {
+ if (! append_type (info, " volatile"))
+ return FALSE;
+ }
+ if (constp)
+ {
+ if (! append_type (info, " const"))
+ return FALSE;
+ }
+
+ /* Mark it as static. */
+ if (! prepend_type (info, "static "))
+ return FALSE;
+
+ /* Stick the name of the method into its type. */
+ if (! substitute_type (info, info->stack->next->method))
+ return FALSE;
+
+ /* Get the type. */
+ method_type = pop_type (info);
+ if (method_type == NULL)
+ return FALSE;
+
+ /* Now the top of the stack is the class. */
+
+ if (! pr_fix_visibility (info, visibility))
+ return FALSE;
+
+ return (append_type (info, method_type)
+ && append_type (info, " /* ")
+ && append_type (info, physname)
+ && append_type (info, " */;\n")
+ && indent_type (info));
+}
+
+/* Finish up a method. */
+
+static bfd_boolean
+pr_class_end_method (void *p)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ info->stack->method = NULL;
+ return TRUE;
+}
+
+/* Finish up a class. */
+
+static bfd_boolean
+pr_end_class_type (void *p)
+{
+ return pr_end_struct_type (p);
+}
+
+/* Push a type on the stack using a typedef name. */
+
+static bfd_boolean
+pr_typedef_type (void *p, const char *name)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ return push_type (info, name);
+}
+
+/* Push a type on the stack using a tag name. */
+
+static bfd_boolean
+pr_tag_type (void *p, const char *name, unsigned int id,
+ enum debug_type_kind kind)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ const char *t, *tag;
+ char idbuf[20];
+
+ switch (kind)
+ {
+ case DEBUG_KIND_STRUCT:
+ t = "struct ";
+ break;
+ case DEBUG_KIND_UNION:
+ t = "union ";
+ break;
+ case DEBUG_KIND_ENUM:
+ t = "enum ";
+ break;
+ case DEBUG_KIND_CLASS:
+ t = "class ";
+ break;
+ case DEBUG_KIND_UNION_CLASS:
+ t = "union class ";
+ break;
+ default:
+ abort ();
+ return FALSE;
+ }
+
+ if (! push_type (info, t))
+ return FALSE;
+ if (name != NULL)
+ tag = name;
+ else
+ {
+ sprintf (idbuf, "%%anon%u", id);
+ tag = idbuf;
+ }
+
+ if (! append_type (info, tag))
+ return FALSE;
+ if (name != NULL && kind != DEBUG_KIND_ENUM)
+ {
+ sprintf (idbuf, " /* id %u */", id);
+ if (! append_type (info, idbuf))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Output a typedef. */
+
+static bfd_boolean
+pr_typdef (void *p, const char *name)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *s;
+
+ if (! substitute_type (info, name))
+ return FALSE;
+
+ s = pop_type (info);
+ if (s == NULL)
+ return FALSE;
+
+ indent (info);
+ fprintf (info->f, "typedef %s;\n", s);
+
+ free (s);
+
+ return TRUE;
+}
+
+/* Output a tag. The tag should already be in the string on the
+ stack, so all we have to do here is print it out. */
+
+static bfd_boolean
+pr_tag (void *p, const char *name ATTRIBUTE_UNUSED)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ indent (info);
+ fprintf (info->f, "%s;\n", t);
+
+ free (t);
+
+ return TRUE;
+}
+
+/* Output an integer constant. */
+
+static bfd_boolean
+pr_int_constant (void *p, const char *name, bfd_vma val)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char ab[20];
+
+ indent (info);
+ print_vma (val, ab, FALSE, FALSE);
+ fprintf (info->f, "const int %s = %s;\n", name, ab);
+ return TRUE;
+}
+
+/* Output a floating point constant. */
+
+static bfd_boolean
+pr_float_constant (void *p, const char *name, double val)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ indent (info);
+ fprintf (info->f, "const double %s = %g;\n", name, val);
+ return TRUE;
+}
+
+/* Output a typed constant. */
+
+static bfd_boolean
+pr_typed_constant (void *p, const char *name, bfd_vma val)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+ char ab[20];
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ indent (info);
+ print_vma (val, ab, FALSE, FALSE);
+ fprintf (info->f, "const %s %s = %s;\n", t, name, ab);
+
+ free (t);
+
+ return TRUE;
+}
+
+/* Output a variable. */
+
+static bfd_boolean
+pr_variable (void *p, const char *name, enum debug_var_kind kind,
+ bfd_vma val)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+ char ab[20];
+
+ if (! substitute_type (info, name))
+ return FALSE;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ indent (info);
+ switch (kind)
+ {
+ case DEBUG_STATIC:
+ case DEBUG_LOCAL_STATIC:
+ fprintf (info->f, "static ");
+ break;
+ case DEBUG_REGISTER:
+ fprintf (info->f, "register ");
+ break;
+ default:
+ break;
+ }
+ print_vma (val, ab, TRUE, TRUE);
+ fprintf (info->f, "%s /* %s */;\n", t, ab);
+
+ free (t);
+
+ return TRUE;
+}
+
+/* Start outputting a function. */
+
+static bfd_boolean
+pr_start_function (void *p, const char *name, bfd_boolean global)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+
+ if (! substitute_type (info, name))
+ return FALSE;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ indent (info);
+ if (! global)
+ fprintf (info->f, "static ");
+ fprintf (info->f, "%s (", t);
+
+ info->parameter = 1;
+
+ return TRUE;
+}
+
+/* Output a function parameter. */
+
+static bfd_boolean
+pr_function_parameter (void *p, const char *name,
+ enum debug_parm_kind kind, bfd_vma val)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+ char ab[20];
+
+ if (kind == DEBUG_PARM_REFERENCE
+ || kind == DEBUG_PARM_REF_REG)
+ {
+ if (! pr_reference_type (p))
+ return FALSE;
+ }
+
+ if (! substitute_type (info, name))
+ return FALSE;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ if (info->parameter != 1)
+ fprintf (info->f, ", ");
+
+ if (kind == DEBUG_PARM_REG || kind == DEBUG_PARM_REF_REG)
+ fprintf (info->f, "register ");
+
+ print_vma (val, ab, TRUE, TRUE);
+ fprintf (info->f, "%s /* %s */", t, ab);
+
+ free (t);
+
+ ++info->parameter;
+
+ return TRUE;
+}
+
+/* Start writing out a block. */
+
+static bfd_boolean
+pr_start_block (void *p, bfd_vma addr)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char ab[20];
+
+ if (info->parameter > 0)
+ {
+ fprintf (info->f, ")\n");
+ info->parameter = 0;
+ }
+
+ indent (info);
+ print_vma (addr, ab, TRUE, TRUE);
+ fprintf (info->f, "{ /* %s */\n", ab);
+
+ info->indent += 2;
+
+ return TRUE;
+}
+
+/* Write out line number information. */
+
+static bfd_boolean
+pr_lineno (void *p, const char *filename, unsigned long lineno, bfd_vma addr)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char ab[20];
+
+ indent (info);
+ print_vma (addr, ab, TRUE, TRUE);
+ fprintf (info->f, "/* file %s line %lu addr %s */\n", filename, lineno, ab);
+
+ return TRUE;
+}
+
+/* Finish writing out a block. */
+
+static bfd_boolean
+pr_end_block (void *p, bfd_vma addr)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char ab[20];
+
+ info->indent -= 2;
+
+ indent (info);
+ print_vma (addr, ab, TRUE, TRUE);
+ fprintf (info->f, "} /* %s */\n", ab);
+
+ return TRUE;
+}
+
+/* Finish writing out a function. */
+
+static bfd_boolean
+pr_end_function (void *p ATTRIBUTE_UNUSED)
+{
+ return TRUE;
+}
+
+/* Tags style generation functions start here. */
+
+/* Variables for address to line translation. */
+static bfd_vma pc;
+static const char *filename;
+static const char *functionname;
+static unsigned int line;
+static bfd_boolean found;
+
+/* Look for an address in a section. This is called via
+ bfd_map_over_sections. */
+
+static void
+find_address_in_section (bfd *abfd, asection *section, void *data)
+{
+ bfd_vma vma;
+ bfd_size_type size;
+ asymbol **syms = (asymbol **) data;
+
+ if (found)
+ return;
+
+ if ((bfd_get_section_flags (abfd, section) & SEC_ALLOC) == 0)
+ return;
+
+ vma = bfd_get_section_vma (abfd, section);
+ if (pc < vma)
+ return;
+
+ size = bfd_get_section_size (section);
+ if (pc >= vma + size)
+ return;
+
+ found = bfd_find_nearest_line (abfd, section, syms, pc - vma,
+ &filename, &functionname, &line);
+}
+
+static void
+translate_addresses (bfd *abfd, char *addr_hex, FILE *f, asymbol **syms)
+{
+ pc = bfd_scan_vma (addr_hex, NULL, 16);
+ found = FALSE;
+ bfd_map_over_sections (abfd, find_address_in_section, syms);
+
+ if (! found)
+ fprintf (f, "??");
+ else
+ fprintf (f, "%u", line);
+}
+
+/* Start a new compilation unit. */
+
+static bfd_boolean
+tg_start_compilation_unit (void * p, const char *fname ATTRIBUTE_UNUSED)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ free (info->filename);
+ /* Should it be relative? best way to do it here?. */
+ info->filename = strdup (fname);
+
+ return TRUE;
+}
+
+/* Start a source file within a compilation unit. */
+
+static bfd_boolean
+tg_start_source (void *p, const char *fname)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ free (info->filename);
+ /* Should it be relative? best way to do it here?. */
+ info->filename = strdup (fname);
+
+ return TRUE;
+}
+
+/* Push an enum type onto the type stack. */
+
+static bfd_boolean
+tg_enum_type (void *p, const char *tag, const char **names,
+ bfd_signed_vma *values)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ unsigned int i;
+ const char *name;
+ char ab[20];
+
+ if (! pr_enum_type (p, tag, names, values))
+ return FALSE;
+
+ name = tag ? tag : "unknown";
+ /* Generate an entry for the enum. */
+ if (tag)
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:e\ttype:%s\n", tag,
+ info->filename, info->stack->type);
+
+ /* Generate entries for the values. */
+ if (names != NULL)
+ {
+ for (i = 0; names[i] != NULL; i++)
+ {
+ print_vma (values[i], ab, FALSE, FALSE);
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:g\tenum:%s\tvalue:%s\n",
+ names[i], info->filename, name, ab);
+ }
+ }
+
+ return TRUE;
+}
+
+/* Start accumulating a struct type. */
+
+static bfd_boolean
+tg_start_struct_type (void *p, const char *tag, unsigned int id,
+ bfd_boolean structp,
+ unsigned int size ATTRIBUTE_UNUSED)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ const char *name;
+ char idbuf[20];
+
+ if (tag != NULL)
+ name = tag;
+ else
+ {
+ name = idbuf;
+ sprintf (idbuf, "%%anon%u", id);
+ }
+
+ if (! push_type (info, name))
+ return FALSE;
+
+ info->stack->flavor = structp ? "struct" : "union";
+
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:%c\n", name, info->filename,
+ info->stack->flavor[0]);
+
+ info->stack->visibility = DEBUG_VISIBILITY_PUBLIC;
+
+ return indent_type (info);
+}
+
+/* Output the visibility of a field in a struct. */
+
+static bfd_boolean
+tg_fix_visibility (struct pr_handle *info, enum debug_visibility visibility)
+{
+ assert (info->stack != NULL);
+
+ if (info->stack->visibility == visibility)
+ return TRUE;
+
+ assert (info->stack->visibility != DEBUG_VISIBILITY_IGNORE);
+
+ info->stack->visibility = visibility;
+
+ return TRUE;
+}
+
+/* Add a field to a struct type. */
+
+static bfd_boolean
+tg_struct_field (void *p, const char *name, bfd_vma bitpos ATTRIBUTE_UNUSED,
+ bfd_vma bitsize ATTRIBUTE_UNUSED,
+ enum debug_visibility visibility)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ if (! tg_fix_visibility (info, visibility))
+ return FALSE;
+
+ /* It happens, a bug? */
+ if (! name[0])
+ return TRUE;
+
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:m\ttype:%s\t%s:%s\taccess:%s\n",
+ name, info->filename, t, info->stack->flavor, info->stack->type,
+ visibility_name (visibility));
+
+ return TRUE;
+}
+
+/* Finish a struct type. */
+
+static bfd_boolean
+tg_end_struct_type (void *p ATTRIBUTE_UNUSED)
+{
+ assert (((struct pr_handle *) p)->stack != NULL);
+
+ return TRUE;
+}
+
+/* Start a class type. */
+
+static bfd_boolean
+tg_start_class_type (void *p, const char *tag, unsigned int id,
+ bfd_boolean structp, unsigned int size,
+ bfd_boolean vptr, bfd_boolean ownvptr)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *tv = NULL;
+ const char *name;
+
+ info->indent += 2;
+
+ if (vptr && ! ownvptr)
+ {
+ tv = pop_type (info);
+ if (tv == NULL)
+ return FALSE;
+ }
+
+ if (tag != NULL)
+ name = tag;
+ else
+ {
+ char idbuf[20];
+
+ sprintf (idbuf, "%%anon%u", id);
+ name = idbuf;
+ }
+
+ if (! push_type (info, name))
+ return FALSE;
+
+ info->stack->flavor = structp ? "class" : "union class";
+ info->stack->parents = NULL;
+ info->stack->num_parents = 0;
+
+ if (size != 0 || vptr || ownvptr || tag != NULL)
+ {
+ if (vptr)
+ {
+ if (! append_type (info, " vtable "))
+ return FALSE;
+ if (ownvptr)
+ {
+ if (! append_type (info, "self "))
+ return FALSE;
+ }
+ else
+ {
+ if (! append_type (info, tv)
+ || ! append_type (info, " "))
+ return FALSE;
+ }
+ }
+ }
+
+ info->stack->visibility = DEBUG_VISIBILITY_PRIVATE;
+
+ return TRUE;
+}
+
+/* Add a static member to a class. */
+
+static bfd_boolean
+tg_class_static_member (void *p, const char *name,
+ const char *physname ATTRIBUTE_UNUSED,
+ enum debug_visibility visibility)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+ int len_var, len_class;
+ char *full_name;
+
+ len_var = strlen (name);
+ len_class = strlen (info->stack->next->type);
+ full_name = (char *) xmalloc (len_var + len_class + 3);
+ if (! full_name)
+ return FALSE;
+ sprintf (full_name, "%s::%s", info->stack->next->type, name);
+
+ if (! substitute_type (info, full_name))
+ {
+ free (full_name);
+ return FALSE;
+ }
+
+ if (! prepend_type (info, "static "))
+ {
+ free (full_name);
+ return FALSE;
+ }
+
+ t = pop_type (info);
+ if (t == NULL)
+ {
+ free (full_name);
+ return FALSE;
+ }
+
+ if (! tg_fix_visibility (info, visibility))
+ {
+ free (t);
+ free (full_name);
+ return FALSE;
+ }
+
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:x\ttype:%s\tclass:%s\taccess:%s\n",
+ name, info->filename, t, info->stack->type,
+ visibility_name (visibility));
+ free (t);
+ free (full_name);
+
+ return TRUE;
+}
+
+/* Add a base class to a class. */
+
+static bfd_boolean
+tg_class_baseclass (void *p, bfd_vma bitpos ATTRIBUTE_UNUSED,
+ bfd_boolean is_virtual, enum debug_visibility visibility)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+ const char *prefix;
+
+ assert (info->stack != NULL && info->stack->next != NULL);
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ if (CONST_STRNEQ (t, "class "))
+ t += sizeof "class " - 1;
+
+ /* Push it back on to take advantage of the prepend_type and
+ append_type routines. */
+ if (! push_type (info, t))
+ return FALSE;
+
+ if (is_virtual)
+ {
+ if (! prepend_type (info, "virtual "))
+ return FALSE;
+ }
+
+ switch (visibility)
+ {
+ case DEBUG_VISIBILITY_PUBLIC:
+ prefix = "public ";
+ break;
+ case DEBUG_VISIBILITY_PROTECTED:
+ prefix = "protected ";
+ break;
+ case DEBUG_VISIBILITY_PRIVATE:
+ prefix = "private ";
+ break;
+ default:
+ prefix = "/* unknown visibility */ ";
+ break;
+ }
+
+ if (! prepend_type (info, prefix))
+ return FALSE;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ if (info->stack->num_parents && ! append_parent (info, ", "))
+ return FALSE;
+
+ if (! append_parent (info, t))
+ return FALSE;
+ info->stack->num_parents++;
+
+ free (t);
+
+ return TRUE;
+}
+
+/* Add a variant to a method. */
+
+static bfd_boolean
+tg_class_method_variant (void *p, const char *physname ATTRIBUTE_UNUSED,
+ enum debug_visibility visibility,
+ bfd_boolean constp, bfd_boolean volatilep,
+ bfd_vma voffset ATTRIBUTE_UNUSED,
+ bfd_boolean context)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *method_type;
+ char *context_type;
+ char *method_name;
+
+ assert (info->stack != NULL);
+ assert (info->stack->next != NULL);
+
+ /* Put the const and volatile qualifiers on the type. */
+ if (volatilep)
+ {
+ if (! append_type (info, " volatile"))
+ return FALSE;
+ }
+ if (constp)
+ {
+ if (! append_type (info, " const"))
+ return FALSE;
+ }
+
+ method_name = strdup (context ? info->stack->next->next->method
+ : info->stack->next->method);
+
+ /* Stick the name of the method into its type. */
+ if (! substitute_type (info, method_name))
+ {
+ free (method_name);
+ return FALSE;
+ }
+
+ /* Get the type. */
+ method_type = pop_type (info);
+ if (method_type == NULL)
+ {
+ free (method_name);
+ return FALSE;
+ }
+
+ /* Pull off the context type if there is one. */
+ if (! context)
+ context_type = NULL;
+ else
+ {
+ context_type = pop_type (info);
+ if (context_type == NULL)
+ {
+ free (method_type);
+ free (method_name);
+ return FALSE;
+ }
+ }
+
+ /* Now the top of the stack is the class. */
+ if (! tg_fix_visibility (info, visibility))
+ {
+ free (method_type);
+ free (method_name);
+ free (context_type);
+ return FALSE;
+ }
+
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:p\ttype:%s\tclass:%s\n",
+ method_name, info->filename, method_type, info->stack->type);
+ free (method_type);
+ free (method_name);
+ free (context_type);
+
+ return TRUE;
+}
+
+/* Add a static variant to a method. */
+
+static bfd_boolean
+tg_class_static_method_variant (void *p,
+ const char *physname ATTRIBUTE_UNUSED,
+ enum debug_visibility visibility,
+ bfd_boolean constp, bfd_boolean volatilep)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *method_type;
+ char *method_name;
+
+ assert (info->stack != NULL);
+ assert (info->stack->next != NULL);
+ assert (info->stack->next->method != NULL);
+
+ /* Put the const and volatile qualifiers on the type. */
+ if (volatilep)
+ {
+ if (! append_type (info, " volatile"))
+ return FALSE;
+ }
+ if (constp)
+ {
+ if (! append_type (info, " const"))
+ return FALSE;
+ }
+
+ /* Mark it as static. */
+ if (! prepend_type (info, "static "))
+ return FALSE;
+
+ method_name = strdup (info->stack->next->method);
+ /* Stick the name of the method into its type. */
+ if (! substitute_type (info, info->stack->next->method))
+ {
+ free (method_name);
+ return FALSE;
+ }
+
+ /* Get the type. */
+ method_type = pop_type (info);
+ if (method_type == NULL)
+ {
+ free (method_name);
+ return FALSE;
+ }
+
+ /* Now the top of the stack is the class. */
+ if (! tg_fix_visibility (info, visibility))
+ {
+ free (method_type);
+ free (method_name);
+ return FALSE;
+ }
+
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:p\ttype:%s\tclass:%s\taccess:%s\n",
+ method_name, info->filename, method_type, info->stack->type,
+ visibility_name (visibility));
+ free (method_type);
+ free (method_name);
+
+ return TRUE;
+}
+
+/* Finish up a class. */
+
+static bfd_boolean
+tg_end_class_type (void *p)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:c\ttype:%s", info->stack->type,
+ info->filename, info->stack->flavor);
+ if (info->stack->num_parents)
+ {
+ fprintf (info->f, "\tinherits:%s", info->stack->parents);
+ free (info->stack->parents);
+ }
+ fputc ('\n', info->f);
+
+ return tg_end_struct_type (p);
+}
+
+/* Push a type on the stack using a tag name. */
+
+static bfd_boolean
+tg_tag_type (void *p, const char *name, unsigned int id,
+ enum debug_type_kind kind)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ const char *t, *tag;
+ char idbuf[20];
+
+ switch (kind)
+ {
+ case DEBUG_KIND_STRUCT:
+ t = "struct ";
+ break;
+ case DEBUG_KIND_UNION:
+ t = "union ";
+ break;
+ case DEBUG_KIND_ENUM:
+ t = "enum ";
+ break;
+ case DEBUG_KIND_CLASS:
+ t = "class ";
+ break;
+ case DEBUG_KIND_UNION_CLASS:
+ t = "union class ";
+ break;
+ default:
+ abort ();
+ return FALSE;
+ }
+
+ if (! push_type (info, t))
+ return FALSE;
+ if (name != NULL)
+ tag = name;
+ else
+ {
+ sprintf (idbuf, "%%anon%u", id);
+ tag = idbuf;
+ }
+
+ if (! append_type (info, tag))
+ return FALSE;
+
+ return TRUE;
+}
+
+/* Output a typedef. */
+
+static bfd_boolean
+tg_typdef (void *p, const char *name)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *s;
+
+ s = pop_type (info);
+ if (s == NULL)
+ return FALSE;
+
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:t\ttype:%s\n", name,
+ info->filename, s);
+
+ free (s);
+
+ return TRUE;
+}
+
+/* Output a tag. The tag should already be in the string on the
+ stack, so all we have to do here is print it out. */
+
+static bfd_boolean
+tg_tag (void *p ATTRIBUTE_UNUSED, const char *name ATTRIBUTE_UNUSED)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+ free (t);
+
+ return TRUE;
+}
+
+/* Output an integer constant. */
+
+static bfd_boolean
+tg_int_constant (void *p, const char *name, bfd_vma val)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char ab[20];
+
+ indent (info);
+ print_vma (val, ab, FALSE, FALSE);
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:v\ttype:const int\tvalue:%s\n",
+ name, info->filename, ab);
+ return TRUE;
+}
+
+/* Output a floating point constant. */
+
+static bfd_boolean
+tg_float_constant (void *p, const char *name, double val)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+
+ indent (info);
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:v\ttype:const double\tvalue:%g\n",
+ name, info->filename, val);
+ return TRUE;
+}
+
+/* Output a typed constant. */
+
+static bfd_boolean
+tg_typed_constant (void *p, const char *name, bfd_vma val)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+ char ab[20];
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ indent (info);
+ print_vma (val, ab, FALSE, FALSE);
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:v\ttype:const %s\tvalue:%s\n",
+ name, info->filename, t, ab);
+
+ free (t);
+
+ return TRUE;
+}
+
+/* Output a variable. */
+
+static bfd_boolean
+tg_variable (void *p, const char *name, enum debug_var_kind kind,
+ bfd_vma val ATTRIBUTE_UNUSED)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t, *dname, *from_class;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ dname = NULL;
+ if (info->demangler)
+ dname = info->demangler (info->abfd, name, DMGL_ANSI | DMGL_PARAMS);
+
+ from_class = NULL;
+ if (dname != NULL)
+ {
+ char *sep;
+ sep = strstr (dname, "::");
+ if (sep)
+ {
+ *sep = 0;
+ name = sep + 2;
+ from_class = dname;
+ }
+ else
+ /* Obscure types as vts and type_info nodes. */
+ name = dname;
+ }
+
+ fprintf (info->f, "%s\t%s\t0;\"\tkind:v\ttype:%s", name, info->filename, t);
+
+ switch (kind)
+ {
+ case DEBUG_STATIC:
+ case DEBUG_LOCAL_STATIC:
+ fprintf (info->f, "\tfile:");
+ break;
+ case DEBUG_REGISTER:
+ fprintf (info->f, "\tregister:");
+ break;
+ default:
+ break;
+ }
+
+ if (from_class)
+ fprintf (info->f, "\tclass:%s", from_class);
+
+ if (dname)
+ free (dname);
+
+ fprintf (info->f, "\n");
+
+ free (t);
+
+ return TRUE;
+}
+
+/* Start outputting a function. */
+
+static bfd_boolean
+tg_start_function (void *p, const char *name, bfd_boolean global)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *dname;
+
+ if (! global)
+ info->stack->flavor = "static";
+ else
+ info->stack->flavor = NULL;
+
+ dname = NULL;
+ if (info->demangler)
+ dname = info->demangler (info->abfd, name, DMGL_ANSI | DMGL_PARAMS);
+
+ if (! substitute_type (info, dname ? dname : name))
+ return FALSE;
+
+ info->stack->method = NULL;
+ if (dname != NULL)
+ {
+ char *sep;
+ sep = strstr (dname, "::");
+ if (sep)
+ {
+ info->stack->method = dname;
+ *sep = 0;
+ name = sep + 2;
+ }
+ else
+ {
+ info->stack->method = "";
+ name = dname;
+ }
+ sep = strchr (name, '(');
+ if (sep)
+ *sep = 0;
+ /* Obscure functions as type_info function. */
+ }
+
+ info->stack->parents = strdup (name);
+
+ if (! info->stack->method && ! append_type (info, "("))
+ return FALSE;
+
+ info->parameter = 1;
+
+ return TRUE;
+}
+
+/* Output a function parameter. */
+
+static bfd_boolean
+tg_function_parameter (void *p, const char *name, enum debug_parm_kind kind,
+ bfd_vma val ATTRIBUTE_UNUSED)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char *t;
+
+ if (kind == DEBUG_PARM_REFERENCE
+ || kind == DEBUG_PARM_REF_REG)
+ {
+ if (! pr_reference_type (p))
+ return FALSE;
+ }
+
+ if (! substitute_type (info, name))
+ return FALSE;
+
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+
+ if (! info->stack->method)
+ {
+ if (info->parameter != 1 && ! append_type (info, ", "))
+ return FALSE;
+
+ if (kind == DEBUG_PARM_REG || kind == DEBUG_PARM_REF_REG)
+ if (! append_type (info, "register "))
+ return FALSE;
+
+ if (! append_type (info, t))
+ return FALSE;
+ }
+
+ free (t);
+
+ ++info->parameter;
+
+ return TRUE;
+}
+
+/* Start writing out a block. */
+
+static bfd_boolean
+tg_start_block (void *p, bfd_vma addr)
+{
+ struct pr_handle *info = (struct pr_handle *) p;
+ char ab[20], kind, *partof;
+ char *t;
+ bfd_boolean local;
+
+ if (info->parameter > 0)
+ {
+ info->parameter = 0;
+
+ /* Delayed name. */
+ fprintf (info->f, "%s\t%s\t", info->stack->parents, info->filename);
+ free (info->stack->parents);
+
+ print_vma (addr, ab, TRUE, TRUE);
+ translate_addresses (info->abfd, ab, info->f, info->syms);
+ local = info->stack->flavor != NULL;
+ if (info->stack->method && *info->stack->method)
+ {
+ kind = 'm';
+ partof = (char *) info->stack->method;
+ }
+ else
+ {
+ kind = 'f';
+ partof = NULL;
+ if (! info->stack->method && ! append_type (info, ")"))
+ return FALSE;
+ }
+ t = pop_type (info);
+ if (t == NULL)
+ return FALSE;
+ fprintf (info->f, ";\"\tkind:%c\ttype:%s", kind, t);
+ if (local)
+ fputs ("\tfile:", info->f);
+ if (partof)
+ {
+ fprintf (info->f, "\tclass:%s", partof);
+ free (partof);
+ }
+ fputc ('\n', info->f);
+ }
+
+ return TRUE;
+}
+
+/* Write out line number information. */
+
+static bfd_boolean
+tg_lineno (void *p ATTRIBUTE_UNUSED, const char *fname ATTRIBUTE_UNUSED,
+ unsigned long lineno ATTRIBUTE_UNUSED,
+ bfd_vma addr ATTRIBUTE_UNUSED)
+{
+ return TRUE;
+}
+
+/* Finish writing out a block. */
+
+static bfd_boolean
+tg_end_block (void *p ATTRIBUTE_UNUSED, bfd_vma addr ATTRIBUTE_UNUSED)
+{
+ return TRUE;
+}
+
+/* Convert the visibility value into a human readable name. */
+
+static const char *
+visibility_name (enum debug_visibility visibility)
+{
+ const char *s;
+
+ switch (visibility)
+ {
+ case DEBUG_VISIBILITY_PUBLIC:
+ s = "public";
+ break;
+ case DEBUG_VISIBILITY_PRIVATE:
+ s = "private";
+ break;
+ case DEBUG_VISIBILITY_PROTECTED:
+ s = "protected";
+ break;
+ case DEBUG_VISIBILITY_IGNORE:
+ s = "/* ignore */";
+ break;
+ default:
+ abort ();
+ return FALSE;
+ }
+ return s;
+}
diff --git a/binutils-2.24/binutils/ranlib.sh b/binutils-2.24/binutils/ranlib.sh
new file mode 100755
index 00000000..f6cee8a1
--- /dev/null
+++ b/binutils-2.24/binutils/ranlib.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+# A simple ranlib script, to use less disk space than a ranlib program.
+# Copyright 2004, 2007 Free Software Foundation, Inc.
+
+# This program 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 3 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. */
+
+ar s "$1"
diff --git a/binutils-2.24/binutils/rclex.c b/binutils-2.24/binutils/rclex.c
new file mode 100644
index 00000000..07ae1798
--- /dev/null
+++ b/binutils-2.24/binutils/rclex.c
@@ -0,0 +1,905 @@
+/* rclex.c -- lexer for Windows rc files parser */
+
+/* Copyright 1997, 1998, 1999, 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
+
+ Written by Kai Tietz, Onevision.
+
+ 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 3 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 lexer used by the Windows rc file parser. It basically
+ just recognized a bunch of keywords. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+#include "libiberty.h"
+#include "safe-ctype.h"
+#include "windres.h"
+#include "rcparse.h"
+
+#include <assert.h>
+
+/* 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 IGNORE_CPP(x) (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;
+
+struct rclex_keywords
+{
+ const char *name;
+ int tok;
+};
+
+#define K(KEY) { #KEY, KEY }
+#define KRT(KEY) { #KEY, RT_##KEY }
+
+static const struct rclex_keywords keywds[] =
+{
+ K(ACCELERATORS), K(ALT), K(ANICURSOR), K(ANIICON), K(ASCII),
+ K(AUTO3STATE), K(AUTOCHECKBOX), K(AUTORADIOBUTTON),
+ K(BEDIT), { "BEGIN", BEG }, K(BITMAP), K(BLOCK), K(BUTTON),
+ K(CAPTION), K(CHARACTERISTICS), K(CHECKBOX), K(CHECKED),
+ K(CLASS), K(COMBOBOX), K(CONTROL), K(CTEXT), K(CURSOR),
+ K(DEFPUSHBUTTON), K(DIALOG), K(DIALOGEX), K(DISCARDABLE),
+ K(DLGINCLUDE), K(DLGINIT),
+ K(EDITTEXT), K(END), K(EXSTYLE),
+ K(FILEFLAGS), K(FILEFLAGSMASK), K(FILEOS), K(FILESUBTYPE),
+ K(FILETYPE), K(FILEVERSION), K(FIXED), K(FONT), K(FONTDIR),
+ K(GRAYED), KRT(GROUP_CURSOR), KRT(GROUP_ICON), K(GROUPBOX),
+ K(HEDIT), K(HELP), K(HTML),
+ K(ICON), K(IEDIT), K(IMPURE), K(INACTIVE),
+ K(LANGUAGE), K(LISTBOX), K(LOADONCALL), K(LTEXT),
+ K(MANIFEST), K(MENU), K(MENUBARBREAK), K(MENUBREAK),
+ K(MENUEX), K(MENUITEM), K(MESSAGETABLE), K(MOVEABLE),
+ K(NOINVERT), K(NOT),
+ K(PLUGPLAY), K(POPUP), K(PRELOAD), K(PRODUCTVERSION),
+ K(PURE), K(PUSHBOX), K(PUSHBUTTON),
+ K(RADIOBUTTON), K(RCDATA), K(RTEXT),
+ K(SCROLLBAR), K(SEPARATOR), K(SHIFT), K(STATE3),
+ K(STRINGTABLE), K(STYLE),
+ K(TOOLBAR),
+ K(USERBUTTON),
+ K(VALUE), { "VERSION", VERSIONK }, K(VERSIONINFO),
+ K(VIRTKEY), K(VXD),
+ { NULL, 0 },
+};
+
+/* External input stream from resrc */
+extern FILE *cpp_pipe;
+
+/* Lexical scanner helpers. */
+static int rclex_lastch = -1;
+static size_t rclex_tok_max = 0;
+static size_t rclex_tok_pos = 0;
+static char *rclex_tok = NULL;
+
+static int
+rclex_translatekeyword (const char *key)
+{
+ if (key && ISUPPER (key[0]))
+ {
+ const struct rclex_keywords *kw = &keywds[0];
+
+ do
+ {
+ if (! strcmp (kw->name, key))
+ return kw->tok;
+ ++kw;
+ }
+ while (kw->name != NULL);
+ }
+ return STRING;
+}
+
+/* Handle a C preprocessor line. */
+
+static void
+cpp_line (void)
+{
+ const char *s = rclex_tok;
+ int line;
+ char *send, *fn;
+ size_t len, mlen;
+
+ ++s;
+ while (ISSPACE (*s))
+ ++s;
+
+ /* Check for #pragma code_page ( DEFAULT | <nr>). */
+ len = strlen (s);
+ mlen = strlen ("pragma");
+ if (len > mlen && memcmp (s, "pragma", mlen) == 0 && ISSPACE (s[mlen]))
+ {
+ const char *end;
+
+ s += mlen + 1;
+ while (ISSPACE (*s))
+ ++s;
+ len = strlen (s);
+ mlen = strlen ("code_page");
+ if (len <= mlen || memcmp (s, "code_page", mlen) != 0)
+ /* FIXME: We ought to issue a warning message about an unrecognised pragma. */
+ return;
+ s += mlen;
+ while (ISSPACE (*s))
+ ++s;
+ if (*s != '(')
+ /* FIXME: We ought to issue an error message about a malformed pragma. */
+ return;
+ ++s;
+ while (ISSPACE (*s))
+ ++s;
+ if (*s == 0 || (end = strchr (s, ')')) == NULL)
+ /* FIXME: We ought to issue an error message about a malformed pragma. */
+ return;
+ len = (size_t) (end - s);
+ fn = xmalloc (len + 1);
+ if (len)
+ memcpy (fn, s, len);
+ fn[len] = 0;
+ while (len > 0 && (fn[len - 1] > 0 && fn[len - 1] <= 0x20))
+ fn[--len] = 0;
+ if (! len || (len == strlen ("DEFAULT") && strcasecmp (fn, "DEFAULT") == 0))
+ wind_current_codepage = wind_default_codepage;
+ else if (len > 0)
+ {
+ rc_uint_type ncp;
+
+ if (fn[0] == '0' && (fn[1] == 'x' || fn[1] == 'X'))
+ ncp = (rc_uint_type) strtol (fn + 2, NULL, 16);
+ else
+ ncp = (rc_uint_type) strtol (fn, NULL, 10);
+ if (ncp == CP_UTF16 || ! unicode_is_valid_codepage (ncp))
+ fatal (_("invalid value specified for pragma code_page.\n"));
+ wind_current_codepage = ncp;
+ }
+ free (fn);
+ return;
+ }
+
+ 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 = 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;
+}
+
+/* Allocate a string of a given length. */
+
+static char *
+get_string (int len)
+{
+ struct alloc_string *as;
+
+ as = xmalloc (sizeof *as);
+ as->s = xmalloc (len);
+
+ as->next = strings;
+ strings = as;
+
+ return as->s;
+}
+
+/* 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 (rc_uint_type *len)
+{
+ const char *input = rclex_tok;
+ 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");
+ *s++ = '"';
+ ++t;
+ 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': 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;
+ if (! ISSPACE (*t))
+ rcparse_warning ("unexpected character after '\"'");
+ 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 unicode string of a given length. */
+
+static unichar *
+get_unistring (int len)
+{
+ return (unichar *) get_string (len * sizeof (unichar));
+}
+
+/* Handle a quoted unicode 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 unichar *
+handle_uniquotes (rc_uint_type *len)
+{
+ const char *input = rclex_tok;
+ unichar *ret, *s;
+ const char *t;
+ int ch;
+ int num_xdigits;
+
+ ret = get_unistring (strlen (input) + 1);
+
+ s = ret;
+ t = input;
+ if ((*t == 'L' || *t == 'l') && t[1] == '"')
+ t += 2;
+ else 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++ = (unichar) *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++ = (unichar) ch;
+ break;
+
+ case 'x': case 'X':
+ ++t;
+ ch = 0;
+ /* We only handle two byte chars here. Make sure
+ we finish an escape sequence like "/xB0ABC" after
+ the first two digits. */
+ num_xdigits = 4;
+ 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++ = (unichar) ch;
+ break;
+
+ default:
+ rcparse_warning ("unrecognized escape sequence");
+ *s++ = '\\';
+ *s++ = (unichar) *t++;
+ break;
+ }
+ }
+ else if (*t != '"')
+ *s++ = (unichar) *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;
+}
+
+/* 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;
+}
+
+static void
+rclex_tok_add_char (int ch)
+{
+ if (! rclex_tok || rclex_tok_max <= rclex_tok_pos)
+ {
+ char *h = xmalloc (rclex_tok_max + 9);
+
+ if (! h)
+ abort ();
+ if (rclex_tok)
+ {
+ memcpy (h, rclex_tok, rclex_tok_pos + 1);
+ free (rclex_tok);
+ }
+ else
+ rclex_tok_pos = 0;
+ rclex_tok_max += 8;
+ rclex_tok = h;
+ }
+ if (ch != -1)
+ rclex_tok[rclex_tok_pos++] = (char) ch;
+ rclex_tok[rclex_tok_pos] = 0;
+}
+
+static int
+rclex_readch (void)
+{
+ int r = -1;
+
+ if ((r = rclex_lastch) != -1)
+ rclex_lastch = -1;
+ else
+ {
+ char ch;
+ do
+ {
+ if (! cpp_pipe || feof (cpp_pipe)
+ || fread (&ch, 1, 1,cpp_pipe) != 1)
+ break;
+ r = ((int) ch) & 0xff;
+ }
+ while (r == 0 || r == '\r');
+ }
+ rclex_tok_add_char (r);
+ return r;
+}
+
+static int
+rclex_peekch (void)
+{
+ int r;
+
+ if ((r = rclex_lastch) == -1)
+ {
+ if ((r = rclex_readch ()) != -1)
+ {
+ rclex_lastch = r;
+ if (rclex_tok_pos > 0)
+ rclex_tok[--rclex_tok_pos] = 0;
+ }
+ }
+ return r;
+}
+
+static void
+rclex_string (void)
+{
+ int c;
+
+ while ((c = rclex_peekch ()) != -1)
+ {
+ if (c == '\n')
+ break;
+ if (c == '\\')
+ {
+ rclex_readch ();
+ if ((c = rclex_peekch ()) == -1 || c == '\n')
+ break;
+ rclex_readch ();
+ }
+ else if (rclex_readch () == '"')
+ {
+ /* PR 6714
+ Skip any whitespace after the end of the double quotes. */
+ do
+ {
+ c = rclex_peekch ();
+ if (ISSPACE (c))
+ rclex_readch ();
+ else
+ c = -1;
+ }
+ while (c != -1);
+
+ if (rclex_peekch () == '"')
+ rclex_readch ();
+ else
+ break;
+ }
+ }
+}
+
+static rc_uint_type
+read_digit (int ch)
+{
+ rc_uint_type base = 10;
+ rc_uint_type ret, val;
+ int warned = 0;
+
+ ret = 0;
+ if (ch == '0')
+ {
+ base = 8;
+ switch (rclex_peekch ())
+ {
+ case 'o': case 'O':
+ rclex_readch ();
+ base = 8;
+ break;
+
+ case 'x': case 'X':
+ rclex_readch ();
+ base = 16;
+ break;
+ }
+ }
+ else
+ ret = (rc_uint_type) (ch - '0');
+ while ((ch = rclex_peekch ()) != -1)
+ {
+ if (ISDIGIT (ch))
+ val = (rc_uint_type) (ch - '0');
+ else if (ch >= 'a' && ch <= 'f')
+ val = (rc_uint_type) ((ch - 'a') + 10);
+ else if (ch >= 'A' && ch <= 'F')
+ val = (rc_uint_type) ((ch - 'A') + 10);
+ else
+ break;
+ rclex_readch ();
+ if (! warned && val >= base)
+ {
+ warned = 1;
+ rcparse_warning ("digit exceeds base");
+ }
+ ret *= base;
+ ret += val;
+ }
+ return ret;
+}
+
+/* yyparser entry method. */
+
+int
+yylex (void)
+{
+ char *s;
+ unichar *us;
+ rc_uint_type length;
+ int ch;
+
+ /* Make sure that rclex_tok is initialized. */
+ if (! rclex_tok)
+ rclex_tok_add_char (-1);
+
+ do
+ {
+ do
+ {
+ /* Clear token. */
+ rclex_tok_pos = 0;
+ rclex_tok[0] = 0;
+
+ if ((ch = rclex_readch ()) == -1)
+ return -1;
+ if (ch == '\n')
+ ++rc_lineno;
+ }
+ while (ch <= 0x20);
+
+ switch (ch)
+ {
+ case '#':
+ while ((ch = rclex_peekch ()) != -1 && ch != '\n')
+ rclex_readch ();
+ cpp_line ();
+ ch = IGNORED_TOKEN;
+ break;
+
+ case '{':
+ ch = IGNORE_CPP (BEG);
+ break;
+
+ case '}':
+ ch = IGNORE_CPP (END);
+ break;
+
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ yylval.i.val = read_digit (ch);
+ yylval.i.dword = 0;
+ switch (rclex_peekch ())
+ {
+ case 'l': case 'L':
+ rclex_readch ();
+ yylval.i.dword = 1;
+ break;
+ }
+ ch = IGNORE_CPP (NUMBER);
+ break;
+ case '"':
+ rclex_string ();
+ ch = IGNORE_CPP ((! rcdata_mode ? QUOTEDSTRING : SIZEDSTRING));
+ if (ch == IGNORED_TOKEN)
+ break;
+ s = handle_quotes (&length);
+ if (! rcdata_mode)
+ yylval.s = s;
+ else
+ {
+ yylval.ss.length = length;
+ yylval.ss.s = s;
+ }
+ break;
+ case 'L': case 'l':
+ if (rclex_peekch () == '"')
+ {
+ rclex_readch ();
+ rclex_string ();
+ ch = IGNORE_CPP ((! rcdata_mode ? QUOTEDUNISTRING : SIZEDUNISTRING));
+ if (ch == IGNORED_TOKEN)
+ break;
+ us = handle_uniquotes (&length);
+ if (! rcdata_mode)
+ yylval.uni = us;
+ else
+ {
+ yylval.suni.length = length;
+ yylval.suni.s = us;
+ }
+ break;
+ }
+ /* Fall through. */
+ default:
+ if (ISIDST (ch) || ch=='$')
+ {
+ while ((ch = rclex_peekch ()) != -1
+ && (ISIDNUM (ch) || ch == '$' || ch == '.'
+ || ch == ':' || ch == '\\' || ch == '/'
+ || ch == '_' || ch == '-')
+ )
+ rclex_readch ();
+ ch = IGNORE_CPP (rclex_translatekeyword (rclex_tok));
+ if (ch == STRING)
+ {
+ s = get_string (strlen (rclex_tok) + 1);
+ strcpy (s, rclex_tok);
+ yylval.s = s;
+ }
+ else if (ch == BLOCK)
+ {
+ const char *hs = NULL;
+
+ switch (yylex ())
+ {
+ case STRING:
+ case QUOTEDSTRING:
+ hs = yylval.s;
+ break;
+ case SIZEDSTRING:
+ hs = yylval.s = yylval.ss.s;
+ break;
+ }
+ if (! hs)
+ {
+ rcparse_warning ("BLOCK expects a string as argument.");
+ ch = IGNORED_TOKEN;
+ }
+ else if (! strcmp (hs, "StringFileInfo"))
+ ch = BLOCKSTRINGFILEINFO;
+ else if (! strcmp (hs, "VarFileInfo"))
+ ch = BLOCKVARFILEINFO;
+ }
+ break;
+ }
+ ch = IGNORE_CPP (ch);
+ break;
+ }
+ }
+ while (ch == IGNORED_TOKEN);
+
+ return ch;
+}
diff --git a/binutils-2.24/binutils/rcparse.c b/binutils-2.24/binutils/rcparse.c
new file mode 100644
index 00000000..549ebeb6
--- /dev/null
+++ b/binutils-2.24/binutils/rcparse.c
@@ -0,0 +1,4663 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton 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.3"
+
+/* 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,
+ ANICURSOR = 298,
+ ANIICON = 299,
+ DLGINCLUDE = 300,
+ DLGINIT = 301,
+ FONTDIR = 302,
+ HTML = 303,
+ MANIFEST = 304,
+ PLUGPLAY = 305,
+ VXD = 306,
+ TOOLBAR = 307,
+ BUTTON = 308,
+ LANGUAGE = 309,
+ CHARACTERISTICS = 310,
+ VERSIONK = 311,
+ MENU = 312,
+ MENUEX = 313,
+ MENUITEM = 314,
+ SEPARATOR = 315,
+ POPUP = 316,
+ CHECKED = 317,
+ GRAYED = 318,
+ HELP = 319,
+ INACTIVE = 320,
+ MENUBARBREAK = 321,
+ MENUBREAK = 322,
+ MESSAGETABLE = 323,
+ RCDATA = 324,
+ STRINGTABLE = 325,
+ VERSIONINFO = 326,
+ FILEVERSION = 327,
+ PRODUCTVERSION = 328,
+ FILEFLAGSMASK = 329,
+ FILEFLAGS = 330,
+ FILEOS = 331,
+ FILETYPE = 332,
+ FILESUBTYPE = 333,
+ BLOCKSTRINGFILEINFO = 334,
+ BLOCKVARFILEINFO = 335,
+ VALUE = 336,
+ BLOCK = 337,
+ MOVEABLE = 338,
+ FIXED = 339,
+ PURE = 340,
+ IMPURE = 341,
+ PRELOAD = 342,
+ LOADONCALL = 343,
+ DISCARDABLE = 344,
+ NOT = 345,
+ QUOTEDUNISTRING = 346,
+ QUOTEDSTRING = 347,
+ STRING = 348,
+ NUMBER = 349,
+ SIZEDUNISTRING = 350,
+ SIZEDSTRING = 351,
+ IGNORED_TOKEN = 352,
+ NEG = 353
+ };
+#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 ANICURSOR 298
+#define ANIICON 299
+#define DLGINCLUDE 300
+#define DLGINIT 301
+#define FONTDIR 302
+#define HTML 303
+#define MANIFEST 304
+#define PLUGPLAY 305
+#define VXD 306
+#define TOOLBAR 307
+#define BUTTON 308
+#define LANGUAGE 309
+#define CHARACTERISTICS 310
+#define VERSIONK 311
+#define MENU 312
+#define MENUEX 313
+#define MENUITEM 314
+#define SEPARATOR 315
+#define POPUP 316
+#define CHECKED 317
+#define GRAYED 318
+#define HELP 319
+#define INACTIVE 320
+#define MENUBARBREAK 321
+#define MENUBREAK 322
+#define MESSAGETABLE 323
+#define RCDATA 324
+#define STRINGTABLE 325
+#define VERSIONINFO 326
+#define FILEVERSION 327
+#define PRODUCTVERSION 328
+#define FILEFLAGSMASK 329
+#define FILEFLAGS 330
+#define FILEOS 331
+#define FILETYPE 332
+#define FILESUBTYPE 333
+#define BLOCKSTRINGFILEINFO 334
+#define BLOCKVARFILEINFO 335
+#define VALUE 336
+#define BLOCK 337
+#define MOVEABLE 338
+#define FIXED 339
+#define PURE 340
+#define IMPURE 341
+#define PRELOAD 342
+#define LOADONCALL 343
+#define DISCARDABLE 344
+#define NOT 345
+#define QUOTEDUNISTRING 346
+#define QUOTEDSTRING 347
+#define STRING 348
+#define NUMBER 349
+#define SIZEDUNISTRING 350
+#define SIZEDSTRING 351
+#define IGNORED_TOKEN 352
+#define NEG 353
+
+
+
+
+/* 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, 2007, 2008,
+ 2011 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Cygnus Support.
+ Extended by Kai Tietz, Onevision.
+
+ 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 3 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@ixos-leipzig.de>. */
+
+#include "sysdep.h"
+#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 rc_res_res_info sub_res_info;
+
+/* Dialog information. This is built by the nonterminals styles and
+ controls. */
+
+static rc_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 rc_uint_type base_style;
+static rc_uint_type default_style;
+static rc_res_id class;
+static rc_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 rc_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
+typedef union YYSTYPE
+#line 69 "rcparse.y"
+{
+ rc_accelerator acc;
+ rc_accelerator *pacc;
+ rc_dialog_control *dialog_control;
+ rc_menuitem *menuitem;
+ struct
+ {
+ rc_rcdata_item *first;
+ rc_rcdata_item *last;
+ } rcdata;
+ rc_rcdata_item *rcdata_item;
+ rc_fixed_versioninfo *fixver;
+ rc_ver_info *verinfo;
+ rc_ver_stringtable *verstringtable;
+ rc_ver_stringinfo *verstring;
+ rc_ver_varinfo *vervar;
+ rc_toolbar_item *toobar_item;
+ rc_res_id id;
+ rc_res_res_info res_info;
+ struct
+ {
+ rc_uint_type on;
+ rc_uint_type off;
+ } memflags;
+ struct
+ {
+ rc_uint_type val;
+ /* Nonzero if this number was explicitly specified as long. */
+ int dword;
+ } i;
+ rc_uint_type il;
+ rc_uint_type is;
+ const char *s;
+ struct
+ {
+ rc_uint_type length;
+ const char *s;
+ } ss;
+ unichar *uni;
+ struct
+ {
+ rc_uint_type length;
+ const unichar *s;
+ } suni;
+}
+/* Line 193 of yacc.c. */
+#line 405 "rcparse.c"
+ YYSTYPE;
+# 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 216 of yacc.c. */
+#line 418 "rcparse.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && 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
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+ int i;
+#endif
+{
+ return i;
+}
+#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
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (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 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# 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
+{
+ yytype_int16 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 (yytype_int16) + 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 (YYID (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 (YYID (0))
+
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 2
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 830
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 112
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 102
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 276
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 520
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 353
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const yytype_uint8 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, 105, 100, 2,
+ 110, 111, 103, 101, 108, 102, 2, 104, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 109, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 99, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 98, 2, 106, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 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, 107
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const yytype_uint16 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, 287, 292, 293, 298, 299,
+ 303, 304, 309, 310, 315, 322, 331, 342, 354, 355,
+ 360, 361, 365, 366, 371, 372, 377, 378, 383, 384,
+ 389, 390, 395, 396, 400, 401, 406, 407, 423, 430,
+ 439, 449, 452, 453, 456, 458, 460, 461, 465, 466,
+ 470, 471, 475, 476, 480, 485, 490, 494, 501, 502,
+ 505, 510, 513, 520, 521, 525, 528, 530, 532, 534,
+ 536, 538, 540, 547, 548, 551, 554, 558, 564, 567,
+ 573, 580, 588, 598, 603, 604, 607, 608, 610, 612,
+ 614, 616, 620, 624, 628, 631, 632, 639, 640, 644,
+ 649, 652, 654, 656, 658, 660, 662, 664, 666, 668,
+ 670, 672, 679, 684, 693, 694, 698, 701, 708, 709,
+ 716, 723, 727, 731, 735, 739, 743, 744, 750, 758,
+ 759, 765, 766, 772, 773, 777, 779, 781, 783, 785,
+ 788, 790, 793, 794, 797, 801, 806, 810, 811, 814,
+ 815, 818, 820, 822, 824, 826, 828, 830, 832, 834,
+ 836, 838, 841, 843, 845, 847, 849, 851, 854, 856,
+ 859, 861, 864, 866, 869, 873, 878, 880, 884, 885,
+ 887, 890, 892, 894, 898, 901, 904, 908, 912, 916,
+ 920, 924, 928, 932, 936, 939, 941, 943, 947, 950,
+ 954, 958, 962, 966, 970, 974, 978
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yytype_int16 yyrhs[] =
+{
+ 113, 0, -1, -1, 113, 114, -1, 113, 120, -1,
+ 113, 121, -1, 113, 122, -1, 113, 162, -1, 113,
+ 163, -1, 113, 164, -1, 113, 165, -1, 113, 170,
+ -1, 113, 173, -1, 113, 178, -1, 113, 183, -1,
+ 113, 182, -1, 113, 185, -1, 113, 97, -1, 191,
+ 5, 194, 3, 115, 4, -1, -1, 115, 116, -1,
+ 117, 211, -1, 117, 211, 108, 118, -1, 92, -1,
+ 212, -1, 119, -1, 118, 108, 119, -1, 118, 119,
+ -1, 6, -1, 7, -1, 8, -1, 9, -1, 10,
+ -1, 11, -1, 191, 12, 196, 198, -1, 191, 13,
+ 195, 198, -1, -1, 191, 14, 196, 126, 212, 208,
+ 208, 208, 123, 127, 3, 128, 4, -1, -1, 191,
+ 15, 196, 126, 212, 208, 208, 208, 124, 127, 3,
+ 128, 4, -1, -1, 191, 15, 196, 126, 212, 208,
+ 208, 208, 208, 125, 127, 3, 128, 4, -1, -1,
+ 16, 109, 209, -1, -1, 127, 17, 199, -1, 127,
+ 18, 191, -1, 127, 19, 205, -1, 127, 16, 209,
+ -1, 127, 18, 199, -1, 127, 41, 209, 108, 199,
+ -1, 127, 41, 209, 108, 199, 208, -1, 127, 41,
+ 209, 108, 199, 208, 208, -1, 127, 41, 209, 108,
+ 199, 208, 208, 208, -1, 127, 57, 191, -1, 127,
+ 55, 209, -1, 127, 54, 209, 208, -1, 127, 56,
+ 209, -1, -1, 128, 129, -1, -1, 20, 153, 130,
+ 151, -1, -1, 21, 153, 131, 151, -1, -1, 22,
+ 153, 132, 151, -1, -1, 38, 153, 133, 151, -1,
+ -1, 23, 153, 134, 151, -1, -1, 24, 135, 151,
+ -1, 10, 153, 209, 152, 156, 208, 208, 208, 208,
+ 207, 155, -1, 10, 153, 209, 152, 156, 208, 208,
+ 208, 208, 208, 208, 155, -1, -1, 25, 153, 136,
+ 151, -1, -1, 26, 153, 137, 151, -1, -1, 27,
+ 138, 151, -1, -1, 28, 153, 139, 151, -1, -1,
+ 39, 153, 140, 151, -1, 42, 193, 209, 208, 208,
+ 155, -1, 42, 193, 209, 208, 208, 208, 208, 155,
+ -1, 42, 193, 209, 208, 208, 208, 208, 158, 207,
+ 155, -1, 42, 193, 209, 208, 208, 208, 208, 158,
+ 208, 208, 155, -1, -1, 40, 153, 141, 151, -1,
+ -1, 29, 142, 151, -1, -1, 30, 153, 143, 151,
+ -1, -1, 31, 153, 144, 151, -1, -1, 32, 153,
+ 145, 151, -1, -1, 33, 153, 146, 151, -1, -1,
+ 34, 153, 147, 151, -1, -1, 35, 148, 151, -1,
+ -1, 36, 153, 149, 151, -1, -1, 37, 193, 209,
+ 108, 209, 108, 209, 108, 209, 108, 209, 108, 150,
+ 205, 207, -1, 209, 208, 208, 208, 208, 155, -1,
+ 209, 208, 208, 208, 208, 160, 207, 155, -1, 209,
+ 208, 208, 208, 208, 160, 208, 208, 155, -1, 108,
+ 154, -1, -1, 154, 108, -1, 212, -1, 199, -1,
+ -1, 3, 174, 4, -1, -1, 108, 157, 205, -1,
+ -1, 108, 159, 205, -1, -1, 108, 161, 205, -1,
+ 191, 41, 195, 198, -1, 191, 42, 195, 198, -1,
+ 54, 209, 208, -1, 191, 57, 194, 3, 166, 4,
+ -1, -1, 166, 167, -1, 59, 199, 208, 168, -1,
+ 59, 60, -1, 61, 199, 168, 3, 166, 4, -1,
+ -1, 168, 108, 169, -1, 168, 169, -1, 62, -1,
+ 63, -1, 64, -1, 65, -1, 66, -1, 67, -1,
+ 191, 58, 194, 3, 171, 4, -1, -1, 171, 172,
+ -1, 59, 199, -1, 59, 199, 208, -1, 59, 199,
+ 208, 208, 207, -1, 59, 60, -1, 61, 199, 3,
+ 171, 4, -1, 61, 199, 208, 3, 171, 4, -1,
+ 61, 199, 208, 208, 3, 171, 4, -1, 61, 199,
+ 208, 208, 208, 207, 3, 171, 4, -1, 191, 68,
+ 196, 198, -1, -1, 175, 176, -1, -1, 177, -1,
+ 203, -1, 204, -1, 210, -1, 177, 108, 203, -1,
+ 177, 108, 204, -1, 177, 108, 210, -1, 177, 108,
+ -1, -1, 70, 194, 3, 179, 180, 4, -1, -1,
+ 180, 209, 202, -1, 180, 209, 108, 202, -1, 180,
+ 1, -1, 191, -1, 48, -1, 69, -1, 49, -1,
+ 50, -1, 51, -1, 45, -1, 46, -1, 43, -1,
+ 44, -1, 191, 181, 194, 3, 174, 4, -1, 191,
+ 181, 194, 198, -1, 191, 52, 194, 209, 208, 3,
+ 184, 4, -1, -1, 184, 53, 191, -1, 184, 60,
+ -1, 191, 71, 186, 3, 187, 4, -1, -1, 186,
+ 72, 209, 207, 207, 207, -1, 186, 73, 209, 207,
+ 207, 207, -1, 186, 74, 209, -1, 186, 75, 209,
+ -1, 186, 76, 209, -1, 186, 77, 209, -1, 186,
+ 78, 209, -1, -1, 187, 79, 3, 188, 4, -1,
+ 187, 80, 3, 81, 199, 190, 4, -1, -1, 188,
+ 82, 3, 189, 4, -1, -1, 189, 81, 199, 108,
+ 199, -1, -1, 190, 208, 208, -1, 212, -1, 192,
+ -1, 200, -1, 93, -1, 212, 108, -1, 192, -1,
+ 192, 108, -1, -1, 194, 197, -1, 194, 55, 209,
+ -1, 194, 54, 209, 208, -1, 194, 56, 209, -1,
+ -1, 195, 197, -1, -1, 196, 197, -1, 83, -1,
+ 84, -1, 85, -1, 86, -1, 87, -1, 88, -1,
+ 89, -1, 92, -1, 93, -1, 200, -1, 199, 200,
+ -1, 91, -1, 92, -1, 204, -1, 203, -1, 201,
+ -1, 202, 201, -1, 96, -1, 203, 96, -1, 95,
+ -1, 204, 95, -1, 206, -1, 90, 206, -1, 205,
+ 98, 206, -1, 205, 98, 90, 206, -1, 94, -1,
+ 110, 209, 111, -1, -1, 208, -1, 108, 209, -1,
+ 210, -1, 94, -1, 110, 210, 111, -1, 106, 210,
+ -1, 102, 210, -1, 210, 103, 210, -1, 210, 104,
+ 210, -1, 210, 105, 210, -1, 210, 101, 210, -1,
+ 210, 102, 210, -1, 210, 100, 210, -1, 210, 99,
+ 210, -1, 210, 98, 210, -1, 108, 212, -1, 213,
+ -1, 94, -1, 110, 210, 111, -1, 106, 210, -1,
+ 213, 103, 210, -1, 213, 104, 210, -1, 213, 105,
+ 210, -1, 213, 101, 210, -1, 213, 102, 210, -1,
+ 213, 100, 210, -1, 213, 99, 210, -1, 213, 98,
+ 210, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const yytype_uint16 yyrline[] =
+{
+ 0, 179, 179, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 201, 212,
+ 215, 236, 241, 253, 273, 283, 287, 292, 299, 303,
+ 308, 312, 316, 320, 329, 341, 355, 353, 380, 378,
+ 407, 405, 437, 440, 446, 448, 454, 458, 463, 467,
+ 471, 484, 499, 514, 529, 533, 537, 541, 547, 549,
+ 561, 560, 573, 572, 585, 584, 597, 596, 612, 611,
+ 624, 623, 637, 648, 658, 657, 670, 669, 682, 681,
+ 694, 693, 706, 705, 720, 725, 731, 737, 744, 743,
+ 759, 758, 771, 770, 783, 782, 794, 793, 806, 805,
+ 818, 817, 830, 829, 842, 841, 855, 853, 874, 885,
+ 896, 908, 919, 922, 926, 931, 941, 944, 954, 953,
+ 960, 959, 966, 965, 973, 985, 998, 1007, 1018, 1021,
+ 1038, 1042, 1046, 1054, 1057, 1061, 1068, 1072, 1076, 1080,
+ 1084, 1088, 1097, 1108, 1111, 1128, 1132, 1136, 1140, 1144,
+ 1148, 1152, 1156, 1166, 1179, 1179, 1191, 1195, 1202, 1210,
+ 1218, 1226, 1235, 1244, 1253, 1263, 1262, 1267, 1269, 1274,
+ 1279, 1287, 1291, 1296, 1301, 1306, 1311, 1316, 1321, 1326,
+ 1331, 1342, 1349, 1359, 1365, 1366, 1385, 1410, 1421, 1426,
+ 1433, 1440, 1445, 1450, 1455, 1460, 1475, 1478, 1482, 1490,
+ 1493, 1501, 1504, 1512, 1515, 1524, 1529, 1538, 1542, 1552,
+ 1557, 1561, 1572, 1578, 1584, 1589, 1594, 1605, 1610, 1622,
+ 1627, 1639, 1644, 1649, 1654, 1659, 1664, 1669, 1679, 1683,
+ 1691, 1696, 1711, 1715, 1724, 1728, 1740, 1745, 1761, 1765,
+ 1777, 1781, 1803, 1807, 1811, 1815, 1822, 1826, 1836, 1839,
+ 1848, 1857, 1866, 1870, 1874, 1879, 1884, 1889, 1894, 1899,
+ 1904, 1909, 1914, 1919, 1930, 1939, 1950, 1954, 1958, 1963,
+ 1968, 1973, 1978, 1983, 1988, 1993, 1998
+};
+#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", "ANICURSOR",
+ "ANIICON", "DLGINCLUDE", "DLGINIT", "FONTDIR", "HTML", "MANIFEST",
+ "PLUGPLAY", "VXD", "TOOLBAR", "BUTTON", "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", "QUOTEDUNISTRING", "QUOTEDSTRING", "STRING",
+ "NUMBER", "SIZEDUNISTRING", "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", "cresid", "optresidc", "resid",
+ "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", "optrcdata_data", "@28",
+ "optrcdata_data_int", "rcdata_data", "stringtable", "@29", "string_data",
+ "rcdata_id", "user", "toolbar", "toolbar_data", "versioninfo",
+ "fixedverinfo", "verblocks", "verstringtables", "vervals", "vertrans",
+ "id", "resname", "resref", "suboptions", "memflags_move_discard",
+ "memflags_move", "memflag", "file_name", "res_unicode_string_concat",
+ "res_unicode_string", "res_unicode_sizedstring",
+ "res_unicode_sizedstring_concat", "sizedstring", "sizedunistring",
+ "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 yytype_uint16 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, 124, 94,
+ 38, 43, 45, 42, 47, 37, 126, 353, 44, 61,
+ 40, 41
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 112, 113, 113, 113, 113, 113, 113, 113, 113,
+ 113, 113, 113, 113, 113, 113, 113, 113, 114, 115,
+ 115, 116, 116, 117, 117, 118, 118, 118, 119, 119,
+ 119, 119, 119, 119, 120, 121, 123, 122, 124, 122,
+ 125, 122, 126, 126, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 127, 127, 127, 127, 128, 128,
+ 130, 129, 131, 129, 132, 129, 133, 129, 134, 129,
+ 135, 129, 129, 129, 136, 129, 137, 129, 138, 129,
+ 139, 129, 140, 129, 129, 129, 129, 129, 141, 129,
+ 142, 129, 143, 129, 144, 129, 145, 129, 146, 129,
+ 147, 129, 148, 129, 149, 129, 150, 129, 151, 151,
+ 151, 152, 153, 153, 154, 154, 155, 155, 157, 156,
+ 159, 158, 161, 160, 162, 163, 164, 165, 166, 166,
+ 167, 167, 167, 168, 168, 168, 169, 169, 169, 169,
+ 169, 169, 170, 171, 171, 172, 172, 172, 172, 172,
+ 172, 172, 172, 173, 175, 174, 176, 176, 177, 177,
+ 177, 177, 177, 177, 177, 179, 178, 180, 180, 180,
+ 180, 181, 181, 181, 181, 181, 181, 181, 181, 181,
+ 181, 182, 182, 183, 184, 184, 184, 185, 186, 186,
+ 186, 186, 186, 186, 186, 186, 187, 187, 187, 188,
+ 188, 189, 189, 190, 190, 191, 191, 192, 192, 193,
+ 193, 193, 194, 194, 194, 194, 194, 195, 195, 196,
+ 196, 197, 197, 197, 197, 197, 197, 197, 198, 198,
+ 199, 199, 200, 200, 201, 201, 202, 202, 203, 203,
+ 204, 204, 205, 205, 205, 205, 206, 206, 207, 207,
+ 208, 209, 210, 210, 210, 210, 210, 210, 210, 210,
+ 210, 210, 210, 210, 211, 212, 213, 213, 213, 213,
+ 213, 213, 213, 213, 213, 213, 213
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const yytype_uint8 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, 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, 2, 0, 2, 1, 1, 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, 0, 2, 0, 1, 1, 1,
+ 1, 3, 3, 3, 2, 0, 6, 0, 3, 4,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 6, 4, 8, 0, 3, 2, 6, 0, 6,
+ 6, 3, 3, 3, 3, 3, 0, 5, 7, 0,
+ 5, 0, 5, 0, 3, 1, 1, 1, 1, 2,
+ 1, 2, 0, 2, 3, 4, 3, 0, 2, 0,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 1, 1, 1, 1, 2, 1, 2,
+ 1, 2, 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 yytype_uint16 yydefact[] =
+{
+ 2, 0, 1, 0, 212, 232, 233, 208, 266, 17,
+ 0, 0, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 15, 14, 16, 0, 206, 207, 205,
+ 265, 252, 0, 0, 0, 0, 251, 0, 268, 0,
+ 212, 219, 217, 219, 219, 217, 217, 179, 180, 177,
+ 178, 172, 174, 175, 176, 212, 212, 212, 219, 173,
+ 188, 212, 171, 0, 0, 0, 0, 0, 0, 0,
+ 0, 255, 254, 0, 0, 126, 0, 0, 0, 0,
+ 0, 0, 0, 0, 165, 0, 0, 0, 221, 222,
+ 223, 224, 225, 226, 227, 213, 267, 0, 0, 0,
+ 42, 42, 0, 0, 0, 0, 0, 0, 0, 0,
+ 276, 275, 274, 272, 273, 269, 270, 271, 253, 250,
+ 263, 262, 261, 259, 260, 256, 257, 258, 167, 0,
+ 214, 216, 19, 228, 229, 220, 34, 218, 35, 0,
+ 0, 0, 124, 125, 0, 128, 143, 153, 196, 0,
+ 0, 0, 0, 0, 0, 0, 154, 182, 0, 215,
+ 0, 0, 0, 0, 0, 0, 0, 0, 248, 248,
+ 191, 192, 193, 194, 195, 0, 156, 170, 166, 0,
+ 18, 23, 20, 0, 24, 43, 0, 0, 184, 127,
+ 0, 0, 129, 142, 0, 0, 144, 187, 0, 0,
+ 248, 249, 248, 181, 240, 238, 155, 157, 158, 159,
+ 160, 0, 236, 168, 235, 234, 0, 21, 0, 0,
+ 0, 131, 0, 230, 133, 148, 145, 0, 199, 0,
+ 248, 248, 164, 239, 241, 169, 237, 264, 0, 36,
+ 38, 183, 0, 186, 231, 133, 0, 146, 143, 0,
+ 0, 0, 189, 190, 161, 162, 163, 28, 29, 30,
+ 31, 32, 33, 22, 25, 44, 44, 40, 185, 130,
+ 128, 136, 137, 138, 139, 140, 141, 0, 135, 248,
+ 0, 143, 0, 197, 0, 203, 0, 27, 0, 0,
+ 44, 0, 134, 147, 149, 0, 143, 248, 201, 0,
+ 26, 58, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 58, 0, 132, 150, 0, 0, 0, 198, 0,
+ 0, 48, 45, 46, 49, 207, 0, 246, 0, 47,
+ 242, 0, 0, 55, 57, 54, 0, 58, 151, 143,
+ 200, 0, 204, 37, 112, 112, 112, 112, 112, 70,
+ 112, 112, 78, 112, 90, 112, 112, 112, 112, 112,
+ 102, 112, 0, 112, 112, 112, 0, 59, 243, 0,
+ 0, 0, 56, 39, 0, 0, 0, 0, 0, 115,
+ 114, 60, 62, 64, 68, 0, 74, 76, 0, 80,
+ 0, 92, 94, 96, 98, 100, 0, 104, 210, 0,
+ 0, 66, 82, 88, 0, 247, 0, 244, 50, 41,
+ 152, 0, 0, 113, 0, 0, 0, 0, 71, 0,
+ 0, 0, 79, 0, 91, 0, 0, 0, 0, 0,
+ 103, 0, 211, 0, 209, 0, 0, 0, 0, 245,
+ 51, 202, 0, 0, 61, 63, 65, 69, 0, 75,
+ 77, 81, 93, 95, 97, 99, 101, 105, 0, 67,
+ 83, 89, 0, 52, 111, 118, 0, 0, 0, 116,
+ 53, 0, 0, 0, 0, 154, 84, 0, 119, 0,
+ 116, 0, 0, 116, 0, 122, 108, 248, 0, 117,
+ 120, 85, 248, 248, 0, 116, 249, 0, 0, 116,
+ 249, 116, 249, 123, 109, 116, 0, 121, 86, 116,
+ 72, 116, 110, 0, 87, 73, 106, 0, 248, 107
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 1, 12, 160, 182, 183, 263, 264, 13, 14,
+ 15, 265, 266, 290, 140, 288, 320, 367, 414, 415,
+ 416, 435, 417, 385, 420, 421, 388, 423, 436, 437,
+ 390, 425, 426, 427, 428, 429, 396, 431, 517, 418,
+ 443, 377, 378, 476, 466, 471, 492, 498, 487, 494,
+ 16, 17, 18, 19, 165, 192, 246, 278, 20, 166,
+ 196, 21, 175, 176, 206, 207, 22, 128, 158, 61,
+ 23, 24, 220, 25, 108, 167, 250, 317, 299, 26,
+ 27, 399, 37, 99, 98, 95, 136, 379, 223, 212,
+ 213, 214, 215, 329, 330, 200, 201, 419, 36, 217,
+ 380, 30
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -446
+static const yytype_int16 yypact[] =
+{
+ -446, 75, -446, 317, -446, -446, -446, -446, -446, -446,
+ 317, 317, -446, -446, -446, -446, -446, -446, -446, -446,
+ -446, -446, -446, -446, -446, -446, 463, -446, -446, -446,
+ 589, -446, 317, 317, 317, -93, 626, 209, -446, 437,
+ -446, -446, -446, -446, -446, -446, -446, -446, -446, -446,
+ -446, -446, -446, -446, -446, -446, -446, -446, -446, -446,
+ -446, -446, -446, 317, 317, 317, 317, 317, 317, 317,
+ 317, -446, -446, 526, 317, -446, 317, 317, 317, 317,
+ 317, 317, 317, 317, -446, 317, 317, 317, -446, -446,
+ -446, -446, -446, -446, -446, -446, -446, 267, 675, 675,
+ 275, 275, 675, 675, 491, 404, 441, 675, 168, 256,
+ 719, 379, 397, 213, 213, -446, -446, -446, -446, -446,
+ 719, 379, 397, 213, 213, -446, -446, -446, -446, -93,
+ -446, -446, -446, -446, -446, -446, -446, -446, -446, -65,
+ 144, 144, -446, -446, -93, -446, -446, -446, -446, 317,
+ 317, 317, 317, 317, 317, 317, -446, -446, 18, -446,
+ 21, 317, -93, -93, 31, 140, 155, 126, -93, -93,
+ -446, -446, -446, -446, -446, 47, 177, -446, -446, 212,
+ -446, -446, -446, -34, -446, -446, -93, -93, -446, -446,
+ -36, -5, -446, -446, -25, -5, -446, -446, 119, 131,
+ -93, -446, -93, -446, -446, -446, -446, 54, 68, 84,
+ 626, 2, -446, 2, 68, 84, 144, 87, -93, -93,
+ 25, -446, 95, -446, -5, -446, 95, 62, -446, 102,
+ -93, -93, 177, -446, -446, 2, -446, -446, 552, -446,
+ -93, -446, 306, -446, -446, -446, 76, -93, -446, 8,
+ 6, -5, -446, -446, 68, 84, 626, -446, -446, -446,
+ -446, -446, -446, 167, -446, -446, -446, -446, -446, 271,
+ -446, -446, -446, -446, -446, -446, -446, 763, -446, -93,
+ 161, -446, 11, -446, 197, -5, 552, -446, 374, 548,
+ -446, 178, -446, -446, -446, 190, -446, -93, -446, 3,
+ -446, -446, 317, -5, 306, -47, 317, 317, 317, 317,
+ 306, -446, 565, -446, -446, 194, 201, -1, -446, -93,
+ 639, -446, -5, -446, -5, 143, -33, -446, 317, 110,
+ -446, 105, -93, -446, -446, -446, 676, -446, -446, -446,
+ -446, -5, -446, -446, 311, 311, 311, 311, 311, -446,
+ 311, 311, -446, 311, -446, 311, 311, 311, 311, 311,
+ -446, 311, 306, 311, 311, 311, 306, -446, -446, 104,
+ -42, -5, -446, -446, 713, 207, 99, 317, 113, -5,
+ -446, -446, -446, -446, -446, 317, -446, -446, 317, -446,
+ 317, -446, -446, -446, -446, -446, 317, -446, 115, 317,
+ 120, -446, -446, -446, 317, -446, -33, -446, 95, -446,
+ -446, -5, 152, -446, 317, 317, 317, 317, -446, -93,
+ 317, 317, -446, 317, -446, 317, 317, 317, 317, 317,
+ -446, 317, -446, 153, -446, 317, 317, 317, -93, -446,
+ -93, -5, 311, 159, -446, -446, -446, -446, -93, -446,
+ -446, -446, -446, -446, -446, -446, -446, -446, 317, -446,
+ -446, -446, -93, -93, -446, -446, -93, -93, 173, 15,
+ -446, -47, -93, -93, 317, -446, -446, -93, 110, -93,
+ 27, 180, 244, 29, -93, -446, -446, -93, 317, -446,
+ -446, -446, -93, -93, -47, 273, -93, 192, -47, 273,
+ -93, 273, -93, 110, -446, 273, 317, 110, -446, 273,
+ -446, 273, -446, 193, -446, -446, -446, -47, -75, -446
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yytype_int16 yypgoto[] =
+{
+ -446, -446, -446, -446, -446, -446, -446, -236, -446, -446,
+ -446, -446, -446, -446, 184, -262, -273, -446, -446, -446,
+ -446, -446, -446, -446, -446, -446, -446, -446, -446, -446,
+ -446, -446, -446, -446, -446, -446, -446, -446, -446, 219,
+ -446, 442, -123, 274, -446, -446, -446, -446, -446, -446,
+ -446, -446, -446, -446, 77, -446, 101, 88, -446, -239,
+ -446, -446, -109, -446, -446, -446, -446, -446, -446, -446,
+ -446, -446, -446, -446, -446, -446, -446, -446, -446, -24,
+ -245, 4, 169, 211, 270, 710, 175, -178, 5, -173,
+ 157, -156, -122, -445, -325, -161, -30, -3, 26, -446,
+ 20, -446
+};
+
+/* 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 -231
+static const yytype_int16 yytable[] =
+{
+ 35, 368, 62, 340, 289, 75, 28, 318, 202, 280,
+ 283, 281, 222, 224, 296, 74, 226, 227, 475, 177,
+ 208, 29, 178, 370, 221, 180, 478, 287, 312, 241,
+ 475, 28, 475, 74, 188, 225, 38, 39, 336, 230,
+ 236, 231, 295, 326, 161, 407, 29, 327, 406, 503,
+ 300, 203, 327, 507, 209, 5, 6, 315, 71, 72,
+ 73, 327, 236, 328, 374, 248, 5, 6, 328, 252,
+ 253, 119, 518, 285, 216, 2, 254, 328, 242, 270,
+ 341, 439, 129, 130, 131, 243, 5, 6, 284, 110,
+ 111, 112, 113, 114, 115, 116, 117, 204, 205, 159,
+ 375, 144, 120, 121, 122, 123, 124, 125, 126, 127,
+ 255, 74, 31, 181, 164, 8, 74, 398, 293, 74,
+ 32, 398, 228, 74, 33, 322, 324, 10, 34, 3,
+ 197, 11, 186, 187, 229, 485, 316, 490, 271, 272,
+ 273, 274, 275, 276, 189, 4, 168, 169, 170, 171,
+ 172, 173, 174, 5, 6, 179, 218, 219, 185, 193,
+ 162, 163, 232, 376, 233, 294, 5, 6, 7, 8,
+ 74, 148, 9, 257, 258, 259, 260, 261, 262, 234,
+ 184, 10, 313, 251, 277, 11, 5, 6, 239, 240,
+ 5, 6, 245, 408, 314, 238, 247, 249, 338, 190,
+ 298, 191, 210, 74, 339, 198, 199, 411, 370, 97,
+ 267, 410, 84, 371, 194, 405, 195, 279, 268, 282,
+ 194, 413, 195, 432, 104, 105, 106, 244, 434, 244,
+ 109, 244, 244, 441, -230, -230, 237, 190, 8, 191,
+ 149, 150, 151, 152, 153, 154, 155, 28, 489, 194,
+ 10, 195, 297, 194, 11, 195, 102, 103, 256, 156,
+ 442, 458, 29, 85, 86, 87, 194, 465, 195, 319,
+ 132, 31, 204, 205, 138, 286, 475, 142, 143, 32,
+ 323, 474, 147, 33, 157, 141, 335, 34, 488, 342,
+ 244, 139, 88, 89, 90, 91, 92, 93, 94, 321,
+ 506, 516, 372, 331, 332, 333, 334, 204, 205, 325,
+ 85, 86, 87, 100, 101, 28, 81, 82, 83, 464,
+ 211, 85, 86, 87, 29, 369, 495, 244, 107, 244,
+ 29, 499, 501, 271, 272, 273, 274, 275, 276, 88,
+ 89, 90, 91, 92, 93, 94, 269, 291, 133, 134,
+ 88, 89, 90, 91, 92, 93, 94, 519, 88, 89,
+ 90, 91, 92, 93, 94, 292, 482, 28, 235, 0,
+ 404, 28, 0, 0, 412, 0, 0, 301, 440, 277,
+ 0, 244, 400, 0, 244, 0, 400, 0, 0, 448,
+ 302, 303, 304, 305, 0, 0, 433, 5, 6, 7,
+ 8, 438, 5, 6, 0, 8, 0, 145, 462, 0,
+ 463, 31, 10, 244, 0, 306, 11, 10, 467, 32,
+ 0, 11, 0, 33, 0, 0, 0, 34, 307, 308,
+ 309, 310, 469, 470, 0, 0, 472, 473, 0, 477,
+ 0, 0, 479, 480, 146, 0, 244, 483, 0, 484,
+ 0, 0, 0, 0, 493, 468, 0, 496, 85, 86,
+ 87, 0, 500, 502, 0, 0, 505, 0, 40, 0,
+ 509, 481, 511, 0, 0, 41, 42, 43, 44, 78,
+ 79, 80, 81, 82, 83, 497, 0, 88, 89, 90,
+ 91, 92, 93, 94, 0, 85, 86, 87, 79, 80,
+ 81, 82, 83, 513, 45, 46, 47, 48, 49, 50,
+ 0, 51, 52, 53, 54, 55, 0, 0, 0, 0,
+ 56, 57, 0, 0, 88, 89, 90, 91, 92, 93,
+ 94, 58, 59, 0, 60, 76, 77, 78, 79, 80,
+ 81, 82, 83, 0, 0, 85, 86, 87, 96, 0,
+ 0, 311, 0, 0, 5, 6, 7, 8, 257, 258,
+ 259, 260, 261, 262, 302, 303, 304, 305, 337, 10,
+ 0, 0, 0, 11, 88, 89, 90, 91, 92, 93,
+ 94, 302, 303, 304, 305, 31, 0, 0, 0, 306,
+ 0, 0, 0, 32, 0, 0, 0, 33, 0, 0,
+ 0, 34, 307, 308, 309, 310, 306, 422, 0, 424,
+ 0, 0, 0, 0, 0, 430, 0, 0, 0, 307,
+ 308, 309, 310, 0, 76, 77, 78, 79, 80, 81,
+ 82, 83, 0, 444, 445, 446, 447, 118, 0, 449,
+ 450, 0, 451, 343, 452, 453, 454, 455, 456, 344,
+ 457, 0, 0, 0, 459, 460, 461, 0, 0, 345,
+ 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 373, 366, 0, 0, 0, 0, 344, 63, 64, 65,
+ 66, 67, 68, 69, 70, 0, 345, 346, 347, 348,
+ 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
+ 359, 360, 361, 362, 363, 364, 365, 409, 366, 0,
+ 0, 0, 0, 344, 76, 77, 78, 79, 80, 81,
+ 82, 83, 0, 345, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 486, 366, 0, 491, 88, 89,
+ 90, 91, 92, 93, 94, 0, 0, 133, 134, 504,
+ 0, 0, 0, 508, 0, 510, 0, 0, 0, 512,
+ 0, 0, 0, 514, 0, 515, 0, 381, 382, 383,
+ 384, 0, 386, 387, 0, 389, 0, 391, 392, 393,
+ 394, 395, 0, 397, 0, 401, 402, 403, 135, 137,
+ 135, 135, 137, 137, 0, 0, 0, 135, 77, 78,
+ 79, 80, 81, 82, 83, 271, 272, 273, 274, 275,
+ 276
+};
+
+static const yytype_int16 yycheck[] =
+{
+ 3, 326, 26, 4, 266, 35, 1, 4, 169, 248,
+ 4, 3, 190, 191, 3, 108, 194, 195, 3, 1,
+ 176, 1, 4, 98, 60, 4, 471, 263, 290, 4,
+ 3, 26, 3, 108, 3, 60, 10, 11, 311, 200,
+ 213, 202, 281, 90, 109, 370, 26, 94, 90, 494,
+ 286, 4, 94, 498, 176, 91, 92, 296, 32, 33,
+ 34, 94, 235, 110, 337, 3, 91, 92, 110, 230,
+ 231, 74, 517, 251, 108, 0, 232, 110, 53, 3,
+ 81, 406, 85, 86, 87, 60, 91, 92, 82, 63,
+ 64, 65, 66, 67, 68, 69, 70, 95, 96, 129,
+ 339, 104, 76, 77, 78, 79, 80, 81, 82, 83,
+ 232, 108, 94, 92, 144, 94, 108, 362, 279, 108,
+ 102, 366, 3, 108, 106, 303, 304, 106, 110, 54,
+ 4, 110, 162, 163, 3, 108, 297, 108, 62, 63,
+ 64, 65, 66, 67, 4, 70, 149, 150, 151, 152,
+ 153, 154, 155, 91, 92, 158, 186, 187, 161, 4,
+ 140, 141, 108, 341, 96, 4, 91, 92, 93, 94,
+ 108, 3, 97, 6, 7, 8, 9, 10, 11, 95,
+ 160, 106, 4, 81, 108, 110, 91, 92, 218, 219,
+ 91, 92, 222, 371, 4, 108, 226, 227, 4, 59,
+ 3, 61, 176, 108, 3, 79, 80, 108, 98, 40,
+ 240, 4, 3, 108, 59, 111, 61, 247, 242, 249,
+ 59, 108, 61, 108, 55, 56, 57, 222, 108, 224,
+ 61, 226, 227, 411, 91, 92, 216, 59, 94, 61,
+ 72, 73, 74, 75, 76, 77, 78, 242, 4, 59,
+ 106, 61, 282, 59, 110, 61, 45, 46, 232, 3,
+ 108, 108, 242, 54, 55, 56, 59, 108, 61, 299,
+ 3, 94, 95, 96, 99, 108, 3, 102, 103, 102,
+ 304, 108, 107, 106, 109, 101, 310, 110, 108, 319,
+ 285, 16, 83, 84, 85, 86, 87, 88, 89, 302,
+ 108, 108, 332, 306, 307, 308, 309, 95, 96, 304,
+ 54, 55, 56, 43, 44, 310, 103, 104, 105, 442,
+ 108, 54, 55, 56, 304, 328, 487, 322, 58, 324,
+ 310, 492, 493, 62, 63, 64, 65, 66, 67, 83,
+ 84, 85, 86, 87, 88, 89, 245, 270, 92, 93,
+ 83, 84, 85, 86, 87, 88, 89, 518, 83, 84,
+ 85, 86, 87, 88, 89, 277, 475, 362, 211, -1,
+ 366, 366, -1, -1, 377, -1, -1, 3, 408, 108,
+ -1, 376, 362, -1, 379, -1, 366, -1, -1, 419,
+ 16, 17, 18, 19, -1, -1, 399, 91, 92, 93,
+ 94, 404, 91, 92, -1, 94, -1, 3, 438, -1,
+ 440, 94, 106, 408, -1, 41, 110, 106, 448, 102,
+ -1, 110, -1, 106, -1, -1, -1, 110, 54, 55,
+ 56, 57, 462, 463, -1, -1, 466, 467, -1, 469,
+ -1, -1, 472, 473, 3, -1, 441, 477, -1, 479,
+ -1, -1, -1, -1, 484, 458, -1, 487, 54, 55,
+ 56, -1, 492, 493, -1, -1, 496, -1, 5, -1,
+ 500, 474, 502, -1, -1, 12, 13, 14, 15, 100,
+ 101, 102, 103, 104, 105, 488, -1, 83, 84, 85,
+ 86, 87, 88, 89, -1, 54, 55, 56, 101, 102,
+ 103, 104, 105, 506, 41, 42, 43, 44, 45, 46,
+ -1, 48, 49, 50, 51, 52, -1, -1, -1, -1,
+ 57, 58, -1, -1, 83, 84, 85, 86, 87, 88,
+ 89, 68, 69, -1, 71, 98, 99, 100, 101, 102,
+ 103, 104, 105, -1, -1, 54, 55, 56, 111, -1,
+ -1, 3, -1, -1, 91, 92, 93, 94, 6, 7,
+ 8, 9, 10, 11, 16, 17, 18, 19, 3, 106,
+ -1, -1, -1, 110, 83, 84, 85, 86, 87, 88,
+ 89, 16, 17, 18, 19, 94, -1, -1, -1, 41,
+ -1, -1, -1, 102, -1, -1, -1, 106, -1, -1,
+ -1, 110, 54, 55, 56, 57, 41, 388, -1, 390,
+ -1, -1, -1, -1, -1, 396, -1, -1, -1, 54,
+ 55, 56, 57, -1, 98, 99, 100, 101, 102, 103,
+ 104, 105, -1, 414, 415, 416, 417, 111, -1, 420,
+ 421, -1, 423, 4, 425, 426, 427, 428, 429, 10,
+ 431, -1, -1, -1, 435, 436, 437, -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, 98, 99, 100,
+ 101, 102, 103, 104, 105, -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, 98, 99, 100, 101, 102, 103,
+ 104, 105, -1, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 480, 42, -1, 483, 83, 84,
+ 85, 86, 87, 88, 89, -1, -1, 92, 93, 495,
+ -1, -1, -1, 499, -1, 501, -1, -1, -1, 505,
+ -1, -1, -1, 509, -1, 511, -1, 345, 346, 347,
+ 348, -1, 350, 351, -1, 353, -1, 355, 356, 357,
+ 358, 359, -1, 361, -1, 363, 364, 365, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, 107, 99, 100,
+ 101, 102, 103, 104, 105, 62, 63, 64, 65, 66,
+ 67
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint8 yystos[] =
+{
+ 0, 113, 0, 54, 70, 91, 92, 93, 94, 97,
+ 106, 110, 114, 120, 121, 122, 162, 163, 164, 165,
+ 170, 173, 178, 182, 183, 185, 191, 192, 200, 212,
+ 213, 94, 102, 106, 110, 209, 210, 194, 210, 210,
+ 5, 12, 13, 14, 15, 41, 42, 43, 44, 45,
+ 46, 48, 49, 50, 51, 52, 57, 58, 68, 69,
+ 71, 181, 191, 98, 99, 100, 101, 102, 103, 104,
+ 105, 210, 210, 210, 108, 208, 98, 99, 100, 101,
+ 102, 103, 104, 105, 3, 54, 55, 56, 83, 84,
+ 85, 86, 87, 88, 89, 197, 111, 194, 196, 195,
+ 196, 196, 195, 195, 194, 194, 194, 196, 186, 194,
+ 210, 210, 210, 210, 210, 210, 210, 210, 111, 209,
+ 210, 210, 210, 210, 210, 210, 210, 210, 179, 209,
+ 209, 209, 3, 92, 93, 197, 198, 197, 198, 16,
+ 126, 126, 198, 198, 209, 3, 3, 198, 3, 72,
+ 73, 74, 75, 76, 77, 78, 3, 198, 180, 208,
+ 115, 109, 212, 212, 208, 166, 171, 187, 209, 209,
+ 209, 209, 209, 209, 209, 174, 175, 1, 4, 209,
+ 4, 92, 116, 117, 212, 209, 208, 208, 3, 4,
+ 59, 61, 167, 4, 59, 61, 172, 4, 79, 80,
+ 207, 208, 207, 4, 95, 96, 176, 177, 203, 204,
+ 210, 108, 201, 202, 203, 204, 108, 211, 208, 208,
+ 184, 60, 199, 200, 199, 60, 199, 199, 3, 3,
+ 207, 207, 108, 96, 95, 202, 201, 212, 108, 208,
+ 208, 4, 53, 60, 200, 208, 168, 208, 3, 208,
+ 188, 81, 207, 207, 203, 204, 210, 6, 7, 8,
+ 9, 10, 11, 118, 119, 123, 124, 208, 191, 168,
+ 3, 62, 63, 64, 65, 66, 67, 108, 169, 208,
+ 171, 3, 208, 4, 82, 199, 108, 119, 127, 127,
+ 125, 166, 169, 207, 4, 171, 3, 208, 3, 190,
+ 119, 3, 16, 17, 18, 19, 41, 54, 55, 56,
+ 57, 3, 127, 4, 4, 171, 207, 189, 4, 208,
+ 128, 209, 199, 191, 199, 200, 90, 94, 110, 205,
+ 206, 209, 209, 209, 209, 191, 128, 3, 4, 3,
+ 4, 81, 208, 4, 10, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 42, 129, 206, 209,
+ 98, 108, 208, 4, 128, 171, 199, 153, 154, 199,
+ 212, 153, 153, 153, 153, 135, 153, 153, 138, 153,
+ 142, 153, 153, 153, 153, 153, 148, 153, 192, 193,
+ 212, 153, 153, 153, 193, 111, 90, 206, 199, 4,
+ 4, 108, 209, 108, 130, 131, 132, 134, 151, 209,
+ 136, 137, 151, 139, 151, 143, 144, 145, 146, 147,
+ 151, 149, 108, 209, 108, 133, 140, 141, 209, 206,
+ 208, 199, 108, 152, 151, 151, 151, 151, 208, 151,
+ 151, 151, 151, 151, 151, 151, 151, 151, 108, 151,
+ 151, 151, 208, 208, 154, 108, 156, 208, 209, 208,
+ 208, 157, 208, 208, 108, 3, 155, 208, 205, 208,
+ 208, 209, 174, 208, 208, 108, 155, 160, 108, 4,
+ 108, 155, 158, 208, 161, 207, 208, 209, 159, 207,
+ 208, 207, 208, 205, 155, 208, 108, 205, 155, 208,
+ 155, 208, 155, 209, 155, 155, 108, 150, 205, 207
+};
+
+#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 (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (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 (YYID (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 (YYID (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 defined YYLTYPE_IS_TRIVIAL && 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 (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ yytype_int16 *bottom;
+ yytype_int16 *top;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; 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 (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+ YYSTYPE *yyvsp;
+ int yyrule;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
+ fprintf (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule); \
+} while (YYID (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. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# 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. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+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 == '"')
+ {
+ YYSIZE_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
+
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
+ else
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { 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 + 1;
+ 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)
+ return YYSIZE_MAXIMUM;
+
+ if (yyresult)
+ {
+ /* 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 = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+#endif /* YYERROR_VERBOSE */
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+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
+{
+ YYUSE (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 __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+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;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+ /* 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. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ 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;
+ yytype_int16 *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;
+
+ {
+ yytype_int16 *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. */
+
+ /* 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;
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ 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 202 "rcparse.y"
+ {
+ define_accelerator ((yyvsp[(1) - (6)].id), &(yyvsp[(3) - (6)].res_info), (yyvsp[(5) - (6)].pacc));
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 19:
+#line 212 "rcparse.y"
+ {
+ (yyval.pacc) = NULL;
+ }
+ break;
+
+ case 20:
+#line 216 "rcparse.y"
+ {
+ rc_accelerator *a;
+
+ a = (rc_accelerator *) res_alloc (sizeof *a);
+ *a = (yyvsp[(2) - (2)].acc);
+ if ((yyvsp[(1) - (2)].pacc) == NULL)
+ (yyval.pacc) = a;
+ else
+ {
+ rc_accelerator **pp;
+
+ for (pp = &(yyvsp[(1) - (2)].pacc)->next; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = a;
+ (yyval.pacc) = (yyvsp[(1) - (2)].pacc);
+ }
+ }
+ break;
+
+ case 21:
+#line 237 "rcparse.y"
+ {
+ (yyval.acc) = (yyvsp[(1) - (2)].acc);
+ (yyval.acc).id = (yyvsp[(2) - (2)].il);
+ }
+ break;
+
+ case 22:
+#line 242 "rcparse.y"
+ {
+ (yyval.acc) = (yyvsp[(1) - (4)].acc);
+ (yyval.acc).id = (yyvsp[(2) - (4)].il);
+ (yyval.acc).flags |= (yyvsp[(4) - (4)].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 254 "rcparse.y"
+ {
+ const char *s = (yyvsp[(1) - (1)].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 = TOUPPER (s[0]);
+ }
+ (yyval.acc).key = ch;
+ if (s[1] != '\0')
+ rcparse_warning (_("accelerator should only be one character"));
+ }
+ break;
+
+ case 24:
+#line 274 "rcparse.y"
+ {
+ (yyval.acc).next = NULL;
+ (yyval.acc).flags = 0;
+ (yyval.acc).id = 0;
+ (yyval.acc).key = (yyvsp[(1) - (1)].il);
+ }
+ break;
+
+ case 25:
+#line 284 "rcparse.y"
+ {
+ (yyval.is) = (yyvsp[(1) - (1)].is);
+ }
+ break;
+
+ case 26:
+#line 288 "rcparse.y"
+ {
+ (yyval.is) = (yyvsp[(1) - (3)].is) | (yyvsp[(3) - (3)].is);
+ }
+ break;
+
+ case 27:
+#line 293 "rcparse.y"
+ {
+ (yyval.is) = (yyvsp[(1) - (2)].is) | (yyvsp[(2) - (2)].is);
+ }
+ break;
+
+ case 28:
+#line 300 "rcparse.y"
+ {
+ (yyval.is) = ACC_VIRTKEY;
+ }
+ break;
+
+ case 29:
+#line 304 "rcparse.y"
+ {
+ /* This is just the absence of VIRTKEY. */
+ (yyval.is) = 0;
+ }
+ break;
+
+ case 30:
+#line 309 "rcparse.y"
+ {
+ (yyval.is) = ACC_NOINVERT;
+ }
+ break;
+
+ case 31:
+#line 313 "rcparse.y"
+ {
+ (yyval.is) = ACC_SHIFT;
+ }
+ break;
+
+ case 32:
+#line 317 "rcparse.y"
+ {
+ (yyval.is) = ACC_CONTROL;
+ }
+ break;
+
+ case 33:
+#line 321 "rcparse.y"
+ {
+ (yyval.is) = ACC_ALT;
+ }
+ break;
+
+ case 34:
+#line 330 "rcparse.y"
+ {
+ define_bitmap ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s));
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 35:
+#line 342 "rcparse.y"
+ {
+ define_cursor ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s));
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 36:
+#line 355 "rcparse.y"
+ {
+ memset (&dialog, 0, sizeof dialog);
+ dialog.x = (yyvsp[(5) - (8)].il);
+ dialog.y = (yyvsp[(6) - (8)].il);
+ dialog.width = (yyvsp[(7) - (8)].il);
+ dialog.height = (yyvsp[(8) - (8)].il);
+ dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
+ dialog.exstyle = (yyvsp[(4) - (8)].il);
+ dialog.menu.named = 1;
+ dialog.class.named = 1;
+ dialog.font = NULL;
+ dialog.ex = NULL;
+ dialog.controls = NULL;
+ sub_res_info = (yyvsp[(3) - (8)].res_info);
+ style = 0;
+ }
+ break;
+
+ case 37:
+#line 372 "rcparse.y"
+ {
+ define_dialog ((yyvsp[(1) - (13)].id), &sub_res_info, &dialog);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 38:
+#line 380 "rcparse.y"
+ {
+ memset (&dialog, 0, sizeof dialog);
+ dialog.x = (yyvsp[(5) - (8)].il);
+ dialog.y = (yyvsp[(6) - (8)].il);
+ dialog.width = (yyvsp[(7) - (8)].il);
+ dialog.height = (yyvsp[(8) - (8)].il);
+ dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
+ dialog.exstyle = (yyvsp[(4) - (8)].il);
+ dialog.menu.named = 1;
+ dialog.class.named = 1;
+ dialog.font = NULL;
+ dialog.ex = ((rc_dialog_ex *)
+ res_alloc (sizeof (rc_dialog_ex)));
+ memset (dialog.ex, 0, sizeof (rc_dialog_ex));
+ dialog.controls = NULL;
+ sub_res_info = (yyvsp[(3) - (8)].res_info);
+ style = 0;
+ }
+ break;
+
+ case 39:
+#line 399 "rcparse.y"
+ {
+ define_dialog ((yyvsp[(1) - (13)].id), &sub_res_info, &dialog);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 40:
+#line 407 "rcparse.y"
+ {
+ memset (&dialog, 0, sizeof dialog);
+ dialog.x = (yyvsp[(5) - (9)].il);
+ dialog.y = (yyvsp[(6) - (9)].il);
+ dialog.width = (yyvsp[(7) - (9)].il);
+ dialog.height = (yyvsp[(8) - (9)].il);
+ dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
+ dialog.exstyle = (yyvsp[(4) - (9)].il);
+ dialog.menu.named = 1;
+ dialog.class.named = 1;
+ dialog.font = NULL;
+ dialog.ex = ((rc_dialog_ex *)
+ res_alloc (sizeof (rc_dialog_ex)));
+ memset (dialog.ex, 0, sizeof (rc_dialog_ex));
+ dialog.ex->help = (yyvsp[(9) - (9)].il);
+ dialog.controls = NULL;
+ sub_res_info = (yyvsp[(3) - (9)].res_info);
+ style = 0;
+ }
+ break;
+
+ case 41:
+#line 427 "rcparse.y"
+ {
+ define_dialog ((yyvsp[(1) - (14)].id), &sub_res_info, &dialog);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 42:
+#line 437 "rcparse.y"
+ {
+ (yyval.il) = 0;
+ }
+ break;
+
+ case 43:
+#line 441 "rcparse.y"
+ {
+ (yyval.il) = (yyvsp[(3) - (3)].il);
+ }
+ break;
+
+ case 45:
+#line 449 "rcparse.y"
+ {
+ dialog.style |= WS_CAPTION;
+ style |= WS_CAPTION;
+ dialog.caption = (yyvsp[(3) - (3)].uni);
+ }
+ break;
+
+ case 46:
+#line 455 "rcparse.y"
+ {
+ dialog.class = (yyvsp[(3) - (3)].id);
+ }
+ break;
+
+ case 47:
+#line 460 "rcparse.y"
+ {
+ dialog.style = style;
+ }
+ break;
+
+ case 48:
+#line 464 "rcparse.y"
+ {
+ dialog.exstyle = (yyvsp[(3) - (3)].il);
+ }
+ break;
+
+ case 49:
+#line 468 "rcparse.y"
+ {
+ res_unistring_to_id (& dialog.class, (yyvsp[(3) - (3)].uni));
+ }
+ break;
+
+ case 50:
+#line 472 "rcparse.y"
+ {
+ dialog.style |= DS_SETFONT;
+ style |= DS_SETFONT;
+ dialog.pointsize = (yyvsp[(3) - (5)].il);
+ dialog.font = (yyvsp[(5) - (5)].uni);
+ if (dialog.ex != NULL)
+ {
+ dialog.ex->weight = 0;
+ dialog.ex->italic = 0;
+ dialog.ex->charset = 1;
+ }
+ }
+ break;
+
+ case 51:
+#line 485 "rcparse.y"
+ {
+ dialog.style |= DS_SETFONT;
+ style |= DS_SETFONT;
+ dialog.pointsize = (yyvsp[(3) - (6)].il);
+ dialog.font = (yyvsp[(5) - (6)].uni);
+ if (dialog.ex == NULL)
+ rcparse_warning (_("extended FONT requires DIALOGEX"));
+ else
+ {
+ dialog.ex->weight = (yyvsp[(6) - (6)].il);
+ dialog.ex->italic = 0;
+ dialog.ex->charset = 1;
+ }
+ }
+ break;
+
+ case 52:
+#line 500 "rcparse.y"
+ {
+ dialog.style |= DS_SETFONT;
+ style |= DS_SETFONT;
+ dialog.pointsize = (yyvsp[(3) - (7)].il);
+ dialog.font = (yyvsp[(5) - (7)].uni);
+ if (dialog.ex == NULL)
+ rcparse_warning (_("extended FONT requires DIALOGEX"));
+ else
+ {
+ dialog.ex->weight = (yyvsp[(6) - (7)].il);
+ dialog.ex->italic = (yyvsp[(7) - (7)].il);
+ dialog.ex->charset = 1;
+ }
+ }
+ break;
+
+ case 53:
+#line 515 "rcparse.y"
+ {
+ dialog.style |= DS_SETFONT;
+ style |= DS_SETFONT;
+ dialog.pointsize = (yyvsp[(3) - (8)].il);
+ dialog.font = (yyvsp[(5) - (8)].uni);
+ if (dialog.ex == NULL)
+ rcparse_warning (_("extended FONT requires DIALOGEX"));
+ else
+ {
+ dialog.ex->weight = (yyvsp[(6) - (8)].il);
+ dialog.ex->italic = (yyvsp[(7) - (8)].il);
+ dialog.ex->charset = (yyvsp[(8) - (8)].il);
+ }
+ }
+ break;
+
+ case 54:
+#line 530 "rcparse.y"
+ {
+ dialog.menu = (yyvsp[(3) - (3)].id);
+ }
+ break;
+
+ case 55:
+#line 534 "rcparse.y"
+ {
+ sub_res_info.characteristics = (yyvsp[(3) - (3)].il);
+ }
+ break;
+
+ case 56:
+#line 538 "rcparse.y"
+ {
+ sub_res_info.language = (yyvsp[(3) - (4)].il) | ((yyvsp[(4) - (4)].il) << SUBLANG_SHIFT);
+ }
+ break;
+
+ case 57:
+#line 542 "rcparse.y"
+ {
+ sub_res_info.version = (yyvsp[(3) - (3)].il);
+ }
+ break;
+
+ case 59:
+#line 550 "rcparse.y"
+ {
+ rc_dialog_control **pp;
+
+ for (pp = &dialog.controls; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = (yyvsp[(2) - (2)].dialog_control);
+ }
+ break;
+
+ case 60:
+#line 561 "rcparse.y"
+ {
+ default_style = BS_AUTO3STATE | WS_TABSTOP;
+ base_style = BS_AUTO3STATE;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 61:
+#line 569 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 62:
+#line 573 "rcparse.y"
+ {
+ default_style = BS_AUTOCHECKBOX | WS_TABSTOP;
+ base_style = BS_AUTOCHECKBOX;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 63:
+#line 581 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 64:
+#line 585 "rcparse.y"
+ {
+ default_style = BS_AUTORADIOBUTTON | WS_TABSTOP;
+ base_style = BS_AUTORADIOBUTTON;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 65:
+#line 593 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 66:
+#line 597 "rcparse.y"
+ {
+ default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_EDIT;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 67:
+#line 605 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ if (dialog.ex == NULL)
+ rcparse_warning (_("BEDIT requires DIALOGEX"));
+ res_string_to_id (&(yyval.dialog_control)->class, "BEDIT");
+ }
+ break;
+
+ case 68:
+#line 612 "rcparse.y"
+ {
+ default_style = BS_CHECKBOX | WS_TABSTOP;
+ base_style = BS_CHECKBOX | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 69:
+#line 620 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 70:
+#line 624 "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.named = 0;
+ class.u.id = CTL_COMBOBOX;
+ res_text_field = res_null_text;
+ }
+ break;
+
+ case 71:
+#line 634 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(3) - (3)].dialog_control);
+ }
+ break;
+
+ case 72:
+#line 639 "rcparse.y"
+ {
+ (yyval.dialog_control) = define_control ((yyvsp[(2) - (11)].id), (yyvsp[(3) - (11)].il), (yyvsp[(6) - (11)].il), (yyvsp[(7) - (11)].il), (yyvsp[(8) - (11)].il), (yyvsp[(9) - (11)].il), (yyvsp[(4) - (11)].id), style, (yyvsp[(10) - (11)].il));
+ if ((yyvsp[(11) - (11)].rcdata_item) != NULL)
+ {
+ if (dialog.ex == NULL)
+ rcparse_warning (_("control data requires DIALOGEX"));
+ (yyval.dialog_control)->data = (yyvsp[(11) - (11)].rcdata_item);
+ }
+ }
+ break;
+
+ case 73:
+#line 650 "rcparse.y"
+ {
+ (yyval.dialog_control) = define_control ((yyvsp[(2) - (12)].id), (yyvsp[(3) - (12)].il), (yyvsp[(6) - (12)].il), (yyvsp[(7) - (12)].il), (yyvsp[(8) - (12)].il), (yyvsp[(9) - (12)].il), (yyvsp[(4) - (12)].id), style, (yyvsp[(10) - (12)].il));
+ if (dialog.ex == NULL)
+ rcparse_warning (_("help ID requires DIALOGEX"));
+ (yyval.dialog_control)->help = (yyvsp[(11) - (12)].il);
+ (yyval.dialog_control)->data = (yyvsp[(12) - (12)].rcdata_item);
+ }
+ break;
+
+ case 74:
+#line 658 "rcparse.y"
+ {
+ default_style = SS_CENTER | WS_GROUP;
+ base_style = SS_CENTER;
+ class.named = 0;
+ class.u.id = CTL_STATIC;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 75:
+#line 666 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 76:
+#line 670 "rcparse.y"
+ {
+ default_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
+ base_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 77:
+#line 678 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 78:
+#line 682 "rcparse.y"
+ {
+ default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_EDIT;
+ res_text_field = res_null_text;
+ }
+ break;
+
+ case 79:
+#line 690 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(3) - (3)].dialog_control);
+ }
+ break;
+
+ case 80:
+#line 694 "rcparse.y"
+ {
+ default_style = BS_GROUPBOX;
+ base_style = BS_GROUPBOX;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 81:
+#line 702 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 82:
+#line 706 "rcparse.y"
+ {
+ default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_EDIT;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 83:
+#line 714 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ if (dialog.ex == NULL)
+ rcparse_warning (_("IEDIT requires DIALOGEX"));
+ res_string_to_id (&(yyval.dialog_control)->class, "HEDIT");
+ }
+ break;
+
+ case 84:
+#line 721 "rcparse.y"
+ {
+ (yyval.dialog_control) = define_icon_control ((yyvsp[(2) - (6)].id), (yyvsp[(3) - (6)].il), (yyvsp[(4) - (6)].il), (yyvsp[(5) - (6)].il), 0, 0, 0, (yyvsp[(6) - (6)].rcdata_item),
+ dialog.ex);
+ }
+ break;
+
+ case 85:
+#line 727 "rcparse.y"
+ {
+ (yyval.dialog_control) = define_icon_control ((yyvsp[(2) - (8)].id), (yyvsp[(3) - (8)].il), (yyvsp[(4) - (8)].il), (yyvsp[(5) - (8)].il), 0, 0, 0, (yyvsp[(8) - (8)].rcdata_item),
+ dialog.ex);
+ }
+ break;
+
+ case 86:
+#line 733 "rcparse.y"
+ {
+ (yyval.dialog_control) = define_icon_control ((yyvsp[(2) - (10)].id), (yyvsp[(3) - (10)].il), (yyvsp[(4) - (10)].il), (yyvsp[(5) - (10)].il), style, (yyvsp[(9) - (10)].il), 0, (yyvsp[(10) - (10)].rcdata_item),
+ dialog.ex);
+ }
+ break;
+
+ case 87:
+#line 739 "rcparse.y"
+ {
+ (yyval.dialog_control) = define_icon_control ((yyvsp[(2) - (11)].id), (yyvsp[(3) - (11)].il), (yyvsp[(4) - (11)].il), (yyvsp[(5) - (11)].il), style, (yyvsp[(9) - (11)].il), (yyvsp[(10) - (11)].il), (yyvsp[(11) - (11)].rcdata_item),
+ dialog.ex);
+ }
+ break;
+
+ case 88:
+#line 744 "rcparse.y"
+ {
+ default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_EDIT;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 89:
+#line 752 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ if (dialog.ex == NULL)
+ rcparse_warning (_("IEDIT requires DIALOGEX"));
+ res_string_to_id (&(yyval.dialog_control)->class, "IEDIT");
+ }
+ break;
+
+ case 90:
+#line 759 "rcparse.y"
+ {
+ default_style = LBS_NOTIFY | WS_BORDER;
+ base_style = LBS_NOTIFY | WS_BORDER;
+ class.named = 0;
+ class.u.id = CTL_LISTBOX;
+ res_text_field = res_null_text;
+ }
+ break;
+
+ case 91:
+#line 767 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(3) - (3)].dialog_control);
+ }
+ break;
+
+ case 92:
+#line 771 "rcparse.y"
+ {
+ default_style = SS_LEFT | WS_GROUP;
+ base_style = SS_LEFT;
+ class.named = 0;
+ class.u.id = CTL_STATIC;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 93:
+#line 779 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 94:
+#line 783 "rcparse.y"
+ {
+ default_style = BS_PUSHBOX | WS_TABSTOP;
+ base_style = BS_PUSHBOX;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ }
+ break;
+
+ case 95:
+#line 790 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 96:
+#line 794 "rcparse.y"
+ {
+ default_style = BS_PUSHBUTTON | WS_TABSTOP;
+ base_style = BS_PUSHBUTTON | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 97:
+#line 802 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 98:
+#line 806 "rcparse.y"
+ {
+ default_style = BS_RADIOBUTTON | WS_TABSTOP;
+ base_style = BS_RADIOBUTTON;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 99:
+#line 814 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 100:
+#line 818 "rcparse.y"
+ {
+ default_style = SS_RIGHT | WS_GROUP;
+ base_style = SS_RIGHT;
+ class.named = 0;
+ class.u.id = CTL_STATIC;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 101:
+#line 826 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 102:
+#line 830 "rcparse.y"
+ {
+ default_style = SBS_HORZ;
+ base_style = 0;
+ class.named = 0;
+ class.u.id = CTL_SCROLLBAR;
+ res_text_field = res_null_text;
+ }
+ break;
+
+ case 103:
+#line 838 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(3) - (3)].dialog_control);
+ }
+ break;
+
+ case 104:
+#line 842 "rcparse.y"
+ {
+ default_style = BS_3STATE | WS_TABSTOP;
+ base_style = BS_3STATE;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = (yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 105:
+#line 850 "rcparse.y"
+ {
+ (yyval.dialog_control) = (yyvsp[(4) - (4)].dialog_control);
+ }
+ break;
+
+ case 106:
+#line 855 "rcparse.y"
+ { style = WS_CHILD | WS_VISIBLE; }
+ break;
+
+ case 107:
+#line 857 "rcparse.y"
+ {
+ rc_res_id cid;
+ cid.named = 0;
+ cid.u.id = CTL_BUTTON;
+ (yyval.dialog_control) = define_control ((yyvsp[(2) - (15)].id), (yyvsp[(3) - (15)].il), (yyvsp[(5) - (15)].il), (yyvsp[(7) - (15)].il), (yyvsp[(9) - (15)].il), (yyvsp[(11) - (15)].il), cid,
+ style, (yyvsp[(15) - (15)].il));
+ }
+ break;
+
+ case 108:
+#line 875 "rcparse.y"
+ {
+ (yyval.dialog_control) = define_control (res_text_field, (yyvsp[(1) - (6)].il), (yyvsp[(2) - (6)].il), (yyvsp[(3) - (6)].il), (yyvsp[(4) - (6)].il), (yyvsp[(5) - (6)].il), class,
+ default_style | WS_CHILD | WS_VISIBLE, 0);
+ if ((yyvsp[(6) - (6)].rcdata_item) != NULL)
+ {
+ if (dialog.ex == NULL)
+ rcparse_warning (_("control data requires DIALOGEX"));
+ (yyval.dialog_control)->data = (yyvsp[(6) - (6)].rcdata_item);
+ }
+ }
+ break;
+
+ case 109:
+#line 887 "rcparse.y"
+ {
+ (yyval.dialog_control) = define_control (res_text_field, (yyvsp[(1) - (8)].il), (yyvsp[(2) - (8)].il), (yyvsp[(3) - (8)].il), (yyvsp[(4) - (8)].il), (yyvsp[(5) - (8)].il), class, style, (yyvsp[(7) - (8)].il));
+ if ((yyvsp[(8) - (8)].rcdata_item) != NULL)
+ {
+ if (dialog.ex == NULL)
+ rcparse_warning (_("control data requires DIALOGEX"));
+ (yyval.dialog_control)->data = (yyvsp[(8) - (8)].rcdata_item);
+ }
+ }
+ break;
+
+ case 110:
+#line 898 "rcparse.y"
+ {
+ (yyval.dialog_control) = define_control (res_text_field, (yyvsp[(1) - (9)].il), (yyvsp[(2) - (9)].il), (yyvsp[(3) - (9)].il), (yyvsp[(4) - (9)].il), (yyvsp[(5) - (9)].il), class, style, (yyvsp[(7) - (9)].il));
+ if (dialog.ex == NULL)
+ rcparse_warning (_("help ID requires DIALOGEX"));
+ (yyval.dialog_control)->help = (yyvsp[(8) - (9)].il);
+ (yyval.dialog_control)->data = (yyvsp[(9) - (9)].rcdata_item);
+ }
+ break;
+
+ case 111:
+#line 909 "rcparse.y"
+ {
+ if ((yyvsp[(2) - (2)].id).named)
+ res_unistring_to_id (&(yyval.id), (yyvsp[(2) - (2)].id).u.n.name);
+ else
+ (yyval.id)=(yyvsp[(2) - (2)].id);
+ }
+ break;
+
+ case 112:
+#line 919 "rcparse.y"
+ {
+ res_string_to_id (&(yyval.id), "");
+ }
+ break;
+
+ case 113:
+#line 922 "rcparse.y"
+ { (yyval.id)=(yyvsp[(1) - (2)].id); }
+ break;
+
+ case 114:
+#line 927 "rcparse.y"
+ {
+ (yyval.id).named = 0;
+ (yyval.id).u.id = (yyvsp[(1) - (1)].il);
+ }
+ break;
+
+ case 115:
+#line 932 "rcparse.y"
+ {
+ (yyval.id).named = 1;
+ (yyval.id).u.n.name = (yyvsp[(1) - (1)].uni);
+ (yyval.id).u.n.length = unichar_len ((yyvsp[(1) - (1)].uni));
+ }
+ break;
+
+ case 116:
+#line 941 "rcparse.y"
+ {
+ (yyval.rcdata_item) = NULL;
+ }
+ break;
+
+ case 117:
+#line 945 "rcparse.y"
+ {
+ (yyval.rcdata_item) = (yyvsp[(2) - (3)].rcdata).first;
+ }
+ break;
+
+ case 118:
+#line 954 "rcparse.y"
+ { style = WS_CHILD | WS_VISIBLE; }
+ break;
+
+ case 120:
+#line 960 "rcparse.y"
+ { style = SS_ICON | WS_CHILD | WS_VISIBLE; }
+ break;
+
+ case 122:
+#line 966 "rcparse.y"
+ { style = base_style | WS_CHILD | WS_VISIBLE; }
+ break;
+
+ case 124:
+#line 974 "rcparse.y"
+ {
+ define_font ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s));
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 125:
+#line 986 "rcparse.y"
+ {
+ define_icon ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s));
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 126:
+#line 999 "rcparse.y"
+ {
+ language = (yyvsp[(2) - (3)].il) | ((yyvsp[(3) - (3)].il) << SUBLANG_SHIFT);
+ }
+ break;
+
+ case 127:
+#line 1008 "rcparse.y"
+ {
+ define_menu ((yyvsp[(1) - (6)].id), &(yyvsp[(3) - (6)].res_info), (yyvsp[(5) - (6)].menuitem));
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 128:
+#line 1018 "rcparse.y"
+ {
+ (yyval.menuitem) = NULL;
+ }
+ break;
+
+ case 129:
+#line 1022 "rcparse.y"
+ {
+ if ((yyvsp[(1) - (2)].menuitem) == NULL)
+ (yyval.menuitem) = (yyvsp[(2) - (2)].menuitem);
+ else
+ {
+ rc_menuitem **pp;
+
+ for (pp = &(yyvsp[(1) - (2)].menuitem)->next; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = (yyvsp[(2) - (2)].menuitem);
+ (yyval.menuitem) = (yyvsp[(1) - (2)].menuitem);
+ }
+ }
+ break;
+
+ case 130:
+#line 1039 "rcparse.y"
+ {
+ (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (4)].uni), (yyvsp[(3) - (4)].il), (yyvsp[(4) - (4)].is), 0, 0, NULL);
+ }
+ break;
+
+ case 131:
+#line 1043 "rcparse.y"
+ {
+ (yyval.menuitem) = define_menuitem (NULL, 0, 0, 0, 0, NULL);
+ }
+ break;
+
+ case 132:
+#line 1047 "rcparse.y"
+ {
+ (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (6)].uni), 0, (yyvsp[(3) - (6)].is), 0, 0, (yyvsp[(5) - (6)].menuitem));
+ }
+ break;
+
+ case 133:
+#line 1054 "rcparse.y"
+ {
+ (yyval.is) = 0;
+ }
+ break;
+
+ case 134:
+#line 1058 "rcparse.y"
+ {
+ (yyval.is) = (yyvsp[(1) - (3)].is) | (yyvsp[(3) - (3)].is);
+ }
+ break;
+
+ case 135:
+#line 1062 "rcparse.y"
+ {
+ (yyval.is) = (yyvsp[(1) - (2)].is) | (yyvsp[(2) - (2)].is);
+ }
+ break;
+
+ case 136:
+#line 1069 "rcparse.y"
+ {
+ (yyval.is) = MENUITEM_CHECKED;
+ }
+ break;
+
+ case 137:
+#line 1073 "rcparse.y"
+ {
+ (yyval.is) = MENUITEM_GRAYED;
+ }
+ break;
+
+ case 138:
+#line 1077 "rcparse.y"
+ {
+ (yyval.is) = MENUITEM_HELP;
+ }
+ break;
+
+ case 139:
+#line 1081 "rcparse.y"
+ {
+ (yyval.is) = MENUITEM_INACTIVE;
+ }
+ break;
+
+ case 140:
+#line 1085 "rcparse.y"
+ {
+ (yyval.is) = MENUITEM_MENUBARBREAK;
+ }
+ break;
+
+ case 141:
+#line 1089 "rcparse.y"
+ {
+ (yyval.is) = MENUITEM_MENUBREAK;
+ }
+ break;
+
+ case 142:
+#line 1098 "rcparse.y"
+ {
+ define_menu ((yyvsp[(1) - (6)].id), &(yyvsp[(3) - (6)].res_info), (yyvsp[(5) - (6)].menuitem));
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 143:
+#line 1108 "rcparse.y"
+ {
+ (yyval.menuitem) = NULL;
+ }
+ break;
+
+ case 144:
+#line 1112 "rcparse.y"
+ {
+ if ((yyvsp[(1) - (2)].menuitem) == NULL)
+ (yyval.menuitem) = (yyvsp[(2) - (2)].menuitem);
+ else
+ {
+ rc_menuitem **pp;
+
+ for (pp = &(yyvsp[(1) - (2)].menuitem)->next; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = (yyvsp[(2) - (2)].menuitem);
+ (yyval.menuitem) = (yyvsp[(1) - (2)].menuitem);
+ }
+ }
+ break;
+
+ case 145:
+#line 1129 "rcparse.y"
+ {
+ (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (2)].uni), 0, 0, 0, 0, NULL);
+ }
+ break;
+
+ case 146:
+#line 1133 "rcparse.y"
+ {
+ (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (3)].uni), (yyvsp[(3) - (3)].il), 0, 0, 0, NULL);
+ }
+ break;
+
+ case 147:
+#line 1137 "rcparse.y"
+ {
+ (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (5)].uni), (yyvsp[(3) - (5)].il), (yyvsp[(4) - (5)].il), (yyvsp[(5) - (5)].il), 0, NULL);
+ }
+ break;
+
+ case 148:
+#line 1141 "rcparse.y"
+ {
+ (yyval.menuitem) = define_menuitem (NULL, 0, 0, 0, 0, NULL);
+ }
+ break;
+
+ case 149:
+#line 1145 "rcparse.y"
+ {
+ (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (5)].uni), 0, 0, 0, 0, (yyvsp[(4) - (5)].menuitem));
+ }
+ break;
+
+ case 150:
+#line 1149 "rcparse.y"
+ {
+ (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (6)].uni), (yyvsp[(3) - (6)].il), 0, 0, 0, (yyvsp[(5) - (6)].menuitem));
+ }
+ break;
+
+ case 151:
+#line 1153 "rcparse.y"
+ {
+ (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (7)].uni), (yyvsp[(3) - (7)].il), (yyvsp[(4) - (7)].il), 0, 0, (yyvsp[(6) - (7)].menuitem));
+ }
+ break;
+
+ case 152:
+#line 1158 "rcparse.y"
+ {
+ (yyval.menuitem) = define_menuitem ((yyvsp[(2) - (9)].uni), (yyvsp[(3) - (9)].il), (yyvsp[(4) - (9)].il), (yyvsp[(5) - (9)].il), (yyvsp[(6) - (9)].il), (yyvsp[(8) - (9)].menuitem));
+ }
+ break;
+
+ case 153:
+#line 1167 "rcparse.y"
+ {
+ define_messagetable ((yyvsp[(1) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s));
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 154:
+#line 1179 "rcparse.y"
+ {
+ rcparse_rcdata ();
+ }
+ break;
+
+ case 155:
+#line 1183 "rcparse.y"
+ {
+ rcparse_normal ();
+ (yyval.rcdata) = (yyvsp[(2) - (2)].rcdata);
+ }
+ break;
+
+ case 156:
+#line 1191 "rcparse.y"
+ {
+ (yyval.rcdata).first = NULL;
+ (yyval.rcdata).last = NULL;
+ }
+ break;
+
+ case 157:
+#line 1196 "rcparse.y"
+ {
+ (yyval.rcdata) = (yyvsp[(1) - (1)].rcdata);
+ }
+ break;
+
+ case 158:
+#line 1203 "rcparse.y"
+ {
+ rc_rcdata_item *ri;
+
+ ri = define_rcdata_string ((yyvsp[(1) - (1)].ss).s, (yyvsp[(1) - (1)].ss).length);
+ (yyval.rcdata).first = ri;
+ (yyval.rcdata).last = ri;
+ }
+ break;
+
+ case 159:
+#line 1211 "rcparse.y"
+ {
+ rc_rcdata_item *ri;
+
+ ri = define_rcdata_unistring ((yyvsp[(1) - (1)].suni).s, (yyvsp[(1) - (1)].suni).length);
+ (yyval.rcdata).first = ri;
+ (yyval.rcdata).last = ri;
+ }
+ break;
+
+ case 160:
+#line 1219 "rcparse.y"
+ {
+ rc_rcdata_item *ri;
+
+ ri = define_rcdata_number ((yyvsp[(1) - (1)].i).val, (yyvsp[(1) - (1)].i).dword);
+ (yyval.rcdata).first = ri;
+ (yyval.rcdata).last = ri;
+ }
+ break;
+
+ case 161:
+#line 1227 "rcparse.y"
+ {
+ rc_rcdata_item *ri;
+
+ ri = define_rcdata_string ((yyvsp[(3) - (3)].ss).s, (yyvsp[(3) - (3)].ss).length);
+ (yyval.rcdata).first = (yyvsp[(1) - (3)].rcdata).first;
+ (yyvsp[(1) - (3)].rcdata).last->next = ri;
+ (yyval.rcdata).last = ri;
+ }
+ break;
+
+ case 162:
+#line 1236 "rcparse.y"
+ {
+ rc_rcdata_item *ri;
+
+ ri = define_rcdata_unistring ((yyvsp[(3) - (3)].suni).s, (yyvsp[(3) - (3)].suni).length);
+ (yyval.rcdata).first = (yyvsp[(1) - (3)].rcdata).first;
+ (yyvsp[(1) - (3)].rcdata).last->next = ri;
+ (yyval.rcdata).last = ri;
+ }
+ break;
+
+ case 163:
+#line 1245 "rcparse.y"
+ {
+ rc_rcdata_item *ri;
+
+ ri = define_rcdata_number ((yyvsp[(3) - (3)].i).val, (yyvsp[(3) - (3)].i).dword);
+ (yyval.rcdata).first = (yyvsp[(1) - (3)].rcdata).first;
+ (yyvsp[(1) - (3)].rcdata).last->next = ri;
+ (yyval.rcdata).last = ri;
+ }
+ break;
+
+ case 164:
+#line 1254 "rcparse.y"
+ {
+ (yyval.rcdata)=(yyvsp[(1) - (2)].rcdata);
+ }
+ break;
+
+ case 165:
+#line 1263 "rcparse.y"
+ { sub_res_info = (yyvsp[(2) - (3)].res_info); rcparse_rcdata (); }
+ break;
+
+ case 166:
+#line 1264 "rcparse.y"
+ { rcparse_normal (); }
+ break;
+
+ case 168:
+#line 1270 "rcparse.y"
+ {
+ define_stringtable (&sub_res_info, (yyvsp[(2) - (3)].il), (yyvsp[(3) - (3)].suni).s, (yyvsp[(3) - (3)].suni).length);
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 169:
+#line 1275 "rcparse.y"
+ {
+ define_stringtable (&sub_res_info, (yyvsp[(2) - (4)].il), (yyvsp[(4) - (4)].suni).s, (yyvsp[(4) - (4)].suni).length);
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 170:
+#line 1280 "rcparse.y"
+ {
+ rcparse_warning (_("invalid stringtable resource."));
+ abort ();
+ }
+ break;
+
+ case 171:
+#line 1288 "rcparse.y"
+ {
+ (yyval.id)=(yyvsp[(1) - (1)].id);
+ }
+ break;
+
+ case 172:
+#line 1292 "rcparse.y"
+ {
+ (yyval.id).named = 0;
+ (yyval.id).u.id = 23;
+ }
+ break;
+
+ case 173:
+#line 1297 "rcparse.y"
+ {
+ (yyval.id).named = 0;
+ (yyval.id).u.id = RT_RCDATA;
+ }
+ break;
+
+ case 174:
+#line 1302 "rcparse.y"
+ {
+ (yyval.id).named = 0;
+ (yyval.id).u.id = RT_MANIFEST;
+ }
+ break;
+
+ case 175:
+#line 1307 "rcparse.y"
+ {
+ (yyval.id).named = 0;
+ (yyval.id).u.id = RT_PLUGPLAY;
+ }
+ break;
+
+ case 176:
+#line 1312 "rcparse.y"
+ {
+ (yyval.id).named = 0;
+ (yyval.id).u.id = RT_VXD;
+ }
+ break;
+
+ case 177:
+#line 1317 "rcparse.y"
+ {
+ (yyval.id).named = 0;
+ (yyval.id).u.id = RT_DLGINCLUDE;
+ }
+ break;
+
+ case 178:
+#line 1322 "rcparse.y"
+ {
+ (yyval.id).named = 0;
+ (yyval.id).u.id = RT_DLGINIT;
+ }
+ break;
+
+ case 179:
+#line 1327 "rcparse.y"
+ {
+ (yyval.id).named = 0;
+ (yyval.id).u.id = RT_ANICURSOR;
+ }
+ break;
+
+ case 180:
+#line 1332 "rcparse.y"
+ {
+ (yyval.id).named = 0;
+ (yyval.id).u.id = RT_ANIICON;
+ }
+ break;
+
+ case 181:
+#line 1343 "rcparse.y"
+ {
+ define_user_data ((yyvsp[(1) - (6)].id), (yyvsp[(2) - (6)].id), &(yyvsp[(3) - (6)].res_info), (yyvsp[(5) - (6)].rcdata).first);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 182:
+#line 1350 "rcparse.y"
+ {
+ define_user_file ((yyvsp[(1) - (4)].id), (yyvsp[(2) - (4)].id), &(yyvsp[(3) - (4)].res_info), (yyvsp[(4) - (4)].s));
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 183:
+#line 1360 "rcparse.y"
+ {
+ define_toolbar ((yyvsp[(1) - (8)].id), &(yyvsp[(3) - (8)].res_info), (yyvsp[(4) - (8)].il), (yyvsp[(5) - (8)].il), (yyvsp[(7) - (8)].toobar_item));
+ }
+ break;
+
+ case 184:
+#line 1365 "rcparse.y"
+ { (yyval.toobar_item)= NULL; }
+ break;
+
+ case 185:
+#line 1367 "rcparse.y"
+ {
+ rc_toolbar_item *c,*n;
+ c = (yyvsp[(1) - (3)].toobar_item);
+ n= (rc_toolbar_item *)
+ res_alloc (sizeof (rc_toolbar_item));
+ if (c != NULL)
+ while (c->next != NULL)
+ c = c->next;
+ n->prev = c;
+ n->next = NULL;
+ if (c != NULL)
+ c->next = n;
+ n->id = (yyvsp[(3) - (3)].id);
+ if ((yyvsp[(1) - (3)].toobar_item) == NULL)
+ (yyval.toobar_item) = n;
+ else
+ (yyval.toobar_item) = (yyvsp[(1) - (3)].toobar_item);
+ }
+ break;
+
+ case 186:
+#line 1386 "rcparse.y"
+ {
+ rc_toolbar_item *c,*n;
+ c = (yyvsp[(1) - (2)].toobar_item);
+ n= (rc_toolbar_item *)
+ res_alloc (sizeof (rc_toolbar_item));
+ if (c != NULL)
+ while (c->next != NULL)
+ c = c->next;
+ n->prev = c;
+ n->next = NULL;
+ if (c != NULL)
+ c->next = n;
+ n->id.named = 0;
+ n->id.u.id = 0;
+ if ((yyvsp[(1) - (2)].toobar_item) == NULL)
+ (yyval.toobar_item) = n;
+ else
+ (yyval.toobar_item) = (yyvsp[(1) - (2)].toobar_item);
+ }
+ break;
+
+ case 187:
+#line 1411 "rcparse.y"
+ {
+ define_versioninfo ((yyvsp[(1) - (6)].id), language, (yyvsp[(3) - (6)].fixver), (yyvsp[(5) - (6)].verinfo));
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ break;
+
+ case 188:
+#line 1421 "rcparse.y"
+ {
+ (yyval.fixver) = ((rc_fixed_versioninfo *)
+ res_alloc (sizeof (rc_fixed_versioninfo)));
+ memset ((yyval.fixver), 0, sizeof (rc_fixed_versioninfo));
+ }
+ break;
+
+ case 189:
+#line 1428 "rcparse.y"
+ {
+ (yyvsp[(1) - (6)].fixver)->file_version_ms = ((yyvsp[(3) - (6)].il) << 16) | (yyvsp[(4) - (6)].il);
+ (yyvsp[(1) - (6)].fixver)->file_version_ls = ((yyvsp[(5) - (6)].il) << 16) | (yyvsp[(6) - (6)].il);
+ (yyval.fixver) = (yyvsp[(1) - (6)].fixver);
+ }
+ break;
+
+ case 190:
+#line 1435 "rcparse.y"
+ {
+ (yyvsp[(1) - (6)].fixver)->product_version_ms = ((yyvsp[(3) - (6)].il) << 16) | (yyvsp[(4) - (6)].il);
+ (yyvsp[(1) - (6)].fixver)->product_version_ls = ((yyvsp[(5) - (6)].il) << 16) | (yyvsp[(6) - (6)].il);
+ (yyval.fixver) = (yyvsp[(1) - (6)].fixver);
+ }
+ break;
+
+ case 191:
+#line 1441 "rcparse.y"
+ {
+ (yyvsp[(1) - (3)].fixver)->file_flags_mask = (yyvsp[(3) - (3)].il);
+ (yyval.fixver) = (yyvsp[(1) - (3)].fixver);
+ }
+ break;
+
+ case 192:
+#line 1446 "rcparse.y"
+ {
+ (yyvsp[(1) - (3)].fixver)->file_flags = (yyvsp[(3) - (3)].il);
+ (yyval.fixver) = (yyvsp[(1) - (3)].fixver);
+ }
+ break;
+
+ case 193:
+#line 1451 "rcparse.y"
+ {
+ (yyvsp[(1) - (3)].fixver)->file_os = (yyvsp[(3) - (3)].il);
+ (yyval.fixver) = (yyvsp[(1) - (3)].fixver);
+ }
+ break;
+
+ case 194:
+#line 1456 "rcparse.y"
+ {
+ (yyvsp[(1) - (3)].fixver)->file_type = (yyvsp[(3) - (3)].il);
+ (yyval.fixver) = (yyvsp[(1) - (3)].fixver);
+ }
+ break;
+
+ case 195:
+#line 1461 "rcparse.y"
+ {
+ (yyvsp[(1) - (3)].fixver)->file_subtype = (yyvsp[(3) - (3)].il);
+ (yyval.fixver) = (yyvsp[(1) - (3)].fixver);
+ }
+ break;
+
+ case 196:
+#line 1475 "rcparse.y"
+ {
+ (yyval.verinfo) = NULL;
+ }
+ break;
+
+ case 197:
+#line 1479 "rcparse.y"
+ {
+ (yyval.verinfo) = append_ver_stringfileinfo ((yyvsp[(1) - (5)].verinfo), (yyvsp[(4) - (5)].verstringtable));
+ }
+ break;
+
+ case 198:
+#line 1483 "rcparse.y"
+ {
+ (yyval.verinfo) = append_ver_varfileinfo ((yyvsp[(1) - (7)].verinfo), (yyvsp[(5) - (7)].uni), (yyvsp[(6) - (7)].vervar));
+ }
+ break;
+
+ case 199:
+#line 1490 "rcparse.y"
+ {
+ (yyval.verstringtable) = NULL;
+ }
+ break;
+
+ case 200:
+#line 1494 "rcparse.y"
+ {
+ (yyval.verstringtable) = append_ver_stringtable ((yyvsp[(1) - (5)].verstringtable), (yyvsp[(2) - (5)].s), (yyvsp[(4) - (5)].verstring));
+ }
+ break;
+
+ case 201:
+#line 1501 "rcparse.y"
+ {
+ (yyval.verstring) = NULL;
+ }
+ break;
+
+ case 202:
+#line 1505 "rcparse.y"
+ {
+ (yyval.verstring) = append_verval ((yyvsp[(1) - (5)].verstring), (yyvsp[(3) - (5)].uni), (yyvsp[(5) - (5)].uni));
+ }
+ break;
+
+ case 203:
+#line 1512 "rcparse.y"
+ {
+ (yyval.vervar) = NULL;
+ }
+ break;
+
+ case 204:
+#line 1516 "rcparse.y"
+ {
+ (yyval.vervar) = append_vertrans ((yyvsp[(1) - (3)].vervar), (yyvsp[(2) - (3)].il), (yyvsp[(3) - (3)].il));
+ }
+ break;
+
+ case 205:
+#line 1525 "rcparse.y"
+ {
+ (yyval.id).named = 0;
+ (yyval.id).u.id = (yyvsp[(1) - (1)].il);
+ }
+ break;
+
+ case 206:
+#line 1530 "rcparse.y"
+ {
+ res_unistring_to_id (&(yyval.id), (yyvsp[(1) - (1)].uni));
+ }
+ break;
+
+ case 207:
+#line 1539 "rcparse.y"
+ {
+ (yyval.uni) = (yyvsp[(1) - (1)].uni);
+ }
+ break;
+
+ case 208:
+#line 1543 "rcparse.y"
+ {
+ unichar *h = NULL;
+ unicode_from_ascii ((rc_uint_type *) NULL, &h, (yyvsp[(1) - (1)].s));
+ (yyval.uni) = h;
+ }
+ break;
+
+ case 209:
+#line 1553 "rcparse.y"
+ {
+ (yyval.id).named = 0;
+ (yyval.id).u.id = (yyvsp[(1) - (2)].il);
+ }
+ break;
+
+ case 210:
+#line 1558 "rcparse.y"
+ {
+ res_unistring_to_id (&(yyval.id), (yyvsp[(1) - (1)].uni));
+ }
+ break;
+
+ case 211:
+#line 1562 "rcparse.y"
+ {
+ res_unistring_to_id (&(yyval.id), (yyvsp[(1) - (2)].uni));
+ }
+ break;
+
+ case 212:
+#line 1572 "rcparse.y"
+ {
+ memset (&(yyval.res_info), 0, sizeof (rc_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 213:
+#line 1579 "rcparse.y"
+ {
+ (yyval.res_info) = (yyvsp[(1) - (2)].res_info);
+ (yyval.res_info).memflags |= (yyvsp[(2) - (2)].memflags).on;
+ (yyval.res_info).memflags &=~ (yyvsp[(2) - (2)].memflags).off;
+ }
+ break;
+
+ case 214:
+#line 1585 "rcparse.y"
+ {
+ (yyval.res_info) = (yyvsp[(1) - (3)].res_info);
+ (yyval.res_info).characteristics = (yyvsp[(3) - (3)].il);
+ }
+ break;
+
+ case 215:
+#line 1590 "rcparse.y"
+ {
+ (yyval.res_info) = (yyvsp[(1) - (4)].res_info);
+ (yyval.res_info).language = (yyvsp[(3) - (4)].il) | ((yyvsp[(4) - (4)].il) << SUBLANG_SHIFT);
+ }
+ break;
+
+ case 216:
+#line 1595 "rcparse.y"
+ {
+ (yyval.res_info) = (yyvsp[(1) - (3)].res_info);
+ (yyval.res_info).version = (yyvsp[(3) - (3)].il);
+ }
+ break;
+
+ case 217:
+#line 1605 "rcparse.y"
+ {
+ memset (&(yyval.res_info), 0, sizeof (rc_res_res_info));
+ (yyval.res_info).language = language;
+ (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_DISCARDABLE;
+ }
+ break;
+
+ case 218:
+#line 1611 "rcparse.y"
+ {
+ (yyval.res_info) = (yyvsp[(1) - (2)].res_info);
+ (yyval.res_info).memflags |= (yyvsp[(2) - (2)].memflags).on;
+ (yyval.res_info).memflags &=~ (yyvsp[(2) - (2)].memflags).off;
+ }
+ break;
+
+ case 219:
+#line 1622 "rcparse.y"
+ {
+ memset (&(yyval.res_info), 0, sizeof (rc_res_res_info));
+ (yyval.res_info).language = language;
+ (yyval.res_info).memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
+ }
+ break;
+
+ case 220:
+#line 1628 "rcparse.y"
+ {
+ (yyval.res_info) = (yyvsp[(1) - (2)].res_info);
+ (yyval.res_info).memflags |= (yyvsp[(2) - (2)].memflags).on;
+ (yyval.res_info).memflags &=~ (yyvsp[(2) - (2)].memflags).off;
+ }
+ break;
+
+ case 221:
+#line 1640 "rcparse.y"
+ {
+ (yyval.memflags).on = MEMFLAG_MOVEABLE;
+ (yyval.memflags).off = 0;
+ }
+ break;
+
+ case 222:
+#line 1645 "rcparse.y"
+ {
+ (yyval.memflags).on = 0;
+ (yyval.memflags).off = MEMFLAG_MOVEABLE;
+ }
+ break;
+
+ case 223:
+#line 1650 "rcparse.y"
+ {
+ (yyval.memflags).on = MEMFLAG_PURE;
+ (yyval.memflags).off = 0;
+ }
+ break;
+
+ case 224:
+#line 1655 "rcparse.y"
+ {
+ (yyval.memflags).on = 0;
+ (yyval.memflags).off = MEMFLAG_PURE;
+ }
+ break;
+
+ case 225:
+#line 1660 "rcparse.y"
+ {
+ (yyval.memflags).on = MEMFLAG_PRELOAD;
+ (yyval.memflags).off = 0;
+ }
+ break;
+
+ case 226:
+#line 1665 "rcparse.y"
+ {
+ (yyval.memflags).on = 0;
+ (yyval.memflags).off = MEMFLAG_PRELOAD;
+ }
+ break;
+
+ case 227:
+#line 1670 "rcparse.y"
+ {
+ (yyval.memflags).on = MEMFLAG_DISCARDABLE;
+ (yyval.memflags).off = 0;
+ }
+ break;
+
+ case 228:
+#line 1680 "rcparse.y"
+ {
+ (yyval.s) = (yyvsp[(1) - (1)].s);
+ }
+ break;
+
+ case 229:
+#line 1684 "rcparse.y"
+ {
+ (yyval.s) = (yyvsp[(1) - (1)].s);
+ }
+ break;
+
+ case 230:
+#line 1692 "rcparse.y"
+ {
+ (yyval.uni) = (yyvsp[(1) - (1)].uni);
+ }
+ break;
+
+ case 231:
+#line 1697 "rcparse.y"
+ {
+ rc_uint_type l1 = unichar_len ((yyvsp[(1) - (2)].uni));
+ rc_uint_type l2 = unichar_len ((yyvsp[(2) - (2)].uni));
+ unichar *h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar));
+ if (l1 != 0)
+ memcpy (h, (yyvsp[(1) - (2)].uni), l1 * sizeof (unichar));
+ if (l2 != 0)
+ memcpy (h + l1, (yyvsp[(2) - (2)].uni), l2 * sizeof (unichar));
+ h[l1 + l2] = 0;
+ (yyval.uni) = h;
+ }
+ break;
+
+ case 232:
+#line 1712 "rcparse.y"
+ {
+ (yyval.uni) = unichar_dup ((yyvsp[(1) - (1)].uni));
+ }
+ break;
+
+ case 233:
+#line 1716 "rcparse.y"
+ {
+ unichar *h = NULL;
+ unicode_from_ascii ((rc_uint_type *) NULL, &h, (yyvsp[(1) - (1)].s));
+ (yyval.uni) = h;
+ }
+ break;
+
+ case 234:
+#line 1725 "rcparse.y"
+ {
+ (yyval.suni) = (yyvsp[(1) - (1)].suni);
+ }
+ break;
+
+ case 235:
+#line 1729 "rcparse.y"
+ {
+ unichar *h = NULL;
+ rc_uint_type l = 0;
+ unicode_from_ascii_len (&l, &h, (yyvsp[(1) - (1)].ss).s, (yyvsp[(1) - (1)].ss).length);
+ (yyval.suni).s = h;
+ (yyval.suni).length = l;
+ }
+ break;
+
+ case 236:
+#line 1741 "rcparse.y"
+ {
+ (yyval.suni) = (yyvsp[(1) - (1)].suni);
+ }
+ break;
+
+ case 237:
+#line 1746 "rcparse.y"
+ {
+ rc_uint_type l1 = (yyvsp[(1) - (2)].suni).length;
+ rc_uint_type l2 = (yyvsp[(2) - (2)].suni).length;
+ unichar *h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar));
+ if (l1 != 0)
+ memcpy (h, (yyvsp[(1) - (2)].suni).s, l1 * sizeof (unichar));
+ if (l2 != 0)
+ memcpy (h + l1, (yyvsp[(2) - (2)].suni).s, l2 * sizeof (unichar));
+ h[l1 + l2] = 0;
+ (yyval.suni).length = l1 + l2;
+ (yyval.suni).s = h;
+ }
+ break;
+
+ case 238:
+#line 1762 "rcparse.y"
+ {
+ (yyval.ss) = (yyvsp[(1) - (1)].ss);
+ }
+ break;
+
+ case 239:
+#line 1766 "rcparse.y"
+ {
+ rc_uint_type l = (yyvsp[(1) - (2)].ss).length + (yyvsp[(2) - (2)].ss).length;
+ char *h = (char *) res_alloc (l);
+ memcpy (h, (yyvsp[(1) - (2)].ss).s, (yyvsp[(1) - (2)].ss).length);
+ memcpy (h + (yyvsp[(1) - (2)].ss).length, (yyvsp[(2) - (2)].ss).s, (yyvsp[(2) - (2)].ss).length);
+ (yyval.ss).s = h;
+ (yyval.ss).length = l;
+ }
+ break;
+
+ case 240:
+#line 1778 "rcparse.y"
+ {
+ (yyval.suni) = (yyvsp[(1) - (1)].suni);
+ }
+ break;
+
+ case 241:
+#line 1782 "rcparse.y"
+ {
+ rc_uint_type l = (yyvsp[(1) - (2)].suni).length + (yyvsp[(2) - (2)].suni).length;
+ unichar *h = (unichar *) res_alloc (l * sizeof (unichar));
+ memcpy (h, (yyvsp[(1) - (2)].suni).s, (yyvsp[(1) - (2)].suni).length * sizeof (unichar));
+ memcpy (h + (yyvsp[(1) - (2)].suni).length, (yyvsp[(2) - (2)].suni).s, (yyvsp[(2) - (2)].suni).length * sizeof (unichar));
+ (yyval.suni).s = h;
+ (yyval.suni).length = l;
+ }
+ break;
+
+ case 242:
+#line 1804 "rcparse.y"
+ {
+ style |= (yyvsp[(1) - (1)].il);
+ }
+ break;
+
+ case 243:
+#line 1808 "rcparse.y"
+ {
+ style &=~ (yyvsp[(2) - (2)].il);
+ }
+ break;
+
+ case 244:
+#line 1812 "rcparse.y"
+ {
+ style |= (yyvsp[(3) - (3)].il);
+ }
+ break;
+
+ case 245:
+#line 1816 "rcparse.y"
+ {
+ style &=~ (yyvsp[(4) - (4)].il);
+ }
+ break;
+
+ case 246:
+#line 1823 "rcparse.y"
+ {
+ (yyval.il) = (yyvsp[(1) - (1)].i).val;
+ }
+ break;
+
+ case 247:
+#line 1827 "rcparse.y"
+ {
+ (yyval.il) = (yyvsp[(2) - (3)].il);
+ }
+ break;
+
+ case 248:
+#line 1836 "rcparse.y"
+ {
+ (yyval.il) = 0;
+ }
+ break;
+
+ case 249:
+#line 1840 "rcparse.y"
+ {
+ (yyval.il) = (yyvsp[(1) - (1)].il);
+ }
+ break;
+
+ case 250:
+#line 1849 "rcparse.y"
+ {
+ (yyval.il) = (yyvsp[(2) - (2)].il);
+ }
+ break;
+
+ case 251:
+#line 1858 "rcparse.y"
+ {
+ (yyval.il) = (yyvsp[(1) - (1)].i).val;
+ }
+ break;
+
+ case 252:
+#line 1867 "rcparse.y"
+ {
+ (yyval.i) = (yyvsp[(1) - (1)].i);
+ }
+ break;
+
+ case 253:
+#line 1871 "rcparse.y"
+ {
+ (yyval.i) = (yyvsp[(2) - (3)].i);
+ }
+ break;
+
+ case 254:
+#line 1875 "rcparse.y"
+ {
+ (yyval.i).val = ~ (yyvsp[(2) - (2)].i).val;
+ (yyval.i).dword = (yyvsp[(2) - (2)].i).dword;
+ }
+ break;
+
+ case 255:
+#line 1880 "rcparse.y"
+ {
+ (yyval.i).val = - (yyvsp[(2) - (2)].i).val;
+ (yyval.i).dword = (yyvsp[(2) - (2)].i).dword;
+ }
+ break;
+
+ case 256:
+#line 1885 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val * (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 257:
+#line 1890 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val / (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 258:
+#line 1895 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val % (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 259:
+#line 1900 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val + (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 260:
+#line 1905 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val - (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 261:
+#line 1910 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val & (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 262:
+#line 1915 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val ^ (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 263:
+#line 1920 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val | (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 264:
+#line 1931 "rcparse.y"
+ {
+ (yyval.il) = (yyvsp[(2) - (2)].il);
+ }
+ break;
+
+ case 265:
+#line 1940 "rcparse.y"
+ {
+ (yyval.il) = (yyvsp[(1) - (1)].i).val;
+ }
+ break;
+
+ case 266:
+#line 1951 "rcparse.y"
+ {
+ (yyval.i) = (yyvsp[(1) - (1)].i);
+ }
+ break;
+
+ case 267:
+#line 1955 "rcparse.y"
+ {
+ (yyval.i) = (yyvsp[(2) - (3)].i);
+ }
+ break;
+
+ case 268:
+#line 1959 "rcparse.y"
+ {
+ (yyval.i).val = ~ (yyvsp[(2) - (2)].i).val;
+ (yyval.i).dword = (yyvsp[(2) - (2)].i).dword;
+ }
+ break;
+
+ case 269:
+#line 1964 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val * (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 270:
+#line 1969 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val / (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 271:
+#line 1974 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val % (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 272:
+#line 1979 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val + (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 273:
+#line 1984 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val - (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 274:
+#line 1989 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val & (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 275:
+#line 1994 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val ^ (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+ case 276:
+#line 1999 "rcparse.y"
+ {
+ (yyval.i).val = (yyvsp[(1) - (3)].i).val | (yyvsp[(3) - (3)].i).val;
+ (yyval.i).dword = (yyvsp[(1) - (3)].i).dword || (yyvsp[(3) - (3)].i).dword;
+ }
+ break;
+
+
+/* Line 1267 of yacc.c. */
+#line 4440 "rcparse.c"
+ default: break;
+ }
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ 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
+ yyerror (YY_("syntax error"));
+#else
+ {
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+#endif
+ }
+
+
+
+ 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 (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ 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 (1);
+ 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);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+
+#line 2005 "rcparse.y"
+
+
+/* Set the language from the command line. */
+
+void
+rcparse_set_language (int lang)
+{
+ language = lang;
+}
+
diff --git a/binutils-2.24/binutils/rcparse.h b/binutils-2.24/binutils/rcparse.h
new file mode 100644
index 00000000..92b8c9ac
--- /dev/null
+++ b/binutils-2.24/binutils/rcparse.h
@@ -0,0 +1,298 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 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,
+ ANICURSOR = 298,
+ ANIICON = 299,
+ DLGINCLUDE = 300,
+ DLGINIT = 301,
+ FONTDIR = 302,
+ HTML = 303,
+ MANIFEST = 304,
+ PLUGPLAY = 305,
+ VXD = 306,
+ TOOLBAR = 307,
+ BUTTON = 308,
+ LANGUAGE = 309,
+ CHARACTERISTICS = 310,
+ VERSIONK = 311,
+ MENU = 312,
+ MENUEX = 313,
+ MENUITEM = 314,
+ SEPARATOR = 315,
+ POPUP = 316,
+ CHECKED = 317,
+ GRAYED = 318,
+ HELP = 319,
+ INACTIVE = 320,
+ MENUBARBREAK = 321,
+ MENUBREAK = 322,
+ MESSAGETABLE = 323,
+ RCDATA = 324,
+ STRINGTABLE = 325,
+ VERSIONINFO = 326,
+ FILEVERSION = 327,
+ PRODUCTVERSION = 328,
+ FILEFLAGSMASK = 329,
+ FILEFLAGS = 330,
+ FILEOS = 331,
+ FILETYPE = 332,
+ FILESUBTYPE = 333,
+ BLOCKSTRINGFILEINFO = 334,
+ BLOCKVARFILEINFO = 335,
+ VALUE = 336,
+ BLOCK = 337,
+ MOVEABLE = 338,
+ FIXED = 339,
+ PURE = 340,
+ IMPURE = 341,
+ PRELOAD = 342,
+ LOADONCALL = 343,
+ DISCARDABLE = 344,
+ NOT = 345,
+ QUOTEDUNISTRING = 346,
+ QUOTEDSTRING = 347,
+ STRING = 348,
+ NUMBER = 349,
+ SIZEDUNISTRING = 350,
+ SIZEDSTRING = 351,
+ IGNORED_TOKEN = 352,
+ NEG = 353
+ };
+#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 ANICURSOR 298
+#define ANIICON 299
+#define DLGINCLUDE 300
+#define DLGINIT 301
+#define FONTDIR 302
+#define HTML 303
+#define MANIFEST 304
+#define PLUGPLAY 305
+#define VXD 306
+#define TOOLBAR 307
+#define BUTTON 308
+#define LANGUAGE 309
+#define CHARACTERISTICS 310
+#define VERSIONK 311
+#define MENU 312
+#define MENUEX 313
+#define MENUITEM 314
+#define SEPARATOR 315
+#define POPUP 316
+#define CHECKED 317
+#define GRAYED 318
+#define HELP 319
+#define INACTIVE 320
+#define MENUBARBREAK 321
+#define MENUBREAK 322
+#define MESSAGETABLE 323
+#define RCDATA 324
+#define STRINGTABLE 325
+#define VERSIONINFO 326
+#define FILEVERSION 327
+#define PRODUCTVERSION 328
+#define FILEFLAGSMASK 329
+#define FILEFLAGS 330
+#define FILEOS 331
+#define FILETYPE 332
+#define FILESUBTYPE 333
+#define BLOCKSTRINGFILEINFO 334
+#define BLOCKVARFILEINFO 335
+#define VALUE 336
+#define BLOCK 337
+#define MOVEABLE 338
+#define FIXED 339
+#define PURE 340
+#define IMPURE 341
+#define PRELOAD 342
+#define LOADONCALL 343
+#define DISCARDABLE 344
+#define NOT 345
+#define QUOTEDUNISTRING 346
+#define QUOTEDSTRING 347
+#define STRING 348
+#define NUMBER 349
+#define SIZEDUNISTRING 350
+#define SIZEDSTRING 351
+#define IGNORED_TOKEN 352
+#define NEG 353
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+#line 69 "rcparse.y"
+{
+ rc_accelerator acc;
+ rc_accelerator *pacc;
+ rc_dialog_control *dialog_control;
+ rc_menuitem *menuitem;
+ struct
+ {
+ rc_rcdata_item *first;
+ rc_rcdata_item *last;
+ } rcdata;
+ rc_rcdata_item *rcdata_item;
+ rc_fixed_versioninfo *fixver;
+ rc_ver_info *verinfo;
+ rc_ver_stringtable *verstringtable;
+ rc_ver_stringinfo *verstring;
+ rc_ver_varinfo *vervar;
+ rc_toolbar_item *toobar_item;
+ rc_res_id id;
+ rc_res_res_info res_info;
+ struct
+ {
+ rc_uint_type on;
+ rc_uint_type off;
+ } memflags;
+ struct
+ {
+ rc_uint_type val;
+ /* Nonzero if this number was explicitly specified as long. */
+ int dword;
+ } i;
+ rc_uint_type il;
+ rc_uint_type is;
+ const char *s;
+ struct
+ {
+ rc_uint_type length;
+ const char *s;
+ } ss;
+ unichar *uni;
+ struct
+ {
+ rc_uint_type length;
+ const unichar *s;
+ } suni;
+}
+/* Line 1529 of yacc.c. */
+#line 291 "rcparse.h"
+ YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
diff --git a/binutils-2.24/binutils/rcparse.y b/binutils-2.24/binutils/rcparse.y
new file mode 100644
index 00000000..f4101d59
--- /dev/null
+++ b/binutils-2.24/binutils/rcparse.y
@@ -0,0 +1,2013 @@
+%{ /* rcparse.y -- parser for Windows rc files
+ Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008,
+ 2011 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Cygnus Support.
+ Extended by Kai Tietz, Onevision.
+
+ 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 3 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@ixos-leipzig.de>. */
+
+#include "sysdep.h"
+#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 rc_res_res_info sub_res_info;
+
+/* Dialog information. This is built by the nonterminals styles and
+ controls. */
+
+static rc_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 rc_uint_type base_style;
+static rc_uint_type default_style;
+static rc_res_id class;
+static rc_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 rc_res_id res_null_text = { 1, {{0, &null_unichar}}};
+
+%}
+
+%union
+{
+ rc_accelerator acc;
+ rc_accelerator *pacc;
+ rc_dialog_control *dialog_control;
+ rc_menuitem *menuitem;
+ struct
+ {
+ rc_rcdata_item *first;
+ rc_rcdata_item *last;
+ } rcdata;
+ rc_rcdata_item *rcdata_item;
+ rc_fixed_versioninfo *fixver;
+ rc_ver_info *verinfo;
+ rc_ver_stringtable *verstringtable;
+ rc_ver_stringinfo *verstring;
+ rc_ver_varinfo *vervar;
+ rc_toolbar_item *toobar_item;
+ rc_res_id id;
+ rc_res_res_info res_info;
+ struct
+ {
+ rc_uint_type on;
+ rc_uint_type off;
+ } memflags;
+ struct
+ {
+ rc_uint_type val;
+ /* Nonzero if this number was explicitly specified as long. */
+ int dword;
+ } i;
+ rc_uint_type il;
+ rc_uint_type is;
+ const char *s;
+ struct
+ {
+ rc_uint_type length;
+ const char *s;
+ } ss;
+ unichar *uni;
+ struct
+ {
+ rc_uint_type length;
+ const unichar *s;
+ } suni;
+};
+
+%token BEG END
+%token ACCELERATORS VIRTKEY ASCII NOINVERT SHIFT CONTROL ALT
+%token BITMAP
+%token CURSOR
+%token DIALOG DIALOGEX EXSTYLE CAPTION CLASS STYLE
+%token AUTO3STATE AUTOCHECKBOX AUTORADIOBUTTON CHECKBOX COMBOBOX CTEXT
+%token DEFPUSHBUTTON EDITTEXT GROUPBOX LISTBOX LTEXT PUSHBOX PUSHBUTTON
+%token RADIOBUTTON RTEXT SCROLLBAR STATE3 USERBUTTON
+%token BEDIT HEDIT IEDIT
+%token FONT
+%token ICON
+%token ANICURSOR ANIICON DLGINCLUDE DLGINIT FONTDIR HTML MANIFEST PLUGPLAY VXD TOOLBAR BUTTON
+%token LANGUAGE CHARACTERISTICS VERSIONK
+%token MENU MENUEX MENUITEM SEPARATOR POPUP CHECKED GRAYED HELP INACTIVE
+%token MENUBARBREAK MENUBREAK
+%token MESSAGETABLE
+%token RCDATA
+%token STRINGTABLE
+%token VERSIONINFO FILEVERSION PRODUCTVERSION FILEFLAGSMASK FILEFLAGS
+%token FILEOS FILETYPE FILESUBTYPE BLOCKSTRINGFILEINFO BLOCKVARFILEINFO
+%token VALUE
+%token <s> BLOCK
+%token MOVEABLE FIXED PURE IMPURE PRELOAD LOADONCALL DISCARDABLE
+%token NOT
+%token <uni> QUOTEDUNISTRING
+%token <s> QUOTEDSTRING STRING
+%token <i> NUMBER
+%token <suni> SIZEDUNISTRING
+%token <ss> SIZEDSTRING
+%token IGNORED_TOKEN
+
+%type <pacc> acc_entries
+%type <acc> acc_entry acc_event
+%type <dialog_control> control control_params
+%type <menuitem> menuitems menuitem menuexitems menuexitem
+%type <rcdata> optrcdata_data optrcdata_data_int rcdata_data
+%type <rcdata_item> opt_control_data
+%type <fixver> fixedverinfo
+%type <verinfo> verblocks
+%type <verstringtable> verstringtables
+%type <verstring> vervals
+%type <vervar> vertrans
+%type <toobar_item> toolbar_data
+%type <res_info> suboptions memflags_move_discard memflags_move
+%type <memflags> memflag
+%type <id> id rcdata_id optresidc resref resid cresid
+%type <il> exstyle parennumber
+%type <il> numexpr posnumexpr cnumexpr optcnumexpr cposnumexpr
+%type <is> acc_options acc_option menuitem_flags menuitem_flag
+%type <s> file_name
+%type <uni> res_unicode_string resname res_unicode_string_concat
+%type <ss> sizedstring
+%type <suni> sizedunistring res_unicode_sizedstring res_unicode_sizedstring_concat
+%type <i> sizednumexpr sizedposnumexpr
+
+%left '|'
+%left '^'
+%left '&'
+%left '+' '-'
+%left '*' '/' '%'
+%right '~' NEG
+
+%%
+
+input:
+ /* empty */
+ | input accelerator
+ | input bitmap
+ | input cursor
+ | input dialog
+ | input font
+ | input icon
+ | input language
+ | input menu
+ | input menuex
+ | input messagetable
+ | input stringtable
+ | input toolbar
+ | input user
+ | input versioninfo
+ | input IGNORED_TOKEN
+ ;
+
+/* Accelerator resources. */
+
+accelerator:
+ id ACCELERATORS suboptions BEG acc_entries END
+ {
+ define_accelerator ($1, &$3, $5);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ ;
+
+acc_entries:
+ /* empty */
+ {
+ $$ = NULL;
+ }
+ | acc_entries acc_entry
+ {
+ rc_accelerator *a;
+
+ a = (rc_accelerator *) res_alloc (sizeof *a);
+ *a = $2;
+ if ($1 == NULL)
+ $$ = a;
+ else
+ {
+ rc_accelerator **pp;
+
+ for (pp = &$1->next; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = a;
+ $$ = $1;
+ }
+ }
+ ;
+
+acc_entry:
+ acc_event cposnumexpr
+ {
+ $$ = $1;
+ $$.id = $2;
+ }
+ | acc_event cposnumexpr ',' acc_options
+ {
+ $$ = $1;
+ $$.id = $2;
+ $$.flags |= $4;
+ if (($$.flags & ACC_VIRTKEY) == 0
+ && ($$.flags & (ACC_SHIFT | ACC_CONTROL)) != 0)
+ rcparse_warning (_("inappropriate modifiers for non-VIRTKEY"));
+ }
+ ;
+
+acc_event:
+ QUOTEDSTRING
+ {
+ const char *s = $1;
+ char ch;
+
+ $$.next = NULL;
+ $$.id = 0;
+ ch = *s;
+ if (ch != '^')
+ $$.flags = 0;
+ else
+ {
+ $$.flags = ACC_CONTROL | ACC_VIRTKEY;
+ ++s;
+ ch = TOUPPER (s[0]);
+ }
+ $$.key = ch;
+ if (s[1] != '\0')
+ rcparse_warning (_("accelerator should only be one character"));
+ }
+ | posnumexpr
+ {
+ $$.next = NULL;
+ $$.flags = 0;
+ $$.id = 0;
+ $$.key = $1;
+ }
+ ;
+
+acc_options:
+ acc_option
+ {
+ $$ = $1;
+ }
+ | acc_options ',' acc_option
+ {
+ $$ = $1 | $3;
+ }
+ /* I've had one report that the comma is optional. */
+ | acc_options acc_option
+ {
+ $$ = $1 | $2;
+ }
+ ;
+
+acc_option:
+ VIRTKEY
+ {
+ $$ = ACC_VIRTKEY;
+ }
+ | ASCII
+ {
+ /* This is just the absence of VIRTKEY. */
+ $$ = 0;
+ }
+ | NOINVERT
+ {
+ $$ = ACC_NOINVERT;
+ }
+ | SHIFT
+ {
+ $$ = ACC_SHIFT;
+ }
+ | CONTROL
+ {
+ $$ = ACC_CONTROL;
+ }
+ | ALT
+ {
+ $$ = ACC_ALT;
+ }
+ ;
+
+/* Bitmap resources. */
+
+bitmap:
+ id BITMAP memflags_move file_name
+ {
+ define_bitmap ($1, &$3, $4);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ ;
+
+/* Cursor resources. */
+
+cursor:
+ id CURSOR memflags_move_discard file_name
+ {
+ define_cursor ($1, &$3, $4);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ ;
+
+/* Dialog resources. */
+
+dialog:
+ id DIALOG memflags_move exstyle posnumexpr cnumexpr cnumexpr
+ cnumexpr
+ {
+ memset (&dialog, 0, sizeof dialog);
+ dialog.x = $5;
+ dialog.y = $6;
+ dialog.width = $7;
+ dialog.height = $8;
+ dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
+ dialog.exstyle = $4;
+ dialog.menu.named = 1;
+ dialog.class.named = 1;
+ dialog.font = NULL;
+ dialog.ex = NULL;
+ dialog.controls = NULL;
+ sub_res_info = $3;
+ style = 0;
+ }
+ styles BEG controls END
+ {
+ define_dialog ($1, &sub_res_info, &dialog);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ | id DIALOGEX memflags_move exstyle posnumexpr cnumexpr cnumexpr
+ cnumexpr
+ {
+ memset (&dialog, 0, sizeof dialog);
+ dialog.x = $5;
+ dialog.y = $6;
+ dialog.width = $7;
+ dialog.height = $8;
+ dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
+ dialog.exstyle = $4;
+ dialog.menu.named = 1;
+ dialog.class.named = 1;
+ dialog.font = NULL;
+ dialog.ex = ((rc_dialog_ex *)
+ res_alloc (sizeof (rc_dialog_ex)));
+ memset (dialog.ex, 0, sizeof (rc_dialog_ex));
+ dialog.controls = NULL;
+ sub_res_info = $3;
+ style = 0;
+ }
+ styles BEG controls END
+ {
+ define_dialog ($1, &sub_res_info, &dialog);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ | id DIALOGEX memflags_move exstyle posnumexpr cnumexpr cnumexpr
+ cnumexpr cnumexpr
+ {
+ memset (&dialog, 0, sizeof dialog);
+ dialog.x = $5;
+ dialog.y = $6;
+ dialog.width = $7;
+ dialog.height = $8;
+ dialog.style = WS_POPUP | WS_BORDER | WS_SYSMENU;
+ dialog.exstyle = $4;
+ dialog.menu.named = 1;
+ dialog.class.named = 1;
+ dialog.font = NULL;
+ dialog.ex = ((rc_dialog_ex *)
+ res_alloc (sizeof (rc_dialog_ex)));
+ memset (dialog.ex, 0, sizeof (rc_dialog_ex));
+ dialog.ex->help = $9;
+ dialog.controls = NULL;
+ sub_res_info = $3;
+ style = 0;
+ }
+ styles BEG controls END
+ {
+ define_dialog ($1, &sub_res_info, &dialog);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ ;
+
+exstyle:
+ /* empty */
+ {
+ $$ = 0;
+ }
+ | EXSTYLE '=' numexpr
+ {
+ $$ = $3;
+ }
+ ;
+
+styles:
+ /* empty */
+ | styles CAPTION res_unicode_string_concat
+ {
+ dialog.style |= WS_CAPTION;
+ style |= WS_CAPTION;
+ dialog.caption = $3;
+ }
+ | styles CLASS id
+ {
+ dialog.class = $3;
+ }
+ | styles STYLE
+ styleexpr
+ {
+ dialog.style = style;
+ }
+ | styles EXSTYLE numexpr
+ {
+ dialog.exstyle = $3;
+ }
+ | styles CLASS res_unicode_string_concat
+ {
+ res_unistring_to_id (& dialog.class, $3);
+ }
+ | styles FONT numexpr ',' res_unicode_string_concat
+ {
+ dialog.style |= DS_SETFONT;
+ style |= DS_SETFONT;
+ dialog.pointsize = $3;
+ dialog.font = $5;
+ if (dialog.ex != NULL)
+ {
+ dialog.ex->weight = 0;
+ dialog.ex->italic = 0;
+ dialog.ex->charset = 1;
+ }
+ }
+ | styles FONT numexpr ',' res_unicode_string_concat cnumexpr
+ {
+ dialog.style |= DS_SETFONT;
+ style |= DS_SETFONT;
+ dialog.pointsize = $3;
+ dialog.font = $5;
+ if (dialog.ex == NULL)
+ rcparse_warning (_("extended FONT requires DIALOGEX"));
+ else
+ {
+ dialog.ex->weight = $6;
+ dialog.ex->italic = 0;
+ dialog.ex->charset = 1;
+ }
+ }
+ | styles FONT numexpr ',' res_unicode_string_concat cnumexpr cnumexpr
+ {
+ dialog.style |= DS_SETFONT;
+ style |= DS_SETFONT;
+ dialog.pointsize = $3;
+ dialog.font = $5;
+ if (dialog.ex == NULL)
+ rcparse_warning (_("extended FONT requires DIALOGEX"));
+ else
+ {
+ dialog.ex->weight = $6;
+ dialog.ex->italic = $7;
+ dialog.ex->charset = 1;
+ }
+ }
+ | styles FONT numexpr ',' res_unicode_string_concat cnumexpr cnumexpr cnumexpr
+ {
+ dialog.style |= DS_SETFONT;
+ style |= DS_SETFONT;
+ dialog.pointsize = $3;
+ dialog.font = $5;
+ if (dialog.ex == NULL)
+ rcparse_warning (_("extended FONT requires DIALOGEX"));
+ else
+ {
+ dialog.ex->weight = $6;
+ dialog.ex->italic = $7;
+ dialog.ex->charset = $8;
+ }
+ }
+ | styles MENU id
+ {
+ dialog.menu = $3;
+ }
+ | styles CHARACTERISTICS numexpr
+ {
+ sub_res_info.characteristics = $3;
+ }
+ | styles LANGUAGE numexpr cnumexpr
+ {
+ sub_res_info.language = $3 | ($4 << SUBLANG_SHIFT);
+ }
+ | styles VERSIONK numexpr
+ {
+ sub_res_info.version = $3;
+ }
+ ;
+
+controls:
+ /* empty */
+ | controls control
+ {
+ rc_dialog_control **pp;
+
+ for (pp = &dialog.controls; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = $2;
+ }
+ ;
+
+control:
+ AUTO3STATE optresidc
+ {
+ default_style = BS_AUTO3STATE | WS_TABSTOP;
+ base_style = BS_AUTO3STATE;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | AUTOCHECKBOX optresidc
+ {
+ default_style = BS_AUTOCHECKBOX | WS_TABSTOP;
+ base_style = BS_AUTOCHECKBOX;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | AUTORADIOBUTTON optresidc
+ {
+ default_style = BS_AUTORADIOBUTTON | WS_TABSTOP;
+ base_style = BS_AUTORADIOBUTTON;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | BEDIT optresidc
+ {
+ default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_EDIT;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ if (dialog.ex == NULL)
+ rcparse_warning (_("BEDIT requires DIALOGEX"));
+ res_string_to_id (&$$->class, "BEDIT");
+ }
+ | CHECKBOX optresidc
+ {
+ default_style = BS_CHECKBOX | WS_TABSTOP;
+ base_style = BS_CHECKBOX | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | COMBOBOX
+ {
+ /* 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.named = 0;
+ class.u.id = CTL_COMBOBOX;
+ res_text_field = res_null_text;
+ }
+ control_params
+ {
+ $$ = $3;
+ }
+ | CONTROL optresidc numexpr cresid control_styleexpr cnumexpr
+ cnumexpr cnumexpr cnumexpr optcnumexpr opt_control_data
+ {
+ $$ = define_control ($2, $3, $6, $7, $8, $9, $4, style, $10);
+ if ($11 != NULL)
+ {
+ if (dialog.ex == NULL)
+ rcparse_warning (_("control data requires DIALOGEX"));
+ $$->data = $11;
+ }
+ }
+ | CONTROL optresidc numexpr cresid control_styleexpr cnumexpr
+ cnumexpr cnumexpr cnumexpr cnumexpr cnumexpr opt_control_data
+ {
+ $$ = define_control ($2, $3, $6, $7, $8, $9, $4, style, $10);
+ if (dialog.ex == NULL)
+ rcparse_warning (_("help ID requires DIALOGEX"));
+ $$->help = $11;
+ $$->data = $12;
+ }
+ | CTEXT optresidc
+ {
+ default_style = SS_CENTER | WS_GROUP;
+ base_style = SS_CENTER;
+ class.named = 0;
+ class.u.id = CTL_STATIC;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | DEFPUSHBUTTON optresidc
+ {
+ default_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
+ base_style = BS_DEFPUSHBUTTON | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | EDITTEXT
+ {
+ default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_EDIT;
+ res_text_field = res_null_text;
+ }
+ control_params
+ {
+ $$ = $3;
+ }
+ | GROUPBOX optresidc
+ {
+ default_style = BS_GROUPBOX;
+ base_style = BS_GROUPBOX;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | HEDIT optresidc
+ {
+ default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_EDIT;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ if (dialog.ex == NULL)
+ rcparse_warning (_("IEDIT requires DIALOGEX"));
+ res_string_to_id (&$$->class, "HEDIT");
+ }
+ | ICON resref numexpr cnumexpr cnumexpr opt_control_data
+ {
+ $$ = define_icon_control ($2, $3, $4, $5, 0, 0, 0, $6,
+ dialog.ex);
+ }
+ | ICON resref numexpr cnumexpr cnumexpr cnumexpr cnumexpr
+ opt_control_data
+ {
+ $$ = define_icon_control ($2, $3, $4, $5, 0, 0, 0, $8,
+ dialog.ex);
+ }
+ | ICON resref numexpr cnumexpr cnumexpr cnumexpr cnumexpr
+ icon_styleexpr optcnumexpr opt_control_data
+ {
+ $$ = define_icon_control ($2, $3, $4, $5, style, $9, 0, $10,
+ dialog.ex);
+ }
+ | ICON resref numexpr cnumexpr cnumexpr cnumexpr cnumexpr
+ icon_styleexpr cnumexpr cnumexpr opt_control_data
+ {
+ $$ = define_icon_control ($2, $3, $4, $5, style, $9, $10, $11,
+ dialog.ex);
+ }
+ | IEDIT optresidc
+ {
+ default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_EDIT;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ if (dialog.ex == NULL)
+ rcparse_warning (_("IEDIT requires DIALOGEX"));
+ res_string_to_id (&$$->class, "IEDIT");
+ }
+ | LISTBOX
+ {
+ default_style = LBS_NOTIFY | WS_BORDER;
+ base_style = LBS_NOTIFY | WS_BORDER;
+ class.named = 0;
+ class.u.id = CTL_LISTBOX;
+ res_text_field = res_null_text;
+ }
+ control_params
+ {
+ $$ = $3;
+ }
+ | LTEXT optresidc
+ {
+ default_style = SS_LEFT | WS_GROUP;
+ base_style = SS_LEFT;
+ class.named = 0;
+ class.u.id = CTL_STATIC;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | PUSHBOX optresidc
+ {
+ default_style = BS_PUSHBOX | WS_TABSTOP;
+ base_style = BS_PUSHBOX;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | PUSHBUTTON optresidc
+ {
+ default_style = BS_PUSHBUTTON | WS_TABSTOP;
+ base_style = BS_PUSHBUTTON | WS_TABSTOP;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | RADIOBUTTON optresidc
+ {
+ default_style = BS_RADIOBUTTON | WS_TABSTOP;
+ base_style = BS_RADIOBUTTON;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | RTEXT optresidc
+ {
+ default_style = SS_RIGHT | WS_GROUP;
+ base_style = SS_RIGHT;
+ class.named = 0;
+ class.u.id = CTL_STATIC;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | SCROLLBAR
+ {
+ default_style = SBS_HORZ;
+ base_style = 0;
+ class.named = 0;
+ class.u.id = CTL_SCROLLBAR;
+ res_text_field = res_null_text;
+ }
+ control_params
+ {
+ $$ = $3;
+ }
+ | STATE3 optresidc
+ {
+ default_style = BS_3STATE | WS_TABSTOP;
+ base_style = BS_3STATE;
+ class.named = 0;
+ class.u.id = CTL_BUTTON;
+ res_text_field = $2;
+ }
+ control_params
+ {
+ $$ = $4;
+ }
+ | USERBUTTON resref numexpr ',' numexpr ',' numexpr ','
+ numexpr ',' numexpr ','
+ { style = WS_CHILD | WS_VISIBLE; }
+ styleexpr optcnumexpr
+ {
+ rc_res_id cid;
+ cid.named = 0;
+ cid.u.id = CTL_BUTTON;
+ $$ = define_control ($2, $3, $5, $7, $9, $11, cid,
+ style, $15);
+ }
+ ;
+
+/* Parameters for a control. The static variables DEFAULT_STYLE,
+ BASE_STYLE, and CLASS must be initialized before this nonterminal
+ is used. DEFAULT_STYLE is the style to use if no style expression
+ is specified. BASE_STYLE is the base style to use if a style
+ expression is specified; the style expression modifies the base
+ style. CLASS is the class of the control. */
+
+control_params:
+ numexpr cnumexpr cnumexpr cnumexpr cnumexpr opt_control_data
+ {
+ $$ = define_control (res_text_field, $1, $2, $3, $4, $5, class,
+ default_style | WS_CHILD | WS_VISIBLE, 0);
+ if ($6 != NULL)
+ {
+ if (dialog.ex == NULL)
+ rcparse_warning (_("control data requires DIALOGEX"));
+ $$->data = $6;
+ }
+ }
+ | numexpr cnumexpr cnumexpr cnumexpr cnumexpr
+ control_params_styleexpr optcnumexpr opt_control_data
+ {
+ $$ = define_control (res_text_field, $1, $2, $3, $4, $5, class, style, $7);
+ if ($8 != NULL)
+ {
+ if (dialog.ex == NULL)
+ rcparse_warning (_("control data requires DIALOGEX"));
+ $$->data = $8;
+ }
+ }
+ | numexpr cnumexpr cnumexpr cnumexpr cnumexpr
+ control_params_styleexpr cnumexpr cnumexpr opt_control_data
+ {
+ $$ = define_control (res_text_field, $1, $2, $3, $4, $5, class, style, $7);
+ if (dialog.ex == NULL)
+ rcparse_warning (_("help ID requires DIALOGEX"));
+ $$->help = $8;
+ $$->data = $9;
+ }
+ ;
+
+cresid:
+ ',' resid
+ {
+ if ($2.named)
+ res_unistring_to_id (&$$, $2.u.n.name);
+ else
+ $$=$2;
+ }
+ ;
+
+optresidc:
+ /* empty */
+ {
+ res_string_to_id (&$$, "");
+ }
+ | resid ',' { $$=$1; }
+ ;
+
+resid:
+ posnumexpr
+ {
+ $$.named = 0;
+ $$.u.id = $1;
+ }
+ | res_unicode_string_concat
+ {
+ $$.named = 1;
+ $$.u.n.name = $1;
+ $$.u.n.length = unichar_len ($1);
+ }
+ ;
+
+opt_control_data:
+ /* empty */
+ {
+ $$ = NULL;
+ }
+ | BEG optrcdata_data END
+ {
+ $$ = $2.first;
+ }
+ ;
+
+/* These only exist to parse a reduction out of a common case. */
+
+control_styleexpr:
+ ','
+ { style = WS_CHILD | WS_VISIBLE; }
+ styleexpr
+ ;
+
+icon_styleexpr:
+ ','
+ { style = SS_ICON | WS_CHILD | WS_VISIBLE; }
+ styleexpr
+ ;
+
+control_params_styleexpr:
+ ','
+ { style = base_style | WS_CHILD | WS_VISIBLE; }
+ styleexpr
+ ;
+
+/* Font resources. */
+
+font:
+ id FONT memflags_move_discard file_name
+ {
+ define_font ($1, &$3, $4);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ ;
+
+/* Icon resources. */
+
+icon:
+ id ICON memflags_move_discard file_name
+ {
+ define_icon ($1, &$3, $4);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ ;
+
+/* Language command. This changes the static variable language, which
+ affects all subsequent resources. */
+
+language:
+ LANGUAGE numexpr cnumexpr
+ {
+ language = $2 | ($3 << SUBLANG_SHIFT);
+ }
+ ;
+
+/* Menu resources. */
+
+menu:
+ id MENU suboptions BEG menuitems END
+ {
+ define_menu ($1, &$3, $5);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ ;
+
+menuitems:
+ /* empty */
+ {
+ $$ = NULL;
+ }
+ | menuitems menuitem
+ {
+ if ($1 == NULL)
+ $$ = $2;
+ else
+ {
+ rc_menuitem **pp;
+
+ for (pp = &$1->next; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = $2;
+ $$ = $1;
+ }
+ }
+ ;
+
+menuitem:
+ MENUITEM res_unicode_string_concat cnumexpr menuitem_flags
+ {
+ $$ = define_menuitem ($2, $3, $4, 0, 0, NULL);
+ }
+ | MENUITEM SEPARATOR
+ {
+ $$ = define_menuitem (NULL, 0, 0, 0, 0, NULL);
+ }
+ | POPUP res_unicode_string_concat menuitem_flags BEG menuitems END
+ {
+ $$ = define_menuitem ($2, 0, $3, 0, 0, $5);
+ }
+ ;
+
+menuitem_flags:
+ /* empty */
+ {
+ $$ = 0;
+ }
+ | menuitem_flags ',' menuitem_flag
+ {
+ $$ = $1 | $3;
+ }
+ | menuitem_flags menuitem_flag
+ {
+ $$ = $1 | $2;
+ }
+ ;
+
+menuitem_flag:
+ CHECKED
+ {
+ $$ = MENUITEM_CHECKED;
+ }
+ | GRAYED
+ {
+ $$ = MENUITEM_GRAYED;
+ }
+ | HELP
+ {
+ $$ = MENUITEM_HELP;
+ }
+ | INACTIVE
+ {
+ $$ = MENUITEM_INACTIVE;
+ }
+ | MENUBARBREAK
+ {
+ $$ = MENUITEM_MENUBARBREAK;
+ }
+ | MENUBREAK
+ {
+ $$ = MENUITEM_MENUBREAK;
+ }
+ ;
+
+/* Menuex resources. */
+
+menuex:
+ id MENUEX suboptions BEG menuexitems END
+ {
+ define_menu ($1, &$3, $5);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ ;
+
+menuexitems:
+ /* empty */
+ {
+ $$ = NULL;
+ }
+ | menuexitems menuexitem
+ {
+ if ($1 == NULL)
+ $$ = $2;
+ else
+ {
+ rc_menuitem **pp;
+
+ for (pp = &$1->next; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = $2;
+ $$ = $1;
+ }
+ }
+ ;
+
+menuexitem:
+ MENUITEM res_unicode_string_concat
+ {
+ $$ = define_menuitem ($2, 0, 0, 0, 0, NULL);
+ }
+ | MENUITEM res_unicode_string_concat cnumexpr
+ {
+ $$ = define_menuitem ($2, $3, 0, 0, 0, NULL);
+ }
+ | MENUITEM res_unicode_string_concat cnumexpr cnumexpr optcnumexpr
+ {
+ $$ = define_menuitem ($2, $3, $4, $5, 0, NULL);
+ }
+ | MENUITEM SEPARATOR
+ {
+ $$ = define_menuitem (NULL, 0, 0, 0, 0, NULL);
+ }
+ | POPUP res_unicode_string_concat BEG menuexitems END
+ {
+ $$ = define_menuitem ($2, 0, 0, 0, 0, $4);
+ }
+ | POPUP res_unicode_string_concat cnumexpr BEG menuexitems END
+ {
+ $$ = define_menuitem ($2, $3, 0, 0, 0, $5);
+ }
+ | POPUP res_unicode_string_concat cnumexpr cnumexpr BEG menuexitems END
+ {
+ $$ = define_menuitem ($2, $3, $4, 0, 0, $6);
+ }
+ | POPUP res_unicode_string_concat cnumexpr cnumexpr cnumexpr optcnumexpr
+ BEG menuexitems END
+ {
+ $$ = define_menuitem ($2, $3, $4, $5, $6, $8);
+ }
+ ;
+
+/* Messagetable resources. */
+
+messagetable:
+ id MESSAGETABLE memflags_move file_name
+ {
+ define_messagetable ($1, &$3, $4);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ ;
+
+/* We use a different lexing algorithm, because rcdata strings may
+ contain embedded null bytes, and we need to know the length to use. */
+
+optrcdata_data:
+ {
+ rcparse_rcdata ();
+ }
+ optrcdata_data_int
+ {
+ rcparse_normal ();
+ $$ = $2;
+ }
+ ;
+
+optrcdata_data_int:
+ /* empty */
+ {
+ $$.first = NULL;
+ $$.last = NULL;
+ }
+ | rcdata_data
+ {
+ $$ = $1;
+ }
+ ;
+
+rcdata_data:
+ sizedstring
+ {
+ rc_rcdata_item *ri;
+
+ ri = define_rcdata_string ($1.s, $1.length);
+ $$.first = ri;
+ $$.last = ri;
+ }
+ | sizedunistring
+ {
+ rc_rcdata_item *ri;
+
+ ri = define_rcdata_unistring ($1.s, $1.length);
+ $$.first = ri;
+ $$.last = ri;
+ }
+ | sizednumexpr
+ {
+ rc_rcdata_item *ri;
+
+ ri = define_rcdata_number ($1.val, $1.dword);
+ $$.first = ri;
+ $$.last = ri;
+ }
+ | rcdata_data ',' sizedstring
+ {
+ rc_rcdata_item *ri;
+
+ ri = define_rcdata_string ($3.s, $3.length);
+ $$.first = $1.first;
+ $1.last->next = ri;
+ $$.last = ri;
+ }
+ | rcdata_data ',' sizedunistring
+ {
+ rc_rcdata_item *ri;
+
+ ri = define_rcdata_unistring ($3.s, $3.length);
+ $$.first = $1.first;
+ $1.last->next = ri;
+ $$.last = ri;
+ }
+ | rcdata_data ',' sizednumexpr
+ {
+ rc_rcdata_item *ri;
+
+ ri = define_rcdata_number ($3.val, $3.dword);
+ $$.first = $1.first;
+ $1.last->next = ri;
+ $$.last = ri;
+ }
+ | rcdata_data ','
+ {
+ $$=$1;
+ }
+ ;
+
+/* Stringtable resources. */
+
+stringtable:
+ STRINGTABLE suboptions BEG
+ { sub_res_info = $2; rcparse_rcdata (); }
+ string_data END { rcparse_normal (); }
+ ;
+
+string_data:
+ /* empty */
+ | string_data numexpr res_unicode_sizedstring_concat
+ {
+ define_stringtable (&sub_res_info, $2, $3.s, $3.length);
+ rcparse_discard_strings ();
+ }
+ | string_data numexpr ',' res_unicode_sizedstring_concat
+ {
+ define_stringtable (&sub_res_info, $2, $4.s, $4.length);
+ rcparse_discard_strings ();
+ }
+ | string_data error
+ {
+ rcparse_warning (_("invalid stringtable resource."));
+ abort ();
+ }
+ ;
+
+rcdata_id:
+ id
+ {
+ $$=$1;
+ }
+ | HTML
+ {
+ $$.named = 0;
+ $$.u.id = 23;
+ }
+ | RCDATA
+ {
+ $$.named = 0;
+ $$.u.id = RT_RCDATA;
+ }
+ | MANIFEST
+ {
+ $$.named = 0;
+ $$.u.id = RT_MANIFEST;
+ }
+ | PLUGPLAY
+ {
+ $$.named = 0;
+ $$.u.id = RT_PLUGPLAY;
+ }
+ | VXD
+ {
+ $$.named = 0;
+ $$.u.id = RT_VXD;
+ }
+ | DLGINCLUDE
+ {
+ $$.named = 0;
+ $$.u.id = RT_DLGINCLUDE;
+ }
+ | DLGINIT
+ {
+ $$.named = 0;
+ $$.u.id = RT_DLGINIT;
+ }
+ | ANICURSOR
+ {
+ $$.named = 0;
+ $$.u.id = RT_ANICURSOR;
+ }
+ | ANIICON
+ {
+ $$.named = 0;
+ $$.u.id = RT_ANIICON;
+ }
+ ;
+
+/* User defined resources. We accept general suboptions in the
+ file_name case to keep the parser happy. */
+
+user:
+ id rcdata_id suboptions BEG optrcdata_data END
+ {
+ define_user_data ($1, $2, &$3, $5.first);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ | id rcdata_id suboptions file_name
+ {
+ define_user_file ($1, $2, &$3, $4);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ ;
+
+toolbar:
+ id TOOLBAR suboptions numexpr cnumexpr BEG toolbar_data END
+ {
+ define_toolbar ($1, &$3, $4, $5, $7);
+ }
+ ;
+
+toolbar_data: /* empty */ { $$= NULL; }
+ | toolbar_data BUTTON id
+ {
+ rc_toolbar_item *c,*n;
+ c = $1;
+ n= (rc_toolbar_item *)
+ res_alloc (sizeof (rc_toolbar_item));
+ if (c != NULL)
+ while (c->next != NULL)
+ c = c->next;
+ n->prev = c;
+ n->next = NULL;
+ if (c != NULL)
+ c->next = n;
+ n->id = $3;
+ if ($1 == NULL)
+ $$ = n;
+ else
+ $$ = $1;
+ }
+ | toolbar_data SEPARATOR
+ {
+ rc_toolbar_item *c,*n;
+ c = $1;
+ n= (rc_toolbar_item *)
+ res_alloc (sizeof (rc_toolbar_item));
+ if (c != NULL)
+ while (c->next != NULL)
+ c = c->next;
+ n->prev = c;
+ n->next = NULL;
+ if (c != NULL)
+ c->next = n;
+ n->id.named = 0;
+ n->id.u.id = 0;
+ if ($1 == NULL)
+ $$ = n;
+ else
+ $$ = $1;
+ }
+ ;
+
+/* Versioninfo resources. */
+
+versioninfo:
+ id VERSIONINFO fixedverinfo BEG verblocks END
+ {
+ define_versioninfo ($1, language, $3, $5);
+ if (yychar != YYEMPTY)
+ YYERROR;
+ rcparse_discard_strings ();
+ }
+ ;
+
+fixedverinfo:
+ /* empty */
+ {
+ $$ = ((rc_fixed_versioninfo *)
+ res_alloc (sizeof (rc_fixed_versioninfo)));
+ memset ($$, 0, sizeof (rc_fixed_versioninfo));
+ }
+ | fixedverinfo FILEVERSION numexpr optcnumexpr optcnumexpr
+ optcnumexpr
+ {
+ $1->file_version_ms = ($3 << 16) | $4;
+ $1->file_version_ls = ($5 << 16) | $6;
+ $$ = $1;
+ }
+ | fixedverinfo PRODUCTVERSION numexpr optcnumexpr optcnumexpr
+ optcnumexpr
+ {
+ $1->product_version_ms = ($3 << 16) | $4;
+ $1->product_version_ls = ($5 << 16) | $6;
+ $$ = $1;
+ }
+ | fixedverinfo FILEFLAGSMASK numexpr
+ {
+ $1->file_flags_mask = $3;
+ $$ = $1;
+ }
+ | fixedverinfo FILEFLAGS numexpr
+ {
+ $1->file_flags = $3;
+ $$ = $1;
+ }
+ | fixedverinfo FILEOS numexpr
+ {
+ $1->file_os = $3;
+ $$ = $1;
+ }
+ | fixedverinfo FILETYPE numexpr
+ {
+ $1->file_type = $3;
+ $$ = $1;
+ }
+ | fixedverinfo FILESUBTYPE numexpr
+ {
+ $1->file_subtype = $3;
+ $$ = $1;
+ }
+ ;
+
+/* To handle verblocks successfully, the lexer handles BLOCK
+ specially. A BLOCK "StringFileInfo" is returned as
+ BLOCKSTRINGFILEINFO. A BLOCK "VarFileInfo" is returned as
+ BLOCKVARFILEINFO. A BLOCK with some other string returns BLOCK
+ with the string as the value. */
+
+verblocks:
+ /* empty */
+ {
+ $$ = NULL;
+ }
+ | verblocks BLOCKSTRINGFILEINFO BEG verstringtables END
+ {
+ $$ = append_ver_stringfileinfo ($1, $4);
+ }
+ | verblocks BLOCKVARFILEINFO BEG VALUE res_unicode_string_concat vertrans END
+ {
+ $$ = append_ver_varfileinfo ($1, $5, $6);
+ }
+ ;
+
+verstringtables:
+ /* empty */
+ {
+ $$ = NULL;
+ }
+ | verstringtables BLOCK BEG vervals END
+ {
+ $$ = append_ver_stringtable ($1, $2, $4);
+ }
+ ;
+
+vervals:
+ /* empty */
+ {
+ $$ = NULL;
+ }
+ | vervals VALUE res_unicode_string_concat ',' res_unicode_string_concat
+ {
+ $$ = append_verval ($1, $3, $5);
+ }
+ ;
+
+vertrans:
+ /* empty */
+ {
+ $$ = NULL;
+ }
+ | vertrans cnumexpr cnumexpr
+ {
+ $$ = append_vertrans ($1, $2, $3);
+ }
+ ;
+
+/* A resource ID. */
+
+id:
+ posnumexpr
+ {
+ $$.named = 0;
+ $$.u.id = $1;
+ }
+ | resname
+ {
+ res_unistring_to_id (&$$, $1);
+ }
+ ;
+
+/* A resource reference. */
+
+resname:
+ res_unicode_string
+ {
+ $$ = $1;
+ }
+ | STRING
+ {
+ unichar *h = NULL;
+ unicode_from_ascii ((rc_uint_type *) NULL, &h, $1);
+ $$ = h;
+ }
+ ;
+
+
+resref:
+ posnumexpr ','
+ {
+ $$.named = 0;
+ $$.u.id = $1;
+ }
+ | resname
+ {
+ res_unistring_to_id (&$$, $1);
+ }
+ | resname ','
+ {
+ res_unistring_to_id (&$$, $1);
+ }
+ ;
+
+/* Generic suboptions. These may appear before the BEGIN in any
+ multiline statement. */
+
+suboptions:
+ /* empty */
+ {
+ memset (&$$, 0, sizeof (rc_res_res_info));
+ $$.language = language;
+ /* FIXME: Is this the right default? */
+ $$.memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
+ }
+ | suboptions memflag
+ {
+ $$ = $1;
+ $$.memflags |= $2.on;
+ $$.memflags &=~ $2.off;
+ }
+ | suboptions CHARACTERISTICS numexpr
+ {
+ $$ = $1;
+ $$.characteristics = $3;
+ }
+ | suboptions LANGUAGE numexpr cnumexpr
+ {
+ $$ = $1;
+ $$.language = $3 | ($4 << SUBLANG_SHIFT);
+ }
+ | suboptions VERSIONK numexpr
+ {
+ $$ = $1;
+ $$.version = $3;
+ }
+ ;
+
+/* Memory flags which default to MOVEABLE and DISCARDABLE. */
+
+memflags_move_discard:
+ /* empty */
+ {
+ memset (&$$, 0, sizeof (rc_res_res_info));
+ $$.language = language;
+ $$.memflags = MEMFLAG_MOVEABLE | MEMFLAG_DISCARDABLE;
+ }
+ | memflags_move_discard memflag
+ {
+ $$ = $1;
+ $$.memflags |= $2.on;
+ $$.memflags &=~ $2.off;
+ }
+ ;
+
+/* Memory flags which default to MOVEABLE. */
+
+memflags_move:
+ /* empty */
+ {
+ memset (&$$, 0, sizeof (rc_res_res_info));
+ $$.language = language;
+ $$.memflags = MEMFLAG_MOVEABLE | MEMFLAG_PURE | MEMFLAG_DISCARDABLE;
+ }
+ | memflags_move memflag
+ {
+ $$ = $1;
+ $$.memflags |= $2.on;
+ $$.memflags &=~ $2.off;
+ }
+ ;
+
+/* Memory flags. This returns a struct with two integers, because we
+ sometimes want to set bits and we sometimes want to clear them. */
+
+memflag:
+ MOVEABLE
+ {
+ $$.on = MEMFLAG_MOVEABLE;
+ $$.off = 0;
+ }
+ | FIXED
+ {
+ $$.on = 0;
+ $$.off = MEMFLAG_MOVEABLE;
+ }
+ | PURE
+ {
+ $$.on = MEMFLAG_PURE;
+ $$.off = 0;
+ }
+ | IMPURE
+ {
+ $$.on = 0;
+ $$.off = MEMFLAG_PURE;
+ }
+ | PRELOAD
+ {
+ $$.on = MEMFLAG_PRELOAD;
+ $$.off = 0;
+ }
+ | LOADONCALL
+ {
+ $$.on = 0;
+ $$.off = MEMFLAG_PRELOAD;
+ }
+ | DISCARDABLE
+ {
+ $$.on = MEMFLAG_DISCARDABLE;
+ $$.off = 0;
+ }
+ ;
+
+/* A file name. */
+
+file_name:
+ QUOTEDSTRING
+ {
+ $$ = $1;
+ }
+ | STRING
+ {
+ $$ = $1;
+ }
+ ;
+
+/* Concat string */
+res_unicode_string_concat:
+ res_unicode_string
+ {
+ $$ = $1;
+ }
+ |
+ res_unicode_string_concat res_unicode_string
+ {
+ rc_uint_type l1 = unichar_len ($1);
+ rc_uint_type l2 = unichar_len ($2);
+ unichar *h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar));
+ if (l1 != 0)
+ memcpy (h, $1, l1 * sizeof (unichar));
+ if (l2 != 0)
+ memcpy (h + l1, $2, l2 * sizeof (unichar));
+ h[l1 + l2] = 0;
+ $$ = h;
+ }
+ ;
+
+res_unicode_string:
+ QUOTEDUNISTRING
+ {
+ $$ = unichar_dup ($1);
+ }
+ | QUOTEDSTRING
+ {
+ unichar *h = NULL;
+ unicode_from_ascii ((rc_uint_type *) NULL, &h, $1);
+ $$ = h;
+ }
+ ;
+
+res_unicode_sizedstring:
+ sizedunistring
+ {
+ $$ = $1;
+ }
+ | sizedstring
+ {
+ unichar *h = NULL;
+ rc_uint_type l = 0;
+ unicode_from_ascii_len (&l, &h, $1.s, $1.length);
+ $$.s = h;
+ $$.length = l;
+ }
+ ;
+
+/* Concat string */
+res_unicode_sizedstring_concat:
+ res_unicode_sizedstring
+ {
+ $$ = $1;
+ }
+ |
+ res_unicode_sizedstring_concat res_unicode_sizedstring
+ {
+ rc_uint_type l1 = $1.length;
+ rc_uint_type l2 = $2.length;
+ unichar *h = (unichar *) res_alloc ((l1 + l2 + 1) * sizeof (unichar));
+ if (l1 != 0)
+ memcpy (h, $1.s, l1 * sizeof (unichar));
+ if (l2 != 0)
+ memcpy (h + l1, $2.s, l2 * sizeof (unichar));
+ h[l1 + l2] = 0;
+ $$.length = l1 + l2;
+ $$.s = h;
+ }
+ ;
+
+sizedstring:
+ SIZEDSTRING
+ {
+ $$ = $1;
+ }
+ | sizedstring SIZEDSTRING
+ {
+ rc_uint_type l = $1.length + $2.length;
+ char *h = (char *) res_alloc (l);
+ memcpy (h, $1.s, $1.length);
+ memcpy (h + $1.length, $2.s, $2.length);
+ $$.s = h;
+ $$.length = l;
+ }
+ ;
+
+sizedunistring:
+ SIZEDUNISTRING
+ {
+ $$ = $1;
+ }
+ | sizedunistring SIZEDUNISTRING
+ {
+ rc_uint_type l = $1.length + $2.length;
+ unichar *h = (unichar *) res_alloc (l * sizeof (unichar));
+ memcpy (h, $1.s, $1.length * sizeof (unichar));
+ memcpy (h + $1.length, $2.s, $2.length * sizeof (unichar));
+ $$.s = h;
+ $$.length = l;
+ }
+ ;
+
+/* A style expression. This changes the static variable STYLE. We do
+ it this way because rc appears to permit a style to be set to
+ something like
+ WS_GROUP | NOT WS_TABSTOP
+ to mean that a default of WS_TABSTOP should be removed. Anything
+ which wants to accept a style must first set STYLE to the default
+ value. The styleexpr nonterminal will change STYLE as specified by
+ the user. Note that we do not accept arbitrary expressions here,
+ just numbers separated by '|'. */
+
+styleexpr:
+ parennumber
+ {
+ style |= $1;
+ }
+ | NOT parennumber
+ {
+ style &=~ $2;
+ }
+ | styleexpr '|' parennumber
+ {
+ style |= $3;
+ }
+ | styleexpr '|' NOT parennumber
+ {
+ style &=~ $4;
+ }
+ ;
+
+parennumber:
+ NUMBER
+ {
+ $$ = $1.val;
+ }
+ | '(' numexpr ')'
+ {
+ $$ = $2;
+ }
+ ;
+
+/* An optional expression with a leading comma. */
+
+optcnumexpr:
+ /* empty */
+ {
+ $$ = 0;
+ }
+ | cnumexpr
+ {
+ $$ = $1;
+ }
+ ;
+
+/* An expression with a leading comma. */
+
+cnumexpr:
+ ',' numexpr
+ {
+ $$ = $2;
+ }
+ ;
+
+/* A possibly negated numeric expression. */
+
+numexpr:
+ sizednumexpr
+ {
+ $$ = $1.val;
+ }
+ ;
+
+/* A possibly negated expression with a size. */
+
+sizednumexpr:
+ NUMBER
+ {
+ $$ = $1;
+ }
+ | '(' sizednumexpr ')'
+ {
+ $$ = $2;
+ }
+ | '~' sizednumexpr %prec '~'
+ {
+ $$.val = ~ $2.val;
+ $$.dword = $2.dword;
+ }
+ | '-' sizednumexpr %prec NEG
+ {
+ $$.val = - $2.val;
+ $$.dword = $2.dword;
+ }
+ | sizednumexpr '*' sizednumexpr
+ {
+ $$.val = $1.val * $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizednumexpr '/' sizednumexpr
+ {
+ $$.val = $1.val / $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizednumexpr '%' sizednumexpr
+ {
+ $$.val = $1.val % $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizednumexpr '+' sizednumexpr
+ {
+ $$.val = $1.val + $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizednumexpr '-' sizednumexpr
+ {
+ $$.val = $1.val - $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizednumexpr '&' sizednumexpr
+ {
+ $$.val = $1.val & $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizednumexpr '^' sizednumexpr
+ {
+ $$.val = $1.val ^ $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizednumexpr '|' sizednumexpr
+ {
+ $$.val = $1.val | $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ ;
+
+/* An expression with a leading comma which does not use unary
+ negation. */
+
+cposnumexpr:
+ ',' posnumexpr
+ {
+ $$ = $2;
+ }
+ ;
+
+/* An expression which does not use unary negation. */
+
+posnumexpr:
+ sizedposnumexpr
+ {
+ $$ = $1.val;
+ }
+ ;
+
+/* An expression which does not use unary negation. We separate unary
+ negation to avoid parsing conflicts when two numeric expressions
+ appear consecutively. */
+
+sizedposnumexpr:
+ NUMBER
+ {
+ $$ = $1;
+ }
+ | '(' sizednumexpr ')'
+ {
+ $$ = $2;
+ }
+ | '~' sizednumexpr %prec '~'
+ {
+ $$.val = ~ $2.val;
+ $$.dword = $2.dword;
+ }
+ | sizedposnumexpr '*' sizednumexpr
+ {
+ $$.val = $1.val * $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizedposnumexpr '/' sizednumexpr
+ {
+ $$.val = $1.val / $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizedposnumexpr '%' sizednumexpr
+ {
+ $$.val = $1.val % $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizedposnumexpr '+' sizednumexpr
+ {
+ $$.val = $1.val + $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizedposnumexpr '-' sizednumexpr
+ {
+ $$.val = $1.val - $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizedposnumexpr '&' sizednumexpr
+ {
+ $$.val = $1.val & $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizedposnumexpr '^' sizednumexpr
+ {
+ $$.val = $1.val ^ $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ | sizedposnumexpr '|' sizednumexpr
+ {
+ $$.val = $1.val | $3.val;
+ $$.dword = $1.dword || $3.dword;
+ }
+ ;
+
+%%
+
+/* Set the language from the command line. */
+
+void
+rcparse_set_language (int lang)
+{
+ language = lang;
+}
diff --git a/binutils-2.24/binutils/rdcoff.c b/binutils-2.24/binutils/rdcoff.c
new file mode 100644
index 00000000..473305e2
--- /dev/null
+++ b/binutils-2.24/binutils/rdcoff.c
@@ -0,0 +1,876 @@
+/* stabs.c -- Parse COFF debugging information
+ Copyright 1996, 1999, 2000, 2002, 2003, 2005, 2007
+ Free Software Foundation, Inc.
+ Written by Ian Lance Taylor <ian@cygnus.com>.
+
+ 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 3 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 file contains code which parses COFF debugging information. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "coff/internal.h"
+#include "libiberty.h"
+#include "bucomm.h"
+#include "debug.h"
+#include "budbg.h"
+
+/* FIXME: We should not need this BFD internal file. We need it for
+ the N_BTMASK, etc., values. */
+#include "libcoff.h"
+
+/* These macros extract the right mask and shifts for this BFD. They
+ assume that there is a local variable named ABFD. This is so that
+ macros like ISFCN and DECREF, from coff/internal.h, will work
+ without modification. */
+#define N_BTMASK (coff_data (abfd)->local_n_btmask)
+#define N_BTSHFT (coff_data (abfd)->local_n_btshft)
+#define N_TMASK (coff_data (abfd)->local_n_tmask)
+#define N_TSHIFT (coff_data (abfd)->local_n_tshift)
+
+/* This structure is used to hold the symbols, as well as the current
+ location within the symbols. */
+
+struct coff_symbols
+{
+ /* The symbols. */
+ asymbol **syms;
+ /* The number of symbols. */
+ long symcount;
+ /* The index of the current symbol. */
+ long symno;
+ /* The index of the current symbol in the COFF symbol table (where
+ each auxent counts as a symbol). */
+ long coff_symno;
+};
+
+/* The largest basic type we are prepared to handle. */
+
+#define T_MAX (T_LNGDBL)
+
+/* This structure is used to hold slots. */
+
+struct coff_slots
+{
+ /* Next set of slots. */
+ struct coff_slots *next;
+ /* Slots. */
+#define COFF_SLOTS (16)
+ debug_type slots[COFF_SLOTS];
+};
+
+/* This structure is used to map symbol indices to types. */
+
+struct coff_types
+{
+ /* Slots. */
+ struct coff_slots *slots;
+ /* Basic types. */
+ debug_type basic[T_MAX + 1];
+};
+
+static debug_type *coff_get_slot (struct coff_types *, int);
+static debug_type parse_coff_type
+ (bfd *, struct coff_symbols *, struct coff_types *, long, int,
+ union internal_auxent *, bfd_boolean, void *);
+static debug_type parse_coff_base_type
+ (bfd *, struct coff_symbols *, struct coff_types *, long, int,
+ union internal_auxent *, void *);
+static debug_type parse_coff_struct_type
+ (bfd *, struct coff_symbols *, struct coff_types *, int,
+ union internal_auxent *, void *);
+static debug_type parse_coff_enum_type
+ (bfd *, struct coff_symbols *, struct coff_types *,
+ union internal_auxent *, void *);
+static bfd_boolean parse_coff_symbol
+ (bfd *, struct coff_types *, asymbol *, long, struct internal_syment *,
+ void *, debug_type, bfd_boolean);
+static bfd_boolean external_coff_symbol_p (int sym_class);
+
+/* Return the slot for a type. */
+
+static debug_type *
+coff_get_slot (struct coff_types *types, int indx)
+{
+ struct coff_slots **pps;
+
+ pps = &types->slots;
+
+ while (indx >= COFF_SLOTS)
+ {
+ if (*pps == NULL)
+ {
+ *pps = (struct coff_slots *) xmalloc (sizeof **pps);
+ memset (*pps, 0, sizeof **pps);
+ }
+ pps = &(*pps)->next;
+ indx -= COFF_SLOTS;
+ }
+
+ if (*pps == NULL)
+ {
+ *pps = (struct coff_slots *) xmalloc (sizeof **pps);
+ memset (*pps, 0, sizeof **pps);
+ }
+
+ return (*pps)->slots + indx;
+}
+
+/* Parse a COFF type code in NTYPE. */
+
+static debug_type
+parse_coff_type (bfd *abfd, struct coff_symbols *symbols,
+ struct coff_types *types, long coff_symno, int ntype,
+ union internal_auxent *pauxent, bfd_boolean useaux,
+ void *dhandle)
+{
+ debug_type type;
+
+ if ((ntype & ~N_BTMASK) != 0)
+ {
+ int newtype;
+
+ newtype = DECREF (ntype);
+
+ if (ISPTR (ntype))
+ {
+ type = parse_coff_type (abfd, symbols, types, coff_symno, newtype,
+ pauxent, useaux, dhandle);
+ type = debug_make_pointer_type (dhandle, type);
+ }
+ else if (ISFCN (ntype))
+ {
+ type = parse_coff_type (abfd, symbols, types, coff_symno, newtype,
+ pauxent, useaux, dhandle);
+ type = debug_make_function_type (dhandle, type, (debug_type *) NULL,
+ FALSE);
+ }
+ else if (ISARY (ntype))
+ {
+ int n;
+
+ if (pauxent == NULL)
+ n = 0;
+ else
+ {
+ unsigned short *dim;
+ int i;
+
+ /* FIXME: If pauxent->x_sym.x_tagndx.l == 0, gdb sets
+ the c_naux field of the syment to 0. */
+
+ /* Move the dimensions down, so that the next array
+ picks up the next one. */
+ dim = pauxent->x_sym.x_fcnary.x_ary.x_dimen;
+ n = dim[0];
+ for (i = 0; *dim != 0 && i < DIMNUM - 1; i++, dim++)
+ *dim = *(dim + 1);
+ *dim = 0;
+ }
+
+ type = parse_coff_type (abfd, symbols, types, coff_symno, newtype,
+ pauxent, FALSE, dhandle);
+ type = debug_make_array_type (dhandle, type,
+ parse_coff_base_type (abfd, symbols,
+ types,
+ coff_symno,
+ T_INT,
+ NULL, dhandle),
+ 0, n - 1, FALSE);
+ }
+ else
+ {
+ non_fatal (_("parse_coff_type: Bad type code 0x%x"), ntype);
+ return DEBUG_TYPE_NULL;
+ }
+
+ return type;
+ }
+
+ if (pauxent != NULL && pauxent->x_sym.x_tagndx.l > 0)
+ {
+ debug_type *slot;
+
+ /* This is a reference to an existing type. FIXME: gdb checks
+ that the class is not C_STRTAG, nor C_UNTAG, nor C_ENTAG. */
+ slot = coff_get_slot (types, pauxent->x_sym.x_tagndx.l);
+ if (*slot != DEBUG_TYPE_NULL)
+ return *slot;
+ else
+ return debug_make_indirect_type (dhandle, slot, (const char *) NULL);
+ }
+
+ /* If the aux entry has already been used for something, useaux will
+ have been set to false, indicating that parse_coff_base_type
+ should not use it. We need to do it this way, rather than simply
+ passing pauxent as NULL, because we need to be able handle
+ multiple array dimensions while still discarding pauxent after
+ having handled all of them. */
+ if (! useaux)
+ pauxent = NULL;
+
+ return parse_coff_base_type (abfd, symbols, types, coff_symno, ntype,
+ pauxent, dhandle);
+}
+
+/* Parse a basic COFF type in NTYPE. */
+
+static debug_type
+parse_coff_base_type (bfd *abfd, struct coff_symbols *symbols,
+ struct coff_types *types, long coff_symno, int ntype,
+ union internal_auxent *pauxent, void *dhandle)
+{
+ debug_type ret;
+ bfd_boolean set_basic;
+ const char *name;
+ debug_type *slot;
+
+ if (ntype >= 0
+ && ntype <= T_MAX
+ && types->basic[ntype] != DEBUG_TYPE_NULL)
+ return types->basic[ntype];
+
+ set_basic = TRUE;
+ name = NULL;
+
+ switch (ntype)
+ {
+ default:
+ ret = debug_make_void_type (dhandle);
+ break;
+
+ case T_NULL:
+ case T_VOID:
+ ret = debug_make_void_type (dhandle);
+ name = "void";
+ break;
+
+ case T_CHAR:
+ ret = debug_make_int_type (dhandle, 1, FALSE);
+ name = "char";
+ break;
+
+ case T_SHORT:
+ ret = debug_make_int_type (dhandle, 2, FALSE);
+ name = "short";
+ break;
+
+ case T_INT:
+ /* FIXME: Perhaps the size should depend upon the architecture. */
+ ret = debug_make_int_type (dhandle, 4, FALSE);
+ name = "int";
+ break;
+
+ case T_LONG:
+ ret = debug_make_int_type (dhandle, 4, FALSE);
+ name = "long";
+ break;
+
+ case T_FLOAT:
+ ret = debug_make_float_type (dhandle, 4);
+ name = "float";
+ break;
+
+ case T_DOUBLE:
+ ret = debug_make_float_type (dhandle, 8);
+ name = "double";
+ break;
+
+ case T_LNGDBL:
+ ret = debug_make_float_type (dhandle, 12);
+ name = "long double";
+ break;
+
+ case T_UCHAR:
+ ret = debug_make_int_type (dhandle, 1, TRUE);
+ name = "unsigned char";
+ break;
+
+ case T_USHORT:
+ ret = debug_make_int_type (dhandle, 2, TRUE);
+ name = "unsigned short";
+ break;
+
+ case T_UINT:
+ ret = debug_make_int_type (dhandle, 4, TRUE);
+ name = "unsigned int";
+ break;
+
+ case T_ULONG:
+ ret = debug_make_int_type (dhandle, 4, TRUE);
+ name = "unsigned long";
+ break;
+
+ case T_STRUCT:
+ if (pauxent == NULL)
+ ret = debug_make_struct_type (dhandle, TRUE, 0,
+ (debug_field *) NULL);
+ else
+ ret = parse_coff_struct_type (abfd, symbols, types, ntype, pauxent,
+ dhandle);
+
+ slot = coff_get_slot (types, coff_symno);
+ *slot = ret;
+
+ set_basic = FALSE;
+ break;
+
+ case T_UNION:
+ if (pauxent == NULL)
+ ret = debug_make_struct_type (dhandle, FALSE, 0, (debug_field *) NULL);
+ else
+ ret = parse_coff_struct_type (abfd, symbols, types, ntype, pauxent,
+ dhandle);
+
+ slot = coff_get_slot (types, coff_symno);
+ *slot = ret;
+
+ set_basic = FALSE;
+ break;
+
+ case T_ENUM:
+ if (pauxent == NULL)
+ ret = debug_make_enum_type (dhandle, (const char **) NULL,
+ (bfd_signed_vma *) NULL);
+ else
+ ret = parse_coff_enum_type (abfd, symbols, types, pauxent, dhandle);
+
+ slot = coff_get_slot (types, coff_symno);
+ *slot = ret;
+
+ set_basic = FALSE;
+ break;
+ }
+
+ if (name != NULL)
+ ret = debug_name_type (dhandle, name, ret);
+
+ if (set_basic
+ && ntype >= 0
+ && ntype <= T_MAX)
+ types->basic[ntype] = ret;
+
+ return ret;
+}
+
+/* Parse a struct type. */
+
+static debug_type
+parse_coff_struct_type (bfd *abfd, struct coff_symbols *symbols,
+ struct coff_types *types, int ntype,
+ union internal_auxent *pauxent, void *dhandle)
+{
+ long symend;
+ int alloc;
+ debug_field *fields;
+ int count;
+ bfd_boolean done;
+
+ symend = pauxent->x_sym.x_fcnary.x_fcn.x_endndx.l;
+
+ alloc = 10;
+ fields = (debug_field *) xmalloc (alloc * sizeof *fields);
+ count = 0;
+
+ done = FALSE;
+ while (! done
+ && symbols->coff_symno < symend
+ && symbols->symno < symbols->symcount)
+ {
+ asymbol *sym;
+ long this_coff_symno;
+ struct internal_syment syment;
+ union internal_auxent auxent;
+ union internal_auxent *psubaux;
+ bfd_vma bitpos = 0, bitsize = 0;
+
+ sym = symbols->syms[symbols->symno];
+
+ if (! bfd_coff_get_syment (abfd, sym, &syment))
+ {
+ non_fatal (_("bfd_coff_get_syment failed: %s"),
+ bfd_errmsg (bfd_get_error ()));
+ return DEBUG_TYPE_NULL;
+ }
+
+ this_coff_symno = symbols->coff_symno;
+
+ ++symbols->symno;
+ symbols->coff_symno += 1 + syment.n_numaux;
+
+ if (syment.n_numaux == 0)
+ psubaux = NULL;
+ else
+ {
+ if (! bfd_coff_get_auxent (abfd, sym, 0, &auxent))
+ {
+ non_fatal (_("bfd_coff_get_auxent failed: %s"),
+ bfd_errmsg (bfd_get_error ()));
+ return DEBUG_TYPE_NULL;
+ }
+ psubaux = &auxent;
+ }
+
+ switch (syment.n_sclass)
+ {
+ case C_MOS:
+ case C_MOU:
+ bitpos = 8 * bfd_asymbol_value (sym);
+ bitsize = 0;
+ break;
+
+ case C_FIELD:
+ bitpos = bfd_asymbol_value (sym);
+ bitsize = auxent.x_sym.x_misc.x_lnsz.x_size;
+ break;
+
+ case C_EOS:
+ done = TRUE;
+ break;
+ }
+
+ if (! done)
+ {
+ debug_type ftype;
+ debug_field f;
+
+ ftype = parse_coff_type (abfd, symbols, types, this_coff_symno,
+ syment.n_type, psubaux, TRUE, dhandle);
+ f = debug_make_field (dhandle, bfd_asymbol_name (sym), ftype,
+ bitpos, bitsize, DEBUG_VISIBILITY_PUBLIC);
+ if (f == DEBUG_FIELD_NULL)
+ return DEBUG_TYPE_NULL;
+
+ if (count + 1 >= alloc)
+ {
+ alloc += 10;
+ fields = ((debug_field *)
+ xrealloc (fields, alloc * sizeof *fields));
+ }
+
+ fields[count] = f;
+ ++count;
+ }
+ }
+
+ fields[count] = DEBUG_FIELD_NULL;
+
+ return debug_make_struct_type (dhandle, ntype == T_STRUCT,
+ pauxent->x_sym.x_misc.x_lnsz.x_size,
+ fields);
+}
+
+/* Parse an enum type. */
+
+static debug_type
+parse_coff_enum_type (bfd *abfd, struct coff_symbols *symbols,
+ struct coff_types *types ATTRIBUTE_UNUSED,
+ union internal_auxent *pauxent, void *dhandle)
+{
+ long symend;
+ int alloc;
+ const char **names;
+ bfd_signed_vma *vals;
+ int count;
+ bfd_boolean done;
+
+ symend = pauxent->x_sym.x_fcnary.x_fcn.x_endndx.l;
+
+ alloc = 10;
+ names = (const char **) xmalloc (alloc * sizeof *names);
+ vals = (bfd_signed_vma *) xmalloc (alloc * sizeof *vals);
+ count = 0;
+
+ done = FALSE;
+ while (! done
+ && symbols->coff_symno < symend
+ && symbols->symno < symbols->symcount)
+ {
+ asymbol *sym;
+ struct internal_syment syment;
+
+ sym = symbols->syms[symbols->symno];
+
+ if (! bfd_coff_get_syment (abfd, sym, &syment))
+ {
+ non_fatal (_("bfd_coff_get_syment failed: %s"),
+ bfd_errmsg (bfd_get_error ()));
+ return DEBUG_TYPE_NULL;
+ }
+
+ ++symbols->symno;
+ symbols->coff_symno += 1 + syment.n_numaux;
+
+ switch (syment.n_sclass)
+ {
+ case C_MOE:
+ if (count + 1 >= alloc)
+ {
+ alloc += 10;
+ names = ((const char **)
+ xrealloc (names, alloc * sizeof *names));
+ vals = ((bfd_signed_vma *)
+ xrealloc (vals, alloc * sizeof *vals));
+ }
+
+ names[count] = bfd_asymbol_name (sym);
+ vals[count] = bfd_asymbol_value (sym);
+ ++count;
+ break;
+
+ case C_EOS:
+ done = TRUE;
+ break;
+ }
+ }
+
+ names[count] = NULL;
+
+ return debug_make_enum_type (dhandle, names, vals);
+}
+
+/* Handle a single COFF symbol. */
+
+static bfd_boolean
+parse_coff_symbol (bfd *abfd ATTRIBUTE_UNUSED, struct coff_types *types,
+ asymbol *sym, long coff_symno,
+ struct internal_syment *psyment, void *dhandle,
+ debug_type type, bfd_boolean within_function)
+{
+ switch (psyment->n_sclass)
+ {
+ case C_NULL:
+ break;
+
+ case C_AUTO:
+ if (! debug_record_variable (dhandle, bfd_asymbol_name (sym), type,
+ DEBUG_LOCAL, bfd_asymbol_value (sym)))
+ return FALSE;
+ break;
+
+ case C_WEAKEXT:
+ case C_EXT:
+ if (! debug_record_variable (dhandle, bfd_asymbol_name (sym), type,
+ DEBUG_GLOBAL, bfd_asymbol_value (sym)))
+ return FALSE;
+ break;
+
+ case C_STAT:
+ if (! debug_record_variable (dhandle, bfd_asymbol_name (sym), type,
+ (within_function
+ ? DEBUG_LOCAL_STATIC
+ : DEBUG_STATIC),
+ bfd_asymbol_value (sym)))
+ return FALSE;
+ break;
+
+ case C_REG:
+ /* FIXME: We may need to convert the register number. */
+ if (! debug_record_variable (dhandle, bfd_asymbol_name (sym), type,
+ DEBUG_REGISTER, bfd_asymbol_value (sym)))
+ return FALSE;
+ break;
+
+ case C_LABEL:
+ break;
+
+ case C_ARG:
+ if (! debug_record_parameter (dhandle, bfd_asymbol_name (sym), type,
+ DEBUG_PARM_STACK, bfd_asymbol_value (sym)))
+ return FALSE;
+ break;
+
+ case C_REGPARM:
+ /* FIXME: We may need to convert the register number. */
+ if (! debug_record_parameter (dhandle, bfd_asymbol_name (sym), type,
+ DEBUG_PARM_REG, bfd_asymbol_value (sym)))
+ return FALSE;
+ break;
+
+ case C_TPDEF:
+ type = debug_name_type (dhandle, bfd_asymbol_name (sym), type);
+ if (type == DEBUG_TYPE_NULL)
+ return FALSE;
+ break;
+
+ case C_STRTAG:
+ case C_UNTAG:
+ case C_ENTAG:
+ {
+ debug_type *slot;
+
+ type = debug_tag_type (dhandle, bfd_asymbol_name (sym), type);
+ if (type == DEBUG_TYPE_NULL)
+ return FALSE;
+
+ /* Store the named type into the slot, so that references get
+ the name. */
+ slot = coff_get_slot (types, coff_symno);
+ *slot = type;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return TRUE;
+}
+
+/* Determine if a symbol has external visibility. */
+
+static bfd_boolean
+external_coff_symbol_p (int sym_class)
+{
+ switch (sym_class)
+ {
+ case C_EXT:
+ case C_WEAKEXT:
+ return TRUE;
+ default:
+ break;
+ }
+ return FALSE;
+}
+
+/* This is the main routine. It looks through all the symbols and
+ handles them. */
+
+bfd_boolean
+parse_coff (bfd *abfd, asymbol **syms, long symcount, void *dhandle)
+{
+ struct coff_symbols symbols;
+ struct coff_types types;
+ int i;
+ long next_c_file;
+ const char *fnname;
+ int fnclass;
+ int fntype;
+ bfd_vma fnend;
+ alent *linenos;
+ bfd_boolean within_function;
+ long this_coff_symno;
+
+ symbols.syms = syms;
+ symbols.symcount = symcount;
+ symbols.symno = 0;
+ symbols.coff_symno = 0;
+
+ types.slots = NULL;
+ for (i = 0; i <= T_MAX; i++)
+ types.basic[i] = DEBUG_TYPE_NULL;
+
+ next_c_file = -1;
+ fnname = NULL;
+ fnclass = 0;
+ fntype = 0;
+ fnend = 0;
+ linenos = NULL;
+ within_function = FALSE;
+
+ while (symbols.symno < symcount)
+ {
+ asymbol *sym;
+ const char *name;
+ struct internal_syment syment;
+ union internal_auxent auxent;
+ union internal_auxent *paux;
+ debug_type type;
+
+ sym = syms[symbols.symno];
+
+ if (! bfd_coff_get_syment (abfd, sym, &syment))
+ {
+ non_fatal (_("bfd_coff_get_syment failed: %s"),
+ bfd_errmsg (bfd_get_error ()));
+ return FALSE;
+ }
+
+ name = bfd_asymbol_name (sym);
+
+ this_coff_symno = symbols.coff_symno;
+
+ ++symbols.symno;
+ symbols.coff_symno += 1 + syment.n_numaux;
+
+ /* We only worry about the first auxent, because that is the
+ only one which is relevant for debugging information. */
+ if (syment.n_numaux == 0)
+ paux = NULL;
+ else
+ {
+ if (! bfd_coff_get_auxent (abfd, sym, 0, &auxent))
+ {
+ non_fatal (_("bfd_coff_get_auxent failed: %s"),
+ bfd_errmsg (bfd_get_error ()));
+ return FALSE;
+ }
+ paux = &auxent;
+ }
+
+ if (this_coff_symno == next_c_file && syment.n_sclass != C_FILE)
+ {
+ /* The last C_FILE symbol points to the first external
+ symbol. */
+ if (! debug_set_filename (dhandle, "*globals*"))
+ return FALSE;
+ }
+
+ switch (syment.n_sclass)
+ {
+ case C_EFCN:
+ case C_EXTDEF:
+ case C_ULABEL:
+ case C_USTATIC:
+ case C_LINE:
+ case C_ALIAS:
+ case C_HIDDEN:
+ /* Just ignore these classes. */
+ break;
+
+ case C_FILE:
+ next_c_file = syment.n_value;
+ if (! debug_set_filename (dhandle, name))
+ return FALSE;
+ break;
+
+ case C_STAT:
+ /* Ignore static symbols with a type of T_NULL. These
+ represent section entries. */
+ if (syment.n_type == T_NULL)
+ break;
+ /* Fall through. */
+ case C_WEAKEXT:
+ case C_EXT:
+ if (ISFCN (syment.n_type))
+ {
+ fnname = name;
+ fnclass = syment.n_sclass;
+ fntype = syment.n_type;
+ if (syment.n_numaux > 0)
+ fnend = bfd_asymbol_value (sym) + auxent.x_sym.x_misc.x_fsize;
+ else
+ fnend = 0;
+ linenos = BFD_SEND (abfd, _get_lineno, (abfd, sym));
+ break;
+ }
+ type = parse_coff_type (abfd, &symbols, &types, this_coff_symno,
+ syment.n_type, paux, TRUE, dhandle);
+ if (type == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (! parse_coff_symbol (abfd, &types, sym, this_coff_symno, &syment,
+ dhandle, type, within_function))
+ return FALSE;
+ break;
+
+ case C_FCN:
+ if (strcmp (name, ".bf") == 0)
+ {
+ if (fnname == NULL)
+ {
+ non_fatal (_("%ld: .bf without preceding function"),
+ this_coff_symno);
+ return FALSE;
+ }
+
+ type = parse_coff_type (abfd, &symbols, &types, this_coff_symno,
+ DECREF (fntype), paux, FALSE, dhandle);
+ if (type == DEBUG_TYPE_NULL)
+ return FALSE;
+
+ if (! debug_record_function (dhandle, fnname, type,
+ external_coff_symbol_p (fnclass),
+ bfd_asymbol_value (sym)))
+ return FALSE;
+
+ if (linenos != NULL)
+ {
+ int base;
+ bfd_vma addr;
+
+ if (syment.n_numaux == 0)
+ base = 0;
+ else
+ base = auxent.x_sym.x_misc.x_lnsz.x_lnno - 1;
+
+ addr = bfd_get_section_vma (abfd, bfd_get_section (sym));
+
+ ++linenos;
+
+ while (linenos->line_number != 0)
+ {
+ if (! debug_record_line (dhandle,
+ linenos->line_number + base,
+ linenos->u.offset + addr))
+ return FALSE;
+ ++linenos;
+ }
+ }
+
+ fnname = NULL;
+ linenos = NULL;
+ fnclass = 0;
+ fntype = 0;
+
+ within_function = TRUE;
+ }
+ else if (strcmp (name, ".ef") == 0)
+ {
+ if (! within_function)
+ {
+ non_fatal (_("%ld: unexpected .ef\n"), this_coff_symno);
+ return FALSE;
+ }
+
+ if (bfd_asymbol_value (sym) > fnend)
+ fnend = bfd_asymbol_value (sym);
+ if (! debug_end_function (dhandle, fnend))
+ return FALSE;
+
+ fnend = 0;
+ within_function = FALSE;
+ }
+ break;
+
+ case C_BLOCK:
+ if (strcmp (name, ".bb") == 0)
+ {
+ if (! debug_start_block (dhandle, bfd_asymbol_value (sym)))
+ return FALSE;
+ }
+ else if (strcmp (name, ".eb") == 0)
+ {
+ if (! debug_end_block (dhandle, bfd_asymbol_value (sym)))
+ return FALSE;
+ }
+ break;
+
+ default:
+ type = parse_coff_type (abfd, &symbols, &types, this_coff_symno,
+ syment.n_type, paux, TRUE, dhandle);
+ if (type == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (! parse_coff_symbol (abfd, &types, sym, this_coff_symno, &syment,
+ dhandle, type, within_function))
+ return FALSE;
+ break;
+ }
+ }
+
+ return TRUE;
+}
diff --git a/binutils-2.24/binutils/rddbg.c b/binutils-2.24/binutils/rddbg.c
new file mode 100644
index 00000000..27abd66a
--- /dev/null
+++ b/binutils-2.24/binutils/rddbg.c
@@ -0,0 +1,450 @@
+/* rddbg.c -- Read debugging information into a generic form.
+ Copyright 1995, 1996, 1997, 2000, 2002, 2003, 2005, 2007, 2008,
+ 2010 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor <ian@cygnus.com>.
+
+ 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 3 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 file reads debugging information into a generic form. This
+ file knows how to dig the debugging information out of an object
+ file. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "bucomm.h"
+#include "debug.h"
+#include "budbg.h"
+
+static bfd_boolean read_section_stabs_debugging_info
+ (bfd *, asymbol **, long, void *, bfd_boolean *);
+static bfd_boolean read_symbol_stabs_debugging_info
+ (bfd *, asymbol **, long, void *, bfd_boolean *);
+static bfd_boolean read_ieee_debugging_info (bfd *, void *, bfd_boolean *);
+static void save_stab (int, int, bfd_vma, const char *);
+static void stab_context (void);
+static void free_saved_stabs (void);
+
+/* Read debugging information from a BFD. Returns a generic debugging
+ pointer. */
+
+void *
+read_debugging_info (bfd *abfd, asymbol **syms, long symcount, bfd_boolean no_messages)
+{
+ void *dhandle;
+ bfd_boolean found;
+
+ dhandle = debug_init ();
+ if (dhandle == NULL)
+ return NULL;
+
+ if (! read_section_stabs_debugging_info (abfd, syms, symcount, dhandle,
+ &found))
+ return NULL;
+
+ if (bfd_get_flavour (abfd) == bfd_target_aout_flavour)
+ {
+ if (! read_symbol_stabs_debugging_info (abfd, syms, symcount, dhandle,
+ &found))
+ return NULL;
+ }
+
+ if (bfd_get_flavour (abfd) == bfd_target_ieee_flavour)
+ {
+ if (! read_ieee_debugging_info (abfd, dhandle, &found))
+ return NULL;
+ }
+
+ /* Try reading the COFF symbols if we didn't find any stabs in COFF
+ sections. */
+ if (! found
+ && bfd_get_flavour (abfd) == bfd_target_coff_flavour
+ && symcount > 0)
+ {
+ if (! parse_coff (abfd, syms, symcount, dhandle))
+ return NULL;
+ found = TRUE;
+ }
+
+ if (! found)
+ {
+ if (! no_messages)
+ non_fatal (_("%s: no recognized debugging information"),
+ bfd_get_filename (abfd));
+ return NULL;
+ }
+
+ return dhandle;
+}
+
+/* Read stabs in sections debugging information from a BFD. */
+
+static bfd_boolean
+read_section_stabs_debugging_info (bfd *abfd, asymbol **syms, long symcount,
+ void *dhandle, bfd_boolean *pfound)
+{
+ static struct
+ {
+ const char *secname;
+ const char *strsecname;
+ }
+ names[] =
+ {
+ { ".stab", ".stabstr" },
+ { "LC_SYMTAB.stabs", "LC_SYMTAB.stabstr" },
+ { "$GDB_SYMBOLS$", "$GDB_STRINGS$" }
+ };
+ unsigned int i;
+ void *shandle;
+
+ *pfound = FALSE;
+ shandle = NULL;
+
+ for (i = 0; i < sizeof names / sizeof names[0]; i++)
+ {
+ asection *sec, *strsec;
+
+ sec = bfd_get_section_by_name (abfd, names[i].secname);
+ strsec = bfd_get_section_by_name (abfd, names[i].strsecname);
+ if (sec != NULL && strsec != NULL)
+ {
+ bfd_size_type stabsize, strsize;
+ bfd_byte *stabs, *strings;
+ bfd_byte *stab;
+ bfd_size_type stroff, next_stroff;
+
+ stabsize = bfd_section_size (abfd, sec);
+ stabs = (bfd_byte *) xmalloc (stabsize);
+ if (! bfd_get_section_contents (abfd, sec, stabs, 0, stabsize))
+ {
+ fprintf (stderr, "%s: %s: %s\n",
+ bfd_get_filename (abfd), names[i].secname,
+ bfd_errmsg (bfd_get_error ()));
+ return FALSE;
+ }
+
+ strsize = bfd_section_size (abfd, strsec);
+ strings = (bfd_byte *) xmalloc (strsize);
+ if (! bfd_get_section_contents (abfd, strsec, strings, 0, strsize))
+ {
+ fprintf (stderr, "%s: %s: %s\n",
+ bfd_get_filename (abfd), names[i].strsecname,
+ bfd_errmsg (bfd_get_error ()));
+ return FALSE;
+ }
+
+ if (shandle == NULL)
+ {
+ shandle = start_stab (dhandle, abfd, TRUE, syms, symcount);
+ if (shandle == NULL)
+ return FALSE;
+ }
+
+ *pfound = TRUE;
+
+ stroff = 0;
+ next_stroff = 0;
+ for (stab = stabs; stab < stabs + stabsize; stab += 12)
+ {
+ unsigned int strx;
+ int type;
+ int other ATTRIBUTE_UNUSED;
+ int desc;
+ bfd_vma value;
+
+ /* This code presumes 32 bit values. */
+
+ strx = bfd_get_32 (abfd, stab);
+ type = bfd_get_8 (abfd, stab + 4);
+ other = bfd_get_8 (abfd, stab + 5);
+ desc = bfd_get_16 (abfd, stab + 6);
+ value = bfd_get_32 (abfd, stab + 8);
+
+ if (type == 0)
+ {
+ /* Special type 0 stabs indicate the offset to the
+ next string table. */
+ stroff = next_stroff;
+ next_stroff += value;
+ }
+ else
+ {
+ char *f, *s;
+
+ f = NULL;
+
+ if (stroff + strx > strsize)
+ {
+ fprintf (stderr, "%s: %s: stab entry %ld is corrupt, strx = 0x%x, type = %d\n",
+ bfd_get_filename (abfd), names[i].secname,
+ (long) (stab - stabs) / 12, strx, type);
+ continue;
+ }
+
+ s = (char *) strings + stroff + strx;
+
+ while (s[strlen (s) - 1] == '\\'
+ && stab + 12 < stabs + stabsize)
+ {
+ char *p;
+
+ stab += 12;
+ p = s + strlen (s) - 1;
+ *p = '\0';
+ s = concat (s,
+ ((char *) strings
+ + stroff
+ + bfd_get_32 (abfd, stab)),
+ (const char *) NULL);
+
+ /* We have to restore the backslash, because, if
+ the linker is hashing stabs strings, we may
+ see the same string more than once. */
+ *p = '\\';
+
+ if (f != NULL)
+ free (f);
+ f = s;
+ }
+
+ save_stab (type, desc, value, s);
+
+ if (! parse_stab (dhandle, shandle, type, desc, value, s))
+ {
+ stab_context ();
+ free_saved_stabs ();
+ return FALSE;
+ }
+
+ /* Don't free f, since I think the stabs code
+ expects strings to hang around. This should be
+ straightened out. FIXME. */
+ }
+ }
+
+ free_saved_stabs ();
+ free (stabs);
+
+ /* Don't free strings, since I think the stabs code expects
+ the strings to hang around. This should be straightened
+ out. FIXME. */
+ }
+ }
+
+ if (shandle != NULL)
+ {
+ if (! finish_stab (dhandle, shandle))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Read stabs in the symbol table. */
+
+static bfd_boolean
+read_symbol_stabs_debugging_info (bfd *abfd, asymbol **syms, long symcount,
+ void *dhandle, bfd_boolean *pfound)
+{
+ void *shandle;
+ asymbol **ps, **symend;
+
+ shandle = NULL;
+ symend = syms + symcount;
+ for (ps = syms; ps < symend; ps++)
+ {
+ symbol_info i;
+
+ bfd_get_symbol_info (abfd, *ps, &i);
+
+ if (i.type == '-')
+ {
+ const char *s;
+ char *f;
+
+ if (shandle == NULL)
+ {
+ shandle = start_stab (dhandle, abfd, FALSE, syms, symcount);
+ if (shandle == NULL)
+ return FALSE;
+ }
+
+ *pfound = TRUE;
+
+ s = i.name;
+ f = NULL;
+ while (s[strlen (s) - 1] == '\\'
+ && ps + 1 < symend)
+ {
+ char *sc, *n;
+
+ ++ps;
+ sc = xstrdup (s);
+ sc[strlen (sc) - 1] = '\0';
+ n = concat (sc, bfd_asymbol_name (*ps), (const char *) NULL);
+ free (sc);
+ if (f != NULL)
+ free (f);
+ f = n;
+ s = n;
+ }
+
+ save_stab (i.stab_type, i.stab_desc, i.value, s);
+
+ if (! parse_stab (dhandle, shandle, i.stab_type, i.stab_desc,
+ i.value, s))
+ {
+ stab_context ();
+ free_saved_stabs ();
+ return FALSE;
+ }
+
+ /* Don't free f, since I think the stabs code expects
+ strings to hang around. This should be straightened out.
+ FIXME. */
+ }
+ }
+
+ free_saved_stabs ();
+
+ if (shandle != NULL)
+ {
+ if (! finish_stab (dhandle, shandle))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Read IEEE debugging information. */
+
+static bfd_boolean
+read_ieee_debugging_info (bfd *abfd, void *dhandle, bfd_boolean *pfound)
+{
+ asection *dsec;
+ bfd_size_type size;
+ bfd_byte *contents;
+
+ /* The BFD backend puts the debugging information into a section
+ named .debug. */
+
+ dsec = bfd_get_section_by_name (abfd, ".debug");
+ if (dsec == NULL)
+ return TRUE;
+
+ size = bfd_section_size (abfd, dsec);
+ contents = (bfd_byte *) xmalloc (size);
+ if (! bfd_get_section_contents (abfd, dsec, contents, 0, size))
+ return FALSE;
+
+ if (! parse_ieee (dhandle, abfd, contents, size))
+ return FALSE;
+
+ free (contents);
+
+ *pfound = TRUE;
+
+ return TRUE;
+}
+
+/* Record stabs strings, so that we can give some context for errors. */
+
+#define SAVE_STABS_COUNT (16)
+
+struct saved_stab
+{
+ int type;
+ int desc;
+ bfd_vma value;
+ char *string;
+};
+
+static struct saved_stab saved_stabs[SAVE_STABS_COUNT];
+static int saved_stabs_index;
+
+/* Save a stabs string. */
+
+static void
+save_stab (int type, int desc, bfd_vma value, const char *string)
+{
+ if (saved_stabs[saved_stabs_index].string != NULL)
+ free (saved_stabs[saved_stabs_index].string);
+ saved_stabs[saved_stabs_index].type = type;
+ saved_stabs[saved_stabs_index].desc = desc;
+ saved_stabs[saved_stabs_index].value = value;
+ saved_stabs[saved_stabs_index].string = xstrdup (string);
+ saved_stabs_index = (saved_stabs_index + 1) % SAVE_STABS_COUNT;
+}
+
+/* Provide context for an error. */
+
+static void
+stab_context (void)
+{
+ int i;
+
+ fprintf (stderr, _("Last stabs entries before error:\n"));
+ fprintf (stderr, "n_type n_desc n_value string\n");
+
+ i = saved_stabs_index;
+ do
+ {
+ struct saved_stab *stabp;
+
+ stabp = saved_stabs + i;
+ if (stabp->string != NULL)
+ {
+ const char *s;
+
+ s = bfd_get_stab_name (stabp->type);
+ if (s != NULL)
+ fprintf (stderr, "%-6s", s);
+ else if (stabp->type == 0)
+ fprintf (stderr, "HdrSym");
+ else
+ fprintf (stderr, "%-6d", stabp->type);
+ fprintf (stderr, " %-6d ", stabp->desc);
+ fprintf_vma (stderr, stabp->value);
+ if (stabp->type != 0)
+ fprintf (stderr, " %s", stabp->string);
+ fprintf (stderr, "\n");
+ }
+ i = (i + 1) % SAVE_STABS_COUNT;
+ }
+ while (i != saved_stabs_index);
+}
+
+/* Free the saved stab strings. */
+
+static void
+free_saved_stabs (void)
+{
+ int i;
+
+ for (i = 0; i < SAVE_STABS_COUNT; i++)
+ {
+ if (saved_stabs[i].string != NULL)
+ {
+ free (saved_stabs[i].string);
+ saved_stabs[i].string = NULL;
+ }
+ }
+
+ saved_stabs_index = 0;
+}
diff --git a/binutils-2.24/binutils/readelf.c b/binutils-2.24/binutils/readelf.c
new file mode 100644
index 00000000..61ea0ada
--- /dev/null
+++ b/binutils-2.24/binutils/readelf.c
@@ -0,0 +1,14415 @@
+/* readelf.c -- display contents of an ELF format file
+ Copyright 1998-2013 Free Software Foundation, Inc.
+
+ Originally developed by Eric Youngdale <eric@andante.jic.com>
+ Modifications by Nick Clifton <nickc@redhat.com>
+
+ 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 3 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. */
+
+/* The difference between readelf and objdump:
+
+ Both programs are capable of displaying the contents of ELF format files,
+ so why does the binutils project have two file dumpers ?
+
+ The reason is that objdump sees an ELF file through a BFD filter of the
+ world; if BFD has a bug where, say, it disagrees about a machine constant
+ in e_flags, then the odds are good that it will remain internally
+ consistent. The linker sees it the BFD way, objdump sees it the BFD way,
+ GAS sees it the BFD way. There was need for a tool to go find out what
+ the file actually says.
+
+ This is why the readelf program does not link against the BFD library - it
+ exists as an independent program to help verify the correct working of BFD.
+
+ There is also the case that readelf can provide more information about an
+ ELF file than is provided by objdump. In particular it can display DWARF
+ debugging information which (at the moment) objdump cannot. */
+
+#include "sysdep.h"
+#include <assert.h>
+#include <time.h>
+#ifdef HAVE_ZLIB_H
+#include <zlib.h>
+#endif
+#ifdef HAVE_WCHAR_H
+#include <wchar.h>
+#endif
+
+#if __GNUC__ >= 2
+/* Define BFD64 here, even if our default architecture is 32 bit ELF
+ as this will allow us to read in and parse 64bit and 32bit ELF files.
+ Only do this if we believe that the compiler can support a 64 bit
+ data type. For now we only rely on GCC being able to do this. */
+#define BFD64
+#endif
+
+#include "bfd.h"
+#include "bucomm.h"
+#include "elfcomm.h"
+#include "dwarf.h"
+
+#include "elf/common.h"
+#include "elf/external.h"
+#include "elf/internal.h"
+
+
+/* Included here, before RELOC_MACROS_GEN_FUNC is defined, so that
+ we can obtain the H8 reloc numbers. We need these for the
+ get_reloc_size() function. We include h8.h again after defining
+ RELOC_MACROS_GEN_FUNC so that we get the naming function as well. */
+
+#include "elf/h8.h"
+#undef _ELF_H8_H
+
+/* Undo the effects of #including reloc-macros.h. */
+
+#undef START_RELOC_NUMBERS
+#undef RELOC_NUMBER
+#undef FAKE_RELOC
+#undef EMPTY_RELOC
+#undef END_RELOC_NUMBERS
+#undef _RELOC_MACROS_H
+
+/* The following headers use the elf/reloc-macros.h file to
+ automatically generate relocation recognition functions
+ such as elf_mips_reloc_type() */
+
+#define RELOC_MACROS_GEN_FUNC
+
+#include "elf/aarch64.h"
+#include "elf/alpha.h"
+#include "elf/arc.h"
+#include "elf/arm.h"
+#include "elf/avr.h"
+#include "elf/bfin.h"
+#include "elf/cr16.h"
+#include "elf/cris.h"
+#include "elf/crx.h"
+#include "elf/d10v.h"
+#include "elf/d30v.h"
+#include "elf/dlx.h"
+#include "elf/epiphany.h"
+#include "elf/fr30.h"
+#include "elf/frv.h"
+#include "elf/h8.h"
+#include "elf/hppa.h"
+#include "elf/i386.h"
+#include "elf/i370.h"
+#include "elf/i860.h"
+#include "elf/i960.h"
+#include "elf/ia64.h"
+#include "elf/ip2k.h"
+#include "elf/lm32.h"
+#include "elf/iq2000.h"
+#include "elf/m32c.h"
+#include "elf/m32r.h"
+#include "elf/m68k.h"
+#include "elf/m68hc11.h"
+#include "elf/mcore.h"
+#include "elf/mep.h"
+#include "elf/metag.h"
+#include "elf/microblaze.h"
+#include "elf/mips.h"
+#include "elf/mmix.h"
+#include "elf/mn10200.h"
+#include "elf/mn10300.h"
+#include "elf/moxie.h"
+#include "elf/mt.h"
+#include "elf/msp430.h"
+#include "elf/nios2.h"
+#include "elf/or32.h"
+#include "elf/pj.h"
+#include "elf/ppc.h"
+#include "elf/ppc64.h"
+#include "elf/rl78.h"
+#include "elf/rx.h"
+#include "elf/s390.h"
+#include "elf/score.h"
+#include "elf/sh.h"
+#include "elf/sparc.h"
+#include "elf/spu.h"
+#include "elf/tic6x.h"
+#include "elf/tilegx.h"
+#include "elf/tilepro.h"
+#include "elf/v850.h"
+#include "elf/vax.h"
+#include "elf/x86-64.h"
+#include "elf/xc16x.h"
+#include "elf/xgate.h"
+#include "elf/xstormy16.h"
+#include "elf/xtensa.h"
+
+#include "getopt.h"
+#include "libiberty.h"
+#include "safe-ctype.h"
+#include "filenames.h"
+
+#ifndef offsetof
+#define offsetof(TYPE, MEMBER) ((size_t) &(((TYPE *) 0)->MEMBER))
+#endif
+
+char * program_name = "readelf";
+static long archive_file_offset;
+static unsigned long archive_file_size;
+static unsigned long dynamic_addr;
+static bfd_size_type dynamic_size;
+static unsigned int dynamic_nent;
+static char * dynamic_strings;
+static unsigned long dynamic_strings_length;
+static char * string_table;
+static unsigned long string_table_length;
+static unsigned long num_dynamic_syms;
+static Elf_Internal_Sym * dynamic_symbols;
+static Elf_Internal_Syminfo * dynamic_syminfo;
+static unsigned long dynamic_syminfo_offset;
+static unsigned int dynamic_syminfo_nent;
+static char program_interpreter[PATH_MAX];
+static bfd_vma dynamic_info[DT_ENCODING];
+static bfd_vma dynamic_info_DT_GNU_HASH;
+static bfd_vma version_info[16];
+static Elf_Internal_Ehdr elf_header;
+static Elf_Internal_Shdr * section_headers;
+static Elf_Internal_Phdr * program_headers;
+static Elf_Internal_Dyn * dynamic_section;
+static Elf_Internal_Shdr * symtab_shndx_hdr;
+static int show_name;
+static int do_dynamic;
+static int do_syms;
+static int do_dyn_syms;
+static int do_reloc;
+static int do_sections;
+static int do_section_groups;
+static int do_section_details;
+static int do_segments;
+static int do_unwind;
+static int do_using_dynamic;
+static int do_header;
+static int do_dump;
+static int do_version;
+static int do_histogram;
+static int do_debugging;
+static int do_arch;
+static int do_notes;
+static int do_archive_index;
+static int is_32bit_elf;
+
+struct group_list
+{
+ struct group_list * next;
+ unsigned int section_index;
+};
+
+struct group
+{
+ struct group_list * root;
+ unsigned int group_index;
+};
+
+static size_t group_count;
+static struct group * section_groups;
+static struct group ** section_headers_groups;
+
+
+/* Flag bits indicating particular types of dump. */
+#define HEX_DUMP (1 << 0) /* The -x command line switch. */
+#define DISASS_DUMP (1 << 1) /* The -i command line switch. */
+#define DEBUG_DUMP (1 << 2) /* The -w command line switch. */
+#define STRING_DUMP (1 << 3) /* The -p command line switch. */
+#define RELOC_DUMP (1 << 4) /* The -R command line switch. */
+
+typedef unsigned char dump_type;
+
+/* A linked list of the section names for which dumps were requested. */
+struct dump_list_entry
+{
+ char * name;
+ dump_type type;
+ struct dump_list_entry * next;
+};
+static struct dump_list_entry * dump_sects_byname;
+
+/* A dynamic array of flags indicating for which sections a dump
+ has been requested via command line switches. */
+static dump_type * cmdline_dump_sects = NULL;
+static unsigned int num_cmdline_dump_sects = 0;
+
+/* A dynamic array of flags indicating for which sections a dump of
+ some kind has been requested. It is reset on a per-object file
+ basis and then initialised from the cmdline_dump_sects array,
+ the results of interpreting the -w switch, and the
+ dump_sects_byname list. */
+static dump_type * dump_sects = NULL;
+static unsigned int num_dump_sects = 0;
+
+
+/* How to print a vma value. */
+typedef enum print_mode
+{
+ HEX,
+ DEC,
+ DEC_5,
+ UNSIGNED,
+ PREFIX_HEX,
+ FULL_HEX,
+ LONG_HEX
+}
+print_mode;
+
+#define UNKNOWN -1
+
+#define SECTION_NAME(X) \
+ ((X) == NULL ? _("<none>") \
+ : string_table == NULL ? _("<no-name>") \
+ : ((X)->sh_name >= string_table_length ? _("<corrupt>") \
+ : string_table + (X)->sh_name))
+
+#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) /* Reverse order! */
+
+#define GET_ELF_SYMBOLS(file, section, sym_count) \
+ (is_32bit_elf ? get_32bit_elf_symbols (file, section, sym_count) \
+ : get_64bit_elf_symbols (file, section, sym_count))
+
+#define VALID_DYNAMIC_NAME(offset) ((dynamic_strings != NULL) && (offset < dynamic_strings_length))
+/* GET_DYNAMIC_NAME asssumes that VALID_DYNAMIC_NAME has
+ already been called and verified that the string exists. */
+#define GET_DYNAMIC_NAME(offset) (dynamic_strings + offset)
+
+#define REMOVE_ARCH_BITS(ADDR) \
+ do \
+ { \
+ if (elf_header.e_machine == EM_ARM) \
+ (ADDR) &= ~1; \
+ } \
+ while (0)
+
+/* Retrieve NMEMB structures, each SIZE bytes long from FILE starting at OFFSET.
+ Put the retrieved data into VAR, if it is not NULL. Otherwise allocate a buffer
+ using malloc and fill that. In either case return the pointer to the start of
+ the retrieved data or NULL if something went wrong. If something does go wrong
+ emit an error message using REASON as part of the context. */
+
+static void *
+get_data (void * var, FILE * file, long offset, size_t size, size_t nmemb,
+ const char * reason)
+{
+ void * mvar;
+
+ if (size == 0 || nmemb == 0)
+ return NULL;
+
+ if (fseek (file, archive_file_offset + offset, SEEK_SET))
+ {
+ error (_("Unable to seek to 0x%lx for %s\n"),
+ (unsigned long) archive_file_offset + offset, reason);
+ return NULL;
+ }
+
+ mvar = var;
+ if (mvar == NULL)
+ {
+ /* Check for overflow. */
+ if (nmemb < (~(size_t) 0 - 1) / size)
+ /* + 1 so that we can '\0' terminate invalid string table sections. */
+ mvar = malloc (size * nmemb + 1);
+
+ if (mvar == NULL)
+ {
+ error (_("Out of memory allocating 0x%lx bytes for %s\n"),
+ (unsigned long)(size * nmemb), reason);
+ return NULL;
+ }
+
+ ((char *) mvar)[size * nmemb] = '\0';
+ }
+
+ if (fread (mvar, size, nmemb, file) != nmemb)
+ {
+ error (_("Unable to read in 0x%lx bytes of %s\n"),
+ (unsigned long)(size * nmemb), reason);
+ if (mvar != var)
+ free (mvar);
+ return NULL;
+ }
+
+ return mvar;
+}
+
+/* Print a VMA value. */
+
+static int
+print_vma (bfd_vma vma, print_mode mode)
+{
+ int nc = 0;
+
+ switch (mode)
+ {
+ case FULL_HEX:
+ nc = printf ("0x");
+ /* Drop through. */
+
+ case LONG_HEX:
+#ifdef BFD64
+ if (is_32bit_elf)
+ return nc + printf ("%8.8" BFD_VMA_FMT "x", vma);
+#endif
+ printf_vma (vma);
+ return nc + 16;
+
+ case DEC_5:
+ if (vma <= 99999)
+ return printf ("%5" BFD_VMA_FMT "d", vma);
+ /* Drop through. */
+
+ case PREFIX_HEX:
+ nc = printf ("0x");
+ /* Drop through. */
+
+ case HEX:
+ return nc + printf ("%" BFD_VMA_FMT "x", vma);
+
+ case DEC:
+ return printf ("%" BFD_VMA_FMT "d", vma);
+
+ case UNSIGNED:
+ return printf ("%" BFD_VMA_FMT "u", vma);
+ }
+ return 0;
+}
+
+/* Display a symbol on stdout. Handles the display of control characters and
+ multibye characters (assuming the host environment supports them).
+
+ Display at most abs(WIDTH) characters, truncating as necessary, unless do_wide is true.
+
+ If WIDTH is negative then ensure that the output is at least (- WIDTH) characters,
+ padding as necessary.
+
+ Returns the number of emitted characters. */
+
+static unsigned int
+print_symbol (int width, const char *symbol)
+{
+ bfd_boolean extra_padding = FALSE;
+ int num_printed = 0;
+#ifdef HAVE_MBSTATE_T
+ mbstate_t state;
+#endif
+ int width_remaining;
+
+ if (width < 0)
+ {
+ /* Keep the width positive. This also helps. */
+ width = - width;
+ extra_padding = TRUE;
+ }
+
+ if (do_wide)
+ /* Set the remaining width to a very large value.
+ This simplifies the code below. */
+ width_remaining = INT_MAX;
+ else
+ width_remaining = width;
+
+#ifdef HAVE_MBSTATE_T
+ /* Initialise the multibyte conversion state. */
+ memset (& state, 0, sizeof (state));
+#endif
+
+ while (width_remaining)
+ {
+ size_t n;
+ const char c = *symbol++;
+
+ if (c == 0)
+ break;
+
+ /* Do not print control characters directly as they can affect terminal
+ settings. Such characters usually appear in the names generated
+ by the assembler for local labels. */
+ if (ISCNTRL (c))
+ {
+ if (width_remaining < 2)
+ break;
+
+ printf ("^%c", c + 0x40);
+ width_remaining -= 2;
+ num_printed += 2;
+ }
+ else if (ISPRINT (c))
+ {
+ putchar (c);
+ width_remaining --;
+ num_printed ++;
+ }
+ else
+ {
+#ifdef HAVE_MBSTATE_T
+ wchar_t w;
+#endif
+ /* Let printf do the hard work of displaying multibyte characters. */
+ printf ("%.1s", symbol - 1);
+ width_remaining --;
+ num_printed ++;
+
+#ifdef HAVE_MBSTATE_T
+ /* Try to find out how many bytes made up the character that was
+ just printed. Advance the symbol pointer past the bytes that
+ were displayed. */
+ n = mbrtowc (& w, symbol - 1, MB_CUR_MAX, & state);
+#else
+ n = 1;
+#endif
+ if (n != (size_t) -1 && n != (size_t) -2 && n > 0)
+ symbol += (n - 1);
+ }
+ }
+
+ if (extra_padding && num_printed < width)
+ {
+ /* Fill in the remaining spaces. */
+ printf ("%-*s", width - num_printed, " ");
+ num_printed = width;
+ }
+
+ return num_printed;
+}
+
+/* Return a pointer to section NAME, or NULL if no such section exists. */
+
+static Elf_Internal_Shdr *
+find_section (const char * name)
+{
+ unsigned int i;
+
+ for (i = 0; i < elf_header.e_shnum; i++)
+ if (streq (SECTION_NAME (section_headers + i), name))
+ return section_headers + i;
+
+ return NULL;
+}
+
+/* Return a pointer to a section containing ADDR, or NULL if no such
+ section exists. */
+
+static Elf_Internal_Shdr *
+find_section_by_address (bfd_vma addr)
+{
+ unsigned int i;
+
+ for (i = 0; i < elf_header.e_shnum; i++)
+ {
+ Elf_Internal_Shdr *sec = section_headers + i;
+ if (addr >= sec->sh_addr && addr < sec->sh_addr + sec->sh_size)
+ return sec;
+ }
+
+ return NULL;
+}
+
+/* Return a pointer to section NAME, or NULL if no such section exists,
+ restricted to the list of sections given in SET. */
+
+static Elf_Internal_Shdr *
+find_section_in_set (const char * name, unsigned int * set)
+{
+ unsigned int i;
+
+ if (set != NULL)
+ {
+ while ((i = *set++) > 0)
+ if (streq (SECTION_NAME (section_headers + i), name))
+ return section_headers + i;
+ }
+
+ return find_section (name);
+}
+
+/* Read an unsigned LEB128 encoded value from p. Set *PLEN to the number of
+ bytes read. */
+
+static inline unsigned long
+read_uleb128 (unsigned char *data,
+ unsigned int *length_return,
+ const unsigned char * const end)
+{
+ return read_leb128 (data, length_return, FALSE, end);
+}
+
+/* Return true if the current file is for IA-64 machine and OpenVMS ABI.
+ This OS has so many departures from the ELF standard that we test it at
+ many places. */
+
+static inline int
+is_ia64_vms (void)
+{
+ return elf_header.e_machine == EM_IA_64
+ && elf_header.e_ident[EI_OSABI] == ELFOSABI_OPENVMS;
+}
+
+/* Guess the relocation size commonly used by the specific machines. */
+
+static int
+guess_is_rela (unsigned int e_machine)
+{
+ switch (e_machine)
+ {
+ /* Targets that use REL relocations. */
+ case EM_386:
+ case EM_486:
+ case EM_960:
+ case EM_ARM:
+ case EM_D10V:
+ case EM_CYGNUS_D10V:
+ case EM_DLX:
+ case EM_MIPS:
+ case EM_MIPS_RS3_LE:
+ case EM_CYGNUS_M32R:
+ case EM_OPENRISC:
+ case EM_OR32:
+ case EM_SCORE:
+ case EM_XGATE:
+ return FALSE;
+
+ /* Targets that use RELA relocations. */
+ case EM_68K:
+ case EM_860:
+ case EM_AARCH64:
+ case EM_ADAPTEVA_EPIPHANY:
+ case EM_ALPHA:
+ case EM_ALTERA_NIOS2:
+ case EM_AVR:
+ case EM_AVR_OLD:
+ case EM_BLACKFIN:
+ case EM_CR16:
+ case EM_CRIS:
+ case EM_CRX:
+ case EM_D30V:
+ case EM_CYGNUS_D30V:
+ case EM_FR30:
+ case EM_CYGNUS_FR30:
+ case EM_CYGNUS_FRV:
+ case EM_H8S:
+ case EM_H8_300:
+ case EM_H8_300H:
+ case EM_IA_64:
+ case EM_IP2K:
+ case EM_IP2K_OLD:
+ case EM_IQ2000:
+ case EM_LATTICEMICO32:
+ case EM_M32C_OLD:
+ case EM_M32C:
+ case EM_M32R:
+ case EM_MCORE:
+ case EM_CYGNUS_MEP:
+ case EM_METAG:
+ case EM_MMIX:
+ case EM_MN10200:
+ case EM_CYGNUS_MN10200:
+ case EM_MN10300:
+ case EM_CYGNUS_MN10300:
+ case EM_MOXIE:
+ case EM_MSP430:
+ case EM_MSP430_OLD:
+ case EM_MT:
+ case EM_NIOS32:
+ case EM_PPC64:
+ case EM_PPC:
+ case EM_RL78:
+ case EM_RX:
+ case EM_S390:
+ case EM_S390_OLD:
+ case EM_SH:
+ case EM_SPARC:
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ case EM_SPU:
+ case EM_TI_C6000:
+ case EM_TILEGX:
+ case EM_TILEPRO:
+ case EM_V800:
+ case EM_V850:
+ case EM_CYGNUS_V850:
+ case EM_VAX:
+ case EM_X86_64:
+ case EM_L1OM:
+ case EM_K1OM:
+ case EM_XSTORMY16:
+ case EM_XTENSA:
+ case EM_XTENSA_OLD:
+ case EM_MICROBLAZE:
+ case EM_MICROBLAZE_OLD:
+ return TRUE;
+
+ case EM_68HC05:
+ case EM_68HC08:
+ case EM_68HC11:
+ case EM_68HC16:
+ case EM_FX66:
+ case EM_ME16:
+ case EM_MMA:
+ case EM_NCPU:
+ case EM_NDR1:
+ case EM_PCP:
+ case EM_ST100:
+ case EM_ST19:
+ case EM_ST7:
+ case EM_ST9PLUS:
+ case EM_STARCORE:
+ case EM_SVX:
+ case EM_TINYJ:
+ default:
+ warn (_("Don't know about relocations on this machine architecture\n"));
+ return FALSE;
+ }
+}
+
+static int
+slurp_rela_relocs (FILE * file,
+ unsigned long rel_offset,
+ unsigned long rel_size,
+ Elf_Internal_Rela ** relasp,
+ unsigned long * nrelasp)
+{
+ Elf_Internal_Rela * relas;
+ unsigned long nrelas;
+ unsigned int i;
+
+ if (is_32bit_elf)
+ {
+ Elf32_External_Rela * erelas;
+
+ erelas = (Elf32_External_Rela *) get_data (NULL, file, rel_offset, 1,
+ rel_size, _("32-bit relocation data"));
+ if (!erelas)
+ return 0;
+
+ nrelas = rel_size / sizeof (Elf32_External_Rela);
+
+ relas = (Elf_Internal_Rela *) cmalloc (nrelas,
+ sizeof (Elf_Internal_Rela));
+
+ if (relas == NULL)
+ {
+ free (erelas);
+ error (_("out of memory parsing relocs\n"));
+ return 0;
+ }
+
+ for (i = 0; i < nrelas; i++)
+ {
+ relas[i].r_offset = BYTE_GET (erelas[i].r_offset);
+ relas[i].r_info = BYTE_GET (erelas[i].r_info);
+ relas[i].r_addend = BYTE_GET_SIGNED (erelas[i].r_addend);
+ }
+
+ free (erelas);
+ }
+ else
+ {
+ Elf64_External_Rela * erelas;
+
+ erelas = (Elf64_External_Rela *) get_data (NULL, file, rel_offset, 1,
+ rel_size, _("64-bit relocation data"));
+ if (!erelas)
+ return 0;
+
+ nrelas = rel_size / sizeof (Elf64_External_Rela);
+
+ relas = (Elf_Internal_Rela *) cmalloc (nrelas,
+ sizeof (Elf_Internal_Rela));
+
+ if (relas == NULL)
+ {
+ free (erelas);
+ error (_("out of memory parsing relocs\n"));
+ return 0;
+ }
+
+ for (i = 0; i < nrelas; i++)
+ {
+ relas[i].r_offset = BYTE_GET (erelas[i].r_offset);
+ relas[i].r_info = BYTE_GET (erelas[i].r_info);
+ relas[i].r_addend = BYTE_GET_SIGNED (erelas[i].r_addend);
+
+ /* The #ifdef BFD64 below is to prevent a compile time
+ warning. We know that if we do not have a 64 bit data
+ type that we will never execute this code anyway. */
+#ifdef BFD64
+ if (elf_header.e_machine == EM_MIPS
+ && elf_header.e_ident[EI_DATA] != ELFDATA2MSB)
+ {
+ /* In little-endian objects, r_info isn't really a
+ 64-bit little-endian value: it has a 32-bit
+ little-endian symbol index followed by four
+ individual byte fields. Reorder INFO
+ accordingly. */
+ bfd_vma inf = relas[i].r_info;
+ inf = (((inf & 0xffffffff) << 32)
+ | ((inf >> 56) & 0xff)
+ | ((inf >> 40) & 0xff00)
+ | ((inf >> 24) & 0xff0000)
+ | ((inf >> 8) & 0xff000000));
+ relas[i].r_info = inf;
+ }
+#endif /* BFD64 */
+ }
+
+ free (erelas);
+ }
+ *relasp = relas;
+ *nrelasp = nrelas;
+ return 1;
+}
+
+static int
+slurp_rel_relocs (FILE * file,
+ unsigned long rel_offset,
+ unsigned long rel_size,
+ Elf_Internal_Rela ** relsp,
+ unsigned long * nrelsp)
+{
+ Elf_Internal_Rela * rels;
+ unsigned long nrels;
+ unsigned int i;
+
+ if (is_32bit_elf)
+ {
+ Elf32_External_Rel * erels;
+
+ erels = (Elf32_External_Rel *) get_data (NULL, file, rel_offset, 1,
+ rel_size, _("32-bit relocation data"));
+ if (!erels)
+ return 0;
+
+ nrels = rel_size / sizeof (Elf32_External_Rel);
+
+ rels = (Elf_Internal_Rela *) cmalloc (nrels, sizeof (Elf_Internal_Rela));
+
+ if (rels == NULL)
+ {
+ free (erels);
+ error (_("out of memory parsing relocs\n"));
+ return 0;
+ }
+
+ for (i = 0; i < nrels; i++)
+ {
+ rels[i].r_offset = BYTE_GET (erels[i].r_offset);
+ rels[i].r_info = BYTE_GET (erels[i].r_info);
+ rels[i].r_addend = 0;
+ }
+
+ free (erels);
+ }
+ else
+ {
+ Elf64_External_Rel * erels;
+
+ erels = (Elf64_External_Rel *) get_data (NULL, file, rel_offset, 1,
+ rel_size, _("64-bit relocation data"));
+ if (!erels)
+ return 0;
+
+ nrels = rel_size / sizeof (Elf64_External_Rel);
+
+ rels = (Elf_Internal_Rela *) cmalloc (nrels, sizeof (Elf_Internal_Rela));
+
+ if (rels == NULL)
+ {
+ free (erels);
+ error (_("out of memory parsing relocs\n"));
+ return 0;
+ }
+
+ for (i = 0; i < nrels; i++)
+ {
+ rels[i].r_offset = BYTE_GET (erels[i].r_offset);
+ rels[i].r_info = BYTE_GET (erels[i].r_info);
+ rels[i].r_addend = 0;
+
+ /* The #ifdef BFD64 below is to prevent a compile time
+ warning. We know that if we do not have a 64 bit data
+ type that we will never execute this code anyway. */
+#ifdef BFD64
+ if (elf_header.e_machine == EM_MIPS
+ && elf_header.e_ident[EI_DATA] != ELFDATA2MSB)
+ {
+ /* In little-endian objects, r_info isn't really a
+ 64-bit little-endian value: it has a 32-bit
+ little-endian symbol index followed by four
+ individual byte fields. Reorder INFO
+ accordingly. */
+ bfd_vma inf = rels[i].r_info;
+ inf = (((inf & 0xffffffff) << 32)
+ | ((inf >> 56) & 0xff)
+ | ((inf >> 40) & 0xff00)
+ | ((inf >> 24) & 0xff0000)
+ | ((inf >> 8) & 0xff000000));
+ rels[i].r_info = inf;
+ }
+#endif /* BFD64 */
+ }
+
+ free (erels);
+ }
+ *relsp = rels;
+ *nrelsp = nrels;
+ return 1;
+}
+
+/* Returns the reloc type extracted from the reloc info field. */
+
+static unsigned int
+get_reloc_type (bfd_vma reloc_info)
+{
+ if (is_32bit_elf)
+ return ELF32_R_TYPE (reloc_info);
+
+ switch (elf_header.e_machine)
+ {
+ case EM_MIPS:
+ /* Note: We assume that reloc_info has already been adjusted for us. */
+ return ELF64_MIPS_R_TYPE (reloc_info);
+
+ case EM_SPARCV9:
+ return ELF64_R_TYPE_ID (reloc_info);
+
+ default:
+ return ELF64_R_TYPE (reloc_info);
+ }
+}
+
+/* Return the symbol index extracted from the reloc info field. */
+
+static bfd_vma
+get_reloc_symindex (bfd_vma reloc_info)
+{
+ return is_32bit_elf ? ELF32_R_SYM (reloc_info) : ELF64_R_SYM (reloc_info);
+}
+
+static inline bfd_boolean
+uses_msp430x_relocs (void)
+{
+ return
+ elf_header.e_machine == EM_MSP430 /* Paranoia. */
+ /* GCC uses osabi == ELFOSBI_STANDALONE. */
+ && (((elf_header.e_flags & EF_MSP430_MACH) == E_MSP430_MACH_MSP430X)
+ /* TI compiler uses ELFOSABI_NONE. */
+ || (elf_header.e_ident[EI_OSABI] == ELFOSABI_NONE));
+}
+
+/* Display the contents of the relocation data found at the specified
+ offset. */
+
+static void
+dump_relocations (FILE * file,
+ unsigned long rel_offset,
+ unsigned long rel_size,
+ Elf_Internal_Sym * symtab,
+ unsigned long nsyms,
+ char * strtab,
+ unsigned long strtablen,
+ int is_rela)
+{
+ unsigned int i;
+ Elf_Internal_Rela * rels;
+
+ if (is_rela == UNKNOWN)
+ is_rela = guess_is_rela (elf_header.e_machine);
+
+ if (is_rela)
+ {
+ if (!slurp_rela_relocs (file, rel_offset, rel_size, &rels, &rel_size))
+ return;
+ }
+ else
+ {
+ if (!slurp_rel_relocs (file, rel_offset, rel_size, &rels, &rel_size))
+ return;
+ }
+
+ if (is_32bit_elf)
+ {
+ if (is_rela)
+ {
+ if (do_wide)
+ printf (_(" Offset Info Type Sym. Value Symbol's Name + Addend\n"));
+ else
+ printf (_(" Offset Info Type Sym.Value Sym. Name + Addend\n"));
+ }
+ else
+ {
+ if (do_wide)
+ printf (_(" Offset Info Type Sym. Value Symbol's Name\n"));
+ else
+ printf (_(" Offset Info Type Sym.Value Sym. Name\n"));
+ }
+ }
+ else
+ {
+ if (is_rela)
+ {
+ if (do_wide)
+ printf (_(" Offset Info Type Symbol's Value Symbol's Name + Addend\n"));
+ else
+ printf (_(" Offset Info Type Sym. Value Sym. Name + Addend\n"));
+ }
+ else
+ {
+ if (do_wide)
+ printf (_(" Offset Info Type Symbol's Value Symbol's Name\n"));
+ else
+ printf (_(" Offset Info Type Sym. Value Sym. Name\n"));
+ }
+ }
+
+ for (i = 0; i < rel_size; i++)
+ {
+ const char * rtype;
+ bfd_vma offset;
+ bfd_vma inf;
+ bfd_vma symtab_index;
+ bfd_vma type;
+
+ offset = rels[i].r_offset;
+ inf = rels[i].r_info;
+
+ type = get_reloc_type (inf);
+ symtab_index = get_reloc_symindex (inf);
+
+ if (is_32bit_elf)
+ {
+ printf ("%8.8lx %8.8lx ",
+ (unsigned long) offset & 0xffffffff,
+ (unsigned long) inf & 0xffffffff);
+ }
+ else
+ {
+#if BFD_HOST_64BIT_LONG
+ printf (do_wide
+ ? "%16.16lx %16.16lx "
+ : "%12.12lx %12.12lx ",
+ offset, inf);
+#elif BFD_HOST_64BIT_LONG_LONG
+#ifndef __MSVCRT__
+ printf (do_wide
+ ? "%16.16llx %16.16llx "
+ : "%12.12llx %12.12llx ",
+ offset, inf);
+#else
+ printf (do_wide
+ ? "%16.16I64x %16.16I64x "
+ : "%12.12I64x %12.12I64x ",
+ offset, inf);
+#endif
+#else
+ printf (do_wide
+ ? "%8.8lx%8.8lx %8.8lx%8.8lx "
+ : "%4.4lx%8.8lx %4.4lx%8.8lx ",
+ _bfd_int64_high (offset),
+ _bfd_int64_low (offset),
+ _bfd_int64_high (inf),
+ _bfd_int64_low (inf));
+#endif
+ }
+
+ switch (elf_header.e_machine)
+ {
+ default:
+ rtype = NULL;
+ break;
+
+ case EM_AARCH64:
+ rtype = elf_aarch64_reloc_type (type);
+ break;
+
+ case EM_M32R:
+ case EM_CYGNUS_M32R:
+ rtype = elf_m32r_reloc_type (type);
+ break;
+
+ case EM_386:
+ case EM_486:
+ rtype = elf_i386_reloc_type (type);
+ break;
+
+ case EM_68HC11:
+ case EM_68HC12:
+ rtype = elf_m68hc11_reloc_type (type);
+ break;
+
+ case EM_68K:
+ rtype = elf_m68k_reloc_type (type);
+ break;
+
+ case EM_960:
+ rtype = elf_i960_reloc_type (type);
+ break;
+
+ case EM_AVR:
+ case EM_AVR_OLD:
+ rtype = elf_avr_reloc_type (type);
+ break;
+
+ case EM_OLD_SPARCV9:
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ case EM_SPARC:
+ rtype = elf_sparc_reloc_type (type);
+ break;
+
+ case EM_SPU:
+ rtype = elf_spu_reloc_type (type);
+ break;
+
+ case EM_V800:
+ rtype = v800_reloc_type (type);
+ break;
+ case EM_V850:
+ case EM_CYGNUS_V850:
+ rtype = v850_reloc_type (type);
+ break;
+
+ case EM_D10V:
+ case EM_CYGNUS_D10V:
+ rtype = elf_d10v_reloc_type (type);
+ break;
+
+ case EM_D30V:
+ case EM_CYGNUS_D30V:
+ rtype = elf_d30v_reloc_type (type);
+ break;
+
+ case EM_DLX:
+ rtype = elf_dlx_reloc_type (type);
+ break;
+
+ case EM_SH:
+ rtype = elf_sh_reloc_type (type);
+ break;
+
+ case EM_MN10300:
+ case EM_CYGNUS_MN10300:
+ rtype = elf_mn10300_reloc_type (type);
+ break;
+
+ case EM_MN10200:
+ case EM_CYGNUS_MN10200:
+ rtype = elf_mn10200_reloc_type (type);
+ break;
+
+ case EM_FR30:
+ case EM_CYGNUS_FR30:
+ rtype = elf_fr30_reloc_type (type);
+ break;
+
+ case EM_CYGNUS_FRV:
+ rtype = elf_frv_reloc_type (type);
+ break;
+
+ case EM_MCORE:
+ rtype = elf_mcore_reloc_type (type);
+ break;
+
+ case EM_MMIX:
+ rtype = elf_mmix_reloc_type (type);
+ break;
+
+ case EM_MOXIE:
+ rtype = elf_moxie_reloc_type (type);
+ break;
+
+ case EM_MSP430:
+ if (uses_msp430x_relocs ())
+ {
+ rtype = elf_msp430x_reloc_type (type);
+ break;
+ }
+ case EM_MSP430_OLD:
+ rtype = elf_msp430_reloc_type (type);
+ break;
+
+ case EM_PPC:
+ rtype = elf_ppc_reloc_type (type);
+ break;
+
+ case EM_PPC64:
+ rtype = elf_ppc64_reloc_type (type);
+ break;
+
+ case EM_MIPS:
+ case EM_MIPS_RS3_LE:
+ rtype = elf_mips_reloc_type (type);
+ break;
+
+ case EM_ALPHA:
+ rtype = elf_alpha_reloc_type (type);
+ break;
+
+ case EM_ARM:
+ rtype = elf_arm_reloc_type (type);
+ break;
+
+ case EM_ARC:
+ rtype = elf_arc_reloc_type (type);
+ break;
+
+ case EM_PARISC:
+ rtype = elf_hppa_reloc_type (type);
+ break;
+
+ case EM_H8_300:
+ case EM_H8_300H:
+ case EM_H8S:
+ rtype = elf_h8_reloc_type (type);
+ break;
+
+ case EM_OPENRISC:
+ case EM_OR32:
+ rtype = elf_or32_reloc_type (type);
+ break;
+
+ case EM_PJ:
+ case EM_PJ_OLD:
+ rtype = elf_pj_reloc_type (type);
+ break;
+ case EM_IA_64:
+ rtype = elf_ia64_reloc_type (type);
+ break;
+
+ case EM_CRIS:
+ rtype = elf_cris_reloc_type (type);
+ break;
+
+ case EM_860:
+ rtype = elf_i860_reloc_type (type);
+ break;
+
+ case EM_X86_64:
+ case EM_L1OM:
+ case EM_K1OM:
+ rtype = elf_x86_64_reloc_type (type);
+ break;
+
+ case EM_S370:
+ rtype = i370_reloc_type (type);
+ break;
+
+ case EM_S390_OLD:
+ case EM_S390:
+ rtype = elf_s390_reloc_type (type);
+ break;
+
+ case EM_SCORE:
+ rtype = elf_score_reloc_type (type);
+ break;
+
+ case EM_XSTORMY16:
+ rtype = elf_xstormy16_reloc_type (type);
+ break;
+
+ case EM_CRX:
+ rtype = elf_crx_reloc_type (type);
+ break;
+
+ case EM_VAX:
+ rtype = elf_vax_reloc_type (type);
+ break;
+
+ case EM_ADAPTEVA_EPIPHANY:
+ rtype = elf_epiphany_reloc_type (type);
+ break;
+
+ case EM_IP2K:
+ case EM_IP2K_OLD:
+ rtype = elf_ip2k_reloc_type (type);
+ break;
+
+ case EM_IQ2000:
+ rtype = elf_iq2000_reloc_type (type);
+ break;
+
+ case EM_XTENSA_OLD:
+ case EM_XTENSA:
+ rtype = elf_xtensa_reloc_type (type);
+ break;
+
+ case EM_LATTICEMICO32:
+ rtype = elf_lm32_reloc_type (type);
+ break;
+
+ case EM_M32C_OLD:
+ case EM_M32C:
+ rtype = elf_m32c_reloc_type (type);
+ break;
+
+ case EM_MT:
+ rtype = elf_mt_reloc_type (type);
+ break;
+
+ case EM_BLACKFIN:
+ rtype = elf_bfin_reloc_type (type);
+ break;
+
+ case EM_CYGNUS_MEP:
+ rtype = elf_mep_reloc_type (type);
+ break;
+
+ case EM_CR16:
+ rtype = elf_cr16_reloc_type (type);
+ break;
+
+ case EM_MICROBLAZE:
+ case EM_MICROBLAZE_OLD:
+ rtype = elf_microblaze_reloc_type (type);
+ break;
+
+ case EM_RL78:
+ rtype = elf_rl78_reloc_type (type);
+ break;
+
+ case EM_RX:
+ rtype = elf_rx_reloc_type (type);
+ break;
+
+ case EM_METAG:
+ rtype = elf_metag_reloc_type (type);
+ break;
+
+ case EM_XC16X:
+ case EM_C166:
+ rtype = elf_xc16x_reloc_type (type);
+ break;
+
+ case EM_TI_C6000:
+ rtype = elf_tic6x_reloc_type (type);
+ break;
+
+ case EM_TILEGX:
+ rtype = elf_tilegx_reloc_type (type);
+ break;
+
+ case EM_TILEPRO:
+ rtype = elf_tilepro_reloc_type (type);
+ break;
+
+ case EM_XGATE:
+ rtype = elf_xgate_reloc_type (type);
+ break;
+
+ case EM_ALTERA_NIOS2:
+ rtype = elf_nios2_reloc_type (type);
+ break;
+ }
+
+ if (rtype == NULL)
+ printf (_("unrecognized: %-7lx"), (unsigned long) type & 0xffffffff);
+ else
+ printf (do_wide ? "%-22.22s" : "%-17.17s", rtype);
+
+ if (elf_header.e_machine == EM_ALPHA
+ && rtype != NULL
+ && streq (rtype, "R_ALPHA_LITUSE")
+ && is_rela)
+ {
+ switch (rels[i].r_addend)
+ {
+ case LITUSE_ALPHA_ADDR: rtype = "ADDR"; break;
+ case LITUSE_ALPHA_BASE: rtype = "BASE"; break;
+ case LITUSE_ALPHA_BYTOFF: rtype = "BYTOFF"; break;
+ case LITUSE_ALPHA_JSR: rtype = "JSR"; break;
+ case LITUSE_ALPHA_TLSGD: rtype = "TLSGD"; break;
+ case LITUSE_ALPHA_TLSLDM: rtype = "TLSLDM"; break;
+ case LITUSE_ALPHA_JSRDIRECT: rtype = "JSRDIRECT"; break;
+ default: rtype = NULL;
+ }
+ if (rtype)
+ printf (" (%s)", rtype);
+ else
+ {
+ putchar (' ');
+ printf (_("<unknown addend: %lx>"),
+ (unsigned long) rels[i].r_addend);
+ }
+ }
+ else if (symtab_index)
+ {
+ if (symtab == NULL || symtab_index >= nsyms)
+ printf (_(" bad symbol index: %08lx"), (unsigned long) symtab_index);
+ else
+ {
+ Elf_Internal_Sym * psym;
+
+ psym = symtab + symtab_index;
+
+ printf (" ");
+
+ if (ELF_ST_TYPE (psym->st_info) == STT_GNU_IFUNC)
+ {
+ const char * name;
+ unsigned int len;
+ unsigned int width = is_32bit_elf ? 8 : 14;
+
+ /* Relocations against GNU_IFUNC symbols do not use the value
+ of the symbol as the address to relocate against. Instead
+ they invoke the function named by the symbol and use its
+ result as the address for relocation.
+
+ To indicate this to the user, do not display the value of
+ the symbol in the "Symbols's Value" field. Instead show
+ its name followed by () as a hint that the symbol is
+ invoked. */
+
+ if (strtab == NULL
+ || psym->st_name == 0
+ || psym->st_name >= strtablen)
+ name = "??";
+ else
+ name = strtab + psym->st_name;
+
+ len = print_symbol (width, name);
+ printf ("()%-*s", len <= width ? (width + 1) - len : 1, " ");
+ }
+ else
+ {
+ print_vma (psym->st_value, LONG_HEX);
+
+ printf (is_32bit_elf ? " " : " ");
+ }
+
+ if (psym->st_name == 0)
+ {
+ const char * sec_name = "<null>";
+ char name_buf[40];
+
+ if (ELF_ST_TYPE (psym->st_info) == STT_SECTION)
+ {
+ if (psym->st_shndx < elf_header.e_shnum)
+ sec_name
+ = SECTION_NAME (section_headers + psym->st_shndx);
+ else if (psym->st_shndx == SHN_ABS)
+ sec_name = "ABS";
+ else if (psym->st_shndx == SHN_COMMON)
+ sec_name = "COMMON";
+ else if ((elf_header.e_machine == EM_MIPS
+ && psym->st_shndx == SHN_MIPS_SCOMMON)
+ || (elf_header.e_machine == EM_TI_C6000
+ && psym->st_shndx == SHN_TIC6X_SCOMMON))
+ sec_name = "SCOMMON";
+ else if (elf_header.e_machine == EM_MIPS
+ && psym->st_shndx == SHN_MIPS_SUNDEFINED)
+ sec_name = "SUNDEF";
+ else if ((elf_header.e_machine == EM_X86_64
+ || elf_header.e_machine == EM_L1OM
+ || elf_header.e_machine == EM_K1OM)
+ && psym->st_shndx == SHN_X86_64_LCOMMON)
+ sec_name = "LARGE_COMMON";
+ else if (elf_header.e_machine == EM_IA_64
+ && elf_header.e_ident[EI_OSABI] == ELFOSABI_HPUX
+ && psym->st_shndx == SHN_IA_64_ANSI_COMMON)
+ sec_name = "ANSI_COM";
+ else if (is_ia64_vms ()
+ && psym->st_shndx == SHN_IA_64_VMS_SYMVEC)
+ sec_name = "VMS_SYMVEC";
+ else
+ {
+ sprintf (name_buf, "<section 0x%x>",
+ (unsigned int) psym->st_shndx);
+ sec_name = name_buf;
+ }
+ }
+ print_symbol (22, sec_name);
+ }
+ else if (strtab == NULL)
+ printf (_("<string table index: %3ld>"), psym->st_name);
+ else if (psym->st_name >= strtablen)
+ printf (_("<corrupt string table index: %3ld>"), psym->st_name);
+ else
+ print_symbol (22, strtab + psym->st_name);
+
+ if (is_rela)
+ {
+ bfd_signed_vma off = rels[i].r_addend;
+
+ if (off < 0)
+ printf (" - %" BFD_VMA_FMT "x", - off);
+ else
+ printf (" + %" BFD_VMA_FMT "x", off);
+ }
+ }
+ }
+ else if (is_rela)
+ {
+ bfd_signed_vma off = rels[i].r_addend;
+
+ printf ("%*c", is_32bit_elf ? 12 : 20, ' ');
+ if (off < 0)
+ printf ("-%" BFD_VMA_FMT "x", - off);
+ else
+ printf ("%" BFD_VMA_FMT "x", off);
+ }
+
+ if (elf_header.e_machine == EM_SPARCV9
+ && rtype != NULL
+ && streq (rtype, "R_SPARC_OLO10"))
+ printf (" + %lx", (unsigned long) ELF64_R_TYPE_DATA (inf));
+
+ putchar ('\n');
+
+#ifdef BFD64
+ if (! is_32bit_elf && elf_header.e_machine == EM_MIPS)
+ {
+ bfd_vma type2 = ELF64_MIPS_R_TYPE2 (inf);
+ bfd_vma type3 = ELF64_MIPS_R_TYPE3 (inf);
+ const char * rtype2 = elf_mips_reloc_type (type2);
+ const char * rtype3 = elf_mips_reloc_type (type3);
+
+ printf (" Type2: ");
+
+ if (rtype2 == NULL)
+ printf (_("unrecognized: %-7lx"),
+ (unsigned long) type2 & 0xffffffff);
+ else
+ printf ("%-17.17s", rtype2);
+
+ printf ("\n Type3: ");
+
+ if (rtype3 == NULL)
+ printf (_("unrecognized: %-7lx"),
+ (unsigned long) type3 & 0xffffffff);
+ else
+ printf ("%-17.17s", rtype3);
+
+ putchar ('\n');
+ }
+#endif /* BFD64 */
+ }
+
+ free (rels);
+}
+
+static const char *
+get_mips_dynamic_type (unsigned long type)
+{
+ switch (type)
+ {
+ case DT_MIPS_RLD_VERSION: return "MIPS_RLD_VERSION";
+ case DT_MIPS_TIME_STAMP: return "MIPS_TIME_STAMP";
+ case DT_MIPS_ICHECKSUM: return "MIPS_ICHECKSUM";
+ case DT_MIPS_IVERSION: return "MIPS_IVERSION";
+ case DT_MIPS_FLAGS: return "MIPS_FLAGS";
+ case DT_MIPS_BASE_ADDRESS: return "MIPS_BASE_ADDRESS";
+ case DT_MIPS_MSYM: return "MIPS_MSYM";
+ case DT_MIPS_CONFLICT: return "MIPS_CONFLICT";
+ case DT_MIPS_LIBLIST: return "MIPS_LIBLIST";
+ case DT_MIPS_LOCAL_GOTNO: return "MIPS_LOCAL_GOTNO";
+ case DT_MIPS_CONFLICTNO: return "MIPS_CONFLICTNO";
+ case DT_MIPS_LIBLISTNO: return "MIPS_LIBLISTNO";
+ case DT_MIPS_SYMTABNO: return "MIPS_SYMTABNO";
+ case DT_MIPS_UNREFEXTNO: return "MIPS_UNREFEXTNO";
+ case DT_MIPS_GOTSYM: return "MIPS_GOTSYM";
+ case DT_MIPS_HIPAGENO: return "MIPS_HIPAGENO";
+ case DT_MIPS_RLD_MAP: return "MIPS_RLD_MAP";
+ case DT_MIPS_DELTA_CLASS: return "MIPS_DELTA_CLASS";
+ case DT_MIPS_DELTA_CLASS_NO: return "MIPS_DELTA_CLASS_NO";
+ case DT_MIPS_DELTA_INSTANCE: return "MIPS_DELTA_INSTANCE";
+ case DT_MIPS_DELTA_INSTANCE_NO: return "MIPS_DELTA_INSTANCE_NO";
+ case DT_MIPS_DELTA_RELOC: return "MIPS_DELTA_RELOC";
+ case DT_MIPS_DELTA_RELOC_NO: return "MIPS_DELTA_RELOC_NO";
+ case DT_MIPS_DELTA_SYM: return "MIPS_DELTA_SYM";
+ case DT_MIPS_DELTA_SYM_NO: return "MIPS_DELTA_SYM_NO";
+ case DT_MIPS_DELTA_CLASSSYM: return "MIPS_DELTA_CLASSSYM";
+ case DT_MIPS_DELTA_CLASSSYM_NO: return "MIPS_DELTA_CLASSSYM_NO";
+ case DT_MIPS_CXX_FLAGS: return "MIPS_CXX_FLAGS";
+ case DT_MIPS_PIXIE_INIT: return "MIPS_PIXIE_INIT";
+ case DT_MIPS_SYMBOL_LIB: return "MIPS_SYMBOL_LIB";
+ case DT_MIPS_LOCALPAGE_GOTIDX: return "MIPS_LOCALPAGE_GOTIDX";
+ case DT_MIPS_LOCAL_GOTIDX: return "MIPS_LOCAL_GOTIDX";
+ case DT_MIPS_HIDDEN_GOTIDX: return "MIPS_HIDDEN_GOTIDX";
+ case DT_MIPS_PROTECTED_GOTIDX: return "MIPS_PROTECTED_GOTIDX";
+ case DT_MIPS_OPTIONS: return "MIPS_OPTIONS";
+ case DT_MIPS_INTERFACE: return "MIPS_INTERFACE";
+ case DT_MIPS_DYNSTR_ALIGN: return "MIPS_DYNSTR_ALIGN";
+ case DT_MIPS_INTERFACE_SIZE: return "MIPS_INTERFACE_SIZE";
+ case DT_MIPS_RLD_TEXT_RESOLVE_ADDR: return "MIPS_RLD_TEXT_RESOLVE_ADDR";
+ case DT_MIPS_PERF_SUFFIX: return "MIPS_PERF_SUFFIX";
+ case DT_MIPS_COMPACT_SIZE: return "MIPS_COMPACT_SIZE";
+ case DT_MIPS_GP_VALUE: return "MIPS_GP_VALUE";
+ case DT_MIPS_AUX_DYNAMIC: return "MIPS_AUX_DYNAMIC";
+ case DT_MIPS_PLTGOT: return "MIPS_PLTGOT";
+ case DT_MIPS_RWPLT: return "MIPS_RWPLT";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_sparc64_dynamic_type (unsigned long type)
+{
+ switch (type)
+ {
+ case DT_SPARC_REGISTER: return "SPARC_REGISTER";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_ppc_dynamic_type (unsigned long type)
+{
+ switch (type)
+ {
+ case DT_PPC_GOT: return "PPC_GOT";
+ case DT_PPC_OPT: return "PPC_OPT";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_ppc64_dynamic_type (unsigned long type)
+{
+ switch (type)
+ {
+ case DT_PPC64_GLINK: return "PPC64_GLINK";
+ case DT_PPC64_OPD: return "PPC64_OPD";
+ case DT_PPC64_OPDSZ: return "PPC64_OPDSZ";
+ case DT_PPC64_OPT: return "PPC64_OPT";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_parisc_dynamic_type (unsigned long type)
+{
+ switch (type)
+ {
+ case DT_HP_LOAD_MAP: return "HP_LOAD_MAP";
+ case DT_HP_DLD_FLAGS: return "HP_DLD_FLAGS";
+ case DT_HP_DLD_HOOK: return "HP_DLD_HOOK";
+ case DT_HP_UX10_INIT: return "HP_UX10_INIT";
+ case DT_HP_UX10_INITSZ: return "HP_UX10_INITSZ";
+ case DT_HP_PREINIT: return "HP_PREINIT";
+ case DT_HP_PREINITSZ: return "HP_PREINITSZ";
+ case DT_HP_NEEDED: return "HP_NEEDED";
+ case DT_HP_TIME_STAMP: return "HP_TIME_STAMP";
+ case DT_HP_CHECKSUM: return "HP_CHECKSUM";
+ case DT_HP_GST_SIZE: return "HP_GST_SIZE";
+ case DT_HP_GST_VERSION: return "HP_GST_VERSION";
+ case DT_HP_GST_HASHVAL: return "HP_GST_HASHVAL";
+ case DT_HP_EPLTREL: return "HP_GST_EPLTREL";
+ case DT_HP_EPLTRELSZ: return "HP_GST_EPLTRELSZ";
+ case DT_HP_FILTERED: return "HP_FILTERED";
+ case DT_HP_FILTER_TLS: return "HP_FILTER_TLS";
+ case DT_HP_COMPAT_FILTERED: return "HP_COMPAT_FILTERED";
+ case DT_HP_LAZYLOAD: return "HP_LAZYLOAD";
+ case DT_HP_BIND_NOW_COUNT: return "HP_BIND_NOW_COUNT";
+ case DT_PLT: return "PLT";
+ case DT_PLT_SIZE: return "PLT_SIZE";
+ case DT_DLT: return "DLT";
+ case DT_DLT_SIZE: return "DLT_SIZE";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_ia64_dynamic_type (unsigned long type)
+{
+ switch (type)
+ {
+ case DT_IA_64_PLT_RESERVE: return "IA_64_PLT_RESERVE";
+ case DT_IA_64_VMS_SUBTYPE: return "VMS_SUBTYPE";
+ case DT_IA_64_VMS_IMGIOCNT: return "VMS_IMGIOCNT";
+ case DT_IA_64_VMS_LNKFLAGS: return "VMS_LNKFLAGS";
+ case DT_IA_64_VMS_VIR_MEM_BLK_SIZ: return "VMS_VIR_MEM_BLK_SIZ";
+ case DT_IA_64_VMS_IDENT: return "VMS_IDENT";
+ case DT_IA_64_VMS_NEEDED_IDENT: return "VMS_NEEDED_IDENT";
+ case DT_IA_64_VMS_IMG_RELA_CNT: return "VMS_IMG_RELA_CNT";
+ case DT_IA_64_VMS_SEG_RELA_CNT: return "VMS_SEG_RELA_CNT";
+ case DT_IA_64_VMS_FIXUP_RELA_CNT: return "VMS_FIXUP_RELA_CNT";
+ case DT_IA_64_VMS_FIXUP_NEEDED: return "VMS_FIXUP_NEEDED";
+ case DT_IA_64_VMS_SYMVEC_CNT: return "VMS_SYMVEC_CNT";
+ case DT_IA_64_VMS_XLATED: return "VMS_XLATED";
+ case DT_IA_64_VMS_STACKSIZE: return "VMS_STACKSIZE";
+ case DT_IA_64_VMS_UNWINDSZ: return "VMS_UNWINDSZ";
+ case DT_IA_64_VMS_UNWIND_CODSEG: return "VMS_UNWIND_CODSEG";
+ case DT_IA_64_VMS_UNWIND_INFOSEG: return "VMS_UNWIND_INFOSEG";
+ case DT_IA_64_VMS_LINKTIME: return "VMS_LINKTIME";
+ case DT_IA_64_VMS_SEG_NO: return "VMS_SEG_NO";
+ case DT_IA_64_VMS_SYMVEC_OFFSET: return "VMS_SYMVEC_OFFSET";
+ case DT_IA_64_VMS_SYMVEC_SEG: return "VMS_SYMVEC_SEG";
+ case DT_IA_64_VMS_UNWIND_OFFSET: return "VMS_UNWIND_OFFSET";
+ case DT_IA_64_VMS_UNWIND_SEG: return "VMS_UNWIND_SEG";
+ case DT_IA_64_VMS_STRTAB_OFFSET: return "VMS_STRTAB_OFFSET";
+ case DT_IA_64_VMS_SYSVER_OFFSET: return "VMS_SYSVER_OFFSET";
+ case DT_IA_64_VMS_IMG_RELA_OFF: return "VMS_IMG_RELA_OFF";
+ case DT_IA_64_VMS_SEG_RELA_OFF: return "VMS_SEG_RELA_OFF";
+ case DT_IA_64_VMS_FIXUP_RELA_OFF: return "VMS_FIXUP_RELA_OFF";
+ case DT_IA_64_VMS_PLTGOT_OFFSET: return "VMS_PLTGOT_OFFSET";
+ case DT_IA_64_VMS_PLTGOT_SEG: return "VMS_PLTGOT_SEG";
+ case DT_IA_64_VMS_FPMODE: return "VMS_FPMODE";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_alpha_dynamic_type (unsigned long type)
+{
+ switch (type)
+ {
+ case DT_ALPHA_PLTRO: return "ALPHA_PLTRO";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_score_dynamic_type (unsigned long type)
+{
+ switch (type)
+ {
+ case DT_SCORE_BASE_ADDRESS: return "SCORE_BASE_ADDRESS";
+ case DT_SCORE_LOCAL_GOTNO: return "SCORE_LOCAL_GOTNO";
+ case DT_SCORE_SYMTABNO: return "SCORE_SYMTABNO";
+ case DT_SCORE_GOTSYM: return "SCORE_GOTSYM";
+ case DT_SCORE_UNREFEXTNO: return "SCORE_UNREFEXTNO";
+ case DT_SCORE_HIPAGENO: return "SCORE_HIPAGENO";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_tic6x_dynamic_type (unsigned long type)
+{
+ switch (type)
+ {
+ case DT_C6000_GSYM_OFFSET: return "C6000_GSYM_OFFSET";
+ case DT_C6000_GSTR_OFFSET: return "C6000_GSTR_OFFSET";
+ case DT_C6000_DSBT_BASE: return "C6000_DSBT_BASE";
+ case DT_C6000_DSBT_SIZE: return "C6000_DSBT_SIZE";
+ case DT_C6000_PREEMPTMAP: return "C6000_PREEMPTMAP";
+ case DT_C6000_DSBT_INDEX: return "C6000_DSBT_INDEX";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_nios2_dynamic_type (unsigned long type)
+{
+ switch (type)
+ {
+ case DT_NIOS2_GP: return "NIOS2_GP";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_dynamic_type (unsigned long type)
+{
+ static char buff[64];
+
+ switch (type)
+ {
+ case DT_NULL: return "NULL";
+ case DT_NEEDED: return "NEEDED";
+ case DT_PLTRELSZ: return "PLTRELSZ";
+ case DT_PLTGOT: return "PLTGOT";
+ case DT_HASH: return "HASH";
+ case DT_STRTAB: return "STRTAB";
+ case DT_SYMTAB: return "SYMTAB";
+ case DT_RELA: return "RELA";
+ case DT_RELASZ: return "RELASZ";
+ case DT_RELAENT: return "RELAENT";
+ case DT_STRSZ: return "STRSZ";
+ case DT_SYMENT: return "SYMENT";
+ case DT_INIT: return "INIT";
+ case DT_FINI: return "FINI";
+ case DT_SONAME: return "SONAME";
+ case DT_RPATH: return "RPATH";
+ case DT_SYMBOLIC: return "SYMBOLIC";
+ case DT_REL: return "REL";
+ case DT_RELSZ: return "RELSZ";
+ case DT_RELENT: return "RELENT";
+ case DT_PLTREL: return "PLTREL";
+ case DT_DEBUG: return "DEBUG";
+ case DT_TEXTREL: return "TEXTREL";
+ case DT_JMPREL: return "JMPREL";
+ case DT_BIND_NOW: return "BIND_NOW";
+ case DT_INIT_ARRAY: return "INIT_ARRAY";
+ case DT_FINI_ARRAY: return "FINI_ARRAY";
+ case DT_INIT_ARRAYSZ: return "INIT_ARRAYSZ";
+ case DT_FINI_ARRAYSZ: return "FINI_ARRAYSZ";
+ case DT_RUNPATH: return "RUNPATH";
+ case DT_FLAGS: return "FLAGS";
+
+ case DT_PREINIT_ARRAY: return "PREINIT_ARRAY";
+ case DT_PREINIT_ARRAYSZ: return "PREINIT_ARRAYSZ";
+
+ case DT_CHECKSUM: return "CHECKSUM";
+ case DT_PLTPADSZ: return "PLTPADSZ";
+ case DT_MOVEENT: return "MOVEENT";
+ case DT_MOVESZ: return "MOVESZ";
+ case DT_FEATURE: return "FEATURE";
+ case DT_POSFLAG_1: return "POSFLAG_1";
+ case DT_SYMINSZ: return "SYMINSZ";
+ case DT_SYMINENT: return "SYMINENT"; /* aka VALRNGHI */
+
+ case DT_ADDRRNGLO: return "ADDRRNGLO";
+ case DT_CONFIG: return "CONFIG";
+ case DT_DEPAUDIT: return "DEPAUDIT";
+ case DT_AUDIT: return "AUDIT";
+ case DT_PLTPAD: return "PLTPAD";
+ case DT_MOVETAB: return "MOVETAB";
+ case DT_SYMINFO: return "SYMINFO"; /* aka ADDRRNGHI */
+
+ case DT_VERSYM: return "VERSYM";
+
+ case DT_TLSDESC_GOT: return "TLSDESC_GOT";
+ case DT_TLSDESC_PLT: return "TLSDESC_PLT";
+ case DT_RELACOUNT: return "RELACOUNT";
+ case DT_RELCOUNT: return "RELCOUNT";
+ case DT_FLAGS_1: return "FLAGS_1";
+ case DT_VERDEF: return "VERDEF";
+ case DT_VERDEFNUM: return "VERDEFNUM";
+ case DT_VERNEED: return "VERNEED";
+ case DT_VERNEEDNUM: return "VERNEEDNUM";
+
+ case DT_AUXILIARY: return "AUXILIARY";
+ case DT_USED: return "USED";
+ case DT_FILTER: return "FILTER";
+
+ case DT_GNU_PRELINKED: return "GNU_PRELINKED";
+ case DT_GNU_CONFLICT: return "GNU_CONFLICT";
+ case DT_GNU_CONFLICTSZ: return "GNU_CONFLICTSZ";
+ case DT_GNU_LIBLIST: return "GNU_LIBLIST";
+ case DT_GNU_LIBLISTSZ: return "GNU_LIBLISTSZ";
+ case DT_GNU_HASH: return "GNU_HASH";
+
+ default:
+ if ((type >= DT_LOPROC) && (type <= DT_HIPROC))
+ {
+ const char * result;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_MIPS:
+ case EM_MIPS_RS3_LE:
+ result = get_mips_dynamic_type (type);
+ break;
+ case EM_SPARCV9:
+ result = get_sparc64_dynamic_type (type);
+ break;
+ case EM_PPC:
+ result = get_ppc_dynamic_type (type);
+ break;
+ case EM_PPC64:
+ result = get_ppc64_dynamic_type (type);
+ break;
+ case EM_IA_64:
+ result = get_ia64_dynamic_type (type);
+ break;
+ case EM_ALPHA:
+ result = get_alpha_dynamic_type (type);
+ break;
+ case EM_SCORE:
+ result = get_score_dynamic_type (type);
+ break;
+ case EM_TI_C6000:
+ result = get_tic6x_dynamic_type (type);
+ break;
+ case EM_ALTERA_NIOS2:
+ result = get_nios2_dynamic_type (type);
+ break;
+ default:
+ result = NULL;
+ break;
+ }
+
+ if (result != NULL)
+ return result;
+
+ snprintf (buff, sizeof (buff), _("Processor Specific: %lx"), type);
+ }
+ else if (((type >= DT_LOOS) && (type <= DT_HIOS))
+ || (elf_header.e_machine == EM_PARISC
+ && (type >= OLD_DT_LOOS) && (type <= OLD_DT_HIOS)))
+ {
+ const char * result;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_PARISC:
+ result = get_parisc_dynamic_type (type);
+ break;
+ case EM_IA_64:
+ result = get_ia64_dynamic_type (type);
+ break;
+ default:
+ result = NULL;
+ break;
+ }
+
+ if (result != NULL)
+ return result;
+
+ snprintf (buff, sizeof (buff), _("Operating System specific: %lx"),
+ type);
+ }
+ else
+ snprintf (buff, sizeof (buff), _("<unknown>: %lx"), type);
+
+ return buff;
+ }
+}
+
+static char *
+get_file_type (unsigned e_type)
+{
+ static char buff[32];
+
+ switch (e_type)
+ {
+ case ET_NONE: return _("NONE (None)");
+ case ET_REL: return _("REL (Relocatable file)");
+ case ET_EXEC: return _("EXEC (Executable file)");
+ case ET_DYN: return _("DYN (Shared object file)");
+ case ET_CORE: return _("CORE (Core file)");
+
+ default:
+ if ((e_type >= ET_LOPROC) && (e_type <= ET_HIPROC))
+ snprintf (buff, sizeof (buff), _("Processor Specific: (%x)"), e_type);
+ else if ((e_type >= ET_LOOS) && (e_type <= ET_HIOS))
+ snprintf (buff, sizeof (buff), _("OS Specific: (%x)"), e_type);
+ else
+ snprintf (buff, sizeof (buff), _("<unknown>: %x"), e_type);
+ return buff;
+ }
+}
+
+static char *
+get_machine_name (unsigned e_machine)
+{
+ static char buff[64]; /* XXX */
+
+ switch (e_machine)
+ {
+ case EM_NONE: return _("None");
+ case EM_AARCH64: return "AArch64";
+ case EM_M32: return "WE32100";
+ case EM_SPARC: return "Sparc";
+ case EM_SPU: return "SPU";
+ case EM_386: return "Intel 80386";
+ case EM_68K: return "MC68000";
+ case EM_88K: return "MC88000";
+ case EM_486: return "Intel 80486";
+ case EM_860: return "Intel 80860";
+ case EM_MIPS: return "MIPS R3000";
+ case EM_S370: return "IBM System/370";
+ case EM_MIPS_RS3_LE: return "MIPS R4000 big-endian";
+ case EM_OLD_SPARCV9: return "Sparc v9 (old)";
+ case EM_PARISC: return "HPPA";
+ case EM_PPC_OLD: return "Power PC (old)";
+ case EM_SPARC32PLUS: return "Sparc v8+" ;
+ case EM_960: return "Intel 90860";
+ case EM_PPC: return "PowerPC";
+ case EM_PPC64: return "PowerPC64";
+ case EM_FR20: return "Fujitsu FR20";
+ case EM_RH32: return "TRW RH32";
+ case EM_MCORE: return "MCORE";
+ case EM_ARM: return "ARM";
+ case EM_OLD_ALPHA: return "Digital Alpha (old)";
+ case EM_SH: return "Renesas / SuperH SH";
+ case EM_SPARCV9: return "Sparc v9";
+ case EM_TRICORE: return "Siemens Tricore";
+ case EM_ARC: return "ARC";
+ case EM_H8_300: return "Renesas H8/300";
+ case EM_H8_300H: return "Renesas H8/300H";
+ case EM_H8S: return "Renesas H8S";
+ case EM_H8_500: return "Renesas H8/500";
+ case EM_IA_64: return "Intel IA-64";
+ case EM_MIPS_X: return "Stanford MIPS-X";
+ case EM_COLDFIRE: return "Motorola Coldfire";
+ case EM_ALPHA: return "Alpha";
+ case EM_CYGNUS_D10V:
+ case EM_D10V: return "d10v";
+ case EM_CYGNUS_D30V:
+ case EM_D30V: return "d30v";
+ case EM_CYGNUS_M32R:
+ case EM_M32R: return "Renesas M32R (formerly Mitsubishi M32r)";
+ case EM_CYGNUS_V850:
+ case EM_V800: return "Renesas V850 (using RH850 ABI)";
+ case EM_V850: return "Renesas V850";
+ case EM_CYGNUS_MN10300:
+ case EM_MN10300: return "mn10300";
+ case EM_CYGNUS_MN10200:
+ case EM_MN10200: return "mn10200";
+ case EM_MOXIE: return "Moxie";
+ case EM_CYGNUS_FR30:
+ case EM_FR30: return "Fujitsu FR30";
+ case EM_CYGNUS_FRV: return "Fujitsu FR-V";
+ case EM_PJ_OLD:
+ case EM_PJ: return "picoJava";
+ case EM_MMA: return "Fujitsu Multimedia Accelerator";
+ case EM_PCP: return "Siemens PCP";
+ case EM_NCPU: return "Sony nCPU embedded RISC processor";
+ case EM_NDR1: return "Denso NDR1 microprocesspr";
+ case EM_STARCORE: return "Motorola Star*Core processor";
+ case EM_ME16: return "Toyota ME16 processor";
+ case EM_ST100: return "STMicroelectronics ST100 processor";
+ case EM_TINYJ: return "Advanced Logic Corp. TinyJ embedded processor";
+ case EM_PDSP: return "Sony DSP processor";
+ case EM_PDP10: return "Digital Equipment Corp. PDP-10";
+ case EM_PDP11: return "Digital Equipment Corp. PDP-11";
+ case EM_FX66: return "Siemens FX66 microcontroller";
+ case EM_ST9PLUS: return "STMicroelectronics ST9+ 8/16 bit microcontroller";
+ case EM_ST7: return "STMicroelectronics ST7 8-bit microcontroller";
+ case EM_68HC16: return "Motorola MC68HC16 Microcontroller";
+ case EM_68HC12: return "Motorola MC68HC12 Microcontroller";
+ case EM_68HC11: return "Motorola MC68HC11 Microcontroller";
+ case EM_68HC08: return "Motorola MC68HC08 Microcontroller";
+ case EM_68HC05: return "Motorola MC68HC05 Microcontroller";
+ case EM_SVX: return "Silicon Graphics SVx";
+ case EM_ST19: return "STMicroelectronics ST19 8-bit microcontroller";
+ case EM_VAX: return "Digital VAX";
+ case EM_AVR_OLD:
+ case EM_AVR: return "Atmel AVR 8-bit microcontroller";
+ case EM_CRIS: return "Axis Communications 32-bit embedded processor";
+ case EM_JAVELIN: return "Infineon Technologies 32-bit embedded cpu";
+ case EM_FIREPATH: return "Element 14 64-bit DSP processor";
+ case EM_ZSP: return "LSI Logic's 16-bit DSP processor";
+ case EM_MMIX: return "Donald Knuth's educational 64-bit processor";
+ case EM_HUANY: return "Harvard Universitys's machine-independent object format";
+ case EM_PRISM: return "Vitesse Prism";
+ case EM_X86_64: return "Advanced Micro Devices X86-64";
+ case EM_L1OM: return "Intel L1OM";
+ case EM_K1OM: return "Intel K1OM";
+ case EM_S390_OLD:
+ case EM_S390: return "IBM S/390";
+ case EM_SCORE: return "SUNPLUS S+Core";
+ case EM_XSTORMY16: return "Sanyo XStormy16 CPU core";
+ case EM_OPENRISC:
+ case EM_OR32: return "OpenRISC";
+ case EM_ARC_A5: return "ARC International ARCompact processor";
+ case EM_CRX: return "National Semiconductor CRX microprocessor";
+ case EM_ADAPTEVA_EPIPHANY: return "Adapteva EPIPHANY";
+ case EM_DLX: return "OpenDLX";
+ case EM_IP2K_OLD:
+ case EM_IP2K: return "Ubicom IP2xxx 8-bit microcontrollers";
+ case EM_IQ2000: return "Vitesse IQ2000";
+ case EM_XTENSA_OLD:
+ case EM_XTENSA: return "Tensilica Xtensa Processor";
+ case EM_VIDEOCORE: return "Alphamosaic VideoCore processor";
+ case EM_TMM_GPP: return "Thompson Multimedia General Purpose Processor";
+ case EM_NS32K: return "National Semiconductor 32000 series";
+ case EM_TPC: return "Tenor Network TPC processor";
+ case EM_ST200: return "STMicroelectronics ST200 microcontroller";
+ case EM_MAX: return "MAX Processor";
+ case EM_CR: return "National Semiconductor CompactRISC";
+ case EM_F2MC16: return "Fujitsu F2MC16";
+ case EM_MSP430: return "Texas Instruments msp430 microcontroller";
+ case EM_LATTICEMICO32: return "Lattice Mico32";
+ case EM_M32C_OLD:
+ case EM_M32C: return "Renesas M32c";
+ case EM_MT: return "Morpho Techologies MT processor";
+ case EM_BLACKFIN: return "Analog Devices Blackfin";
+ case EM_SE_C33: return "S1C33 Family of Seiko Epson processors";
+ case EM_SEP: return "Sharp embedded microprocessor";
+ case EM_ARCA: return "Arca RISC microprocessor";
+ case EM_UNICORE: return "Unicore";
+ case EM_EXCESS: return "eXcess 16/32/64-bit configurable embedded CPU";
+ case EM_DXP: return "Icera Semiconductor Inc. Deep Execution Processor";
+ case EM_NIOS32: return "Altera Nios";
+ case EM_ALTERA_NIOS2: return "Altera Nios II";
+ case EM_C166:
+ case EM_XC16X: return "Infineon Technologies xc16x";
+ case EM_M16C: return "Renesas M16C series microprocessors";
+ case EM_DSPIC30F: return "Microchip Technology dsPIC30F Digital Signal Controller";
+ case EM_CE: return "Freescale Communication Engine RISC core";
+ case EM_TSK3000: return "Altium TSK3000 core";
+ case EM_RS08: return "Freescale RS08 embedded processor";
+ case EM_ECOG2: return "Cyan Technology eCOG2 microprocessor";
+ case EM_DSP24: return "New Japan Radio (NJR) 24-bit DSP Processor";
+ case EM_VIDEOCORE3: return "Broadcom VideoCore III processor";
+ case EM_SE_C17: return "Seiko Epson C17 family";
+ case EM_TI_C6000: return "Texas Instruments TMS320C6000 DSP family";
+ case EM_TI_C2000: return "Texas Instruments TMS320C2000 DSP family";
+ case EM_TI_C5500: return "Texas Instruments TMS320C55x DSP family";
+ case EM_MMDSP_PLUS: return "STMicroelectronics 64bit VLIW Data Signal Processor";
+ case EM_CYPRESS_M8C: return "Cypress M8C microprocessor";
+ case EM_R32C: return "Renesas R32C series microprocessors";
+ case EM_TRIMEDIA: return "NXP Semiconductors TriMedia architecture family";
+ case EM_QDSP6: return "QUALCOMM DSP6 Processor";
+ case EM_8051: return "Intel 8051 and variants";
+ case EM_STXP7X: return "STMicroelectronics STxP7x family";
+ case EM_NDS32: return "Andes Technology compact code size embedded RISC processor family";
+ case EM_ECOG1X: return "Cyan Technology eCOG1X family";
+ case EM_MAXQ30: return "Dallas Semiconductor MAXQ30 Core microcontrollers";
+ case EM_XIMO16: return "New Japan Radio (NJR) 16-bit DSP Processor";
+ case EM_MANIK: return "M2000 Reconfigurable RISC Microprocessor";
+ case EM_CRAYNV2: return "Cray Inc. NV2 vector architecture";
+ case EM_CYGNUS_MEP: return "Toshiba MeP Media Engine";
+ case EM_CR16:
+ case EM_MICROBLAZE:
+ case EM_MICROBLAZE_OLD: return "Xilinx MicroBlaze";
+ case EM_RL78: return "Renesas RL78";
+ case EM_RX: return "Renesas RX";
+ case EM_METAG: return "Imagination Technologies Meta processor architecture";
+ case EM_MCST_ELBRUS: return "MCST Elbrus general purpose hardware architecture";
+ case EM_ECOG16: return "Cyan Technology eCOG16 family";
+ case EM_ETPU: return "Freescale Extended Time Processing Unit";
+ case EM_SLE9X: return "Infineon Technologies SLE9X core";
+ case EM_AVR32: return "Atmel Corporation 32-bit microprocessor family";
+ case EM_STM8: return "STMicroeletronics STM8 8-bit microcontroller";
+ case EM_TILE64: return "Tilera TILE64 multicore architecture family";
+ case EM_TILEPRO: return "Tilera TILEPro multicore architecture family";
+ case EM_TILEGX: return "Tilera TILE-Gx multicore architecture family";
+ case EM_CUDA: return "NVIDIA CUDA architecture";
+ case EM_XGATE: return "Motorola XGATE embedded processor";
+ default:
+ snprintf (buff, sizeof (buff), _("<unknown>: 0x%x"), e_machine);
+ return buff;
+ }
+}
+
+static void
+decode_ARM_machine_flags (unsigned e_flags, char buf[])
+{
+ unsigned eabi;
+ int unknown = 0;
+
+ eabi = EF_ARM_EABI_VERSION (e_flags);
+ e_flags &= ~ EF_ARM_EABIMASK;
+
+ /* Handle "generic" ARM flags. */
+ if (e_flags & EF_ARM_RELEXEC)
+ {
+ strcat (buf, ", relocatable executable");
+ e_flags &= ~ EF_ARM_RELEXEC;
+ }
+
+ if (e_flags & EF_ARM_HASENTRY)
+ {
+ strcat (buf, ", has entry point");
+ e_flags &= ~ EF_ARM_HASENTRY;
+ }
+
+ /* Now handle EABI specific flags. */
+ switch (eabi)
+ {
+ default:
+ strcat (buf, ", <unrecognized EABI>");
+ if (e_flags)
+ unknown = 1;
+ break;
+
+ case EF_ARM_EABI_VER1:
+ strcat (buf, ", Version1 EABI");
+ while (e_flags)
+ {
+ unsigned flag;
+
+ /* Process flags one bit at a time. */
+ flag = e_flags & - e_flags;
+ e_flags &= ~ flag;
+
+ switch (flag)
+ {
+ case EF_ARM_SYMSARESORTED: /* Conflicts with EF_ARM_INTERWORK. */
+ strcat (buf, ", sorted symbol tables");
+ break;
+
+ default:
+ unknown = 1;
+ break;
+ }
+ }
+ break;
+
+ case EF_ARM_EABI_VER2:
+ strcat (buf, ", Version2 EABI");
+ while (e_flags)
+ {
+ unsigned flag;
+
+ /* Process flags one bit at a time. */
+ flag = e_flags & - e_flags;
+ e_flags &= ~ flag;
+
+ switch (flag)
+ {
+ case EF_ARM_SYMSARESORTED: /* Conflicts with EF_ARM_INTERWORK. */
+ strcat (buf, ", sorted symbol tables");
+ break;
+
+ case EF_ARM_DYNSYMSUSESEGIDX:
+ strcat (buf, ", dynamic symbols use segment index");
+ break;
+
+ case EF_ARM_MAPSYMSFIRST:
+ strcat (buf, ", mapping symbols precede others");
+ break;
+
+ default:
+ unknown = 1;
+ break;
+ }
+ }
+ break;
+
+ case EF_ARM_EABI_VER3:
+ strcat (buf, ", Version3 EABI");
+ break;
+
+ case EF_ARM_EABI_VER4:
+ strcat (buf, ", Version4 EABI");
+ while (e_flags)
+ {
+ unsigned flag;
+
+ /* Process flags one bit at a time. */
+ flag = e_flags & - e_flags;
+ e_flags &= ~ flag;
+
+ switch (flag)
+ {
+ case EF_ARM_BE8:
+ strcat (buf, ", BE8");
+ break;
+
+ case EF_ARM_LE8:
+ strcat (buf, ", LE8");
+ break;
+
+ default:
+ unknown = 1;
+ break;
+ }
+ break;
+ }
+ break;
+
+ case EF_ARM_EABI_VER5:
+ strcat (buf, ", Version5 EABI");
+ while (e_flags)
+ {
+ unsigned flag;
+
+ /* Process flags one bit at a time. */
+ flag = e_flags & - e_flags;
+ e_flags &= ~ flag;
+
+ switch (flag)
+ {
+ case EF_ARM_BE8:
+ strcat (buf, ", BE8");
+ break;
+
+ case EF_ARM_LE8:
+ strcat (buf, ", LE8");
+ break;
+
+ case EF_ARM_ABI_FLOAT_SOFT: /* Conflicts with EF_ARM_SOFT_FLOAT. */
+ strcat (buf, ", soft-float ABI");
+ break;
+
+ case EF_ARM_ABI_FLOAT_HARD: /* Conflicts with EF_ARM_VFP_FLOAT. */
+ strcat (buf, ", hard-float ABI");
+ break;
+
+ default:
+ unknown = 1;
+ break;
+ }
+ }
+ break;
+
+ case EF_ARM_EABI_UNKNOWN:
+ strcat (buf, ", GNU EABI");
+ while (e_flags)
+ {
+ unsigned flag;
+
+ /* Process flags one bit at a time. */
+ flag = e_flags & - e_flags;
+ e_flags &= ~ flag;
+
+ switch (flag)
+ {
+ case EF_ARM_INTERWORK:
+ strcat (buf, ", interworking enabled");
+ break;
+
+ case EF_ARM_APCS_26:
+ strcat (buf, ", uses APCS/26");
+ break;
+
+ case EF_ARM_APCS_FLOAT:
+ strcat (buf, ", uses APCS/float");
+ break;
+
+ case EF_ARM_PIC:
+ strcat (buf, ", position independent");
+ break;
+
+ case EF_ARM_ALIGN8:
+ strcat (buf, ", 8 bit structure alignment");
+ break;
+
+ case EF_ARM_NEW_ABI:
+ strcat (buf, ", uses new ABI");
+ break;
+
+ case EF_ARM_OLD_ABI:
+ strcat (buf, ", uses old ABI");
+ break;
+
+ case EF_ARM_SOFT_FLOAT:
+ strcat (buf, ", software FP");
+ break;
+
+ case EF_ARM_VFP_FLOAT:
+ strcat (buf, ", VFP");
+ break;
+
+ case EF_ARM_MAVERICK_FLOAT:
+ strcat (buf, ", Maverick FP");
+ break;
+
+ default:
+ unknown = 1;
+ break;
+ }
+ }
+ }
+
+ if (unknown)
+ strcat (buf,_(", <unknown>"));
+}
+
+static char *
+get_machine_flags (unsigned e_flags, unsigned e_machine)
+{
+ static char buf[1024];
+
+ buf[0] = '\0';
+
+ if (e_flags)
+ {
+ switch (e_machine)
+ {
+ default:
+ break;
+
+ case EM_ARM:
+ decode_ARM_machine_flags (e_flags, buf);
+ break;
+
+ case EM_BLACKFIN:
+ if (e_flags & EF_BFIN_PIC)
+ strcat (buf, ", PIC");
+
+ if (e_flags & EF_BFIN_FDPIC)
+ strcat (buf, ", FDPIC");
+
+ if (e_flags & EF_BFIN_CODE_IN_L1)
+ strcat (buf, ", code in L1");
+
+ if (e_flags & EF_BFIN_DATA_IN_L1)
+ strcat (buf, ", data in L1");
+
+ break;
+
+ case EM_CYGNUS_FRV:
+ switch (e_flags & EF_FRV_CPU_MASK)
+ {
+ case EF_FRV_CPU_GENERIC:
+ break;
+
+ default:
+ strcat (buf, ", fr???");
+ break;
+
+ case EF_FRV_CPU_FR300:
+ strcat (buf, ", fr300");
+ break;
+
+ case EF_FRV_CPU_FR400:
+ strcat (buf, ", fr400");
+ break;
+ case EF_FRV_CPU_FR405:
+ strcat (buf, ", fr405");
+ break;
+
+ case EF_FRV_CPU_FR450:
+ strcat (buf, ", fr450");
+ break;
+
+ case EF_FRV_CPU_FR500:
+ strcat (buf, ", fr500");
+ break;
+ case EF_FRV_CPU_FR550:
+ strcat (buf, ", fr550");
+ break;
+
+ case EF_FRV_CPU_SIMPLE:
+ strcat (buf, ", simple");
+ break;
+ case EF_FRV_CPU_TOMCAT:
+ strcat (buf, ", tomcat");
+ break;
+ }
+ break;
+
+ case EM_68K:
+ if ((e_flags & EF_M68K_ARCH_MASK) == EF_M68K_M68000)
+ strcat (buf, ", m68000");
+ else if ((e_flags & EF_M68K_ARCH_MASK) == EF_M68K_CPU32)
+ strcat (buf, ", cpu32");
+ else if ((e_flags & EF_M68K_ARCH_MASK) == EF_M68K_FIDO)
+ strcat (buf, ", fido_a");
+ else
+ {
+ char const * isa = _("unknown");
+ char const * mac = _("unknown mac");
+ char const * additional = NULL;
+
+ switch (e_flags & EF_M68K_CF_ISA_MASK)
+ {
+ case EF_M68K_CF_ISA_A_NODIV:
+ isa = "A";
+ additional = ", nodiv";
+ break;
+ case EF_M68K_CF_ISA_A:
+ isa = "A";
+ break;
+ case EF_M68K_CF_ISA_A_PLUS:
+ isa = "A+";
+ break;
+ case EF_M68K_CF_ISA_B_NOUSP:
+ isa = "B";
+ additional = ", nousp";
+ break;
+ case EF_M68K_CF_ISA_B:
+ isa = "B";
+ break;
+ case EF_M68K_CF_ISA_C:
+ isa = "C";
+ break;
+ case EF_M68K_CF_ISA_C_NODIV:
+ isa = "C";
+ additional = ", nodiv";
+ break;
+ }
+ strcat (buf, ", cf, isa ");
+ strcat (buf, isa);
+ if (additional)
+ strcat (buf, additional);
+ if (e_flags & EF_M68K_CF_FLOAT)
+ strcat (buf, ", float");
+ switch (e_flags & EF_M68K_CF_MAC_MASK)
+ {
+ case 0:
+ mac = NULL;
+ break;
+ case EF_M68K_CF_MAC:
+ mac = "mac";
+ break;
+ case EF_M68K_CF_EMAC:
+ mac = "emac";
+ break;
+ case EF_M68K_CF_EMAC_B:
+ mac = "emac_b";
+ break;
+ }
+ if (mac)
+ {
+ strcat (buf, ", ");
+ strcat (buf, mac);
+ }
+ }
+ break;
+
+ case EM_PPC:
+ if (e_flags & EF_PPC_EMB)
+ strcat (buf, ", emb");
+
+ if (e_flags & EF_PPC_RELOCATABLE)
+ strcat (buf, _(", relocatable"));
+
+ if (e_flags & EF_PPC_RELOCATABLE_LIB)
+ strcat (buf, _(", relocatable-lib"));
+ break;
+
+ case EM_PPC64:
+ if (e_flags & EF_PPC64_ABI)
+ {
+ char abi[] = ", abiv0";
+
+ abi[6] += e_flags & EF_PPC64_ABI;
+ strcat (buf, abi);
+ }
+ break;
+
+ case EM_V800:
+ if ((e_flags & EF_RH850_ABI) == EF_RH850_ABI)
+ strcat (buf, ", RH850 ABI");
+
+ if (e_flags & EF_V800_850E3)
+ strcat (buf, ", V3 architecture");
+
+ if ((e_flags & (EF_RH850_FPU_DOUBLE | EF_RH850_FPU_SINGLE)) == 0)
+ strcat (buf, ", FPU not used");
+
+ if ((e_flags & (EF_RH850_REGMODE22 | EF_RH850_REGMODE32)) == 0)
+ strcat (buf, ", regmode: COMMON");
+
+ if ((e_flags & (EF_RH850_GP_FIX | EF_RH850_GP_NOFIX)) == 0)
+ strcat (buf, ", r4 not used");
+
+ if ((e_flags & (EF_RH850_EP_FIX | EF_RH850_EP_NOFIX)) == 0)
+ strcat (buf, ", r30 not used");
+
+ if ((e_flags & (EF_RH850_TP_FIX | EF_RH850_TP_NOFIX)) == 0)
+ strcat (buf, ", r5 not used");
+
+ if ((e_flags & (EF_RH850_REG2_RESERVE | EF_RH850_REG2_NORESERVE)) == 0)
+ strcat (buf, ", r2 not used");
+
+ for (e_flags &= 0xFFFF; e_flags; e_flags &= ~ (e_flags & - e_flags))
+ {
+ switch (e_flags & - e_flags)
+ {
+ case EF_RH850_FPU_DOUBLE: strcat (buf, ", double precision FPU"); break;
+ case EF_RH850_FPU_SINGLE: strcat (buf, ", single precision FPU"); break;
+ case EF_RH850_SIMD: strcat (buf, ", SIMD"); break;
+ case EF_RH850_CACHE: strcat (buf, ", CACHE"); break;
+ case EF_RH850_MMU: strcat (buf, ", MMU"); break;
+ case EF_RH850_REGMODE22: strcat (buf, ", regmode:22"); break;
+ case EF_RH850_REGMODE32: strcat (buf, ", regmode:23"); break;
+ case EF_RH850_DATA_ALIGN8: strcat (buf, ", 8-byte alignment"); break;
+ case EF_RH850_GP_FIX: strcat (buf, ", r4 fixed"); break;
+ case EF_RH850_GP_NOFIX: strcat (buf, ", r4 free"); break;
+ case EF_RH850_EP_FIX: strcat (buf, ", r30 fixed"); break;
+ case EF_RH850_EP_NOFIX: strcat (buf, ", r30 free"); break;
+ case EF_RH850_TP_FIX: strcat (buf, ", r5 fixed"); break;
+ case EF_RH850_TP_NOFIX: strcat (buf, ", r5 free"); break;
+ case EF_RH850_REG2_RESERVE: strcat (buf, ", r2 fixed"); break;
+ case EF_RH850_REG2_NORESERVE: strcat (buf, ", r2 free"); break;
+ default: break;
+ }
+ }
+ break;
+
+ case EM_V850:
+ case EM_CYGNUS_V850:
+ switch (e_flags & EF_V850_ARCH)
+ {
+ case E_V850E3V5_ARCH:
+ strcat (buf, ", v850e3v5");
+ break;
+ case E_V850E2V3_ARCH:
+ strcat (buf, ", v850e2v3");
+ break;
+ case E_V850E2_ARCH:
+ strcat (buf, ", v850e2");
+ break;
+ case E_V850E1_ARCH:
+ strcat (buf, ", v850e1");
+ break;
+ case E_V850E_ARCH:
+ strcat (buf, ", v850e");
+ break;
+ case E_V850_ARCH:
+ strcat (buf, ", v850");
+ break;
+ default:
+ strcat (buf, _(", unknown v850 architecture variant"));
+ break;
+ }
+ break;
+
+ case EM_M32R:
+ case EM_CYGNUS_M32R:
+ if ((e_flags & EF_M32R_ARCH) == E_M32R_ARCH)
+ strcat (buf, ", m32r");
+ break;
+
+ case EM_MIPS:
+ case EM_MIPS_RS3_LE:
+ if (e_flags & EF_MIPS_NOREORDER)
+ strcat (buf, ", noreorder");
+
+ if (e_flags & EF_MIPS_PIC)
+ strcat (buf, ", pic");
+
+ if (e_flags & EF_MIPS_CPIC)
+ strcat (buf, ", cpic");
+
+ if (e_flags & EF_MIPS_UCODE)
+ strcat (buf, ", ugen_reserved");
+
+ if (e_flags & EF_MIPS_ABI2)
+ strcat (buf, ", abi2");
+
+ if (e_flags & EF_MIPS_OPTIONS_FIRST)
+ strcat (buf, ", odk first");
+
+ if (e_flags & EF_MIPS_32BITMODE)
+ strcat (buf, ", 32bitmode");
+
+ if (e_flags & EF_MIPS_NAN2008)
+ strcat (buf, ", nan2008");
+
+ if (e_flags & EF_MIPS_FP64)
+ strcat (buf, ", fp64");
+
+ switch ((e_flags & EF_MIPS_MACH))
+ {
+ case E_MIPS_MACH_3900: strcat (buf, ", 3900"); break;
+ case E_MIPS_MACH_4010: strcat (buf, ", 4010"); break;
+ case E_MIPS_MACH_4100: strcat (buf, ", 4100"); break;
+ case E_MIPS_MACH_4111: strcat (buf, ", 4111"); break;
+ case E_MIPS_MACH_4120: strcat (buf, ", 4120"); break;
+ case E_MIPS_MACH_4650: strcat (buf, ", 4650"); break;
+ case E_MIPS_MACH_5400: strcat (buf, ", 5400"); break;
+ case E_MIPS_MACH_5500: strcat (buf, ", 5500"); break;
+ case E_MIPS_MACH_SB1: strcat (buf, ", sb1"); break;
+ case E_MIPS_MACH_9000: strcat (buf, ", 9000"); break;
+ case E_MIPS_MACH_LS2E: strcat (buf, ", loongson-2e"); break;
+ case E_MIPS_MACH_LS2F: strcat (buf, ", loongson-2f"); break;
+ case E_MIPS_MACH_LS3A: strcat (buf, ", loongson-3a"); break;
+ case E_MIPS_MACH_OCTEON: strcat (buf, ", octeon"); break;
+ case E_MIPS_MACH_OCTEON2: strcat (buf, ", octeon2"); break;
+ case E_MIPS_MACH_XLR: strcat (buf, ", xlr"); break;
+ case 0:
+ /* We simply ignore the field in this case to avoid confusion:
+ MIPS ELF does not specify EF_MIPS_MACH, it is a GNU
+ extension. */
+ break;
+ default: strcat (buf, _(", unknown CPU")); break;
+ }
+
+ switch ((e_flags & EF_MIPS_ABI))
+ {
+ case E_MIPS_ABI_O32: strcat (buf, ", o32"); break;
+ case E_MIPS_ABI_O64: strcat (buf, ", o64"); break;
+ case E_MIPS_ABI_EABI32: strcat (buf, ", eabi32"); break;
+ case E_MIPS_ABI_EABI64: strcat (buf, ", eabi64"); break;
+ case 0:
+ /* We simply ignore the field in this case to avoid confusion:
+ MIPS ELF does not specify EF_MIPS_ABI, it is a GNU extension.
+ This means it is likely to be an o32 file, but not for
+ sure. */
+ break;
+ default: strcat (buf, _(", unknown ABI")); break;
+ }
+
+ if (e_flags & EF_MIPS_ARCH_ASE_MDMX)
+ strcat (buf, ", mdmx");
+
+ if (e_flags & EF_MIPS_ARCH_ASE_M16)
+ strcat (buf, ", mips16");
+
+ if (e_flags & EF_MIPS_ARCH_ASE_MICROMIPS)
+ strcat (buf, ", micromips");
+
+ switch ((e_flags & EF_MIPS_ARCH))
+ {
+ case E_MIPS_ARCH_1: strcat (buf, ", mips1"); break;
+ case E_MIPS_ARCH_2: strcat (buf, ", mips2"); break;
+ case E_MIPS_ARCH_3: strcat (buf, ", mips3"); break;
+ case E_MIPS_ARCH_4: strcat (buf, ", mips4"); break;
+ case E_MIPS_ARCH_5: strcat (buf, ", mips5"); break;
+ case E_MIPS_ARCH_32: strcat (buf, ", mips32"); break;
+ case E_MIPS_ARCH_32R2: strcat (buf, ", mips32r2"); break;
+ case E_MIPS_ARCH_64: strcat (buf, ", mips64"); break;
+ case E_MIPS_ARCH_64R2: strcat (buf, ", mips64r2"); break;
+ default: strcat (buf, _(", unknown ISA")); break;
+ }
+ break;
+
+ case EM_SH:
+ switch ((e_flags & EF_SH_MACH_MASK))
+ {
+ case EF_SH1: strcat (buf, ", sh1"); break;
+ case EF_SH2: strcat (buf, ", sh2"); break;
+ case EF_SH3: strcat (buf, ", sh3"); break;
+ case EF_SH_DSP: strcat (buf, ", sh-dsp"); break;
+ case EF_SH3_DSP: strcat (buf, ", sh3-dsp"); break;
+ case EF_SH4AL_DSP: strcat (buf, ", sh4al-dsp"); break;
+ case EF_SH3E: strcat (buf, ", sh3e"); break;
+ case EF_SH4: strcat (buf, ", sh4"); break;
+ case EF_SH5: strcat (buf, ", sh5"); break;
+ case EF_SH2E: strcat (buf, ", sh2e"); break;
+ case EF_SH4A: strcat (buf, ", sh4a"); break;
+ case EF_SH2A: strcat (buf, ", sh2a"); break;
+ case EF_SH4_NOFPU: strcat (buf, ", sh4-nofpu"); break;
+ case EF_SH4A_NOFPU: strcat (buf, ", sh4a-nofpu"); break;
+ case EF_SH2A_NOFPU: strcat (buf, ", sh2a-nofpu"); break;
+ case EF_SH3_NOMMU: strcat (buf, ", sh3-nommu"); break;
+ case EF_SH4_NOMMU_NOFPU: strcat (buf, ", sh4-nommu-nofpu"); break;
+ case EF_SH2A_SH4_NOFPU: strcat (buf, ", sh2a-nofpu-or-sh4-nommu-nofpu"); break;
+ case EF_SH2A_SH3_NOFPU: strcat (buf, ", sh2a-nofpu-or-sh3-nommu"); break;
+ case EF_SH2A_SH4: strcat (buf, ", sh2a-or-sh4"); break;
+ case EF_SH2A_SH3E: strcat (buf, ", sh2a-or-sh3e"); break;
+ default: strcat (buf, _(", unknown ISA")); break;
+ }
+
+ if (e_flags & EF_SH_PIC)
+ strcat (buf, ", pic");
+
+ if (e_flags & EF_SH_FDPIC)
+ strcat (buf, ", fdpic");
+ break;
+
+ case EM_SPARCV9:
+ if (e_flags & EF_SPARC_32PLUS)
+ strcat (buf, ", v8+");
+
+ if (e_flags & EF_SPARC_SUN_US1)
+ strcat (buf, ", ultrasparcI");
+
+ if (e_flags & EF_SPARC_SUN_US3)
+ strcat (buf, ", ultrasparcIII");
+
+ if (e_flags & EF_SPARC_HAL_R1)
+ strcat (buf, ", halr1");
+
+ if (e_flags & EF_SPARC_LEDATA)
+ strcat (buf, ", ledata");
+
+ if ((e_flags & EF_SPARCV9_MM) == EF_SPARCV9_TSO)
+ strcat (buf, ", tso");
+
+ if ((e_flags & EF_SPARCV9_MM) == EF_SPARCV9_PSO)
+ strcat (buf, ", pso");
+
+ if ((e_flags & EF_SPARCV9_MM) == EF_SPARCV9_RMO)
+ strcat (buf, ", rmo");
+ break;
+
+ case EM_PARISC:
+ switch (e_flags & EF_PARISC_ARCH)
+ {
+ case EFA_PARISC_1_0:
+ strcpy (buf, ", PA-RISC 1.0");
+ break;
+ case EFA_PARISC_1_1:
+ strcpy (buf, ", PA-RISC 1.1");
+ break;
+ case EFA_PARISC_2_0:
+ strcpy (buf, ", PA-RISC 2.0");
+ break;
+ default:
+ break;
+ }
+ if (e_flags & EF_PARISC_TRAPNIL)
+ strcat (buf, ", trapnil");
+ if (e_flags & EF_PARISC_EXT)
+ strcat (buf, ", ext");
+ if (e_flags & EF_PARISC_LSB)
+ strcat (buf, ", lsb");
+ if (e_flags & EF_PARISC_WIDE)
+ strcat (buf, ", wide");
+ if (e_flags & EF_PARISC_NO_KABP)
+ strcat (buf, ", no kabp");
+ if (e_flags & EF_PARISC_LAZYSWAP)
+ strcat (buf, ", lazyswap");
+ break;
+
+ case EM_PJ:
+ case EM_PJ_OLD:
+ if ((e_flags & EF_PICOJAVA_NEWCALLS) == EF_PICOJAVA_NEWCALLS)
+ strcat (buf, ", new calling convention");
+
+ if ((e_flags & EF_PICOJAVA_GNUCALLS) == EF_PICOJAVA_GNUCALLS)
+ strcat (buf, ", gnu calling convention");
+ break;
+
+ case EM_IA_64:
+ if ((e_flags & EF_IA_64_ABI64))
+ strcat (buf, ", 64-bit");
+ else
+ strcat (buf, ", 32-bit");
+ if ((e_flags & EF_IA_64_REDUCEDFP))
+ strcat (buf, ", reduced fp model");
+ if ((e_flags & EF_IA_64_NOFUNCDESC_CONS_GP))
+ strcat (buf, ", no function descriptors, constant gp");
+ else if ((e_flags & EF_IA_64_CONS_GP))
+ strcat (buf, ", constant gp");
+ if ((e_flags & EF_IA_64_ABSOLUTE))
+ strcat (buf, ", absolute");
+ if (elf_header.e_ident[EI_OSABI] == ELFOSABI_OPENVMS)
+ {
+ if ((e_flags & EF_IA_64_VMS_LINKAGES))
+ strcat (buf, ", vms_linkages");
+ switch ((e_flags & EF_IA_64_VMS_COMCOD))
+ {
+ case EF_IA_64_VMS_COMCOD_SUCCESS:
+ break;
+ case EF_IA_64_VMS_COMCOD_WARNING:
+ strcat (buf, ", warning");
+ break;
+ case EF_IA_64_VMS_COMCOD_ERROR:
+ strcat (buf, ", error");
+ break;
+ case EF_IA_64_VMS_COMCOD_ABORT:
+ strcat (buf, ", abort");
+ break;
+ default:
+ abort ();
+ }
+ }
+ break;
+
+ case EM_VAX:
+ if ((e_flags & EF_VAX_NONPIC))
+ strcat (buf, ", non-PIC");
+ if ((e_flags & EF_VAX_DFLOAT))
+ strcat (buf, ", D-Float");
+ if ((e_flags & EF_VAX_GFLOAT))
+ strcat (buf, ", G-Float");
+ break;
+
+ case EM_RL78:
+ if (e_flags & E_FLAG_RL78_G10)
+ strcat (buf, ", G10");
+ break;
+
+ case EM_RX:
+ if (e_flags & E_FLAG_RX_64BIT_DOUBLES)
+ strcat (buf, ", 64-bit doubles");
+ if (e_flags & E_FLAG_RX_DSP)
+ strcat (buf, ", dsp");
+ if (e_flags & E_FLAG_RX_PID)
+ strcat (buf, ", pid");
+ if (e_flags & E_FLAG_RX_ABI)
+ strcat (buf, ", RX ABI");
+ break;
+
+ case EM_S390:
+ if (e_flags & EF_S390_HIGH_GPRS)
+ strcat (buf, ", highgprs");
+ break;
+
+ case EM_TI_C6000:
+ if ((e_flags & EF_C6000_REL))
+ strcat (buf, ", relocatable module");
+ break;
+
+ case EM_MSP430:
+ strcat (buf, _(": architecture variant: "));
+ switch (e_flags & EF_MSP430_MACH)
+ {
+ case E_MSP430_MACH_MSP430x11: strcat (buf, "MSP430x11"); break;
+ case E_MSP430_MACH_MSP430x11x1 : strcat (buf, "MSP430x11x1 "); break;
+ case E_MSP430_MACH_MSP430x12: strcat (buf, "MSP430x12"); break;
+ case E_MSP430_MACH_MSP430x13: strcat (buf, "MSP430x13"); break;
+ case E_MSP430_MACH_MSP430x14: strcat (buf, "MSP430x14"); break;
+ case E_MSP430_MACH_MSP430x15: strcat (buf, "MSP430x15"); break;
+ case E_MSP430_MACH_MSP430x16: strcat (buf, "MSP430x16"); break;
+ case E_MSP430_MACH_MSP430x31: strcat (buf, "MSP430x31"); break;
+ case E_MSP430_MACH_MSP430x32: strcat (buf, "MSP430x32"); break;
+ case E_MSP430_MACH_MSP430x33: strcat (buf, "MSP430x33"); break;
+ case E_MSP430_MACH_MSP430x41: strcat (buf, "MSP430x41"); break;
+ case E_MSP430_MACH_MSP430x42: strcat (buf, "MSP430x42"); break;
+ case E_MSP430_MACH_MSP430x43: strcat (buf, "MSP430x43"); break;
+ case E_MSP430_MACH_MSP430x44: strcat (buf, "MSP430x44"); break;
+ case E_MSP430_MACH_MSP430X : strcat (buf, "MSP430X"); break;
+ default:
+ strcat (buf, _(": unknown")); break;
+ }
+
+ if (e_flags & ~ EF_MSP430_MACH)
+ strcat (buf, _(": unknown extra flag bits also present"));
+ }
+ }
+
+ return buf;
+}
+
+static const char *
+get_osabi_name (unsigned int osabi)
+{
+ static char buff[32];
+
+ switch (osabi)
+ {
+ case ELFOSABI_NONE: return "UNIX - System V";
+ case ELFOSABI_HPUX: return "UNIX - HP-UX";
+ case ELFOSABI_NETBSD: return "UNIX - NetBSD";
+ case ELFOSABI_GNU: return "UNIX - GNU";
+ case ELFOSABI_SOLARIS: return "UNIX - Solaris";
+ case ELFOSABI_AIX: return "UNIX - AIX";
+ case ELFOSABI_IRIX: return "UNIX - IRIX";
+ case ELFOSABI_FREEBSD: return "UNIX - FreeBSD";
+ case ELFOSABI_TRU64: return "UNIX - TRU64";
+ case ELFOSABI_MODESTO: return "Novell - Modesto";
+ case ELFOSABI_OPENBSD: return "UNIX - OpenBSD";
+ case ELFOSABI_OPENVMS: return "VMS - OpenVMS";
+ case ELFOSABI_NSK: return "HP - Non-Stop Kernel";
+ case ELFOSABI_AROS: return "AROS";
+ case ELFOSABI_FENIXOS: return "FenixOS";
+ default:
+ if (osabi >= 64)
+ switch (elf_header.e_machine)
+ {
+ case EM_ARM:
+ switch (osabi)
+ {
+ case ELFOSABI_ARM: return "ARM";
+ default:
+ break;
+ }
+ break;
+
+ case EM_MSP430:
+ case EM_MSP430_OLD:
+ switch (osabi)
+ {
+ case ELFOSABI_STANDALONE: return _("Standalone App");
+ default:
+ break;
+ }
+ break;
+
+ case EM_TI_C6000:
+ switch (osabi)
+ {
+ case ELFOSABI_C6000_ELFABI: return _("Bare-metal C6000");
+ case ELFOSABI_C6000_LINUX: return "Linux C6000";
+ default:
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
+ snprintf (buff, sizeof (buff), _("<unknown: %x>"), osabi);
+ return buff;
+ }
+}
+
+static const char *
+get_aarch64_segment_type (unsigned long type)
+{
+ switch (type)
+ {
+ case PT_AARCH64_ARCHEXT:
+ return "AARCH64_ARCHEXT";
+ default:
+ break;
+ }
+
+ return NULL;
+}
+
+static const char *
+get_arm_segment_type (unsigned long type)
+{
+ switch (type)
+ {
+ case PT_ARM_EXIDX:
+ return "EXIDX";
+ default:
+ break;
+ }
+
+ return NULL;
+}
+
+static const char *
+get_mips_segment_type (unsigned long type)
+{
+ switch (type)
+ {
+ case PT_MIPS_REGINFO:
+ return "REGINFO";
+ case PT_MIPS_RTPROC:
+ return "RTPROC";
+ case PT_MIPS_OPTIONS:
+ return "OPTIONS";
+ default:
+ break;
+ }
+
+ return NULL;
+}
+
+static const char *
+get_parisc_segment_type (unsigned long type)
+{
+ switch (type)
+ {
+ case PT_HP_TLS: return "HP_TLS";
+ case PT_HP_CORE_NONE: return "HP_CORE_NONE";
+ case PT_HP_CORE_VERSION: return "HP_CORE_VERSION";
+ case PT_HP_CORE_KERNEL: return "HP_CORE_KERNEL";
+ case PT_HP_CORE_COMM: return "HP_CORE_COMM";
+ case PT_HP_CORE_PROC: return "HP_CORE_PROC";
+ case PT_HP_CORE_LOADABLE: return "HP_CORE_LOADABLE";
+ case PT_HP_CORE_STACK: return "HP_CORE_STACK";
+ case PT_HP_CORE_SHM: return "HP_CORE_SHM";
+ case PT_HP_CORE_MMF: return "HP_CORE_MMF";
+ case PT_HP_PARALLEL: return "HP_PARALLEL";
+ case PT_HP_FASTBIND: return "HP_FASTBIND";
+ case PT_HP_OPT_ANNOT: return "HP_OPT_ANNOT";
+ case PT_HP_HSL_ANNOT: return "HP_HSL_ANNOT";
+ case PT_HP_STACK: return "HP_STACK";
+ case PT_HP_CORE_UTSNAME: return "HP_CORE_UTSNAME";
+ case PT_PARISC_ARCHEXT: return "PARISC_ARCHEXT";
+ case PT_PARISC_UNWIND: return "PARISC_UNWIND";
+ case PT_PARISC_WEAKORDER: return "PARISC_WEAKORDER";
+ default:
+ break;
+ }
+
+ return NULL;
+}
+
+static const char *
+get_ia64_segment_type (unsigned long type)
+{
+ switch (type)
+ {
+ case PT_IA_64_ARCHEXT: return "IA_64_ARCHEXT";
+ case PT_IA_64_UNWIND: return "IA_64_UNWIND";
+ case PT_HP_TLS: return "HP_TLS";
+ case PT_IA_64_HP_OPT_ANOT: return "HP_OPT_ANNOT";
+ case PT_IA_64_HP_HSL_ANOT: return "HP_HSL_ANNOT";
+ case PT_IA_64_HP_STACK: return "HP_STACK";
+ default:
+ break;
+ }
+
+ return NULL;
+}
+
+static const char *
+get_tic6x_segment_type (unsigned long type)
+{
+ switch (type)
+ {
+ case PT_C6000_PHATTR: return "C6000_PHATTR";
+ default:
+ break;
+ }
+
+ return NULL;
+}
+
+static const char *
+get_segment_type (unsigned long p_type)
+{
+ static char buff[32];
+
+ switch (p_type)
+ {
+ case PT_NULL: return "NULL";
+ case PT_LOAD: return "LOAD";
+ case PT_DYNAMIC: return "DYNAMIC";
+ case PT_INTERP: return "INTERP";
+ case PT_NOTE: return "NOTE";
+ case PT_SHLIB: return "SHLIB";
+ case PT_PHDR: return "PHDR";
+ case PT_TLS: return "TLS";
+
+ case PT_GNU_EH_FRAME:
+ return "GNU_EH_FRAME";
+ case PT_GNU_STACK: return "GNU_STACK";
+ case PT_GNU_RELRO: return "GNU_RELRO";
+
+ default:
+ if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
+ {
+ const char * result;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_AARCH64:
+ result = get_aarch64_segment_type (p_type);
+ break;
+ case EM_ARM:
+ result = get_arm_segment_type (p_type);
+ break;
+ case EM_MIPS:
+ case EM_MIPS_RS3_LE:
+ result = get_mips_segment_type (p_type);
+ break;
+ case EM_PARISC:
+ result = get_parisc_segment_type (p_type);
+ break;
+ case EM_IA_64:
+ result = get_ia64_segment_type (p_type);
+ break;
+ case EM_TI_C6000:
+ result = get_tic6x_segment_type (p_type);
+ break;
+ default:
+ result = NULL;
+ break;
+ }
+
+ if (result != NULL)
+ return result;
+
+ sprintf (buff, "LOPROC+%lx", p_type - PT_LOPROC);
+ }
+ else if ((p_type >= PT_LOOS) && (p_type <= PT_HIOS))
+ {
+ const char * result;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_PARISC:
+ result = get_parisc_segment_type (p_type);
+ break;
+ case EM_IA_64:
+ result = get_ia64_segment_type (p_type);
+ break;
+ default:
+ result = NULL;
+ break;
+ }
+
+ if (result != NULL)
+ return result;
+
+ sprintf (buff, "LOOS+%lx", p_type - PT_LOOS);
+ }
+ else
+ snprintf (buff, sizeof (buff), _("<unknown>: %lx"), p_type);
+
+ return buff;
+ }
+}
+
+static const char *
+get_mips_section_type_name (unsigned int sh_type)
+{
+ switch (sh_type)
+ {
+ case SHT_MIPS_LIBLIST: return "MIPS_LIBLIST";
+ case SHT_MIPS_MSYM: return "MIPS_MSYM";
+ case SHT_MIPS_CONFLICT: return "MIPS_CONFLICT";
+ case SHT_MIPS_GPTAB: return "MIPS_GPTAB";
+ case SHT_MIPS_UCODE: return "MIPS_UCODE";
+ case SHT_MIPS_DEBUG: return "MIPS_DEBUG";
+ case SHT_MIPS_REGINFO: return "MIPS_REGINFO";
+ case SHT_MIPS_PACKAGE: return "MIPS_PACKAGE";
+ case SHT_MIPS_PACKSYM: return "MIPS_PACKSYM";
+ case SHT_MIPS_RELD: return "MIPS_RELD";
+ case SHT_MIPS_IFACE: return "MIPS_IFACE";
+ case SHT_MIPS_CONTENT: return "MIPS_CONTENT";
+ case SHT_MIPS_OPTIONS: return "MIPS_OPTIONS";
+ case SHT_MIPS_SHDR: return "MIPS_SHDR";
+ case SHT_MIPS_FDESC: return "MIPS_FDESC";
+ case SHT_MIPS_EXTSYM: return "MIPS_EXTSYM";
+ case SHT_MIPS_DENSE: return "MIPS_DENSE";
+ case SHT_MIPS_PDESC: return "MIPS_PDESC";
+ case SHT_MIPS_LOCSYM: return "MIPS_LOCSYM";
+ case SHT_MIPS_AUXSYM: return "MIPS_AUXSYM";
+ case SHT_MIPS_OPTSYM: return "MIPS_OPTSYM";
+ case SHT_MIPS_LOCSTR: return "MIPS_LOCSTR";
+ case SHT_MIPS_LINE: return "MIPS_LINE";
+ case SHT_MIPS_RFDESC: return "MIPS_RFDESC";
+ case SHT_MIPS_DELTASYM: return "MIPS_DELTASYM";
+ case SHT_MIPS_DELTAINST: return "MIPS_DELTAINST";
+ case SHT_MIPS_DELTACLASS: return "MIPS_DELTACLASS";
+ case SHT_MIPS_DWARF: return "MIPS_DWARF";
+ case SHT_MIPS_DELTADECL: return "MIPS_DELTADECL";
+ case SHT_MIPS_SYMBOL_LIB: return "MIPS_SYMBOL_LIB";
+ case SHT_MIPS_EVENTS: return "MIPS_EVENTS";
+ case SHT_MIPS_TRANSLATE: return "MIPS_TRANSLATE";
+ case SHT_MIPS_PIXIE: return "MIPS_PIXIE";
+ case SHT_MIPS_XLATE: return "MIPS_XLATE";
+ case SHT_MIPS_XLATE_DEBUG: return "MIPS_XLATE_DEBUG";
+ case SHT_MIPS_WHIRL: return "MIPS_WHIRL";
+ case SHT_MIPS_EH_REGION: return "MIPS_EH_REGION";
+ case SHT_MIPS_XLATE_OLD: return "MIPS_XLATE_OLD";
+ case SHT_MIPS_PDR_EXCEPTION: return "MIPS_PDR_EXCEPTION";
+ default:
+ break;
+ }
+ return NULL;
+}
+
+static const char *
+get_parisc_section_type_name (unsigned int sh_type)
+{
+ switch (sh_type)
+ {
+ case SHT_PARISC_EXT: return "PARISC_EXT";
+ case SHT_PARISC_UNWIND: return "PARISC_UNWIND";
+ case SHT_PARISC_DOC: return "PARISC_DOC";
+ case SHT_PARISC_ANNOT: return "PARISC_ANNOT";
+ case SHT_PARISC_SYMEXTN: return "PARISC_SYMEXTN";
+ case SHT_PARISC_STUBS: return "PARISC_STUBS";
+ case SHT_PARISC_DLKM: return "PARISC_DLKM";
+ default:
+ break;
+ }
+ return NULL;
+}
+
+static const char *
+get_ia64_section_type_name (unsigned int sh_type)
+{
+ /* If the top 8 bits are 0x78 the next 8 are the os/abi ID. */
+ if ((sh_type & 0xFF000000) == SHT_IA_64_LOPSREG)
+ return get_osabi_name ((sh_type & 0x00FF0000) >> 16);
+
+ switch (sh_type)
+ {
+ case SHT_IA_64_EXT: return "IA_64_EXT";
+ case SHT_IA_64_UNWIND: return "IA_64_UNWIND";
+ case SHT_IA_64_PRIORITY_INIT: return "IA_64_PRIORITY_INIT";
+ case SHT_IA_64_VMS_TRACE: return "VMS_TRACE";
+ case SHT_IA_64_VMS_TIE_SIGNATURES: return "VMS_TIE_SIGNATURES";
+ case SHT_IA_64_VMS_DEBUG: return "VMS_DEBUG";
+ case SHT_IA_64_VMS_DEBUG_STR: return "VMS_DEBUG_STR";
+ case SHT_IA_64_VMS_LINKAGES: return "VMS_LINKAGES";
+ case SHT_IA_64_VMS_SYMBOL_VECTOR: return "VMS_SYMBOL_VECTOR";
+ case SHT_IA_64_VMS_FIXUP: return "VMS_FIXUP";
+ default:
+ break;
+ }
+ return NULL;
+}
+
+static const char *
+get_x86_64_section_type_name (unsigned int sh_type)
+{
+ switch (sh_type)
+ {
+ case SHT_X86_64_UNWIND: return "X86_64_UNWIND";
+ default:
+ break;
+ }
+ return NULL;
+}
+
+static const char *
+get_aarch64_section_type_name (unsigned int sh_type)
+{
+ switch (sh_type)
+ {
+ case SHT_AARCH64_ATTRIBUTES:
+ return "AARCH64_ATTRIBUTES";
+ default:
+ break;
+ }
+ return NULL;
+}
+
+static const char *
+get_arm_section_type_name (unsigned int sh_type)
+{
+ switch (sh_type)
+ {
+ case SHT_ARM_EXIDX: return "ARM_EXIDX";
+ case SHT_ARM_PREEMPTMAP: return "ARM_PREEMPTMAP";
+ case SHT_ARM_ATTRIBUTES: return "ARM_ATTRIBUTES";
+ case SHT_ARM_DEBUGOVERLAY: return "ARM_DEBUGOVERLAY";
+ case SHT_ARM_OVERLAYSECTION: return "ARM_OVERLAYSECTION";
+ default:
+ break;
+ }
+ return NULL;
+}
+
+static const char *
+get_tic6x_section_type_name (unsigned int sh_type)
+{
+ switch (sh_type)
+ {
+ case SHT_C6000_UNWIND:
+ return "C6000_UNWIND";
+ case SHT_C6000_PREEMPTMAP:
+ return "C6000_PREEMPTMAP";
+ case SHT_C6000_ATTRIBUTES:
+ return "C6000_ATTRIBUTES";
+ case SHT_TI_ICODE:
+ return "TI_ICODE";
+ case SHT_TI_XREF:
+ return "TI_XREF";
+ case SHT_TI_HANDLER:
+ return "TI_HANDLER";
+ case SHT_TI_INITINFO:
+ return "TI_INITINFO";
+ case SHT_TI_PHATTRS:
+ return "TI_PHATTRS";
+ default:
+ break;
+ }
+ return NULL;
+}
+
+static const char *
+get_msp430x_section_type_name (unsigned int sh_type)
+{
+ switch (sh_type)
+ {
+ case SHT_MSP430_SEC_FLAGS: return "MSP430_SEC_FLAGS";
+ case SHT_MSP430_SYM_ALIASES: return "MSP430_SYM_ALIASES";
+ case SHT_MSP430_ATTRIBUTES: return "MSP430_ATTRIBUTES";
+ default: return NULL;
+ }
+}
+
+static const char *
+get_section_type_name (unsigned int sh_type)
+{
+ static char buff[32];
+
+ switch (sh_type)
+ {
+ case SHT_NULL: return "NULL";
+ case SHT_PROGBITS: return "PROGBITS";
+ case SHT_SYMTAB: return "SYMTAB";
+ case SHT_STRTAB: return "STRTAB";
+ case SHT_RELA: return "RELA";
+ case SHT_HASH: return "HASH";
+ case SHT_DYNAMIC: return "DYNAMIC";
+ case SHT_NOTE: return "NOTE";
+ case SHT_NOBITS: return "NOBITS";
+ case SHT_REL: return "REL";
+ case SHT_SHLIB: return "SHLIB";
+ case SHT_DYNSYM: return "DYNSYM";
+ case SHT_INIT_ARRAY: return "INIT_ARRAY";
+ case SHT_FINI_ARRAY: return "FINI_ARRAY";
+ case SHT_PREINIT_ARRAY: return "PREINIT_ARRAY";
+ case SHT_GNU_HASH: return "GNU_HASH";
+ case SHT_GROUP: return "GROUP";
+ case SHT_SYMTAB_SHNDX: return "SYMTAB SECTION INDICIES";
+ case SHT_GNU_verdef: return "VERDEF";
+ case SHT_GNU_verneed: return "VERNEED";
+ case SHT_GNU_versym: return "VERSYM";
+ case 0x6ffffff0: return "VERSYM";
+ case 0x6ffffffc: return "VERDEF";
+ case 0x7ffffffd: return "AUXILIARY";
+ case 0x7fffffff: return "FILTER";
+ case SHT_GNU_LIBLIST: return "GNU_LIBLIST";
+
+ default:
+ if ((sh_type >= SHT_LOPROC) && (sh_type <= SHT_HIPROC))
+ {
+ const char * result;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_MIPS:
+ case EM_MIPS_RS3_LE:
+ result = get_mips_section_type_name (sh_type);
+ break;
+ case EM_PARISC:
+ result = get_parisc_section_type_name (sh_type);
+ break;
+ case EM_IA_64:
+ result = get_ia64_section_type_name (sh_type);
+ break;
+ case EM_X86_64:
+ case EM_L1OM:
+ case EM_K1OM:
+ result = get_x86_64_section_type_name (sh_type);
+ break;
+ case EM_AARCH64:
+ result = get_aarch64_section_type_name (sh_type);
+ break;
+ case EM_ARM:
+ result = get_arm_section_type_name (sh_type);
+ break;
+ case EM_TI_C6000:
+ result = get_tic6x_section_type_name (sh_type);
+ break;
+ case EM_MSP430:
+ result = get_msp430x_section_type_name (sh_type);
+ break;
+ default:
+ result = NULL;
+ break;
+ }
+
+ if (result != NULL)
+ return result;
+
+ sprintf (buff, "LOPROC+%x", sh_type - SHT_LOPROC);
+ }
+ else if ((sh_type >= SHT_LOOS) && (sh_type <= SHT_HIOS))
+ {
+ const char * result;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_IA_64:
+ result = get_ia64_section_type_name (sh_type);
+ break;
+ default:
+ result = NULL;
+ break;
+ }
+
+ if (result != NULL)
+ return result;
+
+ sprintf (buff, "LOOS+%x", sh_type - SHT_LOOS);
+ }
+ else if ((sh_type >= SHT_LOUSER) && (sh_type <= SHT_HIUSER))
+ sprintf (buff, "LOUSER+%x", sh_type - SHT_LOUSER);
+ else
+ /* This message is probably going to be displayed in a 15
+ character wide field, so put the hex value first. */
+ snprintf (buff, sizeof (buff), _("%08x: <unknown>"), sh_type);
+
+ return buff;
+ }
+}
+
+#define OPTION_DEBUG_DUMP 512
+#define OPTION_DYN_SYMS 513
+#define OPTION_DWARF_DEPTH 514
+#define OPTION_DWARF_START 515
+#define OPTION_DWARF_CHECK 516
+
+static struct option options[] =
+{
+ {"all", no_argument, 0, 'a'},
+ {"file-header", no_argument, 0, 'h'},
+ {"program-headers", no_argument, 0, 'l'},
+ {"headers", no_argument, 0, 'e'},
+ {"histogram", no_argument, 0, 'I'},
+ {"segments", no_argument, 0, 'l'},
+ {"sections", no_argument, 0, 'S'},
+ {"section-headers", no_argument, 0, 'S'},
+ {"section-groups", no_argument, 0, 'g'},
+ {"section-details", no_argument, 0, 't'},
+ {"full-section-name",no_argument, 0, 'N'},
+ {"symbols", no_argument, 0, 's'},
+ {"syms", no_argument, 0, 's'},
+ {"dyn-syms", no_argument, 0, OPTION_DYN_SYMS},
+ {"relocs", no_argument, 0, 'r'},
+ {"notes", no_argument, 0, 'n'},
+ {"dynamic", no_argument, 0, 'd'},
+ {"arch-specific", no_argument, 0, 'A'},
+ {"version-info", no_argument, 0, 'V'},
+ {"use-dynamic", no_argument, 0, 'D'},
+ {"unwind", no_argument, 0, 'u'},
+ {"archive-index", no_argument, 0, 'c'},
+ {"hex-dump", required_argument, 0, 'x'},
+ {"relocated-dump", required_argument, 0, 'R'},
+ {"string-dump", required_argument, 0, 'p'},
+#ifdef SUPPORT_DISASSEMBLY
+ {"instruction-dump", required_argument, 0, 'i'},
+#endif
+ {"debug-dump", optional_argument, 0, OPTION_DEBUG_DUMP},
+
+ {"dwarf-depth", required_argument, 0, OPTION_DWARF_DEPTH},
+ {"dwarf-start", required_argument, 0, OPTION_DWARF_START},
+ {"dwarf-check", no_argument, 0, OPTION_DWARF_CHECK},
+
+ {"version", no_argument, 0, 'v'},
+ {"wide", no_argument, 0, 'W'},
+ {"help", no_argument, 0, 'H'},
+ {0, no_argument, 0, 0}
+};
+
+static void
+usage (FILE * stream)
+{
+ fprintf (stream, _("Usage: readelf <option(s)> elf-file(s)\n"));
+ fprintf (stream, _(" Display information about the contents of ELF format files\n"));
+ fprintf (stream, _(" Options are:\n\
+ -a --all Equivalent to: -h -l -S -s -r -d -V -A -I\n\
+ -h --file-header Display the ELF file header\n\
+ -l --program-headers Display the program headers\n\
+ --segments An alias for --program-headers\n\
+ -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\
+ --dyn-syms Display the dynamic symbol table\n\
+ -n --notes Display the core notes (if present)\n\
+ -r --relocs Display the relocations (if present)\n\
+ -u --unwind Display the unwind info (if present)\n\
+ -d --dynamic Display the dynamic section (if present)\n\
+ -V --version-info Display the version sections (if present)\n\
+ -A --arch-specific Display architecture specific information (if any)\n\
+ -c --archive-index Display the symbol/file index in an archive\n\
+ -D --use-dynamic Use the dynamic section info when displaying symbols\n\
+ -x --hex-dump=<number|name>\n\
+ Dump the contents of section <number|name> as bytes\n\
+ -p --string-dump=<number|name>\n\
+ Dump the contents of section <number|name> as strings\n\
+ -R --relocated-dump=<number|name>\n\
+ Dump the contents of section <number|name> as relocated bytes\n\
+ -w[lLiaprmfFsoRt] or\n\
+ --debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,\n\
+ =frames-interp,=str,=loc,=Ranges,=pubtypes,\n\
+ =gdb_index,=trace_info,=trace_abbrev,=trace_aranges,\n\
+ =addr,=cu_index]\n\
+ Display the contents of DWARF2 debug sections\n"));
+ fprintf (stream, _("\
+ --dwarf-depth=N Do not display DIEs at depth N or greater\n\
+ --dwarf-start=N Display DIEs starting with N, at the same depth\n\
+ or deeper\n"));
+#ifdef SUPPORT_DISASSEMBLY
+ fprintf (stream, _("\
+ -i --instruction-dump=<number|name>\n\
+ Disassemble the contents of section <number|name>\n"));
+#endif
+ fprintf (stream, _("\
+ -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"));
+
+ if (REPORT_BUGS_TO[0] && stream == stdout)
+ fprintf (stdout, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+
+ exit (stream == stdout ? 0 : 1);
+}
+
+/* Record the fact that the user wants the contents of section number
+ SECTION to be displayed using the method(s) encoded as flags bits
+ in TYPE. Note, TYPE can be zero if we are creating the array for
+ the first time. */
+
+static void
+request_dump_bynumber (unsigned int section, dump_type type)
+{
+ if (section >= num_dump_sects)
+ {
+ dump_type * new_dump_sects;
+
+ new_dump_sects = (dump_type *) calloc (section + 1,
+ sizeof (* dump_sects));
+
+ if (new_dump_sects == NULL)
+ error (_("Out of memory allocating dump request table.\n"));
+ else
+ {
+ /* Copy current flag settings. */
+ memcpy (new_dump_sects, dump_sects, num_dump_sects * sizeof (* dump_sects));
+
+ free (dump_sects);
+
+ dump_sects = new_dump_sects;
+ num_dump_sects = section + 1;
+ }
+ }
+
+ if (dump_sects)
+ dump_sects[section] |= type;
+
+ return;
+}
+
+/* Request a dump by section name. */
+
+static void
+request_dump_byname (const char * section, dump_type type)
+{
+ struct dump_list_entry * new_request;
+
+ new_request = (struct dump_list_entry *)
+ malloc (sizeof (struct dump_list_entry));
+ if (!new_request)
+ error (_("Out of memory allocating dump request table.\n"));
+
+ new_request->name = strdup (section);
+ if (!new_request->name)
+ error (_("Out of memory allocating dump request table.\n"));
+
+ new_request->type = type;
+
+ new_request->next = dump_sects_byname;
+ dump_sects_byname = new_request;
+}
+
+static inline void
+request_dump (dump_type type)
+{
+ int section;
+ char * cp;
+
+ do_dump++;
+ section = strtoul (optarg, & cp, 0);
+
+ if (! *cp && section >= 0)
+ request_dump_bynumber (section, type);
+ else
+ request_dump_byname (optarg, type);
+}
+
+
+static void
+parse_args (int argc, char ** argv)
+{
+ int c;
+
+ if (argc < 2)
+ usage (stderr);
+
+ while ((c = getopt_long
+ (argc, argv, "ADHINR:SVWacdeghi:lnp:rstuvw::x:", options, NULL)) != EOF)
+ {
+ switch (c)
+ {
+ case 0:
+ /* Long options. */
+ break;
+ case 'H':
+ usage (stdout);
+ break;
+
+ case 'a':
+ do_syms++;
+ do_reloc++;
+ do_unwind++;
+ do_dynamic++;
+ do_header++;
+ do_sections++;
+ do_section_groups++;
+ do_segments++;
+ do_version++;
+ do_histogram++;
+ do_arch++;
+ do_notes++;
+ break;
+ case 'g':
+ do_section_groups++;
+ break;
+ case 't':
+ case 'N':
+ do_sections++;
+ do_section_details++;
+ break;
+ case 'e':
+ do_header++;
+ do_sections++;
+ do_segments++;
+ break;
+ case 'A':
+ do_arch++;
+ break;
+ case 'D':
+ do_using_dynamic++;
+ break;
+ case 'r':
+ do_reloc++;
+ break;
+ case 'u':
+ do_unwind++;
+ break;
+ case 'h':
+ do_header++;
+ break;
+ case 'l':
+ do_segments++;
+ break;
+ case 's':
+ do_syms++;
+ break;
+ case 'S':
+ do_sections++;
+ break;
+ case 'd':
+ do_dynamic++;
+ break;
+ case 'I':
+ do_histogram++;
+ break;
+ case 'n':
+ do_notes++;
+ break;
+ case 'c':
+ do_archive_index++;
+ break;
+ case 'x':
+ request_dump (HEX_DUMP);
+ break;
+ case 'p':
+ request_dump (STRING_DUMP);
+ break;
+ case 'R':
+ request_dump (RELOC_DUMP);
+ break;
+ case 'w':
+ do_dump++;
+ if (optarg == 0)
+ {
+ do_debugging = 1;
+ dwarf_select_sections_all ();
+ }
+ else
+ {
+ do_debugging = 0;
+ dwarf_select_sections_by_letters (optarg);
+ }
+ break;
+ case OPTION_DEBUG_DUMP:
+ do_dump++;
+ if (optarg == 0)
+ do_debugging = 1;
+ else
+ {
+ do_debugging = 0;
+ dwarf_select_sections_by_names (optarg);
+ }
+ break;
+ case OPTION_DWARF_DEPTH:
+ {
+ char *cp;
+
+ dwarf_cutoff_level = strtoul (optarg, & cp, 0);
+ }
+ break;
+ case OPTION_DWARF_START:
+ {
+ char *cp;
+
+ dwarf_start_die = strtoul (optarg, & cp, 0);
+ }
+ break;
+ case OPTION_DWARF_CHECK:
+ dwarf_check = 1;
+ break;
+ case OPTION_DYN_SYMS:
+ do_dyn_syms++;
+ break;
+#ifdef SUPPORT_DISASSEMBLY
+ case 'i':
+ request_dump (DISASS_DUMP);
+ break;
+#endif
+ case 'v':
+ print_version (program_name);
+ break;
+ case 'V':
+ do_version++;
+ break;
+ case 'W':
+ do_wide++;
+ break;
+ default:
+ /* xgettext:c-format */
+ error (_("Invalid option '-%c'\n"), c);
+ /* Drop through. */
+ case '?':
+ usage (stderr);
+ }
+ }
+
+ if (!do_dynamic && !do_syms && !do_reloc && !do_unwind && !do_sections
+ && !do_segments && !do_header && !do_dump && !do_version
+ && !do_histogram && !do_debugging && !do_arch && !do_notes
+ && !do_section_groups && !do_archive_index
+ && !do_dyn_syms)
+ usage (stderr);
+ else if (argc < 3)
+ {
+ warn (_("Nothing to do.\n"));
+ usage (stderr);
+ }
+}
+
+static const char *
+get_elf_class (unsigned int elf_class)
+{
+ static char buff[32];
+
+ switch (elf_class)
+ {
+ case ELFCLASSNONE: return _("none");
+ case ELFCLASS32: return "ELF32";
+ case ELFCLASS64: return "ELF64";
+ default:
+ snprintf (buff, sizeof (buff), _("<unknown: %x>"), elf_class);
+ return buff;
+ }
+}
+
+static const char *
+get_data_encoding (unsigned int encoding)
+{
+ static char buff[32];
+
+ switch (encoding)
+ {
+ case ELFDATANONE: return _("none");
+ case ELFDATA2LSB: return _("2's complement, little endian");
+ case ELFDATA2MSB: return _("2's complement, big endian");
+ default:
+ snprintf (buff, sizeof (buff), _("<unknown: %x>"), encoding);
+ return buff;
+ }
+}
+
+/* Decode the data held in 'elf_header'. */
+
+static int
+process_file_header (void)
+{
+ if ( elf_header.e_ident[EI_MAG0] != ELFMAG0
+ || elf_header.e_ident[EI_MAG1] != ELFMAG1
+ || elf_header.e_ident[EI_MAG2] != ELFMAG2
+ || elf_header.e_ident[EI_MAG3] != ELFMAG3)
+ {
+ error
+ (_("Not an ELF file - it has the wrong magic bytes at the start\n"));
+ return 0;
+ }
+
+ init_dwarf_regnames (elf_header.e_machine);
+
+ if (do_header)
+ {
+ int i;
+
+ printf (_("ELF Header:\n"));
+ printf (_(" Magic: "));
+ for (i = 0; i < EI_NIDENT; i++)
+ printf ("%2.2x ", elf_header.e_ident[i]);
+ printf ("\n");
+ printf (_(" Class: %s\n"),
+ get_elf_class (elf_header.e_ident[EI_CLASS]));
+ printf (_(" Data: %s\n"),
+ get_data_encoding (elf_header.e_ident[EI_DATA]));
+ printf (_(" Version: %d %s\n"),
+ elf_header.e_ident[EI_VERSION],
+ (elf_header.e_ident[EI_VERSION] == EV_CURRENT
+ ? "(current)"
+ : (elf_header.e_ident[EI_VERSION] != EV_NONE
+ ? _("<unknown: %lx>")
+ : "")));
+ printf (_(" OS/ABI: %s\n"),
+ get_osabi_name (elf_header.e_ident[EI_OSABI]));
+ printf (_(" ABI Version: %d\n"),
+ elf_header.e_ident[EI_ABIVERSION]);
+ printf (_(" Type: %s\n"),
+ get_file_type (elf_header.e_type));
+ printf (_(" Machine: %s\n"),
+ get_machine_name (elf_header.e_machine));
+ printf (_(" Version: 0x%lx\n"),
+ (unsigned long) elf_header.e_version);
+
+ printf (_(" Entry point address: "));
+ print_vma ((bfd_vma) elf_header.e_entry, PREFIX_HEX);
+ printf (_("\n Start of program headers: "));
+ print_vma ((bfd_vma) elf_header.e_phoff, DEC);
+ printf (_(" (bytes into file)\n Start of section headers: "));
+ print_vma ((bfd_vma) elf_header.e_shoff, DEC);
+ printf (_(" (bytes into file)\n"));
+
+ printf (_(" Flags: 0x%lx%s\n"),
+ (unsigned long) elf_header.e_flags,
+ get_machine_flags (elf_header.e_flags, elf_header.e_machine));
+ printf (_(" Size of this header: %ld (bytes)\n"),
+ (long) elf_header.e_ehsize);
+ printf (_(" Size of program headers: %ld (bytes)\n"),
+ (long) elf_header.e_phentsize);
+ printf (_(" Number of program headers: %ld"),
+ (long) elf_header.e_phnum);
+ if (section_headers != NULL
+ && elf_header.e_phnum == PN_XNUM
+ && section_headers[0].sh_info != 0)
+ printf (" (%ld)", (long) section_headers[0].sh_info);
+ putc ('\n', stdout);
+ printf (_(" Size of section headers: %ld (bytes)\n"),
+ (long) elf_header.e_shentsize);
+ printf (_(" Number of section headers: %ld"),
+ (long) elf_header.e_shnum);
+ if (section_headers != NULL && elf_header.e_shnum == SHN_UNDEF)
+ printf (" (%ld)", (long) section_headers[0].sh_size);
+ putc ('\n', stdout);
+ printf (_(" Section header string table index: %ld"),
+ (long) elf_header.e_shstrndx);
+ if (section_headers != NULL
+ && elf_header.e_shstrndx == (SHN_XINDEX & 0xffff))
+ printf (" (%u)", section_headers[0].sh_link);
+ else if (elf_header.e_shstrndx != SHN_UNDEF
+ && elf_header.e_shstrndx >= elf_header.e_shnum)
+ printf (_(" <corrupt: out of range>"));
+ putc ('\n', stdout);
+ }
+
+ if (section_headers != NULL)
+ {
+ if (elf_header.e_phnum == PN_XNUM
+ && section_headers[0].sh_info != 0)
+ elf_header.e_phnum = section_headers[0].sh_info;
+ if (elf_header.e_shnum == SHN_UNDEF)
+ elf_header.e_shnum = section_headers[0].sh_size;
+ if (elf_header.e_shstrndx == (SHN_XINDEX & 0xffff))
+ elf_header.e_shstrndx = section_headers[0].sh_link;
+ else if (elf_header.e_shstrndx >= elf_header.e_shnum)
+ elf_header.e_shstrndx = SHN_UNDEF;
+ free (section_headers);
+ section_headers = NULL;
+ }
+
+ return 1;
+}
+
+
+static int
+get_32bit_program_headers (FILE * file, Elf_Internal_Phdr * pheaders)
+{
+ Elf32_External_Phdr * phdrs;
+ Elf32_External_Phdr * external;
+ Elf_Internal_Phdr * internal;
+ unsigned int i;
+
+ phdrs = (Elf32_External_Phdr *) get_data (NULL, file, elf_header.e_phoff,
+ elf_header.e_phentsize,
+ elf_header.e_phnum,
+ _("program headers"));
+ if (!phdrs)
+ return 0;
+
+ for (i = 0, internal = pheaders, external = phdrs;
+ i < elf_header.e_phnum;
+ i++, internal++, external++)
+ {
+ internal->p_type = BYTE_GET (external->p_type);
+ internal->p_offset = BYTE_GET (external->p_offset);
+ internal->p_vaddr = BYTE_GET (external->p_vaddr);
+ internal->p_paddr = BYTE_GET (external->p_paddr);
+ internal->p_filesz = BYTE_GET (external->p_filesz);
+ internal->p_memsz = BYTE_GET (external->p_memsz);
+ internal->p_flags = BYTE_GET (external->p_flags);
+ internal->p_align = BYTE_GET (external->p_align);
+ }
+
+ free (phdrs);
+
+ return 1;
+}
+
+static int
+get_64bit_program_headers (FILE * file, Elf_Internal_Phdr * pheaders)
+{
+ Elf64_External_Phdr * phdrs;
+ Elf64_External_Phdr * external;
+ Elf_Internal_Phdr * internal;
+ unsigned int i;
+
+ phdrs = (Elf64_External_Phdr *) get_data (NULL, file, elf_header.e_phoff,
+ elf_header.e_phentsize,
+ elf_header.e_phnum,
+ _("program headers"));
+ if (!phdrs)
+ return 0;
+
+ for (i = 0, internal = pheaders, external = phdrs;
+ i < elf_header.e_phnum;
+ i++, internal++, external++)
+ {
+ internal->p_type = BYTE_GET (external->p_type);
+ internal->p_flags = BYTE_GET (external->p_flags);
+ internal->p_offset = BYTE_GET (external->p_offset);
+ internal->p_vaddr = BYTE_GET (external->p_vaddr);
+ internal->p_paddr = BYTE_GET (external->p_paddr);
+ internal->p_filesz = BYTE_GET (external->p_filesz);
+ internal->p_memsz = BYTE_GET (external->p_memsz);
+ internal->p_align = BYTE_GET (external->p_align);
+ }
+
+ free (phdrs);
+
+ return 1;
+}
+
+/* Returns 1 if the program headers were read into `program_headers'. */
+
+static int
+get_program_headers (FILE * file)
+{
+ Elf_Internal_Phdr * phdrs;
+
+ /* Check cache of prior read. */
+ if (program_headers != NULL)
+ return 1;
+
+ phdrs = (Elf_Internal_Phdr *) cmalloc (elf_header.e_phnum,
+ sizeof (Elf_Internal_Phdr));
+
+ if (phdrs == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ if (is_32bit_elf
+ ? get_32bit_program_headers (file, phdrs)
+ : get_64bit_program_headers (file, phdrs))
+ {
+ program_headers = phdrs;
+ return 1;
+ }
+
+ free (phdrs);
+ return 0;
+}
+
+/* Returns 1 if the program headers were loaded. */
+
+static int
+process_program_headers (FILE * file)
+{
+ Elf_Internal_Phdr * segment;
+ unsigned int i;
+
+ if (elf_header.e_phnum == 0)
+ {
+ /* PR binutils/12467. */
+ if (elf_header.e_phoff != 0)
+ warn (_("possibly corrupt ELF header - it has a non-zero program"
+ " header offset, but no program headers"));
+ else if (do_segments)
+ printf (_("\nThere are no program headers in this file.\n"));
+ return 0;
+ }
+
+ if (do_segments && !do_header)
+ {
+ printf (_("\nElf file type is %s\n"), get_file_type (elf_header.e_type));
+ printf (_("Entry point "));
+ print_vma ((bfd_vma) elf_header.e_entry, PREFIX_HEX);
+ printf (_("\nThere are %d program headers, starting at offset "),
+ elf_header.e_phnum);
+ print_vma ((bfd_vma) elf_header.e_phoff, DEC);
+ printf ("\n");
+ }
+
+ if (! get_program_headers (file))
+ return 0;
+
+ if (do_segments)
+ {
+ if (elf_header.e_phnum > 1)
+ printf (_("\nProgram Headers:\n"));
+ else
+ printf (_("\nProgram Headers:\n"));
+
+ if (is_32bit_elf)
+ printf
+ (_(" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"));
+ else if (do_wide)
+ printf
+ (_(" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"));
+ else
+ {
+ printf
+ (_(" Type Offset VirtAddr PhysAddr\n"));
+ printf
+ (_(" FileSiz MemSiz Flags Align\n"));
+ }
+ }
+
+ dynamic_addr = 0;
+ dynamic_size = 0;
+
+ for (i = 0, segment = program_headers;
+ i < elf_header.e_phnum;
+ i++, segment++)
+ {
+ if (do_segments)
+ {
+ printf (" %-14.14s ", get_segment_type (segment->p_type));
+
+ if (is_32bit_elf)
+ {
+ printf ("0x%6.6lx ", (unsigned long) segment->p_offset);
+ printf ("0x%8.8lx ", (unsigned long) segment->p_vaddr);
+ printf ("0x%8.8lx ", (unsigned long) segment->p_paddr);
+ printf ("0x%5.5lx ", (unsigned long) segment->p_filesz);
+ printf ("0x%5.5lx ", (unsigned long) segment->p_memsz);
+ printf ("%c%c%c ",
+ (segment->p_flags & PF_R ? 'R' : ' '),
+ (segment->p_flags & PF_W ? 'W' : ' '),
+ (segment->p_flags & PF_X ? 'E' : ' '));
+ printf ("%#lx", (unsigned long) segment->p_align);
+ }
+ else if (do_wide)
+ {
+ if ((unsigned long) segment->p_offset == segment->p_offset)
+ printf ("0x%6.6lx ", (unsigned long) segment->p_offset);
+ else
+ {
+ print_vma (segment->p_offset, FULL_HEX);
+ putchar (' ');
+ }
+
+ print_vma (segment->p_vaddr, FULL_HEX);
+ putchar (' ');
+ print_vma (segment->p_paddr, FULL_HEX);
+ putchar (' ');
+
+ if ((unsigned long) segment->p_filesz == segment->p_filesz)
+ printf ("0x%6.6lx ", (unsigned long) segment->p_filesz);
+ else
+ {
+ print_vma (segment->p_filesz, FULL_HEX);
+ putchar (' ');
+ }
+
+ if ((unsigned long) segment->p_memsz == segment->p_memsz)
+ printf ("0x%6.6lx", (unsigned long) segment->p_memsz);
+ else
+ {
+ print_vma (segment->p_memsz, FULL_HEX);
+ }
+
+ printf (" %c%c%c ",
+ (segment->p_flags & PF_R ? 'R' : ' '),
+ (segment->p_flags & PF_W ? 'W' : ' '),
+ (segment->p_flags & PF_X ? 'E' : ' '));
+
+ if ((unsigned long) segment->p_align == segment->p_align)
+ printf ("%#lx", (unsigned long) segment->p_align);
+ else
+ {
+ print_vma (segment->p_align, PREFIX_HEX);
+ }
+ }
+ else
+ {
+ print_vma (segment->p_offset, FULL_HEX);
+ putchar (' ');
+ print_vma (segment->p_vaddr, FULL_HEX);
+ putchar (' ');
+ print_vma (segment->p_paddr, FULL_HEX);
+ printf ("\n ");
+ print_vma (segment->p_filesz, FULL_HEX);
+ putchar (' ');
+ print_vma (segment->p_memsz, FULL_HEX);
+ printf (" %c%c%c ",
+ (segment->p_flags & PF_R ? 'R' : ' '),
+ (segment->p_flags & PF_W ? 'W' : ' '),
+ (segment->p_flags & PF_X ? 'E' : ' '));
+ print_vma (segment->p_align, HEX);
+ }
+ }
+
+ switch (segment->p_type)
+ {
+ case PT_DYNAMIC:
+ if (dynamic_addr)
+ error (_("more than one dynamic segment\n"));
+
+ /* By default, assume that the .dynamic section is the first
+ section in the DYNAMIC segment. */
+ dynamic_addr = segment->p_offset;
+ dynamic_size = segment->p_filesz;
+
+ /* Try to locate the .dynamic section. If there is
+ a section header table, we can easily locate it. */
+ if (section_headers != NULL)
+ {
+ Elf_Internal_Shdr * sec;
+
+ sec = find_section (".dynamic");
+ if (sec == NULL || sec->sh_size == 0)
+ {
+ /* A corresponding .dynamic section is expected, but on
+ IA-64/OpenVMS it is OK for it to be missing. */
+ if (!is_ia64_vms ())
+ error (_("no .dynamic section in the dynamic segment\n"));
+ break;
+ }
+
+ if (sec->sh_type == SHT_NOBITS)
+ {
+ dynamic_size = 0;
+ break;
+ }
+
+ dynamic_addr = sec->sh_offset;
+ dynamic_size = sec->sh_size;
+
+ if (dynamic_addr < segment->p_offset
+ || dynamic_addr > segment->p_offset + segment->p_filesz)
+ warn (_("the .dynamic section is not contained"
+ " within the dynamic segment\n"));
+ else if (dynamic_addr > segment->p_offset)
+ warn (_("the .dynamic section is not the first section"
+ " in the dynamic segment.\n"));
+ }
+ break;
+
+ case PT_INTERP:
+ if (fseek (file, archive_file_offset + (long) segment->p_offset,
+ SEEK_SET))
+ error (_("Unable to find program interpreter name\n"));
+ else
+ {
+ char fmt [32];
+ int ret = snprintf (fmt, sizeof (fmt), "%%%ds", PATH_MAX);
+
+ if (ret >= (int) sizeof (fmt) || ret < 0)
+ error (_("Internal error: failed to create format string to display program interpreter\n"));
+
+ program_interpreter[0] = 0;
+ if (fscanf (file, fmt, program_interpreter) <= 0)
+ error (_("Unable to read program interpreter name\n"));
+
+ if (do_segments)
+ printf (_("\n [Requesting program interpreter: %s]"),
+ program_interpreter);
+ }
+ break;
+ }
+
+ if (do_segments)
+ putc ('\n', stdout);
+ }
+
+ if (do_segments && section_headers != NULL && string_table != NULL)
+ {
+ printf (_("\n Section to Segment mapping:\n"));
+ printf (_(" Segment Sections...\n"));
+
+ for (i = 0; i < elf_header.e_phnum; i++)
+ {
+ unsigned int j;
+ Elf_Internal_Shdr * section;
+
+ segment = program_headers + i;
+ section = section_headers + 1;
+
+ printf (" %2.2d ", i);
+
+ for (j = 1; j < elf_header.e_shnum; j++, section++)
+ {
+ if (!ELF_TBSS_SPECIAL (section, segment)
+ && ELF_SECTION_IN_SEGMENT_STRICT (section, segment))
+ printf ("%s ", SECTION_NAME (section));
+ }
+
+ putc ('\n',stdout);
+ }
+ }
+
+ return 1;
+}
+
+
+/* Find the file offset corresponding to VMA by using the program headers. */
+
+static long
+offset_from_vma (FILE * file, bfd_vma vma, bfd_size_type size)
+{
+ Elf_Internal_Phdr * seg;
+
+ if (! get_program_headers (file))
+ {
+ warn (_("Cannot interpret virtual addresses without program headers.\n"));
+ return (long) vma;
+ }
+
+ for (seg = program_headers;
+ seg < program_headers + elf_header.e_phnum;
+ ++seg)
+ {
+ if (seg->p_type != PT_LOAD)
+ continue;
+
+ if (vma >= (seg->p_vaddr & -seg->p_align)
+ && vma + size <= seg->p_vaddr + seg->p_filesz)
+ return vma - seg->p_vaddr + seg->p_offset;
+ }
+
+ warn (_("Virtual address 0x%lx not located in any PT_LOAD segment.\n"),
+ (unsigned long) vma);
+ return (long) vma;
+}
+
+
+static int
+get_32bit_section_headers (FILE * file, unsigned int num)
+{
+ Elf32_External_Shdr * shdrs;
+ Elf_Internal_Shdr * internal;
+ unsigned int i;
+
+ shdrs = (Elf32_External_Shdr *) get_data (NULL, file, elf_header.e_shoff,
+ elf_header.e_shentsize, num,
+ _("section headers"));
+ if (!shdrs)
+ return 0;
+
+ section_headers = (Elf_Internal_Shdr *) cmalloc (num,
+ sizeof (Elf_Internal_Shdr));
+
+ if (section_headers == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ for (i = 0, internal = section_headers;
+ i < num;
+ i++, internal++)
+ {
+ internal->sh_name = BYTE_GET (shdrs[i].sh_name);
+ internal->sh_type = BYTE_GET (shdrs[i].sh_type);
+ internal->sh_flags = BYTE_GET (shdrs[i].sh_flags);
+ internal->sh_addr = BYTE_GET (shdrs[i].sh_addr);
+ internal->sh_offset = BYTE_GET (shdrs[i].sh_offset);
+ internal->sh_size = BYTE_GET (shdrs[i].sh_size);
+ internal->sh_link = BYTE_GET (shdrs[i].sh_link);
+ internal->sh_info = BYTE_GET (shdrs[i].sh_info);
+ internal->sh_addralign = BYTE_GET (shdrs[i].sh_addralign);
+ internal->sh_entsize = BYTE_GET (shdrs[i].sh_entsize);
+ }
+
+ free (shdrs);
+
+ return 1;
+}
+
+static int
+get_64bit_section_headers (FILE * file, unsigned int num)
+{
+ Elf64_External_Shdr * shdrs;
+ Elf_Internal_Shdr * internal;
+ unsigned int i;
+
+ shdrs = (Elf64_External_Shdr *) get_data (NULL, file, elf_header.e_shoff,
+ elf_header.e_shentsize, num,
+ _("section headers"));
+ if (!shdrs)
+ return 0;
+
+ section_headers = (Elf_Internal_Shdr *) cmalloc (num,
+ sizeof (Elf_Internal_Shdr));
+
+ if (section_headers == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ for (i = 0, internal = section_headers;
+ i < num;
+ i++, internal++)
+ {
+ internal->sh_name = BYTE_GET (shdrs[i].sh_name);
+ internal->sh_type = BYTE_GET (shdrs[i].sh_type);
+ internal->sh_flags = BYTE_GET (shdrs[i].sh_flags);
+ internal->sh_addr = BYTE_GET (shdrs[i].sh_addr);
+ internal->sh_size = BYTE_GET (shdrs[i].sh_size);
+ internal->sh_entsize = BYTE_GET (shdrs[i].sh_entsize);
+ internal->sh_link = BYTE_GET (shdrs[i].sh_link);
+ internal->sh_info = BYTE_GET (shdrs[i].sh_info);
+ internal->sh_offset = BYTE_GET (shdrs[i].sh_offset);
+ internal->sh_addralign = BYTE_GET (shdrs[i].sh_addralign);
+ }
+
+ free (shdrs);
+
+ return 1;
+}
+
+static Elf_Internal_Sym *
+get_32bit_elf_symbols (FILE * file,
+ Elf_Internal_Shdr * section,
+ unsigned long * num_syms_return)
+{
+ unsigned long number = 0;
+ Elf32_External_Sym * esyms = NULL;
+ Elf_External_Sym_Shndx * shndx = NULL;
+ Elf_Internal_Sym * isyms = NULL;
+ Elf_Internal_Sym * psym;
+ unsigned int j;
+
+ /* Run some sanity checks first. */
+ if (section->sh_entsize == 0)
+ {
+ error (_("sh_entsize is zero\n"));
+ goto exit_point;
+ }
+
+ number = section->sh_size / section->sh_entsize;
+
+ if (number * sizeof (Elf32_External_Sym) > section->sh_size + 1)
+ {
+ error (_("Invalid sh_entsize\n"));
+ goto exit_point;
+ }
+
+ esyms = (Elf32_External_Sym *) get_data (NULL, file, section->sh_offset, 1,
+ section->sh_size, _("symbols"));
+ if (esyms == NULL)
+ goto exit_point;
+
+ shndx = NULL;
+ if (symtab_shndx_hdr != NULL
+ && (symtab_shndx_hdr->sh_link
+ == (unsigned long) (section - section_headers)))
+ {
+ shndx = (Elf_External_Sym_Shndx *) get_data (NULL, file,
+ symtab_shndx_hdr->sh_offset,
+ 1, symtab_shndx_hdr->sh_size,
+ _("symbol table section indicies"));
+ if (shndx == NULL)
+ goto exit_point;
+ }
+
+ isyms = (Elf_Internal_Sym *) cmalloc (number, sizeof (Elf_Internal_Sym));
+
+ if (isyms == NULL)
+ {
+ error (_("Out of memory\n"));
+ goto exit_point;
+ }
+
+ for (j = 0, psym = isyms; j < number; j++, psym++)
+ {
+ psym->st_name = BYTE_GET (esyms[j].st_name);
+ psym->st_value = BYTE_GET (esyms[j].st_value);
+ psym->st_size = BYTE_GET (esyms[j].st_size);
+ psym->st_shndx = BYTE_GET (esyms[j].st_shndx);
+ if (psym->st_shndx == (SHN_XINDEX & 0xffff) && shndx != NULL)
+ psym->st_shndx
+ = byte_get ((unsigned char *) &shndx[j], sizeof (shndx[j]));
+ else if (psym->st_shndx >= (SHN_LORESERVE & 0xffff))
+ psym->st_shndx += SHN_LORESERVE - (SHN_LORESERVE & 0xffff);
+ psym->st_info = BYTE_GET (esyms[j].st_info);
+ psym->st_other = BYTE_GET (esyms[j].st_other);
+ }
+
+ exit_point:
+ if (shndx != NULL)
+ free (shndx);
+ if (esyms != NULL)
+ free (esyms);
+
+ if (num_syms_return != NULL)
+ * num_syms_return = isyms == NULL ? 0 : number;
+
+ return isyms;
+}
+
+static Elf_Internal_Sym *
+get_64bit_elf_symbols (FILE * file,
+ Elf_Internal_Shdr * section,
+ unsigned long * num_syms_return)
+{
+ unsigned long number = 0;
+ Elf64_External_Sym * esyms = NULL;
+ Elf_External_Sym_Shndx * shndx = NULL;
+ Elf_Internal_Sym * isyms = NULL;
+ Elf_Internal_Sym * psym;
+ unsigned int j;
+
+ /* Run some sanity checks first. */
+ if (section->sh_entsize == 0)
+ {
+ error (_("sh_entsize is zero\n"));
+ goto exit_point;
+ }
+
+ number = section->sh_size / section->sh_entsize;
+
+ if (number * sizeof (Elf64_External_Sym) > section->sh_size + 1)
+ {
+ error (_("Invalid sh_entsize\n"));
+ goto exit_point;
+ }
+
+ esyms = (Elf64_External_Sym *) get_data (NULL, file, section->sh_offset, 1,
+ section->sh_size, _("symbols"));
+ if (!esyms)
+ goto exit_point;
+
+ if (symtab_shndx_hdr != NULL
+ && (symtab_shndx_hdr->sh_link
+ == (unsigned long) (section - section_headers)))
+ {
+ shndx = (Elf_External_Sym_Shndx *) get_data (NULL, file,
+ symtab_shndx_hdr->sh_offset,
+ 1, symtab_shndx_hdr->sh_size,
+ _("symbol table section indicies"));
+ if (shndx == NULL)
+ goto exit_point;
+ }
+
+ isyms = (Elf_Internal_Sym *) cmalloc (number, sizeof (Elf_Internal_Sym));
+
+ if (isyms == NULL)
+ {
+ error (_("Out of memory\n"));
+ goto exit_point;
+ }
+
+ for (j = 0, psym = isyms; j < number; j++, psym++)
+ {
+ psym->st_name = BYTE_GET (esyms[j].st_name);
+ psym->st_info = BYTE_GET (esyms[j].st_info);
+ psym->st_other = BYTE_GET (esyms[j].st_other);
+ psym->st_shndx = BYTE_GET (esyms[j].st_shndx);
+
+ if (psym->st_shndx == (SHN_XINDEX & 0xffff) && shndx != NULL)
+ psym->st_shndx
+ = byte_get ((unsigned char *) &shndx[j], sizeof (shndx[j]));
+ else if (psym->st_shndx >= (SHN_LORESERVE & 0xffff))
+ psym->st_shndx += SHN_LORESERVE - (SHN_LORESERVE & 0xffff);
+
+ psym->st_value = BYTE_GET (esyms[j].st_value);
+ psym->st_size = BYTE_GET (esyms[j].st_size);
+ }
+
+ exit_point:
+ if (shndx != NULL)
+ free (shndx);
+ if (esyms != NULL)
+ free (esyms);
+
+ if (num_syms_return != NULL)
+ * num_syms_return = isyms == NULL ? 0 : number;
+
+ return isyms;
+}
+
+static const char *
+get_elf_section_flags (bfd_vma sh_flags)
+{
+ static char buff[1024];
+ char * p = buff;
+ int field_size = is_32bit_elf ? 8 : 16;
+ int sindex;
+ int size = sizeof (buff) - (field_size + 4 + 1);
+ bfd_vma os_flags = 0;
+ bfd_vma proc_flags = 0;
+ bfd_vma unknown_flags = 0;
+ static const struct
+ {
+ const char * str;
+ int len;
+ }
+ flags [] =
+ {
+ /* 0 */ { STRING_COMMA_LEN ("WRITE") },
+ /* 1 */ { STRING_COMMA_LEN ("ALLOC") },
+ /* 2 */ { STRING_COMMA_LEN ("EXEC") },
+ /* 3 */ { STRING_COMMA_LEN ("MERGE") },
+ /* 4 */ { STRING_COMMA_LEN ("STRINGS") },
+ /* 5 */ { STRING_COMMA_LEN ("INFO LINK") },
+ /* 6 */ { STRING_COMMA_LEN ("LINK ORDER") },
+ /* 7 */ { STRING_COMMA_LEN ("OS NONCONF") },
+ /* 8 */ { STRING_COMMA_LEN ("GROUP") },
+ /* 9 */ { STRING_COMMA_LEN ("TLS") },
+ /* IA-64 specific. */
+ /* 10 */ { STRING_COMMA_LEN ("SHORT") },
+ /* 11 */ { STRING_COMMA_LEN ("NORECOV") },
+ /* IA-64 OpenVMS specific. */
+ /* 12 */ { STRING_COMMA_LEN ("VMS_GLOBAL") },
+ /* 13 */ { STRING_COMMA_LEN ("VMS_OVERLAID") },
+ /* 14 */ { STRING_COMMA_LEN ("VMS_SHARED") },
+ /* 15 */ { STRING_COMMA_LEN ("VMS_VECTOR") },
+ /* 16 */ { STRING_COMMA_LEN ("VMS_ALLOC_64BIT") },
+ /* 17 */ { STRING_COMMA_LEN ("VMS_PROTECTED") },
+ /* Generic. */
+ /* 18 */ { STRING_COMMA_LEN ("EXCLUDE") },
+ /* SPARC specific. */
+ /* 19 */ { STRING_COMMA_LEN ("ORDERED") }
+ };
+
+ if (do_section_details)
+ {
+ sprintf (buff, "[%*.*lx]: ",
+ field_size, field_size, (unsigned long) sh_flags);
+ p += field_size + 4;
+ }
+
+ while (sh_flags)
+ {
+ bfd_vma flag;
+
+ flag = sh_flags & - sh_flags;
+ sh_flags &= ~ flag;
+
+ if (do_section_details)
+ {
+ switch (flag)
+ {
+ case SHF_WRITE: sindex = 0; break;
+ case SHF_ALLOC: sindex = 1; break;
+ case SHF_EXECINSTR: sindex = 2; break;
+ case SHF_MERGE: sindex = 3; break;
+ case SHF_STRINGS: sindex = 4; break;
+ case SHF_INFO_LINK: sindex = 5; break;
+ case SHF_LINK_ORDER: sindex = 6; break;
+ case SHF_OS_NONCONFORMING: sindex = 7; break;
+ case SHF_GROUP: sindex = 8; break;
+ case SHF_TLS: sindex = 9; break;
+ case SHF_EXCLUDE: sindex = 18; break;
+
+ default:
+ sindex = -1;
+ switch (elf_header.e_machine)
+ {
+ case EM_IA_64:
+ if (flag == SHF_IA_64_SHORT)
+ sindex = 10;
+ else if (flag == SHF_IA_64_NORECOV)
+ sindex = 11;
+#ifdef BFD64
+ else if (elf_header.e_ident[EI_OSABI] == ELFOSABI_OPENVMS)
+ switch (flag)
+ {
+ case SHF_IA_64_VMS_GLOBAL: sindex = 12; break;
+ case SHF_IA_64_VMS_OVERLAID: sindex = 13; break;
+ case SHF_IA_64_VMS_SHARED: sindex = 14; break;
+ case SHF_IA_64_VMS_VECTOR: sindex = 15; break;
+ case SHF_IA_64_VMS_ALLOC_64BIT: sindex = 16; break;
+ case SHF_IA_64_VMS_PROTECTED: sindex = 17; break;
+ default: break;
+ }
+#endif
+ break;
+
+ case EM_386:
+ case EM_486:
+ case EM_X86_64:
+ case EM_L1OM:
+ case EM_K1OM:
+ case EM_OLD_SPARCV9:
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ case EM_SPARC:
+ if (flag == SHF_ORDERED)
+ sindex = 19;
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (sindex != -1)
+ {
+ if (p != buff + field_size + 4)
+ {
+ if (size < (10 + 2))
+ abort ();
+ size -= 2;
+ *p++ = ',';
+ *p++ = ' ';
+ }
+
+ size -= flags [sindex].len;
+ p = stpcpy (p, flags [sindex].str);
+ }
+ else if (flag & SHF_MASKOS)
+ os_flags |= flag;
+ else if (flag & SHF_MASKPROC)
+ proc_flags |= flag;
+ else
+ unknown_flags |= flag;
+ }
+ else
+ {
+ switch (flag)
+ {
+ case SHF_WRITE: *p = 'W'; break;
+ case SHF_ALLOC: *p = 'A'; break;
+ case SHF_EXECINSTR: *p = 'X'; break;
+ case SHF_MERGE: *p = 'M'; break;
+ case SHF_STRINGS: *p = 'S'; break;
+ case SHF_INFO_LINK: *p = 'I'; break;
+ case SHF_LINK_ORDER: *p = 'L'; break;
+ case SHF_OS_NONCONFORMING: *p = 'O'; break;
+ case SHF_GROUP: *p = 'G'; break;
+ case SHF_TLS: *p = 'T'; break;
+ case SHF_EXCLUDE: *p = 'E'; break;
+
+ default:
+ if ((elf_header.e_machine == EM_X86_64
+ || elf_header.e_machine == EM_L1OM
+ || elf_header.e_machine == EM_K1OM)
+ && flag == SHF_X86_64_LARGE)
+ *p = 'l';
+ else if (flag & SHF_MASKOS)
+ {
+ *p = 'o';
+ sh_flags &= ~ SHF_MASKOS;
+ }
+ else if (flag & SHF_MASKPROC)
+ {
+ *p = 'p';
+ sh_flags &= ~ SHF_MASKPROC;
+ }
+ else
+ *p = 'x';
+ break;
+ }
+ p++;
+ }
+ }
+
+ if (do_section_details)
+ {
+ if (os_flags)
+ {
+ size -= 5 + field_size;
+ if (p != buff + field_size + 4)
+ {
+ if (size < (2 + 1))
+ abort ();
+ size -= 2;
+ *p++ = ',';
+ *p++ = ' ';
+ }
+ sprintf (p, "OS (%*.*lx)", field_size, field_size,
+ (unsigned long) os_flags);
+ p += 5 + field_size;
+ }
+ if (proc_flags)
+ {
+ size -= 7 + field_size;
+ if (p != buff + field_size + 4)
+ {
+ if (size < (2 + 1))
+ abort ();
+ size -= 2;
+ *p++ = ',';
+ *p++ = ' ';
+ }
+ sprintf (p, "PROC (%*.*lx)", field_size, field_size,
+ (unsigned long) proc_flags);
+ p += 7 + field_size;
+ }
+ if (unknown_flags)
+ {
+ size -= 10 + field_size;
+ if (p != buff + field_size + 4)
+ {
+ if (size < (2 + 1))
+ abort ();
+ size -= 2;
+ *p++ = ',';
+ *p++ = ' ';
+ }
+ sprintf (p, _("UNKNOWN (%*.*lx)"), field_size, field_size,
+ (unsigned long) unknown_flags);
+ p += 10 + field_size;
+ }
+ }
+
+ *p = '\0';
+ return buff;
+}
+
+static int
+process_section_headers (FILE * file)
+{
+ Elf_Internal_Shdr * section;
+ unsigned int i;
+
+ section_headers = NULL;
+
+ if (elf_header.e_shnum == 0)
+ {
+ /* PR binutils/12467. */
+ if (elf_header.e_shoff != 0)
+ warn (_("possibly corrupt ELF file header - it has a non-zero"
+ " section header offset, but no section headers\n"));
+ else if (do_sections)
+ printf (_("\nThere are no sections in this file.\n"));
+
+ return 1;
+ }
+
+ if (do_sections && !do_header)
+ printf (_("There are %d section headers, starting at offset 0x%lx:\n"),
+ elf_header.e_shnum, (unsigned long) elf_header.e_shoff);
+
+ if (is_32bit_elf)
+ {
+ if (! get_32bit_section_headers (file, elf_header.e_shnum))
+ return 0;
+ }
+ else if (! get_64bit_section_headers (file, elf_header.e_shnum))
+ return 0;
+
+ /* Read in the string table, so that we have names to display. */
+ if (elf_header.e_shstrndx != SHN_UNDEF
+ && elf_header.e_shstrndx < elf_header.e_shnum)
+ {
+ section = section_headers + elf_header.e_shstrndx;
+
+ if (section->sh_size != 0)
+ {
+ string_table = (char *) get_data (NULL, file, section->sh_offset,
+ 1, section->sh_size,
+ _("string table"));
+
+ string_table_length = string_table != NULL ? section->sh_size : 0;
+ }
+ }
+
+ /* Scan the sections for the dynamic symbol table
+ and dynamic string table and debug sections. */
+ dynamic_symbols = NULL;
+ dynamic_strings = NULL;
+ dynamic_syminfo = NULL;
+ symtab_shndx_hdr = NULL;
+
+ eh_addr_size = is_32bit_elf ? 4 : 8;
+ switch (elf_header.e_machine)
+ {
+ case EM_MIPS:
+ case EM_MIPS_RS3_LE:
+ /* The 64-bit MIPS EABI uses a combination of 32-bit ELF and 64-bit
+ FDE addresses. However, the ABI also has a semi-official ILP32
+ variant for which the normal FDE address size rules apply.
+
+ GCC 4.0 marks EABI64 objects with a dummy .gcc_compiled_longXX
+ section, where XX is the size of longs in bits. Unfortunately,
+ earlier compilers provided no way of distinguishing ILP32 objects
+ from LP64 objects, so if there's any doubt, we should assume that
+ the official LP64 form is being used. */
+ if ((elf_header.e_flags & EF_MIPS_ABI) == E_MIPS_ABI_EABI64
+ && find_section (".gcc_compiled_long32") == NULL)
+ eh_addr_size = 8;
+ break;
+
+ case EM_H8_300:
+ case EM_H8_300H:
+ switch (elf_header.e_flags & EF_H8_MACH)
+ {
+ case E_H8_MACH_H8300:
+ case E_H8_MACH_H8300HN:
+ case E_H8_MACH_H8300SN:
+ case E_H8_MACH_H8300SXN:
+ eh_addr_size = 2;
+ break;
+ case E_H8_MACH_H8300H:
+ case E_H8_MACH_H8300S:
+ case E_H8_MACH_H8300SX:
+ eh_addr_size = 4;
+ break;
+ }
+ break;
+
+ case EM_M32C_OLD:
+ case EM_M32C:
+ switch (elf_header.e_flags & EF_M32C_CPU_MASK)
+ {
+ case EF_M32C_CPU_M16C:
+ eh_addr_size = 2;
+ break;
+ }
+ break;
+ }
+
+#define CHECK_ENTSIZE_VALUES(section, i, size32, size64) \
+ do \
+ { \
+ bfd_size_type expected_entsize = is_32bit_elf ? size32 : size64; \
+ if (section->sh_entsize != expected_entsize) \
+ { \
+ error (_("Section %d has invalid sh_entsize of %" BFD_VMA_FMT "x\n"), \
+ i, section->sh_entsize); \
+ error (_("(Using the expected size of %d for the rest of this dump)\n"), \
+ (int) expected_entsize); \
+ section->sh_entsize = expected_entsize; \
+ } \
+ } \
+ while (0)
+
+#define CHECK_ENTSIZE(section, i, type) \
+ CHECK_ENTSIZE_VALUES (section, i, sizeof (Elf32_External_##type), \
+ sizeof (Elf64_External_##type))
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum;
+ i++, section++)
+ {
+ char * name = SECTION_NAME (section);
+
+ if (section->sh_type == SHT_DYNSYM)
+ {
+ if (dynamic_symbols != NULL)
+ {
+ error (_("File contains multiple dynamic symbol tables\n"));
+ continue;
+ }
+
+ CHECK_ENTSIZE (section, i, Sym);
+ dynamic_symbols = GET_ELF_SYMBOLS (file, section, & num_dynamic_syms);
+ }
+ else if (section->sh_type == SHT_STRTAB
+ && streq (name, ".dynstr"))
+ {
+ if (dynamic_strings != NULL)
+ {
+ error (_("File contains multiple dynamic string tables\n"));
+ continue;
+ }
+
+ dynamic_strings = (char *) get_data (NULL, file, section->sh_offset,
+ 1, section->sh_size,
+ _("dynamic strings"));
+ dynamic_strings_length = dynamic_strings == NULL ? 0 : section->sh_size;
+ }
+ else if (section->sh_type == SHT_SYMTAB_SHNDX)
+ {
+ if (symtab_shndx_hdr != NULL)
+ {
+ error (_("File contains multiple symtab shndx tables\n"));
+ continue;
+ }
+ symtab_shndx_hdr = section;
+ }
+ else if (section->sh_type == SHT_SYMTAB)
+ CHECK_ENTSIZE (section, i, Sym);
+ else if (section->sh_type == SHT_GROUP)
+ CHECK_ENTSIZE_VALUES (section, i, GRP_ENTRY_SIZE, GRP_ENTRY_SIZE);
+ else if (section->sh_type == SHT_REL)
+ CHECK_ENTSIZE (section, i, Rel);
+ else if (section->sh_type == SHT_RELA)
+ CHECK_ENTSIZE (section, i, Rela);
+ else if ((do_debugging || do_debug_info || do_debug_abbrevs
+ || do_debug_lines || do_debug_pubnames || do_debug_pubtypes
+ || do_debug_aranges || do_debug_frames || do_debug_macinfo
+ || do_debug_str || do_debug_loc || do_debug_ranges
+ || do_debug_addr || do_debug_cu_index)
+ && (const_strneq (name, ".debug_")
+ || const_strneq (name, ".zdebug_")))
+ {
+ if (name[1] == 'z')
+ name += sizeof (".zdebug_") - 1;
+ else
+ name += sizeof (".debug_") - 1;
+
+ if (do_debugging
+ || (do_debug_info && const_strneq (name, "info"))
+ || (do_debug_info && const_strneq (name, "types"))
+ || (do_debug_abbrevs && const_strneq (name, "abbrev"))
+ || (do_debug_lines && strcmp (name, "line") == 0)
+ || (do_debug_lines && const_strneq (name, "line."))
+ || (do_debug_pubnames && const_strneq (name, "pubnames"))
+ || (do_debug_pubtypes && const_strneq (name, "pubtypes"))
+ || (do_debug_aranges && const_strneq (name, "aranges"))
+ || (do_debug_ranges && const_strneq (name, "ranges"))
+ || (do_debug_frames && const_strneq (name, "frame"))
+ || (do_debug_macinfo && const_strneq (name, "macinfo"))
+ || (do_debug_macinfo && const_strneq (name, "macro"))
+ || (do_debug_str && const_strneq (name, "str"))
+ || (do_debug_loc && const_strneq (name, "loc"))
+ || (do_debug_addr && const_strneq (name, "addr"))
+ || (do_debug_cu_index && const_strneq (name, "cu_index"))
+ || (do_debug_cu_index && const_strneq (name, "tu_index"))
+ )
+ request_dump_bynumber (i, DEBUG_DUMP);
+ }
+ /* Linkonce section to be combined with .debug_info at link time. */
+ else if ((do_debugging || do_debug_info)
+ && const_strneq (name, ".gnu.linkonce.wi."))
+ request_dump_bynumber (i, DEBUG_DUMP);
+ else if (do_debug_frames && streq (name, ".eh_frame"))
+ request_dump_bynumber (i, DEBUG_DUMP);
+ else if (do_gdb_index && streq (name, ".gdb_index"))
+ request_dump_bynumber (i, DEBUG_DUMP);
+ /* Trace sections for Itanium VMS. */
+ else if ((do_debugging || do_trace_info || do_trace_abbrevs
+ || do_trace_aranges)
+ && const_strneq (name, ".trace_"))
+ {
+ name += sizeof (".trace_") - 1;
+
+ if (do_debugging
+ || (do_trace_info && streq (name, "info"))
+ || (do_trace_abbrevs && streq (name, "abbrev"))
+ || (do_trace_aranges && streq (name, "aranges"))
+ )
+ request_dump_bynumber (i, DEBUG_DUMP);
+ }
+
+ }
+
+ if (! do_sections)
+ return 1;
+
+ if (elf_header.e_shnum > 1)
+ printf (_("\nSection Headers:\n"));
+ else
+ printf (_("\nSection Header:\n"));
+
+ if (is_32bit_elf)
+ {
+ if (do_section_details)
+ {
+ printf (_(" [Nr] Name\n"));
+ printf (_(" Type Addr Off Size ES Lk Inf Al\n"));
+ }
+ else
+ printf
+ (_(" [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"));
+ }
+ else if (do_wide)
+ {
+ if (do_section_details)
+ {
+ printf (_(" [Nr] Name\n"));
+ printf (_(" Type Address Off Size ES Lk Inf Al\n"));
+ }
+ else
+ printf
+ (_(" [Nr] Name Type Address Off Size ES Flg Lk Inf Al\n"));
+ }
+ else
+ {
+ if (do_section_details)
+ {
+ printf (_(" [Nr] Name\n"));
+ printf (_(" Type Address Offset Link\n"));
+ printf (_(" Size EntSize Info Align\n"));
+ }
+ else
+ {
+ printf (_(" [Nr] Name Type Address Offset\n"));
+ printf (_(" Size EntSize Flags Link Info Align\n"));
+ }
+ }
+
+ if (do_section_details)
+ printf (_(" Flags\n"));
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum;
+ i++, section++)
+ {
+ printf (" [%2u] ", i);
+ if (do_section_details)
+ {
+ print_symbol (INT_MAX, SECTION_NAME (section));
+ printf ("\n ");
+ }
+ else
+ {
+ print_symbol (-17, SECTION_NAME (section));
+ }
+
+ printf (do_wide ? " %-15s " : " %-15.15s ",
+ get_section_type_name (section->sh_type));
+
+ if (is_32bit_elf)
+ {
+ const char * link_too_big = NULL;
+
+ print_vma (section->sh_addr, LONG_HEX);
+
+ printf ( " %6.6lx %6.6lx %2.2lx",
+ (unsigned long) section->sh_offset,
+ (unsigned long) section->sh_size,
+ (unsigned long) section->sh_entsize);
+
+ if (do_section_details)
+ fputs (" ", stdout);
+ else
+ printf (" %3s ", get_elf_section_flags (section->sh_flags));
+
+ if (section->sh_link >= elf_header.e_shnum)
+ {
+ link_too_big = "";
+ /* The sh_link value is out of range. Normally this indicates
+ an error but it can have special values in Solaris binaries. */
+ switch (elf_header.e_machine)
+ {
+ case EM_386:
+ case EM_486:
+ case EM_X86_64:
+ case EM_L1OM:
+ case EM_K1OM:
+ case EM_OLD_SPARCV9:
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ case EM_SPARC:
+ if (section->sh_link == (SHN_BEFORE & 0xffff))
+ link_too_big = "BEFORE";
+ else if (section->sh_link == (SHN_AFTER & 0xffff))
+ link_too_big = "AFTER";
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (do_section_details)
+ {
+ if (link_too_big != NULL && * link_too_big)
+ printf ("<%s> ", link_too_big);
+ else
+ printf ("%2u ", section->sh_link);
+ printf ("%3u %2lu\n", section->sh_info,
+ (unsigned long) section->sh_addralign);
+ }
+ else
+ printf ("%2u %3u %2lu\n",
+ section->sh_link,
+ section->sh_info,
+ (unsigned long) section->sh_addralign);
+
+ if (link_too_big && ! * link_too_big)
+ warn (_("section %u: sh_link value of %u is larger than the number of sections\n"),
+ i, section->sh_link);
+ }
+ else if (do_wide)
+ {
+ print_vma (section->sh_addr, LONG_HEX);
+
+ if ((long) section->sh_offset == section->sh_offset)
+ printf (" %6.6lx", (unsigned long) section->sh_offset);
+ else
+ {
+ putchar (' ');
+ print_vma (section->sh_offset, LONG_HEX);
+ }
+
+ if ((unsigned long) section->sh_size == section->sh_size)
+ printf (" %6.6lx", (unsigned long) section->sh_size);
+ else
+ {
+ putchar (' ');
+ print_vma (section->sh_size, LONG_HEX);
+ }
+
+ if ((unsigned long) section->sh_entsize == section->sh_entsize)
+ printf (" %2.2lx", (unsigned long) section->sh_entsize);
+ else
+ {
+ putchar (' ');
+ print_vma (section->sh_entsize, LONG_HEX);
+ }
+
+ if (do_section_details)
+ fputs (" ", stdout);
+ else
+ printf (" %3s ", get_elf_section_flags (section->sh_flags));
+
+ printf ("%2u %3u ", section->sh_link, section->sh_info);
+
+ if ((unsigned long) section->sh_addralign == section->sh_addralign)
+ printf ("%2lu\n", (unsigned long) section->sh_addralign);
+ else
+ {
+ print_vma (section->sh_addralign, DEC);
+ putchar ('\n');
+ }
+ }
+ else if (do_section_details)
+ {
+ printf (" %-15.15s ",
+ get_section_type_name (section->sh_type));
+ print_vma (section->sh_addr, LONG_HEX);
+ if ((long) section->sh_offset == section->sh_offset)
+ printf (" %16.16lx", (unsigned long) section->sh_offset);
+ else
+ {
+ printf (" ");
+ print_vma (section->sh_offset, LONG_HEX);
+ }
+ printf (" %u\n ", section->sh_link);
+ print_vma (section->sh_size, LONG_HEX);
+ putchar (' ');
+ print_vma (section->sh_entsize, LONG_HEX);
+
+ printf (" %-16u %lu\n",
+ section->sh_info,
+ (unsigned long) section->sh_addralign);
+ }
+ else
+ {
+ putchar (' ');
+ print_vma (section->sh_addr, LONG_HEX);
+ if ((long) section->sh_offset == section->sh_offset)
+ printf (" %8.8lx", (unsigned long) section->sh_offset);
+ else
+ {
+ printf (" ");
+ print_vma (section->sh_offset, LONG_HEX);
+ }
+ printf ("\n ");
+ print_vma (section->sh_size, LONG_HEX);
+ printf (" ");
+ print_vma (section->sh_entsize, LONG_HEX);
+
+ printf (" %3s ", get_elf_section_flags (section->sh_flags));
+
+ printf (" %2u %3u %lu\n",
+ section->sh_link,
+ section->sh_info,
+ (unsigned long) section->sh_addralign);
+ }
+
+ if (do_section_details)
+ printf (" %s\n", get_elf_section_flags (section->sh_flags));
+ }
+
+ if (!do_section_details)
+ {
+ if (elf_header.e_machine == EM_X86_64
+ || elf_header.e_machine == EM_L1OM
+ || elf_header.e_machine == EM_K1OM)
+ printf (_("Key to Flags:\n\
+ W (write), A (alloc), X (execute), M (merge), S (strings), l (large)\n\
+ I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n\
+ O (extra OS processing required) o (OS specific), p (processor specific)\n"));
+ else
+ printf (_("Key to Flags:\n\
+ W (write), A (alloc), X (execute), M (merge), S (strings)\n\
+ I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)\n\
+ O (extra OS processing required) o (OS specific), p (processor specific)\n"));
+ }
+
+ return 1;
+}
+
+static const char *
+get_group_flags (unsigned int flags)
+{
+ static char buff[32];
+ switch (flags)
+ {
+ case 0:
+ return "";
+
+ case GRP_COMDAT:
+ return "COMDAT ";
+
+ default:
+ snprintf (buff, sizeof (buff), _("[<unknown>: 0x%x] "), flags);
+ break;
+ }
+ return buff;
+}
+
+static int
+process_section_groups (FILE * file)
+{
+ Elf_Internal_Shdr * section;
+ unsigned int i;
+ struct group * group;
+ Elf_Internal_Shdr * symtab_sec;
+ Elf_Internal_Shdr * strtab_sec;
+ Elf_Internal_Sym * symtab;
+ unsigned long num_syms;
+ char * strtab;
+ size_t strtab_size;
+
+ /* Don't process section groups unless needed. */
+ if (!do_unwind && !do_section_groups)
+ return 1;
+
+ if (elf_header.e_shnum == 0)
+ {
+ if (do_section_groups)
+ printf (_("\nThere are no sections to group in this file.\n"));
+
+ return 1;
+ }
+
+ if (section_headers == NULL)
+ {
+ error (_("Section headers are not available!\n"));
+ /* PR 13622: This can happen with a corrupt ELF header. */
+ return 0;
+ }
+
+ section_headers_groups = (struct group **) calloc (elf_header.e_shnum,
+ sizeof (struct group *));
+
+ if (section_headers_groups == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ /* Scan the sections for the group section. */
+ group_count = 0;
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum;
+ i++, section++)
+ if (section->sh_type == SHT_GROUP)
+ group_count++;
+
+ if (group_count == 0)
+ {
+ if (do_section_groups)
+ printf (_("\nThere are no section groups in this file.\n"));
+
+ return 1;
+ }
+
+ section_groups = (struct group *) calloc (group_count, sizeof (struct group));
+
+ if (section_groups == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ symtab_sec = NULL;
+ strtab_sec = NULL;
+ symtab = NULL;
+ num_syms = 0;
+ strtab = NULL;
+ strtab_size = 0;
+ for (i = 0, section = section_headers, group = section_groups;
+ i < elf_header.e_shnum;
+ i++, section++)
+ {
+ if (section->sh_type == SHT_GROUP)
+ {
+ char * name = SECTION_NAME (section);
+ char * group_name;
+ unsigned char * start;
+ unsigned char * indices;
+ unsigned int entry, j, size;
+ Elf_Internal_Shdr * sec;
+ Elf_Internal_Sym * sym;
+
+ /* Get the symbol table. */
+ if (section->sh_link >= elf_header.e_shnum
+ || ((sec = section_headers + section->sh_link)->sh_type
+ != SHT_SYMTAB))
+ {
+ error (_("Bad sh_link in group section `%s'\n"), name);
+ continue;
+ }
+
+ if (symtab_sec != sec)
+ {
+ symtab_sec = sec;
+ if (symtab)
+ free (symtab);
+ symtab = GET_ELF_SYMBOLS (file, symtab_sec, & num_syms);
+ }
+
+ if (symtab == NULL)
+ {
+ error (_("Corrupt header in group section `%s'\n"), name);
+ continue;
+ }
+
+ if (section->sh_info >= num_syms)
+ {
+ error (_("Bad sh_info in group section `%s'\n"), name);
+ continue;
+ }
+
+ sym = symtab + section->sh_info;
+
+ if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+ {
+ if (sym->st_shndx == 0
+ || sym->st_shndx >= elf_header.e_shnum)
+ {
+ error (_("Bad sh_info in group section `%s'\n"), name);
+ continue;
+ }
+
+ group_name = SECTION_NAME (section_headers + sym->st_shndx);
+ strtab_sec = NULL;
+ if (strtab)
+ free (strtab);
+ strtab = NULL;
+ strtab_size = 0;
+ }
+ else
+ {
+ /* Get the string table. */
+ if (symtab_sec->sh_link >= elf_header.e_shnum)
+ {
+ strtab_sec = NULL;
+ if (strtab)
+ free (strtab);
+ strtab = NULL;
+ strtab_size = 0;
+ }
+ else if (strtab_sec
+ != (sec = section_headers + symtab_sec->sh_link))
+ {
+ strtab_sec = sec;
+ if (strtab)
+ free (strtab);
+ strtab = (char *) get_data (NULL, file, strtab_sec->sh_offset,
+ 1, strtab_sec->sh_size,
+ _("string table"));
+ strtab_size = strtab != NULL ? strtab_sec->sh_size : 0;
+ }
+ group_name = sym->st_name < strtab_size
+ ? strtab + sym->st_name : _("<corrupt>");
+ }
+
+ start = (unsigned char *) get_data (NULL, file, section->sh_offset,
+ 1, section->sh_size,
+ _("section data"));
+ if (start == NULL)
+ continue;
+
+ indices = start;
+ size = (section->sh_size / section->sh_entsize) - 1;
+ entry = byte_get (indices, 4);
+ indices += 4;
+
+ if (do_section_groups)
+ {
+ printf (_("\n%sgroup section [%5u] `%s' [%s] contains %u sections:\n"),
+ get_group_flags (entry), i, name, group_name, size);
+
+ printf (_(" [Index] Name\n"));
+ }
+
+ group->group_index = i;
+
+ for (j = 0; j < size; j++)
+ {
+ struct group_list * g;
+
+ entry = byte_get (indices, 4);
+ indices += 4;
+
+ if (entry >= elf_header.e_shnum)
+ {
+ error (_("section [%5u] in group section [%5u] > maximum section [%5u]\n"),
+ entry, i, elf_header.e_shnum - 1);
+ continue;
+ }
+
+ if (section_headers_groups [entry] != NULL)
+ {
+ if (entry)
+ {
+ error (_("section [%5u] in group section [%5u] already in group section [%5u]\n"),
+ entry, i,
+ section_headers_groups [entry]->group_index);
+ continue;
+ }
+ else
+ {
+ /* Intel C/C++ compiler may put section 0 in a
+ section group. We just warn it the first time
+ and ignore it afterwards. */
+ static int warned = 0;
+ if (!warned)
+ {
+ error (_("section 0 in group section [%5u]\n"),
+ section_headers_groups [entry]->group_index);
+ warned++;
+ }
+ }
+ }
+
+ section_headers_groups [entry] = group;
+
+ if (do_section_groups)
+ {
+ sec = section_headers + entry;
+ printf (" [%5u] %s\n", entry, SECTION_NAME (sec));
+ }
+
+ g = (struct group_list *) xmalloc (sizeof (struct group_list));
+ g->section_index = entry;
+ g->next = group->root;
+ group->root = g;
+ }
+
+ if (start)
+ free (start);
+
+ group++;
+ }
+ }
+
+ if (symtab)
+ free (symtab);
+ if (strtab)
+ free (strtab);
+ return 1;
+}
+
+/* Data used to display dynamic fixups. */
+
+struct ia64_vms_dynfixup
+{
+ bfd_vma needed_ident; /* Library ident number. */
+ bfd_vma needed; /* Index in the dstrtab of the library name. */
+ bfd_vma fixup_needed; /* Index of the library. */
+ bfd_vma fixup_rela_cnt; /* Number of fixups. */
+ bfd_vma fixup_rela_off; /* Fixups offset in the dynamic segment. */
+};
+
+/* Data used to display dynamic relocations. */
+
+struct ia64_vms_dynimgrela
+{
+ bfd_vma img_rela_cnt; /* Number of relocations. */
+ bfd_vma img_rela_off; /* Reloc offset in the dynamic segment. */
+};
+
+/* Display IA-64 OpenVMS dynamic fixups (used to dynamically link a shared
+ library). */
+
+static void
+dump_ia64_vms_dynamic_fixups (FILE *file, struct ia64_vms_dynfixup *fixup,
+ const char *strtab, unsigned int strtab_sz)
+{
+ Elf64_External_VMS_IMAGE_FIXUP *imfs;
+ long i;
+ const char *lib_name;
+
+ imfs = get_data (NULL, file, dynamic_addr + fixup->fixup_rela_off,
+ 1, fixup->fixup_rela_cnt * sizeof (*imfs),
+ _("dynamic section image fixups"));
+ if (!imfs)
+ return;
+
+ if (fixup->needed < strtab_sz)
+ lib_name = strtab + fixup->needed;
+ else
+ {
+ warn ("corrupt library name index of 0x%lx found in dynamic entry",
+ (unsigned long) fixup->needed);
+ lib_name = "???";
+ }
+ printf (_("\nImage fixups for needed library #%d: %s - ident: %lx\n"),
+ (int) fixup->fixup_needed, lib_name, (long) fixup->needed_ident);
+ printf
+ (_("Seg Offset Type SymVec DataType\n"));
+
+ for (i = 0; i < (long) fixup->fixup_rela_cnt; i++)
+ {
+ unsigned int type;
+ const char *rtype;
+
+ printf ("%3u ", (unsigned) BYTE_GET (imfs [i].fixup_seg));
+ printf_vma ((bfd_vma) BYTE_GET (imfs [i].fixup_offset));
+ type = BYTE_GET (imfs [i].type);
+ rtype = elf_ia64_reloc_type (type);
+ if (rtype == NULL)
+ printf (" 0x%08x ", type);
+ else
+ printf (" %-32s ", rtype);
+ printf ("%6u ", (unsigned) BYTE_GET (imfs [i].symvec_index));
+ printf ("0x%08x\n", (unsigned) BYTE_GET (imfs [i].data_type));
+ }
+
+ free (imfs);
+}
+
+/* Display IA-64 OpenVMS dynamic relocations (used to relocate an image). */
+
+static void
+dump_ia64_vms_dynamic_relocs (FILE *file, struct ia64_vms_dynimgrela *imgrela)
+{
+ Elf64_External_VMS_IMAGE_RELA *imrs;
+ long i;
+
+ imrs = get_data (NULL, file, dynamic_addr + imgrela->img_rela_off,
+ 1, imgrela->img_rela_cnt * sizeof (*imrs),
+ _("dynamic section image relocations"));
+ if (!imrs)
+ return;
+
+ printf (_("\nImage relocs\n"));
+ printf
+ (_("Seg Offset Type Addend Seg Sym Off\n"));
+
+ for (i = 0; i < (long) imgrela->img_rela_cnt; i++)
+ {
+ unsigned int type;
+ const char *rtype;
+
+ printf ("%3u ", (unsigned) BYTE_GET (imrs [i].rela_seg));
+ printf ("%08" BFD_VMA_FMT "x ",
+ (bfd_vma) BYTE_GET (imrs [i].rela_offset));
+ type = BYTE_GET (imrs [i].type);
+ rtype = elf_ia64_reloc_type (type);
+ if (rtype == NULL)
+ printf ("0x%08x ", type);
+ else
+ printf ("%-31s ", rtype);
+ print_vma (BYTE_GET (imrs [i].addend), FULL_HEX);
+ printf ("%3u ", (unsigned) BYTE_GET (imrs [i].sym_seg));
+ printf ("%08" BFD_VMA_FMT "x\n",
+ (bfd_vma) BYTE_GET (imrs [i].sym_offset));
+ }
+
+ free (imrs);
+}
+
+/* Display IA-64 OpenVMS dynamic relocations and fixups. */
+
+static int
+process_ia64_vms_dynamic_relocs (FILE *file)
+{
+ struct ia64_vms_dynfixup fixup;
+ struct ia64_vms_dynimgrela imgrela;
+ Elf_Internal_Dyn *entry;
+ int res = 0;
+ bfd_vma strtab_off = 0;
+ bfd_vma strtab_sz = 0;
+ char *strtab = NULL;
+
+ memset (&fixup, 0, sizeof (fixup));
+ memset (&imgrela, 0, sizeof (imgrela));
+
+ /* Note: the order of the entries is specified by the OpenVMS specs. */
+ for (entry = dynamic_section;
+ entry < dynamic_section + dynamic_nent;
+ entry++)
+ {
+ switch (entry->d_tag)
+ {
+ case DT_IA_64_VMS_STRTAB_OFFSET:
+ strtab_off = entry->d_un.d_val;
+ break;
+ case DT_STRSZ:
+ strtab_sz = entry->d_un.d_val;
+ if (strtab == NULL)
+ strtab = get_data (NULL, file, dynamic_addr + strtab_off,
+ 1, strtab_sz, _("dynamic string section"));
+ break;
+
+ case DT_IA_64_VMS_NEEDED_IDENT:
+ fixup.needed_ident = entry->d_un.d_val;
+ break;
+ case DT_NEEDED:
+ fixup.needed = entry->d_un.d_val;
+ break;
+ case DT_IA_64_VMS_FIXUP_NEEDED:
+ fixup.fixup_needed = entry->d_un.d_val;
+ break;
+ case DT_IA_64_VMS_FIXUP_RELA_CNT:
+ fixup.fixup_rela_cnt = entry->d_un.d_val;
+ break;
+ case DT_IA_64_VMS_FIXUP_RELA_OFF:
+ fixup.fixup_rela_off = entry->d_un.d_val;
+ res++;
+ dump_ia64_vms_dynamic_fixups (file, &fixup, strtab, strtab_sz);
+ break;
+
+ case DT_IA_64_VMS_IMG_RELA_CNT:
+ imgrela.img_rela_cnt = entry->d_un.d_val;
+ break;
+ case DT_IA_64_VMS_IMG_RELA_OFF:
+ imgrela.img_rela_off = entry->d_un.d_val;
+ res++;
+ dump_ia64_vms_dynamic_relocs (file, &imgrela);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ if (strtab != NULL)
+ free (strtab);
+
+ return res;
+}
+
+static struct
+{
+ const char * name;
+ int reloc;
+ int size;
+ int rela;
+} dynamic_relocations [] =
+{
+ { "REL", DT_REL, DT_RELSZ, FALSE },
+ { "RELA", DT_RELA, DT_RELASZ, TRUE },
+ { "PLT", DT_JMPREL, DT_PLTRELSZ, UNKNOWN }
+};
+
+/* Process the reloc section. */
+
+static int
+process_relocs (FILE * file)
+{
+ unsigned long rel_size;
+ unsigned long rel_offset;
+
+
+ if (!do_reloc)
+ return 1;
+
+ if (do_using_dynamic)
+ {
+ int is_rela;
+ const char * name;
+ int has_dynamic_reloc;
+ unsigned int i;
+
+ has_dynamic_reloc = 0;
+
+ for (i = 0; i < ARRAY_SIZE (dynamic_relocations); i++)
+ {
+ is_rela = dynamic_relocations [i].rela;
+ name = dynamic_relocations [i].name;
+ rel_size = dynamic_info [dynamic_relocations [i].size];
+ rel_offset = dynamic_info [dynamic_relocations [i].reloc];
+
+ has_dynamic_reloc |= rel_size;
+
+ if (is_rela == UNKNOWN)
+ {
+ if (dynamic_relocations [i].reloc == DT_JMPREL)
+ switch (dynamic_info[DT_PLTREL])
+ {
+ case DT_REL:
+ is_rela = FALSE;
+ break;
+ case DT_RELA:
+ is_rela = TRUE;
+ break;
+ }
+ }
+
+ if (rel_size)
+ {
+ printf
+ (_("\n'%s' relocation section at offset 0x%lx contains %ld bytes:\n"),
+ name, rel_offset, rel_size);
+
+ dump_relocations (file,
+ offset_from_vma (file, rel_offset, rel_size),
+ rel_size,
+ dynamic_symbols, num_dynamic_syms,
+ dynamic_strings, dynamic_strings_length, is_rela);
+ }
+ }
+
+ if (is_ia64_vms ())
+ has_dynamic_reloc |= process_ia64_vms_dynamic_relocs (file);
+
+ if (! has_dynamic_reloc)
+ printf (_("\nThere are no dynamic relocations in this file.\n"));
+ }
+ else
+ {
+ Elf_Internal_Shdr * section;
+ unsigned long i;
+ int found = 0;
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum;
+ i++, section++)
+ {
+ if ( section->sh_type != SHT_RELA
+ && section->sh_type != SHT_REL)
+ continue;
+
+ rel_offset = section->sh_offset;
+ rel_size = section->sh_size;
+
+ if (rel_size)
+ {
+ Elf_Internal_Shdr * strsec;
+ int is_rela;
+
+ printf (_("\nRelocation section "));
+
+ if (string_table == NULL)
+ printf ("%d", section->sh_name);
+ else
+ printf ("'%s'", SECTION_NAME (section));
+
+ printf (_(" at offset 0x%lx contains %lu entries:\n"),
+ rel_offset, (unsigned long) (rel_size / section->sh_entsize));
+
+ is_rela = section->sh_type == SHT_RELA;
+
+ if (section->sh_link != 0
+ && section->sh_link < elf_header.e_shnum)
+ {
+ Elf_Internal_Shdr * symsec;
+ Elf_Internal_Sym * symtab;
+ unsigned long nsyms;
+ unsigned long strtablen = 0;
+ char * strtab = NULL;
+
+ symsec = section_headers + section->sh_link;
+ if (symsec->sh_type != SHT_SYMTAB
+ && symsec->sh_type != SHT_DYNSYM)
+ continue;
+
+ symtab = GET_ELF_SYMBOLS (file, symsec, & nsyms);
+
+ if (symtab == NULL)
+ continue;
+
+ if (symsec->sh_link != 0
+ && symsec->sh_link < elf_header.e_shnum)
+ {
+ strsec = section_headers + symsec->sh_link;
+
+ strtab = (char *) get_data (NULL, file, strsec->sh_offset,
+ 1, strsec->sh_size,
+ _("string table"));
+ strtablen = strtab == NULL ? 0 : strsec->sh_size;
+ }
+
+ dump_relocations (file, rel_offset, rel_size,
+ symtab, nsyms, strtab, strtablen, is_rela);
+ if (strtab)
+ free (strtab);
+ free (symtab);
+ }
+ else
+ dump_relocations (file, rel_offset, rel_size,
+ NULL, 0, NULL, 0, is_rela);
+
+ found = 1;
+ }
+ }
+
+ if (! found)
+ printf (_("\nThere are no relocations in this file.\n"));
+ }
+
+ return 1;
+}
+
+/* Process the unwind section. */
+
+#include "unwind-ia64.h"
+
+/* An absolute address consists of a section and an offset. If the
+ section is NULL, the offset itself is the address, otherwise, the
+ address equals to LOAD_ADDRESS(section) + offset. */
+
+struct absaddr
+ {
+ unsigned short section;
+ bfd_vma offset;
+ };
+
+#define ABSADDR(a) \
+ ((a).section \
+ ? section_headers [(a).section].sh_addr + (a).offset \
+ : (a).offset)
+
+struct ia64_unw_table_entry
+ {
+ struct absaddr start;
+ struct absaddr end;
+ struct absaddr info;
+ };
+
+struct ia64_unw_aux_info
+ {
+
+ struct ia64_unw_table_entry *table; /* Unwind table. */
+ unsigned long table_len; /* Length of unwind table. */
+ unsigned char * info; /* Unwind info. */
+ unsigned long info_size; /* Size of unwind info. */
+ bfd_vma info_addr; /* starting address of unwind info. */
+ bfd_vma seg_base; /* Starting address of segment. */
+ Elf_Internal_Sym * symtab; /* The symbol table. */
+ unsigned long nsyms; /* Number of symbols. */
+ char * strtab; /* The string table. */
+ unsigned long strtab_size; /* Size of string table. */
+ };
+
+static void
+find_symbol_for_address (Elf_Internal_Sym * symtab,
+ unsigned long nsyms,
+ const char * strtab,
+ unsigned long strtab_size,
+ struct absaddr addr,
+ const char ** symname,
+ bfd_vma * offset)
+{
+ bfd_vma dist = 0x100000;
+ Elf_Internal_Sym * sym;
+ Elf_Internal_Sym * best = NULL;
+ unsigned long i;
+
+ REMOVE_ARCH_BITS (addr.offset);
+
+ for (i = 0, sym = symtab; i < nsyms; ++i, ++sym)
+ {
+ bfd_vma value = sym->st_value;
+
+ REMOVE_ARCH_BITS (value);
+
+ if (ELF_ST_TYPE (sym->st_info) == STT_FUNC
+ && sym->st_name != 0
+ && (addr.section == SHN_UNDEF || addr.section == sym->st_shndx)
+ && addr.offset >= value
+ && addr.offset - value < dist)
+ {
+ best = sym;
+ dist = addr.offset - value;
+ if (!dist)
+ break;
+ }
+ }
+
+ if (best)
+ {
+ *symname = (best->st_name >= strtab_size
+ ? _("<corrupt>") : strtab + best->st_name);
+ *offset = dist;
+ return;
+ }
+
+ *symname = NULL;
+ *offset = addr.offset;
+}
+
+static void
+dump_ia64_unwind (struct ia64_unw_aux_info * aux)
+{
+ struct ia64_unw_table_entry * tp;
+ int in_body;
+
+ for (tp = aux->table; tp < aux->table + aux->table_len; ++tp)
+ {
+ bfd_vma stamp;
+ bfd_vma offset;
+ const unsigned char * dp;
+ const unsigned char * head;
+ const char * procname;
+
+ find_symbol_for_address (aux->symtab, aux->nsyms, aux->strtab,
+ aux->strtab_size, tp->start, &procname, &offset);
+
+ fputs ("\n<", stdout);
+
+ if (procname)
+ {
+ fputs (procname, stdout);
+
+ if (offset)
+ printf ("+%lx", (unsigned long) offset);
+ }
+
+ fputs (">: [", stdout);
+ print_vma (tp->start.offset, PREFIX_HEX);
+ fputc ('-', stdout);
+ print_vma (tp->end.offset, PREFIX_HEX);
+ printf ("], info at +0x%lx\n",
+ (unsigned long) (tp->info.offset - aux->seg_base));
+
+ head = aux->info + (ABSADDR (tp->info) - aux->info_addr);
+ stamp = byte_get ((unsigned char *) head, sizeof (stamp));
+
+ printf (" v%u, flags=0x%lx (%s%s), len=%lu bytes\n",
+ (unsigned) UNW_VER (stamp),
+ (unsigned long) ((stamp & UNW_FLAG_MASK) >> 32),
+ UNW_FLAG_EHANDLER (stamp) ? " ehandler" : "",
+ UNW_FLAG_UHANDLER (stamp) ? " uhandler" : "",
+ (unsigned long) (eh_addr_size * UNW_LENGTH (stamp)));
+
+ if (UNW_VER (stamp) != 1)
+ {
+ printf (_("\tUnknown version.\n"));
+ continue;
+ }
+
+ in_body = 0;
+ for (dp = head + 8; dp < head + 8 + eh_addr_size * UNW_LENGTH (stamp);)
+ dp = unw_decode (dp, in_body, & in_body);
+ }
+}
+
+static int
+slurp_ia64_unwind_table (FILE * file,
+ struct ia64_unw_aux_info * aux,
+ Elf_Internal_Shdr * sec)
+{
+ unsigned long size, nrelas, i;
+ Elf_Internal_Phdr * seg;
+ struct ia64_unw_table_entry * tep;
+ Elf_Internal_Shdr * relsec;
+ Elf_Internal_Rela * rela;
+ Elf_Internal_Rela * rp;
+ unsigned char * table;
+ unsigned char * tp;
+ Elf_Internal_Sym * sym;
+ const char * relname;
+
+ /* First, find the starting address of the segment that includes
+ this section: */
+
+ if (elf_header.e_phnum)
+ {
+ if (! get_program_headers (file))
+ return 0;
+
+ for (seg = program_headers;
+ seg < program_headers + elf_header.e_phnum;
+ ++seg)
+ {
+ if (seg->p_type != PT_LOAD)
+ continue;
+
+ if (sec->sh_addr >= seg->p_vaddr
+ && (sec->sh_addr + sec->sh_size <= seg->p_vaddr + seg->p_memsz))
+ {
+ aux->seg_base = seg->p_vaddr;
+ break;
+ }
+ }
+ }
+
+ /* Second, build the unwind table from the contents of the unwind section: */
+ size = sec->sh_size;
+ table = (unsigned char *) get_data (NULL, file, sec->sh_offset, 1, size,
+ _("unwind table"));
+ if (!table)
+ return 0;
+
+ aux->table = (struct ia64_unw_table_entry *)
+ xcmalloc (size / (3 * eh_addr_size), sizeof (aux->table[0]));
+ tep = aux->table;
+ for (tp = table; tp < table + size; ++tep)
+ {
+ tep->start.section = SHN_UNDEF;
+ tep->end.section = SHN_UNDEF;
+ tep->info.section = SHN_UNDEF;
+ tep->start.offset = byte_get (tp, eh_addr_size); tp += eh_addr_size;
+ tep->end.offset = byte_get (tp, eh_addr_size); tp += eh_addr_size;
+ tep->info.offset = byte_get (tp, eh_addr_size); tp += eh_addr_size;
+ tep->start.offset += aux->seg_base;
+ tep->end.offset += aux->seg_base;
+ tep->info.offset += aux->seg_base;
+ }
+ free (table);
+
+ /* Third, apply any relocations to the unwind table: */
+ for (relsec = section_headers;
+ relsec < section_headers + elf_header.e_shnum;
+ ++relsec)
+ {
+ if (relsec->sh_type != SHT_RELA
+ || relsec->sh_info >= elf_header.e_shnum
+ || section_headers + relsec->sh_info != sec)
+ continue;
+
+ if (!slurp_rela_relocs (file, relsec->sh_offset, relsec->sh_size,
+ & rela, & nrelas))
+ return 0;
+
+ for (rp = rela; rp < rela + nrelas; ++rp)
+ {
+ relname = elf_ia64_reloc_type (get_reloc_type (rp->r_info));
+ sym = aux->symtab + get_reloc_symindex (rp->r_info);
+
+ if (! const_strneq (relname, "R_IA64_SEGREL"))
+ {
+ warn (_("Skipping unexpected relocation type %s\n"), relname);
+ continue;
+ }
+
+ i = rp->r_offset / (3 * eh_addr_size);
+
+ switch (rp->r_offset/eh_addr_size % 3)
+ {
+ case 0:
+ aux->table[i].start.section = sym->st_shndx;
+ aux->table[i].start.offset = rp->r_addend + sym->st_value;
+ break;
+ case 1:
+ aux->table[i].end.section = sym->st_shndx;
+ aux->table[i].end.offset = rp->r_addend + sym->st_value;
+ break;
+ case 2:
+ aux->table[i].info.section = sym->st_shndx;
+ aux->table[i].info.offset = rp->r_addend + sym->st_value;
+ break;
+ default:
+ break;
+ }
+ }
+
+ free (rela);
+ }
+
+ aux->table_len = size / (3 * eh_addr_size);
+ return 1;
+}
+
+static void
+ia64_process_unwind (FILE * file)
+{
+ Elf_Internal_Shdr * sec;
+ Elf_Internal_Shdr * unwsec = NULL;
+ Elf_Internal_Shdr * strsec;
+ unsigned long i, unwcount = 0, unwstart = 0;
+ struct ia64_unw_aux_info aux;
+
+ memset (& aux, 0, sizeof (aux));
+
+ for (i = 0, sec = section_headers; i < elf_header.e_shnum; ++i, ++sec)
+ {
+ if (sec->sh_type == SHT_SYMTAB
+ && sec->sh_link < elf_header.e_shnum)
+ {
+ aux.symtab = GET_ELF_SYMBOLS (file, sec, & aux.nsyms);
+
+ strsec = section_headers + sec->sh_link;
+ assert (aux.strtab == NULL);
+ aux.strtab = (char *) get_data (NULL, file, strsec->sh_offset,
+ 1, strsec->sh_size,
+ _("string table"));
+ aux.strtab_size = aux.strtab != NULL ? strsec->sh_size : 0;
+ }
+ else if (sec->sh_type == SHT_IA_64_UNWIND)
+ unwcount++;
+ }
+
+ if (!unwcount)
+ printf (_("\nThere are no unwind sections in this file.\n"));
+
+ while (unwcount-- > 0)
+ {
+ char * suffix;
+ size_t len, len2;
+
+ for (i = unwstart, sec = section_headers + unwstart;
+ i < elf_header.e_shnum; ++i, ++sec)
+ if (sec->sh_type == SHT_IA_64_UNWIND)
+ {
+ unwsec = sec;
+ break;
+ }
+
+ unwstart = i + 1;
+ len = sizeof (ELF_STRING_ia64_unwind_once) - 1;
+
+ if ((unwsec->sh_flags & SHF_GROUP) != 0)
+ {
+ /* We need to find which section group it is in. */
+ struct group_list * g = section_headers_groups [i]->root;
+
+ for (; g != NULL; g = g->next)
+ {
+ sec = section_headers + g->section_index;
+
+ if (streq (SECTION_NAME (sec), ELF_STRING_ia64_unwind_info))
+ break;
+ }
+
+ if (g == NULL)
+ i = elf_header.e_shnum;
+ }
+ else if (strneq (SECTION_NAME (unwsec), ELF_STRING_ia64_unwind_once, len))
+ {
+ /* .gnu.linkonce.ia64unw.FOO -> .gnu.linkonce.ia64unwi.FOO. */
+ len2 = sizeof (ELF_STRING_ia64_unwind_info_once) - 1;
+ suffix = SECTION_NAME (unwsec) + len;
+ for (i = 0, sec = section_headers; i < elf_header.e_shnum;
+ ++i, ++sec)
+ if (strneq (SECTION_NAME (sec), ELF_STRING_ia64_unwind_info_once, len2)
+ && streq (SECTION_NAME (sec) + len2, suffix))
+ break;
+ }
+ else
+ {
+ /* .IA_64.unwindFOO -> .IA_64.unwind_infoFOO
+ .IA_64.unwind or BAR -> .IA_64.unwind_info. */
+ len = sizeof (ELF_STRING_ia64_unwind) - 1;
+ len2 = sizeof (ELF_STRING_ia64_unwind_info) - 1;
+ suffix = "";
+ if (strneq (SECTION_NAME (unwsec), ELF_STRING_ia64_unwind, len))
+ suffix = SECTION_NAME (unwsec) + len;
+ for (i = 0, sec = section_headers; i < elf_header.e_shnum;
+ ++i, ++sec)
+ if (strneq (SECTION_NAME (sec), ELF_STRING_ia64_unwind_info, len2)
+ && streq (SECTION_NAME (sec) + len2, suffix))
+ break;
+ }
+
+ if (i == elf_header.e_shnum)
+ {
+ printf (_("\nCould not find unwind info section for "));
+
+ if (string_table == NULL)
+ printf ("%d", unwsec->sh_name);
+ else
+ printf (_("'%s'"), SECTION_NAME (unwsec));
+ }
+ else
+ {
+ aux.info_addr = sec->sh_addr;
+ aux.info = (unsigned char *) get_data (NULL, file, sec->sh_offset, 1,
+ sec->sh_size,
+ _("unwind info"));
+ aux.info_size = aux.info == NULL ? 0 : sec->sh_size;
+
+ printf (_("\nUnwind section "));
+
+ if (string_table == NULL)
+ printf ("%d", unwsec->sh_name);
+ else
+ printf (_("'%s'"), SECTION_NAME (unwsec));
+
+ printf (_(" at offset 0x%lx contains %lu entries:\n"),
+ (unsigned long) unwsec->sh_offset,
+ (unsigned long) (unwsec->sh_size / (3 * eh_addr_size)));
+
+ (void) slurp_ia64_unwind_table (file, & aux, unwsec);
+
+ if (aux.table_len > 0)
+ dump_ia64_unwind (& aux);
+
+ if (aux.table)
+ free ((char *) aux.table);
+ if (aux.info)
+ free ((char *) aux.info);
+ aux.table = NULL;
+ aux.info = NULL;
+ }
+ }
+
+ if (aux.symtab)
+ free (aux.symtab);
+ if (aux.strtab)
+ free ((char *) aux.strtab);
+}
+
+struct hppa_unw_table_entry
+ {
+ struct absaddr start;
+ struct absaddr end;
+ unsigned int Cannot_unwind:1; /* 0 */
+ unsigned int Millicode:1; /* 1 */
+ unsigned int Millicode_save_sr0:1; /* 2 */
+ unsigned int Region_description:2; /* 3..4 */
+ unsigned int reserved1:1; /* 5 */
+ unsigned int Entry_SR:1; /* 6 */
+ unsigned int Entry_FR:4; /* number saved */ /* 7..10 */
+ unsigned int Entry_GR:5; /* number saved */ /* 11..15 */
+ unsigned int Args_stored:1; /* 16 */
+ unsigned int Variable_Frame:1; /* 17 */
+ unsigned int Separate_Package_Body:1; /* 18 */
+ unsigned int Frame_Extension_Millicode:1; /* 19 */
+ unsigned int Stack_Overflow_Check:1; /* 20 */
+ unsigned int Two_Instruction_SP_Increment:1; /* 21 */
+ unsigned int Ada_Region:1; /* 22 */
+ unsigned int cxx_info:1; /* 23 */
+ unsigned int cxx_try_catch:1; /* 24 */
+ unsigned int sched_entry_seq:1; /* 25 */
+ unsigned int reserved2:1; /* 26 */
+ unsigned int Save_SP:1; /* 27 */
+ unsigned int Save_RP:1; /* 28 */
+ unsigned int Save_MRP_in_frame:1; /* 29 */
+ unsigned int extn_ptr_defined:1; /* 30 */
+ unsigned int Cleanup_defined:1; /* 31 */
+
+ unsigned int MPE_XL_interrupt_marker:1; /* 0 */
+ unsigned int HP_UX_interrupt_marker:1; /* 1 */
+ unsigned int Large_frame:1; /* 2 */
+ unsigned int Pseudo_SP_Set:1; /* 3 */
+ unsigned int reserved4:1; /* 4 */
+ unsigned int Total_frame_size:27; /* 5..31 */
+ };
+
+struct hppa_unw_aux_info
+ {
+ struct hppa_unw_table_entry *table; /* Unwind table. */
+ unsigned long table_len; /* Length of unwind table. */
+ bfd_vma seg_base; /* Starting address of segment. */
+ Elf_Internal_Sym * symtab; /* The symbol table. */
+ unsigned long nsyms; /* Number of symbols. */
+ char * strtab; /* The string table. */
+ unsigned long strtab_size; /* Size of string table. */
+ };
+
+static void
+dump_hppa_unwind (struct hppa_unw_aux_info * aux)
+{
+ struct hppa_unw_table_entry * tp;
+
+ for (tp = aux->table; tp < aux->table + aux->table_len; ++tp)
+ {
+ bfd_vma offset;
+ const char * procname;
+
+ find_symbol_for_address (aux->symtab, aux->nsyms, aux->strtab,
+ aux->strtab_size, tp->start, &procname,
+ &offset);
+
+ fputs ("\n<", stdout);
+
+ if (procname)
+ {
+ fputs (procname, stdout);
+
+ if (offset)
+ printf ("+%lx", (unsigned long) offset);
+ }
+
+ fputs (">: [", stdout);
+ print_vma (tp->start.offset, PREFIX_HEX);
+ fputc ('-', stdout);
+ print_vma (tp->end.offset, PREFIX_HEX);
+ printf ("]\n\t");
+
+#define PF(_m) if (tp->_m) printf (#_m " ");
+#define PV(_m) if (tp->_m) printf (#_m "=%d ", tp->_m);
+ PF(Cannot_unwind);
+ PF(Millicode);
+ PF(Millicode_save_sr0);
+ /* PV(Region_description); */
+ PF(Entry_SR);
+ PV(Entry_FR);
+ PV(Entry_GR);
+ PF(Args_stored);
+ PF(Variable_Frame);
+ PF(Separate_Package_Body);
+ PF(Frame_Extension_Millicode);
+ PF(Stack_Overflow_Check);
+ PF(Two_Instruction_SP_Increment);
+ PF(Ada_Region);
+ PF(cxx_info);
+ PF(cxx_try_catch);
+ PF(sched_entry_seq);
+ PF(Save_SP);
+ PF(Save_RP);
+ PF(Save_MRP_in_frame);
+ PF(extn_ptr_defined);
+ PF(Cleanup_defined);
+ PF(MPE_XL_interrupt_marker);
+ PF(HP_UX_interrupt_marker);
+ PF(Large_frame);
+ PF(Pseudo_SP_Set);
+ PV(Total_frame_size);
+#undef PF
+#undef PV
+ }
+
+ printf ("\n");
+}
+
+static int
+slurp_hppa_unwind_table (FILE * file,
+ struct hppa_unw_aux_info * aux,
+ Elf_Internal_Shdr * sec)
+{
+ unsigned long size, unw_ent_size, nentries, nrelas, i;
+ Elf_Internal_Phdr * seg;
+ struct hppa_unw_table_entry * tep;
+ Elf_Internal_Shdr * relsec;
+ Elf_Internal_Rela * rela;
+ Elf_Internal_Rela * rp;
+ unsigned char * table;
+ unsigned char * tp;
+ Elf_Internal_Sym * sym;
+ const char * relname;
+
+ /* First, find the starting address of the segment that includes
+ this section. */
+
+ if (elf_header.e_phnum)
+ {
+ if (! get_program_headers (file))
+ return 0;
+
+ for (seg = program_headers;
+ seg < program_headers + elf_header.e_phnum;
+ ++seg)
+ {
+ if (seg->p_type != PT_LOAD)
+ continue;
+
+ if (sec->sh_addr >= seg->p_vaddr
+ && (sec->sh_addr + sec->sh_size <= seg->p_vaddr + seg->p_memsz))
+ {
+ aux->seg_base = seg->p_vaddr;
+ break;
+ }
+ }
+ }
+
+ /* Second, build the unwind table from the contents of the unwind
+ section. */
+ size = sec->sh_size;
+ table = (unsigned char *) get_data (NULL, file, sec->sh_offset, 1, size,
+ _("unwind table"));
+ if (!table)
+ return 0;
+
+ unw_ent_size = 16;
+ nentries = size / unw_ent_size;
+ size = unw_ent_size * nentries;
+
+ tep = aux->table = (struct hppa_unw_table_entry *)
+ xcmalloc (nentries, sizeof (aux->table[0]));
+
+ for (tp = table; tp < table + size; tp += unw_ent_size, ++tep)
+ {
+ unsigned int tmp1, tmp2;
+
+ tep->start.section = SHN_UNDEF;
+ tep->end.section = SHN_UNDEF;
+
+ tep->start.offset = byte_get ((unsigned char *) tp + 0, 4);
+ tep->end.offset = byte_get ((unsigned char *) tp + 4, 4);
+ tmp1 = byte_get ((unsigned char *) tp + 8, 4);
+ tmp2 = byte_get ((unsigned char *) tp + 12, 4);
+
+ tep->start.offset += aux->seg_base;
+ tep->end.offset += aux->seg_base;
+
+ tep->Cannot_unwind = (tmp1 >> 31) & 0x1;
+ tep->Millicode = (tmp1 >> 30) & 0x1;
+ tep->Millicode_save_sr0 = (tmp1 >> 29) & 0x1;
+ tep->Region_description = (tmp1 >> 27) & 0x3;
+ tep->reserved1 = (tmp1 >> 26) & 0x1;
+ tep->Entry_SR = (tmp1 >> 25) & 0x1;
+ tep->Entry_FR = (tmp1 >> 21) & 0xf;
+ tep->Entry_GR = (tmp1 >> 16) & 0x1f;
+ tep->Args_stored = (tmp1 >> 15) & 0x1;
+ tep->Variable_Frame = (tmp1 >> 14) & 0x1;
+ tep->Separate_Package_Body = (tmp1 >> 13) & 0x1;
+ tep->Frame_Extension_Millicode = (tmp1 >> 12) & 0x1;
+ tep->Stack_Overflow_Check = (tmp1 >> 11) & 0x1;
+ tep->Two_Instruction_SP_Increment = (tmp1 >> 10) & 0x1;
+ tep->Ada_Region = (tmp1 >> 9) & 0x1;
+ tep->cxx_info = (tmp1 >> 8) & 0x1;
+ tep->cxx_try_catch = (tmp1 >> 7) & 0x1;
+ tep->sched_entry_seq = (tmp1 >> 6) & 0x1;
+ tep->reserved2 = (tmp1 >> 5) & 0x1;
+ tep->Save_SP = (tmp1 >> 4) & 0x1;
+ tep->Save_RP = (tmp1 >> 3) & 0x1;
+ tep->Save_MRP_in_frame = (tmp1 >> 2) & 0x1;
+ tep->extn_ptr_defined = (tmp1 >> 1) & 0x1;
+ tep->Cleanup_defined = tmp1 & 0x1;
+
+ tep->MPE_XL_interrupt_marker = (tmp2 >> 31) & 0x1;
+ tep->HP_UX_interrupt_marker = (tmp2 >> 30) & 0x1;
+ tep->Large_frame = (tmp2 >> 29) & 0x1;
+ tep->Pseudo_SP_Set = (tmp2 >> 28) & 0x1;
+ tep->reserved4 = (tmp2 >> 27) & 0x1;
+ tep->Total_frame_size = tmp2 & 0x7ffffff;
+ }
+ free (table);
+
+ /* Third, apply any relocations to the unwind table. */
+ for (relsec = section_headers;
+ relsec < section_headers + elf_header.e_shnum;
+ ++relsec)
+ {
+ if (relsec->sh_type != SHT_RELA
+ || relsec->sh_info >= elf_header.e_shnum
+ || section_headers + relsec->sh_info != sec)
+ continue;
+
+ if (!slurp_rela_relocs (file, relsec->sh_offset, relsec->sh_size,
+ & rela, & nrelas))
+ return 0;
+
+ for (rp = rela; rp < rela + nrelas; ++rp)
+ {
+ relname = elf_hppa_reloc_type (get_reloc_type (rp->r_info));
+ sym = aux->symtab + get_reloc_symindex (rp->r_info);
+
+ /* R_PARISC_SEGREL32 or R_PARISC_SEGREL64. */
+ if (! const_strneq (relname, "R_PARISC_SEGREL"))
+ {
+ warn (_("Skipping unexpected relocation type %s\n"), relname);
+ continue;
+ }
+
+ i = rp->r_offset / unw_ent_size;
+
+ switch ((rp->r_offset % unw_ent_size) / eh_addr_size)
+ {
+ case 0:
+ aux->table[i].start.section = sym->st_shndx;
+ aux->table[i].start.offset = sym->st_value + rp->r_addend;
+ break;
+ case 1:
+ aux->table[i].end.section = sym->st_shndx;
+ aux->table[i].end.offset = sym->st_value + rp->r_addend;
+ break;
+ default:
+ break;
+ }
+ }
+
+ free (rela);
+ }
+
+ aux->table_len = nentries;
+
+ return 1;
+}
+
+static void
+hppa_process_unwind (FILE * file)
+{
+ struct hppa_unw_aux_info aux;
+ Elf_Internal_Shdr * unwsec = NULL;
+ Elf_Internal_Shdr * strsec;
+ Elf_Internal_Shdr * sec;
+ unsigned long i;
+
+ if (string_table == NULL)
+ return;
+
+ memset (& aux, 0, sizeof (aux));
+
+ for (i = 0, sec = section_headers; i < elf_header.e_shnum; ++i, ++sec)
+ {
+ if (sec->sh_type == SHT_SYMTAB
+ && sec->sh_link < elf_header.e_shnum)
+ {
+ aux.symtab = GET_ELF_SYMBOLS (file, sec, & aux.nsyms);
+
+ strsec = section_headers + sec->sh_link;
+ assert (aux.strtab == NULL);
+ aux.strtab = (char *) get_data (NULL, file, strsec->sh_offset,
+ 1, strsec->sh_size,
+ _("string table"));
+ aux.strtab_size = aux.strtab != NULL ? strsec->sh_size : 0;
+ }
+ else if (streq (SECTION_NAME (sec), ".PARISC.unwind"))
+ unwsec = sec;
+ }
+
+ if (!unwsec)
+ printf (_("\nThere are no unwind sections in this file.\n"));
+
+ for (i = 0, sec = section_headers; i < elf_header.e_shnum; ++i, ++sec)
+ {
+ if (streq (SECTION_NAME (sec), ".PARISC.unwind"))
+ {
+ printf (_("\nUnwind section "));
+ printf (_("'%s'"), SECTION_NAME (sec));
+
+ printf (_(" at offset 0x%lx contains %lu entries:\n"),
+ (unsigned long) sec->sh_offset,
+ (unsigned long) (sec->sh_size / (2 * eh_addr_size + 8)));
+
+ slurp_hppa_unwind_table (file, &aux, sec);
+ if (aux.table_len > 0)
+ dump_hppa_unwind (&aux);
+
+ if (aux.table)
+ free ((char *) aux.table);
+ aux.table = NULL;
+ }
+ }
+
+ if (aux.symtab)
+ free (aux.symtab);
+ if (aux.strtab)
+ free ((char *) aux.strtab);
+}
+
+struct arm_section
+{
+ unsigned char * data; /* The unwind data. */
+ Elf_Internal_Shdr * sec; /* The cached unwind section header. */
+ Elf_Internal_Rela * rela; /* The cached relocations for this section. */
+ unsigned long nrelas; /* The number of relocations. */
+ unsigned int rel_type; /* REL or RELA ? */
+ Elf_Internal_Rela * next_rela; /* Cyclic pointer to the next reloc to process. */
+};
+
+struct arm_unw_aux_info
+{
+ FILE * file; /* The file containing the unwind sections. */
+ Elf_Internal_Sym * symtab; /* The file's symbol table. */
+ unsigned long nsyms; /* Number of symbols. */
+ char * strtab; /* The file's string table. */
+ unsigned long strtab_size; /* Size of string table. */
+};
+
+static const char *
+arm_print_vma_and_name (struct arm_unw_aux_info *aux,
+ bfd_vma fn, struct absaddr addr)
+{
+ const char *procname;
+ bfd_vma sym_offset;
+
+ if (addr.section == SHN_UNDEF)
+ addr.offset = fn;
+
+ find_symbol_for_address (aux->symtab, aux->nsyms, aux->strtab,
+ aux->strtab_size, addr, &procname,
+ &sym_offset);
+
+ print_vma (fn, PREFIX_HEX);
+
+ if (procname)
+ {
+ fputs (" <", stdout);
+ fputs (procname, stdout);
+
+ if (sym_offset)
+ printf ("+0x%lx", (unsigned long) sym_offset);
+ fputc ('>', stdout);
+ }
+
+ return procname;
+}
+
+static void
+arm_free_section (struct arm_section *arm_sec)
+{
+ if (arm_sec->data != NULL)
+ free (arm_sec->data);
+
+ if (arm_sec->rela != NULL)
+ free (arm_sec->rela);
+}
+
+/* 1) If SEC does not match the one cached in ARM_SEC, then free the current
+ cached section and install SEC instead.
+ 2) Locate the 32-bit word at WORD_OFFSET in unwind section SEC
+ and return its valued in * WORDP, relocating if necessary.
+ 3) Update the NEXT_RELA field in ARM_SEC and store the section index and
+ relocation's offset in ADDR.
+ 4) If SYM_NAME is non-NULL and a relocation was applied, record the offset
+ into the string table of the symbol associated with the reloc. If no
+ reloc was applied store -1 there.
+ 5) Return TRUE upon success, FALSE otherwise. */
+
+static bfd_boolean
+get_unwind_section_word (struct arm_unw_aux_info * aux,
+ struct arm_section * arm_sec,
+ Elf_Internal_Shdr * sec,
+ bfd_vma word_offset,
+ unsigned int * wordp,
+ struct absaddr * addr,
+ bfd_vma * sym_name)
+{
+ Elf_Internal_Rela *rp;
+ Elf_Internal_Sym *sym;
+ const char * relname;
+ unsigned int word;
+ bfd_boolean wrapped;
+
+ addr->section = SHN_UNDEF;
+ addr->offset = 0;
+
+ if (sym_name != NULL)
+ *sym_name = (bfd_vma) -1;
+
+ /* If necessary, update the section cache. */
+ if (sec != arm_sec->sec)
+ {
+ Elf_Internal_Shdr *relsec;
+
+ arm_free_section (arm_sec);
+
+ arm_sec->sec = sec;
+ arm_sec->data = get_data (NULL, aux->file, sec->sh_offset, 1,
+ sec->sh_size, _("unwind data"));
+ arm_sec->rela = NULL;
+ arm_sec->nrelas = 0;
+
+ for (relsec = section_headers;
+ relsec < section_headers + elf_header.e_shnum;
+ ++relsec)
+ {
+ if (relsec->sh_info >= elf_header.e_shnum
+ || section_headers + relsec->sh_info != sec
+ /* PR 15745: Check the section type as well. */
+ || (relsec->sh_type != SHT_REL
+ && relsec->sh_type != SHT_RELA))
+ continue;
+
+ arm_sec->rel_type = relsec->sh_type;
+ if (relsec->sh_type == SHT_REL)
+ {
+ if (!slurp_rel_relocs (aux->file, relsec->sh_offset,
+ relsec->sh_size,
+ & arm_sec->rela, & arm_sec->nrelas))
+ return FALSE;
+ }
+ else /* relsec->sh_type == SHT_RELA */
+ {
+ if (!slurp_rela_relocs (aux->file, relsec->sh_offset,
+ relsec->sh_size,
+ & arm_sec->rela, & arm_sec->nrelas))
+ return FALSE;
+ }
+ break;
+ }
+
+ arm_sec->next_rela = arm_sec->rela;
+ }
+
+ /* If there is no unwind data we can do nothing. */
+ if (arm_sec->data == NULL)
+ return FALSE;
+
+ /* Get the word at the required offset. */
+ word = byte_get (arm_sec->data + word_offset, 4);
+
+ /* Look through the relocs to find the one that applies to the provided offset. */
+ wrapped = FALSE;
+ for (rp = arm_sec->next_rela; rp != arm_sec->rela + arm_sec->nrelas; rp++)
+ {
+ bfd_vma prelval, offset;
+
+ if (rp->r_offset > word_offset && !wrapped)
+ {
+ rp = arm_sec->rela;
+ wrapped = TRUE;
+ }
+ if (rp->r_offset > word_offset)
+ break;
+
+ if (rp->r_offset & 3)
+ {
+ warn (_("Skipping unexpected relocation at offset 0x%lx\n"),
+ (unsigned long) rp->r_offset);
+ continue;
+ }
+
+ if (rp->r_offset < word_offset)
+ continue;
+
+ sym = aux->symtab + ELF32_R_SYM (rp->r_info);
+
+ if (arm_sec->rel_type == SHT_REL)
+ {
+ offset = word & 0x7fffffff;
+ if (offset & 0x40000000)
+ offset |= ~ (bfd_vma) 0x7fffffff;
+ }
+ else if (arm_sec->rel_type == SHT_RELA)
+ offset = rp->r_addend;
+ else
+ abort ();
+
+ offset += sym->st_value;
+ prelval = offset - (arm_sec->sec->sh_addr + rp->r_offset);
+
+ /* Check that we are processing the expected reloc type. */
+ if (elf_header.e_machine == EM_ARM)
+ {
+ relname = elf_arm_reloc_type (ELF32_R_TYPE (rp->r_info));
+
+ if (streq (relname, "R_ARM_NONE"))
+ continue;
+
+ if (! streq (relname, "R_ARM_PREL31"))
+ {
+ warn (_("Skipping unexpected relocation type %s\n"), relname);
+ continue;
+ }
+ }
+ else if (elf_header.e_machine == EM_TI_C6000)
+ {
+ relname = elf_tic6x_reloc_type (ELF32_R_TYPE (rp->r_info));
+
+ if (streq (relname, "R_C6000_NONE"))
+ continue;
+
+ if (! streq (relname, "R_C6000_PREL31"))
+ {
+ warn (_("Skipping unexpected relocation type %s\n"), relname);
+ continue;
+ }
+
+ prelval >>= 1;
+ }
+ else
+ /* This function currently only supports ARM and TI unwinders. */
+ abort ();
+
+ word = (word & ~ (bfd_vma) 0x7fffffff) | (prelval & 0x7fffffff);
+ addr->section = sym->st_shndx;
+ addr->offset = offset;
+ if (sym_name)
+ * sym_name = sym->st_name;
+ break;
+ }
+
+ *wordp = word;
+ arm_sec->next_rela = rp;
+
+ return TRUE;
+}
+
+static const char *tic6x_unwind_regnames[16] =
+{
+ "A15", "B15", "B14", "B13", "B12", "B11", "B10", "B3",
+ "A14", "A13", "A12", "A11", "A10",
+ "[invalid reg 13]", "[invalid reg 14]", "[invalid reg 15]"
+};
+
+static void
+decode_tic6x_unwind_regmask (unsigned int mask)
+{
+ int i;
+
+ for (i = 12; mask; mask >>= 1, i--)
+ {
+ if (mask & 1)
+ {
+ fputs (tic6x_unwind_regnames[i], stdout);
+ if (mask > 1)
+ fputs (", ", stdout);
+ }
+ }
+}
+
+#define ADVANCE \
+ if (remaining == 0 && more_words) \
+ { \
+ data_offset += 4; \
+ if (! get_unwind_section_word (aux, data_arm_sec, data_sec, \
+ data_offset, & word, & addr, NULL)) \
+ return; \
+ remaining = 4; \
+ more_words--; \
+ } \
+
+#define GET_OP(OP) \
+ ADVANCE; \
+ if (remaining) \
+ { \
+ remaining--; \
+ (OP) = word >> 24; \
+ word <<= 8; \
+ } \
+ else \
+ { \
+ printf (_("[Truncated opcode]\n")); \
+ return; \
+ } \
+ printf ("0x%02x ", OP)
+
+static void
+decode_arm_unwind_bytecode (struct arm_unw_aux_info *aux,
+ unsigned int word, unsigned int remaining,
+ unsigned int more_words,
+ bfd_vma data_offset, Elf_Internal_Shdr *data_sec,
+ struct arm_section *data_arm_sec)
+{
+ struct absaddr addr;
+
+ /* Decode the unwinding instructions. */
+ while (1)
+ {
+ unsigned int op, op2;
+
+ ADVANCE;
+ if (remaining == 0)
+ break;
+ remaining--;
+ op = word >> 24;
+ word <<= 8;
+
+ printf (" 0x%02x ", op);
+
+ if ((op & 0xc0) == 0x00)
+ {
+ int offset = ((op & 0x3f) << 2) + 4;
+
+ printf (" vsp = vsp + %d", offset);
+ }
+ else if ((op & 0xc0) == 0x40)
+ {
+ int offset = ((op & 0x3f) << 2) + 4;
+
+ printf (" vsp = vsp - %d", offset);
+ }
+ else if ((op & 0xf0) == 0x80)
+ {
+ GET_OP (op2);
+ if (op == 0x80 && op2 == 0)
+ printf (_("Refuse to unwind"));
+ else
+ {
+ unsigned int mask = ((op & 0x0f) << 8) | op2;
+ int first = 1;
+ int i;
+
+ printf ("pop {");
+ for (i = 0; i < 12; i++)
+ if (mask & (1 << i))
+ {
+ if (first)
+ first = 0;
+ else
+ printf (", ");
+ printf ("r%d", 4 + i);
+ }
+ printf ("}");
+ }
+ }
+ else if ((op & 0xf0) == 0x90)
+ {
+ if (op == 0x9d || op == 0x9f)
+ printf (_(" [Reserved]"));
+ else
+ printf (" vsp = r%d", op & 0x0f);
+ }
+ else if ((op & 0xf0) == 0xa0)
+ {
+ int end = 4 + (op & 0x07);
+ int first = 1;
+ int i;
+
+ printf (" pop {");
+ for (i = 4; i <= end; i++)
+ {
+ if (first)
+ first = 0;
+ else
+ printf (", ");
+ printf ("r%d", i);
+ }
+ if (op & 0x08)
+ {
+ if (!first)
+ printf (", ");
+ printf ("r14");
+ }
+ printf ("}");
+ }
+ else if (op == 0xb0)
+ printf (_(" finish"));
+ else if (op == 0xb1)
+ {
+ GET_OP (op2);
+ if (op2 == 0 || (op2 & 0xf0) != 0)
+ printf (_("[Spare]"));
+ else
+ {
+ unsigned int mask = op2 & 0x0f;
+ int first = 1;
+ int i;
+
+ printf ("pop {");
+ for (i = 0; i < 12; i++)
+ if (mask & (1 << i))
+ {
+ if (first)
+ first = 0;
+ else
+ printf (", ");
+ printf ("r%d", i);
+ }
+ printf ("}");
+ }
+ }
+ else if (op == 0xb2)
+ {
+ unsigned char buf[9];
+ unsigned int i, len;
+ unsigned long offset;
+
+ for (i = 0; i < sizeof (buf); i++)
+ {
+ GET_OP (buf[i]);
+ if ((buf[i] & 0x80) == 0)
+ break;
+ }
+ assert (i < sizeof (buf));
+ offset = read_uleb128 (buf, &len, buf + i + 1);
+ assert (len == i + 1);
+ offset = offset * 4 + 0x204;
+ printf ("vsp = vsp + %ld", offset);
+ }
+ else if (op == 0xb3 || op == 0xc8 || op == 0xc9)
+ {
+ unsigned int first, last;
+
+ GET_OP (op2);
+ first = op2 >> 4;
+ last = op2 & 0x0f;
+ if (op == 0xc8)
+ first = first + 16;
+ printf ("pop {D%d", first);
+ if (last)
+ printf ("-D%d", first + last);
+ printf ("}");
+ }
+ else if ((op & 0xf8) == 0xb8 || (op & 0xf8) == 0xd0)
+ {
+ unsigned int count = op & 0x07;
+
+ printf ("pop {D8");
+ if (count)
+ printf ("-D%d", 8 + count);
+ printf ("}");
+ }
+ else if (op >= 0xc0 && op <= 0xc5)
+ {
+ unsigned int count = op & 0x07;
+
+ printf (" pop {wR10");
+ if (count)
+ printf ("-wR%d", 10 + count);
+ printf ("}");
+ }
+ else if (op == 0xc6)
+ {
+ unsigned int first, last;
+
+ GET_OP (op2);
+ first = op2 >> 4;
+ last = op2 & 0x0f;
+ printf ("pop {wR%d", first);
+ if (last)
+ printf ("-wR%d", first + last);
+ printf ("}");
+ }
+ else if (op == 0xc7)
+ {
+ GET_OP (op2);
+ if (op2 == 0 || (op2 & 0xf0) != 0)
+ printf (_("[Spare]"));
+ else
+ {
+ unsigned int mask = op2 & 0x0f;
+ int first = 1;
+ int i;
+
+ printf ("pop {");
+ for (i = 0; i < 4; i++)
+ if (mask & (1 << i))
+ {
+ if (first)
+ first = 0;
+ else
+ printf (", ");
+ printf ("wCGR%d", i);
+ }
+ printf ("}");
+ }
+ }
+ else
+ printf (_(" [unsupported opcode]"));
+ printf ("\n");
+ }
+}
+
+static void
+decode_tic6x_unwind_bytecode (struct arm_unw_aux_info *aux,
+ unsigned int word, unsigned int remaining,
+ unsigned int more_words,
+ bfd_vma data_offset, Elf_Internal_Shdr *data_sec,
+ struct arm_section *data_arm_sec)
+{
+ struct absaddr addr;
+
+ /* Decode the unwinding instructions. */
+ while (1)
+ {
+ unsigned int op, op2;
+
+ ADVANCE;
+ if (remaining == 0)
+ break;
+ remaining--;
+ op = word >> 24;
+ word <<= 8;
+
+ printf (" 0x%02x ", op);
+
+ if ((op & 0xc0) == 0x00)
+ {
+ int offset = ((op & 0x3f) << 3) + 8;
+ printf (" sp = sp + %d", offset);
+ }
+ else if ((op & 0xc0) == 0x80)
+ {
+ GET_OP (op2);
+ if (op == 0x80 && op2 == 0)
+ printf (_("Refuse to unwind"));
+ else
+ {
+ unsigned int mask = ((op & 0x1f) << 8) | op2;
+ if (op & 0x20)
+ printf ("pop compact {");
+ else
+ printf ("pop {");
+
+ decode_tic6x_unwind_regmask (mask);
+ printf("}");
+ }
+ }
+ else if ((op & 0xf0) == 0xc0)
+ {
+ unsigned int reg;
+ unsigned int nregs;
+ unsigned int i;
+ const char *name;
+ struct
+ {
+ unsigned int offset;
+ unsigned int reg;
+ } regpos[16];
+
+ /* Scan entire instruction first so that GET_OP output is not
+ interleaved with disassembly. */
+ nregs = 0;
+ for (i = 0; nregs < (op & 0xf); i++)
+ {
+ GET_OP (op2);
+ reg = op2 >> 4;
+ if (reg != 0xf)
+ {
+ regpos[nregs].offset = i * 2;
+ regpos[nregs].reg = reg;
+ nregs++;
+ }
+
+ reg = op2 & 0xf;
+ if (reg != 0xf)
+ {
+ regpos[nregs].offset = i * 2 + 1;
+ regpos[nregs].reg = reg;
+ nregs++;
+ }
+ }
+
+ printf (_("pop frame {"));
+ reg = nregs - 1;
+ for (i = i * 2; i > 0; i--)
+ {
+ if (regpos[reg].offset == i - 1)
+ {
+ name = tic6x_unwind_regnames[regpos[reg].reg];
+ if (reg > 0)
+ reg--;
+ }
+ else
+ name = _("[pad]");
+
+ fputs (name, stdout);
+ if (i > 1)
+ printf (", ");
+ }
+
+ printf ("}");
+ }
+ else if (op == 0xd0)
+ printf (" MOV FP, SP");
+ else if (op == 0xd1)
+ printf (" __c6xabi_pop_rts");
+ else if (op == 0xd2)
+ {
+ unsigned char buf[9];
+ unsigned int i, len;
+ unsigned long offset;
+
+ for (i = 0; i < sizeof (buf); i++)
+ {
+ GET_OP (buf[i]);
+ if ((buf[i] & 0x80) == 0)
+ break;
+ }
+ assert (i < sizeof (buf));
+ offset = read_uleb128 (buf, &len, buf + i + 1);
+ assert (len == i + 1);
+ offset = offset * 8 + 0x408;
+ printf (_("sp = sp + %ld"), offset);
+ }
+ else if ((op & 0xf0) == 0xe0)
+ {
+ if ((op & 0x0f) == 7)
+ printf (" RETURN");
+ else
+ printf (" MV %s, B3", tic6x_unwind_regnames[op & 0x0f]);
+ }
+ else
+ {
+ printf (_(" [unsupported opcode]"));
+ }
+ putchar ('\n');
+ }
+}
+
+static bfd_vma
+arm_expand_prel31 (bfd_vma word, bfd_vma where)
+{
+ bfd_vma offset;
+
+ offset = word & 0x7fffffff;
+ if (offset & 0x40000000)
+ offset |= ~ (bfd_vma) 0x7fffffff;
+
+ if (elf_header.e_machine == EM_TI_C6000)
+ offset <<= 1;
+
+ return offset + where;
+}
+
+static void
+decode_arm_unwind (struct arm_unw_aux_info * aux,
+ unsigned int word,
+ unsigned int remaining,
+ bfd_vma data_offset,
+ Elf_Internal_Shdr * data_sec,
+ struct arm_section * data_arm_sec)
+{
+ int per_index;
+ unsigned int more_words = 0;
+ struct absaddr addr;
+ bfd_vma sym_name = (bfd_vma) -1;
+
+ if (remaining == 0)
+ {
+ /* Fetch the first word.
+ Note - when decoding an object file the address extracted
+ here will always be 0. So we also pass in the sym_name
+ parameter so that we can find the symbol associated with
+ the personality routine. */
+ if (! get_unwind_section_word (aux, data_arm_sec, data_sec, data_offset,
+ & word, & addr, & sym_name))
+ return;
+
+ remaining = 4;
+ }
+
+ if ((word & 0x80000000) == 0)
+ {
+ /* Expand prel31 for personality routine. */
+ bfd_vma fn;
+ const char *procname;
+
+ fn = arm_expand_prel31 (word, data_sec->sh_addr + data_offset);
+ printf (_(" Personality routine: "));
+ if (fn == 0
+ && addr.section == SHN_UNDEF && addr.offset == 0
+ && sym_name != (bfd_vma) -1 && sym_name < aux->strtab_size)
+ {
+ procname = aux->strtab + sym_name;
+ print_vma (fn, PREFIX_HEX);
+ if (procname)
+ {
+ fputs (" <", stdout);
+ fputs (procname, stdout);
+ fputc ('>', stdout);
+ }
+ }
+ else
+ procname = arm_print_vma_and_name (aux, fn, addr);
+ fputc ('\n', stdout);
+
+ /* The GCC personality routines use the standard compact
+ encoding, starting with one byte giving the number of
+ words. */
+ if (procname != NULL
+ && (const_strneq (procname, "__gcc_personality_v0")
+ || const_strneq (procname, "__gxx_personality_v0")
+ || const_strneq (procname, "__gcj_personality_v0")
+ || const_strneq (procname, "__gnu_objc_personality_v0")))
+ {
+ remaining = 0;
+ more_words = 1;
+ ADVANCE;
+ if (!remaining)
+ {
+ printf (_(" [Truncated data]\n"));
+ return;
+ }
+ more_words = word >> 24;
+ word <<= 8;
+ remaining--;
+ per_index = -1;
+ }
+ else
+ return;
+ }
+ else
+ {
+ /* ARM EHABI Section 6.3:
+
+ An exception-handling table entry for the compact model looks like:
+
+ 31 30-28 27-24 23-0
+ -- ----- ----- ----
+ 1 0 index Data for personalityRoutine[index] */
+
+ if (elf_header.e_machine == EM_ARM
+ && (word & 0x70000000))
+ warn (_("Corrupt ARM compact model table entry: %x \n"), word);
+
+ per_index = (word >> 24) & 0x7f;
+ printf (_(" Compact model index: %d\n"), per_index);
+ if (per_index == 0)
+ {
+ more_words = 0;
+ word <<= 8;
+ remaining--;
+ }
+ else if (per_index < 3)
+ {
+ more_words = (word >> 16) & 0xff;
+ word <<= 16;
+ remaining -= 2;
+ }
+ }
+
+ switch (elf_header.e_machine)
+ {
+ case EM_ARM:
+ if (per_index < 3)
+ {
+ decode_arm_unwind_bytecode (aux, word, remaining, more_words,
+ data_offset, data_sec, data_arm_sec);
+ }
+ else
+ {
+ warn (_("Unknown ARM compact model index encountered\n"));
+ printf (_(" [reserved]\n"));
+ }
+ break;
+
+ case EM_TI_C6000:
+ if (per_index < 3)
+ {
+ decode_tic6x_unwind_bytecode (aux, word, remaining, more_words,
+ data_offset, data_sec, data_arm_sec);
+ }
+ else if (per_index < 5)
+ {
+ if (((word >> 17) & 0x7f) == 0x7f)
+ printf (_(" Restore stack from frame pointer\n"));
+ else
+ printf (_(" Stack increment %d\n"), (word >> 14) & 0x1fc);
+ printf (_(" Registers restored: "));
+ if (per_index == 4)
+ printf (" (compact) ");
+ decode_tic6x_unwind_regmask ((word >> 4) & 0x1fff);
+ putchar ('\n');
+ printf (_(" Return register: %s\n"),
+ tic6x_unwind_regnames[word & 0xf]);
+ }
+ else
+ printf (_(" [reserved (%d)]\n"), per_index);
+ break;
+
+ default:
+ error (_("Unsupported architecture type %d encountered when decoding unwind table"),
+ elf_header.e_machine);
+ }
+
+ /* Decode the descriptors. Not implemented. */
+}
+
+static void
+dump_arm_unwind (struct arm_unw_aux_info *aux, Elf_Internal_Shdr *exidx_sec)
+{
+ struct arm_section exidx_arm_sec, extab_arm_sec;
+ unsigned int i, exidx_len;
+
+ memset (&exidx_arm_sec, 0, sizeof (exidx_arm_sec));
+ memset (&extab_arm_sec, 0, sizeof (extab_arm_sec));
+ exidx_len = exidx_sec->sh_size / 8;
+
+ for (i = 0; i < exidx_len; i++)
+ {
+ unsigned int exidx_fn, exidx_entry;
+ struct absaddr fn_addr, entry_addr;
+ bfd_vma fn;
+
+ fputc ('\n', stdout);
+
+ if (! get_unwind_section_word (aux, & exidx_arm_sec, exidx_sec,
+ 8 * i, & exidx_fn, & fn_addr, NULL)
+ || ! get_unwind_section_word (aux, & exidx_arm_sec, exidx_sec,
+ 8 * i + 4, & exidx_entry, & entry_addr, NULL))
+ {
+ arm_free_section (& exidx_arm_sec);
+ arm_free_section (& extab_arm_sec);
+ return;
+ }
+
+ /* ARM EHABI, Section 5:
+ An index table entry consists of 2 words.
+ The first word contains a prel31 offset to the start of a function, with bit 31 clear. */
+ if (exidx_fn & 0x80000000)
+ warn (_("corrupt index table entry: %x\n"), exidx_fn);
+
+ fn = arm_expand_prel31 (exidx_fn, exidx_sec->sh_addr + 8 * i);
+
+ arm_print_vma_and_name (aux, fn, fn_addr);
+ fputs (": ", stdout);
+
+ if (exidx_entry == 1)
+ {
+ print_vma (exidx_entry, PREFIX_HEX);
+ fputs (" [cantunwind]\n", stdout);
+ }
+ else if (exidx_entry & 0x80000000)
+ {
+ print_vma (exidx_entry, PREFIX_HEX);
+ fputc ('\n', stdout);
+ decode_arm_unwind (aux, exidx_entry, 4, 0, NULL, NULL);
+ }
+ else
+ {
+ bfd_vma table, table_offset = 0;
+ Elf_Internal_Shdr *table_sec;
+
+ fputs ("@", stdout);
+ table = arm_expand_prel31 (exidx_entry, exidx_sec->sh_addr + 8 * i + 4);
+ print_vma (table, PREFIX_HEX);
+ printf ("\n");
+
+ /* Locate the matching .ARM.extab. */
+ if (entry_addr.section != SHN_UNDEF
+ && entry_addr.section < elf_header.e_shnum)
+ {
+ table_sec = section_headers + entry_addr.section;
+ table_offset = entry_addr.offset;
+ }
+ else
+ {
+ table_sec = find_section_by_address (table);
+ if (table_sec != NULL)
+ table_offset = table - table_sec->sh_addr;
+ }
+ if (table_sec == NULL)
+ {
+ warn (_("Could not locate .ARM.extab section containing 0x%lx.\n"),
+ (unsigned long) table);
+ continue;
+ }
+ decode_arm_unwind (aux, 0, 0, table_offset, table_sec,
+ &extab_arm_sec);
+ }
+ }
+
+ printf ("\n");
+
+ arm_free_section (&exidx_arm_sec);
+ arm_free_section (&extab_arm_sec);
+}
+
+/* Used for both ARM and C6X unwinding tables. */
+
+static void
+arm_process_unwind (FILE *file)
+{
+ struct arm_unw_aux_info aux;
+ Elf_Internal_Shdr *unwsec = NULL;
+ Elf_Internal_Shdr *strsec;
+ Elf_Internal_Shdr *sec;
+ unsigned long i;
+ unsigned int sec_type;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_ARM:
+ sec_type = SHT_ARM_EXIDX;
+ break;
+
+ case EM_TI_C6000:
+ sec_type = SHT_C6000_UNWIND;
+ break;
+
+ default:
+ error (_("Unsupported architecture type %d encountered when processing unwind table"),
+ elf_header.e_machine);
+ return;
+ }
+
+ if (string_table == NULL)
+ return;
+
+ memset (& aux, 0, sizeof (aux));
+ aux.file = file;
+
+ for (i = 0, sec = section_headers; i < elf_header.e_shnum; ++i, ++sec)
+ {
+ if (sec->sh_type == SHT_SYMTAB && sec->sh_link < elf_header.e_shnum)
+ {
+ aux.symtab = GET_ELF_SYMBOLS (file, sec, & aux.nsyms);
+
+ strsec = section_headers + sec->sh_link;
+ assert (aux.strtab == NULL);
+ aux.strtab = get_data (NULL, file, strsec->sh_offset,
+ 1, strsec->sh_size, _("string table"));
+ aux.strtab_size = aux.strtab != NULL ? strsec->sh_size : 0;
+ }
+ else if (sec->sh_type == sec_type)
+ unwsec = sec;
+ }
+
+ if (unwsec == NULL)
+ printf (_("\nThere are no unwind sections in this file.\n"));
+ else
+ for (i = 0, sec = section_headers; i < elf_header.e_shnum; ++i, ++sec)
+ {
+ if (sec->sh_type == sec_type)
+ {
+ printf (_("\nUnwind table index '%s' at offset 0x%lx contains %lu entries:\n"),
+ SECTION_NAME (sec),
+ (unsigned long) sec->sh_offset,
+ (unsigned long) (sec->sh_size / (2 * eh_addr_size)));
+
+ dump_arm_unwind (&aux, sec);
+ }
+ }
+
+ if (aux.symtab)
+ free (aux.symtab);
+ if (aux.strtab)
+ free ((char *) aux.strtab);
+}
+
+static void
+process_unwind (FILE * file)
+{
+ struct unwind_handler
+ {
+ int machtype;
+ void (* handler)(FILE *);
+ } handlers[] =
+ {
+ { EM_ARM, arm_process_unwind },
+ { EM_IA_64, ia64_process_unwind },
+ { EM_PARISC, hppa_process_unwind },
+ { EM_TI_C6000, arm_process_unwind },
+ { 0, 0 }
+ };
+ int i;
+
+ if (!do_unwind)
+ return;
+
+ for (i = 0; handlers[i].handler != NULL; i++)
+ if (elf_header.e_machine == handlers[i].machtype)
+ {
+ handlers[i].handler (file);
+ return;
+ }
+
+ printf (_("\nThe decoding of unwind sections for machine type %s is not currently supported.\n"),
+ get_machine_name (elf_header.e_machine));
+}
+
+static void
+dynamic_section_mips_val (Elf_Internal_Dyn * entry)
+{
+ switch (entry->d_tag)
+ {
+ case DT_MIPS_FLAGS:
+ if (entry->d_un.d_val == 0)
+ printf (_("NONE"));
+ else
+ {
+ static const char * opts[] =
+ {
+ "QUICKSTART", "NOTPOT", "NO_LIBRARY_REPLACEMENT",
+ "NO_MOVE", "SGI_ONLY", "GUARANTEE_INIT", "DELTA_C_PLUS_PLUS",
+ "GUARANTEE_START_INIT", "PIXIE", "DEFAULT_DELAY_LOAD",
+ "REQUICKSTART", "REQUICKSTARTED", "CORD", "NO_UNRES_UNDEF",
+ "RLD_ORDER_SAFE"
+ };
+ unsigned int cnt;
+ int first = 1;
+
+ for (cnt = 0; cnt < ARRAY_SIZE (opts); ++cnt)
+ if (entry->d_un.d_val & (1 << cnt))
+ {
+ printf ("%s%s", first ? "" : " ", opts[cnt]);
+ first = 0;
+ }
+ }
+ break;
+
+ case DT_MIPS_IVERSION:
+ if (VALID_DYNAMIC_NAME (entry->d_un.d_val))
+ printf (_("Interface Version: %s"), GET_DYNAMIC_NAME (entry->d_un.d_val));
+ else
+ printf (_("<corrupt: %" BFD_VMA_FMT "d>"), entry->d_un.d_ptr);
+ break;
+
+ case DT_MIPS_TIME_STAMP:
+ {
+ char timebuf[20];
+ struct tm * tmp;
+
+ time_t atime = entry->d_un.d_val;
+ tmp = gmtime (&atime);
+ snprintf (timebuf, sizeof (timebuf), "%04u-%02u-%02uT%02u:%02u:%02u",
+ tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
+ tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
+ printf (_("Time Stamp: %s"), timebuf);
+ }
+ break;
+
+ case DT_MIPS_RLD_VERSION:
+ case DT_MIPS_LOCAL_GOTNO:
+ case DT_MIPS_CONFLICTNO:
+ case DT_MIPS_LIBLISTNO:
+ case DT_MIPS_SYMTABNO:
+ case DT_MIPS_UNREFEXTNO:
+ case DT_MIPS_HIPAGENO:
+ case DT_MIPS_DELTA_CLASS_NO:
+ case DT_MIPS_DELTA_INSTANCE_NO:
+ case DT_MIPS_DELTA_RELOC_NO:
+ case DT_MIPS_DELTA_SYM_NO:
+ case DT_MIPS_DELTA_CLASSSYM_NO:
+ case DT_MIPS_COMPACT_SIZE:
+ print_vma (entry->d_un.d_ptr, DEC);
+ break;
+
+ default:
+ print_vma (entry->d_un.d_ptr, PREFIX_HEX);
+ }
+ putchar ('\n');
+}
+
+static void
+dynamic_section_parisc_val (Elf_Internal_Dyn * entry)
+{
+ switch (entry->d_tag)
+ {
+ case DT_HP_DLD_FLAGS:
+ {
+ static struct
+ {
+ long int bit;
+ const char * str;
+ }
+ flags[] =
+ {
+ { DT_HP_DEBUG_PRIVATE, "HP_DEBUG_PRIVATE" },
+ { DT_HP_DEBUG_CALLBACK, "HP_DEBUG_CALLBACK" },
+ { DT_HP_DEBUG_CALLBACK_BOR, "HP_DEBUG_CALLBACK_BOR" },
+ { DT_HP_NO_ENVVAR, "HP_NO_ENVVAR" },
+ { DT_HP_BIND_NOW, "HP_BIND_NOW" },
+ { DT_HP_BIND_NONFATAL, "HP_BIND_NONFATAL" },
+ { DT_HP_BIND_VERBOSE, "HP_BIND_VERBOSE" },
+ { DT_HP_BIND_RESTRICTED, "HP_BIND_RESTRICTED" },
+ { DT_HP_BIND_SYMBOLIC, "HP_BIND_SYMBOLIC" },
+ { DT_HP_RPATH_FIRST, "HP_RPATH_FIRST" },
+ { DT_HP_BIND_DEPTH_FIRST, "HP_BIND_DEPTH_FIRST" },
+ { DT_HP_GST, "HP_GST" },
+ { DT_HP_SHLIB_FIXED, "HP_SHLIB_FIXED" },
+ { DT_HP_MERGE_SHLIB_SEG, "HP_MERGE_SHLIB_SEG" },
+ { DT_HP_NODELETE, "HP_NODELETE" },
+ { DT_HP_GROUP, "HP_GROUP" },
+ { DT_HP_PROTECT_LINKAGE_TABLE, "HP_PROTECT_LINKAGE_TABLE" }
+ };
+ int first = 1;
+ size_t cnt;
+ bfd_vma val = entry->d_un.d_val;
+
+ for (cnt = 0; cnt < ARRAY_SIZE (flags); ++cnt)
+ if (val & flags[cnt].bit)
+ {
+ if (! first)
+ putchar (' ');
+ fputs (flags[cnt].str, stdout);
+ first = 0;
+ val ^= flags[cnt].bit;
+ }
+
+ if (val != 0 || first)
+ {
+ if (! first)
+ putchar (' ');
+ print_vma (val, HEX);
+ }
+ }
+ break;
+
+ default:
+ print_vma (entry->d_un.d_ptr, PREFIX_HEX);
+ break;
+ }
+ putchar ('\n');
+}
+
+#ifdef BFD64
+
+/* VMS vs Unix time offset and factor. */
+
+#define VMS_EPOCH_OFFSET 35067168000000000LL
+#define VMS_GRANULARITY_FACTOR 10000000
+
+/* Display a VMS time in a human readable format. */
+
+static void
+print_vms_time (bfd_int64_t vmstime)
+{
+ struct tm *tm;
+ time_t unxtime;
+
+ unxtime = (vmstime - VMS_EPOCH_OFFSET) / VMS_GRANULARITY_FACTOR;
+ tm = gmtime (&unxtime);
+ printf ("%04u-%02u-%02uT%02u:%02u:%02u",
+ tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
+ tm->tm_hour, tm->tm_min, tm->tm_sec);
+}
+#endif /* BFD64 */
+
+static void
+dynamic_section_ia64_val (Elf_Internal_Dyn * entry)
+{
+ switch (entry->d_tag)
+ {
+ case DT_IA_64_PLT_RESERVE:
+ /* First 3 slots reserved. */
+ print_vma (entry->d_un.d_ptr, PREFIX_HEX);
+ printf (" -- ");
+ print_vma (entry->d_un.d_ptr + (3 * 8), PREFIX_HEX);
+ break;
+
+ case DT_IA_64_VMS_LINKTIME:
+#ifdef BFD64
+ print_vms_time (entry->d_un.d_val);
+#endif
+ break;
+
+ case DT_IA_64_VMS_LNKFLAGS:
+ print_vma (entry->d_un.d_ptr, PREFIX_HEX);
+ if (entry->d_un.d_val & VMS_LF_CALL_DEBUG)
+ printf (" CALL_DEBUG");
+ if (entry->d_un.d_val & VMS_LF_NOP0BUFS)
+ printf (" NOP0BUFS");
+ if (entry->d_un.d_val & VMS_LF_P0IMAGE)
+ printf (" P0IMAGE");
+ if (entry->d_un.d_val & VMS_LF_MKTHREADS)
+ printf (" MKTHREADS");
+ if (entry->d_un.d_val & VMS_LF_UPCALLS)
+ printf (" UPCALLS");
+ if (entry->d_un.d_val & VMS_LF_IMGSTA)
+ printf (" IMGSTA");
+ if (entry->d_un.d_val & VMS_LF_INITIALIZE)
+ printf (" INITIALIZE");
+ if (entry->d_un.d_val & VMS_LF_MAIN)
+ printf (" MAIN");
+ if (entry->d_un.d_val & VMS_LF_EXE_INIT)
+ printf (" EXE_INIT");
+ if (entry->d_un.d_val & VMS_LF_TBK_IN_IMG)
+ printf (" TBK_IN_IMG");
+ if (entry->d_un.d_val & VMS_LF_DBG_IN_IMG)
+ printf (" DBG_IN_IMG");
+ if (entry->d_un.d_val & VMS_LF_TBK_IN_DSF)
+ printf (" TBK_IN_DSF");
+ if (entry->d_un.d_val & VMS_LF_DBG_IN_DSF)
+ printf (" DBG_IN_DSF");
+ if (entry->d_un.d_val & VMS_LF_SIGNATURES)
+ printf (" SIGNATURES");
+ if (entry->d_un.d_val & VMS_LF_REL_SEG_OFF)
+ printf (" REL_SEG_OFF");
+ break;
+
+ default:
+ print_vma (entry->d_un.d_ptr, PREFIX_HEX);
+ break;
+ }
+ putchar ('\n');
+}
+
+static int
+get_32bit_dynamic_section (FILE * file)
+{
+ Elf32_External_Dyn * edyn;
+ Elf32_External_Dyn * ext;
+ Elf_Internal_Dyn * entry;
+
+ edyn = (Elf32_External_Dyn *) get_data (NULL, file, dynamic_addr, 1,
+ dynamic_size, _("dynamic section"));
+ if (!edyn)
+ return 0;
+
+/* SGI's ELF has more than one section in the DYNAMIC segment, and we
+ might not have the luxury of section headers. Look for the DT_NULL
+ terminator to determine the number of entries. */
+ for (ext = edyn, dynamic_nent = 0;
+ (char *) ext < (char *) edyn + dynamic_size;
+ ext++)
+ {
+ dynamic_nent++;
+ if (BYTE_GET (ext->d_tag) == DT_NULL)
+ break;
+ }
+
+ dynamic_section = (Elf_Internal_Dyn *) cmalloc (dynamic_nent,
+ sizeof (* entry));
+ if (dynamic_section == NULL)
+ {
+ error (_("Out of memory\n"));
+ free (edyn);
+ return 0;
+ }
+
+ for (ext = edyn, entry = dynamic_section;
+ entry < dynamic_section + dynamic_nent;
+ ext++, entry++)
+ {
+ entry->d_tag = BYTE_GET (ext->d_tag);
+ entry->d_un.d_val = BYTE_GET (ext->d_un.d_val);
+ }
+
+ free (edyn);
+
+ return 1;
+}
+
+static int
+get_64bit_dynamic_section (FILE * file)
+{
+ Elf64_External_Dyn * edyn;
+ Elf64_External_Dyn * ext;
+ Elf_Internal_Dyn * entry;
+
+ edyn = (Elf64_External_Dyn *) get_data (NULL, file, dynamic_addr, 1,
+ dynamic_size, _("dynamic section"));
+ if (!edyn)
+ return 0;
+
+/* SGI's ELF has more than one section in the DYNAMIC segment, and we
+ might not have the luxury of section headers. Look for the DT_NULL
+ terminator to determine the number of entries. */
+ for (ext = edyn, dynamic_nent = 0;
+ (char *) ext < (char *) edyn + dynamic_size;
+ ext++)
+ {
+ dynamic_nent++;
+ if (BYTE_GET (ext->d_tag) == DT_NULL)
+ break;
+ }
+
+ dynamic_section = (Elf_Internal_Dyn *) cmalloc (dynamic_nent,
+ sizeof (* entry));
+ if (dynamic_section == NULL)
+ {
+ error (_("Out of memory\n"));
+ free (edyn);
+ return 0;
+ }
+
+ for (ext = edyn, entry = dynamic_section;
+ entry < dynamic_section + dynamic_nent;
+ ext++, entry++)
+ {
+ entry->d_tag = BYTE_GET (ext->d_tag);
+ entry->d_un.d_val = BYTE_GET (ext->d_un.d_val);
+ }
+
+ free (edyn);
+
+ return 1;
+}
+
+static void
+print_dynamic_flags (bfd_vma flags)
+{
+ int first = 1;
+
+ while (flags)
+ {
+ bfd_vma flag;
+
+ flag = flags & - flags;
+ flags &= ~ flag;
+
+ if (first)
+ first = 0;
+ else
+ putc (' ', stdout);
+
+ switch (flag)
+ {
+ case DF_ORIGIN: fputs ("ORIGIN", stdout); break;
+ case DF_SYMBOLIC: fputs ("SYMBOLIC", stdout); break;
+ case DF_TEXTREL: fputs ("TEXTREL", stdout); break;
+ case DF_BIND_NOW: fputs ("BIND_NOW", stdout); break;
+ case DF_STATIC_TLS: fputs ("STATIC_TLS", stdout); break;
+ default: fputs (_("unknown"), stdout); break;
+ }
+ }
+ puts ("");
+}
+
+/* Parse and display the contents of the dynamic section. */
+
+static int
+process_dynamic_section (FILE * file)
+{
+ Elf_Internal_Dyn * entry;
+
+ if (dynamic_size == 0)
+ {
+ if (do_dynamic)
+ printf (_("\nThere is no dynamic section in this file.\n"));
+
+ return 1;
+ }
+
+ if (is_32bit_elf)
+ {
+ if (! get_32bit_dynamic_section (file))
+ return 0;
+ }
+ else if (! get_64bit_dynamic_section (file))
+ return 0;
+
+ /* Find the appropriate symbol table. */
+ if (dynamic_symbols == NULL)
+ {
+ for (entry = dynamic_section;
+ entry < dynamic_section + dynamic_nent;
+ ++entry)
+ {
+ Elf_Internal_Shdr section;
+
+ if (entry->d_tag != DT_SYMTAB)
+ continue;
+
+ dynamic_info[DT_SYMTAB] = entry->d_un.d_val;
+
+ /* Since we do not know how big the symbol table is,
+ we default to reading in the entire file (!) and
+ processing that. This is overkill, I know, but it
+ should work. */
+ section.sh_offset = offset_from_vma (file, entry->d_un.d_val, 0);
+
+ if (archive_file_offset != 0)
+ section.sh_size = archive_file_size - section.sh_offset;
+ else
+ {
+ if (fseek (file, 0, SEEK_END))
+ error (_("Unable to seek to end of file!\n"));
+
+ section.sh_size = ftell (file) - section.sh_offset;
+ }
+
+ if (is_32bit_elf)
+ section.sh_entsize = sizeof (Elf32_External_Sym);
+ else
+ section.sh_entsize = sizeof (Elf64_External_Sym);
+
+ dynamic_symbols = GET_ELF_SYMBOLS (file, &section, & num_dynamic_syms);
+ if (num_dynamic_syms < 1)
+ {
+ error (_("Unable to determine the number of symbols to load\n"));
+ continue;
+ }
+ }
+ }
+
+ /* Similarly find a string table. */
+ if (dynamic_strings == NULL)
+ {
+ for (entry = dynamic_section;
+ entry < dynamic_section + dynamic_nent;
+ ++entry)
+ {
+ unsigned long offset;
+ long str_tab_len;
+
+ if (entry->d_tag != DT_STRTAB)
+ continue;
+
+ dynamic_info[DT_STRTAB] = entry->d_un.d_val;
+
+ /* Since we do not know how big the string table is,
+ we default to reading in the entire file (!) and
+ processing that. This is overkill, I know, but it
+ should work. */
+
+ offset = offset_from_vma (file, entry->d_un.d_val, 0);
+
+ if (archive_file_offset != 0)
+ str_tab_len = archive_file_size - offset;
+ else
+ {
+ if (fseek (file, 0, SEEK_END))
+ error (_("Unable to seek to end of file\n"));
+ str_tab_len = ftell (file) - offset;
+ }
+
+ if (str_tab_len < 1)
+ {
+ error
+ (_("Unable to determine the length of the dynamic string table\n"));
+ continue;
+ }
+
+ dynamic_strings = (char *) get_data (NULL, file, offset, 1,
+ str_tab_len,
+ _("dynamic string table"));
+ dynamic_strings_length = dynamic_strings == NULL ? 0 : str_tab_len;
+ break;
+ }
+ }
+
+ /* And find the syminfo section if available. */
+ if (dynamic_syminfo == NULL)
+ {
+ unsigned long syminsz = 0;
+
+ for (entry = dynamic_section;
+ entry < dynamic_section + dynamic_nent;
+ ++entry)
+ {
+ if (entry->d_tag == DT_SYMINENT)
+ {
+ /* Note: these braces are necessary to avoid a syntax
+ error from the SunOS4 C compiler. */
+ assert (sizeof (Elf_External_Syminfo) == entry->d_un.d_val);
+ }
+ else if (entry->d_tag == DT_SYMINSZ)
+ syminsz = entry->d_un.d_val;
+ else if (entry->d_tag == DT_SYMINFO)
+ dynamic_syminfo_offset = offset_from_vma (file, entry->d_un.d_val,
+ syminsz);
+ }
+
+ if (dynamic_syminfo_offset != 0 && syminsz != 0)
+ {
+ Elf_External_Syminfo * extsyminfo;
+ Elf_External_Syminfo * extsym;
+ Elf_Internal_Syminfo * syminfo;
+
+ /* There is a syminfo section. Read the data. */
+ extsyminfo = (Elf_External_Syminfo *)
+ get_data (NULL, file, dynamic_syminfo_offset, 1, syminsz,
+ _("symbol information"));
+ if (!extsyminfo)
+ return 0;
+
+ dynamic_syminfo = (Elf_Internal_Syminfo *) malloc (syminsz);
+ if (dynamic_syminfo == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ dynamic_syminfo_nent = syminsz / sizeof (Elf_External_Syminfo);
+ for (syminfo = dynamic_syminfo, extsym = extsyminfo;
+ syminfo < dynamic_syminfo + dynamic_syminfo_nent;
+ ++syminfo, ++extsym)
+ {
+ syminfo->si_boundto = BYTE_GET (extsym->si_boundto);
+ syminfo->si_flags = BYTE_GET (extsym->si_flags);
+ }
+
+ free (extsyminfo);
+ }
+ }
+
+ if (do_dynamic && dynamic_addr)
+ printf (_("\nDynamic section at offset 0x%lx contains %u entries:\n"),
+ dynamic_addr, dynamic_nent);
+ if (do_dynamic)
+ printf (_(" Tag Type Name/Value\n"));
+
+ for (entry = dynamic_section;
+ entry < dynamic_section + dynamic_nent;
+ entry++)
+ {
+ if (do_dynamic)
+ {
+ const char * dtype;
+
+ putchar (' ');
+ print_vma (entry->d_tag, FULL_HEX);
+ dtype = get_dynamic_type (entry->d_tag);
+ printf (" (%s)%*s", dtype,
+ ((is_32bit_elf ? 27 : 19)
+ - (int) strlen (dtype)),
+ " ");
+ }
+
+ switch (entry->d_tag)
+ {
+ case DT_FLAGS:
+ if (do_dynamic)
+ print_dynamic_flags (entry->d_un.d_val);
+ break;
+
+ case DT_AUXILIARY:
+ case DT_FILTER:
+ case DT_CONFIG:
+ case DT_DEPAUDIT:
+ case DT_AUDIT:
+ if (do_dynamic)
+ {
+ switch (entry->d_tag)
+ {
+ case DT_AUXILIARY:
+ printf (_("Auxiliary library"));
+ break;
+
+ case DT_FILTER:
+ printf (_("Filter library"));
+ break;
+
+ case DT_CONFIG:
+ printf (_("Configuration file"));
+ break;
+
+ case DT_DEPAUDIT:
+ printf (_("Dependency audit library"));
+ break;
+
+ case DT_AUDIT:
+ printf (_("Audit library"));
+ break;
+ }
+
+ if (VALID_DYNAMIC_NAME (entry->d_un.d_val))
+ printf (": [%s]\n", GET_DYNAMIC_NAME (entry->d_un.d_val));
+ else
+ {
+ printf (": ");
+ print_vma (entry->d_un.d_val, PREFIX_HEX);
+ putchar ('\n');
+ }
+ }
+ break;
+
+ case DT_FEATURE:
+ if (do_dynamic)
+ {
+ printf (_("Flags:"));
+
+ if (entry->d_un.d_val == 0)
+ printf (_(" None\n"));
+ else
+ {
+ unsigned long int val = entry->d_un.d_val;
+
+ if (val & DTF_1_PARINIT)
+ {
+ printf (" PARINIT");
+ val ^= DTF_1_PARINIT;
+ }
+ if (val & DTF_1_CONFEXP)
+ {
+ printf (" CONFEXP");
+ val ^= DTF_1_CONFEXP;
+ }
+ if (val != 0)
+ printf (" %lx", val);
+ puts ("");
+ }
+ }
+ break;
+
+ case DT_POSFLAG_1:
+ if (do_dynamic)
+ {
+ printf (_("Flags:"));
+
+ if (entry->d_un.d_val == 0)
+ printf (_(" None\n"));
+ else
+ {
+ unsigned long int val = entry->d_un.d_val;
+
+ if (val & DF_P1_LAZYLOAD)
+ {
+ printf (" LAZYLOAD");
+ val ^= DF_P1_LAZYLOAD;
+ }
+ if (val & DF_P1_GROUPPERM)
+ {
+ printf (" GROUPPERM");
+ val ^= DF_P1_GROUPPERM;
+ }
+ if (val != 0)
+ printf (" %lx", val);
+ puts ("");
+ }
+ }
+ break;
+
+ case DT_FLAGS_1:
+ if (do_dynamic)
+ {
+ printf (_("Flags:"));
+ if (entry->d_un.d_val == 0)
+ printf (_(" None\n"));
+ else
+ {
+ unsigned long int val = entry->d_un.d_val;
+
+ if (val & DF_1_NOW)
+ {
+ printf (" NOW");
+ val ^= DF_1_NOW;
+ }
+ if (val & DF_1_GLOBAL)
+ {
+ printf (" GLOBAL");
+ val ^= DF_1_GLOBAL;
+ }
+ if (val & DF_1_GROUP)
+ {
+ printf (" GROUP");
+ val ^= DF_1_GROUP;
+ }
+ if (val & DF_1_NODELETE)
+ {
+ printf (" NODELETE");
+ val ^= DF_1_NODELETE;
+ }
+ if (val & DF_1_LOADFLTR)
+ {
+ printf (" LOADFLTR");
+ val ^= DF_1_LOADFLTR;
+ }
+ if (val & DF_1_INITFIRST)
+ {
+ printf (" INITFIRST");
+ val ^= DF_1_INITFIRST;
+ }
+ if (val & DF_1_NOOPEN)
+ {
+ printf (" NOOPEN");
+ val ^= DF_1_NOOPEN;
+ }
+ if (val & DF_1_ORIGIN)
+ {
+ printf (" ORIGIN");
+ val ^= DF_1_ORIGIN;
+ }
+ if (val & DF_1_DIRECT)
+ {
+ printf (" DIRECT");
+ val ^= DF_1_DIRECT;
+ }
+ if (val & DF_1_TRANS)
+ {
+ printf (" TRANS");
+ val ^= DF_1_TRANS;
+ }
+ if (val & DF_1_INTERPOSE)
+ {
+ printf (" INTERPOSE");
+ val ^= DF_1_INTERPOSE;
+ }
+ if (val & DF_1_NODEFLIB)
+ {
+ printf (" NODEFLIB");
+ val ^= DF_1_NODEFLIB;
+ }
+ if (val & DF_1_NODUMP)
+ {
+ printf (" NODUMP");
+ val ^= DF_1_NODUMP;
+ }
+ if (val & DF_1_CONFALT)
+ {
+ printf (" CONFALT");
+ val ^= DF_1_CONFALT;
+ }
+ if (val & DF_1_ENDFILTEE)
+ {
+ printf (" ENDFILTEE");
+ val ^= DF_1_ENDFILTEE;
+ }
+ if (val & DF_1_DISPRELDNE)
+ {
+ printf (" DISPRELDNE");
+ val ^= DF_1_DISPRELDNE;
+ }
+ if (val & DF_1_DISPRELPND)
+ {
+ printf (" DISPRELPND");
+ val ^= DF_1_DISPRELPND;
+ }
+ if (val & DF_1_NODIRECT)
+ {
+ printf (" NODIRECT");
+ val ^= DF_1_NODIRECT;
+ }
+ if (val & DF_1_IGNMULDEF)
+ {
+ printf (" IGNMULDEF");
+ val ^= DF_1_IGNMULDEF;
+ }
+ if (val & DF_1_NOKSYMS)
+ {
+ printf (" NOKSYMS");
+ val ^= DF_1_NOKSYMS;
+ }
+ if (val & DF_1_NOHDR)
+ {
+ printf (" NOHDR");
+ val ^= DF_1_NOHDR;
+ }
+ if (val & DF_1_EDITED)
+ {
+ printf (" EDITED");
+ val ^= DF_1_EDITED;
+ }
+ if (val & DF_1_NORELOC)
+ {
+ printf (" NORELOC");
+ val ^= DF_1_NORELOC;
+ }
+ if (val & DF_1_SYMINTPOSE)
+ {
+ printf (" SYMINTPOSE");
+ val ^= DF_1_SYMINTPOSE;
+ }
+ if (val & DF_1_GLOBAUDIT)
+ {
+ printf (" GLOBAUDIT");
+ val ^= DF_1_GLOBAUDIT;
+ }
+ if (val & DF_1_SINGLETON)
+ {
+ printf (" SINGLETON");
+ val ^= DF_1_SINGLETON;
+ }
+ if (val != 0)
+ printf (" %lx", val);
+ puts ("");
+ }
+ }
+ break;
+
+ case DT_PLTREL:
+ dynamic_info[entry->d_tag] = entry->d_un.d_val;
+ if (do_dynamic)
+ puts (get_dynamic_type (entry->d_un.d_val));
+ break;
+
+ case DT_NULL :
+ case DT_NEEDED :
+ case DT_PLTGOT :
+ case DT_HASH :
+ case DT_STRTAB :
+ case DT_SYMTAB :
+ case DT_RELA :
+ case DT_INIT :
+ case DT_FINI :
+ case DT_SONAME :
+ case DT_RPATH :
+ case DT_SYMBOLIC:
+ case DT_REL :
+ case DT_DEBUG :
+ case DT_TEXTREL :
+ case DT_JMPREL :
+ case DT_RUNPATH :
+ dynamic_info[entry->d_tag] = entry->d_un.d_val;
+
+ if (do_dynamic)
+ {
+ char * name;
+
+ if (VALID_DYNAMIC_NAME (entry->d_un.d_val))
+ name = GET_DYNAMIC_NAME (entry->d_un.d_val);
+ else
+ name = NULL;
+
+ if (name)
+ {
+ switch (entry->d_tag)
+ {
+ case DT_NEEDED:
+ printf (_("Shared library: [%s]"), name);
+
+ if (streq (name, program_interpreter))
+ printf (_(" program interpreter"));
+ break;
+
+ case DT_SONAME:
+ printf (_("Library soname: [%s]"), name);
+ break;
+
+ case DT_RPATH:
+ printf (_("Library rpath: [%s]"), name);
+ break;
+
+ case DT_RUNPATH:
+ printf (_("Library runpath: [%s]"), name);
+ break;
+
+ default:
+ print_vma (entry->d_un.d_val, PREFIX_HEX);
+ break;
+ }
+ }
+ else
+ print_vma (entry->d_un.d_val, PREFIX_HEX);
+
+ putchar ('\n');
+ }
+ break;
+
+ case DT_PLTRELSZ:
+ case DT_RELASZ :
+ case DT_STRSZ :
+ case DT_RELSZ :
+ case DT_RELAENT :
+ case DT_SYMENT :
+ case DT_RELENT :
+ dynamic_info[entry->d_tag] = entry->d_un.d_val;
+ case DT_PLTPADSZ:
+ case DT_MOVEENT :
+ case DT_MOVESZ :
+ case DT_INIT_ARRAYSZ:
+ case DT_FINI_ARRAYSZ:
+ case DT_GNU_CONFLICTSZ:
+ case DT_GNU_LIBLISTSZ:
+ if (do_dynamic)
+ {
+ print_vma (entry->d_un.d_val, UNSIGNED);
+ printf (_(" (bytes)\n"));
+ }
+ break;
+
+ case DT_VERDEFNUM:
+ case DT_VERNEEDNUM:
+ case DT_RELACOUNT:
+ case DT_RELCOUNT:
+ if (do_dynamic)
+ {
+ print_vma (entry->d_un.d_val, UNSIGNED);
+ putchar ('\n');
+ }
+ break;
+
+ case DT_SYMINSZ:
+ case DT_SYMINENT:
+ case DT_SYMINFO:
+ case DT_USED:
+ case DT_INIT_ARRAY:
+ case DT_FINI_ARRAY:
+ if (do_dynamic)
+ {
+ if (entry->d_tag == DT_USED
+ && VALID_DYNAMIC_NAME (entry->d_un.d_val))
+ {
+ char * name = GET_DYNAMIC_NAME (entry->d_un.d_val);
+
+ if (*name)
+ {
+ printf (_("Not needed object: [%s]\n"), name);
+ break;
+ }
+ }
+
+ print_vma (entry->d_un.d_val, PREFIX_HEX);
+ putchar ('\n');
+ }
+ break;
+
+ case DT_BIND_NOW:
+ /* The value of this entry is ignored. */
+ if (do_dynamic)
+ putchar ('\n');
+ break;
+
+ case DT_GNU_PRELINKED:
+ if (do_dynamic)
+ {
+ struct tm * tmp;
+ time_t atime = entry->d_un.d_val;
+
+ tmp = gmtime (&atime);
+ printf ("%04u-%02u-%02uT%02u:%02u:%02u\n",
+ tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
+ tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
+
+ }
+ break;
+
+ case DT_GNU_HASH:
+ dynamic_info_DT_GNU_HASH = entry->d_un.d_val;
+ if (do_dynamic)
+ {
+ print_vma (entry->d_un.d_val, PREFIX_HEX);
+ putchar ('\n');
+ }
+ break;
+
+ default:
+ if ((entry->d_tag >= DT_VERSYM) && (entry->d_tag <= DT_VERNEEDNUM))
+ version_info[DT_VERSIONTAGIDX (entry->d_tag)] =
+ entry->d_un.d_val;
+
+ if (do_dynamic)
+ {
+ switch (elf_header.e_machine)
+ {
+ case EM_MIPS:
+ case EM_MIPS_RS3_LE:
+ dynamic_section_mips_val (entry);
+ break;
+ case EM_PARISC:
+ dynamic_section_parisc_val (entry);
+ break;
+ case EM_IA_64:
+ dynamic_section_ia64_val (entry);
+ break;
+ default:
+ print_vma (entry->d_un.d_val, PREFIX_HEX);
+ putchar ('\n');
+ }
+ }
+ break;
+ }
+ }
+
+ return 1;
+}
+
+static char *
+get_ver_flags (unsigned int flags)
+{
+ static char buff[32];
+
+ buff[0] = 0;
+
+ if (flags == 0)
+ return _("none");
+
+ if (flags & VER_FLG_BASE)
+ strcat (buff, "BASE ");
+
+ if (flags & VER_FLG_WEAK)
+ {
+ if (flags & VER_FLG_BASE)
+ strcat (buff, "| ");
+
+ strcat (buff, "WEAK ");
+ }
+
+ if (flags & VER_FLG_INFO)
+ {
+ if (flags & (VER_FLG_BASE|VER_FLG_WEAK))
+ strcat (buff, "| ");
+
+ strcat (buff, "INFO ");
+ }
+
+ if (flags & ~(VER_FLG_BASE | VER_FLG_WEAK | VER_FLG_INFO))
+ strcat (buff, _("| <unknown>"));
+
+ return buff;
+}
+
+/* Display the contents of the version sections. */
+
+static int
+process_version_sections (FILE * file)
+{
+ Elf_Internal_Shdr * section;
+ unsigned i;
+ int found = 0;
+
+ if (! do_version)
+ return 1;
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum;
+ i++, section++)
+ {
+ switch (section->sh_type)
+ {
+ case SHT_GNU_verdef:
+ {
+ Elf_External_Verdef * edefs;
+ unsigned int idx;
+ unsigned int cnt;
+ char * endbuf;
+
+ found = 1;
+
+ printf
+ (_("\nVersion definition section '%s' contains %u entries:\n"),
+ SECTION_NAME (section), section->sh_info);
+
+ printf (_(" Addr: 0x"));
+ printf_vma (section->sh_addr);
+ printf (_(" Offset: %#08lx Link: %u (%s)\n"),
+ (unsigned long) section->sh_offset, section->sh_link,
+ section->sh_link < elf_header.e_shnum
+ ? SECTION_NAME (section_headers + section->sh_link)
+ : _("<corrupt>"));
+
+ edefs = (Elf_External_Verdef *)
+ get_data (NULL, file, section->sh_offset, 1,section->sh_size,
+ _("version definition section"));
+ if (!edefs)
+ break;
+ endbuf = (char *) edefs + section->sh_size;
+
+ for (idx = cnt = 0; cnt < section->sh_info; ++cnt)
+ {
+ char * vstart;
+ Elf_External_Verdef * edef;
+ Elf_Internal_Verdef ent;
+ Elf_External_Verdaux * eaux;
+ Elf_Internal_Verdaux aux;
+ int j;
+ int isum;
+
+ /* Check for very large indicies. */
+ if (idx > (size_t) (endbuf - (char *) edefs))
+ break;
+
+ vstart = ((char *) edefs) + idx;
+ if (vstart + sizeof (*edef) > endbuf)
+ break;
+
+ edef = (Elf_External_Verdef *) vstart;
+
+ ent.vd_version = BYTE_GET (edef->vd_version);
+ ent.vd_flags = BYTE_GET (edef->vd_flags);
+ ent.vd_ndx = BYTE_GET (edef->vd_ndx);
+ ent.vd_cnt = BYTE_GET (edef->vd_cnt);
+ ent.vd_hash = BYTE_GET (edef->vd_hash);
+ ent.vd_aux = BYTE_GET (edef->vd_aux);
+ ent.vd_next = BYTE_GET (edef->vd_next);
+
+ printf (_(" %#06x: Rev: %d Flags: %s"),
+ idx, ent.vd_version, get_ver_flags (ent.vd_flags));
+
+ printf (_(" Index: %d Cnt: %d "),
+ ent.vd_ndx, ent.vd_cnt);
+
+ /* Check for overflow. */
+ if (ent.vd_aux > (size_t) (endbuf - vstart))
+ break;
+
+ vstart += ent.vd_aux;
+
+ eaux = (Elf_External_Verdaux *) vstart;
+
+ aux.vda_name = BYTE_GET (eaux->vda_name);
+ aux.vda_next = BYTE_GET (eaux->vda_next);
+
+ if (VALID_DYNAMIC_NAME (aux.vda_name))
+ printf (_("Name: %s\n"), GET_DYNAMIC_NAME (aux.vda_name));
+ else
+ printf (_("Name index: %ld\n"), aux.vda_name);
+
+ isum = idx + ent.vd_aux;
+
+ for (j = 1; j < ent.vd_cnt; j++)
+ {
+ /* Check for overflow. */
+ if (aux.vda_next > (size_t) (endbuf - vstart))
+ break;
+
+ isum += aux.vda_next;
+ vstart += aux.vda_next;
+
+ eaux = (Elf_External_Verdaux *) vstart;
+ if (vstart + sizeof (*eaux) > endbuf)
+ break;
+
+ aux.vda_name = BYTE_GET (eaux->vda_name);
+ aux.vda_next = BYTE_GET (eaux->vda_next);
+
+ if (VALID_DYNAMIC_NAME (aux.vda_name))
+ printf (_(" %#06x: Parent %d: %s\n"),
+ isum, j, GET_DYNAMIC_NAME (aux.vda_name));
+ else
+ printf (_(" %#06x: Parent %d, name index: %ld\n"),
+ isum, j, aux.vda_name);
+ }
+
+ if (j < ent.vd_cnt)
+ printf (_(" Version def aux past end of section\n"));
+
+ idx += ent.vd_next;
+ }
+
+ if (cnt < section->sh_info)
+ printf (_(" Version definition past end of section\n"));
+
+ free (edefs);
+ }
+ break;
+
+ case SHT_GNU_verneed:
+ {
+ Elf_External_Verneed * eneed;
+ unsigned int idx;
+ unsigned int cnt;
+ char * endbuf;
+
+ found = 1;
+
+ printf (_("\nVersion needs section '%s' contains %u entries:\n"),
+ SECTION_NAME (section), section->sh_info);
+
+ printf (_(" Addr: 0x"));
+ printf_vma (section->sh_addr);
+ printf (_(" Offset: %#08lx Link: %u (%s)\n"),
+ (unsigned long) section->sh_offset, section->sh_link,
+ section->sh_link < elf_header.e_shnum
+ ? SECTION_NAME (section_headers + section->sh_link)
+ : _("<corrupt>"));
+
+ eneed = (Elf_External_Verneed *) get_data (NULL, file,
+ section->sh_offset, 1,
+ section->sh_size,
+ _("Version Needs section"));
+ if (!eneed)
+ break;
+ endbuf = (char *) eneed + section->sh_size;
+
+ for (idx = cnt = 0; cnt < section->sh_info; ++cnt)
+ {
+ Elf_External_Verneed * entry;
+ Elf_Internal_Verneed ent;
+ int j;
+ int isum;
+ char * vstart;
+
+ if (idx > (size_t) (endbuf - (char *) eneed))
+ break;
+
+ vstart = ((char *) eneed) + idx;
+ if (vstart + sizeof (*entry) > endbuf)
+ break;
+
+ entry = (Elf_External_Verneed *) vstart;
+
+ ent.vn_version = BYTE_GET (entry->vn_version);
+ ent.vn_cnt = BYTE_GET (entry->vn_cnt);
+ ent.vn_file = BYTE_GET (entry->vn_file);
+ ent.vn_aux = BYTE_GET (entry->vn_aux);
+ ent.vn_next = BYTE_GET (entry->vn_next);
+
+ printf (_(" %#06x: Version: %d"), idx, ent.vn_version);
+
+ if (VALID_DYNAMIC_NAME (ent.vn_file))
+ printf (_(" File: %s"), GET_DYNAMIC_NAME (ent.vn_file));
+ else
+ printf (_(" File: %lx"), ent.vn_file);
+
+ printf (_(" Cnt: %d\n"), ent.vn_cnt);
+
+ /* Check for overflow. */
+ if (ent.vn_aux > (size_t) (endbuf - vstart))
+ break;
+
+ vstart += ent.vn_aux;
+
+ for (j = 0, isum = idx + ent.vn_aux; j < ent.vn_cnt; ++j)
+ {
+ Elf_External_Vernaux * eaux;
+ Elf_Internal_Vernaux aux;
+
+ if (vstart + sizeof (*eaux) > endbuf)
+ break;
+ eaux = (Elf_External_Vernaux *) vstart;
+
+ aux.vna_hash = BYTE_GET (eaux->vna_hash);
+ aux.vna_flags = BYTE_GET (eaux->vna_flags);
+ aux.vna_other = BYTE_GET (eaux->vna_other);
+ aux.vna_name = BYTE_GET (eaux->vna_name);
+ aux.vna_next = BYTE_GET (eaux->vna_next);
+
+ if (VALID_DYNAMIC_NAME (aux.vna_name))
+ printf (_(" %#06x: Name: %s"),
+ isum, GET_DYNAMIC_NAME (aux.vna_name));
+ else
+ printf (_(" %#06x: Name index: %lx"),
+ isum, aux.vna_name);
+
+ printf (_(" Flags: %s Version: %d\n"),
+ get_ver_flags (aux.vna_flags), aux.vna_other);
+
+ /* Check for overflow. */
+ if (aux.vna_next > (size_t) (endbuf - vstart))
+ break;
+
+ isum += aux.vna_next;
+ vstart += aux.vna_next;
+ }
+
+ if (j < ent.vn_cnt)
+ warn (_("Missing Version Needs auxillary information\n"));
+
+ idx += ent.vn_next;
+ }
+
+ if (cnt < section->sh_info)
+ warn (_("Missing Version Needs information\n"));
+
+ free (eneed);
+ }
+ break;
+
+ case SHT_GNU_versym:
+ {
+ Elf_Internal_Shdr * link_section;
+ int total;
+ int cnt;
+ unsigned char * edata;
+ unsigned short * data;
+ char * strtab;
+ Elf_Internal_Sym * symbols;
+ Elf_Internal_Shdr * string_sec;
+ unsigned long num_syms;
+ long off;
+
+ if (section->sh_link >= elf_header.e_shnum)
+ break;
+
+ link_section = section_headers + section->sh_link;
+ total = section->sh_size / sizeof (Elf_External_Versym);
+
+ if (link_section->sh_link >= elf_header.e_shnum)
+ break;
+
+ found = 1;
+
+ symbols = GET_ELF_SYMBOLS (file, link_section, & num_syms);
+ if (symbols == NULL)
+ break;
+
+ string_sec = section_headers + link_section->sh_link;
+
+ strtab = (char *) get_data (NULL, file, string_sec->sh_offset, 1,
+ string_sec->sh_size,
+ _("version string table"));
+ if (!strtab)
+ {
+ free (symbols);
+ break;
+ }
+
+ printf (_("\nVersion symbols section '%s' contains %d entries:\n"),
+ SECTION_NAME (section), total);
+
+ printf (_(" Addr: "));
+ printf_vma (section->sh_addr);
+ printf (_(" Offset: %#08lx Link: %u (%s)\n"),
+ (unsigned long) section->sh_offset, section->sh_link,
+ SECTION_NAME (link_section));
+
+ off = offset_from_vma (file,
+ version_info[DT_VERSIONTAGIDX (DT_VERSYM)],
+ total * sizeof (short));
+ edata = (unsigned char *) get_data (NULL, file, off, total,
+ sizeof (short),
+ _("version symbol data"));
+ if (!edata)
+ {
+ free (strtab);
+ free (symbols);
+ break;
+ }
+
+ data = (short unsigned int *) cmalloc (total, sizeof (short));
+
+ for (cnt = total; cnt --;)
+ data[cnt] = byte_get (edata + cnt * sizeof (short),
+ sizeof (short));
+
+ free (edata);
+
+ for (cnt = 0; cnt < total; cnt += 4)
+ {
+ int j, nn;
+ int check_def, check_need;
+ char * name;
+
+ printf (" %03x:", cnt);
+
+ for (j = 0; (j < 4) && (cnt + j) < total; ++j)
+ switch (data[cnt + j])
+ {
+ case 0:
+ fputs (_(" 0 (*local*) "), stdout);
+ break;
+
+ case 1:
+ fputs (_(" 1 (*global*) "), stdout);
+ break;
+
+ default:
+ nn = printf ("%4x%c", data[cnt + j] & VERSYM_VERSION,
+ data[cnt + j] & VERSYM_HIDDEN ? 'h' : ' ');
+
+ /* If this index value is greater than the size of the symbols
+ array, break to avoid an out-of-bounds read. */
+ if ((unsigned long)(cnt + j) >= num_syms)
+ {
+ warn (_("invalid index into symbol array\n"));
+ break;
+ }
+
+ check_def = 1;
+ check_need = 1;
+ if (symbols[cnt + j].st_shndx >= elf_header.e_shnum
+ || section_headers[symbols[cnt + j].st_shndx].sh_type
+ != SHT_NOBITS)
+ {
+ if (symbols[cnt + j].st_shndx == SHN_UNDEF)
+ check_def = 0;
+ else
+ check_need = 0;
+ }
+
+ if (check_need
+ && version_info[DT_VERSIONTAGIDX (DT_VERNEED)])
+ {
+ Elf_Internal_Verneed ivn;
+ unsigned long offset;
+
+ offset = offset_from_vma
+ (file, version_info[DT_VERSIONTAGIDX (DT_VERNEED)],
+ sizeof (Elf_External_Verneed));
+
+ do
+ {
+ Elf_Internal_Vernaux ivna;
+ Elf_External_Verneed evn;
+ Elf_External_Vernaux evna;
+ unsigned long a_off;
+
+ if (get_data (&evn, file, offset, sizeof (evn), 1,
+ _("version need")) == NULL)
+ break;
+
+ ivn.vn_aux = BYTE_GET (evn.vn_aux);
+ ivn.vn_next = BYTE_GET (evn.vn_next);
+
+ a_off = offset + ivn.vn_aux;
+
+ do
+ {
+ if (get_data (&evna, file, a_off, sizeof (evna),
+ 1, _("version need aux (2)")) == NULL)
+ {
+ ivna.vna_next = 0;
+ ivna.vna_other = 0;
+ }
+ else
+ {
+ ivna.vna_next = BYTE_GET (evna.vna_next);
+ ivna.vna_other = BYTE_GET (evna.vna_other);
+ }
+
+ a_off += ivna.vna_next;
+ }
+ while (ivna.vna_other != data[cnt + j]
+ && ivna.vna_next != 0);
+
+ if (ivna.vna_other == data[cnt + j])
+ {
+ ivna.vna_name = BYTE_GET (evna.vna_name);
+
+ if (ivna.vna_name >= string_sec->sh_size)
+ name = _("*invalid*");
+ else
+ name = strtab + ivna.vna_name;
+ nn += printf ("(%s%-*s",
+ name,
+ 12 - (int) strlen (name),
+ ")");
+ check_def = 0;
+ break;
+ }
+
+ offset += ivn.vn_next;
+ }
+ while (ivn.vn_next);
+ }
+
+ if (check_def && data[cnt + j] != 0x8001
+ && version_info[DT_VERSIONTAGIDX (DT_VERDEF)])
+ {
+ Elf_Internal_Verdef ivd;
+ Elf_External_Verdef evd;
+ unsigned long offset;
+
+ offset = offset_from_vma
+ (file, version_info[DT_VERSIONTAGIDX (DT_VERDEF)],
+ sizeof evd);
+
+ do
+ {
+ if (get_data (&evd, file, offset, sizeof (evd), 1,
+ _("version def")) == NULL)
+ {
+ ivd.vd_next = 0;
+ ivd.vd_ndx = 0;
+ }
+ else
+ {
+ ivd.vd_next = BYTE_GET (evd.vd_next);
+ ivd.vd_ndx = BYTE_GET (evd.vd_ndx);
+ }
+
+ offset += ivd.vd_next;
+ }
+ while (ivd.vd_ndx != (data[cnt + j] & VERSYM_VERSION)
+ && ivd.vd_next != 0);
+
+ if (ivd.vd_ndx == (data[cnt + j] & VERSYM_VERSION))
+ {
+ Elf_External_Verdaux evda;
+ Elf_Internal_Verdaux ivda;
+
+ ivd.vd_aux = BYTE_GET (evd.vd_aux);
+
+ if (get_data (&evda, file,
+ offset - ivd.vd_next + ivd.vd_aux,
+ sizeof (evda), 1,
+ _("version def aux")) == NULL)
+ break;
+
+ ivda.vda_name = BYTE_GET (evda.vda_name);
+
+ if (ivda.vda_name >= string_sec->sh_size)
+ name = _("*invalid*");
+ else
+ name = strtab + ivda.vda_name;
+ nn += printf ("(%s%-*s",
+ name,
+ 12 - (int) strlen (name),
+ ")");
+ }
+ }
+
+ if (nn < 18)
+ printf ("%*c", 18 - nn, ' ');
+ }
+
+ putchar ('\n');
+ }
+
+ free (data);
+ free (strtab);
+ free (symbols);
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ if (! found)
+ printf (_("\nNo version information found in this file.\n"));
+
+ return 1;
+}
+
+static const char *
+get_symbol_binding (unsigned int binding)
+{
+ static char buff[32];
+
+ switch (binding)
+ {
+ case STB_LOCAL: return "LOCAL";
+ case STB_GLOBAL: return "GLOBAL";
+ case STB_WEAK: return "WEAK";
+ default:
+ if (binding >= STB_LOPROC && binding <= STB_HIPROC)
+ snprintf (buff, sizeof (buff), _("<processor specific>: %d"),
+ binding);
+ else if (binding >= STB_LOOS && binding <= STB_HIOS)
+ {
+ if (binding == STB_GNU_UNIQUE
+ && (elf_header.e_ident[EI_OSABI] == ELFOSABI_GNU
+ /* GNU is still using the default value 0. */
+ || elf_header.e_ident[EI_OSABI] == ELFOSABI_NONE))
+ return "UNIQUE";
+ snprintf (buff, sizeof (buff), _("<OS specific>: %d"), binding);
+ }
+ else
+ snprintf (buff, sizeof (buff), _("<unknown>: %d"), binding);
+ return buff;
+ }
+}
+
+static const char *
+get_symbol_type (unsigned int type)
+{
+ static char buff[32];
+
+ switch (type)
+ {
+ case STT_NOTYPE: return "NOTYPE";
+ case STT_OBJECT: return "OBJECT";
+ case STT_FUNC: return "FUNC";
+ case STT_SECTION: return "SECTION";
+ case STT_FILE: return "FILE";
+ case STT_COMMON: return "COMMON";
+ case STT_TLS: return "TLS";
+ case STT_RELC: return "RELC";
+ case STT_SRELC: return "SRELC";
+ default:
+ if (type >= STT_LOPROC && type <= STT_HIPROC)
+ {
+ if (elf_header.e_machine == EM_ARM)
+ {
+ if (type == STT_ARM_TFUNC)
+ return "THUMB_FUNC";
+ if (type == STT_ARM_16BIT)
+ return "THUMB_LABEL";
+ }
+
+ if (elf_header.e_machine == EM_SPARCV9 && type == STT_REGISTER)
+ return "REGISTER";
+
+ if (elf_header.e_machine == EM_PARISC && type == STT_PARISC_MILLI)
+ return "PARISC_MILLI";
+
+ snprintf (buff, sizeof (buff), _("<processor specific>: %d"), type);
+ }
+ else if (type >= STT_LOOS && type <= STT_HIOS)
+ {
+ if (elf_header.e_machine == EM_PARISC)
+ {
+ if (type == STT_HP_OPAQUE)
+ return "HP_OPAQUE";
+ if (type == STT_HP_STUB)
+ return "HP_STUB";
+ }
+
+ if (type == STT_GNU_IFUNC
+ && (elf_header.e_ident[EI_OSABI] == ELFOSABI_GNU
+ || elf_header.e_ident[EI_OSABI] == ELFOSABI_FREEBSD
+ /* GNU is still using the default value 0. */
+ || elf_header.e_ident[EI_OSABI] == ELFOSABI_NONE))
+ return "IFUNC";
+
+ snprintf (buff, sizeof (buff), _("<OS specific>: %d"), type);
+ }
+ else
+ snprintf (buff, sizeof (buff), _("<unknown>: %d"), type);
+ return buff;
+ }
+}
+
+static const char *
+get_symbol_visibility (unsigned int visibility)
+{
+ switch (visibility)
+ {
+ case STV_DEFAULT: return "DEFAULT";
+ case STV_INTERNAL: return "INTERNAL";
+ case STV_HIDDEN: return "HIDDEN";
+ case STV_PROTECTED: return "PROTECTED";
+ default: abort ();
+ }
+}
+
+static const char *
+get_mips_symbol_other (unsigned int other)
+{
+ switch (other)
+ {
+ case STO_OPTIONAL:
+ return "OPTIONAL";
+ case STO_MIPS_PLT:
+ return "MIPS PLT";
+ case STO_MIPS_PIC:
+ return "MIPS PIC";
+ case STO_MICROMIPS:
+ return "MICROMIPS";
+ case STO_MICROMIPS | STO_MIPS_PIC:
+ return "MICROMIPS, MIPS PIC";
+ case STO_MIPS16:
+ return "MIPS16";
+ default:
+ return NULL;
+ }
+}
+
+static const char *
+get_ia64_symbol_other (unsigned int other)
+{
+ if (is_ia64_vms ())
+ {
+ static char res[32];
+
+ res[0] = 0;
+
+ /* Function types is for images and .STB files only. */
+ switch (elf_header.e_type)
+ {
+ case ET_DYN:
+ case ET_EXEC:
+ switch (VMS_ST_FUNC_TYPE (other))
+ {
+ case VMS_SFT_CODE_ADDR:
+ strcat (res, " CA");
+ break;
+ case VMS_SFT_SYMV_IDX:
+ strcat (res, " VEC");
+ break;
+ case VMS_SFT_FD:
+ strcat (res, " FD");
+ break;
+ case VMS_SFT_RESERVE:
+ strcat (res, " RSV");
+ break;
+ default:
+ abort ();
+ }
+ break;
+ default:
+ break;
+ }
+ switch (VMS_ST_LINKAGE (other))
+ {
+ case VMS_STL_IGNORE:
+ strcat (res, " IGN");
+ break;
+ case VMS_STL_RESERVE:
+ strcat (res, " RSV");
+ break;
+ case VMS_STL_STD:
+ strcat (res, " STD");
+ break;
+ case VMS_STL_LNK:
+ strcat (res, " LNK");
+ break;
+ default:
+ abort ();
+ }
+
+ if (res[0] != 0)
+ return res + 1;
+ else
+ return res;
+ }
+ return NULL;
+}
+
+static const char *
+get_ppc64_symbol_other (unsigned int other)
+{
+ if (PPC64_LOCAL_ENTRY_OFFSET (other) != 0)
+ {
+ static char buf[32];
+ snprintf (buf, sizeof buf, _("<localentry>: %d"),
+ PPC64_LOCAL_ENTRY_OFFSET (other));
+ return buf;
+ }
+ return NULL;
+}
+
+static const char *
+get_symbol_other (unsigned int other)
+{
+ const char * result = NULL;
+ static char buff [32];
+
+ if (other == 0)
+ return "";
+
+ switch (elf_header.e_machine)
+ {
+ case EM_MIPS:
+ result = get_mips_symbol_other (other);
+ break;
+ case EM_IA_64:
+ result = get_ia64_symbol_other (other);
+ break;
+ case EM_PPC64:
+ result = get_ppc64_symbol_other (other);
+ break;
+ default:
+ break;
+ }
+
+ if (result)
+ return result;
+
+ snprintf (buff, sizeof buff, _("<other>: %x"), other);
+ return buff;
+}
+
+static const char *
+get_symbol_index_type (unsigned int type)
+{
+ static char buff[32];
+
+ switch (type)
+ {
+ case SHN_UNDEF: return "UND";
+ case SHN_ABS: return "ABS";
+ case SHN_COMMON: return "COM";
+ default:
+ if (type == SHN_IA_64_ANSI_COMMON
+ && elf_header.e_machine == EM_IA_64
+ && elf_header.e_ident[EI_OSABI] == ELFOSABI_HPUX)
+ return "ANSI_COM";
+ else if ((elf_header.e_machine == EM_X86_64
+ || elf_header.e_machine == EM_L1OM
+ || elf_header.e_machine == EM_K1OM)
+ && type == SHN_X86_64_LCOMMON)
+ return "LARGE_COM";
+ else if ((type == SHN_MIPS_SCOMMON
+ && elf_header.e_machine == EM_MIPS)
+ || (type == SHN_TIC6X_SCOMMON
+ && elf_header.e_machine == EM_TI_C6000))
+ return "SCOM";
+ else if (type == SHN_MIPS_SUNDEFINED
+ && elf_header.e_machine == EM_MIPS)
+ return "SUND";
+ else if (type >= SHN_LOPROC && type <= SHN_HIPROC)
+ sprintf (buff, "PRC[0x%04x]", type & 0xffff);
+ else if (type >= SHN_LOOS && type <= SHN_HIOS)
+ sprintf (buff, "OS [0x%04x]", type & 0xffff);
+ else if (type >= SHN_LORESERVE)
+ sprintf (buff, "RSV[0x%04x]", type & 0xffff);
+ else if (type >= elf_header.e_shnum)
+ sprintf (buff, "bad section index[%3d]", type);
+ else
+ sprintf (buff, "%3d", type);
+ break;
+ }
+
+ return buff;
+}
+
+static bfd_vma *
+get_dynamic_data (FILE * file, unsigned int number, unsigned int ent_size)
+{
+ unsigned char * e_data;
+ bfd_vma * i_data;
+
+ e_data = (unsigned char *) cmalloc (number, ent_size);
+
+ if (e_data == NULL)
+ {
+ error (_("Out of memory\n"));
+ return NULL;
+ }
+
+ if (fread (e_data, ent_size, number, file) != number)
+ {
+ error (_("Unable to read in dynamic data\n"));
+ return NULL;
+ }
+
+ i_data = (bfd_vma *) cmalloc (number, sizeof (*i_data));
+
+ if (i_data == NULL)
+ {
+ error (_("Out of memory\n"));
+ free (e_data);
+ return NULL;
+ }
+
+ while (number--)
+ i_data[number] = byte_get (e_data + number * ent_size, ent_size);
+
+ free (e_data);
+
+ return i_data;
+}
+
+static void
+print_dynamic_symbol (bfd_vma si, unsigned long hn)
+{
+ Elf_Internal_Sym * psym;
+ int n;
+
+ psym = dynamic_symbols + si;
+
+ n = print_vma (si, DEC_5);
+ if (n < 5)
+ fputs (&" "[n], stdout);
+ printf (" %3lu: ", hn);
+ print_vma (psym->st_value, LONG_HEX);
+ putchar (' ');
+ print_vma (psym->st_size, DEC_5);
+
+ printf (" %-7s", get_symbol_type (ELF_ST_TYPE (psym->st_info)));
+ printf (" %-6s", get_symbol_binding (ELF_ST_BIND (psym->st_info)));
+ printf (" %-7s", get_symbol_visibility (ELF_ST_VISIBILITY (psym->st_other)));
+ /* Check to see if any other bits in the st_other field are set.
+ Note - displaying this information disrupts the layout of the
+ table being generated, but for the moment this case is very
+ rare. */
+ if (psym->st_other ^ ELF_ST_VISIBILITY (psym->st_other))
+ printf (" [%s] ", get_symbol_other (psym->st_other ^ ELF_ST_VISIBILITY (psym->st_other)));
+ printf (" %3.3s ", get_symbol_index_type (psym->st_shndx));
+ if (VALID_DYNAMIC_NAME (psym->st_name))
+ print_symbol (25, GET_DYNAMIC_NAME (psym->st_name));
+ else
+ printf (_(" <corrupt: %14ld>"), psym->st_name);
+ putchar ('\n');
+}
+
+/* Dump the symbol table. */
+static int
+process_symbol_table (FILE * file)
+{
+ Elf_Internal_Shdr * section;
+ bfd_vma nbuckets = 0;
+ bfd_vma nchains = 0;
+ bfd_vma * buckets = NULL;
+ bfd_vma * chains = NULL;
+ bfd_vma ngnubuckets = 0;
+ bfd_vma * gnubuckets = NULL;
+ bfd_vma * gnuchains = NULL;
+ bfd_vma gnusymidx = 0;
+
+ if (!do_syms && !do_dyn_syms && !do_histogram)
+ return 1;
+
+ if (dynamic_info[DT_HASH]
+ && (do_histogram
+ || (do_using_dynamic
+ && !do_dyn_syms
+ && dynamic_strings != NULL)))
+ {
+ unsigned char nb[8];
+ unsigned char nc[8];
+ int hash_ent_size = 4;
+
+ if ((elf_header.e_machine == EM_ALPHA
+ || elf_header.e_machine == EM_S390
+ || elf_header.e_machine == EM_S390_OLD)
+ && elf_header.e_ident[EI_CLASS] == ELFCLASS64)
+ hash_ent_size = 8;
+
+ if (fseek (file,
+ (archive_file_offset
+ + offset_from_vma (file, dynamic_info[DT_HASH],
+ sizeof nb + sizeof nc)),
+ SEEK_SET))
+ {
+ error (_("Unable to seek to start of dynamic information\n"));
+ goto no_hash;
+ }
+
+ if (fread (nb, hash_ent_size, 1, file) != 1)
+ {
+ error (_("Failed to read in number of buckets\n"));
+ goto no_hash;
+ }
+
+ if (fread (nc, hash_ent_size, 1, file) != 1)
+ {
+ error (_("Failed to read in number of chains\n"));
+ goto no_hash;
+ }
+
+ nbuckets = byte_get (nb, hash_ent_size);
+ nchains = byte_get (nc, hash_ent_size);
+
+ buckets = get_dynamic_data (file, nbuckets, hash_ent_size);
+ chains = get_dynamic_data (file, nchains, hash_ent_size);
+
+ no_hash:
+ if (buckets == NULL || chains == NULL)
+ {
+ if (do_using_dynamic)
+ return 0;
+ free (buckets);
+ free (chains);
+ buckets = NULL;
+ chains = NULL;
+ nbuckets = 0;
+ nchains = 0;
+ }
+ }
+
+ if (dynamic_info_DT_GNU_HASH
+ && (do_histogram
+ || (do_using_dynamic
+ && !do_dyn_syms
+ && dynamic_strings != NULL)))
+ {
+ unsigned char nb[16];
+ bfd_vma i, maxchain = 0xffffffff, bitmaskwords;
+ bfd_vma buckets_vma;
+
+ if (fseek (file,
+ (archive_file_offset
+ + offset_from_vma (file, dynamic_info_DT_GNU_HASH,
+ sizeof nb)),
+ SEEK_SET))
+ {
+ error (_("Unable to seek to start of dynamic information\n"));
+ goto no_gnu_hash;
+ }
+
+ if (fread (nb, 16, 1, file) != 1)
+ {
+ error (_("Failed to read in number of buckets\n"));
+ goto no_gnu_hash;
+ }
+
+ ngnubuckets = byte_get (nb, 4);
+ gnusymidx = byte_get (nb + 4, 4);
+ bitmaskwords = byte_get (nb + 8, 4);
+ buckets_vma = dynamic_info_DT_GNU_HASH + 16;
+ if (is_32bit_elf)
+ buckets_vma += bitmaskwords * 4;
+ else
+ buckets_vma += bitmaskwords * 8;
+
+ if (fseek (file,
+ (archive_file_offset
+ + offset_from_vma (file, buckets_vma, 4)),
+ SEEK_SET))
+ {
+ error (_("Unable to seek to start of dynamic information\n"));
+ goto no_gnu_hash;
+ }
+
+ gnubuckets = get_dynamic_data (file, ngnubuckets, 4);
+
+ if (gnubuckets == NULL)
+ goto no_gnu_hash;
+
+ for (i = 0; i < ngnubuckets; i++)
+ if (gnubuckets[i] != 0)
+ {
+ if (gnubuckets[i] < gnusymidx)
+ return 0;
+
+ if (maxchain == 0xffffffff || gnubuckets[i] > maxchain)
+ maxchain = gnubuckets[i];
+ }
+
+ if (maxchain == 0xffffffff)
+ goto no_gnu_hash;
+
+ maxchain -= gnusymidx;
+
+ if (fseek (file,
+ (archive_file_offset
+ + offset_from_vma (file, buckets_vma
+ + 4 * (ngnubuckets + maxchain), 4)),
+ SEEK_SET))
+ {
+ error (_("Unable to seek to start of dynamic information\n"));
+ goto no_gnu_hash;
+ }
+
+ do
+ {
+ if (fread (nb, 4, 1, file) != 1)
+ {
+ error (_("Failed to determine last chain length\n"));
+ goto no_gnu_hash;
+ }
+
+ if (maxchain + 1 == 0)
+ goto no_gnu_hash;
+
+ ++maxchain;
+ }
+ while ((byte_get (nb, 4) & 1) == 0);
+
+ if (fseek (file,
+ (archive_file_offset
+ + offset_from_vma (file, buckets_vma + 4 * ngnubuckets, 4)),
+ SEEK_SET))
+ {
+ error (_("Unable to seek to start of dynamic information\n"));
+ goto no_gnu_hash;
+ }
+
+ gnuchains = get_dynamic_data (file, maxchain, 4);
+
+ no_gnu_hash:
+ if (gnuchains == NULL)
+ {
+ free (gnubuckets);
+ gnubuckets = NULL;
+ ngnubuckets = 0;
+ if (do_using_dynamic)
+ return 0;
+ }
+ }
+
+ if ((dynamic_info[DT_HASH] || dynamic_info_DT_GNU_HASH)
+ && do_syms
+ && do_using_dynamic
+ && dynamic_strings != NULL)
+ {
+ unsigned long hn;
+
+ if (dynamic_info[DT_HASH])
+ {
+ bfd_vma si;
+
+ printf (_("\nSymbol table for image:\n"));
+ if (is_32bit_elf)
+ printf (_(" Num Buc: Value Size Type Bind Vis Ndx Name\n"));
+ else
+ printf (_(" Num Buc: Value Size Type Bind Vis Ndx Name\n"));
+
+ for (hn = 0; hn < nbuckets; hn++)
+ {
+ if (! buckets[hn])
+ continue;
+
+ for (si = buckets[hn]; si < nchains && si > 0; si = chains[si])
+ print_dynamic_symbol (si, hn);
+ }
+ }
+
+ if (dynamic_info_DT_GNU_HASH)
+ {
+ printf (_("\nSymbol table of `.gnu.hash' for image:\n"));
+ if (is_32bit_elf)
+ printf (_(" Num Buc: Value Size Type Bind Vis Ndx Name\n"));
+ else
+ printf (_(" Num Buc: Value Size Type Bind Vis Ndx Name\n"));
+
+ for (hn = 0; hn < ngnubuckets; ++hn)
+ if (gnubuckets[hn] != 0)
+ {
+ bfd_vma si = gnubuckets[hn];
+ bfd_vma off = si - gnusymidx;
+
+ do
+ {
+ print_dynamic_symbol (si, hn);
+ si++;
+ }
+ while ((gnuchains[off++] & 1) == 0);
+ }
+ }
+ }
+ else if (do_dyn_syms || (do_syms && !do_using_dynamic))
+ {
+ unsigned int i;
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum;
+ i++, section++)
+ {
+ unsigned int si;
+ char * strtab = NULL;
+ unsigned long int strtab_size = 0;
+ Elf_Internal_Sym * symtab;
+ Elf_Internal_Sym * psym;
+ unsigned long num_syms;
+
+ if ((section->sh_type != SHT_SYMTAB
+ && section->sh_type != SHT_DYNSYM)
+ || (!do_syms
+ && section->sh_type == SHT_SYMTAB))
+ continue;
+
+ if (section->sh_entsize == 0)
+ {
+ printf (_("\nSymbol table '%s' has a sh_entsize of zero!\n"),
+ SECTION_NAME (section));
+ continue;
+ }
+
+ printf (_("\nSymbol table '%s' contains %lu entries:\n"),
+ SECTION_NAME (section),
+ (unsigned long) (section->sh_size / section->sh_entsize));
+
+ if (is_32bit_elf)
+ printf (_(" Num: Value Size Type Bind Vis Ndx Name\n"));
+ else
+ printf (_(" Num: Value Size Type Bind Vis Ndx Name\n"));
+
+ symtab = GET_ELF_SYMBOLS (file, section, & num_syms);
+ if (symtab == NULL)
+ continue;
+
+ if (section->sh_link == elf_header.e_shstrndx)
+ {
+ strtab = string_table;
+ strtab_size = string_table_length;
+ }
+ else if (section->sh_link < elf_header.e_shnum)
+ {
+ Elf_Internal_Shdr * string_sec;
+
+ string_sec = section_headers + section->sh_link;
+
+ strtab = (char *) get_data (NULL, file, string_sec->sh_offset,
+ 1, string_sec->sh_size,
+ _("string table"));
+ strtab_size = strtab != NULL ? string_sec->sh_size : 0;
+ }
+
+ for (si = 0, psym = symtab; si < num_syms; si++, psym++)
+ {
+ printf ("%6d: ", si);
+ print_vma (psym->st_value, LONG_HEX);
+ putchar (' ');
+ print_vma (psym->st_size, DEC_5);
+ printf (" %-7s", get_symbol_type (ELF_ST_TYPE (psym->st_info)));
+ printf (" %-6s", get_symbol_binding (ELF_ST_BIND (psym->st_info)));
+ printf (" %-7s", get_symbol_visibility (ELF_ST_VISIBILITY (psym->st_other)));
+ /* Check to see if any other bits in the st_other field are set.
+ Note - displaying this information disrupts the layout of the
+ table being generated, but for the moment this case is very rare. */
+ if (psym->st_other ^ ELF_ST_VISIBILITY (psym->st_other))
+ printf (" [%s] ", get_symbol_other (psym->st_other ^ ELF_ST_VISIBILITY (psym->st_other)));
+ printf (" %4s ", get_symbol_index_type (psym->st_shndx));
+ print_symbol (25, psym->st_name < strtab_size
+ ? strtab + psym->st_name : _("<corrupt>"));
+
+ if (section->sh_type == SHT_DYNSYM
+ && version_info[DT_VERSIONTAGIDX (DT_VERSYM)] != 0)
+ {
+ unsigned char data[2];
+ unsigned short vers_data;
+ unsigned long offset;
+ int is_nobits;
+ int check_def;
+
+ offset = offset_from_vma
+ (file, version_info[DT_VERSIONTAGIDX (DT_VERSYM)],
+ sizeof data + si * sizeof (vers_data));
+
+ if (get_data (&data, file, offset + si * sizeof (vers_data),
+ sizeof (data), 1, _("version data")) == NULL)
+ break;
+
+ vers_data = byte_get (data, 2);
+
+ is_nobits = (psym->st_shndx < elf_header.e_shnum
+ && section_headers[psym->st_shndx].sh_type
+ == SHT_NOBITS);
+
+ check_def = (psym->st_shndx != SHN_UNDEF);
+
+ if ((vers_data & VERSYM_HIDDEN) || vers_data > 1)
+ {
+ if (version_info[DT_VERSIONTAGIDX (DT_VERNEED)]
+ && (is_nobits || ! check_def))
+ {
+ Elf_External_Verneed evn;
+ Elf_Internal_Verneed ivn;
+ Elf_Internal_Vernaux ivna;
+
+ /* We must test both. */
+ offset = offset_from_vma
+ (file, version_info[DT_VERSIONTAGIDX (DT_VERNEED)],
+ sizeof evn);
+
+ do
+ {
+ unsigned long vna_off;
+
+ if (get_data (&evn, file, offset, sizeof (evn), 1,
+ _("version need")) == NULL)
+ {
+ ivna.vna_next = 0;
+ ivna.vna_other = 0;
+ ivna.vna_name = 0;
+ break;
+ }
+
+ ivn.vn_aux = BYTE_GET (evn.vn_aux);
+ ivn.vn_next = BYTE_GET (evn.vn_next);
+
+ vna_off = offset + ivn.vn_aux;
+
+ do
+ {
+ Elf_External_Vernaux evna;
+
+ if (get_data (&evna, file, vna_off,
+ sizeof (evna), 1,
+ _("version need aux (3)")) == NULL)
+ {
+ ivna.vna_next = 0;
+ ivna.vna_other = 0;
+ ivna.vna_name = 0;
+ }
+ else
+ {
+ ivna.vna_other = BYTE_GET (evna.vna_other);
+ ivna.vna_next = BYTE_GET (evna.vna_next);
+ ivna.vna_name = BYTE_GET (evna.vna_name);
+ }
+
+ vna_off += ivna.vna_next;
+ }
+ while (ivna.vna_other != vers_data
+ && ivna.vna_next != 0);
+
+ if (ivna.vna_other == vers_data)
+ break;
+
+ offset += ivn.vn_next;
+ }
+ while (ivn.vn_next != 0);
+
+ if (ivna.vna_other == vers_data)
+ {
+ printf ("@%s (%d)",
+ ivna.vna_name < strtab_size
+ ? strtab + ivna.vna_name : _("<corrupt>"),
+ ivna.vna_other);
+ check_def = 0;
+ }
+ else if (! is_nobits)
+ error (_("bad dynamic symbol\n"));
+ else
+ check_def = 1;
+ }
+
+ if (check_def)
+ {
+ if (vers_data != 0x8001
+ && version_info[DT_VERSIONTAGIDX (DT_VERDEF)])
+ {
+ Elf_Internal_Verdef ivd;
+ Elf_Internal_Verdaux ivda;
+ Elf_External_Verdaux evda;
+ unsigned long off;
+
+ off = offset_from_vma
+ (file,
+ version_info[DT_VERSIONTAGIDX (DT_VERDEF)],
+ sizeof (Elf_External_Verdef));
+
+ do
+ {
+ Elf_External_Verdef evd;
+
+ if (get_data (&evd, file, off, sizeof (evd),
+ 1, _("version def")) == NULL)
+ {
+ ivd.vd_ndx = 0;
+ ivd.vd_aux = 0;
+ ivd.vd_next = 0;
+ }
+ else
+ {
+ ivd.vd_ndx = BYTE_GET (evd.vd_ndx);
+ ivd.vd_aux = BYTE_GET (evd.vd_aux);
+ ivd.vd_next = BYTE_GET (evd.vd_next);
+ }
+
+ off += ivd.vd_next;
+ }
+ while (ivd.vd_ndx != (vers_data & VERSYM_VERSION)
+ && ivd.vd_next != 0);
+
+ off -= ivd.vd_next;
+ off += ivd.vd_aux;
+
+ if (get_data (&evda, file, off, sizeof (evda),
+ 1, _("version def aux")) == NULL)
+ break;
+
+ ivda.vda_name = BYTE_GET (evda.vda_name);
+
+ if (psym->st_name != ivda.vda_name)
+ printf ((vers_data & VERSYM_HIDDEN)
+ ? "@%s" : "@@%s",
+ ivda.vda_name < strtab_size
+ ? strtab + ivda.vda_name : _("<corrupt>"));
+ }
+ }
+ }
+ }
+
+ putchar ('\n');
+ }
+
+ free (symtab);
+ if (strtab != string_table)
+ free (strtab);
+ }
+ }
+ else if (do_syms)
+ printf
+ (_("\nDynamic symbol information is not available for displaying symbols.\n"));
+
+ if (do_histogram && buckets != NULL)
+ {
+ unsigned long * lengths;
+ unsigned long * counts;
+ unsigned long hn;
+ bfd_vma si;
+ unsigned long maxlength = 0;
+ unsigned long nzero_counts = 0;
+ unsigned long nsyms = 0;
+
+ printf (_("\nHistogram for bucket list length (total of %lu buckets):\n"),
+ (unsigned long) nbuckets);
+ printf (_(" Length Number %% of total Coverage\n"));
+
+ lengths = (unsigned long *) calloc (nbuckets, sizeof (*lengths));
+ if (lengths == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+ for (hn = 0; hn < nbuckets; ++hn)
+ {
+ for (si = buckets[hn]; si > 0 && si < nchains; si = chains[si])
+ {
+ ++nsyms;
+ if (maxlength < ++lengths[hn])
+ ++maxlength;
+ }
+ }
+
+ counts = (unsigned long *) calloc (maxlength + 1, sizeof (*counts));
+ if (counts == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ for (hn = 0; hn < nbuckets; ++hn)
+ ++counts[lengths[hn]];
+
+ if (nbuckets > 0)
+ {
+ unsigned long i;
+ printf (" 0 %-10lu (%5.1f%%)\n",
+ counts[0], (counts[0] * 100.0) / nbuckets);
+ for (i = 1; i <= maxlength; ++i)
+ {
+ nzero_counts += counts[i] * i;
+ printf ("%7lu %-10lu (%5.1f%%) %5.1f%%\n",
+ i, counts[i], (counts[i] * 100.0) / nbuckets,
+ (nzero_counts * 100.0) / nsyms);
+ }
+ }
+
+ free (counts);
+ free (lengths);
+ }
+
+ if (buckets != NULL)
+ {
+ free (buckets);
+ free (chains);
+ }
+
+ if (do_histogram && gnubuckets != NULL)
+ {
+ unsigned long * lengths;
+ unsigned long * counts;
+ unsigned long hn;
+ unsigned long maxlength = 0;
+ unsigned long nzero_counts = 0;
+ unsigned long nsyms = 0;
+
+ lengths = (unsigned long *) calloc (ngnubuckets, sizeof (*lengths));
+ if (lengths == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ printf (_("\nHistogram for `.gnu.hash' bucket list length (total of %lu buckets):\n"),
+ (unsigned long) ngnubuckets);
+ printf (_(" Length Number %% of total Coverage\n"));
+
+ for (hn = 0; hn < ngnubuckets; ++hn)
+ if (gnubuckets[hn] != 0)
+ {
+ bfd_vma off, length = 1;
+
+ for (off = gnubuckets[hn] - gnusymidx;
+ (gnuchains[off] & 1) == 0; ++off)
+ ++length;
+ lengths[hn] = length;
+ if (length > maxlength)
+ maxlength = length;
+ nsyms += length;
+ }
+
+ counts = (unsigned long *) calloc (maxlength + 1, sizeof (*counts));
+ if (counts == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ for (hn = 0; hn < ngnubuckets; ++hn)
+ ++counts[lengths[hn]];
+
+ if (ngnubuckets > 0)
+ {
+ unsigned long j;
+ printf (" 0 %-10lu (%5.1f%%)\n",
+ counts[0], (counts[0] * 100.0) / ngnubuckets);
+ for (j = 1; j <= maxlength; ++j)
+ {
+ nzero_counts += counts[j] * j;
+ printf ("%7lu %-10lu (%5.1f%%) %5.1f%%\n",
+ j, counts[j], (counts[j] * 100.0) / ngnubuckets,
+ (nzero_counts * 100.0) / nsyms);
+ }
+ }
+
+ free (counts);
+ free (lengths);
+ free (gnubuckets);
+ free (gnuchains);
+ }
+
+ return 1;
+}
+
+static int
+process_syminfo (FILE * file ATTRIBUTE_UNUSED)
+{
+ unsigned int i;
+
+ if (dynamic_syminfo == NULL
+ || !do_dynamic)
+ /* No syminfo, this is ok. */
+ return 1;
+
+ /* There better should be a dynamic symbol section. */
+ if (dynamic_symbols == NULL || dynamic_strings == NULL)
+ return 0;
+
+ if (dynamic_addr)
+ printf (_("\nDynamic info segment at offset 0x%lx contains %d entries:\n"),
+ dynamic_syminfo_offset, dynamic_syminfo_nent);
+
+ printf (_(" Num: Name BoundTo Flags\n"));
+ for (i = 0; i < dynamic_syminfo_nent; ++i)
+ {
+ unsigned short int flags = dynamic_syminfo[i].si_flags;
+
+ printf ("%4d: ", i);
+ if (VALID_DYNAMIC_NAME (dynamic_symbols[i].st_name))
+ print_symbol (30, GET_DYNAMIC_NAME (dynamic_symbols[i].st_name));
+ else
+ printf (_("<corrupt: %19ld>"), dynamic_symbols[i].st_name);
+ putchar (' ');
+
+ switch (dynamic_syminfo[i].si_boundto)
+ {
+ case SYMINFO_BT_SELF:
+ fputs ("SELF ", stdout);
+ break;
+ case SYMINFO_BT_PARENT:
+ fputs ("PARENT ", stdout);
+ break;
+ default:
+ if (dynamic_syminfo[i].si_boundto > 0
+ && dynamic_syminfo[i].si_boundto < dynamic_nent
+ && VALID_DYNAMIC_NAME (dynamic_section[dynamic_syminfo[i].si_boundto].d_un.d_val))
+ {
+ print_symbol (10, GET_DYNAMIC_NAME (dynamic_section[dynamic_syminfo[i].si_boundto].d_un.d_val));
+ putchar (' ' );
+ }
+ else
+ printf ("%-10d ", dynamic_syminfo[i].si_boundto);
+ break;
+ }
+
+ if (flags & SYMINFO_FLG_DIRECT)
+ printf (" DIRECT");
+ if (flags & SYMINFO_FLG_PASSTHRU)
+ printf (" PASSTHRU");
+ if (flags & SYMINFO_FLG_COPY)
+ printf (" COPY");
+ if (flags & SYMINFO_FLG_LAZYLOAD)
+ printf (" LAZYLOAD");
+
+ puts ("");
+ }
+
+ return 1;
+}
+
+/* Check to see if the given reloc needs to be handled in a target specific
+ manner. If so then process the reloc and return TRUE otherwise return
+ FALSE. */
+
+static bfd_boolean
+target_specific_reloc_handling (Elf_Internal_Rela * reloc,
+ unsigned char * start,
+ Elf_Internal_Sym * symtab)
+{
+ unsigned int reloc_type = get_reloc_type (reloc->r_info);
+
+ switch (elf_header.e_machine)
+ {
+ case EM_MSP430:
+ case EM_MSP430_OLD:
+ {
+ static Elf_Internal_Sym * saved_sym = NULL;
+
+ switch (reloc_type)
+ {
+ case 10: /* R_MSP430_SYM_DIFF */
+ if (uses_msp430x_relocs ())
+ break;
+ case 21: /* R_MSP430X_SYM_DIFF */
+ saved_sym = symtab + get_reloc_symindex (reloc->r_info);
+ return TRUE;
+
+ case 1: /* R_MSP430_32 or R_MSP430_ABS32 */
+ case 3: /* R_MSP430_16 or R_MSP430_ABS8 */
+ goto handle_sym_diff;
+
+ case 5: /* R_MSP430_16_BYTE */
+ case 9: /* R_MSP430_8 */
+ if (uses_msp430x_relocs ())
+ break;
+ goto handle_sym_diff;
+
+ case 2: /* R_MSP430_ABS16 */
+ case 15: /* R_MSP430X_ABS16 */
+ if (! uses_msp430x_relocs ())
+ break;
+ goto handle_sym_diff;
+
+ handle_sym_diff:
+ if (saved_sym != NULL)
+ {
+ bfd_vma value;
+
+ value = reloc->r_addend
+ + (symtab[get_reloc_symindex (reloc->r_info)].st_value
+ - saved_sym->st_value);
+
+ byte_put (start + reloc->r_offset, value, reloc_type == 1 ? 4 : 2);
+
+ saved_sym = NULL;
+ return TRUE;
+ }
+ break;
+
+ default:
+ if (saved_sym != NULL)
+ error (_("Unhandled MSP430 reloc type found after SYM_DIFF reloc"));
+ break;
+ }
+ break;
+ }
+
+ case EM_MN10300:
+ case EM_CYGNUS_MN10300:
+ {
+ static Elf_Internal_Sym * saved_sym = NULL;
+
+ switch (reloc_type)
+ {
+ case 34: /* R_MN10300_ALIGN */
+ return TRUE;
+ case 33: /* R_MN10300_SYM_DIFF */
+ saved_sym = symtab + get_reloc_symindex (reloc->r_info);
+ return TRUE;
+ case 1: /* R_MN10300_32 */
+ case 2: /* R_MN10300_16 */
+ if (saved_sym != NULL)
+ {
+ bfd_vma value;
+
+ value = reloc->r_addend
+ + (symtab[get_reloc_symindex (reloc->r_info)].st_value
+ - saved_sym->st_value);
+
+ byte_put (start + reloc->r_offset, value, reloc_type == 1 ? 4 : 2);
+
+ saved_sym = NULL;
+ return TRUE;
+ }
+ break;
+ default:
+ if (saved_sym != NULL)
+ error (_("Unhandled MN10300 reloc type found after SYM_DIFF reloc"));
+ break;
+ }
+ break;
+ }
+ }
+
+ return FALSE;
+}
+
+/* Returns TRUE iff RELOC_TYPE is a 32-bit absolute RELA relocation used in
+ DWARF debug sections. This is a target specific test. Note - we do not
+ go through the whole including-target-headers-multiple-times route, (as
+ we have already done with <elf/h8.h>) because this would become very
+ messy and even then this function would have to contain target specific
+ information (the names of the relocs instead of their numeric values).
+ FIXME: This is not the correct way to solve this problem. The proper way
+ is to have target specific reloc sizing and typing functions created by
+ the reloc-macros.h header, in the same way that it already creates the
+ reloc naming functions. */
+
+static bfd_boolean
+is_32bit_abs_reloc (unsigned int reloc_type)
+{
+ switch (elf_header.e_machine)
+ {
+ case EM_386:
+ case EM_486:
+ return reloc_type == 1; /* R_386_32. */
+ case EM_68K:
+ return reloc_type == 1; /* R_68K_32. */
+ case EM_860:
+ return reloc_type == 1; /* R_860_32. */
+ case EM_960:
+ return reloc_type == 2; /* R_960_32. */
+ case EM_AARCH64:
+ return reloc_type == 258; /* R_AARCH64_ABS32 */
+ case EM_ALPHA:
+ return reloc_type == 1; /* R_ALPHA_REFLONG. */
+ case EM_ARC:
+ return reloc_type == 1; /* R_ARC_32. */
+ case EM_ARM:
+ return reloc_type == 2; /* R_ARM_ABS32 */
+ case EM_AVR_OLD:
+ case EM_AVR:
+ return reloc_type == 1;
+ case EM_ADAPTEVA_EPIPHANY:
+ return reloc_type == 3;
+ case EM_BLACKFIN:
+ return reloc_type == 0x12; /* R_byte4_data. */
+ case EM_CRIS:
+ return reloc_type == 3; /* R_CRIS_32. */
+ case EM_CR16:
+ return reloc_type == 3; /* R_CR16_NUM32. */
+ case EM_CRX:
+ return reloc_type == 15; /* R_CRX_NUM32. */
+ case EM_CYGNUS_FRV:
+ return reloc_type == 1;
+ case EM_CYGNUS_D10V:
+ case EM_D10V:
+ return reloc_type == 6; /* R_D10V_32. */
+ case EM_CYGNUS_D30V:
+ case EM_D30V:
+ return reloc_type == 12; /* R_D30V_32_NORMAL. */
+ case EM_DLX:
+ return reloc_type == 3; /* R_DLX_RELOC_32. */
+ case EM_CYGNUS_FR30:
+ case EM_FR30:
+ return reloc_type == 3; /* R_FR30_32. */
+ case EM_H8S:
+ case EM_H8_300:
+ case EM_H8_300H:
+ return reloc_type == 1; /* R_H8_DIR32. */
+ case EM_IA_64:
+ return reloc_type == 0x65; /* R_IA64_SECREL32LSB. */
+ case EM_IP2K_OLD:
+ case EM_IP2K:
+ return reloc_type == 2; /* R_IP2K_32. */
+ case EM_IQ2000:
+ return reloc_type == 2; /* R_IQ2000_32. */
+ case EM_LATTICEMICO32:
+ return reloc_type == 3; /* R_LM32_32. */
+ case EM_M32C_OLD:
+ case EM_M32C:
+ return reloc_type == 3; /* R_M32C_32. */
+ case EM_M32R:
+ return reloc_type == 34; /* R_M32R_32_RELA. */
+ case EM_MCORE:
+ return reloc_type == 1; /* R_MCORE_ADDR32. */
+ case EM_CYGNUS_MEP:
+ return reloc_type == 4; /* R_MEP_32. */
+ case EM_METAG:
+ return reloc_type == 2; /* R_METAG_ADDR32. */
+ case EM_MICROBLAZE:
+ return reloc_type == 1; /* R_MICROBLAZE_32. */
+ case EM_MIPS:
+ return reloc_type == 2; /* R_MIPS_32. */
+ case EM_MMIX:
+ return reloc_type == 4; /* R_MMIX_32. */
+ case EM_CYGNUS_MN10200:
+ case EM_MN10200:
+ return reloc_type == 1; /* R_MN10200_32. */
+ case EM_CYGNUS_MN10300:
+ case EM_MN10300:
+ return reloc_type == 1; /* R_MN10300_32. */
+ case EM_MOXIE:
+ return reloc_type == 1; /* R_MOXIE_32. */
+ case EM_MSP430_OLD:
+ case EM_MSP430:
+ return reloc_type == 1; /* R_MSP430_32 or R_MSP320_ABS32. */
+ case EM_MT:
+ return reloc_type == 2; /* R_MT_32. */
+ case EM_ALTERA_NIOS2:
+ return reloc_type == 12; /* R_NIOS2_BFD_RELOC_32. */
+ case EM_NIOS32:
+ return reloc_type == 1; /* R_NIOS_32. */
+ case EM_OPENRISC:
+ case EM_OR32:
+ return reloc_type == 1; /* R_OR32_32. */
+ case EM_PARISC:
+ return (reloc_type == 1 /* R_PARISC_DIR32. */
+ || reloc_type == 41); /* R_PARISC_SECREL32. */
+ case EM_PJ:
+ case EM_PJ_OLD:
+ return reloc_type == 1; /* R_PJ_DATA_DIR32. */
+ case EM_PPC64:
+ return reloc_type == 1; /* R_PPC64_ADDR32. */
+ case EM_PPC:
+ return reloc_type == 1; /* R_PPC_ADDR32. */
+ case EM_RL78:
+ return reloc_type == 1; /* R_RL78_DIR32. */
+ case EM_RX:
+ return reloc_type == 1; /* R_RX_DIR32. */
+ case EM_S370:
+ return reloc_type == 1; /* R_I370_ADDR31. */
+ case EM_S390_OLD:
+ case EM_S390:
+ return reloc_type == 4; /* R_S390_32. */
+ case EM_SCORE:
+ return reloc_type == 8; /* R_SCORE_ABS32. */
+ case EM_SH:
+ return reloc_type == 1; /* R_SH_DIR32. */
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ case EM_SPARC:
+ return reloc_type == 3 /* R_SPARC_32. */
+ || reloc_type == 23; /* R_SPARC_UA32. */
+ case EM_SPU:
+ return reloc_type == 6; /* R_SPU_ADDR32 */
+ case EM_TI_C6000:
+ return reloc_type == 1; /* R_C6000_ABS32. */
+ case EM_TILEGX:
+ return reloc_type == 2; /* R_TILEGX_32. */
+ case EM_TILEPRO:
+ return reloc_type == 1; /* R_TILEPRO_32. */
+ case EM_CYGNUS_V850:
+ case EM_V850:
+ return reloc_type == 6; /* R_V850_ABS32. */
+ case EM_V800:
+ return reloc_type == 0x33; /* R_V810_WORD. */
+ case EM_VAX:
+ return reloc_type == 1; /* R_VAX_32. */
+ case EM_X86_64:
+ case EM_L1OM:
+ case EM_K1OM:
+ return reloc_type == 10; /* R_X86_64_32. */
+ case EM_XC16X:
+ case EM_C166:
+ return reloc_type == 3; /* R_XC16C_ABS_32. */
+ case EM_XGATE:
+ return reloc_type == 4; /* R_XGATE_32. */
+ case EM_XSTORMY16:
+ return reloc_type == 1; /* R_XSTROMY16_32. */
+ case EM_XTENSA_OLD:
+ case EM_XTENSA:
+ return reloc_type == 1; /* R_XTENSA_32. */
+ default:
+ error (_("Missing knowledge of 32-bit reloc types used in DWARF sections of machine number %d\n"),
+ elf_header.e_machine);
+ abort ();
+ }
+}
+
+/* Like is_32bit_abs_reloc except that it returns TRUE iff RELOC_TYPE is
+ a 32-bit pc-relative RELA relocation used in DWARF debug sections. */
+
+static bfd_boolean
+is_32bit_pcrel_reloc (unsigned int reloc_type)
+{
+ switch (elf_header.e_machine)
+ {
+ case EM_386:
+ case EM_486:
+ return reloc_type == 2; /* R_386_PC32. */
+ case EM_68K:
+ return reloc_type == 4; /* R_68K_PC32. */
+ case EM_AARCH64:
+ return reloc_type == 261; /* R_AARCH64_PREL32 */
+ case EM_ADAPTEVA_EPIPHANY:
+ return reloc_type == 6;
+ case EM_ALPHA:
+ return reloc_type == 10; /* R_ALPHA_SREL32. */
+ case EM_ARM:
+ return reloc_type == 3; /* R_ARM_REL32 */
+ case EM_MICROBLAZE:
+ return reloc_type == 2; /* R_MICROBLAZE_32_PCREL. */
+ case EM_PARISC:
+ return reloc_type == 9; /* R_PARISC_PCREL32. */
+ case EM_PPC:
+ return reloc_type == 26; /* R_PPC_REL32. */
+ case EM_PPC64:
+ return reloc_type == 26; /* R_PPC64_REL32. */
+ case EM_S390_OLD:
+ case EM_S390:
+ return reloc_type == 5; /* R_390_PC32. */
+ case EM_SH:
+ return reloc_type == 2; /* R_SH_REL32. */
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ case EM_SPARC:
+ return reloc_type == 6; /* R_SPARC_DISP32. */
+ case EM_SPU:
+ return reloc_type == 13; /* R_SPU_REL32. */
+ case EM_TILEGX:
+ return reloc_type == 6; /* R_TILEGX_32_PCREL. */
+ case EM_TILEPRO:
+ return reloc_type == 4; /* R_TILEPRO_32_PCREL. */
+ case EM_X86_64:
+ case EM_L1OM:
+ case EM_K1OM:
+ return reloc_type == 2; /* R_X86_64_PC32. */
+ case EM_XTENSA_OLD:
+ case EM_XTENSA:
+ return reloc_type == 14; /* R_XTENSA_32_PCREL. */
+ default:
+ /* Do not abort or issue an error message here. Not all targets use
+ pc-relative 32-bit relocs in their DWARF debug information and we
+ have already tested for target coverage in is_32bit_abs_reloc. A
+ more helpful warning message will be generated by apply_relocations
+ anyway, so just return. */
+ return FALSE;
+ }
+}
+
+/* Like is_32bit_abs_reloc except that it returns TRUE iff RELOC_TYPE is
+ a 64-bit absolute RELA relocation used in DWARF debug sections. */
+
+static bfd_boolean
+is_64bit_abs_reloc (unsigned int reloc_type)
+{
+ switch (elf_header.e_machine)
+ {
+ case EM_AARCH64:
+ return reloc_type == 257; /* R_AARCH64_ABS64. */
+ case EM_ALPHA:
+ return reloc_type == 2; /* R_ALPHA_REFQUAD. */
+ case EM_IA_64:
+ return reloc_type == 0x27; /* R_IA64_DIR64LSB. */
+ case EM_PARISC:
+ return reloc_type == 80; /* R_PARISC_DIR64. */
+ case EM_PPC64:
+ return reloc_type == 38; /* R_PPC64_ADDR64. */
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ case EM_SPARC:
+ return reloc_type == 54; /* R_SPARC_UA64. */
+ case EM_X86_64:
+ case EM_L1OM:
+ case EM_K1OM:
+ return reloc_type == 1; /* R_X86_64_64. */
+ case EM_S390_OLD:
+ case EM_S390:
+ return reloc_type == 22; /* R_S390_64. */
+ case EM_TILEGX:
+ return reloc_type == 1; /* R_TILEGX_64. */
+ case EM_MIPS:
+ return reloc_type == 18; /* R_MIPS_64. */
+ default:
+ return FALSE;
+ }
+}
+
+/* Like is_32bit_pcrel_reloc except that it returns TRUE iff RELOC_TYPE is
+ a 64-bit pc-relative RELA relocation used in DWARF debug sections. */
+
+static bfd_boolean
+is_64bit_pcrel_reloc (unsigned int reloc_type)
+{
+ switch (elf_header.e_machine)
+ {
+ case EM_AARCH64:
+ return reloc_type == 260; /* R_AARCH64_PREL64. */
+ case EM_ALPHA:
+ return reloc_type == 11; /* R_ALPHA_SREL64. */
+ case EM_IA_64:
+ return reloc_type == 0x4f; /* R_IA64_PCREL64LSB. */
+ case EM_PARISC:
+ return reloc_type == 72; /* R_PARISC_PCREL64. */
+ case EM_PPC64:
+ return reloc_type == 44; /* R_PPC64_REL64. */
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ case EM_SPARC:
+ return reloc_type == 46; /* R_SPARC_DISP64. */
+ case EM_X86_64:
+ case EM_L1OM:
+ case EM_K1OM:
+ return reloc_type == 24; /* R_X86_64_PC64. */
+ case EM_S390_OLD:
+ case EM_S390:
+ return reloc_type == 23; /* R_S390_PC64. */
+ case EM_TILEGX:
+ return reloc_type == 5; /* R_TILEGX_64_PCREL. */
+ default:
+ return FALSE;
+ }
+}
+
+/* Like is_32bit_abs_reloc except that it returns TRUE iff RELOC_TYPE is
+ a 24-bit absolute RELA relocation used in DWARF debug sections. */
+
+static bfd_boolean
+is_24bit_abs_reloc (unsigned int reloc_type)
+{
+ switch (elf_header.e_machine)
+ {
+ case EM_CYGNUS_MN10200:
+ case EM_MN10200:
+ return reloc_type == 4; /* R_MN10200_24. */
+ default:
+ return FALSE;
+ }
+}
+
+/* Like is_32bit_abs_reloc except that it returns TRUE iff RELOC_TYPE is
+ a 16-bit absolute RELA relocation used in DWARF debug sections. */
+
+static bfd_boolean
+is_16bit_abs_reloc (unsigned int reloc_type)
+{
+ switch (elf_header.e_machine)
+ {
+ case EM_AVR_OLD:
+ case EM_AVR:
+ return reloc_type == 4; /* R_AVR_16. */
+ case EM_ADAPTEVA_EPIPHANY:
+ return reloc_type == 5;
+ case EM_CYGNUS_D10V:
+ case EM_D10V:
+ return reloc_type == 3; /* R_D10V_16. */
+ case EM_H8S:
+ case EM_H8_300:
+ case EM_H8_300H:
+ return reloc_type == R_H8_DIR16;
+ case EM_IP2K_OLD:
+ case EM_IP2K:
+ return reloc_type == 1; /* R_IP2K_16. */
+ case EM_M32C_OLD:
+ case EM_M32C:
+ return reloc_type == 1; /* R_M32C_16 */
+ case EM_MSP430:
+ if (uses_msp430x_relocs ())
+ return reloc_type == 2; /* R_MSP430_ABS16. */
+ case EM_MSP430_OLD:
+ return reloc_type == 5; /* R_MSP430_16_BYTE. */
+ case EM_ALTERA_NIOS2:
+ return reloc_type == 13; /* R_NIOS2_BFD_RELOC_16. */
+ case EM_NIOS32:
+ return reloc_type == 9; /* R_NIOS_16. */
+ case EM_TI_C6000:
+ return reloc_type == 2; /* R_C6000_ABS16. */
+ case EM_XC16X:
+ case EM_C166:
+ return reloc_type == 2; /* R_XC16C_ABS_16. */
+ case EM_CYGNUS_MN10200:
+ case EM_MN10200:
+ return reloc_type == 2; /* R_MN10200_16. */
+ case EM_CYGNUS_MN10300:
+ case EM_MN10300:
+ return reloc_type == 2; /* R_MN10300_16. */
+ case EM_XGATE:
+ return reloc_type == 3; /* R_XGATE_16. */
+ default:
+ return FALSE;
+ }
+}
+
+/* Returns TRUE iff RELOC_TYPE is a NONE relocation used for discarded
+ relocation entries (possibly formerly used for SHT_GROUP sections). */
+
+static bfd_boolean
+is_none_reloc (unsigned int reloc_type)
+{
+ switch (elf_header.e_machine)
+ {
+ case EM_68K: /* R_68K_NONE. */
+ case EM_386: /* R_386_NONE. */
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ case EM_SPARC: /* R_SPARC_NONE. */
+ case EM_MIPS: /* R_MIPS_NONE. */
+ case EM_PARISC: /* R_PARISC_NONE. */
+ case EM_ALPHA: /* R_ALPHA_NONE. */
+ case EM_ADAPTEVA_EPIPHANY:
+ case EM_PPC: /* R_PPC_NONE. */
+ case EM_PPC64: /* R_PPC64_NONE. */
+ case EM_ARM: /* R_ARM_NONE. */
+ case EM_IA_64: /* R_IA64_NONE. */
+ case EM_SH: /* R_SH_NONE. */
+ case EM_S390_OLD:
+ case EM_S390: /* R_390_NONE. */
+ case EM_CRIS: /* R_CRIS_NONE. */
+ case EM_X86_64: /* R_X86_64_NONE. */
+ case EM_L1OM: /* R_X86_64_NONE. */
+ case EM_K1OM: /* R_X86_64_NONE. */
+ case EM_MN10300: /* R_MN10300_NONE. */
+ case EM_MOXIE: /* R_MOXIE_NONE. */
+ case EM_M32R: /* R_M32R_NONE. */
+ case EM_TI_C6000:/* R_C6000_NONE. */
+ case EM_TILEGX: /* R_TILEGX_NONE. */
+ case EM_TILEPRO: /* R_TILEPRO_NONE. */
+ case EM_XC16X:
+ case EM_C166: /* R_XC16X_NONE. */
+ case EM_ALTERA_NIOS2: /* R_NIOS2_NONE. */
+ case EM_NIOS32: /* R_NIOS_NONE. */
+ return reloc_type == 0;
+ case EM_AARCH64:
+ return reloc_type == 0 || reloc_type == 256;
+ case EM_XTENSA_OLD:
+ case EM_XTENSA:
+ return (reloc_type == 0 /* R_XTENSA_NONE. */
+ || reloc_type == 17 /* R_XTENSA_DIFF8. */
+ || reloc_type == 18 /* R_XTENSA_DIFF16. */
+ || reloc_type == 19 /* R_XTENSA_DIFF32. */);
+ case EM_METAG:
+ return reloc_type == 3; /* R_METAG_NONE. */
+ }
+ return FALSE;
+}
+
+/* Apply relocations to a section.
+ Note: So far support has been added only for those relocations
+ which can be found in debug sections.
+ FIXME: Add support for more relocations ? */
+
+static void
+apply_relocations (void * file,
+ Elf_Internal_Shdr * section,
+ unsigned char * start)
+{
+ Elf_Internal_Shdr * relsec;
+ unsigned char * end = start + section->sh_size;
+
+ if (elf_header.e_type != ET_REL)
+ return;
+
+ /* Find the reloc section associated with the section. */
+ for (relsec = section_headers;
+ relsec < section_headers + elf_header.e_shnum;
+ ++relsec)
+ {
+ bfd_boolean is_rela;
+ unsigned long num_relocs;
+ Elf_Internal_Rela * relocs;
+ Elf_Internal_Rela * rp;
+ Elf_Internal_Shdr * symsec;
+ Elf_Internal_Sym * symtab;
+ unsigned long num_syms;
+ Elf_Internal_Sym * sym;
+
+ if ((relsec->sh_type != SHT_RELA && relsec->sh_type != SHT_REL)
+ || relsec->sh_info >= elf_header.e_shnum
+ || section_headers + relsec->sh_info != section
+ || relsec->sh_size == 0
+ || relsec->sh_link >= elf_header.e_shnum)
+ continue;
+
+ is_rela = relsec->sh_type == SHT_RELA;
+
+ if (is_rela)
+ {
+ if (!slurp_rela_relocs ((FILE *) file, relsec->sh_offset,
+ relsec->sh_size, & relocs, & num_relocs))
+ return;
+ }
+ else
+ {
+ if (!slurp_rel_relocs ((FILE *) file, relsec->sh_offset,
+ relsec->sh_size, & relocs, & num_relocs))
+ return;
+ }
+
+ /* SH uses RELA but uses in place value instead of the addend field. */
+ if (elf_header.e_machine == EM_SH)
+ is_rela = FALSE;
+
+ symsec = section_headers + relsec->sh_link;
+ symtab = GET_ELF_SYMBOLS ((FILE *) file, symsec, & num_syms);
+
+ for (rp = relocs; rp < relocs + num_relocs; ++rp)
+ {
+ bfd_vma addend;
+ unsigned int reloc_type;
+ unsigned int reloc_size;
+ unsigned char * rloc;
+ unsigned long sym_index;
+
+ reloc_type = get_reloc_type (rp->r_info);
+
+ if (target_specific_reloc_handling (rp, start, symtab))
+ continue;
+ else if (is_none_reloc (reloc_type))
+ continue;
+ else if (is_32bit_abs_reloc (reloc_type)
+ || is_32bit_pcrel_reloc (reloc_type))
+ reloc_size = 4;
+ else if (is_64bit_abs_reloc (reloc_type)
+ || is_64bit_pcrel_reloc (reloc_type))
+ reloc_size = 8;
+ else if (is_24bit_abs_reloc (reloc_type))
+ reloc_size = 3;
+ else if (is_16bit_abs_reloc (reloc_type))
+ reloc_size = 2;
+ else
+ {
+ warn (_("unable to apply unsupported reloc type %d to section %s\n"),
+ reloc_type, SECTION_NAME (section));
+ continue;
+ }
+
+ rloc = start + rp->r_offset;
+ if ((rloc + reloc_size) > end || (rloc < start))
+ {
+ warn (_("skipping invalid relocation offset 0x%lx in section %s\n"),
+ (unsigned long) rp->r_offset,
+ SECTION_NAME (section));
+ continue;
+ }
+
+ sym_index = (unsigned long) get_reloc_symindex (rp->r_info);
+ if (sym_index >= num_syms)
+ {
+ warn (_("skipping invalid relocation symbol index 0x%lx in section %s\n"),
+ sym_index, SECTION_NAME (section));
+ continue;
+ }
+ sym = symtab + sym_index;
+
+ /* If the reloc has a symbol associated with it,
+ make sure that it is of an appropriate type.
+
+ Relocations against symbols without type can happen.
+ Gcc -feliminate-dwarf2-dups may generate symbols
+ without type for debug info.
+
+ Icc generates relocations against function symbols
+ instead of local labels.
+
+ Relocations against object symbols can happen, eg when
+ referencing a global array. For an example of this see
+ the _clz.o binary in libgcc.a. */
+ if (sym != symtab
+ && ELF_ST_TYPE (sym->st_info) > STT_SECTION)
+ {
+ warn (_("skipping unexpected symbol type %s in %ld'th relocation in section %s\n"),
+ get_symbol_type (ELF_ST_TYPE (sym->st_info)),
+ (long int)(rp - relocs),
+ SECTION_NAME (relsec));
+ continue;
+ }
+
+ addend = 0;
+ if (is_rela)
+ addend += rp->r_addend;
+ /* R_XTENSA_32, R_PJ_DATA_DIR32 and R_D30V_32_NORMAL are
+ partial_inplace. */
+ if (!is_rela
+ || (elf_header.e_machine == EM_XTENSA
+ && reloc_type == 1)
+ || ((elf_header.e_machine == EM_PJ
+ || elf_header.e_machine == EM_PJ_OLD)
+ && reloc_type == 1)
+ || ((elf_header.e_machine == EM_D30V
+ || elf_header.e_machine == EM_CYGNUS_D30V)
+ && reloc_type == 12))
+ addend += byte_get (rloc, reloc_size);
+
+ if (is_32bit_pcrel_reloc (reloc_type)
+ || is_64bit_pcrel_reloc (reloc_type))
+ {
+ /* On HPPA, all pc-relative relocations are biased by 8. */
+ if (elf_header.e_machine == EM_PARISC)
+ addend -= 8;
+ byte_put (rloc, (addend + sym->st_value) - rp->r_offset,
+ reloc_size);
+ }
+ else
+ byte_put (rloc, addend + sym->st_value, reloc_size);
+ }
+
+ free (symtab);
+ free (relocs);
+ break;
+ }
+}
+
+#ifdef SUPPORT_DISASSEMBLY
+static int
+disassemble_section (Elf_Internal_Shdr * section, FILE * file)
+{
+ printf (_("\nAssembly dump of section %s\n"),
+ SECTION_NAME (section));
+
+ /* XXX -- to be done --- XXX */
+
+ return 1;
+}
+#endif
+
+/* Reads in the contents of SECTION from FILE, returning a pointer
+ to a malloc'ed buffer or NULL if something went wrong. */
+
+static char *
+get_section_contents (Elf_Internal_Shdr * section, FILE * file)
+{
+ bfd_size_type num_bytes;
+
+ num_bytes = section->sh_size;
+
+ if (num_bytes == 0 || section->sh_type == SHT_NOBITS)
+ {
+ printf (_("\nSection '%s' has no data to dump.\n"),
+ SECTION_NAME (section));
+ return NULL;
+ }
+
+ return (char *) get_data (NULL, file, section->sh_offset, 1, num_bytes,
+ _("section contents"));
+}
+
+
+static void
+dump_section_as_strings (Elf_Internal_Shdr * section, FILE * file)
+{
+ Elf_Internal_Shdr * relsec;
+ bfd_size_type num_bytes;
+ char * data;
+ char * end;
+ char * start;
+ char * name = SECTION_NAME (section);
+ bfd_boolean some_strings_shown;
+
+ start = get_section_contents (section, file);
+ if (start == NULL)
+ return;
+
+ printf (_("\nString dump of section '%s':\n"), name);
+
+ /* If the section being dumped has relocations against it the user might
+ be expecting these relocations to have been applied. Check for this
+ case and issue a warning message in order to avoid confusion.
+ FIXME: Maybe we ought to have an option that dumps a section with
+ relocs applied ? */
+ for (relsec = section_headers;
+ relsec < section_headers + elf_header.e_shnum;
+ ++relsec)
+ {
+ if ((relsec->sh_type != SHT_RELA && relsec->sh_type != SHT_REL)
+ || relsec->sh_info >= elf_header.e_shnum
+ || section_headers + relsec->sh_info != section
+ || relsec->sh_size == 0
+ || relsec->sh_link >= elf_header.e_shnum)
+ continue;
+
+ printf (_(" Note: This section has relocations against it, but these have NOT been applied to this dump.\n"));
+ break;
+ }
+
+ num_bytes = section->sh_size;
+ data = start;
+ end = start + num_bytes;
+ some_strings_shown = FALSE;
+
+ while (data < end)
+ {
+ while (!ISPRINT (* data))
+ if (++ data >= end)
+ break;
+
+ if (data < end)
+ {
+#ifndef __MSVCRT__
+ /* PR 11128: Use two separate invocations in order to work
+ around bugs in the Solaris 8 implementation of printf. */
+ printf (" [%6tx] ", data - start);
+ printf ("%s\n", data);
+#else
+ printf (" [%6Ix] %s\n", (size_t) (data - start), data);
+#endif
+ data += strlen (data);
+ some_strings_shown = TRUE;
+ }
+ }
+
+ if (! some_strings_shown)
+ printf (_(" No strings found in this section."));
+
+ free (start);
+
+ putchar ('\n');
+}
+
+static void
+dump_section_as_bytes (Elf_Internal_Shdr * section,
+ FILE * file,
+ bfd_boolean relocate)
+{
+ Elf_Internal_Shdr * relsec;
+ bfd_size_type bytes;
+ bfd_vma addr;
+ unsigned char * data;
+ unsigned char * start;
+
+ start = (unsigned char *) get_section_contents (section, file);
+ if (start == NULL)
+ return;
+
+ printf (_("\nHex dump of section '%s':\n"), SECTION_NAME (section));
+
+ if (relocate)
+ {
+ apply_relocations (file, section, start);
+ }
+ else
+ {
+ /* If the section being dumped has relocations against it the user might
+ be expecting these relocations to have been applied. Check for this
+ case and issue a warning message in order to avoid confusion.
+ FIXME: Maybe we ought to have an option that dumps a section with
+ relocs applied ? */
+ for (relsec = section_headers;
+ relsec < section_headers + elf_header.e_shnum;
+ ++relsec)
+ {
+ if ((relsec->sh_type != SHT_RELA && relsec->sh_type != SHT_REL)
+ || relsec->sh_info >= elf_header.e_shnum
+ || section_headers + relsec->sh_info != section
+ || relsec->sh_size == 0
+ || relsec->sh_link >= elf_header.e_shnum)
+ continue;
+
+ printf (_(" NOTE: This section has relocations against it, but these have NOT been applied to this dump.\n"));
+ break;
+ }
+ }
+
+ addr = section->sh_addr;
+ bytes = section->sh_size;
+ data = start;
+
+ while (bytes)
+ {
+ int j;
+ int k;
+ int lbytes;
+
+ lbytes = (bytes > 16 ? 16 : bytes);
+
+ printf (" 0x%8.8lx ", (unsigned long) addr);
+
+ for (j = 0; j < 16; j++)
+ {
+ if (j < lbytes)
+ printf ("%2.2x", data[j]);
+ else
+ printf (" ");
+
+ if ((j & 3) == 3)
+ printf (" ");
+ }
+
+ for (j = 0; j < lbytes; j++)
+ {
+ k = data[j];
+ if (k >= ' ' && k < 0x7f)
+ printf ("%c", k);
+ else
+ printf (".");
+ }
+
+ putchar ('\n');
+
+ data += lbytes;
+ addr += lbytes;
+ bytes -= lbytes;
+ }
+
+ free (start);
+
+ putchar ('\n');
+}
+
+/* Uncompresses a section that was compressed using zlib, in place. */
+
+static int
+uncompress_section_contents (unsigned char **buffer ATTRIBUTE_UNUSED,
+ dwarf_size_type *size ATTRIBUTE_UNUSED)
+{
+#ifndef HAVE_ZLIB_H
+ return FALSE;
+#else
+ dwarf_size_type compressed_size = *size;
+ unsigned char * compressed_buffer = *buffer;
+ dwarf_size_type uncompressed_size;
+ unsigned char * uncompressed_buffer;
+ z_stream strm;
+ int rc;
+ dwarf_size_type header_size = 12;
+
+ /* Read the zlib header. In this case, it should be "ZLIB" followed
+ by the uncompressed section size, 8 bytes in big-endian order. */
+ if (compressed_size < header_size
+ || ! streq ((char *) compressed_buffer, "ZLIB"))
+ return 0;
+
+ uncompressed_size = compressed_buffer[4]; uncompressed_size <<= 8;
+ uncompressed_size += compressed_buffer[5]; uncompressed_size <<= 8;
+ uncompressed_size += compressed_buffer[6]; uncompressed_size <<= 8;
+ uncompressed_size += compressed_buffer[7]; uncompressed_size <<= 8;
+ uncompressed_size += compressed_buffer[8]; uncompressed_size <<= 8;
+ uncompressed_size += compressed_buffer[9]; uncompressed_size <<= 8;
+ uncompressed_size += compressed_buffer[10]; uncompressed_size <<= 8;
+ uncompressed_size += compressed_buffer[11];
+
+ /* It is possible the section consists of several compressed
+ buffers concatenated together, so we uncompress in a loop. */
+ strm.zalloc = NULL;
+ strm.zfree = NULL;
+ strm.opaque = NULL;
+ strm.avail_in = compressed_size - header_size;
+ strm.next_in = (Bytef *) compressed_buffer + header_size;
+ strm.avail_out = uncompressed_size;
+ uncompressed_buffer = (unsigned char *) xmalloc (uncompressed_size);
+
+ rc = inflateInit (& strm);
+ while (strm.avail_in > 0)
+ {
+ if (rc != Z_OK)
+ goto fail;
+ strm.next_out = ((Bytef *) uncompressed_buffer
+ + (uncompressed_size - strm.avail_out));
+ rc = inflate (&strm, Z_FINISH);
+ if (rc != Z_STREAM_END)
+ goto fail;
+ rc = inflateReset (& strm);
+ }
+ rc = inflateEnd (& strm);
+ if (rc != Z_OK
+ || strm.avail_out != 0)
+ goto fail;
+
+ free (compressed_buffer);
+ *buffer = uncompressed_buffer;
+ *size = uncompressed_size;
+ return 1;
+
+ fail:
+ free (uncompressed_buffer);
+ /* Indicate decompression failure. */
+ *buffer = NULL;
+ return 0;
+#endif /* HAVE_ZLIB_H */
+}
+
+static int
+load_specific_debug_section (enum dwarf_section_display_enum debug,
+ Elf_Internal_Shdr * sec, void * file)
+{
+ struct dwarf_section * section = &debug_displays [debug].section;
+ char buf [64];
+
+ /* If it is already loaded, do nothing. */
+ if (section->start != NULL)
+ return 1;
+
+ snprintf (buf, sizeof (buf), _("%s section data"), section->name);
+ section->address = sec->sh_addr;
+ section->start = (unsigned char *) get_data (NULL, (FILE *) file,
+ sec->sh_offset, 1,
+ sec->sh_size, buf);
+ if (section->start == NULL)
+ section->size = 0;
+ else
+ {
+ section->size = sec->sh_size;
+ if (uncompress_section_contents (&section->start, &section->size))
+ sec->sh_size = section->size;
+ }
+
+ if (section->start == NULL)
+ return 0;
+
+ if (debug_displays [debug].relocate)
+ apply_relocations ((FILE *) file, sec, section->start);
+
+ return 1;
+}
+
+/* If this is not NULL, load_debug_section will only look for sections
+ within the list of sections given here. */
+unsigned int *section_subset = NULL;
+
+int
+load_debug_section (enum dwarf_section_display_enum debug, void * file)
+{
+ struct dwarf_section * section = &debug_displays [debug].section;
+ Elf_Internal_Shdr * sec;
+
+ /* Locate the debug section. */
+ sec = find_section_in_set (section->uncompressed_name, section_subset);
+ if (sec != NULL)
+ section->name = section->uncompressed_name;
+ else
+ {
+ sec = find_section_in_set (section->compressed_name, section_subset);
+ if (sec != NULL)
+ section->name = section->compressed_name;
+ }
+ if (sec == NULL)
+ return 0;
+
+ /* If we're loading from a subset of sections, and we've loaded
+ a section matching this name before, it's likely that it's a
+ different one. */
+ if (section_subset != NULL)
+ free_debug_section (debug);
+
+ return load_specific_debug_section (debug, sec, (FILE *) file);
+}
+
+void
+free_debug_section (enum dwarf_section_display_enum debug)
+{
+ struct dwarf_section * section = &debug_displays [debug].section;
+
+ if (section->start == NULL)
+ return;
+
+ free ((char *) section->start);
+ section->start = NULL;
+ section->address = 0;
+ section->size = 0;
+}
+
+static int
+display_debug_section (int shndx, Elf_Internal_Shdr * section, FILE * file)
+{
+ char * name = SECTION_NAME (section);
+ bfd_size_type length;
+ int result = 1;
+ int i;
+
+ length = section->sh_size;
+ if (length == 0)
+ {
+ printf (_("\nSection '%s' has no debugging data.\n"), name);
+ return 0;
+ }
+ if (section->sh_type == SHT_NOBITS)
+ {
+ /* There is no point in dumping the contents of a debugging section
+ which has the NOBITS type - the bits in the file will be random.
+ This can happen when a file containing a .eh_frame section is
+ stripped with the --only-keep-debug command line option. */
+ printf (_("section '%s' has the NOBITS type - its contents are unreliable.\n"), name);
+ return 0;
+ }
+
+ if (const_strneq (name, ".gnu.linkonce.wi."))
+ name = ".debug_info";
+
+ /* See if we know how to display the contents of this section. */
+ for (i = 0; i < max; i++)
+ if (streq (debug_displays[i].section.uncompressed_name, name)
+ || (i == line && const_strneq (name, ".debug_line."))
+ || streq (debug_displays[i].section.compressed_name, name))
+ {
+ struct dwarf_section * sec = &debug_displays [i].section;
+ int secondary = (section != find_section (name));
+
+ if (secondary)
+ free_debug_section ((enum dwarf_section_display_enum) i);
+
+ if (i == line && const_strneq (name, ".debug_line."))
+ sec->name = name;
+ else if (streq (sec->uncompressed_name, name))
+ sec->name = sec->uncompressed_name;
+ else
+ sec->name = sec->compressed_name;
+ if (load_specific_debug_section ((enum dwarf_section_display_enum) i,
+ section, file))
+ {
+ /* If this debug section is part of a CU/TU set in a .dwp file,
+ restrict load_debug_section to the sections in that set. */
+ section_subset = find_cu_tu_set (file, shndx);
+
+ result &= debug_displays[i].display (sec, file);
+
+ section_subset = NULL;
+
+ if (secondary || (i != info && i != abbrev))
+ free_debug_section ((enum dwarf_section_display_enum) i);
+ }
+
+ break;
+ }
+
+ if (i == max)
+ {
+ printf (_("Unrecognized debug section: %s\n"), name);
+ result = 0;
+ }
+
+ return result;
+}
+
+/* Set DUMP_SECTS for all sections where dumps were requested
+ based on section name. */
+
+static void
+initialise_dumps_byname (void)
+{
+ struct dump_list_entry * cur;
+
+ for (cur = dump_sects_byname; cur; cur = cur->next)
+ {
+ unsigned int i;
+ int any;
+
+ for (i = 0, any = 0; i < elf_header.e_shnum; i++)
+ if (streq (SECTION_NAME (section_headers + i), cur->name))
+ {
+ request_dump_bynumber (i, cur->type);
+ any = 1;
+ }
+
+ if (!any)
+ warn (_("Section '%s' was not dumped because it does not exist!\n"),
+ cur->name);
+ }
+}
+
+static void
+process_section_contents (FILE * file)
+{
+ Elf_Internal_Shdr * section;
+ unsigned int i;
+
+ if (! do_dump)
+ return;
+
+ initialise_dumps_byname ();
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum && i < num_dump_sects;
+ i++, section++)
+ {
+#ifdef SUPPORT_DISASSEMBLY
+ if (dump_sects[i] & DISASS_DUMP)
+ disassemble_section (section, file);
+#endif
+ if (dump_sects[i] & HEX_DUMP)
+ dump_section_as_bytes (section, file, FALSE);
+
+ if (dump_sects[i] & RELOC_DUMP)
+ dump_section_as_bytes (section, file, TRUE);
+
+ if (dump_sects[i] & STRING_DUMP)
+ dump_section_as_strings (section, file);
+
+ if (dump_sects[i] & DEBUG_DUMP)
+ display_debug_section (i, section, file);
+ }
+
+ /* Check to see if the user requested a
+ dump of a section that does not exist. */
+ while (i++ < num_dump_sects)
+ if (dump_sects[i])
+ warn (_("Section %d was not dumped because it does not exist!\n"), i);
+}
+
+static void
+process_mips_fpe_exception (int mask)
+{
+ if (mask)
+ {
+ int first = 1;
+ if (mask & OEX_FPU_INEX)
+ fputs ("INEX", stdout), first = 0;
+ if (mask & OEX_FPU_UFLO)
+ printf ("%sUFLO", first ? "" : "|"), first = 0;
+ if (mask & OEX_FPU_OFLO)
+ printf ("%sOFLO", first ? "" : "|"), first = 0;
+ if (mask & OEX_FPU_DIV0)
+ printf ("%sDIV0", first ? "" : "|"), first = 0;
+ if (mask & OEX_FPU_INVAL)
+ printf ("%sINVAL", first ? "" : "|");
+ }
+ else
+ fputs ("0", stdout);
+}
+
+/* Display's the value of TAG at location P. If TAG is
+ greater than 0 it is assumed to be an unknown tag, and
+ a message is printed to this effect. Otherwise it is
+ assumed that a message has already been printed.
+
+ If the bottom bit of TAG is set it assumed to have a
+ string value, otherwise it is assumed to have an integer
+ value.
+
+ Returns an updated P pointing to the first unread byte
+ beyond the end of TAG's value.
+
+ Reads at or beyond END will not be made. */
+
+static unsigned char *
+display_tag_value (int tag,
+ unsigned char * p,
+ const unsigned char * const end)
+{
+ unsigned long val;
+
+ if (tag > 0)
+ printf (" Tag_unknown_%d: ", tag);
+
+ if (p >= end)
+ {
+ warn (_("corrupt tag\n"));
+ }
+ else if (tag & 1)
+ {
+ /* FIXME: we could read beyond END here. */
+ printf ("\"%s\"\n", p);
+ p += strlen ((char *) p) + 1;
+ }
+ else
+ {
+ unsigned int len;
+
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf ("%ld (0x%lx)\n", val, val);
+ }
+
+ return p;
+}
+
+/* ARM EABI attributes section. */
+typedef struct
+{
+ int tag;
+ const char * name;
+ /* 0 = special, 1 = string, 2 = uleb123, > 0x80 == table lookup. */
+ int type;
+ const char ** table;
+} arm_attr_public_tag;
+
+static const char * arm_attr_tag_CPU_arch[] =
+ {"Pre-v4", "v4", "v4T", "v5T", "v5TE", "v5TEJ", "v6", "v6KZ", "v6T2",
+ "v6K", "v7", "v6-M", "v6S-M", "v7E-M", "v8"};
+static const char * arm_attr_tag_ARM_ISA_use[] = {"No", "Yes"};
+static const char * arm_attr_tag_THUMB_ISA_use[] =
+ {"No", "Thumb-1", "Thumb-2"};
+static const char * arm_attr_tag_FP_arch[] =
+ {"No", "VFPv1", "VFPv2", "VFPv3", "VFPv3-D16", "VFPv4", "VFPv4-D16",
+ "FP for ARMv8"};
+static const char * arm_attr_tag_WMMX_arch[] = {"No", "WMMXv1", "WMMXv2"};
+static const char * arm_attr_tag_Advanced_SIMD_arch[] =
+ {"No", "NEONv1", "NEONv1 with Fused-MAC", "NEON for ARMv8"};
+static const char * arm_attr_tag_PCS_config[] =
+ {"None", "Bare platform", "Linux application", "Linux DSO", "PalmOS 2004",
+ "PalmOS (reserved)", "SymbianOS 2004", "SymbianOS (reserved)"};
+static const char * arm_attr_tag_ABI_PCS_R9_use[] =
+ {"V6", "SB", "TLS", "Unused"};
+static const char * arm_attr_tag_ABI_PCS_RW_data[] =
+ {"Absolute", "PC-relative", "SB-relative", "None"};
+static const char * arm_attr_tag_ABI_PCS_RO_data[] =
+ {"Absolute", "PC-relative", "None"};
+static const char * arm_attr_tag_ABI_PCS_GOT_use[] =
+ {"None", "direct", "GOT-indirect"};
+static const char * arm_attr_tag_ABI_PCS_wchar_t[] =
+ {"None", "??? 1", "2", "??? 3", "4"};
+static const char * arm_attr_tag_ABI_FP_rounding[] = {"Unused", "Needed"};
+static const char * arm_attr_tag_ABI_FP_denormal[] =
+ {"Unused", "Needed", "Sign only"};
+static const char * arm_attr_tag_ABI_FP_exceptions[] = {"Unused", "Needed"};
+static const char * arm_attr_tag_ABI_FP_user_exceptions[] = {"Unused", "Needed"};
+static const char * arm_attr_tag_ABI_FP_number_model[] =
+ {"Unused", "Finite", "RTABI", "IEEE 754"};
+static const char * arm_attr_tag_ABI_enum_size[] =
+ {"Unused", "small", "int", "forced to int"};
+static const char * arm_attr_tag_ABI_HardFP_use[] =
+ {"As Tag_FP_arch", "SP only", "DP only", "SP and DP"};
+static const char * arm_attr_tag_ABI_VFP_args[] =
+ {"AAPCS", "VFP registers", "custom"};
+static const char * arm_attr_tag_ABI_WMMX_args[] =
+ {"AAPCS", "WMMX registers", "custom"};
+static const char * arm_attr_tag_ABI_optimization_goals[] =
+ {"None", "Prefer Speed", "Aggressive Speed", "Prefer Size",
+ "Aggressive Size", "Prefer Debug", "Aggressive Debug"};
+static const char * arm_attr_tag_ABI_FP_optimization_goals[] =
+ {"None", "Prefer Speed", "Aggressive Speed", "Prefer Size",
+ "Aggressive Size", "Prefer Accuracy", "Aggressive Accuracy"};
+static const char * arm_attr_tag_CPU_unaligned_access[] = {"None", "v6"};
+static const char * arm_attr_tag_FP_HP_extension[] =
+ {"Not Allowed", "Allowed"};
+static const char * arm_attr_tag_ABI_FP_16bit_format[] =
+ {"None", "IEEE 754", "Alternative Format"};
+static const char * arm_attr_tag_MPextension_use[] =
+ {"Not Allowed", "Allowed"};
+static const char * arm_attr_tag_DIV_use[] =
+ {"Allowed in Thumb-ISA, v7-R or v7-M", "Not allowed",
+ "Allowed in v7-A with integer division extension"};
+static const char * arm_attr_tag_T2EE_use[] = {"Not Allowed", "Allowed"};
+static const char * arm_attr_tag_Virtualization_use[] =
+ {"Not Allowed", "TrustZone", "Virtualization Extensions",
+ "TrustZone and Virtualization Extensions"};
+static const char * arm_attr_tag_MPextension_use_legacy[] =
+ {"Not Allowed", "Allowed"};
+
+#define LOOKUP(id, name) \
+ {id, #name, 0x80 | ARRAY_SIZE(arm_attr_tag_##name), arm_attr_tag_##name}
+static arm_attr_public_tag arm_attr_public_tags[] =
+{
+ {4, "CPU_raw_name", 1, NULL},
+ {5, "CPU_name", 1, NULL},
+ LOOKUP(6, CPU_arch),
+ {7, "CPU_arch_profile", 0, NULL},
+ LOOKUP(8, ARM_ISA_use),
+ LOOKUP(9, THUMB_ISA_use),
+ LOOKUP(10, FP_arch),
+ LOOKUP(11, WMMX_arch),
+ LOOKUP(12, Advanced_SIMD_arch),
+ LOOKUP(13, PCS_config),
+ LOOKUP(14, ABI_PCS_R9_use),
+ LOOKUP(15, ABI_PCS_RW_data),
+ LOOKUP(16, ABI_PCS_RO_data),
+ LOOKUP(17, ABI_PCS_GOT_use),
+ LOOKUP(18, ABI_PCS_wchar_t),
+ LOOKUP(19, ABI_FP_rounding),
+ LOOKUP(20, ABI_FP_denormal),
+ LOOKUP(21, ABI_FP_exceptions),
+ LOOKUP(22, ABI_FP_user_exceptions),
+ LOOKUP(23, ABI_FP_number_model),
+ {24, "ABI_align_needed", 0, NULL},
+ {25, "ABI_align_preserved", 0, NULL},
+ LOOKUP(26, ABI_enum_size),
+ LOOKUP(27, ABI_HardFP_use),
+ LOOKUP(28, ABI_VFP_args),
+ LOOKUP(29, ABI_WMMX_args),
+ LOOKUP(30, ABI_optimization_goals),
+ LOOKUP(31, ABI_FP_optimization_goals),
+ {32, "compatibility", 0, NULL},
+ LOOKUP(34, CPU_unaligned_access),
+ LOOKUP(36, FP_HP_extension),
+ LOOKUP(38, ABI_FP_16bit_format),
+ LOOKUP(42, MPextension_use),
+ LOOKUP(44, DIV_use),
+ {64, "nodefaults", 0, NULL},
+ {65, "also_compatible_with", 0, NULL},
+ LOOKUP(66, T2EE_use),
+ {67, "conformance", 1, NULL},
+ LOOKUP(68, Virtualization_use),
+ LOOKUP(70, MPextension_use_legacy)
+};
+#undef LOOKUP
+
+static unsigned char *
+display_arm_attribute (unsigned char * p,
+ const unsigned char * const end)
+{
+ int tag;
+ unsigned int len;
+ int val;
+ arm_attr_public_tag * attr;
+ unsigned i;
+ int type;
+
+ tag = read_uleb128 (p, &len, end);
+ p += len;
+ attr = NULL;
+ for (i = 0; i < ARRAY_SIZE (arm_attr_public_tags); i++)
+ {
+ if (arm_attr_public_tags[i].tag == tag)
+ {
+ attr = &arm_attr_public_tags[i];
+ break;
+ }
+ }
+
+ if (attr)
+ {
+ printf (" Tag_%s: ", attr->name);
+ switch (attr->type)
+ {
+ case 0:
+ switch (tag)
+ {
+ case 7: /* Tag_CPU_arch_profile. */
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ switch (val)
+ {
+ case 0: printf (_("None\n")); break;
+ case 'A': printf (_("Application\n")); break;
+ case 'R': printf (_("Realtime\n")); break;
+ case 'M': printf (_("Microcontroller\n")); break;
+ case 'S': printf (_("Application or Realtime\n")); break;
+ default: printf ("??? (%d)\n", val); break;
+ }
+ break;
+
+ case 24: /* Tag_align_needed. */
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ switch (val)
+ {
+ case 0: printf (_("None\n")); break;
+ case 1: printf (_("8-byte\n")); break;
+ case 2: printf (_("4-byte\n")); break;
+ case 3: printf ("??? 3\n"); break;
+ default:
+ if (val <= 12)
+ printf (_("8-byte and up to %d-byte extended\n"),
+ 1 << val);
+ else
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ break;
+
+ case 25: /* Tag_align_preserved. */
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ switch (val)
+ {
+ case 0: printf (_("None\n")); break;
+ case 1: printf (_("8-byte, except leaf SP\n")); break;
+ case 2: printf (_("8-byte\n")); break;
+ case 3: printf ("??? 3\n"); break;
+ default:
+ if (val <= 12)
+ printf (_("8-byte and up to %d-byte extended\n"),
+ 1 << val);
+ else
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ break;
+
+ case 32: /* Tag_compatibility. */
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (_("flag = %d, vendor = %s\n"), val, p);
+ p += strlen ((char *) p) + 1;
+ break;
+
+ case 64: /* Tag_nodefaults. */
+ p++;
+ printf (_("True\n"));
+ break;
+
+ case 65: /* Tag_also_compatible_with. */
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ if (val == 6 /* Tag_CPU_arch. */)
+ {
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ if ((unsigned int)val >= ARRAY_SIZE (arm_attr_tag_CPU_arch))
+ printf ("??? (%d)\n", val);
+ else
+ printf ("%s\n", arm_attr_tag_CPU_arch[val]);
+ }
+ else
+ printf ("???\n");
+ while (*(p++) != '\0' /* NUL terminator. */);
+ break;
+
+ default:
+ abort ();
+ }
+ return p;
+
+ case 1:
+ return display_tag_value (-1, p, end);
+ case 2:
+ return display_tag_value (0, p, end);
+
+ default:
+ assert (attr->type & 0x80);
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ type = attr->type & 0x7f;
+ if (val >= type)
+ printf ("??? (%d)\n", val);
+ else
+ printf ("%s\n", attr->table[val]);
+ return p;
+ }
+ }
+
+ return display_tag_value (tag, p, end);
+}
+
+static unsigned char *
+display_gnu_attribute (unsigned char * p,
+ unsigned char * (* display_proc_gnu_attribute) (unsigned char *, int, const unsigned char * const),
+ const unsigned char * const end)
+{
+ int tag;
+ unsigned int len;
+ int val;
+
+ tag = read_uleb128 (p, &len, end);
+ p += len;
+
+ /* Tag_compatibility is the only generic GNU attribute defined at
+ present. */
+ if (tag == 32)
+ {
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ if (p == end)
+ {
+ printf (_("flag = %d, vendor = <corrupt>\n"), val);
+ warn (_("corrupt vendor attribute\n"));
+ }
+ else
+ {
+ printf (_("flag = %d, vendor = %s\n"), val, p);
+ p += strlen ((char *) p) + 1;
+ }
+ return p;
+ }
+
+ if ((tag & 2) == 0 && display_proc_gnu_attribute)
+ return display_proc_gnu_attribute (p, tag, end);
+
+ return display_tag_value (tag, p, end);
+}
+
+static unsigned char *
+display_power_gnu_attribute (unsigned char * p,
+ int tag,
+ const unsigned char * const end)
+{
+ unsigned int len;
+ int val;
+
+ if (tag == Tag_GNU_Power_ABI_FP)
+ {
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_GNU_Power_ABI_FP: ");
+
+ switch (val)
+ {
+ case 0:
+ printf (_("Hard or soft float\n"));
+ break;
+ case 1:
+ printf (_("Hard float\n"));
+ break;
+ case 2:
+ printf (_("Soft float\n"));
+ break;
+ case 3:
+ printf (_("Single-precision hard float\n"));
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+ }
+
+ if (tag == Tag_GNU_Power_ABI_Vector)
+ {
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_GNU_Power_ABI_Vector: ");
+ switch (val)
+ {
+ case 0:
+ printf (_("Any\n"));
+ break;
+ case 1:
+ printf (_("Generic\n"));
+ break;
+ case 2:
+ printf ("AltiVec\n");
+ break;
+ case 3:
+ printf ("SPE\n");
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+ }
+
+ if (tag == Tag_GNU_Power_ABI_Struct_Return)
+ {
+ if (p == end)
+ {
+ warn (_("corrupt Tag_GNU_Power_ABI_Struct_Return"));
+ return p;
+ }
+
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_GNU_Power_ABI_Struct_Return: ");
+ switch (val)
+ {
+ case 0:
+ printf (_("Any\n"));
+ break;
+ case 1:
+ printf ("r3/r4\n");
+ break;
+ case 2:
+ printf (_("Memory\n"));
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+ }
+
+ return display_tag_value (tag & 1, p, end);
+}
+
+static void
+display_sparc_hwcaps (int mask)
+{
+ if (mask)
+ {
+ int first = 1;
+ if (mask & ELF_SPARC_HWCAP_MUL32)
+ fputs ("mul32", stdout), first = 0;
+ if (mask & ELF_SPARC_HWCAP_DIV32)
+ printf ("%sdiv32", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_FSMULD)
+ printf ("%sfsmuld", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_V8PLUS)
+ printf ("%sv8plus", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_POPC)
+ printf ("%spopc", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_VIS)
+ printf ("%svis", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_VIS2)
+ printf ("%svis2", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_ASI_BLK_INIT)
+ printf ("%sASIBlkInit", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_FMAF)
+ printf ("%sfmaf", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_VIS3)
+ printf ("%svis3", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_HPC)
+ printf ("%shpc", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_RANDOM)
+ printf ("%srandom", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_TRANS)
+ printf ("%strans", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_FJFMAU)
+ printf ("%sfjfmau", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_IMA)
+ printf ("%sima", first ? "" : "|"), first = 0;
+ if (mask & ELF_SPARC_HWCAP_ASI_CACHE_SPARING)
+ printf ("%scspare", first ? "" : "|"), first = 0;
+ }
+ else
+ fputc('0', stdout);
+ fputc('\n', stdout);
+}
+
+static unsigned char *
+display_sparc_gnu_attribute (unsigned char * p,
+ int tag,
+ const unsigned char * const end)
+{
+ if (tag == Tag_GNU_Sparc_HWCAPS)
+ {
+ unsigned int len;
+ int val;
+
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_GNU_Sparc_HWCAPS: ");
+ display_sparc_hwcaps (val);
+ return p;
+ }
+
+ return display_tag_value (tag, p, end);
+}
+
+static unsigned char *
+display_mips_gnu_attribute (unsigned char * p,
+ int tag,
+ const unsigned char * const end)
+{
+ if (tag == Tag_GNU_MIPS_ABI_FP)
+ {
+ unsigned int len;
+ int val;
+
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_GNU_MIPS_ABI_FP: ");
+
+ switch (val)
+ {
+ case Val_GNU_MIPS_ABI_FP_ANY:
+ printf (_("Hard or soft float\n"));
+ break;
+ case Val_GNU_MIPS_ABI_FP_DOUBLE:
+ printf (_("Hard float (double precision)\n"));
+ break;
+ case Val_GNU_MIPS_ABI_FP_SINGLE:
+ printf (_("Hard float (single precision)\n"));
+ break;
+ case Val_GNU_MIPS_ABI_FP_SOFT:
+ printf (_("Soft float\n"));
+ break;
+ case Val_GNU_MIPS_ABI_FP_64:
+ printf (_("Hard float (MIPS32r2 64-bit FPU)\n"));
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+ }
+
+ return display_tag_value (tag & 1, p, end);
+}
+
+static unsigned char *
+display_tic6x_attribute (unsigned char * p,
+ const unsigned char * const end)
+{
+ int tag;
+ unsigned int len;
+ int val;
+
+ tag = read_uleb128 (p, &len, end);
+ p += len;
+
+ switch (tag)
+ {
+ case Tag_ISA:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_ISA: ");
+
+ switch (val)
+ {
+ case C6XABI_Tag_ISA_none:
+ printf (_("None\n"));
+ break;
+ case C6XABI_Tag_ISA_C62X:
+ printf ("C62x\n");
+ break;
+ case C6XABI_Tag_ISA_C67X:
+ printf ("C67x\n");
+ break;
+ case C6XABI_Tag_ISA_C67XP:
+ printf ("C67x+\n");
+ break;
+ case C6XABI_Tag_ISA_C64X:
+ printf ("C64x\n");
+ break;
+ case C6XABI_Tag_ISA_C64XP:
+ printf ("C64x+\n");
+ break;
+ case C6XABI_Tag_ISA_C674X:
+ printf ("C674x\n");
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+
+ case Tag_ABI_wchar_t:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_ABI_wchar_t: ");
+ switch (val)
+ {
+ case 0:
+ printf (_("Not used\n"));
+ break;
+ case 1:
+ printf (_("2 bytes\n"));
+ break;
+ case 2:
+ printf (_("4 bytes\n"));
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+
+ case Tag_ABI_stack_align_needed:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_ABI_stack_align_needed: ");
+ switch (val)
+ {
+ case 0:
+ printf (_("8-byte\n"));
+ break;
+ case 1:
+ printf (_("16-byte\n"));
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+
+ case Tag_ABI_stack_align_preserved:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_ABI_stack_align_preserved: ");
+ switch (val)
+ {
+ case 0:
+ printf (_("8-byte\n"));
+ break;
+ case 1:
+ printf (_("16-byte\n"));
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+
+ case Tag_ABI_DSBT:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_ABI_DSBT: ");
+ switch (val)
+ {
+ case 0:
+ printf (_("DSBT addressing not used\n"));
+ break;
+ case 1:
+ printf (_("DSBT addressing used\n"));
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+
+ case Tag_ABI_PID:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_ABI_PID: ");
+ switch (val)
+ {
+ case 0:
+ printf (_("Data addressing position-dependent\n"));
+ break;
+ case 1:
+ printf (_("Data addressing position-independent, GOT near DP\n"));
+ break;
+ case 2:
+ printf (_("Data addressing position-independent, GOT far from DP\n"));
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+
+ case Tag_ABI_PIC:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_ABI_PIC: ");
+ switch (val)
+ {
+ case 0:
+ printf (_("Code addressing position-dependent\n"));
+ break;
+ case 1:
+ printf (_("Code addressing position-independent\n"));
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+
+ case Tag_ABI_array_object_alignment:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_ABI_array_object_alignment: ");
+ switch (val)
+ {
+ case 0:
+ printf (_("8-byte\n"));
+ break;
+ case 1:
+ printf (_("4-byte\n"));
+ break;
+ case 2:
+ printf (_("16-byte\n"));
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+
+ case Tag_ABI_array_object_align_expected:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_ABI_array_object_align_expected: ");
+ switch (val)
+ {
+ case 0:
+ printf (_("8-byte\n"));
+ break;
+ case 1:
+ printf (_("4-byte\n"));
+ break;
+ case 2:
+ printf (_("16-byte\n"));
+ break;
+ default:
+ printf ("??? (%d)\n", val);
+ break;
+ }
+ return p;
+
+ case Tag_ABI_compatibility:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_ABI_compatibility: ");
+ printf (_("flag = %d, vendor = %s\n"), val, p);
+ p += strlen ((char *) p) + 1;
+ return p;
+
+ case Tag_ABI_conformance:
+ printf (" Tag_ABI_conformance: ");
+ printf ("\"%s\"\n", p);
+ p += strlen ((char *) p) + 1;
+ return p;
+ }
+
+ return display_tag_value (tag, p, end);
+}
+
+static void
+display_raw_attribute (unsigned char * p, unsigned char * end)
+{
+ unsigned long addr = 0;
+ size_t bytes = end - p;
+
+ while (bytes)
+ {
+ int j;
+ int k;
+ int lbytes = (bytes > 16 ? 16 : bytes);
+
+ printf (" 0x%8.8lx ", addr);
+
+ for (j = 0; j < 16; j++)
+ {
+ if (j < lbytes)
+ printf ("%2.2x", p[j]);
+ else
+ printf (" ");
+
+ if ((j & 3) == 3)
+ printf (" ");
+ }
+
+ for (j = 0; j < lbytes; j++)
+ {
+ k = p[j];
+ if (k >= ' ' && k < 0x7f)
+ printf ("%c", k);
+ else
+ printf (".");
+ }
+
+ putchar ('\n');
+
+ p += lbytes;
+ bytes -= lbytes;
+ addr += lbytes;
+ }
+
+ putchar ('\n');
+}
+
+static unsigned char *
+display_msp430x_attribute (unsigned char * p,
+ const unsigned char * const end)
+{
+ unsigned int len;
+ int val;
+ int tag;
+
+ tag = read_uleb128 (p, & len, end);
+ p += len;
+
+ switch (tag)
+ {
+ case OFBA_MSPABI_Tag_ISA:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_ISA: ");
+ switch (val)
+ {
+ case 0: printf (_("None\n")); break;
+ case 1: printf (_("MSP430\n")); break;
+ case 2: printf (_("MSP430X\n")); break;
+ default: printf ("??? (%d)\n", val); break;
+ }
+ break;
+
+ case OFBA_MSPABI_Tag_Code_Model:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_Code_Model: ");
+ switch (val)
+ {
+ case 0: printf (_("None\n")); break;
+ case 1: printf (_("Small\n")); break;
+ case 2: printf (_("Large\n")); break;
+ default: printf ("??? (%d)\n", val); break;
+ }
+ break;
+
+ case OFBA_MSPABI_Tag_Data_Model:
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf (" Tag_Data_Model: ");
+ switch (val)
+ {
+ case 0: printf (_("None\n")); break;
+ case 1: printf (_("Small\n")); break;
+ case 2: printf (_("Large\n")); break;
+ case 3: printf (_("Restricted Large\n")); break;
+ default: printf ("??? (%d)\n", val); break;
+ }
+ break;
+
+ default:
+ printf (_(" <unknown tag %d>: "), tag);
+
+ if (tag & 1)
+ {
+ printf ("\"%s\"\n", p);
+ p += strlen ((char *) p) + 1;
+ }
+ else
+ {
+ val = read_uleb128 (p, &len, end);
+ p += len;
+ printf ("%d (0x%x)\n", val, val);
+ }
+ break;
+ }
+
+ return p;
+}
+
+static int
+process_attributes (FILE * file,
+ const char * public_name,
+ unsigned int proc_type,
+ unsigned char * (* display_pub_attribute) (unsigned char *, const unsigned char * const),
+ unsigned char * (* display_proc_gnu_attribute) (unsigned char *, int, const unsigned char * const))
+{
+ Elf_Internal_Shdr * sect;
+ unsigned char * contents;
+ unsigned char * p;
+ unsigned char * end;
+ bfd_vma section_len;
+ bfd_vma len;
+ unsigned i;
+
+ /* Find the section header so that we get the size. */
+ for (i = 0, sect = section_headers;
+ i < elf_header.e_shnum;
+ i++, sect++)
+ {
+ if (sect->sh_type != proc_type && sect->sh_type != SHT_GNU_ATTRIBUTES)
+ continue;
+
+ contents = (unsigned char *) get_data (NULL, file, sect->sh_offset, 1,
+ sect->sh_size, _("attributes"));
+ if (contents == NULL)
+ continue;
+
+ p = contents;
+ if (*p == 'A')
+ {
+ len = sect->sh_size - 1;
+ p++;
+
+ while (len > 0)
+ {
+ int namelen;
+ bfd_boolean public_section;
+ bfd_boolean gnu_section;
+
+ section_len = byte_get (p, 4);
+ p += 4;
+
+ if (section_len > len)
+ {
+ printf (_("ERROR: Bad section length (%d > %d)\n"),
+ (int) section_len, (int) len);
+ section_len = len;
+ }
+
+ len -= section_len;
+ printf (_("Attribute Section: %s\n"), p);
+
+ if (public_name && streq ((char *) p, public_name))
+ public_section = TRUE;
+ else
+ public_section = FALSE;
+
+ if (streq ((char *) p, "gnu"))
+ gnu_section = TRUE;
+ else
+ gnu_section = FALSE;
+
+ namelen = strlen ((char *) p) + 1;
+ p += namelen;
+ section_len -= namelen + 4;
+
+ while (section_len > 0)
+ {
+ int tag = *(p++);
+ int val;
+ bfd_vma size;
+
+ size = byte_get (p, 4);
+ if (size > section_len)
+ {
+ printf (_("ERROR: Bad subsection length (%d > %d)\n"),
+ (int) size, (int) section_len);
+ size = section_len;
+ }
+
+ section_len -= size;
+ end = p + size - 1;
+ p += 4;
+
+ switch (tag)
+ {
+ case 1:
+ printf (_("File Attributes\n"));
+ break;
+ case 2:
+ printf (_("Section Attributes:"));
+ goto do_numlist;
+ case 3:
+ printf (_("Symbol Attributes:"));
+ do_numlist:
+ for (;;)
+ {
+ unsigned int j;
+
+ val = read_uleb128 (p, &j, end);
+ p += j;
+ if (val == 0)
+ break;
+ printf (" %d", val);
+ }
+ printf ("\n");
+ break;
+ default:
+ printf (_("Unknown tag: %d\n"), tag);
+ public_section = FALSE;
+ break;
+ }
+
+ if (public_section)
+ {
+ while (p < end)
+ p = display_pub_attribute (p, end);
+ }
+ else if (gnu_section)
+ {
+ while (p < end)
+ p = display_gnu_attribute (p,
+ display_proc_gnu_attribute,
+ end);
+ }
+ else
+ {
+ printf (_(" Unknown section contexts\n"));
+ display_raw_attribute (p, end);
+ p = end;
+ }
+ }
+ }
+ }
+ else
+ printf (_("Unknown format '%c'\n"), *p);
+
+ free (contents);
+ }
+ return 1;
+}
+
+static int
+process_arm_specific (FILE * file)
+{
+ return process_attributes (file, "aeabi", SHT_ARM_ATTRIBUTES,
+ display_arm_attribute, NULL);
+}
+
+static int
+process_power_specific (FILE * file)
+{
+ return process_attributes (file, NULL, SHT_GNU_ATTRIBUTES, NULL,
+ display_power_gnu_attribute);
+}
+
+static int
+process_sparc_specific (FILE * file)
+{
+ return process_attributes (file, NULL, SHT_GNU_ATTRIBUTES, NULL,
+ display_sparc_gnu_attribute);
+}
+
+static int
+process_tic6x_specific (FILE * file)
+{
+ return process_attributes (file, "c6xabi", SHT_C6000_ATTRIBUTES,
+ display_tic6x_attribute, NULL);
+}
+
+static int
+process_msp430x_specific (FILE * file)
+{
+ return process_attributes (file, "mspabi", SHT_MSP430_ATTRIBUTES,
+ display_msp430x_attribute, NULL);
+}
+
+/* DATA points to the contents of a MIPS GOT that starts at VMA PLTGOT.
+ Print the Address, Access and Initial fields of an entry at VMA ADDR
+ and return the VMA of the next entry. */
+
+static bfd_vma
+print_mips_got_entry (unsigned char * data, bfd_vma pltgot, bfd_vma addr)
+{
+ printf (" ");
+ print_vma (addr, LONG_HEX);
+ printf (" ");
+ if (addr < pltgot + 0xfff0)
+ printf ("%6d(gp)", (int) (addr - pltgot - 0x7ff0));
+ else
+ printf ("%10s", "");
+ printf (" ");
+ if (data == NULL)
+ printf ("%*s", is_32bit_elf ? 8 : 16, _("<unknown>"));
+ else
+ {
+ bfd_vma entry;
+
+ entry = byte_get (data + addr - pltgot, is_32bit_elf ? 4 : 8);
+ print_vma (entry, LONG_HEX);
+ }
+ return addr + (is_32bit_elf ? 4 : 8);
+}
+
+/* DATA points to the contents of a MIPS PLT GOT that starts at VMA
+ PLTGOT. Print the Address and Initial fields of an entry at VMA
+ ADDR and return the VMA of the next entry. */
+
+static bfd_vma
+print_mips_pltgot_entry (unsigned char * data, bfd_vma pltgot, bfd_vma addr)
+{
+ printf (" ");
+ print_vma (addr, LONG_HEX);
+ printf (" ");
+ if (data == NULL)
+ printf ("%*s", is_32bit_elf ? 8 : 16, _("<unknown>"));
+ else
+ {
+ bfd_vma entry;
+
+ entry = byte_get (data + addr - pltgot, is_32bit_elf ? 4 : 8);
+ print_vma (entry, LONG_HEX);
+ }
+ return addr + (is_32bit_elf ? 4 : 8);
+}
+
+static int
+process_mips_specific (FILE * file)
+{
+ Elf_Internal_Dyn * entry;
+ size_t liblist_offset = 0;
+ size_t liblistno = 0;
+ size_t conflictsno = 0;
+ size_t options_offset = 0;
+ size_t conflicts_offset = 0;
+ size_t pltrelsz = 0;
+ size_t pltrel = 0;
+ bfd_vma pltgot = 0;
+ bfd_vma mips_pltgot = 0;
+ bfd_vma jmprel = 0;
+ bfd_vma local_gotno = 0;
+ bfd_vma gotsym = 0;
+ bfd_vma symtabno = 0;
+
+ process_attributes (file, NULL, SHT_GNU_ATTRIBUTES, NULL,
+ display_mips_gnu_attribute);
+
+ /* We have a lot of special sections. Thanks SGI! */
+ if (dynamic_section == NULL)
+ /* No information available. */
+ return 0;
+
+ for (entry = dynamic_section; entry->d_tag != DT_NULL; ++entry)
+ switch (entry->d_tag)
+ {
+ case DT_MIPS_LIBLIST:
+ liblist_offset
+ = offset_from_vma (file, entry->d_un.d_val,
+ liblistno * sizeof (Elf32_External_Lib));
+ break;
+ case DT_MIPS_LIBLISTNO:
+ liblistno = entry->d_un.d_val;
+ break;
+ case DT_MIPS_OPTIONS:
+ options_offset = offset_from_vma (file, entry->d_un.d_val, 0);
+ break;
+ case DT_MIPS_CONFLICT:
+ conflicts_offset
+ = offset_from_vma (file, entry->d_un.d_val,
+ conflictsno * sizeof (Elf32_External_Conflict));
+ break;
+ case DT_MIPS_CONFLICTNO:
+ conflictsno = entry->d_un.d_val;
+ break;
+ case DT_PLTGOT:
+ pltgot = entry->d_un.d_ptr;
+ break;
+ case DT_MIPS_LOCAL_GOTNO:
+ local_gotno = entry->d_un.d_val;
+ break;
+ case DT_MIPS_GOTSYM:
+ gotsym = entry->d_un.d_val;
+ break;
+ case DT_MIPS_SYMTABNO:
+ symtabno = entry->d_un.d_val;
+ break;
+ case DT_MIPS_PLTGOT:
+ mips_pltgot = entry->d_un.d_ptr;
+ break;
+ case DT_PLTREL:
+ pltrel = entry->d_un.d_val;
+ break;
+ case DT_PLTRELSZ:
+ pltrelsz = entry->d_un.d_val;
+ break;
+ case DT_JMPREL:
+ jmprel = entry->d_un.d_ptr;
+ break;
+ default:
+ break;
+ }
+
+ if (liblist_offset != 0 && liblistno != 0 && do_dynamic)
+ {
+ Elf32_External_Lib * elib;
+ size_t cnt;
+
+ elib = (Elf32_External_Lib *) get_data (NULL, file, liblist_offset,
+ liblistno,
+ sizeof (Elf32_External_Lib),
+ _("liblist section data"));
+ if (elib)
+ {
+ printf (_("\nSection '.liblist' contains %lu entries:\n"),
+ (unsigned long) liblistno);
+ fputs (_(" Library Time Stamp Checksum Version Flags\n"),
+ stdout);
+
+ for (cnt = 0; cnt < liblistno; ++cnt)
+ {
+ Elf32_Lib liblist;
+ time_t atime;
+ char timebuf[20];
+ struct tm * tmp;
+
+ liblist.l_name = BYTE_GET (elib[cnt].l_name);
+ atime = BYTE_GET (elib[cnt].l_time_stamp);
+ liblist.l_checksum = BYTE_GET (elib[cnt].l_checksum);
+ liblist.l_version = BYTE_GET (elib[cnt].l_version);
+ liblist.l_flags = BYTE_GET (elib[cnt].l_flags);
+
+ tmp = gmtime (&atime);
+ snprintf (timebuf, sizeof (timebuf),
+ "%04u-%02u-%02uT%02u:%02u:%02u",
+ tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
+ tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
+
+ printf ("%3lu: ", (unsigned long) cnt);
+ if (VALID_DYNAMIC_NAME (liblist.l_name))
+ print_symbol (20, GET_DYNAMIC_NAME (liblist.l_name));
+ else
+ printf (_("<corrupt: %9ld>"), liblist.l_name);
+ printf (" %s %#10lx %-7ld", timebuf, liblist.l_checksum,
+ liblist.l_version);
+
+ if (liblist.l_flags == 0)
+ puts (_(" NONE"));
+ else
+ {
+ static const struct
+ {
+ const char * name;
+ int bit;
+ }
+ l_flags_vals[] =
+ {
+ { " EXACT_MATCH", LL_EXACT_MATCH },
+ { " IGNORE_INT_VER", LL_IGNORE_INT_VER },
+ { " REQUIRE_MINOR", LL_REQUIRE_MINOR },
+ { " EXPORTS", LL_EXPORTS },
+ { " DELAY_LOAD", LL_DELAY_LOAD },
+ { " DELTA", LL_DELTA }
+ };
+ int flags = liblist.l_flags;
+ size_t fcnt;
+
+ for (fcnt = 0; fcnt < ARRAY_SIZE (l_flags_vals); ++fcnt)
+ if ((flags & l_flags_vals[fcnt].bit) != 0)
+ {
+ fputs (l_flags_vals[fcnt].name, stdout);
+ flags ^= l_flags_vals[fcnt].bit;
+ }
+ if (flags != 0)
+ printf (" %#x", (unsigned int) flags);
+
+ puts ("");
+ }
+ }
+
+ free (elib);
+ }
+ }
+
+ if (options_offset != 0)
+ {
+ Elf_External_Options * eopt;
+ Elf_Internal_Shdr * sect = section_headers;
+ Elf_Internal_Options * iopt;
+ Elf_Internal_Options * option;
+ size_t offset;
+ int cnt;
+
+ /* Find the section header so that we get the size. */
+ while (sect->sh_type != SHT_MIPS_OPTIONS)
+ ++sect;
+
+ eopt = (Elf_External_Options *) get_data (NULL, file, options_offset, 1,
+ sect->sh_size, _("options"));
+ if (eopt)
+ {
+ iopt = (Elf_Internal_Options *)
+ cmalloc ((sect->sh_size / sizeof (eopt)), sizeof (* iopt));
+ if (iopt == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ offset = cnt = 0;
+ option = iopt;
+
+ while (offset < sect->sh_size)
+ {
+ Elf_External_Options * eoption;
+
+ eoption = (Elf_External_Options *) ((char *) eopt + offset);
+
+ option->kind = BYTE_GET (eoption->kind);
+ option->size = BYTE_GET (eoption->size);
+ option->section = BYTE_GET (eoption->section);
+ option->info = BYTE_GET (eoption->info);
+
+ offset += option->size;
+
+ ++option;
+ ++cnt;
+ }
+
+ printf (_("\nSection '%s' contains %d entries:\n"),
+ SECTION_NAME (sect), cnt);
+
+ option = iopt;
+
+ while (cnt-- > 0)
+ {
+ size_t len;
+
+ switch (option->kind)
+ {
+ case ODK_NULL:
+ /* This shouldn't happen. */
+ printf (" NULL %d %lx", option->section, option->info);
+ break;
+ case ODK_REGINFO:
+ printf (" REGINFO ");
+ if (elf_header.e_machine == EM_MIPS)
+ {
+ /* 32bit form. */
+ Elf32_External_RegInfo * ereg;
+ Elf32_RegInfo reginfo;
+
+ ereg = (Elf32_External_RegInfo *) (option + 1);
+ reginfo.ri_gprmask = BYTE_GET (ereg->ri_gprmask);
+ reginfo.ri_cprmask[0] = BYTE_GET (ereg->ri_cprmask[0]);
+ reginfo.ri_cprmask[1] = BYTE_GET (ereg->ri_cprmask[1]);
+ reginfo.ri_cprmask[2] = BYTE_GET (ereg->ri_cprmask[2]);
+ reginfo.ri_cprmask[3] = BYTE_GET (ereg->ri_cprmask[3]);
+ reginfo.ri_gp_value = BYTE_GET (ereg->ri_gp_value);
+
+ printf ("GPR %08lx GP 0x%lx\n",
+ reginfo.ri_gprmask,
+ (unsigned long) reginfo.ri_gp_value);
+ printf (" CPR0 %08lx CPR1 %08lx CPR2 %08lx CPR3 %08lx\n",
+ reginfo.ri_cprmask[0], reginfo.ri_cprmask[1],
+ reginfo.ri_cprmask[2], reginfo.ri_cprmask[3]);
+ }
+ else
+ {
+ /* 64 bit form. */
+ Elf64_External_RegInfo * ereg;
+ Elf64_Internal_RegInfo reginfo;
+
+ ereg = (Elf64_External_RegInfo *) (option + 1);
+ reginfo.ri_gprmask = BYTE_GET (ereg->ri_gprmask);
+ reginfo.ri_cprmask[0] = BYTE_GET (ereg->ri_cprmask[0]);
+ reginfo.ri_cprmask[1] = BYTE_GET (ereg->ri_cprmask[1]);
+ reginfo.ri_cprmask[2] = BYTE_GET (ereg->ri_cprmask[2]);
+ reginfo.ri_cprmask[3] = BYTE_GET (ereg->ri_cprmask[3]);
+ reginfo.ri_gp_value = BYTE_GET (ereg->ri_gp_value);
+
+ printf ("GPR %08lx GP 0x",
+ reginfo.ri_gprmask);
+ printf_vma (reginfo.ri_gp_value);
+ printf ("\n");
+
+ printf (" CPR0 %08lx CPR1 %08lx CPR2 %08lx CPR3 %08lx\n",
+ reginfo.ri_cprmask[0], reginfo.ri_cprmask[1],
+ reginfo.ri_cprmask[2], reginfo.ri_cprmask[3]);
+ }
+ ++option;
+ continue;
+ case ODK_EXCEPTIONS:
+ fputs (" EXCEPTIONS fpe_min(", stdout);
+ process_mips_fpe_exception (option->info & OEX_FPU_MIN);
+ fputs (") fpe_max(", stdout);
+ process_mips_fpe_exception ((option->info & OEX_FPU_MAX) >> 8);
+ fputs (")", stdout);
+
+ if (option->info & OEX_PAGE0)
+ fputs (" PAGE0", stdout);
+ if (option->info & OEX_SMM)
+ fputs (" SMM", stdout);
+ if (option->info & OEX_FPDBUG)
+ fputs (" FPDBUG", stdout);
+ if (option->info & OEX_DISMISS)
+ fputs (" DISMISS", stdout);
+ break;
+ case ODK_PAD:
+ fputs (" PAD ", stdout);
+ if (option->info & OPAD_PREFIX)
+ fputs (" PREFIX", stdout);
+ if (option->info & OPAD_POSTFIX)
+ fputs (" POSTFIX", stdout);
+ if (option->info & OPAD_SYMBOL)
+ fputs (" SYMBOL", stdout);
+ break;
+ case ODK_HWPATCH:
+ fputs (" HWPATCH ", stdout);
+ if (option->info & OHW_R4KEOP)
+ fputs (" R4KEOP", stdout);
+ if (option->info & OHW_R8KPFETCH)
+ fputs (" R8KPFETCH", stdout);
+ if (option->info & OHW_R5KEOP)
+ fputs (" R5KEOP", stdout);
+ if (option->info & OHW_R5KCVTL)
+ fputs (" R5KCVTL", stdout);
+ break;
+ case ODK_FILL:
+ fputs (" FILL ", stdout);
+ /* XXX Print content of info word? */
+ break;
+ case ODK_TAGS:
+ fputs (" TAGS ", stdout);
+ /* XXX Print content of info word? */
+ break;
+ case ODK_HWAND:
+ fputs (" HWAND ", stdout);
+ if (option->info & OHWA0_R4KEOP_CHECKED)
+ fputs (" R4KEOP_CHECKED", stdout);
+ if (option->info & OHWA0_R4KEOP_CLEAN)
+ fputs (" R4KEOP_CLEAN", stdout);
+ break;
+ case ODK_HWOR:
+ fputs (" HWOR ", stdout);
+ if (option->info & OHWA0_R4KEOP_CHECKED)
+ fputs (" R4KEOP_CHECKED", stdout);
+ if (option->info & OHWA0_R4KEOP_CLEAN)
+ fputs (" R4KEOP_CLEAN", stdout);
+ break;
+ case ODK_GP_GROUP:
+ printf (" GP_GROUP %#06lx self-contained %#06lx",
+ option->info & OGP_GROUP,
+ (option->info & OGP_SELF) >> 16);
+ break;
+ case ODK_IDENT:
+ printf (" IDENT %#06lx self-contained %#06lx",
+ option->info & OGP_GROUP,
+ (option->info & OGP_SELF) >> 16);
+ break;
+ default:
+ /* This shouldn't happen. */
+ printf (" %3d ??? %d %lx",
+ option->kind, option->section, option->info);
+ break;
+ }
+
+ len = sizeof (* eopt);
+ while (len < option->size)
+ if (((char *) option)[len] >= ' '
+ && ((char *) option)[len] < 0x7f)
+ printf ("%c", ((char *) option)[len++]);
+ else
+ printf ("\\%03o", ((char *) option)[len++]);
+
+ fputs ("\n", stdout);
+ ++option;
+ }
+
+ free (eopt);
+ }
+ }
+
+ if (conflicts_offset != 0 && conflictsno != 0)
+ {
+ Elf32_Conflict * iconf;
+ size_t cnt;
+
+ if (dynamic_symbols == NULL)
+ {
+ error (_("conflict list found without a dynamic symbol table\n"));
+ return 0;
+ }
+
+ iconf = (Elf32_Conflict *) cmalloc (conflictsno, sizeof (* iconf));
+ if (iconf == NULL)
+ {
+ error (_("Out of memory\n"));
+ return 0;
+ }
+
+ if (is_32bit_elf)
+ {
+ Elf32_External_Conflict * econf32;
+
+ econf32 = (Elf32_External_Conflict *)
+ get_data (NULL, file, conflicts_offset, conflictsno,
+ sizeof (* econf32), _("conflict"));
+ if (!econf32)
+ return 0;
+
+ for (cnt = 0; cnt < conflictsno; ++cnt)
+ iconf[cnt] = BYTE_GET (econf32[cnt]);
+
+ free (econf32);
+ }
+ else
+ {
+ Elf64_External_Conflict * econf64;
+
+ econf64 = (Elf64_External_Conflict *)
+ get_data (NULL, file, conflicts_offset, conflictsno,
+ sizeof (* econf64), _("conflict"));
+ if (!econf64)
+ return 0;
+
+ for (cnt = 0; cnt < conflictsno; ++cnt)
+ iconf[cnt] = BYTE_GET (econf64[cnt]);
+
+ free (econf64);
+ }
+
+ printf (_("\nSection '.conflict' contains %lu entries:\n"),
+ (unsigned long) conflictsno);
+ puts (_(" Num: Index Value Name"));
+
+ for (cnt = 0; cnt < conflictsno; ++cnt)
+ {
+ Elf_Internal_Sym * psym = & dynamic_symbols[iconf[cnt]];
+
+ printf ("%5lu: %8lu ", (unsigned long) cnt, iconf[cnt]);
+ print_vma (psym->st_value, FULL_HEX);
+ putchar (' ');
+ if (VALID_DYNAMIC_NAME (psym->st_name))
+ print_symbol (25, GET_DYNAMIC_NAME (psym->st_name));
+ else
+ printf (_("<corrupt: %14ld>"), psym->st_name);
+ putchar ('\n');
+ }
+
+ free (iconf);
+ }
+
+ if (pltgot != 0 && local_gotno != 0)
+ {
+ bfd_vma ent, local_end, global_end;
+ size_t i, offset;
+ unsigned char * data;
+ int addr_size;
+
+ ent = pltgot;
+ addr_size = (is_32bit_elf ? 4 : 8);
+ local_end = pltgot + local_gotno * addr_size;
+ global_end = local_end + (symtabno - gotsym) * addr_size;
+
+ offset = offset_from_vma (file, pltgot, global_end - pltgot);
+ data = (unsigned char *) get_data (NULL, file, offset,
+ global_end - pltgot, 1,
+ _("Global Offset Table data"));
+ if (data == NULL)
+ return 0;
+
+ printf (_("\nPrimary GOT:\n"));
+ printf (_(" Canonical gp value: "));
+ print_vma (pltgot + 0x7ff0, LONG_HEX);
+ printf ("\n\n");
+
+ printf (_(" Reserved entries:\n"));
+ printf (_(" %*s %10s %*s Purpose\n"),
+ addr_size * 2, _("Address"), _("Access"),
+ addr_size * 2, _("Initial"));
+ ent = print_mips_got_entry (data, pltgot, ent);
+ printf (_(" Lazy resolver\n"));
+ if (data
+ && (byte_get (data + ent - pltgot, addr_size)
+ >> (addr_size * 8 - 1)) != 0)
+ {
+ ent = print_mips_got_entry (data, pltgot, ent);
+ printf (_(" Module pointer (GNU extension)\n"));
+ }
+ printf ("\n");
+
+ if (ent < local_end)
+ {
+ printf (_(" Local entries:\n"));
+ printf (" %*s %10s %*s\n",
+ addr_size * 2, _("Address"), _("Access"),
+ addr_size * 2, _("Initial"));
+ while (ent < local_end)
+ {
+ ent = print_mips_got_entry (data, pltgot, ent);
+ printf ("\n");
+ }
+ printf ("\n");
+ }
+
+ if (gotsym < symtabno)
+ {
+ int sym_width;
+
+ printf (_(" Global entries:\n"));
+ printf (" %*s %10s %*s %*s %-7s %3s %s\n",
+ addr_size * 2, _("Address"),
+ _("Access"),
+ addr_size * 2, _("Initial"),
+ addr_size * 2, _("Sym.Val."),
+ _("Type"),
+ /* Note for translators: "Ndx" = abbreviated form of "Index". */
+ _("Ndx"), _("Name"));
+
+ sym_width = (is_32bit_elf ? 80 : 160) - 28 - addr_size * 6 - 1;
+ for (i = gotsym; i < symtabno; i++)
+ {
+ Elf_Internal_Sym * psym;
+
+ psym = dynamic_symbols + i;
+ ent = print_mips_got_entry (data, pltgot, ent);
+ printf (" ");
+ print_vma (psym->st_value, LONG_HEX);
+ printf (" %-7s %3s ",
+ get_symbol_type (ELF_ST_TYPE (psym->st_info)),
+ get_symbol_index_type (psym->st_shndx));
+ if (VALID_DYNAMIC_NAME (psym->st_name))
+ print_symbol (sym_width, GET_DYNAMIC_NAME (psym->st_name));
+ else
+ printf (_("<corrupt: %14ld>"), psym->st_name);
+ printf ("\n");
+ }
+ printf ("\n");
+ }
+
+ if (data)
+ free (data);
+ }
+
+ if (mips_pltgot != 0 && jmprel != 0 && pltrel != 0 && pltrelsz != 0)
+ {
+ bfd_vma ent, end;
+ size_t offset, rel_offset;
+ unsigned long count, i;
+ unsigned char * data;
+ int addr_size, sym_width;
+ Elf_Internal_Rela * rels;
+
+ rel_offset = offset_from_vma (file, jmprel, pltrelsz);
+ if (pltrel == DT_RELA)
+ {
+ if (!slurp_rela_relocs (file, rel_offset, pltrelsz, &rels, &count))
+ return 0;
+ }
+ else
+ {
+ if (!slurp_rel_relocs (file, rel_offset, pltrelsz, &rels, &count))
+ return 0;
+ }
+
+ ent = mips_pltgot;
+ addr_size = (is_32bit_elf ? 4 : 8);
+ end = mips_pltgot + (2 + count) * addr_size;
+
+ offset = offset_from_vma (file, mips_pltgot, end - mips_pltgot);
+ data = (unsigned char *) get_data (NULL, file, offset, end - mips_pltgot,
+ 1, _("Procedure Linkage Table data"));
+ if (data == NULL)
+ return 0;
+
+ printf ("\nPLT GOT:\n\n");
+ printf (_(" Reserved entries:\n"));
+ printf (_(" %*s %*s Purpose\n"),
+ addr_size * 2, _("Address"), addr_size * 2, _("Initial"));
+ ent = print_mips_pltgot_entry (data, mips_pltgot, ent);
+ printf (_(" PLT lazy resolver\n"));
+ ent = print_mips_pltgot_entry (data, mips_pltgot, ent);
+ printf (_(" Module pointer\n"));
+ printf ("\n");
+
+ printf (_(" Entries:\n"));
+ printf (" %*s %*s %*s %-7s %3s %s\n",
+ addr_size * 2, _("Address"),
+ addr_size * 2, _("Initial"),
+ addr_size * 2, _("Sym.Val."), _("Type"), _("Ndx"), _("Name"));
+ sym_width = (is_32bit_elf ? 80 : 160) - 17 - addr_size * 6 - 1;
+ for (i = 0; i < count; i++)
+ {
+ Elf_Internal_Sym * psym;
+
+ psym = dynamic_symbols + get_reloc_symindex (rels[i].r_info);
+ ent = print_mips_pltgot_entry (data, mips_pltgot, ent);
+ printf (" ");
+ print_vma (psym->st_value, LONG_HEX);
+ printf (" %-7s %3s ",
+ get_symbol_type (ELF_ST_TYPE (psym->st_info)),
+ get_symbol_index_type (psym->st_shndx));
+ if (VALID_DYNAMIC_NAME (psym->st_name))
+ print_symbol (sym_width, GET_DYNAMIC_NAME (psym->st_name));
+ else
+ printf (_("<corrupt: %14ld>"), psym->st_name);
+ printf ("\n");
+ }
+ printf ("\n");
+
+ if (data)
+ free (data);
+ free (rels);
+ }
+
+ return 1;
+}
+
+static int
+process_gnu_liblist (FILE * file)
+{
+ Elf_Internal_Shdr * section;
+ Elf_Internal_Shdr * string_sec;
+ Elf32_External_Lib * elib;
+ char * strtab;
+ size_t strtab_size;
+ size_t cnt;
+ unsigned i;
+
+ if (! do_arch)
+ return 0;
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum;
+ i++, section++)
+ {
+ switch (section->sh_type)
+ {
+ case SHT_GNU_LIBLIST:
+ if (section->sh_link >= elf_header.e_shnum)
+ break;
+
+ elib = (Elf32_External_Lib *)
+ get_data (NULL, file, section->sh_offset, 1, section->sh_size,
+ _("liblist section data"));
+
+ if (elib == NULL)
+ break;
+ string_sec = section_headers + section->sh_link;
+
+ strtab = (char *) get_data (NULL, file, string_sec->sh_offset, 1,
+ string_sec->sh_size,
+ _("liblist string table"));
+ if (strtab == NULL
+ || section->sh_entsize != sizeof (Elf32_External_Lib))
+ {
+ free (elib);
+ free (strtab);
+ break;
+ }
+ strtab_size = string_sec->sh_size;
+
+ printf (_("\nLibrary list section '%s' contains %lu entries:\n"),
+ SECTION_NAME (section),
+ (unsigned long) (section->sh_size / sizeof (Elf32_External_Lib)));
+
+ puts (_(" Library Time Stamp Checksum Version Flags"));
+
+ for (cnt = 0; cnt < section->sh_size / sizeof (Elf32_External_Lib);
+ ++cnt)
+ {
+ Elf32_Lib liblist;
+ time_t atime;
+ char timebuf[20];
+ struct tm * tmp;
+
+ liblist.l_name = BYTE_GET (elib[cnt].l_name);
+ atime = BYTE_GET (elib[cnt].l_time_stamp);
+ liblist.l_checksum = BYTE_GET (elib[cnt].l_checksum);
+ liblist.l_version = BYTE_GET (elib[cnt].l_version);
+ liblist.l_flags = BYTE_GET (elib[cnt].l_flags);
+
+ tmp = gmtime (&atime);
+ snprintf (timebuf, sizeof (timebuf),
+ "%04u-%02u-%02uT%02u:%02u:%02u",
+ tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
+ tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
+
+ printf ("%3lu: ", (unsigned long) cnt);
+ if (do_wide)
+ printf ("%-20s", liblist.l_name < strtab_size
+ ? strtab + liblist.l_name : _("<corrupt>"));
+ else
+ printf ("%-20.20s", liblist.l_name < strtab_size
+ ? strtab + liblist.l_name : _("<corrupt>"));
+ printf (" %s %#010lx %-7ld %-7ld\n", timebuf, liblist.l_checksum,
+ liblist.l_version, liblist.l_flags);
+ }
+
+ free (elib);
+ free (strtab);
+ }
+ }
+
+ return 1;
+}
+
+static const char *
+get_note_type (unsigned e_type)
+{
+ static char buff[64];
+
+ if (elf_header.e_type == ET_CORE)
+ switch (e_type)
+ {
+ case NT_AUXV:
+ return _("NT_AUXV (auxiliary vector)");
+ case NT_PRSTATUS:
+ return _("NT_PRSTATUS (prstatus structure)");
+ case NT_FPREGSET:
+ return _("NT_FPREGSET (floating point registers)");
+ case NT_PRPSINFO:
+ return _("NT_PRPSINFO (prpsinfo structure)");
+ case NT_TASKSTRUCT:
+ return _("NT_TASKSTRUCT (task structure)");
+ case NT_PRXFPREG:
+ return _("NT_PRXFPREG (user_xfpregs structure)");
+ case NT_PPC_VMX:
+ return _("NT_PPC_VMX (ppc Altivec registers)");
+ case NT_PPC_VSX:
+ return _("NT_PPC_VSX (ppc VSX registers)");
+ case NT_386_TLS:
+ return _("NT_386_TLS (x86 TLS information)");
+ case NT_386_IOPERM:
+ return _("NT_386_IOPERM (x86 I/O permissions)");
+ case NT_X86_XSTATE:
+ return _("NT_X86_XSTATE (x86 XSAVE extended state)");
+ case NT_S390_HIGH_GPRS:
+ return _("NT_S390_HIGH_GPRS (s390 upper register halves)");
+ case NT_S390_TIMER:
+ return _("NT_S390_TIMER (s390 timer register)");
+ case NT_S390_TODCMP:
+ return _("NT_S390_TODCMP (s390 TOD comparator register)");
+ case NT_S390_TODPREG:
+ return _("NT_S390_TODPREG (s390 TOD programmable register)");
+ case NT_S390_CTRS:
+ return _("NT_S390_CTRS (s390 control registers)");
+ case NT_S390_PREFIX:
+ return _("NT_S390_PREFIX (s390 prefix register)");
+ case NT_S390_LAST_BREAK:
+ return _("NT_S390_LAST_BREAK (s390 last breaking event address)");
+ case NT_S390_SYSTEM_CALL:
+ return _("NT_S390_SYSTEM_CALL (s390 system call restart data)");
+ case NT_S390_TDB:
+ return _("NT_S390_TDB (s390 transaction diagnostic block)");
+ case NT_ARM_VFP:
+ return _("NT_ARM_VFP (arm VFP registers)");
+ case NT_ARM_TLS:
+ return _("NT_ARM_TLS (AArch TLS registers)");
+ case NT_ARM_HW_BREAK:
+ return _("NT_ARM_HW_BREAK (AArch hardware breakpoint registers)");
+ case NT_ARM_HW_WATCH:
+ return _("NT_ARM_HW_WATCH (AArch hardware watchpoint registers)");
+ case NT_PSTATUS:
+ return _("NT_PSTATUS (pstatus structure)");
+ case NT_FPREGS:
+ return _("NT_FPREGS (floating point registers)");
+ case NT_PSINFO:
+ return _("NT_PSINFO (psinfo structure)");
+ case NT_LWPSTATUS:
+ return _("NT_LWPSTATUS (lwpstatus_t structure)");
+ case NT_LWPSINFO:
+ return _("NT_LWPSINFO (lwpsinfo_t structure)");
+ case NT_WIN32PSTATUS:
+ return _("NT_WIN32PSTATUS (win32_pstatus structure)");
+ case NT_SIGINFO:
+ return _("NT_SIGINFO (siginfo_t data)");
+ case NT_FILE:
+ return _("NT_FILE (mapped files)");
+ default:
+ break;
+ }
+ else
+ switch (e_type)
+ {
+ case NT_VERSION:
+ return _("NT_VERSION (version)");
+ case NT_ARCH:
+ return _("NT_ARCH (architecture)");
+ default:
+ break;
+ }
+
+ snprintf (buff, sizeof (buff), _("Unknown note type: (0x%08x)"), e_type);
+ return buff;
+}
+
+static int
+print_core_note (Elf_Internal_Note *pnote)
+{
+ unsigned int addr_size = is_32bit_elf ? 4 : 8;
+ bfd_vma count, page_size;
+ unsigned char *descdata, *filenames, *descend;
+
+ if (pnote->type != NT_FILE)
+ return 1;
+
+#ifndef BFD64
+ if (!is_32bit_elf)
+ {
+ printf (_(" Cannot decode 64-bit note in 32-bit build\n"));
+ /* Still "successful". */
+ return 1;
+ }
+#endif
+
+ if (pnote->descsz < 2 * addr_size)
+ {
+ printf (_(" Malformed note - too short for header\n"));
+ return 0;
+ }
+
+ descdata = (unsigned char *) pnote->descdata;
+ descend = descdata + pnote->descsz;
+
+ if (descdata[pnote->descsz - 1] != '\0')
+ {
+ printf (_(" Malformed note - does not end with \\0\n"));
+ return 0;
+ }
+
+ count = byte_get (descdata, addr_size);
+ descdata += addr_size;
+
+ page_size = byte_get (descdata, addr_size);
+ descdata += addr_size;
+
+ if (pnote->descsz < 2 * addr_size + count * 3 * addr_size)
+ {
+ printf (_(" Malformed note - too short for supplied file count\n"));
+ return 0;
+ }
+
+ printf (_(" Page size: "));
+ print_vma (page_size, DEC);
+ printf ("\n");
+
+ printf (_(" %*s%*s%*s\n"),
+ (int) (2 + 2 * addr_size), _("Start"),
+ (int) (4 + 2 * addr_size), _("End"),
+ (int) (4 + 2 * addr_size), _("Page Offset"));
+ filenames = descdata + count * 3 * addr_size;
+ while (--count > 0)
+ {
+ bfd_vma start, end, file_ofs;
+
+ if (filenames == descend)
+ {
+ printf (_(" Malformed note - filenames end too early\n"));
+ return 0;
+ }
+
+ start = byte_get (descdata, addr_size);
+ descdata += addr_size;
+ end = byte_get (descdata, addr_size);
+ descdata += addr_size;
+ file_ofs = byte_get (descdata, addr_size);
+ descdata += addr_size;
+
+ printf (" ");
+ print_vma (start, FULL_HEX);
+ printf (" ");
+ print_vma (end, FULL_HEX);
+ printf (" ");
+ print_vma (file_ofs, FULL_HEX);
+ printf ("\n %s\n", filenames);
+
+ filenames += 1 + strlen ((char *) filenames);
+ }
+
+ return 1;
+}
+
+static const char *
+get_gnu_elf_note_type (unsigned e_type)
+{
+ static char buff[64];
+
+ switch (e_type)
+ {
+ case NT_GNU_ABI_TAG:
+ return _("NT_GNU_ABI_TAG (ABI version tag)");
+ case NT_GNU_HWCAP:
+ return _("NT_GNU_HWCAP (DSO-supplied software HWCAP info)");
+ case NT_GNU_BUILD_ID:
+ return _("NT_GNU_BUILD_ID (unique build ID bitstring)");
+ case NT_GNU_GOLD_VERSION:
+ return _("NT_GNU_GOLD_VERSION (gold version)");
+ default:
+ break;
+ }
+
+ snprintf (buff, sizeof (buff), _("Unknown note type: (0x%08x)"), e_type);
+ return buff;
+}
+
+static int
+print_gnu_note (Elf_Internal_Note *pnote)
+{
+ switch (pnote->type)
+ {
+ case NT_GNU_BUILD_ID:
+ {
+ unsigned long i;
+
+ printf (_(" Build ID: "));
+ for (i = 0; i < pnote->descsz; ++i)
+ printf ("%02x", pnote->descdata[i] & 0xff);
+ printf ("\n");
+ }
+ break;
+
+ case NT_GNU_ABI_TAG:
+ {
+ unsigned long os, major, minor, subminor;
+ const char *osname;
+
+ os = byte_get ((unsigned char *) pnote->descdata, 4);
+ major = byte_get ((unsigned char *) pnote->descdata + 4, 4);
+ minor = byte_get ((unsigned char *) pnote->descdata + 8, 4);
+ subminor = byte_get ((unsigned char *) pnote->descdata + 12, 4);
+
+ switch (os)
+ {
+ case GNU_ABI_TAG_LINUX:
+ osname = "Linux";
+ break;
+ case GNU_ABI_TAG_HURD:
+ osname = "Hurd";
+ break;
+ case GNU_ABI_TAG_SOLARIS:
+ osname = "Solaris";
+ break;
+ case GNU_ABI_TAG_FREEBSD:
+ osname = "FreeBSD";
+ break;
+ case GNU_ABI_TAG_NETBSD:
+ osname = "NetBSD";
+ break;
+ default:
+ osname = "Unknown";
+ break;
+ }
+
+ printf (_(" OS: %s, ABI: %ld.%ld.%ld\n"), osname,
+ major, minor, subminor);
+ }
+ break;
+ }
+
+ return 1;
+}
+
+static const char *
+get_netbsd_elfcore_note_type (unsigned e_type)
+{
+ static char buff[64];
+
+ if (e_type == NT_NETBSDCORE_PROCINFO)
+ {
+ /* NetBSD core "procinfo" structure. */
+ return _("NetBSD procinfo structure");
+ }
+
+ /* As of Jan 2002 there are no other machine-independent notes
+ defined for NetBSD core files. If the note type is less
+ than the start of the machine-dependent note types, we don't
+ understand it. */
+
+ if (e_type < NT_NETBSDCORE_FIRSTMACH)
+ {
+ snprintf (buff, sizeof (buff), _("Unknown note type: (0x%08x)"), e_type);
+ return buff;
+ }
+
+ switch (elf_header.e_machine)
+ {
+ /* On the Alpha, SPARC (32-bit and 64-bit), PT_GETREGS == mach+0
+ and PT_GETFPREGS == mach+2. */
+
+ case EM_OLD_ALPHA:
+ case EM_ALPHA:
+ case EM_SPARC:
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ switch (e_type)
+ {
+ case NT_NETBSDCORE_FIRSTMACH + 0:
+ return _("PT_GETREGS (reg structure)");
+ case NT_NETBSDCORE_FIRSTMACH + 2:
+ return _("PT_GETFPREGS (fpreg structure)");
+ default:
+ break;
+ }
+ break;
+
+ /* On all other arch's, PT_GETREGS == mach+1 and
+ PT_GETFPREGS == mach+3. */
+ default:
+ switch (e_type)
+ {
+ case NT_NETBSDCORE_FIRSTMACH + 1:
+ return _("PT_GETREGS (reg structure)");
+ case NT_NETBSDCORE_FIRSTMACH + 3:
+ return _("PT_GETFPREGS (fpreg structure)");
+ default:
+ break;
+ }
+ }
+
+ snprintf (buff, sizeof (buff), "PT_FIRSTMACH+%d",
+ e_type - NT_NETBSDCORE_FIRSTMACH);
+ return buff;
+}
+
+static const char *
+get_stapsdt_note_type (unsigned e_type)
+{
+ static char buff[64];
+
+ switch (e_type)
+ {
+ case NT_STAPSDT:
+ return _("NT_STAPSDT (SystemTap probe descriptors)");
+
+ default:
+ break;
+ }
+
+ snprintf (buff, sizeof (buff), _("Unknown note type: (0x%08x)"), e_type);
+ return buff;
+}
+
+static int
+print_stapsdt_note (Elf_Internal_Note *pnote)
+{
+ int addr_size = is_32bit_elf ? 4 : 8;
+ char *data = pnote->descdata;
+ char *data_end = pnote->descdata + pnote->descsz;
+ bfd_vma pc, base_addr, semaphore;
+ char *provider, *probe, *arg_fmt;
+
+ pc = byte_get ((unsigned char *) data, addr_size);
+ data += addr_size;
+ base_addr = byte_get ((unsigned char *) data, addr_size);
+ data += addr_size;
+ semaphore = byte_get ((unsigned char *) data, addr_size);
+ data += addr_size;
+
+ provider = data;
+ data += strlen (data) + 1;
+ probe = data;
+ data += strlen (data) + 1;
+ arg_fmt = data;
+ data += strlen (data) + 1;
+
+ printf (_(" Provider: %s\n"), provider);
+ printf (_(" Name: %s\n"), probe);
+ printf (_(" Location: "));
+ print_vma (pc, FULL_HEX);
+ printf (_(", Base: "));
+ print_vma (base_addr, FULL_HEX);
+ printf (_(", Semaphore: "));
+ print_vma (semaphore, FULL_HEX);
+ printf ("\n");
+ printf (_(" Arguments: %s\n"), arg_fmt);
+
+ return data == data_end;
+}
+
+static const char *
+get_ia64_vms_note_type (unsigned e_type)
+{
+ static char buff[64];
+
+ switch (e_type)
+ {
+ case NT_VMS_MHD:
+ return _("NT_VMS_MHD (module header)");
+ case NT_VMS_LNM:
+ return _("NT_VMS_LNM (language name)");
+ case NT_VMS_SRC:
+ return _("NT_VMS_SRC (source files)");
+ case NT_VMS_TITLE:
+ return "NT_VMS_TITLE";
+ case NT_VMS_EIDC:
+ return _("NT_VMS_EIDC (consistency check)");
+ case NT_VMS_FPMODE:
+ return _("NT_VMS_FPMODE (FP mode)");
+ case NT_VMS_LINKTIME:
+ return "NT_VMS_LINKTIME";
+ case NT_VMS_IMGNAM:
+ return _("NT_VMS_IMGNAM (image name)");
+ case NT_VMS_IMGID:
+ return _("NT_VMS_IMGID (image id)");
+ case NT_VMS_LINKID:
+ return _("NT_VMS_LINKID (link id)");
+ case NT_VMS_IMGBID:
+ return _("NT_VMS_IMGBID (build id)");
+ case NT_VMS_GSTNAM:
+ return _("NT_VMS_GSTNAM (sym table name)");
+ case NT_VMS_ORIG_DYN:
+ return "NT_VMS_ORIG_DYN";
+ case NT_VMS_PATCHTIME:
+ return "NT_VMS_PATCHTIME";
+ default:
+ snprintf (buff, sizeof (buff), _("Unknown note type: (0x%08x)"), e_type);
+ return buff;
+ }
+}
+
+static int
+print_ia64_vms_note (Elf_Internal_Note * pnote)
+{
+ switch (pnote->type)
+ {
+ case NT_VMS_MHD:
+ if (pnote->descsz > 36)
+ {
+ size_t l = strlen (pnote->descdata + 34);
+ printf (_(" Creation date : %.17s\n"), pnote->descdata);
+ printf (_(" Last patch date: %.17s\n"), pnote->descdata + 17);
+ printf (_(" Module name : %s\n"), pnote->descdata + 34);
+ printf (_(" Module version : %s\n"), pnote->descdata + 34 + l + 1);
+ }
+ else
+ printf (_(" Invalid size\n"));
+ break;
+ case NT_VMS_LNM:
+ printf (_(" Language: %s\n"), pnote->descdata);
+ break;
+#ifdef BFD64
+ case NT_VMS_FPMODE:
+ printf (_(" Floating Point mode: "));
+ printf ("0x%016" BFD_VMA_FMT "x\n",
+ (bfd_vma)byte_get ((unsigned char *)pnote->descdata, 8));
+ break;
+ case NT_VMS_LINKTIME:
+ printf (_(" Link time: "));
+ print_vms_time
+ ((bfd_int64_t) byte_get ((unsigned char *)pnote->descdata, 8));
+ printf ("\n");
+ break;
+ case NT_VMS_PATCHTIME:
+ printf (_(" Patch time: "));
+ print_vms_time
+ ((bfd_int64_t) byte_get ((unsigned char *)pnote->descdata, 8));
+ printf ("\n");
+ break;
+ case NT_VMS_ORIG_DYN:
+ printf (_(" Major id: %u, minor id: %u\n"),
+ (unsigned) byte_get ((unsigned char *)pnote->descdata, 4),
+ (unsigned) byte_get ((unsigned char *)pnote->descdata + 4, 4));
+ printf (_(" Last modified : "));
+ print_vms_time
+ ((bfd_int64_t) byte_get ((unsigned char *)pnote->descdata + 8, 8));
+ printf (_("\n Link flags : "));
+ printf ("0x%016" BFD_VMA_FMT "x\n",
+ (bfd_vma)byte_get ((unsigned char *)pnote->descdata + 16, 8));
+ printf (_(" Header flags: 0x%08x\n"),
+ (unsigned)byte_get ((unsigned char *)pnote->descdata + 24, 4));
+ printf (_(" Image id : %s\n"), pnote->descdata + 32);
+ break;
+#endif
+ case NT_VMS_IMGNAM:
+ printf (_(" Image name: %s\n"), pnote->descdata);
+ break;
+ case NT_VMS_GSTNAM:
+ printf (_(" Global symbol table name: %s\n"), pnote->descdata);
+ break;
+ case NT_VMS_IMGID:
+ printf (_(" Image id: %s\n"), pnote->descdata);
+ break;
+ case NT_VMS_LINKID:
+ printf (_(" Linker id: %s\n"), pnote->descdata);
+ break;
+ default:
+ break;
+ }
+ return 1;
+}
+
+/* Note that by the ELF standard, the name field is already null byte
+ terminated, and namesz includes the terminating null byte.
+ I.E. the value of namesz for the name "FSF" is 4.
+
+ If the value of namesz is zero, there is no name present. */
+static int
+process_note (Elf_Internal_Note * pnote)
+{
+ const char * name = pnote->namesz ? pnote->namedata : "(NONE)";
+ const char * nt;
+
+ if (pnote->namesz == 0)
+ /* If there is no note name, then use the default set of
+ note type strings. */
+ nt = get_note_type (pnote->type);
+
+ else if (const_strneq (pnote->namedata, "GNU"))
+ /* GNU-specific object file notes. */
+ nt = get_gnu_elf_note_type (pnote->type);
+
+ else if (const_strneq (pnote->namedata, "NetBSD-CORE"))
+ /* NetBSD-specific core file notes. */
+ nt = get_netbsd_elfcore_note_type (pnote->type);
+
+ else if (strneq (pnote->namedata, "SPU/", 4))
+ {
+ /* SPU-specific core file notes. */
+ nt = pnote->namedata + 4;
+ name = "SPU";
+ }
+
+ else if (const_strneq (pnote->namedata, "IPF/VMS"))
+ /* VMS/ia64-specific file notes. */
+ nt = get_ia64_vms_note_type (pnote->type);
+
+ else if (const_strneq (pnote->namedata, "stapsdt"))
+ nt = get_stapsdt_note_type (pnote->type);
+
+ else
+ /* Don't recognize this note name; just use the default set of
+ note type strings. */
+ nt = get_note_type (pnote->type);
+
+ printf (" %-20s 0x%08lx\t%s\n", name, pnote->descsz, nt);
+
+ if (const_strneq (pnote->namedata, "IPF/VMS"))
+ return print_ia64_vms_note (pnote);
+ else if (const_strneq (pnote->namedata, "GNU"))
+ return print_gnu_note (pnote);
+ else if (const_strneq (pnote->namedata, "stapsdt"))
+ return print_stapsdt_note (pnote);
+ else if (const_strneq (pnote->namedata, "CORE"))
+ return print_core_note (pnote);
+ else
+ return 1;
+}
+
+
+static int
+process_corefile_note_segment (FILE * file, bfd_vma offset, bfd_vma length)
+{
+ Elf_External_Note * pnotes;
+ Elf_External_Note * external;
+ int res = 1;
+
+ if (length <= 0)
+ return 0;
+
+ pnotes = (Elf_External_Note *) get_data (NULL, file, offset, 1, length,
+ _("notes"));
+ if (pnotes == NULL)
+ return 0;
+
+ external = pnotes;
+
+ printf (_("\nDisplaying notes found at file offset 0x%08lx with length 0x%08lx:\n"),
+ (unsigned long) offset, (unsigned long) length);
+ printf (_(" %-20s %10s\tDescription\n"), _("Owner"), _("Data size"));
+
+ while ((char *) external < (char *) pnotes + length)
+ {
+ Elf_Internal_Note inote;
+ size_t min_notesz;
+ char *next;
+ char * temp = NULL;
+ size_t data_remaining = ((char *) pnotes + length) - (char *) external;
+
+ if (!is_ia64_vms ())
+ {
+ /* PR binutils/15191
+ Make sure that there is enough data to read. */
+ min_notesz = offsetof (Elf_External_Note, name);
+ if (data_remaining < min_notesz)
+ {
+ warn (_("Corrupt note: only %d bytes remain, not enough for a full note\n"),
+ (int) data_remaining);
+ break;
+ }
+ inote.type = BYTE_GET (external->type);
+ inote.namesz = BYTE_GET (external->namesz);
+ inote.namedata = external->name;
+ inote.descsz = BYTE_GET (external->descsz);
+ inote.descdata = inote.namedata + align_power (inote.namesz, 2);
+ inote.descpos = offset + (inote.descdata - (char *) pnotes);
+ next = inote.descdata + align_power (inote.descsz, 2);
+ }
+ else
+ {
+ Elf64_External_VMS_Note *vms_external;
+
+ /* PR binutils/15191
+ Make sure that there is enough data to read. */
+ min_notesz = offsetof (Elf64_External_VMS_Note, name);
+ if (data_remaining < min_notesz)
+ {
+ warn (_("Corrupt note: only %d bytes remain, not enough for a full note\n"),
+ (int) data_remaining);
+ break;
+ }
+
+ vms_external = (Elf64_External_VMS_Note *) external;
+ inote.type = BYTE_GET (vms_external->type);
+ inote.namesz = BYTE_GET (vms_external->namesz);
+ inote.namedata = vms_external->name;
+ inote.descsz = BYTE_GET (vms_external->descsz);
+ inote.descdata = inote.namedata + align_power (inote.namesz, 3);
+ inote.descpos = offset + (inote.descdata - (char *) pnotes);
+ next = inote.descdata + align_power (inote.descsz, 3);
+ }
+
+ if (inote.descdata < (char *) external + min_notesz
+ || next < (char *) external + min_notesz
+ || data_remaining < (size_t)(next - (char *) external))
+ {
+ warn (_("note with invalid namesz and/or descsz found at offset 0x%lx\n"),
+ (unsigned long) ((char *) external - (char *) pnotes));
+ warn (_(" type: 0x%lx, namesize: 0x%08lx, descsize: 0x%08lx\n"),
+ inote.type, inote.namesz, inote.descsz);
+ break;
+ }
+
+ external = (Elf_External_Note *) next;
+
+ /* Verify that name is null terminated. It appears that at least
+ one version of Linux (RedHat 6.0) generates corefiles that don't
+ comply with the ELF spec by failing to include the null byte in
+ namesz. */
+ if (inote.namedata[inote.namesz - 1] != '\0')
+ {
+ temp = (char *) malloc (inote.namesz + 1);
+
+ if (temp == NULL)
+ {
+ error (_("Out of memory\n"));
+ res = 0;
+ break;
+ }
+
+ strncpy (temp, inote.namedata, inote.namesz);
+ temp[inote.namesz] = 0;
+
+ /* warn (_("'%s' NOTE name not properly null terminated\n"), temp); */
+ inote.namedata = temp;
+ }
+
+ res &= process_note (& inote);
+
+ if (temp != NULL)
+ {
+ free (temp);
+ temp = NULL;
+ }
+ }
+
+ free (pnotes);
+
+ return res;
+}
+
+static int
+process_corefile_note_segments (FILE * file)
+{
+ Elf_Internal_Phdr * segment;
+ unsigned int i;
+ int res = 1;
+
+ if (! get_program_headers (file))
+ return 0;
+
+ for (i = 0, segment = program_headers;
+ i < elf_header.e_phnum;
+ i++, segment++)
+ {
+ if (segment->p_type == PT_NOTE)
+ res &= process_corefile_note_segment (file,
+ (bfd_vma) segment->p_offset,
+ (bfd_vma) segment->p_filesz);
+ }
+
+ return res;
+}
+
+static int
+process_note_sections (FILE * file)
+{
+ Elf_Internal_Shdr * section;
+ unsigned long i;
+ int res = 1;
+
+ for (i = 0, section = section_headers;
+ i < elf_header.e_shnum && section != NULL;
+ i++, section++)
+ if (section->sh_type == SHT_NOTE)
+ res &= process_corefile_note_segment (file,
+ (bfd_vma) section->sh_offset,
+ (bfd_vma) section->sh_size);
+
+ return res;
+}
+
+static int
+process_notes (FILE * file)
+{
+ /* If we have not been asked to display the notes then do nothing. */
+ if (! do_notes)
+ return 1;
+
+ if (elf_header.e_type != ET_CORE)
+ return process_note_sections (file);
+
+ /* No program headers means no NOTE segment. */
+ if (elf_header.e_phnum > 0)
+ return process_corefile_note_segments (file);
+
+ printf (_("No note segments present in the core file.\n"));
+ return 1;
+}
+
+static int
+process_arch_specific (FILE * file)
+{
+ if (! do_arch)
+ return 1;
+
+ switch (elf_header.e_machine)
+ {
+ case EM_ARM:
+ return process_arm_specific (file);
+ case EM_MIPS:
+ case EM_MIPS_RS3_LE:
+ return process_mips_specific (file);
+ break;
+ case EM_PPC:
+ return process_power_specific (file);
+ break;
+ case EM_SPARC:
+ case EM_SPARC32PLUS:
+ case EM_SPARCV9:
+ return process_sparc_specific (file);
+ break;
+ case EM_TI_C6000:
+ return process_tic6x_specific (file);
+ break;
+ case EM_MSP430:
+ return process_msp430x_specific (file);
+ default:
+ break;
+ }
+ return 1;
+}
+
+static int
+get_file_header (FILE * file)
+{
+ /* Read in the identity array. */
+ if (fread (elf_header.e_ident, EI_NIDENT, 1, file) != 1)
+ return 0;
+
+ /* Determine how to read the rest of the header. */
+ switch (elf_header.e_ident[EI_DATA])
+ {
+ default: /* fall through */
+ case ELFDATANONE: /* fall through */
+ case ELFDATA2LSB:
+ byte_get = byte_get_little_endian;
+ byte_put = byte_put_little_endian;
+ break;
+ case ELFDATA2MSB:
+ byte_get = byte_get_big_endian;
+ byte_put = byte_put_big_endian;
+ break;
+ }
+
+ /* For now we only support 32 bit and 64 bit ELF files. */
+ is_32bit_elf = (elf_header.e_ident[EI_CLASS] != ELFCLASS64);
+
+ /* Read in the rest of the header. */
+ if (is_32bit_elf)
+ {
+ Elf32_External_Ehdr ehdr32;
+
+ if (fread (ehdr32.e_type, sizeof (ehdr32) - EI_NIDENT, 1, file) != 1)
+ return 0;
+
+ elf_header.e_type = BYTE_GET (ehdr32.e_type);
+ elf_header.e_machine = BYTE_GET (ehdr32.e_machine);
+ elf_header.e_version = BYTE_GET (ehdr32.e_version);
+ elf_header.e_entry = BYTE_GET (ehdr32.e_entry);
+ elf_header.e_phoff = BYTE_GET (ehdr32.e_phoff);
+ elf_header.e_shoff = BYTE_GET (ehdr32.e_shoff);
+ elf_header.e_flags = BYTE_GET (ehdr32.e_flags);
+ elf_header.e_ehsize = BYTE_GET (ehdr32.e_ehsize);
+ elf_header.e_phentsize = BYTE_GET (ehdr32.e_phentsize);
+ elf_header.e_phnum = BYTE_GET (ehdr32.e_phnum);
+ elf_header.e_shentsize = BYTE_GET (ehdr32.e_shentsize);
+ elf_header.e_shnum = BYTE_GET (ehdr32.e_shnum);
+ elf_header.e_shstrndx = BYTE_GET (ehdr32.e_shstrndx);
+ }
+ else
+ {
+ Elf64_External_Ehdr ehdr64;
+
+ /* If we have been compiled with sizeof (bfd_vma) == 4, then
+ we will not be able to cope with the 64bit data found in
+ 64 ELF files. Detect this now and abort before we start
+ overwriting things. */
+ if (sizeof (bfd_vma) < 8)
+ {
+ error (_("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"));
+ return 0;
+ }
+
+ if (fread (ehdr64.e_type, sizeof (ehdr64) - EI_NIDENT, 1, file) != 1)
+ return 0;
+
+ elf_header.e_type = BYTE_GET (ehdr64.e_type);
+ elf_header.e_machine = BYTE_GET (ehdr64.e_machine);
+ elf_header.e_version = BYTE_GET (ehdr64.e_version);
+ elf_header.e_entry = BYTE_GET (ehdr64.e_entry);
+ elf_header.e_phoff = BYTE_GET (ehdr64.e_phoff);
+ elf_header.e_shoff = BYTE_GET (ehdr64.e_shoff);
+ elf_header.e_flags = BYTE_GET (ehdr64.e_flags);
+ elf_header.e_ehsize = BYTE_GET (ehdr64.e_ehsize);
+ elf_header.e_phentsize = BYTE_GET (ehdr64.e_phentsize);
+ elf_header.e_phnum = BYTE_GET (ehdr64.e_phnum);
+ elf_header.e_shentsize = BYTE_GET (ehdr64.e_shentsize);
+ elf_header.e_shnum = BYTE_GET (ehdr64.e_shnum);
+ elf_header.e_shstrndx = BYTE_GET (ehdr64.e_shstrndx);
+ }
+
+ if (elf_header.e_shoff)
+ {
+ /* There may be some extensions in the first section header. Don't
+ bomb if we can't read it. */
+ if (is_32bit_elf)
+ get_32bit_section_headers (file, 1);
+ else
+ get_64bit_section_headers (file, 1);
+ }
+
+ return 1;
+}
+
+/* Process one ELF object file according to the command line options.
+ This file may actually be stored in an archive. The file is
+ positioned at the start of the ELF object. */
+
+static int
+process_object (char * file_name, FILE * file)
+{
+ unsigned int i;
+
+ if (! get_file_header (file))
+ {
+ error (_("%s: Failed to read file header\n"), file_name);
+ return 1;
+ }
+
+ /* Initialise per file variables. */
+ for (i = ARRAY_SIZE (version_info); i--;)
+ version_info[i] = 0;
+
+ for (i = ARRAY_SIZE (dynamic_info); i--;)
+ dynamic_info[i] = 0;
+ dynamic_info_DT_GNU_HASH = 0;
+
+ /* Process the file. */
+ if (show_name)
+ printf (_("\nFile: %s\n"), file_name);
+
+ /* Initialise the dump_sects array from the cmdline_dump_sects array.
+ Note we do this even if cmdline_dump_sects is empty because we
+ must make sure that the dump_sets array is zeroed out before each
+ object file is processed. */
+ if (num_dump_sects > num_cmdline_dump_sects)
+ memset (dump_sects, 0, num_dump_sects * sizeof (* dump_sects));
+
+ if (num_cmdline_dump_sects > 0)
+ {
+ if (num_dump_sects == 0)
+ /* A sneaky way of allocating the dump_sects array. */
+ request_dump_bynumber (num_cmdline_dump_sects, 0);
+
+ assert (num_dump_sects >= num_cmdline_dump_sects);
+ memcpy (dump_sects, cmdline_dump_sects,
+ num_cmdline_dump_sects * sizeof (* dump_sects));
+ }
+
+ if (! process_file_header ())
+ return 1;
+
+ if (! process_section_headers (file))
+ {
+ /* Without loaded section headers we cannot process lots of
+ things. */
+ do_unwind = do_version = do_dump = do_arch = 0;
+
+ if (! do_using_dynamic)
+ do_syms = do_dyn_syms = do_reloc = 0;
+ }
+
+ if (! process_section_groups (file))
+ {
+ /* Without loaded section groups we cannot process unwind. */
+ do_unwind = 0;
+ }
+
+ if (process_program_headers (file))
+ process_dynamic_section (file);
+
+ process_relocs (file);
+
+ process_unwind (file);
+
+ process_symbol_table (file);
+
+ process_syminfo (file);
+
+ process_version_sections (file);
+
+ process_section_contents (file);
+
+ process_notes (file);
+
+ process_gnu_liblist (file);
+
+ process_arch_specific (file);
+
+ if (program_headers)
+ {
+ free (program_headers);
+ program_headers = NULL;
+ }
+
+ if (section_headers)
+ {
+ free (section_headers);
+ section_headers = NULL;
+ }
+
+ if (string_table)
+ {
+ free (string_table);
+ string_table = NULL;
+ string_table_length = 0;
+ }
+
+ if (dynamic_strings)
+ {
+ free (dynamic_strings);
+ dynamic_strings = NULL;
+ dynamic_strings_length = 0;
+ }
+
+ if (dynamic_symbols)
+ {
+ free (dynamic_symbols);
+ dynamic_symbols = NULL;
+ num_dynamic_syms = 0;
+ }
+
+ if (dynamic_syminfo)
+ {
+ free (dynamic_syminfo);
+ dynamic_syminfo = NULL;
+ }
+
+ if (dynamic_section)
+ {
+ free (dynamic_section);
+ dynamic_section = NULL;
+ }
+
+ if (section_headers_groups)
+ {
+ free (section_headers_groups);
+ section_headers_groups = NULL;
+ }
+
+ if (section_groups)
+ {
+ struct group_list * g;
+ struct group_list * next;
+
+ for (i = 0; i < group_count; i++)
+ {
+ for (g = section_groups [i].root; g != NULL; g = next)
+ {
+ next = g->next;
+ free (g);
+ }
+ }
+
+ free (section_groups);
+ section_groups = NULL;
+ }
+
+ free_debug_memory ();
+
+ return 0;
+}
+
+/* Process an ELF archive.
+ On entry the file is positioned just after the ARMAG string. */
+
+static int
+process_archive (char * file_name, FILE * file, bfd_boolean is_thin_archive)
+{
+ struct archive_info arch;
+ struct archive_info nested_arch;
+ size_t got;
+ int ret;
+
+ show_name = 1;
+
+ /* The ARCH structure is used to hold information about this archive. */
+ arch.file_name = NULL;
+ arch.file = NULL;
+ arch.index_array = NULL;
+ arch.sym_table = NULL;
+ arch.longnames = NULL;
+
+ /* The NESTED_ARCH structure is used as a single-item cache of information
+ about a nested archive (when members of a thin archive reside within
+ another regular archive file). */
+ nested_arch.file_name = NULL;
+ nested_arch.file = NULL;
+ nested_arch.index_array = NULL;
+ nested_arch.sym_table = NULL;
+ nested_arch.longnames = NULL;
+
+ if (setup_archive (&arch, file_name, file, is_thin_archive, do_archive_index) != 0)
+ {
+ ret = 1;
+ goto out;
+ }
+
+ if (do_archive_index)
+ {
+ if (arch.sym_table == NULL)
+ error (_("%s: unable to dump the index as none was found\n"), file_name);
+ else
+ {
+ unsigned int i, l;
+ unsigned long current_pos;
+
+ printf (_("Index of archive %s: (%ld entries, 0x%lx bytes in the symbol table)\n"),
+ file_name, (long) arch.index_num, arch.sym_size);
+ current_pos = ftell (file);
+
+ for (i = l = 0; i < arch.index_num; i++)
+ {
+ if ((i == 0) || ((i > 0) && (arch.index_array[i] != arch.index_array[i - 1])))
+ {
+ char * member_name;
+
+ member_name = get_archive_member_name_at (&arch, arch.index_array[i], &nested_arch);
+
+ if (member_name != NULL)
+ {
+ char * qualified_name = make_qualified_name (&arch, &nested_arch, member_name);
+
+ if (qualified_name != NULL)
+ {
+ printf (_("Contents of binary %s at offset "), qualified_name);
+ (void) print_vma (arch.index_array[i], PREFIX_HEX);
+ putchar ('\n');
+ free (qualified_name);
+ }
+ }
+ }
+
+ if (l >= arch.sym_size)
+ {
+ error (_("%s: end of the symbol table reached before the end of the index\n"),
+ file_name);
+ break;
+ }
+ printf ("\t%s\n", arch.sym_table + l);
+ l += strlen (arch.sym_table + l) + 1;
+ }
+
+ if (arch.uses_64bit_indicies)
+ l = (l + 7) & ~ 7;
+ else
+ l += l & 1;
+
+ if (l < arch.sym_size)
+ error (_("%s: %ld bytes remain in the symbol table, but without corresponding entries in the index table\n"),
+ file_name, arch.sym_size - l);
+
+ if (fseek (file, current_pos, SEEK_SET) != 0)
+ {
+ error (_("%s: failed to seek back to start of object files in the archive\n"), file_name);
+ ret = 1;
+ goto out;
+ }
+ }
+
+ if (!do_dynamic && !do_syms && !do_reloc && !do_unwind && !do_sections
+ && !do_segments && !do_header && !do_dump && !do_version
+ && !do_histogram && !do_debugging && !do_arch && !do_notes
+ && !do_section_groups && !do_dyn_syms)
+ {
+ ret = 0; /* Archive index only. */
+ goto out;
+ }
+ }
+
+ ret = 0;
+
+ while (1)
+ {
+ char * name;
+ size_t namelen;
+ char * qualified_name;
+
+ /* Read the next archive header. */
+ if (fseek (file, arch.next_arhdr_offset, SEEK_SET) != 0)
+ {
+ error (_("%s: failed to seek to next archive header\n"), file_name);
+ return 1;
+ }
+ got = fread (&arch.arhdr, 1, sizeof arch.arhdr, file);
+ if (got != sizeof arch.arhdr)
+ {
+ if (got == 0)
+ break;
+ error (_("%s: failed to read archive header\n"), file_name);
+ ret = 1;
+ break;
+ }
+ if (memcmp (arch.arhdr.ar_fmag, ARFMAG, 2) != 0)
+ {
+ error (_("%s: did not find a valid archive header\n"), arch.file_name);
+ ret = 1;
+ break;
+ }
+
+ arch.next_arhdr_offset += sizeof arch.arhdr;
+
+ archive_file_size = strtoul (arch.arhdr.ar_size, NULL, 10);
+ if (archive_file_size & 01)
+ ++archive_file_size;
+
+ name = get_archive_member_name (&arch, &nested_arch);
+ if (name == NULL)
+ {
+ error (_("%s: bad archive file name\n"), file_name);
+ ret = 1;
+ break;
+ }
+ namelen = strlen (name);
+
+ qualified_name = make_qualified_name (&arch, &nested_arch, name);
+ if (qualified_name == NULL)
+ {
+ error (_("%s: bad archive file name\n"), file_name);
+ ret = 1;
+ break;
+ }
+
+ if (is_thin_archive && arch.nested_member_origin == 0)
+ {
+ /* This is a proxy for an external member of a thin archive. */
+ FILE * member_file;
+ char * member_file_name = adjust_relative_path (file_name, name, namelen);
+ if (member_file_name == NULL)
+ {
+ ret = 1;
+ break;
+ }
+
+ member_file = fopen (member_file_name, "rb");
+ if (member_file == NULL)
+ {
+ error (_("Input file '%s' is not readable.\n"), member_file_name);
+ free (member_file_name);
+ ret = 1;
+ break;
+ }
+
+ archive_file_offset = arch.nested_member_origin;
+
+ ret |= process_object (qualified_name, member_file);
+
+ fclose (member_file);
+ free (member_file_name);
+ }
+ else if (is_thin_archive)
+ {
+ /* PR 15140: Allow for corrupt thin archives. */
+ if (nested_arch.file == NULL)
+ {
+ error (_("%s: contains corrupt thin archive: %s\n"),
+ file_name, name);
+ ret = 1;
+ break;
+ }
+
+ /* This is a proxy for a member of a nested archive. */
+ archive_file_offset = arch.nested_member_origin + sizeof arch.arhdr;
+
+ /* The nested archive file will have been opened and setup by
+ get_archive_member_name. */
+ if (fseek (nested_arch.file, archive_file_offset, SEEK_SET) != 0)
+ {
+ error (_("%s: failed to seek to archive member.\n"), nested_arch.file_name);
+ ret = 1;
+ break;
+ }
+
+ ret |= process_object (qualified_name, nested_arch.file);
+ }
+ else
+ {
+ archive_file_offset = arch.next_arhdr_offset;
+ arch.next_arhdr_offset += archive_file_size;
+
+ ret |= process_object (qualified_name, file);
+ }
+
+ if (dump_sects != NULL)
+ {
+ free (dump_sects);
+ dump_sects = NULL;
+ num_dump_sects = 0;
+ }
+
+ free (qualified_name);
+ }
+
+ out:
+ if (nested_arch.file != NULL)
+ fclose (nested_arch.file);
+ release_archive (&nested_arch);
+ release_archive (&arch);
+
+ return ret;
+}
+
+static int
+process_file (char * file_name)
+{
+ FILE * file;
+ struct stat statbuf;
+ char armag[SARMAG];
+ int ret;
+
+ if (stat (file_name, &statbuf) < 0)
+ {
+ if (errno == ENOENT)
+ error (_("'%s': No such file\n"), file_name);
+ else
+ error (_("Could not locate '%s'. System error message: %s\n"),
+ file_name, strerror (errno));
+ return 1;
+ }
+
+ if (! S_ISREG (statbuf.st_mode))
+ {
+ error (_("'%s' is not an ordinary file\n"), file_name);
+ return 1;
+ }
+
+ file = fopen (file_name, "rb");
+ if (file == NULL)
+ {
+ error (_("Input file '%s' is not readable.\n"), file_name);
+ return 1;
+ }
+
+ if (fread (armag, SARMAG, 1, file) != 1)
+ {
+ error (_("%s: Failed to read file's magic number\n"), file_name);
+ fclose (file);
+ return 1;
+ }
+
+ if (memcmp (armag, ARMAG, SARMAG) == 0)
+ ret = process_archive (file_name, file, FALSE);
+ else if (memcmp (armag, ARMAGT, SARMAG) == 0)
+ ret = process_archive (file_name, file, TRUE);
+ else
+ {
+ if (do_archive_index)
+ error (_("File %s is not an archive so its index cannot be displayed.\n"),
+ file_name);
+
+ rewind (file);
+ archive_file_size = archive_file_offset = 0;
+ ret = process_object (file_name, file);
+ }
+
+ fclose (file);
+
+ return ret;
+}
+
+#ifdef SUPPORT_DISASSEMBLY
+/* Needed by the i386 disassembler. For extra credit, someone could
+ fix this so that we insert symbolic addresses here, esp for GOT/PLT
+ symbols. */
+
+void
+print_address (unsigned int addr, FILE * outfile)
+{
+ fprintf (outfile,"0x%8.8x", addr);
+}
+
+/* Needed by the i386 disassembler. */
+void
+db_task_printsym (unsigned int addr)
+{
+ print_address (addr, stderr);
+}
+#endif
+
+int
+main (int argc, char ** argv)
+{
+ int err;
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ expandargv (&argc, &argv);
+
+ parse_args (argc, argv);
+
+ if (num_dump_sects > 0)
+ {
+ /* Make a copy of the dump_sects array. */
+ cmdline_dump_sects = (dump_type *)
+ malloc (num_dump_sects * sizeof (* dump_sects));
+ if (cmdline_dump_sects == NULL)
+ error (_("Out of memory allocating dump request table.\n"));
+ else
+ {
+ memcpy (cmdline_dump_sects, dump_sects,
+ num_dump_sects * sizeof (* dump_sects));
+ num_cmdline_dump_sects = num_dump_sects;
+ }
+ }
+
+ if (optind < (argc - 1))
+ show_name = 1;
+
+ err = 0;
+ while (optind < argc)
+ err |= process_file (argv[optind++]);
+
+ if (dump_sects != NULL)
+ free (dump_sects);
+ if (cmdline_dump_sects != NULL)
+ free (cmdline_dump_sects);
+
+ return err;
+}
diff --git a/binutils-2.24/binutils/rename.c b/binutils-2.24/binutils/rename.c
new file mode 100644
index 00000000..5923a3f4
--- /dev/null
+++ b/binutils-2.24/binutils/rename.c
@@ -0,0 +1,212 @@
+/* rename.c -- rename a file, preserving symlinks.
+ Copyright 1999, 2002, 2003, 2005, 2007, 2008 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 3 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 "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+
+#ifdef HAVE_GOOD_UTIME_H
+#include <utime.h>
+#else /* ! HAVE_GOOD_UTIME_H */
+#ifdef HAVE_UTIMES
+#include <sys/time.h>
+#endif /* HAVE_UTIMES */
+#endif /* ! HAVE_GOOD_UTIME_H */
+
+#if ! defined (_WIN32) || defined (__CYGWIN32__)
+static int simple_copy (const char *, const char *);
+
+/* The number of bytes to copy at once. */
+#define COPY_BUF 8192
+
+/* Copy file FROM to file TO, performing no translations.
+ Return 0 if ok, -1 if error. */
+
+static int
+simple_copy (const char *from, const char *to)
+{
+ int fromfd, tofd, nread;
+ int saved;
+ char buf[COPY_BUF];
+
+ fromfd = open (from, O_RDONLY | O_BINARY);
+ if (fromfd < 0)
+ return -1;
+#ifdef O_CREAT
+ tofd = open (to, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY, 0777);
+#else
+ tofd = creat (to, 0777);
+#endif
+ if (tofd < 0)
+ {
+ saved = errno;
+ close (fromfd);
+ errno = saved;
+ return -1;
+ }
+ while ((nread = read (fromfd, buf, sizeof buf)) > 0)
+ {
+ if (write (tofd, buf, nread) != nread)
+ {
+ saved = errno;
+ close (fromfd);
+ close (tofd);
+ errno = saved;
+ return -1;
+ }
+ }
+ saved = errno;
+ close (fromfd);
+ close (tofd);
+ if (nread < 0)
+ {
+ errno = saved;
+ return -1;
+ }
+ return 0;
+}
+#endif /* __CYGWIN32__ or not _WIN32 */
+
+/* Set the times of the file DESTINATION to be the same as those in
+ STATBUF. */
+
+void
+set_times (const char *destination, const struct stat *statbuf)
+{
+ int result;
+
+ {
+#ifdef HAVE_GOOD_UTIME_H
+ struct utimbuf tb;
+
+ tb.actime = statbuf->st_atime;
+ tb.modtime = statbuf->st_mtime;
+ result = utime (destination, &tb);
+#else /* ! HAVE_GOOD_UTIME_H */
+#ifndef HAVE_UTIMES
+ long tb[2];
+
+ tb[0] = statbuf->st_atime;
+ tb[1] = statbuf->st_mtime;
+ result = utime (destination, tb);
+#else /* HAVE_UTIMES */
+ struct timeval tv[2];
+
+ tv[0].tv_sec = statbuf->st_atime;
+ tv[0].tv_usec = 0;
+ tv[1].tv_sec = statbuf->st_mtime;
+ tv[1].tv_usec = 0;
+ result = utimes (destination, tv);
+#endif /* HAVE_UTIMES */
+#endif /* ! HAVE_GOOD_UTIME_H */
+ }
+
+ if (result != 0)
+ non_fatal (_("%s: cannot set time: %s"), destination, strerror (errno));
+}
+
+#ifndef S_ISLNK
+#ifdef S_IFLNK
+#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
+#else
+#define S_ISLNK(m) 0
+#define lstat stat
+#endif
+#endif
+
+/* Rename FROM to TO, copying if TO is a link.
+ Return 0 if ok, -1 if error. */
+
+int
+smart_rename (const char *from, const char *to, int preserve_dates ATTRIBUTE_UNUSED)
+{
+ bfd_boolean exists;
+ struct stat s;
+ int ret = 0;
+
+ exists = lstat (to, &s) == 0;
+
+#if defined (_WIN32) && !defined (__CYGWIN32__)
+ /* Win32, unlike unix, will not erase `to' in `rename(from, to)' but
+ fail instead. Also, chown is not present. */
+
+ if (exists)
+ remove (to);
+
+ ret = rename (from, to);
+ if (ret != 0)
+ {
+ /* We have to clean up here. */
+ non_fatal (_("unable to rename '%s'; reason: %s"), to, strerror (errno));
+ unlink (from);
+ }
+#else
+ /* Use rename only if TO is not a symbolic link and has
+ only one hard link, and we have permission to write to it. */
+ if (! exists
+ || (!S_ISLNK (s.st_mode)
+ && S_ISREG (s.st_mode)
+ && (s.st_mode & S_IWUSR)
+ && s.st_nlink == 1)
+ )
+ {
+ ret = rename (from, to);
+ if (ret == 0)
+ {
+ if (exists)
+ {
+ /* Try to preserve the permission bits and ownership of
+ TO. First get the mode right except for the setuid
+ bit. Then change the ownership. Then fix the setuid
+ bit. We do the chmod before the chown because if the
+ chown succeeds, and we are a normal user, we won't be
+ able to do the chmod afterward. We don't bother to
+ fix the setuid bit first because that might introduce
+ a fleeting security problem, and because the chown
+ will clear the setuid bit anyhow. We only fix the
+ setuid bit if the chown succeeds, because we don't
+ want to introduce an unexpected setuid file owned by
+ the user running objcopy. */
+ chmod (to, s.st_mode & 0777);
+ if (chown (to, s.st_uid, s.st_gid) >= 0)
+ chmod (to, s.st_mode & 07777);
+ }
+ }
+ else
+ {
+ /* We have to clean up here. */
+ non_fatal (_("unable to rename '%s'; reason: %s"), to, strerror (errno));
+ unlink (from);
+ }
+ }
+ else
+ {
+ ret = simple_copy (from, to);
+ if (ret != 0)
+ non_fatal (_("unable to copy file '%s'; reason: %s"), to, strerror (errno));
+
+ if (preserve_dates)
+ set_times (to, &s);
+ unlink (from);
+ }
+#endif /* _WIN32 && !__CYGWIN32__ */
+
+ return ret;
+}
diff --git a/binutils-2.24/binutils/resbin.c b/binutils-2.24/binutils/resbin.c
new file mode 100644
index 00000000..548ff38a
--- /dev/null
+++ b/binutils-2.24/binutils/resbin.c
@@ -0,0 +1,2160 @@
+/* resbin.c -- manipulate the Windows binary resource format.
+ Copyright 1997, 1998, 1999, 2002, 2003, 2005, 2006, 2007, 2009, 2010, 2011
+ Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Cygnus Support.
+ Rewritten by Kai Tietz, Onevision.
+
+ 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 3 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 file contains functions to convert between the binary resource
+ format and the internal structures that we want to use. The same
+ binary resource format is used in both res and COFF files. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+#include "libiberty.h"
+#include "windres.h"
+
+/* Local functions. */
+
+static void toosmall (const char *);
+
+static unichar *get_unicode (windres_bfd *, const bfd_byte *, rc_uint_type, rc_uint_type *);
+static int get_resid (windres_bfd *, rc_res_id *, const bfd_byte *, rc_uint_type);
+static rc_res_resource *bin_to_res_generic (windres_bfd *, enum rc_res_type,
+ const bfd_byte *, rc_uint_type);
+static rc_res_resource *bin_to_res_cursor (windres_bfd *, const bfd_byte *, rc_uint_type);
+static rc_res_resource *bin_to_res_menu (windres_bfd *,const bfd_byte *, rc_uint_type);
+static rc_menuitem *bin_to_res_menuitems (windres_bfd *, const bfd_byte *, rc_uint_type,
+ rc_uint_type *);
+static rc_menuitem *bin_to_res_menuexitems (windres_bfd *, const bfd_byte *, rc_uint_type,
+ rc_uint_type *);
+static rc_res_resource *bin_to_res_dialog (windres_bfd *, const bfd_byte *, rc_uint_type);
+static rc_res_resource *bin_to_res_string (windres_bfd *,const bfd_byte *, rc_uint_type);
+static rc_res_resource *bin_to_res_fontdir (windres_bfd *, const bfd_byte *, rc_uint_type);
+static rc_res_resource *bin_to_res_accelerators (windres_bfd *, const bfd_byte *, rc_uint_type);
+static rc_res_resource *bin_to_res_rcdata (windres_bfd *, const bfd_byte *, rc_uint_type, int);
+static rc_res_resource *bin_to_res_group_cursor (windres_bfd *, const bfd_byte *, rc_uint_type);
+static rc_res_resource *bin_to_res_group_icon (windres_bfd *, const bfd_byte *, rc_uint_type);
+static rc_res_resource *bin_to_res_version (windres_bfd *, const bfd_byte *, rc_uint_type);
+static rc_res_resource *bin_to_res_userdata (windres_bfd *, const bfd_byte *, rc_uint_type);
+static rc_res_resource *bin_to_res_toolbar (windres_bfd *, const bfd_byte *, rc_uint_type);
+static void get_version_header (windres_bfd *, const bfd_byte *, rc_uint_type, const char *,
+ unichar **, rc_uint_type *, rc_uint_type *, rc_uint_type *,
+ rc_uint_type *);
+
+/* Given a resource type ID, a pointer to data, a length, return a
+ rc_res_resource structure which represents that resource. The caller
+ is responsible for initializing the res_info and coff_info fields
+ of the returned structure. */
+
+rc_res_resource *
+bin_to_res (windres_bfd *wrbfd, rc_res_id type, const bfd_byte *data,
+ rc_uint_type length)
+{
+ if (type.named)
+ return bin_to_res_userdata (wrbfd, data, length);
+ else
+ {
+ switch (type.u.id)
+ {
+ default:
+ return bin_to_res_userdata (wrbfd, data, length);
+ case RT_CURSOR:
+ return bin_to_res_cursor (wrbfd, data, length);
+ case RT_BITMAP:
+ return bin_to_res_generic (wrbfd, RES_TYPE_BITMAP, data, length);
+ case RT_ICON:
+ return bin_to_res_generic (wrbfd, RES_TYPE_ICON, data, length);
+ case RT_MENU:
+ return bin_to_res_menu (wrbfd, data, length);
+ case RT_DIALOG:
+ return bin_to_res_dialog (wrbfd, data, length);
+ case RT_STRING:
+ return bin_to_res_string (wrbfd, data, length);
+ case RT_FONTDIR:
+ return bin_to_res_fontdir (wrbfd, data, length);
+ case RT_FONT:
+ return bin_to_res_generic (wrbfd, RES_TYPE_FONT, data, length);
+ case RT_ACCELERATOR:
+ return bin_to_res_accelerators (wrbfd, data, length);
+ case RT_RCDATA:
+ return bin_to_res_rcdata (wrbfd, data, length, RES_TYPE_RCDATA);
+ case RT_MESSAGETABLE:
+ return bin_to_res_generic (wrbfd, RES_TYPE_MESSAGETABLE, data, length);
+ case RT_GROUP_CURSOR:
+ return bin_to_res_group_cursor (wrbfd, data, length);
+ case RT_GROUP_ICON:
+ return bin_to_res_group_icon (wrbfd, data, length);
+ case RT_VERSION:
+ return bin_to_res_version (wrbfd, data, length);
+ case RT_TOOLBAR:
+ return bin_to_res_toolbar (wrbfd, data, length);
+
+ }
+ }
+}
+
+/* Give an error if the binary data is too small. */
+
+static void
+toosmall (const char *msg)
+{
+ fatal (_("%s: not enough binary data"), msg);
+}
+
+/* Swap in a NULL terminated unicode string. */
+
+static unichar *
+get_unicode (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length,
+ rc_uint_type *retlen)
+{
+ rc_uint_type c, i;
+ unichar *ret;
+
+ c = 0;
+ while (1)
+ {
+ if (length < c * 2 + 2)
+ toosmall (_("null terminated unicode string"));
+ if (windres_get_16 (wrbfd, data + c * 2, 2) == 0)
+ break;
+ ++c;
+ }
+
+ ret = (unichar *) res_alloc ((c + 1) * sizeof (unichar));
+
+ for (i = 0; i < c; i++)
+ ret[i] = windres_get_16 (wrbfd, data + i * 2, 2);
+ ret[i] = 0;
+
+ if (retlen != NULL)
+ *retlen = c;
+
+ return ret;
+}
+
+/* Get a resource identifier. This returns the number of bytes used. */
+
+static int
+get_resid (windres_bfd *wrbfd, rc_res_id *id, const bfd_byte *data,
+ rc_uint_type length)
+{
+ rc_uint_type first;
+
+ if (length < 2)
+ toosmall (_("resource ID"));
+
+ first = windres_get_16 (wrbfd, data, 2);
+ if (first == 0xffff)
+ {
+ if (length < 4)
+ toosmall (_("resource ID"));
+ id->named = 0;
+ id->u.id = windres_get_16 (wrbfd, data + 2, 2);
+ return 4;
+ }
+ else
+ {
+ id->named = 1;
+ id->u.n.name = get_unicode (wrbfd, data, length, &id->u.n.length);
+ return id->u.n.length * 2 + 2;
+ }
+}
+
+/* Convert a resource which just stores uninterpreted data from
+ binary. */
+
+rc_res_resource *
+bin_to_res_generic (windres_bfd *wrbfd ATTRIBUTE_UNUSED, enum rc_res_type type,
+ const bfd_byte *data, rc_uint_type length)
+{
+ rc_res_resource *r;
+
+ r = (rc_res_resource *) res_alloc (sizeof (rc_res_resource));
+ r->type = type;
+ r->u.data.data = data;
+ r->u.data.length = length;
+
+ return r;
+}
+
+/* Convert a cursor resource from binary. */
+
+rc_res_resource *
+bin_to_res_cursor (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
+{
+ rc_cursor *c;
+ rc_res_resource *r;
+
+ if (length < 4)
+ toosmall (_("cursor"));
+
+ c = (rc_cursor *) res_alloc (sizeof (rc_cursor));
+ c->xhotspot = windres_get_16 (wrbfd, data, 2);
+ c->yhotspot = windres_get_16 (wrbfd, data + 2, 2);
+ c->length = length - 4;
+ c->data = data + 4;
+
+ r = (rc_res_resource *) res_alloc (sizeof *r);
+ r->type = RES_TYPE_CURSOR;
+ r->u.cursor = c;
+
+ return r;
+}
+
+/* Convert a menu resource from binary. */
+
+rc_res_resource *
+bin_to_res_menu (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
+{
+ rc_res_resource *r;
+ rc_menu *m;
+ rc_uint_type version, got;
+
+ r = (rc_res_resource *) res_alloc (sizeof *r);
+ r->type = RES_TYPE_MENU;
+
+ m = (rc_menu *) res_alloc (sizeof (rc_menu));
+ r->u.menu = m;
+
+ if (length < 2)
+ toosmall (_("menu header"));
+
+ version = windres_get_16 (wrbfd, data, 2);
+
+ if (version == 0)
+ {
+ if (length < 4)
+ toosmall (_("menu header"));
+ m->help = 0;
+ m->items = bin_to_res_menuitems (wrbfd, data + 4, length - 4, &got);
+ }
+ else if (version == 1)
+ {
+ rc_uint_type offset;
+
+ if (length < 8)
+ toosmall (_("menuex header"));
+ m->help = windres_get_32 (wrbfd, data + 4, 4);
+ offset = windres_get_16 (wrbfd, data + 2, 2);
+ if (offset + 4 >= length)
+ toosmall (_("menuex offset"));
+ m->items = bin_to_res_menuexitems (wrbfd, data + 4 + offset,
+ length - (4 + offset), &got);
+ }
+ else
+ fatal (_("unsupported menu version %d"), (int) version);
+
+ return r;
+}
+
+/* Convert menu items from binary. */
+
+static rc_menuitem *
+bin_to_res_menuitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length,
+ rc_uint_type *got)
+{
+ rc_menuitem *first, **pp;
+
+ first = NULL;
+ pp = &first;
+
+ *got = 0;
+
+ while (length > 0)
+ {
+ rc_uint_type flags, slen, itemlen;
+ rc_uint_type stroff;
+ rc_menuitem *mi;
+
+ if (length < 4)
+ toosmall (_("menuitem header"));
+
+ mi = (rc_menuitem *) res_alloc (sizeof *mi);
+ mi->state = 0;
+ mi->help = 0;
+
+ flags = windres_get_16 (wrbfd, data, 2);
+ mi->type = flags &~ (MENUITEM_POPUP | MENUITEM_ENDMENU);
+
+ if ((flags & MENUITEM_POPUP) == 0)
+ stroff = 4;
+ else
+ stroff = 2;
+
+ if (length < stroff + 2)
+ toosmall (_("menuitem header"));
+
+ if (windres_get_16 (wrbfd, data + stroff, 2) == 0)
+ {
+ slen = 0;
+ mi->text = NULL;
+ }
+ else
+ mi->text = get_unicode (wrbfd, data + stroff, length - stroff, &slen);
+
+ itemlen = stroff + slen * 2 + 2;
+
+ if ((flags & MENUITEM_POPUP) == 0)
+ {
+ mi->popup = NULL;
+ mi->id = windres_get_16 (wrbfd, data + 2, 2);
+ }
+ else
+ {
+ rc_uint_type subread;
+
+ mi->id = 0;
+ mi->popup = bin_to_res_menuitems (wrbfd, data + itemlen, length - itemlen,
+ &subread);
+ itemlen += subread;
+ }
+
+ mi->next = NULL;
+ *pp = mi;
+ pp = &mi->next;
+
+ data += itemlen;
+ length -= itemlen;
+ *got += itemlen;
+
+ if ((flags & MENUITEM_ENDMENU) != 0)
+ return first;
+ }
+
+ return first;
+}
+
+/* Convert menuex items from binary. */
+
+static rc_menuitem *
+bin_to_res_menuexitems (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length,
+ rc_uint_type *got)
+{
+ rc_menuitem *first, **pp;
+
+ first = NULL;
+ pp = &first;
+
+ *got = 0;
+
+ while (length > 0)
+ {
+ rc_uint_type flags, slen;
+ rc_uint_type itemlen;
+ rc_menuitem *mi;
+
+ if (length < 16)
+ toosmall (_("menuitem header"));
+
+ mi = (rc_menuitem *) res_alloc (sizeof (rc_menuitem));
+ mi->type = windres_get_32 (wrbfd, data, 4);
+ mi->state = windres_get_32 (wrbfd, data + 4, 4);
+ mi->id = windres_get_32 (wrbfd, data + 8, 4);
+
+ flags = windres_get_16 (wrbfd, data + 12, 2);
+
+ if (windres_get_16 (wrbfd, data + 14, 2) == 0)
+ {
+ slen = 0;
+ mi->text = NULL;
+ }
+ else
+ mi->text = get_unicode (wrbfd, data + 14, length - 14, &slen);
+
+ itemlen = 14 + slen * 2 + 2;
+ itemlen = (itemlen + 3) &~ 3;
+
+ if ((flags & 1) == 0)
+ {
+ mi->popup = NULL;
+ mi->help = 0;
+ }
+ else
+ {
+ rc_uint_type subread;
+
+ if (length < itemlen + 4)
+ toosmall (_("menuitem"));
+ mi->help = windres_get_32 (wrbfd, data + itemlen, 4);
+ itemlen += 4;
+
+ mi->popup = bin_to_res_menuexitems (wrbfd, data + itemlen,
+ length - itemlen, &subread);
+ itemlen += subread;
+ }
+
+ mi->next = NULL;
+ *pp = mi;
+ pp = &mi->next;
+
+ data += itemlen;
+ length -= itemlen;
+ *got += itemlen;
+
+ if ((flags & 0x80) != 0)
+ return first;
+ }
+
+ return first;
+}
+
+/* Convert a dialog resource from binary. */
+
+static rc_res_resource *
+bin_to_res_dialog (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
+{
+ rc_uint_type signature;
+ rc_dialog *d;
+ rc_uint_type c, sublen, i;
+ rc_uint_type off;
+ rc_dialog_control **pp;
+ rc_res_resource *r;
+
+ if (length < 18)
+ toosmall (_("dialog header"));
+
+ d = (rc_dialog *) res_alloc (sizeof (rc_dialog));
+
+ signature = windres_get_16 (wrbfd, data + 2, 2);
+ if (signature != 0xffff)
+ {
+ d->ex = NULL;
+ d->style = windres_get_32 (wrbfd, data, 4);
+ d->exstyle = windres_get_32 (wrbfd, data + 4, 4);
+ off = 8;
+ }
+ else
+ {
+ int version;
+
+ version = windres_get_16 (wrbfd, data, 2);
+ if (version != 1)
+ fatal (_("unexpected DIALOGEX version %d"), version);
+
+ d->ex = (rc_dialog_ex *) res_alloc (sizeof (rc_dialog_ex));
+ d->ex->help = windres_get_32 (wrbfd, data + 4, 4);
+ d->exstyle = windres_get_32 (wrbfd, data + 8, 4);
+ d->style = windres_get_32 (wrbfd, data + 12, 4);
+ off = 16;
+ }
+
+ if (length < off + 10)
+ toosmall (_("dialog header"));
+
+ c = windres_get_16 (wrbfd, data + off, 2);
+ d->x = windres_get_16 (wrbfd, data + off + 2, 2);
+ d->y = windres_get_16 (wrbfd, data + off + 4, 2);
+ d->width = windres_get_16 (wrbfd, data + off + 6, 2);
+ d->height = windres_get_16 (wrbfd, data + off + 8, 2);
+
+ off += 10;
+
+ sublen = get_resid (wrbfd, &d->menu, data + off, length - off);
+ off += sublen;
+
+ sublen = get_resid (wrbfd, &d->class, data + off, length - off);
+ off += sublen;
+
+ d->caption = get_unicode (wrbfd, data + off, length - off, &sublen);
+ off += sublen * 2 + 2;
+ if (sublen == 0)
+ d->caption = NULL;
+
+ if ((d->style & DS_SETFONT) == 0)
+ {
+ d->pointsize = 0;
+ d->font = NULL;
+ if (d->ex != NULL)
+ {
+ d->ex->weight = 0;
+ d->ex->italic = 0;
+ d->ex->charset = 1; /* Default charset. */
+ }
+ }
+ else
+ {
+ if (length < off + 2)
+ toosmall (_("dialog font point size"));
+
+ d->pointsize = windres_get_16 (wrbfd, data + off, 2);
+ off += 2;
+
+ if (d->ex != NULL)
+ {
+ if (length < off + 4)
+ toosmall (_("dialogex font information"));
+ d->ex->weight = windres_get_16 (wrbfd, data + off, 2);
+ d->ex->italic = windres_get_8 (wrbfd, data + off + 2, 1);
+ d->ex->charset = windres_get_8 (wrbfd, data + off + 3, 1);
+ off += 4;
+ }
+
+ d->font = get_unicode (wrbfd, data + off, length - off, &sublen);
+ off += sublen * 2 + 2;
+ }
+
+ d->controls = NULL;
+ pp = &d->controls;
+
+ for (i = 0; i < c; i++)
+ {
+ rc_dialog_control *dc;
+ int datalen;
+
+ off = (off + 3) &~ 3;
+
+ dc = (rc_dialog_control *) res_alloc (sizeof (rc_dialog_control));
+
+ if (d->ex == NULL)
+ {
+ if (length < off + 8)
+ toosmall (_("dialog control"));
+
+ dc->style = windres_get_32 (wrbfd, data + off, 4);
+ dc->exstyle = windres_get_32 (wrbfd, data + off + 4, 4);
+ dc->help = 0;
+ off += 8;
+ }
+ else
+ {
+ if (length < off + 12)
+ toosmall (_("dialogex control"));
+ dc->help = windres_get_32 (wrbfd, data + off, 4);
+ dc->exstyle = windres_get_32 (wrbfd, data + off + 4, 4);
+ dc->style = windres_get_32 (wrbfd, data + off + 8, 4);
+ off += 12;
+ }
+
+ if (length < off + (d->ex != NULL ? 2 : 0) + 10)
+ toosmall (_("dialog control"));
+
+ dc->x = windres_get_16 (wrbfd, data + off, 2);
+ dc->y = windres_get_16 (wrbfd, data + off + 2, 2);
+ dc->width = windres_get_16 (wrbfd, data + off + 4, 2);
+ dc->height = windres_get_16 (wrbfd, data + off + 6, 2);
+
+ if (d->ex != NULL)
+ dc->id = windres_get_32 (wrbfd, data + off + 8, 4);
+ else
+ dc->id = windres_get_16 (wrbfd, data + off + 8, 2);
+
+ off += 10 + (d->ex != NULL ? 2 : 0);
+
+ sublen = get_resid (wrbfd, &dc->class, data + off, length - off);
+ off += sublen;
+
+ sublen = get_resid (wrbfd, &dc->text, data + off, length - off);
+ off += sublen;
+
+ if (length < off + 2)
+ toosmall (_("dialog control end"));
+
+ datalen = windres_get_16 (wrbfd, data + off, 2);
+ off += 2;
+
+ if (datalen == 0)
+ dc->data = NULL;
+ else
+ {
+ off = (off + 3) &~ 3;
+
+ if (length < off + datalen)
+ toosmall (_("dialog control data"));
+
+ dc->data = ((rc_rcdata_item *)
+ res_alloc (sizeof (rc_rcdata_item)));
+ dc->data->next = NULL;
+ dc->data->type = RCDATA_BUFFER;
+ dc->data->u.buffer.length = datalen;
+ dc->data->u.buffer.data = data + off;
+
+ off += datalen;
+ }
+
+ dc->next = NULL;
+ *pp = dc;
+ pp = &dc->next;
+ }
+
+ r = (rc_res_resource *) res_alloc (sizeof *r);
+ r->type = RES_TYPE_DIALOG;
+ r->u.dialog = d;
+
+ return r;
+}
+
+/* Convert a stringtable resource from binary. */
+
+static rc_res_resource *
+bin_to_res_string (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
+{
+ rc_stringtable *st;
+ int i;
+ rc_res_resource *r;
+
+ st = (rc_stringtable *) res_alloc (sizeof (rc_stringtable));
+
+ for (i = 0; i < 16; i++)
+ {
+ unsigned int slen;
+
+ if (length < 2)
+ toosmall (_("stringtable string length"));
+ slen = windres_get_16 (wrbfd, data, 2);
+ st->strings[i].length = slen;
+
+ if (slen > 0)
+ {
+ unichar *s;
+ unsigned int j;
+
+ if (length < 2 + 2 * slen)
+ toosmall (_("stringtable string"));
+
+ s = (unichar *) res_alloc (slen * sizeof (unichar));
+ st->strings[i].string = s;
+
+ for (j = 0; j < slen; j++)
+ s[j] = windres_get_16 (wrbfd, data + 2 + j * 2, 2);
+ }
+
+ data += 2 + 2 * slen;
+ length -= 2 + 2 * slen;
+ }
+
+ r = (rc_res_resource *) res_alloc (sizeof *r);
+ r->type = RES_TYPE_STRINGTABLE;
+ r->u.stringtable = st;
+
+ return r;
+}
+
+/* Convert a fontdir resource from binary. */
+
+static rc_res_resource *
+bin_to_res_fontdir (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
+{
+ rc_uint_type c, i;
+ rc_fontdir *first, **pp;
+ rc_res_resource *r;
+
+ if (length < 2)
+ toosmall (_("fontdir header"));
+
+ c = windres_get_16 (wrbfd, data, 2);
+
+ first = NULL;
+ pp = &first;
+
+ for (i = 0; i < c; i++)
+ {
+ const struct bin_fontdir_item *bfi;
+ rc_fontdir *fd;
+ unsigned int off;
+
+ if (length < 56)
+ toosmall (_("fontdir"));
+
+ bfi = (const struct bin_fontdir_item *) data;
+ fd = (rc_fontdir *) res_alloc (sizeof *fd);
+ fd->index = windres_get_16 (wrbfd, bfi->index, 2);
+
+ /* To work out the length of the fontdir data, we must get the
+ length of the device name and face name strings, even though
+ we don't store them in the rc_fontdir. The
+ documentation says that these are NULL terminated char
+ strings, not Unicode strings. */
+
+ off = 56;
+
+ while (off < length && data[off] != '\0')
+ ++off;
+ if (off >= length)
+ toosmall (_("fontdir device name"));
+ ++off;
+
+ while (off < length && data[off] != '\0')
+ ++off;
+ if (off >= length)
+ toosmall (_("fontdir face name"));
+ ++off;
+
+ fd->length = off;
+ fd->data = data;
+
+ fd->next = NULL;
+ *pp = fd;
+ pp = &fd->next;
+
+ /* The documentation does not indicate that any rounding is
+ required. */
+
+ data += off;
+ length -= off;
+ }
+
+ r = (rc_res_resource *) res_alloc (sizeof *r);
+ r->type = RES_TYPE_FONTDIR;
+ r->u.fontdir = first;
+
+ return r;
+}
+
+/* Convert an accelerators resource from binary. */
+
+static rc_res_resource *
+bin_to_res_accelerators (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
+{
+ rc_accelerator *first, **pp;
+ rc_res_resource *r;
+
+ first = NULL;
+ pp = &first;
+
+ while (1)
+ {
+ rc_accelerator *a;
+
+ if (length < 8)
+ toosmall (_("accelerator"));
+
+ a = (rc_accelerator *) res_alloc (sizeof (rc_accelerator));
+
+ a->flags = windres_get_16 (wrbfd, data, 2);
+ a->key = windres_get_16 (wrbfd, data + 2, 2);
+ a->id = windres_get_16 (wrbfd, data + 4, 2);
+
+ a->next = NULL;
+ *pp = a;
+ pp = &a->next;
+
+ if ((a->flags & ACC_LAST) != 0)
+ break;
+
+ data += 8;
+ length -= 8;
+ }
+
+ r = (rc_res_resource *) res_alloc (sizeof (rc_res_resource));
+ r->type = RES_TYPE_ACCELERATOR;
+ r->u.acc = first;
+
+ return r;
+}
+
+/* Convert an rcdata resource from binary. */
+
+static rc_res_resource *
+bin_to_res_rcdata (windres_bfd *wrbfd ATTRIBUTE_UNUSED, const bfd_byte *data,
+ rc_uint_type length, int rctyp)
+{
+ rc_rcdata_item *ri;
+ rc_res_resource *r;
+
+ ri = (rc_rcdata_item *) res_alloc (sizeof (rc_rcdata_item));
+
+ ri->next = NULL;
+ ri->type = RCDATA_BUFFER;
+ ri->u.buffer.length = length;
+ ri->u.buffer.data = data;
+
+ r = (rc_res_resource *) res_alloc (sizeof *r);
+ r->type = rctyp;
+ r->u.rcdata = ri;
+
+ return r;
+}
+
+/* Convert a group cursor resource from binary. */
+
+static rc_res_resource *
+bin_to_res_group_cursor (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
+{
+ int type, c, i;
+ rc_group_cursor *first, **pp;
+ rc_res_resource *r;
+
+ if (length < 6)
+ toosmall (_("group cursor header"));
+
+ type = windres_get_16 (wrbfd, data + 2, 2);
+ if (type != 2)
+ fatal (_("unexpected group cursor type %d"), type);
+
+ c = windres_get_16 (wrbfd, data + 4, 2);
+
+ data += 6;
+ length -= 6;
+
+ first = NULL;
+ pp = &first;
+
+ for (i = 0; i < c; i++)
+ {
+ rc_group_cursor *gc;
+
+ if (length < 14)
+ toosmall (_("group cursor"));
+
+ gc = (rc_group_cursor *) res_alloc (sizeof *gc);
+
+ gc->width = windres_get_16 (wrbfd, data, 2);
+ gc->height = windres_get_16 (wrbfd, data + 2, 2);
+ gc->planes = windres_get_16 (wrbfd, data + 4, 2);
+ gc->bits = windres_get_16 (wrbfd, data + 6, 2);
+ gc->bytes = windres_get_32 (wrbfd, data + 8, 4);
+ gc->index = windres_get_16 (wrbfd, data + 12, 2);
+
+ gc->next = NULL;
+ *pp = gc;
+ pp = &gc->next;
+
+ data += 14;
+ length -= 14;
+ }
+
+ r = (rc_res_resource *) res_alloc (sizeof (rc_res_resource));
+ r->type = RES_TYPE_GROUP_CURSOR;
+ r->u.group_cursor = first;
+
+ return r;
+}
+
+/* Convert a group icon resource from binary. */
+
+static rc_res_resource *
+bin_to_res_group_icon (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
+{
+ int type, c, i;
+ rc_group_icon *first, **pp;
+ rc_res_resource *r;
+
+ if (length < 6)
+ toosmall (_("group icon header"));
+
+ type = windres_get_16 (wrbfd, data + 2, 2);
+ if (type != 1)
+ fatal (_("unexpected group icon type %d"), type);
+
+ c = windres_get_16 (wrbfd, data + 4, 2);
+
+ data += 6;
+ length -= 6;
+
+ first = NULL;
+ pp = &first;
+
+ for (i = 0; i < c; i++)
+ {
+ rc_group_icon *gi;
+
+ if (length < 14)
+ toosmall (_("group icon"));
+
+ gi = (rc_group_icon *) res_alloc (sizeof (rc_group_icon));
+
+ gi->width = windres_get_8 (wrbfd, data, 1);
+ gi->height = windres_get_8 (wrbfd, data + 1, 1);
+ gi->colors = windres_get_8 (wrbfd, data + 2, 1);
+ gi->planes = windres_get_16 (wrbfd, data + 4, 2);
+ gi->bits = windres_get_16 (wrbfd, data + 6, 2);
+ gi->bytes = windres_get_32 (wrbfd, data + 8, 4);
+ gi->index = windres_get_16 (wrbfd, data + 12, 2);
+
+ gi->next = NULL;
+ *pp = gi;
+ pp = &gi->next;
+
+ data += 14;
+ length -= 14;
+ }
+
+ r = (rc_res_resource *) res_alloc (sizeof *r);
+ r->type = RES_TYPE_GROUP_ICON;
+ r->u.group_icon = first;
+
+ return r;
+}
+
+/* Extract data from a version header. If KEY is not NULL, then the
+ key must be KEY; otherwise, the key is returned in *PKEY. This
+ sets *LEN to the total length, *VALLEN to the value length, *TYPE
+ to the type, and *OFF to the offset to the children. */
+
+static void
+get_version_header (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length,
+ const char *key, unichar **pkey,
+ rc_uint_type *len, rc_uint_type *vallen, rc_uint_type *type,
+ rc_uint_type *off)
+{
+ if (length < 8)
+ toosmall (key);
+
+ *len = (windres_get_16 (wrbfd, data, 2) + 3) & ~3;
+ *vallen = windres_get_16 (wrbfd, data + 2, 2);
+ *type = windres_get_16 (wrbfd, data + 4, 2);
+
+ *off = 6;
+
+ length -= 6;
+ data += 6;
+
+ if (key == NULL)
+ {
+ rc_uint_type sublen;
+
+ *pkey = get_unicode (wrbfd, data, length, &sublen);
+ *off += (sublen + 1) * sizeof (unichar);
+ }
+ else
+ {
+ while (1)
+ {
+ if (length < 2)
+ toosmall (key);
+ if (windres_get_16 (wrbfd, data, 2) != (bfd_byte) *key)
+ fatal (_("unexpected version string"));
+
+ *off += 2;
+ length -= 2;
+ data += 2;
+
+ if (*key == '\0')
+ break;
+
+ ++key;
+ }
+ }
+
+ *off = (*off + 3) &~ 3;
+}
+
+/* Convert a version resource from binary. */
+
+static rc_res_resource *
+bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
+{
+ rc_uint_type verlen, vallen, type, off;
+ rc_fixed_versioninfo *fi;
+ rc_ver_info *first, **pp;
+ rc_versioninfo *v;
+ rc_res_resource *r;
+
+ get_version_header (wrbfd, data, length, "VS_VERSION_INFO",
+ (unichar **) NULL, &verlen, &vallen, &type, &off);
+
+ if ((unsigned int) verlen != length)
+ fatal (_("version length %d does not match resource length %lu"),
+ (int) verlen, (unsigned long) length);
+
+ if (type != 0)
+ fatal (_("unexpected version type %d"), (int) type);
+
+ data += off;
+ length -= off;
+
+ if (vallen == 0)
+ fi = NULL;
+ else
+ {
+ unsigned long signature, fiv;
+
+ if (vallen != 52)
+ fatal (_("unexpected fixed version information length %ld"), (long) vallen);
+
+ if (length < 52)
+ toosmall (_("fixed version info"));
+
+ signature = windres_get_32 (wrbfd, data, 4);
+ if (signature != 0xfeef04bd)
+ fatal (_("unexpected fixed version signature %lu"), signature);
+
+ fiv = windres_get_32 (wrbfd, data + 4, 4);
+ if (fiv != 0 && fiv != 0x10000)
+ fatal (_("unexpected fixed version info version %lu"), fiv);
+
+ fi = (rc_fixed_versioninfo *) res_alloc (sizeof (rc_fixed_versioninfo));
+
+ fi->file_version_ms = windres_get_32 (wrbfd, data + 8, 4);
+ fi->file_version_ls = windres_get_32 (wrbfd, data + 12, 4);
+ fi->product_version_ms = windres_get_32 (wrbfd, data + 16, 4);
+ fi->product_version_ls = windres_get_32 (wrbfd, data + 20, 4);
+ fi->file_flags_mask = windres_get_32 (wrbfd, data + 24, 4);
+ fi->file_flags = windres_get_32 (wrbfd, data + 28, 4);
+ fi->file_os = windres_get_32 (wrbfd, data + 32, 4);
+ fi->file_type = windres_get_32 (wrbfd, data + 36, 4);
+ fi->file_subtype = windres_get_32 (wrbfd, data + 40, 4);
+ fi->file_date_ms = windres_get_32 (wrbfd, data + 44, 4);
+ fi->file_date_ls = windres_get_32 (wrbfd, data + 48, 4);
+
+ data += 52;
+ length -= 52;
+ }
+
+ first = NULL;
+ pp = &first;
+
+ while (length > 0)
+ {
+ rc_ver_info *vi;
+ int ch;
+
+ if (length < 8)
+ toosmall (_("version var info"));
+
+ vi = (rc_ver_info *) res_alloc (sizeof (rc_ver_info));
+
+ ch = windres_get_16 (wrbfd, data + 6, 2);
+
+ if (ch == 'S')
+ {
+ rc_ver_stringtable **ppvst;
+
+ vi->type = VERINFO_STRING;
+
+ get_version_header (wrbfd, data, length, "StringFileInfo",
+ (unichar **) NULL, &verlen, &vallen, &type,
+ &off);
+
+ if (vallen != 0)
+ fatal (_("unexpected stringfileinfo value length %ld"), (long) vallen);
+
+ data += off;
+ length -= off;
+
+ verlen -= off;
+
+ vi->u.string.stringtables = NULL;
+ ppvst = &vi->u.string.stringtables;
+
+ while (verlen > 0)
+ {
+ rc_ver_stringtable *vst;
+ rc_uint_type stverlen;
+ rc_ver_stringinfo **ppvs;
+
+ if (length < 8)
+ toosmall (_("version stringtable"));
+
+ vst = (rc_ver_stringtable *) res_alloc (sizeof (rc_ver_stringtable));
+
+ get_version_header (wrbfd, data, length, (const char *) NULL,
+ &vst->language, &stverlen, &vallen, &type, &off);
+
+ if (vallen != 0)
+ fatal (_("unexpected version stringtable value length %ld"), (long) vallen);
+
+ data += off;
+ length -= off;
+ verlen -= off;
+
+ stverlen -= off;
+
+ vst->strings = NULL;
+ ppvs = &vst->strings;
+
+ while (stverlen > 0)
+ {
+ rc_ver_stringinfo *vs;
+ rc_uint_type sverlen, vslen, valoff;
+
+ if (length < 8)
+ toosmall (_("version string"));
+
+ vs = (rc_ver_stringinfo *) res_alloc (sizeof (rc_ver_stringinfo));
+
+ get_version_header (wrbfd, data, length, (const char *) NULL,
+ &vs->key, &sverlen, &vallen, &type, &off);
+
+ data += off;
+ length -= off;
+
+ vs->value = get_unicode (wrbfd, data, length, &vslen);
+ valoff = vslen * 2 + 2;
+ valoff = (valoff + 3) & ~3;
+
+ if (off + valoff != sverlen)
+ fatal (_("unexpected version string length %ld != %ld + %ld"),
+ (long) sverlen, (long) off, (long) valoff);
+
+ data += valoff;
+ length -= valoff;
+
+ if (stverlen < sverlen)
+ fatal (_("unexpected version string length %ld < %ld"),
+ (long) verlen, (long) sverlen);
+ stverlen -= sverlen;
+ verlen -= sverlen;
+
+ vs->next = NULL;
+ *ppvs = vs;
+ ppvs = &vs->next;
+ }
+
+ vst->next = NULL;
+ *ppvst = vst;
+ ppvst = &vst->next;
+ }
+ }
+ else if (ch == 'V')
+ {
+ rc_ver_varinfo **ppvv;
+
+ vi->type = VERINFO_VAR;
+
+ get_version_header (wrbfd, data, length, "VarFileInfo",
+ (unichar **) NULL, &verlen, &vallen, &type,
+ &off);
+
+ if (vallen != 0)
+ fatal (_("unexpected varfileinfo value length %ld"), (long) vallen);
+
+ data += off;
+ length -= off;
+
+ get_version_header (wrbfd, data, length, (const char *) NULL,
+ &vi->u.var.key, &verlen, &vallen, &type, &off);
+
+ data += off;
+ length -= off;
+
+ vi->u.var.var = NULL;
+ ppvv = &vi->u.var.var;
+
+ while (vallen > 0)
+ {
+ rc_ver_varinfo *vv;
+
+ if (length < 4)
+ toosmall (_("version varfileinfo"));
+
+ vv = (rc_ver_varinfo *) res_alloc (sizeof (rc_ver_varinfo));
+
+ vv->language = windres_get_16 (wrbfd, data, 2);
+ vv->charset = windres_get_16 (wrbfd, data + 2, 2);
+
+ vv->next = NULL;
+ *ppvv = vv;
+ ppvv = &vv->next;
+
+ data += 4;
+ length -= 4;
+
+ if (vallen < 4)
+ fatal (_("unexpected version value length %ld"), (long) vallen);
+
+ vallen -= 4;
+ }
+ }
+ else
+ fatal (_("unexpected version string"));
+
+ vi->next = NULL;
+ *pp = vi;
+ pp = &vi->next;
+ }
+
+ v = (rc_versioninfo *) res_alloc (sizeof (rc_versioninfo));
+ v->fixed = fi;
+ v->var = first;
+
+ r = (rc_res_resource *) res_alloc (sizeof *r);
+ r->type = RES_TYPE_VERSIONINFO;
+ r->u.versioninfo = v;
+
+ return r;
+}
+
+/* Convert an arbitrary user defined resource from binary. */
+
+static rc_res_resource *
+bin_to_res_userdata (windres_bfd *wrbfd ATTRIBUTE_UNUSED, const bfd_byte *data,
+ rc_uint_type length)
+{
+ rc_rcdata_item *ri;
+ rc_res_resource *r;
+
+ ri = (rc_rcdata_item *) res_alloc (sizeof (rc_rcdata_item));
+
+ ri->next = NULL;
+ ri->type = RCDATA_BUFFER;
+ ri->u.buffer.length = length;
+ ri->u.buffer.data = data;
+
+ r = (rc_res_resource *) res_alloc (sizeof *r);
+ r->type = RES_TYPE_USERDATA;
+ r->u.rcdata = ri;
+
+ return r;
+}
+
+static rc_res_resource *
+bin_to_res_toolbar (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type length)
+{
+ rc_toolbar *ri;
+ rc_res_resource *r;
+ rc_uint_type i;
+
+ ri = (rc_toolbar *) res_alloc (sizeof (rc_toolbar));
+ ri->button_width = windres_get_32 (wrbfd, data, 4);
+ ri->button_height = windres_get_32 (wrbfd, data + 4, 4);
+ ri->nitems = windres_get_32 (wrbfd, data + 8, 4);
+ ri->items = NULL;
+
+ data += 12;
+ length -= 12;
+ for (i=0 ; i < ri->nitems; i++)
+ {
+ rc_toolbar_item *it;
+ it = (rc_toolbar_item *) res_alloc (sizeof (rc_toolbar_item));
+ it->id.named = 0;
+ it->id.u.id = (int) windres_get_32 (wrbfd, data, 4);
+ it->prev = it->next = NULL;
+ data += 4;
+ length -= 4;
+ if(ri->items) {
+ rc_toolbar_item *ii = ri->items;
+ while (ii->next != NULL)
+ ii = ii->next;
+ it->prev = ii;
+ ii->next = it;
+ }
+ else
+ ri->items = it;
+ }
+ r = (rc_res_resource *) res_alloc (sizeof *r);
+ r->type = RES_TYPE_TOOLBAR;
+ r->u.toolbar = ri;
+ return r;
+}
+
+
+/* Local functions used to convert resources to binary format. */
+
+static rc_uint_type resid_to_bin (windres_bfd *, rc_uint_type, rc_res_id);
+static rc_uint_type unicode_to_bin (windres_bfd *, rc_uint_type, const unichar *);
+static rc_uint_type res_to_bin_accelerator (windres_bfd *, rc_uint_type, const rc_accelerator *);
+static rc_uint_type res_to_bin_cursor (windres_bfd *, rc_uint_type, const rc_cursor *);
+static rc_uint_type res_to_bin_group_cursor (windres_bfd *, rc_uint_type, const rc_group_cursor *);
+static rc_uint_type res_to_bin_dialog (windres_bfd *, rc_uint_type, const rc_dialog *);
+static rc_uint_type res_to_bin_fontdir (windres_bfd *, rc_uint_type, const rc_fontdir *);
+static rc_uint_type res_to_bin_group_icon (windres_bfd *, rc_uint_type, const rc_group_icon *);
+static rc_uint_type res_to_bin_menu (windres_bfd *, rc_uint_type, const rc_menu *);
+static rc_uint_type res_to_bin_menuitems (windres_bfd *, rc_uint_type, const rc_menuitem *);
+static rc_uint_type res_to_bin_menuexitems (windres_bfd *, rc_uint_type, const rc_menuitem *);
+static rc_uint_type res_to_bin_rcdata (windres_bfd *, rc_uint_type, const rc_rcdata_item *);
+static rc_uint_type res_to_bin_stringtable (windres_bfd *, rc_uint_type, const rc_stringtable *);
+static rc_uint_type string_to_unicode_bin (windres_bfd *, rc_uint_type, const char *);
+static rc_uint_type res_to_bin_toolbar (windres_bfd *, rc_uint_type, rc_toolbar *tb);
+static rc_uint_type res_to_bin_versioninfo (windres_bfd *, rc_uint_type, const rc_versioninfo *);
+static rc_uint_type res_to_bin_generic (windres_bfd *, rc_uint_type, rc_uint_type,
+ const bfd_byte *);
+
+/* Convert a resource to binary. */
+
+rc_uint_type
+res_to_bin (windres_bfd *wrbfd, rc_uint_type off, const rc_res_resource *res)
+{
+ switch (res->type)
+ {
+ case RES_TYPE_BITMAP:
+ case RES_TYPE_FONT:
+ case RES_TYPE_ICON:
+ case RES_TYPE_MESSAGETABLE:
+ return res_to_bin_generic (wrbfd, off, res->u.data.length, res->u.data.data);
+ case RES_TYPE_ACCELERATOR:
+ return res_to_bin_accelerator (wrbfd, off, res->u.acc);
+ case RES_TYPE_CURSOR:
+ return res_to_bin_cursor (wrbfd, off, res->u.cursor);
+ case RES_TYPE_GROUP_CURSOR:
+ return res_to_bin_group_cursor (wrbfd, off, res->u.group_cursor);
+ case RES_TYPE_DIALOG:
+ return res_to_bin_dialog (wrbfd, off, res->u.dialog);
+ case RES_TYPE_FONTDIR:
+ return res_to_bin_fontdir (wrbfd, off, res->u.fontdir);
+ case RES_TYPE_GROUP_ICON:
+ return res_to_bin_group_icon (wrbfd, off, res->u.group_icon);
+ case RES_TYPE_MENU:
+ return res_to_bin_menu (wrbfd, off, res->u.menu);
+ case RES_TYPE_STRINGTABLE:
+ return res_to_bin_stringtable (wrbfd, off, res->u.stringtable);
+ case RES_TYPE_VERSIONINFO:
+ return res_to_bin_versioninfo (wrbfd, off, res->u.versioninfo);
+ case RES_TYPE_TOOLBAR:
+ return res_to_bin_toolbar (wrbfd, off, res->u.toolbar);
+ case RES_TYPE_USERDATA:
+ case RES_TYPE_RCDATA:
+ default:
+ return res_to_bin_rcdata (wrbfd, off, res->u.rcdata);
+ }
+}
+
+/* Convert a resource ID to binary. This always returns exactly one
+ bindata structure. */
+
+static rc_uint_type
+resid_to_bin (windres_bfd *wrbfd, rc_uint_type off, rc_res_id id)
+{
+ if (! id.named)
+ {
+ if (wrbfd)
+ {
+ struct bin_res_id bri;
+
+ windres_put_16 (wrbfd, bri.sig, 0xffff);
+ windres_put_16 (wrbfd, bri.id, id.u.id);
+ set_windres_bfd_content (wrbfd, &bri, off, BIN_RES_ID);
+ }
+ off += BIN_RES_ID;
+ }
+ else
+ {
+ rc_uint_type len = (id.u.n.name ? unichar_len (id.u.n.name) : 0);
+ if (wrbfd)
+ {
+ bfd_byte *d = (bfd_byte *) reswr_alloc ((len + 1) * sizeof (unichar));
+ rc_uint_type i;
+ for (i = 0; i < len; i++)
+ windres_put_16 (wrbfd, d + (i * sizeof (unichar)), id.u.n.name[i]);
+ windres_put_16 (wrbfd, d + (len * sizeof (unichar)), 0);
+ set_windres_bfd_content (wrbfd, d, off, (len + 1) * sizeof (unichar));
+ }
+ off += (rc_uint_type) ((len + 1) * sizeof (unichar));
+ }
+ return off;
+}
+
+/* Convert a null terminated unicode string to binary. This always
+ returns exactly one bindata structure. */
+
+static rc_uint_type
+unicode_to_bin (windres_bfd *wrbfd, rc_uint_type off, const unichar *str)
+{
+ rc_uint_type len = 0;
+
+ if (str != NULL)
+ len = unichar_len (str);
+
+ if (wrbfd)
+ {
+ bfd_byte *d;
+ rc_uint_type i;
+ d = (bfd_byte *) reswr_alloc ( (len + 1) * sizeof (unichar));
+ for (i = 0; i < len; i++)
+ windres_put_16 (wrbfd, d + (i * sizeof (unichar)), str[i]);
+ windres_put_16 (wrbfd, d + (len * sizeof (unichar)), 0);
+ set_windres_bfd_content (wrbfd, d, off, (len + 1) * sizeof (unichar));
+ }
+ off += (rc_uint_type) ((len + 1) * sizeof (unichar));
+
+ return off;
+}
+
+/* Convert an accelerator resource to binary. */
+
+static rc_uint_type
+res_to_bin_accelerator (windres_bfd *wrbfd, rc_uint_type off,
+ const rc_accelerator *accelerators)
+{
+ const rc_accelerator *a;
+
+ for (a = accelerators; a != NULL; a = a->next)
+ {
+ if (wrbfd)
+ {
+ struct bin_accelerator ba;
+
+ windres_put_16 (wrbfd, ba.flags, a->flags | (a->next != NULL ? 0 : ACC_LAST));
+ windres_put_16 (wrbfd, ba.key, a->key);
+ windres_put_16 (wrbfd, ba.id, a->id);
+ windres_put_16 (wrbfd, ba.pad, 0);
+ set_windres_bfd_content (wrbfd, &ba, off, BIN_ACCELERATOR_SIZE);
+ }
+ off += BIN_ACCELERATOR_SIZE;
+ }
+ return off;
+}
+
+/* Convert a cursor resource to binary. */
+
+static rc_uint_type
+res_to_bin_cursor (windres_bfd *wrbfd, rc_uint_type off, const rc_cursor *c)
+{
+ if (wrbfd)
+ {
+ struct bin_cursor bc;
+
+ windres_put_16 (wrbfd, bc.xhotspot, c->xhotspot);
+ windres_put_16 (wrbfd, bc.yhotspot, c->yhotspot);
+ set_windres_bfd_content (wrbfd, &bc, off, BIN_CURSOR_SIZE);
+ if (c->length)
+ set_windres_bfd_content (wrbfd, c->data, off + BIN_CURSOR_SIZE, c->length);
+ }
+ off = (off + BIN_CURSOR_SIZE + (rc_uint_type) c->length);
+ return off;
+}
+
+/* Convert a group cursor resource to binary. */
+
+static rc_uint_type
+res_to_bin_group_cursor (windres_bfd *wrbfd, rc_uint_type off,
+ const rc_group_cursor *group_cursors)
+{
+ int c = 0;
+ const rc_group_cursor *gc;
+ struct bin_group_cursor bgc;
+ struct bin_group_cursor_item bgci;
+ rc_uint_type start = off;
+
+ off += BIN_GROUP_CURSOR_SIZE;
+
+ for (c = 0, gc = group_cursors; gc != NULL; gc = gc->next, c++)
+ {
+ if (wrbfd)
+ {
+ windres_put_16 (wrbfd, bgci.width, gc->width);
+ windres_put_16 (wrbfd, bgci.height, gc->height);
+ windres_put_16 (wrbfd, bgci.planes, gc->planes);
+ windres_put_16 (wrbfd, bgci.bits, gc->bits);
+ windres_put_32 (wrbfd, bgci.bytes, gc->bytes);
+ windres_put_16 (wrbfd, bgci.index, gc->index);
+ set_windres_bfd_content (wrbfd, &bgci, off, BIN_GROUP_CURSOR_ITEM_SIZE);
+ }
+
+ off += BIN_GROUP_CURSOR_ITEM_SIZE;
+ }
+ if (wrbfd)
+ {
+ windres_put_16 (wrbfd, bgc.sig1, 0);
+ windres_put_16 (wrbfd, bgc.sig2, 2);
+ windres_put_16 (wrbfd, bgc.nitems, c);
+ set_windres_bfd_content (wrbfd, &bgc, start, BIN_GROUP_CURSOR_SIZE);
+ }
+ return off;
+}
+
+/* Convert a dialog resource to binary. */
+
+static rc_uint_type
+res_to_bin_dialog (windres_bfd *wrbfd, rc_uint_type off, const rc_dialog *dialog)
+{
+ rc_uint_type off_delta;
+ rc_uint_type start, marker;
+ int dialogex;
+ int c;
+ rc_dialog_control *dc;
+ struct bin_dialogex bdx;
+ struct bin_dialog bd;
+
+ off_delta = off;
+ start = off;
+ dialogex = extended_dialog (dialog);
+
+ if (wrbfd)
+ {
+ if (! dialogex)
+ {
+ windres_put_32 (wrbfd, bd.style, dialog->style);
+ windres_put_32 (wrbfd, bd.exstyle, dialog->exstyle);
+ windres_put_16 (wrbfd, bd.x, dialog->x);
+ windres_put_16 (wrbfd, bd.y, dialog->y);
+ windres_put_16 (wrbfd, bd.width, dialog->width);
+ windres_put_16 (wrbfd, bd.height, dialog->height);
+ }
+ else
+ {
+ windres_put_16 (wrbfd, bdx.sig1, 1);
+ windres_put_16 (wrbfd, bdx.sig2, 0xffff);
+ windres_put_32 (wrbfd, bdx.help, (dialog->ex ? dialog->ex->help : 0));
+ windres_put_32 (wrbfd, bdx.exstyle, dialog->exstyle);
+ windres_put_32 (wrbfd, bdx.style, dialog->style);
+ windres_put_16 (wrbfd, bdx.x, dialog->x);
+ windres_put_16 (wrbfd, bdx.y, dialog->y);
+ windres_put_16 (wrbfd, bdx.width, dialog->width);
+ windres_put_16 (wrbfd, bdx.height, dialog->height);
+ }
+ }
+
+ off += (dialogex != 0 ? BIN_DIALOGEX_SIZE : BIN_DIALOG_SIZE);
+
+ off = resid_to_bin (wrbfd, off, dialog->menu);
+ off = resid_to_bin (wrbfd, off, dialog->class);
+ off = unicode_to_bin (wrbfd, off, dialog->caption);
+
+ if ((dialog->style & DS_SETFONT) != 0)
+ {
+ if (wrbfd)
+ {
+ if (! dialogex)
+ {
+ struct bin_dialogfont bdf;
+ windres_put_16 (wrbfd, bdf.pointsize, dialog->pointsize);
+ set_windres_bfd_content (wrbfd, &bdf, off, BIN_DIALOGFONT_SIZE);
+ }
+ else
+ {
+ struct bin_dialogexfont bdxf;
+ windres_put_16 (wrbfd, bdxf.pointsize, dialog->pointsize);
+ windres_put_16 (wrbfd, bdxf.weight, (dialog->ex == NULL ? 0 : dialog->ex->weight));
+ windres_put_8 (wrbfd, bdxf.italic, (dialog->ex == NULL ? 0 : dialog->ex->italic));
+ windres_put_8 (wrbfd, bdxf.charset, (dialog->ex == NULL ? 1 : dialog->ex->charset));
+ set_windres_bfd_content (wrbfd, &bdxf, off, BIN_DIALOGEXFONT_SIZE);
+ }
+ }
+ off += (dialogex ? BIN_DIALOGEXFONT_SIZE : BIN_DIALOGFONT_SIZE);
+ off = unicode_to_bin (wrbfd, off, dialog->font);
+ }
+ for (c = 0, dc = dialog->controls; dc != NULL; dc = dc->next, c++)
+ {
+ bfd_byte dc_rclen[2];
+
+ off += (4 - ((off - off_delta) & 3)) & 3;
+ if (wrbfd)
+ {
+ if (! dialogex)
+ {
+ struct bin_dialog_control bdc;
+
+ windres_put_32 (wrbfd, bdc.style, dc->style);
+ windres_put_32 (wrbfd, bdc.exstyle, dc->exstyle);
+ windres_put_16 (wrbfd, bdc.x, dc->x);
+ windres_put_16 (wrbfd, bdc.y, dc->y);
+ windres_put_16 (wrbfd, bdc.width, dc->width);
+ windres_put_16 (wrbfd, bdc.height, dc->height);
+ windres_put_16 (wrbfd, bdc.id, dc->id);
+ set_windres_bfd_content (wrbfd, &bdc, off, BIN_DIALOG_CONTROL_SIZE);
+ }
+ else
+ {
+ struct bin_dialogex_control bdc;
+
+ windres_put_32 (wrbfd, bdc.help, dc->help);
+ windres_put_32 (wrbfd, bdc.exstyle, dc->exstyle);
+ windres_put_32 (wrbfd, bdc.style, dc->style);
+ windres_put_16 (wrbfd, bdc.x, dc->x);
+ windres_put_16 (wrbfd, bdc.y, dc->y);
+ windres_put_16 (wrbfd, bdc.width, dc->width);
+ windres_put_16 (wrbfd, bdc.height, dc->height);
+ windres_put_32 (wrbfd, bdc.id, dc->id);
+ set_windres_bfd_content (wrbfd, &bdc, off, BIN_DIALOGEX_CONTROL_SIZE);
+ }
+ }
+ off += (dialogex != 0 ? BIN_DIALOGEX_CONTROL_SIZE : BIN_DIALOG_CONTROL_SIZE);
+
+ off = resid_to_bin (wrbfd, off, dc->class);
+ off = resid_to_bin (wrbfd, off, dc->text);
+
+ marker = off; /* Save two bytes for size of optional data. */
+ off += 2;
+
+ if (dc->data == NULL)
+ {
+ if (wrbfd)
+ windres_put_16 (wrbfd, dc_rclen, 0);
+ }
+ else
+ {
+ rc_uint_type saved_off = off;
+ rc_uint_type old_off;
+ off += (4 - ((off - off_delta) & 3)) & 3;
+
+ old_off = off;
+ off = res_to_bin_rcdata (wrbfd, off, dc->data);
+ if ((off - old_off) == 0)
+ old_off = off = saved_off;
+ if (wrbfd)
+ windres_put_16 (wrbfd, dc_rclen, off - old_off);
+ }
+ if (wrbfd)
+ set_windres_bfd_content (wrbfd, dc_rclen, marker, 2);
+ }
+
+ if (wrbfd)
+ {
+ windres_put_16 (wrbfd, (dialogex != 0 ? bdx.off : bd.off), c);
+ if (! dialogex)
+ set_windres_bfd_content (wrbfd, &bd, start, BIN_DIALOG_SIZE);
+ else
+ set_windres_bfd_content (wrbfd, &bdx, start, BIN_DIALOGEX_SIZE);
+ }
+
+ return off;
+}
+
+/* Convert a fontdir resource to binary. */
+static rc_uint_type
+res_to_bin_fontdir (windres_bfd *wrbfd, rc_uint_type off, const rc_fontdir *fontdirs)
+{
+ rc_uint_type start;
+ int c;
+ const rc_fontdir *fd;
+
+ start = off;
+ off += 2;
+
+ for (c = 0, fd = fontdirs; fd != NULL; fd = fd->next, c++)
+ {
+ if (wrbfd)
+ {
+ bfd_byte d[2];
+ windres_put_16 (wrbfd, d, fd->index);
+ set_windres_bfd_content (wrbfd, d, off, 2);
+ if (fd->length)
+ set_windres_bfd_content (wrbfd, fd->data, off + 2, fd->length);
+ }
+ off += (rc_uint_type) fd->length + 2;
+ }
+
+ if (wrbfd)
+ {
+ bfd_byte d[2];
+ windres_put_16 (wrbfd, d, c);
+ set_windres_bfd_content (wrbfd, d, start, 2);
+ }
+ return off;
+}
+
+/* Convert a group icon resource to binary. */
+
+static rc_uint_type
+res_to_bin_group_icon (windres_bfd *wrbfd, rc_uint_type off, const rc_group_icon *group_icons)
+{
+ rc_uint_type start;
+ struct bin_group_icon bgi;
+ int c;
+ const rc_group_icon *gi;
+
+ start = off;
+ off += BIN_GROUP_ICON_SIZE;
+
+ for (c = 0, gi = group_icons; gi != NULL; gi = gi->next, c++)
+ {
+ struct bin_group_icon_item bgii;
+
+ if (wrbfd)
+ {
+ windres_put_8 (wrbfd, bgii.width, gi->width);
+ windres_put_8 (wrbfd, bgii.height, gi->height);
+ windres_put_8 (wrbfd, bgii.colors, gi->colors);
+ windres_put_8 (wrbfd, bgii.pad, 0);
+ windres_put_16 (wrbfd, bgii.planes, gi->planes);
+ windres_put_16 (wrbfd, bgii.bits, gi->bits);
+ windres_put_32 (wrbfd, bgii.bytes, gi->bytes);
+ windres_put_16 (wrbfd, bgii.index, gi->index);
+ set_windres_bfd_content (wrbfd, &bgii, off, BIN_GROUP_ICON_ITEM_SIZE);
+ }
+ off += BIN_GROUP_ICON_ITEM_SIZE;
+ }
+
+ if (wrbfd)
+ {
+ windres_put_16 (wrbfd, bgi.sig1, 0);
+ windres_put_16 (wrbfd, bgi.sig2, 1);
+ windres_put_16 (wrbfd, bgi.count, c);
+ set_windres_bfd_content (wrbfd, &bgi, start, BIN_GROUP_ICON_SIZE);
+ }
+ return off;
+}
+
+/* Convert a menu resource to binary. */
+
+static rc_uint_type
+res_to_bin_menu (windres_bfd *wrbfd, rc_uint_type off, const rc_menu *menu)
+{
+ int menuex;
+
+ menuex = extended_menu (menu);
+
+ if (wrbfd)
+ {
+ if (! menuex)
+ {
+ struct bin_menu bm;
+ windres_put_16 (wrbfd, bm.sig1, 0);
+ windres_put_16 (wrbfd, bm.sig2, 0);
+ set_windres_bfd_content (wrbfd, &bm, off, BIN_MENU_SIZE);
+ }
+ else
+ {
+ struct bin_menuex bm;
+ windres_put_16 (wrbfd, bm.sig1, 1);
+ windres_put_16 (wrbfd, bm.sig2, 4);
+ windres_put_32 (wrbfd, bm.help, menu->help);
+ set_windres_bfd_content (wrbfd, &bm, off, BIN_MENUEX_SIZE);
+ }
+ }
+ off += (menuex != 0 ? BIN_MENUEX_SIZE : BIN_MENU_SIZE);
+ if (! menuex)
+ {
+ off = res_to_bin_menuitems (wrbfd, off, menu->items);
+ }
+ else
+ {
+ off = res_to_bin_menuexitems (wrbfd, off, menu->items);
+ }
+ return off;
+}
+
+/* Convert menu items to binary. */
+
+static rc_uint_type
+res_to_bin_menuitems (windres_bfd *wrbfd, rc_uint_type off, const rc_menuitem *items)
+{
+ const rc_menuitem *mi;
+
+ for (mi = items; mi != NULL; mi = mi->next)
+ {
+ struct bin_menuitem bmi;
+ int flags;
+
+ flags = mi->type;
+ if (mi->next == NULL)
+ flags |= MENUITEM_ENDMENU;
+ if (mi->popup != NULL)
+ flags |= MENUITEM_POPUP;
+
+ if (wrbfd)
+ {
+ windres_put_16 (wrbfd, bmi.flags, flags);
+ if (mi->popup == NULL)
+ windres_put_16 (wrbfd, bmi.id, mi->id);
+ set_windres_bfd_content (wrbfd, &bmi, off,
+ mi->popup == NULL ? BIN_MENUITEM_SIZE
+ : BIN_MENUITEM_POPUP_SIZE);
+ }
+ off += (mi->popup == NULL ? BIN_MENUITEM_SIZE : BIN_MENUITEM_POPUP_SIZE);
+
+ off = unicode_to_bin (wrbfd, off, mi->text);
+
+ if (mi->popup != NULL)
+ {
+ off = res_to_bin_menuitems (wrbfd, off, mi->popup);
+ }
+ }
+ return off;
+}
+
+/* Convert menuex items to binary. */
+
+static rc_uint_type
+res_to_bin_menuexitems (windres_bfd *wrbfd, rc_uint_type off, const rc_menuitem *items)
+{
+ rc_uint_type off_delta = off;
+ const rc_menuitem *mi;
+
+ for (mi = items; mi != NULL; mi = mi->next)
+ {
+ struct bin_menuitemex bmi;
+ int flags;
+
+ off += (4 - ((off - off_delta) & 3)) & 3;
+
+ flags = 0;
+ if (mi->next == NULL)
+ flags |= 0x80;
+ if (mi->popup != NULL)
+ flags |= 1;
+
+ if (wrbfd)
+ {
+ windres_put_32 (wrbfd, bmi.type, mi->type);
+ windres_put_32 (wrbfd, bmi.state, mi->state);
+ windres_put_32 (wrbfd, bmi.id, mi->id);
+ windres_put_16 (wrbfd, bmi.flags, flags);
+ set_windres_bfd_content (wrbfd, &bmi, off, BIN_MENUITEMEX_SIZE);
+ }
+ off += BIN_MENUITEMEX_SIZE;
+
+ off = unicode_to_bin (wrbfd, off, mi->text);
+
+ if (mi->popup != NULL)
+ {
+ bfd_byte help[4];
+
+ off += (4 - ((off - off_delta) & 3)) & 3;
+
+ if (wrbfd)
+ {
+ windres_put_32 (wrbfd, help, mi->help);
+ set_windres_bfd_content (wrbfd, help, off, 4);
+ }
+ off += 4;
+ off = res_to_bin_menuexitems (wrbfd, off, mi->popup);
+ }
+ }
+ return off;
+}
+
+/* Convert an rcdata resource to binary. This is also used to convert
+ other information which happens to be stored in rc_rcdata_item lists
+ to binary. */
+
+static rc_uint_type
+res_to_bin_rcdata (windres_bfd *wrbfd, rc_uint_type off, const rc_rcdata_item *items)
+{
+ const rc_rcdata_item *ri;
+
+ for (ri = items; ri != NULL; ri = ri->next)
+ {
+ rc_uint_type len;
+ switch (ri->type)
+ {
+ default:
+ abort ();
+ case RCDATA_WORD:
+ len = 2;
+ break;
+ case RCDATA_DWORD:
+ len = 4;
+ break;
+ case RCDATA_STRING:
+ len = ri->u.string.length;
+ break;
+ case RCDATA_WSTRING:
+ len = ri->u.wstring.length * sizeof (unichar);
+ break;
+ case RCDATA_BUFFER:
+ len = ri->u.buffer.length;
+ break;
+ }
+ if (wrbfd)
+ {
+ bfd_byte h[4];
+ bfd_byte *hp = &h[0];
+ switch (ri->type)
+ {
+ case RCDATA_WORD:
+ windres_put_16 (wrbfd, hp, ri->u.word);
+ break;
+ case RCDATA_DWORD:
+ windres_put_32 (wrbfd, hp, ri->u.dword);
+ break;
+ case RCDATA_STRING:
+ hp = (bfd_byte *) ri->u.string.s;
+ break;
+ case RCDATA_WSTRING:
+ {
+ rc_uint_type i;
+
+ hp = (bfd_byte *) reswr_alloc (len);
+ for (i = 0; i < ri->u.wstring.length; i++)
+ windres_put_16 (wrbfd, hp + i * sizeof (unichar), ri->u.wstring.w[i]);
+ }
+ break;
+ case RCDATA_BUFFER:
+ hp = (bfd_byte *) ri->u.buffer.data;
+ break;
+ }
+ set_windres_bfd_content (wrbfd, hp, off, len);
+ }
+ off += len;
+ }
+ return off;
+}
+
+/* Convert a stringtable resource to binary. */
+
+static rc_uint_type
+res_to_bin_stringtable (windres_bfd *wrbfd, rc_uint_type off,
+ const rc_stringtable *st)
+{
+ int i;
+
+ for (i = 0; i < 16; i++)
+ {
+ rc_uint_type slen, length;
+ unichar *s;
+
+ slen = (rc_uint_type) st->strings[i].length;
+ if (slen == 0xffffffff) slen = 0;
+ s = st->strings[i].string;
+
+ length = 2 + slen * 2;
+ if (wrbfd)
+ {
+ bfd_byte *hp;
+ rc_uint_type j;
+
+ hp = (bfd_byte *) reswr_alloc (length);
+ windres_put_16 (wrbfd, hp, slen);
+
+ for (j = 0; j < slen; j++)
+ windres_put_16 (wrbfd, hp + 2 + j * 2, s[j]);
+ set_windres_bfd_content (wrbfd, hp, off, length);
+ }
+ off += length;
+ }
+ return off;
+}
+
+/* Convert an ASCII string to a unicode binary string. This always
+ returns exactly one bindata structure. */
+
+static rc_uint_type
+string_to_unicode_bin (windres_bfd *wrbfd, rc_uint_type off, const char *s)
+{
+ rc_uint_type len;
+
+ len = (rc_uint_type) strlen (s);
+
+ if (wrbfd)
+ {
+ rc_uint_type i;
+ bfd_byte *hp;
+
+ hp = (bfd_byte *) reswr_alloc ((len + 1) * sizeof (unichar));
+
+ for (i = 0; i < len; i++)
+ windres_put_16 (wrbfd, hp + i * 2, s[i]);
+ windres_put_16 (wrbfd, hp + i * 2, 0);
+ set_windres_bfd_content (wrbfd, hp, off, (len + 1) * sizeof (unichar));
+ }
+ off += (rc_uint_type) ((len + 1) * sizeof (unichar));
+ return off;
+}
+
+static rc_uint_type
+res_to_bin_toolbar (windres_bfd *wrbfd, rc_uint_type off, rc_toolbar *tb)
+{
+ if (wrbfd)
+ {
+ struct bin_toolbar bt;
+ windres_put_32 (wrbfd, bt.button_width, tb->button_width);
+ windres_put_32 (wrbfd, bt.button_height, tb->button_height);
+ windres_put_32 (wrbfd, bt.nitems, tb->nitems);
+ set_windres_bfd_content (wrbfd, &bt, off, BIN_TOOLBAR_SIZE);
+ if (tb->nitems > 0)
+ {
+ rc_toolbar_item *it;
+ bfd_byte *ids;
+ rc_uint_type i = 0;
+
+ ids = (bfd_byte *) reswr_alloc (tb->nitems * 4);
+ it=tb->items;
+ while(it != NULL)
+ {
+ windres_put_32 (wrbfd, ids + i, it->id.u.id);
+ i += 4;
+ it = it->next;
+ }
+ set_windres_bfd_content (wrbfd, ids, off + BIN_TOOLBAR_SIZE, i);
+ }
+ }
+ off += BIN_TOOLBAR_SIZE + tb->nitems * 4;
+
+ return off;
+}
+
+/* Convert a versioninfo resource to binary. */
+
+static rc_uint_type
+res_to_bin_versioninfo (windres_bfd *wrbfd, rc_uint_type off,
+ const rc_versioninfo *versioninfo)
+{
+ rc_uint_type off_delta = off;
+ rc_uint_type start;
+ struct bin_versioninfo bvi;
+ rc_ver_info *vi;
+
+ start = off;
+ off += BIN_VERSIONINFO_SIZE;
+ off = string_to_unicode_bin (wrbfd, off, "VS_VERSION_INFO");
+ off += (4 - ((off - off_delta) & 3)) & 3;
+
+ if (versioninfo->fixed != NULL)
+ {
+ if (wrbfd)
+ {
+ struct bin_fixed_versioninfo bfv;
+ const rc_fixed_versioninfo *fi;
+
+ fi = versioninfo->fixed;
+ windres_put_32 (wrbfd, bfv.sig1, 0xfeef04bd);
+ windres_put_32 (wrbfd, bfv.sig2, 0x10000);
+ windres_put_32 (wrbfd, bfv.file_version, fi->file_version_ms);
+ windres_put_32 (wrbfd, bfv.file_version_ls, fi->file_version_ls);
+ windres_put_32 (wrbfd, bfv.product_version_ms, fi->product_version_ms);
+ windres_put_32 (wrbfd, bfv.product_version_ls, fi->product_version_ls);
+ windres_put_32 (wrbfd, bfv.file_flags_mask, fi->file_flags_mask);
+ windres_put_32 (wrbfd, bfv.file_flags, fi->file_flags);
+ windres_put_32 (wrbfd, bfv.file_os, fi->file_os);
+ windres_put_32 (wrbfd, bfv.file_type, fi->file_type);
+ windres_put_32 (wrbfd, bfv.file_subtype, fi->file_subtype);
+ windres_put_32 (wrbfd, bfv.file_date_ms, fi->file_date_ms);
+ windres_put_32 (wrbfd, bfv.file_date_ls, fi->file_date_ls);
+ set_windres_bfd_content (wrbfd, &bfv, off, BIN_FIXED_VERSIONINFO_SIZE);
+ }
+ off += BIN_FIXED_VERSIONINFO_SIZE;
+ }
+
+ for (vi = versioninfo->var; vi != NULL; vi = vi->next)
+ {
+ struct bin_ver_info bv;
+ rc_uint_type bv_off;
+
+ off += (4 - ((off - off_delta) & 3)) & 3;
+
+ bv_off = off;
+
+ off += BIN_VER_INFO_SIZE;
+
+ switch (vi->type)
+ {
+ default:
+ abort ();
+ case VERINFO_STRING:
+ {
+ const rc_ver_stringtable *vst;
+
+ off = string_to_unicode_bin (wrbfd, off, "StringFileInfo");
+
+ if (!vi->u.string.stringtables)
+ off += (4 - ((off - off_delta) & 3)) & 3;
+
+ for (vst = vi->u.string.stringtables; vst != NULL; vst = vst->next)
+ {
+ struct bin_ver_info bvst;
+ rc_uint_type vst_off;
+ const rc_ver_stringinfo *vs;
+
+ off += (4 - ((off - off_delta) & 3)) & 3;
+
+ vst_off = off;
+ off += BIN_VER_INFO_SIZE;
+
+ off = unicode_to_bin (wrbfd, off, vst->language);
+
+ for (vs = vst->strings; vs != NULL; vs = vs->next)
+ {
+ struct bin_ver_info bvs;
+ rc_uint_type vs_off, str_off;
+
+ off += (4 - ((off - off_delta) & 3)) & 3;
+
+ vs_off = off;
+ off += BIN_VER_INFO_SIZE;
+
+ off = unicode_to_bin (wrbfd, off, vs->key);
+
+ off += (4 - ((off - off_delta) & 3)) & 3;
+
+ str_off = off;
+ off = unicode_to_bin (wrbfd, off, vs->value);
+
+ if (wrbfd)
+ {
+ windres_put_16 (wrbfd, bvs.size, off - vs_off);
+ windres_put_16 (wrbfd, bvs.sig1, (off - str_off) / 2);
+ windres_put_16 (wrbfd, bvs.sig2, 1);
+ set_windres_bfd_content (wrbfd, &bvs, vs_off,
+ BIN_VER_INFO_SIZE);
+ }
+ }
+
+ if (wrbfd)
+ {
+ windres_put_16 (wrbfd, bvst.size, off - vst_off);
+ windres_put_16 (wrbfd, bvst.sig1, 0);
+ windres_put_16 (wrbfd, bvst.sig2, 1);
+ set_windres_bfd_content (wrbfd, &bvst, vst_off,
+ BIN_VER_INFO_SIZE);
+ }
+ }
+ break;
+ }
+
+ case VERINFO_VAR:
+ {
+ rc_uint_type vvd_off, vvvd_off;
+ struct bin_ver_info bvvd;
+ const rc_ver_varinfo *vv;
+
+ off = string_to_unicode_bin (wrbfd, off, "VarFileInfo");
+
+ off += (4 - ((off - off_delta) & 3)) & 3;
+
+ vvd_off = off;
+ off += BIN_VER_INFO_SIZE;
+
+ off = unicode_to_bin (wrbfd, off, vi->u.var.key);
+
+ off += (4 - ((off - off_delta) & 3)) & 3;
+
+ vvvd_off = off;
+
+ for (vv = vi->u.var.var; vv != NULL; vv = vv->next)
+ {
+ if (wrbfd)
+ {
+ bfd_byte vvsd[4];
+
+ windres_put_16 (wrbfd, &vvsd[0], vv->language);
+ windres_put_16 (wrbfd, &vvsd[2], vv->charset);
+ set_windres_bfd_content (wrbfd, vvsd, off, 4);
+ }
+ off += 4;
+ }
+ if (wrbfd)
+ {
+ windres_put_16 (wrbfd, bvvd.size, off - vvd_off);
+ windres_put_16 (wrbfd, bvvd.sig1, off - vvvd_off);
+ windres_put_16 (wrbfd, bvvd.sig2, 0);
+ set_windres_bfd_content (wrbfd, &bvvd, vvd_off,
+ BIN_VER_INFO_SIZE);
+ }
+
+ break;
+ }
+ }
+
+ if (wrbfd)
+ {
+ windres_put_16 (wrbfd, bv.size, off - bv_off);
+ windres_put_16 (wrbfd, bv.sig1, 0);
+ windres_put_16 (wrbfd, bv.sig2, 1);
+ set_windres_bfd_content (wrbfd, &bv, bv_off,
+ BIN_VER_INFO_SIZE);
+ }
+ }
+
+ if (wrbfd)
+ {
+ windres_put_16 (wrbfd, bvi.size, off - start);
+ windres_put_16 (wrbfd, bvi.fixed_size,
+ versioninfo->fixed == NULL ? 0
+ : BIN_FIXED_VERSIONINFO_SIZE);
+ windres_put_16 (wrbfd, bvi.sig2, 0);
+ set_windres_bfd_content (wrbfd, &bvi, start, BIN_VER_INFO_SIZE);
+ }
+ return off;
+}
+
+/* Convert a generic resource to binary. */
+
+static rc_uint_type
+res_to_bin_generic (windres_bfd *wrbfd, rc_uint_type off, rc_uint_type length,
+ const bfd_byte *data)
+{
+ if (wrbfd && length != 0)
+ set_windres_bfd_content (wrbfd, data, off, length);
+ return off + (rc_uint_type) length;
+}
diff --git a/binutils-2.24/binutils/rescoff.c b/binutils-2.24/binutils/rescoff.c
new file mode 100644
index 00000000..8799ea2b
--- /dev/null
+++ b/binutils-2.24/binutils/rescoff.c
@@ -0,0 +1,750 @@
+/* rescoff.c -- read and write resources in Windows COFF files.
+ Copyright 1997, 1998, 1999, 2000, 2003, 2005, 2007, 2008
+ Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Cygnus Support.
+ Rewritten by Kai Tietz, Onevision.
+
+ 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 3 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 file contains function that read and write Windows resources
+ in COFF files. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+#include "libiberty.h"
+#include "windres.h"
+
+#include <assert.h>
+
+/* In order to use the address of a resource data entry, we need to
+ get the image base of the file. Right now we extract it from
+ internal BFD information. FIXME. */
+
+#include "coff/internal.h"
+#include "libcoff.h"
+
+/* Information we extract from the file. */
+
+struct coff_file_info
+{
+ /* File name. */
+ const char *filename;
+ /* Data read from the file. */
+ const bfd_byte *data;
+ /* End of data read from file. */
+ const bfd_byte *data_end;
+ /* Address of the resource section minus the image base of the file. */
+ rc_uint_type secaddr;
+};
+
+/* A resource directory table in a COFF file. */
+
+struct __attribute__ ((__packed__)) extern_res_directory
+{
+ /* Characteristics. */
+ bfd_byte characteristics[4];
+ /* Time stamp. */
+ bfd_byte time[4];
+ /* Major version number. */
+ bfd_byte major[2];
+ /* Minor version number. */
+ bfd_byte minor[2];
+ /* Number of named directory entries. */
+ bfd_byte name_count[2];
+ /* Number of directory entries with IDs. */
+ bfd_byte id_count[2];
+};
+
+/* A resource directory entry in a COFF file. */
+
+struct extern_res_entry
+{
+ /* Name or ID. */
+ bfd_byte name[4];
+ /* Address of resource entry or subdirectory. */
+ bfd_byte rva[4];
+};
+
+/* A resource data entry in a COFF file. */
+
+struct extern_res_data
+{
+ /* Address of resource data. This is apparently a file relative
+ address, rather than a section offset. */
+ bfd_byte rva[4];
+ /* Size of resource data. */
+ bfd_byte size[4];
+ /* Code page. */
+ bfd_byte codepage[4];
+ /* Reserved. */
+ bfd_byte reserved[4];
+};
+
+/* Local functions. */
+
+static void overrun (const struct coff_file_info *, const char *);
+static rc_res_directory *read_coff_res_dir (windres_bfd *, const bfd_byte *,
+ const struct coff_file_info *,
+ const rc_res_id *, int);
+static rc_res_resource *read_coff_data_entry (windres_bfd *, const bfd_byte *,
+ const struct coff_file_info *,
+ const rc_res_id *);
+
+/* Read the resources in a COFF file. */
+
+rc_res_directory *
+read_coff_rsrc (const char *filename, const char *target)
+{
+ rc_res_directory *ret;
+ bfd *abfd;
+ windres_bfd wrbfd;
+ char **matching;
+ asection *sec;
+ bfd_size_type size;
+ bfd_byte *data;
+ struct coff_file_info flaginfo;
+
+ if (filename == NULL)
+ fatal (_("filename required for COFF input"));
+
+ abfd = bfd_openr (filename, target);
+ if (abfd == NULL)
+ bfd_fatal (filename);
+
+ if (! bfd_check_format_matches (abfd, bfd_object, &matching))
+ {
+ bfd_nonfatal (bfd_get_filename (abfd));
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ list_matching_formats (matching);
+ xexit (1);
+ }
+
+ sec = bfd_get_section_by_name (abfd, ".rsrc");
+ if (sec == NULL)
+ {
+ fatal (_("%s: no resource section"), filename);
+ }
+
+ set_windres_bfd (&wrbfd, abfd, sec, WR_KIND_BFD);
+ size = bfd_section_size (abfd, sec);
+ data = (bfd_byte *) res_alloc (size);
+
+ get_windres_bfd_content (&wrbfd, data, 0, size);
+
+ flaginfo.filename = filename;
+ flaginfo.data = data;
+ flaginfo.data_end = data + size;
+ flaginfo.secaddr = (bfd_get_section_vma (abfd, sec)
+ - pe_data (abfd)->pe_opthdr.ImageBase);
+
+ /* Now just read in the top level resource directory. Note that we
+ don't free data, since we create resource entries that point into
+ it. If we ever want to free up the resource information we read,
+ this will have to be cleaned up. */
+
+ ret = read_coff_res_dir (&wrbfd, data, &flaginfo, (const rc_res_id *) NULL, 0);
+
+ bfd_close (abfd);
+
+ return ret;
+}
+
+/* Give an error if we are out of bounds. */
+
+static void
+overrun (const struct coff_file_info *flaginfo, const char *msg)
+{
+ fatal (_("%s: %s: address out of bounds"), flaginfo->filename, msg);
+}
+
+/* Read a resource directory. */
+
+static rc_res_directory *
+read_coff_res_dir (windres_bfd *wrbfd, const bfd_byte *data,
+ const struct coff_file_info *flaginfo,
+ const rc_res_id *type, int level)
+{
+ const struct extern_res_directory *erd;
+ rc_res_directory *rd;
+ int name_count, id_count, i;
+ rc_res_entry **pp;
+ const struct extern_res_entry *ere;
+
+ if ((size_t) (flaginfo->data_end - data) < sizeof (struct extern_res_directory))
+ overrun (flaginfo, _("directory"));
+
+ erd = (const struct extern_res_directory *) data;
+
+ rd = (rc_res_directory *) res_alloc (sizeof (rc_res_directory));
+ rd->characteristics = windres_get_32 (wrbfd, erd->characteristics, 4);
+ rd->time = windres_get_32 (wrbfd, erd->time, 4);
+ rd->major = windres_get_16 (wrbfd, erd->major, 2);
+ rd->minor = windres_get_16 (wrbfd, erd->minor, 2);
+ rd->entries = NULL;
+
+ name_count = windres_get_16 (wrbfd, erd->name_count, 2);
+ id_count = windres_get_16 (wrbfd, erd->id_count, 2);
+
+ pp = &rd->entries;
+
+ /* The resource directory entries immediately follow the directory
+ table. */
+ ere = (const struct extern_res_entry *) (erd + 1);
+
+ for (i = 0; i < name_count; i++, ere++)
+ {
+ rc_uint_type name, rva;
+ rc_res_entry *re;
+ const bfd_byte *ers;
+ int length, j;
+
+ if ((const bfd_byte *) ere >= flaginfo->data_end)
+ overrun (flaginfo, _("named directory entry"));
+
+ name = windres_get_32 (wrbfd, ere->name, 4);
+ rva = windres_get_32 (wrbfd, ere->rva, 4);
+
+ /* For some reason the high bit in NAME is set. */
+ name &=~ 0x80000000;
+
+ if (name > (rc_uint_type) (flaginfo->data_end - flaginfo->data))
+ overrun (flaginfo, _("directory entry name"));
+
+ ers = flaginfo->data + name;
+
+ re = (rc_res_entry *) res_alloc (sizeof *re);
+ re->next = NULL;
+ re->id.named = 1;
+ length = windres_get_16 (wrbfd, ers, 2);
+ re->id.u.n.length = length;
+ re->id.u.n.name = (unichar *) res_alloc (length * sizeof (unichar));
+ for (j = 0; j < length; j++)
+ re->id.u.n.name[j] = windres_get_16 (wrbfd, ers + j * 2 + 2, 2);
+
+ if (level == 0)
+ type = &re->id;
+
+ if ((rva & 0x80000000) != 0)
+ {
+ rva &=~ 0x80000000;
+ if (rva >= (rc_uint_type) (flaginfo->data_end - flaginfo->data))
+ overrun (flaginfo, _("named subdirectory"));
+ re->subdir = 1;
+ re->u.dir = read_coff_res_dir (wrbfd, flaginfo->data + rva, flaginfo, type,
+ level + 1);
+ }
+ else
+ {
+ if (rva >= (rc_uint_type) (flaginfo->data_end - flaginfo->data))
+ overrun (flaginfo, _("named resource"));
+ re->subdir = 0;
+ re->u.res = read_coff_data_entry (wrbfd, flaginfo->data + rva, flaginfo, type);
+ }
+
+ *pp = re;
+ pp = &re->next;
+ }
+
+ for (i = 0; i < id_count; i++, ere++)
+ {
+ unsigned long name, rva;
+ rc_res_entry *re;
+
+ if ((const bfd_byte *) ere >= flaginfo->data_end)
+ overrun (flaginfo, _("ID directory entry"));
+
+ name = windres_get_32 (wrbfd, ere->name, 4);
+ rva = windres_get_32 (wrbfd, ere->rva, 4);
+
+ re = (rc_res_entry *) res_alloc (sizeof *re);
+ re->next = NULL;
+ re->id.named = 0;
+ re->id.u.id = name;
+
+ if (level == 0)
+ type = &re->id;
+
+ if ((rva & 0x80000000) != 0)
+ {
+ rva &=~ 0x80000000;
+ if (rva >= (rc_uint_type) (flaginfo->data_end - flaginfo->data))
+ overrun (flaginfo, _("ID subdirectory"));
+ re->subdir = 1;
+ re->u.dir = read_coff_res_dir (wrbfd, flaginfo->data + rva, flaginfo, type,
+ level + 1);
+ }
+ else
+ {
+ if (rva >= (rc_uint_type) (flaginfo->data_end - flaginfo->data))
+ overrun (flaginfo, _("ID resource"));
+ re->subdir = 0;
+ re->u.res = read_coff_data_entry (wrbfd, flaginfo->data + rva, flaginfo, type);
+ }
+
+ *pp = re;
+ pp = &re->next;
+ }
+
+ return rd;
+}
+
+/* Read a resource data entry. */
+
+static rc_res_resource *
+read_coff_data_entry (windres_bfd *wrbfd, const bfd_byte *data,
+ const struct coff_file_info *flaginfo,
+ const rc_res_id *type)
+{
+ const struct extern_res_data *erd;
+ rc_res_resource *r;
+ rc_uint_type size, rva;
+ const bfd_byte *resdata;
+
+ if (type == NULL)
+ fatal (_("resource type unknown"));
+
+ if ((size_t) (flaginfo->data_end - data) < sizeof (struct extern_res_data))
+ overrun (flaginfo, _("data entry"));
+
+ erd = (const struct extern_res_data *) data;
+
+ size = windres_get_32 (wrbfd, erd->size, 4);
+ rva = windres_get_32 (wrbfd, erd->rva, 4);
+ if (rva < flaginfo->secaddr
+ || rva - flaginfo->secaddr >= (rc_uint_type) (flaginfo->data_end - flaginfo->data))
+ overrun (flaginfo, _("resource data"));
+
+ resdata = flaginfo->data + (rva - flaginfo->secaddr);
+
+ if (size > (rc_uint_type) (flaginfo->data_end - resdata))
+ overrun (flaginfo, _("resource data size"));
+
+ r = bin_to_res (wrbfd, *type, resdata, size);
+
+ memset (&r->res_info, 0, sizeof (rc_res_res_info));
+ r->coff_info.codepage = windres_get_32 (wrbfd, erd->codepage, 4);
+ r->coff_info.reserved = windres_get_32 (wrbfd, erd->reserved, 4);
+
+ return r;
+}
+
+/* This structure is used to build a list of bindata structures. */
+
+struct bindata_build
+{
+ /* The data. */
+ bindata *d;
+ /* The last structure we have added to the list. */
+ bindata *last;
+ /* The size of the list as a whole. */
+ unsigned long length;
+};
+
+struct coff_res_data_build
+{
+ /* The data. */
+ coff_res_data *d;
+ /* The last structure we have added to the list. */
+ coff_res_data *last;
+ /* The size of the list as a whole. */
+ unsigned long length;
+};
+
+/* This structure keeps track of information as we build the directory
+ tree. */
+
+struct coff_write_info
+{
+ /* These fields are based on the BFD. */
+ /* The BFD itself. */
+ windres_bfd *wrbfd;
+ /* Pointer to section symbol used to build RVA relocs. */
+ asymbol **sympp;
+
+ /* These fields are computed initially, and then not changed. */
+ /* Length of directory tables and entries. */
+ unsigned long dirsize;
+ /* Length of directory entry strings. */
+ unsigned long dirstrsize;
+ /* Length of resource data entries. */
+ unsigned long dataentsize;
+
+ /* These fields are updated as we add data. */
+ /* Directory tables and entries. */
+ struct bindata_build dirs;
+ /* Directory entry strings. */
+ struct bindata_build dirstrs;
+ /* Resource data entries. */
+ struct bindata_build dataents;
+ /* Actual resource data. */
+ struct coff_res_data_build resources;
+ /* Relocations. */
+ arelent **relocs;
+ /* Number of relocations. */
+ unsigned int reloc_count;
+};
+
+static void coff_bin_sizes (const rc_res_directory *, struct coff_write_info *);
+static bfd_byte *coff_alloc (struct bindata_build *, rc_uint_type);
+static void coff_to_bin
+ (const rc_res_directory *, struct coff_write_info *);
+static void coff_res_to_bin
+ (const rc_res_resource *, struct coff_write_info *);
+
+/* Write resources to a COFF file. RESOURCES should already be
+ sorted.
+
+ Right now we always create a new file. Someday we should also
+ offer the ability to merge resources into an existing file. This
+ would require doing the basic work of objcopy, just modifying or
+ adding the .rsrc section. */
+
+void
+write_coff_file (const char *filename, const char *target,
+ const rc_res_directory *resources)
+{
+ bfd *abfd;
+ asection *sec;
+ struct coff_write_info cwi;
+ windres_bfd wrbfd;
+ bindata *d;
+ coff_res_data *rd;
+ unsigned long length, offset;
+
+ if (filename == NULL)
+ fatal (_("filename required for COFF output"));
+
+ abfd = bfd_openw (filename, target);
+ if (abfd == NULL)
+ bfd_fatal (filename);
+
+ if (! bfd_set_format (abfd, bfd_object))
+ bfd_fatal ("bfd_set_format");
+
+#if defined DLLTOOL_SH
+ if (! bfd_set_arch_mach (abfd, bfd_arch_sh, 0))
+ bfd_fatal ("bfd_set_arch_mach(sh)");
+#elif defined DLLTOOL_MIPS
+ if (! bfd_set_arch_mach (abfd, bfd_arch_mips, 0))
+ bfd_fatal ("bfd_set_arch_mach(mips)");
+#elif defined DLLTOOL_ARM
+ if (! bfd_set_arch_mach (abfd, bfd_arch_arm, 0))
+ bfd_fatal ("bfd_set_arch_mach(arm)");
+#else
+ /* FIXME: This is obviously i386 specific. */
+ if (! bfd_set_arch_mach (abfd, bfd_arch_i386, 0))
+ bfd_fatal ("bfd_set_arch_mach(i386)");
+#endif
+
+ if (! bfd_set_file_flags (abfd, HAS_SYMS | HAS_RELOC))
+ bfd_fatal ("bfd_set_file_flags");
+
+ sec = bfd_make_section_with_flags (abfd, ".rsrc",
+ (SEC_HAS_CONTENTS | SEC_ALLOC
+ | SEC_LOAD | SEC_DATA));
+ if (sec == NULL)
+ bfd_fatal ("bfd_make_section");
+
+ if (! bfd_set_symtab (abfd, sec->symbol_ptr_ptr, 1))
+ bfd_fatal ("bfd_set_symtab");
+
+ /* Requiring this is probably a bug in BFD. */
+ sec->output_section = sec;
+
+ /* The order of data in the .rsrc section is
+ resource directory tables and entries
+ resource directory strings
+ resource data entries
+ actual resource data
+
+ We build these different types of data in different lists. */
+
+ set_windres_bfd (&wrbfd, abfd, sec, WR_KIND_BFD);
+
+ cwi.wrbfd = &wrbfd;
+ cwi.sympp = sec->symbol_ptr_ptr;
+ cwi.dirsize = 0;
+ cwi.dirstrsize = 0;
+ cwi.dataentsize = 0;
+ cwi.dirs.d = NULL;
+ cwi.dirs.last = NULL;
+ cwi.dirs.length = 0;
+ cwi.dirstrs.d = NULL;
+ cwi.dirstrs.last = NULL;
+ cwi.dirstrs.length = 0;
+ cwi.dataents.d = NULL;
+ cwi.dataents.last = NULL;
+ cwi.dataents.length = 0;
+ cwi.resources.d = NULL;
+ cwi.resources.last = NULL;
+ cwi.resources.length = 0;
+ cwi.relocs = NULL;
+ cwi.reloc_count = 0;
+
+ /* Work out the sizes of the resource directory entries, so that we
+ know the various offsets we will need. */
+ coff_bin_sizes (resources, &cwi);
+
+ /* Force the directory strings to be 32 bit aligned. Every other
+ structure is 32 bit aligned anyhow. */
+ cwi.dirstrsize = (cwi.dirstrsize + 3) &~ 3;
+
+ /* Actually convert the resources to binary. */
+ coff_to_bin (resources, &cwi);
+
+ /* Add another 2 bytes to the directory strings if needed for
+ alignment. */
+ if ((cwi.dirstrs.length & 3) != 0)
+ {
+ bfd_byte *ex;
+
+ ex = coff_alloc (&cwi.dirstrs, 2);
+ ex[0] = 0;
+ ex[1] = 0;
+ }
+
+ /* Make sure that the data we built came out to the same size as we
+ calculated initially. */
+ assert (cwi.dirs.length == cwi.dirsize);
+ assert (cwi.dirstrs.length == cwi.dirstrsize);
+ assert (cwi.dataents.length == cwi.dataentsize);
+
+ length = (cwi.dirsize
+ + cwi.dirstrsize
+ + cwi.dataentsize
+ + cwi.resources.length);
+
+ if (! bfd_set_section_size (abfd, sec, length))
+ bfd_fatal ("bfd_set_section_size");
+
+ bfd_set_reloc (abfd, sec, cwi.relocs, cwi.reloc_count);
+
+ offset = 0;
+ for (d = cwi.dirs.d; d != NULL; d = d->next)
+ {
+ if (! bfd_set_section_contents (abfd, sec, d->data, offset, d->length))
+ bfd_fatal ("bfd_set_section_contents");
+ offset += d->length;
+ }
+ for (d = cwi.dirstrs.d; d != NULL; d = d->next)
+ {
+ set_windres_bfd_content (&wrbfd, d->data, offset, d->length);
+ offset += d->length;
+ }
+ for (d = cwi.dataents.d; d != NULL; d = d->next)
+ {
+ set_windres_bfd_content (&wrbfd, d->data, offset, d->length);
+ offset += d->length;
+ }
+ for (rd = cwi.resources.d; rd != NULL; rd = rd->next)
+ {
+ res_to_bin (cwi.wrbfd, (rc_uint_type) offset, rd->res);
+ offset += rd->length;
+ }
+
+ assert (offset == length);
+
+ if (! bfd_close (abfd))
+ bfd_fatal ("bfd_close");
+
+ /* We allocated the relocs array using malloc. */
+ free (cwi.relocs);
+}
+
+/* Work out the sizes of the various fixed size resource directory
+ entries. This updates fields in CWI. */
+
+static void
+coff_bin_sizes (const rc_res_directory *resdir,
+ struct coff_write_info *cwi)
+{
+ const rc_res_entry *re;
+
+ cwi->dirsize += sizeof (struct extern_res_directory);
+
+ for (re = resdir->entries; re != NULL; re = re->next)
+ {
+ cwi->dirsize += sizeof (struct extern_res_entry);
+
+ if (re->id.named)
+ cwi->dirstrsize += re->id.u.n.length * 2 + 2;
+
+ if (re->subdir)
+ coff_bin_sizes (re->u.dir, cwi);
+ else
+ cwi->dataentsize += sizeof (struct extern_res_data);
+ }
+}
+
+/* Allocate data for a particular list. */
+
+static bfd_byte *
+coff_alloc (struct bindata_build *bb, rc_uint_type size)
+{
+ bindata *d;
+
+ d = (bindata *) reswr_alloc (sizeof (bindata));
+
+ d->next = NULL;
+ d->data = (bfd_byte *) reswr_alloc (size);
+ d->length = size;
+
+ if (bb->d == NULL)
+ bb->d = d;
+ else
+ bb->last->next = d;
+ bb->last = d;
+ bb->length += size;
+
+ return d->data;
+}
+
+/* Convert the resource directory RESDIR to binary. */
+
+static void
+coff_to_bin (const rc_res_directory *resdir, struct coff_write_info *cwi)
+{
+ struct extern_res_directory *erd;
+ int ci, cn;
+ const rc_res_entry *e;
+ struct extern_res_entry *ere;
+
+ /* Write out the directory table. */
+
+ erd = ((struct extern_res_directory *)
+ coff_alloc (&cwi->dirs, sizeof (*erd)));
+
+ windres_put_32 (cwi->wrbfd, erd->characteristics, resdir->characteristics);
+ windres_put_32 (cwi->wrbfd, erd->time, resdir->time);
+ windres_put_16 (cwi->wrbfd, erd->major, resdir->major);
+ windres_put_16 (cwi->wrbfd, erd->minor, resdir->minor);
+
+ ci = 0;
+ cn = 0;
+ for (e = resdir->entries; e != NULL; e = e->next)
+ {
+ if (e->id.named)
+ ++cn;
+ else
+ ++ci;
+ }
+
+ windres_put_16 (cwi->wrbfd, erd->name_count, cn);
+ windres_put_16 (cwi->wrbfd, erd->id_count, ci);
+
+ /* Write out the data entries. Note that we allocate space for all
+ the entries before writing them out. That permits a recursive
+ call to work correctly when writing out subdirectories. */
+
+ ere = ((struct extern_res_entry *)
+ coff_alloc (&cwi->dirs, (ci + cn) * sizeof (*ere)));
+ for (e = resdir->entries; e != NULL; e = e->next, ere++)
+ {
+ if (! e->id.named)
+ windres_put_32 (cwi->wrbfd, ere->name, e->id.u.id);
+ else
+ {
+ bfd_byte *str;
+ rc_uint_type i;
+
+ /* For some reason existing files seem to have the high bit
+ set on the address of the name, although that is not
+ documented. */
+ windres_put_32 (cwi->wrbfd, ere->name,
+ 0x80000000 | (cwi->dirsize + cwi->dirstrs.length));
+
+ str = coff_alloc (&cwi->dirstrs, e->id.u.n.length * 2 + 2);
+ windres_put_16 (cwi->wrbfd, str, e->id.u.n.length);
+ for (i = 0; i < e->id.u.n.length; i++)
+ windres_put_16 (cwi->wrbfd, str + (i + 1) * sizeof (unichar), e->id.u.n.name[i]);
+ }
+
+ if (e->subdir)
+ {
+ windres_put_32 (cwi->wrbfd, ere->rva, 0x80000000 | cwi->dirs.length);
+ coff_to_bin (e->u.dir, cwi);
+ }
+ else
+ {
+ windres_put_32 (cwi->wrbfd, ere->rva,
+ cwi->dirsize + cwi->dirstrsize + cwi->dataents.length);
+
+ coff_res_to_bin (e->u.res, cwi);
+ }
+ }
+}
+
+/* Convert the resource RES to binary. */
+
+static void
+coff_res_to_bin (const rc_res_resource *res, struct coff_write_info *cwi)
+{
+ arelent *r;
+ struct extern_res_data *erd;
+ coff_res_data *d;
+
+ /* For some reason, although every other address is a section
+ offset, the address of the resource data itself is an RVA. That
+ means that we need to generate a relocation for it. We allocate
+ the relocs array using malloc so that we can use realloc. FIXME:
+ This relocation handling is correct for the i386, but probably
+ not for any other target. */
+
+ r = (arelent *) reswr_alloc (sizeof (arelent));
+ r->sym_ptr_ptr = cwi->sympp;
+ r->address = cwi->dirsize + cwi->dirstrsize + cwi->dataents.length;
+ r->addend = 0;
+ r->howto = bfd_reloc_type_lookup (WR_BFD (cwi->wrbfd), BFD_RELOC_RVA);
+ if (r->howto == NULL)
+ bfd_fatal (_("can't get BFD_RELOC_RVA relocation type"));
+
+ cwi->relocs = xrealloc (cwi->relocs,
+ (cwi->reloc_count + 2) * sizeof (arelent *));
+ cwi->relocs[cwi->reloc_count] = r;
+ cwi->relocs[cwi->reloc_count + 1] = NULL;
+ ++cwi->reloc_count;
+
+ erd = (struct extern_res_data *) coff_alloc (&cwi->dataents, sizeof (*erd));
+
+ windres_put_32 (cwi->wrbfd, erd->rva,
+ (cwi->dirsize
+ + cwi->dirstrsize
+ + cwi->dataentsize
+ + cwi->resources.length));
+ windres_put_32 (cwi->wrbfd, erd->codepage, res->coff_info.codepage);
+ windres_put_32 (cwi->wrbfd, erd->reserved, res->coff_info.reserved);
+
+ d = (coff_res_data *) reswr_alloc (sizeof (coff_res_data));
+ d->length = res_to_bin (NULL, (rc_uint_type) 0, res);
+ d->res = res;
+ d->next = NULL;
+
+ if (cwi->resources.d == NULL)
+ cwi->resources.d = d;
+ else
+ cwi->resources.last->next = d;
+
+ cwi->resources.last = d;
+ cwi->resources.length += (d->length + 3) & ~3;
+
+ windres_put_32 (cwi->wrbfd, erd->size, d->length);
+
+ /* Force the next resource to have 32 bit alignment. */
+ d->length = (d->length + 3) & ~3;
+}
diff --git a/binutils-2.24/binutils/resrc.c b/binutils-2.24/binutils/resrc.c
new file mode 100644
index 00000000..bfc3bd4a
--- /dev/null
+++ b/binutils-2.24/binutils/resrc.c
@@ -0,0 +1,3374 @@
+/* resrc.c -- read and write Windows rc files.
+ Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2011
+ Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Cygnus Support.
+ Rewritten by Kai Tietz, Onevision.
+
+ 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 3 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 file contains functions that read and write Windows rc files.
+ These are text files that represent resources. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+#include "libiberty.h"
+#include "safe-ctype.h"
+#include "windres.h"
+
+#include <assert.h>
+
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#else /* ! HAVE_SYS_WAIT_H */
+#if ! defined (_WIN32) || defined (__CYGWIN__)
+#ifndef WIFEXITED
+#define WIFEXITED(w) (((w)&0377) == 0)
+#endif
+#ifndef WIFSIGNALED
+#define WIFSIGNALED(w) (((w)&0377) != 0177 && ((w)&~0377) == 0)
+#endif
+#ifndef WTERMSIG
+#define WTERMSIG(w) ((w) & 0177)
+#endif
+#ifndef WEXITSTATUS
+#define WEXITSTATUS(w) (((w) >> 8) & 0377)
+#endif
+#else /* defined (_WIN32) && ! defined (__CYGWIN__) */
+#ifndef WIFEXITED
+#define WIFEXITED(w) (((w) & 0xff) == 0)
+#endif
+#ifndef WIFSIGNALED
+#define WIFSIGNALED(w) (((w) & 0xff) != 0 && ((w) & 0xff) != 0x7f)
+#endif
+#ifndef WTERMSIG
+#define WTERMSIG(w) ((w) & 0x7f)
+#endif
+#ifndef WEXITSTATUS
+#define WEXITSTATUS(w) (((w) & 0xff00) >> 8)
+#endif
+#endif /* defined (_WIN32) && ! defined (__CYGWIN__) */
+#endif /* ! HAVE_SYS_WAIT_H */
+
+#ifndef STDOUT_FILENO
+#define STDOUT_FILENO 1
+#endif
+
+#if defined (_WIN32) && ! defined (__CYGWIN__)
+#define popen _popen
+#define pclose _pclose
+#endif
+
+/* The default preprocessor. */
+
+#define DEFAULT_PREPROCESSOR "gcc -E -xc -DRC_INVOKED"
+
+/* We read the directory entries in a cursor or icon file into
+ instances of this structure. */
+
+struct icondir
+{
+ /* Width of image. */
+ bfd_byte width;
+ /* Height of image. */
+ bfd_byte height;
+ /* Number of colors in image. */
+ bfd_byte colorcount;
+ union
+ {
+ struct
+ {
+ /* Color planes. */
+ unsigned short planes;
+ /* Bits per pixel. */
+ unsigned short bits;
+ } icon;
+ struct
+ {
+ /* X coordinate of hotspot. */
+ unsigned short xhotspot;
+ /* Y coordinate of hotspot. */
+ unsigned short yhotspot;
+ } cursor;
+ } u;
+ /* Bytes in image. */
+ unsigned long bytes;
+ /* File offset of image. */
+ unsigned long offset;
+};
+
+/* The name of the rc file we are reading. */
+
+char *rc_filename;
+
+/* The line number in the rc file. */
+
+int rc_lineno;
+
+/* The pipe we are reading from, so that we can close it if we exit. */
+
+FILE *cpp_pipe;
+
+/* The temporary file used if we're not using popen, so we can delete it
+ if we exit. */
+
+static char *cpp_temp_file;
+
+/* Input stream is either a file or a pipe. */
+
+static enum {ISTREAM_PIPE, ISTREAM_FILE} istream_type;
+
+/* As we read the rc file, we attach information to this structure. */
+
+static rc_res_directory *resources;
+
+/* The number of cursor resources we have written out. */
+
+static int cursors;
+
+/* The number of font resources we have written out. */
+
+static int fonts;
+
+/* Font directory information. */
+
+rc_fontdir *fontdirs;
+
+/* Resource info to use for fontdirs. */
+
+rc_res_res_info fontdirs_resinfo;
+
+/* The number of icon resources we have written out. */
+
+static int icons;
+
+/* The windres target bfd . */
+
+static windres_bfd wrtarget =
+{
+ (bfd *) NULL, (asection *) NULL, WR_KIND_TARGET
+};
+
+/* Local functions for rcdata based resource definitions. */
+
+static void define_font_rcdata (rc_res_id, const rc_res_res_info *,
+ rc_rcdata_item *);
+static void define_icon_rcdata (rc_res_id, const rc_res_res_info *,
+ rc_rcdata_item *);
+static void define_bitmap_rcdata (rc_res_id, const rc_res_res_info *,
+ rc_rcdata_item *);
+static void define_cursor_rcdata (rc_res_id, const rc_res_res_info *,
+ rc_rcdata_item *);
+static void define_fontdir_rcdata (rc_res_id, const rc_res_res_info *,
+ rc_rcdata_item *);
+static void define_messagetable_rcdata (rc_res_id, const rc_res_res_info *,
+ rc_rcdata_item *);
+static rc_uint_type rcdata_copy (const rc_rcdata_item *, bfd_byte *);
+static bfd_byte *rcdata_render_as_buffer (const rc_rcdata_item *, rc_uint_type *);
+
+static int run_cmd (char *, const char *);
+static FILE *open_input_stream (char *);
+static FILE *look_for_default
+ (char *, const char *, int, const char *, const char *);
+static void close_input_stream (void);
+static void unexpected_eof (const char *);
+static int get_word (FILE *, const char *);
+static unsigned long get_long (FILE *, const char *);
+static void get_data (FILE *, bfd_byte *, rc_uint_type, const char *);
+static void define_fontdirs (void);
+
+/* Run `cmd' and redirect the output to `redir'. */
+
+static int
+run_cmd (char *cmd, const char *redir)
+{
+ char *s;
+ int pid, wait_status, retcode;
+ int i;
+ const char **argv;
+ char *errmsg_fmt, *errmsg_arg;
+ char *temp_base = choose_temp_base ();
+ int in_quote;
+ char sep;
+ int redir_handle = -1;
+ int stdout_save = -1;
+
+ /* Count the args. */
+ i = 0;
+
+ for (s = cmd; *s; s++)
+ if (*s == ' ')
+ i++;
+
+ i++;
+ argv = alloca (sizeof (char *) * (i + 3));
+ i = 0;
+ s = cmd;
+
+ while (1)
+ {
+ while (*s == ' ' && *s != 0)
+ s++;
+
+ if (*s == 0)
+ break;
+
+ in_quote = (*s == '\'' || *s == '"');
+ sep = (in_quote) ? *s++ : ' ';
+ argv[i++] = s;
+
+ while (*s != sep && *s != 0)
+ s++;
+
+ if (*s == 0)
+ break;
+
+ *s++ = 0;
+
+ if (in_quote)
+ s++;
+ }
+ argv[i++] = NULL;
+
+ /* Setup the redirection. We can't use the usual fork/exec and redirect
+ since we may be running on non-POSIX Windows host. */
+
+ fflush (stdout);
+ fflush (stderr);
+
+ /* Open temporary output file. */
+ redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0666);
+ if (redir_handle == -1)
+ fatal (_("can't open temporary file `%s': %s"), redir,
+ strerror (errno));
+
+ /* Duplicate the stdout file handle so it can be restored later. */
+ stdout_save = dup (STDOUT_FILENO);
+ if (stdout_save == -1)
+ fatal (_("can't redirect stdout: `%s': %s"), redir, strerror (errno));
+
+ /* Redirect stdout to our output file. */
+ dup2 (redir_handle, STDOUT_FILENO);
+
+ pid = pexecute (argv[0], (char * const *) argv, program_name, temp_base,
+ &errmsg_fmt, &errmsg_arg, PEXECUTE_ONE | PEXECUTE_SEARCH);
+
+ /* Restore stdout to its previous setting. */
+ dup2 (stdout_save, STDOUT_FILENO);
+
+ /* Close response file. */
+ close (redir_handle);
+
+ if (pid == -1)
+ {
+ fatal ("%s %s: %s", errmsg_fmt, errmsg_arg, strerror (errno));
+ return 1;
+ }
+
+ retcode = 0;
+ pid = pwait (pid, &wait_status, 0);
+
+ if (pid == -1)
+ {
+ fatal (_("wait: %s"), strerror (errno));
+ retcode = 1;
+ }
+ else if (WIFSIGNALED (wait_status))
+ {
+ fatal (_("subprocess got fatal signal %d"), WTERMSIG (wait_status));
+ retcode = 1;
+ }
+ else if (WIFEXITED (wait_status))
+ {
+ if (WEXITSTATUS (wait_status) != 0)
+ {
+ fatal (_("%s exited with status %d"), cmd,
+ WEXITSTATUS (wait_status));
+ retcode = 1;
+ }
+ }
+ else
+ retcode = 1;
+
+ return retcode;
+}
+
+static FILE *
+open_input_stream (char *cmd)
+{
+ if (istream_type == ISTREAM_FILE)
+ {
+ char *fileprefix;
+
+ fileprefix = choose_temp_base ();
+ cpp_temp_file = (char *) xmalloc (strlen (fileprefix) + 5);
+ sprintf (cpp_temp_file, "%s.irc", fileprefix);
+ free (fileprefix);
+
+ if (run_cmd (cmd, cpp_temp_file))
+ fatal (_("can't execute `%s': %s"), cmd, strerror (errno));
+
+ cpp_pipe = fopen (cpp_temp_file, FOPEN_RT);
+ if (cpp_pipe == NULL)
+ fatal (_("can't open temporary file `%s': %s"),
+ cpp_temp_file, strerror (errno));
+
+ if (verbose)
+ fprintf (stderr,
+ _("Using temporary file `%s' to read preprocessor output\n"),
+ cpp_temp_file);
+ }
+ else
+ {
+ cpp_pipe = popen (cmd, FOPEN_RT);
+ if (cpp_pipe == NULL)
+ fatal (_("can't popen `%s': %s"), cmd, strerror (errno));
+ if (verbose)
+ fprintf (stderr, _("Using popen to read preprocessor output\n"));
+ }
+
+ xatexit (close_input_stream);
+ return cpp_pipe;
+}
+
+/* Determine if FILENAME contains special characters that
+ can cause problems unless the entire filename is quoted. */
+
+static int
+filename_need_quotes (const char *filename)
+{
+ if (filename == NULL || (filename[0] == '-' && filename[1] == 0))
+ return 0;
+
+ while (*filename != 0)
+ {
+ switch (*filename)
+ {
+ case '&':
+ case ' ':
+ case '<':
+ case '>':
+ case '|':
+ case '%':
+ return 1;
+ }
+ ++filename;
+ }
+ return 0;
+}
+
+/* Look for the preprocessor program. */
+
+static FILE *
+look_for_default (char *cmd, const char *prefix, int end_prefix,
+ const char *preprocargs, const char *filename)
+{
+ char *space;
+ int found;
+ struct stat s;
+ const char *fnquotes = (filename_need_quotes (filename) ? "\"" : "");
+
+ strcpy (cmd, prefix);
+
+ sprintf (cmd + end_prefix, "%s", DEFAULT_PREPROCESSOR);
+ space = strchr (cmd + end_prefix, ' ');
+ if (space)
+ *space = 0;
+
+ if (
+#if defined (__DJGPP__) || defined (__CYGWIN__) || defined (_WIN32)
+ strchr (cmd, '\\') ||
+#endif
+ strchr (cmd, '/'))
+ {
+ found = (stat (cmd, &s) == 0
+#ifdef HAVE_EXECUTABLE_SUFFIX
+ || stat (strcat (cmd, EXECUTABLE_SUFFIX), &s) == 0
+#endif
+ );
+
+ if (! found)
+ {
+ if (verbose)
+ fprintf (stderr, _("Tried `%s'\n"), cmd);
+ return NULL;
+ }
+ }
+
+ strcpy (cmd, prefix);
+
+ sprintf (cmd + end_prefix, "%s %s %s%s%s",
+ DEFAULT_PREPROCESSOR, preprocargs, fnquotes, filename, fnquotes);
+
+ if (verbose)
+ fprintf (stderr, _("Using `%s'\n"), cmd);
+
+ cpp_pipe = open_input_stream (cmd);
+ return cpp_pipe;
+}
+
+/* Read an rc file. */
+
+rc_res_directory *
+read_rc_file (const char *filename, const char *preprocessor,
+ const char *preprocargs, int language, int use_temp_file)
+{
+ char *cmd;
+ const char *fnquotes = (filename_need_quotes (filename) ? "\"" : "");
+
+ if (filename == NULL)
+ filename = "-";
+ /* Setup the default resource import path taken from input file. */
+ else if (strchr (filename, '/') != NULL || strchr (filename, '\\') != NULL)
+ {
+ char *edit, *dir;
+
+ if (filename[0] == '/'
+ || filename[0] == '\\'
+ || filename[1] == ':')
+ /* Absolute path. */
+ edit = dir = xstrdup (filename);
+ else
+ {
+ /* Relative path. */
+ edit = dir = xmalloc (strlen (filename) + 3);
+ sprintf (dir, "./%s", filename);
+ }
+
+ /* Walk dir backwards stopping at the first directory separator. */
+ edit += strlen (dir);
+ while (edit > dir && (edit[-1] != '\\' && edit[-1] != '/'))
+ {
+ --edit;
+ edit[0] = 0;
+ }
+
+ /* Cut off trailing slash. */
+ --edit;
+ edit[0] = 0;
+
+ /* Convert all back slashes to forward slashes. */
+ while ((edit = strchr (dir, '\\')) != NULL)
+ *edit = '/';
+
+ windres_add_include_dir (dir);
+ }
+
+ istream_type = (use_temp_file) ? ISTREAM_FILE : ISTREAM_PIPE;
+
+ if (preprocargs == NULL)
+ preprocargs = "";
+
+ if (preprocessor)
+ {
+ cmd = xmalloc (strlen (preprocessor)
+ + strlen (preprocargs)
+ + strlen (filename)
+ + strlen (fnquotes) * 2
+ + 10);
+ sprintf (cmd, "%s %s %s%s%s", preprocessor, preprocargs,
+ fnquotes, filename, fnquotes);
+
+ cpp_pipe = open_input_stream (cmd);
+ }
+ else
+ {
+ char *dash, *slash, *cp;
+
+ preprocessor = DEFAULT_PREPROCESSOR;
+
+ cmd = xmalloc (strlen (program_name)
+ + strlen (preprocessor)
+ + strlen (preprocargs)
+ + strlen (filename)
+ + strlen (fnquotes) * 2
+#ifdef HAVE_EXECUTABLE_SUFFIX
+ + strlen (EXECUTABLE_SUFFIX)
+#endif
+ + 10);
+
+
+ dash = slash = 0;
+ for (cp = program_name; *cp; cp++)
+ {
+ if (*cp == '-')
+ dash = cp;
+ if (
+#if defined (__DJGPP__) || defined (__CYGWIN__) || defined(_WIN32)
+ *cp == ':' || *cp == '\\' ||
+#endif
+ *cp == '/')
+ {
+ slash = cp;
+ dash = 0;
+ }
+ }
+
+ cpp_pipe = 0;
+
+ if (dash)
+ {
+ /* First, try looking for a prefixed gcc in the windres
+ directory, with the same prefix as windres */
+
+ cpp_pipe = look_for_default (cmd, program_name, dash - program_name + 1,
+ preprocargs, filename);
+ }
+
+ if (slash && ! cpp_pipe)
+ {
+ /* Next, try looking for a gcc in the same directory as
+ that windres */
+
+ cpp_pipe = look_for_default (cmd, program_name, slash - program_name + 1,
+ preprocargs, filename);
+ }
+
+ if (! cpp_pipe)
+ {
+ /* Sigh, try the default */
+
+ cpp_pipe = look_for_default (cmd, "", 0, preprocargs, filename);
+ }
+
+ }
+
+ free (cmd);
+
+ rc_filename = xstrdup (filename);
+ rc_lineno = 1;
+ if (language != -1)
+ rcparse_set_language (language);
+ yyparse ();
+ rcparse_discard_strings ();
+
+ close_input_stream ();
+
+ if (fontdirs != NULL)
+ define_fontdirs ();
+
+ free (rc_filename);
+ rc_filename = NULL;
+
+ return resources;
+}
+
+/* Close the input stream if it is open. */
+
+static void
+close_input_stream (void)
+{
+ if (istream_type == ISTREAM_FILE)
+ {
+ if (cpp_pipe != NULL)
+ fclose (cpp_pipe);
+
+ if (cpp_temp_file != NULL)
+ {
+ int errno_save = errno;
+
+ unlink (cpp_temp_file);
+ errno = errno_save;
+ free (cpp_temp_file);
+ }
+ }
+ else
+ {
+ if (cpp_pipe != NULL)
+ {
+ int err;
+ err = pclose (cpp_pipe);
+ /* We are reading from a pipe, therefore we don't
+ know if cpp failed or succeeded until pclose. */
+ if (err != 0 || errno == ECHILD)
+ {
+ /* Since this is also run via xatexit, safeguard. */
+ cpp_pipe = NULL;
+ cpp_temp_file = NULL;
+ fatal (_("preprocessing failed."));
+ }
+ }
+ }
+
+ /* Since this is also run via xatexit, safeguard. */
+ cpp_pipe = NULL;
+ cpp_temp_file = NULL;
+}
+
+/* Report an error while reading an rc file. */
+
+void
+yyerror (const char *msg)
+{
+ fatal ("%s:%d: %s", rc_filename, rc_lineno, msg);
+}
+
+/* Issue a warning while reading an rc file. */
+
+void
+rcparse_warning (const char *msg)
+{
+ fprintf (stderr, "%s:%d: %s\n", rc_filename, rc_lineno, msg);
+}
+
+/* Die if we get an unexpected end of file. */
+
+static void
+unexpected_eof (const char *msg)
+{
+ fatal (_("%s: unexpected EOF"), msg);
+}
+
+/* Read a 16 bit word from a file. The data is assumed to be little
+ endian. */
+
+static int
+get_word (FILE *e, const char *msg)
+{
+ int b1, b2;
+
+ b1 = getc (e);
+ b2 = getc (e);
+ if (feof (e))
+ unexpected_eof (msg);
+ return ((b2 & 0xff) << 8) | (b1 & 0xff);
+}
+
+/* Read a 32 bit word from a file. The data is assumed to be little
+ endian. */
+
+static unsigned long
+get_long (FILE *e, const char *msg)
+{
+ int b1, b2, b3, b4;
+
+ b1 = getc (e);
+ b2 = getc (e);
+ b3 = getc (e);
+ b4 = getc (e);
+ if (feof (e))
+ unexpected_eof (msg);
+ return (((((((b4 & 0xff) << 8)
+ | (b3 & 0xff)) << 8)
+ | (b2 & 0xff)) << 8)
+ | (b1 & 0xff));
+}
+
+/* Read data from a file. This is a wrapper to do error checking. */
+
+static void
+get_data (FILE *e, bfd_byte *p, rc_uint_type c, const char *msg)
+{
+ rc_uint_type got; // $$$d
+
+ got = (rc_uint_type) fread (p, 1, c, e);
+ if (got == c)
+ return;
+
+ fatal (_("%s: read of %lu returned %lu"),
+ msg, (unsigned long) c, (unsigned long) got);
+}
+
+/* Define an accelerator resource. */
+
+void
+define_accelerator (rc_res_id id, const rc_res_res_info *resinfo,
+ rc_accelerator *data)
+{
+ rc_res_resource *r;
+
+ r = define_standard_resource (&resources, RT_ACCELERATOR, id,
+ resinfo->language, 0);
+ r->type = RES_TYPE_ACCELERATOR;
+ r->u.acc = data;
+ r->res_info = *resinfo;
+}
+
+/* Define a bitmap resource. Bitmap data is stored in a file. The
+ first 14 bytes of the file are a standard header, which is not
+ included in the resource data. */
+
+#define BITMAP_SKIP (14)
+
+void
+define_bitmap (rc_res_id id, const rc_res_res_info *resinfo,
+ const char *filename)
+{
+ FILE *e;
+ char *real_filename;
+ struct stat s;
+ bfd_byte *data;
+ rc_uint_type i;
+ rc_res_resource *r;
+
+ e = open_file_search (filename, FOPEN_RB, "bitmap file", &real_filename);
+
+ if (stat (real_filename, &s) < 0)
+ fatal (_("stat failed on bitmap file `%s': %s"), real_filename,
+ strerror (errno));
+
+ data = (bfd_byte *) res_alloc (s.st_size - BITMAP_SKIP);
+
+ for (i = 0; i < BITMAP_SKIP; i++)
+ getc (e);
+
+ get_data (e, data, s.st_size - BITMAP_SKIP, real_filename);
+
+ fclose (e);
+ free (real_filename);
+
+ r = define_standard_resource (&resources, RT_BITMAP, id,
+ resinfo->language, 0);
+
+ r->type = RES_TYPE_BITMAP;
+ r->u.data.length = s.st_size - BITMAP_SKIP;
+ r->u.data.data = data;
+ r->res_info = *resinfo;
+}
+
+/* Define a cursor resource. A cursor file may contain a set of
+ bitmaps, each representing the same cursor at various different
+ resolutions. They each get written out with a different ID. The
+ real cursor resource is then a group resource which can be used to
+ select one of the actual cursors. */
+
+void
+define_cursor (rc_res_id id, const rc_res_res_info *resinfo,
+ const char *filename)
+{
+ FILE *e;
+ char *real_filename;
+ int type, count, i;
+ struct icondir *icondirs;
+ int first_cursor;
+ rc_res_resource *r;
+ rc_group_cursor *first, **pp;
+
+ e = open_file_search (filename, FOPEN_RB, "cursor file", &real_filename);
+
+ /* A cursor file is basically an icon file. The start of the file
+ is a three word structure. The first word is ignored. The
+ second word is the type of data. The third word is the number of
+ entries. */
+
+ get_word (e, real_filename);
+ type = get_word (e, real_filename);
+ count = get_word (e, real_filename);
+ if (type != 2)
+ fatal (_("cursor file `%s' does not contain cursor data"), real_filename);
+
+ /* Read in the icon directory entries. */
+
+ icondirs = (struct icondir *) xmalloc (count * sizeof *icondirs);
+
+ for (i = 0; i < count; i++)
+ {
+ icondirs[i].width = getc (e);
+ icondirs[i].height = getc (e);
+ icondirs[i].colorcount = getc (e);
+ getc (e);
+ icondirs[i].u.cursor.xhotspot = get_word (e, real_filename);
+ icondirs[i].u.cursor.yhotspot = get_word (e, real_filename);
+ icondirs[i].bytes = get_long (e, real_filename);
+ icondirs[i].offset = get_long (e, real_filename);
+
+ if (feof (e))
+ unexpected_eof (real_filename);
+ }
+
+ /* Define each cursor as a unique resource. */
+
+ first_cursor = cursors;
+
+ for (i = 0; i < count; i++)
+ {
+ bfd_byte *data;
+ rc_res_id name;
+ rc_cursor *c;
+
+ if (fseek (e, icondirs[i].offset, SEEK_SET) != 0)
+ fatal (_("%s: fseek to %lu failed: %s"), real_filename,
+ icondirs[i].offset, strerror (errno));
+
+ data = (bfd_byte *) res_alloc (icondirs[i].bytes);
+
+ get_data (e, data, icondirs[i].bytes, real_filename);
+
+ c = (rc_cursor *) res_alloc (sizeof (rc_cursor));
+ c->xhotspot = icondirs[i].u.cursor.xhotspot;
+ c->yhotspot = icondirs[i].u.cursor.yhotspot;
+ c->length = icondirs[i].bytes;
+ c->data = data;
+
+ ++cursors;
+
+ name.named = 0;
+ name.u.id = cursors;
+
+ r = define_standard_resource (&resources, RT_CURSOR, name,
+ resinfo->language, 0);
+ r->type = RES_TYPE_CURSOR;
+ r->u.cursor = c;
+ r->res_info = *resinfo;
+ }
+
+ fclose (e);
+ free (real_filename);
+
+ /* Define a cursor group resource. */
+
+ first = NULL;
+ pp = &first;
+ for (i = 0; i < count; i++)
+ {
+ rc_group_cursor *cg;
+
+ cg = (rc_group_cursor *) res_alloc (sizeof (rc_group_cursor));
+ cg->next = NULL;
+ cg->width = icondirs[i].width;
+ cg->height = 2 * icondirs[i].height;
+
+ /* FIXME: What should these be set to? */
+ cg->planes = 1;
+ cg->bits = 1;
+
+ cg->bytes = icondirs[i].bytes + 4;
+ cg->index = first_cursor + i + 1;
+
+ *pp = cg;
+ pp = &(*pp)->next;
+ }
+
+ free (icondirs);
+
+ r = define_standard_resource (&resources, RT_GROUP_CURSOR, id,
+ resinfo->language, 0);
+ r->type = RES_TYPE_GROUP_CURSOR;
+ r->u.group_cursor = first;
+ r->res_info = *resinfo;
+}
+
+/* Define a dialog resource. */
+
+void
+define_dialog (rc_res_id id, const rc_res_res_info *resinfo,
+ const rc_dialog *dialog)
+{
+ rc_dialog *copy;
+ rc_res_resource *r;
+
+ copy = (rc_dialog *) res_alloc (sizeof *copy);
+ *copy = *dialog;
+
+ r = define_standard_resource (&resources, RT_DIALOG, id,
+ resinfo->language, 0);
+ r->type = RES_TYPE_DIALOG;
+ r->u.dialog = copy;
+ r->res_info = *resinfo;
+}
+
+/* Define a dialog control. This does not define a resource, but
+ merely allocates and fills in a structure. */
+
+rc_dialog_control *
+define_control (const rc_res_id iid, rc_uint_type id, rc_uint_type x,
+ rc_uint_type y, rc_uint_type width, rc_uint_type height,
+ const rc_res_id class, rc_uint_type style,
+ rc_uint_type exstyle)
+{
+ rc_dialog_control *n;
+
+ n = (rc_dialog_control *) res_alloc (sizeof (rc_dialog_control));
+ n->next = NULL;
+ n->id = id;
+ n->style = style;
+ n->exstyle = exstyle;
+ n->x = x;
+ n->y = y;
+ n->width = width;
+ n->height = height;
+ n->class = class;
+ n->text = iid;
+ n->data = NULL;
+ n->help = 0;
+
+ return n;
+}
+
+rc_dialog_control *
+define_icon_control (rc_res_id iid, rc_uint_type id, rc_uint_type x,
+ rc_uint_type y, rc_uint_type style,
+ rc_uint_type exstyle, rc_uint_type help,
+ rc_rcdata_item *data, rc_dialog_ex *ex)
+{
+ rc_dialog_control *n;
+ rc_res_id tid;
+ rc_res_id cid;
+
+ if (style == 0)
+ style = SS_ICON | WS_CHILD | WS_VISIBLE;
+ res_string_to_id (&tid, "");
+ cid.named = 0;
+ cid.u.id = CTL_STATIC;
+ n = define_control (tid, id, x, y, 0, 0, cid, style, exstyle);
+ n->text = iid;
+ if (help && ! ex)
+ rcparse_warning (_("help ID requires DIALOGEX"));
+ if (data && ! ex)
+ rcparse_warning (_("control data requires DIALOGEX"));
+ n->help = help;
+ n->data = data;
+
+ return n;
+}
+
+/* Define a font resource. */
+
+void
+define_font (rc_res_id id, const rc_res_res_info *resinfo,
+ const char *filename)
+{
+ FILE *e;
+ char *real_filename;
+ struct stat s;
+ bfd_byte *data;
+ rc_res_resource *r;
+ long offset;
+ long fontdatalength;
+ bfd_byte *fontdata;
+ rc_fontdir *fd;
+ const char *device, *face;
+ rc_fontdir **pp;
+
+ e = open_file_search (filename, FOPEN_RB, "font file", &real_filename);
+
+ if (stat (real_filename, &s) < 0)
+ fatal (_("stat failed on font file `%s': %s"), real_filename,
+ strerror (errno));
+
+ data = (bfd_byte *) res_alloc (s.st_size);
+
+ get_data (e, data, s.st_size, real_filename);
+
+ fclose (e);
+ free (real_filename);
+
+ r = define_standard_resource (&resources, RT_FONT, id,
+ resinfo->language, 0);
+
+ r->type = RES_TYPE_FONT;
+ r->u.data.length = s.st_size;
+ r->u.data.data = data;
+ r->res_info = *resinfo;
+
+ /* For each font resource, we must add an entry in the FONTDIR
+ resource. The FONTDIR resource includes some strings in the font
+ file. To find them, we have to do some magic on the data we have
+ read. */
+
+ offset = ((((((data[47] << 8)
+ | data[46]) << 8)
+ | data[45]) << 8)
+ | data[44]);
+ if (offset > 0 && offset < s.st_size)
+ device = (char *) data + offset;
+ else
+ device = "";
+
+ offset = ((((((data[51] << 8)
+ | data[50]) << 8)
+ | data[49]) << 8)
+ | data[48]);
+ if (offset > 0 && offset < s.st_size)
+ face = (char *) data + offset;
+ else
+ face = "";
+
+ ++fonts;
+
+ fontdatalength = 58 + strlen (device) + strlen (face);
+ fontdata = (bfd_byte *) res_alloc (fontdatalength);
+ memcpy (fontdata, data, 56);
+ strcpy ((char *) fontdata + 56, device);
+ strcpy ((char *) fontdata + 57 + strlen (device), face);
+
+ fd = (rc_fontdir *) res_alloc (sizeof (rc_fontdir));
+ fd->next = NULL;
+ fd->index = fonts;
+ fd->length = fontdatalength;
+ fd->data = fontdata;
+
+ for (pp = &fontdirs; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = fd;
+
+ /* For the single fontdirs resource, we always use the resource
+ information of the last font. I don't know what else to do. */
+ fontdirs_resinfo = *resinfo;
+}
+
+static void
+define_font_rcdata (rc_res_id id,const rc_res_res_info *resinfo,
+ rc_rcdata_item *data)
+{
+ rc_res_resource *r;
+ rc_uint_type len_data;
+ bfd_byte *pb_data;
+
+ r = define_standard_resource (&resources, RT_FONT, id,
+ resinfo->language, 0);
+
+ pb_data = rcdata_render_as_buffer (data, &len_data);
+
+ r->type = RES_TYPE_FONT;
+ r->u.data.length = len_data;
+ r->u.data.data = pb_data;
+ r->res_info = *resinfo;
+}
+
+/* Define the fontdirs resource. This is called after the entire rc
+ file has been parsed, if any font resources were seen. */
+
+static void
+define_fontdirs (void)
+{
+ rc_res_resource *r;
+ rc_res_id id;
+
+ id.named = 0;
+ id.u.id = 1;
+
+ r = define_standard_resource (&resources, RT_FONTDIR, id, 0x409, 0);
+
+ r->type = RES_TYPE_FONTDIR;
+ r->u.fontdir = fontdirs;
+ r->res_info = fontdirs_resinfo;
+}
+
+static bfd_byte *
+rcdata_render_as_buffer (const rc_rcdata_item *data, rc_uint_type *plen)
+{
+ const rc_rcdata_item *d;
+ bfd_byte *ret = NULL, *pret;
+ rc_uint_type len = 0;
+
+ for (d = data; d != NULL; d = d->next)
+ len += rcdata_copy (d, NULL);
+ if (len != 0)
+ {
+ ret = pret = (bfd_byte *) res_alloc (len);
+ for (d = data; d != NULL; d = d->next)
+ pret += rcdata_copy (d, pret);
+ }
+ if (plen)
+ *plen = len;
+ return ret;
+}
+
+static void
+define_fontdir_rcdata (rc_res_id id,const rc_res_res_info *resinfo,
+ rc_rcdata_item *data)
+{
+ rc_res_resource *r;
+ rc_fontdir *fd, *fd_first, *fd_cur;
+ rc_uint_type len_data;
+ bfd_byte *pb_data;
+ rc_uint_type c;
+
+ fd_cur = fd_first = NULL;
+ r = define_standard_resource (&resources, RT_FONTDIR, id, 0x409, 0);
+
+ pb_data = rcdata_render_as_buffer (data, &len_data);
+
+ if (pb_data)
+ {
+ rc_uint_type off = 2;
+ c = windres_get_16 (&wrtarget, pb_data, len_data);
+ for (; c > 0; c--)
+ {
+ size_t len;
+ rc_uint_type safe_pos = off;
+ const struct bin_fontdir_item *bfi;
+
+ bfi = (const struct bin_fontdir_item *) pb_data + off;
+ fd = (rc_fontdir *) res_alloc (sizeof (rc_fontdir));
+ fd->index = windres_get_16 (&wrtarget, bfi->index, len_data - off);
+ fd->data = pb_data + off;
+ off += 56;
+ len = strlen ((char *) bfi->device_name) + 1;
+ off += (rc_uint_type) len;
+ off += (rc_uint_type) strlen ((char *) bfi->device_name + len) + 1;
+ fd->length = (off - safe_pos);
+ fd->next = NULL;
+ if (fd_first == NULL)
+ fd_first = fd;
+ else
+ fd_cur->next = fd;
+ fd_cur = fd;
+ }
+ }
+ r->type = RES_TYPE_FONTDIR;
+ r->u.fontdir = fd_first;
+ r->res_info = *resinfo;
+}
+
+static void define_messagetable_rcdata (rc_res_id id, const rc_res_res_info *resinfo,
+ rc_rcdata_item *data)
+{
+ rc_res_resource *r;
+ rc_uint_type len_data;
+ bfd_byte *pb_data;
+
+ r = define_standard_resource (&resources, RT_MESSAGETABLE, id, resinfo->language, 0);
+
+ pb_data = rcdata_render_as_buffer (data, &len_data);
+ r->type = RES_TYPE_MESSAGETABLE;
+ r->u.data.length = len_data;
+ r->u.data.data = pb_data;
+ r->res_info = *resinfo;
+}
+
+/* Define an icon resource. An icon file may contain a set of
+ bitmaps, each representing the same icon at various different
+ resolutions. They each get written out with a different ID. The
+ real icon resource is then a group resource which can be used to
+ select one of the actual icon bitmaps. */
+
+void
+define_icon (rc_res_id id, const rc_res_res_info *resinfo,
+ const char *filename)
+{
+ FILE *e;
+ char *real_filename;
+ int type, count, i;
+ struct icondir *icondirs;
+ int first_icon;
+ rc_res_resource *r;
+ rc_group_icon *first, **pp;
+
+ e = open_file_search (filename, FOPEN_RB, "icon file", &real_filename);
+
+ /* The start of an icon file is a three word structure. The first
+ word is ignored. The second word is the type of data. The third
+ word is the number of entries. */
+
+ get_word (e, real_filename);
+ type = get_word (e, real_filename);
+ count = get_word (e, real_filename);
+ if (type != 1)
+ fatal (_("icon file `%s' does not contain icon data"), real_filename);
+
+ /* Read in the icon directory entries. */
+
+ icondirs = (struct icondir *) xmalloc (count * sizeof *icondirs);
+
+ for (i = 0; i < count; i++)
+ {
+ icondirs[i].width = getc (e);
+ icondirs[i].height = getc (e);
+ icondirs[i].colorcount = getc (e);
+ getc (e);
+ icondirs[i].u.icon.planes = get_word (e, real_filename);
+ icondirs[i].u.icon.bits = get_word (e, real_filename);
+ icondirs[i].bytes = get_long (e, real_filename);
+ icondirs[i].offset = get_long (e, real_filename);
+
+ if (feof (e))
+ unexpected_eof (real_filename);
+ }
+
+ /* Define each icon as a unique resource. */
+
+ first_icon = icons;
+
+ for (i = 0; i < count; i++)
+ {
+ bfd_byte *data;
+ rc_res_id name;
+
+ if (fseek (e, icondirs[i].offset, SEEK_SET) != 0)
+ fatal (_("%s: fseek to %lu failed: %s"), real_filename,
+ icondirs[i].offset, strerror (errno));
+
+ data = (bfd_byte *) res_alloc (icondirs[i].bytes);
+
+ get_data (e, data, icondirs[i].bytes, real_filename);
+
+ ++icons;
+
+ name.named = 0;
+ name.u.id = icons;
+
+ r = define_standard_resource (&resources, RT_ICON, name,
+ resinfo->language, 0);
+ r->type = RES_TYPE_ICON;
+ r->u.data.length = icondirs[i].bytes;
+ r->u.data.data = data;
+ r->res_info = *resinfo;
+ }
+
+ fclose (e);
+ free (real_filename);
+
+ /* Define an icon group resource. */
+
+ first = NULL;
+ pp = &first;
+ for (i = 0; i < count; i++)
+ {
+ rc_group_icon *cg;
+
+ /* For some reason, at least in some files the planes and bits
+ are zero. We instead set them from the color. This is
+ copied from rcl. */
+
+ cg = (rc_group_icon *) res_alloc (sizeof (rc_group_icon));
+ cg->next = NULL;
+ cg->width = icondirs[i].width;
+ cg->height = icondirs[i].height;
+ cg->colors = icondirs[i].colorcount;
+
+ if (icondirs[i].u.icon.planes)
+ cg->planes = icondirs[i].u.icon.planes;
+ else
+ cg->planes = 1;
+
+ if (icondirs[i].u.icon.bits)
+ cg->bits = icondirs[i].u.icon.bits;
+ else
+ {
+ cg->bits = 0;
+
+ while ((1L << cg->bits) < cg->colors)
+ ++cg->bits;
+ }
+
+ cg->bytes = icondirs[i].bytes;
+ cg->index = first_icon + i + 1;
+
+ *pp = cg;
+ pp = &(*pp)->next;
+ }
+
+ free (icondirs);
+
+ r = define_standard_resource (&resources, RT_GROUP_ICON, id,
+ resinfo->language, 0);
+ r->type = RES_TYPE_GROUP_ICON;
+ r->u.group_icon = first;
+ r->res_info = *resinfo;
+}
+
+static void
+define_group_icon_rcdata (rc_res_id id, const rc_res_res_info *resinfo,
+ rc_rcdata_item *data)
+{
+ rc_res_resource *r;
+ rc_group_icon *cg, *first, *cur;
+ rc_uint_type len_data;
+ bfd_byte *pb_data;
+
+ pb_data = rcdata_render_as_buffer (data, &len_data);
+
+ cur = NULL;
+ first = NULL;
+
+ while (len_data >= 6)
+ {
+ int c, i;
+ unsigned short type;
+ type = windres_get_16 (&wrtarget, pb_data + 2, len_data - 2);
+ if (type != 1)
+ fatal (_("unexpected group icon type %d"), type);
+ c = windres_get_16 (&wrtarget, pb_data + 4, len_data - 4);
+ len_data -= 6;
+ pb_data += 6;
+
+ for (i = 0; i < c; i++)
+ {
+ if (len_data < 14)
+ fatal ("too small group icon rcdata");
+ cg = (rc_group_icon *) res_alloc (sizeof (rc_group_icon));
+ cg->next = NULL;
+ cg->width = pb_data[0];
+ cg->height = pb_data[1];
+ cg->colors = pb_data[2];
+ cg->planes = windres_get_16 (&wrtarget, pb_data + 4, len_data - 4);
+ cg->bits = windres_get_16 (&wrtarget, pb_data + 6, len_data - 6);
+ cg->bytes = windres_get_32 (&wrtarget, pb_data + 8, len_data - 8);
+ cg->index = windres_get_16 (&wrtarget, pb_data + 12, len_data - 12);
+ if (! first)
+ first = cg;
+ else
+ cur->next = cg;
+ cur = cg;
+ pb_data += 14;
+ len_data -= 14;
+ }
+ }
+ r = define_standard_resource (&resources, RT_GROUP_ICON, id,
+ resinfo->language, 0);
+ r->type = RES_TYPE_GROUP_ICON;
+ r->u.group_icon = first;
+ r->res_info = *resinfo;
+}
+
+static void
+define_group_cursor_rcdata (rc_res_id id, const rc_res_res_info *resinfo,
+ rc_rcdata_item *data)
+{
+ rc_res_resource *r;
+ rc_group_cursor *cg, *first, *cur;
+ rc_uint_type len_data;
+ bfd_byte *pb_data;
+
+ pb_data = rcdata_render_as_buffer (data, &len_data);
+
+ first = cur = NULL;
+
+ while (len_data >= 6)
+ {
+ int c, i;
+ unsigned short type;
+ type = windres_get_16 (&wrtarget, pb_data + 2, len_data - 2);
+ if (type != 2)
+ fatal (_("unexpected group cursor type %d"), type);
+ c = windres_get_16 (&wrtarget, pb_data + 4, len_data - 4);
+ len_data -= 6;
+ pb_data += 6;
+
+ for (i = 0; i < c; i++)
+ {
+ if (len_data < 14)
+ fatal ("too small group icon rcdata");
+ cg = (rc_group_cursor *) res_alloc (sizeof (rc_group_cursor));
+ cg->next = NULL;
+ cg->width = windres_get_16 (&wrtarget, pb_data, len_data);
+ cg->height = windres_get_16 (&wrtarget, pb_data + 2, len_data - 2);
+ cg->planes = windres_get_16 (&wrtarget, pb_data + 4, len_data - 4);
+ cg->bits = windres_get_16 (&wrtarget, pb_data + 6, len_data - 6);
+ cg->bytes = windres_get_32 (&wrtarget, pb_data + 8, len_data - 8);
+ cg->index = windres_get_16 (&wrtarget, pb_data + 12, len_data - 12);
+ if (! first)
+ first = cg;
+ else
+ cur->next = cg;
+ cur = cg;
+ pb_data += 14;
+ len_data -= 14;
+ }
+ }
+
+ r = define_standard_resource (&resources, RT_GROUP_ICON, id,
+ resinfo->language, 0);
+ r->type = RES_TYPE_GROUP_CURSOR;
+ r->u.group_cursor = first;
+ r->res_info = *resinfo;
+}
+
+static void
+define_cursor_rcdata (rc_res_id id, const rc_res_res_info *resinfo,
+ rc_rcdata_item *data)
+{
+ rc_cursor *c;
+ rc_res_resource *r;
+ rc_uint_type len_data;
+ bfd_byte *pb_data;
+
+ pb_data = rcdata_render_as_buffer (data, &len_data);
+
+ c = (rc_cursor *) res_alloc (sizeof (rc_cursor));
+ c->xhotspot = windres_get_16 (&wrtarget, pb_data, len_data);
+ c->yhotspot = windres_get_16 (&wrtarget, pb_data + 2, len_data - 2);
+ c->length = len_data - BIN_CURSOR_SIZE;
+ c->data = (const bfd_byte *) (data + BIN_CURSOR_SIZE);
+
+ r = define_standard_resource (&resources, RT_CURSOR, id, resinfo->language, 0);
+ r->type = RES_TYPE_CURSOR;
+ r->u.cursor = c;
+ r->res_info = *resinfo;
+}
+
+static void
+define_bitmap_rcdata (rc_res_id id, const rc_res_res_info *resinfo,
+ rc_rcdata_item *data)
+{
+ rc_res_resource *r;
+ rc_uint_type len_data;
+ bfd_byte *pb_data;
+
+ pb_data = rcdata_render_as_buffer (data, &len_data);
+
+ r = define_standard_resource (&resources, RT_BITMAP, id, resinfo->language, 0);
+ r->type = RES_TYPE_BITMAP;
+ r->u.data.length = len_data;
+ r->u.data.data = pb_data;
+ r->res_info = *resinfo;
+}
+
+static void
+define_icon_rcdata (rc_res_id id, const rc_res_res_info *resinfo,
+ rc_rcdata_item *data)
+{
+ rc_res_resource *r;
+ rc_uint_type len_data;
+ bfd_byte *pb_data;
+
+ pb_data = rcdata_render_as_buffer (data, &len_data);
+
+ r = define_standard_resource (&resources, RT_ICON, id, resinfo->language, 0);
+ r->type = RES_TYPE_ICON;
+ r->u.data.length = len_data;
+ r->u.data.data = pb_data;
+ r->res_info = *resinfo;
+}
+
+/* Define a menu resource. */
+
+void
+define_menu (rc_res_id id, const rc_res_res_info *resinfo,
+ rc_menuitem *menuitems)
+{
+ rc_menu *m;
+ rc_res_resource *r;
+
+ m = (rc_menu *) res_alloc (sizeof (rc_menu));
+ m->items = menuitems;
+ m->help = 0;
+
+ r = define_standard_resource (&resources, RT_MENU, id, resinfo->language, 0);
+ r->type = RES_TYPE_MENU;
+ r->u.menu = m;
+ r->res_info = *resinfo;
+}
+
+/* Define a menu item. This does not define a resource, but merely
+ allocates and fills in a structure. */
+
+rc_menuitem *
+define_menuitem (const unichar *text, rc_uint_type menuid, rc_uint_type type,
+ rc_uint_type state, rc_uint_type help,
+ rc_menuitem *menuitems)
+{
+ rc_menuitem *mi;
+
+ mi = (rc_menuitem *) res_alloc (sizeof (rc_menuitem));
+ mi->next = NULL;
+ mi->type = type;
+ mi->state = state;
+ mi->id = menuid;
+ mi->text = unichar_dup (text);
+ mi->help = help;
+ mi->popup = menuitems;
+ return mi;
+}
+
+/* Define a messagetable resource. */
+
+void
+define_messagetable (rc_res_id id, const rc_res_res_info *resinfo,
+ const char *filename)
+{
+ FILE *e;
+ char *real_filename;
+ struct stat s;
+ bfd_byte *data;
+ rc_res_resource *r;
+
+ e = open_file_search (filename, FOPEN_RB, "messagetable file",
+ &real_filename);
+
+ if (stat (real_filename, &s) < 0)
+ fatal (_("stat failed on bitmap file `%s': %s"), real_filename,
+ strerror (errno));
+
+ data = (bfd_byte *) res_alloc (s.st_size);
+
+ get_data (e, data, s.st_size, real_filename);
+
+ fclose (e);
+ free (real_filename);
+
+ r = define_standard_resource (&resources, RT_MESSAGETABLE, id,
+ resinfo->language, 0);
+
+ r->type = RES_TYPE_MESSAGETABLE;
+ r->u.data.length = s.st_size;
+ r->u.data.data = data;
+ r->res_info = *resinfo;
+}
+
+/* Define an rcdata resource. */
+
+void
+define_rcdata (rc_res_id id, const rc_res_res_info *resinfo,
+ rc_rcdata_item *data)
+{
+ rc_res_resource *r;
+
+ r = define_standard_resource (&resources, RT_RCDATA, id,
+ resinfo->language, 0);
+ r->type = RES_TYPE_RCDATA;
+ r->u.rcdata = data;
+ r->res_info = *resinfo;
+}
+
+/* Create an rcdata item holding a string. */
+
+rc_rcdata_item *
+define_rcdata_string (const char *string, rc_uint_type len)
+{
+ rc_rcdata_item *ri;
+ char *s;
+
+ ri = (rc_rcdata_item *) res_alloc (sizeof (rc_rcdata_item));
+ ri->next = NULL;
+ ri->type = RCDATA_STRING;
+ ri->u.string.length = len;
+ s = (char *) res_alloc (len);
+ memcpy (s, string, len);
+ ri->u.string.s = s;
+
+ return ri;
+}
+
+/* Create an rcdata item holding a unicode string. */
+
+rc_rcdata_item *
+define_rcdata_unistring (const unichar *string, rc_uint_type len)
+{
+ rc_rcdata_item *ri;
+ unichar *s;
+
+ ri = (rc_rcdata_item *) res_alloc (sizeof (rc_rcdata_item));
+ ri->next = NULL;
+ ri->type = RCDATA_WSTRING;
+ ri->u.wstring.length = len;
+ s = (unichar *) res_alloc (len * sizeof (unichar));
+ memcpy (s, string, len * sizeof (unichar));
+ ri->u.wstring.w = s;
+
+ return ri;
+}
+
+/* Create an rcdata item holding a number. */
+
+rc_rcdata_item *
+define_rcdata_number (rc_uint_type val, int dword)
+{
+ rc_rcdata_item *ri;
+
+ ri = (rc_rcdata_item *) res_alloc (sizeof (rc_rcdata_item));
+ ri->next = NULL;
+ ri->type = dword ? RCDATA_DWORD : RCDATA_WORD;
+ ri->u.word = val;
+
+ return ri;
+}
+
+/* Define a stringtable resource. This is called for each string
+ which appears in a STRINGTABLE statement. */
+
+void
+define_stringtable (const rc_res_res_info *resinfo,
+ rc_uint_type stringid, const unichar *string, int len)
+{
+ unichar *h;
+ rc_res_id id;
+ rc_res_resource *r;
+
+ id.named = 0;
+ id.u.id = (stringid >> 4) + 1;
+ r = define_standard_resource (&resources, RT_STRING, id,
+ resinfo->language, 1);
+
+ if (r->type == RES_TYPE_UNINITIALIZED)
+ {
+ int i;
+
+ r->type = RES_TYPE_STRINGTABLE;
+ r->u.stringtable = ((rc_stringtable *)
+ res_alloc (sizeof (rc_stringtable)));
+ for (i = 0; i < 16; i++)
+ {
+ r->u.stringtable->strings[i].length = 0;
+ r->u.stringtable->strings[i].string = NULL;
+ }
+
+ r->res_info = *resinfo;
+ }
+ h = (unichar *) res_alloc ((len + 1) * sizeof (unichar));
+ if (len)
+ memcpy (h, string, len * sizeof (unichar));
+ h[len] = 0;
+ r->u.stringtable->strings[stringid & 0xf].length = (rc_uint_type) len;
+ r->u.stringtable->strings[stringid & 0xf].string = h;
+}
+
+void
+define_toolbar (rc_res_id id, rc_res_res_info *resinfo, rc_uint_type width, rc_uint_type height,
+ rc_toolbar_item *items)
+{
+ rc_toolbar *t;
+ rc_res_resource *r;
+
+ t = (rc_toolbar *) res_alloc (sizeof (rc_toolbar));
+ t->button_width = width;
+ t->button_height = height;
+ t->nitems = 0;
+ t->items = items;
+ while (items != NULL)
+ {
+ t->nitems+=1;
+ items = items->next;
+ }
+ r = define_standard_resource (&resources, RT_TOOLBAR, id, resinfo->language, 0);
+ r->type = RES_TYPE_TOOLBAR;
+ r->u.toolbar = t;
+ r->res_info = *resinfo;
+}
+
+/* Define a user data resource where the data is in the rc file. */
+
+void
+define_user_data (rc_res_id id, rc_res_id type,
+ const rc_res_res_info *resinfo,
+ rc_rcdata_item *data)
+{
+ rc_res_id ids[3];
+ rc_res_resource *r;
+ bfd_byte *pb_data;
+ rc_uint_type len_data;
+
+ /* We have to check if the binary data is parsed specially. */
+ if (type.named == 0)
+ {
+ switch (type.u.id)
+ {
+ case RT_FONTDIR:
+ define_fontdir_rcdata (id, resinfo, data);
+ return;
+ case RT_FONT:
+ define_font_rcdata (id, resinfo, data);
+ return;
+ case RT_ICON:
+ define_icon_rcdata (id, resinfo, data);
+ return;
+ case RT_BITMAP:
+ define_bitmap_rcdata (id, resinfo, data);
+ return;
+ case RT_CURSOR:
+ define_cursor_rcdata (id, resinfo, data);
+ return;
+ case RT_GROUP_ICON:
+ define_group_icon_rcdata (id, resinfo, data);
+ return;
+ case RT_GROUP_CURSOR:
+ define_group_cursor_rcdata (id, resinfo, data);
+ return;
+ case RT_MESSAGETABLE:
+ define_messagetable_rcdata (id, resinfo, data);
+ return;
+ default:
+ /* Treat as normal user-data. */
+ break;
+ }
+ }
+ ids[0] = type;
+ ids[1] = id;
+ ids[2].named = 0;
+ ids[2].u.id = resinfo->language;
+
+ r = define_resource (& resources, 3, ids, 0);
+ r->type = RES_TYPE_USERDATA;
+ r->u.userdata = ((rc_rcdata_item *)
+ res_alloc (sizeof (rc_rcdata_item)));
+ r->u.userdata->next = NULL;
+ r->u.userdata->type = RCDATA_BUFFER;
+ pb_data = rcdata_render_as_buffer (data, &len_data);
+ r->u.userdata->u.buffer.length = len_data;
+ r->u.userdata->u.buffer.data = pb_data;
+ r->res_info = *resinfo;
+}
+
+void
+define_rcdata_file (rc_res_id id, const rc_res_res_info *resinfo,
+ const char *filename)
+{
+ rc_rcdata_item *ri;
+ FILE *e;
+ char *real_filename;
+ struct stat s;
+ bfd_byte *data;
+
+ e = open_file_search (filename, FOPEN_RB, "file", &real_filename);
+
+
+ if (stat (real_filename, &s) < 0)
+ fatal (_("stat failed on file `%s': %s"), real_filename,
+ strerror (errno));
+
+ data = (bfd_byte *) res_alloc (s.st_size);
+
+ get_data (e, data, s.st_size, real_filename);
+
+ fclose (e);
+ free (real_filename);
+
+ ri = (rc_rcdata_item *) res_alloc (sizeof (rc_rcdata_item));
+ ri->next = NULL;
+ ri->type = RCDATA_BUFFER;
+ ri->u.buffer.length = s.st_size;
+ ri->u.buffer.data = data;
+
+ define_rcdata (id, resinfo, ri);
+}
+
+/* Define a user data resource where the data is in a file. */
+
+void
+define_user_file (rc_res_id id, rc_res_id type,
+ const rc_res_res_info *resinfo, const char *filename)
+{
+ FILE *e;
+ char *real_filename;
+ struct stat s;
+ bfd_byte *data;
+ rc_res_id ids[3];
+ rc_res_resource *r;
+
+ e = open_file_search (filename, FOPEN_RB, "file", &real_filename);
+
+ if (stat (real_filename, &s) < 0)
+ fatal (_("stat failed on file `%s': %s"), real_filename,
+ strerror (errno));
+
+ data = (bfd_byte *) res_alloc (s.st_size);
+
+ get_data (e, data, s.st_size, real_filename);
+
+ fclose (e);
+ free (real_filename);
+
+ ids[0] = type;
+ ids[1] = id;
+ ids[2].named = 0;
+ ids[2].u.id = resinfo->language;
+
+ r = define_resource (&resources, 3, ids, 0);
+ r->type = RES_TYPE_USERDATA;
+ r->u.userdata = ((rc_rcdata_item *)
+ res_alloc (sizeof (rc_rcdata_item)));
+ r->u.userdata->next = NULL;
+ r->u.userdata->type = RCDATA_BUFFER;
+ r->u.userdata->u.buffer.length = s.st_size;
+ r->u.userdata->u.buffer.data = data;
+ r->res_info = *resinfo;
+}
+
+/* Define a versioninfo resource. */
+
+void
+define_versioninfo (rc_res_id id, rc_uint_type language,
+ rc_fixed_versioninfo *fixedverinfo,
+ rc_ver_info *verinfo)
+{
+ rc_res_resource *r;
+
+ r = define_standard_resource (&resources, RT_VERSION, id, language, 0);
+ r->type = RES_TYPE_VERSIONINFO;
+ r->u.versioninfo = ((rc_versioninfo *)
+ res_alloc (sizeof (rc_versioninfo)));
+ r->u.versioninfo->fixed = fixedverinfo;
+ r->u.versioninfo->var = verinfo;
+ r->res_info.language = language;
+}
+
+/* Add string version info to a list of version information. */
+
+rc_ver_info *
+append_ver_stringfileinfo (rc_ver_info *verinfo,
+ rc_ver_stringtable *stringtables)
+{
+ rc_ver_info *vi, **pp;
+
+ vi = (rc_ver_info *) res_alloc (sizeof (rc_ver_info));
+ vi->next = NULL;
+ vi->type = VERINFO_STRING;
+ vi->u.string.stringtables = stringtables;
+
+ for (pp = &verinfo; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = vi;
+
+ return verinfo;
+}
+
+rc_ver_stringtable *
+append_ver_stringtable (rc_ver_stringtable *stringtable,
+ const char *language,
+ rc_ver_stringinfo *strings)
+{
+ rc_ver_stringtable *vst, **pp;
+
+ vst = (rc_ver_stringtable *) res_alloc (sizeof (rc_ver_stringtable));
+ vst->next = NULL;
+ unicode_from_ascii ((rc_uint_type *) NULL, &vst->language, language);
+ vst->strings = strings;
+
+ for (pp = &stringtable; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = vst;
+
+ return stringtable;
+}
+
+/* Add variable version info to a list of version information. */
+
+rc_ver_info *
+append_ver_varfileinfo (rc_ver_info *verinfo, const unichar *key,
+ rc_ver_varinfo *var)
+{
+ rc_ver_info *vi, **pp;
+
+ vi = (rc_ver_info *) res_alloc (sizeof *vi);
+ vi->next = NULL;
+ vi->type = VERINFO_VAR;
+ vi->u.var.key = unichar_dup (key);
+ vi->u.var.var = var;
+
+ for (pp = &verinfo; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = vi;
+
+ return verinfo;
+}
+
+/* Append version string information to a list. */
+
+rc_ver_stringinfo *
+append_verval (rc_ver_stringinfo *strings, const unichar *key,
+ const unichar *value)
+{
+ rc_ver_stringinfo *vs, **pp;
+
+ vs = (rc_ver_stringinfo *) res_alloc (sizeof (rc_ver_stringinfo));
+ vs->next = NULL;
+ vs->key = unichar_dup (key);
+ vs->value = unichar_dup (value);
+
+ for (pp = &strings; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = vs;
+
+ return strings;
+}
+
+/* Append version variable information to a list. */
+
+rc_ver_varinfo *
+append_vertrans (rc_ver_varinfo *var, rc_uint_type language,
+ rc_uint_type charset)
+{
+ rc_ver_varinfo *vv, **pp;
+
+ vv = (rc_ver_varinfo *) res_alloc (sizeof (rc_ver_varinfo));
+ vv->next = NULL;
+ vv->language = language;
+ vv->charset = charset;
+
+ for (pp = &var; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = vv;
+
+ return var;
+}
+
+/* Local functions used to write out an rc file. */
+
+static void indent (FILE *, int);
+static void write_rc_directory (FILE *, const rc_res_directory *, const rc_res_id *,
+ const rc_res_id *, rc_uint_type *, int);
+static void write_rc_subdir (FILE *, const rc_res_entry *, const rc_res_id *,
+ const rc_res_id *, rc_uint_type *, int);
+static void write_rc_resource (FILE *, const rc_res_id *, const rc_res_id *,
+ const rc_res_resource *, rc_uint_type *);
+static void write_rc_accelerators (FILE *, const rc_accelerator *);
+static void write_rc_cursor (FILE *, const rc_cursor *);
+static void write_rc_group_cursor (FILE *, const rc_group_cursor *);
+static void write_rc_dialog (FILE *, const rc_dialog *);
+static void write_rc_dialog_control (FILE *, const rc_dialog_control *);
+static void write_rc_fontdir (FILE *, const rc_fontdir *);
+static void write_rc_group_icon (FILE *, const rc_group_icon *);
+static void write_rc_menu (FILE *, const rc_menu *, int);
+static void write_rc_toolbar (FILE *, const rc_toolbar *);
+static void write_rc_menuitems (FILE *, const rc_menuitem *, int, int);
+static void write_rc_messagetable (FILE *, rc_uint_type , const bfd_byte *);
+
+static void write_rc_datablock (FILE *, rc_uint_type , const bfd_byte *, int, int, int);
+static void write_rc_rcdata (FILE *, const rc_rcdata_item *, int);
+static void write_rc_stringtable (FILE *, const rc_res_id *, const rc_stringtable *);
+static void write_rc_versioninfo (FILE *, const rc_versioninfo *);
+
+/* Indent a given number of spaces. */
+
+static void
+indent (FILE *e, int c)
+{
+ int i;
+
+ for (i = 0; i < c; i++)
+ putc (' ', e);
+}
+
+/* Dump the resources we have read in the format of an rc file.
+
+ Reasoned by the fact, that some resources need to be stored into file and
+ refer to that file, we use the user-data model for that to express it binary
+ without the need to store it somewhere externally. */
+
+void
+write_rc_file (const char *filename, const rc_res_directory *res_dir)
+{
+ FILE *e;
+ rc_uint_type language;
+
+ if (filename == NULL)
+ e = stdout;
+ else
+ {
+ e = fopen (filename, FOPEN_WT);
+ if (e == NULL)
+ fatal (_("can't open `%s' for output: %s"), filename, strerror (errno));
+ }
+
+ language = (rc_uint_type) ((bfd_signed_vma) -1);
+ write_rc_directory (e, res_dir, (const rc_res_id *) NULL,
+ (const rc_res_id *) NULL, &language, 1);
+}
+
+/* Write out a directory. E is the file to write to. RD is the
+ directory. TYPE is a pointer to the level 1 ID which serves as the
+ resource type. NAME is a pointer to the level 2 ID which serves as
+ an individual resource name. LANGUAGE is a pointer to the current
+ language. LEVEL is the level in the tree. */
+
+static void
+write_rc_directory (FILE *e, const rc_res_directory *rd,
+ const rc_res_id *type, const rc_res_id *name,
+ rc_uint_type *language, int level)
+{
+ const rc_res_entry *re;
+
+ /* Print out some COFF information that rc files can't represent. */
+ if (rd->time != 0 || rd->characteristics != 0 || rd->major != 0 || rd->minor != 0)
+ {
+ wr_printcomment (e, "COFF information not part of RC");
+ if (rd->time != 0)
+ wr_printcomment (e, "Time stamp: %u", rd->time);
+ if (rd->characteristics != 0)
+ wr_printcomment (e, "Characteristics: %u", rd->characteristics);
+ if (rd->major != 0 || rd->minor != 0)
+ wr_printcomment (e, "Version major:%d minor:%d", rd->major, rd->minor);
+ }
+
+ for (re = rd->entries; re != NULL; re = re->next)
+ {
+ switch (level)
+ {
+ case 1:
+ /* If we're at level 1, the key of this resource is the
+ type. This normally duplicates the information we have
+ stored with the resource itself, but we need to remember
+ the type if this is a user define resource type. */
+ type = &re->id;
+ break;
+
+ case 2:
+ /* If we're at level 2, the key of this resource is the name
+ we are going to use in the rc printout. */
+ name = &re->id;
+ break;
+
+ case 3:
+ /* If we're at level 3, then this key represents a language.
+ Use it to update the current language. */
+ if (! re->id.named
+ && re->id.u.id != (unsigned long) (unsigned int) *language
+ && (re->id.u.id & 0xffff) == re->id.u.id)
+ {
+ wr_print (e, "LANGUAGE %u, %u\n",
+ re->id.u.id & ((1 << SUBLANG_SHIFT) - 1),
+ (re->id.u.id >> SUBLANG_SHIFT) & 0xff);
+ *language = re->id.u.id;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ if (re->subdir)
+ write_rc_subdir (e, re, type, name, language, level);
+ else
+ {
+ if (level == 3)
+ {
+ /* This is the normal case: the three levels are
+ TYPE/NAME/LANGUAGE. NAME will have been set at level
+ 2, and represents the name to use. We probably just
+ set LANGUAGE, and it will probably match what the
+ resource itself records if anything. */
+ write_rc_resource (e, type, name, re->u.res, language);
+ }
+ else
+ {
+ wr_printcomment (e, "Resource at unexpected level %d", level);
+ write_rc_resource (e, type, (rc_res_id *) NULL, re->u.res,
+ language);
+ }
+ }
+ }
+ if (rd->entries == NULL)
+ {
+ wr_print_flush (e);
+ }
+}
+
+/* Write out a subdirectory entry. E is the file to write to. RE is
+ the subdirectory entry. TYPE and NAME are pointers to higher level
+ IDs, or NULL. LANGUAGE is a pointer to the current language.
+ LEVEL is the level in the tree. */
+
+static void
+write_rc_subdir (FILE *e, const rc_res_entry *re,
+ const rc_res_id *type, const rc_res_id *name,
+ rc_uint_type *language, int level)
+{
+ fprintf (e, "\n");
+ switch (level)
+ {
+ case 1:
+ wr_printcomment (e, "Type: ");
+ if (re->id.named)
+ res_id_print (e, re->id, 1);
+ else
+ {
+ const char *s;
+
+ switch (re->id.u.id)
+ {
+ case RT_CURSOR: s = "cursor"; break;
+ case RT_BITMAP: s = "bitmap"; break;
+ case RT_ICON: s = "icon"; break;
+ case RT_MENU: s = "menu"; break;
+ case RT_DIALOG: s = "dialog"; break;
+ case RT_STRING: s = "stringtable"; break;
+ case RT_FONTDIR: s = "fontdir"; break;
+ case RT_FONT: s = "font"; break;
+ case RT_ACCELERATOR: s = "accelerators"; break;
+ case RT_RCDATA: s = "rcdata"; break;
+ case RT_MESSAGETABLE: s = "messagetable"; break;
+ case RT_GROUP_CURSOR: s = "group cursor"; break;
+ case RT_GROUP_ICON: s = "group icon"; break;
+ case RT_VERSION: s = "version"; break;
+ case RT_DLGINCLUDE: s = "dlginclude"; break;
+ case RT_PLUGPLAY: s = "plugplay"; break;
+ case RT_VXD: s = "vxd"; break;
+ case RT_ANICURSOR: s = "anicursor"; break;
+ case RT_ANIICON: s = "aniicon"; break;
+ case RT_TOOLBAR: s = "toolbar"; break;
+ case RT_HTML: s = "html"; break;
+ default: s = NULL; break;
+ }
+
+ if (s != NULL)
+ fprintf (e, "%s", s);
+ else
+ res_id_print (e, re->id, 1);
+ }
+ break;
+
+ case 2:
+ wr_printcomment (e, "Name: ");
+ res_id_print (e, re->id, 1);
+ break;
+
+ case 3:
+ wr_printcomment (e, "Language: ");
+ res_id_print (e, re->id, 1);
+ break;
+
+ default:
+ wr_printcomment (e, "Level %d: ", level);
+ res_id_print (e, re->id, 1);
+ }
+
+ write_rc_directory (e, re->u.dir, type, name, language, level + 1);
+}
+
+/* Write out a single resource. E is the file to write to. TYPE is a
+ pointer to the type of the resource. NAME is a pointer to the name
+ of the resource; it will be NULL if there is a level mismatch. RES
+ is the resource data. LANGUAGE is a pointer to the current
+ language. */
+
+static void
+write_rc_resource (FILE *e, const rc_res_id *type,
+ const rc_res_id *name, const rc_res_resource *res,
+ rc_uint_type *language)
+{
+ const char *s;
+ int rt;
+ int menuex = 0;
+
+ switch (res->type)
+ {
+ default:
+ abort ();
+
+ case RES_TYPE_ACCELERATOR:
+ s = "ACCELERATORS";
+ rt = RT_ACCELERATOR;
+ break;
+
+ case RES_TYPE_BITMAP:
+ s = "2 /* RT_BITMAP */";
+ rt = RT_BITMAP;
+ break;
+
+ case RES_TYPE_CURSOR:
+ s = "1 /* RT_CURSOR */";
+ rt = RT_CURSOR;
+ break;
+
+ case RES_TYPE_GROUP_CURSOR:
+ s = "12 /* RT_GROUP_CURSOR */";
+ rt = RT_GROUP_CURSOR;
+ break;
+
+ case RES_TYPE_DIALOG:
+ if (extended_dialog (res->u.dialog))
+ s = "DIALOGEX";
+ else
+ s = "DIALOG";
+ rt = RT_DIALOG;
+ break;
+
+ case RES_TYPE_FONT:
+ s = "8 /* RT_FONT */";
+ rt = RT_FONT;
+ break;
+
+ case RES_TYPE_FONTDIR:
+ s = "7 /* RT_FONTDIR */";
+ rt = RT_FONTDIR;
+ break;
+
+ case RES_TYPE_ICON:
+ s = "3 /* RT_ICON */";
+ rt = RT_ICON;
+ break;
+
+ case RES_TYPE_GROUP_ICON:
+ s = "14 /* RT_GROUP_ICON */";
+ rt = RT_GROUP_ICON;
+ break;
+
+ case RES_TYPE_MENU:
+ if (extended_menu (res->u.menu))
+ {
+ s = "MENUEX";
+ menuex = 1;
+ }
+ else
+ {
+ s = "MENU";
+ menuex = 0;
+ }
+ rt = RT_MENU;
+ break;
+
+ case RES_TYPE_MESSAGETABLE:
+ s = "11 /* RT_MESSAGETABLE */";
+ rt = RT_MESSAGETABLE;
+ break;
+
+ case RES_TYPE_RCDATA:
+ s = "RCDATA";
+ rt = RT_RCDATA;
+ break;
+
+ case RES_TYPE_STRINGTABLE:
+ s = "STRINGTABLE";
+ rt = RT_STRING;
+ break;
+
+ case RES_TYPE_USERDATA:
+ s = NULL;
+ rt = 0;
+ break;
+
+ case RES_TYPE_VERSIONINFO:
+ s = "VERSIONINFO";
+ rt = RT_VERSION;
+ break;
+
+ case RES_TYPE_TOOLBAR:
+ s = "TOOLBAR";
+ rt = RT_TOOLBAR;
+ break;
+ }
+
+ if (rt != 0
+ && type != NULL
+ && (type->named || type->u.id != (unsigned long) rt))
+ {
+ wr_printcomment (e, "Unexpected resource type mismatch: ");
+ res_id_print (e, *type, 1);
+ fprintf (e, " != %d", rt);
+ }
+
+ if (res->coff_info.codepage != 0)
+ wr_printcomment (e, "Code page: %u", res->coff_info.codepage);
+ if (res->coff_info.reserved != 0)
+ wr_printcomment (e, "COFF reserved value: %u", res->coff_info.reserved);
+
+ wr_print (e, "\n");
+ if (rt == RT_STRING)
+ ;
+ else
+ {
+ if (name != NULL)
+ res_id_print (e, *name, 1);
+ else
+ fprintf (e, "??Unknown-Name??");
+ fprintf (e, " ");
+ }
+
+ if (s != NULL)
+ fprintf (e, "%s", s);
+ else if (type != NULL)
+ {
+ if (type->named == 0)
+ {
+#define PRINT_RT_NAME(NAME) case NAME: \
+ fprintf (e, "%u /* %s */", (unsigned int) NAME, #NAME); \
+ break
+
+ switch (type->u.id)
+ {
+ default:
+ res_id_print (e, *type, 0);
+ break;
+
+ PRINT_RT_NAME(RT_MANIFEST);
+ PRINT_RT_NAME(RT_ANICURSOR);
+ PRINT_RT_NAME(RT_ANIICON);
+ PRINT_RT_NAME(RT_RCDATA);
+ PRINT_RT_NAME(RT_ICON);
+ PRINT_RT_NAME(RT_CURSOR);
+ PRINT_RT_NAME(RT_BITMAP);
+ PRINT_RT_NAME(RT_PLUGPLAY);
+ PRINT_RT_NAME(RT_VXD);
+ PRINT_RT_NAME(RT_FONT);
+ PRINT_RT_NAME(RT_FONTDIR);
+ PRINT_RT_NAME(RT_HTML);
+ PRINT_RT_NAME(RT_MESSAGETABLE);
+ PRINT_RT_NAME(RT_DLGINCLUDE);
+ PRINT_RT_NAME(RT_DLGINIT);
+ }
+#undef PRINT_RT_NAME
+ }
+ else
+ res_id_print (e, *type, 1);
+ }
+ else
+ fprintf (e, "??Unknown-Type??");
+
+ if (res->res_info.memflags != 0)
+ {
+ if ((res->res_info.memflags & MEMFLAG_MOVEABLE) != 0)
+ fprintf (e, " MOVEABLE");
+ if ((res->res_info.memflags & MEMFLAG_PURE) != 0)
+ fprintf (e, " PURE");
+ if ((res->res_info.memflags & MEMFLAG_PRELOAD) != 0)
+ fprintf (e, " PRELOAD");
+ if ((res->res_info.memflags & MEMFLAG_DISCARDABLE) != 0)
+ fprintf (e, " DISCARDABLE");
+ }
+
+ if (res->type == RES_TYPE_DIALOG)
+ {
+ fprintf (e, " %d, %d, %d, %d",
+ (int) res->u.dialog->x, (int) res->u.dialog->y,
+ (int) res->u.dialog->width, (int) res->u.dialog->height);
+ if (res->u.dialog->ex != NULL
+ && res->u.dialog->ex->help != 0)
+ fprintf (e, ", %u", (unsigned int) res->u.dialog->ex->help);
+ }
+ else if (res->type == RES_TYPE_TOOLBAR)
+ {
+ fprintf (e, " %d, %d", (int) res->u.toolbar->button_width,
+ (int) res->u.toolbar->button_height);
+ }
+
+ fprintf (e, "\n");
+
+ if ((res->res_info.language != 0 && res->res_info.language != *language)
+ || res->res_info.characteristics != 0
+ || res->res_info.version != 0)
+ {
+ int modifiers;
+
+ switch (res->type)
+ {
+ case RES_TYPE_ACCELERATOR:
+ case RES_TYPE_DIALOG:
+ case RES_TYPE_MENU:
+ case RES_TYPE_RCDATA:
+ case RES_TYPE_STRINGTABLE:
+ modifiers = 1;
+ break;
+
+ default:
+ modifiers = 0;
+ break;
+ }
+
+ if (res->res_info.language != 0 && res->res_info.language != *language)
+ fprintf (e, "%sLANGUAGE %d, %d\n",
+ modifiers ? "// " : "",
+ (int) res->res_info.language & ((1<<SUBLANG_SHIFT)-1),
+ (int) (res->res_info.language >> SUBLANG_SHIFT) & 0xff);
+ if (res->res_info.characteristics != 0)
+ fprintf (e, "%sCHARACTERISTICS %u\n",
+ modifiers ? "// " : "",
+ (unsigned int) res->res_info.characteristics);
+ if (res->res_info.version != 0)
+ fprintf (e, "%sVERSION %u\n",
+ modifiers ? "// " : "",
+ (unsigned int) res->res_info.version);
+ }
+
+ switch (res->type)
+ {
+ default:
+ abort ();
+
+ case RES_TYPE_ACCELERATOR:
+ write_rc_accelerators (e, res->u.acc);
+ break;
+
+ case RES_TYPE_CURSOR:
+ write_rc_cursor (e, res->u.cursor);
+ break;
+
+ case RES_TYPE_GROUP_CURSOR:
+ write_rc_group_cursor (e, res->u.group_cursor);
+ break;
+
+ case RES_TYPE_DIALOG:
+ write_rc_dialog (e, res->u.dialog);
+ break;
+
+ case RES_TYPE_FONTDIR:
+ write_rc_fontdir (e, res->u.fontdir);
+ break;
+
+ case RES_TYPE_GROUP_ICON:
+ write_rc_group_icon (e, res->u.group_icon);
+ break;
+
+ case RES_TYPE_MENU:
+ write_rc_menu (e, res->u.menu, menuex);
+ break;
+
+ case RES_TYPE_RCDATA:
+ write_rc_rcdata (e, res->u.rcdata, 0);
+ break;
+
+ case RES_TYPE_STRINGTABLE:
+ write_rc_stringtable (e, name, res->u.stringtable);
+ break;
+
+ case RES_TYPE_USERDATA:
+ write_rc_rcdata (e, res->u.userdata, 0);
+ break;
+
+ case RES_TYPE_TOOLBAR:
+ write_rc_toolbar (e, res->u.toolbar);
+ break;
+
+ case RES_TYPE_VERSIONINFO:
+ write_rc_versioninfo (e, res->u.versioninfo);
+ break;
+
+ case RES_TYPE_BITMAP:
+ case RES_TYPE_FONT:
+ case RES_TYPE_ICON:
+ write_rc_datablock (e, res->u.data.length, res->u.data.data, 0, 1, 0);
+ break;
+ case RES_TYPE_MESSAGETABLE:
+ write_rc_messagetable (e, res->u.data.length, res->u.data.data);
+ break;
+ }
+}
+
+/* Write out accelerator information. */
+
+static void
+write_rc_accelerators (FILE *e, const rc_accelerator *accelerators)
+{
+ const rc_accelerator *acc;
+
+ fprintf (e, "BEGIN\n");
+ for (acc = accelerators; acc != NULL; acc = acc->next)
+ {
+ int printable;
+
+ fprintf (e, " ");
+
+ if ((acc->key & 0x7f) == acc->key
+ && ISPRINT (acc->key)
+ && (acc->flags & ACC_VIRTKEY) == 0)
+ {
+ fprintf (e, "\"%c\"", (char) acc->key);
+ printable = 1;
+ }
+ else
+ {
+ fprintf (e, "%d", (int) acc->key);
+ printable = 0;
+ }
+
+ fprintf (e, ", %d", (int) acc->id);
+
+ if (! printable)
+ {
+ if ((acc->flags & ACC_VIRTKEY) != 0)
+ fprintf (e, ", VIRTKEY");
+ else
+ fprintf (e, ", ASCII");
+ }
+
+ if ((acc->flags & ACC_SHIFT) != 0)
+ fprintf (e, ", SHIFT");
+ if ((acc->flags & ACC_CONTROL) != 0)
+ fprintf (e, ", CONTROL");
+ if ((acc->flags & ACC_ALT) != 0)
+ fprintf (e, ", ALT");
+
+ fprintf (e, "\n");
+ }
+
+ fprintf (e, "END\n");
+}
+
+/* Write out cursor information. This would normally be in a separate
+ file, which the rc file would include. */
+
+static void
+write_rc_cursor (FILE *e, const rc_cursor *cursor)
+{
+ fprintf (e, "BEGIN\n");
+ indent (e, 2);
+ fprintf (e, " 0x%x, 0x%x,\t/* Hotspot x: %d, y: %d. */\n",
+ (unsigned int) cursor->xhotspot, (unsigned int) cursor->yhotspot,
+ (int) cursor->xhotspot, (int) cursor->yhotspot);
+ write_rc_datablock (e, (rc_uint_type) cursor->length, (const bfd_byte *) cursor->data,
+ 0, 0, 0);
+ fprintf (e, "END\n");
+}
+
+/* Write out group cursor data. This would normally be built from the
+ cursor data. */
+
+static void
+write_rc_group_cursor (FILE *e, const rc_group_cursor *group_cursor)
+{
+ const rc_group_cursor *gc;
+ int c;
+
+ for (c = 0, gc = group_cursor; gc != NULL; gc = gc->next, c++)
+ ;
+ fprintf (e, "BEGIN\n");
+
+ indent (e, 2);
+ fprintf (e, "0, 2, %d%s\t /* Having %d items. */\n", c, (c != 0 ? "," : ""), c);
+ indent (e, 4);
+ fprintf (e, "/* width, height, planes, bits, bytes, index. */\n");
+
+ for (c = 1, gc = group_cursor; gc != NULL; gc = gc->next, c++)
+ {
+ indent (e, 4);
+ fprintf (e, "%d, %d, %d, %d, 0x%xL, %d%s /* Element %d. */\n",
+ (int) gc->width, (int) gc->height, (int) gc->planes, (int) gc->bits,
+ (unsigned int) gc->bytes, (int) gc->index, (gc->next != NULL ? "," : ""), c);
+ fprintf (e, "/* width: %d; height %d; planes %d; bits %d. */\n",
+ (int) gc->width, (int) gc->height, (int) gc->planes,
+ (int) gc->bits);
+ }
+ fprintf (e, "END\n");
+}
+
+/* Write dialog data. */
+
+static void
+write_rc_dialog (FILE *e, const rc_dialog *dialog)
+{
+ const rc_dialog_control *control;
+
+ fprintf (e, "STYLE 0x%x\n", dialog->style);
+
+ if (dialog->exstyle != 0)
+ fprintf (e, "EXSTYLE 0x%x\n", (unsigned int) dialog->exstyle);
+
+ if ((dialog->class.named && dialog->class.u.n.length > 0)
+ || dialog->class.u.id != 0)
+ {
+ fprintf (e, "CLASS ");
+ res_id_print (e, dialog->class, 1);
+ fprintf (e, "\n");
+ }
+
+ if (dialog->caption != NULL)
+ {
+ fprintf (e, "CAPTION ");
+ unicode_print_quoted (e, dialog->caption, -1);
+ fprintf (e, "\n");
+ }
+
+ if ((dialog->menu.named && dialog->menu.u.n.length > 0)
+ || dialog->menu.u.id != 0)
+ {
+ fprintf (e, "MENU ");
+ res_id_print (e, dialog->menu, 0);
+ fprintf (e, "\n");
+ }
+
+ if (dialog->font != NULL)
+ {
+ fprintf (e, "FONT %d, ", (int) dialog->pointsize);
+ unicode_print_quoted (e, dialog->font, -1);
+ if (dialog->ex != NULL
+ && (dialog->ex->weight != 0
+ || dialog->ex->italic != 0
+ || dialog->ex->charset != 1))
+ fprintf (e, ", %d, %d, %d",
+ (int) dialog->ex->weight,
+ (int) dialog->ex->italic,
+ (int) dialog->ex->charset);
+ fprintf (e, "\n");
+ }
+
+ fprintf (e, "BEGIN\n");
+
+ for (control = dialog->controls; control != NULL; control = control->next)
+ write_rc_dialog_control (e, control);
+
+ fprintf (e, "END\n");
+}
+
+/* For each predefined control keyword, this table provides the class
+ and the style. */
+
+struct control_info
+{
+ const char *name;
+ unsigned short class;
+ unsigned long style;
+};
+
+static const struct control_info control_info[] =
+{
+ { "AUTO3STATE", CTL_BUTTON, BS_AUTO3STATE },
+ { "AUTOCHECKBOX", CTL_BUTTON, BS_AUTOCHECKBOX },
+ { "AUTORADIOBUTTON", CTL_BUTTON, BS_AUTORADIOBUTTON },
+ { "CHECKBOX", CTL_BUTTON, BS_CHECKBOX },
+ { "COMBOBOX", CTL_COMBOBOX, (unsigned long) -1 },
+ { "CTEXT", CTL_STATIC, SS_CENTER },
+ { "DEFPUSHBUTTON", CTL_BUTTON, BS_DEFPUSHBUTTON },
+ { "EDITTEXT", CTL_EDIT, (unsigned long) -1 },
+ { "GROUPBOX", CTL_BUTTON, BS_GROUPBOX },
+ { "ICON", CTL_STATIC, SS_ICON },
+ { "LISTBOX", CTL_LISTBOX, (unsigned long) -1 },
+ { "LTEXT", CTL_STATIC, SS_LEFT },
+ { "PUSHBOX", CTL_BUTTON, BS_PUSHBOX },
+ { "PUSHBUTTON", CTL_BUTTON, BS_PUSHBUTTON },
+ { "RADIOBUTTON", CTL_BUTTON, BS_RADIOBUTTON },
+ { "RTEXT", CTL_STATIC, SS_RIGHT },
+ { "SCROLLBAR", CTL_SCROLLBAR, (unsigned long) -1 },
+ { "STATE3", CTL_BUTTON, BS_3STATE },
+ /* It's important that USERBUTTON come after all the other button
+ types, so that it won't be matched too early. */
+ { "USERBUTTON", CTL_BUTTON, (unsigned long) -1 },
+ { NULL, 0, 0 }
+};
+
+/* Write a dialog control. */
+
+static void
+write_rc_dialog_control (FILE *e, const rc_dialog_control *control)
+{
+ const struct control_info *ci;
+
+ fprintf (e, " ");
+
+ if (control->class.named)
+ ci = NULL;
+ else
+ {
+ for (ci = control_info; ci->name != NULL; ++ci)
+ if (ci->class == control->class.u.id
+ && (ci->style == (unsigned long) -1
+ || ci->style == (control->style & 0xff)))
+ break;
+ }
+ if (ci == NULL)
+ fprintf (e, "CONTROL");
+ else if (ci->name != NULL)
+ fprintf (e, "%s", ci->name);
+ else
+ {
+ fprintf (e, "CONTROL");
+ ci = NULL;
+ }
+
+ /* For EDITTEXT, COMBOBOX, LISTBOX, and SCROLLBAR don't dump text. */
+ if ((control->text.named || control->text.u.id != 0)
+ && (!ci
+ || (ci->class != CTL_EDIT
+ && ci->class != CTL_COMBOBOX
+ && ci->class != CTL_LISTBOX
+ && ci->class != CTL_SCROLLBAR)))
+ {
+ fprintf (e, " ");
+ res_id_print (e, control->text, 1);
+ fprintf (e, ",");
+ }
+
+ fprintf (e, " %d, ", (int) control->id);
+
+ if (ci == NULL)
+ {
+ if (control->class.named)
+ fprintf (e, "\"");
+ res_id_print (e, control->class, 0);
+ if (control->class.named)
+ fprintf (e, "\"");
+ fprintf (e, ", 0x%x, ", (unsigned int) control->style);
+ }
+
+ fprintf (e, "%d, %d", (int) control->x, (int) control->y);
+
+ if (control->style != SS_ICON
+ || control->exstyle != 0
+ || control->width != 0
+ || control->height != 0
+ || control->help != 0)
+ {
+ fprintf (e, ", %d, %d", (int) control->width, (int) control->height);
+
+ /* FIXME: We don't need to print the style if it is the default.
+ More importantly, in certain cases we actually need to turn
+ off parts of the forced style, by using NOT. */
+ if (ci != NULL)
+ fprintf (e, ", 0x%x", (unsigned int) control->style);
+
+ if (control->exstyle != 0 || control->help != 0)
+ fprintf (e, ", 0x%x, %u", (unsigned int) control->exstyle,
+ (unsigned int) control->help);
+ }
+
+ fprintf (e, "\n");
+
+ if (control->data != NULL)
+ write_rc_rcdata (e, control->data, 2);
+}
+
+/* Write out font directory data. This would normally be built from
+ the font data. */
+
+static void
+write_rc_fontdir (FILE *e, const rc_fontdir *fontdir)
+{
+ const rc_fontdir *fc;
+ int c;
+
+ for (c = 0, fc = fontdir; fc != NULL; fc = fc->next, c++)
+ ;
+ fprintf (e, "BEGIN\n");
+ indent (e, 2);
+ fprintf (e, "%d%s\t /* Has %d elements. */\n", c, (c != 0 ? "," : ""), c);
+ for (c = 1, fc = fontdir; fc != NULL; fc = fc->next, c++)
+ {
+ indent (e, 4);
+ fprintf (e, "%d,\t/* Font no %d with index %d. */\n",
+ (int) fc->index, c, (int) fc->index);
+ write_rc_datablock (e, (rc_uint_type) fc->length - 2,
+ (const bfd_byte *) fc->data + 4,fc->next != NULL,
+ 0, 0);
+ }
+ fprintf (e, "END\n");
+}
+
+/* Write out group icon data. This would normally be built from the
+ icon data. */
+
+static void
+write_rc_group_icon (FILE *e, const rc_group_icon *group_icon)
+{
+ const rc_group_icon *gi;
+ int c;
+
+ for (c = 0, gi = group_icon; gi != NULL; gi = gi->next, c++)
+ ;
+
+ fprintf (e, "BEGIN\n");
+ indent (e, 2);
+ fprintf (e, " 0, 1, %d%s\t /* Has %d elements. */\n", c, (c != 0 ? "," : ""), c);
+
+ indent (e, 4);
+ fprintf (e, "/* \"width height colors pad\", planes, bits, bytes, index. */\n");
+ for (c = 1, gi = group_icon; gi != NULL; gi = gi->next, c++)
+ {
+ indent (e, 4);
+ fprintf (e, "\"\\%03o\\%03o\\%03o\\%03o\", %d, %d, 0x%xL, %d%s\t/* Element no %d. */\n",
+ gi->width, gi->height, gi->colors, 0, (int) gi->planes, (int) gi->bits,
+ (unsigned int) gi->bytes, (int) gi->index, (gi->next != NULL ? "," : ""), c);
+ }
+ fprintf (e, "END\n");
+}
+
+/* Write out a menu resource. */
+
+static void
+write_rc_menu (FILE *e, const rc_menu *menu, int menuex)
+{
+ if (menu->help != 0)
+ fprintf (e, "// Help ID: %u\n", (unsigned int) menu->help);
+ write_rc_menuitems (e, menu->items, menuex, 0);
+}
+
+static void
+write_rc_toolbar (FILE *e, const rc_toolbar *tb)
+{
+ rc_toolbar_item *it;
+ indent (e, 0);
+ fprintf (e, "BEGIN\n");
+ it = tb->items;
+ while(it != NULL)
+ {
+ indent (e, 2);
+ if (it->id.u.id == 0)
+ fprintf (e, "SEPARATOR\n");
+ else
+ fprintf (e, "BUTTON %d\n", (int) it->id.u.id);
+ it = it->next;
+ }
+ indent (e, 0);
+ fprintf (e, "END\n");
+}
+
+/* Write out menuitems. */
+
+static void
+write_rc_menuitems (FILE *e, const rc_menuitem *menuitems, int menuex,
+ int ind)
+{
+ const rc_menuitem *mi;
+
+ indent (e, ind);
+ fprintf (e, "BEGIN\n");
+
+ for (mi = menuitems; mi != NULL; mi = mi->next)
+ {
+ indent (e, ind + 2);
+
+ if (mi->popup == NULL)
+ fprintf (e, "MENUITEM");
+ else
+ fprintf (e, "POPUP");
+
+ if (! menuex
+ && mi->popup == NULL
+ && mi->text == NULL
+ && mi->type == 0
+ && mi->id == 0)
+ {
+ fprintf (e, " SEPARATOR\n");
+ continue;
+ }
+
+ if (mi->text == NULL)
+ fprintf (e, " \"\"");
+ else
+ {
+ fprintf (e, " ");
+ unicode_print_quoted (e, mi->text, -1);
+ }
+
+ if (! menuex)
+ {
+ if (mi->popup == NULL)
+ fprintf (e, ", %d", (int) mi->id);
+
+ if ((mi->type & MENUITEM_CHECKED) != 0)
+ fprintf (e, ", CHECKED");
+ if ((mi->type & MENUITEM_GRAYED) != 0)
+ fprintf (e, ", GRAYED");
+ if ((mi->type & MENUITEM_HELP) != 0)
+ fprintf (e, ", HELP");
+ if ((mi->type & MENUITEM_INACTIVE) != 0)
+ fprintf (e, ", INACTIVE");
+ if ((mi->type & MENUITEM_MENUBARBREAK) != 0)
+ fprintf (e, ", MENUBARBREAK");
+ if ((mi->type & MENUITEM_MENUBREAK) != 0)
+ fprintf (e, ", MENUBREAK");
+ }
+ else
+ {
+ if (mi->id != 0 || mi->type != 0 || mi->state != 0 || mi->help != 0)
+ {
+ fprintf (e, ", %d", (int) mi->id);
+ if (mi->type != 0 || mi->state != 0 || mi->help != 0)
+ {
+ fprintf (e, ", %u", (unsigned int) mi->type);
+ if (mi->state != 0 || mi->help != 0)
+ {
+ fprintf (e, ", %u", (unsigned int) mi->state);
+ if (mi->help != 0)
+ fprintf (e, ", %u", (unsigned int) mi->help);
+ }
+ }
+ }
+ }
+
+ fprintf (e, "\n");
+
+ if (mi->popup != NULL)
+ write_rc_menuitems (e, mi->popup, menuex, ind + 2);
+ }
+
+ indent (e, ind);
+ fprintf (e, "END\n");
+}
+
+static int
+test_rc_datablock_unicode (rc_uint_type length, const bfd_byte *data)
+{
+ rc_uint_type i;
+ if ((length & 1) != 0)
+ return 0;
+
+ for (i = 0; i < length; i += 2)
+ {
+ if (data[i] == 0 && data[i + 1] == 0 && (i + 2) < length)
+ return 0;
+ if (data[i] == 0xff && data[i + 1] == 0xff)
+ return 0;
+ }
+ return 1;
+}
+
+static int
+test_rc_datablock_text (rc_uint_type length, const bfd_byte *data)
+{
+ int has_nl;
+ rc_uint_type c;
+ rc_uint_type i;
+
+ if (length <= 1)
+ return 0;
+
+ has_nl = 0;
+ for (i = 0, c = 0; i < length; i++)
+ {
+ if (! ISPRINT (data[i]) && data[i] != '\n'
+ && ! (data[i] == '\r' && (i + 1) < length && data[i + 1] == '\n')
+ && data[i] != '\t'
+ && ! (data[i] == 0 && (i + 1) != length))
+ {
+ if (data[i] <= 7)
+ return 0;
+ c++;
+ }
+ else if (data[i] == '\n') has_nl++;
+ }
+ if (length > 80 && ! has_nl)
+ return 0;
+ c = (((c * 10000) + (i / 100) - 1)) / i;
+ if (c >= 150)
+ return 0;
+ return 1;
+}
+
+static void
+write_rc_messagetable (FILE *e, rc_uint_type length, const bfd_byte *data)
+{
+ int has_error = 0;
+ const struct bin_messagetable *mt;
+ fprintf (e, "BEGIN\n");
+
+ write_rc_datablock (e, length, data, 0, 0, 0);
+
+ fprintf (e, "\n");
+ wr_printcomment (e, "MC syntax dump");
+ if (length < BIN_MESSAGETABLE_SIZE)
+ has_error = 1;
+ else
+ do {
+ rc_uint_type m, i;
+ mt = (const struct bin_messagetable *) data;
+ m = windres_get_32 (&wrtarget, mt->cblocks, length);
+ if (length < (BIN_MESSAGETABLE_SIZE + m * BIN_MESSAGETABLE_BLOCK_SIZE))
+ {
+ has_error = 1;
+ break;
+ }
+ for (i = 0; i < m; i++)
+ {
+ rc_uint_type low, high, offset;
+ const struct bin_messagetable_item *mti;
+
+ low = windres_get_32 (&wrtarget, mt->items[i].lowid, 4);
+ high = windres_get_32 (&wrtarget, mt->items[i].highid, 4);
+ offset = windres_get_32 (&wrtarget, mt->items[i].offset, 4);
+ while (low <= high)
+ {
+ rc_uint_type elen, flags;
+ if ((offset + BIN_MESSAGETABLE_ITEM_SIZE) > length)
+ {
+ has_error = 1;
+ break;
+ }
+ mti = (const struct bin_messagetable_item *) &data[offset];
+ elen = windres_get_16 (&wrtarget, mti->length, 2);
+ flags = windres_get_16 (&wrtarget, mti->flags, 2);
+ if ((offset + elen) > length)
+ {
+ has_error = 1;
+ break;
+ }
+ wr_printcomment (e, "MessageId = 0x%x", low);
+ wr_printcomment (e, "");
+ if ((flags & MESSAGE_RESOURCE_UNICODE) == MESSAGE_RESOURCE_UNICODE)
+ unicode_print (e, (const unichar *) mti->data,
+ (elen - BIN_MESSAGETABLE_ITEM_SIZE) / 2);
+ else
+ ascii_print (e, (const char *) mti->data,
+ (elen - BIN_MESSAGETABLE_ITEM_SIZE));
+ wr_printcomment (e,"");
+ ++low;
+ offset += elen;
+ }
+ }
+ } while (0);
+ if (has_error)
+ wr_printcomment (e, "Illegal data");
+ wr_print_flush (e);
+ fprintf (e, "END\n");
+}
+
+static void
+write_rc_datablock (FILE *e, rc_uint_type length, const bfd_byte *data, int has_next,
+ int hasblock, int show_comment)
+{
+ int plen;
+
+ if (hasblock)
+ fprintf (e, "BEGIN\n");
+
+ if (show_comment == -1)
+ {
+ if (test_rc_datablock_text(length, data))
+ {
+ rc_uint_type i, c;
+ for (i = 0; i < length;)
+ {
+ indent (e, 2);
+ fprintf (e, "\"");
+
+ for (c = 0; i < length && c < 160 && data[i] != '\n'; c++, i++)
+ ;
+ if (i < length && data[i] == '\n')
+ ++i, ++c;
+ ascii_print (e, (const char *) &data[i - c], c);
+ fprintf (e, "\"");
+ if (i < length)
+ fprintf (e, "\n");
+ }
+
+ if (i == 0)
+ {
+ indent (e, 2);
+ fprintf (e, "\"\"");
+ }
+ if (has_next)
+ fprintf (e, ",");
+ fprintf (e, "\n");
+ if (hasblock)
+ fprintf (e, "END\n");
+ return;
+ }
+ if (test_rc_datablock_unicode (length, data))
+ {
+ rc_uint_type i, c;
+ for (i = 0; i < length;)
+ {
+ const unichar *u;
+
+ u = (const unichar *) &data[i];
+ indent (e, 2);
+ fprintf (e, "L\"");
+
+ for (c = 0; i < length && c < 160 && u[c] != '\n'; c++, i += 2)
+ ;
+ if (i < length && u[c] == '\n')
+ i += 2, ++c;
+ unicode_print (e, u, c);
+ fprintf (e, "\"");
+ if (i < length)
+ fprintf (e, "\n");
+ }
+
+ if (i == 0)
+ {
+ indent (e, 2);
+ fprintf (e, "L\"\"");
+ }
+ if (has_next)
+ fprintf (e, ",");
+ fprintf (e, "\n");
+ if (hasblock)
+ fprintf (e, "END\n");
+ return;
+ }
+
+ show_comment = 0;
+ }
+
+ if (length != 0)
+ {
+ rc_uint_type i, max_row;
+ int first = 1;
+
+ max_row = (show_comment ? 4 : 8);
+ indent (e, 2);
+ for (i = 0; i + 3 < length;)
+ {
+ rc_uint_type k;
+ rc_uint_type comment_start;
+
+ comment_start = i;
+
+ if (! first)
+ indent (e, 2);
+
+ for (k = 0; k < max_row && i + 3 < length; k++, i += 4)
+ {
+ if (k == 0)
+ plen = fprintf (e, "0x%lxL",
+ (unsigned long) windres_get_32 (&wrtarget, data + i, length - i));
+ else
+ plen = fprintf (e, " 0x%lxL",
+ (unsigned long) windres_get_32 (&wrtarget, data + i, length - i)) - 1;
+ if (has_next || (i + 4) < length)
+ {
+ if (plen>0 && plen < 11)
+ indent (e, 11 - plen);
+ fprintf (e, ",");
+ }
+ }
+ if (show_comment)
+ {
+ fprintf (e, "\t/* ");
+ ascii_print (e, (const char *) &data[comment_start], i - comment_start);
+ fprintf (e, ". */");
+ }
+ fprintf (e, "\n");
+ first = 0;
+ }
+
+ if (i + 1 < length)
+ {
+ if (! first)
+ indent (e, 2);
+ plen = fprintf (e, "0x%x",
+ (int) windres_get_16 (&wrtarget, data + i, length - i));
+ if (has_next || i + 2 < length)
+ {
+ if (plen > 0 && plen < 11)
+ indent (e, 11 - plen);
+ fprintf (e, ",");
+ }
+ if (show_comment)
+ {
+ fprintf (e, "\t/* ");
+ ascii_print (e, (const char *) &data[i], 2);
+ fprintf (e, ". */");
+ }
+ fprintf (e, "\n");
+ i += 2;
+ first = 0;
+ }
+
+ if (i < length)
+ {
+ if (! first)
+ indent (e, 2);
+ fprintf (e, "\"");
+ ascii_print (e, (const char *) &data[i], 1);
+ fprintf (e, "\"");
+ if (has_next)
+ fprintf (e, ",");
+ fprintf (e, "\n");
+ first = 0;
+ }
+ }
+ if (hasblock)
+ fprintf (e, "END\n");
+}
+
+/* Write out an rcdata resource. This is also used for other types of
+ resources that need to print arbitrary data. */
+
+static void
+write_rc_rcdata (FILE *e, const rc_rcdata_item *rcdata, int ind)
+{
+ const rc_rcdata_item *ri;
+
+ indent (e, ind);
+ fprintf (e, "BEGIN\n");
+
+ for (ri = rcdata; ri != NULL; ri = ri->next)
+ {
+ if (ri->type == RCDATA_BUFFER && ri->u.buffer.length == 0)
+ continue;
+
+ switch (ri->type)
+ {
+ default:
+ abort ();
+
+ case RCDATA_WORD:
+ indent (e, ind + 2);
+ fprintf (e, "%ld", (long) (ri->u.word & 0xffff));
+ break;
+
+ case RCDATA_DWORD:
+ indent (e, ind + 2);
+ fprintf (e, "%luL", (unsigned long) ri->u.dword);
+ break;
+
+ case RCDATA_STRING:
+ indent (e, ind + 2);
+ fprintf (e, "\"");
+ ascii_print (e, ri->u.string.s, ri->u.string.length);
+ fprintf (e, "\"");
+ break;
+
+ case RCDATA_WSTRING:
+ indent (e, ind + 2);
+ fprintf (e, "L\"");
+ unicode_print (e, ri->u.wstring.w, ri->u.wstring.length);
+ fprintf (e, "\"");
+ break;
+
+ case RCDATA_BUFFER:
+ write_rc_datablock (e, (rc_uint_type) ri->u.buffer.length,
+ (const bfd_byte *) ri->u.buffer.data,
+ ri->next != NULL, 0, -1);
+ break;
+ }
+
+ if (ri->type != RCDATA_BUFFER)
+ {
+ if (ri->next != NULL)
+ fprintf (e, ",");
+ fprintf (e, "\n");
+ }
+ }
+
+ indent (e, ind);
+ fprintf (e, "END\n");
+}
+
+/* Write out a stringtable resource. */
+
+static void
+write_rc_stringtable (FILE *e, const rc_res_id *name,
+ const rc_stringtable *stringtable)
+{
+ rc_uint_type offset;
+ int i;
+
+ if (name != NULL && ! name->named)
+ offset = (name->u.id - 1) << 4;
+ else
+ {
+ fprintf (e, "/* %s string table name. */\n",
+ name == NULL ? "Missing" : "Invalid");
+ offset = 0;
+ }
+
+ fprintf (e, "BEGIN\n");
+
+ for (i = 0; i < 16; i++)
+ {
+ if (stringtable->strings[i].length != 0)
+ {
+ fprintf (e, " %lu, ", (unsigned long) offset + i);
+ unicode_print_quoted (e, stringtable->strings[i].string,
+ stringtable->strings[i].length);
+ fprintf (e, "\n");
+ }
+ }
+
+ fprintf (e, "END\n");
+}
+
+/* Write out a versioninfo resource. */
+
+static void
+write_rc_versioninfo (FILE *e, const rc_versioninfo *versioninfo)
+{
+ const rc_fixed_versioninfo *f;
+ const rc_ver_info *vi;
+
+ f = versioninfo->fixed;
+ if (f->file_version_ms != 0 || f->file_version_ls != 0)
+ fprintf (e, " FILEVERSION %u, %u, %u, %u\n",
+ (unsigned int) ((f->file_version_ms >> 16) & 0xffff),
+ (unsigned int) (f->file_version_ms & 0xffff),
+ (unsigned int) ((f->file_version_ls >> 16) & 0xffff),
+ (unsigned int) (f->file_version_ls & 0xffff));
+ if (f->product_version_ms != 0 || f->product_version_ls != 0)
+ fprintf (e, " PRODUCTVERSION %u, %u, %u, %u\n",
+ (unsigned int) ((f->product_version_ms >> 16) & 0xffff),
+ (unsigned int) (f->product_version_ms & 0xffff),
+ (unsigned int) ((f->product_version_ls >> 16) & 0xffff),
+ (unsigned int) (f->product_version_ls & 0xffff));
+ if (f->file_flags_mask != 0)
+ fprintf (e, " FILEFLAGSMASK 0x%x\n", (unsigned int) f->file_flags_mask);
+ if (f->file_flags != 0)
+ fprintf (e, " FILEFLAGS 0x%x\n", (unsigned int) f->file_flags);
+ if (f->file_os != 0)
+ fprintf (e, " FILEOS 0x%x\n", (unsigned int) f->file_os);
+ if (f->file_type != 0)
+ fprintf (e, " FILETYPE 0x%x\n", (unsigned int) f->file_type);
+ if (f->file_subtype != 0)
+ fprintf (e, " FILESUBTYPE 0x%x\n", (unsigned int) f->file_subtype);
+ if (f->file_date_ms != 0 || f->file_date_ls != 0)
+ fprintf (e, "/* Date: %u, %u. */\n",
+ (unsigned int) f->file_date_ms, (unsigned int) f->file_date_ls);
+
+ fprintf (e, "BEGIN\n");
+
+ for (vi = versioninfo->var; vi != NULL; vi = vi->next)
+ {
+ switch (vi->type)
+ {
+ case VERINFO_STRING:
+ {
+ const rc_ver_stringtable *vst;
+ const rc_ver_stringinfo *vs;
+
+ fprintf (e, " BLOCK \"StringFileInfo\"\n");
+ fprintf (e, " BEGIN\n");
+
+ for (vst = vi->u.string.stringtables; vst != NULL; vst = vst->next)
+ {
+ fprintf (e, " BLOCK ");
+ unicode_print_quoted (e, vst->language, -1);
+
+ fprintf (e, "\n");
+ fprintf (e, " BEGIN\n");
+
+ for (vs = vst->strings; vs != NULL; vs = vs->next)
+ {
+ fprintf (e, " VALUE ");
+ unicode_print_quoted (e, vs->key, -1);
+ fprintf (e, ", ");
+ unicode_print_quoted (e, vs->value, -1);
+ fprintf (e, "\n");
+ }
+
+ fprintf (e, " END\n");
+ }
+ fprintf (e, " END\n");
+ break;
+ }
+
+ case VERINFO_VAR:
+ {
+ const rc_ver_varinfo *vv;
+
+ fprintf (e, " BLOCK \"VarFileInfo\"\n");
+ fprintf (e, " BEGIN\n");
+ fprintf (e, " VALUE ");
+ unicode_print_quoted (e, vi->u.var.key, -1);
+
+ for (vv = vi->u.var.var; vv != NULL; vv = vv->next)
+ fprintf (e, ", 0x%x, %d", (unsigned int) vv->language,
+ (int) vv->charset);
+
+ fprintf (e, "\n END\n");
+
+ break;
+ }
+ }
+ }
+
+ fprintf (e, "END\n");
+}
+
+static rc_uint_type
+rcdata_copy (const rc_rcdata_item *src, bfd_byte *dst)
+{
+ if (! src)
+ return 0;
+ switch (src->type)
+ {
+ case RCDATA_WORD:
+ if (dst)
+ windres_put_16 (&wrtarget, dst, (rc_uint_type) src->u.word);
+ return 2;
+ case RCDATA_DWORD:
+ if (dst)
+ windres_put_32 (&wrtarget, dst, (rc_uint_type) src->u.dword);
+ return 4;
+ case RCDATA_STRING:
+ if (dst && src->u.string.length)
+ memcpy (dst, src->u.string.s, src->u.string.length);
+ return (rc_uint_type) src->u.string.length;
+ case RCDATA_WSTRING:
+ if (dst && src->u.wstring.length)
+ memcpy (dst, src->u.wstring.w, src->u.wstring.length * sizeof (unichar));
+ return (rc_uint_type) (src->u.wstring.length * sizeof (unichar));
+ case RCDATA_BUFFER:
+ if (dst && src->u.buffer.length)
+ memcpy (dst, src->u.buffer.data, src->u.buffer.length);
+ return (rc_uint_type) src->u.buffer.length;
+ default:
+ abort ();
+ }
+ /* Never reached. */
+ return 0;
+}
diff --git a/binutils-2.24/binutils/resres.c b/binutils-2.24/binutils/resres.c
new file mode 100644
index 00000000..84f956f1
--- /dev/null
+++ b/binutils-2.24/binutils/resres.c
@@ -0,0 +1,731 @@
+/* resres.c: read_res_file and write_res_file implementation for windres.
+ Copyright 1998-2013 Free Software Foundation, Inc.
+ Written by Anders Norlander <anorland@hem2.passagen.se>.
+ Rewritten by Kai Tietz, Onevision.
+
+ 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 3 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. */
+
+/* FIXME: This file does not work correctly in a cross configuration.
+ It assumes that it can use fread and fwrite to read and write
+ integers. It does no swapping. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+#include "libiberty.h"
+#include "windres.h"
+
+#include <assert.h>
+
+static rc_uint_type write_res_directory (windres_bfd *, rc_uint_type,
+ const rc_res_directory *, const rc_res_id *,
+ const rc_res_id *, rc_uint_type *, int);
+static rc_uint_type write_res_resource (windres_bfd *, rc_uint_type,const rc_res_id *,
+ const rc_res_id *, const rc_res_resource *,
+ rc_uint_type *);
+static rc_uint_type write_res_bin (windres_bfd *, rc_uint_type, const rc_res_resource *,
+ const rc_res_id *, const rc_res_id *,
+ const rc_res_res_info *);
+
+static rc_uint_type write_res_id (windres_bfd *, rc_uint_type, const rc_res_id *);
+static rc_uint_type write_res_info (windres_bfd *, rc_uint_type, const rc_res_res_info *);
+static rc_uint_type write_res_data_hdr (windres_bfd *, rc_uint_type, res_hdr *);
+
+static rc_uint_type write_res_header (windres_bfd *, rc_uint_type, rc_uint_type,
+ const rc_res_id *, const rc_res_id *,
+ const rc_res_res_info *);
+
+static int read_resource_entry (windres_bfd *, rc_uint_type *, rc_uint_type);
+static void read_res_data (windres_bfd *, rc_uint_type *, rc_uint_type, void *,
+ rc_uint_type);
+static void read_res_data_hdr (windres_bfd *, rc_uint_type *, rc_uint_type, res_hdr *);
+static void read_res_id (windres_bfd *, rc_uint_type *, rc_uint_type, rc_res_id *);
+static unichar *read_unistring (windres_bfd *, rc_uint_type *, rc_uint_type, rc_uint_type *);
+static void skip_null_resource (windres_bfd *, rc_uint_type *, rc_uint_type);
+static int probe_binary (windres_bfd *wrbfd, rc_uint_type);
+
+static unsigned long get_id_size (const rc_res_id *);
+
+static void res_add_resource (rc_res_resource *, const rc_res_id *,
+ const rc_res_id *, rc_uint_type, int);
+
+static void res_append_resource (rc_res_directory **, rc_res_resource *,
+ int, const rc_res_id *, int);
+
+static rc_res_directory *resources = NULL;
+
+static const char *filename;
+
+extern char *program_name;
+
+/* Read resource file */
+rc_res_directory *
+read_res_file (const char *fn)
+{
+ rc_uint_type off, flen;
+ windres_bfd wrbfd;
+ bfd *abfd;
+ asection *sec;
+ filename = fn;
+
+ flen = (rc_uint_type) get_file_size (filename);
+ if (! flen)
+ fatal ("can't open '%s' for input.", filename);
+ abfd = windres_open_as_binary (filename, 1);
+ sec = bfd_get_section_by_name (abfd, ".data");
+ if (sec == NULL)
+ bfd_fatal ("bfd_get_section_by_name");
+ set_windres_bfd (&wrbfd, abfd, sec,
+ (target_is_bigendian ? WR_KIND_BFD_BIN_B
+ : WR_KIND_BFD_BIN_L));
+ off = 0;
+
+ if (! probe_binary (&wrbfd, flen))
+ set_windres_bfd_endianness (&wrbfd, ! target_is_bigendian);
+
+ skip_null_resource (&wrbfd, &off, flen);
+
+ while (read_resource_entry (&wrbfd, &off, flen))
+ ;
+
+ bfd_close (abfd);
+
+ return resources;
+}
+
+/* Write resource file */
+void
+write_res_file (const char *fn,const rc_res_directory *resdir)
+{
+ asection *sec;
+ rc_uint_type language;
+ bfd *abfd;
+ windres_bfd wrbfd;
+ unsigned long sec_length = 0,sec_length_wrote;
+ static const bfd_byte sign[] =
+ {0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+ filename = fn;
+
+ abfd = windres_open_as_binary (filename, 0);
+ sec = bfd_make_section_with_flags (abfd, ".data",
+ (SEC_HAS_CONTENTS | SEC_ALLOC
+ | SEC_LOAD | SEC_DATA));
+ if (sec == NULL)
+ bfd_fatal ("bfd_make_section");
+ /* Requiring this is probably a bug in BFD. */
+ sec->output_section = sec;
+
+ set_windres_bfd (&wrbfd, abfd, sec,
+ (target_is_bigendian ? WR_KIND_BFD_BIN_B
+ : WR_KIND_BFD_BIN_L));
+
+ language = -1;
+ sec_length = write_res_directory ((windres_bfd *) NULL, 0x20UL, resdir,
+ (const rc_res_id *) NULL,
+ (const rc_res_id *) NULL, &language, 1);
+ if (! bfd_set_section_size (abfd, sec, (sec_length + 3) & ~3))
+ bfd_fatal ("bfd_set_section_size");
+ if ((sec_length & 3) != 0)
+ set_windres_bfd_content (&wrbfd, sign, sec_length, 4-(sec_length & 3));
+ set_windres_bfd_content (&wrbfd, sign, 0, sizeof (sign));
+ language = -1;
+ sec_length_wrote = write_res_directory (&wrbfd, 0x20UL, resdir,
+ (const rc_res_id *) NULL,
+ (const rc_res_id *) NULL,
+ &language, 1);
+ if (sec_length != sec_length_wrote)
+ fatal ("res write failed with different sizes (%lu/%lu).",
+ (unsigned long) sec_length, (unsigned long) sec_length_wrote);
+
+ bfd_close (abfd);
+ return;
+}
+
+/* Read a resource entry, returns 0 when all resources are read */
+static int
+read_resource_entry (windres_bfd *wrbfd, rc_uint_type *off, rc_uint_type omax)
+{
+ rc_res_id type;
+ rc_res_id name;
+ rc_res_res_info resinfo;
+ res_hdr reshdr;
+ void *buff;
+
+ rc_res_resource *r;
+ struct bin_res_info l;
+
+ off[0] = (off[0] + 3) & ~3;
+
+ /* Read header */
+ if ((off[0] + 8) > omax)
+ return 0;
+ read_res_data_hdr (wrbfd, off, omax, &reshdr);
+
+ /* read resource type */
+ read_res_id (wrbfd, off, omax, &type);
+ /* read resource id */
+ read_res_id (wrbfd, off, omax, &name);
+
+ off[0] = (off[0] + 3) & ~3;
+
+ /* Read additional resource header */
+ read_res_data (wrbfd, off, omax, &l, BIN_RES_INFO_SIZE);
+ resinfo.version = windres_get_32 (wrbfd, l.version, 4);
+ resinfo.memflags = windres_get_16 (wrbfd, l.memflags, 2);
+ resinfo.language = windres_get_16 (wrbfd, l.language, 2);
+ /* resinfo.version2 = windres_get_32 (wrbfd, l.version2, 4); */
+ resinfo.characteristics = windres_get_32 (wrbfd, l.characteristics, 4);
+
+ off[0] = (off[0] + 3) & ~3;
+
+ /* Allocate buffer for data */
+ buff = res_alloc (reshdr.data_size);
+ /* Read data */
+ read_res_data (wrbfd, off, omax, buff, reshdr.data_size);
+ /* Convert binary data to resource */
+ r = bin_to_res (wrbfd, type, buff, reshdr.data_size);
+ r->res_info = resinfo;
+ /* Add resource to resource directory */
+ res_add_resource (r, &type, &name, resinfo.language, 0);
+
+ return 1;
+}
+
+/* write resource directory to binary resource file */
+static rc_uint_type
+write_res_directory (windres_bfd *wrbfd, rc_uint_type off, const rc_res_directory *rd,
+ const rc_res_id *type, const rc_res_id *name, rc_uint_type *language,
+ int level)
+{
+ const rc_res_entry *re;
+
+ for (re = rd->entries; re != NULL; re = re->next)
+ {
+ switch (level)
+ {
+ case 1:
+ /* If we're at level 1, the key of this resource is the
+ type. This normally duplicates the information we have
+ stored with the resource itself, but we need to remember
+ the type if this is a user define resource type. */
+ type = &re->id;
+ break;
+
+ case 2:
+ /* If we're at level 2, the key of this resource is the name
+ we are going to use in the rc printout. */
+ name = &re->id;
+ break;
+
+ case 3:
+ /* If we're at level 3, then this key represents a language.
+ Use it to update the current language. */
+ if (! re->id.named
+ && re->id.u.id != (unsigned long) *language
+ && (re->id.u.id & 0xffff) == re->id.u.id)
+ {
+ *language = re->id.u.id;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ if (re->subdir)
+ off = write_res_directory (wrbfd, off, re->u.dir, type, name, language,
+ level + 1);
+ else
+ {
+ if (level == 3)
+ {
+ /* This is the normal case: the three levels are
+ TYPE/NAME/LANGUAGE. NAME will have been set at level
+ 2, and represents the name to use. We probably just
+ set LANGUAGE, and it will probably match what the
+ resource itself records if anything. */
+ off = write_res_resource (wrbfd, off, type, name, re->u.res,
+ language);
+ }
+ else
+ {
+ fprintf (stderr, "// Resource at unexpected level %d\n", level);
+ off = write_res_resource (wrbfd, off, type, (rc_res_id *) NULL,
+ re->u.res, language);
+ }
+ }
+ }
+
+ return off;
+}
+
+static rc_uint_type
+write_res_resource (windres_bfd *wrbfd, rc_uint_type off, const rc_res_id *type,
+ const rc_res_id *name, const rc_res_resource *res,
+ rc_uint_type *language ATTRIBUTE_UNUSED)
+{
+ int rt;
+
+ switch (res->type)
+ {
+ default:
+ abort ();
+
+ case RES_TYPE_ACCELERATOR:
+ rt = RT_ACCELERATOR;
+ break;
+
+ case RES_TYPE_BITMAP:
+ rt = RT_BITMAP;
+ break;
+
+ case RES_TYPE_CURSOR:
+ rt = RT_CURSOR;
+ break;
+
+ case RES_TYPE_GROUP_CURSOR:
+ rt = RT_GROUP_CURSOR;
+ break;
+
+ case RES_TYPE_DIALOG:
+ rt = RT_DIALOG;
+ break;
+
+ case RES_TYPE_FONT:
+ rt = RT_FONT;
+ break;
+
+ case RES_TYPE_FONTDIR:
+ rt = RT_FONTDIR;
+ break;
+
+ case RES_TYPE_ICON:
+ rt = RT_ICON;
+ break;
+
+ case RES_TYPE_GROUP_ICON:
+ rt = RT_GROUP_ICON;
+ break;
+
+ case RES_TYPE_MENU:
+ rt = RT_MENU;
+ break;
+
+ case RES_TYPE_MESSAGETABLE:
+ rt = RT_MESSAGETABLE;
+ break;
+
+ case RES_TYPE_RCDATA:
+ rt = RT_RCDATA;
+ break;
+
+ case RES_TYPE_STRINGTABLE:
+ rt = RT_STRING;
+ break;
+
+ case RES_TYPE_USERDATA:
+ rt = 0;
+ break;
+
+ case RES_TYPE_VERSIONINFO:
+ rt = RT_VERSION;
+ break;
+
+ case RES_TYPE_TOOLBAR:
+ rt = RT_TOOLBAR;
+ break;
+ }
+
+ if (rt != 0
+ && type != NULL
+ && (type->named || type->u.id != (unsigned long) rt))
+ {
+ fprintf (stderr, "// Unexpected resource type mismatch: ");
+ res_id_print (stderr, *type, 1);
+ fprintf (stderr, " != %d", rt);
+ abort ();
+ }
+
+ return write_res_bin (wrbfd, off, res, type, name, &res->res_info);
+}
+
+/* Write a resource in binary resource format */
+static rc_uint_type
+write_res_bin (windres_bfd *wrbfd, rc_uint_type off, const rc_res_resource *res,
+ const rc_res_id *type, const rc_res_id *name,
+ const rc_res_res_info *resinfo)
+{
+ rc_uint_type noff;
+ rc_uint_type datasize = 0;
+
+ noff = res_to_bin ((windres_bfd *) NULL, off, res);
+ datasize = noff - off;
+
+ off = write_res_header (wrbfd, off, datasize, type, name, resinfo);
+ return res_to_bin (wrbfd, off, res);
+}
+
+/* Get number of bytes needed to store an id in binary format */
+static unsigned long
+get_id_size (id)
+ const rc_res_id *id;
+{
+ if (id->named)
+ return sizeof (unichar) * (id->u.n.length + 1);
+ else
+ return sizeof (unichar) * 2;
+}
+
+/* Write a resource header */
+static rc_uint_type
+write_res_header (windres_bfd *wrbfd, rc_uint_type off, rc_uint_type datasize,
+ const rc_res_id *type, const rc_res_id *name,
+ const rc_res_res_info *resinfo)
+{
+ res_hdr reshdr;
+ reshdr.data_size = datasize;
+ reshdr.header_size = 24 + get_id_size (type) + get_id_size (name);
+
+ reshdr.header_size = (reshdr.header_size + 3) & ~3;
+
+ off = (off + 3) & ~3;
+
+ off = write_res_data_hdr (wrbfd, off, &reshdr);
+ off = write_res_id (wrbfd, off, type);
+ off = write_res_id (wrbfd, off, name);
+
+ off = (off + 3) & ~3;
+
+ off = write_res_info (wrbfd, off, resinfo);
+ off = (off + 3) & ~3;
+ return off;
+}
+
+static rc_uint_type
+write_res_data_hdr (windres_bfd *wrbfd, rc_uint_type off, res_hdr *hdr)
+{
+ if (wrbfd)
+ {
+ struct bin_res_hdr brh;
+ windres_put_32 (wrbfd, brh.data_size, hdr->data_size);
+ windres_put_32 (wrbfd, brh.header_size, hdr->header_size);
+ set_windres_bfd_content (wrbfd, &brh, off, BIN_RES_HDR_SIZE);
+ }
+ return off + BIN_RES_HDR_SIZE;
+}
+
+static void
+read_res_data_hdr (windres_bfd *wrbfd, rc_uint_type *off, rc_uint_type omax,
+ res_hdr *reshdr)
+{
+ struct bin_res_hdr brh;
+
+ if ((off[0] + BIN_RES_HDR_SIZE) > omax)
+ fatal ("%s: unexpected end of file %ld/%ld", filename,(long) off[0], (long) omax);
+
+ get_windres_bfd_content (wrbfd, &brh, off[0], BIN_RES_HDR_SIZE);
+ reshdr->data_size = windres_get_32 (wrbfd, brh.data_size, 4);
+ reshdr->header_size = windres_get_32 (wrbfd, brh.header_size, 4);
+ off[0] += BIN_RES_HDR_SIZE;
+}
+
+/* Read data from file, abort on failure */
+static void
+read_res_data (windres_bfd *wrbfd, rc_uint_type *off, rc_uint_type omax, void *data,
+ rc_uint_type size)
+{
+ if ((off[0] + size) > omax)
+ fatal ("%s: unexpected end of file %ld/%ld %ld", filename,(long) off[0],
+ (long) omax, (long) size);
+ get_windres_bfd_content (wrbfd, data, off[0], size);
+ off[0] += size;
+}
+
+/* Write a resource id */
+static rc_uint_type
+write_res_id (windres_bfd *wrbfd, rc_uint_type off, const rc_res_id *id)
+{
+ if (id->named)
+ {
+ rc_uint_type len = (((bfd_signed_vma) id->u.n.length < 0 ? 0 : id->u.n.length) + 1);
+ if (wrbfd)
+ {
+ rc_uint_type i;
+ bfd_byte *d = (bfd_byte *) xmalloc (len * sizeof (unichar));
+ for (i = 0; i < (len - 1); i++)
+ windres_put_16 (wrbfd, d + (i * sizeof (unichar)), id->u.n.name[i]);
+ windres_put_16 (wrbfd, d + (i * sizeof (unichar)), 0);
+ set_windres_bfd_content (wrbfd, d, off, (len * sizeof (unichar)));
+ }
+ off += (len * sizeof (unichar));
+ }
+ else
+ {
+ if (wrbfd)
+ {
+ struct bin_res_id bid;
+ windres_put_16 (wrbfd, bid.sig, 0xffff);
+ windres_put_16 (wrbfd, bid.id, id->u.id);
+ set_windres_bfd_content (wrbfd, &bid, off, BIN_RES_ID);
+ }
+ off += BIN_RES_ID;
+ }
+ return off;
+}
+
+/* Write resource info */
+static rc_uint_type
+write_res_info (windres_bfd *wrbfd, rc_uint_type off, const rc_res_res_info *info)
+{
+ if (wrbfd)
+ {
+ struct bin_res_info l;
+
+ windres_put_32 (wrbfd, l.version, info->version);
+ windres_put_16 (wrbfd, l.memflags, info->memflags);
+ windres_put_16 (wrbfd, l.language, info->language);
+ windres_put_32 (wrbfd, l.version2, info->version);
+ windres_put_32 (wrbfd, l.characteristics, info->characteristics);
+ set_windres_bfd_content (wrbfd, &l, off, BIN_RES_INFO_SIZE);
+ }
+ return off + BIN_RES_INFO_SIZE;
+}
+
+/* read a resource identifier */
+static void
+read_res_id (windres_bfd *wrbfd, rc_uint_type *off, rc_uint_type omax, rc_res_id *id)
+{
+ struct bin_res_id bid;
+ unsigned short ord;
+ unichar *id_s = NULL;
+ rc_uint_type len;
+
+ read_res_data (wrbfd, off, omax, &bid, BIN_RES_ID - 2);
+ ord = (unsigned short) windres_get_16 (wrbfd, bid.sig, 2);
+ if (ord == 0xFFFF) /* an ordinal id */
+ {
+ read_res_data (wrbfd, off, omax, bid.id, BIN_RES_ID - 2);
+ id->named = 0;
+ id->u.id = windres_get_16 (wrbfd, bid.id, 2);
+ }
+ else
+ /* named id */
+ {
+ off[0] -= 2;
+ id_s = read_unistring (wrbfd, off, omax, &len);
+ id->named = 1;
+ id->u.n.length = len;
+ id->u.n.name = id_s;
+ }
+}
+
+/* Read a null terminated UNICODE string */
+static unichar *
+read_unistring (windres_bfd *wrbfd, rc_uint_type *off, rc_uint_type omax,
+ rc_uint_type *len)
+{
+ unichar *s;
+ bfd_byte d[2];
+ unichar c;
+ unichar *p;
+ rc_uint_type l;
+ rc_uint_type soff = off[0];
+
+ do
+ {
+ read_res_data (wrbfd, &soff, omax, d, sizeof (unichar));
+ c = windres_get_16 (wrbfd, d, 2);
+ }
+ while (c != 0);
+ l = ((soff - off[0]) / sizeof (unichar));
+
+ /* there are hardly any names longer than 256 characters, but anyway. */
+ p = s = (unichar *) xmalloc (sizeof (unichar) * l);
+ do
+ {
+ read_res_data (wrbfd, off, omax, d, sizeof (unichar));
+ c = windres_get_16 (wrbfd, d, 2);
+ *p++ = c;
+ }
+ while (c != 0);
+ *len = l - 1;
+ return s;
+}
+
+static int
+probe_binary (windres_bfd *wrbfd, rc_uint_type omax)
+{
+ rc_uint_type off;
+ res_hdr reshdr;
+
+ off = 0;
+ read_res_data_hdr (wrbfd, &off, omax, &reshdr);
+ if (reshdr.data_size != 0)
+ return 1;
+ if ((reshdr.header_size != 0x20 && ! target_is_bigendian)
+ || (reshdr.header_size != 0x20000000 && target_is_bigendian))
+ return 1;
+
+ /* Subtract size of HeaderSize. DataSize has to be zero. */
+ off += 0x20 - BIN_RES_HDR_SIZE;
+ if ((off + BIN_RES_HDR_SIZE) >= omax)
+ return 1;
+ read_res_data_hdr (wrbfd, &off, omax, &reshdr);
+ /* off is advanced by BIN_RES_HDR_SIZE in read_res_data_hdr()
+ which is part of reshdr.header_size. We shouldn't take it
+ into account twice. */
+ if ((off - BIN_RES_HDR_SIZE + reshdr.data_size + reshdr.header_size) > omax)
+ return 0;
+ return 1;
+}
+
+/* Check if file is a win32 binary resource file, if so
+ skip past the null resource. Returns 0 if successful, -1 on
+ error.
+ */
+static void
+skip_null_resource (windres_bfd *wrbfd, rc_uint_type *off, rc_uint_type omax)
+{
+ res_hdr reshdr;
+ read_res_data_hdr (wrbfd, off, omax, &reshdr);
+ if (reshdr.data_size != 0)
+ goto skip_err;
+ if ((reshdr.header_size != 0x20 && ! target_is_bigendian)
+ || (reshdr.header_size != 0x20000000 && target_is_bigendian))
+ goto skip_err;
+
+ /* Subtract size of HeaderSize. DataSize has to be zero. */
+ off[0] += 0x20 - BIN_RES_HDR_SIZE;
+ if (off[0] >= omax)
+ goto skip_err;
+
+ return;
+
+skip_err:
+ fprintf (stderr, "%s: %s: Not a valid WIN32 resource file\n", program_name,
+ filename);
+ xexit (1);
+}
+
+/* Add a resource to resource directory */
+static void
+res_add_resource (rc_res_resource *r, const rc_res_id *type, const rc_res_id *id,
+ rc_uint_type language, int dupok)
+{
+ rc_res_id a[3];
+
+ a[0] = *type;
+ a[1] = *id;
+ a[2].named = 0;
+ a[2].u.id = language;
+ res_append_resource (&resources, r, 3, a, dupok);
+}
+
+/* Append a resource to resource directory.
+ This is just copied from define_resource
+ and modified to add an existing resource.
+ */
+static void
+res_append_resource (rc_res_directory **res_dirs, rc_res_resource *resource,
+ int cids, const rc_res_id *ids, int dupok)
+{
+ rc_res_entry *re = NULL;
+ int i;
+
+ assert (cids > 0);
+ for (i = 0; i < cids; i++)
+ {
+ rc_res_entry **pp;
+
+ if (*res_dirs == NULL)
+ {
+ *res_dirs = ((rc_res_directory *)
+ res_alloc (sizeof (rc_res_directory)));
+
+ (*res_dirs)->characteristics = 0;
+ /* Using a real timestamp only serves to create non-deterministic
+ results. Use zero instead. */
+ (*res_dirs)->time = 0;
+ (*res_dirs)->major = 0;
+ (*res_dirs)->minor = 0;
+ (*res_dirs)->entries = NULL;
+ }
+
+ for (pp = &(*res_dirs)->entries; *pp != NULL; pp = &(*pp)->next)
+ if (res_id_cmp ((*pp)->id, ids[i]) == 0)
+ break;
+
+ if (*pp != NULL)
+ re = *pp;
+ else
+ {
+ re = (rc_res_entry *) res_alloc (sizeof (rc_res_entry));
+ re->next = NULL;
+ re->id = ids[i];
+ if ((i + 1) < cids)
+ {
+ re->subdir = 1;
+ re->u.dir = NULL;
+ }
+ else
+ {
+ re->subdir = 0;
+ re->u.res = NULL;
+ }
+
+ *pp = re;
+ }
+
+ if ((i + 1) < cids)
+ {
+ if (! re->subdir)
+ {
+ fprintf (stderr, "%s: ", program_name);
+ res_ids_print (stderr, i, ids);
+ fprintf (stderr, ": expected to be a directory\n");
+ xexit (1);
+ }
+
+ res_dirs = &re->u.dir;
+ }
+ }
+
+ if (re->subdir)
+ {
+ fprintf (stderr, "%s: ", program_name);
+ res_ids_print (stderr, cids, ids);
+ fprintf (stderr, ": expected to be a leaf\n");
+ xexit (1);
+ }
+
+ if (re->u.res != NULL)
+ {
+ if (dupok)
+ return;
+
+ fprintf (stderr, "%s: warning: ", program_name);
+ res_ids_print (stderr, cids, ids);
+ fprintf (stderr, ": duplicate value\n");
+ }
+
+ re->u.res = resource;
+}
diff --git a/binutils-2.24/binutils/sanity.sh b/binutils-2.24/binutils/sanity.sh
new file mode 100755
index 00000000..8edb490d
--- /dev/null
+++ b/binutils-2.24/binutils/sanity.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+### quick sanity test for the binutils.
+###
+# This file was written K. Richard Pixley.
+# Copyright 2007 Free Software Foundation, Inc.
+
+# This program 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 3 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. */
+
+### fail on errors
+set -e
+
+### first arg is directory in which binaries to be tested reside.
+case "$1" in
+"") BIN=. ;;
+*) BIN="$1" ;;
+esac
+
+### size
+for i in size objdump nm ar strip ranlib ; do
+ ${BIN}/size ${BIN}/$i > /dev/null
+done
+
+### objdump
+for i in size objdump nm ar strip ranlib ; do
+ ${BIN}/objdump -ahifdrtxsl ${BIN}/$i > /dev/null
+done
+
+### nm
+for i in size objdump nm ar strip ranlib ; do
+ ${BIN}/nm ${BIN}/$i > /dev/null
+done
+
+### strip
+TMPDIR=./binutils-$$
+mkdir ${TMPDIR}
+
+cp ${BIN}/strip ${TMPDIR}/strip
+
+for i in size objdump nm ar ranlib ; do
+ cp ${BIN}/$i ${TMPDIR}/$i
+ ${BIN}/strip ${TMPDIR}/$i
+ cp ${BIN}/$i ${TMPDIR}/$i
+ ${TMPDIR}/strip ${TMPDIR}/$i
+done
+
+### ar
+
+### ranlib
+
+rm -rf ${TMPDIR}
+
+exit 0
diff --git a/binutils-2.24/binutils/size.c b/binutils-2.24/binutils/size.c
new file mode 100644
index 00000000..0937de51
--- /dev/null
+++ b/binutils-2.24/binutils/size.c
@@ -0,0 +1,611 @@
+/* size.c -- report size of various sections of an executable file.
+ Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ 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 3 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. */
+
+/* Extensions/incompatibilities:
+ o - BSD output has filenames at the end.
+ o - BSD output can appear in different radicies.
+ o - SysV output has less redundant whitespace. Filename comes at end.
+ o - SysV output doesn't show VMA which is always the same as the PMA.
+ o - We also handle core files.
+ o - We also handle archives.
+ If you write shell scripts which manipulate this info then you may be
+ out of luck; there's no --compatibility or --pedantic option. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "getopt.h"
+#include "bucomm.h"
+
+#ifndef BSD_DEFAULT
+#define BSD_DEFAULT 1
+#endif
+
+/* Program options. */
+
+static enum
+ {
+ decimal, octal, hex
+ }
+radix = decimal;
+
+/* 0 means use AT&T-style output. */
+static int berkeley_format = BSD_DEFAULT;
+
+static int show_version = 0;
+static int show_help = 0;
+static int show_totals = 0;
+static int show_common = 0;
+
+static bfd_size_type common_size;
+static bfd_size_type total_bsssize;
+static bfd_size_type total_datasize;
+static bfd_size_type total_textsize;
+
+/* Program exit status. */
+static int return_code = 0;
+
+static char *target = NULL;
+
+/* Forward declarations. */
+
+static void display_file (char *);
+static void rprint_number (int, bfd_size_type);
+static void print_sizes (bfd * file);
+
+static void
+usage (FILE *stream, int status)
+{
+ fprintf (stream, _("Usage: %s [option(s)] [file(s)]\n"), program_name);
+ fprintf (stream, _(" Displays the sizes of sections inside binary files\n"));
+ fprintf (stream, _(" If no input file(s) are specified, a.out is assumed\n"));
+ fprintf (stream, _(" The options are:\n\
+ -A|-B --format={sysv|berkeley} Select output style (default is %s)\n\
+ -o|-d|-x --radix={8|10|16} Display numbers in octal, decimal or hex\n\
+ -t --totals Display the total sizes (Berkeley only)\n\
+ --common Display total size for *COM* syms\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"),
+#if BSD_DEFAULT
+ "berkeley"
+#else
+ "sysv"
+#endif
+);
+ list_supported_targets (program_name, stream);
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+ exit (status);
+}
+
+#define OPTION_FORMAT (200)
+#define OPTION_RADIX (OPTION_FORMAT + 1)
+#define OPTION_TARGET (OPTION_RADIX + 1)
+
+static struct option long_options[] =
+{
+ {"common", no_argument, &show_common, 1},
+ {"format", required_argument, 0, OPTION_FORMAT},
+ {"radix", required_argument, 0, OPTION_RADIX},
+ {"target", required_argument, 0, OPTION_TARGET},
+ {"totals", no_argument, &show_totals, 1},
+ {"version", no_argument, &show_version, 1},
+ {"help", no_argument, &show_help, 1},
+ {0, no_argument, 0, 0}
+};
+
+int main (int, char **);
+
+int
+main (int argc, char **argv)
+{
+ int temp;
+ int c;
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = *argv;
+ xmalloc_set_program_name (program_name);
+
+ expandargv (&argc, &argv);
+
+ bfd_init ();
+ set_default_bfd_target ();
+
+ while ((c = getopt_long (argc, argv, "ABHhVvdfotx", long_options,
+ (int *) 0)) != EOF)
+ switch (c)
+ {
+ case OPTION_FORMAT:
+ switch (*optarg)
+ {
+ case 'B':
+ case 'b':
+ berkeley_format = 1;
+ break;
+ case 'S':
+ case 's':
+ berkeley_format = 0;
+ break;
+ default:
+ non_fatal (_("invalid argument to --format: %s"), optarg);
+ usage (stderr, 1);
+ }
+ break;
+
+ case OPTION_TARGET:
+ target = optarg;
+ break;
+
+ case OPTION_RADIX:
+#ifdef ANSI_LIBRARIES
+ temp = strtol (optarg, NULL, 10);
+#else
+ temp = atol (optarg);
+#endif
+ switch (temp)
+ {
+ case 10:
+ radix = decimal;
+ break;
+ case 8:
+ radix = octal;
+ break;
+ case 16:
+ radix = hex;
+ break;
+ default:
+ non_fatal (_("Invalid radix: %s\n"), optarg);
+ usage (stderr, 1);
+ }
+ break;
+
+ case 'A':
+ berkeley_format = 0;
+ break;
+ case 'B':
+ berkeley_format = 1;
+ break;
+ case 'v':
+ case 'V':
+ show_version = 1;
+ break;
+ case 'd':
+ radix = decimal;
+ break;
+ case 'x':
+ radix = hex;
+ break;
+ case 'o':
+ radix = octal;
+ break;
+ case 't':
+ show_totals = 1;
+ break;
+ case 'f': /* FIXME : For sysv68, `-f' means `full format', i.e.
+ `[fname:] M(.text) + N(.data) + O(.bss) + P(.comment) = Q'
+ where `fname: ' appears only if there are >= 2 input files,
+ and M, N, O, P, Q are expressed in decimal by default,
+ hexa or octal if requested by `-x' or `-o'.
+ Just to make things interesting, Solaris also accepts -f,
+ which prints out the size of each allocatable section, the
+ name of the section, and the total of the section sizes. */
+ /* For the moment, accept `-f' silently, and ignore it. */
+ break;
+ case 0:
+ break;
+ case 'h':
+ case 'H':
+ case '?':
+ usage (stderr, 1);
+ }
+
+ if (show_version)
+ print_version ("size");
+ if (show_help)
+ usage (stdout, 0);
+
+ if (optind == argc)
+ display_file ("a.out");
+ else
+ for (; optind < argc;)
+ display_file (argv[optind++]);
+
+ if (show_totals && berkeley_format)
+ {
+ bfd_size_type total = total_textsize + total_datasize + total_bsssize;
+
+ rprint_number (7, total_textsize);
+ putchar('\t');
+ rprint_number (7, total_datasize);
+ putchar('\t');
+ rprint_number (7, total_bsssize);
+ printf (((radix == octal) ? "\t%7lo\t%7lx\t" : "\t%7lu\t%7lx\t"),
+ (unsigned long) total, (unsigned long) total);
+ fputs ("(TOTALS)\n", stdout);
+ }
+
+ return return_code;
+}
+
+/* Total size required for common symbols in ABFD. */
+
+static void
+calculate_common_size (bfd *abfd)
+{
+ asymbol **syms = NULL;
+ long storage, symcount;
+
+ common_size = 0;
+ if ((bfd_get_file_flags (abfd) & (EXEC_P | DYNAMIC | HAS_SYMS)) != HAS_SYMS)
+ return;
+
+ storage = bfd_get_symtab_upper_bound (abfd);
+ if (storage < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+ if (storage)
+ syms = (asymbol **) xmalloc (storage);
+
+ symcount = bfd_canonicalize_symtab (abfd, syms);
+ if (symcount < 0)
+ bfd_fatal (bfd_get_filename (abfd));
+
+ while (--symcount >= 0)
+ {
+ asymbol *sym = syms[symcount];
+
+ if (bfd_is_com_section (sym->section)
+ && (sym->flags & BSF_SECTION_SYM) == 0)
+ common_size += sym->value;
+ }
+ free (syms);
+}
+
+/* Display stats on file or archive member ABFD. */
+
+static void
+display_bfd (bfd *abfd)
+{
+ char **matching;
+
+ if (bfd_check_format (abfd, bfd_archive))
+ /* An archive within an archive. */
+ return;
+
+ if (bfd_check_format_matches (abfd, bfd_object, &matching))
+ {
+ print_sizes (abfd);
+ printf ("\n");
+ return;
+ }
+
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ {
+ bfd_nonfatal (bfd_get_filename (abfd));
+ list_matching_formats (matching);
+ free (matching);
+ return_code = 3;
+ return;
+ }
+
+ if (bfd_check_format_matches (abfd, bfd_core, &matching))
+ {
+ const char *core_cmd;
+
+ print_sizes (abfd);
+ fputs (" (core file", stdout);
+
+ core_cmd = bfd_core_file_failing_command (abfd);
+ if (core_cmd)
+ printf (" invoked as %s", core_cmd);
+
+ puts (")\n");
+ return;
+ }
+
+ bfd_nonfatal (bfd_get_filename (abfd));
+
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ {
+ list_matching_formats (matching);
+ free (matching);
+ }
+
+ return_code = 3;
+}
+
+static void
+display_archive (bfd *file)
+{
+ bfd *arfile = (bfd *) NULL;
+ bfd *last_arfile = (bfd *) NULL;
+
+ for (;;)
+ {
+ bfd_set_error (bfd_error_no_error);
+
+ arfile = bfd_openr_next_archived_file (file, arfile);
+ if (arfile == NULL)
+ {
+ if (bfd_get_error () != bfd_error_no_more_archived_files)
+ {
+ bfd_nonfatal (bfd_get_filename (file));
+ return_code = 2;
+ }
+ break;
+ }
+
+ display_bfd (arfile);
+
+ if (last_arfile != NULL)
+ bfd_close (last_arfile);
+ last_arfile = arfile;
+ }
+
+ if (last_arfile != NULL)
+ bfd_close (last_arfile);
+}
+
+static void
+display_file (char *filename)
+{
+ bfd *file;
+
+ if (get_file_size (filename) < 1)
+ {
+ return_code = 1;
+ return;
+ }
+
+ file = bfd_openr (filename, target);
+ if (file == NULL)
+ {
+ bfd_nonfatal (filename);
+ return_code = 1;
+ return;
+ }
+
+ if (bfd_check_format (file, bfd_archive))
+ display_archive (file);
+ else
+ display_bfd (file);
+
+ if (!bfd_close (file))
+ {
+ bfd_nonfatal (filename);
+ return_code = 1;
+ return;
+ }
+}
+
+static int
+size_number (bfd_size_type num)
+{
+ char buffer[40];
+
+ sprintf (buffer,
+ (radix == decimal ? "%" BFD_VMA_FMT "u" :
+ ((radix == octal) ? "0%" BFD_VMA_FMT "o" : "0x%" BFD_VMA_FMT "x")),
+ num);
+
+ return strlen (buffer);
+}
+
+static void
+rprint_number (int width, bfd_size_type num)
+{
+ char buffer[40];
+
+ sprintf (buffer,
+ (radix == decimal ? "%" BFD_VMA_FMT "u" :
+ ((radix == octal) ? "0%" BFD_VMA_FMT "o" : "0x%" BFD_VMA_FMT "x")),
+ num);
+
+ printf ("%*s", width, buffer);
+}
+
+static bfd_size_type bsssize;
+static bfd_size_type datasize;
+static bfd_size_type textsize;
+
+static void
+berkeley_sum (bfd *abfd ATTRIBUTE_UNUSED, sec_ptr sec,
+ void *ignore ATTRIBUTE_UNUSED)
+{
+ flagword flags;
+ bfd_size_type size;
+
+ flags = bfd_get_section_flags (abfd, sec);
+ if ((flags & SEC_ALLOC) == 0)
+ return;
+
+ size = bfd_get_section_size (sec);
+ if ((flags & SEC_CODE) != 0 || (flags & SEC_READONLY) != 0)
+ textsize += size;
+ else if ((flags & SEC_HAS_CONTENTS) != 0)
+ datasize += size;
+ else
+ bsssize += size;
+}
+
+static void
+print_berkeley_format (bfd *abfd)
+{
+ static int files_seen = 0;
+ bfd_size_type total;
+
+ bsssize = 0;
+ datasize = 0;
+ textsize = 0;
+
+ bfd_map_over_sections (abfd, berkeley_sum, NULL);
+
+ bsssize += common_size;
+ if (files_seen++ == 0)
+ puts ((radix == octal) ? " text\t data\t bss\t oct\t hex\tfilename" :
+ " text\t data\t bss\t dec\t hex\tfilename");
+
+ total = textsize + datasize + bsssize;
+
+ if (show_totals)
+ {
+ total_textsize += textsize;
+ total_datasize += datasize;
+ total_bsssize += bsssize;
+ }
+
+ rprint_number (7, textsize);
+ putchar ('\t');
+ rprint_number (7, datasize);
+ putchar ('\t');
+ rprint_number (7, bsssize);
+ printf (((radix == octal) ? "\t%7lo\t%7lx\t" : "\t%7lu\t%7lx\t"),
+ (unsigned long) total, (unsigned long) total);
+
+ fputs (bfd_get_filename (abfd), stdout);
+
+ if (bfd_my_archive (abfd))
+ printf (" (ex %s)", bfd_get_filename (bfd_my_archive (abfd)));
+}
+
+/* I REALLY miss lexical functions! */
+bfd_size_type svi_total = 0;
+bfd_vma svi_maxvma = 0;
+int svi_namelen = 0;
+int svi_vmalen = 0;
+int svi_sizelen = 0;
+
+static void
+sysv_internal_sizer (bfd *file ATTRIBUTE_UNUSED, sec_ptr sec,
+ void *ignore ATTRIBUTE_UNUSED)
+{
+ bfd_size_type size = bfd_section_size (file, sec);
+
+ if ( ! bfd_is_abs_section (sec)
+ && ! bfd_is_com_section (sec)
+ && ! bfd_is_und_section (sec))
+ {
+ int namelen = strlen (bfd_section_name (file, sec));
+
+ if (namelen > svi_namelen)
+ svi_namelen = namelen;
+
+ svi_total += size;
+
+ if (bfd_section_vma (file, sec) > svi_maxvma)
+ svi_maxvma = bfd_section_vma (file, sec);
+ }
+}
+
+static void
+sysv_one_line (const char *name, bfd_size_type size, bfd_vma vma)
+{
+ printf ("%-*s ", svi_namelen, name);
+ rprint_number (svi_sizelen, size);
+ printf (" ");
+ rprint_number (svi_vmalen, vma);
+ printf ("\n");
+}
+
+static void
+sysv_internal_printer (bfd *file ATTRIBUTE_UNUSED, sec_ptr sec,
+ void *ignore ATTRIBUTE_UNUSED)
+{
+ bfd_size_type size = bfd_section_size (file, sec);
+
+ if ( ! bfd_is_abs_section (sec)
+ && ! bfd_is_com_section (sec)
+ && ! bfd_is_und_section (sec))
+ {
+ svi_total += size;
+
+ sysv_one_line (bfd_section_name (file, sec),
+ size,
+ bfd_section_vma (file, sec));
+ }
+}
+
+static void
+print_sysv_format (bfd *file)
+{
+ /* Size all of the columns. */
+ svi_total = 0;
+ svi_maxvma = 0;
+ svi_namelen = 0;
+ bfd_map_over_sections (file, sysv_internal_sizer, NULL);
+ if (show_common)
+ {
+ if (svi_namelen < (int) sizeof ("*COM*") - 1)
+ svi_namelen = sizeof ("*COM*") - 1;
+ svi_total += common_size;
+ }
+
+ svi_vmalen = size_number ((bfd_size_type)svi_maxvma);
+
+ if ((size_t) svi_vmalen < sizeof ("addr") - 1)
+ svi_vmalen = sizeof ("addr")-1;
+
+ svi_sizelen = size_number (svi_total);
+ if ((size_t) svi_sizelen < sizeof ("size") - 1)
+ svi_sizelen = sizeof ("size")-1;
+
+ svi_total = 0;
+ printf ("%s ", bfd_get_filename (file));
+
+ if (bfd_my_archive (file))
+ printf (" (ex %s)", bfd_get_filename (bfd_my_archive (file)));
+
+ printf (":\n%-*s %*s %*s\n", svi_namelen, "section",
+ svi_sizelen, "size", svi_vmalen, "addr");
+
+ bfd_map_over_sections (file, sysv_internal_printer, NULL);
+ if (show_common)
+ {
+ svi_total += common_size;
+ sysv_one_line ("*COM*", common_size, 0);
+ }
+
+ printf ("%-*s ", svi_namelen, "Total");
+ rprint_number (svi_sizelen, svi_total);
+ printf ("\n\n");
+}
+
+static void
+print_sizes (bfd *file)
+{
+ if (show_common)
+ calculate_common_size (file);
+ if (berkeley_format)
+ print_berkeley_format (file);
+ else
+ print_sysv_format (file);
+}
diff --git a/binutils-2.24/binutils/srconv.c b/binutils-2.24/binutils/srconv.c
new file mode 100644
index 00000000..7b3d4a75
--- /dev/null
+++ b/binutils-2.24/binutils/srconv.c
@@ -0,0 +1,1892 @@
+/* srconv.c -- Sysroff conversion program
+ Copyright 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2007, 2008, 2009 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 3 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 Steve Chamberlain (sac@cygnus.com)
+
+ This program can be used to convert a coff object file
+ into a Hitachi OM/LM (Sysroff) format.
+
+ All debugging information is preserved */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+#include "sysroff.h"
+#include "coffgrok.h"
+#include "libiberty.h"
+#include "filenames.h"
+#include "getopt.h"
+
+#include "coff/internal.h"
+#include "../bfd/libcoff.h"
+
+/*#define FOOP1 1 */
+
+static int addrsize;
+static char *toolname;
+static char **rnames;
+
+static int get_member_id (int);
+static int get_ordinary_id (int);
+static char *section_translate (char *);
+static char *strip_suffix (const char *);
+static void checksum (FILE *, unsigned char *, int, int);
+static void writeINT (int, unsigned char *, int *, int, FILE *);
+static void writeBITS (int, unsigned char *, int *, int);
+static void writeBARRAY (barray, unsigned char *, int *, int, FILE *);
+static void writeCHARS (char *, unsigned char *, int *, int, FILE *);
+static void wr_tr (void);
+static void wr_un (struct coff_ofile *, struct coff_sfile *, int, int);
+static void wr_hd (struct coff_ofile *);
+static void wr_sh (struct coff_ofile *, struct coff_section *);
+static void wr_ob (struct coff_ofile *, struct coff_section *);
+static void wr_rl (struct coff_ofile *, struct coff_section *);
+static void wr_object_body (struct coff_ofile *);
+static void wr_dps_start
+ (struct coff_sfile *, struct coff_section *, struct coff_scope *, int, int);
+static void wr_dps_end (struct coff_section *, struct coff_scope *, int);
+static int *nints (int);
+static void walk_tree_type_1
+ (struct coff_sfile *, struct coff_symbol *, struct coff_type *, int);
+static void walk_tree_type
+ (struct coff_sfile *, struct coff_symbol *, struct coff_type *, int);
+static void walk_tree_symbol
+ (struct coff_sfile *, struct coff_section *, struct coff_symbol *, int);
+static void walk_tree_scope
+ (struct coff_section *, struct coff_sfile *, struct coff_scope *, int, int);
+static void walk_tree_sfile (struct coff_section *, struct coff_sfile *);
+static void wr_program_structure (struct coff_ofile *, struct coff_sfile *);
+static void wr_du (struct coff_ofile *, struct coff_sfile *, int);
+static void wr_dus (struct coff_ofile *, struct coff_sfile *);
+static int find_base (struct coff_sfile *, struct coff_section *);
+static void wr_dln (struct coff_ofile *, struct coff_sfile *, int);
+static void wr_globals (struct coff_ofile *, struct coff_sfile *, int);
+static void wr_debug (struct coff_ofile *);
+static void wr_cs (void);
+static int wr_sc (struct coff_ofile *, struct coff_sfile *);
+static void wr_er (struct coff_ofile *, struct coff_sfile *, int);
+static void wr_ed (struct coff_ofile *, struct coff_sfile *, int);
+static void wr_unit_info (struct coff_ofile *);
+static void wr_module (struct coff_ofile *);
+static int align (int);
+static void prescan (struct coff_ofile *);
+static void show_usage (FILE *, int);
+extern int main (int, char **);
+
+static FILE *file;
+static bfd *abfd;
+static int debug = 0;
+static int quick = 0;
+static int noprescan = 0;
+static struct coff_ofile *tree;
+/* Obsolete ??
+ static int absolute_p;
+ */
+
+static int segmented_p;
+static int code;
+
+static int ids1[20000];
+static int ids2[20000];
+
+static int base1 = 0x18;
+static int base2 = 0x2018;
+
+static int
+get_member_id (int x)
+{
+ if (ids2[x])
+ return ids2[x];
+
+ ids2[x] = base2++;
+ return ids2[x];
+}
+
+static int
+get_ordinary_id (int x)
+{
+ if (ids1[x])
+ return ids1[x];
+
+ ids1[x] = base1++;
+ return ids1[x];
+}
+static char *
+section_translate (char *n)
+{
+ if (strcmp (n, ".text") == 0)
+ return "P";
+ if (strcmp (n, ".data") == 0)
+ return "D";
+ if (strcmp (n, ".bss") == 0)
+ return "B";
+ return n;
+}
+
+#define DATE "940201073000"; /* Just a time on my birthday */
+
+static char *
+strip_suffix (const char *name)
+{
+ int i;
+ char *res;
+
+ for (i = 0; name[i] != 0 && name[i] != '.'; i++)
+ ;
+ res = (char *) xmalloc (i + 1);
+ memcpy (res, name, i);
+ res[i] = 0;
+ return res;
+}
+
+/* IT LEN stuff CS */
+static void
+checksum (FILE *ffile, unsigned char *ptr, int size, int ccode)
+{
+ int j;
+ int last;
+ int sum = 0;
+ int bytes = size / 8;
+
+ last = !(ccode & 0xff00);
+ if (size & 0x7)
+ abort ();
+ ptr[0] = ccode | (last ? 0x80 : 0);
+ ptr[1] = bytes + 1;
+
+ for (j = 0; j < bytes; j++)
+ sum += ptr[j];
+
+ /* Glue on a checksum too. */
+ ptr[bytes] = ~sum;
+ if (fwrite (ptr, bytes + 1, 1, ffile) != 1)
+ /* FIXME: Return error status. */
+ abort ();
+}
+
+
+static void
+writeINT (int n, unsigned char *ptr, int *idx, int size, FILE *ffile)
+{
+ int byte = *idx / 8;
+
+ if (size == -2)
+ size = addrsize;
+ else if (size == -1)
+ size = 0;
+
+ if (byte > 240)
+ {
+ /* Lets write out that record and do another one. */
+ checksum (ffile, ptr, *idx, code | 0x1000);
+ *idx = 16;
+ byte = *idx / 8;
+ }
+
+ switch (size)
+ {
+ case 0:
+ break;
+ case 1:
+ ptr[byte] = n;
+ break;
+ case 2:
+ ptr[byte + 0] = n >> 8;
+ ptr[byte + 1] = n;
+ break;
+ case 4:
+ ptr[byte + 0] = n >> 24;
+ ptr[byte + 1] = n >> 16;
+ ptr[byte + 2] = n >> 8;
+ ptr[byte + 3] = n >> 0;
+ break;
+ default:
+ abort ();
+ }
+ *idx += size * 8;
+}
+
+static void
+writeBITS (int val, unsigned char *ptr, int *idx, int size)
+{
+ int byte = *idx / 8;
+ int bit = *idx % 8;
+ int old;
+
+ *idx += size;
+
+ old = ptr[byte];
+ /* Turn off all about to change bits. */
+ old &= ~((~0 >> (8 - bit - size)) & ((1 << size) - 1));
+ /* Turn on the bits we want. */
+ old |= (val & ((1 << size) - 1)) << (8 - bit - size);
+ ptr[byte] = old;
+}
+
+static void
+writeBARRAY (barray data, unsigned char *ptr, int *idx,
+ int size ATTRIBUTE_UNUSED, FILE *ffile)
+{
+ int i;
+
+ writeINT (data.len, ptr, idx, 1, ffile);
+ for (i = 0; i < data.len; i++)
+ writeINT (data.data[i], ptr, idx, 1, ffile);
+}
+
+static void
+writeCHARS (char *string, unsigned char *ptr, int *idx, int size, FILE *ffile)
+{
+ int i = *idx / 8;
+
+ if (i > 240)
+ {
+ /* Lets write out that record and do another one. */
+ checksum (ffile, ptr, *idx, code | 0x1000);
+ *idx = 16;
+ i = *idx / 8;
+ }
+
+ if (size == 0)
+ {
+ /* Variable length string. */
+ size = strlen (string);
+ ptr[i++] = size;
+ }
+
+ /* BUG WAITING TO HAPPEN. */
+ memcpy (ptr + i, string, size);
+ i += size;
+ *idx = i * 8;
+}
+
+#define SYSROFF_SWAP_OUT
+#include "sysroff.c"
+
+static char *rname_sh[] =
+{
+ "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15"
+};
+
+static char *rname_h8300[] =
+{
+ "ER0", "ER1", "ER2", "ER3", "ER4", "ER5", "ER6", "ER7", "PC", "CCR"
+};
+
+static void
+wr_tr (void)
+{
+ /* The TR block is not normal - it doesn't have any contents. */
+
+ static char b[] =
+ {
+ 0xff, /* IT */
+ 0x03, /* RL */
+ 0xfd, /* CS */
+ };
+
+ if (fwrite (b, sizeof (b), 1, file) != 1)
+ /* FIXME: Return error status. */
+ abort ();
+}
+
+static void
+wr_un (struct coff_ofile *ptr, struct coff_sfile *sfile, int first,
+ int nsecs ATTRIBUTE_UNUSED)
+{
+ struct IT_un un;
+ struct coff_symbol *s;
+
+ un.spare1 = 0;
+
+ if (bfd_get_file_flags (abfd) & EXEC_P)
+ un.format = FORMAT_LM;
+ else
+ un.format = FORMAT_OM;
+ un.spare1 = 0;
+
+ /* Don't count the abs section. */
+ un.nsections = ptr->nsections - 1;
+
+ un.nextdefs = 0;
+ un.nextrefs = 0;
+ /* Count all the undefined and defined variables with global scope. */
+
+ if (first)
+ {
+ for (s = ptr->symbol_list_head; s; s = s->next_in_ofile_list)
+ {
+ if (s->visible->type == coff_vis_ext_def
+ || s->visible->type == coff_vis_common)
+ un.nextdefs++;
+
+ if (s->visible->type == coff_vis_ext_ref)
+ un.nextrefs++;
+ }
+ }
+ un.tool = toolname;
+ un.tcd = DATE;
+ un.linker = "L_GX00";
+ un.lcd = DATE;
+ un.name = sfile->name;
+ sysroff_swap_un_out (file, &un);
+}
+
+static void
+wr_hd (struct coff_ofile *p)
+{
+ struct IT_hd hd;
+
+ hd.spare1 = 0;
+ if (bfd_get_file_flags (abfd) & EXEC_P)
+ hd.mt = MTYPE_ABS_LM;
+ else
+ hd.mt = MTYPE_OMS_OR_LMS;
+
+ hd.cd = DATE;
+
+ hd.nu = p->nsources; /* Always one unit */
+ hd.code = 0; /* Always ASCII */
+ hd.ver = "0200"; /* Version 2.00 */
+
+ switch (bfd_get_arch (abfd))
+ {
+ case bfd_arch_h8300:
+ hd.au = 8;
+ hd.si = 0;
+ hd.spcsz = 32;
+ hd.segsz = 0;
+ hd.segsh = 0;
+ switch (bfd_get_mach (abfd))
+ {
+ case bfd_mach_h8300:
+ hd.cpu = "H8300";
+ hd.afl = 2;
+ addrsize = 2;
+ toolname = "C_H8/300";
+ break;
+ case bfd_mach_h8300h:
+ hd.cpu = "H8300H";
+ hd.afl = 4;
+ addrsize = 4;
+ toolname = "C_H8/300H";
+ break;
+ case bfd_mach_h8300s:
+ hd.cpu = "H8300S";
+ hd.afl = 4;
+ addrsize = 4;
+ toolname = "C_H8/300S";
+ break;
+ default:
+ abort();
+ }
+ rnames = rname_h8300;
+ break;
+ case bfd_arch_sh:
+ hd.au = 8;
+ hd.si = 0;
+ hd.afl = 4;
+ hd.spcsz = 32;
+ hd.segsz = 0;
+ hd.segsh = 0;
+ hd.cpu = "SH";
+ addrsize = 4;
+ toolname = "C_SH";
+ rnames = rname_sh;
+ break;
+ default:
+ abort ();
+ }
+
+ if (! (bfd_get_file_flags(abfd) & EXEC_P))
+ {
+ hd.ep = 0;
+ }
+ else
+ {
+ hd.ep = 1;
+ hd.uan = 0;
+ hd.sa = 0;
+ hd.sad = 0;
+ hd.address = bfd_get_start_address (abfd);
+ }
+
+ hd.os = "";
+ hd.sys = "";
+ hd.mn = strip_suffix (bfd_get_filename (abfd));
+
+ sysroff_swap_hd_out (file, &hd);
+}
+
+
+static void
+wr_sh (struct coff_ofile *p ATTRIBUTE_UNUSED, struct coff_section *sec)
+{
+ struct IT_sh sh;
+ sh.unit = 0;
+ sh.section = sec->number;
+#ifdef FOOP1
+ sh.section = 0;
+#endif
+ sysroff_swap_sh_out (file, &sh);
+}
+
+
+static void
+wr_ob (struct coff_ofile *p ATTRIBUTE_UNUSED, struct coff_section *section)
+{
+ bfd_size_type i;
+ int first = 1;
+ unsigned char stuff[200];
+
+ i = 0;
+ while (i < bfd_get_section_size (section->bfd_section))
+ {
+ struct IT_ob ob;
+ int todo = 200; /* Copy in 200 byte lumps. */
+
+ ob.spare = 0;
+ if (i + todo > bfd_get_section_size (section->bfd_section))
+ todo = bfd_get_section_size (section->bfd_section) - i;
+
+ if (first)
+ {
+ ob.saf = 1;
+ if (bfd_get_file_flags (abfd) & EXEC_P)
+ ob.address = section->address;
+ else
+ ob.address = 0;
+
+ first = 0;
+ }
+ else
+ {
+ ob.saf = 0;
+ }
+
+ ob.cpf = 0; /* Never compress. */
+ ob.data.len = todo;
+ bfd_get_section_contents (abfd, section->bfd_section, stuff, i, todo);
+ ob.data.data = stuff;
+ sysroff_swap_ob_out (file, &ob /*, i + todo < section->size */ );
+ i += todo;
+ }
+
+ /* Now fill the rest with blanks. */
+ while (i < (bfd_size_type) section->size)
+ {
+ struct IT_ob ob;
+ int todo = 200; /* Copy in 200 byte lumps. */
+
+ ob.spare = 0;
+ if (i + todo > (bfd_size_type) section->size)
+ todo = section->size - i;
+ ob.saf = 0;
+
+ ob.cpf = 0; /* Never compress. */
+ ob.data.len = todo;
+ memset (stuff, 0, todo);
+ ob.data.data = stuff;
+ sysroff_swap_ob_out (file, &ob);
+ i += todo;
+ }
+ /* Now fill the rest with blanks. */
+}
+
+static void
+wr_rl (struct coff_ofile *ptr ATTRIBUTE_UNUSED, struct coff_section *sec)
+{
+ int nr = sec->nrelocs;
+ int i;
+
+ for (i = 0; i < nr; i++)
+ {
+ struct coff_reloc *r = sec->relocs + i;
+ struct coff_symbol *ref;
+ struct IT_rl rl;
+
+ rl.apol = 0;
+ rl.boundary = 0;
+ rl.segment = 1;
+ rl.sign = 0;
+ rl.check = 0;
+ rl.addr = r->offset;
+ rl.bitloc = 0;
+ rl.flen = 32; /* SH Specific. */
+
+ /* What sort of reloc ? Look in the section to find out. */
+ ref = r->symbol;
+ if (ref->visible->type == coff_vis_ext_ref)
+ {
+ rl.bcount = 4; /* Always 4 for us. */
+ rl.op = OP_EXT_REF;
+ rl.symn = ref->er_number;
+ }
+ else if (ref->visible->type == coff_vis_common)
+ {
+ rl.bcount = 11; /* Always 11 for us. */
+ rl.op = OP_SEC_REF;
+ rl.secn = ref->where->section->number;
+ rl.copcode_is_3 = 3;
+ rl.alength_is_4 = 4;
+ rl.addend = ref->where->offset - ref->where->section->address;
+ rl.aopcode_is_0x20 = 0x20;
+ }
+ else
+ {
+ rl.bcount = 11; /* Always 11 for us. */
+ rl.op = OP_SEC_REF;
+ rl.secn = ref->where->section->number;
+ rl.copcode_is_3 = 3;
+ rl.alength_is_4 = 4;
+ rl.addend = -ref->where->section->address;
+ rl.aopcode_is_0x20 = 0x20;
+ }
+
+ rl.end = 0xff;
+
+ if ( rl.op == OP_SEC_REF
+ || rl.op == OP_EXT_REF)
+ sysroff_swap_rl_out (file, &rl);
+ }
+}
+
+static void
+wr_object_body (struct coff_ofile *p)
+{
+ int i;
+
+ for (i = 1; i < p->nsections; i++)
+ {
+ wr_sh (p, p->sections + i);
+ wr_ob (p, p->sections + i);
+ wr_rl (p, p->sections + i);
+ }
+}
+
+static void
+wr_dps_start (struct coff_sfile *sfile,
+ struct coff_section *section ATTRIBUTE_UNUSED,
+ struct coff_scope *scope, int type, int nest)
+{
+ struct IT_dps dps;
+
+ dps.end = 0;
+ dps.opt = 0;
+ dps.type = type;
+
+ if (scope->sec)
+ {
+ dps.san = scope->sec->number;
+ dps.address = scope->offset - find_base (sfile, scope->sec);
+ dps.block_size = scope->size;
+
+ if (debug)
+ {
+ printf ("DPS %s %d %x\n",
+ sfile->name,
+ nest,
+ dps.address);
+ }
+ }
+ else
+ {
+ dps.san = 0;
+ dps.address = 0;
+ dps.block_size = 0;
+ }
+
+ dps.nesting = nest;
+ dps.neg = 0x1001;
+ sysroff_swap_dps_out (file, &dps);
+}
+
+static void
+wr_dps_end (struct coff_section *section ATTRIBUTE_UNUSED,
+ struct coff_scope *scope ATTRIBUTE_UNUSED, int type)
+{
+ struct IT_dps dps;
+
+ dps.end = 1;
+ dps.type = type;
+ sysroff_swap_dps_out (file, &dps);
+}
+
+static int *
+nints (int x)
+{
+ return (int *) (xcalloc (sizeof (int), x));
+}
+
+static void
+walk_tree_type_1 (struct coff_sfile *sfile, struct coff_symbol *symbol,
+ struct coff_type *type, int nest)
+{
+ switch (type->type)
+ {
+ case coff_secdef_type:
+ case coff_basic_type:
+ {
+ struct IT_dbt dbt;
+
+ switch (type->u.basic)
+ {
+ case T_NULL:
+ case T_VOID:
+ dbt.btype = BTYPE_VOID;
+ dbt.sign = BTYPE_UNSPEC;
+ dbt.fptype = FPTYPE_NOTSPEC;
+ break;
+
+ case T_CHAR:
+ dbt.btype = BTYPE_CHAR;
+ dbt.sign = BTYPE_UNSPEC;
+ dbt.fptype = FPTYPE_NOTSPEC;
+ break;
+
+ case T_SHORT:
+ case T_INT:
+ case T_LONG:
+ dbt.btype = BTYPE_INT;
+ dbt.sign = SIGN_SIGNED;
+ dbt.fptype = FPTYPE_NOTSPEC;
+ break;
+
+ case T_FLOAT:
+ dbt.btype = BTYPE_FLOAT;
+ dbt.fptype = FPTYPE_SINGLE;
+ break;
+
+ case T_DOUBLE:
+ dbt.btype = BTYPE_FLOAT;
+ dbt.fptype = FPTYPE_DOUBLE;
+ break;
+
+ case T_LNGDBL:
+ dbt.btype = BTYPE_FLOAT;
+ dbt.fptype = FPTYPE_EXTENDED;
+ break;
+
+ case T_UCHAR:
+ dbt.btype = BTYPE_CHAR;
+ dbt.sign = SIGN_UNSIGNED;
+ dbt.fptype = FPTYPE_NOTSPEC;
+ break;
+
+ case T_USHORT:
+ case T_UINT:
+ case T_ULONG:
+ dbt.btype = BTYPE_INT;
+ dbt.sign = SIGN_UNSIGNED;
+ dbt.fptype = FPTYPE_NOTSPEC;
+ break;
+ }
+
+ dbt.bitsize = type->size;
+ dbt.neg = 0x1001;
+ sysroff_swap_dbt_out (file, &dbt);
+ break;
+ }
+
+ case coff_pointer_type:
+ {
+ struct IT_dpt dpt;
+
+ dpt.dunno = 0;
+ walk_tree_type_1 (sfile, symbol, type->u.pointer.points_to, nest + 1);
+ dpt.neg = 0x1001;
+ sysroff_swap_dpt_out (file, &dpt);
+ break;
+ }
+
+ case coff_function_type:
+ {
+ struct IT_dfp dfp;
+ struct coff_symbol *param;
+
+ dfp.end = 0;
+ dfp.spare = 0;
+ dfp.nparams = type->u.function.parameters->nvars;
+ dfp.neg = 0x1001;
+
+ walk_tree_type_1 (sfile, symbol, type->u.function.function_returns, nest + 1);
+
+ sysroff_swap_dfp_out (file, &dfp);
+
+ for (param = type->u.function.parameters->vars_head;
+ param;
+ param = param->next)
+ walk_tree_symbol (sfile, 0, param, nest);
+
+ dfp.end = 1;
+ sysroff_swap_dfp_out (file, &dfp);
+ break;
+ }
+
+ case coff_structdef_type:
+ {
+ struct IT_dbt dbt;
+ struct IT_dds dds;
+ struct coff_symbol *member;
+
+ dds.spare = 0;
+ dbt.btype = BTYPE_STRUCT;
+ dbt.bitsize = type->size;
+ dbt.sign = SIGN_UNSPEC;
+ dbt.fptype = FPTYPE_NOTSPEC;
+ dbt.sid = get_member_id (type->u.astructdef.idx);
+ dbt.neg = 0x1001;
+ sysroff_swap_dbt_out (file, &dbt);
+ dds.end = 0;
+ dds.neg = 0x1001;
+ sysroff_swap_dds_out (file, &dds);
+
+ for (member = type->u.astructdef.elements->vars_head;
+ member;
+ member = member->next)
+ walk_tree_symbol (sfile, 0, member, nest + 1);
+
+ dds.end = 1;
+ sysroff_swap_dds_out (file, &dds);
+
+ }
+ break;
+
+ case coff_structref_type:
+ {
+ struct IT_dbt dbt;
+
+ dbt.btype = BTYPE_TAG;
+ dbt.bitsize = type->size;
+ dbt.sign = SIGN_UNSPEC;
+ dbt.fptype = FPTYPE_NOTSPEC;
+
+ if (type->u.astructref.ref)
+ dbt.sid = get_member_id (type->u.astructref.ref->number);
+ else
+ dbt.sid = 0;
+
+ dbt.neg = 0x1001;
+ sysroff_swap_dbt_out (file, &dbt);
+ }
+ break;
+
+ case coff_array_type:
+ {
+ struct IT_dar dar;
+ int j;
+ int dims = 1; /* Only output one dimension at a time. */
+
+ dar.dims = dims;
+ dar.variable = nints (dims);
+ dar.subtype = nints (dims);
+ dar.spare = nints (dims);
+ dar.max_variable = nints (dims);
+ dar.maxspare = nints (dims);
+ dar.max = nints (dims);
+ dar.min_variable = nints (dims);
+ dar.min = nints (dims);
+ dar.minspare = nints (dims);
+ dar.neg = 0x1001;
+ dar.length = type->size / type->u.array.dim;
+
+ for (j = 0; j < dims; j++)
+ {
+ dar.variable[j] = VARIABLE_FIXED;
+ dar.subtype[j] = SUB_INTEGER;
+ dar.spare[j] = 0;
+ dar.max_variable[j] = 0;
+ dar.max[j] = type->u.array.dim;
+ dar.min_variable[j] = 0;
+ dar.min[j] = 1; /* Why isn't this 0 ? */
+ }
+ walk_tree_type_1 (sfile, symbol, type->u.array.array_of, nest + 1);
+ sysroff_swap_dar_out (file, &dar);
+ }
+ break;
+
+ case coff_enumdef_type:
+ {
+ struct IT_dbt dbt;
+ struct IT_den den;
+ struct coff_symbol *member;
+
+ dbt.btype = BTYPE_ENUM;
+ dbt.bitsize = type->size;
+ dbt.sign = SIGN_UNSPEC;
+ dbt.fptype = FPTYPE_NOTSPEC;
+ dbt.sid = get_member_id (type->u.aenumdef.idx);
+ dbt.neg = 0x1001;
+ sysroff_swap_dbt_out (file, &dbt);
+
+ den.end = 0;
+ den.neg = 0x1001;
+ den.spare = 0;
+ sysroff_swap_den_out (file, &den);
+
+ for (member = type->u.aenumdef.elements->vars_head;
+ member;
+ member = member->next)
+ walk_tree_symbol (sfile, 0, member, nest + 1);
+
+ den.end = 1;
+ sysroff_swap_den_out (file, &den);
+ }
+ break;
+
+ case coff_enumref_type:
+ {
+ struct IT_dbt dbt;
+
+ dbt.btype = BTYPE_TAG;
+ dbt.bitsize = type->size;
+ dbt.sign = SIGN_UNSPEC;
+ dbt.fptype = FPTYPE_NOTSPEC;
+ dbt.sid = get_member_id (type->u.aenumref.ref->number);
+ dbt.neg = 0x1001;
+ sysroff_swap_dbt_out (file, &dbt);
+ }
+ break;
+
+ default:
+ abort ();
+ }
+}
+
+/* Obsolete ?
+ static void
+ dty_start ()
+ {
+ struct IT_dty dty;
+ dty.end = 0;
+ dty.neg = 0x1001;
+ dty.spare = 0;
+ sysroff_swap_dty_out (file, &dty);
+ }
+
+ static void
+ dty_stop ()
+ {
+ struct IT_dty dty;
+ dty.end = 0;
+ dty.neg = 0x1001;
+ dty.end = 1;
+ sysroff_swap_dty_out (file, &dty);
+ }
+
+
+ static void
+ dump_tree_structure (sfile, symbol, type, nest)
+ struct coff_sfile *sfile;
+ struct coff_symbol *symbol;
+ struct coff_type *type;
+ int nest;
+ {
+ if (symbol->type->type == coff_function_type)
+ {
+
+
+ }
+
+ }
+ */
+
+static void
+walk_tree_type (struct coff_sfile *sfile, struct coff_symbol *symbol,
+ struct coff_type *type, int nest)
+{
+ if (symbol->type->type == coff_function_type)
+ {
+ struct IT_dty dty;
+
+ dty.end = 0;
+ dty.neg = 0x1001;
+
+ sysroff_swap_dty_out (file, &dty);
+ walk_tree_type_1 (sfile, symbol, type, nest);
+ dty.end = 1;
+ sysroff_swap_dty_out (file, &dty);
+
+ wr_dps_start (sfile,
+ symbol->where->section,
+ symbol->type->u.function.code,
+ BLOCK_TYPE_FUNCTION, nest);
+ wr_dps_start (sfile, symbol->where->section,
+ symbol->type->u.function.code,
+ BLOCK_TYPE_BLOCK, nest);
+ walk_tree_scope (symbol->where->section,
+ sfile,
+ symbol->type->u.function.code,
+ nest + 1, BLOCK_TYPE_BLOCK);
+
+ wr_dps_end (symbol->where->section,
+ symbol->type->u.function.code,
+ BLOCK_TYPE_BLOCK);
+ wr_dps_end (symbol->where->section,
+ symbol->type->u.function.code, BLOCK_TYPE_FUNCTION);
+ }
+ else
+ {
+ struct IT_dty dty;
+
+ dty.end = 0;
+ dty.neg = 0x1001;
+ sysroff_swap_dty_out (file, &dty);
+ walk_tree_type_1 (sfile, symbol, type, nest);
+ dty.end = 1;
+ sysroff_swap_dty_out (file, &dty);
+ }
+}
+
+static void
+walk_tree_symbol (struct coff_sfile *sfile, struct coff_section *section ATTRIBUTE_UNUSED, struct coff_symbol *symbol, int nest)
+{
+ struct IT_dsy dsy;
+
+ memset (&dsy, 0, sizeof(dsy));
+ dsy.nesting = nest;
+
+ switch (symbol->type->type)
+ {
+ case coff_function_type:
+ dsy.type = STYPE_FUNC;
+ dsy.assign = 1;
+ break;
+
+ case coff_structref_type:
+ case coff_pointer_type:
+ case coff_array_type:
+ case coff_basic_type:
+ case coff_enumref_type:
+ dsy.type = STYPE_VAR;
+ dsy.assign = 1;
+ break;
+
+ case coff_enumdef_type:
+ dsy.type = STYPE_TAG;
+ dsy.assign = 0;
+ dsy.magic = 2;
+ break;
+
+ case coff_structdef_type:
+ dsy.type = STYPE_TAG;
+ dsy.assign = 0;
+ dsy.magic = symbol->type->u.astructdef.isstruct ? 0 : 1;
+ break;
+
+ case coff_secdef_type:
+ return;
+
+ default:
+ abort ();
+ }
+
+ if (symbol->where->where == coff_where_member_of_struct)
+ {
+ dsy.assign = 0;
+ dsy.type = STYPE_MEMBER;
+ }
+
+ if (symbol->where->where == coff_where_member_of_enum)
+ {
+ dsy.type = STYPE_ENUM;
+ dsy.assign = 0;
+ dsy.evallen = 4;
+ dsy.evalue = symbol->where->offset;
+ }
+
+ if (symbol->type->type == coff_structdef_type
+ || symbol->where->where == coff_where_entag
+ || symbol->where->where == coff_where_strtag)
+ {
+ dsy.snumber = get_member_id (symbol->number);
+ }
+ else
+ {
+ dsy.snumber = get_ordinary_id (symbol->number);
+ }
+
+ dsy.sname = symbol->name[0] == '_' ? symbol->name + 1 : symbol->name;
+
+ switch (symbol->visible->type)
+ {
+ case coff_vis_common:
+ case coff_vis_ext_def:
+ dsy.ainfo = AINFO_STATIC_EXT_DEF;
+ break;
+
+ case coff_vis_ext_ref:
+ dsy.ainfo = AINFO_STATIC_EXT_REF;
+ break;
+
+ case coff_vis_int_def:
+ dsy.ainfo = AINFO_STATIC_INT;
+ break;
+
+ case coff_vis_auto:
+ case coff_vis_autoparam:
+ dsy.ainfo = AINFO_AUTO;
+ break;
+
+ case coff_vis_register:
+ case coff_vis_regparam:
+ dsy.ainfo = AINFO_REG;
+ break;
+ break;
+
+ case coff_vis_tag:
+ case coff_vis_member_of_struct:
+ case coff_vis_member_of_enum:
+ break;
+
+ default:
+ abort ();
+ }
+
+ dsy.dlength = symbol->type->size;
+
+ switch (symbol->where->where)
+ {
+ case coff_where_memory:
+
+ dsy.section = symbol->where->section->number;
+#ifdef FOOP
+ dsy.section = 0;
+#endif
+ break;
+
+ case coff_where_member_of_struct:
+ case coff_where_member_of_enum:
+ case coff_where_stack:
+ case coff_where_register:
+ case coff_where_unknown:
+ case coff_where_strtag:
+ case coff_where_entag:
+ case coff_where_typedef:
+ break;
+
+ default:
+ abort ();
+ }
+
+ switch (symbol->where->where)
+ {
+ case coff_where_memory:
+ dsy.address = symbol->where->offset - find_base (sfile, symbol->where->section);
+ break;
+
+ case coff_where_stack:
+ dsy.address = symbol->where->offset;
+ break;
+
+ case coff_where_member_of_struct:
+ if (symbol->where->bitsize)
+ {
+ int bits = (symbol->where->offset * 8 + symbol->where->bitoffset);
+ dsy.bitunit = 1;
+ dsy.field_len = symbol->where->bitsize;
+ dsy.field_off = (bits / 32) * 4;
+ dsy.field_bitoff = bits % 32;
+ }
+ else
+ {
+ dsy.bitunit = 0;
+
+ dsy.field_len = symbol->type->size;
+ dsy.field_off = symbol->where->offset;
+ }
+ break;
+
+ case coff_where_member_of_enum:
+ /* dsy.bitunit = 0;
+ dsy.field_len = symbol->type->size;
+ dsy.field_off = symbol->where->offset; */
+ break;
+
+ case coff_where_register:
+ case coff_where_unknown:
+ case coff_where_strtag:
+ case coff_where_entag:
+ case coff_where_typedef:
+ break;
+
+ default:
+ abort ();
+ }
+
+ if (symbol->where->where == coff_where_register)
+ dsy.reg = rnames[symbol->where->offset];
+
+ switch (symbol->visible->type)
+ {
+ case coff_vis_common:
+ /* We do this 'cause common C symbols are treated as extdefs. */
+ case coff_vis_ext_def:
+ case coff_vis_ext_ref:
+ dsy.ename = symbol->name;
+ break;
+
+ case coff_vis_regparam:
+ case coff_vis_autoparam:
+ dsy.type = STYPE_PARAMETER;
+ break;
+
+ case coff_vis_int_def:
+ case coff_vis_auto:
+ case coff_vis_register:
+ case coff_vis_tag:
+ case coff_vis_member_of_struct:
+ case coff_vis_member_of_enum:
+ break;
+
+ default:
+ abort ();
+ }
+
+ dsy.sfn = 0;
+ dsy.sln = 2;
+ dsy.neg = 0x1001;
+
+ sysroff_swap_dsy_out (file, &dsy);
+
+ walk_tree_type (sfile, symbol, symbol->type, nest);
+}
+
+static void
+walk_tree_scope (struct coff_section *section, struct coff_sfile *sfile, struct coff_scope *scope, int nest, int type)
+{
+ struct coff_symbol *vars;
+ struct coff_scope *child;
+
+ if (scope->vars_head
+ || (scope->list_head && scope->list_head->vars_head))
+ {
+ wr_dps_start (sfile, section, scope, type, nest);
+
+ if (nest == 0)
+ wr_globals (tree, sfile, nest + 1);
+
+ for (vars = scope->vars_head; vars; vars = vars->next)
+ walk_tree_symbol (sfile, section, vars, nest);
+
+ for (child = scope->list_head; child; child = child->next)
+ walk_tree_scope (section, sfile, child, nest + 1, BLOCK_TYPE_BLOCK);
+
+ wr_dps_end (section, scope, type);
+ }
+}
+
+static void
+walk_tree_sfile (struct coff_section *section, struct coff_sfile *sfile)
+{
+ walk_tree_scope (section, sfile, sfile->scope, 0, BLOCK_TYPE_COMPUNIT);
+}
+
+static void
+wr_program_structure (struct coff_ofile *p, struct coff_sfile *sfile)
+{
+ walk_tree_sfile (p->sections + 4, sfile);
+}
+
+static void
+wr_du (struct coff_ofile *p, struct coff_sfile *sfile, int n)
+{
+ struct IT_du du;
+ int lim;
+ int i;
+ int j;
+ unsigned int *lowest = (unsigned *) nints (p->nsections);
+ unsigned int *highest = (unsigned *) nints (p->nsections);
+
+ du.format = bfd_get_file_flags (abfd) & EXEC_P ? 0 : 1;
+ du.optimized = 0;
+ du.stackfrmt = 0;
+ du.spare = 0;
+ du.unit = n;
+ du.sections = p->nsections - 1;
+ du.san = (int *) xcalloc (sizeof (int), du.sections);
+ du.address = nints (du.sections);
+ du.length = nints (du.sections);
+
+ for (i = 0; i < du.sections; i++)
+ {
+ lowest[i] = ~0;
+ highest[i] = 0;
+ }
+
+ lim = du.sections;
+ for (j = 0; j < lim; j++)
+ {
+ int src = j;
+ int dst = j;
+
+ du.san[dst] = dst;
+
+ if (sfile->section[src].init)
+ {
+ du.length[dst]
+ = sfile->section[src].high - sfile->section[src].low + 1;
+ du.address[dst]
+ = sfile->section[src].low;
+ }
+ else
+ {
+ du.length[dst] = 0;
+ du.address[dst] = 0;
+ }
+
+ if (debug)
+ {
+ if (sfile->section[src].parent)
+ {
+ printf (" section %6s 0x%08x..0x%08x\n",
+ sfile->section[src].parent->name,
+ du.address[dst],
+ du.address[dst] + du.length[dst] - 1);
+ }
+ }
+
+ du.sections = dst + 1;
+ }
+
+ du.tool = "c_gcc";
+ du.date = DATE;
+
+ sysroff_swap_du_out (file, &du);
+}
+
+static void
+wr_dus (struct coff_ofile *p ATTRIBUTE_UNUSED, struct coff_sfile *sfile)
+{
+ struct IT_dus dus;
+
+ dus.efn = 0x1001;
+ dus.ns = 1; /* p->nsources; sac 14 jul 94 */
+ dus.drb = nints (dus.ns);
+ dus.fname = (char **) xcalloc (sizeof (char *), dus.ns);
+ dus.spare = nints (dus.ns);
+ dus.ndir = 0;
+ /* Find the filenames. */
+ dus.drb[0] = 0;
+ dus.fname[0] = sfile->name;
+
+ sysroff_swap_dus_out (file, &dus);
+
+}
+
+/* Find the offset of the .text section for this sfile in the
+ .text section for the output file. */
+
+static int
+find_base (struct coff_sfile *sfile, struct coff_section *section)
+{
+ return sfile->section[section->number].low;
+}
+
+static void
+wr_dln (struct coff_ofile *p ATTRIBUTE_UNUSED, struct coff_sfile *sfile,
+ int n ATTRIBUTE_UNUSED)
+{
+ /* Count up all the linenumbers */
+
+ struct coff_symbol *sy;
+ int lc = 0;
+ struct IT_dln dln;
+
+ int idx;
+
+ for (sy = sfile->scope->vars_head;
+ sy;
+ sy = sy->next)
+ {
+ struct coff_type *t = sy->type;
+ if (t->type == coff_function_type)
+ {
+ struct coff_line *l = t->u.function.lines;
+ if (l)
+ lc += l->nlines;
+ }
+ }
+
+ dln.sfn = nints (lc);
+ dln.sln = nints (lc);
+ dln.cc = nints (lc);
+ dln.section = nints (lc);
+
+ dln.from_address = nints (lc);
+ dln.to_address = nints (lc);
+
+
+ dln.neg = 0x1001;
+
+ dln.nln = lc;
+
+ /* Run through once more and fill up the structure */
+ idx = 0;
+ for (sy = sfile->scope->vars_head;
+ sy;
+ sy = sy->next)
+ {
+ if (sy->type->type == coff_function_type)
+ {
+ int i;
+ struct coff_line *l = sy->type->u.function.lines;
+ if (l)
+ {
+ int base = find_base (sfile, sy->where->section);
+ for (i = 0; i < l->nlines; i++)
+ {
+ dln.section[idx] = sy->where->section->number;
+ dln.sfn[idx] = 0;
+ dln.sln[idx] = l->lines[i];
+ dln.from_address[idx] =
+ l->addresses[i] + sy->where->section->address - base;
+ dln.cc[idx] = 0;
+ if (idx)
+ dln.to_address[idx - 1] = dln.from_address[idx];
+ idx++;
+
+ }
+ dln.to_address[idx - 1] = dln.from_address[idx - 1] + 2;
+ }
+ }
+ }
+ if (lc)
+ sysroff_swap_dln_out (file, &dln);
+}
+
+/* Write the global symbols out to the debug info. */
+
+static void
+wr_globals (struct coff_ofile *p, struct coff_sfile *sfile,
+ int n ATTRIBUTE_UNUSED)
+{
+ struct coff_symbol *sy;
+
+ for (sy = p->symbol_list_head;
+ sy;
+ sy = sy->next_in_ofile_list)
+ {
+ if (sy->visible->type == coff_vis_ext_def
+ || sy->visible->type == coff_vis_ext_ref)
+ {
+ /* Only write out symbols if they belong to
+ the current source file. */
+ if (sy->sfile == sfile)
+ walk_tree_symbol (sfile, 0, sy, 0);
+ }
+ }
+}
+
+static void
+wr_debug (struct coff_ofile *p)
+{
+ struct coff_sfile *sfile;
+ int n = 0;
+
+ for (sfile = p->source_head;
+ sfile;
+ sfile = sfile->next)
+ {
+ if (debug)
+ printf ("%s\n", sfile->name);
+
+ wr_du (p, sfile, n);
+ wr_dus (p, sfile);
+ wr_program_structure (p, sfile);
+ wr_dln (p, sfile, n);
+ n++;
+ }
+}
+
+static void
+wr_cs (void)
+{
+ /* It seems that the CS struct is not normal - the size is wrong
+ heres one I prepared earlier. */
+ static char b[] =
+ {
+ 0x80, /* IT */
+ 0x21, /* RL */
+ 0x00, /* number of chars in variable length part */
+ 0x80, /* hd */
+ 0x00, /* hs */
+ 0x80, /* un */
+ 0x00, /* us */
+ 0x80, /* sc */
+ 0x00, /* ss */
+ 0x80, /* er */
+ 0x80, /* ed */
+ 0x80, /* sh */
+ 0x80, /* ob */
+ 0x80, /* rl */
+ 0x80, /* du */
+ 0x80, /* dps */
+ 0x80, /* dsy */
+ 0x80, /* dty */
+ 0x80, /* dln */
+ 0x80, /* dso */
+ 0x80, /* dus */
+ 0x00, /* dss */
+ 0x80, /* dbt */
+ 0x00, /* dpp */
+ 0x80, /* dfp */
+ 0x80, /* den */
+ 0x80, /* dds */
+ 0x80, /* dar */
+ 0x80, /* dpt */
+ 0x00, /* dul */
+ 0x00, /* dse */
+ 0x00, /* dot */
+ 0xDE /* CS */
+ };
+
+ if (fwrite (b, sizeof (b), 1, file) != 1)
+ /* FIXME: Return error status. */
+ abort ();
+}
+
+/* Write out the SC records for a unit. Create an SC
+ for all the sections which appear in the output file, even
+ if there isn't an equivalent one on the input. */
+
+static int
+wr_sc (struct coff_ofile *ptr, struct coff_sfile *sfile)
+{
+ int i;
+ int scount = 0;
+ /* First work out the total number of sections. */
+ int total_sec = ptr->nsections;
+ struct myinfo
+ {
+ struct coff_section *sec;
+ struct coff_symbol *symbol;
+ };
+ struct coff_symbol *symbol;
+ struct myinfo *info
+ = (struct myinfo *) calloc (total_sec, sizeof (struct myinfo));
+
+
+ for (i = 0; i < total_sec; i++)
+ {
+ info[i].sec = ptr->sections + i;
+ info[i].symbol = 0;
+ }
+
+ for (symbol = sfile->scope->vars_head;
+ symbol;
+ symbol = symbol->next)
+ {
+
+ if (symbol->type->type == coff_secdef_type)
+ {
+ for (i = 0; i < total_sec; i++)
+ {
+ if (symbol->where->section == info[i].sec)
+ {
+ info[i].symbol = symbol;
+ break;
+ }
+ }
+ }
+ }
+
+ /* Now output all the section info, and fake up some stuff for sections
+ we don't have. */
+ for (i = 1; i < total_sec; i++)
+ {
+ struct IT_sc sc;
+ char *name;
+
+ symbol = info[i].symbol;
+ sc.spare = 0;
+ sc.spare1 = 0;
+
+ if (!symbol)
+ {
+ /* Don't have a symbol set aside for this section, which means
+ that nothing in this file does anything for the section. */
+ sc.format = !(bfd_get_file_flags (abfd) & EXEC_P);
+ sc.addr = 0;
+ sc.length = 0;
+ name = info[i].sec->name;
+ }
+ else
+ {
+ if (bfd_get_file_flags (abfd) & EXEC_P)
+ {
+ sc.format = 0;
+ sc.addr = symbol->where->offset;
+ }
+ else
+ {
+ sc.format = 1;
+ sc.addr = 0;
+ }
+ sc.length = symbol->type->size;
+ name = symbol->name;
+ }
+
+ sc.align = 4;
+ sc.concat = CONCAT_SIMPLE;
+ sc.read = 3;
+ sc.write = 3;
+ sc.exec = 3;
+ sc.init = 3;
+ sc.mode = 3;
+ sc.spare = 0;
+ sc.segadd = 0;
+ sc.spare1 = 0; /* If not zero, then it doesn't work. */
+ sc.name = section_translate (name);
+
+ if (strlen (sc.name) == 1)
+ {
+ switch (sc.name[0])
+ {
+ case 'D':
+ case 'B':
+ sc.contents = CONTENTS_DATA;
+ break;
+
+ default:
+ sc.contents = CONTENTS_CODE;
+ }
+ }
+ else
+ {
+ sc.contents = CONTENTS_CODE;
+ }
+
+ sysroff_swap_sc_out (file, &sc);
+ scount++;
+ }
+ return scount;
+}
+
+/* Write out the ER records for a unit. */
+
+static void
+wr_er (struct coff_ofile *ptr, struct coff_sfile *sfile ATTRIBUTE_UNUSED,
+ int first)
+{
+ int idx = 0;
+ struct coff_symbol *sym;
+
+ if (first)
+ {
+ for (sym = ptr->symbol_list_head; sym; sym = sym->next_in_ofile_list)
+ {
+ if (sym->visible->type == coff_vis_ext_ref)
+ {
+ struct IT_er er;
+
+ er.spare = 0;
+ er.type = ER_NOTSPEC;
+ er.name = sym->name;
+ sysroff_swap_er_out (file, &er);
+ sym->er_number = idx++;
+ }
+ }
+ }
+}
+
+/* Write out the ED records for a unit. */
+
+static void
+wr_ed (struct coff_ofile *ptr, struct coff_sfile *sfile ATTRIBUTE_UNUSED,
+ int first)
+{
+ struct coff_symbol *s;
+
+ if (first)
+ {
+ for (s = ptr->symbol_list_head; s; s = s->next_in_ofile_list)
+ {
+ if (s->visible->type == coff_vis_ext_def
+ || s->visible->type == coff_vis_common)
+ {
+ struct IT_ed ed;
+
+ ed.section = s->where->section->number;
+ ed.spare = 0;
+
+ if (s->where->section->data)
+ {
+ ed.type = ED_TYPE_DATA;
+ }
+ else if (s->where->section->code & SEC_CODE)
+ {
+ ed.type = ED_TYPE_ENTRY;
+ }
+ else
+ {
+ ed.type = ED_TYPE_NOTSPEC;
+ ed.type = ED_TYPE_DATA;
+ }
+
+ ed.address = s->where->offset - s->where->section->address;
+ ed.name = s->name;
+ sysroff_swap_ed_out (file, &ed);
+ }
+ }
+ }
+}
+
+static void
+wr_unit_info (struct coff_ofile *ptr)
+{
+ struct coff_sfile *sfile;
+ int first = 1;
+
+ for (sfile = ptr->source_head;
+ sfile;
+ sfile = sfile->next)
+ {
+ long p1;
+ long p2;
+ int nsecs;
+
+ p1 = ftell (file);
+ wr_un (ptr, sfile, first, 0);
+ nsecs = wr_sc (ptr, sfile);
+ p2 = ftell (file);
+ fseek (file, p1, SEEK_SET);
+ wr_un (ptr, sfile, first, nsecs);
+ fseek (file, p2, SEEK_SET);
+ wr_er (ptr, sfile, first);
+ wr_ed (ptr, sfile, first);
+ first = 0;
+ }
+}
+
+static void
+wr_module (struct coff_ofile *p)
+{
+ wr_cs ();
+ wr_hd (p);
+ wr_unit_info (p);
+ wr_object_body (p);
+ wr_debug (p);
+ wr_tr ();
+}
+
+static int
+align (int x)
+{
+ return (x + 3) & ~3;
+}
+
+/* Find all the common variables and turn them into
+ ordinary defs - dunno why, but thats what hitachi does with 'em. */
+
+static void
+prescan (struct coff_ofile *otree)
+{
+ struct coff_symbol *s;
+ struct coff_section *common_section;
+
+ /* Find the common section - always section 3. */
+ common_section = otree->sections + 3;
+
+ for (s = otree->symbol_list_head;
+ s;
+ s = s->next_in_ofile_list)
+ {
+ if (s->visible->type == coff_vis_common)
+ {
+ struct coff_where *w = s->where;
+
+ /* s->visible->type = coff_vis_ext_def; leave it as common */
+ common_section->size = align (common_section->size);
+ w->offset = common_section->size + common_section->address;
+ w->section = common_section;
+ common_section->size += s->type->size;
+ common_section->size = align (common_section->size);
+ }
+ }
+}
+
+char *program_name;
+
+static void
+show_usage (FILE *ffile, int status)
+{
+ fprintf (ffile, _("Usage: %s [option(s)] in-file [out-file]\n"), program_name);
+ fprintf (ffile, _("Convert a COFF object file into a SYSROFF object file\n"));
+ fprintf (ffile, _(" The options are:\n\
+ -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"));
+
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (ffile, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+ exit (status);
+}
+
+int
+main (int ac, char **av)
+{
+ int opt;
+ static struct option long_options[] =
+ {
+ {"debug", no_argument, 0, 'd'},
+ {"quick", no_argument, 0, 'q'},
+ {"noprescan", no_argument, 0, 'n'},
+ {"help", no_argument, 0, 'h'},
+ {"version", no_argument, 0, 'V'},
+ {NULL, no_argument, 0, 0}
+ };
+ char **matching;
+ char *input_file;
+ char *output_file;
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = av[0];
+ xmalloc_set_program_name (program_name);
+
+ expandargv (&ac, &av);
+
+ while ((opt = getopt_long (ac, av, "dHhVvqn", long_options,
+ (int *) NULL))
+ != EOF)
+ {
+ switch (opt)
+ {
+ case 'q':
+ quick = 1;
+ break;
+ case 'n':
+ noprescan = 1;
+ break;
+ case 'd':
+ debug = 1;
+ break;
+ case 'H':
+ case 'h':
+ show_usage (stdout, 0);
+ /*NOTREACHED */
+ case 'v':
+ case 'V':
+ print_version ("srconv");
+ exit (0);
+ /*NOTREACHED */
+ case 0:
+ break;
+ default:
+ show_usage (stderr, 1);
+ /*NOTREACHED */
+ }
+ }
+
+ /* The input and output files may be named on the command line. */
+ output_file = NULL;
+ if (optind < ac)
+ {
+ input_file = av[optind];
+ ++optind;
+ if (optind < ac)
+ {
+ output_file = av[optind];
+ ++optind;
+ if (optind < ac)
+ show_usage (stderr, 1);
+ if (filename_cmp (input_file, output_file) == 0)
+ {
+ fatal (_("input and output files must be different"));
+ }
+ }
+ }
+ else
+ input_file = 0;
+
+ if (!input_file)
+ {
+ fatal (_("no input file specified"));
+ }
+
+ if (!output_file)
+ {
+ /* Take a .o off the input file and stick on a .obj. If
+ it doesn't end in .o, then stick a .obj on anyway */
+
+ int len = strlen (input_file);
+
+ output_file = xmalloc (len + 5);
+ strcpy (output_file, input_file);
+
+ if (len > 3
+ && output_file[len - 2] == '.'
+ && output_file[len - 1] == 'o')
+ {
+ output_file[len] = 'b';
+ output_file[len + 1] = 'j';
+ output_file[len + 2] = 0;
+ }
+ else
+ {
+ strcat (output_file, ".obj");
+ }
+ }
+
+ abfd = bfd_openr (input_file, 0);
+
+ if (!abfd)
+ bfd_fatal (input_file);
+
+ if (!bfd_check_format_matches (abfd, bfd_object, &matching))
+ {
+ bfd_nonfatal (input_file);
+
+ if (bfd_get_error () == bfd_error_file_ambiguously_recognized)
+ {
+ list_matching_formats (matching);
+ free (matching);
+ }
+ exit (1);
+ }
+
+ file = fopen (output_file, FOPEN_WB);
+
+ if (!file)
+ fatal (_("unable to open output file %s"), output_file);
+
+ if (debug)
+ printf ("ids %d %d\n", base1, base2);
+
+ tree = coff_grok (abfd);
+
+ if (!noprescan)
+ prescan (tree);
+
+ wr_module (tree);
+ return 0;
+}
diff --git a/binutils-2.24/binutils/stabs.c b/binutils-2.24/binutils/stabs.c
new file mode 100644
index 00000000..8b459778
--- /dev/null
+++ b/binutils-2.24/binutils/stabs.c
@@ -0,0 +1,5433 @@
+/* stabs.c -- Parse stabs debugging information
+ Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor <ian@cygnus.com>.
+
+ 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 3 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 file contains code which parses stabs debugging information.
+ The organization of this code is based on the gdb stabs reading
+ code. The job it does is somewhat different, because it is not
+ trying to identify the correct address for anything. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "safe-ctype.h"
+#include "demangle.h"
+#include "debug.h"
+#include "budbg.h"
+#include "filenames.h"
+#include "aout/aout64.h"
+#include "aout/stab_gnu.h"
+
+/* The number of predefined XCOFF types. */
+
+#define XCOFF_TYPE_COUNT 34
+
+/* This structure is used as a handle so that the stab parsing doesn't
+ need to use any static variables. */
+
+struct stab_handle
+{
+ /* The BFD. */
+ bfd *abfd;
+ /* TRUE if this is stabs in sections. */
+ bfd_boolean sections;
+ /* The symbol table. */
+ asymbol **syms;
+ /* The number of symbols. */
+ long symcount;
+ /* The accumulated file name string. */
+ char *so_string;
+ /* The value of the last N_SO symbol. */
+ bfd_vma so_value;
+ /* The value of the start of the file, so that we can handle file
+ relative N_LBRAC and N_RBRAC symbols. */
+ bfd_vma file_start_offset;
+ /* The offset of the start of the function, so that we can handle
+ function relative N_LBRAC and N_RBRAC symbols. */
+ bfd_vma function_start_offset;
+ /* The version number of gcc which compiled the current compilation
+ unit, 0 if not compiled by gcc. */
+ int gcc_compiled;
+ /* Whether an N_OPT symbol was seen that was not generated by gcc,
+ so that we can detect the SunPRO compiler. */
+ bfd_boolean n_opt_found;
+ /* The main file name. */
+ char *main_filename;
+ /* A stack of unfinished N_BINCL files. */
+ struct bincl_file *bincl_stack;
+ /* A list of finished N_BINCL files. */
+ struct bincl_file *bincl_list;
+ /* Whether we are inside a function or not. */
+ bfd_boolean within_function;
+ /* The address of the end of the function, used if we have seen an
+ N_FUN symbol while in a function. This is -1 if we have not seen
+ an N_FUN (the normal case). */
+ bfd_vma function_end;
+ /* The depth of block nesting. */
+ int block_depth;
+ /* List of pending variable definitions. */
+ struct stab_pending_var *pending;
+ /* Number of files for which we have types. */
+ unsigned int files;
+ /* Lists of types per file. */
+ struct stab_types **file_types;
+ /* Predefined XCOFF types. */
+ debug_type xcoff_types[XCOFF_TYPE_COUNT];
+ /* Undefined tags. */
+ struct stab_tag *tags;
+ /* Set by parse_stab_type if it sees a structure defined as a cross
+ reference to itself. Reset by parse_stab_type otherwise. */
+ bfd_boolean self_crossref;
+};
+
+/* A list of these structures is used to hold pending variable
+ definitions seen before the N_LBRAC of a block. */
+
+struct stab_pending_var
+{
+ /* Next pending variable definition. */
+ struct stab_pending_var *next;
+ /* Name. */
+ const char *name;
+ /* Type. */
+ debug_type type;
+ /* Kind. */
+ enum debug_var_kind kind;
+ /* Value. */
+ bfd_vma val;
+};
+
+/* A list of these structures is used to hold the types for a single
+ file. */
+
+struct stab_types
+{
+ /* Next set of slots for this file. */
+ struct stab_types *next;
+ /* Types indexed by type number. */
+#define STAB_TYPES_SLOTS (16)
+ debug_type types[STAB_TYPES_SLOTS];
+};
+
+/* We keep a list of undefined tags that we encounter, so that we can
+ fill them in if the tag is later defined. */
+
+struct stab_tag
+{
+ /* Next undefined tag. */
+ struct stab_tag *next;
+ /* Tag name. */
+ const char *name;
+ /* Type kind. */
+ enum debug_type_kind kind;
+ /* Slot to hold real type when we discover it. If we don't, we fill
+ in an undefined tag type. */
+ debug_type slot;
+ /* Indirect type we have created to point at slot. */
+ debug_type type;
+};
+
+static char *savestring (const char *, int);
+static bfd_vma parse_number (const char **, bfd_boolean *);
+static void bad_stab (const char *);
+static void warn_stab (const char *, const char *);
+static bfd_boolean parse_stab_string
+ (void *, struct stab_handle *, int, int, bfd_vma, const char *);
+static debug_type parse_stab_type
+ (void *, struct stab_handle *, const char *, const char **, debug_type **);
+static bfd_boolean parse_stab_type_number (const char **, int *);
+static debug_type parse_stab_range_type
+ (void *, struct stab_handle *, const char *, const char **, const int *);
+static debug_type parse_stab_sun_builtin_type (void *, const char **);
+static debug_type parse_stab_sun_floating_type (void *, const char **);
+static debug_type parse_stab_enum_type (void *, const char **);
+static debug_type parse_stab_struct_type
+ (void *, struct stab_handle *, const char *, const char **,
+ bfd_boolean, const int *);
+static bfd_boolean parse_stab_baseclasses
+ (void *, struct stab_handle *, const char **, debug_baseclass **);
+static bfd_boolean parse_stab_struct_fields
+ (void *, struct stab_handle *, const char **, debug_field **, bfd_boolean *);
+static bfd_boolean parse_stab_cpp_abbrev
+ (void *, struct stab_handle *, const char **, debug_field *);
+static bfd_boolean parse_stab_one_struct_field
+ (void *, struct stab_handle *, const char **, const char *,
+ debug_field *, bfd_boolean *);
+static bfd_boolean parse_stab_members
+ (void *, struct stab_handle *, const char *, const char **, const int *,
+ debug_method **);
+static debug_type parse_stab_argtypes
+ (void *, struct stab_handle *, debug_type, const char *, const char *,
+ debug_type, const char *, bfd_boolean, bfd_boolean, const char **);
+static bfd_boolean parse_stab_tilde_field
+ (void *, struct stab_handle *, const char **, const int *, debug_type *,
+ bfd_boolean *);
+static debug_type parse_stab_array_type
+ (void *, struct stab_handle *, const char **, bfd_boolean);
+static void push_bincl (struct stab_handle *, const char *, bfd_vma);
+static const char *pop_bincl (struct stab_handle *);
+static bfd_boolean find_excl (struct stab_handle *, const char *, bfd_vma);
+static bfd_boolean stab_record_variable
+ (void *, struct stab_handle *, const char *, debug_type,
+ enum debug_var_kind, bfd_vma);
+static bfd_boolean stab_emit_pending_vars (void *, struct stab_handle *);
+static debug_type *stab_find_slot (struct stab_handle *, const int *);
+static debug_type stab_find_type (void *, struct stab_handle *, const int *);
+static bfd_boolean stab_record_type
+ (void *, struct stab_handle *, const int *, debug_type);
+static debug_type stab_xcoff_builtin_type
+ (void *, struct stab_handle *, int);
+static debug_type stab_find_tagged_type
+ (void *, struct stab_handle *, const char *, int, enum debug_type_kind);
+static debug_type *stab_demangle_argtypes
+ (void *, struct stab_handle *, const char *, bfd_boolean *, unsigned int);
+static debug_type *stab_demangle_v3_argtypes
+ (void *, struct stab_handle *, const char *, bfd_boolean *);
+static debug_type *stab_demangle_v3_arglist
+ (void *, struct stab_handle *, struct demangle_component *, bfd_boolean *);
+static debug_type stab_demangle_v3_arg
+ (void *, struct stab_handle *, struct demangle_component *, debug_type,
+ bfd_boolean *);
+
+/* Save a string in memory. */
+
+static char *
+savestring (const char *start, int len)
+{
+ char *ret;
+
+ ret = (char *) xmalloc (len + 1);
+ memcpy (ret, start, len);
+ ret[len] = '\0';
+ return ret;
+}
+
+/* Read a number from a string. */
+
+static bfd_vma
+parse_number (const char **pp, bfd_boolean *poverflow)
+{
+ unsigned long ul;
+ const char *orig;
+
+ if (poverflow != NULL)
+ *poverflow = FALSE;
+
+ orig = *pp;
+
+ errno = 0;
+ ul = strtoul (*pp, (char **) pp, 0);
+ if (ul + 1 != 0 || errno == 0)
+ {
+ /* If bfd_vma is larger than unsigned long, and the number is
+ meant to be negative, we have to make sure that we sign
+ extend properly. */
+ if (*orig == '-')
+ return (bfd_vma) (bfd_signed_vma) (long) ul;
+ return (bfd_vma) ul;
+ }
+
+ /* Note that even though strtoul overflowed, it should have set *pp
+ to the end of the number, which is where we want it. */
+ if (sizeof (bfd_vma) > sizeof (unsigned long))
+ {
+ const char *p;
+ bfd_boolean neg;
+ int base;
+ bfd_vma over, lastdig;
+ bfd_boolean overflow;
+ bfd_vma v;
+
+ /* Our own version of strtoul, for a bfd_vma. */
+ p = orig;
+
+ neg = FALSE;
+ if (*p == '+')
+ ++p;
+ else if (*p == '-')
+ {
+ neg = TRUE;
+ ++p;
+ }
+
+ base = 10;
+ if (*p == '0')
+ {
+ if (p[1] == 'x' || p[1] == 'X')
+ {
+ base = 16;
+ p += 2;
+ }
+ else
+ {
+ base = 8;
+ ++p;
+ }
+ }
+
+ over = ((bfd_vma) (bfd_signed_vma) -1) / (bfd_vma) base;
+ lastdig = ((bfd_vma) (bfd_signed_vma) -1) % (bfd_vma) base;
+
+ overflow = FALSE;
+ v = 0;
+ while (1)
+ {
+ int d;
+
+ d = *p++;
+ if (ISDIGIT (d))
+ d -= '0';
+ else if (ISUPPER (d))
+ d -= 'A';
+ else if (ISLOWER (d))
+ d -= 'a';
+ else
+ break;
+
+ if (d >= base)
+ break;
+
+ if (v > over || (v == over && (bfd_vma) d > lastdig))
+ {
+ overflow = TRUE;
+ break;
+ }
+ }
+
+ if (! overflow)
+ {
+ if (neg)
+ v = - v;
+ return v;
+ }
+ }
+
+ /* If we get here, the number is too large to represent in a
+ bfd_vma. */
+ if (poverflow != NULL)
+ *poverflow = TRUE;
+ else
+ warn_stab (orig, _("numeric overflow"));
+
+ return 0;
+}
+
+/* Give an error for a bad stab string. */
+
+static void
+bad_stab (const char *p)
+{
+ fprintf (stderr, _("Bad stab: %s\n"), p);
+}
+
+/* Warn about something in a stab string. */
+
+static void
+warn_stab (const char *p, const char *err)
+{
+ fprintf (stderr, _("Warning: %s: %s\n"), err, p);
+}
+
+/* Create a handle to parse stabs symbols with. */
+
+void *
+start_stab (void *dhandle ATTRIBUTE_UNUSED, bfd *abfd, bfd_boolean sections,
+ asymbol **syms, long symcount)
+{
+ struct stab_handle *ret;
+
+ ret = (struct stab_handle *) xmalloc (sizeof *ret);
+ memset (ret, 0, sizeof *ret);
+ ret->abfd = abfd;
+ ret->sections = sections;
+ ret->syms = syms;
+ ret->symcount = symcount;
+ ret->files = 1;
+ ret->file_types = (struct stab_types **) xmalloc (sizeof *ret->file_types);
+ ret->file_types[0] = NULL;
+ ret->function_end = (bfd_vma) -1;
+ return (void *) ret;
+}
+
+/* When we have processed all the stabs information, we need to go
+ through and fill in all the undefined tags. */
+
+bfd_boolean
+finish_stab (void *dhandle, void *handle)
+{
+ struct stab_handle *info = (struct stab_handle *) handle;
+ struct stab_tag *st;
+
+ if (info->within_function)
+ {
+ if (! stab_emit_pending_vars (dhandle, info)
+ || ! debug_end_function (dhandle, info->function_end))
+ return FALSE;
+ info->within_function = FALSE;
+ info->function_end = (bfd_vma) -1;
+ }
+
+ for (st = info->tags; st != NULL; st = st->next)
+ {
+ enum debug_type_kind kind;
+
+ kind = st->kind;
+ if (kind == DEBUG_KIND_ILLEGAL)
+ kind = DEBUG_KIND_STRUCT;
+ st->slot = debug_make_undefined_tagged_type (dhandle, st->name, kind);
+ if (st->slot == DEBUG_TYPE_NULL)
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Handle a single stabs symbol. */
+
+bfd_boolean
+parse_stab (void *dhandle, void *handle, int type, int desc, bfd_vma value,
+ const char *string)
+{
+ struct stab_handle *info = (struct stab_handle *) handle;
+
+ /* gcc will emit two N_SO strings per compilation unit, one for the
+ directory name and one for the file name. We just collect N_SO
+ strings as we see them, and start the new compilation unit when
+ we see a non N_SO symbol. */
+ if (info->so_string != NULL
+ && (type != N_SO || *string == '\0' || value != info->so_value))
+ {
+ if (! debug_set_filename (dhandle, info->so_string))
+ return FALSE;
+ info->main_filename = info->so_string;
+
+ info->gcc_compiled = 0;
+ info->n_opt_found = FALSE;
+
+ /* Generally, for stabs in the symbol table, the N_LBRAC and
+ N_RBRAC symbols are relative to the N_SO symbol value. */
+ if (! info->sections)
+ info->file_start_offset = info->so_value;
+
+ /* We need to reset the mapping from type numbers to types. We
+ can't free the old mapping, because of the use of
+ debug_make_indirect_type. */
+ info->files = 1;
+ info->file_types = ((struct stab_types **)
+ xmalloc (sizeof *info->file_types));
+ info->file_types[0] = NULL;
+
+ info->so_string = NULL;
+
+ /* Now process whatever type we just got. */
+ }
+
+ switch (type)
+ {
+ case N_FN:
+ case N_FN_SEQ:
+ break;
+
+ case N_LBRAC:
+ /* Ignore extra outermost context from SunPRO cc and acc. */
+ if (info->n_opt_found && desc == 1)
+ break;
+
+ if (! info->within_function)
+ {
+ fprintf (stderr, _("N_LBRAC not within function\n"));
+ return FALSE;
+ }
+
+ /* Start an inner lexical block. */
+ if (! debug_start_block (dhandle,
+ (value
+ + info->file_start_offset
+ + info->function_start_offset)))
+ return FALSE;
+
+ /* Emit any pending variable definitions. */
+ if (! stab_emit_pending_vars (dhandle, info))
+ return FALSE;
+
+ ++info->block_depth;
+ break;
+
+ case N_RBRAC:
+ /* Ignore extra outermost context from SunPRO cc and acc. */
+ if (info->n_opt_found && desc == 1)
+ break;
+
+ /* We shouldn't have any pending variable definitions here, but,
+ if we do, we probably need to emit them before closing the
+ block. */
+ if (! stab_emit_pending_vars (dhandle, info))
+ return FALSE;
+
+ /* End an inner lexical block. */
+ if (! debug_end_block (dhandle,
+ (value
+ + info->file_start_offset
+ + info->function_start_offset)))
+ return FALSE;
+
+ --info->block_depth;
+ if (info->block_depth < 0)
+ {
+ fprintf (stderr, _("Too many N_RBRACs\n"));
+ return FALSE;
+ }
+ break;
+
+ case N_SO:
+ /* This always ends a function. */
+ if (info->within_function)
+ {
+ bfd_vma endval;
+
+ endval = value;
+ if (*string != '\0'
+ && info->function_end != (bfd_vma) -1
+ && info->function_end < endval)
+ endval = info->function_end;
+ if (! stab_emit_pending_vars (dhandle, info)
+ || ! debug_end_function (dhandle, endval))
+ return FALSE;
+ info->within_function = FALSE;
+ info->function_end = (bfd_vma) -1;
+ }
+
+ /* An empty string is emitted by gcc at the end of a compilation
+ unit. */
+ if (*string == '\0')
+ return TRUE;
+
+ /* Just accumulate strings until we see a non N_SO symbol. If
+ the string starts with a directory separator or some other
+ form of absolute path specification, we discard the previously
+ accumulated strings. */
+ if (info->so_string == NULL)
+ info->so_string = xstrdup (string);
+ else
+ {
+ char *f;
+
+ f = info->so_string;
+
+ if (IS_ABSOLUTE_PATH (string))
+ info->so_string = xstrdup (string);
+ else
+ info->so_string = concat (info->so_string, string,
+ (const char *) NULL);
+ free (f);
+ }
+
+ info->so_value = value;
+
+ break;
+
+ case N_SOL:
+ /* Start an include file. */
+ if (! debug_start_source (dhandle, string))
+ return FALSE;
+ break;
+
+ case N_BINCL:
+ /* Start an include file which may be replaced. */
+ push_bincl (info, string, value);
+ if (! debug_start_source (dhandle, string))
+ return FALSE;
+ break;
+
+ case N_EINCL:
+ /* End an N_BINCL include. */
+ if (! debug_start_source (dhandle, pop_bincl (info)))
+ return FALSE;
+ break;
+
+ case N_EXCL:
+ /* This is a duplicate of a header file named by N_BINCL which
+ was eliminated by the linker. */
+ if (! find_excl (info, string, value))
+ return FALSE;
+ break;
+
+ case N_SLINE:
+ if (! debug_record_line (dhandle, desc,
+ value + (info->within_function
+ ? info->function_start_offset : 0)))
+ return FALSE;
+ break;
+
+ case N_BCOMM:
+ if (! debug_start_common_block (dhandle, string))
+ return FALSE;
+ break;
+
+ case N_ECOMM:
+ if (! debug_end_common_block (dhandle, string))
+ return FALSE;
+ break;
+
+ case N_FUN:
+ if (*string == '\0')
+ {
+ if (info->within_function)
+ {
+ /* This always marks the end of a function; we don't
+ need to worry about info->function_end. */
+ if (info->sections)
+ value += info->function_start_offset;
+ if (! stab_emit_pending_vars (dhandle, info)
+ || ! debug_end_function (dhandle, value))
+ return FALSE;
+ info->within_function = FALSE;
+ info->function_end = (bfd_vma) -1;
+ }
+ break;
+ }
+
+ /* A const static symbol in the .text section will have an N_FUN
+ entry. We need to use these to mark the end of the function,
+ in case we are looking at gcc output before it was changed to
+ always emit an empty N_FUN. We can't call debug_end_function
+ here, because it might be a local static symbol. */
+ if (info->within_function
+ && (info->function_end == (bfd_vma) -1
+ || value < info->function_end))
+ info->function_end = value;
+
+ /* Fall through. */
+ /* FIXME: gdb checks the string for N_STSYM, N_LCSYM or N_ROSYM
+ symbols, and if it does not start with :S, gdb relocates the
+ value to the start of the section. gcc always seems to use
+ :S, so we don't worry about this. */
+ /* Fall through. */
+ default:
+ {
+ const char *colon;
+
+ colon = strchr (string, ':');
+ if (colon != NULL
+ && (colon[1] == 'f' || colon[1] == 'F'))
+ {
+ if (info->within_function)
+ {
+ bfd_vma endval;
+
+ endval = value;
+ if (info->function_end != (bfd_vma) -1
+ && info->function_end < endval)
+ endval = info->function_end;
+ if (! stab_emit_pending_vars (dhandle, info)
+ || ! debug_end_function (dhandle, endval))
+ return FALSE;
+ info->function_end = (bfd_vma) -1;
+ }
+ /* For stabs in sections, line numbers and block addresses
+ are offsets from the start of the function. */
+ if (info->sections)
+ info->function_start_offset = value;
+ info->within_function = TRUE;
+ }
+
+ if (! parse_stab_string (dhandle, info, type, desc, value, string))
+ return FALSE;
+ }
+ break;
+
+ case N_OPT:
+ if (string != NULL && strcmp (string, "gcc2_compiled.") == 0)
+ info->gcc_compiled = 2;
+ else if (string != NULL && strcmp (string, "gcc_compiled.") == 0)
+ info->gcc_compiled = 1;
+ else
+ info->n_opt_found = TRUE;
+ break;
+
+ case N_OBJ:
+ case N_ENDM:
+ case N_MAIN:
+ case N_WARNING:
+ break;
+ }
+
+ return TRUE;
+}
+
+/* Parse the stabs string. */
+
+static bfd_boolean
+parse_stab_string (void *dhandle, struct stab_handle *info, int stabtype,
+ int desc ATTRIBUTE_UNUSED, bfd_vma value, const char *string)
+{
+ const char *p;
+ char *name;
+ int type;
+ debug_type dtype;
+ bfd_boolean synonym;
+ bfd_boolean self_crossref;
+ debug_type *slot;
+
+ p = strchr (string, ':');
+ if (p == NULL)
+ return TRUE;
+
+ while (p[1] == ':')
+ {
+ p += 2;
+ p = strchr (p, ':');
+ if (p == NULL)
+ {
+ bad_stab (string);
+ return FALSE;
+ }
+ }
+
+ /* FIXME: Sometimes the special C++ names start with '.'. */
+ name = NULL;
+ if (string[0] == '$')
+ {
+ switch (string[1])
+ {
+ case 't':
+ name = "this";
+ break;
+ case 'v':
+ /* Was: name = "vptr"; */
+ break;
+ case 'e':
+ name = "eh_throw";
+ break;
+ case '_':
+ /* This was an anonymous type that was never fixed up. */
+ break;
+ case 'X':
+ /* SunPRO (3.0 at least) static variable encoding. */
+ break;
+ default:
+ warn_stab (string, _("unknown C++ encoded name"));
+ break;
+ }
+ }
+
+ if (name == NULL)
+ {
+ if (p == string || (string[0] == ' ' && p == string + 1))
+ name = NULL;
+ else
+ name = savestring (string, p - string);
+ }
+
+ ++p;
+ if (ISDIGIT (*p) || *p == '(' || *p == '-')
+ type = 'l';
+ else
+ type = *p++;
+
+ switch (type)
+ {
+ case 'c':
+ /* c is a special case, not followed by a type-number.
+ SYMBOL:c=iVALUE for an integer constant symbol.
+ SYMBOL:c=rVALUE for a floating constant symbol.
+ SYMBOL:c=eTYPE,INTVALUE for an enum constant symbol.
+ e.g. "b:c=e6,0" for "const b = blob1"
+ (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
+ if (*p != '=')
+ {
+ bad_stab (string);
+ return FALSE;
+ }
+ ++p;
+ switch (*p++)
+ {
+ case 'r':
+ /* Floating point constant. */
+ if (! debug_record_float_const (dhandle, name, atof (p)))
+ return FALSE;
+ break;
+ case 'i':
+ /* Integer constant. */
+ /* Defining integer constants this way is kind of silly,
+ since 'e' constants allows the compiler to give not only
+ the value, but the type as well. C has at least int,
+ long, unsigned int, and long long as constant types;
+ other languages probably should have at least unsigned as
+ well as signed constants. */
+ if (! debug_record_int_const (dhandle, name, atoi (p)))
+ return FALSE;
+ break;
+ case 'e':
+ /* SYMBOL:c=eTYPE,INTVALUE for a constant symbol whose value
+ can be represented as integral.
+ e.g. "b:c=e6,0" for "const b = blob1"
+ (where type 6 is defined by "blobs:t6=eblob1:0,blob2:1,;"). */
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL,
+ &p, (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (*p != ',')
+ {
+ bad_stab (string);
+ return FALSE;
+ }
+ if (! debug_record_typed_const (dhandle, name, dtype, atoi (p)))
+ return FALSE;
+ break;
+ default:
+ bad_stab (string);
+ return FALSE;
+ }
+
+ break;
+
+ case 'C':
+ /* The name of a caught exception. */
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL,
+ &p, (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (! debug_record_label (dhandle, name, dtype, value))
+ return FALSE;
+ break;
+
+ case 'f':
+ case 'F':
+ /* A function definition. */
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (! debug_record_function (dhandle, name, dtype, type == 'F', value))
+ return FALSE;
+
+ /* Sun acc puts declared types of arguments here. We don't care
+ about their actual types (FIXME -- we should remember the whole
+ function prototype), but the list may define some new types
+ that we have to remember, so we must scan it now. */
+ while (*p == ';')
+ {
+ ++p;
+ if (parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL)
+ == DEBUG_TYPE_NULL)
+ return FALSE;
+ }
+
+ break;
+
+ case 'G':
+ {
+ char leading;
+ long c;
+ asymbol **ps;
+
+ /* A global symbol. The value must be extracted from the
+ symbol table. */
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ leading = bfd_get_symbol_leading_char (info->abfd);
+ for (c = info->symcount, ps = info->syms; c > 0; --c, ++ps)
+ {
+ const char *n;
+
+ n = bfd_asymbol_name (*ps);
+ if (leading != '\0' && *n == leading)
+ ++n;
+ if (*n == *name && strcmp (n, name) == 0)
+ break;
+ }
+ if (c > 0)
+ value = bfd_asymbol_value (*ps);
+ if (! stab_record_variable (dhandle, info, name, dtype, DEBUG_GLOBAL,
+ value))
+ return FALSE;
+ }
+ break;
+
+ /* This case is faked by a conditional above, when there is no
+ code letter in the dbx data. Dbx data never actually
+ contains 'l'. */
+ case 'l':
+ case 's':
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (! stab_record_variable (dhandle, info, name, dtype, DEBUG_LOCAL,
+ value))
+ return FALSE;
+ break;
+
+ case 'p':
+ /* A function parameter. */
+ if (*p != 'F')
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL);
+ else
+ {
+ /* pF is a two-letter code that means a function parameter in
+ Fortran. The type-number specifies the type of the return
+ value. Translate it into a pointer-to-function type. */
+ ++p;
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL);
+ if (dtype != DEBUG_TYPE_NULL)
+ {
+ debug_type ftype;
+
+ ftype = debug_make_function_type (dhandle, dtype,
+ (debug_type *) NULL, FALSE);
+ dtype = debug_make_pointer_type (dhandle, ftype);
+ }
+ }
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (! debug_record_parameter (dhandle, name, dtype, DEBUG_PARM_STACK,
+ value))
+ return FALSE;
+
+ /* FIXME: At this point gdb considers rearranging the parameter
+ address on a big endian machine if it is smaller than an int.
+ We have no way to do that, since we don't really know much
+ about the target. */
+ break;
+
+ case 'P':
+ if (stabtype == N_FUN)
+ {
+ /* Prototype of a function referenced by this file. */
+ while (*p == ';')
+ {
+ ++p;
+ if (parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL)
+ == DEBUG_TYPE_NULL)
+ return FALSE;
+ }
+ break;
+ }
+ /* Fall through. */
+ case 'R':
+ /* Parameter which is in a register. */
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (! debug_record_parameter (dhandle, name, dtype, DEBUG_PARM_REG,
+ value))
+ return FALSE;
+ break;
+
+ case 'r':
+ /* Register variable (either global or local). */
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (! stab_record_variable (dhandle, info, name, dtype, DEBUG_REGISTER,
+ value))
+ return FALSE;
+
+ /* FIXME: At this point gdb checks to combine pairs of 'p' and
+ 'r' stabs into a single 'P' stab. */
+ break;
+
+ case 'S':
+ /* Static symbol at top level of file. */
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (! stab_record_variable (dhandle, info, name, dtype, DEBUG_STATIC,
+ value))
+ return FALSE;
+ break;
+
+ case 't':
+ /* A typedef. */
+ dtype = parse_stab_type (dhandle, info, name, &p, &slot);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (name == NULL)
+ {
+ /* A nameless type. Nothing to do. */
+ return TRUE;
+ }
+
+ dtype = debug_name_type (dhandle, name, dtype);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+
+ if (slot != NULL)
+ *slot = dtype;
+
+ break;
+
+ case 'T':
+ /* Struct, union, or enum tag. For GNU C++, this can be be followed
+ by 't' which means we are typedef'ing it as well. */
+ if (*p != 't')
+ {
+ synonym = FALSE;
+ /* FIXME: gdb sets synonym to TRUE if the current language
+ is C++. */
+ }
+ else
+ {
+ synonym = TRUE;
+ ++p;
+ }
+
+ dtype = parse_stab_type (dhandle, info, name, &p, &slot);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (name == NULL)
+ return TRUE;
+
+ /* INFO->SELF_CROSSREF is set by parse_stab_type if this type is
+ a cross reference to itself. These are generated by some
+ versions of g++. */
+ self_crossref = info->self_crossref;
+
+ dtype = debug_tag_type (dhandle, name, dtype);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (slot != NULL)
+ *slot = dtype;
+
+ /* See if we have a cross reference to this tag which we can now
+ fill in. Avoid filling in a cross reference to ourselves,
+ because that would lead to circular debugging information. */
+ if (! self_crossref)
+ {
+ register struct stab_tag **pst;
+
+ for (pst = &info->tags; *pst != NULL; pst = &(*pst)->next)
+ {
+ if ((*pst)->name[0] == name[0]
+ && strcmp ((*pst)->name, name) == 0)
+ {
+ (*pst)->slot = dtype;
+ *pst = (*pst)->next;
+ break;
+ }
+ }
+ }
+
+ if (synonym)
+ {
+ dtype = debug_name_type (dhandle, name, dtype);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+
+ if (slot != NULL)
+ *slot = dtype;
+ }
+
+ break;
+
+ case 'V':
+ /* Static symbol of local scope */
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ /* FIXME: gdb checks os9k_stabs here. */
+ if (! stab_record_variable (dhandle, info, name, dtype,
+ DEBUG_LOCAL_STATIC, value))
+ return FALSE;
+ break;
+
+ case 'v':
+ /* Reference parameter. */
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (! debug_record_parameter (dhandle, name, dtype, DEBUG_PARM_REFERENCE,
+ value))
+ return FALSE;
+ break;
+
+ case 'a':
+ /* Reference parameter which is in a register. */
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (! debug_record_parameter (dhandle, name, dtype, DEBUG_PARM_REF_REG,
+ value))
+ return FALSE;
+ break;
+
+ case 'X':
+ /* This is used by Sun FORTRAN for "function result value".
+ Sun claims ("dbx and dbxtool interfaces", 2nd ed)
+ that Pascal uses it too, but when I tried it Pascal used
+ "x:3" (local symbol) instead. */
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL, &p,
+ (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return FALSE;
+ if (! stab_record_variable (dhandle, info, name, dtype, DEBUG_LOCAL,
+ value))
+ return FALSE;
+ break;
+
+ case 'Y':
+ /* SUNPro C++ Namespace =Yn0. */
+ /* Skip the namespace mapping, as it is not used now. */
+ if (*(++p) == 'n' && *(++p) == '0')
+ {
+ /* =Yn0name; */
+ while (*p != ';')
+ ++p;
+ ++p;
+ return TRUE;
+ }
+ /* TODO SUNPro C++ support:
+ Support default arguments after F,P parameters
+ Ya = Anonymous unions
+ YM,YD = Pointers to class members
+ YT,YI = Templates
+ YR = Run-time type information (RTTI) */
+
+ /* Fall through. */
+
+ default:
+ bad_stab (string);
+ return FALSE;
+ }
+
+ /* FIXME: gdb converts structure values to structure pointers in a
+ couple of cases, depending upon the target. */
+
+ return TRUE;
+}
+
+/* Parse a stabs type. The typename argument is non-NULL if this is a
+ typedef or a tag definition. The pp argument points to the stab
+ string, and is updated. The slotp argument points to a place to
+ store the slot used if the type is being defined. */
+
+static debug_type
+parse_stab_type (void *dhandle, struct stab_handle *info, const char *type_name, const char **pp, debug_type **slotp)
+{
+ const char *orig;
+ int typenums[2];
+ int size;
+ bfd_boolean stringp;
+ int descriptor;
+ debug_type dtype;
+
+ if (slotp != NULL)
+ *slotp = NULL;
+
+ orig = *pp;
+
+ size = -1;
+ stringp = FALSE;
+
+ info->self_crossref = FALSE;
+
+ /* Read type number if present. The type number may be omitted.
+ for instance in a two-dimensional array declared with type
+ "ar1;1;10;ar1;1;10;4". */
+ if (! ISDIGIT (**pp) && **pp != '(' && **pp != '-')
+ {
+ /* 'typenums=' not present, type is anonymous. Read and return
+ the definition, but don't put it in the type vector. */
+ typenums[0] = typenums[1] = -1;
+ }
+ else
+ {
+ if (! parse_stab_type_number (pp, typenums))
+ return DEBUG_TYPE_NULL;
+
+ if (**pp != '=')
+ /* Type is not being defined here. Either it already
+ exists, or this is a forward reference to it. */
+ return stab_find_type (dhandle, info, typenums);
+
+ /* Only set the slot if the type is being defined. This means
+ that the mapping from type numbers to types will only record
+ the name of the typedef which defines a type. If we don't do
+ this, then something like
+ typedef int foo;
+ int i;
+ will record that i is of type foo. Unfortunately, stabs
+ information is ambiguous about variable types. For this code,
+ typedef int foo;
+ int i;
+ foo j;
+ the stabs information records both i and j as having the same
+ type. This could be fixed by patching the compiler. */
+ if (slotp != NULL && typenums[0] >= 0 && typenums[1] >= 0)
+ *slotp = stab_find_slot (info, typenums);
+
+ /* Type is being defined here. */
+ /* Skip the '='. */
+ ++*pp;
+
+ while (**pp == '@')
+ {
+ const char *p = *pp + 1;
+ const char *attr;
+
+ if (ISDIGIT (*p) || *p == '(' || *p == '-')
+ /* Member type. */
+ break;
+
+ /* Type attributes. */
+ attr = p;
+
+ for (; *p != ';'; ++p)
+ {
+ if (*p == '\0')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ }
+ *pp = p + 1;
+
+ switch (*attr)
+ {
+ case 's':
+ size = atoi (attr + 1);
+ size /= 8; /* Size is in bits. We store it in bytes. */
+ if (size <= 0)
+ size = -1;
+ break;
+
+ case 'S':
+ stringp = TRUE;
+ break;
+
+ default:
+ /* Ignore unrecognized type attributes, so future
+ compilers can invent new ones. */
+ break;
+ }
+ }
+ }
+
+ descriptor = **pp;
+ ++*pp;
+
+ switch (descriptor)
+ {
+ case 'x':
+ {
+ enum debug_type_kind code;
+ const char *q1, *q2, *p;
+
+ /* A cross reference to another type. */
+ switch (**pp)
+ {
+ case 's':
+ code = DEBUG_KIND_STRUCT;
+ break;
+ case 'u':
+ code = DEBUG_KIND_UNION;
+ break;
+ case 'e':
+ code = DEBUG_KIND_ENUM;
+ break;
+ default:
+ /* Complain and keep going, so compilers can invent new
+ cross-reference types. */
+ warn_stab (orig, _("unrecognized cross reference type"));
+ code = DEBUG_KIND_STRUCT;
+ break;
+ }
+ ++*pp;
+
+ q1 = strchr (*pp, '<');
+ p = strchr (*pp, ':');
+ if (p == NULL)
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ if (q1 != NULL && p > q1 && p[1] == ':')
+ {
+ int nest = 0;
+
+ for (q2 = q1; *q2 != '\0'; ++q2)
+ {
+ if (*q2 == '<')
+ ++nest;
+ else if (*q2 == '>')
+ --nest;
+ else if (*q2 == ':' && nest == 0)
+ break;
+ }
+ p = q2;
+ if (*p != ':')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ }
+
+ /* Some versions of g++ can emit stabs like
+ fleep:T20=xsfleep:
+ which define structures in terms of themselves. We need to
+ tell the caller to avoid building a circular structure. */
+ if (type_name != NULL
+ && strncmp (type_name, *pp, p - *pp) == 0
+ && type_name[p - *pp] == '\0')
+ info->self_crossref = TRUE;
+
+ dtype = stab_find_tagged_type (dhandle, info, *pp, p - *pp, code);
+
+ *pp = p + 1;
+ }
+ break;
+
+ case '-':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case '(':
+ {
+ const char *hold;
+ int xtypenums[2];
+
+ /* This type is defined as another type. */
+ (*pp)--;
+ hold = *pp;
+
+ /* Peek ahead at the number to detect void. */
+ if (! parse_stab_type_number (pp, xtypenums))
+ return DEBUG_TYPE_NULL;
+
+ if (typenums[0] == xtypenums[0] && typenums[1] == xtypenums[1])
+ {
+ /* This type is being defined as itself, which means that
+ it is void. */
+ dtype = debug_make_void_type (dhandle);
+ }
+ else
+ {
+ *pp = hold;
+
+ /* Go back to the number and have parse_stab_type get it.
+ This means that we can deal with something like
+ t(1,2)=(3,4)=... which the Lucid compiler uses. */
+ dtype = parse_stab_type (dhandle, info, (const char *) NULL,
+ pp, (debug_type **) NULL);
+ if (dtype == DEBUG_TYPE_NULL)
+ return DEBUG_TYPE_NULL;
+ }
+
+ if (typenums[0] != -1)
+ {
+ if (! stab_record_type (dhandle, info, typenums, dtype))
+ return DEBUG_TYPE_NULL;
+ }
+
+ break;
+ }
+
+ case '*':
+ dtype = debug_make_pointer_type (dhandle,
+ parse_stab_type (dhandle, info,
+ (const char *) NULL,
+ pp,
+ (debug_type **) NULL));
+ break;
+
+ case '&':
+ /* Reference to another type. */
+ dtype = (debug_make_reference_type
+ (dhandle,
+ parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL)));
+ break;
+
+ case 'f':
+ /* Function returning another type. */
+ /* FIXME: gdb checks os9k_stabs here. */
+ dtype = (debug_make_function_type
+ (dhandle,
+ parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL),
+ (debug_type *) NULL, FALSE));
+ break;
+
+ case 'k':
+ /* Const qualifier on some type (Sun). */
+ /* FIXME: gdb accepts 'c' here if os9k_stabs. */
+ dtype = debug_make_const_type (dhandle,
+ parse_stab_type (dhandle, info,
+ (const char *) NULL,
+ pp,
+ (debug_type **) NULL));
+ break;
+
+ case 'B':
+ /* Volatile qual on some type (Sun). */
+ /* FIXME: gdb accepts 'i' here if os9k_stabs. */
+ dtype = (debug_make_volatile_type
+ (dhandle,
+ parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL)));
+ break;
+
+ case '@':
+ /* Offset (class & variable) type. This is used for a pointer
+ relative to an object. */
+ {
+ debug_type domain;
+ debug_type memtype;
+
+ /* Member type. */
+
+ domain = parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL);
+ if (domain == DEBUG_TYPE_NULL)
+ return DEBUG_TYPE_NULL;
+
+ if (**pp != ',')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ memtype = parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL);
+ if (memtype == DEBUG_TYPE_NULL)
+ return DEBUG_TYPE_NULL;
+
+ dtype = debug_make_offset_type (dhandle, domain, memtype);
+ }
+ break;
+
+ case '#':
+ /* Method (class & fn) type. */
+ if (**pp == '#')
+ {
+ debug_type return_type;
+
+ ++*pp;
+ return_type = parse_stab_type (dhandle, info, (const char *) NULL,
+ pp, (debug_type **) NULL);
+ if (return_type == DEBUG_TYPE_NULL)
+ return DEBUG_TYPE_NULL;
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+ dtype = debug_make_method_type (dhandle, return_type,
+ DEBUG_TYPE_NULL,
+ (debug_type *) NULL, FALSE);
+ }
+ else
+ {
+ debug_type domain;
+ debug_type return_type;
+ debug_type *args;
+ unsigned int n;
+ unsigned int alloc;
+ bfd_boolean varargs;
+
+ domain = parse_stab_type (dhandle, info, (const char *) NULL,
+ pp, (debug_type **) NULL);
+ if (domain == DEBUG_TYPE_NULL)
+ return DEBUG_TYPE_NULL;
+
+ if (**pp != ',')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ return_type = parse_stab_type (dhandle, info, (const char *) NULL,
+ pp, (debug_type **) NULL);
+ if (return_type == DEBUG_TYPE_NULL)
+ return DEBUG_TYPE_NULL;
+
+ alloc = 10;
+ args = (debug_type *) xmalloc (alloc * sizeof *args);
+ n = 0;
+ while (**pp != ';')
+ {
+ if (**pp != ',')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ if (n + 1 >= alloc)
+ {
+ alloc += 10;
+ args = ((debug_type *)
+ xrealloc (args, alloc * sizeof *args));
+ }
+
+ args[n] = parse_stab_type (dhandle, info, (const char *) NULL,
+ pp, (debug_type **) NULL);
+ if (args[n] == DEBUG_TYPE_NULL)
+ return DEBUG_TYPE_NULL;
+ ++n;
+ }
+ ++*pp;
+
+ /* If the last type is not void, then this function takes a
+ variable number of arguments. Otherwise, we must strip
+ the void type. */
+ if (n == 0
+ || debug_get_type_kind (dhandle, args[n - 1]) != DEBUG_KIND_VOID)
+ varargs = TRUE;
+ else
+ {
+ --n;
+ varargs = FALSE;
+ }
+
+ args[n] = DEBUG_TYPE_NULL;
+
+ dtype = debug_make_method_type (dhandle, return_type, domain, args,
+ varargs);
+ }
+ break;
+
+ case 'r':
+ /* Range type. */
+ dtype = parse_stab_range_type (dhandle, info, type_name, pp, typenums);
+ break;
+
+ case 'b':
+ /* FIXME: gdb checks os9k_stabs here. */
+ /* Sun ACC builtin int type. */
+ dtype = parse_stab_sun_builtin_type (dhandle, pp);
+ break;
+
+ case 'R':
+ /* Sun ACC builtin float type. */
+ dtype = parse_stab_sun_floating_type (dhandle, pp);
+ break;
+
+ case 'e':
+ /* Enumeration type. */
+ dtype = parse_stab_enum_type (dhandle, pp);
+ break;
+
+ case 's':
+ case 'u':
+ /* Struct or union type. */
+ dtype = parse_stab_struct_type (dhandle, info, type_name, pp,
+ descriptor == 's', typenums);
+ break;
+
+ case 'a':
+ /* Array type. */
+ if (**pp != 'r')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ dtype = parse_stab_array_type (dhandle, info, pp, stringp);
+ break;
+
+ case 'S':
+ dtype = debug_make_set_type (dhandle,
+ parse_stab_type (dhandle, info,
+ (const char *) NULL,
+ pp,
+ (debug_type **) NULL),
+ stringp);
+ break;
+
+ default:
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+
+ if (dtype == DEBUG_TYPE_NULL)
+ return DEBUG_TYPE_NULL;
+
+ if (typenums[0] != -1)
+ {
+ if (! stab_record_type (dhandle, info, typenums, dtype))
+ return DEBUG_TYPE_NULL;
+ }
+
+ if (size != -1)
+ {
+ if (! debug_record_type_size (dhandle, dtype, (unsigned int) size))
+ return DEBUG_TYPE_NULL;
+ }
+
+ return dtype;
+}
+
+/* Read a number by which a type is referred to in dbx data, or
+ perhaps read a pair (FILENUM, TYPENUM) in parentheses. Just a
+ single number N is equivalent to (0,N). Return the two numbers by
+ storing them in the vector TYPENUMS. */
+
+static bfd_boolean
+parse_stab_type_number (const char **pp, int *typenums)
+{
+ const char *orig;
+
+ orig = *pp;
+
+ if (**pp != '(')
+ {
+ typenums[0] = 0;
+ typenums[1] = (int) parse_number (pp, (bfd_boolean *) NULL);
+ }
+ else
+ {
+ ++*pp;
+ typenums[0] = (int) parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ',')
+ {
+ bad_stab (orig);
+ return FALSE;
+ }
+ ++*pp;
+ typenums[1] = (int) parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ')')
+ {
+ bad_stab (orig);
+ return FALSE;
+ }
+ ++*pp;
+ }
+
+ return TRUE;
+}
+
+/* Parse a range type. */
+
+static debug_type
+parse_stab_range_type (void *dhandle, struct stab_handle *info, const char *type_name, const char **pp, const int *typenums)
+{
+ const char *orig;
+ int rangenums[2];
+ bfd_boolean self_subrange;
+ debug_type index_type;
+ const char *s2, *s3;
+ bfd_signed_vma n2, n3;
+ bfd_boolean ov2, ov3;
+
+ orig = *pp;
+
+ index_type = DEBUG_TYPE_NULL;
+
+ /* First comes a type we are a subrange of.
+ In C it is usually 0, 1 or the type being defined. */
+ if (! parse_stab_type_number (pp, rangenums))
+ return DEBUG_TYPE_NULL;
+
+ self_subrange = (rangenums[0] == typenums[0]
+ && rangenums[1] == typenums[1]);
+
+ if (**pp == '=')
+ {
+ *pp = orig;
+ index_type = parse_stab_type (dhandle, info, (const char *) NULL,
+ pp, (debug_type **) NULL);
+ if (index_type == DEBUG_TYPE_NULL)
+ return DEBUG_TYPE_NULL;
+ }
+
+ if (**pp == ';')
+ ++*pp;
+
+ /* The remaining two operands are usually lower and upper bounds of
+ the range. But in some special cases they mean something else. */
+ s2 = *pp;
+ n2 = parse_number (pp, &ov2);
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ s3 = *pp;
+ n3 = parse_number (pp, &ov3);
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ if (ov2 || ov3)
+ {
+ /* gcc will emit range stabs for long long types. Handle this
+ as a special case. FIXME: This needs to be more general. */
+#define LLLOW "01000000000000000000000;"
+#define LLHIGH "0777777777777777777777;"
+#define ULLHIGH "01777777777777777777777;"
+ if (index_type == DEBUG_TYPE_NULL)
+ {
+ if (CONST_STRNEQ (s2, LLLOW)
+ && CONST_STRNEQ (s3, LLHIGH))
+ return debug_make_int_type (dhandle, 8, FALSE);
+ if (! ov2
+ && n2 == 0
+ && CONST_STRNEQ (s3, ULLHIGH))
+ return debug_make_int_type (dhandle, 8, TRUE);
+ }
+
+ warn_stab (orig, _("numeric overflow"));
+ }
+
+ if (index_type == DEBUG_TYPE_NULL)
+ {
+ /* A type defined as a subrange of itself, with both bounds 0,
+ is void. */
+ if (self_subrange && n2 == 0 && n3 == 0)
+ return debug_make_void_type (dhandle);
+
+ /* A type defined as a subrange of itself, with n2 positive and
+ n3 zero, is a complex type, and n2 is the number of bytes. */
+ if (self_subrange && n3 == 0 && n2 > 0)
+ return debug_make_complex_type (dhandle, n2);
+
+ /* If n3 is zero and n2 is positive, this is a floating point
+ type, and n2 is the number of bytes. */
+ if (n3 == 0 && n2 > 0)
+ return debug_make_float_type (dhandle, n2);
+
+ /* If the upper bound is -1, this is an unsigned int. */
+ if (n2 == 0 && n3 == -1)
+ {
+ /* When gcc is used with -gstabs, but not -gstabs+, it will emit
+ long long int:t6=r1;0;-1;
+ long long unsigned int:t7=r1;0;-1;
+ We hack here to handle this reasonably. */
+ if (type_name != NULL)
+ {
+ if (strcmp (type_name, "long long int") == 0)
+ return debug_make_int_type (dhandle, 8, FALSE);
+ else if (strcmp (type_name, "long long unsigned int") == 0)
+ return debug_make_int_type (dhandle, 8, TRUE);
+ }
+ /* FIXME: The size here really depends upon the target. */
+ return debug_make_int_type (dhandle, 4, TRUE);
+ }
+
+ /* A range of 0 to 127 is char. */
+ if (self_subrange && n2 == 0 && n3 == 127)
+ return debug_make_int_type (dhandle, 1, FALSE);
+
+ /* FIXME: gdb checks for the language CHILL here. */
+
+ if (n2 == 0)
+ {
+ if (n3 < 0)
+ return debug_make_int_type (dhandle, - n3, TRUE);
+ else if (n3 == 0xff)
+ return debug_make_int_type (dhandle, 1, TRUE);
+ else if (n3 == 0xffff)
+ return debug_make_int_type (dhandle, 2, TRUE);
+ else if (n3 == (bfd_signed_vma) 0xffffffff)
+ return debug_make_int_type (dhandle, 4, TRUE);
+#ifdef BFD64
+ else if (n3 == ((((bfd_signed_vma) 0xffffffff) << 32) | 0xffffffff))
+ return debug_make_int_type (dhandle, 8, TRUE);
+#endif
+ }
+ else if (n3 == 0
+ && n2 < 0
+ && (self_subrange || n2 == -8))
+ return debug_make_int_type (dhandle, - n2, TRUE);
+ else if (n2 == - n3 - 1 || n2 == n3 + 1)
+ {
+ if (n3 == 0x7f)
+ return debug_make_int_type (dhandle, 1, FALSE);
+ else if (n3 == 0x7fff)
+ return debug_make_int_type (dhandle, 2, FALSE);
+ else if (n3 == 0x7fffffff)
+ return debug_make_int_type (dhandle, 4, FALSE);
+#ifdef BFD64
+ else if (n3 == ((((bfd_vma) 0x7fffffff) << 32) | 0xffffffff))
+ return debug_make_int_type (dhandle, 8, FALSE);
+#endif
+ }
+ }
+
+ /* At this point I don't have the faintest idea how to deal with a
+ self_subrange type; I'm going to assume that this is used as an
+ idiom, and that all of them are special cases. So . . . */
+ if (self_subrange)
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+
+ index_type = stab_find_type (dhandle, info, rangenums);
+ if (index_type == DEBUG_TYPE_NULL)
+ {
+ /* Does this actually ever happen? Is that why we are worrying
+ about dealing with it rather than just calling error_type? */
+ warn_stab (orig, _("missing index type"));
+ index_type = debug_make_int_type (dhandle, 4, FALSE);
+ }
+
+ return debug_make_range_type (dhandle, index_type, n2, n3);
+}
+
+/* Sun's ACC uses a somewhat saner method for specifying the builtin
+ typedefs in every file (for int, long, etc):
+
+ type = b <signed> <width>; <offset>; <nbits>
+ signed = u or s. Possible c in addition to u or s (for char?).
+ offset = offset from high order bit to start bit of type.
+ width is # bytes in object of this type, nbits is # bits in type.
+
+ The width/offset stuff appears to be for small objects stored in
+ larger ones (e.g. `shorts' in `int' registers). We ignore it for now,
+ FIXME. */
+
+static debug_type
+parse_stab_sun_builtin_type (void *dhandle, const char **pp)
+{
+ const char *orig;
+ bfd_boolean unsignedp;
+ bfd_vma bits;
+
+ orig = *pp;
+
+ switch (**pp)
+ {
+ case 's':
+ unsignedp = FALSE;
+ break;
+ case 'u':
+ unsignedp = TRUE;
+ break;
+ default:
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ /* OpenSolaris source code indicates that one of "cbv" characters
+ can come next and specify the intrinsic 'iformat' encoding.
+ 'c' is character encoding, 'b' is boolean encoding, and 'v' is
+ varargs encoding. This field can be safely ignored because
+ the type of the field is determined from the bitwidth extracted
+ below. */
+ if (**pp == 'c' || **pp == 'b' || **pp == 'v')
+ ++*pp;
+
+ /* The first number appears to be the number of bytes occupied
+ by this type, except that unsigned short is 4 instead of 2.
+ Since this information is redundant with the third number,
+ we will ignore it. */
+ (void) parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ /* The second number is always 0, so ignore it too. */
+ (void) parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ /* The third number is the number of bits for this type. */
+ bits = parse_number (pp, (bfd_boolean *) NULL);
+
+ /* The type *should* end with a semicolon. If it are embedded
+ in a larger type the semicolon may be the only way to know where
+ the type ends. If this type is at the end of the stabstring we
+ can deal with the omitted semicolon (but we don't have to like
+ it). Don't bother to complain(), Sun's compiler omits the semicolon
+ for "void". */
+ if (**pp == ';')
+ ++*pp;
+
+ if (bits == 0)
+ return debug_make_void_type (dhandle);
+
+ return debug_make_int_type (dhandle, bits / 8, unsignedp);
+}
+
+/* Parse a builtin floating type generated by the Sun compiler. */
+
+static debug_type
+parse_stab_sun_floating_type (void *dhandle, const char **pp)
+{
+ const char *orig;
+ bfd_vma details;
+ bfd_vma bytes;
+
+ orig = *pp;
+
+ /* The first number has more details about the type, for example
+ FN_COMPLEX. */
+ details = parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+
+ /* The second number is the number of bytes occupied by this type */
+ bytes = parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+
+ if (details == NF_COMPLEX
+ || details == NF_COMPLEX16
+ || details == NF_COMPLEX32)
+ return debug_make_complex_type (dhandle, bytes);
+
+ return debug_make_float_type (dhandle, bytes);
+}
+
+/* Handle an enum type. */
+
+static debug_type
+parse_stab_enum_type (void *dhandle, const char **pp)
+{
+ const char *orig;
+ const char **names;
+ bfd_signed_vma *values;
+ unsigned int n;
+ unsigned int alloc;
+
+ orig = *pp;
+
+ /* FIXME: gdb checks os9k_stabs here. */
+
+ /* The aix4 compiler emits an extra field before the enum members;
+ my guess is it's a type of some sort. Just ignore it. */
+ if (**pp == '-')
+ {
+ while (**pp != ':')
+ ++*pp;
+ ++*pp;
+ }
+
+ /* Read the value-names and their values.
+ The input syntax is NAME:VALUE,NAME:VALUE, and so on.
+ A semicolon or comma instead of a NAME means the end. */
+ alloc = 10;
+ names = (const char **) xmalloc (alloc * sizeof *names);
+ values = (bfd_signed_vma *) xmalloc (alloc * sizeof *values);
+ n = 0;
+ while (**pp != '\0' && **pp != ';' && **pp != ',')
+ {
+ const char *p;
+ char *name;
+ bfd_signed_vma val;
+
+ p = *pp;
+ while (*p != ':')
+ ++p;
+
+ name = savestring (*pp, p - *pp);
+
+ *pp = p + 1;
+ val = (bfd_signed_vma) parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ',')
+ {
+ bad_stab (orig);
+ free (name);
+ free (names);
+ free (values);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ if (n + 1 >= alloc)
+ {
+ alloc += 10;
+ names = ((const char **)
+ xrealloc (names, alloc * sizeof *names));
+ values = ((bfd_signed_vma *)
+ xrealloc (values, alloc * sizeof *values));
+ }
+
+ names[n] = name;
+ values[n] = val;
+ ++n;
+ }
+
+ names[n] = NULL;
+ values[n] = 0;
+
+ if (**pp == ';')
+ ++*pp;
+
+ return debug_make_enum_type (dhandle, names, values);
+}
+
+/* Read the description of a structure (or union type) and return an object
+ describing the type.
+
+ PP points to a character pointer that points to the next unconsumed token
+ in the stabs string. For example, given stabs "A:T4=s4a:1,0,32;;",
+ *PP will point to "4a:1,0,32;;". */
+
+static debug_type
+parse_stab_struct_type (void *dhandle, struct stab_handle *info,
+ const char *tagname, const char **pp,
+ bfd_boolean structp, const int *typenums)
+{
+ bfd_vma size;
+ debug_baseclass *baseclasses;
+ debug_field *fields = NULL;
+ bfd_boolean statics;
+ debug_method *methods;
+ debug_type vptrbase;
+ bfd_boolean ownvptr;
+
+ /* Get the size. */
+ size = parse_number (pp, (bfd_boolean *) NULL);
+
+ /* Get the other information. */
+ if (! parse_stab_baseclasses (dhandle, info, pp, &baseclasses)
+ || ! parse_stab_struct_fields (dhandle, info, pp, &fields, &statics)
+ || ! parse_stab_members (dhandle, info, tagname, pp, typenums, &methods)
+ || ! parse_stab_tilde_field (dhandle, info, pp, typenums, &vptrbase,
+ &ownvptr))
+ {
+ if (fields != NULL)
+ free (fields);
+ return DEBUG_TYPE_NULL;
+ }
+
+ if (! statics
+ && baseclasses == NULL
+ && methods == NULL
+ && vptrbase == DEBUG_TYPE_NULL
+ && ! ownvptr)
+ return debug_make_struct_type (dhandle, structp, size, fields);
+
+ return debug_make_object_type (dhandle, structp, size, fields, baseclasses,
+ methods, vptrbase, ownvptr);
+}
+
+/* The stabs for C++ derived classes contain baseclass information which
+ is marked by a '!' character after the total size. This function is
+ called when we encounter the baseclass marker, and slurps up all the
+ baseclass information.
+
+ Immediately following the '!' marker is the number of base classes that
+ the class is derived from, followed by information for each base class.
+ For each base class, there are two visibility specifiers, a bit offset
+ to the base class information within the derived class, a reference to
+ the type for the base class, and a terminating semicolon.
+
+ A typical example, with two base classes, would be "!2,020,19;0264,21;".
+ ^^ ^ ^ ^ ^ ^ ^
+ Baseclass information marker __________________|| | | | | | |
+ Number of baseclasses __________________________| | | | | | |
+ Visibility specifiers (2) ________________________| | | | | |
+ Offset in bits from start of class _________________| | | | |
+ Type number for base class ___________________________| | | |
+ Visibility specifiers (2) _______________________________| | |
+ Offset in bits from start of class ________________________| |
+ Type number of base class ____________________________________|
+
+ Return TRUE for success, FALSE for failure. */
+
+static bfd_boolean
+parse_stab_baseclasses (void *dhandle, struct stab_handle *info,
+ const char **pp, debug_baseclass **retp)
+{
+ const char *orig;
+ unsigned int c, i;
+ debug_baseclass *classes;
+
+ *retp = NULL;
+
+ orig = *pp;
+
+ if (**pp != '!')
+ {
+ /* No base classes. */
+ return TRUE;
+ }
+ ++*pp;
+
+ c = (unsigned int) parse_number (pp, (bfd_boolean *) NULL);
+
+ if (**pp != ',')
+ {
+ bad_stab (orig);
+ return FALSE;
+ }
+ ++*pp;
+
+ classes = (debug_baseclass *) xmalloc ((c + 1) * sizeof (**retp));
+
+ for (i = 0; i < c; i++)
+ {
+ bfd_boolean is_virtual;
+ enum debug_visibility visibility;
+ bfd_vma bitpos;
+ debug_type type;
+
+ switch (**pp)
+ {
+ case '0':
+ is_virtual = FALSE;
+ break;
+ case '1':
+ is_virtual = TRUE;
+ break;
+ default:
+ warn_stab (orig, _("unknown virtual character for baseclass"));
+ is_virtual = FALSE;
+ break;
+ }
+ ++*pp;
+
+ switch (**pp)
+ {
+ case '0':
+ visibility = DEBUG_VISIBILITY_PRIVATE;
+ break;
+ case '1':
+ visibility = DEBUG_VISIBILITY_PROTECTED;
+ break;
+ case '2':
+ visibility = DEBUG_VISIBILITY_PUBLIC;
+ break;
+ default:
+ warn_stab (orig, _("unknown visibility character for baseclass"));
+ visibility = DEBUG_VISIBILITY_PUBLIC;
+ break;
+ }
+ ++*pp;
+
+ /* The remaining value is the bit offset of the portion of the
+ object corresponding to this baseclass. Always zero in the
+ absence of multiple inheritance. */
+ bitpos = parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ',')
+ {
+ bad_stab (orig);
+ return FALSE;
+ }
+ ++*pp;
+
+ type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL);
+ if (type == DEBUG_TYPE_NULL)
+ return FALSE;
+
+ classes[i] = debug_make_baseclass (dhandle, type, bitpos, is_virtual,
+ visibility);
+ if (classes[i] == DEBUG_BASECLASS_NULL)
+ return FALSE;
+
+ if (**pp != ';')
+ return FALSE;
+ ++*pp;
+ }
+
+ classes[i] = DEBUG_BASECLASS_NULL;
+
+ *retp = classes;
+
+ return TRUE;
+}
+
+/* Read struct or class data fields. They have the form:
+
+ NAME : [VISIBILITY] TYPENUM , BITPOS , BITSIZE ;
+
+ At the end, we see a semicolon instead of a field.
+
+ In C++, this may wind up being NAME:?TYPENUM:PHYSNAME; for
+ a static field.
+
+ The optional VISIBILITY is one of:
+
+ '/0' (VISIBILITY_PRIVATE)
+ '/1' (VISIBILITY_PROTECTED)
+ '/2' (VISIBILITY_PUBLIC)
+ '/9' (VISIBILITY_IGNORE)
+
+ or nothing, for C style fields with public visibility.
+
+ Returns 1 for success, 0 for failure. */
+
+static bfd_boolean
+parse_stab_struct_fields (void *dhandle, struct stab_handle *info,
+ const char **pp, debug_field **retp,
+ bfd_boolean *staticsp)
+{
+ const char *orig;
+ const char *p;
+ debug_field *fields;
+ unsigned int c;
+ unsigned int alloc;
+
+ *retp = NULL;
+ *staticsp = FALSE;
+
+ orig = *pp;
+
+ c = 0;
+ alloc = 10;
+ fields = (debug_field *) xmalloc (alloc * sizeof *fields);
+ while (**pp != ';')
+ {
+ /* FIXME: gdb checks os9k_stabs here. */
+
+ p = *pp;
+
+ /* Add 1 to c to leave room for NULL pointer at end. */
+ if (c + 1 >= alloc)
+ {
+ alloc += 10;
+ fields = ((debug_field *)
+ xrealloc (fields, alloc * sizeof *fields));
+ }
+
+ /* If it starts with CPLUS_MARKER it is a special abbreviation,
+ unless the CPLUS_MARKER is followed by an underscore, in
+ which case it is just the name of an anonymous type, which we
+ should handle like any other type name. We accept either '$'
+ or '.', because a field name can never contain one of these
+ characters except as a CPLUS_MARKER. */
+
+ if ((*p == '$' || *p == '.') && p[1] != '_')
+ {
+ ++*pp;
+ if (! parse_stab_cpp_abbrev (dhandle, info, pp, fields + c))
+ {
+ free (fields);
+ return FALSE;
+ }
+ ++c;
+ continue;
+ }
+
+ /* Look for the ':' that separates the field name from the field
+ values. Data members are delimited by a single ':', while member
+ functions are delimited by a pair of ':'s. When we hit the member
+ functions (if any), terminate scan loop and return. */
+
+ p = strchr (p, ':');
+ if (p == NULL)
+ {
+ bad_stab (orig);
+ free (fields);
+ return FALSE;
+ }
+
+ if (p[1] == ':')
+ break;
+
+ if (! parse_stab_one_struct_field (dhandle, info, pp, p, fields + c,
+ staticsp))
+ return FALSE;
+
+ ++c;
+ }
+
+ fields[c] = DEBUG_FIELD_NULL;
+
+ *retp = fields;
+
+ return TRUE;
+}
+
+/* Special GNU C++ name. */
+
+static bfd_boolean
+parse_stab_cpp_abbrev (void *dhandle, struct stab_handle *info,
+ const char **pp, debug_field *retp)
+{
+ const char *orig;
+ int cpp_abbrev;
+ debug_type context;
+ const char *name;
+ const char *type_name;
+ debug_type type;
+ bfd_vma bitpos;
+
+ *retp = DEBUG_FIELD_NULL;
+
+ orig = *pp;
+
+ if (**pp != 'v')
+ {
+ bad_stab (*pp);
+ return FALSE;
+ }
+ ++*pp;
+
+ cpp_abbrev = **pp;
+ ++*pp;
+
+ /* At this point, *pp points to something like "22:23=*22...", where
+ the type number before the ':' is the "context" and everything
+ after is a regular type definition. Lookup the type, find it's
+ name, and construct the field name. */
+
+ context = parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL);
+ if (context == DEBUG_TYPE_NULL)
+ return FALSE;
+
+ switch (cpp_abbrev)
+ {
+ case 'f':
+ /* $vf -- a virtual function table pointer. */
+ name = "_vptr$";
+ break;
+ case 'b':
+ /* $vb -- a virtual bsomethingorother */
+ type_name = debug_get_type_name (dhandle, context);
+ if (type_name == NULL)
+ {
+ warn_stab (orig, _("unnamed $vb type"));
+ type_name = "FOO";
+ }
+ name = concat ("_vb$", type_name, (const char *) NULL);
+ break;
+ default:
+ warn_stab (orig, _("unrecognized C++ abbreviation"));
+ name = "INVALID_CPLUSPLUS_ABBREV";
+ break;
+ }
+
+ if (**pp != ':')
+ {
+ bad_stab (orig);
+ return FALSE;
+ }
+ ++*pp;
+
+ type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL);
+ if (**pp != ',')
+ {
+ bad_stab (orig);
+ return FALSE;
+ }
+ ++*pp;
+
+ bitpos = parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ return FALSE;
+ }
+ ++*pp;
+
+ *retp = debug_make_field (dhandle, name, type, bitpos, 0,
+ DEBUG_VISIBILITY_PRIVATE);
+ if (*retp == DEBUG_FIELD_NULL)
+ return FALSE;
+
+ return TRUE;
+}
+
+/* Parse a single field in a struct or union. */
+
+static bfd_boolean
+parse_stab_one_struct_field (void *dhandle, struct stab_handle *info,
+ const char **pp, const char *p,
+ debug_field *retp, bfd_boolean *staticsp)
+{
+ const char *orig;
+ char *name;
+ enum debug_visibility visibility;
+ debug_type type;
+ bfd_vma bitpos;
+ bfd_vma bitsize;
+
+ orig = *pp;
+
+ /* FIXME: gdb checks ARM_DEMANGLING here. */
+
+ name = savestring (*pp, p - *pp);
+
+ *pp = p + 1;
+
+ if (**pp != '/')
+ visibility = DEBUG_VISIBILITY_PUBLIC;
+ else
+ {
+ ++*pp;
+ switch (**pp)
+ {
+ case '0':
+ visibility = DEBUG_VISIBILITY_PRIVATE;
+ break;
+ case '1':
+ visibility = DEBUG_VISIBILITY_PROTECTED;
+ break;
+ case '2':
+ visibility = DEBUG_VISIBILITY_PUBLIC;
+ break;
+ default:
+ warn_stab (orig, _("unknown visibility character for field"));
+ visibility = DEBUG_VISIBILITY_PUBLIC;
+ break;
+ }
+ ++*pp;
+ }
+
+ type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL);
+ if (type == DEBUG_TYPE_NULL)
+ {
+ free (name);
+ return FALSE;
+ }
+
+ if (**pp == ':')
+ {
+ char *varname;
+
+ /* This is a static class member. */
+ ++*pp;
+ p = strchr (*pp, ';');
+ if (p == NULL)
+ {
+ bad_stab (orig);
+ free (name);
+ return FALSE;
+ }
+
+ varname = savestring (*pp, p - *pp);
+
+ *pp = p + 1;
+
+ *retp = debug_make_static_member (dhandle, name, type, varname,
+ visibility);
+ *staticsp = TRUE;
+
+ return TRUE;
+ }
+
+ if (**pp != ',')
+ {
+ bad_stab (orig);
+ free (name);
+ return FALSE;
+ }
+ ++*pp;
+
+ bitpos = parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ',')
+ {
+ bad_stab (orig);
+ free (name);
+ return FALSE;
+ }
+ ++*pp;
+
+ bitsize = parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ free (name);
+ return FALSE;
+ }
+ ++*pp;
+
+ if (bitpos == 0 && bitsize == 0)
+ {
+ /* This can happen in two cases: (1) at least for gcc 2.4.5 or
+ so, it is a field which has been optimized out. The correct
+ stab for this case is to use VISIBILITY_IGNORE, but that is a
+ recent invention. (2) It is a 0-size array. For example
+ union { int num; char str[0]; } foo. Printing "<no value>"
+ for str in "p foo" is OK, since foo.str (and thus foo.str[3])
+ will continue to work, and a 0-size array as a whole doesn't
+ have any contents to print.
+
+ I suspect this probably could also happen with gcc -gstabs
+ (not -gstabs+) for static fields, and perhaps other C++
+ extensions. Hopefully few people use -gstabs with gdb, since
+ it is intended for dbx compatibility. */
+ visibility = DEBUG_VISIBILITY_IGNORE;
+ }
+
+ /* FIXME: gdb does some stuff here to mark fields as unpacked. */
+
+ *retp = debug_make_field (dhandle, name, type, bitpos, bitsize, visibility);
+
+ return TRUE;
+}
+
+/* Read member function stabs info for C++ classes. The form of each member
+ function data is:
+
+ NAME :: TYPENUM[=type definition] ARGS : PHYSNAME ;
+
+ An example with two member functions is:
+
+ afunc1::20=##15;:i;2A.;afunc2::20:i;2A.;
+
+ For the case of overloaded operators, the format is op$::*.funcs, where
+ $ is the CPLUS_MARKER (usually '$'), `*' holds the place for an operator
+ name (such as `+=') and `.' marks the end of the operator name. */
+
+static bfd_boolean
+parse_stab_members (void *dhandle, struct stab_handle *info,
+ const char *tagname, const char **pp,
+ const int *typenums, debug_method **retp)
+{
+ const char *orig;
+ debug_method *methods;
+ unsigned int c;
+ unsigned int alloc;
+ char *name = NULL;
+ debug_method_variant *variants = NULL;
+ char *argtypes = NULL;
+
+ *retp = NULL;
+
+ orig = *pp;
+
+ alloc = 0;
+ methods = NULL;
+ c = 0;
+
+ while (**pp != ';')
+ {
+ const char *p;
+ unsigned int cvars;
+ unsigned int allocvars;
+ debug_type look_ahead_type;
+
+ p = strchr (*pp, ':');
+ if (p == NULL || p[1] != ':')
+ break;
+
+ /* FIXME: Some systems use something other than '$' here. */
+ if ((*pp)[0] != 'o' || (*pp)[1] != 'p' || (*pp)[2] != '$')
+ {
+ name = savestring (*pp, p - *pp);
+ *pp = p + 2;
+ }
+ else
+ {
+ /* This is a completely weird case. In order to stuff in the
+ names that might contain colons (the usual name delimiter),
+ Mike Tiemann defined a different name format which is
+ signalled if the identifier is "op$". In that case, the
+ format is "op$::XXXX." where XXXX is the name. This is
+ used for names like "+" or "=". YUUUUUUUK! FIXME! */
+ *pp = p + 2;
+ for (p = *pp; *p != '.' && *p != '\0'; p++)
+ ;
+ if (*p != '.')
+ {
+ bad_stab (orig);
+ goto fail;
+ }
+ name = savestring (*pp, p - *pp);
+ *pp = p + 1;
+ }
+
+ allocvars = 10;
+ variants = ((debug_method_variant *)
+ xmalloc (allocvars * sizeof *variants));
+ cvars = 0;
+
+ look_ahead_type = DEBUG_TYPE_NULL;
+
+ do
+ {
+ debug_type type;
+ bfd_boolean stub;
+ enum debug_visibility visibility;
+ bfd_boolean constp, volatilep, staticp;
+ bfd_vma voffset;
+ debug_type context;
+ const char *physname;
+ bfd_boolean varargs;
+
+ if (look_ahead_type != DEBUG_TYPE_NULL)
+ {
+ /* g++ version 1 kludge */
+ type = look_ahead_type;
+ look_ahead_type = DEBUG_TYPE_NULL;
+ }
+ else
+ {
+ type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL);
+ if (type == DEBUG_TYPE_NULL)
+ goto fail;
+
+ if (**pp != ':')
+ {
+ bad_stab (orig);
+ goto fail;
+ }
+ }
+
+ ++*pp;
+ p = strchr (*pp, ';');
+ if (p == NULL)
+ {
+ bad_stab (orig);
+ goto fail;
+ }
+
+ stub = FALSE;
+ if (debug_get_type_kind (dhandle, type) == DEBUG_KIND_METHOD
+ && debug_get_parameter_types (dhandle, type, &varargs) == NULL)
+ stub = TRUE;
+
+ argtypes = savestring (*pp, p - *pp);
+ *pp = p + 1;
+
+ switch (**pp)
+ {
+ case '0':
+ visibility = DEBUG_VISIBILITY_PRIVATE;
+ break;
+ case '1':
+ visibility = DEBUG_VISIBILITY_PROTECTED;
+ break;
+ default:
+ visibility = DEBUG_VISIBILITY_PUBLIC;
+ break;
+ }
+ ++*pp;
+
+ constp = FALSE;
+ volatilep = FALSE;
+ switch (**pp)
+ {
+ case 'A':
+ /* Normal function. */
+ ++*pp;
+ break;
+ case 'B':
+ /* const member function. */
+ constp = TRUE;
+ ++*pp;
+ break;
+ case 'C':
+ /* volatile member function. */
+ volatilep = TRUE;
+ ++*pp;
+ break;
+ case 'D':
+ /* const volatile member function. */
+ constp = TRUE;
+ volatilep = TRUE;
+ ++*pp;
+ break;
+ case '*':
+ case '?':
+ case '.':
+ /* File compiled with g++ version 1; no information. */
+ break;
+ default:
+ warn_stab (orig, _("const/volatile indicator missing"));
+ break;
+ }
+
+ staticp = FALSE;
+ switch (**pp)
+ {
+ case '*':
+ /* virtual member function, followed by index. The sign
+ bit is supposedly set to distinguish
+ pointers-to-methods from virtual function indicies. */
+ ++*pp;
+ voffset = parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ goto fail;
+ }
+ ++*pp;
+ voffset &= 0x7fffffff;
+
+ if (**pp == ';' || *pp == '\0')
+ {
+ /* Must be g++ version 1. */
+ context = DEBUG_TYPE_NULL;
+ }
+ else
+ {
+ /* Figure out from whence this virtual function
+ came. It may belong to virtual function table of
+ one of its baseclasses. */
+ look_ahead_type = parse_stab_type (dhandle, info,
+ (const char *) NULL,
+ pp,
+ (debug_type **) NULL);
+ if (**pp == ':')
+ {
+ /* g++ version 1 overloaded methods. */
+ context = DEBUG_TYPE_NULL;
+ }
+ else
+ {
+ context = look_ahead_type;
+ look_ahead_type = DEBUG_TYPE_NULL;
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ goto fail;
+ }
+ ++*pp;
+ }
+ }
+ break;
+
+ case '?':
+ /* static member function. */
+ ++*pp;
+ staticp = TRUE;
+ voffset = 0;
+ context = DEBUG_TYPE_NULL;
+ if (strncmp (argtypes, name, strlen (name)) != 0)
+ stub = TRUE;
+ break;
+
+ default:
+ warn_stab (orig, "member function type missing");
+ voffset = 0;
+ context = DEBUG_TYPE_NULL;
+ break;
+
+ case '.':
+ ++*pp;
+ voffset = 0;
+ context = DEBUG_TYPE_NULL;
+ break;
+ }
+
+ /* If the type is not a stub, then the argtypes string is
+ the physical name of the function. Otherwise the
+ argtypes string is the mangled form of the argument
+ types, and the full type and the physical name must be
+ extracted from them. */
+ physname = argtypes;
+ if (stub)
+ {
+ debug_type class_type, return_type;
+
+ class_type = stab_find_type (dhandle, info, typenums);
+ if (class_type == DEBUG_TYPE_NULL)
+ goto fail;
+ return_type = debug_get_return_type (dhandle, type);
+ if (return_type == DEBUG_TYPE_NULL)
+ {
+ bad_stab (orig);
+ goto fail;
+ }
+ type = parse_stab_argtypes (dhandle, info, class_type, name,
+ tagname, return_type, argtypes,
+ constp, volatilep, &physname);
+ if (type == DEBUG_TYPE_NULL)
+ goto fail;
+ }
+
+ if (cvars + 1 >= allocvars)
+ {
+ allocvars += 10;
+ variants = ((debug_method_variant *)
+ xrealloc (variants,
+ allocvars * sizeof *variants));
+ }
+
+ if (! staticp)
+ variants[cvars] = debug_make_method_variant (dhandle, physname,
+ type, visibility,
+ constp, volatilep,
+ voffset, context);
+ else
+ variants[cvars] = debug_make_static_method_variant (dhandle,
+ physname,
+ type,
+ visibility,
+ constp,
+ volatilep);
+ if (variants[cvars] == DEBUG_METHOD_VARIANT_NULL)
+ goto fail;
+
+ ++cvars;
+ }
+ while (**pp != ';' && **pp != '\0');
+
+ variants[cvars] = DEBUG_METHOD_VARIANT_NULL;
+
+ if (**pp != '\0')
+ ++*pp;
+
+ if (c + 1 >= alloc)
+ {
+ alloc += 10;
+ methods = ((debug_method *)
+ xrealloc (methods, alloc * sizeof *methods));
+ }
+
+ methods[c] = debug_make_method (dhandle, name, variants);
+
+ ++c;
+ }
+
+ if (methods != NULL)
+ methods[c] = DEBUG_METHOD_NULL;
+
+ *retp = methods;
+
+ return TRUE;
+
+ fail:
+ if (name != NULL)
+ free (name);
+ if (variants != NULL)
+ free (variants);
+ if (argtypes != NULL)
+ free (argtypes);
+ return FALSE;
+}
+
+/* Parse a string representing argument types for a method. Stabs
+ tries to save space by packing argument types into a mangled
+ string. This string should give us enough information to extract
+ both argument types and the physical name of the function, given
+ the tag name. */
+
+static debug_type
+parse_stab_argtypes (void *dhandle, struct stab_handle *info,
+ debug_type class_type, const char *fieldname,
+ const char *tagname, debug_type return_type,
+ const char *argtypes, bfd_boolean constp,
+ bfd_boolean volatilep, const char **pphysname)
+{
+ bfd_boolean is_full_physname_constructor;
+ bfd_boolean is_constructor;
+ bfd_boolean is_destructor;
+ bfd_boolean is_v3;
+ debug_type *args;
+ bfd_boolean varargs;
+ unsigned int physname_len = 0;
+
+ /* Constructors are sometimes handled specially. */
+ is_full_physname_constructor = ((argtypes[0] == '_'
+ && argtypes[1] == '_'
+ && (ISDIGIT (argtypes[2])
+ || argtypes[2] == 'Q'
+ || argtypes[2] == 't'))
+ || CONST_STRNEQ (argtypes, "__ct"));
+
+ is_constructor = (is_full_physname_constructor
+ || (tagname != NULL
+ && strcmp (fieldname, tagname) == 0));
+ is_destructor = ((argtypes[0] == '_'
+ && (argtypes[1] == '$' || argtypes[1] == '.')
+ && argtypes[2] == '_')
+ || CONST_STRNEQ (argtypes, "__dt"));
+ is_v3 = argtypes[0] == '_' && argtypes[1] == 'Z';
+
+ if (!(is_destructor || is_full_physname_constructor || is_v3))
+ {
+ unsigned int len;
+ const char *const_prefix;
+ const char *volatile_prefix;
+ char buf[20];
+ unsigned int mangled_name_len;
+ char *physname;
+
+ len = tagname == NULL ? 0 : strlen (tagname);
+ const_prefix = constp ? "C" : "";
+ volatile_prefix = volatilep ? "V" : "";
+
+ if (len == 0)
+ sprintf (buf, "__%s%s", const_prefix, volatile_prefix);
+ else if (tagname != NULL && strchr (tagname, '<') != NULL)
+ {
+ /* Template methods are fully mangled. */
+ sprintf (buf, "__%s%s", const_prefix, volatile_prefix);
+ tagname = NULL;
+ len = 0;
+ }
+ else
+ sprintf (buf, "__%s%s%d", const_prefix, volatile_prefix, len);
+
+ mangled_name_len = ((is_constructor ? 0 : strlen (fieldname))
+ + strlen (buf)
+ + len
+ + strlen (argtypes)
+ + 1);
+
+ if (fieldname[0] == 'o'
+ && fieldname[1] == 'p'
+ && (fieldname[2] == '$' || fieldname[2] == '.'))
+ {
+ const char *opname;
+
+ opname = cplus_mangle_opname (fieldname + 3, 0);
+ if (opname == NULL)
+ {
+ fprintf (stderr, _("No mangling for \"%s\"\n"), fieldname);
+ return DEBUG_TYPE_NULL;
+ }
+ mangled_name_len += strlen (opname);
+ physname = (char *) xmalloc (mangled_name_len);
+ strncpy (physname, fieldname, 3);
+ strcpy (physname + 3, opname);
+ }
+ else
+ {
+ physname = (char *) xmalloc (mangled_name_len);
+ if (is_constructor)
+ physname[0] = '\0';
+ else
+ strcpy (physname, fieldname);
+ }
+
+ physname_len = strlen (physname);
+ strcat (physname, buf);
+ if (tagname != NULL)
+ strcat (physname, tagname);
+ strcat (physname, argtypes);
+
+ *pphysname = physname;
+ }
+
+ if (*argtypes == '\0' || is_destructor)
+ {
+ args = (debug_type *) xmalloc (sizeof *args);
+ *args = NULL;
+ return debug_make_method_type (dhandle, return_type, class_type, args,
+ FALSE);
+ }
+
+ args = stab_demangle_argtypes (dhandle, info, *pphysname, &varargs, physname_len);
+ if (args == NULL)
+ return DEBUG_TYPE_NULL;
+
+ return debug_make_method_type (dhandle, return_type, class_type, args,
+ varargs);
+}
+
+/* The tail end of stabs for C++ classes that contain a virtual function
+ pointer contains a tilde, a %, and a type number.
+ The type number refers to the base class (possibly this class itself) which
+ contains the vtable pointer for the current class.
+
+ This function is called when we have parsed all the method declarations,
+ so we can look for the vptr base class info. */
+
+static bfd_boolean
+parse_stab_tilde_field (void *dhandle, struct stab_handle *info,
+ const char **pp, const int *typenums,
+ debug_type *retvptrbase, bfd_boolean *retownvptr)
+{
+ const char *orig;
+ const char *hold;
+ int vtypenums[2];
+
+ *retvptrbase = DEBUG_TYPE_NULL;
+ *retownvptr = FALSE;
+
+ orig = *pp;
+
+ /* If we are positioned at a ';', then skip it. */
+ if (**pp == ';')
+ ++*pp;
+
+ if (**pp != '~')
+ return TRUE;
+
+ ++*pp;
+
+ if (**pp == '=' || **pp == '+' || **pp == '-')
+ {
+ /* Obsolete flags that used to indicate the presence of
+ constructors and/or destructors. */
+ ++*pp;
+ }
+
+ if (**pp != '%')
+ return TRUE;
+
+ ++*pp;
+
+ hold = *pp;
+
+ /* The next number is the type number of the base class (possibly
+ our own class) which supplies the vtable for this class. */
+ if (! parse_stab_type_number (pp, vtypenums))
+ return FALSE;
+
+ if (vtypenums[0] == typenums[0]
+ && vtypenums[1] == typenums[1])
+ *retownvptr = TRUE;
+ else
+ {
+ debug_type vtype;
+ const char *p;
+
+ *pp = hold;
+
+ vtype = parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL);
+ for (p = *pp; *p != ';' && *p != '\0'; p++)
+ ;
+ if (*p != ';')
+ {
+ bad_stab (orig);
+ return FALSE;
+ }
+
+ *retvptrbase = vtype;
+
+ *pp = p + 1;
+ }
+
+ return TRUE;
+}
+
+/* Read a definition of an array type. */
+
+static debug_type
+parse_stab_array_type (void *dhandle, struct stab_handle *info,
+ const char **pp, bfd_boolean stringp)
+{
+ const char *orig;
+ const char *p;
+ int typenums[2];
+ debug_type index_type;
+ bfd_boolean adjustable;
+ bfd_signed_vma lower, upper;
+ debug_type element_type;
+
+ /* Format of an array type:
+ "ar<index type>;lower;upper;<array_contents_type>".
+ OS9000: "arlower,upper;<array_contents_type>".
+
+ Fortran adjustable arrays use Adigits or Tdigits for lower or upper;
+ for these, produce a type like float[][]. */
+
+ orig = *pp;
+
+ /* FIXME: gdb checks os9k_stabs here. */
+
+ /* If the index type is type 0, we take it as int. */
+ p = *pp;
+ if (! parse_stab_type_number (&p, typenums))
+ return DEBUG_TYPE_NULL;
+ if (typenums[0] == 0 && typenums[1] == 0 && **pp != '=')
+ {
+ index_type = debug_find_named_type (dhandle, "int");
+ if (index_type == DEBUG_TYPE_NULL)
+ {
+ index_type = debug_make_int_type (dhandle, 4, FALSE);
+ if (index_type == DEBUG_TYPE_NULL)
+ return DEBUG_TYPE_NULL;
+ }
+ *pp = p;
+ }
+ else
+ {
+ index_type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL);
+ }
+
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ adjustable = FALSE;
+
+ if (! ISDIGIT (**pp) && **pp != '-')
+ {
+ ++*pp;
+ adjustable = TRUE;
+ }
+
+ lower = (bfd_signed_vma) parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ if (! ISDIGIT (**pp) && **pp != '-')
+ {
+ ++*pp;
+ adjustable = TRUE;
+ }
+
+ upper = (bfd_signed_vma) parse_number (pp, (bfd_boolean *) NULL);
+ if (**pp != ';')
+ {
+ bad_stab (orig);
+ return DEBUG_TYPE_NULL;
+ }
+ ++*pp;
+
+ element_type = parse_stab_type (dhandle, info, (const char *) NULL, pp,
+ (debug_type **) NULL);
+ if (element_type == DEBUG_TYPE_NULL)
+ return DEBUG_TYPE_NULL;
+
+ if (adjustable)
+ {
+ lower = 0;
+ upper = -1;
+ }
+
+ return debug_make_array_type (dhandle, element_type, index_type, lower,
+ upper, stringp);
+}
+
+/* This struct holds information about files we have seen using
+ N_BINCL. */
+
+struct bincl_file
+{
+ /* The next N_BINCL file. */
+ struct bincl_file *next;
+ /* The next N_BINCL on the stack. */
+ struct bincl_file *next_stack;
+ /* The file name. */
+ const char *name;
+ /* The hash value. */
+ bfd_vma hash;
+ /* The file index. */
+ unsigned int file;
+ /* The list of types defined in this file. */
+ struct stab_types *file_types;
+};
+
+/* Start a new N_BINCL file, pushing it onto the stack. */
+
+static void
+push_bincl (struct stab_handle *info, const char *name, bfd_vma hash)
+{
+ struct bincl_file *n;
+
+ n = (struct bincl_file *) xmalloc (sizeof *n);
+ n->next = info->bincl_list;
+ n->next_stack = info->bincl_stack;
+ n->name = name;
+ n->hash = hash;
+ n->file = info->files;
+ n->file_types = NULL;
+ info->bincl_list = n;
+ info->bincl_stack = n;
+
+ ++info->files;
+ info->file_types = ((struct stab_types **)
+ xrealloc (info->file_types,
+ (info->files
+ * sizeof *info->file_types)));
+ info->file_types[n->file] = NULL;
+}
+
+/* Finish an N_BINCL file, at an N_EINCL, popping the name off the
+ stack. */
+
+static const char *
+pop_bincl (struct stab_handle *info)
+{
+ struct bincl_file *o;
+
+ o = info->bincl_stack;
+ if (o == NULL)
+ return info->main_filename;
+ info->bincl_stack = o->next_stack;
+
+ o->file_types = info->file_types[o->file];
+
+ if (info->bincl_stack == NULL)
+ return info->main_filename;
+ return info->bincl_stack->name;
+}
+
+/* Handle an N_EXCL: get the types from the corresponding N_BINCL. */
+
+static bfd_boolean
+find_excl (struct stab_handle *info, const char *name, bfd_vma hash)
+{
+ struct bincl_file *l;
+
+ ++info->files;
+ info->file_types = ((struct stab_types **)
+ xrealloc (info->file_types,
+ (info->files
+ * sizeof *info->file_types)));
+
+ for (l = info->bincl_list; l != NULL; l = l->next)
+ if (l->hash == hash && strcmp (l->name, name) == 0)
+ break;
+ if (l == NULL)
+ {
+ warn_stab (name, _("Undefined N_EXCL"));
+ info->file_types[info->files - 1] = NULL;
+ return TRUE;
+ }
+
+ info->file_types[info->files - 1] = l->file_types;
+
+ return TRUE;
+}
+
+/* Handle a variable definition. gcc emits variable definitions for a
+ block before the N_LBRAC, so we must hold onto them until we see
+ it. The SunPRO compiler emits variable definitions after the
+ N_LBRAC, so we can call debug_record_variable immediately. */
+
+static bfd_boolean
+stab_record_variable (void *dhandle, struct stab_handle *info,
+ const char *name, debug_type type,
+ enum debug_var_kind kind, bfd_vma val)
+{
+ struct stab_pending_var *v;
+
+ if ((kind == DEBUG_GLOBAL || kind == DEBUG_STATIC)
+ || ! info->within_function
+ || (info->gcc_compiled == 0 && info->n_opt_found))
+ return debug_record_variable (dhandle, name, type, kind, val);
+
+ v = (struct stab_pending_var *) xmalloc (sizeof *v);
+ memset (v, 0, sizeof *v);
+
+ v->next = info->pending;
+ v->name = name;
+ v->type = type;
+ v->kind = kind;
+ v->val = val;
+ info->pending = v;
+
+ return TRUE;
+}
+
+/* Emit pending variable definitions. This is called after we see the
+ N_LBRAC that starts the block. */
+
+static bfd_boolean
+stab_emit_pending_vars (void *dhandle, struct stab_handle *info)
+{
+ struct stab_pending_var *v;
+
+ v = info->pending;
+ while (v != NULL)
+ {
+ struct stab_pending_var *next;
+
+ if (! debug_record_variable (dhandle, v->name, v->type, v->kind, v->val))
+ return FALSE;
+
+ next = v->next;
+ free (v);
+ v = next;
+ }
+
+ info->pending = NULL;
+
+ return TRUE;
+}
+
+/* Find the slot for a type in the database. */
+
+static debug_type *
+stab_find_slot (struct stab_handle *info, const int *typenums)
+{
+ int filenum;
+ int tindex;
+ struct stab_types **ps;
+
+ filenum = typenums[0];
+ tindex = typenums[1];
+
+ if (filenum < 0 || (unsigned int) filenum >= info->files)
+ {
+ fprintf (stderr, _("Type file number %d out of range\n"), filenum);
+ return NULL;
+ }
+ if (tindex < 0)
+ {
+ fprintf (stderr, _("Type index number %d out of range\n"), tindex);
+ return NULL;
+ }
+
+ ps = info->file_types + filenum;
+
+ while (tindex >= STAB_TYPES_SLOTS)
+ {
+ if (*ps == NULL)
+ {
+ *ps = (struct stab_types *) xmalloc (sizeof **ps);
+ memset (*ps, 0, sizeof **ps);
+ }
+ ps = &(*ps)->next;
+ tindex -= STAB_TYPES_SLOTS;
+ }
+ if (*ps == NULL)
+ {
+ *ps = (struct stab_types *) xmalloc (sizeof **ps);
+ memset (*ps, 0, sizeof **ps);
+ }
+
+ return (*ps)->types + tindex;
+}
+
+/* Find a type given a type number. If the type has not been
+ allocated yet, create an indirect type. */
+
+static debug_type
+stab_find_type (void *dhandle, struct stab_handle *info, const int *typenums)
+{
+ debug_type *slot;
+
+ if (typenums[0] == 0 && typenums[1] < 0)
+ {
+ /* A negative type number indicates an XCOFF builtin type. */
+ return stab_xcoff_builtin_type (dhandle, info, typenums[1]);
+ }
+
+ slot = stab_find_slot (info, typenums);
+ if (slot == NULL)
+ return DEBUG_TYPE_NULL;
+
+ if (*slot == DEBUG_TYPE_NULL)
+ return debug_make_indirect_type (dhandle, slot, (const char *) NULL);
+
+ return *slot;
+}
+
+/* Record that a given type number refers to a given type. */
+
+static bfd_boolean
+stab_record_type (void *dhandle ATTRIBUTE_UNUSED, struct stab_handle *info,
+ const int *typenums, debug_type type)
+{
+ debug_type *slot;
+
+ slot = stab_find_slot (info, typenums);
+ if (slot == NULL)
+ return FALSE;
+
+ /* gdb appears to ignore type redefinitions, so we do as well. */
+
+ *slot = type;
+
+ return TRUE;
+}
+
+/* Return an XCOFF builtin type. */
+
+static debug_type
+stab_xcoff_builtin_type (void *dhandle, struct stab_handle *info,
+ int typenum)
+{
+ debug_type rettype;
+ const char *name;
+
+ if (typenum >= 0 || typenum < -XCOFF_TYPE_COUNT)
+ {
+ fprintf (stderr, _("Unrecognized XCOFF type %d\n"), typenum);
+ return DEBUG_TYPE_NULL;
+ }
+ if (info->xcoff_types[-typenum] != NULL)
+ return info->xcoff_types[-typenum];
+
+ switch (-typenum)
+ {
+ case 1:
+ /* The size of this and all the other types are fixed, defined
+ by the debugging format. */
+ name = "int";
+ rettype = debug_make_int_type (dhandle, 4, FALSE);
+ break;
+ case 2:
+ name = "char";
+ rettype = debug_make_int_type (dhandle, 1, FALSE);
+ break;
+ case 3:
+ name = "short";
+ rettype = debug_make_int_type (dhandle, 2, FALSE);
+ break;
+ case 4:
+ name = "long";
+ rettype = debug_make_int_type (dhandle, 4, FALSE);
+ break;
+ case 5:
+ name = "unsigned char";
+ rettype = debug_make_int_type (dhandle, 1, TRUE);
+ break;
+ case 6:
+ name = "signed char";
+ rettype = debug_make_int_type (dhandle, 1, FALSE);
+ break;
+ case 7:
+ name = "unsigned short";
+ rettype = debug_make_int_type (dhandle, 2, TRUE);
+ break;
+ case 8:
+ name = "unsigned int";
+ rettype = debug_make_int_type (dhandle, 4, TRUE);
+ break;
+ case 9:
+ name = "unsigned";
+ rettype = debug_make_int_type (dhandle, 4, TRUE);
+ case 10:
+ name = "unsigned long";
+ rettype = debug_make_int_type (dhandle, 4, TRUE);
+ break;
+ case 11:
+ name = "void";
+ rettype = debug_make_void_type (dhandle);
+ break;
+ case 12:
+ /* IEEE single precision (32 bit). */
+ name = "float";
+ rettype = debug_make_float_type (dhandle, 4);
+ break;
+ case 13:
+ /* IEEE double precision (64 bit). */
+ name = "double";
+ rettype = debug_make_float_type (dhandle, 8);
+ break;
+ case 14:
+ /* This is an IEEE double on the RS/6000, and different machines
+ with different sizes for "long double" should use different
+ negative type numbers. See stabs.texinfo. */
+ name = "long double";
+ rettype = debug_make_float_type (dhandle, 8);
+ break;
+ case 15:
+ name = "integer";
+ rettype = debug_make_int_type (dhandle, 4, FALSE);
+ break;
+ case 16:
+ name = "boolean";
+ rettype = debug_make_bool_type (dhandle, 4);
+ break;
+ case 17:
+ name = "short real";
+ rettype = debug_make_float_type (dhandle, 4);
+ break;
+ case 18:
+ name = "real";
+ rettype = debug_make_float_type (dhandle, 8);
+ break;
+ case 19:
+ /* FIXME */
+ name = "stringptr";
+ rettype = NULL;
+ break;
+ case 20:
+ /* FIXME */
+ name = "character";
+ rettype = debug_make_int_type (dhandle, 1, TRUE);
+ break;
+ case 21:
+ name = "logical*1";
+ rettype = debug_make_bool_type (dhandle, 1);
+ break;
+ case 22:
+ name = "logical*2";
+ rettype = debug_make_bool_type (dhandle, 2);
+ break;
+ case 23:
+ name = "logical*4";
+ rettype = debug_make_bool_type (dhandle, 4);
+ break;
+ case 24:
+ name = "logical";
+ rettype = debug_make_bool_type (dhandle, 4);
+ break;
+ case 25:
+ /* Complex type consisting of two IEEE single precision values. */
+ name = "complex";
+ rettype = debug_make_complex_type (dhandle, 8);
+ break;
+ case 26:
+ /* Complex type consisting of two IEEE double precision values. */
+ name = "double complex";
+ rettype = debug_make_complex_type (dhandle, 16);
+ break;
+ case 27:
+ name = "integer*1";
+ rettype = debug_make_int_type (dhandle, 1, FALSE);
+ break;
+ case 28:
+ name = "integer*2";
+ rettype = debug_make_int_type (dhandle, 2, FALSE);
+ break;
+ case 29:
+ name = "integer*4";
+ rettype = debug_make_int_type (dhandle, 4, FALSE);
+ break;
+ case 30:
+ /* FIXME */
+ name = "wchar";
+ rettype = debug_make_int_type (dhandle, 2, FALSE);
+ break;
+ case 31:
+ name = "long long";
+ rettype = debug_make_int_type (dhandle, 8, FALSE);
+ break;
+ case 32:
+ name = "unsigned long long";
+ rettype = debug_make_int_type (dhandle, 8, TRUE);
+ break;
+ case 33:
+ name = "logical*8";
+ rettype = debug_make_bool_type (dhandle, 8);
+ break;
+ case 34:
+ name = "integer*8";
+ rettype = debug_make_int_type (dhandle, 8, FALSE);
+ break;
+ default:
+ abort ();
+ }
+
+ rettype = debug_name_type (dhandle, name, rettype);
+
+ info->xcoff_types[-typenum] = rettype;
+
+ return rettype;
+}
+
+/* Find or create a tagged type. */
+
+static debug_type
+stab_find_tagged_type (void *dhandle, struct stab_handle *info,
+ const char *p, int len, enum debug_type_kind kind)
+{
+ char *name;
+ debug_type dtype;
+ struct stab_tag *st;
+
+ name = savestring (p, len);
+
+ /* We pass DEBUG_KIND_ILLEGAL because we want all tags in the same
+ namespace. This is right for C, and I don't know how to handle
+ other languages. FIXME. */
+ dtype = debug_find_tagged_type (dhandle, name, DEBUG_KIND_ILLEGAL);
+ if (dtype != DEBUG_TYPE_NULL)
+ {
+ free (name);
+ return dtype;
+ }
+
+ /* We need to allocate an entry on the undefined tag list. */
+ for (st = info->tags; st != NULL; st = st->next)
+ {
+ if (st->name[0] == name[0]
+ && strcmp (st->name, name) == 0)
+ {
+ if (st->kind == DEBUG_KIND_ILLEGAL)
+ st->kind = kind;
+ free (name);
+ break;
+ }
+ }
+ if (st == NULL)
+ {
+ st = (struct stab_tag *) xmalloc (sizeof *st);
+ memset (st, 0, sizeof *st);
+
+ st->next = info->tags;
+ st->name = name;
+ st->kind = kind;
+ st->slot = DEBUG_TYPE_NULL;
+ st->type = debug_make_indirect_type (dhandle, &st->slot, name);
+ info->tags = st;
+ }
+
+ return st->type;
+}
+
+/* In order to get the correct argument types for a stubbed method, we
+ need to extract the argument types from a C++ mangled string.
+ Since the argument types can refer back to the return type, this
+ means that we must demangle the entire physical name. In gdb this
+ is done by calling cplus_demangle and running the results back
+ through the C++ expression parser. Since we have no expression
+ parser, we must duplicate much of the work of cplus_demangle here.
+
+ We assume that GNU style demangling is used, since this is only
+ done for method stubs, and only g++ should output that form of
+ debugging information. */
+
+/* This structure is used to hold a pointer to type information which
+ demangling a string. */
+
+struct stab_demangle_typestring
+{
+ /* The start of the type. This is not null terminated. */
+ const char *typestring;
+ /* The length of the type. */
+ unsigned int len;
+};
+
+/* This structure is used to hold information while demangling a
+ string. */
+
+struct stab_demangle_info
+{
+ /* The debugging information handle. */
+ void *dhandle;
+ /* The stab information handle. */
+ struct stab_handle *info;
+ /* The array of arguments we are building. */
+ debug_type *args;
+ /* Whether the method takes a variable number of arguments. */
+ bfd_boolean varargs;
+ /* The array of types we have remembered. */
+ struct stab_demangle_typestring *typestrings;
+ /* The number of typestrings. */
+ unsigned int typestring_count;
+ /* The number of typestring slots we have allocated. */
+ unsigned int typestring_alloc;
+};
+
+static void stab_bad_demangle (const char *);
+static unsigned int stab_demangle_count (const char **);
+static bfd_boolean stab_demangle_get_count (const char **, unsigned int *);
+static bfd_boolean stab_demangle_prefix
+ (struct stab_demangle_info *, const char **, unsigned int);
+static bfd_boolean stab_demangle_function_name
+ (struct stab_demangle_info *, const char **, const char *);
+static bfd_boolean stab_demangle_signature
+ (struct stab_demangle_info *, const char **);
+static bfd_boolean stab_demangle_qualified
+ (struct stab_demangle_info *, const char **, debug_type *);
+static bfd_boolean stab_demangle_template
+ (struct stab_demangle_info *, const char **, char **);
+static bfd_boolean stab_demangle_class
+ (struct stab_demangle_info *, const char **, const char **);
+static bfd_boolean stab_demangle_args
+ (struct stab_demangle_info *, const char **, debug_type **, bfd_boolean *);
+static bfd_boolean stab_demangle_arg
+ (struct stab_demangle_info *, const char **, debug_type **,
+ unsigned int *, unsigned int *);
+static bfd_boolean stab_demangle_type
+ (struct stab_demangle_info *, const char **, debug_type *);
+static bfd_boolean stab_demangle_fund_type
+ (struct stab_demangle_info *, const char **, debug_type *);
+static bfd_boolean stab_demangle_remember_type
+ (struct stab_demangle_info *, const char *, int);
+
+/* Warn about a bad demangling. */
+
+static void
+stab_bad_demangle (const char *s)
+{
+ fprintf (stderr, _("bad mangled name `%s'\n"), s);
+}
+
+/* Get a count from a stab string. */
+
+static unsigned int
+stab_demangle_count (const char **pp)
+{
+ unsigned int count;
+
+ count = 0;
+ while (ISDIGIT (**pp))
+ {
+ count *= 10;
+ count += **pp - '0';
+ ++*pp;
+ }
+ return count;
+}
+
+/* Require a count in a string. The count may be multiple digits, in
+ which case it must end in an underscore. */
+
+static bfd_boolean
+stab_demangle_get_count (const char **pp, unsigned int *pi)
+{
+ if (! ISDIGIT (**pp))
+ return FALSE;
+
+ *pi = **pp - '0';
+ ++*pp;
+ if (ISDIGIT (**pp))
+ {
+ unsigned int count;
+ const char *p;
+
+ count = *pi;
+ p = *pp;
+ do
+ {
+ count *= 10;
+ count += *p - '0';
+ ++p;
+ }
+ while (ISDIGIT (*p));
+ if (*p == '_')
+ {
+ *pp = p + 1;
+ *pi = count;
+ }
+ }
+
+ return TRUE;
+}
+
+/* This function demangles a physical name, returning a NULL
+ terminated array of argument types. */
+
+static debug_type *
+stab_demangle_argtypes (void *dhandle, struct stab_handle *info,
+ const char *physname, bfd_boolean *pvarargs,
+ unsigned int physname_len)
+{
+ struct stab_demangle_info minfo;
+
+ /* Check for the g++ V3 ABI. */
+ if (physname[0] == '_' && physname[1] == 'Z')
+ return stab_demangle_v3_argtypes (dhandle, info, physname, pvarargs);
+
+ minfo.dhandle = dhandle;
+ minfo.info = info;
+ minfo.args = NULL;
+ minfo.varargs = FALSE;
+ minfo.typestring_alloc = 10;
+ minfo.typestrings = ((struct stab_demangle_typestring *)
+ xmalloc (minfo.typestring_alloc
+ * sizeof *minfo.typestrings));
+ minfo.typestring_count = 0;
+
+ /* cplus_demangle checks for special GNU mangled forms, but we can't
+ see any of them in mangled method argument types. */
+
+ if (! stab_demangle_prefix (&minfo, &physname, physname_len))
+ goto error_return;
+
+ if (*physname != '\0')
+ {
+ if (! stab_demangle_signature (&minfo, &physname))
+ goto error_return;
+ }
+
+ free (minfo.typestrings);
+ minfo.typestrings = NULL;
+
+ if (minfo.args == NULL)
+ fprintf (stderr, _("no argument types in mangled string\n"));
+
+ *pvarargs = minfo.varargs;
+ return minfo.args;
+
+ error_return:
+ if (minfo.typestrings != NULL)
+ free (minfo.typestrings);
+ return NULL;
+}
+
+/* Demangle the prefix of the mangled name. */
+
+static bfd_boolean
+stab_demangle_prefix (struct stab_demangle_info *minfo, const char **pp,
+ unsigned int physname_len)
+{
+ const char *scan;
+ unsigned int i;
+
+ /* cplus_demangle checks for global constructors and destructors,
+ but we can't see them in mangled argument types. */
+
+ if (physname_len)
+ scan = *pp + physname_len;
+ else
+ {
+ /* Look for `__'. */
+ scan = *pp;
+ do
+ scan = strchr (scan, '_');
+ while (scan != NULL && *++scan != '_');
+
+ if (scan == NULL)
+ {
+ stab_bad_demangle (*pp);
+ return FALSE;
+ }
+
+ --scan;
+
+ /* We found `__'; move ahead to the last contiguous `__' pair. */
+ i = strspn (scan, "_");
+ if (i > 2)
+ scan += i - 2;
+ }
+
+ if (scan == *pp
+ && (ISDIGIT (scan[2])
+ || scan[2] == 'Q'
+ || scan[2] == 't'))
+ {
+ /* This is a GNU style constructor name. */
+ *pp = scan + 2;
+ return TRUE;
+ }
+ else if (scan == *pp
+ && ! ISDIGIT (scan[2])
+ && scan[2] != 't')
+ {
+ /* Look for the `__' that separates the prefix from the
+ signature. */
+ while (*scan == '_')
+ ++scan;
+ scan = strstr (scan, "__");
+ if (scan == NULL || scan[2] == '\0')
+ {
+ stab_bad_demangle (*pp);
+ return FALSE;
+ }
+
+ return stab_demangle_function_name (minfo, pp, scan);
+ }
+ else if (scan[2] != '\0')
+ {
+ /* The name doesn't start with `__', but it does contain `__'. */
+ return stab_demangle_function_name (minfo, pp, scan);
+ }
+ else
+ {
+ stab_bad_demangle (*pp);
+ return FALSE;
+ }
+ /*NOTREACHED*/
+}
+
+/* Demangle a function name prefix. The scan argument points to the
+ double underscore which separates the function name from the
+ signature. */
+
+static bfd_boolean
+stab_demangle_function_name (struct stab_demangle_info *minfo,
+ const char **pp, const char *scan)
+{
+ const char *name;
+
+ /* The string from *pp to scan is the name of the function. We
+ don't care about the name, since we just looking for argument
+ types. However, for conversion operators, the name may include a
+ type which we must remember in order to handle backreferences. */
+
+ name = *pp;
+ *pp = scan + 2;
+
+ if (*pp - name >= 5
+ && CONST_STRNEQ (name, "type")
+ && (name[4] == '$' || name[4] == '.'))
+ {
+ const char *tem;
+
+ /* This is a type conversion operator. */
+ tem = name + 5;
+ if (! stab_demangle_type (minfo, &tem, (debug_type *) NULL))
+ return FALSE;
+ }
+ else if (name[0] == '_'
+ && name[1] == '_'
+ && name[2] == 'o'
+ && name[3] == 'p')
+ {
+ const char *tem;
+
+ /* This is a type conversion operator. */
+ tem = name + 4;
+ if (! stab_demangle_type (minfo, &tem, (debug_type *) NULL))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Demangle the signature. This is where the argument types are
+ found. */
+
+static bfd_boolean
+stab_demangle_signature (struct stab_demangle_info *minfo, const char **pp)
+{
+ const char *orig;
+ bfd_boolean expect_func, func_done;
+ const char *hold;
+
+ orig = *pp;
+
+ expect_func = FALSE;
+ func_done = FALSE;
+ hold = NULL;
+
+ while (**pp != '\0')
+ {
+ switch (**pp)
+ {
+ case 'Q':
+ hold = *pp;
+ if (! stab_demangle_qualified (minfo, pp, (debug_type *) NULL)
+ || ! stab_demangle_remember_type (minfo, hold, *pp - hold))
+ return FALSE;
+ expect_func = TRUE;
+ hold = NULL;
+ break;
+
+ case 'S':
+ /* Static member function. FIXME: Can this happen? */
+ if (hold == NULL)
+ hold = *pp;
+ ++*pp;
+ break;
+
+ case 'C':
+ /* Const member function. */
+ if (hold == NULL)
+ hold = *pp;
+ ++*pp;
+ break;
+
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ if (hold == NULL)
+ hold = *pp;
+ if (! stab_demangle_class (minfo, pp, (const char **) NULL)
+ || ! stab_demangle_remember_type (minfo, hold, *pp - hold))
+ return FALSE;
+ expect_func = TRUE;
+ hold = NULL;
+ break;
+
+ case 'F':
+ /* Function. I don't know if this actually happens with g++
+ output. */
+ hold = NULL;
+ func_done = TRUE;
+ ++*pp;
+ if (! stab_demangle_args (minfo, pp, &minfo->args, &minfo->varargs))
+ return FALSE;
+ break;
+
+ case 't':
+ /* Template. */
+ if (hold == NULL)
+ hold = *pp;
+ if (! stab_demangle_template (minfo, pp, (char **) NULL)
+ || ! stab_demangle_remember_type (minfo, hold, *pp - hold))
+ return FALSE;
+ hold = NULL;
+ expect_func = TRUE;
+ break;
+
+ case '_':
+ /* At the outermost level, we cannot have a return type
+ specified, so if we run into another '_' at this point we
+ are dealing with a mangled name that is either bogus, or
+ has been mangled by some algorithm we don't know how to
+ deal with. So just reject the entire demangling. */
+ stab_bad_demangle (orig);
+ return FALSE;
+
+ default:
+ /* Assume we have stumbled onto the first outermost function
+ argument token, and start processing args. */
+ func_done = TRUE;
+ if (! stab_demangle_args (minfo, pp, &minfo->args, &minfo->varargs))
+ return FALSE;
+ break;
+ }
+
+ if (expect_func)
+ {
+ func_done = TRUE;
+ if (! stab_demangle_args (minfo, pp, &minfo->args, &minfo->varargs))
+ return FALSE;
+ }
+ }
+
+ if (! func_done)
+ {
+ /* With GNU style demangling, bar__3foo is 'foo::bar(void)', and
+ bar__3fooi is 'foo::bar(int)'. We get here when we find the
+ first case, and need to ensure that the '(void)' gets added
+ to the current declp. */
+ if (! stab_demangle_args (minfo, pp, &minfo->args, &minfo->varargs))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/* Demangle a qualified name, such as "Q25Outer5Inner" which is the
+ mangled form of "Outer::Inner". */
+
+static bfd_boolean
+stab_demangle_qualified (struct stab_demangle_info *minfo, const char **pp,
+ debug_type *ptype)
+{
+ const char *orig;
+ const char *p;
+ unsigned int qualifiers;
+ debug_type context;
+
+ orig = *pp;
+
+ switch ((*pp)[1])
+ {
+ case '_':
+ /* GNU mangled name with more than 9 classes. The count is
+ preceded by an underscore (to distinguish it from the <= 9
+ case) and followed by an underscore. */
+ p = *pp + 2;
+ if (! ISDIGIT (*p) || *p == '0')
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ qualifiers = atoi (p);
+ while (ISDIGIT (*p))
+ ++p;
+ if (*p != '_')
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ *pp = p + 1;
+ break;
+
+ case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ qualifiers = (*pp)[1] - '0';
+ /* Skip an optional underscore after the count. */
+ if ((*pp)[2] == '_')
+ ++*pp;
+ *pp += 2;
+ break;
+
+ case '0':
+ default:
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+
+ context = DEBUG_TYPE_NULL;
+
+ /* Pick off the names. */
+ while (qualifiers-- > 0)
+ {
+ if (**pp == '_')
+ ++*pp;
+ if (**pp == 't')
+ {
+ char *name;
+
+ if (! stab_demangle_template (minfo, pp,
+ ptype != NULL ? &name : NULL))
+ return FALSE;
+
+ if (ptype != NULL)
+ {
+ context = stab_find_tagged_type (minfo->dhandle, minfo->info,
+ name, strlen (name),
+ DEBUG_KIND_CLASS);
+ free (name);
+ if (context == DEBUG_TYPE_NULL)
+ return FALSE;
+ }
+ }
+ else
+ {
+ unsigned int len;
+
+ len = stab_demangle_count (pp);
+ if (strlen (*pp) < len)
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+
+ if (ptype != NULL)
+ {
+ const debug_field *fields;
+
+ fields = NULL;
+ if (context != DEBUG_TYPE_NULL)
+ fields = debug_get_fields (minfo->dhandle, context);
+
+ context = DEBUG_TYPE_NULL;
+
+ if (fields != NULL)
+ {
+ char *name;
+
+ /* Try to find the type by looking through the
+ fields of context until we find a field with the
+ same type. This ought to work for a class
+ defined within a class, but it won't work for,
+ e.g., an enum defined within a class. stabs does
+ not give us enough information to figure out the
+ latter case. */
+
+ name = savestring (*pp, len);
+
+ for (; *fields != DEBUG_FIELD_NULL; fields++)
+ {
+ debug_type ft;
+ const char *dn;
+
+ ft = debug_get_field_type (minfo->dhandle, *fields);
+ if (ft == NULL)
+ {
+ free (name);
+ return FALSE;
+ }
+ dn = debug_get_type_name (minfo->dhandle, ft);
+ if (dn != NULL && strcmp (dn, name) == 0)
+ {
+ context = ft;
+ break;
+ }
+ }
+
+ free (name);
+ }
+
+ if (context == DEBUG_TYPE_NULL)
+ {
+ /* We have to fall back on finding the type by name.
+ If there are more types to come, then this must
+ be a class. Otherwise, it could be anything. */
+
+ if (qualifiers == 0)
+ {
+ char *name;
+
+ name = savestring (*pp, len);
+ context = debug_find_named_type (minfo->dhandle,
+ name);
+ free (name);
+ }
+
+ if (context == DEBUG_TYPE_NULL)
+ {
+ context = stab_find_tagged_type (minfo->dhandle,
+ minfo->info,
+ *pp, len,
+ (qualifiers == 0
+ ? DEBUG_KIND_ILLEGAL
+ : DEBUG_KIND_CLASS));
+ if (context == DEBUG_TYPE_NULL)
+ return FALSE;
+ }
+ }
+ }
+
+ *pp += len;
+ }
+ }
+
+ if (ptype != NULL)
+ *ptype = context;
+
+ return TRUE;
+}
+
+/* Demangle a template. If PNAME is not NULL, this sets *PNAME to a
+ string representation of the template. */
+
+static bfd_boolean
+stab_demangle_template (struct stab_demangle_info *minfo, const char **pp,
+ char **pname)
+{
+ const char *orig;
+ unsigned int r, i;
+
+ orig = *pp;
+
+ ++*pp;
+
+ /* Skip the template name. */
+ r = stab_demangle_count (pp);
+ if (r == 0 || strlen (*pp) < r)
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ *pp += r;
+
+ /* Get the size of the parameter list. */
+ if (stab_demangle_get_count (pp, &r) == 0)
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+
+ for (i = 0; i < r; i++)
+ {
+ if (**pp == 'Z')
+ {
+ /* This is a type parameter. */
+ ++*pp;
+ if (! stab_demangle_type (minfo, pp, (debug_type *) NULL))
+ return FALSE;
+ }
+ else
+ {
+ const char *old_p;
+ bfd_boolean pointerp, realp, integralp, charp, boolp;
+ bfd_boolean done;
+
+ old_p = *pp;
+ pointerp = FALSE;
+ realp = FALSE;
+ integralp = FALSE;
+ charp = FALSE;
+ boolp = FALSE;
+ done = FALSE;
+
+ /* This is a value parameter. */
+
+ if (! stab_demangle_type (minfo, pp, (debug_type *) NULL))
+ return FALSE;
+
+ while (*old_p != '\0' && ! done)
+ {
+ switch (*old_p)
+ {
+ case 'P':
+ case 'p':
+ case 'R':
+ pointerp = TRUE;
+ done = TRUE;
+ break;
+ case 'C': /* Const. */
+ case 'S': /* Signed. */
+ case 'U': /* Unsigned. */
+ case 'V': /* Volatile. */
+ case 'F': /* Function. */
+ case 'M': /* Member function. */
+ case 'O': /* ??? */
+ ++old_p;
+ break;
+ case 'Q': /* Qualified name. */
+ integralp = TRUE;
+ done = TRUE;
+ break;
+ case 'T': /* Remembered type. */
+ abort ();
+ case 'v': /* Void. */
+ abort ();
+ case 'x': /* Long long. */
+ case 'l': /* Long. */
+ case 'i': /* Int. */
+ case 's': /* Short. */
+ case 'w': /* Wchar_t. */
+ integralp = TRUE;
+ done = TRUE;
+ break;
+ case 'b': /* Bool. */
+ boolp = TRUE;
+ done = TRUE;
+ break;
+ case 'c': /* Char. */
+ charp = TRUE;
+ done = TRUE;
+ break;
+ case 'r': /* Long double. */
+ case 'd': /* Double. */
+ case 'f': /* Float. */
+ realp = TRUE;
+ done = TRUE;
+ break;
+ default:
+ /* Assume it's a user defined integral type. */
+ integralp = TRUE;
+ done = TRUE;
+ break;
+ }
+ }
+
+ if (integralp)
+ {
+ if (**pp == 'm')
+ ++*pp;
+ while (ISDIGIT (**pp))
+ ++*pp;
+ }
+ else if (charp)
+ {
+ unsigned int val;
+
+ if (**pp == 'm')
+ ++*pp;
+ val = stab_demangle_count (pp);
+ if (val == 0)
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ }
+ else if (boolp)
+ {
+ unsigned int val;
+
+ val = stab_demangle_count (pp);
+ if (val != 0 && val != 1)
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ }
+ else if (realp)
+ {
+ if (**pp == 'm')
+ ++*pp;
+ while (ISDIGIT (**pp))
+ ++*pp;
+ if (**pp == '.')
+ {
+ ++*pp;
+ while (ISDIGIT (**pp))
+ ++*pp;
+ }
+ if (**pp == 'e')
+ {
+ ++*pp;
+ while (ISDIGIT (**pp))
+ ++*pp;
+ }
+ }
+ else if (pointerp)
+ {
+ unsigned int len;
+
+ len = stab_demangle_count (pp);
+ if (len == 0)
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ *pp += len;
+ }
+ }
+ }
+
+ /* We can translate this to a string fairly easily by invoking the
+ regular demangling routine. */
+ if (pname != NULL)
+ {
+ char *s1, *s2, *s3, *s4 = NULL;
+ char *from, *to;
+
+ s1 = savestring (orig, *pp - orig);
+
+ s2 = concat ("NoSuchStrinG__", s1, (const char *) NULL);
+
+ free (s1);
+
+ s3 = cplus_demangle (s2, DMGL_ANSI);
+
+ free (s2);
+
+ if (s3 != NULL)
+ s4 = strstr (s3, "::NoSuchStrinG");
+ if (s3 == NULL || s4 == NULL)
+ {
+ stab_bad_demangle (orig);
+ if (s3 != NULL)
+ free (s3);
+ return FALSE;
+ }
+
+ /* Eliminating all spaces, except those between > characters,
+ makes it more likely that the demangled name will match the
+ name which g++ used as the structure name. */
+ for (from = to = s3; from != s4; ++from)
+ if (*from != ' '
+ || (from[1] == '>' && from > s3 && from[-1] == '>'))
+ *to++ = *from;
+
+ *pname = savestring (s3, to - s3);
+
+ free (s3);
+ }
+
+ return TRUE;
+}
+
+/* Demangle a class name. */
+
+static bfd_boolean
+stab_demangle_class (struct stab_demangle_info *minfo ATTRIBUTE_UNUSED,
+ const char **pp, const char **pstart)
+{
+ const char *orig;
+ unsigned int n;
+
+ orig = *pp;
+
+ n = stab_demangle_count (pp);
+ if (strlen (*pp) < n)
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+
+ if (pstart != NULL)
+ *pstart = *pp;
+
+ *pp += n;
+
+ return TRUE;
+}
+
+/* Demangle function arguments. If the pargs argument is not NULL, it
+ is set to a NULL terminated array holding the arguments. */
+
+static bfd_boolean
+stab_demangle_args (struct stab_demangle_info *minfo, const char **pp,
+ debug_type **pargs, bfd_boolean *pvarargs)
+{
+ const char *orig;
+ unsigned int alloc, count;
+
+ orig = *pp;
+
+ alloc = 10;
+ if (pargs != NULL)
+ {
+ *pargs = (debug_type *) xmalloc (alloc * sizeof **pargs);
+ *pvarargs = FALSE;
+ }
+ count = 0;
+
+ while (**pp != '_' && **pp != '\0' && **pp != 'e')
+ {
+ if (**pp == 'N' || **pp == 'T')
+ {
+ char temptype;
+ unsigned int r, t;
+
+ temptype = **pp;
+ ++*pp;
+
+ if (temptype == 'T')
+ r = 1;
+ else
+ {
+ if (! stab_demangle_get_count (pp, &r))
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ }
+
+ if (! stab_demangle_get_count (pp, &t))
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+
+ if (t >= minfo->typestring_count)
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ while (r-- > 0)
+ {
+ const char *tem;
+
+ tem = minfo->typestrings[t].typestring;
+ if (! stab_demangle_arg (minfo, &tem, pargs, &count, &alloc))
+ return FALSE;
+ }
+ }
+ else
+ {
+ if (! stab_demangle_arg (minfo, pp, pargs, &count, &alloc))
+ return FALSE;
+ }
+ }
+
+ if (pargs != NULL)
+ (*pargs)[count] = DEBUG_TYPE_NULL;
+
+ if (**pp == 'e')
+ {
+ if (pargs != NULL)
+ *pvarargs = TRUE;
+ ++*pp;
+ }
+
+ return TRUE;
+}
+
+/* Demangle a single argument. */
+
+static bfd_boolean
+stab_demangle_arg (struct stab_demangle_info *minfo, const char **pp,
+ debug_type **pargs, unsigned int *pcount,
+ unsigned int *palloc)
+{
+ const char *start;
+ debug_type type;
+
+ start = *pp;
+ if (! stab_demangle_type (minfo, pp,
+ pargs == NULL ? (debug_type *) NULL : &type)
+ || ! stab_demangle_remember_type (minfo, start, *pp - start))
+ return FALSE;
+
+ if (pargs != NULL)
+ {
+ if (type == DEBUG_TYPE_NULL)
+ return FALSE;
+
+ if (*pcount + 1 >= *palloc)
+ {
+ *palloc += 10;
+ *pargs = ((debug_type *)
+ xrealloc (*pargs, *palloc * sizeof **pargs));
+ }
+ (*pargs)[*pcount] = type;
+ ++*pcount;
+ }
+
+ return TRUE;
+}
+
+/* Demangle a type. If the ptype argument is not NULL, *ptype is set
+ to the newly allocated type. */
+
+static bfd_boolean
+stab_demangle_type (struct stab_demangle_info *minfo, const char **pp,
+ debug_type *ptype)
+{
+ const char *orig;
+
+ orig = *pp;
+
+ switch (**pp)
+ {
+ case 'P':
+ case 'p':
+ /* A pointer type. */
+ ++*pp;
+ if (! stab_demangle_type (minfo, pp, ptype))
+ return FALSE;
+ if (ptype != NULL)
+ *ptype = debug_make_pointer_type (minfo->dhandle, *ptype);
+ break;
+
+ case 'R':
+ /* A reference type. */
+ ++*pp;
+ if (! stab_demangle_type (minfo, pp, ptype))
+ return FALSE;
+ if (ptype != NULL)
+ *ptype = debug_make_reference_type (minfo->dhandle, *ptype);
+ break;
+
+ case 'A':
+ /* An array. */
+ {
+ unsigned long high;
+
+ ++*pp;
+ high = 0;
+ while (**pp != '\0' && **pp != '_')
+ {
+ if (! ISDIGIT (**pp))
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ high *= 10;
+ high += **pp - '0';
+ ++*pp;
+ }
+ if (**pp != '_')
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ ++*pp;
+
+ if (! stab_demangle_type (minfo, pp, ptype))
+ return FALSE;
+ if (ptype != NULL)
+ {
+ debug_type int_type;
+
+ int_type = debug_find_named_type (minfo->dhandle, "int");
+ if (int_type == NULL)
+ int_type = debug_make_int_type (minfo->dhandle, 4, FALSE);
+ *ptype = debug_make_array_type (minfo->dhandle, *ptype, int_type,
+ 0, high, FALSE);
+ }
+ }
+ break;
+
+ case 'T':
+ /* A back reference to a remembered type. */
+ {
+ unsigned int i;
+ const char *p;
+
+ ++*pp;
+ if (! stab_demangle_get_count (pp, &i))
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ if (i >= minfo->typestring_count)
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ p = minfo->typestrings[i].typestring;
+ if (! stab_demangle_type (minfo, &p, ptype))
+ return FALSE;
+ }
+ break;
+
+ case 'F':
+ /* A function. */
+ {
+ debug_type *args;
+ bfd_boolean varargs;
+
+ ++*pp;
+ if (! stab_demangle_args (minfo, pp,
+ (ptype == NULL
+ ? (debug_type **) NULL
+ : &args),
+ (ptype == NULL
+ ? (bfd_boolean *) NULL
+ : &varargs)))
+ return FALSE;
+ if (**pp != '_')
+ {
+ /* cplus_demangle will accept a function without a return
+ type, but I don't know when that will happen, or what
+ to do if it does. */
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ ++*pp;
+ if (! stab_demangle_type (minfo, pp, ptype))
+ return FALSE;
+ if (ptype != NULL)
+ *ptype = debug_make_function_type (minfo->dhandle, *ptype, args,
+ varargs);
+
+ }
+ break;
+
+ case 'M':
+ case 'O':
+ {
+ bfd_boolean memberp;
+ debug_type class_type = DEBUG_TYPE_NULL;
+ debug_type *args;
+ bfd_boolean varargs;
+ unsigned int n;
+ const char *name;
+
+ memberp = **pp == 'M';
+ args = NULL;
+ varargs = FALSE;
+
+ ++*pp;
+ if (ISDIGIT (**pp))
+ {
+ n = stab_demangle_count (pp);
+ if (strlen (*pp) < n)
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ name = *pp;
+ *pp += n;
+
+ if (ptype != NULL)
+ {
+ class_type = stab_find_tagged_type (minfo->dhandle,
+ minfo->info,
+ name, (int) n,
+ DEBUG_KIND_CLASS);
+ if (class_type == DEBUG_TYPE_NULL)
+ return FALSE;
+ }
+ }
+ else if (**pp == 'Q')
+ {
+ if (! stab_demangle_qualified (minfo, pp,
+ (ptype == NULL
+ ? (debug_type *) NULL
+ : &class_type)))
+ return FALSE;
+ }
+ else
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+
+ if (memberp)
+ {
+ if (**pp == 'C')
+ {
+ ++*pp;
+ }
+ else if (**pp == 'V')
+ {
+ ++*pp;
+ }
+ if (**pp != 'F')
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ ++*pp;
+ if (! stab_demangle_args (minfo, pp,
+ (ptype == NULL
+ ? (debug_type **) NULL
+ : &args),
+ (ptype == NULL
+ ? (bfd_boolean *) NULL
+ : &varargs)))
+ return FALSE;
+ }
+
+ if (**pp != '_')
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ ++*pp;
+
+ if (! stab_demangle_type (minfo, pp, ptype))
+ return FALSE;
+
+ if (ptype != NULL)
+ {
+ if (! memberp)
+ *ptype = debug_make_offset_type (minfo->dhandle, class_type,
+ *ptype);
+ else
+ {
+ /* FIXME: We have no way to record constp or
+ volatilep. */
+ *ptype = debug_make_method_type (minfo->dhandle, *ptype,
+ class_type, args, varargs);
+ }
+ }
+ }
+ break;
+
+ case 'G':
+ ++*pp;
+ if (! stab_demangle_type (minfo, pp, ptype))
+ return FALSE;
+ break;
+
+ case 'C':
+ ++*pp;
+ if (! stab_demangle_type (minfo, pp, ptype))
+ return FALSE;
+ if (ptype != NULL)
+ *ptype = debug_make_const_type (minfo->dhandle, *ptype);
+ break;
+
+ case 'Q':
+ {
+ if (! stab_demangle_qualified (minfo, pp, ptype))
+ return FALSE;
+ }
+ break;
+
+ default:
+ if (! stab_demangle_fund_type (minfo, pp, ptype))
+ return FALSE;
+ break;
+ }
+
+ return TRUE;
+}
+
+/* Demangle a fundamental type. If the ptype argument is not NULL,
+ *ptype is set to the newly allocated type. */
+
+static bfd_boolean
+stab_demangle_fund_type (struct stab_demangle_info *minfo, const char **pp,
+ debug_type *ptype)
+{
+ const char *orig;
+ bfd_boolean constp, volatilep, unsignedp, signedp;
+ bfd_boolean done;
+
+ orig = *pp;
+
+ constp = FALSE;
+ volatilep = FALSE;
+ unsignedp = FALSE;
+ signedp = FALSE;
+
+ done = FALSE;
+ while (! done)
+ {
+ switch (**pp)
+ {
+ case 'C':
+ constp = TRUE;
+ ++*pp;
+ break;
+
+ case 'U':
+ unsignedp = TRUE;
+ ++*pp;
+ break;
+
+ case 'S':
+ signedp = TRUE;
+ ++*pp;
+ break;
+
+ case 'V':
+ volatilep = TRUE;
+ ++*pp;
+ break;
+
+ default:
+ done = TRUE;
+ break;
+ }
+ }
+
+ switch (**pp)
+ {
+ case '\0':
+ case '_':
+ /* cplus_demangle permits this, but I don't know what it means. */
+ stab_bad_demangle (orig);
+ break;
+
+ case 'v': /* void */
+ if (ptype != NULL)
+ {
+ *ptype = debug_find_named_type (minfo->dhandle, "void");
+ if (*ptype == DEBUG_TYPE_NULL)
+ *ptype = debug_make_void_type (minfo->dhandle);
+ }
+ ++*pp;
+ break;
+
+ case 'x': /* long long */
+ if (ptype != NULL)
+ {
+ *ptype = debug_find_named_type (minfo->dhandle,
+ (unsignedp
+ ? "long long unsigned int"
+ : "long long int"));
+ if (*ptype == DEBUG_TYPE_NULL)
+ *ptype = debug_make_int_type (minfo->dhandle, 8, unsignedp);
+ }
+ ++*pp;
+ break;
+
+ case 'l': /* long */
+ if (ptype != NULL)
+ {
+ *ptype = debug_find_named_type (minfo->dhandle,
+ (unsignedp
+ ? "long unsigned int"
+ : "long int"));
+ if (*ptype == DEBUG_TYPE_NULL)
+ *ptype = debug_make_int_type (minfo->dhandle, 4, unsignedp);
+ }
+ ++*pp;
+ break;
+
+ case 'i': /* int */
+ if (ptype != NULL)
+ {
+ *ptype = debug_find_named_type (minfo->dhandle,
+ (unsignedp
+ ? "unsigned int"
+ : "int"));
+ if (*ptype == DEBUG_TYPE_NULL)
+ *ptype = debug_make_int_type (minfo->dhandle, 4, unsignedp);
+ }
+ ++*pp;
+ break;
+
+ case 's': /* short */
+ if (ptype != NULL)
+ {
+ *ptype = debug_find_named_type (minfo->dhandle,
+ (unsignedp
+ ? "short unsigned int"
+ : "short int"));
+ if (*ptype == DEBUG_TYPE_NULL)
+ *ptype = debug_make_int_type (minfo->dhandle, 2, unsignedp);
+ }
+ ++*pp;
+ break;
+
+ case 'b': /* bool */
+ if (ptype != NULL)
+ {
+ *ptype = debug_find_named_type (minfo->dhandle, "bool");
+ if (*ptype == DEBUG_TYPE_NULL)
+ *ptype = debug_make_bool_type (minfo->dhandle, 4);
+ }
+ ++*pp;
+ break;
+
+ case 'c': /* char */
+ if (ptype != NULL)
+ {
+ *ptype = debug_find_named_type (minfo->dhandle,
+ (unsignedp
+ ? "unsigned char"
+ : (signedp
+ ? "signed char"
+ : "char")));
+ if (*ptype == DEBUG_TYPE_NULL)
+ *ptype = debug_make_int_type (minfo->dhandle, 1, unsignedp);
+ }
+ ++*pp;
+ break;
+
+ case 'w': /* wchar_t */
+ if (ptype != NULL)
+ {
+ *ptype = debug_find_named_type (minfo->dhandle, "__wchar_t");
+ if (*ptype == DEBUG_TYPE_NULL)
+ *ptype = debug_make_int_type (minfo->dhandle, 2, TRUE);
+ }
+ ++*pp;
+ break;
+
+ case 'r': /* long double */
+ if (ptype != NULL)
+ {
+ *ptype = debug_find_named_type (minfo->dhandle, "long double");
+ if (*ptype == DEBUG_TYPE_NULL)
+ *ptype = debug_make_float_type (minfo->dhandle, 8);
+ }
+ ++*pp;
+ break;
+
+ case 'd': /* double */
+ if (ptype != NULL)
+ {
+ *ptype = debug_find_named_type (minfo->dhandle, "double");
+ if (*ptype == DEBUG_TYPE_NULL)
+ *ptype = debug_make_float_type (minfo->dhandle, 8);
+ }
+ ++*pp;
+ break;
+
+ case 'f': /* float */
+ if (ptype != NULL)
+ {
+ *ptype = debug_find_named_type (minfo->dhandle, "float");
+ if (*ptype == DEBUG_TYPE_NULL)
+ *ptype = debug_make_float_type (minfo->dhandle, 4);
+ }
+ ++*pp;
+ break;
+
+ case 'G':
+ ++*pp;
+ if (! ISDIGIT (**pp))
+ {
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+ /* Fall through. */
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ {
+ const char *hold;
+
+ if (! stab_demangle_class (minfo, pp, &hold))
+ return FALSE;
+ if (ptype != NULL)
+ {
+ char *name;
+
+ name = savestring (hold, *pp - hold);
+ *ptype = debug_find_named_type (minfo->dhandle, name);
+ free (name);
+ if (*ptype == DEBUG_TYPE_NULL)
+ {
+ /* FIXME: It is probably incorrect to assume that
+ undefined types are tagged types. */
+ *ptype = stab_find_tagged_type (minfo->dhandle, minfo->info,
+ hold, *pp - hold,
+ DEBUG_KIND_ILLEGAL);
+ if (*ptype == DEBUG_TYPE_NULL)
+ return FALSE;
+ }
+ }
+ }
+ break;
+
+ case 't':
+ {
+ char *name;
+
+ if (! stab_demangle_template (minfo, pp,
+ ptype != NULL ? &name : NULL))
+ return FALSE;
+ if (ptype != NULL)
+ {
+ *ptype = stab_find_tagged_type (minfo->dhandle, minfo->info,
+ name, strlen (name),
+ DEBUG_KIND_CLASS);
+ free (name);
+ if (*ptype == DEBUG_TYPE_NULL)
+ return FALSE;
+ }
+ }
+ break;
+
+ default:
+ stab_bad_demangle (orig);
+ return FALSE;
+ }
+
+ if (ptype != NULL)
+ {
+ if (constp)
+ *ptype = debug_make_const_type (minfo->dhandle, *ptype);
+ if (volatilep)
+ *ptype = debug_make_volatile_type (minfo->dhandle, *ptype);
+ }
+
+ return TRUE;
+}
+
+/* Remember a type string in a demangled string. */
+
+static bfd_boolean
+stab_demangle_remember_type (struct stab_demangle_info *minfo,
+ const char *p, int len)
+{
+ if (minfo->typestring_count >= minfo->typestring_alloc)
+ {
+ minfo->typestring_alloc += 10;
+ minfo->typestrings = ((struct stab_demangle_typestring *)
+ xrealloc (minfo->typestrings,
+ (minfo->typestring_alloc
+ * sizeof *minfo->typestrings)));
+ }
+
+ minfo->typestrings[minfo->typestring_count].typestring = p;
+ minfo->typestrings[minfo->typestring_count].len = (unsigned int) len;
+ ++minfo->typestring_count;
+
+ return TRUE;
+}
+
+/* Demangle names encoded using the g++ V3 ABI. The newer versions of
+ g++ which use this ABI do not encode ordinary method argument types
+ in a mangled name; they simply output the argument types. However,
+ for a static method, g++ simply outputs the return type and the
+ physical name. So in that case we need to demangle the name here.
+ Here PHYSNAME is the physical name of the function, and we set the
+ variable pointed at by PVARARGS to indicate whether this function
+ is varargs. This returns NULL, or a NULL terminated array of
+ argument types. */
+
+static debug_type *
+stab_demangle_v3_argtypes (void *dhandle, struct stab_handle *info,
+ const char *physname, bfd_boolean *pvarargs)
+{
+ struct demangle_component *dc;
+ void *mem;
+ debug_type *pargs;
+
+ dc = cplus_demangle_v3_components (physname, DMGL_PARAMS | DMGL_ANSI, &mem);
+ if (dc == NULL)
+ {
+ stab_bad_demangle (physname);
+ return NULL;
+ }
+
+ /* We expect to see TYPED_NAME, and the right subtree describes the
+ function type. */
+ if (dc->type != DEMANGLE_COMPONENT_TYPED_NAME
+ || dc->u.s_binary.right->type != DEMANGLE_COMPONENT_FUNCTION_TYPE)
+ {
+ fprintf (stderr, _("Demangled name is not a function\n"));
+ free (mem);
+ return NULL;
+ }
+
+ pargs = stab_demangle_v3_arglist (dhandle, info,
+ dc->u.s_binary.right->u.s_binary.right,
+ pvarargs);
+
+ free (mem);
+
+ return pargs;
+}
+
+/* Demangle an argument list in a struct demangle_component tree.
+ Returns a DEBUG_TYPE_NULL terminated array of argument types, and
+ sets *PVARARGS to indicate whether this is a varargs function. */
+
+static debug_type *
+stab_demangle_v3_arglist (void *dhandle, struct stab_handle *info,
+ struct demangle_component *arglist,
+ bfd_boolean *pvarargs)
+{
+ struct demangle_component *dc;
+ unsigned int alloc, count;
+ debug_type *pargs;
+
+ alloc = 10;
+ pargs = (debug_type *) xmalloc (alloc * sizeof *pargs);
+ *pvarargs = FALSE;
+
+ count = 0;
+
+ for (dc = arglist;
+ dc != NULL;
+ dc = dc->u.s_binary.right)
+ {
+ debug_type arg;
+ bfd_boolean varargs;
+
+ if (dc->type != DEMANGLE_COMPONENT_ARGLIST)
+ {
+ fprintf (stderr, _("Unexpected type in v3 arglist demangling\n"));
+ free (pargs);
+ return NULL;
+ }
+
+ /* PR 13925: Cope if the demangler returns an empty
+ context for a function with no arguments. */
+ if (dc->u.s_binary.left == NULL)
+ break;
+
+ arg = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left,
+ NULL, &varargs);
+ if (arg == NULL)
+ {
+ if (varargs)
+ {
+ *pvarargs = TRUE;
+ continue;
+ }
+ free (pargs);
+ return NULL;
+ }
+
+ if (count + 1 >= alloc)
+ {
+ alloc += 10;
+ pargs = (debug_type *) xrealloc (pargs, alloc * sizeof *pargs);
+ }
+
+ pargs[count] = arg;
+ ++count;
+ }
+
+ pargs[count] = DEBUG_TYPE_NULL;
+
+ return pargs;
+}
+
+/* Convert a struct demangle_component tree describing an argument
+ type into a debug_type. */
+
+static debug_type
+stab_demangle_v3_arg (void *dhandle, struct stab_handle *info,
+ struct demangle_component *dc, debug_type context,
+ bfd_boolean *pvarargs)
+{
+ debug_type dt;
+
+ if (pvarargs != NULL)
+ *pvarargs = FALSE;
+
+ switch (dc->type)
+ {
+ /* FIXME: These are demangle component types which we probably
+ need to handle one way or another. */
+ case DEMANGLE_COMPONENT_LOCAL_NAME:
+ case DEMANGLE_COMPONENT_TYPED_NAME:
+ case DEMANGLE_COMPONENT_TEMPLATE_PARAM:
+ case DEMANGLE_COMPONENT_CTOR:
+ case DEMANGLE_COMPONENT_DTOR:
+ case DEMANGLE_COMPONENT_JAVA_CLASS:
+ case DEMANGLE_COMPONENT_RESTRICT_THIS:
+ case DEMANGLE_COMPONENT_VOLATILE_THIS:
+ case DEMANGLE_COMPONENT_CONST_THIS:
+ case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
+ case DEMANGLE_COMPONENT_COMPLEX:
+ case DEMANGLE_COMPONENT_IMAGINARY:
+ case DEMANGLE_COMPONENT_VENDOR_TYPE:
+ case DEMANGLE_COMPONENT_ARRAY_TYPE:
+ case DEMANGLE_COMPONENT_PTRMEM_TYPE:
+ case DEMANGLE_COMPONENT_ARGLIST:
+ default:
+ fprintf (stderr, _("Unrecognized demangle component %d\n"),
+ (int) dc->type);
+ return NULL;
+
+ case DEMANGLE_COMPONENT_NAME:
+ if (context != NULL)
+ {
+ const debug_field *fields;
+
+ fields = debug_get_fields (dhandle, context);
+ if (fields != NULL)
+ {
+ /* Try to find this type by looking through the context
+ class. */
+ for (; *fields != DEBUG_FIELD_NULL; fields++)
+ {
+ debug_type ft;
+ const char *dn;
+
+ ft = debug_get_field_type (dhandle, *fields);
+ if (ft == NULL)
+ return NULL;
+ dn = debug_get_type_name (dhandle, ft);
+ if (dn != NULL
+ && (int) strlen (dn) == dc->u.s_name.len
+ && strncmp (dn, dc->u.s_name.s, dc->u.s_name.len) == 0)
+ return ft;
+ }
+ }
+ }
+ return stab_find_tagged_type (dhandle, info, dc->u.s_name.s,
+ dc->u.s_name.len, DEBUG_KIND_ILLEGAL);
+
+ case DEMANGLE_COMPONENT_QUAL_NAME:
+ context = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left,
+ context, NULL);
+ if (context == NULL)
+ return NULL;
+ return stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.right,
+ context, NULL);
+
+ case DEMANGLE_COMPONENT_TEMPLATE:
+ {
+ char *p;
+ size_t alc;
+
+ /* We print this component to get a class name which we can
+ use. FIXME: This probably won't work if the template uses
+ template parameters which refer to an outer template. */
+ p = cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI, dc, 20, &alc);
+ if (p == NULL)
+ {
+ fprintf (stderr, _("Failed to print demangled template\n"));
+ return NULL;
+ }
+ dt = stab_find_tagged_type (dhandle, info, p, strlen (p),
+ DEBUG_KIND_CLASS);
+ free (p);
+ return dt;
+ }
+
+ case DEMANGLE_COMPONENT_SUB_STD:
+ return stab_find_tagged_type (dhandle, info, dc->u.s_string.string,
+ dc->u.s_string.len, DEBUG_KIND_ILLEGAL);
+
+ case DEMANGLE_COMPONENT_RESTRICT:
+ case DEMANGLE_COMPONENT_VOLATILE:
+ case DEMANGLE_COMPONENT_CONST:
+ case DEMANGLE_COMPONENT_POINTER:
+ case DEMANGLE_COMPONENT_REFERENCE:
+ dt = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left, NULL,
+ NULL);
+ if (dt == NULL)
+ return NULL;
+
+ switch (dc->type)
+ {
+ default:
+ abort ();
+ case DEMANGLE_COMPONENT_RESTRICT:
+ /* FIXME: We have no way to represent restrict. */
+ return dt;
+ case DEMANGLE_COMPONENT_VOLATILE:
+ return debug_make_volatile_type (dhandle, dt);
+ case DEMANGLE_COMPONENT_CONST:
+ return debug_make_const_type (dhandle, dt);
+ case DEMANGLE_COMPONENT_POINTER:
+ return debug_make_pointer_type (dhandle, dt);
+ case DEMANGLE_COMPONENT_REFERENCE:
+ return debug_make_reference_type (dhandle, dt);
+ }
+
+ case DEMANGLE_COMPONENT_FUNCTION_TYPE:
+ {
+ debug_type *pargs;
+ bfd_boolean varargs;
+
+ if (dc->u.s_binary.left == NULL)
+ {
+ /* In this case the return type is actually unknown.
+ However, I'm not sure this will ever arise in practice;
+ normally an unknown return type would only appear at
+ the top level, which is handled above. */
+ dt = debug_make_void_type (dhandle);
+ }
+ else
+ dt = stab_demangle_v3_arg (dhandle, info, dc->u.s_binary.left, NULL,
+ NULL);
+ if (dt == NULL)
+ return NULL;
+
+ pargs = stab_demangle_v3_arglist (dhandle, info,
+ dc->u.s_binary.right,
+ &varargs);
+ if (pargs == NULL)
+ return NULL;
+
+ return debug_make_function_type (dhandle, dt, pargs, varargs);
+ }
+
+ case DEMANGLE_COMPONENT_BUILTIN_TYPE:
+ {
+ char *p;
+ size_t alc;
+ debug_type ret;
+
+ /* We print this component in order to find out the type name.
+ FIXME: Should we instead expose the
+ demangle_builtin_type_info structure? */
+ p = cplus_demangle_print (DMGL_PARAMS | DMGL_ANSI, dc, 20, &alc);
+ if (p == NULL)
+ {
+ fprintf (stderr, _("Couldn't get demangled builtin type\n"));
+ return NULL;
+ }
+
+ /* The mangling is based on the type, but does not itself
+ indicate what the sizes are. So we have to guess. */
+ if (strcmp (p, "signed char") == 0)
+ ret = debug_make_int_type (dhandle, 1, FALSE);
+ else if (strcmp (p, "bool") == 0)
+ ret = debug_make_bool_type (dhandle, 1);
+ else if (strcmp (p, "char") == 0)
+ ret = debug_make_int_type (dhandle, 1, FALSE);
+ else if (strcmp (p, "double") == 0)
+ ret = debug_make_float_type (dhandle, 8);
+ else if (strcmp (p, "long double") == 0)
+ ret = debug_make_float_type (dhandle, 8);
+ else if (strcmp (p, "float") == 0)
+ ret = debug_make_float_type (dhandle, 4);
+ else if (strcmp (p, "__float128") == 0)
+ ret = debug_make_float_type (dhandle, 16);
+ else if (strcmp (p, "unsigned char") == 0)
+ ret = debug_make_int_type (dhandle, 1, TRUE);
+ else if (strcmp (p, "int") == 0)
+ ret = debug_make_int_type (dhandle, 4, FALSE);
+ else if (strcmp (p, "unsigned int") == 0)
+ ret = debug_make_int_type (dhandle, 4, TRUE);
+ else if (strcmp (p, "long") == 0)
+ ret = debug_make_int_type (dhandle, 4, FALSE);
+ else if (strcmp (p, "unsigned long") == 0)
+ ret = debug_make_int_type (dhandle, 4, TRUE);
+ else if (strcmp (p, "__int128") == 0)
+ ret = debug_make_int_type (dhandle, 16, FALSE);
+ else if (strcmp (p, "unsigned __int128") == 0)
+ ret = debug_make_int_type (dhandle, 16, TRUE);
+ else if (strcmp (p, "short") == 0)
+ ret = debug_make_int_type (dhandle, 2, FALSE);
+ else if (strcmp (p, "unsigned short") == 0)
+ ret = debug_make_int_type (dhandle, 2, TRUE);
+ else if (strcmp (p, "void") == 0)
+ ret = debug_make_void_type (dhandle);
+ else if (strcmp (p, "wchar_t") == 0)
+ ret = debug_make_int_type (dhandle, 4, TRUE);
+ else if (strcmp (p, "long long") == 0)
+ ret = debug_make_int_type (dhandle, 8, FALSE);
+ else if (strcmp (p, "unsigned long long") == 0)
+ ret = debug_make_int_type (dhandle, 8, TRUE);
+ else if (strcmp (p, "...") == 0)
+ {
+ if (pvarargs == NULL)
+ fprintf (stderr, _("Unexpected demangled varargs\n"));
+ else
+ *pvarargs = TRUE;
+ ret = NULL;
+ }
+ else
+ {
+ fprintf (stderr, _("Unrecognized demangled builtin type\n"));
+ ret = NULL;
+ }
+
+ free (p);
+
+ return ret;
+ }
+ }
+}
diff --git a/binutils-2.24/binutils/stamp-h.in b/binutils-2.24/binutils/stamp-h.in
new file mode 100644
index 00000000..9788f702
--- /dev/null
+++ b/binutils-2.24/binutils/stamp-h.in
@@ -0,0 +1 @@
+timestamp
diff --git a/binutils-2.24/binutils/strings.c b/binutils-2.24/binutils/strings.c
new file mode 100644
index 00000000..d5916305
--- /dev/null
+++ b/binutils-2.24/binutils/strings.c
@@ -0,0 +1,655 @@
+/* strings -- print the strings of printable characters in files
+ Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012
+ 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+/* Usage: strings [options] file...
+
+ Options:
+ --all
+ -a
+ - Do not scan only the initialized data section of object files.
+
+ --print-file-name
+ -f Print the name of the file before each string.
+
+ --bytes=min-len
+ -n min-len
+ -min-len Print graphic char sequences, MIN-LEN or more bytes long,
+ that are followed by a NUL or a newline. Default is 4.
+
+ --radix={o,x,d}
+ -t {o,x,d} Print the offset within the file before each string,
+ in octal/hex/decimal.
+
+ -o Like -to. (Some other implementations have -o like -to,
+ others like -td. We chose one arbitrarily.)
+
+ --encoding={s,S,b,l,B,L}
+ -e {s,S,b,l,B,L}
+ Select character encoding: 7-bit-character, 8-bit-character,
+ bigendian 16-bit, littleendian 16-bit, bigendian 32-bit,
+ littleendian 32-bit.
+
+ --target=BFDNAME
+ -T {bfdname}
+ Specify a non-default object file format.
+
+ --help
+ -h Print the usage message on the standard output.
+
+ --version
+ -V
+ -v Print the program version number.
+
+ Written by Richard Stallman <rms@gnu.ai.mit.edu>
+ and David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "getopt.h"
+#include "libiberty.h"
+#include "safe-ctype.h"
+#include "bucomm.h"
+
+#define STRING_ISGRAPHIC(c) \
+ ( (c) >= 0 \
+ && (c) <= 255 \
+ && ((c) == '\t' || ISPRINT (c) || (encoding == 'S' && (c) > 127)))
+
+#ifndef errno
+extern int errno;
+#endif
+
+/* The BFD section flags that identify an initialized data section. */
+#define DATA_FLAGS (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS)
+
+/* Radix for printing addresses (must be 8, 10 or 16). */
+static int address_radix;
+
+/* Minimum length of sequence of graphic chars to trigger output. */
+static int string_min;
+
+/* TRUE means print address within file for each string. */
+static bfd_boolean print_addresses;
+
+/* TRUE means print filename for each string. */
+static bfd_boolean print_filenames;
+
+/* TRUE means for object files scan only the data section. */
+static bfd_boolean datasection_only;
+
+/* TRUE if we found an initialized data section in the current file. */
+static bfd_boolean got_a_section;
+
+/* The BFD object file format. */
+static char *target;
+
+/* The character encoding format. */
+static char encoding;
+static int encoding_bytes;
+
+static struct option long_options[] =
+{
+ {"all", no_argument, NULL, 'a'},
+ {"print-file-name", no_argument, NULL, 'f'},
+ {"bytes", required_argument, NULL, 'n'},
+ {"radix", required_argument, NULL, 't'},
+ {"encoding", required_argument, NULL, 'e'},
+ {"target", required_argument, NULL, 'T'},
+ {"help", no_argument, NULL, 'h'},
+ {"version", no_argument, NULL, 'v'},
+ {NULL, 0, NULL, 0}
+};
+
+/* Records the size of a named file so that we
+ do not repeatedly run bfd_stat() on it. */
+
+typedef struct
+{
+ const char * filename;
+ bfd_size_type filesize;
+} filename_and_size_t;
+
+static void strings_a_section (bfd *, asection *, void *);
+static bfd_boolean strings_object_file (const char *);
+static bfd_boolean strings_file (char *file);
+static void print_strings (const char *, FILE *, file_ptr, int, int, char *);
+static void usage (FILE *, int);
+static long get_char (FILE *, file_ptr *, int *, char **);
+
+int main (int, char **);
+
+int
+main (int argc, char **argv)
+{
+ int optc;
+ int exit_status = 0;
+ bfd_boolean files_given = FALSE;
+ char *s;
+ int numeric_opt = 0;
+
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_ALL, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = argv[0];
+ xmalloc_set_program_name (program_name);
+
+ expandargv (&argc, &argv);
+
+ string_min = 4;
+ print_addresses = FALSE;
+ print_filenames = FALSE;
+ datasection_only = TRUE;
+ target = NULL;
+ encoding = 's';
+
+ while ((optc = getopt_long (argc, argv, "afhHn:ot:e:T:Vv0123456789",
+ long_options, (int *) 0)) != EOF)
+ {
+ switch (optc)
+ {
+ case 'a':
+ datasection_only = FALSE;
+ break;
+
+ case 'f':
+ print_filenames = TRUE;
+ break;
+
+ case 'H':
+ case 'h':
+ usage (stdout, 0);
+
+ case 'n':
+ string_min = (int) strtoul (optarg, &s, 0);
+ if (s != NULL && *s != 0)
+ fatal (_("invalid integer argument %s"), optarg);
+ break;
+
+ case 'o':
+ print_addresses = TRUE;
+ address_radix = 8;
+ break;
+
+ case 't':
+ print_addresses = TRUE;
+ if (optarg[1] != '\0')
+ usage (stderr, 1);
+ switch (optarg[0])
+ {
+ case 'o':
+ address_radix = 8;
+ break;
+
+ case 'd':
+ address_radix = 10;
+ break;
+
+ case 'x':
+ address_radix = 16;
+ break;
+
+ default:
+ usage (stderr, 1);
+ }
+ break;
+
+ case 'T':
+ target = optarg;
+ break;
+
+ case 'e':
+ if (optarg[1] != '\0')
+ usage (stderr, 1);
+ encoding = optarg[0];
+ break;
+
+ case 'V':
+ case 'v':
+ print_version ("strings");
+ break;
+
+ case '?':
+ usage (stderr, 1);
+
+ default:
+ numeric_opt = optind;
+ break;
+ }
+ }
+
+ if (numeric_opt != 0)
+ {
+ string_min = (int) strtoul (argv[numeric_opt - 1] + 1, &s, 0);
+ if (s != NULL && *s != 0)
+ fatal (_("invalid integer argument %s"), argv[numeric_opt - 1] + 1);
+ }
+ if (string_min < 1)
+ fatal (_("invalid minimum string length %d"), string_min);
+
+ switch (encoding)
+ {
+ case 'S':
+ case 's':
+ encoding_bytes = 1;
+ break;
+ case 'b':
+ case 'l':
+ encoding_bytes = 2;
+ break;
+ case 'B':
+ case 'L':
+ encoding_bytes = 4;
+ break;
+ default:
+ usage (stderr, 1);
+ }
+
+ bfd_init ();
+ set_default_bfd_target ();
+
+ if (optind >= argc)
+ {
+ datasection_only = FALSE;
+ SET_BINARY (fileno (stdin));
+ print_strings ("{standard input}", stdin, 0, 0, 0, (char *) NULL);
+ files_given = TRUE;
+ }
+ else
+ {
+ for (; optind < argc; ++optind)
+ {
+ if (strcmp (argv[optind], "-") == 0)
+ datasection_only = FALSE;
+ else
+ {
+ files_given = TRUE;
+ exit_status |= strings_file (argv[optind]) == FALSE;
+ }
+ }
+ }
+
+ if (!files_given)
+ usage (stderr, 1);
+
+ return (exit_status);
+}
+
+/* Scan section SECT of the file ABFD, whose printable name is in
+ ARG->filename and whose size might be in ARG->filesize. If it
+ contains initialized data set `got_a_section' and print the
+ strings in it.
+
+ FIXME: We ought to be able to return error codes/messages for
+ certain conditions. */
+
+static void
+strings_a_section (bfd *abfd, asection *sect, void *arg)
+{
+ filename_and_size_t * filename_and_sizep;
+ bfd_size_type *filesizep;
+ bfd_size_type sectsize;
+ void *mem;
+
+ if ((sect->flags & DATA_FLAGS) != DATA_FLAGS)
+ return;
+
+ sectsize = bfd_get_section_size (sect);
+
+ if (sectsize <= 0)
+ return;
+
+ /* Get the size of the file. This might have been cached for us. */
+ filename_and_sizep = (filename_and_size_t *) arg;
+ filesizep = & filename_and_sizep->filesize;
+
+ if (*filesizep == 0)
+ {
+ struct stat st;
+
+ if (bfd_stat (abfd, &st))
+ return;
+
+ /* Cache the result so that we do not repeatedly stat this file. */
+ *filesizep = st.st_size;
+ }
+
+ /* Compare the size of the section against the size of the file.
+ If the section is bigger then the file must be corrupt and
+ we should not try dumping it. */
+ if (sectsize >= *filesizep)
+ return;
+
+ mem = xmalloc (sectsize);
+
+ if (bfd_get_section_contents (abfd, sect, mem, (file_ptr) 0, sectsize))
+ {
+ got_a_section = TRUE;
+
+ print_strings (filename_and_sizep->filename, NULL, sect->filepos,
+ 0, sectsize, (char *) mem);
+ }
+
+ free (mem);
+}
+
+/* Scan all of the sections in FILE, and print the strings
+ in the initialized data section(s).
+
+ Return TRUE if successful,
+ FALSE if not (such as if FILE is not an object file). */
+
+static bfd_boolean
+strings_object_file (const char *file)
+{
+ filename_and_size_t filename_and_size;
+ bfd *abfd;
+
+ abfd = bfd_openr (file, target);
+
+ if (abfd == NULL)
+ /* Treat the file as a non-object file. */
+ return FALSE;
+
+ /* This call is mainly for its side effect of reading in the sections.
+ We follow the traditional behavior of `strings' in that we don't
+ complain if we don't recognize a file to be an object file. */
+ if (!bfd_check_format (abfd, bfd_object))
+ {
+ bfd_close (abfd);
+ return FALSE;
+ }
+
+ got_a_section = FALSE;
+ filename_and_size.filename = file;
+ filename_and_size.filesize = 0;
+ bfd_map_over_sections (abfd, strings_a_section, & filename_and_size);
+
+ if (!bfd_close (abfd))
+ {
+ bfd_nonfatal (file);
+ return FALSE;
+ }
+
+ return got_a_section;
+}
+
+/* Print the strings in FILE. Return TRUE if ok, FALSE if an error occurs. */
+
+static bfd_boolean
+strings_file (char *file)
+{
+ struct stat st;
+
+ /* get_file_size does not support non-S_ISREG files. */
+
+ if (stat (file, &st) < 0)
+ {
+ if (errno == ENOENT)
+ non_fatal (_("'%s': No such file"), file);
+ else
+ non_fatal (_("Warning: could not locate '%s'. reason: %s"),
+ file, strerror (errno));
+ return FALSE;
+ }
+
+ /* If we weren't told to scan the whole file,
+ try to open it as an object file and only look at
+ initialized data sections. If that fails, fall back to the
+ whole file. */
+ if (!datasection_only || !strings_object_file (file))
+ {
+ FILE *stream;
+
+ stream = fopen (file, FOPEN_RB);
+ if (stream == NULL)
+ {
+ fprintf (stderr, "%s: ", program_name);
+ perror (file);
+ return FALSE;
+ }
+
+ print_strings (file, stream, (file_ptr) 0, 0, 0, (char *) 0);
+
+ if (fclose (stream) == EOF)
+ {
+ fprintf (stderr, "%s: ", program_name);
+ perror (file);
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+/* Read the next character, return EOF if none available.
+ Assume that STREAM is positioned so that the next byte read
+ is at address ADDRESS in the file.
+
+ If STREAM is NULL, do not read from it.
+ The caller can supply a buffer of characters
+ to be processed before the data in STREAM.
+ MAGIC is the address of the buffer and
+ MAGICCOUNT is how many characters are in it. */
+
+static long
+get_char (FILE *stream, file_ptr *address, int *magiccount, char **magic)
+{
+ int c, i;
+ long r = 0;
+
+ for (i = 0; i < encoding_bytes; i++)
+ {
+ if (*magiccount)
+ {
+ (*magiccount)--;
+ c = *(*magic)++;
+ }
+ else
+ {
+ if (stream == NULL)
+ return EOF;
+
+ /* Only use getc_unlocked if we found a declaration for it.
+ Otherwise, libc is not thread safe by default, and we
+ should not use it. */
+
+#if defined(HAVE_GETC_UNLOCKED) && HAVE_DECL_GETC_UNLOCKED
+ c = getc_unlocked (stream);
+#else
+ c = getc (stream);
+#endif
+ if (c == EOF)
+ return EOF;
+ }
+
+ (*address)++;
+ r = (r << 8) | (c & 0xff);
+ }
+
+ switch (encoding)
+ {
+ default:
+ break;
+ case 'l':
+ r = ((r & 0xff) << 8) | ((r & 0xff00) >> 8);
+ break;
+ case 'L':
+ r = (((r & 0xff) << 24) | ((r & 0xff00) << 8)
+ | ((r & 0xff0000) >> 8) | ((r & 0xff000000) >> 24));
+ break;
+ }
+
+ return r;
+}
+
+/* Find the strings in file FILENAME, read from STREAM.
+ Assume that STREAM is positioned so that the next byte read
+ is at address ADDRESS in the file.
+ Stop reading at address STOP_POINT in the file, if nonzero.
+
+ If STREAM is NULL, do not read from it.
+ The caller can supply a buffer of characters
+ to be processed before the data in STREAM.
+ MAGIC is the address of the buffer and
+ MAGICCOUNT is how many characters are in it.
+ Those characters come at address ADDRESS and the data in STREAM follow. */
+
+static void
+print_strings (const char *filename, FILE *stream, file_ptr address,
+ int stop_point, int magiccount, char *magic)
+{
+ char *buf = (char *) xmalloc (sizeof (char) * (string_min + 1));
+
+ while (1)
+ {
+ file_ptr start;
+ int i;
+ long c;
+
+ /* See if the next `string_min' chars are all graphic chars. */
+ tryline:
+ if (stop_point && address >= stop_point)
+ break;
+ start = address;
+ for (i = 0; i < string_min; i++)
+ {
+ c = get_char (stream, &address, &magiccount, &magic);
+ if (c == EOF)
+ {
+ free (buf);
+ return;
+ }
+ if (! STRING_ISGRAPHIC (c))
+ /* Found a non-graphic. Try again starting with next char. */
+ goto tryline;
+ buf[i] = c;
+ }
+
+ /* We found a run of `string_min' graphic characters. Print up
+ to the next non-graphic character. */
+
+ if (print_filenames)
+ printf ("%s: ", filename);
+ if (print_addresses)
+ switch (address_radix)
+ {
+ case 8:
+#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
+ if (sizeof (start) > sizeof (long))
+ {
+#ifndef __MSVCRT__
+ printf ("%7llo ", (unsigned long long) start);
+#else
+ printf ("%7I64o ", (unsigned long long) start);
+#endif
+ }
+ else
+#elif !BFD_HOST_64BIT_LONG
+ if (start != (unsigned long) start)
+ printf ("++%7lo ", (unsigned long) start);
+ else
+#endif
+ printf ("%7lo ", (unsigned long) start);
+ break;
+
+ case 10:
+#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
+ if (sizeof (start) > sizeof (long))
+ {
+#ifndef __MSVCRT__
+ printf ("%7lld ", (unsigned long long) start);
+#else
+ printf ("%7I64d ", (unsigned long long) start);
+#endif
+ }
+ else
+#elif !BFD_HOST_64BIT_LONG
+ if (start != (unsigned long) start)
+ printf ("++%7ld ", (unsigned long) start);
+ else
+#endif
+ printf ("%7ld ", (long) start);
+ break;
+
+ case 16:
+#if __STDC_VERSION__ >= 199901L || (defined(__GNUC__) && __GNUC__ >= 2)
+ if (sizeof (start) > sizeof (long))
+ {
+#ifndef __MSVCRT__
+ printf ("%7llx ", (unsigned long long) start);
+#else
+ printf ("%7I64x ", (unsigned long long) start);
+#endif
+ }
+ else
+#elif !BFD_HOST_64BIT_LONG
+ if (start != (unsigned long) start)
+ printf ("%lx%8.8lx ", (unsigned long) (start >> 32),
+ (unsigned long) (start & 0xffffffff));
+ else
+#endif
+ printf ("%7lx ", (unsigned long) start);
+ break;
+ }
+
+ buf[i] = '\0';
+ fputs (buf, stdout);
+
+ while (1)
+ {
+ c = get_char (stream, &address, &magiccount, &magic);
+ if (c == EOF)
+ break;
+ if (! STRING_ISGRAPHIC (c))
+ break;
+ putchar (c);
+ }
+
+ putchar ('\n');
+ }
+ free (buf);
+}
+
+static void
+usage (FILE *stream, int status)
+{
+ fprintf (stream, _("Usage: %s [option(s)] [file(s)]\n"), program_name);
+ fprintf (stream, _(" Display printable strings in [file(s)] (stdin by default)\n"));
+ fprintf (stream, _(" The options are:\n\
+ -a - --all Scan the entire file, not just the data section\n\
+ -f --print-file-name Print the name of the file before each string\n\
+ -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n\
+ -<number> least [number] characters (default 4).\n\
+ -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n\
+ -o An alias for --radix=o\n\
+ -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 -V --version Print the program's version number\n"));
+ list_supported_targets (program_name, stream);
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+ exit (status);
+}
diff --git a/binutils-2.24/binutils/sysdep.h b/binutils-2.24/binutils/sysdep.h
new file mode 100644
index 00000000..5164e791
--- /dev/null
+++ b/binutils-2.24/binutils/sysdep.h
@@ -0,0 +1,188 @@
+/* sysdep.h -- handle host dependencies for binutils
+ Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+ 2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009, 2012
+ 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 3 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. */
+
+#ifndef _BIN_SYSDEP_H
+#define _BIN_SYSDEP_H
+
+#include "alloca-conf.h"
+#include "ansidecl.h"
+#include <stdio.h>
+#include <sys/types.h>
+
+#include "bfdver.h"
+
+#include <stdarg.h>
+
+#ifdef USE_BINARY_FOPEN
+#include "fopen-bin.h"
+#else
+#include "fopen-same.h"
+#endif
+
+#include <errno.h>
+#ifndef errno
+extern int errno;
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifdef STRING_WITH_STRINGS
+#include <string.h>
+#include <strings.h>
+#else
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#else
+extern char *strchr ();
+extern char *strrchr ();
+#endif
+#endif
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#else
+#ifdef HAVE_SYS_FILE_H
+#include <sys/file.h>
+#endif
+#endif
+
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+#include "binary-io.h"
+
+#if !HAVE_DECL_STPCPY
+extern char *stpcpy (char *, const char *);
+#endif
+
+#if !HAVE_DECL_STRSTR
+extern char *strstr ();
+#endif
+
+#ifdef HAVE_SBRK
+#if !HAVE_DECL_SBRK
+extern char *sbrk ();
+#endif
+#endif
+
+#if !HAVE_DECL_GETENV
+extern char *getenv ();
+#endif
+
+#if !HAVE_DECL_ENVIRON
+extern char **environ;
+#endif
+
+#if !HAVE_DECL_FPRINTF
+extern int fprintf (FILE *, const char *, ...);
+#endif
+
+#if !HAVE_DECL_SNPRINTF
+extern int snprintf(char *, size_t, const char *, ...);
+#endif
+
+#if !HAVE_DECL_VSNPRINTF
+extern int vsnprintf(char *, size_t, const char *, va_list);
+#endif
+
+#ifndef O_RDONLY
+#define O_RDONLY 0
+#endif
+
+#ifndef O_RDWR
+#define O_RDWR 2
+#endif
+
+#ifndef SEEK_SET
+#define SEEK_SET 0
+#endif
+#ifndef SEEK_CUR
+#define SEEK_CUR 1
+#endif
+#ifndef SEEK_END
+#define SEEK_END 2
+#endif
+
+#ifdef HAVE_LOCALE_H
+# ifndef ENABLE_NLS
+ /* The Solaris version of locale.h always includes libintl.h. If we have
+ been configured with --disable-nls then ENABLE_NLS will not be defined
+ and the dummy definitions of bindtextdomain (et al) below will conflict
+ with the defintions in libintl.h. So we define these values to prevent
+ the bogus inclusion of libintl.h. */
+# define _LIBINTL_H
+# define _LIBGETTEXT_H
+# endif
+# include <locale.h>
+#endif
+
+#ifdef ENABLE_NLS
+# include <libintl.h>
+# define _(String) gettext (String)
+# ifdef gettext_noop
+# define N_(String) gettext_noop (String)
+# else
+# define N_(String) (String)
+# endif
+#else
+# define gettext(Msgid) (Msgid)
+# define dgettext(Domainname, Msgid) (Msgid)
+# define dcgettext(Domainname, Msgid, Category) (Msgid)
+# define textdomain(Domainname) while (0) /* nothing */
+# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
+# define _(String) (String)
+# define N_(String) (String)
+#endif
+
+/* Used by ar.c and objcopy.c. */
+#define BUFSIZE 8192
+
+/* For PATH_MAX. */
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+
+#ifndef PATH_MAX
+/* For MAXPATHLEN. */
+# ifdef HAVE_SYS_PARAM_H
+# include <sys/param.h>
+# endif
+# ifndef PATH_MAX
+# ifdef MAXPATHLEN
+# define PATH_MAX MAXPATHLEN
+# else
+# define PATH_MAX 1024
+# endif
+# endif
+#endif
+
+#endif /* _BIN_SYSDEP_H */
diff --git a/binutils-2.24/binutils/sysdump.c b/binutils-2.24/binutils/sysdump.c
new file mode 100644
index 00000000..4d5d38df
--- /dev/null
+++ b/binutils-2.24/binutils/sysdump.c
@@ -0,0 +1,719 @@
+/* Sysroff object format dumper.
+ Copyright 1994, 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007,
+ 2009, 2011 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 3 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 Steve Chamberlain <sac@cygnus.com>.
+
+ This program reads a SYSROFF object file and prints it in an
+ almost human readable form to stdout. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "safe-ctype.h"
+#include "libiberty.h"
+#include "getopt.h"
+#include "bucomm.h"
+#include "sysroff.h"
+
+static int dump = 1;
+static int segmented_p;
+static int code;
+static int addrsize = 4;
+static FILE *file;
+
+static void dh (unsigned char *, int);
+static void itheader (char *, int);
+static void p (void);
+static void tabout (void);
+static void pbarray (barray *);
+static int getone (int);
+static int opt (int);
+static void must (int);
+static void tab (int, char *);
+static void dump_symbol_info (void);
+static void derived_type (void);
+static void module (void);
+static void show_usage (FILE *, int);
+
+extern int main (int, char **);
+
+static char *
+getCHARS (unsigned char *ptr, int *idx, int size, int max)
+{
+ int oc = *idx / 8;
+ char *r;
+ int b = size;
+
+ if (b >= max)
+ return _("*undefined*");
+
+ if (b == 0)
+ {
+ /* Got to work out the length of the string from self. */
+ b = ptr[oc++];
+ (*idx) += 8;
+ }
+
+ *idx += b * 8;
+ r = xcalloc (b + 1, 1);
+ memcpy (r, ptr + oc, b);
+ r[b] = 0;
+
+ return r;
+}
+
+static void
+dh (unsigned char *ptr, int size)
+{
+ int i;
+ int j;
+ int span = 16;
+
+ printf ("\n************************************************************\n");
+
+ for (i = 0; i < size; i += span)
+ {
+ for (j = 0; j < span; j++)
+ {
+ if (j + i < size)
+ printf ("%02x ", ptr[i + j]);
+ else
+ printf (" ");
+ }
+
+ for (j = 0; j < span && j + i < size; j++)
+ {
+ int c = ptr[i + j];
+
+ if (c < 32 || c > 127)
+ c = '.';
+ printf ("%c", c);
+ }
+
+ printf ("\n");
+ }
+}
+
+static int
+fillup (unsigned char *ptr)
+{
+ int size;
+ int sum;
+ int i;
+
+ size = getc (file);
+ if (size == EOF
+ || size <= 2)
+ return 0;
+
+ size -= 2;
+ if (fread (ptr, size, 1, file) != 1)
+ return 0;
+
+ sum = code + size + 2;
+
+ for (i = 0; i < size; i++)
+ sum += ptr[i];
+
+ if ((sum & 0xff) != 0xff)
+ printf (_("SUM IS %x\n"), sum);
+
+ if (dump)
+ dh (ptr, size);
+
+ return size;
+}
+
+static barray
+getBARRAY (unsigned char *ptr, int *idx, int dsize ATTRIBUTE_UNUSED,
+ int max ATTRIBUTE_UNUSED)
+{
+ barray res;
+ int i;
+ int byte = *idx / 8;
+ int size = ptr[byte++];
+
+ res.len = size;
+ res.data = (unsigned char *) xmalloc (size);
+
+ for (i = 0; i < size; i++)
+ res.data[i] = ptr[byte++];
+
+ return res;
+}
+
+static int
+getINT (unsigned char *ptr, int *idx, int size, int max)
+{
+ int n = 0;
+ int byte = *idx / 8;
+
+ if (byte >= max)
+ return 0;
+
+ if (size == -2)
+ size = addrsize;
+
+ if (size == -1)
+ size = 0;
+
+ switch (size)
+ {
+ case 0:
+ return 0;
+ case 1:
+ n = (ptr[byte]);
+ break;
+ case 2:
+ n = (ptr[byte + 0] << 8) + ptr[byte + 1];
+ break;
+ case 4:
+ n = (ptr[byte + 0] << 24) + (ptr[byte + 1] << 16) + (ptr[byte + 2] << 8) + (ptr[byte + 3]);
+ break;
+ default:
+ abort ();
+ }
+
+ *idx += size * 8;
+ return n;
+}
+
+static int
+getBITS (unsigned char *ptr, int *idx, int size, int max)
+{
+ int byte = *idx / 8;
+ int bit = *idx % 8;
+
+ if (byte >= max)
+ return 0;
+
+ *idx += size;
+
+ return (ptr[byte] >> (8 - bit - size)) & ((1 << size) - 1);
+}
+
+static void
+itheader (char *name, int icode)
+{
+ printf ("\n%s 0x%02x\n", name, icode);
+}
+
+static int indent;
+
+static void
+p (void)
+{
+ int i;
+
+ for (i = 0; i < indent; i++)
+ printf ("| ");
+
+ printf ("> ");
+}
+
+static void
+tabout (void)
+{
+ p ();
+}
+
+static void
+pbarray (barray *y)
+{
+ int x;
+
+ printf ("%d (", y->len);
+
+ for (x = 0; x < y->len; x++)
+ printf ("(%02x %c)", y->data[x],
+ ISPRINT (y->data[x]) ? y->data[x] : '.');
+
+ printf (")\n");
+}
+
+#define SYSROFF_PRINT
+#define SYSROFF_SWAP_IN
+
+#include "sysroff.c"
+
+/* FIXME: sysinfo, which generates sysroff.[ch] from sysroff.info, can't
+ hack the special case of the tr block, which has no contents. So we
+ implement our own functions for reading in and printing out the tr
+ block. */
+
+#define IT_tr_CODE 0x7f
+
+static void
+sysroff_swap_tr_in (void)
+{
+ unsigned char raw[255];
+
+ memset (raw, 0, 255);
+ fillup (raw);
+}
+
+static void
+sysroff_print_tr_out (void)
+{
+ itheader ("tr", IT_tr_CODE);
+}
+
+static int
+getone (int type)
+{
+ int c = getc (file);
+
+ code = c;
+
+ if ((c & 0x7f) != type)
+ {
+ ungetc (c, file);
+ return 0;
+ }
+
+ switch (c & 0x7f)
+ {
+ case IT_cs_CODE:
+ {
+ struct IT_cs dummy;
+ sysroff_swap_cs_in (&dummy);
+ sysroff_print_cs_out (&dummy);
+ }
+ break;
+
+ case IT_dln_CODE:
+ {
+ struct IT_dln dummy;
+ sysroff_swap_dln_in (&dummy);
+ sysroff_print_dln_out (&dummy);
+ }
+ break;
+
+ case IT_hd_CODE:
+ {
+ struct IT_hd dummy;
+ sysroff_swap_hd_in (&dummy);
+ addrsize = dummy.afl;
+ sysroff_print_hd_out (&dummy);
+ }
+ break;
+
+ case IT_dar_CODE:
+ {
+ struct IT_dar dummy;
+ sysroff_swap_dar_in (&dummy);
+ sysroff_print_dar_out (&dummy);
+ }
+ break;
+
+ case IT_dsy_CODE:
+ {
+ struct IT_dsy dummy;
+ sysroff_swap_dsy_in (&dummy);
+ sysroff_print_dsy_out (&dummy);
+ }
+ break;
+
+ case IT_dfp_CODE:
+ {
+ struct IT_dfp dummy;
+ sysroff_swap_dfp_in (&dummy);
+ sysroff_print_dfp_out (&dummy);
+ }
+ break;
+
+ case IT_dso_CODE:
+ {
+ struct IT_dso dummy;
+ sysroff_swap_dso_in (&dummy);
+ sysroff_print_dso_out (&dummy);
+ }
+ break;
+
+ case IT_dpt_CODE:
+ {
+ struct IT_dpt dummy;
+ sysroff_swap_dpt_in (&dummy);
+ sysroff_print_dpt_out (&dummy);
+ }
+ break;
+
+ case IT_den_CODE:
+ {
+ struct IT_den dummy;
+ sysroff_swap_den_in (&dummy);
+ sysroff_print_den_out (&dummy);
+ }
+ break;
+
+ case IT_dbt_CODE:
+ {
+ struct IT_dbt dummy;
+ sysroff_swap_dbt_in (&dummy);
+ sysroff_print_dbt_out (&dummy);
+ }
+ break;
+
+ case IT_dty_CODE:
+ {
+ struct IT_dty dummy;
+ sysroff_swap_dty_in (&dummy);
+ sysroff_print_dty_out (&dummy);
+ }
+ break;
+
+ case IT_un_CODE:
+ {
+ struct IT_un dummy;
+ sysroff_swap_un_in (&dummy);
+ sysroff_print_un_out (&dummy);
+ }
+ break;
+
+ case IT_sc_CODE:
+ {
+ struct IT_sc dummy;
+ sysroff_swap_sc_in (&dummy);
+ sysroff_print_sc_out (&dummy);
+ }
+ break;
+
+ case IT_er_CODE:
+ {
+ struct IT_er dummy;
+ sysroff_swap_er_in (&dummy);
+ sysroff_print_er_out (&dummy);
+ }
+ break;
+
+ case IT_ed_CODE:
+ {
+ struct IT_ed dummy;
+ sysroff_swap_ed_in (&dummy);
+ sysroff_print_ed_out (&dummy);
+ }
+ break;
+
+ case IT_sh_CODE:
+ {
+ struct IT_sh dummy;
+ sysroff_swap_sh_in (&dummy);
+ sysroff_print_sh_out (&dummy);
+ }
+ break;
+
+ case IT_ob_CODE:
+ {
+ struct IT_ob dummy;
+ sysroff_swap_ob_in (&dummy);
+ sysroff_print_ob_out (&dummy);
+ }
+ break;
+
+ case IT_rl_CODE:
+ {
+ struct IT_rl dummy;
+ sysroff_swap_rl_in (&dummy);
+ sysroff_print_rl_out (&dummy);
+ }
+ break;
+
+ case IT_du_CODE:
+ {
+ struct IT_du dummy;
+ sysroff_swap_du_in (&dummy);
+
+ sysroff_print_du_out (&dummy);
+ }
+ break;
+
+ case IT_dus_CODE:
+ {
+ struct IT_dus dummy;
+ sysroff_swap_dus_in (&dummy);
+ sysroff_print_dus_out (&dummy);
+ }
+ break;
+
+ case IT_dul_CODE:
+ {
+ struct IT_dul dummy;
+ sysroff_swap_dul_in (&dummy);
+ sysroff_print_dul_out (&dummy);
+ }
+ break;
+
+ case IT_dss_CODE:
+ {
+ struct IT_dss dummy;
+ sysroff_swap_dss_in (&dummy);
+ sysroff_print_dss_out (&dummy);
+ }
+ break;
+
+ case IT_hs_CODE:
+ {
+ struct IT_hs dummy;
+ sysroff_swap_hs_in (&dummy);
+ sysroff_print_hs_out (&dummy);
+ }
+ break;
+
+ case IT_dps_CODE:
+ {
+ struct IT_dps dummy;
+ sysroff_swap_dps_in (&dummy);
+ sysroff_print_dps_out (&dummy);
+ }
+ break;
+
+ case IT_tr_CODE:
+ sysroff_swap_tr_in ();
+ sysroff_print_tr_out ();
+ break;
+
+ case IT_dds_CODE:
+ {
+ struct IT_dds dummy;
+
+ sysroff_swap_dds_in (&dummy);
+ sysroff_print_dds_out (&dummy);
+ }
+ break;
+
+ default:
+ printf (_("GOT A %x\n"), c);
+ return 0;
+ break;
+ }
+
+ return 1;
+}
+
+static int
+opt (int x)
+{
+ return getone (x);
+}
+
+static void
+must (int x)
+{
+ if (!getone (x))
+ printf (_("WANTED %x!!\n"), x);
+}
+
+static void
+tab (int i, char *s)
+{
+ indent += i;
+
+ if (s)
+ {
+ p ();
+ puts (s);
+ }
+}
+
+static void
+dump_symbol_info (void)
+{
+ tab (1, _("SYMBOL INFO"));
+
+ while (opt (IT_dsy_CODE))
+ {
+ if (opt (IT_dty_CODE))
+ {
+ must (IT_dbt_CODE);
+ derived_type ();
+ must (IT_dty_CODE);
+ }
+ }
+
+ tab (-1, "");
+}
+
+static void
+derived_type (void)
+{
+ tab (1, _("DERIVED TYPE"));
+
+ while (1)
+ {
+ if (opt (IT_dpp_CODE))
+ {
+ dump_symbol_info ();
+ must (IT_dpp_CODE);
+ }
+ else if (opt (IT_dfp_CODE))
+ {
+ dump_symbol_info ();
+ must (IT_dfp_CODE);
+ }
+ else if (opt (IT_den_CODE))
+ {
+ dump_symbol_info ();
+ must (IT_den_CODE);
+ }
+ else if (opt (IT_den_CODE))
+ {
+ dump_symbol_info ();
+ must (IT_den_CODE);
+ }
+ else if (opt (IT_dds_CODE))
+ {
+ dump_symbol_info ();
+ must (IT_dds_CODE);
+ }
+ else if (opt (IT_dar_CODE))
+ {
+ }
+ else if (opt (IT_dpt_CODE))
+ {
+ }
+ else if (opt (IT_dul_CODE))
+ {
+ }
+ else if (opt (IT_dse_CODE))
+ {
+ }
+ else if (opt (IT_dot_CODE))
+ {
+ }
+ else
+ break;
+ }
+
+ tab (-1, "");
+}
+
+static void
+module (void)
+{
+ int c = 0;
+ int l = 0;
+
+ tab (1, _("MODULE***\n"));
+
+ do
+ {
+ c = getc (file);
+ ungetc (c, file);
+
+ c &= 0x7f;
+ }
+ while (getone (c) && c != IT_tr_CODE);
+
+ tab (-1, "");
+
+ c = getc (file);
+ while (c != EOF)
+ {
+ printf ("%02x ", c);
+ l++;
+ if (l == 32)
+ {
+ printf ("\n");
+ l = 0;
+ }
+ c = getc (file);
+ }
+}
+
+char *program_name;
+
+static void
+show_usage (FILE *ffile, int status)
+{
+ fprintf (ffile, _("Usage: %s [option(s)] in-file\n"), program_name);
+ fprintf (ffile, _("Print a human readable interpretation of a SYSROFF object file\n"));
+ fprintf (ffile, _(" The options are:\n\
+ -h --help Display this information\n\
+ -v --version Print the program's version number\n"));
+
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (ffile, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+ exit (status);
+}
+
+int
+main (int ac, char **av)
+{
+ char *input_file = NULL;
+ int option;
+ static struct option long_options[] =
+ {
+ {"help", no_argument, 0, 'h'},
+ {"version", no_argument, 0, 'V'},
+ {NULL, no_argument, 0, 0}
+ };
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = av[0];
+ xmalloc_set_program_name (program_name);
+
+ expandargv (&ac, &av);
+
+ while ((option = getopt_long (ac, av, "HhVv", long_options, (int *) NULL)) != EOF)
+ {
+ switch (option)
+ {
+ case 'H':
+ case 'h':
+ show_usage (stdout, 0);
+ /*NOTREACHED*/
+ case 'v':
+ case 'V':
+ print_version ("sysdump");
+ exit (0);
+ /*NOTREACHED*/
+ case 0:
+ break;
+ default:
+ show_usage (stderr, 1);
+ /*NOTREACHED*/
+ }
+ }
+
+ /* The input and output files may be named on the command line. */
+
+ if (optind < ac)
+ input_file = av[optind];
+
+ if (!input_file)
+ fatal (_("no input file specified"));
+
+ file = fopen (input_file, FOPEN_RB);
+
+ if (!file)
+ fatal (_("cannot open input file %s"), input_file);
+
+ module ();
+ return 0;
+}
diff --git a/binutils-2.24/binutils/sysinfo.c b/binutils-2.24/binutils/sysinfo.c
new file mode 100644
index 00000000..36379741
--- /dev/null
+++ b/binutils-2.24/binutils/sysinfo.c
@@ -0,0 +1,1962 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton 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.3"
+
+/* 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 21 "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
+typedef union YYSTYPE
+#line 40 "sysinfo.y"
+{
+ int i;
+ char *s;
+}
+/* Line 193 of yacc.c. */
+#line 135 "sysinfo.c"
+ YYSTYPE;
+# 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 216 of yacc.c. */
+#line 148 "sysinfo.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && 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
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+ int i;
+#endif
+{
+ return i;
+}
+#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
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (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 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# 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
+{
+ yytype_int16 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 (yytype_int16) + 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 (YYID (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 (YYID (0))
+
+#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 yytype_uint8 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 yytype_uint8 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 yytype_int8 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 yytype_uint16 yyrline[] =
+{
+ 0, 54, 54, 54, 92, 93, 98, 97, 169, 170,
+ 171, 172, 176, 175, 223, 222, 250, 249, 357, 358,
+ 362, 367, 373, 374, 377, 378, 380, 382
+};
+#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 yytype_uint16 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 yytype_uint8 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 yytype_uint8 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 yytype_uint8 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 yytype_int8 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 yytype_int8 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 yytype_int8 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 yytype_uint8 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 yytype_int8 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 yytype_uint8 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 (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (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 (YYID (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 (YYID (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 defined YYLTYPE_IS_TRIVIAL && 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 (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ yytype_int16 *bottom;
+ yytype_int16 *top;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; 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 (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+ YYSTYPE *yyvsp;
+ int yyrule;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
+ fprintf (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule); \
+} while (YYID (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. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# 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. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+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 == '"')
+ {
+ YYSIZE_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
+
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
+ else
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { 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 + 1;
+ 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)
+ return YYSIZE_MAXIMUM;
+
+ if (yyresult)
+ {
+ /* 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 = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+#endif /* YYERROR_VERBOSE */
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+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
+{
+ YYUSE (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 __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+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;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+ /* 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. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ 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;
+ yytype_int16 *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;
+
+ {
+ yytype_int16 *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. */
+
+ /* 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;
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ 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 54 "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 76 "sysinfo.y"
+ {
+ switch (writecode) {
+ case 'i':
+ case 'p':
+ case 'g':
+ case 'c':
+ printf("#endif\n");
+ break;
+ case 'd':
+ break;
+ }
+}
+ break;
+
+ case 6:
+#line 98 "sysinfo.y"
+ {
+ it = (yyvsp[(2) - (3)].s); code = (yyvsp[(3) - (3)].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 (struct IT_%s *);\n",
+ (yyvsp[(2) - (3)].s), it);
+ printf("extern void sysroff_swap_%s_out (FILE *, struct IT_%s *);\n",
+ (yyvsp[(2) - (3)].s), it);
+ printf("extern void sysroff_print_%s_out (struct IT_%s *);\n",
+ (yyvsp[(2) - (3)].s), it);
+ printf("struct IT_%s { \n", it);
+ break;
+ case 'i':
+ printf("void sysroff_swap_%s_in (struct IT_%s * ptr)\n",(yyvsp[(2) - (3)].s),it);
+ printf("{\n");
+ printf("\tunsigned char raw[255];\n");
+ printf("\tint idx = 0;\n");
+ printf("\tint size;\n");
+ printf("\tmemset(raw,0,255);\n");
+ printf("\tmemset(ptr,0,sizeof(*ptr));\n");
+ printf("\tsize = fillup(raw);\n");
+ break;
+ case 'g':
+ printf("void sysroff_swap_%s_out (FILE * ffile, struct IT_%s * ptr)\n",(yyvsp[(2) - (3)].s),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 (bfd * abfd, struct IT_%s * ptr)\n",(yyvsp[(2) - (3)].s), it);
+ printf("{\n");
+ printf("\tint idx = 0;\n");
+ break;
+ case 'c':
+ printf("void sysroff_print_%s_out (struct IT_%s *ptr)\n",(yyvsp[(2) - (3)].s),it);
+ printf("{\n");
+ printf("itheader(\"%s\", IT_%s_CODE);\n",(yyvsp[(2) - (3)].s),(yyvsp[(2) - (3)].s));
+ break;
+
+ case 't':
+ break;
+ }
+
+ }
+ break;
+
+ case 7:
+#line 149 "sysinfo.y"
+ {
+ switch (writecode) {
+ case 'd':
+ printf("};\n");
+ break;
+ case 'g':
+ printf("\tchecksum(ffile,raw, idx, IT_%s_CODE);\n", it);
+
+ case 'i':
+
+ case 'o':
+ case 'c':
+ printf("}\n");
+ }
+}
+ break;
+
+ case 12:
+#line 176 "sysinfo.y"
+ {
+ rdepth++;
+ switch (writecode)
+ {
+ case 'c':
+ if (rdepth==1)
+ printf("\tprintf(\"repeat %%d\\n\", %s);\n",(yyvsp[(3) - (3)].s));
+ if (rdepth==2)
+ printf("\tprintf(\"repeat %%d\\n\", %s[n]);\n",(yyvsp[(3) - (3)].s));
+ case 'i':
+ case 'g':
+ case 'o':
+
+ if (rdepth==1)
+ {
+ printf("\t{ int n; for (n = 0; n < %s; n++) {\n", (yyvsp[(3) - (3)].s));
+ }
+ if (rdepth == 2) {
+ printf("\t{ int m; for (m = 0; m < %s[n]; m++) {\n", (yyvsp[(3) - (3)].s));
+ }
+
+ break;
+ }
+
+ oldrepeat = repeat;
+ repeat = (yyvsp[(3) - (3)].s);
+ }
+ break;
+
+ case 13:
+#line 206 "sysinfo.y"
+ {
+ repeat = oldrepeat;
+ oldrepeat =0;
+ rdepth--;
+ switch (writecode)
+ {
+ case 'i':
+ case 'g':
+ case 'o':
+ case 'c':
+ printf("\t}}\n");
+ }
+ }
+ break;
+
+ case 14:
+#line 223 "sysinfo.y"
+ {
+ switch (writecode)
+ {
+ case 'i':
+ case 'g':
+ case 'o':
+ case 'c':
+ printf("\tif (%s) {\n", (yyvsp[(3) - (3)].s));
+ break;
+ }
+ }
+ break;
+
+ case 15:
+#line 236 "sysinfo.y"
+ {
+ switch (writecode)
+ {
+ case 'i':
+ case 'g':
+ case 'o':
+ case 'c':
+ printf("\t}\n");
+ }
+ }
+ break;
+
+ case 16:
+#line 250 "sysinfo.y"
+ {name = (yyvsp[(7) - (7)].s); }
+ break;
+
+ case 17:
+#line 252 "sysinfo.y"
+ {
+ char *desc = (yyvsp[(2) - (10)].s);
+ char *type = (yyvsp[(4) - (10)].s);
+ int size = (yyvsp[(5) - (10)].i);
+ char *id = (yyvsp[(7) - (10)].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,ffile);\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 357 "sysinfo.y"
+ { (yyval.s) = (yyvsp[(1) - (1)].s); }
+ break;
+
+ case 19:
+#line 358 "sysinfo.y"
+ { (yyval.s) = "INT";}
+ break;
+
+ case 20:
+#line 363 "sysinfo.y"
+ { (yyval.s) = (yyvsp[(2) - (3)].s); }
+ break;
+
+ case 21:
+#line 368 "sysinfo.y"
+ { (yyval.i) = (yyvsp[(1) - (2)].i) * (yyvsp[(2) - (2)].i); }
+ break;
+
+ case 22:
+#line 373 "sysinfo.y"
+ { (yyval.s) = (yyvsp[(2) - (3)].s); }
+ break;
+
+ case 23:
+#line 374 "sysinfo.y"
+ { (yyval.s) = "dummy";}
+ break;
+
+ case 27:
+#line 382 "sysinfo.y"
+ {
+ switch (writecode)
+ {
+ case 'd':
+ printf("#define %s %s\n", (yyvsp[(3) - (5)].s),(yyvsp[(4) - (5)].s));
+ break;
+ case 'c':
+ printf("if (ptr->%s%s == %s) { tabout(); printf(\"%s\\n\");}\n", name, names[rdepth],(yyvsp[(4) - (5)].s),(yyvsp[(3) - (5)].s));
+ }
+ }
+ break;
+
+
+/* Line 1267 of yacc.c. */
+#line 1715 "sysinfo.c"
+ default: break;
+ }
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ 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
+ yyerror (YY_("syntax error"));
+#else
+ {
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+#endif
+ }
+
+
+
+ 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 (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ 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 (1);
+ 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);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+
+#line 397 "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;
+}
+
diff --git a/binutils-2.24/binutils/sysinfo.h b/binutils-2.24/binutils/sysinfo.h
new file mode 100644
index 00000000..7515e22b
--- /dev/null
+++ b/binutils-2.24/binutils/sysinfo.h
@@ -0,0 +1,77 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ 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, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 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
+typedef union YYSTYPE
+#line 40 "sysinfo.y"
+{
+ int i;
+ char *s;
+}
+/* Line 1529 of yacc.c. */
+#line 70 "sysinfo.h"
+ YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+extern YYSTYPE yylval;
+
diff --git a/binutils-2.24/binutils/sysinfo.y b/binutils-2.24/binutils/sysinfo.y
new file mode 100644
index 00000000..bab635ed
--- /dev/null
+++ b/binutils-2.24/binutils/sysinfo.y
@@ -0,0 +1,429 @@
+/* Copyright 2001, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
+ Written by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
+
+ 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 3 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 <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);
+%}
+
+
+%union {
+ int i;
+ char *s;
+}
+%token COND
+%token REPEAT
+%token '(' ')'
+%token <s> TYPE
+%token <s> NAME
+%token <i> NUMBER UNIT
+%type <i> attr_size
+%type <s> attr_desc attr_id attr_type
+%%
+
+top: {
+ 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;
+ }
+ }
+it_list {
+ switch (writecode) {
+ case 'i':
+ case 'p':
+ case 'g':
+ case 'c':
+ printf("#endif\n");
+ break;
+ case 'd':
+ break;
+ }
+}
+
+ ;
+
+
+it_list: it it_list
+ |
+ ;
+
+it:
+ '(' NAME NUMBER
+ {
+ it = $2; code = $3;
+ 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 (struct IT_%s *);\n",
+ $2, it);
+ printf("extern void sysroff_swap_%s_out (FILE *, struct IT_%s *);\n",
+ $2, it);
+ printf("extern void sysroff_print_%s_out (struct IT_%s *);\n",
+ $2, it);
+ printf("struct IT_%s { \n", it);
+ break;
+ case 'i':
+ printf("void sysroff_swap_%s_in (struct IT_%s * ptr)\n",$2,it);
+ printf("{\n");
+ printf("\tunsigned char raw[255];\n");
+ printf("\tint idx = 0;\n");
+ printf("\tint size;\n");
+ printf("\tmemset(raw,0,255);\n");
+ printf("\tmemset(ptr,0,sizeof(*ptr));\n");
+ printf("\tsize = fillup(raw);\n");
+ break;
+ case 'g':
+ printf("void sysroff_swap_%s_out (FILE * ffile, struct IT_%s * ptr)\n",$2,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 (bfd * abfd, struct IT_%s * ptr)\n",$2, it);
+ printf("{\n");
+ printf("\tint idx = 0;\n");
+ break;
+ case 'c':
+ printf("void sysroff_print_%s_out (struct IT_%s *ptr)\n",$2,it);
+ printf("{\n");
+ printf("itheader(\"%s\", IT_%s_CODE);\n",$2,$2);
+ break;
+
+ case 't':
+ break;
+ }
+
+ }
+ it_field_list
+')'
+{
+ switch (writecode) {
+ case 'd':
+ printf("};\n");
+ break;
+ case 'g':
+ printf("\tchecksum(ffile,raw, idx, IT_%s_CODE);\n", it);
+
+ case 'i':
+
+ case 'o':
+ case 'c':
+ printf("}\n");
+ }
+}
+;
+
+
+
+it_field_list:
+ it_field it_field_list
+ | cond_it_field it_field_list
+ | repeat_it_field it_field_list
+ |
+ ;
+
+repeat_it_field: '(' REPEAT NAME
+ {
+ rdepth++;
+ switch (writecode)
+ {
+ case 'c':
+ if (rdepth==1)
+ printf("\tprintf(\"repeat %%d\\n\", %s);\n",$3);
+ if (rdepth==2)
+ printf("\tprintf(\"repeat %%d\\n\", %s[n]);\n",$3);
+ case 'i':
+ case 'g':
+ case 'o':
+
+ if (rdepth==1)
+ {
+ printf("\t{ int n; for (n = 0; n < %s; n++) {\n", $3);
+ }
+ if (rdepth == 2) {
+ printf("\t{ int m; for (m = 0; m < %s[n]; m++) {\n", $3);
+ }
+
+ break;
+ }
+
+ oldrepeat = repeat;
+ repeat = $3;
+ }
+
+ it_field_list ')'
+
+ {
+ repeat = oldrepeat;
+ oldrepeat =0;
+ rdepth--;
+ switch (writecode)
+ {
+ case 'i':
+ case 'g':
+ case 'o':
+ case 'c':
+ printf("\t}}\n");
+ }
+ }
+ ;
+
+
+cond_it_field: '(' COND NAME
+ {
+ switch (writecode)
+ {
+ case 'i':
+ case 'g':
+ case 'o':
+ case 'c':
+ printf("\tif (%s) {\n", $3);
+ break;
+ }
+ }
+
+ it_field_list ')'
+ {
+ switch (writecode)
+ {
+ case 'i':
+ case 'g':
+ case 'o':
+ case 'c':
+ printf("\t}\n");
+ }
+ }
+ ;
+
+it_field:
+ '(' attr_desc '(' attr_type attr_size ')' attr_id
+ {name = $7; }
+ enums ')'
+ {
+ char *desc = $2;
+ char *type = $4;
+ int size = $5;
+ char *id = $7;
+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,ffile);\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;
+ }
+ }
+
+ ;
+
+
+attr_type:
+ TYPE { $$ = $1; }
+ | { $$ = "INT";}
+ ;
+
+attr_desc:
+ '(' NAME ')'
+ { $$ = $2; }
+ ;
+
+attr_size:
+ NUMBER UNIT
+ { $$ = $1 * $2; }
+ ;
+
+
+attr_id:
+ '(' NAME ')' { $$ = $2; }
+ | { $$ = "dummy";}
+ ;
+
+enums:
+ | '(' enum_list ')' ;
+
+enum_list:
+ |
+ enum_list '(' NAME NAME ')' {
+ switch (writecode)
+ {
+ case 'd':
+ printf("#define %s %s\n", $3,$4);
+ break;
+ case 'c':
+ printf("if (ptr->%s%s == %s) { tabout(); printf(\"%s\\n\");}\n", name, names[rdepth],$4,$3);
+ }
+ }
+
+ ;
+
+
+
+%%
+/* 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;
+}
diff --git a/binutils-2.24/binutils/syslex.c b/binutils-2.24/binutils/syslex.c
new file mode 100644
index 00000000..4ebb8830
--- /dev/null
+++ b/binutils-2.24/binutils/syslex.c
@@ -0,0 +1,1906 @@
+
+#line 3 "syslex.c"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+typedef uint64_t flex_uint64_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#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. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t yyleng;
+
+extern FILE *yyin, *yyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up yytext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = (yy_hold_char); \
+ YY_RESTORE_YY_MORE_OFFSET \
+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up yytext again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr) )
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+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.
+ */
+ yy_size_t 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;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* 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
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* 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".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when yytext is formed. */
+static char yy_hold_char;
+static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
+yy_size_t yyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0; /* 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 (FILE *input_file );
+void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
+void yy_delete_buffer (YY_BUFFER_STATE b );
+void yy_flush_buffer (YY_BUFFER_STATE b );
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
+void yypop_buffer_state (void );
+
+static void yyensure_buffer_stack (void );
+static void yy_load_buffer_state (void );
+static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
+
+#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len );
+
+void *yyalloc (yy_size_t );
+void *yyrealloc (void *,yy_size_t );
+void yyfree (void * );
+
+#define yy_new_buffer yy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ yyensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer(yyin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ yyensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ yy_create_buffer(yyin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+
+FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int yylineno;
+
+int yylineno = 1;
+
+extern char *yytext;
+#define yytext_ptr yytext
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (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 = (yy_size_t) (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
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int16_t 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 flex_int32_t 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 flex_int32_t 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 flex_int16_t 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 flex_int16_t 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 flex_int16_t 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 flex_int16_t 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;
+
+extern int yy_flex_debug;
+int yy_flex_debug = 0;
+
+/* 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 YY_NO_INPUT 1
+#line 4 "syslex.l"
+/* Copyright 2001, 2003, 2005, 2007, 2011, 2012 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GLD; see the file COPYING. If not, write to the Free
+ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+/* Note: config.h is #included via syslex_wrap.c. */
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+
+#include "sysinfo.h"
+
+#ifndef YY_NO_UNPUT
+#define YY_NO_UNPUT
+#endif
+
+#ifndef yywrap
+static int yywrap (void) { return 1; }
+#endif
+
+extern int yylex (void);
+#line 544 "syslex.c"
+
+#define INITIAL 0
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy (void );
+
+int yyget_debug (void );
+
+void yyset_debug (int debug_flag );
+
+YY_EXTRA_TYPE yyget_extra (void );
+
+void yyset_extra (YY_EXTRA_TYPE user_defined );
+
+FILE *yyget_in (void );
+
+void yyset_in (FILE * in_str );
+
+FILE *yyget_out (void );
+
+void yyset_out (FILE * out_str );
+
+yy_size_t yyget_leng (void );
+
+char *yyget_text (void );
+
+int yyget_lineno (void );
+
+void yyset_lineno (int line_number );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap (void );
+#else
+extern int yywrap (void );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#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 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_LVALUE->yy_is_interactive ) \
+ { \
+ int c = '*'; \
+ yy_size_t 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
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex (void);
+
+#define YY_DECL int yylex (void)
+#endif /* !YY_DECL */
+
+/* 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
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+#line 45 "syslex.l"
+
+#line 726 "syslex.c"
+
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#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 ) {
+ yyensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ 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 46 "syslex.l"
+{ return '(';}
+ YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 47 "syslex.l"
+{ return ')';}
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 48 "syslex.l"
+{ return '[';}
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 49 "syslex.l"
+{ return ']';}
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 50 "syslex.l"
+{ ; }
+ YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 51 "syslex.l"
+{ ; }
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 52 "syslex.l"
+{ ; }
+ YY_BREAK
+case 8:
+/* rule 8 can match eol */
+YY_RULE_SETUP
+#line 53 "syslex.l"
+{ ; }
+ YY_BREAK
+case 9:
+/* rule 9 can match eol */
+YY_RULE_SETUP
+#line 54 "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 61 "syslex.l"
+{
+ yylval.i = strtol(yytext,0,16);
+ return NUMBER;
+ }
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 66 "syslex.l"
+{
+ yylval.i = atoi(yytext);
+ return NUMBER;
+ }
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 72 "syslex.l"
+{ yylval.i =1 ;return UNIT;}
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 73 "syslex.l"
+{ yylval.i = 1; return UNIT;}
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 74 "syslex.l"
+{ yylval.i= 8; return UNIT;}
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 75 "syslex.l"
+{ yylval.i = 8; return UNIT;}
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 77 "syslex.l"
+{ yylval.s = "INT"; return TYPE;}
+ YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 78 "syslex.l"
+{ yylval.s = "BARRAY"; return TYPE;}
+ YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 79 "syslex.l"
+{ yylval.s = "CHARS"; return TYPE;}
+ YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 80 "syslex.l"
+{ yylval.i = 0; return NUMBER;}
+ YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 81 "syslex.l"
+{ yylval.i = -4; return NUMBER;}
+ YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 82 "syslex.l"
+{ yylval.i = -2; return NUMBER; }
+ YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 83 "syslex.l"
+{ yylval.i = -1; return NUMBER; }
+ YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 84 "syslex.l"
+{ return COND;}
+ YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 85 "syslex.l"
+{ return REPEAT;}
+ YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 86 "syslex.l"
+ECHO;
+ YY_BREAK
+#line 947 "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_LVALUE->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_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+ YY_CURRENT_BUFFER_LVALUE->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_LVALUE->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_LVALUE->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 (void)
+{
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->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_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->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_LVALUE->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_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+ else
+ {
+ yy_size_t num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* 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 )
+ {
+ yy_size_t 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. */
+ yyrealloc((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_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ (yy_n_chars), num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->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_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ (yy_n_chars) += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->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 (void)
+{
+ 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 );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
+{
+ 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_INPUT
+#ifdef __cplusplus
+ static int yyinput (void)
+#else
+ static int input (void)
+#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_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ /* This was really a NUL. */
+ *(yy_c_buf_p) = '\0';
+
+ else
+ { /* need more input */
+ yy_size_t 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 );
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( yywrap( ) )
+ return 0;
+
+ 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;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void yyrestart (FILE * input_file )
+{
+
+ if ( ! YY_CURRENT_BUFFER ){
+ yyensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ yy_create_buffer(yyin,YY_BUF_SIZE );
+ }
+
+ yy_init_buffer(YY_CURRENT_BUFFER,input_file );
+ yy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
+{
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * yypop_buffer_state();
+ * yypush_buffer_state(new_buffer);
+ */
+ yyensure_buffer_stack ();
+ 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_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = 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;
+}
+
+static void yy_load_buffer_state (void)
+{
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) yyalloc(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 *) yyalloc(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;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with yy_create_buffer()
+ *
+ */
+ void yy_delete_buffer (YY_BUFFER_STATE b )
+{
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ yyfree((void *) b->yy_ch_buf );
+
+ yyfree((void *) b );
+}
+
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a yyrestart() or at EOF.
+ */
+ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
+
+{
+ int oerrno = errno;
+
+ yy_flush_buffer(b );
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then yy_init_buffer was _probably_
+ * called from yyrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+ void yy_flush_buffer (YY_BUFFER_STATE b )
+{
+ 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( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ *
+ */
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+ if (new_buffer == NULL)
+ return;
+
+ yyensure_buffer_stack();
+
+ /* This block is copied from yy_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ (yy_buffer_stack_top)++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from yy_switch_to_buffer. */
+ yy_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ *
+ */
+void yypop_buffer_state (void)
+{
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ yy_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if ((yy_buffer_stack_top) > 0)
+ --(yy_buffer_stack_top);
+
+ if (YY_CURRENT_BUFFER) {
+ yy_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void yyensure_buffer_stack (void)
+{
+ yy_size_t num_to_alloc;
+
+ if (!(yy_buffer_stack)) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ (yy_buffer_stack_max) = num_to_alloc;
+ (yy_buffer_stack_top) = 0;
+ return;
+ }
+
+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
+ (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
+ ((yy_buffer_stack),
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+ (yy_buffer_stack_max) = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
+{
+ 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) yyalloc(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;
+}
+
+/** Setup the input buffer state to scan a string. The next call to yylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * yy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
+{
+
+ return yy_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n, i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) yyalloc(n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_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;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+ (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. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ yytext[yyleng] = (yy_hold_char); \
+ (yy_c_buf_p) = yytext + yyless_macro_arg; \
+ (yy_hold_char) = *(yy_c_buf_p); \
+ *(yy_c_buf_p) = '\0'; \
+ yyleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int yyget_lineno (void)
+{
+
+ return yylineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *yyget_in (void)
+{
+ return yyin;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *yyget_out (void)
+{
+ return yyout;
+}
+
+/** Get the length of the current token.
+ *
+ */
+yy_size_t yyget_leng (void)
+{
+ return yyleng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *yyget_text (void)
+{
+ return yytext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void yyset_lineno (int line_number )
+{
+
+ yylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see yy_switch_to_buffer
+ */
+void yyset_in (FILE * in_str )
+{
+ yyin = in_str ;
+}
+
+void yyset_out (FILE * out_str )
+{
+ yyout = out_str ;
+}
+
+int yyget_debug (void)
+{
+ return yy_flex_debug;
+}
+
+void yyset_debug (int bdebug )
+{
+ yy_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from yylex_destroy(), so don't allocate here.
+ */
+
+ (yy_buffer_stack) = 0;
+ (yy_buffer_stack_top) = 0;
+ (yy_buffer_stack_max) = 0;
+ (yy_c_buf_p) = (char *) 0;
+ (yy_init) = 0;
+ (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ yyin = stdin;
+ yyout = stdout;
+#else
+ yyin = (FILE *) 0;
+ yyout = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * yylex_init()
+ */
+ return 0;
+}
+
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy (void)
+{
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ yy_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ yypop_buffer_state();
+ }
+
+ /* Destroy the stack itself. */
+ yyfree((yy_buffer_stack) );
+ (yy_buffer_stack) = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * yylex() is called, initialization will occur. */
+ yy_init_globals( );
+
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *yyalloc (yy_size_t size )
+{
+ return (void *) malloc( size );
+}
+
+void *yyrealloc (void * ptr, yy_size_t size )
+{
+ /* 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 );
+}
+
+void yyfree (void * ptr )
+{
+ free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 86 "syslex.l"
diff --git a/binutils-2.24/binutils/syslex.l b/binutils-2.24/binutils/syslex.l
new file mode 100644
index 00000000..14aee731
--- /dev/null
+++ b/binutils-2.24/binutils/syslex.l
@@ -0,0 +1,85 @@
+%option noinput nounput
+
+%{
+/* Copyright 2001, 2003, 2005, 2007, 2011, 2012 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GLD; see the file COPYING. If not, write to the Free
+ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
+
+/* Note: config.h is #included via syslex_wrap.c. */
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+
+#include "sysinfo.h"
+
+#ifndef YY_NO_UNPUT
+#define YY_NO_UNPUT
+#endif
+
+#ifndef yywrap
+static int yywrap (void) { return 1; }
+#endif
+
+extern int yylex (void);
+%}
+%%
+"(" { return '(';}
+")" { return ')';}
+"[" { return '[';}
+"]" { return ']';}
+" " { ; }
+";".* { ; }
+"\t" { ; }
+"\n" { ; }
+"\""[^\"]*"\"" {
+ yylval.s = malloc (yyleng - 1);
+ memcpy (yylval.s, yytext + 1, yyleng - 2);
+ yylval.s[yyleng - 2] = '\0';
+ return NAME;
+ }
+
+0x[0-9a-f]+ {
+ yylval.i = strtol(yytext,0,16);
+ return NUMBER;
+ }
+
+[0-9]+ {
+ yylval.i = atoi(yytext);
+ return NUMBER;
+ }
+
+
+"bits" { yylval.i =1 ;return UNIT;}
+"bit" { yylval.i = 1; return UNIT;}
+"bytes" { yylval.i= 8; return UNIT;}
+"byte" { yylval.i = 8; return UNIT;}
+
+"int" { yylval.s = "INT"; return TYPE;}
+"barray" { yylval.s = "BARRAY"; return TYPE;}
+"chars" { yylval.s = "CHARS"; return TYPE;}
+"variable" { yylval.i = 0; return NUMBER;}
+"counted" { yylval.i = -4; return NUMBER;}
+"addrsize" { yylval.i = -2; return NUMBER; }
+"segsize" { yylval.i = -1; return NUMBER; }
+"cond" { return COND;}
+"repeat" { return REPEAT;}
diff --git a/binutils-2.24/binutils/syslex_wrap.c b/binutils-2.24/binutils/syslex_wrap.c
new file mode 100644
index 00000000..49c65f6d
--- /dev/null
+++ b/binutils-2.24/binutils/syslex_wrap.c
@@ -0,0 +1,25 @@
+/* Copyright 2012 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+/* Wrapper source to ensure that config.h is the first header file seen by
+ the compiler. */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "syslex.c"
diff --git a/binutils-2.24/binutils/sysroff.info b/binutils-2.24/binutils/sysroff.info
new file mode 100644
index 00000000..390fe420
--- /dev/null
+++ b/binutils-2.24/binutils/sysroff.info
@@ -0,0 +1,504 @@
+("cs" 0x0
+ (("size") (1 byte) ("size"))
+
+ (("hd") (1 byte) ("hd"))
+ (("hs") (1 byte) ("hs"))
+ (("un") (1 byte) ("un"))
+ (("us") (1 byte) ("us"))
+
+ (("sc") (1 byte) ("sc"))
+ (("ss") (1 byte) ("ss"))
+ (("er") (1 byte) ("er"))
+ (("ed") (1 byte) ("ed"))
+
+ (("sh") (1 byte) ("sh"))
+ (("ob") (1 byte) ("ob"))
+ (("rl") (1 byte) ("rl"))
+ (("du") (1 byte) ("du"))
+
+ (("dps") (1 byte) ("dps"))
+ (("dsy") (1 byte) ("dsy"))
+ (("dty") (1 byte) ("dty"))
+ (("dln") (1 byte) ("dln"))
+
+ (("dso") (1 byte) ("dso"))
+ (("dus") (1 byte) ("dus"))
+ (("dss") (1 byte) ("dss"))
+ (("dbt") (1 byte) ("dbt"))
+
+ (("dpp") (1 byte) ("dpp"))
+ (("dfp") (1 byte) ("dfp"))
+ (("den") (1 byte) ("den"))
+ (("dds") (1 byte) ("dds"))
+
+ (("dar") (1 byte) ("dar"))
+ (("dpt") (1 byte) ("dpt"))
+ (("dul") (1 byte) ("dul"))
+ (("dse") (1 byte) ("dse"))
+
+ (("dot") (1 byte) ("dot")))
+
+
+("hd" 0x04
+ (("module type") (4 bits) ("mt")
+ (("MTYPE_ABS_LM" "0")
+ ("MTYPE_REL_LM" "1")
+ ("MTYPE_OMS_OR_LMS" "2")
+ ("MTYPE_UNSPEC" "0xf")))
+ (("spare")(4 bits) ("spare1"))
+ (("creation date")( chars 12 bytes)( "cd"))
+ (("number of units") (2 bytes) ("nu"))
+ (("code") (1 byte) ("code"))
+ (("version") (chars 4 bytes) ("ver"))
+ (("address update") (1 byte) ("au"))
+ (("segment identifier") (1 bit) ("si"))
+ (("address field length") (4 bits) ("afl"))
+ (("spare")(3 bits) ("spare2"))
+ (("space size within segment") (1 byte) ("spcsz"))
+ (("segment size") (1 byte) ("segsz"))
+ (("segment shift") (1 byte) ("segsh"))
+ (("entry point") (1 byte) ("ep"))
+ (cond "ptr->ep"
+ (cond "ptr->mt != MTYPE_ABS_LM"
+ (("unit appearance number") (2 bytes) ("uan"))
+ (("section appearance number") (2 bytes) ("sa")))
+ (cond "segmented_p"
+ (("segment address") (segsize bytes) ("sad")))
+ (("address") (addrsize bytes) ("address")))
+ (("os name") (chars variable bytes) ("os"))
+ (("sys name") (chars variable bytes) ("sys"))
+ (("module name") (chars variable bytes) ("mn"))
+ (("cpu") (chars variable bytes) ("cpu")))
+
+
+("hs" 0x05
+ (("neg number") (2 bytes) ("neg")))
+
+
+("un" 0x06
+ (("format") (2 bits) ("format")
+ (("FORMAT_LM" "0")
+ ("FORMAT_OM" "1")
+ ("FORMAT_OMS_OR_LMS" "2")))
+ (("spare") (6 bits) ("spare1"))
+ (("number of sections") (2 bytes) ("nsections"))
+ (("number of external refs") (2 bytes) ("nextrefs"))
+ (("number of external defs") (2 bytes) ("nextdefs"))
+ (("unit name") (chars variable byte) ("name"))
+ (("tool name") (chars variable byte) ("tool"))
+ (("creation date") (chars 12 bytes) ("tcd"))
+ (("linker name") (chars variable byte) ("linker"))
+ (("creation date") (chars 12 bytes) ("lcd")))
+
+
+("us" 0x07
+ (("negotiation number") (2 bytes) ("neg")))
+
+
+("sc" 0x08
+ (("format") (2 bits) ("format"))
+ (("spare") (6 bits) ("spare"))
+ (("segment address") (segsize bytes) ("segadd"))
+ (("address") (addrsize bytes) ("addr"))
+ (("length") (addrsize bytes) ("length"))
+ (("alignment") (addrsize bytes) ("align"))
+ (("contents") (4 bits) ("contents")
+ (("CONTENTS_CODE" "0")
+ ("CONTENTS_DATA" "1")
+ ("CONTENTS_STACK" "2")
+ ("CONTENTS_DUMMY" "3")
+ ("CONTENTS_SPECIAL" "4")
+ ("CONTENTS_NONSPEC" "0xf")))
+ (("concat") (4 bits) ("concat")
+ (("CONCAT_SIMPLE" "0")
+ ("CONCAT_SHAREDC" "1")
+ ("CONCAT_DUMMY" "2")
+ ("CONCAT_GROUP" "3")
+ ("CONCAT_SHARED" "4")
+ ("CONCAT_PRIVATE" "5")
+ ("CONCAT_UNSPEC" "0xf")))
+ (("read") (2 bits) ("read"))
+ (("write") (2 bits) ("write"))
+ (("exec") (2 bits) ("exec"))
+ (("initialized") (2 bits) ("init"))
+ (("mode") (2 bits) ("mode"))
+ (("spare") (6 bits) ("spare1"))
+ (("name") (chars variable byte) ("name")))
+
+
+("ss" 0x09
+ (("neg number") (2 bytes) ("neg")))
+
+
+("er" 0x0c
+ (("symbol type") (2 bits) ("type")
+ (("ER_ENTRY" "0")
+ ("ER_DATA" "1")
+ ("ER_NOTDEF" "2")
+ ("ER_NOTSPEC" "3")))
+ (("spare") (6 bits) ("spare"))
+ (("symbol name") (chars variable byte) ("name")))
+
+
+("ed" 0x14
+ (("section appearance number") (2 bytes) ("section"))
+ (("symbol type") (3 bits) ("type")
+ (("ED_TYPE_ENTRY" "0")
+ ("ED_TYPE_DATA" "1")
+ ("ED_TYPE_CONST" "2")
+ ("ED_TYPE_NOTSPEC" "7")))
+ (("spare") (5 bits) ("spare"))
+ (cond "ptr->type==ED_TYPE_ENTRY || ptr->type==ED_TYPE_DATA"
+ (("symbol address") (addrsize bytes) ("address")))
+ (cond "ptr->type==ED_TYPE_CONST"
+ (("constant value") (addrsize bytes) ("constant")))
+ (("symbol name") (chars variable byte) ("name")))
+
+
+("sh" 0x1a
+ (("unit appearance number") (2 bytes) ("unit"))
+ (("section appearance number") (2 bytes) ("section")))
+
+
+("ob" 0x1c
+ (("starting address flag") (1 bit) ("saf"))
+ (("compression flag") (1 bit) ("cpf"))
+ (("spare") (6 bits) ("spare"))
+ (cond "ptr->saf"
+ ( ("starting address") (addrsize bytes) ("address")))
+ (cond "ptr->cpf"
+ (("comp reps") (addrsize bytes) ("compreps")))
+ (("data") (barray counted byte) ("data")))
+
+
+("rl" 0x20
+ (("boundary of relocatable area") (4 bits) ("boundary"))
+ (("address polarity") (1 bit) ("apol"))
+ (("segment number") (1 bit) ("segment"))
+ (("sign of relocation") (1 bit) ("sign"))
+ (("check range") (1 bit) ("check"))
+ (("reloc address") (addrsize bytes) ("addr"))
+
+ (("bit loc") (1 byte) ("bitloc"))
+ (("field length") (1 byte) ("flen"))
+ (("bcount") (1 byte) ("bcount"))
+ (("operator") (1 byte) ("op")
+ (("OP_RELOC_ADDR" "1")
+ ("OP_SEC_REF" "0")
+ ("OP_EXT_REF" "2")))
+ (cond "ptr->op == OP_EXT_REF"
+ (("symbol number") (2 bytes) ("symn")) )
+
+ (cond "ptr->op == OP_SEC_REF"
+ (("section number") (2 bytes) ("secn"))
+ (("const opcode") (1 byte) ("copcode_is_3"))
+ (("addend length") (1 byte) ("alength_is_4"))
+ (("addend") (4 byte) ("addend"))
+ (("plus opcode") (1 byte) ("aopcode_is_0x20")))
+
+ (cond "ptr->op == OP_RELOC_ADDR"
+ (("dunno") (2 bytes) ("dunno")))
+
+ (("end") (1 byte) ("end")))
+
+
+("du" 0x30
+ (("format") (2 bits) ("format"))
+ (("optimized") (1 bit) ("optimized"))
+ (("stackfrmt") (2 bits) ("stackfrmt"))
+ (("spare") (3 bits) ("spare"))
+ (("unit number") (2 bytes) ("unit"))
+ (("sections") (2 bytes) ("sections"))
+ (repeat "ptr->sections"
+ (("section appearance number") (2 bytes) ("san"))
+ (("address") (addrsize bytes) ("address"))
+ (("section length") (addrsize bytes) ("length")))
+ (("tool name") (chars variable byte) ("tool"))
+ (("creation date") (chars 12 bytes) ("date")))
+
+
+("dsy" 0x34
+ (("symbol type") (7 bits) ("type")
+ (("STYPE_VAR" "0")
+ ("STYPE_LAB" "1")
+ ("STYPE_PROC" "2")
+ ("STYPE_FUNC" "3")
+ ("STYPE_TYPE" "4")
+ ("STYPE_CONST" "5")
+ ("STYPE_ENTRY" "6")
+ ("STYPE_MEMBER" "7")
+ ("STYPE_ENUM" "8")
+ ("STYPE_TAG" "9")
+ ("STYPE_PACKAGE" "10")
+ ("STYPE_GENERIC" "11")
+ ("STYPE_TASK" "12")
+ ("STYPE_EXCEPTION" "13")
+ ("STYPE_PARAMETER" "14")
+ ("STYPE_EQUATE" "15")
+ ("STYPE_UNSPEC" "0x7f")))
+ (("assignment info") (1 bit) ("assign"))
+ (("symbol id") (2 bytes) ("snumber"))
+ (("symbol name") (chars variable bytes) ("sname"))
+ (("nesting level") (2 bytes) ("nesting"))
+ (cond "ptr->assign"
+ (("assignment type") (1 byte) ("ainfo")
+ (("AINFO_REG" "1")
+ ("AINFO_STATIC_EXT_DEF" "2")
+ ("AINFO_STATIC_EXT_REF" "3")
+ ("AINFO_STATIC_INT" "4")
+ ("AINFO_STATIC_COM" "5")
+ ("AINFO_AUTO" "6")
+ ("AINFO_CONST" "7")
+ ("AINFO_UNSPEC" "0xff")))
+ (("data length") (addrsize bytes) ("dlength"))
+ (cond "ptr->ainfo == AINFO_STATIC_EXT_DEF
+ || ptr->ainfo == AINFO_STATIC_INT
+ || ptr->ainfo == AINFO_STATIC_COM"
+ (("section number") (2 bytes) ("section")))
+ (cond "ptr->ainfo == AINFO_STATIC_EXT_DEF
+ || ptr->ainfo == AINFO_STATIC_INT
+ || ptr->ainfo == AINFO_STATIC_COM
+ || ptr->ainfo == AINFO_AUTO"
+ (("address") (addrsize bytes) ("address")))
+ (cond "ptr->ainfo == AINFO_REG"
+ (("register name") (chars variable bytes) ("reg")))
+ (cond "ptr->ainfo == AINFO_STATIC_EXT_DEF
+ || ptr->ainfo == AINFO_STATIC_EXT_REF"
+ (("external name") (chars variable bytes) ("ename")))
+ (cond "ptr->ainfo == AINFO_CONST"
+ (("constant") (chars variable bytes) ("constant"))))
+ (cond "ptr->type == STYPE_MEMBER"
+ (("assignment unit") (1 bit) ("bitunit"))
+ (("spare") (7 bits) ("spare2"))
+ (("field length") (addrsize bytes) ("field_len"))
+ (("field offset") (addrsize bytes) ("field_off"))
+ (cond "ptr->bitunit"
+ (("bit offset") (addrsize bytes) ("field_bitoff"))))
+ (cond "ptr->type== STYPE_ENUM"
+ (("value length") (1 byte) ("evallen"))
+ (("value") (4 bytes) ("evalue")))
+ (cond "ptr->type == STYPE_CONST"
+ (("value") (chars variable bytes) ("cvalue")))
+ (cond "ptr->type == STYPE_EQUATE"
+ (("value length") (1 byte) ("qvallen"))
+ (("value") (4 bytes) ("qvalue"))
+ (("basic type") (1 byte) ("btype"))
+ (("size information") (addrsize bytes) ("sizeinfo"))
+ (("sign") (2 bits) ("sign"))
+ (("floating point type") (6 bits) ("flt_type")))
+ (("source file number") (2 bytes) ("sfn"))
+ (("source line number") (2 bytes) ("sln"))
+ (("negotiation number") (2 bytes) ("neg"))
+ (cond "ptr->type == STYPE_TAG"
+ (("magic") (1 byte) ("magic"))))
+
+
+
+("dul" 0x52
+ (("max declaration type flag") (1 bit) ("max_variable"))
+ (("max spare") (7 bits) ("maxspare"))
+ (cond "ptr->max_variable == 0"
+ (("maximum") (addrsize bytes) ("max"))
+ (("max mode") (chars variable bytes) ("maxmode")))
+
+ (("min declaration type flag") (1 bit) ("min_variable"))
+ (("min spare") (7 bits) ("minspare"))
+ (cond "ptr->min_variable == 0"
+ (("minimum") (addrsize bytes) ("min"))
+ (("min mode") (chars variable bytes) ("minmode"))))
+
+
+("dty" 0x36
+ (("end flag") (1 bit) ("end"))
+ (("spare") (7 bits) ("spare"))
+ (cond "!ptr->end"
+ (("negotiation") (2 bytes) ("neg"))))
+
+
+("dbt" 0x44
+ (("basic type") (1 byte) ("btype")
+ (("BTYPE_VOID" "0")
+ ("BTYPE_UNDEF" "1")
+ ("BTYPE_CHAR" "2")
+ ("BTYPE_INT" "3")
+ ("BTYPE_FLOAT" "4")
+ ("BTYPE_BIT" "5")
+ ("BTYPE_STRING" "6")
+ ("BTYPE_DECIMAL" "7")
+ ("BTYPE_ENUM" "8")
+ ("BTYPE_STRUCT" "9")
+ ("BTYPE_TYPE" "10")
+ ("BTYPE_TAG" "11")
+ ("BTYPE_UNSPEC" "0xff")))
+ (("size info") (addrsize bytes) ("bitsize"))
+ (("sign") (2 bits) ("sign")
+ (("SIGN_SIGNED" "0")
+ ("SIGN_UNSIGNED" "1")
+ ("SIGN_UNSPEC" "3")))
+ (("floating point type") (6 bits) ("fptype")
+ (("FPTYPE_SINGLE" "0")
+ ("FPTYPE_DOUBLE" "1")
+ ("FPTYPE_EXTENDED" "2")
+ ("FPTYPE_NOTSPEC" "0x3f")))
+ (cond "ptr->btype==BTYPE_TAG || ptr->btype == BTYPE_TYPE"
+ (("symbol id") (2 bytes) ("sid")))
+ (("negotiation") (2 bytes) ("neg")))
+
+("dar" 0x4e
+ (("element length" ) (addrsize bytes) ("length"))
+ (("dims") (1 byte) ("dims"))
+ (repeat "ptr->dims"
+ (("variable flag") (1 bit) ("variable")
+ (("VARIABLE_FIXED" "0")
+ ("VARIABLE_VARIABLE" "1")))
+
+ (("subscript type") (1 bit) ("subtype")
+ (("SUB_INTEGER" "0")
+ ("SUB_TYPE" "1")))
+
+ (("spare") (6 bits) ("spare"))
+
+ (cond "ptr->subtype[n] == SUB_TYPE"
+ (("sub symbol id") (2 bytes) ("sid")))
+
+ (cond "ptr->subtype[n] == SUB_INTEGER"
+ (("max declaration type flag") (1 bit) ("max_variable"))
+ (("max spare") (7 bits) ("maxspare"))
+ ;; FIXME: next field should be conditional on max_variable,
+ (("maximum") (addrsize bytes) ("max"))
+
+ (("min declaration type flag") (1 bit) ("min_variable"))
+ (("min spare") (7 bits) ("minspare"))
+ ;; FIXME: next field should be conditional on min_variable
+ (("minimum") (addrsize bytes) ("min"))))
+ (("negotiation") (2 bytes) ("neg")))
+
+
+("dso" 0x3a
+ (("function name") (2 bytes) ("sid"))
+ (("sp update count") (4 bytes) ("spupdates"))
+ (repeat "ptr->spupdates"
+ (("update address") (addrsize bytes) ("address"))
+ (("offset") (addrsize bytes) ("offset"))))
+
+("dln" 0x38
+ (("number of lines") (2 bytes) ("nln"))
+ (repeat "ptr->nln"
+ (("source file number") (2 bytes) ("sfn"))
+ (("source line number") (2 bytes) ("sln"))
+ (("section number") (2 bytes) ("section"))
+ (("from address") (addrsize bytes) ("from_address"))
+ (("to address") (addrsize bytes) ("to_address"))
+ (("call count") (2 bytes) ("cc"))
+ )
+ (("neg") (2 bytes) ("neg")))
+
+("dpp" 0x46
+ (("start/end") (1 bit) ("end"))
+ (("spare") (7 bits) ("spare"))
+ (cond "!ptr->end"
+ (("params") (1 byte) ("params"))
+ (("neg number") (2 bytes) ("neg"))))
+
+("den" 0x4a
+ (("start/end") (1 bit) ("end"))
+ (("spare") (7 bits) ("spare"))
+ (cond "!ptr->end"
+ (("neg number") (2 bytes) ("neg"))))
+
+("dfp" 0x48
+ (("start/end flag") (1 bit) ("end"))
+ (("spare") (7 bits) ("spare"))
+ (cond "!ptr->end"
+ (("number of parameters") (1 byte) ("nparams"))
+ (("neg number") (2 bytes) ("neg"))))
+
+("dds" 0x4c
+ (("start/end") (1 bit) ("end"))
+ (("spare") (7 bits) ("spare"))
+ (cond "!ptr->end"
+ (("neg number") (2 bytes) ("neg"))))
+
+("dpt" 0x50
+ (("neg number") (2 bytes) ("neg"))
+ (("dunno") (1 byte) ("dunno")))
+
+("dse" 0x54
+ (("neg number") (2 bytes) ("neg"))
+ (("dunno") (1 byte) ("dunno")))
+
+("dot" 0x56
+ (("unknown") (1 byte) ("unknown")))
+; FIXME: unknown field should be repeated symbol number?
+
+
+("dss" 0x42
+ (("type") (1 byte) ("type"))
+ (("external/internal") (1 bit) ("internal"))
+ (("spare") (7 bits) ("spare"))
+ (cond "!ptr->internal"
+ ( ("package name") (chars variable byte) ("package")))
+ (cond "ptr->internal"
+ (("symbol id") (2 bytes) ("id")))
+ (("record type") (2 bytes) ("record"))
+ (("rules") (chars variable byte) ("rules"))
+ (("number of symbols") (2 bytes) ("nsymbols"))
+ (("unknown" ) (2 bytes) ("fixme")))
+
+("pss" 0x40
+ (("negotiation number") (2 bytes) ("efn"))
+ (("number of source files") (2 bytes) ("ns"))
+ (repeat "ptr->ns"
+ (("directory reference bit") (1 bit) ("drb"))
+ (("spare") (7 bits) ("spare"))
+ (("completed file name") (chars variable byte) ("fname"))
+ (cond "ptr->drb[n]"
+ (("directory apperance number") (2 bytes) ("dan"))))
+
+ (("number of directories") (2 bytes) ("ndir"))
+ (repeat "ptr->ndir"
+ (("directory name") (chars variable bytes) ("dname"))))
+
+
+; FIXME: the tr block has no contents. sysinfo, etc. aren't prepared
+; to deal with that.
+; ("tr" 0x7f)
+
+
+("dus" 0x40
+ (("negotiation number") (2 bytes) ("efn"))
+ (("number of source files") (2 bytes) ("ns"))
+ (repeat "ptr->ns"
+ (("directory reference bit") (1 bit) ("drb"))
+ (("spare") (7 bits) ("spare"))
+ (("completed file name") (chars variable byte) ("fname"))
+ (cond "ptr->drb[n]"
+ (("directory apperance number") (2 bytes) ("dan"))))
+ (("number of directories") (2 bytes) ("ndir"))
+ (repeat "ptr->ndir"
+ (("directory name") (chars variable bytes) ("dname"))))
+
+
+("dps" 0x32
+ (("start/end flag") (1 bit) ("end"))
+ (("block type") (7 bits) ("type")
+ (("BLOCK_TYPE_COMPUNIT" "0")
+ ("BLOCK_TYPE_PROCEDURE" "2")
+ ("BLOCK_TYPE_FUNCTION" "3")
+ ("BLOCK_TYPE_BLOCK" "4")
+ ("BLOCK_TYPE_BASIC" "9")))
+ (cond "!ptr->end"
+ (("optimization") (1 byte) ("opt"))
+ (("section number") (2 bytes) ("san"))
+ (("address") (addrsize bytes) ("address"))
+ (("block size") (addrsize bytes) ("block_size"))
+ (("nesting") (1 byte) ("nesting"))
+ (cond "ptr->type == BLOCK_TYPE_PROCEDURE
+ || ptr->type == BLOCK_TYPE_FUNCTION"
+ (("return address") (1 bit) ("retaddr"))
+ (("interrupt function flag") (1 bit) ("intrflag"))
+ (("stack update flag") (1 bit) ("stackflag"))
+ (("intra page JMP") (1 bit) ("intrpagejmp"))
+ (("spare") (4 bits) ("spare")))
+ (("neg number") (2 bytes) ("neg"))))
+
diff --git a/binutils-2.24/binutils/testsuite/ChangeLog b/binutils-2.24/binutils/testsuite/ChangeLog
new file mode 100644
index 00000000..1ab6e86b
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/ChangeLog
@@ -0,0 +1,258 @@
+2013-10-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/x86-64/compressed-1a.d: Updated for 64-bit addresses.
+
+2013-09-12 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/x86-64/compressed-1a.d: Update expected output to
+ allow for 64-bit addresses.
+
+2013-08-22 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/nm.exp: --size-sort test: Add more ELF-like
+ targets.
+ * binutils-all/nm-1.s: Use .byte instead of .long.
+ Provide a terminating symbol.
+
+2013-08-21 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * binutils-all/nm.exp: Revert last change. Instead use nm-elf-1.s
+ for mmix-knuth-mmixware.
+
+2013-08-20 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * binutils-all/nm.exp: Xfail test for nm --size-sort for
+ mmix-knuth-mmixware.
+
+2013-08-19 Tristan Gingold <gingold@adacore.com>
+
+ * binutils-all/nm.exp: Add a test for nm --size-sort
+ * binutils-all/nm-elf-1.s: New file.
+ * binutils-all/nm-1.s: New file.
+
+2013-05-31 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/i386/compressed-1b.d: Updated for text/data/bss
+ section alignment change.
+ * binutils-all/i386/compressed-1c.d: Likewise.
+ * binutils-all/x86-64/compressed-1b.d: Likewise.
+ * binutils-all/x86-64/compressed-1c.d: Likewise.
+
+2013-05-28 Cary Coutant <ccoutant@google.com>
+
+ * binutils-all/dw2-1.W: Adjust expected output.
+ * binutils-all/objdump.W: Likewise.
+ * binutils-all/i386/compressed-1a.d: Likewise.
+ * binutils-all/x86-64/compressed-1a.d: Likewise.
+
+2013-05-02 Nick Clifton <nickc@redhat.com>
+
+ * readelf.exp: Expect -wi test to fail for the MSP430.
+
+2013-05-01 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * lib/binutils-common.exp (is_elf_format): Also exclude
+ *-*-linux*ecoff*.
+
+2013-02-26 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/15191
+ * binutils-all/readelf.n: Updare expected output from readelf.
+
+2013-02-14 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * binutils-all/mips/mixed-mips16.s: Add missing stack adjustment.
+ * binutils-all/mips/mixed-mips16.d: Update accordingly.
+
+2013-02-13 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * binutils-all/mips/mixed-micromips.d: New test.
+ * binutils-all/mips/mixed-mips16.d: New test.
+ * binutils-all/mips/mixed-micromips.s: New test source.
+ * binutils-all/mips/mixed-mips16.s: New test source.
+ * binutils-all/mips/mips.exp: New file.
+
+2012-12-17 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/windres/README: Add copyright notice.
+
+2012-11-27 Roland McGrath <mcgrathr@google.com>
+
+ * lib/binutils-common.exp (is_zlib_supported): New function.
+ * lib/utils-lib.exp (run_dump_test): If as options include
+ --compress-debug-sections and zlib is not available, report
+ the test as unsupported.
+ * binutils-all/compress.exp: Bail out if zlib is not available.
+ * binutils-all/objdump.exp (objdump compressed debug):
+ Mark unsupported if zlib is not available.
+ * binutils-all/readelf.exp (readelf_compressed_wa_test): Likewise.
+
+2012-11-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/14567
+ * binutils-all/ar.exp (bfdtest1): Removed.
+ (long_filenames): Take bfdtests.
+ (thin_archive): Likewise.
+ (thin_archive_with_nested): Likewise.
+ (bfdtests): New.
+ Pass $bfdtests to long_filenames, thin_archive and
+ thin_archive_with_nested.
+
+2012-10-29 Alan Modra <amodra@gmail.com>
+
+ * binutils-all/copy-3.d: Exclude all cygwin and mingw targets,
+ and rs6000.
+
+2012-10-24 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/ar.exp (bfdtest1): Remove findfile.
+
+2012-10-21 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/dw2-1.W: Updated.
+
+2012-10-20 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/compress.exp: Add an objdump test.
+ * binutils-all/dw2-1.W: New file.
+
+2012-08-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/ar.exp (long_filenames): Remove extra verbose
+ before binutils_run.
+ (thin_archive): Likewise.
+ (thin_archive_with_nested): Likewise. Also run bfdtest1 on
+ $archive2.
+
+2012-08-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/14481
+ * ar.exp (bfdtest1): New.
+ (long_filenames): Run bfdtest1.
+ (thin_archive): Likewise.
+ (thin_archive_with_nested): Likewise.
+
+2012-08-13 Ian Bolton <ian.bolton@arm.com>
+ Laurent Desnogues <laurent.desnogues@arm.com>
+ Jim MacArthur <jim.macarthur@arm.com>
+ Marcus Shawcroft <marcus.shawcroft@arm.com>
+ Nigel Stephens <nigel.stephens@arm.com>
+ Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+ Richard Earnshaw <rearnsha@arm.com>
+ Sofiane Naci <sofiane.naci@arm.com>
+ Tejas Belagod <tejas.belagod@arm.com>
+ Yufeng Zhang <yufeng.zhang@arm.com>
+
+ * objdump.exp: Add AArch64.
+
+2012-08-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/14420
+ * binutils-all/i386/compressed-1a.d: Updated.
+ * binutils-all/objdump.W: Likewise.
+ * binutils-all/readelf.wa: Likewise.
+ * binutils-all/x86-64/compressed-1a.d: Likewise.
+
+2012-07-28 Kai Tietz <ktietz@redhat.com>
+
+ * binutils-all/windres/version_small.rc: New test.
+ * binutils-all/windres/version_small.rsd: Likewise.
+
+2012-07-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/14319
+ * binutils-all/compress.exp: Test compress empty debug sections.
+
+ * binutils-all/dw2-empty.S: New file.
+
+2012-06-07 Thomas Schwinge <thomas@codesourcery.com>
+
+ * binutils-all/i386/i386.exp: Don't skip for x86_64-*-linux*.
+
+2012-05-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/hppa/objdump.exp: Expect addend as signed.
+
+2012-05-17 Alan Modra <amodra@gmail.com>
+
+ * binutils-all/objdump.W: Update.
+ * binutils-all/readelf.wa: Update.
+ * binutils-all/i386/compressed-1a.d: Update.
+ * binutils-all/x86-64/compressed-1a.d: Update.
+
+2012-05-16 Meador Inge <meadori@codesourcery.com>
+
+ * binutils-all/arm/objdump.exp:
+ STMFD/LDMIA sp!, {reg} don't disassemble to PUSH/POP {reg} any longer.
+
+2012-04-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/13947
+ * binutils-all/i386/compressed-1b.d: Remove empty REL section.
+ * binutils-all/i386/compressed-1c.d: Likewise.
+
+ * binutils-all/x86-64/compressed-1b.d: Remove empty RELA
+ section.
+ * binutils-all/x86-64/compressed-1c.d: Likewise.
+
+2012-04-03 Roland McGrath <mcgrathr@google.com>
+
+ * lib/binutils-common.exp (is_elf_format): Consider *-*-nacl* to
+ be ELF too.
+
+ * binutils-all/elfedit-4.d: Add "#as: --64" option.
+
+ * binutils-all/i386/i386.exp: Accept nacl targets too.
+ * binutils-all/x86-64/x86-64.exp: Likewise.
+
+2012-03-13 Hans-Peter Nilsson <hp@axis.com>
+
+ PR binutils/3807
+ * binutils-all/objcopy.exp (localize-hidden-1): Correct xfailed
+ mips-targets.
+
+2012-02-25 Walter Lee <walt@tilera.com>
+
+ * binutils-all/objdump.exp (cpus_expected): Add tilegx.
+
+2012-02-14 Alan Modra <amodra@gmail.com>
+
+ * binutils-all/dlltool.exp: Add setup_xfail.
+
+ * binutils-all/dw2-decodedline.S: Always have whitespace before
+ directives.
+ * binutils-all/version.s: Likewise.
+ * binutils-all/objdump.exp (dw2-decodedline): Don't run for
+ hppa64*-*-hpux*, i370-*-*, i960-*-*.
+
+2012-02-11 Kai Tietz <ktietz@redhat.com>
+
+ * binutils-all/version.def: New file.
+ * binutils-all/dlltool.exp: Add version-dll test.
+
+2012-02-02 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/readelf.n: Add #pass to cope with targets that add
+ their own notes.
+
+2012-02-01 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/13482
+ * binutils-all/version.s: New test source file.
+ * binutils-all/readelf.n: New file: expected readelf output.
+ * binutils-all/readelf.exp: Add test of .note section contents.
+
+For older changes see ChangeLog-0411
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/testsuite/ChangeLog-0411 b/binutils-2.24/binutils/testsuite/ChangeLog-0411
new file mode 100644
index 00000000..5c9cc241
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/ChangeLog-0411
@@ -0,0 +1,997 @@
+2011-11-25 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/objdump.exp (cpus): Add MicroBlaze.
+ (objdump -WL): Skip this test on MCore, Moxie and OpenRisc
+ targets.
+
+ * binutils-all/objcopy.exp (localize-hidden-1): Expect this test
+ to fail on MIPS based targets.
+
+2011-10-25 Kai Tietz <ktietz@redhat.com>
+
+ * binutils-all/windres/strtab4.rc: New test.
+ * binutils-all/windres/strtab4.rsd: Likewise.
+
+2011-10-11 Chris <player1@onet.eu>
+
+ PR binutils/13051
+ * binutils-all\windres\version.rsd: Regenerate.
+ * binutils-all\windres\version_cat.rsd: Regenerate.
+ * binutils-all\windres\version_mlang.rc: Add new test.
+ * binutils-all\windres\version_mlang.rsd: Likewise.
+
+2011-10-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/objdump.exp: Don't run dw2-decodedline.S on ia64.
+
+2011-10-04 Carlos O'Donell <carlos@codesourcery.com>
+
+ * binutils-all/dw2-decodedline.S: New file.
+ * binutils-all/objdump.WL: New file.
+ * binutils-all/objdump.exp: Update copyright year.
+ New test case for -WL.
+
+2011-09-28 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
+
+ * binutils-all/elfedit-4.d: Give test a unique name.
+
+2011-09-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/13180
+ * binutils-all/group-6.d: New.
+ * binutils-all/group-6.s: Likewise.
+
+ * binutils-all/objcopy.exp: Run group-6 for ELF targrts.
+
+2011-07-22 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/elfedit.exp: Run elfedit-4.
+
+ * binutils-all/elfedit-4.d: New.
+
+2011-06-30 Bernd Schmidt <bernds@codesourcery.com>
+
+ * binutils-all/objcopy.exp (strip_test, strip_executable):
+ On ELF targets, test that OS/ABI is preserved.
+ (copy_setup): Do test on tic6x-*-uclinux.
+
+2011-06-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/elfedit-1.d: Updated for x32.
+
+2011-05-18 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/12753
+ * lib/utils-lib.exp (run_dump_test): Allow nm as a program.
+ * binutils-all/nm.exp: Test running "nm -g" on an object file
+ containing a unique symbol.
+
+2011-05-13 Alan Modra <amodra@gmail.com>
+
+ * binutils-all/objcopy.exp objcopy_text): Remove xfails for sh-rtems
+ and tic4x.
+
+2011-05-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/12720
+ * binutils-all/ar.exp (delete_an_element): New.
+ (move_an_element): Likewise.
+ Run delete_an_element and move_an_element.
+
+2011-04-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/x86-64/compressed-1a.d: Adjust for change in output
+ format.
+
+2011-04-29 Hans-Peter Nilsson <hp@axis.com>
+
+ * binutils-all/i386/compressed-1a.d: Adjust for change in output
+ format.
+
+2011-04-28 Tom Tromey <tromey@redhat.com>
+
+ * binutils-all/objdump.W: Correct output.
+
+011-04-11 Kai Tietz
+
+ * binutils-all/windres/windres.exp: Add '// cpparg <option>' command
+ to rc file interpretation to specify addition pre-processor commands
+ as script option.
+ * binutils-all/windres/strtab3.rc: New.
+ * binutils-all/windres/strtab3.rsd: New.
+ * binutils-all/windres/README: Add note about cpparg script option.
+ argument
+
+2011-04-11 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/arm/simple.s: Fix assembly problems for COFF based
+ ARM toolchaisn by removing .type and .size directives.
+
+2011-04-07 Paul Carroll<pcarroll@codesourcery.com>
+
+ * binutils-all/arm/simple.s: Demo issue with objdump with
+ multiple input files
+ * binutils-all/arm/objdump.exp: added new ARM test case code
+
+2011-04-06 Joseph Myers <joseph@codesourcery.com>
+
+ * binutils-all/objcopy.exp (*arm*-*-coff): Change to arm*-*-coff.
+ (xscale-*-coff, thumb*-*-coff, thumb*-*-pe): Don't handle.
+
+2011-03-31 Bernd Schmidt <bernds@codesourcery.com>
+
+ * lib/binutils-common.exp (is_elf_format): Accept tic6x*-*-uclinux*.
+
+2011-01-03 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * lib/binutils-common.exp (regexp_diff): Use "==" instead of "eq".
+
+2010-12-31 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * binutils-all/copy-2.d: Change "hppa" to "hppa*" in not-target list.
+ * binutils-all/copy-3.d: Add hppa*-*-hpux* to not-target list.
+ * binutils-all/objcopy.exp (reverse-bytes): xfail on 32-bit hpux.
+
+2010-12-31 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * binutils-all/readelf.exp: Handle MIPS FreeBSD targets.
+
+2010-12-09 Maciej W. Rozycki <macro@codesourcery.com>
+
+ * lib/binutils-common.exp (regexp_diff): Implement inverse
+ matching, requested by `!'.
+
+2010-11-20 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * lib/binutils-common.exp (regexp_diff): New procedure.
+ * lib/utils-lib.exp (regexp_diff): Delete.
+
+2010-11-20 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * lib/binutils-common.exp: New file.
+ * lib/utils-lib.exp (load_common_lib): New function. Load
+ binutils-common.exp.
+ (is_elf_format): Delete.
+
+2010-11-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/compress.exp: Replace binutils_assemble with
+ binutils_assemble_flags for --nocompress-debug-sections.
+
+2010-11-15 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/compress.exp: Pass --nocompress-debug-sections to
+ assembler for uncompressed debug sections.
+
+ * binutils-all/testranges.d: Also expect .zdebug in section name.
+
+2010-11-08 Thomas Schwinge <thomas@schwinge.name>
+
+ * lib/utils-lib.exp (is_elf_format): Consider for *-*-gnu*, too.
+ * binutils-all/elfedit-2.d (target): Likewise.
+ * binutils-all/elfedit-3.d (target): Likewise.
+ * binutils-all/i386/i386.exp: Likewise.
+ * binutils-all/objcopy.exp: Likewise.
+ * binutils-all/strip-3.d (target): Likewise.
+
+2010-11-08 Alan Modra <amodra@gmail.com>
+
+ * binutils-all/objdump.W: Adjust expected result for debug section
+ rename.
+
+2010-11-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/libdw2.out: Also accept MIPS_DWARF.
+
+2010-10-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/compress.exp: New.
+ * binutils-all/dw2-1.S: Likewise.
+ * binutils-all/dw2-2.S: Likewise.
+ * binutils-all/libdw2-compressed.out: Likewise.
+ * binutils-all/libdw2.out: Likewise.
+
+2010-10-22 Mark Mitchell <mark@codesourcery.com>
+
+ * binutils-all/group-5.d: Expect ".group" for the name of group
+ sections.
+ * binutils-all/strip-2.d: Likewise.
+
+2010-10-12 Andreas Schwab <schwab@linux-m68k.org>
+
+ * binutils-all/m68k/objdump.exp: Add fnop test.
+ * binutils-all/m68k/fnop.s: New file.
+
+2010-09-29 Alan Modra <amodra@gmail.com>
+
+ * lib/utils-lib.exp (is_elf_format): Merge with gas and ld versions.
+
+2010-09-23 Alan Modra <amodra@gmail.com>
+
+ * binutils-all/ar.exp: Don't run unique_symbol on msp or hpux.
+ * binutils-all/copy-2.d: Update not-target list.
+ * binutils-all/note-1.d: Don't run on h8300.
+ * binutils-all/objcopy.exp: Don't run strip-10 on msp or hpux.
+ (objcopy_test): Remove h8300-rtems from xfails.
+
+2010-09-16 Alan Modra <amodra@gmail.com>
+
+ * binutils-all/i386/i386.exp: Don't run on linuxaout.
+
+2010-09-10 Ben Gardiner <bengardiner@nanometrics.ca>
+
+ * binutils-all/objcopy.exp: Add test of new --interleave-width
+ option.
+
+2010-09-03 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * binutils-all/objdump.W: Update DW_OP_reg5 expected output.
+
+2010-08-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/elfedit-3.d: New.
+
+ * binutils-all/elfedit.exp: Run elfedit-3.
+
+2010-07-19 Andreas Schwab <schwab@redhat.com>
+
+ * binutils-all/readelf.s: Ignore "Key to Flags" contents.
+ * binutils-all/readelf.s-64: Likewise.
+ * binutils-all/i386/compressed-1b.d: Likewise.
+ * binutils-all/i386/compressed-1c.d: Likewise.
+ * binutils-all/x86-64/compressed-1b.d: Likewise.
+ * binutils-all/x86-64/compressed-1c.d: Likewise.
+
+2010-07-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/i386/compressed-1a.d: Fix a typo.
+ * binutils-all/i386/compressed-1b.d: Likewise.
+ * binutils-all/i386/compressed-1c.d: Likewise.
+ * binutils-all/x86-64/compressed-1a.d: Likewise.
+ * binutils-all/x86-64/compressed-1b.d: Likewise.
+ * binutils-all/x86-64/compressed-1c.d: Likewise.
+
+2010-07-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/default.exp (binutils_assemble): Use
+ default_binutils_assemble_flags.
+ (binutils_assemble_flags): New.
+
+ * lib/utils-lib.exp (default_binutils_assemble): Renamed to ...
+ (default_binutils_assemble_flags): This. Add asflags and
+ pass it to target_assemble.
+ (run_dump_test): Support assembler flags.
+
+ * binutils-all/i386/compressed-1.s: New.
+ * binutils-all/i386/compressed-1a.d: Likewise.
+ * binutils-all/i386/compressed-1b.d: Likewise.
+ * binutils-all/i386/compressed-1c.d: Likewise.
+ * binutils-all/i386/i386.exp: Likewise.
+ * binutils-all/x86-64/compressed-1.s: Likewise.
+ * binutils-all/x86-64/compressed-1a.d: Likewise.
+ * binutils-all/x86-64/compressed-1b.d: Likewise.
+ * binutils-all/x86-64/compressed-1c.d: Likewise.
+ * binutils-all/x86-64/x86-64.exp: Likewise.
+
+2010-07-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/10531
+ PR gas/11789
+ * binutils-all/objdump.W: Remove bogus line debug info.
+
+2010-05-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gas/11600
+ * binutils-all/objcopy.exp: Run exclude-1a and exclude-1b for
+ ELF targets.
+
+ * binutils-all/exclude-1.s: New.
+ * binutils-all/exclude-1a.d: Likewise.
+ * binutils-all/exclude-1b.d: Likewise.
+
+2010-04-30 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/dlltool.exp: Add a missing `"'.
+
+2010-04-27 Kai Tietz <kai.tietz@onevision.com>
+
+ * binutils-all/dlltool.exp: Allow test for
+ arm-wince-pe target.
+
+2010-03-30 Kai TIetz <kai.tietz@onevision.com>
+
+ * binutils-all/objcopy.exp: Mark simple copy executable
+ as failing for all *-*-mingw32* targets.
+
+2010-03-26 Matt Rice <ratmice@gmail.com>
+
+ * binutils-all/ar.exp (unique_symbol): New test.
+
+2010-02-18 Alan Modra <amodra@gmail.com>
+
+ * binutils-all/group-5.s, * binutils-all/group-5.d: New test.
+ * binutils-all/objcopy.exp: Run it.
+
+2010-02-01 Nathan Sidwell <nathan@codesourcery.com>
+
+ * binutils-all/note-1.d: New.
+ * binutils-all/objcopy.exp: Add it.
+
+2010-01-30 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ * binutils-all/windres/html.rc: Don't xfail x86_64-*-mingw*.
+ * binutils-all/windres/lang.rc: Likewise.
+ * binutils-all/windres/messagetable.rc: Likewise.
+ * binutils-all/windres/strtab1.rc: Likewise.
+ * binutils-all/windres/strtab2.rc: Likewise.
+ * binutils-all/windres/version.rc: Likewise.
+ * binutils-all/windres/version_cat.rc: Likewise.
+
+2010-01-19 Ian Lance Taylor <iant@google.com>
+
+ * lib/utils-lib.exp (run_dump_test): Permit option values to use
+ $srcdir to refer to the source directory.
+ * binutils-all/add-section.d: New test.
+ * binutils-all/add-empty-section.d: New test.
+ * binutils-all/empty-file: New test input file.
+ * binutils-all/objcopy.exp: Run new tests.
+
+2010-01-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/elfedit-2.d: New.
+
+ * binutils-all/elfedit.exp: Run elfedit-2.
+
+2010-01-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/11131
+ * binutils-all/elfedit-1.d: New.
+ * binutils-all/elfedit.exp: Likewise.
+
+ * config/default.exp (ELFEDIT): New. Set if it doesn't exist.
+ (ELFEDITFLAGS): Likewise.
+
+ * lib/utils-lib.exp (run_dump_test): Support elfedit.
+
+2009-10-28 Kai Tietz <kai.tietz@onevision.com>
+
+ * binutils-all/dlltool.exp: Add tests for --no-leading-underscore
+ and --leading-underscore option for dlltool.
+
+2009-10-23 Kai Tietz <kai.tietz@onevision.com>
+
+ * binutils-all/dlltool.exp: Add new test.
+ * binutils-all/alias-2.def: New file.
+
+2009-10-18 Vincent Rivière <vincent.riviere@freesbee.fr>
+
+ * binutils-all/copy-2.d: Exclude more aout targets.
+ * binutils-all/copy-3.d: Likewise.
+
+2009-09-23 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/readelf.s: Tolerate some whitespace differences.
+ * binutils-all/readelf.s-64: Likewise.
+ * binutils-all/readelf.ss: Likewise.
+ * binutils-all/readelf.ss-64: Likewise.
+ * binutils-all/readelf.ss-mips: Likewise.
+ * binutils-all/readelf.ss-tmips: Likewise.
+ * binutils-all/strip-10.d: Likewise.
+
+2009-09-08 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/objdump.exp (cpus_expected): Add ms1.
+
+2009-09-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * binutils-all/testranges.s (.debug_info): Pad the only CU.
+
+2009-09-07 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * binutils-all/testranges.s: Replace all .long by .4byte.
+
+2009-09-04 DJ Delorie <dj@redhat.com>
+
+ * binutils-all/objdump.exp: Add m16c and m32c to the list of
+ expected cpus.
+
+2009-09-02 Jie Zhang <jie.zhang@analog.com>
+
+ * binutils-all/bfin/unknown-mode.s: New test.
+ * binutils-all/bfin/objdump.exp: New test.
+
+2009-08-17 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/strip-10.d: Accept "<OS specific>: 10" for the type
+ of the UNIQUE symbol.
+
+2009-08-07 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * binutils-all/testranges.s: Use %progbits. Use ";#" for comments.
+
+2009-08-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/10492
+ * binutils-all/objcopy.exp: Run strip-10.
+
+ * binutils-all/strip-10.d: New.
+ * binutils-all/unique.s: Likewise.
+
+2009-07-31 Daniel Gutson <dgutson@codesourcery.com>
+ Daniel Jacobowitz <dan@codesourcery.com>
+
+ * binutils-all/arm/thumb2-cond.s: Use instructions instead of
+ .short.
+
+2009-07-29 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/testranges.s: Replace .value with .short.
+
+2009-07-16 Dave Korn <dave.korn.cygwin@gmail.com>
+ H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/objcopy.exp: Run testranges and testranges-ia64
+ for ELF targets only.
+
+2009-07-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/objcopy.exp; Run testranges-ia64.
+
+ * binutils-all/testranges.d: Don't run for ia64.
+
+ * binutils-all/testranges-ia64.d: New.
+ * binutils-all/testranges-ia64.s: Likewise.
+
+2009-07-14 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * binutils-all/objcopy.exp (testranges): New test.
+ * binutils-all/testranges.d, binutils-all/testranges.s: New files.
+
+2009-06-25 Christopher Faylor <me+cygwin@cgf.cx>
+
+ * binutils-all/objcopy.exp: Move XFAIL from objcopy_test to
+ copy_executable.
+
+2009-06-25 Christopher Faylor <me+cygwin@cgf.cx>
+
+ * binutils-all/objcopy.exp: Always treat objcopy_test as XFAIL on
+ cygwin.
+
+2009-04-16 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/localize-hidden-1.s: Use "==" instead of ".set".
+ * binutils-all/localize-hidden-2.s: Likewise.
+
+2009-04-02 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ * inutils-all/objcopy.exp (strip_executable): Delete remote dest
+ file before downloading.
+ (strip_executable_with_saving_a_symbol): Likewise.
+ (keep_debug_symbols_and_test_copy): Likewise.
+
+2009-03-11 Joseph Myers <joseph@codesourcery.com>
+
+ * binutils-all/objdump.W, binutils-all/objdump.s: Don't match
+ literal "tmpdir/" in expected output.
+
+2009-03-11 Chris Demetriou <cgd@google.com>
+
+ * binutils-all/ar.exp (deterministic_archive): New test.
+
+2009-03-09 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/9933
+ * binutils-all/copy-4.d: New.
+
+ * binutils-all/objcopy.exp: Run copy-4.
+
+2009-03-03 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * config/hppa.sed: Fix spelling.
+
+2009-03-02 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * binutils-all/localize-hidden-1.s: Change .equ to .set.
+ * binutils-all/localize-hidden-2.s: Likewise.
+
+2009-01-29 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/objdump.W: Do not assume that high and low PC
+ addresses will have been computed.
+
+2008-10-06 Tom Tromey <tromey@redhat.com>
+
+ * binutils-all/objdump.W: Update.
+
+2008-10-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/group.s: Updated.
+ * binutils-all/group-2.s: Likewise.
+ * binutils-all/group-3.s: Likewise.
+ * binutils-all/group-4.s: Likewise.
+ * binutils-all/strip-7.d: Likewise.
+ * binutils-all/strip-9.d: Likewise.
+
+2008-10-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/group-4.s: New.
+ * binutils-all/strip-8.d: Likewise.
+ * binutils-all/strip-9.d: Likewise.
+
+ * binutils-all/objcopy.exp: Test objcopy on group-4.s. Run
+ strip-8 and strip-9.
+
+2008-10-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/group-3.s: New.
+ * binutils-all/strip-6.d: Likewise.
+ * binutils-all/strip-7.d: Likewise.
+
+ * binutils-all/objcopy.exp: Test objcopy on group-3.s. Run
+ strip-6 and strip-7.
+
+2008-10-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/group-2.s: New.
+ * binutils-all/strip-4.d: Likewise.
+ * binutils-all/strip-5.d: Likewise.
+
+ * binutils-all/objcopy.exp: Test objcopy on group-2.s. Run
+ strip-4 and strip-5.
+
+2008-07-26 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/objdump.exp: Run compressed debug test only for ELF.
+
+2008-07-11 Hans-Peter Nilsson <hp@axis.com>
+
+ * binutils-all/objdump.W: Generalize to adjust for targets with
+ non-byte-size instructions.
+
+2008-07-09 Craig Silverstein <csilvers@google.com>
+
+ * binutils-all/objdump.exp: Add test for objdump -s on a file
+ with a compressed debug section. Add test for objdump -W on a
+ file that contains a compressed debug section.
+ * binutils-all/readelf.exp: Call readelf_compressed_wa_test.
+ (readelf_compressed_wa_test): New function.
+ * binutils-all/dw2-compressed.S: New file.
+ * binutils-all/objdump.W: New file.
+ * binutils-all/objdump.s: New file.
+ * binutils-all/readelf.wa: New file.
+
+2008-07-08 Kai Tietz <kai.tietz@onevision.com>
+
+ * binutils-all/objcopy.exp (copy_setup): Check if host-triplet
+ is target-triplet for execution tests.
+ (copy_executable): Likewise.
+ (strip_executable): Likewise.
+ (strip_executable_with_saving_a_symbol): Likewise.
+
+2008-05-29 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * binutils-all/objcopy.exp: Call KEEP_DEBUG_SYMBOLS_AND_TEST_COPY.
+ (keep_debug_symbols_and_test_copy): New function.
+ (test5, test6): New variables.
+
+2008-03-27 Cary Coutant <ccoutant@google.com>
+
+ * binutils-all/ar.exp: Add thin archive tests.
+
+2008-02-26 Joseph Myers <joseph@codesourcery.com>
+
+ * config/default.exp (gcc_gas_flag, dlltool_gas_flag): Define to
+ empty for testing an installed toolchain.
+
+2008-02-04 Bob Wilson <bob.wilson@acm.org>
+
+ * binutils-all/objdump.exp (cpus_expected): Add xtensa.
+
+2007-10-26 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/windres/windres.exp: Don't xfail.
+
+2007-10-16 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/readelf.ss: Accept COMMON in readelf's output.
+ * binutils-all/readelf.ss-64: Likewise.
+ * binutils-all/readelf.ss-mips: Likewise.
+ * binutils-all/readelf.ss-tmips: Likewise.
+
+2007-08-30 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/dumptest.s: New test file.
+ * binutils-all/readelf.exp: Add test of readelf's -p switch.
+
+2007-08-28 Mark Shinwell <shinwell@codesourcery.com>
+ Joseph Myers <joseph@codesourcery.com>
+
+ * binutils-all/ar.exp (long_filenames): Delete temporary files on
+ the host.
+ * binutils-all/arm/objdump.exp: Only check "which $OBJDUMP" if
+ host is local.
+ * binutils-all/objcopy.exp: Use ${srecfile} to get the name of the
+ srec file to be passed to binutils_run.
+ (objcopy_test_readelf): Use remote_exec.
+ * binutils-all/readelf.exp (readelf_find_size): Use remote_exec.
+ (readelf_test): Likewise.
+ (readelf_wi_test): Likewise.
+ * lib/utils-lib.exp (run_dump_test): Only check "which $binary" if
+ host is local. Use remote_exec. Use $tempfile not
+ tmpdir/bintest.o.
+
+2007-08-09 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/copy-2.d (not-target): Match *-*-*aout.
+ * binutils-all/copy-3.d (not-target): Likewise.
+ * binutils-all/objcopy.exp (objcopy_test): Remove extraneous
+ setup_xfail.
+ * windres/windres.exp: Return unsupported rather than fail if
+ windows.h not found.
+
+2007-07-05 Nick Clifton <nickc@redhat.com>
+
+ * lib/utils-lib.exp: Update copyright notice to refer to GPLv3.
+ * config/default.exp, binutils-all/ar.exp,
+ binutils-all/dlltool.exp, binutils-all/nm.exp,
+ binutils-all/objcopy.exp, binutils-all/arm/objdump.exp,
+ binutils-all/hppa/objdump.exp, binutils-all/m68k/objdump.exp,
+ binutils-all/vax/objdump.exp, binutils-all/windres/windres.exp,
+ binutils-all/windres/msupdate: Likewise.
+
+2007-06-23 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/strip-3.d: Also strip .xtensa.info section.
+
+2007-05-24 Kai Tietz <Kai.Tietz@onevision.com>
+
+ * binutils-all/windres/version_cat.rc: New.
+ * binutils-all/windres/version_cat.rsd: New.
+
+2007-05-23 Kai Tietz <Kai.Tietz@onevision.com>
+
+ * binutils-all/windres/html.rc: New.
+ * binutils-all/windres/html.rsd: New.
+ * binutils-all/windres/html1.hm: New.
+ * binutils-all/windres/html2.hm: New.
+ * binutils-all/windres/messagetable.rc: New.
+ * binutils-all/windres/messagetable.rsd: New.
+ * binutils-all/windres/MSG00001.bin: New.
+ * binutils-all/windres/strtab2.rc: New.
+ * binutils-all/windres/strtab2.rsd: New.
+ * binutils-all/windres/version.rc: New.
+ * binutils-all/windres/version.rsd: New.
+ * binutils-all/windres/dialog.rsd: Fix expected results.
+
+2007-05-17 Joseph Myers <joseph@codesourcery.com>
+
+ * binutils-all/strip-3.d: Strip .pdr section.
+
+2007-05-15 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/objcopy.exp: Only run needed-by-reloc test for ELF.
+
+2007-05-11 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/needed-by-reloc.s: Use .long rather than .4byte.
+
+2007-05-08 Mark Shinwell <shinwell@codesourcery.com>
+
+ * binutils-all/strip-3.d: Strip .ARM.attributes and .reginfo
+ sections.
+
+2007-05-02 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/objcopy.exp (copy_setup): Don't perror, use send_log.
+ (copy_executable): Return early if test2 is blank.
+ Return unsupported rather than unresolved if we can't run
+ executables. Do test1 if we can compile.
+
+2007-04-24 Nathan Froyd <froydnj@codesourcery.com>
+ Phil Edwards <phil@codesourcery.com>
+
+ * binutils-all/objcopy.exp: Add test for stripping a symbol
+ used in a relocation.
+ * binutils-all/needed-by-reloc.s: New file.
+
+2007-04-20 Nathan Froyd <froydnj@codesourcery.com>
+ Phil Edwards <phil@codesourcery.com>
+ Thomas de Lellis <tdel@windriver.com>
+
+ * binutils-all/objcopy.exp: Add test for --reverse-bytes.
+
+2007-04-21 Richard Earnshaw <rearnsha@arm.com>
+
+ * binutils-all/readelf.exp (regexp_diff): Delete.
+
+2007-04-20 Richard Earnshaw <rearnsha@arm.com>
+
+ * binutils-all/arm/thumb2-cond.s: Allow for tab expansion by the pty.
+ Rename the second test.
+
+2007-04-12 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/4348
+ * binutils-all/empty.s: New file.
+ * binutils-all/strip-3.d: Likewise.
+
+ * binutils-all/objcopy.exp: Run strip-3 for ELF target.
+
+2007-02-27 Nathan Sidwell <nathan@codesourcery.com>
+
+ * binutils-all/objcopy.exp: Skip for uclinux targets.
+
+2007-02-14 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/readelf.exp (readelf_wi_test): Fix unexpected
+ output failure message.
+
+2007-01-08 Kai Tietz <kai.tietz@onevision.com>
+
+ * copy-3.d: Renamed target x86_64-*-mingw64 to x86_64-*-mingw*
+ * dlltool.exp: Dito
+ * lang.rc: Dito
+ * strtab1.rc: Dito
+ * windres.exp: Dito
+
+2006-09-20 Kai Tietz <Kai.Tietz@onevision.com>
+
+ * binutils-all/copy-3.d: Add support for target x86_64-pc-mingw64.
+ * binutils-all/dlltool.exp: Likewise.
+ * binutils-all/objcopy.exp: Likewise.
+ * binutils-all/windres/windres.exp: Likewise.
+ * binutils-all/windres/lang.rc: xfail it as long as there is no windows.h.
+ * binutils-all/windres/strtab1.rc: Likewise.
+ * lib/utils-lib.exp: Adjust executable prefix detection (as .exe).
+
+2006-09-14 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/3181
+ * binutils-all/objcopy.exp: Run strip-1 and strip-2 for ELF
+ targets.
+
+ * binutils-all/strip-1.d: New file.
+ * binutils-all/strip-2.d: Likewise.
+
+ * lib/utils-lib.exp (run_dump_test): Support strip.
+
+2006-08-15 Thiemo Seufer <ths@mips.com>
+ Nigel Stephens <nigel@mips.com>
+ David Ung <davidu@mips.com>
+
+ * binutils-all/readelf.exp (readelf_test): Handle mips*-sde-elf*.
+
+2006-06-24 Richard Sandiford <richard@codesourcery.com>
+
+ * binutils-all/localize-hidden-1.d: Use objdump --syms instead
+ of readelf.
+
+2006-06-23 Richard Sandiford <richard@codesourcery.com>
+
+ * binutils-all/localize-hidden-1.s,
+ * binutils-all/localize-hidden-1.d,
+ * binutils-all/localize-hidden-2.s,
+ * binutils-all/localize-hidden-2.d: New tests.
+ * binutils-all/objcopy.exp: Run them.
+
+2006-06-06 Paul Brook <paul@codesourcery.com>
+
+ * binutils-all/arm/objdump.exp: New file.
+ * binutils-all/arm/thumb2-cond.s: New test.
+
+2006-05-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/copy-3.d: Fix a typo.
+
+2006-05-03 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/copy-3.d: New.
+
+ * objcopy.exp: Run copy-3.
+
+2006-05-02 Dave Korn <dave.korn@artimi.com>
+
+ * binutils-all/copy-1.d (name): Correct spelling of 'setting'.
+ * binutils-all/copy-1.d (name): Likewise.
+
+2006-05-02 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/copy-2.d: Change the name of the section whose
+ flags are changed to "foo" so that the test will work with PE
+ based targets. Skip this test for AOUT based targeted.
+ * binutils-all/copytest.s: New file.
+
+2006-05-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/objcopy.exp: Run "copy-1" for ELF only.
+
+2006-05-01 Ben Elliston <bje@au.ibm.com>
+
+ * binutils-all/objcopy.exp (objcopy_test_readelf): Remove stray ;
+
+2006-04-26 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/2593
+ * binutils-all/copy-1.d: New file.
+ * binutils-all/copy-1.s: Likewise.
+ * binutils-all/copy-2.d: Likewise.
+
+ * binutils-all/objcopy.exp: Add run_dump_test "copy-1" and
+ run_dump_test "copy-2".
+
+ * lib/utils-lib.exp (run_dump_test): New.
+ (slurp_options): Likewise.
+ (regexp_diff): Likewise.
+ (file_contents): Likewise.
+ (verbose_eval): Likewise.
+
+2006-04-25 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/2467
+ * binutils-all/objcopy.exp (strip_test): Also test "strip -g"
+ on archive.
+
+2006-04-10 H.J. Lu <hongjiu.lu@intel.com>
+
+ * lib/utils-lib.exp (default_binutils_run): Check exit status.
+
+2005-12-24 Ben Elliston <bje@gnu.org>
+
+ * config/default.exp: Do not load the unneeded util-defs.exp.
+
+2005-11-15 Jan Beulich <jbeulich@novell.com>
+
+ * config/default.exp (link_or_copy): New. Use it for setting
+ up assembler and linker for the compiler to use.
+
+2005-10-20 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/251
+ * binutils-all/group.s: New file.
+
+ * binutils-all/objcopy.exp (objcopy_test_readelf): New
+ procedure.
+ Use it to test ELF group.
+
+2005-10-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/1487
+ * binutils-all/objcopy.exp (objcopy_test): New procedure.
+ Use it to test simple copy, ia64 link order and ELF unknown
+ section type.
+
+ * binutils-all/unknown.s: New file.
+
+2005-10-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR binutils/1321
+ * binutils-all/link-order.s: New.
+
+ * binutils-all/objcopy.exp: Check ia64 link order.
+
+2005-10-11 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * binutils-all/windres/escapex-2.rc: New file.
+ * binutils-all/windres/escapex-2.rsd: Generate.
+
+2005-08-26 Christian Groessler <chris@groessler.org>
+
+ * binutils-all/objcopy.exp: Don't setup_xfail "z8*-*".
+
+2005-08-18 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/objcopy.exp: Remove a29k support.
+ * binutils-all/objdump.exp: Likewise, alliant and convex too.
+
+2005-05-07 Nick Clifton <nickc@redhat.com>
+
+ * Update the address and phone number of the FSF organization in
+ the GPL notices in the following files:
+ binutils-all/ar.exp, binutils-all/dlltool.exp,
+ binutils-all/nm.exp, binutils-all/objcopy.exp,
+ binutils-all/objdump.exp, binutils-all/readelf.exp,
+ binutils-all/size.exp, binutils-all/hppa/objdump.exp,
+ binutils-all/m68k/objdump.exp, binutils-all/vax/objdump.exp,
+ binutils-all/windres/msupdate, binutils-all/windres/windres.exp,
+ config/default.exp, lib/utils-lib.exp
+
+2005-04-04 Jan-Benedict Glaw <jbglaw@lug-owl.>
+
+ * binutils-all/vax/objdump.exp: Condense the two tests into one
+ and add a "-M entry:" for the second label.
+
+2005-03-29 Jan-Benedict Glaw <jbglaw@lug-owl.de>
+
+ * binutils-all/vax: New directory.
+ * binutils-all/vax/objdump.exp: New script. Test the -Mentry:
+ switch added to the VAX disassembler.
+ * binutils-all/vax/entrymask.s: New assembler source file.
+
+2005-03-08 Ben Elliston <bje@au.ibm.com>
+
+ * config/default.exp: Remove send_user call for stray output.
+
+2005-01-04 Martin Koegler <mkoegler@auto.tuwien.ac.at>
+
+ * binutils-all/testprog.c: Add prototype for printf() and make
+ type of "string" array be "char" in order to avoid compile time
+ warnings.
+
+2004-12-31 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/readelf.ss: Allow for both .rel and .rela sections.
+
+2004-11-04 Hans-Peter Nilsson <hp@axis.com>
+
+ * binutils-all/objdump.exp (cpus_expected): Append cris.
+
+2004-10-28 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/dlltool.exp: Set XFAIL if $target_xfail is yes.
+
+2004-10-23 Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>
+
+ * binutils-all/alias.def: New file.
+ * binutils-all/dlltool.exp: Two new -p tests.
+ * config/default.exp (dlltool_gas_flag): New variable.
+ Copy gas and lds executables into tmpdir/gas directory rather than
+ making symlinks which might not be supported by the host OS.
+ Attempt to handle the case where the host OS does not use the .exe
+ extension but the target OS does.
+ * lib/utils-lib.exp (exe_ext): New procedure.
+
+2004-07-12 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/dlltool.exp: Check that the -p switch is not
+ rejected.
+
+2004-07-09 Andreas Schwab <schwab@suse.de>
+
+ * binutils-all/m68k/movem.s: New file.
+
+ * binutils-all/m68k/objdump.exp: New file.
+
+2004-05-15 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/readelf.ss: Allow for ARM mapping symbols.
+
+2004-05-12 Ben Elliston <bje@au.ibm.com>
+
+ * binutils-all/ar.exp: Remove stray semicolons.
+ * binutils-all/dlltool.exp: Likewise.
+ * binutils-all/objcopy.exp: Likewise.
+ * binutils-all/readelf.exp: Likewise.
+ * binutils-all/windres/windres.exp: Likewise.
+ * lib/utils-lib.exp: Likewise.
+
+2004-04-14 Richard Sandiford <rsandifo@redhat.com>
+
+ * binutils-all/readelf.ss-mips: Allow named section symbols.
+
+2004-03-30 Jakub Jelinek <jakub@redhat.com>
+
+ * binutils-all/objcopy.exp: Accept main as a data symbol as well.
+
+2004-02-27 Andreas Schwab <schwab@suse.de>
+
+ * binutils-all/ar.exp (argument_parsing): New test.
+
+2004-02-20 Nathan Sidwell <nathan@codesourcery.com>
+
+ * binutils-all/objcopy.exp: Reorder arguments for POSIXLY_CORRECT
+ systems.
+
+For older changes see ChangeLog-9303
+
+Copyright (C) 2004-2011 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/testsuite/ChangeLog-9303 b/binutils-2.24/binutils/testsuite/ChangeLog-9303
new file mode 100644
index 00000000..54061d31
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/ChangeLog-9303
@@ -0,0 +1,1057 @@
+2003-12-03 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/objdump.exp (cpus_expected): Add "msp".
+
+2003-10-06 Dave Brolley <brolley@redhat.com>
+
+ * binutils-all/objdump.exp (cpu_expected): Add fr550.
+
+2003-09-29 H.J. Lu <hongjiu.lu@intel.com>
+
+ * binutils-all/readelf.exp: Use is_elf_format.
+
+ * binutils-all/readelf.h: Support IA64/ILP32.
+ * binutils-all/readelf.s: Likewise.
+ * binutils-all/readelf.ss: Likewise.
+
+ * lib/utils-lib.exp (proc is_elf_format): Copy from ld
+ testsuite. Add ia64-*-hpux*.
+
+2003-06-29 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * binutils-all/objcopy.exp: Initialise $test_prog to
+ testprog.exe on mingw targeted systems too.
+
+2003-06-28 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * binutils-all/windres/checkbox.rc: New file.
+ * binutils-all/windres/checkbox.rsd: New file.
+ * binutils-all/windres/combobox.rc: New file.
+ * binutils-all/windres/combobox.rsd: New file.
+ * binutils-all/windres/edittext.rc: New file.
+ * binutils-all/windres/edittext.rsd: New file.
+ * binutils-all/windres/listbox.rc: New file.
+ * binutils-all/windres/listbox.rsd: New file.
+ * binutils-all/windres/scrollbar.rc: New file.
+ * binutils-all/windres/scrollbar.rsd: New file.
+
+2003-06-27 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * binutils-all/readelf.ss-tmips: Adjust symbol indices.
+
+2003-06-19 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/objcopy.exp: Replace occurances of testprog with
+ $test_prog. Initialise this variable to testprog.exe on Cygwin
+ targeted systems.
+
+2003-04-26 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/readelf.exp (prune_read_warnings): Rename to
+ prune_readelf_wi_warnings.
+ (readelf_wi_test): New proc: Test 'readelf -wi' by grepping
+ through its output.
+ Replace invocation of "readelf_test -wi" with "readelf_wi_test"
+ * binutils-all/readelf.wi: Delete.
+
+2003-04-23 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/readelf.exp (proc prune_readelf_warnings): New
+ function.
+ (proc readelf_test): Prune warning messages.
+ (readelf_test -wi): Add more expected failures.
+ * binutils-all/readelf.wi: Severly reduce expected output.
+ * binutils-all/testprog.c (string): Explicitly use unsigned
+ chars.
+ (stdio.h, string.h): Remove inclusion.
+
+2003-04-23 J"orn Rennecke <joern.rennecke@superh.com>
+
+ * binutils-all/readelf.wi: Update.
+
+2003-04-22 Dimitrie O. Paun <dpaun@rogers.com>
+
+ * binutils-all/windres/windres.exp: Add test for the new -J
+ option. Remove use of -I as it now generates a warning message.
+
+2003-04-03 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/windres/dialogid.rc: Replace "Static" with
+ "classname" so that compilation will match behaviour of the
+ Windows resource compiler.
+
+2003-03-31 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/windres/dialogid.rc: New test source file.
+ * binutils-all/windres/dialogid.rsd: New test expected results.
+
+2002-11-07 Casper S. Hornstrup <chorns@users.sourceforge.net>
+
+ * binutils-all/dlltool.exp: New file for testing dlltool.
+ * binutils-all/fastcall.def: New file for testing fastcall
+ exports.
+ * config/default.exp: Set DLLTOOL variable.
+
+2002-08-27 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/objcopy.exp: Revert last change.
+
+2002-08-26 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/objcopy.exp (strip_test): Adjust for "no symbols" on
+ stdout.
+ (strip_executable): Likewise.
+
+2002-08-13 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/objdump.exp (cpus_expected): Add fr500, ip2022,
+ tic80, tms320c30.
+ * binutils-all/objcopy.exp (simple copy): Revise xfails.
+
+2002-05-29 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/objcopy.exp (strip_test_with_saving_a_symbol):
+ Revert 2001-11-15. Instead allow `D main'.
+
+2002-04-16 Eric Kohl <ekohl@rz-online.de>
+
+ * binutils-all/windres/dialog0.rc: New test case: Check default
+ attributes for dialogs
+ * binutils-all/windres/dialog0.rsd: New file: Expected output.
+ * binutils-all/windres/dialog1.rc: New test case: Check
+ DISCARDABLE flag is propogated.
+ * binutils-all/windres/dialog1.rsd: New file: Expected output.
+
+2002-04-15 Eric Kohl <ekohl@rz-online.de>
+
+ * binutils-all/windres/dlgfont.rc: New test case: Checks FONT
+ statement in DIALOG and DIALOGEX resources.
+ * binutils-all/windres/dlgfont.rsd: Expected output.
+
+2002-04-11 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * binutils-all/ar.exp (long_filenames): Use 'file delete' instead
+ of 'exec rm -f'.
+
+2002-04-10 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * binutils-all/ar.exp (long_filenames): Delete the abc... files
+ upon successfully completion of the test.
+
+ * binutils-all/windres/capstyle.rsd: Regenerate using MSVC.
+ * binutils-all/windres/deflang.rsd: Regenerate using MSVC.
+ * binutils-all/windres/dialogsignature.rsd: Regenerate using MSVC.
+ * binutils-all/windres/escapea.rsd: Regenerate using MSVC.
+ * binutils-all/windres/escapex.rsd: Regenerate using MSVC.
+ * binutils-all/windres/nocaption.rsd: Regenerate using MSVC.
+ * binutils-all/windres/printstyle.rsd: Regenerate using MSVC.
+ * binutils-all/windres/sublang.rsd: Regenerate using MSVC.
+
+2002-04-09 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * binutils-all/windres/capstyle.rc: New test case: Set default
+ style for captions.
+ * binutils-all/windres/capstyle.rsd: Expected output.
+
+ * binutils-all/windres/deflang.rc: New test case: Check default
+ language.
+ * binutils-all/windres/deflang.rsd: Expected output.
+
+ * binutils-all/windres/dialogsignature.rc: New test case for
+ decoding the dialog signature.
+ * binutils-all/windres/dialogsignature.rsd: Expected output.
+
+ * binutils-all/windres/escapea.rc: New test case for encoding \a
+ escape sequence.
+ * binutils-all/windres/escapea.rsd: Expected output.
+
+ * binutils-all/windres/escapex.rc: New test case for hex constants
+ in strings.
+ * binutils-all/windres/escapex.rsd: Expected output
+
+ * binutils-all/windres/nocaption.rc: New test case dialogs without
+ captions.
+ * binutils-all/windres/nocaption.rsd: Expected output
+
+ * binutils-all/windres/quoteclass.rc: New test case for quoted
+ CLASS definitions in DIALOG resources.
+
+ * binutils-all/windres/sublang.rc: New test case: Check assignment
+ of sub-language.
+ * binutils-all/windres/sublang.rsd: Expected output.
+
+2002-02-18 Timothy Daly <remote_bob@yahoo.com>
+
+ * binutils-all/readelf.r: Change expected output to match new,
+ narrowed-to-80-chars format.
+ * binutils-all/readelf.r-64: Change expected output to match new,
+ narrowed-to-80-chars format.
+
+2002-02-18 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * binutils-all/objcopy.exp
+ (strip_executable_with_saving_a_symbol): Prune symbol Main in nm
+ output for mmix-knuth-mmixware.
+
+2002-02-13 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * binutils-all/readelf.ss-mips: Do not expect an explicit
+ ordering of the sections.
+
+2002-02-10 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * binutils-all/objdump.exp: Add 'xscale' to the list of expected
+ CPUs.
+
+2002-01-14 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * binutils-all/objcopy.exp: Expect xscale-coff to fail simple
+ objcopy test for the same reason as arm-coff.
+
+2001-11-29 H.J. Lu <hjl@gnu.org>
+
+ * binutils-all/objcopy.exp (strip_test): Add strip on archive.
+
+2001-11-15 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/objcopy.exp: (strip_test_with_saving_a_symbol):
+ Allow '? main', to suit powerpc64.
+
+2001-11-14 Geoffrey Keating <geoffk@redhat.com>
+
+ * binutils-all/readelf.exp: powerpc-*-eabi* is an ELF target.
+
+2001-10-03 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * binutils-all/readelf.exp: Exclude mips*-*-elf* from 'readelf -wi'
+ test.
+
+Tue Sep 4 20:25:41 2001 Jeffrey A Law (law@cygnus.com)
+
+ * binutils/all/readelf.exp: Expect readelf -wi to
+ fail for the H8 series.
+
+2001-08-27 Alan Modra <amodra@bigpond.net.au>
+
+ * binutils-all/readelf.s-64: Adjust offsets for powerpc64. Don't
+ use constructs like [45][08] when all combinations are not valid.
+ Instead use (48|50) to explicitly state which values are correct.
+
+2001-08-21 H.J. Lu <hjl@gnu.org>
+
+ * binutils-all/readelf.r: Updated for the readelf change.
+
+ * binutils-all/readelf.r-64: New for the readelf change.
+
+2001-07-27 H.J. Lu <hjl@gnu.org>
+
+ * binutils-all/windres/windres.exp: Don't set xfail for
+ bmpalign (compare) on none-ix86/pe targets.
+
+2001-07-24 H.J. Lu <hjl@gnu.org>
+
+ * binutils-all/windres/windres.exp: Set xfail on none-ix86/pe
+ targets.
+
+2001-07-18 DJ Delorie <dj@redhat.com>
+
+ * config/default.exp (WINDRES): Add.
+ * binutils-all/windres/windres.exp: New.
+ * binutils-all/windres/README: New.
+ * binutils-all/windres/bmp1.bmp: New.
+ * binutils-all/windres/bmpalign.rc: New.
+ * binutils-all/windres/bmpalign.rsd: New.
+ * binutils-all/windres/lang.rc: New.
+ * binutils-all/windres/lang.rsd: New.
+ * binutils-all/windres/msupdate: New.
+ * binutils-all/windres/strtab1.rc: New.
+ * binutils-all/windres/strtab1.rsd: New.
+
+2001-07-05 Ben Elliston <bje@redhat.com>
+
+ * lib/utils-lib.exp (target_assemble): Remove duplicate copy.
+ (default_target_assemble): Likewise.
+
+2001-06-18 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+ * binutils-all/readelf.exp: Typo.
+
+2001-06-19 Andreas Jaeger <aj@suse.de>
+
+ * binutils-all/readelf.r: Don't check for specific info value to
+ pass testsuite on ia64 and alpha.
+
+2001-06-07 H.J. Lu <hjl@gnu.org>
+
+ * binutils-all/readelf.ss-mips: Support stabs.
+ * binutils-all/readelf.ss-tmips: Likewise.
+
+2001-05-25 H.J. Lu <hjl@gnu.org>
+
+ * binutils-all/readelf.exp (readelf_test): Set target_machine
+ to tmips for traditional mips.
+
+ * binutils-all/readelf.s: Support traditional mips.
+
+ * binutils-all/readelf.ss-tmips: New for traditional mips.
+
+2001-05-25 Alan Modra <amodra@one.net.au>
+
+ * binutils-all/readelf.exp: Replace linuxoldld with linux*oldld
+ and linuxaout with linux*aout.
+ * binutils-all/objcopy.exp: Remove xfail for linuxaout.
+
+2001-05-24 H.J. Lu <hjl@gnu.org>
+
+ * binutils-all/objdump.exp (cpus_expected): Add s390.
+
+2001-03-30 H.J. Lu <hjl@gnu.org>
+
+ * binutils-all/readelf.exp: Run on more ELF targets.
+
+2001-02-11 H.J. Lu <hjl@gnu.org>
+
+ * config/default.exp: Set up gcc_gas_flag.
+
+ * binutils-all/objcopy.exp (copy_setup): Process gcc_gas_flag
+ for Linux only.
+
+ * binutils-all/testprog.c: Include <string.h> and don't use
+ exit ().
+
+2001-01-16 Matthew Green <mrg@redhat.com>
+
+ * binutils-all/readelf.s-64: Match readelf -S output.
+
+2000-12-09 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/objdump.exp (cpus_expected): Add tic54x and
+ tms320c54x.
+
+2000-11-28 Hans-Peter Nilsson <hp@axis.com>
+
+ * binutils-all/readelf.s: Adjust to readelf.c formatting changes.
+
+2000-11-02 Chris Demetriou <cgd@sibyte.com>
+
+ * binutils-all/readelf.exp (regexp_diff): Add code
+ from gas testsuite to treat "#..." at beginning of line
+ as an indicator to skip extra non-matching lines at that
+ location.
+ (readelf_test): Add support for using a machine-specific
+ regexp comparison file.
+ (readelf -S test, readelf -s test): Remove v850*-*-* and
+ mips*-*-* from list of expected failures.
+ * binutils-all/readelf.s: Accomodate changes due to
+ additional sections (and therefore section numbering
+ differences) on v850*-*-* and mips*-*-* targets.
+ * binutils-all/readelf.ss: Likewise.
+ * binutils-all/readelf.ss-mips: New file, which matches
+ expected output of readelf -s test for mips*-*-*.
+
+2000-10-25 Hans-Peter Nilsson <hp@axis.com>
+
+ * binutils-all/readelf.exp (-wi test): Add cris-*-* to xfails.
+
+2000-10-19 Chris Demetriou <cgd@sibyte.com>
+
+ * binutils-all/readelf.exp (readelf_test): Work properly
+ when multiple targets expect failtures.
+ (readelf -S test, readelf -s test): Expect mips*-*-*
+ to fail.
+
+2000-07-10 Alan Modra <alan@linuxcare.com.au>
+
+ * lib/utils-lib.exp (default_binutils_assemble): Don't do the hppa
+ sed fudges for hppa-linux.
+
+2000-07-01 Frank Ch. Eigler <fche@redhat.com>
+
+ * binutils-all/objdump.exp (cpus_expected, cpus_regex): Reorganize
+ syntax to display more tcl nature.
+
+2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
+
+ * binutils-all/objdump.exp (cpus_expected): Recognize m68hc11 and
+ m68hc12.
+
+2000-06-18 Nick Clifton <nickc@redhat.com>
+
+ * binutils-all/readelf.wi: Do not assume the compilation tag to be
+ unit 1.
+
+ * binutils-all/objcopy.exp: Expect all arm variants to fail the
+ copying executable test.
+
+2000-06-14 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * binutils-all/readelf.exp (regexp_diff): Do not break when a
+ mismatching line is found.
+ (readelf_find_size): New.
+ (readelf_size): New global variable.
+ (readelf_test): Add newline to send_log of command.
+ If $srcdir/$subdir/$regexp_file-$readelf_size exists, use it
+ instead of $srcdir/$subdir/$regexp_file.
+ (*-*elf test): Fix typo in message.
+ * binutils-all/readelf.s-64: New.
+ * binutils-all/readelf.ss-64: New.
+
+2000-05-02 Alan Modra <alan@linuxcare.com.au>
+
+ * binutils-all/objcopy.exp (simple copy): Clear xfail for hppa-linux.
+
+ * binutils-all/hppa/objdump.exp: Disable test for elf.
+
+2000-03-13 Nick Clifton <nickc@cygnus.com>
+
+ * binutils-all/readelf.s: Adjust to match new format of readelf
+ output.
+ * binutils-all/readelf.ss: Adjust to match new format of readelf
+ output.
+
+1999-11-01 Nick Clifton <nickc@cygnus.com>
+
+ * binutils-all/objcopy.exp: Expect simple objcopy test to fail
+ for COFF based ARM and Thumb ports.
+
+Tue Sep 14 00:28:17 1999 Jeffrey A Law (law@cygnus.com)
+
+ * binutils-all/hppa/objdump.exp: Do not run for PA64.
+
+1999-09-04 Steve Chamberlain <sac@pobox.com>
+
+ * binutils-all/objdump.exp: Add pj to cpus_expected.
+
+Sat Aug 28 00:24:27 1999 Jerry Quinn <jquinn@nortelnetworks.com>
+
+ * binutils-all/hppa/freg.s: New file.
+ * binutils-all/hppa/objdump.exp: Add freg.s test.
+
+1999-08-09 Ian Lance Taylor <ian@zembu.com>
+
+ * binutils-all/objcopy.exp: Add setup_xfail for simple copy test
+ for i*86-*-msdos*.
+
+1999-07-21 H.J. Lu <hjl@gnu.org>
+
+ * binutils-all/testprog.c: Include <stdio.h>.
+
+1999-06-29 Nick Clifton <nickc@cygnus.com>
+
+ * binutils-all/objdump.exp: Add fr30 and MCore to expected cpus
+ list.
+
+ * binutils-all/readelf.r: Do not assume a fixed number of spaces
+ in the output.
+
+1999-06-10 Nick Clifton <nickc@cygnus.com>
+
+ * binutils-all/readelf.wi: Update to match latest output.
+ * binutils-all/readelf.h: Update to match latest output.
+
+Wed Jun 9 11:59:22 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * binutils-all/objdump.exp: Tighten regexp to match `objdump -i'
+ output to avoid massive exponential behaviour.
+
+1999-05-28 Ian Lance Taylor <ian@zembu.com>
+
+ * binutils-all/readelf.h: Update for changes of 1999-04-08.
+
+1999-03-12 Nick Clifton <nickc@cygnus.com>
+
+ * binutils-all/readelf.wi: Remove FR30 specific components.
+ * binutils-all/readelf.s: Remove RELA specific components.
+
+1999-02-16 Nick Clifton <nickc@cygnus.com>
+
+ * binutils-all/readelf.s: Do not assume section alignment is 4.
+ * binutils-all/readelf.r: Do not assume rela's are being used.
+ * binutils-all/readelf.exp: disable tests for non ELF based
+ targets.
+
+1999-02-02 Nick Clifton <nickc@cygnus.com>
+
+ * binutils-all/readelf.wi: Amend to match new readelf output.
+ * binutils-all/readelf.r: Do not assume that RELAs will be used.
+
+1999-01-29 Nick Clifton <nickc@cygnus.com>
+
+ * config/default.exp: Add definitions of READELF and READELFFLAGS.
+
+ * binutils-all/readelf.exp: New file: Readelf tests
+ * binutils-all/readelf.h: New file: Expected results for 'readelf -h'
+ * binutils-all/readelf.s: New file: Expected results for 'readelf -S'
+ * binutils-all/readelf.ss: New file: Expected results for 'readelf -s'
+ * binutils-all/readelf.r: New file: Expected results for 'readelf -r'
+ * binutils-all/readelf.wi: New file: Expected results for 'readelf -wi'
+
+Wed Dec 9 19:11:39 1998 Jeffrey A Law (law@cygnus.com)
+
+ * binutils-all/objcopy.exp (copy_executable): Expect comparison
+ failure for mips*-*-elf.
+
+Fri Oct 16 22:57:12 1998 Felix Lee <flee@cygnus.com>
+
+ * binutils-all/objcopy.exp: fix "no symbols" message.
+
+Tue Jul 28 15:14:04 1998 Jeffrey A Law (law@cygnus.com)
+
+ * binutils-all/objcopy.exp: Keep "main" and "_main" for strip with
+ saving symbol tests. Look for either "main" or "_main" in the output
+ file. Fix test for "no symbols" in the output file.
+
+1998-07-22 Vladimir N. Makarov <vmakarov@cygnus.com>
+
+ * binutils-all/objcopy.exp: Polish output about fail for objcopy
+ (simple copy), strip with/without saving a symbol for object file
+ and executable.
+
+Wed Jul 1 16:27:40 1998 Nick Clifton <nickc@cygnus.com>
+
+ * binutils-all/objcopy.exp: ARM simple objcopy now passes.
+
+Wed Jun 24 09:20:21 1998 Nick Clifton <nickc@cygnus.com>
+
+ * binutils-all/objdump.exp: Look for '.data' rather than 'data'
+ when parsing output of objdump -h.
+ * binutils-all/size.exp: Look for '.data' rather than 'data' when
+ parsing output of size -A.
+
+1998-07-20 Vladimir N. Makarov <vmakarov@cygnus.com>
+
+ * binutils-all/objcopy.exp: Two new tests - strip object file with
+ saving a symbol and strip executable file with saving a symbol.
+
+Fri May 29 14:50:24 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Don't xfail the simple objcopy test
+ when cross compiling.
+
+Thu Nov 6 14:32:37 1997 Bob Manson <manson@charmed.cygnus.com>
+
+ * lib/utils-lib.exp: Temporary definition of target_assemble and
+ default_target_assemble so that testing can work with older
+ dejagnu versions.
+
+Wed Sep 24 12:09:15 1997 Bob Manson <manson@charmed.cygnus.com>
+
+ * binutils-all/objcopy.exp(strip_executable): Make a new copy of
+ the executable being tested.
+
+Mon Sep 15 21:25:20 1997 Bob Manson <manson@charmed.cygnus.com>
+
+ * binutils-all/objcopy.exp: Compile the executables to be tested
+ on the target with a status wrapper (as necessary).
+
+ * binutils-all/ar.exp: If testing on a remote host, don't bother
+ looking on the local host for the program being tested. Use the
+ correct filenames on the remote host.
+
+ * binutils-all/nm.exp: Ditto.
+
+ * binutils-all/size.exp: Ditto.
+
+ * binutils-all/objdump.exp: Ditto.
+ (cpus_expected): Add the target CPU to the regexp of CPUs to be
+ expected, if it's not already there.
+
+Thu Aug 28 09:57:27 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * binutils-all/objdump.exp (cpus_expected): Add arc.
+
+Tue Aug 5 00:03:20 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * config/default.exp: Look for nm-new and strip-new.
+
+Tue Jun 3 17:12:54 1997 Bob Manson <manson@charmed.cygnus.com>
+
+ * config/default.exp: Remove expect_before statement.
+
+ * binutils-all/objcopy.exp: Don't use global exec_output variable;
+ the output is returned from remote_load instead.
+
+Mon May 12 22:14:20 1997 Bob Manson <manson@charmed.cygnus.com>
+
+ * binutils-all/objcopy.exp(strip_test): Tests that
+ fail to compile are untested, not unresolved.
+ (copy_setup): Ditto.
+
+ * lib/utils-lib.exp(default_binutils_assemble): Call
+ target_assemble instead of target_compile.
+
+Wed Apr 30 20:37:51 1997 Bob Manson <manson@charmed.cygnus.com>
+
+ Changes to support multilib and remote hosted testing, along with
+ general cleanups and simplifications.
+
+ * lib/utils-lib.exp(binutil_version): Use remote_exec.
+ (default_binutils_run): Ditto.
+ (default_binutils_assemble): Remove first argument; call
+ target_compile to actually do the assembly.
+ (default_binutils_compile,default_binutils_remove,prune_warnings):
+ Delete.
+
+ * config/default.exp: Remove AS and ASFLAGS.
+ (binutils_compile,binutils_remove): Delete.
+ (binutils_assemble): Remove first argument.
+
+ * binutils-all/ar.exp: See if we're running the tests on
+ a remote host, and download/upload files as appropriate.
+ Replace calls to binutils_remove with remote_file. Replace
+ calls to binutils_compile with target_compile. Remove initial
+ argument to binutils_assemble. Use remote_load to execute
+ programs on the target.
+ * binutils-all/nm.exp: Ditto.
+ * binutils-all/objcopy.exp: Ditto.
+ * binutils-all/objdump.exp: Ditto.
+ * binutils-all/size.exp: Ditto.
+
+Mon Apr 14 12:36:41 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/ar.exp (long_filenames): Check for a file system
+ with a 14 character file name length limit.
+
+Tue Apr 1 09:52:15 1997 Jeffrey A Law (law@cygnus.com)
+
+ * binutils-all/objdump.exp: Handle d10v.
+
+Fri Feb 7 16:45:34 1997 Bob Manson <manson@charmed.cygnus.com>
+
+ * binutils-all/ar.exp: Use prune_warnings instead of
+ prune_system_crud.
+ * binutils-all/objcopy.exp: Ditto.
+
+Wed Jan 29 00:16:43 1997 Bob Manson <manson@charmed.cygnus.com>
+
+ * binutils-all/nm.exp: Use / between $srcdir and $subdir.
+ * binutils-all/objcopy.exp: Ditto.
+ * binutils-all/objdump.exp: Ditto.
+ * binutils-all/size.exp: Ditto.
+ * binutils-all/hppa/objdump.exp: Ditto.
+
+
+Wed Oct 16 22:57:59 1996 Jeffrey A Law (law@cygnus.com)
+
+ * binutils-all/objdump.exp: Add mn10200 and mn10300 to expected
+ cpus list.
+
+Tue Oct 1 15:06:55 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * lib/utils-lib.exp (binutil_version): Fix for current version
+ printing.
+
+Sun Aug 4 22:25:40 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Fix end of line matching in srec tests
+ to work with TCL 7.5.
+
+Sat Jun 29 12:51:30 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Simple copy test works for i960 b.out
+ targets.
+
+Mon Jun 24 14:33:04 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: On OSF/1, the simple copy test will
+ succeed with gas, and fail with /bin/as, so mark it as an expected
+ failure only if it fails.
+
+Tue Mar 26 16:55:08 1996 Jeffrey A Law (law@cygnus.com)
+
+ * binutils-all/objcopy.exp: No longer expect adjust-section-vma
+ test to fail for hppa*-*-proelf*.
+
+Mon Mar 11 08:25:14 1996 Jeffrey A Law (law@cygnus.com)
+
+ * binutils-all/objdump.exp: Look for "$CODE$", not just "CODE".
+
+Wed Jan 31 11:55:13 1996 Jeffrey A Law (law@cygnus.com)
+
+ * binutils-all/objcopy.exp: Expect adjust-section-vma tests to
+ fail for hppa*-*-proelf* targets.
+
+Thu Jan 25 13:53:04 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objdump.exp: Update for objdump -h format change.
+ * binutils-all/objcopy.exp: Likewise.
+
+Mon Jan 15 18:14:14 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Use the lma, not the vma, when testing
+ address adjustments.
+
+Fri Dec 15 16:31:55 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objdump.exp: Update objdump -i test for current
+ objdump output.
+
+Mon Nov 27 15:15:09 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Correct fail calls to always use the
+ same string as the pass call.
+
+Wed Nov 22 13:18:58 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * lib/utils-lib.exp (prune_system_crud): Discard -g -O warnings
+ from native compilers on OSF/1 and SunOS.
+
+Fri Nov 17 10:36:09 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * lib/utils-lib.exp (default_binutils_compiler: Change error
+ message to say compilation rather than assembly.
+
+Wed Nov 15 18:34:42 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * binutils-all/objcopy.exp: Simple copy test does appear to work
+ on i*86-svr4.
+
+Wed Nov 15 12:19:28 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: If assembly fails, call unresolved.
+ Test running objcopy and strip on a final executable.
+ * binutils-all/testprog.c: New file.
+ * config/default.exp (STRIP, STRIPFLAGS): Define.
+ (binutils_compile): New procedure.
+ * lib/utils-lib.exp (default_binutils_compile): New procedure.
+
+Fri Nov 3 13:22:33 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * lib/utils-lib.exp (default_binutils_run): Don't use verbose
+ -log, reverting part of Oct 2 change.
+
+Wed Nov 1 15:09:57 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
+
+ * binutils-all/objcopy.exp: Add setup_xfails for
+ m68*-motorola-sysv* and m88*-motorola-sysv*.
+
+Wed Oct 4 14:38:31 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/nm.exp: Add setup_xfails for XCOFF.
+
+Mon Oct 2 12:41:48 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/ar.exp: New file.
+ * binutils-all/bintest.s: Make text_symbol and data_symbol global.
+ Add new static symbols static_text_symbol and static_data_symbol.
+ * binutils-all/nm.exp: Adjust accordingly.
+ * config/default.exp (AR): Set if not set.
+ (binutils_remove): New procedure.
+ * lib/utils-lib.exp (default_binutils_run): Call
+ prune_system_crud on program output. Use verbose -log instead of
+ both verbose and send_log.
+ (default_binutils_remove): New procedure.
+
+ * lib/utils-lib.exp (default_binutils_assemble): Call
+ prune_system_crud on assembler output.
+
+Tue Sep 26 14:07:05 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Add setup_xfails for simple copy test
+ for i386 COFF targets.
+
+Wed Sep 13 13:20:21 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * lib/utils-lib.exp (prune_system_crud): Define if not defined.
+ * binutils-all/objcopy.exp: Call prune_system_crud on cmp output.
+
+Sat Aug 19 17:38:06 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Add xfail for i*86-*-aout* for simple
+ copy test.
+
+Wed Aug 16 16:52:53 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/nm.exp: Add setup_xfail for mips*-sony-bsd* for
+ tests which fail on ECOFF targets.
+
+ * binutils-all/objcopy.exp: Change i*86-*-linux xfail for simple
+ copy test to check for i*86-*-linuxaout* instead.
+
+Tue Aug 8 17:48:37 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Add setup_xfail for a29k-*-vxworks*
+ for simple copy test.
+
+Tue Jul 25 11:57:12 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Change setup_xfail for simple copy
+ test from i960-*-vxworks5.1 to i960-*-vxworks*.
+
+Mon Jul 10 12:25:46 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Add setup_xfail for z8*-*-coff for
+ simple copy test.
+ * binutils-all/objdump.exp (cpus_expected): Add z8001 and z8002.
+
+Sun May 21 20:32:53 1995 Jeff Law (law@snake.cs.utah.edu)
+
+ * binutils-all/hppa/objdump.exp (addendbug): Handle PA ELF targets
+ too.
+ * binutils-all/objcopy.exp (simple copy): Don't expect PA ELF
+ targets to fail.
+
+Tue Apr 4 14:52:08 1995 Jeff Law (law@snake.cs.utah.edu)
+
+ * binutils-all/hppa: Renamed from binutils-hppa.
+
+Wed Mar 29 12:02:43 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Add setup_xfail for simple copy test
+ for h8500-*-hms and h8500-*-coff.
+
+Tue Mar 28 11:18:28 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Add setup_xfail for simple copy test
+ for m68*-ericsson-ose and m88*-*-coff.
+
+Mon Mar 27 11:27:31 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objcopy.exp: Add setup_xfail for simple copy test
+ for m68*-*-vxworks*.
+
+Fri Mar 24 11:44:25 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-hppa/objdump.exp: Correct hppa*-*-* check.
+
+Tue Mar 21 10:48:45 1995 Jeff Law (law@snake.cs.utah.edu)
+
+ * binutils-hppa/addendbug.s: New testcase.
+ * binutils-hppa/objdump.exp: Run it.
+
+Mon Mar 20 11:31:05 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * lib/utils-lib.exp (default_binutils_run): Quote any dollar signs
+ in progargs before passing it to exec.
+
+Fri Mar 17 16:39:31 1995 Jeff Law (law@snake.cs.utah.edu)
+
+ * config/hppa.sed: Sed script to transform bintest.s into proper
+ PA assembly code.
+ * binutils-all/nm.exp: Enable these tests on the PA.
+ * binutils-all/objcopy.exp: Enable these tests on the PA. Expect
+ simple copy to fail.
+ * binutils-all/objdump.exp: Enable these tests on the PA. Handle
+ "CODE" as a section name.
+ * binutils-all/size.exp: Enable these tests on the PA.
+ * lib/utils-lib.exp (default_binutils_assemble): For "hppa*-*-*",
+ run the assembly through a sed script before passing it to the
+ assembler.
+
+Wed Mar 15 16:47:13 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/objdump.exp: Force section sizes to be interpreted
+ in hex. Change objdump -h failure mode to always use the same
+ string.
+
+Thu Jan 5 13:01:43 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils-all/nm.exp: Just check for irix4*, rather than
+ irix\[0-4\]*, to avoid DejaGnu bug.
+
+Thu Dec 15 19:35:31 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * binutils-all/objcopy.exp: Expect simple-objcopy test to fail
+ for various other targets for which gas doesn't use bfd: sh-hms,
+ m68k-hpux, m68k-sunos, m68k-coff, i386-linux, a29k-udi, a29k-coff,
+ i960-vxworks5.1, i960-coff, h8300-hms, h8300-coff.
+
+Wed Dec 14 15:54:46 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * binutils-all/size.exp: Skip tests requiring bintest.o on hppa,
+ since it (correctly) generates syntax errors on that platform.
+ * binutils-all/objdump.exp: Ditto.
+ * binutils-all/nm.exp: Ditto.
+ * binutils-all/objcopy.exp: Ditto. Also, move setup_xfail for
+ sh-coff to branch where objcopy execution produced no error
+ messages. Expect failure for hp300 also.
+
+Thu Dec 8 14:36:15 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * binutils-all/objdump.exp (cpus_expected): New variable, taken
+ from objdump -i test, added ns32k and powerpc, sorted.
+ (objdump -i, -f tests): Use $cpus_expected.
+
+ * binutils-all/objcopy.exp: For simple-copy test, expect failure
+ for sh-coff.
+
+Tue Oct 25 16:00:14 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * binutils-all/objcopy.exp: Adjust --adjust-section-vma tests for
+ new S-record section handling.
+
+Tue Oct 18 11:18:21 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * binutils-all/nm.exp: nm with no arguments and nm -P do not work
+ as expected on ECOFF targets; add calls to setup_xfail.
+
+ * binutils-all/objcopy.exp: New file.
+ * config/default.exp: Initialize OBJCOPY and OBJCOPYFLAGS.
+
+Fri Oct 14 14:46:22 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ Rewrite testsuite.
+ * configure.in, Makefile.in: Remove.
+ * binutils-all/configure.in, binutils-all/Makefile.in: Remove.
+ * binutils-all/bintest.c: Remove.
+ * binutils-all/bintest.s: New file.
+ * binutils-all/nm.exp, binutils-all/objdump.exp: Rewrite.
+ * binutils-all/size.exp: Rewrite.
+ * config/default.exp: Load utils-lib.exp. Set AS and ASFLAGS.
+ Don't go up one directory from $base_dir. Create tmpdir.
+ (binutils_run, binutils-assemble): New procedures.
+ * config/unix.exp: Remove.
+ * config/mt-a29k-udi, config/mt-i386-aout: Remove.
+ * config/mt-i960-nindy, config/mt-lynx, config/mt-m68k: Remove.
+ * config/mt-mips-ecoff, config/mt-slite: Remove.
+ * config/mt-sparc-aout, config/mt-vxworks: Remove.
+ * lib/utils-lib.exp (binutil_version): Don't redirect standard
+ input when getting version. Don't unset errorInfo.
+ (default_binutils_run): New procedure.
+ (default_binutils_assemble): New procedure.
+
+Thu Sep 29 12:45:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * VMS does not permit `.' in directory names: renamed binutils.all
+ to binutils-all.
+ * configure.in (configdirs): Change binutils.all to binutils-all.
+
+Fri Sep 23 16:01:14 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * configure.in: Use mt-m68k for m68k*-*-aout* and m68k*-*-coff*,
+ not for m68k-*-*.
+
+Fri Sep 23 13:54:50 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * binutils.all/objdump.exp: Added ARM to list of CPU types.
+
+Thu Sep 22 11:04:50 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * binutils.all/objdump.exp: Update for new usage message.
+ * binutils.all/size.exp: Use a double backslash in the string to
+ get a single backslash to the regexp matcher. Accept $TEXT$,
+ $DATA$ and $BSS$ as well as .text, .data and .bss, for HP/UX.
+
+Fri Sep 2 12:53:10 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * config/unix.exp: If nm.new does not exist, use [transform nm].
+ * config/default.exp: Likewise.
+
+Wed Aug 24 12:41:37 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * configure.in, binutils.all/configure.in: Change i386 to
+ i[345]86.
+
+Tue Jul 19 15:23:53 1994 Bill Cox (bill@rtl.cygnus.com)
+
+ * config/mt-mips-ecoff: Add -Tidp.ld option.
+
+Thu Jun 30 12:41:55 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
+
+ * config/default.exp: Use nm.new, not nm, from newly built tree.
+
+Tue May 17 14:04:05 1994 Bill Cox (bill@rtl.cygnus.com)
+
+ * config/default.exp, config/unix.exp: Replace error
+ proc calls with perror.
+
+Tue May 10 11:20:54 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * configure.in (sparclite): Match on sparclite*-*-*.
+
+Wed Apr 13 18:25:19 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * config/unix.exp: Use nm.new, not nm, from newly built tree.
+
+ * binutils.all/objdump.exp: Add more wildcards to list of
+ single-letter options in pattern for usage message.
+
+ * binutils.all/nm.exp: Deleted debug-symbols test, since it only
+ works for a.out/stabs systems. Fixed regexps to make underscores
+ optional, since some C compilers don't prepend them. Deleted
+ check for foo.o symbol, since again some systems don't generate
+ it.
+
+Mon Apr 11 10:31:00 1994 Bill Cox (bill@rtl.cygnus.com)
+
+ * Makefile.in (check): Set TCL_LIBRARY for runtest.
+
+Mon Feb 14 19:34:03 1994 Rob Savoye (rob@darkstar.cygnus.com)
+
+ * Makefile.in: Use new config features of DejaGnu in site.exp
+ file. "Make check" should now work for all crosses.
+
+Fri Jan 28 18:00:29 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * binutils.all/objdump.exp: In usage message, accept
+ "section-name" as well as "section_name".
+
+Mon Jan 17 16:57:02 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * binutils.all/objdump.exp: Trim list of format names expected,
+ and accept any known CPU type.
+
+Thu Dec 2 20:50:24 1993 Rob Savoye (rob@darkstar.cygnus.com)
+
+ * Makefile.in: Remove some stuff from the site.exp file.
+ * config/unix.exp: Add global before seeing if the variables for
+ nm, objdump, and size exist.
+
+Wed Nov 3 11:12:32 1993 Rob Savoye (rob@darkstar.cygnus.com)
+
+ * config/udi.exp,unix.exp: Transform tool name.
+ * binutils.all/*.exp: Clear errorInfo after exec.
+
+Fri Jul 2 12:41:20 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * binutils.all/*.exp: Use -- for long arguments rather than +.
+
+Fri Jun 4 10:52:29 1993 david d `zoo' zuhn (zoo@cirdan.cygnus.com)
+
+ * configure.in: change srctrigger to Makefile.in
+
+Wed May 26 17:27:46 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (FLAGS_TO_PASS): Pass down CC and CFLAGS.
+
+Fri May 7 13:58:44 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * binutils.all/objdump.exp: Update for new usage message.
+
+Mon Apr 19 14:08:52 1993 Rob Savoye (rob@darkstar.cygnus.com)
+
+ * binutils.all/*.exp: Use the new util_test proc.
+ * Makefile.in: Create a local site.exp file with config info.
+
+Thu Mar 25 05:38:47 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com)
+
+ * nm.all/configure.in (srcname): Delete extra quote.
+
+Mon Feb 22 07:54:03 1993 Mike Werner (mtw@poseidon.cygnus.com)
+
+ * binutils/testsuite: made modifications to testcases, etc., to allow
+ them to work properly given the reorganization of deja-gnu and the
+ relocation of the testcases from deja-gnu to a "tool" subdirectory.
+
+Sun Feb 21 10:55:55 1993 Mike Werner (mtw@poseidon.cygnus.com)
+
+ * binutils/testsuite: Initial creation of binutils/testsuite.
+ Migrated dejagnu testcases and support files for testing nm to
+ binutils/testsuite from deja-gnu. These files were moved "as is"
+ with no modifications. This migration is part of a major overhaul
+ of dejagnu. The modifications to these testcases, etc., which
+ will allow them to work with the new version of dejagnu will be
+ made in a future update.
+
+Copyright (C) 1993-2003 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/add-empty-section.d b/binutils-2.24/binutils/testsuite/binutils-all/add-empty-section.d
new file mode 100644
index 00000000..c9162a50
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/add-empty-section.d
@@ -0,0 +1,9 @@
+#PROG: objcopy
+#name: objcopy add-empty-section
+#source: empty.s
+#objcopy: --add-section NEW=$srcdir/empty-file
+#readelf: -S --wide
+
+#...
+ \[[ 0-9]+\] NEW[ \t]+PROGBITS[ \t]+[0-9a-f]+[ \t]+[0-9a-f]+[ \t]+0+[ \t]+[ \t0-9a-f]+
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/add-section.d b/binutils-2.24/binutils/testsuite/binutils-all/add-section.d
new file mode 100644
index 00000000..37a24cf5
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/add-section.d
@@ -0,0 +1,11 @@
+#PROG: objcopy
+#name: objcopy add-section
+#source: empty.s
+#objcopy: --add-section NEW=$srcdir/empty.s
+#objdump: -s -j NEW
+
+.*: +file format .*
+
+Contents of section NEW:
+ 0000 2320416e 20656d70 74792066 696c652e # An empty file.
+ 0010 0a .
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/alias-2.def b/binutils-2.24/binutils/testsuite/binutils-all/alias-2.def
new file mode 100644
index 00000000..ef41eec6
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/alias-2.def
@@ -0,0 +1,2 @@
+EXPORTS
+symbol=nothing ==something
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/alias.def b/binutils-2.24/binutils/testsuite/binutils-all/alias.def
new file mode 100644
index 00000000..d59d4a01
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/alias.def
@@ -0,0 +1,2 @@
+EXPORTS
+symbol=nothing
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/ar.exp b/binutils-2.24/binutils/testsuite/binutils-all/ar.exp
new file mode 100644
index 00000000..6efc1598
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/ar.exp
@@ -0,0 +1,575 @@
+# Copyright 1995, 1997, 2002, 2004, 2007, 2008, 2009, 2010, 2012
+# 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 3 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.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# Written by Ian Lance Taylor <ian@cygnus.com>
+
+if ![is_remote host] {
+ if {[which $AR] == 0} then {
+ perror "$AR does not exist"
+ return
+ }
+}
+
+# send_user "Version [binutil_version $AR]"
+
+# Test long file name support
+
+proc long_filenames { bfdtests } {
+ global AR
+ global host_triplet
+ global base_dir
+
+ set testname "ar long file names"
+
+ set n1 "abcdefghijklmnopqrstuvwxyz1"
+ set n2 "abcdefghijklmnopqrstuvwxyz2"
+ set file1 tmpdir/$n1
+ set file2 tmpdir/$n2
+
+ remote_file build delete $file1
+ remote_file host delete $n1
+
+ # Some file systems truncate file names at 14 characters, which
+ # makes it impossible to run this test. Check for that now.
+ set status [catch "set f [open tmpdir/$n1 w]" errs]
+ if { $status != 0 } {
+ verbose -log "open tmpdir/$n1 returned $errs"
+ unsupported $testname
+ return
+ }
+ puts $f "first"
+ close $f
+
+ remote_file build delete $file2
+ remote_file host delete $n2
+
+ set status [catch "set f [open tmpdir/$n2 w]" errs]
+ if { $status != 0 } {
+ verbose -log "open tmpdir/$n2 returned $errs"
+ unsupported $testname
+ return
+ }
+ puts $f "second"
+ close $f
+
+ if [is_remote host] {
+ set file1 [remote_download host $file1]
+ set file2 [remote_download host $file2]
+ set dest artest.a
+ } else {
+ set dest tmpdir/artest.a
+ }
+
+ remote_file host delete $dest
+
+ set got [binutils_run $AR "rc $dest $file1 $file2"]
+ if [is_remote host] {
+ remote_upload host $file1 tmpdir/$n1
+ }
+
+ set f [open tmpdir/$n1 r]
+ gets $f string
+ close $f
+ if ![string match "first" $string] {
+ verbose -log "reading tmpdir/$n1 returned $string"
+ unsupported $testname
+ return
+ }
+
+ remote_file host delete $dest
+ set got [binutils_run $AR "rc $dest $file1 $file2"]
+
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ remote_file build delete tmpdir/$n1
+ remote_file build delete tmpdir/$n2
+
+ set got [binutils_run $AR "t $dest"]
+ regsub "\[\r\n \t\]*$" "$got" "" got
+ if ![string match "$n1*$n2" $got] {
+ fail $testname
+ return
+ }
+
+ if [is_remote host] {
+ remote_file host delete $file1
+ remote_file host delete $file2
+ }
+
+ set exec_output [binutils_run $AR "x $dest"]
+ set exec_output [prune_warnings $exec_output]
+ if ![string match "" $exec_output] {
+ verbose -log $exec_output
+ fail $testname
+ return
+ }
+
+ foreach bfdtest $bfdtests {
+ set exec_output [binutils_run "$base_dir/$bfdtest" "$dest"]
+ if ![string match "" $exec_output] {
+ verbose -log $exec_output
+ fail "$testname ($bfdtest)"
+ return
+ }
+ }
+
+ if [is_remote host] {
+ remote_upload host $n1 tmpdir/$n1
+ remote_upload host $n2 tmpdir/$n2
+ set file1 tmpdir/$n1
+ set file2 tmpdir/$n2
+ } else {
+ set file1 $n1
+ set file2 $n2
+ }
+
+ if ![file exists $file1] {
+ verbose -log "$file1 does not exist"
+ fail $testname
+ return
+ }
+ if ![file exists $file2] {
+ verbose -log "$file2 does not exist"
+ fail $testname
+ return
+ }
+
+ set f [open $file1 r]
+ if { [gets $f line] == -1 || $line != "first" } {
+ verbose -log "$file1 contents:"
+ verbose -log "$line"
+ close $f
+ fail $testname
+ return
+ }
+ close $f
+
+ set f [open $file2 r]
+ if { [gets $f line] == -1 || $line != "second" } {
+ verbose -log "$file2 contents:"
+ verbose -log "$line"
+ close $f
+ fail $testname
+ return
+ }
+ close $f
+
+ file delete $file1 $file2
+ pass $testname
+}
+
+# Test building the symbol table.
+
+proc symbol_table { } {
+ global AR
+ global AS
+ global NM
+ global srcdir
+ global subdir
+
+ set testname "ar symbol table"
+
+ if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+ unresolved $testname
+ return
+ }
+
+ if [is_remote host] {
+ set archive artest.a
+ set objfile [remote_download host tmpdir/bintest.o]
+ remote_file host delete $archive
+ } else {
+ set archive tmpdir/artest.a
+ set objfile tmpdir/bintest.o
+ }
+
+ remote_file build delete tmpdir/artest.a
+
+ set got [binutils_run $AR "rc $archive ${objfile}"]
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ set got [binutils_run $NM "--print-armap $archive"]
+ if { ![string match "*text_symbol in bintest.o*" $got] \
+ || ![string match "*data_symbol in bintest.o*" $got] \
+ || ![string match "*common_symbol in bintest.o*" $got] \
+ || [string match "*static_text_symbol in bintest.o*" $got] \
+ || [string match "*static_data_symbol in bintest.o*" $got] \
+ || [string match "*external_symbol in bintest.o*" $got] } {
+ fail $testname
+ return
+ }
+
+ pass $testname
+}
+
+# Test building a thin archive.
+
+proc thin_archive { bfdtests } {
+ global AR
+ global AS
+ global NM
+ global srcdir
+ global subdir
+ global base_dir
+
+ set testname "ar thin archive"
+
+ if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+ unresolved $testname
+ return
+ }
+
+ if [is_remote host] {
+ set archive artest.a
+ set objfile [remote_download host tmpdir/bintest.o]
+ remote_file host delete $archive
+ } else {
+ set archive tmpdir/artest.a
+ set objfile tmpdir/bintest.o
+ }
+
+ remote_file build delete tmpdir/artest.a
+
+ set got [binutils_run $AR "rcT $archive ${objfile}"]
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ foreach bfdtest $bfdtests {
+ set exec_output [binutils_run "$base_dir/$bfdtest" "$archive"]
+ if ![string match "" $exec_output] {
+ verbose -log $exec_output
+ fail "$testname ($bfdtest)"
+ return
+ }
+ }
+
+ set got [binutils_run $NM "--print-armap $archive"]
+ if { ![string match "*text_symbol in *bintest.o*" $got] \
+ || ![string match "*data_symbol in *bintest.o*" $got] \
+ || ![string match "*common_symbol in *bintest.o*" $got] \
+ || [string match "*static_text_symbol in *bintest.o*" $got] \
+ || [string match "*static_data_symbol in *bintest.o*" $got] \
+ || [string match "*external_symbol in *bintest.o*" $got] } {
+ fail $testname
+ return
+ }
+
+ pass $testname
+}
+
+# Test building a thin archive with a nested archive.
+
+proc thin_archive_with_nested { bfdtests } {
+ global AR
+ global AS
+ global NM
+ global srcdir
+ global subdir
+ global base_dir
+
+ set testname "ar thin archive with nested archive"
+
+ if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+ unresolved $testname
+ return
+ }
+
+ if [is_remote host] {
+ set archive artest.a
+ set archive2 artest2.a
+ set objfile [remote_download host tmpdir/bintest.o]
+ remote_file host delete $archive
+ } else {
+ set archive tmpdir/artest.a
+ set archive2 tmpdir/artest2.a
+ set objfile tmpdir/bintest.o
+ }
+
+ remote_file build delete tmpdir/artest.a
+
+ set got [binutils_run $AR "rc $archive ${objfile}"]
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ remote_file build delete tmpdir/artest2.a
+
+ set got [binutils_run $AR "rcT $archive2 ${archive}"]
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ foreach bfdtest $bfdtests {
+ set exec_output [binutils_run "$base_dir/$bfdtest" "$archive"]
+ if ![string match "" $exec_output] {
+ verbose -log $exec_output
+ fail "$testname ($bfdtest)"
+ return
+ }
+
+ set exec_output [binutils_run "$base_dir/$bfdtest" "$archive2"]
+ if ![string match "" $exec_output] {
+ verbose -log $exec_output
+ fail "$testname ($bfdtest)"
+ return
+ }
+ }
+
+ set got [binutils_run $NM "--print-armap $archive"]
+ if { ![string match "*text_symbol in *bintest.o*" $got] \
+ || ![string match "*data_symbol in *bintest.o*" $got] \
+ || ![string match "*common_symbol in *bintest.o*" $got] \
+ || [string match "*static_text_symbol in *bintest.o*" $got] \
+ || [string match "*static_data_symbol in *bintest.o*" $got] \
+ || [string match "*external_symbol in *bintest.o*" $got] } {
+ fail $testname
+ return
+ }
+
+ pass $testname
+}
+
+# Test POSIX-compatible argument parsing.
+
+proc argument_parsing { } {
+ global AR
+ global AS
+ global srcdir
+ global subdir
+
+ set testname "ar argument parsing"
+
+ if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+ unresolved $testname
+ return
+ }
+
+ if [is_remote host] {
+ set archive artest.a
+ set objfile [remote_download host tmpdir/bintest.o]
+ remote_file host delete $archive
+ } else {
+ set archive tmpdir/artest.a
+ set objfile tmpdir/bintest.o
+ }
+
+ remote_file build delete tmpdir/artest.a
+
+ set got [binutils_run $AR "-r -c $archive ${objfile}"]
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ pass $testname
+}
+
+# Test building a deterministic archive.
+
+proc deterministic_archive { } {
+ global AR
+ global AS
+ global NM
+ global srcdir
+ global subdir
+
+ set testname "ar deterministic archive"
+
+ if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+ unresolved $testname
+ return
+ }
+
+ if [is_remote host] {
+ set archive artest.a
+ set objfile [remote_download host tmpdir/bintest.o]
+ remote_file host delete $archive
+ } else {
+ set archive tmpdir/artest.a
+ set objfile tmpdir/bintest.o
+ }
+
+ remote_file build delete tmpdir/artest.a
+
+ set got [binutils_run $AR "rcD $archive ${objfile}"]
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ set got [binutils_run $AR "tv $archive"]
+ # This only checks the file mode and uid/gid. We can't easily match
+ # date because it's printed with the user's timezone.
+ if ![string match "rw-r--r-- 0/0 *bintest.o*" $got] {
+ fail $testname
+ return
+ }
+
+ pass $testname
+}
+
+proc unique_symbol { } {
+ global AR
+ global AS
+ global NM
+ global srcdir
+ global subdir
+
+ set testname "ar unique symbol in archive"
+
+ if ![binutils_assemble $srcdir/$subdir/unique.s tmpdir/unique.o] {
+ unresolved $testname
+ }
+
+ if [is_remote host] {
+ set archive artest.a
+ set objfile [remote_download host tmpdir/unique.o]
+ remote_file host delete $archive
+ } else {
+ set archive tmpdir/artest.a
+ set objfile tmpdir/unique.o
+ }
+
+ remote_file build delete tmpdir/artest.a
+
+ set got [binutils_run $AR "-s -r -c $archive ${objfile}"]
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ set got [binutils_run $NM "--print-armap $archive"]
+ if ![string match "*foo in *unique.o*" $got] {
+ fail $testname
+ return
+ }
+
+ pass $testname
+}
+
+# Test deleting an element.
+
+proc delete_an_element { } {
+ global AR
+ global AS
+ global srcdir
+ global subdir
+
+ set testname "ar deleting an element"
+
+ if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+ unresolved $testname
+ return
+ }
+
+ if [is_remote host] {
+ set archive artest.a
+ set objfile [remote_download host tmpdir/bintest.o]
+ remote_file host delete $archive
+ } else {
+ set archive tmpdir/artest.a
+ set objfile tmpdir/bintest.o
+ }
+
+ remote_file build delete tmpdir/artest.a
+
+ set got [binutils_run $AR "-r -c $archive ${objfile}"]
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ set got [binutils_run $AR "-d $archive ${objfile}"]
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ pass $testname
+}
+
+# Test moving an element.
+
+proc move_an_element { } {
+ global AR
+ global AS
+ global srcdir
+ global subdir
+
+ set testname "ar moving an element"
+
+ if ![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o] {
+ unresolved $testname
+ return
+ }
+
+ if [is_remote host] {
+ set archive artest.a
+ set objfile [remote_download host tmpdir/bintest.o]
+ remote_file host delete $archive
+ } else {
+ set archive tmpdir/artest.a
+ set objfile tmpdir/bintest.o
+ }
+
+ remote_file build delete tmpdir/artest.a
+
+ set got [binutils_run $AR "-r -c $archive ${objfile}"]
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ set got [binutils_run $AR "-m $archive ${objfile}"]
+ if ![string match "" $got] {
+ fail $testname
+ return
+ }
+
+ pass $testname
+}
+
+# Run the tests.
+
+set bfdtests [list bfdtest1 bfdtest2]
+
+long_filenames $bfdtests
+symbol_table
+thin_archive $bfdtests
+thin_archive_with_nested $bfdtests
+argument_parsing
+deterministic_archive
+delete_an_element
+move_an_element
+if { [is_elf_format]
+ && ![istarget "*-*-hpux*"]
+ && ![istarget "msp*-*-*"] } {
+ unique_symbol
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/arm/objdump.exp b/binutils-2.24/binutils/testsuite/binutils-all/arm/objdump.exp
new file mode 100644
index 00000000..321e2a93
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/arm/objdump.exp
@@ -0,0 +1,89 @@
+# Copyright 2004, 2007, 2009
+# 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 3 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.
+
+if {![istarget "arm*-*-*"]} then {
+ return
+}
+
+if {![is_remote host] && [which $OBJDUMP] == 0} then {
+ perror "$OBJDUMP does not exist"
+ return
+}
+
+send_user "Version [binutil_version $OBJDUMP]"
+
+###########################
+# Set up the test of movem.s
+###########################
+
+if {![binutils_assemble $srcdir/$subdir/thumb2-cond.s tmpdir/thumb2-cond.o]} then {
+ return
+}
+
+if [is_remote host] {
+ set objfile [remote_download host tmpdir/thumb2-cond.o]
+} else {
+ set objfile tmpdir/thumb2-cond.o
+}
+
+# Make sure that conditional instructions are correctly decoded.
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS --disassemble --start-address=6 $objfile"]
+
+set want "bcc.w\[ \t\]*e12.*bx\[ \t\]*lr"
+
+if [regexp $want $got] then {
+ pass "thumb2-cond test1"
+} else {
+ fail "thumb2-cond test1"
+}
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS --disassemble --start-address=10 $objfile"]
+
+set want "bx\[ \t\]*lr"
+
+if [regexp $want $got] then {
+ pass "thumb2-cond test2"
+} else {
+ fail "thumb2-cond test2"
+}
+
+###########################
+# Set up the test of multiple disassemblies
+###########################
+
+if {![binutils_assemble $srcdir/$subdir/simple.s tmpdir/simple.o]} then {
+ return
+}
+
+if [is_remote host] {
+ set objfile [remote_download host tmpdir/simple.o]
+} else {
+ set objfile tmpdir/simple.o
+}
+
+# Make sure multiple disassemblies come out the same
+
+set got [binutils_run $OBJDUMP "-dr $objfile $objfile"]
+
+set want "$objfile:\[ \]*file format.*$objfile:\[ \]*file format.*push.*add.*sub.*str.*add.*ldmfd"
+
+if [regexp $want $got] then {
+ pass "multiple input files"
+} else {
+ fail "multiple input files"
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/arm/simple.s b/binutils-2.24/binutils/testsuite/binutils-all/arm/simple.s
new file mode 100644
index 00000000..df8dd2ab
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/arm/simple.s
@@ -0,0 +1,35 @@
+ .cpu arm7tdmi-s
+ .fpu softvfp
+ .file "y.c"
+ .bss
+ .align 2
+l:
+ .space 4
+ .text
+ .align 2
+ .global f1
+
+f1:
+ str fp, [sp, #-4]!
+ add fp, sp, #0
+ sub sp, sp, #12
+ str r0, [fp, #-8]
+ add sp, fp, #0
+ ldmfd sp!, {fp}
+ bx lr
+ .align 2
+ .word l
+
+ .align 2
+ .global main
+
+main:
+ stmfd sp!, {fp, lr}
+ add fp, sp, #4
+ bx lr
+ .align 2
+ .word 1717986919
+ .word -1840700269
+ .word l
+
+ .ident "GCC: (Sourcery G++ 2011.03) 4.5.1"
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/arm/thumb2-cond.s b/binutils-2.24/binutils/testsuite/binutils-all/arm/thumb2-cond.s
new file mode 100644
index 00000000..b9de4428
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/arm/thumb2-cond.s
@@ -0,0 +1,8 @@
+ .arch armv7
+ .syntax unified
+ .thumb
+foo:
+ bl 1f
+1: it cc
+ bcc.w .+0xe0c
+ bx lr
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/bfin/objdump.exp b/binutils-2.24/binutils/testsuite/binutils-all/bfin/objdump.exp
new file mode 100644
index 00000000..df7d4da8
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/bfin/objdump.exp
@@ -0,0 +1,53 @@
+# Copyright 2009
+# 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 3 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.
+
+if {![istarget "bfin-*-*"]} then {
+ return
+}
+
+if {[which $OBJDUMP] == 0} then {
+ perror "$OBJDUMP does not exist"
+ return
+}
+
+send_user "Version [binutil_version $OBJDUMP]"
+
+###################################
+# Set up the test of unknown-mode.s
+###################################
+
+if {![binutils_assemble $srcdir/$subdir/unknown-mode.s tmpdir/unknown-mode.o]} then {
+ return
+}
+
+if [is_remote host] {
+ set objfile [remote_download host tmpdir/unknown-mode.o]
+} else {
+ set objfile tmpdir/unknown-mode.o
+}
+
+# Make sure that the unknown mode does not cause abort.
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -D $objfile"]
+
+set want "e1 c1\[ \t\]*ILLEGAL.*34 98 .*\[\r\n\]"
+
+if [regexp $want $got] then {
+ pass "unknown mode test"
+} else {
+ fail "unknown mode test"
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/bfin/unknown-mode.s b/binutils-2.24/binutils/testsuite/binutils-all/bfin/unknown-mode.s
new file mode 100644
index 00000000..3c477f27
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/bfin/unknown-mode.s
@@ -0,0 +1,8 @@
+ .text
+
+ // Below 4 bytes are "A1 += R6.H * R4.L (IS);"
+ // with a invalid mode "0xf".
+ .byte 0xe1
+ .byte 0xc1
+ .byte 0x34
+ .byte 0x98
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/bintest.s b/binutils-2.24/binutils/testsuite/binutils-all/bintest.s
new file mode 100644
index 00000000..9e006502
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/bintest.s
@@ -0,0 +1,12 @@
+ .globl text_symbol
+ .text
+text_symbol:
+static_text_symbol:
+ .long 1
+ .long external_symbol
+ .globl data_symbol
+ .data
+data_symbol:
+static_data_symbol:
+ .long 2
+ .comm common_symbol,4
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/compress.exp b/binutils-2.24/binutils/testsuite/binutils-all/compress.exp
new file mode 100644
index 00000000..8cf61385
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/compress.exp
@@ -0,0 +1,176 @@
+# Copyright 2010, 2012
+# 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 3 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 compressed .debug section.
+
+if { [is_remote host] || ![is_elf_format] || ![is_zlib_supported] } then {
+ return
+}
+
+set testfile tmpdir/dw2-1.o
+set compressedfile tmpdir/dw2-1-compressed.o
+set copyfile tmpdir/dw2-copy
+set compressedfile2 tmpdir/dw2-2-compressed.o
+set libfile tmpdir/libdw2.a
+set compressedcopyfile tmpdir/dw2-copy-compressed
+
+if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S $testfile --nocompress-debug-sections] } then {
+ unsupported "compressed debug sections"
+ return
+}
+
+if { ![binutils_assemble_flags $srcdir/$subdir/dw2-1.S $compressedfile --compress-debug-sections] } then {
+ unsupported "compressed debug sections"
+ return
+}
+
+if { ![binutils_assemble_flags $srcdir/$subdir/dw2-2.S $compressedfile2 --compress-debug-sections] } then {
+ unsupported "compressed debug sections"
+ return
+}
+
+remote_file host delete $libfile
+set got [binutils_run $AR "rc $libfile $compressedfile $compressedfile2"]
+if ![string match "" $got] then {
+ fail "compressed debug sections"
+ return
+}
+
+set testname "objcopy compress debug sections"
+set got [binutils_run $OBJCOPY "--compress-debug-sections $testfile ${copyfile}.o"]
+if ![string match "" $got] then {
+ fail "objcopy ($testname)"
+} else {
+ send_log "cmp $compressedfile ${copyfile}.o\n"
+ verbose "cmp $compressedfile ${copyfile}.o"
+ set src1 ${compressedfile}
+ set src2 ${copyfile}.o
+ set status [remote_exec build cmp "${src1} ${src2}"]
+ set exec_output [lindex $status 1]
+ set exec_output [prune_warnings $exec_output]
+
+ if [string match "" $exec_output] then {
+ pass "objcopy ($testname)"
+ } else {
+ send_log "$exec_output\n"
+ verbose "$exec_output" 1
+ fail "objcopy ($testname)"
+ }
+}
+
+set testname "objcopy decompress compressed debug sections"
+set got [binutils_run $OBJCOPY "--decompress-debug-sections $compressedfile ${copyfile}.o"]
+if ![string match "" $got] then {
+ fail "objcopy ($testname)"
+} else {
+ send_log "cmp $testfile ${copyfile}.o\n"
+ verbose "cmp $testfile ${copyfile}.o"
+ set src1 ${testfile}
+ set src2 ${copyfile}.o
+ set status [remote_exec build cmp "${src1} ${src2}"]
+ set exec_output [lindex $status 1]
+ set exec_output [prune_warnings $exec_output]
+
+ if [string match "" $exec_output] then {
+ pass "objcopy ($testname)"
+ } else {
+ send_log "$exec_output\n"
+ verbose "$exec_output" 1
+ fail "objcopy ($testname)"
+ }
+}
+
+set testname "objcopy decompress debug sections in archive"
+set got [binutils_run $OBJCOPY "--decompress-debug-sections $libfile ${copyfile}.a"]
+if ![string match "" $got] then {
+ fail "objcopy ($testname)"
+} else {
+ set got [remote_exec host "$READELF -S --wide ${copyfile}.a" "" "/dev/null" "tmpdir/libdw2.out"]
+
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ fail "$testname (reason: unexpected output)"
+ send_log $got
+ send_log "\n"
+ }
+
+ if { [regexp_diff tmpdir/libdw2.out $srcdir/$subdir/libdw2.out] } then {
+ fail "$testname"
+ } else {
+ pass "$testname"
+ }
+}
+
+set testname "objcopy compress debug sections in archive"
+set got [binutils_run $OBJCOPY "--compress-debug-sections ${copyfile}.a ${compressedcopyfile}.a"]
+if ![string match "" $got] then {
+ fail "objcopy ($testname)"
+} else {
+ set got [remote_exec host "$OBJDUMP -s -j .zdebug_line ${compressedcopyfile}.a" "" "/dev/null" "tmpdir/libdw2-compressed.out"]
+
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ fail "$testname (reason: unexpected output)"
+ send_log $got
+ send_log "\n"
+ }
+
+ if { [regexp_diff tmpdir/libdw2-compressed.out $srcdir/$subdir/libdw2-compressed.out] } then {
+ fail "$testname"
+ } else {
+ pass "$testname"
+ }
+}
+
+set testname "objdump compress debug sections"
+set got [remote_exec host "$OBJDUMP -W $compressedfile" "" "/dev/null" "objdump.out"]
+if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ fail "$testname"
+ send_log "$got\n"
+}
+if { [regexp_diff objdump.out $srcdir/$subdir/dw2-1.W] } then {
+ fail "$testname"
+} else {
+ pass "$testname"
+}
+
+set testfile tmpdir/dw2-emty.o
+
+if { ![binutils_assemble_flags $srcdir/$subdir/dw2-empty.S $testfile --nocompress-debug-sections] } then {
+ unsupported "compressed debug sections"
+ return
+}
+
+set testname "objcopy compress empty debug sections"
+set got [binutils_run $OBJCOPY "--compress-debug-sections $testfile ${copyfile}.o"]
+if ![string match "" $got] then {
+ fail "objcopy ($testname)"
+} else {
+ send_log "cmp $testfile ${copyfile}.o\n"
+ verbose "cmp $testfile ${copyfile}.o"
+ set src1 ${testfile}
+ set src2 ${copyfile}.o
+ set status [remote_exec build cmp "${src1} ${src2}"]
+ set exec_output [lindex $status 1]
+ set exec_output [prune_warnings $exec_output]
+
+ if [string match "" $exec_output] then {
+ pass "objcopy ($testname)"
+ } else {
+ send_log "$exec_output\n"
+ verbose "$exec_output" 1
+ fail "objcopy ($testname)"
+ }
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/copy-1.d b/binutils-2.24/binutils/testsuite/binutils-all/copy-1.d
new file mode 100644
index 00000000..f2b0d9e9
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/copy-1.d
@@ -0,0 +1,13 @@
+#PROG: objcopy
+#objdump: -h
+#objcopy: --set-section-flags .post_text_reserve=contents,alloc,load,readonly,code
+#name: copy with setting section flags 1
+
+.*: +file format .*
+
+Sections:
+Idx.*
+#...
+ [0-9]* .post_text_reserve.*
+ CONTENTS, ALLOC, LOAD, READONLY, CODE
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/copy-1.s b/binutils-2.24/binutils/testsuite/binutils-all/copy-1.s
new file mode 100644
index 00000000..32864de7
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/copy-1.s
@@ -0,0 +1,6 @@
+ .globl text_symbol
+ .text
+text_symbol:
+ .long 1
+ .section .post_text_reserve,"w", %nobits
+ .space 160
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/copy-2.d b/binutils-2.24/binutils/testsuite/binutils-all/copy-2.d
new file mode 100644
index 00000000..5636ff62
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/copy-2.d
@@ -0,0 +1,18 @@
+#PROG: objcopy
+#objdump: -h
+#objcopy: --set-section-flags foo=contents,alloc,load,code
+#name: copy with setting section flags 2
+#source: copytest.s
+#not-target: *-*-*aout *-*-aix* h8300-*-* hppa*-*-hpux* m68k-*-netbsd m68k-*-openbsd* mips-sony-bsd* mips-*-ultrix* mips-*-osf* mips-*-ecoff* mips-*-irix mips-*-irix[2-4] mips-*-riscos* ns32k-*-netbsd
+# Note - we use copytest.s and a section named "foo" rather
+# than .text because for some file formats (eg PE) the .text
+# section has a fixed set of flags and these cannot be changed.
+
+.*: +file format .*
+
+Sections:
+Idx.*
+#...
+ [0-9]* foo.*
+ CONTENTS, ALLOC, LOAD, CODE
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/copy-3.d b/binutils-2.24/binutils/testsuite/binutils-all/copy-3.d
new file mode 100644
index 00000000..655986af
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/copy-3.d
@@ -0,0 +1,17 @@
+#PROG: objcopy
+#objdump: -h
+#objcopy: --set-section-flags .text=alloc,data
+#name: copy with setting section flags 3
+#source: bintest.s
+#not-target: *-*-*aout *-*-*pe *-*-*coff hppa*-*-hpux* *-*-cygwin* *-*-mingw* m68k-*-netbsd m68k-*-openbsd* ns32k-*-netbsd rs6000-*-*
+# The .text # section in PE/COFF has a fixed set of flags and these
+# cannot be changed. We skip it for them.
+
+.*: +file format .*
+
+Sections:
+Idx.*
+#...
+ [0-9]* .text.*
+ CONTENTS, ALLOC, LOAD, RELOC, DATA
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/copy-4.d b/binutils-2.24/binutils/testsuite/binutils-all/copy-4.d
new file mode 100644
index 00000000..41fccf00
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/copy-4.d
@@ -0,0 +1,9 @@
+#PROG: strip
+#source: bintest.s
+#strip: --strip-unneeded
+#nm: -n
+#name: strip --strip-unneeded on common symbol
+
+#...
+0+04 C common_symbol
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/copytest.s b/binutils-2.24/binutils/testsuite/binutils-all/copytest.s
new file mode 100644
index 00000000..33c13b88
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/copytest.s
@@ -0,0 +1,7 @@
+ .globl foo_symbol
+ .section foo
+foo_symbol:
+ .long 1
+ .section bar
+bar_symbol:
+ .long 2
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/dlltool.exp b/binutils-2.24/binutils/testsuite/binutils-all/dlltool.exp
new file mode 100644
index 00000000..1409d3cf
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/dlltool.exp
@@ -0,0 +1,282 @@
+# Copyright 2002, 2004, 2006, 2007, 2009 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 3 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.
+
+if {![istarget "i*86-*-*"]
+ && ![istarget "x86_64-*-mingw*"]
+ && ![istarget "arm-*-pe*"]} {
+ return
+}
+
+if {![istarget "i*86-*-*pe*"] \
+ && ![istarget "i*86-*-cygwin*"] \
+ && ![istarget "i*86-*-mingw32*"] \
+ && ![istarget "arm-*-pe*"] \
+ && ![istarget "x86_64-*-mingw*"] } {
+ set target_xfail "yes"
+} else {
+ set target_xfail "no"
+}
+
+if {![info exists DLLTOOL]} then {
+ return
+}
+
+if {[which $DLLTOOL] == 0} then {
+ return
+}
+
+verbose "$DLLTOOL --leading-underscore -d $srcdir/$subdir/fastcall.def" 1
+catch "exec $DLLTOOL --leading-underscore -d $srcdir/$subdir/fastcall.def" err
+
+if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "dlltool (fastcall export)"
+} else {
+ pass "dlltool (fastcall export)"
+}
+
+if { "$target_xfail" == "yes" } {
+ setup_xfail *-*
+}
+
+verbose "$DLLTOOL -l libversion.a --def $srcdir/$subdir/version.def" 1
+catch "exec $DLLTOOL -l libersion.a --def $srcdir/$subdir/version.def" err
+
+if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "dlltool (version.dll)"
+} else {
+ pass "dlltool (version.dll)"
+}
+
+if { "$target_xfail" == "yes" } {
+ setup_xfail *-*
+}
+
+verbose "$DLLTOOL -p prefix --leading-underscore -l tmpdir/libalias.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" 1
+catch "exec $DLLTOOL -p prefix --leading-underscore -l tmpdir/libalias.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" err
+
+if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "dlltool -p (execution)"
+ continue
+}
+
+pass "dlltool -p (execution)"
+
+set got [binutils_run $NM "tmpdir/libalias.a"]
+set want "00000000 I __imp__prefix_symbol.*00000000 T _prefix_symbol.*00000000 I __imp__symbol.*00000000 T _symbol"
+
+if [regexp $want $got] then {
+ pass "dlltool -p (symbol names)"
+} else {
+ fail "dlltool -p (symbol names)"
+}
+
+set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias.a"]
+set want "(Contents of section .idata\\\$6:.*\\.\\.symbol\\.\\..*){2,2}"
+
+if [regexp $want $got] then {
+ pass "dlltool -p (import name)"
+} else {
+ fail "dlltool -p (import name)"
+}
+
+verbose "$DLLTOOL -p prefix --leading-underscore -l tmpdir/libalias2.a -d $srcdir/$subdir/alias-2.def $dlltool_gas_flag" 1
+catch "exec $DLLTOOL -p prefix --leading-underscore -l tmpdir/libalias2.a -d $srcdir/$subdir/alias-2.def $dlltool_gas_flag" err
+
+if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "dlltool -p (execution) alias-2.def"
+ continue
+}
+
+pass "dlltool -p (execution) alias-2.def"
+
+set got [binutils_run $NM "tmpdir/libalias2.a"]
+set want "00000000 I __imp__prefix_symbol.*00000000 T _prefix_symbol.*00000000 I __imp__symbol.*00000000 T _symbol"
+
+if [regexp $want $got] then {
+ pass "dlltool -p (symbol names) alias-2.def"
+} else {
+ fail "dlltool -p (symbol names) alias-2.def"
+}
+
+set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias2.a"]
+set want "(Contents of section .idata\\\$6:.*\\.\\.something\\..*){2,2}"
+
+if [regexp $want $got] then {
+ pass "dlltool -p (import name) alias-2.def"
+} else {
+ fail "dlltool -p (import name) alias-2.def"
+}
+
+# Here we test explicit without leading underscore
+
+verbose "$DLLTOOL --no-leading-underscore -d $srcdir/$subdir/fastcall.def" 1
+catch "exec $DLLTOOL --no-leading-underscore -d $srcdir/$subdir/fastcall.def" err
+
+if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "dlltool (fastcall export no leading underscore)"
+} else {
+ pass "dlltool (fastcall export no leading underscore)"
+}
+
+if { "$target_xfail" == "yes" } {
+ setup_xfail *-*
+}
+
+verbose "$DLLTOOL --no-leading-underscore -p prefix -l tmpdir/libalias_nu.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" 1
+catch "exec $DLLTOOL --no-leading-underscore -p prefix -l tmpdir/libalias_nu.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" err
+
+if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "dlltool -p (execution no leading underscore)"
+ continue
+}
+
+pass "dlltool -p (execution no leading underscore)"
+
+set got [binutils_run $NM "tmpdir/libalias_nu.a"]
+set want "00000000 I __imp_prefixsymbol.*00000000 T prefixsymbol.*00000000 I __imp_symbol.*00000000 T symbol"
+
+if [regexp $want $got] then {
+ pass "dlltool -p (symbol names no leading underscore)"
+} else {
+ fail "dlltool -p (symbol names no leading underscore)"
+}
+
+set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias_nu.a"]
+set want "(Contents of section .idata\\\$6:.*\\.\\.symbol\\.\\..*){2,2}"
+
+if [regexp $want $got] then {
+ pass "dlltool -p (import name no leading underscore)"
+} else {
+ fail "dlltool -p (import name no leading underscore)"
+}
+
+verbose "$DLLTOOL --no-leading-underscore -p prefix -l tmpdir/libalias_nu2.a -d $srcdir/$subdir/alias-2.def $dlltool_gas_flag" 1
+catch "exec $DLLTOOL --no-leading-underscore -p prefix -l tmpdir/libalias_nu2.a -d $srcdir/$subdir/alias-2.def $dlltool_gas_flag" err
+
+if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "dlltool -p (execution no leading underscore) alias-2.def"
+ continue
+}
+
+pass "dlltool -p (execution no leading underscore) alias-2.def"
+
+set got [binutils_run $NM "tmpdir/libalias_nu2.a"]
+set want "00000000 I __imp_prefixsymbol.*00000000 T prefixsymbol.*00000000 I __imp_symbol.*00000000 T symbol"
+
+if [regexp $want $got] then {
+ pass "dlltool -p (symbol names no leading underscore) alias-2.def"
+} else {
+ fail "dlltool -p (symbol names no leading underscore) alias-2.def"
+}
+
+set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias_nu2.a"]
+set want "(Contents of section .idata\\\$6:.*\\.\\.something\\..*){2,2}"
+
+if [regexp $want $got] then {
+ pass "dlltool -p (import name no leading underscore) alias-2.def"
+} else {
+ fail "dlltool -p (import name no leading underscore) alias-2.def"
+}
+
+# Now we test with leading underscore
+verbose "$DLLTOOL --leading-underscore -d $srcdir/$subdir/fastcall.def" 1
+catch "exec $DLLTOOL --leading-underscore -d $srcdir/$subdir/fastcall.def" err
+
+if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "dlltool (fastcall export leading underscore)"
+} else {
+ pass "dlltool (fastcall export leading underscore)"
+}
+
+if { "$target_xfail" == "yes" } {
+ setup_xfail *-*
+}
+
+verbose "$DLLTOOL --leading-underscore -p prefix -l tmpdir/libalias_u.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" 1
+catch "exec $DLLTOOL --leading-underscore -p prefix -l tmpdir/libalias_u.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" err
+
+if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "dlltool -p (execution leading underscore)"
+ continue
+}
+
+pass "dlltool -p (execution leading-underscore)"
+
+set got [binutils_run $NM "tmpdir/libalias_u.a"]
+set want "00000000 I __imp__prefix_symbol.*00000000 T _prefix_symbol.*00000000 I __imp__symbol.*00000000 T _symbol"
+
+if [regexp $want $got] then {
+ pass "dlltool -p (symbol names leading underscore)"
+} else {
+ fail "dlltool -p (symbol names leading underscore)"
+}
+
+set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias_u.a"]
+set want "(Contents of section .idata\\\$6:.*\\.\\.symbol\\..*){2,2}"
+
+if [regexp $want $got] then {
+ pass "dlltool -p (import name leading underscore)"
+} else {
+ fail "dlltool -p (import name leading underscore)"
+}
+
+verbose "$DLLTOOL --leading-underscore -p prefix -l tmpdir/libalias_u2.a -d $srcdir/$subdir/alias-2.def $dlltool_gas_flag" 1
+catch "exec $DLLTOOL --leading-underscore -p prefix -l tmpdir/libalias_u2.a -d $srcdir/$subdir/alias-2.def $dlltool_gas_flag" err
+
+if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "dlltool -p (execution) alias-2.def"
+ continue
+}
+
+pass "dlltool -p (execution leading underscore) alias-2.def"
+
+set got [binutils_run $NM "tmpdir/libalias_u2.a"]
+set want "00000000 I __imp__prefix_symbol.*00000000 T _prefix_symbol.*00000000 I __imp__symbol.*00000000 T _symbol"
+
+if [regexp $want $got] then {
+ pass "dlltool -p (symbol names leading underscore) alias-2.def"
+} else {
+ fail "dlltool -p (symbol names leading underscore) alias-2.def"
+}
+
+set got [binutils_run $OBJDUMP "-s -j .idata\$6 tmpdir/libalias_u2.a"]
+set want "(Contents of section .idata\\\$6:.*\\.\\.something\\..*){2,2}"
+
+if [regexp $want $got] then {
+ pass "dlltool -p (import name leading underscore) alias-2.def"
+} else {
+ fail "dlltool -p (import name leading underscore) alias-2.def"
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/dumptest.s b/binutils-2.24/binutils/testsuite/binutils-all/dumptest.s
new file mode 100644
index 00000000..6335d22b
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/dumptest.s
@@ -0,0 +1,2 @@
+ .data
+ .ascii "test_string"
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/dw2-1.S b/binutils-2.24/binutils/testsuite/binutils-all/dw2-1.S
new file mode 100644
index 00000000..ab12be60
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/dw2-1.S
@@ -0,0 +1,198 @@
+/* This testcase is derived from a similar test in GDB.
+
+ Copyright 2008, 2009, 2010 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Dummy function to provide debug information for. */
+
+ .text
+ .globl _start
+_start:
+ .int 0
+.Lbegin_text1:
+ .globl func_cu1
+ .type func_cu1, %function
+func_cu1:
+.Lbegin_func_cu1:
+ .int 0
+.Lend_func_cu1:
+ .size func_cu1, .-func_cu1
+.Lend_text1:
+
+/* Debug information */
+
+ .section .debug_info
+.Lcu1_begin:
+ /* CU header */
+ .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */
+.Lcu1_start:
+ .2byte 2 /* DWARF Version */
+ .4byte .Labbrev1_begin /* Offset into abbrev section */
+ .byte 4 /* Pointer size */
+
+ /* CU die */
+ .uleb128 1 /* Abbrev: DW_TAG_compile_unit */
+ .4byte .Lline1_begin /* DW_AT_stmt_list */
+ .4byte .Lend_text1 /* DW_AT_high_pc */
+ .4byte .Lbegin_text1 /* DW_AT_low_pc */
+ .ascii "file1.txt\0" /* DW_AT_name */
+ .ascii "GNU C 3.3.3\0" /* DW_AT_producer */
+ .byte 1 /* DW_AT_language (C) */
+
+ /* func_cu1 */
+ .uleb128 2 /* Abbrev: DW_TAG_subprogram */
+ .byte 1 /* DW_AT_external */
+ .byte 1 /* DW_AT_decl_file */
+ .byte 2 /* DW_AT_decl_line */
+ .ascii "func_cu1\0" /* DW_AT_name */
+ .4byte .Ltype_int-.Lcu1_begin /* DW_AT_type */
+ .4byte .Lbegin_func_cu1 /* DW_AT_low_pc */
+ .4byte .Lend_func_cu1 /* DW_AT_high_pc */
+ .byte 1 /* DW_AT_frame_base: length */
+ .byte 0x55 /* DW_AT_frame_base: DW_OP_reg5 */
+
+.Ltype_int:
+ .uleb128 3 /* Abbrev: DW_TAG_base_type */
+ .ascii "int\0" /* DW_AT_name */
+ .byte 4 /* DW_AT_byte_size */
+ .byte 5 /* DW_AT_encoding */
+
+ .byte 0 /* End of children of CU */
+
+.Lcu1_end:
+
+/* Line table */
+ .section .debug_line
+.Lline1_begin:
+ .4byte .Lline1_end - .Lline1_start /* Initial length */
+.Lline1_start:
+ .2byte 2 /* Version */
+ .4byte .Lline1_lines - .Lline1_hdr /* header_length */
+.Lline1_hdr:
+ .byte 1 /* Minimum insn length */
+ .byte 1 /* default_is_stmt */
+ .byte 1 /* line_base */
+ .byte 1 /* line_range */
+ .byte 0x10 /* opcode_base */
+
+ /* Standard lengths */
+ .byte 0
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+
+ /* Include directories */
+ .byte 0
+
+ /* File names */
+ .ascii "file1.txt\0"
+ .uleb128 0
+ .uleb128 0
+ .uleb128 0
+
+ .byte 0
+
+.Lline1_lines:
+ .byte 0 /* DW_LNE_set_address */
+ .uleb128 5
+ .byte 2
+ .4byte .Lbegin_func_cu1
+
+ .byte 3 /* DW_LNS_advance_line */
+ .sleb128 3 /* ... to 4 */
+
+ .byte 1 /* DW_LNS_copy */
+
+ .byte 1 /* DW_LNS_copy (second time as an end-of-prologue marker) */
+
+ .byte 0 /* DW_LNE_set_address */
+ .uleb128 5
+ .byte 2
+ .4byte .Lend_func_cu1
+
+ .byte 0 /* DW_LNE_end_of_sequence */
+ .uleb128 1
+ .byte 1
+
+.Lline1_end:
+
+/* Abbrev table */
+ .section .debug_abbrev
+.Labbrev1_begin:
+ .uleb128 1 /* Abbrev code */
+ .uleb128 0x11 /* DW_TAG_compile_unit */
+ .byte 1 /* has_children */
+ .uleb128 0x10 /* DW_AT_stmt_list */
+ .uleb128 0x6 /* DW_FORM_data4 */
+ .uleb128 0x12 /* DW_AT_high_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x11 /* DW_AT_low_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x25 /* DW_AT_producer */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x13 /* DW_AT_language */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .uleb128 2 /* Abbrev code */
+ .uleb128 0x2e /* DW_TAG_subprogram */
+ .byte 0 /* has_children */
+ .uleb128 0x3f /* DW_AT_external */
+ .uleb128 0xc /* DW_FORM_flag */
+ .uleb128 0x3a /* DW_AT_decl_file */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .uleb128 0x3b /* DW_AT_decl_line */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x49 /* DW_AT_type */
+ .uleb128 0x13 /* DW_FORM_ref4 */
+ .uleb128 0x11 /* DW_AT_low_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x12 /* DW_AT_high_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x40 /* DW_AT_frame_base */
+ .uleb128 0xa /* DW_FORM_block1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .uleb128 3 /* Abbrev code */
+ .uleb128 0x24 /* DW_TAG_base_type */
+ .byte 0 /* has_children */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0xb /* DW_AT_byte_size */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .uleb128 0x3e /* DW_AT_encoding */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/dw2-1.W b/binutils-2.24/binutils/testsuite/binutils-all/dw2-1.W
new file mode 100644
index 00000000..85ce9dd0
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/dw2-1.W
@@ -0,0 +1,103 @@
+
+.*dw2-1-compressed.o: file format .*
+
+Contents of the .debug_info section:
+
+ Compilation Unit @ offset 0x0:
+ Length: 0x4e \(32-bit\)
+ Version: 2
+ Abbrev Offset: 0x0
+ Pointer Size: 4
+ <0><b>: Abbrev Number: 1 \(DW_TAG_compile_unit\)
+ <c> DW_AT_stmt_list : 0x0
+ <10> DW_AT_high_pc : 0x.
+ <14> DW_AT_low_pc : 0x.
+ <18> DW_AT_name : file1.txt
+ <22> DW_AT_producer : GNU C 3.3.3
+ <2e> DW_AT_language : 1 \(ANSI C\)
+ <1><2f>: Abbrev Number: 2 \(DW_TAG_subprogram\)
+ <30> DW_AT_external : 1
+ <31> DW_AT_decl_file : 1
+ <32> DW_AT_decl_line : 2
+ <33> DW_AT_name : func_cu1
+ <3c> DW_AT_type : <0x4a>
+ <40> DW_AT_low_pc : 0x.
+ <44> DW_AT_high_pc : 0x.
+ <48> DW_AT_frame_base : 1 byte block: 55 \(DW_OP_reg5 \([^()]*\)\)
+ <1><4a>: Abbrev Number: 3 \(DW_TAG_base_type\)
+ <4b> DW_AT_name : int
+ <4f> DW_AT_byte_size : 4
+ <50> DW_AT_encoding : 5 \(signed\)
+ <1><51>: Abbrev Number: 0
+
+Raw dump of debug contents of section .debug_line:
+
+ Offset: 0x0
+ Length: 62
+ DWARF Version: 2
+ Prologue Length: 35
+ Minimum Instruction Length: 1
+ Initial value of 'is_stmt': 1
+ Line Base: 1
+ Line Range: 1
+ Opcode Base: 16
+
+ Opcodes:
+ Opcode 1 has 0 args
+ Opcode 2 has 1 args
+ Opcode 3 has 1 args
+ Opcode 4 has 1 args
+ Opcode 5 has 1 args
+ Opcode 6 has 0 args
+ Opcode 7 has 0 args
+ Opcode 8 has 0 args
+ Opcode 9 has 1 args
+ Opcode 10 has 0 args
+ Opcode 11 has 0 args
+ Opcode 12 has 1 args
+ Opcode 13 has 0 args
+ Opcode 14 has 0 args
+ Opcode 15 has 0 args
+
+ The Directory Table is empty.
+
+ The File Name Table \(offset 0x.*\):
+ Entry Dir Time Size Name
+ 1 0 0 0 file1.txt
+
+ Line Number Statements:
+ \[0x.*\] Extended opcode 2: set Address to 0x4
+ \[0x.*\] Advance Line by 3 to 4
+ \[0x.*\] Copy
+ \[0x.*\] Copy
+ \[0x.*\] Extended opcode 2: set Address to 0x8
+ \[0x.*\] Extended opcode 1: End of Sequence
+
+
+Contents of the .debug_abbrev section:
+
+ Number TAG \(0x0\)
+ 1 DW_TAG_compile_unit \[has children\]
+ DW_AT_stmt_list DW_FORM_data4
+ DW_AT_high_pc DW_FORM_addr
+ DW_AT_low_pc DW_FORM_addr
+ DW_AT_name DW_FORM_string
+ DW_AT_producer DW_FORM_string
+ DW_AT_language DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
+ 2 DW_TAG_subprogram \[no children\]
+ DW_AT_external DW_FORM_flag
+ DW_AT_decl_file DW_FORM_data1
+ DW_AT_decl_line DW_FORM_data1
+ DW_AT_name DW_FORM_string
+ DW_AT_type DW_FORM_ref4
+ DW_AT_low_pc DW_FORM_addr
+ DW_AT_high_pc DW_FORM_addr
+ DW_AT_frame_base DW_FORM_block1
+ DW_AT value: 0 DW_FORM value: 0
+ 3 DW_TAG_base_type \[no children\]
+ DW_AT_name DW_FORM_string
+ DW_AT_byte_size DW_FORM_data1
+ DW_AT_encoding DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/dw2-2.S b/binutils-2.24/binutils/testsuite/binutils-all/dw2-2.S
new file mode 100644
index 00000000..43b53557
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/dw2-2.S
@@ -0,0 +1,195 @@
+/* This testcase is derived from a similar test in GDB.
+
+ Copyright 2008, 2009, 2010 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* Dummy function to provide debug information for. */
+
+ .text
+.Lbegin_text1:
+ .globl func_cu2
+ .type func_cu2, %function
+func_cu2:
+.Lbegin_func_cu2:
+ .int 0
+.Lend_func_cu2:
+ .size func_cu2, .-func_cu2
+.Lend_text1:
+
+/* Debug information */
+
+ .section .debug_info
+.Lcu1_begin:
+ /* CU header */
+ .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */
+.Lcu1_start:
+ .2byte 2 /* DWARF Version */
+ .4byte .Labbrev1_begin /* Offset into abbrev section */
+ .byte 4 /* Pointer size */
+
+ /* CU die */
+ .uleb128 1 /* Abbrev: DW_TAG_compile_unit */
+ .4byte .Lline1_begin /* DW_AT_stmt_list */
+ .4byte .Lend_text1 /* DW_AT_high_pc */
+ .4byte .Lbegin_text1 /* DW_AT_low_pc */
+ .ascii "file1.txt\0" /* DW_AT_name */
+ .ascii "GNU C 3.3.3\0" /* DW_AT_producer */
+ .byte 1 /* DW_AT_language (C) */
+
+ /* func_cu2 */
+ .uleb128 2 /* Abbrev: DW_TAG_subprogram */
+ .byte 1 /* DW_AT_external */
+ .byte 1 /* DW_AT_decl_file */
+ .byte 2 /* DW_AT_decl_line */
+ .ascii "func_cu2\0" /* DW_AT_name */
+ .4byte .Ltype_int-.Lcu1_begin /* DW_AT_type */
+ .4byte .Lbegin_func_cu2 /* DW_AT_low_pc */
+ .4byte .Lend_func_cu2 /* DW_AT_high_pc */
+ .byte 1 /* DW_AT_frame_base: length */
+ .byte 0x55 /* DW_AT_frame_base: DW_OP_reg5 */
+
+.Ltype_int:
+ .uleb128 3 /* Abbrev: DW_TAG_base_type */
+ .ascii "int\0" /* DW_AT_name */
+ .byte 4 /* DW_AT_byte_size */
+ .byte 5 /* DW_AT_encoding */
+
+ .byte 0 /* End of children of CU */
+
+.Lcu1_end:
+
+/* Line table */
+ .section .debug_line
+.Lline1_begin:
+ .4byte .Lline1_end - .Lline1_start /* Initial length */
+.Lline1_start:
+ .2byte 2 /* Version */
+ .4byte .Lline1_lines - .Lline1_hdr /* header_length */
+.Lline1_hdr:
+ .byte 1 /* Minimum insn length */
+ .byte 1 /* default_is_stmt */
+ .byte 1 /* line_base */
+ .byte 1 /* line_range */
+ .byte 0x10 /* opcode_base */
+
+ /* Standard lengths */
+ .byte 0
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+
+ /* Include directories */
+ .byte 0
+
+ /* File names */
+ .ascii "file1.txt\0"
+ .uleb128 0
+ .uleb128 0
+ .uleb128 0
+
+ .byte 0
+
+.Lline1_lines:
+ .byte 0 /* DW_LNE_set_address */
+ .uleb128 5
+ .byte 2
+ .4byte .Lbegin_func_cu2
+
+ .byte 3 /* DW_LNS_advance_line */
+ .sleb128 3 /* ... to 4 */
+
+ .byte 1 /* DW_LNS_copy */
+
+ .byte 1 /* DW_LNS_copy (second time as an end-of-prologue marker) */
+
+ .byte 0 /* DW_LNE_set_address */
+ .uleb128 5
+ .byte 2
+ .4byte .Lend_func_cu2
+
+ .byte 0 /* DW_LNE_end_of_sequence */
+ .uleb128 1
+ .byte 1
+
+.Lline1_end:
+
+/* Abbrev table */
+ .section .debug_abbrev
+.Labbrev1_begin:
+ .uleb128 1 /* Abbrev code */
+ .uleb128 0x11 /* DW_TAG_compile_unit */
+ .byte 1 /* has_children */
+ .uleb128 0x10 /* DW_AT_stmt_list */
+ .uleb128 0x6 /* DW_FORM_data4 */
+ .uleb128 0x12 /* DW_AT_high_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x11 /* DW_AT_low_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x25 /* DW_AT_producer */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x13 /* DW_AT_language */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .uleb128 2 /* Abbrev code */
+ .uleb128 0x2e /* DW_TAG_subprogram */
+ .byte 0 /* has_children */
+ .uleb128 0x3f /* DW_AT_external */
+ .uleb128 0xc /* DW_FORM_flag */
+ .uleb128 0x3a /* DW_AT_decl_file */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .uleb128 0x3b /* DW_AT_decl_line */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x49 /* DW_AT_type */
+ .uleb128 0x13 /* DW_FORM_ref4 */
+ .uleb128 0x11 /* DW_AT_low_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x12 /* DW_AT_high_pc */
+ .uleb128 0x1 /* DW_FORM_addr */
+ .uleb128 0x40 /* DW_AT_frame_base */
+ .uleb128 0xa /* DW_FORM_block1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .uleb128 3 /* Abbrev code */
+ .uleb128 0x24 /* DW_TAG_base_type */
+ .byte 0 /* has_children */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0xb /* DW_AT_byte_size */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .uleb128 0x3e /* DW_AT_encoding */
+ .uleb128 0xb /* DW_FORM_data1 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/dw2-compressed.S b/binutils-2.24/binutils/testsuite/binutils-all/dw2-compressed.S
new file mode 100644
index 00000000..37ba9168
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/dw2-compressed.S
@@ -0,0 +1,218 @@
+/* This testcase is derived from a similar test in GDB.
+
+ Copyright 2008, 2009 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 3 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, see <http://www.gnu.org/licenses/>. */
+
+/* This tests that gdb can read compressed sections. The contents
+ are a basic assembly file, but the .debug_abbrev section has been
+ comrpessed using zlib. */
+
+/* Dummy function to provide debug information for. */
+
+ .text
+ .globl _start
+_start:
+ .int 0
+.Lbegin_text1:
+ .globl func_cu1
+ .type func_cu1, %function
+func_cu1:
+.Lbegin_func_cu1:
+ .int 0
+.Lend_func_cu1:
+ .size func_cu1, .-func_cu1
+.Lend_text1:
+
+/* Debug information */
+
+ .section .debug_info
+.Lcu1_begin:
+ /* CU header */
+ .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */
+.Lcu1_start:
+ .2byte 2 /* DWARF Version */
+ .4byte .Labbrev1_begin /* Offset into abbrev section */
+ .byte 4 /* Pointer size */
+
+ /* CU die */
+ .uleb128 1 /* Abbrev: DW_TAG_compile_unit */
+ .4byte .Lline1_begin /* DW_AT_stmt_list */
+ .4byte .Lend_text1 /* DW_AT_high_pc */
+ .4byte .Lbegin_text1 /* DW_AT_low_pc */
+ .ascii "file1.txt\0" /* DW_AT_name */
+ .ascii "GNU C 3.3.3\0" /* DW_AT_producer */
+ .byte 1 /* DW_AT_language (C) */
+
+ /* func_cu1 */
+ .uleb128 2 /* Abbrev: DW_TAG_subprogram */
+ .byte 1 /* DW_AT_external */
+ .byte 1 /* DW_AT_decl_file */
+ .byte 2 /* DW_AT_decl_line */
+ .ascii "func_cu1\0" /* DW_AT_name */
+ .4byte .Ltype_int-.Lcu1_begin /* DW_AT_type */
+ .4byte .Lbegin_func_cu1 /* DW_AT_low_pc */
+ .4byte .Lend_func_cu1 /* DW_AT_high_pc */
+ .byte 1 /* DW_AT_frame_base: length */
+ .byte 0x55 /* DW_AT_frame_base: DW_OP_reg5 */
+
+.Ltype_int:
+ .uleb128 3 /* Abbrev: DW_TAG_base_type */
+ .ascii "int\0" /* DW_AT_name */
+ .byte 4 /* DW_AT_byte_size */
+ .byte 5 /* DW_AT_encoding */
+
+ .byte 0 /* End of children of CU */
+
+.Lcu1_end:
+
+/* Line table */
+ .section .debug_line
+.Lline1_begin:
+ .4byte .Lline1_end - .Lline1_start /* Initial length */
+.Lline1_start:
+ .2byte 2 /* Version */
+ .4byte .Lline1_lines - .Lline1_hdr /* header_length */
+.Lline1_hdr:
+ .byte 1 /* Minimum insn length */
+ .byte 1 /* default_is_stmt */
+ .byte 1 /* line_base */
+ .byte 1 /* line_range */
+ .byte 0x10 /* opcode_base */
+
+ /* Standard lengths */
+ .byte 0
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 1
+ .byte 0
+ .byte 0
+ .byte 0
+
+ /* Include directories */
+ .byte 0
+
+ /* File names */
+ .ascii "file1.txt\0"
+ .uleb128 0
+ .uleb128 0
+ .uleb128 0
+
+ .byte 0
+
+.Lline1_lines:
+ .byte 0 /* DW_LNE_set_address */
+ .uleb128 5
+ .byte 2
+ .4byte .Lbegin_func_cu1
+
+ .byte 3 /* DW_LNS_advance_line */
+ .sleb128 3 /* ... to 4 */
+
+ .byte 1 /* DW_LNS_copy */
+
+ .byte 1 /* DW_LNS_copy (second time as an end-of-prologue marker) */
+
+ .byte 0 /* DW_LNE_set_address */
+ .uleb128 5
+ .byte 2
+ .4byte .Lend_func_cu1
+
+ .byte 0 /* DW_LNE_end_of_sequence */
+ .uleb128 1
+ .byte 1
+
+.Lline1_end:
+
+/* Abbrev table -- compressed */
+ .section .zdebug_abbrev
+.Labbrev1_begin:
+ .ascii "ZLIB"
+ .4byte 0
+ .2byte 0
+ .byte 0
+ .byte 51
+ .byte 0x78
+ .byte 0x5e
+ .byte 0x63
+ .byte 0x14
+ .byte 0x64
+ .byte 0x14
+ .byte 0x60
+ .byte 0x13
+ .byte 0x62
+ .byte 0x14
+ .byte 0x64
+ .byte 0x64
+ .byte 0xe6
+ .byte 0x50
+ .byte 0xe5
+ .byte 0x10
+ .byte 0xe6
+ .byte 0x66
+ .byte 0x60
+ .byte 0x60
+ .byte 0xd2
+ .byte 0x63
+ .byte 0xb0
+ .byte 0xe7
+ .byte 0xb1
+ .byte 0xe2
+ .byte 0xb6
+ .byte 0xe6
+ .byte 0x66
+ .byte 0xe6
+ .byte 0xf0
+ .byte 0x14
+ .byte 0x16
+ .byte 0x64
+ .byte 0x14
+ .byte 0x62
+ .byte 0x74
+ .byte 0xe0
+ .byte 0x02
+ .byte 0x00
+ .byte 0x25
+ .byte 0x78
+ .byte 0x02
+ .byte 0x81
+ .byte 0x78
+ .byte 0x9c
+ .byte 0x63
+ .byte 0x60
+ .byte 0x60
+ .byte 0x56
+ .byte 0x61
+ .byte 0x60
+ .byte 0xe6
+ .byte 0xe0
+ .byte 0xe6
+ .byte 0xb6
+ .byte 0xe3
+ .byte 0x66
+ .byte 0x00
+ .byte 0x02
+ .byte 0x00
+ .byte 0x04
+ .byte 0x9c
+ .byte 0x00
+ .byte 0x92
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/dw2-decodedline.S b/binutils-2.24/binutils/testsuite/binutils-all/dw2-decodedline.S
new file mode 100644
index 00000000..a54bdcfb
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/dw2-decodedline.S
@@ -0,0 +1,16 @@
+ .file "dw2-decodedline.c"
+ .file 1 "dw2-decodedline.c"
+ .file 2 "directory/file1.c"
+ .text
+ .globl f1
+ .type f1, %function
+f1:
+ .loc 2 1 0
+ nop
+ .size f1, .-f1
+ .globl main
+ .type main, %function
+main:
+ .loc 1 2 0
+ nop
+ .size main, .-main
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/dw2-empty.S b/binutils-2.24/binutils/testsuite/binutils-all/dw2-empty.S
new file mode 100644
index 00000000..63a2b900
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/dw2-empty.S
@@ -0,0 +1 @@
+ .section .debug_line
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/elfedit-1.d b/binutils-2.24/binutils/testsuite/binutils-all/elfedit-1.d
new file mode 100644
index 00000000..700d5428
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/elfedit-1.d
@@ -0,0 +1,16 @@
+#PROG: elfedit
+#elfedit: --output-mach l1om
+#source: empty.s
+#readelf: -h
+#name: Update ELF header 1
+#target: x86_64-*-*
+
+#...
+ELF Header:
+ Magic: 7f 45 4c 46 0(1|2) 01 01 00 00 00 00 00 00 00 00 00
+ Class: ELF(32|64)
+ Data: 2's complement, little endian
+ Version: 1 \(current\)
+#...
+ Machine: Intel L1OM
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/elfedit-2.d b/binutils-2.24/binutils/testsuite/binutils-all/elfedit-2.d
new file mode 100644
index 00000000..56468b51
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/elfedit-2.d
@@ -0,0 +1,15 @@
+#PROG: elfedit
+#elfedit: --output-type exec
+#source: empty.s
+#readelf: -h
+#name: Update ELF header 2
+#target: *-*-linux* *-*-gnu*
+
+#...
+ELF Header:
+ Magic: 7f 45 4c 46 .*
+#...
+ Version:[ \t]+1 \(current\)
+#...
+ Type:[ \t]+EXEC \(Executable file\)
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/elfedit-3.d b/binutils-2.24/binutils/testsuite/binutils-all/elfedit-3.d
new file mode 100644
index 00000000..219cac59
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/elfedit-3.d
@@ -0,0 +1,15 @@
+#PROG: elfedit
+#elfedit: --output-osabi FenixOS
+#source: empty.s
+#readelf: -h
+#name: Update ELF header 3
+#target: *-*-linux* *-*-gnu*
+
+#...
+ELF Header:
+ Magic: 7f 45 4c 46 .*
+#...
+ Version:[ \t]+1 \(current\)
+#...
+ OS/ABI:[ \t]+FenixOS
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/elfedit-4.d b/binutils-2.24/binutils/testsuite/binutils-all/elfedit-4.d
new file mode 100644
index 00000000..4336dd8c
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/elfedit-4.d
@@ -0,0 +1,17 @@
+#PROG: elfedit
+#elfedit: --output-mach k1om
+#source: empty.s
+#as: --64
+#readelf: -h
+#name: Update ELF header 4
+#target: x86_64-*-*
+
+#...
+ELF Header:
+ Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
+ Class: ELF64
+ Data: 2's complement, little endian
+ Version: 1 \(current\)
+#...
+ Machine: Intel K1OM
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/elfedit.exp b/binutils-2.24/binutils/testsuite/binutils-all/elfedit.exp
new file mode 100644
index 00000000..500906d3
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/elfedit.exp
@@ -0,0 +1,35 @@
+# Copyright 2010, 2011
+# 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 3 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.
+
+# Exclude non-ELF targets.
+if ![is_elf_format] {
+ verbose "$ELFEDIT is only intended for ELF targets" 2
+ return
+}
+
+if ![is_remote host] {
+ set tempfile tmpdir/bintest.o
+ set copyfile tmpdir/bintest
+} else {
+ set tempfile [remote_download host tmpdir/bintest.o]
+ set copyfile bintest
+}
+
+run_dump_test "elfedit-1"
+run_dump_test "elfedit-2"
+run_dump_test "elfedit-3"
+run_dump_test "elfedit-4"
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/empty-file b/binutils-2.24/binutils/testsuite/binutils-all/empty-file
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/empty-file
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/empty.s b/binutils-2.24/binutils/testsuite/binutils-all/empty.s
new file mode 100644
index 00000000..8690c06a
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/empty.s
@@ -0,0 +1 @@
+# An empty file.
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/exclude-1.s b/binutils-2.24/binutils/testsuite/binutils-all/exclude-1.s
new file mode 100644
index 00000000..475088fd
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/exclude-1.s
@@ -0,0 +1,16 @@
+ .text
+ .type start,"function"
+ .global start
+start:
+ .type _start,"function"
+ .global _start
+_start:
+ .type __start,"function"
+ .global __start
+__start:
+ .type main,"function"
+ .global main
+main:
+ .long 0
+ .section .foo1,"e", %progbits
+ .byte 0,0,0,0
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/exclude-1a.d b/binutils-2.24/binutils/testsuite/binutils-all/exclude-1a.d
new file mode 100644
index 00000000..3a311b53
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/exclude-1a.d
@@ -0,0 +1,9 @@
+#PROG: objcopy
+#source: exclude-1.s
+#objcopy:
+#readelf: -S --wide
+#name: objcopy on sections with SHF_EXCLUDE
+
+#...
+[ ]*\[.*\][ ]+\.foo1[ ]+PROGBITS.*[ ]+E[ ]+.*
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/exclude-1b.d b/binutils-2.24/binutils/testsuite/binutils-all/exclude-1b.d
new file mode 100644
index 00000000..ac387fb2
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/exclude-1b.d
@@ -0,0 +1,9 @@
+#PROG: strip
+#source: exclude-1.s
+#strip: --strip-unneeded
+#readelf: -S --wide
+#name: strip --strip-unneeded on sections with SHF_EXCLUDE
+
+#...
+[ ]*\[.*\][ ]+\.foo1[ ]+PROGBITS.*[ ]+E[ ]+.*
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/fastcall.def b/binutils-2.24/binutils/testsuite/binutils-all/fastcall.def
new file mode 100644
index 00000000..bef49682
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/fastcall.def
@@ -0,0 +1,2 @@
+EXPORTS
+@fastcall@4
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/group-2.s b/binutils-2.24/binutils/testsuite/binutils-all/group-2.s
new file mode 100644
index 00000000..187eeda2
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/group-2.s
@@ -0,0 +1,8 @@
+ .section .text.foo,"axG",%progbits,.text.foo,comdat
+ .global foo2
+foo2:
+ .word 0
+ .section .data.bar,"awG",%progbits,.text.foo,comdat
+ .global bar2
+bar2:
+ .word 0
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/group-3.s b/binutils-2.24/binutils/testsuite/binutils-all/group-3.s
new file mode 100644
index 00000000..eb235e86
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/group-3.s
@@ -0,0 +1,8 @@
+ .section .text.foo3,"axG",%progbits,foo3,comdat
+ .global foo3
+foo3:
+ .word 0
+ .section .data.bar3,"awG",%progbits,foo3,comdat
+ .global bar3
+bar3:
+ .word 0
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/group-4.s b/binutils-2.24/binutils/testsuite/binutils-all/group-4.s
new file mode 100644
index 00000000..b1c8736f
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/group-4.s
@@ -0,0 +1,6 @@
+ .section .text.foo4,"axG",%progbits,foo4,comdat
+foo4:
+ .word 0
+ .section .data.foo4,"awG",%progbits,foo4,comdat
+bar4:
+ .word 0
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/group-5.d b/binutils-2.24/binutils/testsuite/binutils-all/group-5.d
new file mode 100644
index 00000000..3c88ba90
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/group-5.d
@@ -0,0 +1,19 @@
+#PROG: objcopy
+#readelf: -Sg --wide
+#objcopy: --remove-section .dropme
+#name: copy removing group member
+
+#readelf: -Sg --wide
+
+#...
+ \[[ 0-9]+\] \.group[ \t]+GROUP[ \t]+.*
+#...
+ \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AXG.*
+#...
+ \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG.*
+#...
+COMDAT group section \[[ 0-9]+\] `\.group' \[foo_group\] contains 2 sections:
+ \[Index\] Name
+ \[[ 0-9]+\] .text.*
+ \[[ 0-9]+\] .data.*
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/group-5.s b/binutils-2.24/binutils/testsuite/binutils-all/group-5.s
new file mode 100644
index 00000000..b2e100aa
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/group-5.s
@@ -0,0 +1,12 @@
+ .section .text.foo,"axG",%progbits,foo_group,comdat
+ .global foo
+foo:
+ .word 0
+
+ .section .data.foo,"awG",%progbits,foo_group,comdat
+ .global bar
+bar:
+ .word 1
+
+ .section .dropme,"G",%progbits,foo_group,comdat
+ .word 2
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/group-6.d b/binutils-2.24/binutils/testsuite/binutils-all/group-6.d
new file mode 100644
index 00000000..33197456
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/group-6.d
@@ -0,0 +1,9 @@
+#PROG: objcopy
+#objcopy: --remove-section .text.foo
+#name: copy removing all group member
+#objdump: -fw
+
+#...
+.*: +file format .*
+architecture: .*
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/group-6.s b/binutils-2.24/binutils/testsuite/binutils-all/group-6.s
new file mode 100644
index 00000000..e4c2bdac
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/group-6.s
@@ -0,0 +1,4 @@
+ .text
+ .byte 0
+ .section .text.foo,"axG",%progbits,foo,comdat
+ .byte 0
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/group.s b/binutils-2.24/binutils/testsuite/binutils-all/group.s
new file mode 100644
index 00000000..cc1ffb6d
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/group.s
@@ -0,0 +1,8 @@
+ .section .text.foo,"axG",%progbits,foo_group,comdat
+ .global foo
+foo:
+ .word 0
+ .section .data.foo,"awG",%progbits,foo_group,comdat
+ .global bar
+bar:
+ .word 0
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/hppa/addendbug.s b/binutils-2.24/binutils/testsuite/binutils-all/hppa/addendbug.s
new file mode 100644
index 00000000..659306f0
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/hppa/addendbug.s
@@ -0,0 +1,23 @@
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+ .IMPORT $global$,DATA
+ .IMPORT $$dyncall,MILLICODE
+; gcc_compiled.:
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ .EXPORT initialize_char_syntax,CODE
+ .EXPORT initialize_char_syntax,ENTRY,PRIV_LEV=3,RTNVAL=GR
+initialize_char_syntax
+ .PROC
+ .CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3
+ .ENTRY
+ addil L'is_idchar-$global$-32,%r27
+ .EXIT
+ .PROCEND
+is_idchar .comm 256
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/hppa/freg.s b/binutils-2.24/binutils/testsuite/binutils-all/hppa/freg.s
new file mode 100644
index 00000000..501e10f9
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/hppa/freg.s
@@ -0,0 +1,23 @@
+ .LEVEL 2.0
+ .SPACE $PRIVATE$
+ .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
+ .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
+ .SPACE $TEXT$
+ .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
+ .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+ .IMPORT $global$,DATA
+ .IMPORT $$dyncall,MILLICODE
+; gcc_compiled.:
+ .SPACE $TEXT$
+ .SUBSPA $CODE$
+
+ .align 4
+ .NSUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
+ .EXPORT main,ENTRY,PRIV_LEV=3,RTNVAL=GR
+main
+ .PROC
+ .CALLINFO FRAME=64,CALLS,SAVE_RP
+ .ENTRY
+ fmpyfadd,sgl %fr4L,%fr4R,%fr5R,%fr5L
+ .EXIT
+ .PROCEND
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/hppa/objdump.exp b/binutils-2.24/binutils/testsuite/binutils-all/hppa/objdump.exp
new file mode 100644
index 00000000..c6d16404
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/hppa/objdump.exp
@@ -0,0 +1,96 @@
+# Copyright 1993, 1994, 1995, 1997, 1999, 2000, 2002, 2007, 2009
+# 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 3 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.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# This file was written by Rob Savoye <rob@cygnus.com>
+# and rewritten by Ian Lance Taylor <ian@cygnus.com>
+
+if ![istarget hppa*-*-*] then {
+ return
+}
+
+# These tests are not suitable for wide mode.
+if [istarget hppa*w-*-*] then {
+ return
+}
+
+# elf hppa assembler doesn't support .subspa
+if {[istarget *64*-*-*] || [istarget *-*-*elf*] || [istarget *-*-linux*]} then {
+ return
+}
+
+if {[which $OBJDUMP] == 0} then {
+ perror "$OBJDUMP does not exist"
+ return
+}
+
+send_user "Version [binutil_version $OBJDUMP]"
+
+if {![binutils_assemble $srcdir/$subdir/addendbug.s tmpdir/addendbug.o]} then {
+ return
+}
+
+if [is_remote host] {
+ set objfile [remote_download host tmpdir/addendbug.o]
+} else {
+ set objfile tmpdir/addendbug.o
+}
+
+# Make sure the SOM BFD code sign extends constants in R_DATA_OVERRIDE fixups.
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -r $objfile"]
+
+if [istarget hppa*-*-*elf*] then {
+ set want "00000000 R_PARISC_DPREL21L\[ \]+is_idchar-0x00000020.*"
+} else {
+ set want "00000000 R_DP_RELATIVE\[ \]+is_idchar-0x00000020.*"
+}
+
+
+if [regexp $want $got] then {
+ pass "addendbug test"
+} else {
+ fail "addendbug test"
+}
+
+###########################
+# Set up the test of freg.s
+###########################
+
+if {![binutils_assemble $srcdir/$subdir/freg.s tmpdir/freg.o]} then {
+ return
+}
+
+if [is_remote host] {
+ set objfile [remote_download host tmpdir/freg.o]
+} else {
+ set objfile tmpdir/freg.o
+}
+
+# Make sure that we get R float regs like we're supposed to
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS --disassemble $objfile"]
+
+set want "fmpyfadd,sgl fr4,fr4R,fr5R,fr5"
+
+if [regexp $want $got] then {
+ pass "freg test"
+} else {
+ fail "freg test"
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1.s b/binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1.s
new file mode 100644
index 00000000..54c6d993
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1.s
@@ -0,0 +1,147 @@
+ .file "compressed-1.c"
+ .section .debug_abbrev,"",@progbits
+.Ldebug_abbrev0:
+ .section .debug_info,"",@progbits
+.Ldebug_info0:
+ .section .debug_line,"",@progbits
+.Ldebug_line0:
+ .text
+.Ltext0:
+ .cfi_sections .debug_frame
+ .p2align 4,,15
+.globl foo2
+ .type foo2, @function
+foo2:
+.LFB1:
+ .file 1 "compressed-1.c"
+ .loc 1 11 0
+ .cfi_startproc
+ .loc 1 12 0
+ rep
+ ret
+ .cfi_endproc
+.LFE1:
+ .size foo2, .-foo2
+ .p2align 4,,15
+.globl foo1
+ .type foo1, @function
+foo1:
+.LFB0:
+ .loc 1 5 0
+ .cfi_startproc
+ subl $12, %esp
+ .cfi_def_cfa_offset 16
+ .loc 1 7 0
+ addl $12, %esp
+ .cfi_def_cfa_offset 4
+ .loc 1 6 0
+ jmp bar
+ .cfi_endproc
+.LFE0:
+ .size foo1, .-foo1
+.Letext0:
+ .section .debug_info
+ .long 0x46
+ .value 0x3
+ .long .Ldebug_abbrev0
+ .byte 0x4
+ .uleb128 0x1
+ .long .LASF2
+ .byte 0x1
+ .long .LASF3
+ .long .LASF4
+ .long .Ltext0
+ .long .Letext0
+ .long .Ldebug_line0
+ .uleb128 0x2
+ .byte 0x1
+ .long .LASF0
+ .byte 0x1
+ .byte 0xa
+ .long .LFB1
+ .long .LFE1
+ .byte 0x1
+ .byte 0x9c
+ .uleb128 0x2
+ .byte 0x1
+ .long .LASF1
+ .byte 0x1
+ .byte 0x4
+ .long .LFB0
+ .long .LFE0
+ .byte 0x1
+ .byte 0x9c
+ .byte 0x0
+ .section .debug_abbrev
+ .uleb128 0x1
+ .uleb128 0x11
+ .byte 0x1
+ .uleb128 0x25
+ .uleb128 0xe
+ .uleb128 0x13
+ .uleb128 0xb
+ .uleb128 0x3
+ .uleb128 0xe
+ .uleb128 0x1b
+ .uleb128 0xe
+ .uleb128 0x11
+ .uleb128 0x1
+ .uleb128 0x12
+ .uleb128 0x1
+ .uleb128 0x10
+ .uleb128 0x6
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x2
+ .uleb128 0x2e
+ .byte 0x0
+ .uleb128 0x3f
+ .uleb128 0xc
+ .uleb128 0x3
+ .uleb128 0xe
+ .uleb128 0x3a
+ .uleb128 0xb
+ .uleb128 0x3b
+ .uleb128 0xb
+ .uleb128 0x11
+ .uleb128 0x1
+ .uleb128 0x12
+ .uleb128 0x1
+ .uleb128 0x40
+ .uleb128 0xa
+ .byte 0x0
+ .byte 0x0
+ .byte 0x0
+ .section .debug_pubnames,"",@progbits
+ .long 0x20
+ .value 0x2
+ .long .Ldebug_info0
+ .long 0x4a
+ .long 0x25
+ .string "foo2"
+ .long 0x37
+ .string "foo1"
+ .long 0x0
+ .section .debug_aranges,"",@progbits
+ .long 0x1c
+ .value 0x2
+ .long .Ldebug_info0
+ .byte 0x4
+ .byte 0x0
+ .value 0x0
+ .value 0x0
+ .long .Ltext0
+ .long .Letext0-.Ltext0
+ .long 0x0
+ .long 0x0
+ .section .debug_str,"MS",@progbits,1
+.LASF2:
+ .string "GNU C 4.4.4"
+.LASF0:
+ .string "foo2"
+.LASF1:
+ .string "foo1"
+.LASF4:
+ .string "."
+.LASF3:
+ .string "compressed-1.c"
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1a.d b/binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1a.d
new file mode 100644
index 00000000..f1883aa2
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1a.d
@@ -0,0 +1,160 @@
+#PROG: objcopy
+#source: compressed-1.s
+#as: --32 --compress-debug-sections
+#objcopy:
+#readelf: -w
+#name: objcopy on compressed debug sections
+
+Contents of the .[z]?debug_abbrev section:
+
+ Number TAG \(0x0\)
+ 1 DW_TAG_compile_unit \[has children\]
+ DW_AT_producer DW_FORM_strp
+ DW_AT_language DW_FORM_data1
+ DW_AT_name DW_FORM_strp
+ DW_AT_comp_dir DW_FORM_strp
+ DW_AT_low_pc DW_FORM_addr
+ DW_AT_high_pc DW_FORM_addr
+ DW_AT_stmt_list DW_FORM_data4
+ DW_AT value: 0 DW_FORM value: 0
+ 2 DW_TAG_subprogram \[no children\]
+ DW_AT_external DW_FORM_flag
+ DW_AT_name DW_FORM_strp
+ DW_AT_decl_file DW_FORM_data1
+ DW_AT_decl_line DW_FORM_data1
+ DW_AT_low_pc DW_FORM_addr
+ DW_AT_high_pc DW_FORM_addr
+ DW_AT_frame_base DW_FORM_block1
+ DW_AT value: 0 DW_FORM value: 0
+
+Contents of the .[z]?debug_info section:
+
+ Compilation Unit @ offset 0x0:
+ Length: 0x46 \(32-bit\)
+ Version: 3
+ Abbrev Offset: 0x0
+ Pointer Size: 4
+ <0><b>: Abbrev Number: 1 \(DW_TAG_compile_unit\)
+ <c> DW_AT_producer : \(indirect string, offset: 0x0\): GNU C 4.4.4
+ <10> DW_AT_language : 1 \(ANSI C\)
+ <11> DW_AT_name : \(indirect string, offset: 0x18\): compressed-1.c
+ <15> DW_AT_comp_dir : \(indirect string, offset: 0x16\): .
+ <19> DW_AT_low_pc : 0x0
+ <1d> DW_AT_high_pc : 0x1b
+ <21> DW_AT_stmt_list : 0x0
+ <1><25>: Abbrev Number: 2 \(DW_TAG_subprogram\)
+ <26> DW_AT_external : 1
+ <27> DW_AT_name : \(indirect string, offset: 0xc\): foo2
+ <2b> DW_AT_decl_file : 1
+ <2c> DW_AT_decl_line : 10
+ <2d> DW_AT_low_pc : 0x0
+ <31> DW_AT_high_pc : 0x2
+ <35> DW_AT_frame_base : 1 byte block: 9c \(DW_OP_call_frame_cfa\)
+ <1><37>: Abbrev Number: 2 \(DW_TAG_subprogram\)
+ <38> DW_AT_external : 1
+ <39> DW_AT_name : \(indirect string, offset: 0x11\): foo1
+ <3d> DW_AT_decl_file : 1
+ <3e> DW_AT_decl_line : 4
+ <3f> DW_AT_low_pc : 0x10
+ <43> DW_AT_high_pc : 0x1b
+ <47> DW_AT_frame_base : 1 byte block: 9c \(DW_OP_call_frame_cfa\)
+ <1><49>: Abbrev Number: 0
+
+Raw dump of debug contents of section .[z]?debug_line:
+
+ Offset: 0x0
+ Length: 64
+ DWARF Version: 2
+ Prologue Length: 37
+ Minimum Instruction Length: 1
+ Initial value of 'is_stmt': 1
+ Line Base: -5
+ Line Range: 14
+ Opcode Base: 13
+
+ Opcodes:
+ Opcode 1 has 0 args
+ Opcode 2 has 1 args
+ Opcode 3 has 1 args
+ Opcode 4 has 1 args
+ Opcode 5 has 1 args
+ Opcode 6 has 0 args
+ Opcode 7 has 0 args
+ Opcode 8 has 0 args
+ Opcode 9 has 1 args
+ Opcode 10 has 0 args
+ Opcode 11 has 0 args
+ Opcode 12 has 1 args
+
+ The Directory Table is empty.
+
+ The File Name Table \(offset 0x.*\):
+ Entry Dir Time Size Name
+ 1 0 0 0 compressed-1.c
+
+ Line Number Statements:
+ \[0x.*\] Extended opcode 2: set Address to 0x0
+ \[0x.*\] Advance Line by 10 to 11
+ \[0x.*\] Copy
+ \[0x.*\] Special opcode 6: advance Address by 0 to 0x0 and Line by 1 to 12
+ \[0x.*\] Advance Line by -7 to 5
+ \[0x.*\] Special opcode 229: advance Address by 16 to 0x10 and Line by 0 to 5
+ \[0x.*\] Special opcode 49: advance Address by 3 to 0x13 and Line by 2 to 7
+ \[0x.*\] Special opcode 46: advance Address by 3 to 0x16 and Line by -1 to 6
+ \[0x.*\] Advance PC by 5 to 0x1b
+ \[0x.*\] Extended opcode 1: End of Sequence
+
+
+Contents of the .[z]?debug_pubnames section:
+
+ Length: 32
+ Version: 2
+ Offset into .[z]?debug_info section: 0x0
+ Size of area in .[z]?debug_info section: 74
+
+ Offset Name
+ 25 foo2
+ 37 foo1
+
+Contents of the .[z]?debug_aranges section:
+
+ Length: 28
+ Version: 2
+ Offset into .[z]?debug_info: 0x0
+ Pointer Size: 4
+ Segment Size: 0
+
+ Address Length
+ 00000000 0000001b
+ 00000000 00000000
+
+Contents of the .[z]?debug_str section:
+
+ 0x00000000 474e5520 4320342e 342e3400 666f6f32 GNU C 4.4.4.foo2
+ 0x00000010 00666f6f 31002e00 636f6d70 72657373 .foo1...compress
+ 0x00000020 65642d31 2e6300 ed-1.c.
+
+Contents of the .[z]?debug_frame section:
+
+00000000 00000010 ffffffff CIE
+ Version: 1
+ Augmentation: ""
+ Code alignment factor: 1
+ Data alignment factor: -4
+ Return address column: 8
+
+ DW_CFA_def_cfa: r4 \(esp\) ofs 4
+ DW_CFA_offset: r8 \(eip\) at cfa-4
+ DW_CFA_nop
+ DW_CFA_nop
+
+00000014 0000000c 00000000 FDE cie=00000000 pc=00000000..00000002
+
+00000024 00000014 00000000 FDE cie=00000000 pc=00000010..0000001b
+ DW_CFA_advance_loc: 3 to 00000013
+ DW_CFA_def_cfa_offset: 16
+ DW_CFA_advance_loc: 3 to 00000016
+ DW_CFA_def_cfa_offset: 4
+ DW_CFA_nop
+ DW_CFA_nop
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1b.d b/binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1b.d
new file mode 100644
index 00000000..8cc9653e
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1b.d
@@ -0,0 +1,18 @@
+#PROG: strip
+#source: compressed-1.s
+#as: --32
+#strip:
+#readelf: -S --wide
+#name: strip on uncompressed debug sections
+
+There are 5 section headers, starting at offset 0x78:
+
+Section Headers:
+ \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
+ \[ 0\] NULL 00000000 000000 000000 00 0 0 0
+ \[ 1\] .text PROGBITS 00000000 000040 00001b 00 AX 0 0 16
+ \[ 2\] .data PROGBITS 00000000 00005b 000000 00 WA 0 0 1
+ \[ 3\] .bss NOBITS 00000000 00005b 000000 00 WA 0 0 1
+ \[ 4\] .shstrtab STRTAB 00000000 00005b 00001c 00 0 0 1
+Key to Flags:
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1c.d b/binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1c.d
new file mode 100644
index 00000000..f05380fc
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/i386/compressed-1c.d
@@ -0,0 +1,18 @@
+#PROG: strip
+#source: compressed-1.s
+#as: --32 --compress-debug-sections
+#strip:
+#readelf: -S --wide
+#name: strip on compressed debug sections
+
+There are 5 section headers, starting at offset 0x78:
+
+Section Headers:
+ \[Nr\] Name Type Addr Off Size ES Flg Lk Inf Al
+ \[ 0\] NULL 00000000 000000 000000 00 0 0 0
+ \[ 1\] .text PROGBITS 00000000 000040 00001b 00 AX 0 0 16
+ \[ 2\] .data PROGBITS 00000000 00005b 000000 00 WA 0 0 1
+ \[ 3\] .bss NOBITS 00000000 00005b 000000 00 WA 0 0 1
+ \[ 4\] .shstrtab STRTAB 00000000 00005b 00001c 00 0 0 1
+Key to Flags:
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/i386/i386.exp b/binutils-2.24/binutils/testsuite/binutils-all/i386/i386.exp
new file mode 100644
index 00000000..4b9fffdc
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/i386/i386.exp
@@ -0,0 +1,38 @@
+# Copyright 2010, 2012
+# 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 3 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.
+
+if {!([istarget "i*86-*-linux*"]
+ || [istarget "i*86-*-gnu*"]
+ || [istarget "i*86-*-nacl*"]
+ || [istarget "x86_64-*-linux*"]
+ || [istarget "x86_64-*-nacl*"])
+ || ![is_elf_format]
+ || [is_remote host]} then {
+ return
+}
+
+global tempfile
+global copyfile
+set tempfile tmpdir/i386temp.o
+set copyfile tmpdir/i386copy
+
+set test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
+foreach t $test_list {
+ # We need to strip the ".d", but can leave the dirname.
+ verbose [file rootname $t]
+ run_dump_test [file rootname $t]
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/libdw2-compressed.out b/binutils-2.24/binutils/testsuite/binutils-all/libdw2-compressed.out
new file mode 100644
index 00000000..6c1f7f5e
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/libdw2-compressed.out
@@ -0,0 +1,5 @@
+#...
+ .* ZLIB.*
+#...
+ .* ZLIB.*
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/libdw2.out b/binutils-2.24/binutils/testsuite/binutils-all/libdw2.out
new file mode 100644
index 00000000..457774c0
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/libdw2.out
@@ -0,0 +1,13 @@
+#...
+ \[[ 0-9]+\] \.debug_info[ ]+(PROGBITS|MIPS_DWARF)[ 0-9a-z]+ [^Z]*
+#...
+ \[[ 0-9]+\] \.debug_line[ ]+(PROGBITS|MIPS_DWARF)[ 0-9a-z]+ [^Z]*
+#...
+ \[[ 0-9]+\] \.debug_abbrev[ ]+(PROGBITS|MIPS_DWARF)[ 0-9a-z]+ [^Z]*
+#...
+ \[[ 0-9]+\] \.debug_info[ ]+(PROGBITS|MIPS_DWARF)[ 0-9a-z]+ [^Z]*
+#...
+ \[[ 0-9]+\] \.debug_line[ ]+(PROGBITS|MIPS_DWARF)[ 0-9a-z]+ [^Z]*
+#...
+ \[[ 0-9]+\] \.debug_abbrev[ ]+(PROGBITS|MIPS_DWARF)[ 0-9a-z]+ [^Z]*
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/link-order.s b/binutils-2.24/binutils/testsuite/binutils-all/link-order.s
new file mode 100644
index 00000000..5994cb81
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/link-order.s
@@ -0,0 +1,13 @@
+ .text
+ .align 16
+ .global foo#
+ .proc foo#
+foo:
+ .prologue 2, 2
+ .vframe r2
+ mov r2 = r12
+ .body
+ .restore sp
+ mov r12 = r2
+ br.ret.sptk.many b0
+ .endp foo#
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-1.d b/binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-1.d
new file mode 100644
index 00000000..a5286ed1
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-1.d
@@ -0,0 +1,19 @@
+#PROG: objcopy
+#objdump: --syms
+#objcopy: --localize-hidden
+#name: --localize-hidden test 1
+#...
+0+1200 l .*\*ABS\* 0+ \.hidden Lhidden
+0+1300 l .*\*ABS\* 0+ \.internal Linternal
+0+1400 l .*\*ABS\* 0+ \.protected Lprotected
+0+1100 l .*\*ABS\* 0+ Ldefault
+#...
+0+2200 l .*\*ABS\* 0+ \.hidden Ghidden
+0+2300 l .*\*ABS\* 0+ \.internal Ginternal
+0+3200 l .*\*ABS\* 0+ \.hidden Whidden
+0+3300 l .*\*ABS\* 0+ \.internal Winternal
+0+2100 g .*\*ABS\* 0+ Gdefault
+0+2400 g .*\*ABS\* 0+ \.protected Gprotected
+0+3100 w.*\*ABS\* 0+ Wdefault
+0+3400 w.*\*ABS\* 0+ \.protected Wprotected
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-1.s b/binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-1.s
new file mode 100644
index 00000000..cb9f367e
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-1.s
@@ -0,0 +1,36 @@
+ .globl Gdefault
+ .globl Ghidden
+ .globl Ginternal
+ .globl Gprotected
+
+ .weak Wdefault
+ .weak Whidden
+ .weak Winternal
+ .weak Wprotected
+
+ .hidden Lhidden
+ .hidden Ghidden
+ .hidden Whidden
+
+ .internal Linternal
+ .internal Ginternal
+ .internal Winternal
+
+ .protected Lprotected
+ .protected Gprotected
+ .protected Wprotected
+
+ Ldefault == 0x1100
+ Lhidden == 0x1200
+ Linternal == 0x1300
+ Lprotected == 0x1400
+
+ Gdefault == 0x2100
+ Ghidden == 0x2200
+ Ginternal == 0x2300
+ Gprotected == 0x2400
+
+ Wdefault == 0x3100
+ Whidden == 0x3200
+ Winternal == 0x3300
+ Wprotected == 0x3400
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-2.d b/binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-2.d
new file mode 100644
index 00000000..ed3807ae
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-2.d
@@ -0,0 +1,7 @@
+#PROG: objcopy
+#nm: -n
+#objcopy: --localize-hidden
+#name: --localize-hidden test 2
+#...
+0+100 A G
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-2.s b/binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-2.s
new file mode 100644
index 00000000..443bad08
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/localize-hidden-2.s
@@ -0,0 +1,2 @@
+ .globl G
+ G == 0x100
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/m68k/fnop.s b/binutils-2.24/binutils/testsuite/binutils-all/m68k/fnop.s
new file mode 100644
index 00000000..628e1989
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/m68k/fnop.s
@@ -0,0 +1 @@
+ fnop
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/m68k/movem.s b/binutils-2.24/binutils/testsuite/binutils-all/m68k/movem.s
new file mode 100644
index 00000000..b3718d50
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/m68k/movem.s
@@ -0,0 +1,2 @@
+ movem.l %d0-%d3,-(%sp)
+ movem.l %d0-%d3,(%sp)
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/m68k/objdump.exp b/binutils-2.24/binutils/testsuite/binutils-all/m68k/objdump.exp
new file mode 100644
index 00000000..5043ef7e
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/m68k/objdump.exp
@@ -0,0 +1,79 @@
+# Copyright 2004, 2007, 2009, 2010
+# 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 3 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.
+
+if {![istarget "m68*-*-*"] || [istarget "m68h*-*-*"] || [istarget "m681*-*-*"]} then {
+ return
+}
+
+if {[which $OBJDUMP] == 0} then {
+ perror "$OBJDUMP does not exist"
+ return
+}
+
+send_user "Version [binutil_version $OBJDUMP]"
+
+###########################
+# Set up the test of movem.s
+###########################
+
+if {![binutils_assemble $srcdir/$subdir/movem.s tmpdir/movem.o]} then {
+ return
+}
+
+if [is_remote host] {
+ set objfile [remote_download host tmpdir/movem.o]
+} else {
+ set objfile tmpdir/movem.o
+}
+
+# Make sure that the movem is correctly decoded.
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS --disassemble $objfile"]
+
+set want "moveml %d0-%d3,%sp@-.*moveml %d0-%d3,%sp@\[\r\n\]"
+
+if [regexp $want $got] then {
+ pass "movem test"
+} else {
+ fail "movem test"
+}
+
+###########################
+# Set up the test of fnop.s
+###########################
+
+if {![binutils_assemble $srcdir/$subdir/fnop.s tmpdir/fnop.o]} then {
+ return
+}
+
+if [is_remote host] {
+ set objfile [remote_download host tmpdir/fnop.o]
+} else {
+ set objfile tmpdir/fnop.o
+}
+
+# Make sure that fnop is decoded as fnop, not fbf.
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS --disassemble $objfile"]
+
+set want "fnop *\[\r\n\]"
+
+if [regexp $want $got] then {
+ pass "fnop test"
+} else {
+ fail "fnop test"
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/mips/mips.exp b/binutils-2.24/binutils/testsuite/binutils-all/mips/mips.exp
new file mode 100644
index 00000000..eba88680
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/mips/mips.exp
@@ -0,0 +1,26 @@
+# Copyright 2013
+# 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 3 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.
+
+if ![istarget mips*-*-*] {
+ return
+}
+
+if [is_elf_format] {
+ run_dump_test "mixed-mips16"
+ run_dump_test "mixed-micromips"
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-micromips.d b/binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-micromips.d
new file mode 100644
index 00000000..0bc9e412
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-micromips.d
@@ -0,0 +1,30 @@
+#PROG: objcopy
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: Mixed MIPS and microMIPS disassembly
+#as: -32 -mips2
+
+# Test mixed-mode disassembly in overlapping sections.
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text\.foo:
+[0-9a-f]+ <[^>]*> 27bdffe0 addiu sp,sp,-32
+[0-9a-f]+ <[^>]*> afbf001c sw ra,28\(sp\)
+[0-9a-f]+ <[^>]*> 0c000000 jal 00000000 <.*>
+[ ]*[0-9a-f]+: R_MIPS_26 baz
+[0-9a-f]+ <[^>]*> 00000000 nop
+[0-9a-f]+ <[^>]*> 8fbf001c lw ra,28\(sp\)
+[0-9a-f]+ <[^>]*> 03e00008 jr ra
+[0-9a-f]+ <[^>]*> 27bd0020 addiu sp,sp,32
+ \.\.\.
+
+Disassembly of section \.text\.bar:
+[0-9a-f]+ <[^>]*> 4ff1 addiu sp,sp,-32
+[0-9a-f]+ <[^>]*> cbe7 sw ra,28\(sp\)
+[0-9a-f]+ <[^>]*> 7400 0000 jals 00000000 <.*>
+[ ]*[0-9a-f]+: R_MICROMIPS_26_S1 baz
+[0-9a-f]+ <[^>]*> 0c00 nop
+[0-9a-f]+ <[^>]*> 4be7 lw ra,28\(sp\)
+[0-9a-f]+ <[^>]*> 4708 jraddiusp 32
+[0-9a-f]+ <[^>]*> 0c00 nop
+ \.\.\.
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-micromips.s b/binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-micromips.s
new file mode 100644
index 00000000..0528c904
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-micromips.s
@@ -0,0 +1,33 @@
+ .section .text.foo, "ax", @progbits
+ .set nomicromips
+ .globl foo
+ .ent foo
+foo:
+ addiu $sp, $sp, -32
+ sw $ra, 28($sp)
+ jal baz
+ lw $ra, 28($sp)
+ addiu $sp, $sp, 32
+ jr $ra
+ .end foo
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+ .align 2
+ .space 8
+
+
+ .section .text.bar, "ax", @progbits
+ .set micromips
+ .globl bar
+ .ent bar
+bar:
+ addiu $sp, $sp, -32
+ sw $ra, 28($sp)
+ jals baz
+ lw $ra, 28($sp)
+ jraddiusp 32
+ .end bar
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+ .align 2
+ .space 8
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-mips16.d b/binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-mips16.d
new file mode 100644
index 00000000..09e1821a
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-mips16.d
@@ -0,0 +1,30 @@
+#PROG: objcopy
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: Mixed MIPS and MIPS16 disassembly
+#as: -32 -mips2
+
+# Test mixed-mode disassembly in overlapping sections.
+
+.*: +file format .*mips.*
+
+Disassembly of section \.text\.foo:
+[0-9a-f]+ <[^>]*> 27bdffe0 addiu sp,sp,-32
+[0-9a-f]+ <[^>]*> afbf001c sw ra,28\(sp\)
+[0-9a-f]+ <[^>]*> 0c000000 jal 00000000 <.*>
+[ ]*[0-9a-f]+: R_MIPS_26 baz
+[0-9a-f]+ <[^>]*> 00000000 nop
+[0-9a-f]+ <[^>]*> 8fbf001c lw ra,28\(sp\)
+[0-9a-f]+ <[^>]*> 03e00008 jr ra
+[0-9a-f]+ <[^>]*> 27bd0020 addiu sp,sp,32
+ \.\.\.
+
+Disassembly of section \.text\.bar:
+[0-9a-f]+ <[^>]*> 63fc addiu sp,-32
+[0-9a-f]+ <[^>]*> 6207 sw ra,28\(sp\)
+[0-9a-f]+ <[^>]*> 1800 0000 jal 00000000 <.*>
+[ ]*[0-9a-f]+: R_MIPS16_26 baz
+[0-9a-f]+ <[^>]*> 6500 nop
+[0-9a-f]+ <[^>]*> 9707 lw a3,28\(sp\)
+[0-9a-f]+ <[^>]*> ef00 jr a3
+[0-9a-f]+ <[^>]*> 6304 addiu sp,32
+ \.\.\.
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-mips16.s b/binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-mips16.s
new file mode 100644
index 00000000..338022c1
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/mips/mixed-mips16.s
@@ -0,0 +1,34 @@
+ .section .text.foo, "ax", @progbits
+ .set nomips16
+ .globl foo
+ .ent foo
+foo:
+ addiu $sp, $sp, -32
+ sw $ra, 28($sp)
+ jal baz
+ lw $ra, 28($sp)
+ addiu $sp, $sp, 32
+ jr $ra
+ .end foo
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+ .align 2
+ .space 8
+
+
+ .section .text.bar, "ax", @progbits
+ .set mips16
+ .globl bar
+ .ent bar
+bar:
+ addiu $sp, -32
+ sw $ra, 28($sp)
+ jal baz
+ lw $a3, 28($sp)
+ addiu $sp, 32
+ jr $a3
+ .end bar
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+ .align 2
+ .space 8
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/needed-by-reloc.s b/binutils-2.24/binutils/testsuite/binutils-all/needed-by-reloc.s
new file mode 100644
index 00000000..40ebdedf
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/needed-by-reloc.s
@@ -0,0 +1,7 @@
+ .globl foo
+
+ .data
+ .long foo
+ .text
+foo:
+ .long 1
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/nm-1.s b/binutils-2.24/binutils/testsuite/binutils-all/nm-1.s
new file mode 100644
index 00000000..7f1633c3
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/nm-1.s
@@ -0,0 +1,15 @@
+ .globl text_symbol1
+ .globl text_symbol2
+ .globl text_symbol3
+ .globl end_symbol
+ .text
+text_symbol1:
+ .byte 0,0,0,0
+ .byte 0,0,0,0
+ .byte 0,0,0,0
+text_symbol2:
+ .byte 0,0,0,0
+ .byte 0,0,0,0
+text_symbol3:
+ .byte 0,0,0,0
+end_symbol:
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/nm-elf-1.s b/binutils-2.24/binutils/testsuite/binutils-all/nm-elf-1.s
new file mode 100644
index 00000000..8e2f1f48
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/nm-elf-1.s
@@ -0,0 +1,16 @@
+ .globl text_symbol1
+ .globl text_symbol2
+ .globl text_symbol3
+ .text
+text_symbol1:
+ .long 0
+ .long 0
+ .long 0
+ .size text_symbol1, . - text_symbol1
+text_symbol2:
+ .long 0
+ .long 0
+ .size text_symbol2, . - text_symbol2
+text_symbol3:
+ .long 0
+ .size text_symbol3, . - text_symbol3
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/nm.exp b/binutils-2.24/binutils/testsuite/binutils-all/nm.exp
new file mode 100644
index 00000000..e9e7f5fb
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/nm.exp
@@ -0,0 +1,209 @@
+# Copyright 1993, 1994, 1995, 1997, 2007, 2009 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 3 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.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# This file was written by Rob Savoye <rob@cygnus.com>
+# and rewritten by Ian Lance Taylor <ian@cygnus.com>
+
+if ![is_remote host] {
+ if {[which $NM] == 0} then {
+ perror "$NM does not exist"
+ return
+ }
+}
+
+send_user "Version [binutil_version $NM]"
+
+
+if {![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o]} then {
+ return
+}
+
+if [is_remote host] {
+ set tempfile [remote_download host tmpdir/bintest.o]
+} else {
+ set tempfile tmpdir/bintest.o
+}
+
+# Test nm with no arguments.
+
+# This test does not work correctly on ECOFF targets, because ECOFF
+# stores most symbols twice, which messes up the nm output.
+setup_xfail "alpha*-*-osf*" "alpha*-*-netware*"
+setup_xfail "mips*-*-ultrix*" "mips*-*-ecoff*" "mips*-*-irix4*"
+setup_xfail "mips*-*-riscos*" "mips*-*-sysv3*" "mips*-sony-bsd*"
+
+# This test does not work correctly on XCOFF targets, because XCOFF
+# does not enter static symbols in the symbol table.
+setup_xfail "*-*-aix*"
+
+set got [binutils_run $NM "$NMFLAGS $tempfile"]
+
+if [info exists vars] then { unset vars }
+while {[regexp "(\[a-zA-Z\]) (\[a-z_\]*_symbol)(.*)" $got all type symbol rest]} {
+ set vars($symbol) $type
+ set got $rest
+}
+
+if {![info exists vars(text_symbol)] \
+ || $vars(text_symbol) != "T" \
+ || ![info exists vars(data_symbol)] \
+ || $vars(data_symbol) != "D" \
+ || ![info exists vars(common_symbol)] \
+ || $vars(common_symbol) != "C" \
+ || ![info exists vars(external_symbol)] \
+ || $vars(external_symbol) != "U" \
+ || ![info exists vars(static_text_symbol)] \
+ || $vars(static_text_symbol) != "t" \
+ || ![info exists vars(static_data_symbol)] \
+ || $vars(static_data_symbol) != "d"} {
+ fail "nm (no arguments)"
+} else {
+ pass "nm (no arguments)"
+}
+
+# Test nm -g
+
+set got [binutils_run $NM "$NMFLAGS -g $tempfile"]
+
+if [info exists vars] then { unset vars }
+while {[regexp "(\[a-z_\]*_symbol)(.*)" $got all symbol rest]} {
+ set vars($symbol) 1
+ set got $rest
+}
+
+if {![info exists vars(text_symbol)] \
+ || ![info exists vars(data_symbol)] \
+ || ![info exists vars(common_symbol)] \
+ || ![info exists vars(external_symbol)] \
+ || [info exists vars(static_text_symbol)] \
+ || [info exists vars(static_data_symbol)]} {
+ fail "nm -g"
+} else {
+ pass "nm -g"
+}
+
+if [is_elf_format] {
+ # PR binutils/12753
+ # Test nm -g on a unique global symbol.
+
+ # Only some targets support unique symbols.
+ if {([istarget "i?86-*-*"]
+ || [istarget "x86_64-*-*"]
+ || [istarget "arm-*-*"]
+ || [istarget "powerpc*-*-*"]
+ || [istarget "sparc*-*-*"])} then {
+
+ if {![binutils_assemble $srcdir/$subdir/unique.s tmpdir/unique.o]} then {
+ fail "nm -g on unique symbols (assembling)"
+ } else {
+ if [is_remote host] {
+ set tmpfile [remote_download host tmpdir/unique.o]
+ } else {
+ set tmpfile tmpdir/unique.o
+ }
+
+ set got [binutils_run $NM "$NMFLAGS -g $tmpfile"]
+
+ if [regexp "u foo" $got] then {
+ pass "nm -g on unique symbols"
+ } else {
+ fail "nm -g on unique symbols"
+ }
+
+ if { $verbose < 1 } {
+ remote_file host delete "tmpdir/unique.o"
+ }
+ }
+ }
+}
+
+# Test nm -P
+
+# This test does not work correctly on ECOFF targets, because ECOFF
+# stores most symbols twice, which messes up the nm output.
+setup_xfail "alpha*-*-osf*" "alpha*-*-netware*"
+setup_xfail "mips*-*-ultrix*" "mips*-*-ecoff*" "mips*-*-irix4*"
+setup_xfail "mips*-*-riscos*" "mips*-*-sysv3*" "mips*-sony-bsd*"
+
+# This test does not work correctly on XCOFF targets, because XCOFF
+# does not enter static symbols in the symbol table.
+setup_xfail "*-*-aix*"
+
+set got [binutils_run $NM "$NMFLAGS -P $tempfile"]
+
+set want "common_symbol C \[0\]*4.*data_symbol D \[0-9a-fA-F\]*.*external_symbol U.*static_data_symbol d \[0-9a-fA-F\]*.*static_text_symbol t \[0-9a-fA-F\]*.*text_symbol T \[0-9a-fA-F\]*"
+
+if [regexp $want $got] then {
+ pass "nm -P"
+} else {
+ fail "nm -P"
+}
+
+# Test nm --size-sort
+
+# The target exceptions here are intended for targets that have ELF as
+# an intermediate format or otherwise require the ELF-variant syntax
+# for proper size annotation. It would be nice if is_elf_format found
+# all the ELF variants, but adding the patterns here to that proc then
+# introduces a whole slew of new regressions in the GAS and LD testsuites.
+if { [is_elf_format]
+ || [istarget *-*-dragonfly*]
+ || [istarget *-*-*elf]
+ || [istarget *-*-freebsd*]
+ || [istarget *-*-lynxos*]
+ || [istarget "mmix-knuth-mmixware"]
+ || [istarget *-*-netware*]
+ || [istarget *-*-nto*]
+ || [istarget *-*-rdos*]
+ || [istarget *-*-tpf*]
+ || [istarget *-*-uclinux*]
+ || [istarget ia64-*-*vms*]
+ || [istarget *-*-vxworks*] } {
+ set nm_1_src "nm-elf-1.s"
+} else {
+ set nm_1_src "nm-1.s"
+}
+
+if {![binutils_assemble $srcdir/$subdir/$nm_1_src tmpdir/nm-1.o]} then {
+ return
+}
+
+if [is_remote host] {
+ set tempfile [remote_download host tmpdir/nm-1.o]
+} else {
+ set tempfile tmpdir/nm-1.o
+}
+
+# This test does not work correctly on ECOFF targets, because ECOFF
+# stores most symbols twice, which messes up the nm output.
+setup_xfail "alpha*-*-osf*" "alpha*-*-netware*"
+setup_xfail "mips*-*-ultrix*" "mips*-*-ecoff*" "mips*-*-irix4*"
+setup_xfail "mips*-*-riscos*" "mips*-*-sysv3*" "mips*-sony-bsd*"
+
+set got [binutils_run $NM "$NMFLAGS --size-sort $tempfile"]
+
+set want "0*4 T text_symbol3.*0*8 T text_symbol2.*0*c T text_symbol1"
+
+if [regexp $want $got] then {
+ pass "nm --size-sort"
+} else {
+ fail "nm --size-sort"
+}
+
+# There are certainly other tests that could be run.
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/note-1.d b/binutils-2.24/binutils/testsuite/binutils-all/note-1.d
new file mode 100644
index 00000000..17a7d59a
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/note-1.d
@@ -0,0 +1,13 @@
+#PROG: objcopy
+#readelf: -S --wide
+#objcopy: --add-section .note=$srcdir/note-1.d
+#name: add notes section
+#source: copytest.s
+#not-target: h8300-*-*
+
+There are .*
+
+Section Headers:
+#...
+ \[[ 0-9]*\] .note NOTE 0*0000000 0*...... 0*000... .*
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/objcopy.exp b/binutils-2.24/binutils/testsuite/binutils-all/objcopy.exp
new file mode 100644
index 00000000..4dfb73c7
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/objcopy.exp
@@ -0,0 +1,1006 @@
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+# 2004, 2006, 2007, 2009, 2010, 2011
+# 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 3 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.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# Written by Ian Lance Taylor <ian@cygnus.com>
+
+if ![is_remote host] {
+ if {[which $OBJCOPY] == 0} then {
+ perror "$OBJCOPY does not exist"
+ return
+ }
+}
+
+send_user "Version [binutil_version $OBJCOPY]"
+
+if ![is_remote host] {
+ set tempfile tmpdir/bintest.o
+ set copyfile tmpdir/copy
+} else {
+ set tempfile [remote_download host tmpdir/bintest.o]
+ set copyfile copy
+}
+
+# Test that objcopy does not modify a file when copying it.
+
+proc objcopy_test {testname srcfile} {
+ global OBJCOPY
+ global OBJCOPYFLAGS
+ global srcdir
+ global subdir
+ global tempfile
+ global copyfile
+
+ if {![binutils_assemble $srcdir/$subdir/${srcfile} tmpdir/bintest.o]} then {
+ perror "unresolved $testname"
+ unresolved "objcopy ($testname)"
+ return
+ }
+
+ set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS $tempfile ${copyfile}.o"]
+
+ if ![string match "" $got] then {
+ fail "objcopy ($testname)"
+ } else {
+ send_log "cmp $tempfile ${copyfile}.o\n"
+ verbose "cmp $tempfile ${copyfile}.o"
+ if [is_remote host] {
+ set src1 tmpdir/bintest.o
+ set src2 tmpdir/copy.o
+ remote_upload host $tempfile $src1
+ remote_upload host ${copyfile}.o $src2
+ } else {
+ set src1 ${tempfile}
+ set src2 ${copyfile}.o
+ }
+ set status [remote_exec build cmp "${src1} ${src2}"]
+ set exec_output [lindex $status 1]
+ set exec_output [prune_warnings $exec_output]
+
+ # On some systems the result of objcopy will not be identical.
+ # Usually this is just because gas isn't using bfd to write the
+ # files in the first place, and may order things a little
+ # differently. Those systems should use setup_xfail here.
+
+ setup_xfail "h8300-*-coff"
+ setup_xfail "h8500-*-rtems*" "h8500-*-coff"
+ setup_xfail "hppa*-*-*"
+ setup_xfail "i960-*"
+ setup_xfail "m68*-*-*coff" "m68*-*-hpux*" "m68*-*-lynxos*"
+ setup_xfail "m68*-*-sysv*" "m68*-apple-aux*"
+ setup_xfail "m8*-*"
+ setup_xfail "or32-*-rtems*" "or32-*-coff"
+ setup_xfail "sh-*-coff*"
+ setup_xfail "tic80-*-*" "w65-*"
+
+ clear_xfail "hppa*64*-*-hpux*" "hppa*-*-linux*" "hppa*-*-lites*"
+ clear_xfail "hppa*-*-*n*bsd*" "hppa*-*-rtems*" "*-*-*elf*"
+ clear_xfail "m68*-*-sysv4*"
+
+ if [string match "" $exec_output] then {
+ pass "objcopy ($testname)"
+ } else {
+ send_log "$exec_output\n"
+ verbose "$exec_output" 1
+
+ # On OSF/1, this succeeds with gas and fails with /bin/as.
+ setup_xfail "alpha*-*-osf*"
+
+ fail "objcopy ($testname)"
+ }
+ }
+}
+
+objcopy_test "simple copy" bintest.s
+
+# Test reversing bytes in a section.
+
+set reversed ${tempfile}-reversed
+set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -j .data --reverse-bytes=4 $tempfile $reversed"]
+
+if ![string match "" $got] then {
+ fail "objcopy --reverse-bytes"
+} else {
+ if [is_remote host] {
+ remote_upload host ${reversed} tmpdir/copy-reversed.o
+ set reversed tmpdir/copy-reversed.o
+ }
+
+ set origdata [binutils_run $OBJDUMP "$OBJDUMPFLAGS -s -j .data $tempfile"]
+ set revdata [binutils_run $OBJDUMP "$OBJDUMPFLAGS -s -j .data $reversed"]
+
+ set want "^ \[0-9\]+ (\[0-9\]+)"
+ set found_orig [regexp -lineanchor $want $origdata -> origdata]
+ set found_rev [regexp -lineanchor $want $revdata -> revdata]
+
+ if {$found_orig == 0 || $found_rev == 0} then {
+ # som doesn't have a .data section
+ setup_xfail "hppa*-*-hpux*"
+ clear_xfail "hppa*64*-*-hpux*"
+
+ fail "objcopy --reverse-bytes"
+ } else {
+ scan $origdata "%2x%2x%2x%2x" b1 b2 b3 b4
+ scan $revdata "%2x%2x%2x%2x" c4 c3 c2 c1
+
+ if {$b1 == $c1 && $b2 == $c2 && $b3 == $c3 && $b4 == $c4} then {
+ pass "objcopy --reverse-bytes"
+ } else {
+ fail "objcopy --reverse-bytes"
+ }
+ }
+}
+
+# Test interleaved copy of multiple byte width
+
+set sequence_file sequence_file
+set file [open ${sequence_file} w]
+puts ${file} "12345678"
+close ${file}
+
+if [is_remote host] {
+ remote_upload host ${sequence_file} tmpdir/sequence_file
+ set sequence_file tmpdir/sequence_file
+}
+
+set got [binutils_run $OBJCOPY "-I binary -i 4 -b 0 --interleave-width 2 ${sequence_file} ${copyfile}"]
+
+if ![string match "" $got] then {
+ fail "objcopy -i --interleave-width"
+} else {
+ if [is_remote host] {
+ remote_upload host ${copyfile} tmpdir/interleave_output
+ set interleave_output tmpdir/interleave_output
+ } else {
+ set interleave_output ${copyfile}
+ }
+
+ set file [open ${interleave_output} r]
+ gets $file line
+ send_log "$line\n"
+ verbose $line
+
+ if ![string match "1256" $line] then {
+ fail "objcopy -i --interleave-width"
+ }
+ pass "objcopy -i --interleave-width"
+
+ close $file
+}
+
+# Test generating S records.
+
+# We make the srec filename 8.3 compatible. Note that the header string
+# matched against depends on the name of the file. Ugh.
+
+if [is_remote host] {
+ set srecfile copy.sre
+ set header_string S00B0000636F70792E737265C1
+} else {
+ set srecfile ${copyfile}.srec
+ set header_string S0130000746D706469722F636F70792E7372656397
+}
+
+set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -O srec $tempfile ${srecfile}"]
+
+if ![string match "" $got] then {
+ fail "objcopy -O srec"
+} else {
+ if [is_remote host] {
+ remote_upload host ${srecfile} tmpdir/copy.srec
+ set srecfile tmpdir/copy.srec
+ }
+ set file [open ${srecfile} r]
+
+ # The first S record is fixed by the file name we are using.
+ gets $file line
+ send_log "$line\n"
+ verbose $line
+ if ![regexp "$header_string.*" $line] {
+ send_log "bad header\n"
+ fail "objcopy -O srec"
+ } else {
+ while {[gets $file line] != -1 \
+ && [regexp "^S\[123\]\[0-9a-fA-F\]+\[\r\n\]*$" $line]} {
+ send_log "$line\n"
+ verbose $line
+ set line "**EOF**"
+ }
+ send_log "$line\n"
+ verbose $line
+ if ![regexp "^S\[789\]\[0-9a-fA-F\]+\[\r\n\]*$" $line] then {
+ send_log "bad trailer\n"
+ fail "objcopy -O srec"
+ } else {
+ if {[gets $file line] != -1} then {
+ send_log "garbage at end\n"
+ send_log "$line\n"
+ verbose $line
+ fail "objcopy -O srec"
+ } else {
+ set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -f ${srecfile}"]
+ if ![regexp "file format srec" $got] then {
+ send_log "objdump failed\n"
+ fail "objcopy -O srec"
+ } else {
+ pass "objcopy -O srec"
+ }
+ }
+ }
+ }
+
+ close $file
+}
+
+# Test setting and adjusting the start address. We only test this
+# while generating S records, because we may not be able to set the
+# start address for other object file formats, and the S record case
+# is the only useful one anyhow.
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -f $tempfile"]
+if ![regexp "start address (\[0-9a-fA-FxX\]+)" $got all origstart] then {
+ perror "objdump can not recognize bintest.o"
+ set origstart ""
+} else {
+ set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -O srec --set-start 0x7654 $tempfile ${copyfile}.srec"]
+ if ![string match "" $got] then {
+ fail "objcopy --set-start"
+ } else {
+ set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -f ${copyfile}.srec"]
+ if ![regexp "file format srec.*start address (\[0-9a-fA-FxX\]+)" $got all srecstart] then {
+ fail "objcopy --set-start"
+ } else {
+ if {$srecstart != 0x7654} then {
+ send_log "$srecstart != 0x7654\n"
+ fail "objcopy --set-start"
+ } else {
+ pass "objcopy --set-start"
+ }
+ }
+ }
+
+ set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -O srec --adjust-start 0x123 $tempfile ${copyfile}.srec"]
+ if ![string match "" $got] then {
+ fail "objcopy --adjust-start"
+ } else {
+ set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -f ${copyfile}.srec"]
+ if ![regexp "file format srec.*start address (\[0-9a-fA-FxX\]+)" $got all srecstart] then {
+ fail "objcopy --adjust-start"
+ } else {
+ if {$srecstart != $origstart + 0x123} then {
+ send_log "$srecstart != $origstart + 0x123\n"
+ fail "objcopy --adjust-start"
+ } else {
+ pass "objcopy --adjust-start"
+ }
+ }
+ }
+}
+
+# Test adjusting the overall VMA, and adjusting the VMA of a
+# particular section. We again only test this when generating S
+# records.
+
+set low ""
+set lowname ""
+
+set headers [binutils_run $OBJDUMP "$OBJDUMPFLAGS -h $tempfile"]
+
+set headers_regexp "\[ 0-9\]+(\[^ \]+)\[ \]*(\[0-9a-fA-F\]+)\[ \]+\[0-9a-fA-F\]+\[ \]+(\[0-9a-fA-F\]+)\[ \]+\[0-9a-fA-F\]+\[ \]+2\[*\]\[*\]\[0-9\]+(.*)"
+
+set got $headers
+while {[regexp $headers_regexp $got all name size vma rest]} {
+ set vma 0x$vma
+ set size 0x$size
+ if {$size != 0} {
+ if {$low == "" || $vma < $low} {
+ set low $vma
+ set lowname $name
+ }
+ }
+ set got $rest
+}
+
+if {$low == "" || $origstart == ""} then {
+ perror "objdump can not recognize bintest.o"
+} else {
+ set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -O srec --adjust-vma 0x123 $tempfile ${copyfile}.srec"]
+ if ![string match "" $got] then {
+ fail "objcopy --adjust-vma"
+ } else {
+ set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -fh ${copyfile}.srec"]
+ set want "file format srec.*start address\[ \]*(\[0-9a-fA-FxX\]+).*sec1\[ \]+\[0-9a-fA-F\]+\[ \]+(\[0-9a-fA-F\]+)"
+ if ![regexp $want $got all start vma] then {
+ fail "objcopy --adjust-vma"
+ } else {
+ set vma 0x$vma
+ if {$vma != $low + 0x123} then {
+ send_log "$vma != $low + 0x123\n"
+ fail "objcopy --adjust-vma"
+ } else {
+ if {$start != $origstart + 0x123} then {
+ send_log "$start != $origstart + 0x123\n"
+ fail "objcopy --adjust-vma"
+ } else {
+ pass "objcopy --adjust-vma"
+ }
+ }
+ }
+ }
+
+ set arg ""
+ set got $headers
+ while {[regexp $headers_regexp $got all name size vma rest]} {
+ set vma 0x$vma
+ if {$vma == $low} then {
+ set arg "$arg --adjust-section-vma $name+4"
+ }
+ set got $rest
+ }
+
+ set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -O srec $arg $tempfile ${copyfile}.srec"]
+ if ![string match "" $got] then {
+ fail "objcopy --adjust-section-vma +"
+ } else {
+ set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -h ${copyfile}.srec"]
+ set want "file format srec.*sec1\[ \]+\[0-9a-fA-F\]+\[ \]+(\[0-9a-fA-F\]+)"
+ if ![regexp $want $got all vma] then {
+ fail "objcopy --adjust-section-vma +"
+ } else {
+ set vma 0x$vma
+ if {$vma != $low + 4} then {
+ send_log "$vma != $low + 4\n"
+ fail "objcopy --adjust-section-vma +"
+ } else {
+ pass "objcopy --adjust-section-vma +"
+ }
+ }
+ }
+
+ regsub -all "\\+4" $arg "=[expr $low + 4]" argeq
+ set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS -O srec $argeq $tempfile ${copyfile}.srec"]
+ if ![string match "" $got] then {
+ fail "objcopy --adjust-section-vma ="
+ } else {
+ set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -h ${copyfile}.srec"]
+ set want "file format srec.*sec1\[ \]+\[0-9a-fA-F\]+\[ \]+(\[0-9a-fA-F\]+)"
+ if ![regexp $want $got all vma] then {
+ fail "objcopy --adjust-section-vma ="
+ } else {
+ set vma 0x$vma
+ if {$vma != $low + 4} then {
+ send_log "$vma != $low + 4\n"
+ fail "objcopy --adjust-section-vma ="
+ } else {
+ pass "objcopy --adjust-section-vma ="
+ }
+ }
+ }
+}
+
+# Test stripping an object.
+
+proc strip_test { } {
+ global AR
+ global CC
+ global STRIP
+ global STRIPFLAGS
+ global NM
+ global NMFLAGS
+ global srcdir
+ global subdir
+ global READELF
+
+ set test "strip"
+
+ if { [target_compile $srcdir/$subdir/testprog.c tmpdir/testprog.o object debug] != "" } {
+ untested $test
+ return
+ }
+
+ set osabi_fail "false"
+ if [is_elf_format] {
+ verbose -log "$READELF -a tmpdir/testprog.o > tmpdir/osabi.in"
+ set exec_output [remote_exec host "$READELF -h tmpdir/testprog.o" "" "/dev/null" "tmpdir/osabi.in"]
+ if { [lindex $exec_output 0] != 0 } then {
+ unresolved "$test preserving OS/ABI"
+ set osabi_fail "true"
+ } else {
+ verbose -log "grep OS/ABI tmpdir/osabi.in"
+ catch "exec grep OS/ABI tmpdir/osabi.in" osabi_in
+ }
+ }
+
+ if [is_remote host] {
+ set archive libstrip.a
+ set objfile [remote_download host tmpdir/testprog.o]
+ remote_file host delete $archive
+ } else {
+ set archive tmpdir/libstrip.a
+ set objfile tmpdir/testprog.o
+ }
+
+ remote_file build delete tmpdir/libstrip.a
+
+ set exec_output [binutils_run $AR "rc $archive ${objfile}"]
+ if ![string match "" $exec_output] {
+ fail $test
+ unresolved "$test preserving OS/ABI"
+ return
+ }
+
+ set exec_output [binutils_run $STRIP "-g $archive"]
+ if ![string match "" $exec_output] {
+ fail $test
+ unresolved "$test preserving OS/ABI"
+ return
+ }
+
+ set exec_output [binutils_run $STRIP "$STRIPFLAGS $archive"]
+ if ![string match "" $exec_output] {
+ fail $test
+ unresolved "$test preserving OS/ABI"
+ return
+ }
+
+ if { $osabi_fail != "true" && [is_elf_format] } {
+ verbose -log "$READELF -a tmpdir/testprog.o > tmpdir/osabi.out"
+ set exec_output [remote_exec host "$READELF -h tmpdir/testprog.o" "" "/dev/null" "tmpdir/osabi.out"]
+ if { [lindex $exec_output 0] != 0 } then {
+ unresolved "$test preserving OS/ABI"
+ } else {
+ verbose -log "grep OS/ABI tmpdir/osabi.out"
+ catch "exec grep OS/ABI tmpdir/osabi.out" osabi_out
+ if { "$osabi_in" == "$osabi_out" } {
+ pass "$test preserving OS/ABI"
+ } else {
+ fail "$test preserving OS/ABI"
+ }
+ }
+ }
+
+ if { [target_compile $srcdir/$subdir/testprog.c tmpdir/testprog.o object debug] != "" } {
+ untested $test
+ return
+ }
+
+ if [is_remote host] {
+ set objfile [remote_download host tmpdir/testprog.o]
+ } else {
+ set objfile tmpdir/testprog.o
+ }
+
+ set exec_output [binutils_run $STRIP "$STRIPFLAGS $objfile"]
+ if ![string match "" $exec_output] {
+ fail $test
+ return
+ }
+
+ set exec_output [binutils_run $NM "-a $NMFLAGS $objfile"]
+ if ![string match "*: no symbols*" $exec_output] {
+ fail $test
+ return
+ }
+
+ pass $test
+}
+
+strip_test
+
+# Test stripping an object file with saving a symbol
+
+proc strip_test_with_saving_a_symbol { } {
+ global CC
+ global STRIP
+ global STRIPFLAGS
+ global NM
+ global NMFLAGS
+ global srcdir
+ global subdir
+
+ set test "strip with saving a symbol"
+
+ if { [target_compile $srcdir/$subdir/testprog.c tmpdir/testprog.o object debug] != "" } {
+ untested $test
+ return
+ }
+
+ if [is_remote host] {
+ set objfile [remote_download host tmpdir/testprog.o]
+ } else {
+ set objfile tmpdir/testprog.o
+ }
+
+ set exec_output [binutils_run $STRIP "$STRIPFLAGS -K main -K _main $objfile"]
+ if ![string match "" $exec_output] {
+ fail $test
+ return
+ }
+
+ set exec_output [binutils_run $NM "$NMFLAGS $objfile"]
+ if {![regexp {^([0-9a-fA-F]+)?[ ]+[TD] main} $exec_output] \
+ && ![regexp {^([0-9a-fA-F]+)?[ ]+T _main} $exec_output]} {
+ fail $test
+ return
+ }
+
+ pass $test
+}
+
+strip_test_with_saving_a_symbol
+
+# Build a final executable.
+
+if { [istarget *-*-cygwin] || [istarget *-*-mingw*] } {
+ set test_prog "testprog.exe"
+} else {
+ set test_prog "testprog"
+}
+
+proc copy_setup { } {
+ global srcdir
+ global subdir
+ global gcc_gas_flag
+ global test_prog
+ global host_triplet
+
+ set res [build_wrapper testglue.o]
+ set flags { debug }
+
+ if { [istarget *-*-uclinux*] && ![istarget tic6x-*-*] } {
+ return 1
+ }
+
+ if { $res != "" } {
+ lappend flags "additional_flags=[lindex $res 1]"
+ set add_libs "testglue.o"
+ } else {
+ set add_libs ""
+ }
+
+ if { [istarget *-*-linux*]
+ || [istarget *-*-gnu*] } {
+ foreach i $gcc_gas_flag {
+ set flags "additional_flags=$i $flags"
+ }
+ }
+ if { [target_compile "$srcdir/$subdir/testprog.c $add_libs" tmpdir/$test_prog executable $flags] != "" } {
+ return 2
+ }
+
+ set result [remote_load target tmpdir/$test_prog]
+ set status [lindex $result 0]
+
+ if { $status != "pass" } {
+ send_log "cannot run executable, status = ${status} on ${host_triplet}\n"
+ if { [istarget $host_triplet] } {
+ return 3
+ }
+ set status "pass"
+ }
+
+ return 0
+}
+
+# Test copying an executable.
+
+proc copy_executable { prog flags test1 test2 } {
+ global test_prog
+ global host_triplet
+
+ if [is_remote host] {
+ set testfile [remote_download host tmpdir/$test_prog]
+ set testcopy copyprog
+ } else {
+ set testfile tmpdir/$test_prog
+ set testcopy tmpdir/copyprog
+ }
+ remote_file host delete $testcopy
+
+ set exec_output [binutils_run $prog "$flags $testfile $testcopy"]
+
+ if ![string match "" $exec_output] {
+ fail $test1
+ if [string match "" $test2] {
+ return
+ }
+ fail $test2
+ return
+ }
+
+ if [is_remote host] {
+ remote_upload host $testcopy tmpdir/copyprog
+ }
+
+ set status [remote_exec build "cmp" "tmpdir/$test_prog tmpdir/copyprog"]
+ set exec_output [lindex $status 1]
+
+ if [string match "" $exec_output] then {
+ pass $test1
+ } else {
+ send_log "$exec_output\n"
+ verbose "$exec_output"
+
+ # This will fail for many reasons. For example, it will most
+ # likely fail if a non-GNU linker is used. Therefore, we do
+ # not insist that it pass. If you are using an assembler and
+ # linker based on the same BFD as objcopy, it is worth
+ # investigating to see why this failure occurs. If we are
+ # cross compiling, we assume that a GNU linker is being used,
+ # and expect it to succeed.
+ if {[isnative]} then {
+ setup_xfail "*-*-*"
+ }
+
+ # This also fails for mips*-*-elf targets. See elf32-mips.c
+ # mips_elf_sym_is_global.
+ setup_xfail "mips*-*-elf"
+
+ setup_xfail "arm*-*-coff"
+ setup_xfail "arm*-*-pe"
+ setup_xfail "*-*-mingw*"
+ setup_xfail "*-*-cygwin*"
+
+ fail $test1
+ }
+
+ if [string match "" $test2] {
+ return
+ }
+
+ set output [remote_load target tmpdir/copyprog]
+ set status [lindex $output 0]
+ if { ![istarget $host_triplet] } {
+ set status "pass"
+ }
+ if { $status != "pass" } {
+ fail $test2
+ } else {
+ pass $test2
+ }
+}
+
+# Test stripping an executable
+
+proc strip_executable { prog flags test } {
+ global NM
+ global NMFLAGS
+ global READELF
+ global host_triplet
+
+ remote_file build delete tmpdir/striprog
+ remote_download build tmpdir/copyprog tmpdir/striprog
+ if [is_remote host] {
+ set copyfile [remote_download host tmpdir/striprog]
+ } else {
+ set copyfile tmpdir/striprog
+ }
+
+ set osabi_fail "false"
+ if [is_elf_format] {
+ verbose -log "$READELF -a ${copyfile} > tmpdir/osabi.in"
+ set exec_output [remote_exec host "$READELF -h ${copyfile}" "" "/dev/null" "tmpdir/osabi.in"]
+ if { [lindex $exec_output 0] != 0 } then {
+ unresolved "$test preserving OS/ABI"
+ set osabi_fail "true"
+ } else {
+ verbose -log "grep OS/ABI tmpdir/osabi.in"
+ catch "exec grep OS/ABI tmpdir/osabi.in" osabi_in
+ }
+ }
+
+ set exec_output [binutils_run $prog "$flags ${copyfile}"]
+ if ![string match "" $exec_output] {
+ fail $test
+ return
+ }
+
+ if [is_remote host] {
+ remote_upload host ${copyfile} tmpdir/striprog
+ }
+
+ set result [remote_load target tmpdir/striprog]
+ set status [lindex $result 0]
+ if { ![istarget $host_triplet] } {
+ set status "pass"
+ }
+ if { $status != "pass" } {
+ fail $test
+ return
+ }
+
+ if { $osabi_fail != "true" && [is_elf_format] } {
+ verbose -log "$READELF -a ${copyfile} > tmpdir/osabi.out"
+ set exec_output [remote_exec host "$READELF -h ${copyfile}" "" "/dev/null" "tmpdir/osabi.out"]
+ if { [lindex $exec_output 0] != 0 } then {
+ unresolved "$test preserving OS/ABI"
+ } else {
+ verbose -log "grep OS/ABI tmpdir/osabi.out"
+ catch "exec grep OS/ABI tmpdir/osabi.out" osabi_out
+ if { "$osabi_in" == "$osabi_out" } {
+ pass "$test preserving OS/ABI"
+ } else {
+ fail "$test preserving OS/ABI"
+ }
+ }
+ }
+
+ set exec_output [binutils_run $NM "$NMFLAGS ${copyfile}"]
+ if ![string match "*: no symbols*" $exec_output] {
+ fail $test
+ return
+ }
+ pass $test
+}
+
+# Test stripping an executable with saving a symbol
+
+proc strip_executable_with_saving_a_symbol { prog flags test } {
+ global NM
+ global NMFLAGS
+ global host_triplet
+
+ remote_file build delete tmpdir/striprog
+ remote_download build tmpdir/copyprog tmpdir/striprog
+ if [is_remote host] {
+ set copyfile [remote_download host tmpdir/striprog]
+ } else {
+ set copyfile tmpdir/striprog
+ }
+
+ set exec_output [binutils_run $prog "$flags ${copyfile}"]
+ if ![string match "" $exec_output] {
+ fail $test
+ return
+ }
+
+ if [is_remote host] {
+ remote_upload host ${copyfile} tmpdir/striprog
+ }
+
+ set result [remote_load target tmpdir/striprog]
+ set status [lindex $result 0]
+ if { ![istarget $host_triplet] } {
+ set status "pass"
+ }
+ if { $status != "pass" } {
+ fail $test
+ return
+ }
+
+ set exec_output [binutils_run $NM "$NMFLAGS ${copyfile}"]
+ if { [istarget mmix-knuth-mmixware] } {
+ # Whenever there's a symbol in the mmo format, there's the symbol
+ # Main, so remove it manually from the expected output for sake of
+ # this test.
+
+ # Using "" not {} to get the \n and \r translated.
+ regsub "^\[0-9a-fA-F\]+\[ \]+T Main\[\n\r\]+" $exec_output "" exec_output
+ }
+
+ if {![regexp {^([0-9a-fA-F]+)?[ ]+[TD] main} $exec_output] \
+ && ![regexp {^([0-9a-fA-F]+)?[ ]+[TD] _main} $exec_output]} {
+ fail $test
+ return
+ }
+ pass $test
+}
+
+# Test keeping only debug symbols of an executable
+
+proc keep_debug_symbols_and_test_copy { prog1 flags1 test1 prog2 flags2 test2 } {
+ global NM
+ global NMFLAGS
+
+ remote_file build delete tmpdir/striprog
+ remote_download build tmpdir/copyprog tmpdir/striprog
+ if [is_remote host] {
+ set copyfile [remote_download host tmpdir/striprog]
+ } else {
+ set copyfile tmpdir/striprog
+ }
+
+ set exec_output [binutils_run $prog1 "$flags1 ${copyfile}"]
+ if ![string match "" $exec_output] {
+ fail $test1
+ return
+ }
+ pass $test1
+
+ set exec_output [binutils_run $prog2 "$flags2 ${copyfile}"]
+ if ![string match "" $exec_output] {
+ fail $test2
+ return
+ }
+ pass $test2
+}
+
+set test1 "simple objcopy of executable"
+set test2 "run objcopy of executable"
+set test3 "run stripped executable"
+set test4 "run stripped executable with saving a symbol"
+set test5 "keep only debug data"
+set test6 "simple objcopy of debug data"
+
+switch [copy_setup] {
+ "1" {
+ # do nothing
+ }
+ "2" {
+ untested $test1
+ untested $test2
+ untested $test3
+ untested $test4
+ untested $test5
+ untested $test6
+ }
+ "3" {
+ copy_executable "$OBJCOPY" "$OBJCOPYFLAGS" "$test1" ""
+ unsupported $test2
+ unsupported $test3
+ unsupported $test4
+ unsupported $test5
+ unsupported $test6
+ }
+ "0" {
+ copy_executable "$OBJCOPY" "$OBJCOPYFLAGS" "$test1" "$test2"
+ strip_executable "$STRIP" "$STRIPFLAGS" "$test3"
+ strip_executable_with_saving_a_symbol "$STRIP" "-K main -K _main $STRIPFLAGS" "$test4"
+ keep_debug_symbols_and_test_copy "$STRIP" "--only-keep-debug $STRIPFLAGS" "$test5" \
+ "$OBJCOPY" "$OBJCOPYFLAGS" "$test6"
+ }
+}
+
+proc objcopy_test_readelf {testname srcfile} {
+ global OBJCOPY
+ global OBJCOPYFLAGS
+ global READELF
+ global srcdir
+ global subdir
+
+ if {![binutils_assemble $srcdir/$subdir/${srcfile} tmpdir/bintest.o]} then {
+ unresolved "objcopy ($testname)"
+ return
+ }
+
+ verbose -log "$OBJCOPY $OBJCOPYFLAGS tmpdir/bintest.o tmpdir/copy.o"
+ set exec_output [remote_exec host "$OBJCOPY $OBJCOPYFLAGS tmpdir/bintest.o tmpdir/copy.o"]
+ if { [lindex $exec_output 0] != 0
+ || ![string match "" [lindex $exec_output 1]] } then {
+ fail "objcopy ($testname)"
+ return
+ }
+
+ verbose -log "$READELF -a tmpdir/bintest.o > tmpdir/bintest.o.out"
+ set exec_output [remote_exec host "$READELF -a tmpdir/bintest.o" "" "/dev/null" "tmpdir/bintest.o.out"]
+ if { [lindex $exec_output 0] != 0 } then {
+ unresolved "objcopy ($testname)"
+ return
+ }
+ set exec_output [prune_warnings [lindex $exec_output 1]]
+ if ![string match "" $exec_output] then {
+ unresolved "objcopy ($testname)"
+ return
+ }
+
+ verbose -log "$READELF -a tmpdir/copy.o > tmpdir/copy.o.out"
+ set exec_output [remote_exec host "$READELF -a tmpdir/copy.o" "" "/dev/null" "tmpdir/copy.o.out"]
+ if { [lindex $exec_output 0] != 0 } then {
+ unresolved "objcopy ($testname)"
+ return
+ }
+ set exec_output [prune_warnings [lindex $exec_output 1]]
+ if ![string match "" $exec_output] then {
+ unresolved "objcopy ($testname)"
+ return
+ }
+
+ verbose -log "diff tmpdir/bintest.o.out tmpdir/copy.o.out"
+ catch "exec diff tmpdir/bintest.o.out tmpdir/copy.o.out" exec_output
+ set exec_output [prune_warnings $exec_output]
+
+ if [string match "" $exec_output] then {
+ pass "objcopy ($testname)"
+ } else {
+ fail "objcopy ($testname)"
+ }
+}
+
+# ia64 specific tests
+if { ([istarget "ia64-*-elf*"]
+ || [istarget "ia64-*-linux*"]) } {
+ objcopy_test "ia64 link order" link-order.s
+}
+
+# ELF specific tests
+if [is_elf_format] {
+ objcopy_test "ELF unknown section type" unknown.s
+ objcopy_test_readelf "ELF group" group.s
+ objcopy_test_readelf "ELF group" group-2.s
+ objcopy_test_readelf "ELF group" group-3.s
+ objcopy_test_readelf "ELF group" group-4.s
+ run_dump_test "group-5"
+ run_dump_test "group-6"
+ run_dump_test "copy-1"
+ run_dump_test "note-1"
+}
+
+run_dump_test "copy-2"
+run_dump_test "copy-3"
+run_dump_test "copy-4"
+
+if [is_elf_format] {
+ run_dump_test "strip-1"
+ run_dump_test "strip-2"
+ run_dump_test "strip-3"
+ run_dump_test "strip-4"
+ run_dump_test "strip-5"
+ run_dump_test "strip-6"
+ run_dump_test "strip-7"
+ run_dump_test "strip-8"
+ run_dump_test "strip-9"
+ if { ![istarget "*-*-hpux*"]
+ && ![istarget "msp*-*-*"] } {
+ run_dump_test "strip-10"
+ }
+
+ if { [istarget "i*86-*"] || [istarget "x86_64-*-*"] } {
+ # Check to make sure we don't strip a symbol named in relocations.
+ set test "objcopy keeps symbols needed by relocs"
+
+ set srcfile $srcdir/$subdir/needed-by-reloc.s
+
+ if {![binutils_assemble $srcfile tmpdir/bintest.o]} then {
+ unresolved $test
+ } else {
+ set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS --strip-symbol=foo tmpdir/bintest.o ${copyfile}.o"]
+
+ if [regexp "not stripping symbol `foo' because it is named in a relocation" $got] {
+ pass $test
+ } else {
+ fail $test
+ }
+ }
+ }
+
+ # The symbol table for some MIPS targets is sorted differently than
+ # the ELF canonical order, so the regexps in localize-hidden-1.d fail
+ # to match. These tests must be matched to targets for which
+ # targ_defvec=bfd_elf32_bigmips_vec,
+ # targ_defvec=bfd_elf32_littlemips_vec,
+ # targ_defvec=bfd_elf32_nbigmips_vec or
+ # targ_defvec=bfd_elf32_nlittlemips_vec in config.bfd. When syncing,
+ # don't forget that earlier case-matches trump later ones.
+ if { ![istarget "mips*-sde-elf*"] && ![istarget "mips64*-*-openbsd*"] } {
+ setup_xfail "mips*-*-irix5*" "mips*-*-irix6*" "mips*-*-elf*" \
+ "mips*-*-rtems*" "mips*-*-windiss" "mips*-*-none" \
+ "mips*-*-openbsd*" "mips*-*-chorus*"
+ }
+ run_dump_test "localize-hidden-1"
+ run_dump_test "testranges"
+ run_dump_test "testranges-ia64"
+
+ run_dump_test "add-section"
+ run_dump_test "add-empty-section"
+
+ run_dump_test "exclude-1a"
+ run_dump_test "exclude-1b"
+}
+run_dump_test "localize-hidden-2"
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/objdump.W b/binutils-2.24/binutils/testsuite/binutils-all/objdump.W
new file mode 100644
index 00000000..f544d829
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/objdump.W
@@ -0,0 +1,103 @@
+
+.*dw2-compressed.o: file format .*
+
+Contents of the .debug_info section:
+
+ Compilation Unit @ offset 0x0:
+ Length: 0x4e \(32-bit\)
+ Version: 2
+ Abbrev Offset: 0x0
+ Pointer Size: 4
+ <0><b>: Abbrev Number: 1 \(DW_TAG_compile_unit\)
+ <c> DW_AT_stmt_list : 0x0
+ <10> DW_AT_high_pc : 0x.
+ <14> DW_AT_low_pc : 0x.
+ <18> DW_AT_name : file1.txt
+ <22> DW_AT_producer : GNU C 3.3.3
+ <2e> DW_AT_language : 1 \(ANSI C\)
+ <1><2f>: Abbrev Number: 2 \(DW_TAG_subprogram\)
+ <30> DW_AT_external : 1
+ <31> DW_AT_decl_file : 1
+ <32> DW_AT_decl_line : 2
+ <33> DW_AT_name : func_cu1
+ <3c> DW_AT_type : <0x4a>
+ <40> DW_AT_low_pc : 0x.
+ <44> DW_AT_high_pc : 0x.
+ <48> DW_AT_frame_base : 1 byte block: 55 \(DW_OP_reg5 \([^()]*\)\)
+ <1><4a>: Abbrev Number: 3 \(DW_TAG_base_type\)
+ <4b> DW_AT_name : int
+ <4f> DW_AT_byte_size : 4
+ <50> DW_AT_encoding : 5 \(signed\)
+ <1><51>: Abbrev Number: 0
+
+Raw dump of debug contents of section .debug_line:
+
+ Offset: 0x0
+ Length: 62
+ DWARF Version: 2
+ Prologue Length: 35
+ Minimum Instruction Length: 1
+ Initial value of 'is_stmt': 1
+ Line Base: 1
+ Line Range: 1
+ Opcode Base: 16
+
+ Opcodes:
+ Opcode 1 has 0 args
+ Opcode 2 has 1 args
+ Opcode 3 has 1 args
+ Opcode 4 has 1 args
+ Opcode 5 has 1 args
+ Opcode 6 has 0 args
+ Opcode 7 has 0 args
+ Opcode 8 has 0 args
+ Opcode 9 has 1 args
+ Opcode 10 has 0 args
+ Opcode 11 has 0 args
+ Opcode 12 has 1 args
+ Opcode 13 has 0 args
+ Opcode 14 has 0 args
+ Opcode 15 has 0 args
+
+ The Directory Table is empty.
+
+ The File Name Table \(offset 0x.*\):
+ Entry Dir Time Size Name
+ 1 0 0 0 file1.txt
+
+ Line Number Statements:
+ \[0x.*\] Extended opcode 2: set Address to .*
+ \[0x.*\] Advance Line by 3 to 4
+ \[0x.*\] Copy
+ \[0x.*\] Copy
+ \[0x.*\] Extended opcode 2: set Address to .*
+ \[0x.*\] Extended opcode 1: End of Sequence
+
+
+Contents of the .debug_abbrev section:
+
+ Number TAG \(0x0\)
+ 1 DW_TAG_compile_unit \[has children\]
+ DW_AT_stmt_list DW_FORM_data4
+ DW_AT_high_pc DW_FORM_addr
+ DW_AT_low_pc DW_FORM_addr
+ DW_AT_name DW_FORM_string
+ DW_AT_producer DW_FORM_string
+ DW_AT_language DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
+ 2 DW_TAG_subprogram \[no children\]
+ DW_AT_external DW_FORM_flag
+ DW_AT_decl_file DW_FORM_data1
+ DW_AT_decl_line DW_FORM_data1
+ DW_AT_name DW_FORM_string
+ DW_AT_type DW_FORM_ref4
+ DW_AT_low_pc DW_FORM_addr
+ DW_AT_high_pc DW_FORM_addr
+ DW_AT_frame_base DW_FORM_block1
+ DW_AT value: 0 DW_FORM value: 0
+ 3 DW_TAG_base_type \[no children\]
+ DW_AT_name DW_FORM_string
+ DW_AT_byte_size DW_FORM_data1
+ DW_AT_encoding DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/objdump.WL b/binutils-2.24/binutils/testsuite/binutils-all/objdump.WL
new file mode 100644
index 00000000..3846f4fc
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/objdump.WL
@@ -0,0 +1,15 @@
+
+.*dw2-decodedline.o: file format .*
+
+Decoded dump of debug contents of section \.debug_line:
+
+CU: \./dw2-decodedline\.c:
+File name Line number Starting address
+
+directory/file1\.c:
+file1\.c 1 .*
+
+
+\./dw2-decodedline\.c:\[\+\+\]
+dw2-decodedline\.c 2 .*
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/objdump.exp b/binutils-2.24/binutils/testsuite/binutils-all/objdump.exp
new file mode 100644
index 00000000..b330a321
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/objdump.exp
@@ -0,0 +1,249 @@
+# Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2007, 2008, 2009, 2011, 2012
+# 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 3 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.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# This file was written by Rob Savoye <rob@cygnus.com>
+# and rewritten by Ian Lance Taylor <ian@cygnus.com>
+
+if ![is_remote host] {
+ if {[which $OBJDUMP] == 0} then {
+ perror "$OBJDUMP does not exist"
+ return
+ }
+}
+
+send_user "Version [binutil_version $OBJDUMP]"
+
+# Simple test of objdump -i
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -i"]
+
+set cpus_expected [list]
+lappend cpus_expected aarch64 alpha arc arm cris
+lappend cpus_expected d10v d30v fr30 fr500 fr550 h8 hppa i386 i860 i960 ip2022
+lappend cpus_expected m16c m32c m32r m68hc11 m68hc12 m68k m88k MCore MicroBlaze
+lappend cpus_expected mips mn10200 mn10300 ms1 msp ns32k pj powerpc pyramid
+lappend cpus_expected romp rs6000 s390 sh sparc
+lappend cpus_expected tahoe tic54x tic80 tilegx tms320c30 tms320c4x tms320c54x
+lappend cpus_expected v850 vax we32k x86-64 xscale xtensa z8k z8001 z8002
+
+# Make sure the target CPU shows up in the list.
+lappend cpus_expected ${target_cpu}
+
+# Create regexp
+set cpus_regex "([join $cpus_expected | ])"
+
+verbose -log "CPU regex: $cpus_regex"
+
+set want "BFD header file version.*srec\[^\n\]*\n\[^\n\]*header \[^\n\]*endian\[^\n\]*, data \[^\n\]*endian.*$cpus_regex"
+
+if [regexp $want $got] then {
+ pass "objdump -i"
+} else {
+ fail "objdump -i"
+}
+
+# The remaining tests require a test file.
+
+
+if {![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o]} then {
+ return
+}
+if [is_remote host] {
+ set testfile [remote_download host tmpdir/bintest.o]
+} else {
+ set testfile tmpdir/bintest.o
+}
+
+# Test objdump -f
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -f $testfile"]
+
+set want "$testfile:\[ \]*file format.*architecture:\[ \]*${cpus_regex}.*HAS_RELOC.*HAS_SYMS"
+
+if ![regexp $want $got] then {
+ fail "objdump -f"
+} else {
+ pass "objdump -f"
+}
+
+# Test objdump -h
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -h $testfile"]
+
+set want "$testfile:\[ \]*file format.*Sections.*\[0-9\]+\[ \]+\[^ \]*(text|TEXT|\\\$CODE\\\$)\[^ \]*\[ \]*(\[0-9a-fA-F\]+).*\[0-9\]+\[ \]+\[^ \]*(\\.data|DATA)\[^ \]*\[ \]*(\[0-9a-fA-F\]+)"
+
+if ![regexp $want $got all text_name text_size data_name data_size] then {
+ fail "objdump -h"
+} else {
+ verbose "text name is $text_name size is $text_size"
+ verbose "data name is $data_name size is $data_size"
+ set ets 8
+ set eds 4
+ # The [ti]c4x target has the property sizeof(char)=sizeof(long)=1
+ if [istarget *c4x*-*-*] then {
+ set ets 2
+ set eds 1
+ }
+ # c54x section sizes are in bytes, not octets; adjust accordingly
+ if [istarget *c54x*-*-*] then {
+ set ets 4
+ set eds 2
+ }
+ if {[expr "0x$text_size"] < $ets || [expr "0x$data_size"] < $eds} then {
+ send_log "sizes too small\n"
+ fail "objdump -h"
+ } else {
+ pass "objdump -h"
+ }
+}
+
+# Test objdump -t
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -t $testfile"]
+
+if [info exists vars] then { unset vars }
+while {[regexp "(\[a-z\]*_symbol)(.*)" $got all symbol rest]} {
+ set vars($symbol) 1
+ set got $rest
+}
+
+if {![info exists vars(text_symbol)] \
+ || ![info exists vars(data_symbol)] \
+ || ![info exists vars(common_symbol)] \
+ || ![info exists vars(external_symbol)]} then {
+ fail "objdump -t"
+} else {
+ pass "objdump -t"
+}
+
+# Test objdump -r
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -r $testfile"]
+
+set want "$testfile:\[ \]*file format.*RELOCATION RECORDS FOR \\\[\[^\]\]*(text|TEXT|\\\$CODE\\\$)\[^\]\]*\\\].*external_symbol"
+
+if [regexp $want $got] then {
+ pass "objdump -r"
+} else {
+ fail "objdump -r"
+}
+
+# Test objdump -s
+
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -s $testfile"]
+
+set want "$testfile:\[ \]*file format.*Contents.*(text|TEXT|\\\$CODE\\\$)\[^0-9\]*\[ \]*\[0-9a-fA-F\]*\[ \]*(00000001|01000000|00000100).*Contents.*(data|DATA)\[^0-9\]*\[ \]*\[0-9a-fA-F\]*\[ \]*(00000002|02000000|00000200)"
+
+if [regexp $want $got] then {
+ pass "objdump -s"
+} else {
+ fail "objdump -s"
+}
+
+# Test objdump -s on a file that contains a compressed .debug section
+
+if { ![is_elf_format] || ![is_zlib_supported] } then {
+ unsupported "objdump compressed debug"
+} elseif { ![binutils_assemble $srcdir/$subdir/dw2-compressed.S tmpdir/dw2-compressed.o] } then {
+ fail "objdump compressed debug"
+} else {
+ if [is_remote host] {
+ set compressed_testfile [remote_download host tmpdir/dw2-compressed.o]
+ } else {
+ set compressed_testfile tmpdir/dw2-compressed.o
+ }
+
+ set got [remote_exec host "$OBJDUMP $OBJDUMPFLAGS -s -j .zdebug_abbrev $compressed_testfile" "" "/dev/null" "objdump.out"]
+
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ fail "objdump -s -j .zdebug_abbrev (reason: unexpected output)"
+ send_log $got
+ send_log "\n"
+ }
+
+ if { [regexp_diff objdump.out $srcdir/$subdir/objdump.s] } then {
+ fail "objdump -s -j .zdebug_abbrev"
+ } else {
+ pass "objdump -s -j .zdebug_abbrev"
+ }
+
+ # Test objdump -W on a file that contains some compressed .debug sections
+
+ set got [remote_exec host "$OBJDUMP $OBJDUMPFLAGS -W $compressed_testfile" "" "/dev/null" "objdump.out"]
+
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ fail "objdump -W (reason: unexpected output)"
+ send_log $got
+ send_log "\n"
+ }
+
+ if { [regexp_diff objdump.out $srcdir/$subdir/objdump.W] } then {
+ fail "objdump -W"
+ } else {
+ pass "objdump -W"
+ }
+}
+
+# Test objdump -WL on a file that contains line information for multiple files and search directories.
+# Not supported on mcore, moxie and openrisc targets because they do not (yet) support the generation
+# of DWARF2 line debug information.
+
+if { ![is_elf_format]
+ || [istarget "hppa64*-*-hpux*"]
+ || [istarget "i370-*-*"]
+ || [istarget "i960-*-*"]
+ || [istarget "ia64*-*-*"]
+ || [istarget "mcore-*-*"]
+ || [istarget "moxie-*-*"]
+ || [istarget "openrisc-*-*"]
+ || [istarget "or32-*-*"]
+} then {
+ unsupported "objump decode line"
+} else {
+ if { ![binutils_assemble $srcdir/$subdir/dw2-decodedline.S tmpdir/dw2-decodedline.o] } then {
+ fail "objdump decoded line"
+ }
+
+ if [is_remote host] {
+ set decodedline_testfile [remote_download host tmpdir/dw2-decodedline.o]
+ } else {
+ set decodedline_testfile tmpdir/dw2-decodedline.o
+ }
+
+ set got [remote_exec host "$OBJDUMP $OBJDUMPFLAGS -WL $decodedline_testfile" "" "/dev/null" "objdump.out"]
+
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ fail "objdump -WL (reason: unexpected output)"
+ send_log $got
+ send_log "\n"
+ }
+
+ if { [regexp_diff objdump.out $srcdir/$subdir/objdump.WL] } then {
+ fail "objdump -WL"
+ } else {
+ pass "objdump -WL"
+ }
+}
+
+# Options which are not tested: -a -d -D -R -T -x -l --stabs
+# I don't see any generic way to test any of these other than -a.
+# Tests could be written for specific targets, and that should be done
+# if specific problems are found.
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/objdump.s b/binutils-2.24/binutils/testsuite/binutils-all/objdump.s
new file mode 100644
index 00000000..aea35dfa
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/objdump.s
@@ -0,0 +1,9 @@
+
+.*dw2-compressed.o: file format .*
+
+Contents of section .zdebug_abbrev:
+ 0000 5a4c4942 00000000 00000033 785e6314 ZLIB.......3x\^c.
+ 0010 64146013 62146464 e650e510 e6666060 d.`.b.dd.P...f``
+ 0020 d263b0e7 b1e2b6e6 66e6f014 16641462 .c......f....d.b
+ 0030 74e00200 25780281 789c6360 60566160 t...%x..x.c``Va`
+ 0040 e6e0e6b6 e3660002 00049c00 92 .....f.......
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/readelf.exp b/binutils-2.24/binutils/testsuite/binutils-all/readelf.exp
new file mode 100644
index 00000000..db56a868
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/readelf.exp
@@ -0,0 +1,361 @@
+# Copyright 1999-2013 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 3 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.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# Written by Nick Clifton <nickc@cygnus.com>
+# Based on scripts written by Ian Lance Taylor <ian@cygnus.com>
+# and Ken Raeburn <raeburn@cygnus.com>.
+
+# Exclude non-ELF targets.
+if ![is_elf_format] {
+ verbose "$READELF is only intended for ELF targets" 2
+ return
+}
+
+# First some helpful procedures, then the tests themselves
+
+# Return the contents of the filename given
+proc file_contents { filename } {
+ set file [open $filename r]
+ set contents [read $file]
+ close $file
+ return $contents
+}
+
+# Find out the size by reading the output of the EI_CLASS field.
+# Similar to the test for readelf -h, but we're just looking for the
+# EI_CLASS line here.
+proc readelf_find_size { binary_file } {
+ global READELF
+ global READELFFLAGS
+ global readelf_size
+
+ set readelf_size ""
+ set testname "finding out ELF size with readelf -h"
+ set got [remote_exec host "$READELF $READELFFLAGS -h $binary_file" "" "/dev/null" "readelf.out"]
+ if [is_remote host] then {
+ remote_upload host "readelf.out"
+ }
+
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]]} then {
+ send_log $got
+ fail $testname
+ return
+ }
+
+ if { ! [regexp "\n\[ \]*Class:\[ \]*ELF(\[0-9\]+)\n" \
+ [file_contents readelf.out] nil readelf_size] } {
+ verbose -log "EI_CLASS field not found in output"
+ verbose -log "output is \n[file_contents readelf.out]"
+ fail $testname
+ return
+ } else {
+ verbose -log "ELF size is $readelf_size"
+ }
+
+ pass $testname
+}
+
+# Run an individual readelf test.
+# Basically readelf is run on the binary_file with the given options.
+# Readelf's output is captured and then compared against the contents
+# of the regexp_file-readelf_size if it exists, else regexp_file.
+
+proc readelf_test { options binary_file regexp_file xfails } {
+
+ global READELF
+ global READELFFLAGS
+ global readelf_size
+ global srcdir
+ global subdir
+
+ send_log "exec $READELF $READELFFLAGS $options $binary_file > readelf.out\n"
+ set got [remote_exec host "$READELF $READELFFLAGS $options $binary_file" "" "/dev/null" "readelf.out"]
+
+ foreach xfail $xfails {
+ setup_xfail $xfail
+ }
+
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ fail "readelf $options (reason: unexpected output)"
+ send_log $got
+ send_log "\n"
+ return
+ }
+
+ set target_machine ""
+ if [istarget "mips*-*-*"] then {
+ if { [istarget "mips*-*-*linux*"]
+ || [istarget "mips*-sde-elf*"]
+ || [istarget "mips*-*freebsd*"] } then {
+ set target_machine tmips
+ } else {
+ set target_machine mips
+ }
+ }
+
+ if { $target_machine != "" && [file exists $srcdir/$subdir/$regexp_file-$readelf_size-$target_machine] } then {
+ set regexp_file $regexp_file-$readelf_size-$target_machine
+ } elseif { $target_machine != "" && [file exists $srcdir/$subdir/$regexp_file-$target_machine] } then {
+ set regexp_file $regexp_file-$target_machine
+ } elseif { [file exists $srcdir/$subdir/$regexp_file-$readelf_size] } then {
+ set regexp_file $regexp_file-$readelf_size
+ }
+
+ if { [regexp_diff readelf.out $srcdir/$subdir/$regexp_file] } then {
+ fail "readelf $options"
+ verbose "output is \n[file_contents readelf.out]" 2
+ return
+ }
+
+ pass "readelf $options"
+}
+
+# Simple proc to skip certain expected warning messages.
+
+proc prune_readelf_wi_warnings { text } {
+ regsub -all "(^|\n)(.*Skipping unexpected symbol type.*)" $text "\\1" text
+ return $text
+}
+
+# Testing the "readelf -wi" option is difficult because there
+# is no guaranteed order to the output, and because some ports
+# will use indirect string references, whilst others will use
+# direct references. So instead of having an expected output
+# file, like the other readelf tests, we grep for strings that
+# really ought to be there.
+
+proc readelf_wi_test {} {
+ global READELF
+ global READELFFLAGS
+ global srcdir
+ global subdir
+
+ # Compile the second test file.
+ if { [target_compile $srcdir/$subdir/testprog.c tmpdir/testprog.o object debug] != "" } {
+ verbose "Unable to compile test file."
+ untested "readelf -wi"
+ return
+ }
+
+ # Download it.
+ set tempfile [remote_download host tmpdir/testprog.o]
+
+ # Run "readelf -wi" on it.
+ set got [remote_exec host "$READELF $READELFFLAGS -wi $tempfile" "" "/dev/null" "readelf.out"]
+
+ # Upload the results.
+ set output [remote_upload host readelf.out]
+
+ file_on_host delete $tempfile
+
+ # Strip any superflous warnings.
+ set got [prune_readelf_wi_warnings [lindex $got 1]]
+
+ if ![string match "" $got] then {
+ fail "readelf $READELFFLAGS -wi (reason: unexpected output)"
+ send_log $got
+ send_log "\n"
+ return
+ }
+
+ if ![file size $output] then {
+ # If the output file is empty, then this target does not
+ # generate dwarf2 output. This is not a failure.
+ verbose "No output from 'readelf -wi'"
+ untested "readelf -wi"
+ return
+ }
+
+ # Search for strings that should be in the output.
+ set sought {
+ ".*DW_TAG_compile_unit.*"
+ ".*DW_TAG_subprogram.*"
+ ".*DW_TAG_base_type.*"
+ ".*DW_AT_producer.*(GNU C|indirect string).*"
+ ".*DW_AT_language.*ANSI C.*"
+ ".*DW_AT_name.*(testprog.c|indirect string).*"
+ ".*DW_AT_name.*fn.*"
+ ".*DW_AT_name.*(main|indirect string).*"
+ ".*\(DW_OP_addr: 0\).*"
+ }
+
+ # The MSP430 in LARGE mode does not generate a DW_OP_addr.
+ setup_xfail msp430*-*-*
+
+ foreach looked_for $sought {
+ set lines [grep $output $looked_for]
+ if ![llength $lines] then {
+ fail "readelf -wi: missing: $looked_for"
+ send_log readelf.out
+ return
+ }
+ }
+
+ file_on_host delete $output
+
+ # All done.
+ pass "readelf -wi"
+}
+
+# This tests "readelf -wa", but on a file with a compressed
+# .debug_abbrev section.
+
+proc readelf_compressed_wa_test {} {
+ global READELF
+ global READELFFLAGS
+ global srcdir
+ global subdir
+
+ if { ![is_zlib_supported] } {
+ unsupported "readelf -wa (compressed)"
+ return
+ }
+
+ # Compile the compressed-debug-section test file.
+ if { [target_compile $srcdir/$subdir/dw2-compressed.S tmpdir/dw2-compressed.o object debug] != "" } {
+ verbose "Unable to compile test file."
+ untested "readelf -wa (compressed)"
+ return
+ }
+
+ # Download it.
+ set tempfile [remote_download host tmpdir/dw2-compressed.o]
+
+ # Run "readelf -wa" on it.
+ set got [remote_exec host "$READELF $READELFFLAGS -wa $tempfile" "" "/dev/null" "readelf.out"]
+
+ # Upload the results.
+ set output [remote_upload host readelf.out]
+
+ file_on_host delete $tempfile
+
+ if { [string compare [file_contents readelf.out] [file_contents $srcdir/$subdir/readelf.wa]] != 0 } then {
+ fail "readelf -wa (compressed)"
+ verbose "output is \n[file_contents readelf.out]" 2
+ verbose "expected is \n[file_contents $srcdir/$subdir/readelf.wa]" 2
+ return
+ }
+
+ pass "readelf -wa (compressed)"
+}
+
+# Test readelf's dumping abilities.
+
+proc readelf_dump_test {} {
+ global READELF
+ global READELFFLAGS
+ global srcdir
+ global subdir
+
+ # Assemble the dump test file.
+ if {![binutils_assemble $srcdir/$subdir/dumptest.s tmpdir/dumptest.o]} then {
+ unresolved "readelf -p: failed to assemble dump test file"
+ return
+ }
+ # Download it.
+ set tempfile [remote_download host tmpdir/dumptest.o]
+
+ # Run "readelf -p.data" on it.
+ set got [remote_exec host "$READELF $READELFFLAGS -p.data $tempfile" "" "/dev/null" "readelf.out"]
+ set got [lindex $got 1]
+
+ # Upload the results.
+ set output [remote_upload host readelf.out]
+
+ # Check for something going wrong.
+ if ![string match "" $got] then {
+ fail "readelf -p: unexpected output"
+ send_log $got
+ send_log "\n"
+ return
+ }
+
+ # Search for strings that should be in the output.
+ set sought {
+ ".*test_string.*"
+ }
+
+ foreach looked_for $sought {
+ set lines [grep $output $looked_for]
+ if ![llength $lines] then {
+ fail "readelf -p: missing: $looked_for"
+ send_log readelf.out
+ return
+ }
+ }
+
+ file_on_host delete $tempfile
+ file_on_host delete $output
+
+ # All done.
+ pass "readelf -p"
+
+ # XXX FIXME: Add test of readelf -x here
+}
+
+if ![is_remote host] {
+ if {[which $READELF] == 0} then {
+ perror "$READELF does not exist"
+ return
+ }
+}
+
+send_user "Version [binutil_version $READELF]"
+
+# Assemble the test file.
+if {![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o]} then {
+ perror "could not assemble test file"
+ unresolved "readelf - failed to assemble"
+ return
+}
+
+if ![is_remote host] {
+ set tempfile tmpdir/bintest.o
+} else {
+ set tempfile [remote_download host tmpdir/bintest.o]
+}
+
+# First, determine the size, so specific output matchers can be used.
+readelf_find_size $tempfile
+
+# Run the tests.
+readelf_test -h $tempfile readelf.h {}
+readelf_test -S $tempfile readelf.s {}
+readelf_test -s $tempfile readelf.ss {}
+readelf_test -r $tempfile readelf.r {}
+
+readelf_wi_test
+readelf_compressed_wa_test
+
+readelf_dump_test
+
+# PR 13482 - Check for off-by-one errors when dumping .note sections.
+if {![binutils_assemble $srcdir/$subdir/version.s tmpdir/version.o]} then {
+ perror "could not assemble version note test file"
+ unresolved "readelf - failed to assemble"
+ return
+}
+
+if ![is_remote host] {
+ set tempfile tmpdir/version.o
+} else {
+ set tempfile [remote_download host tmpdir/version.o]
+}
+
+readelf_test -n $tempfile readelf.n {}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/readelf.h b/binutils-2.24/binutils/testsuite/binutils-all/readelf.h
new file mode 100644
index 00000000..01103fba
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/readelf.h
@@ -0,0 +1,20 @@
+ELF Header:
+ Magic: 7f 45 4c 46 0[12] 0[12] 01 .. .. 00 00 00 00 00 00 00
+ Class: ELF[36][24]
+ Data: 2's complement,.* endian
+ Version: 1 \(current\)
+ OS/ABI: .*
+ ABI Version: .*
+ Type: REL \(Relocatable file\)
+ Machine: .*
+ Version: 0x1
+ Entry point address: 0x0
+ Start of program headers: 0 \(bytes into file\)
+ Start of section headers: .* \(bytes into file\)
+ Flags: .*
+ Size of this header: .* \(bytes\)
+ Size of program headers: 0 \(bytes\)
+ Number of program headers: 0
+ Size of section headers: .* \(bytes\)
+ Number of section headers: .*
+ Section header string table index: .*
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/readelf.n b/binutils-2.24/binutils/testsuite/binutils-all/readelf.n
new file mode 100644
index 00000000..7a44731f
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/readelf.n
@@ -0,0 +1,5 @@
+
+Displaying notes found at file offset 0x0*0.. with length 0x0*018:
+ Owner[ ]*Data size[ ]*Description
+ Version 1.0[ ]*0x0*0[ ]*NT_VERSION \(version\)
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/readelf.r b/binutils-2.24/binutils/testsuite/binutils-all/readelf.r
new file mode 100644
index 00000000..689049f1
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/readelf.r
@@ -0,0 +1,4 @@
+
+Relocation section '.rel.*text' at offset 0x.* contains 1 entries:
+ Offset Info Type Sym.Value Sym. Name.*
+00000004 [0-9A-Fa-f]+ *R_.*00000000 external_symbol.*
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/readelf.r-64 b/binutils-2.24/binutils/testsuite/binutils-all/readelf.r-64
new file mode 100644
index 00000000..3e3b0a4a
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/readelf.r-64
@@ -0,0 +1,4 @@
+
+Relocation section '.rel.*text' at offset 0x.* contains 1 entries:
+ Offset Info Type Sym. Value Sym. Name.*
+0+04 [0-9A-Fa-f]+ *R_.*0+00 external_symbol.*
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/readelf.s b/binutils-2.24/binutils/testsuite/binutils-all/readelf.s
new file mode 100644
index 00000000..8361a7eb
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/readelf.s
@@ -0,0 +1,21 @@
+There are .* section headers, starting at offset .*:
+
+Section Headers:
+ +\[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
+ +\[ 0\] +NULL +00000000 000000 000000 00 +0 +0 +0
+# On the normal MIPS systems, sections must be aligned to 16 byte
+# boundaries. On IA64, text sections are aligned to 16 byte boundaries.
+ +\[ 1\] .text +PROGBITS +00000000 0000(34|40) 0000(08|10) 00 +AX +0 +0 +(.|..)
+ +\[ 2\] .rel.+text +REL. +0+ 0+.* 00000. 0. +. +1 +4
+# MIPS targets put .rela.text here.
+#...
+ +\[ .\] .data +PROGBITS +00000000 0000(3c|48|50) 0000(04|10) 00 +WA +0 +0 +(.|..)
+ +\[ .\] .bss +NOBITS +00000000 0000(40|4c|60) 000000 00 +WA +0 +0 +(.|..)
+# MIPS targets put .reginfo and .mdebug here.
+# v850 targets put .call_table_data and .call_table_text here.
+#...
+ +\[ .\] .shstrtab +STRTAB +00000000 0+.* 0+.* 00 +0 +0 +.
+ +\[ .\] .symtab +SYMTAB +00000000 0+.* 0+.* 10 +.. +. +4
+ +\[..\] .strtab +STRTAB +00000000 0+.* 0+.* 00 +0 +0 +1
+Key to Flags:
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/readelf.s-64 b/binutils-2.24/binutils/testsuite/binutils-all/readelf.s-64
new file mode 100644
index 00000000..ec31f3f2
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/readelf.s-64
@@ -0,0 +1,23 @@
+There are .* section headers, starting at offset .*:
+
+Section Headers:
+ +\[Nr\] Name +Type +Address +Offset
+ +Size +EntSize +Flags +Link +Info +Align
+ +\[ 0\] +NULL +0000000000000000 +00000000
+ +0000000000000000 +0000000000000000 +0 +0 +0
+ +\[ 1\] .text +PROGBITS +0000000000000000 +00000040
+ +00000000000000.. +0000000000000000 +AX +0 +0 +.*
+ +\[ 2\] .rel.+text +REL. +0+ +0+.*
+ +000000000000001. +000000000000001. +. +1 +8
+ +\[ 3\] .data +PROGBITS +0000000000000000 +000000(48|50)
+ +000000000000000[48] +0000000000000000 +WA +0 +0 +.*
+ +\[ 4\] .bss +NOBITS +0000000000000000 +000000(4c|50|54|58)
+ +0000000000000000 +0000000000000000 +WA +0 +0 +.*
+ +\[ 5\] .shstrtab +STRTAB +0000000000000000 +000000(4c|50|54|58)
+ +00000000000000.. +0000000000000000 +0 +0 +.*
+ +\[ 6\] .symtab +SYMTAB +0000000000000000 +0+.*
+ +0+.* +0000000000000018 +7 +6 +8
+ +\[ 7\] .strtab +STRTAB +0000000000000000 +0+.*
+ +0+.* +0000000000000000 +0 +0 +1
+Key to Flags:
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/readelf.ss b/binutils-2.24/binutils/testsuite/binutils-all/readelf.ss
new file mode 100644
index 00000000..9bb0f2ed
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/readelf.ss
@@ -0,0 +1,18 @@
+
+Symbol table '.symtab' contains .* entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+ +0: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +UND
+ +1: 00000000 +0 +SECTION +LOCAL +DEFAULT +1
+ +2: 00000000 +0 +SECTION +LOCAL +DEFAULT +[34]
+ +3: 00000000 +0 +SECTION +LOCAL +DEFAULT +[45]
+ +4: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +1 static_text_symbol
+# arm-elf targets add the $d mapping symbol here...
+#...
+ +.: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +[34] static_data_symbol
+# v850 targets include extra SECTION symbols here for the .call_table_data
+# and .call_table_text sections.
+#...
+ +.: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 text_symbol
+ +..: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol
+ +..: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +[34] data_symbol
+ +..: 00000004 +4 +(COMMON|OBJECT) +GLOBAL +DEFAULT +(COM|ANSI_COM) common_symbol
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/readelf.ss-64 b/binutils-2.24/binutils/testsuite/binutils-all/readelf.ss-64
new file mode 100644
index 00000000..c100c14e
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/readelf.ss-64
@@ -0,0 +1,13 @@
+
+Symbol table '.symtab' contains .* entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+ +0: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +UND
+ +1: 0000000000000000 +0 +SECTION +LOCAL +DEFAULT +1
+ +2: 0000000000000000 +0 +SECTION +LOCAL +DEFAULT +3
+ +3: 0000000000000000 +0 +SECTION +LOCAL +DEFAULT +4
+ +4: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +1 static_text_symbol
+ +5: 0000000000000000 +0 +NOTYPE +LOCAL +DEFAULT +3 static_data_symbol
+.* +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 text_symbol
+ +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol
+ +.: 0000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +3 data_symbol
+ +.: 0000000000000004 +4 +(COMMON|OBJECT) +GLOBAL +DEFAULT +COM common_symbol
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/readelf.ss-mips b/binutils-2.24/binutils/testsuite/binutils-all/readelf.ss-mips
new file mode 100644
index 00000000..fd975520
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/readelf.ss-mips
@@ -0,0 +1,15 @@
+
+Symbol table '.symtab' contains 12 entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+ +0: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +UND
+ +1: 00000000 +0 +SECTION +LOCAL +DEFAULT +. (|\.text)
+ +2: 00000000 +0 +SECTION +LOCAL +DEFAULT +. (|\.data)
+ +3: 00000000 +0 +SECTION +LOCAL +DEFAULT +. (|\.bss)
+ +4: 00000000 +0 +SECTION +LOCAL +DEFAULT +. (|\.reginfo)
+ +5: 00000000 +0 +SECTION +LOCAL +DEFAULT +. (|\.pdr)
+ +6: 00000000 +0 +OBJECT +GLOBAL +DEFAULT +. text_symbol
+ +7: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +. static_text_symbol
+ +8: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol
+ +9: 00000000 +0 +OBJECT +GLOBAL +DEFAULT +. data_symbol
+ +10: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +. static_data_symbol
+ +11: 00000004 +4 +(COMMON|OBJECT) +GLOBAL +DEFAULT +(PRC|COM) common_symbol
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/readelf.ss-tmips b/binutils-2.24/binutils/testsuite/binutils-all/readelf.ss-tmips
new file mode 100644
index 00000000..1f872489
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/readelf.ss-tmips
@@ -0,0 +1,15 @@
+
+Symbol table '.symtab' contains 12 entries:
+ +Num: +Value +Size +Type +Bind +Vis +Ndx +Name
+ +0: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +UND
+ +1: 00000000 +0 +SECTION +LOCAL +DEFAULT +1
+ +2: 00000000 +0 +SECTION +LOCAL +DEFAULT +3
+ +3: 00000000 +0 +SECTION +LOCAL +DEFAULT +4
+ +4: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +1 static_text_symbol
+ +5: 00000000 +0 +NOTYPE +LOCAL +DEFAULT +3 static_data_symbol
+ +6: 00000000 +0 +SECTION +LOCAL +DEFAULT +5
+ +7: 00000000 +0 +SECTION +LOCAL +DEFAULT +6
+ +8: 00000000 +0 +OBJECT +GLOBAL +DEFAULT +1 text_symbol
+ +9: 00000000 +0 +NOTYPE +GLOBAL +DEFAULT +UND external_symbol
+ +10: 00000000 +0 +OBJECT +GLOBAL +DEFAULT +3 data_symbol
+ +11: 00000004 +4 +(COMMON|OBJECT) +GLOBAL +DEFAULT +(PRC|COM) common_symbol
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/readelf.wa b/binutils-2.24/binutils/testsuite/binutils-all/readelf.wa
new file mode 100644
index 00000000..43d60b17
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/readelf.wa
@@ -0,0 +1,27 @@
+Contents of the .zdebug_abbrev section:
+
+ Number TAG (0x0)
+ 1 DW_TAG_compile_unit [has children]
+ DW_AT_stmt_list DW_FORM_data4
+ DW_AT_high_pc DW_FORM_addr
+ DW_AT_low_pc DW_FORM_addr
+ DW_AT_name DW_FORM_string
+ DW_AT_producer DW_FORM_string
+ DW_AT_language DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
+ 2 DW_TAG_subprogram [no children]
+ DW_AT_external DW_FORM_flag
+ DW_AT_decl_file DW_FORM_data1
+ DW_AT_decl_line DW_FORM_data1
+ DW_AT_name DW_FORM_string
+ DW_AT_type DW_FORM_ref4
+ DW_AT_low_pc DW_FORM_addr
+ DW_AT_high_pc DW_FORM_addr
+ DW_AT_frame_base DW_FORM_block1
+ DW_AT value: 0 DW_FORM value: 0
+ 3 DW_TAG_base_type [no children]
+ DW_AT_name DW_FORM_string
+ DW_AT_byte_size DW_FORM_data1
+ DW_AT_encoding DW_FORM_data1
+ DW_AT value: 0 DW_FORM value: 0
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/size.exp b/binutils-2.24/binutils/testsuite/binutils-all/size.exp
new file mode 100644
index 00000000..5050a548
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/size.exp
@@ -0,0 +1,82 @@
+# Copyright 1993, 1994, 1995, 1997, 1998, 2007, 2009
+# 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 3 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.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# This file was written by Rob Savoye <rob@cygnus.com>
+# and rewritten by Ian Lance Taylor <ian@cygnus.com>
+
+if ![is_remote host] {
+ if {[which $SIZE] == 0} then {
+ perror "$SIZE does not exist"
+ return
+ }
+}
+
+send_user "Version [binutil_version $SIZE]"
+
+
+if {![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o]} then {
+ return
+}
+
+if [is_remote host] {
+ set testfile [remote_download host tmpdir/bintest.o]
+} else {
+ set testfile tmpdir/bintest.o
+}
+
+set dec "\[0-9\]+"
+set hex "\[0-9a-fA-F\]+"
+
+# Test size with no arguments
+
+set got [binutils_run $SIZE "$SIZEFLAGS $testfile"]
+
+set want "($dec)\[ \]+($dec)\[ \]+($dec)\[ \]+($dec)\[ \]+($hex)\[ \]+${testfile}"
+
+if ![regexp $want $got all text data bss dtot hextot] then {
+ fail "size (no arguments)"
+} else {
+ if {$text < 8 || $data < 4} then {
+ # The z80-coff port defaults to a "binary" like output
+ # file format which does not include a data section.
+ setup_xfail "z80-*-coff"
+ fail "size (no arguments)"
+ } else {
+ pass "size (no arguments)"
+ }
+}
+
+# Test size -A
+
+set got [binutils_run $SIZE "$SIZEFLAGS -A ${testfile}"]
+
+set want "${testfile}.*(text|TEXT)\[^\n\r\]*\[ \]($dec)\[ \]+$dec.*(\\.data|DATA)\[^\n\r\]*\[ \]($dec)\[ \]+$dec"
+
+if ![regexp $want $got all textname textsize dataname datasize] then {
+ fail "size -A"
+} else {
+ verbose "text size: $textsize"
+ verbose "data size: $datasize"
+ if {$textsize < 8 || $datasize < 4} then {
+ fail "size -A"
+ } else {
+ pass "size -A"
+ }
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/strip-1.d b/binutils-2.24/binutils/testsuite/binutils-all/strip-1.d
new file mode 100644
index 00000000..20098321
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/strip-1.d
@@ -0,0 +1,11 @@
+#PROG: strip
+#source: group.s
+#readelf: -Sg --wide
+#name: strip with section group 1
+
+#...
+ \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AX[ \t]+.*
+#...
+ \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WA[ \t]+.*
+#...
+There are no section groups in this file.
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/strip-10.d b/binutils-2.24/binutils/testsuite/binutils-all/strip-10.d
new file mode 100644
index 00000000..588c7d12
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/strip-10.d
@@ -0,0 +1,8 @@
+#PROG: strip
+#source: unique.s
+#strip: -g
+#readelf: -s
+#name: strip on STB_GNU_UNIQUE
+
+#...
+ +[0-9]+: +[0-9a-f]+ +[0-9]+ +OBJECT +(UNIQUE|<OS specific>: 10) +DEFAULT +[1-9] foo
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/strip-2.d b/binutils-2.24/binutils/testsuite/binutils-all/strip-2.d
new file mode 100644
index 00000000..9922f475
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/strip-2.d
@@ -0,0 +1,18 @@
+#PROG: strip
+#source: group.s
+#strip: --strip-unneeded
+#readelf: -Sg --wide
+#name: strip with section group 2
+
+#...
+ \[[ 0-9]+\] \.group[ \t]+GROUP[ \t]+.*
+#...
+ \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AXG[ \t]+.*
+#...
+ \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG[ \t]+.*
+#...
+COMDAT group section \[[ 0-9]+\] `\.group' \[foo_group\] contains 2 sections:
+ \[Index\] Name
+ \[[ 0-9]+\] .text.*
+ \[[ 0-9]+\] .data.*
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/strip-3.d b/binutils-2.24/binutils/testsuite/binutils-all/strip-3.d
new file mode 100644
index 00000000..acfec85d
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/strip-3.d
@@ -0,0 +1,11 @@
+#PROG: strip
+#source: empty.s
+#strip: -R .text -R .data -R .bss -R .ARM.attributes -R .reginfo -R .pdr -R .xtensa.info
+#readelf: -S --wide
+#name: strip empty file
+#target: *-*-linux* *-*-gnu*
+
+#...
+ \[[ 0]+\][ \t]+NULL[ \t]+.*
+ \[[ 1]+\] \.shstrtab.*[ \t]+STRTAB[ \t]+.*
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/strip-4.d b/binutils-2.24/binutils/testsuite/binutils-all/strip-4.d
new file mode 100644
index 00000000..c8c2509f
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/strip-4.d
@@ -0,0 +1,11 @@
+#PROG: strip
+#source: group-2.s
+#readelf: -Sg --wide
+#name: strip with section group 4
+
+#...
+ \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AX[ \t]+.*
+#...
+ \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WA[ \t]+.*
+#...
+There are no section groups in this file.
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/strip-5.d b/binutils-2.24/binutils/testsuite/binutils-all/strip-5.d
new file mode 100644
index 00000000..8dd23318
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/strip-5.d
@@ -0,0 +1,18 @@
+#PROG: strip
+#source: group-2.s
+#strip: --strip-unneeded
+#readelf: -Sg --wide
+#name: strip with section group 5
+
+#...
+ \[[ 0-9]+\] .group[ \t]+GROUP[ \t]+.*
+#...
+ \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AXG[ \t]+.*
+#...
+ \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG[ \t]+.*
+#...
+COMDAT group section \[[ 0-9]+\] `.group' \[.text.foo\] contains 2 sections:
+ \[Index\] Name
+ \[[ 0-9]+\] .text.*
+ \[[ 0-9]+\] .data.*
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/strip-6.d b/binutils-2.24/binutils/testsuite/binutils-all/strip-6.d
new file mode 100644
index 00000000..c5d42887
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/strip-6.d
@@ -0,0 +1,11 @@
+#PROG: strip
+#source: group-3.s
+#readelf: -Sg --wide
+#name: strip with section group 6
+
+#...
+ \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AX[ \t]+.*
+#...
+ \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WA[ \t]+.*
+#...
+There are no section groups in this file.
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/strip-7.d b/binutils-2.24/binutils/testsuite/binutils-all/strip-7.d
new file mode 100644
index 00000000..791463b8
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/strip-7.d
@@ -0,0 +1,18 @@
+#PROG: strip
+#source: group-3.s
+#strip: --strip-unneeded
+#readelf: -Sg --wide
+#name: strip with section group 7
+
+#...
+ \[[ 0-9]+\] .group[ \t]+GROUP[ \t]+.*
+#...
+ \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AXG[ \t]+.*
+#...
+ \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG[ \t]+.*
+#...
+COMDAT group section \[[ 0-9]+\] `.group' \[foo3\] contains 2 sections:
+ \[Index\] Name
+ \[[ 0-9]+\] .text.*
+ \[[ 0-9]+\] .data.*
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/strip-8.d b/binutils-2.24/binutils/testsuite/binutils-all/strip-8.d
new file mode 100644
index 00000000..56185103
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/strip-8.d
@@ -0,0 +1,11 @@
+#PROG: strip
+#source: group-4.s
+#readelf: -Sg --wide
+#name: strip with section group 8
+
+#...
+ \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AX[ \t]+.*
+#...
+ \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WA[ \t]+.*
+#...
+There are no section groups in this file.
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/strip-9.d b/binutils-2.24/binutils/testsuite/binutils-all/strip-9.d
new file mode 100644
index 00000000..7f07a0da
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/strip-9.d
@@ -0,0 +1,18 @@
+#PROG: strip
+#source: group-4.s
+#strip: --strip-unneeded
+#readelf: -Sg --wide
+#name: strip with section group 9
+
+#...
+ \[[ 0-9]+\] .group[ \t]+GROUP[ \t]+.*
+#...
+ \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AXG[ \t]+.*
+#...
+ \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG[ \t]+.*
+#...
+COMDAT group section \[[ 0-9]+\] `.group' \[foo4\] contains 2 sections:
+ \[Index\] Name
+ \[[ 0-9]+\] .text.*
+ \[[ 0-9]+\] .data.*
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/testprog.c b/binutils-2.24/binutils/testsuite/binutils-all/testprog.c
new file mode 100644
index 00000000..6ead98e7
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/testprog.c
@@ -0,0 +1,31 @@
+/* This program is used to test objcopy, readelf and strip. */
+
+extern int strcmp (char *, const char *);
+extern int printf (const char *, ...);
+
+int common;
+int global = 1;
+static int local = 2;
+static char string[] = "string";
+
+int
+fn (void)
+{
+ return 3;
+}
+
+int
+main (void)
+{
+ if (common != 0
+ || global != 1
+ || local != 2
+ || strcmp (string, "string") != 0)
+ {
+ printf ("failed\n");
+ return 1;
+ }
+
+ printf ("ok\n");
+ return 0;
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/testranges-ia64.d b/binutils-2.24/binutils/testsuite/binutils-all/testranges-ia64.d
new file mode 100644
index 00000000..9713236b
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/testranges-ia64.d
@@ -0,0 +1,15 @@
+#PROG: objcopy
+#source: testranges-ia64.s
+#readelf: -wR --wide
+#name: unordered .debug_info references to .debug_ranges
+#target: ia64-*-*
+
+Contents of the .debug_ranges section:
+
+ Offset Begin End
+ 00000000 00000001 00000002
+ 00000000 <End of list>
+ 00000010 00000000 00000002
+ 00000010 <End of list>
+
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/testranges-ia64.s b/binutils-2.24/binutils/testsuite/binutils-all/testranges-ia64.s
new file mode 100644
index 00000000..9af6b634
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/testranges-ia64.s
@@ -0,0 +1,57 @@
+# Test .debug_info can reference .debug_ranges entries without ordering the
+# offsets strictly as increasing.
+
+ .text
+start:
+ .byte 1
+sub:
+ .byte 2
+end:
+
+ .section .debug_ranges,"",@progbits
+range:
+
+range_sub:
+ data4.ua @secrel(sub), @secrel(end)
+ data4.ua 0, 0 /* range terminator */
+
+range_cu:
+ data4.ua @secrel(start), @secrel(end)
+ data4.ua 0, 0 /* range terminator */
+
+ .section .debug_info,"",@progbits
+ data4.ua debugE - debugS /* Length of Compilation Unit Info */
+debugS:
+ .short 0x2 /* DWARF version number */
+ data4.ua @secrel(abbrev0) /* Offset Into Abbrev. Section */
+ .byte 0x4 /* Pointer Size (in bytes) */
+
+ .uleb128 0x1 /* (DIE (0xb) DW_TAG_compile_unit) */
+ data4.ua range_cu - range /* DW_AT_ranges */
+
+ .uleb128 0x2 /* (DIE (0x6d) DW_TAG_subprogram) */
+ .ascii "A\0" /* DW_AT_name */
+ data4.ua range_sub - range /* DW_AT_ranges */
+debugE:
+
+ .section .debug_abbrev,"",@progbits
+abbrev0:
+ .uleb128 0x1 /* (abbrev code) */
+ .uleb128 0x11 /* (TAG: DW_TAG_compile_unit) */
+ .byte 0x0 /* DW_children_no */
+ .uleb128 0x55 /* (DW_AT_ranges) */
+ .uleb128 0x6 /* (DW_FORM_data4) */
+ .byte 0x0
+ .byte 0x0
+
+ .uleb128 0x2 /* (abbrev code) */
+ .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */
+ .byte 0x0 /* DW_children_no */
+ .uleb128 0x3 /* (DW_AT_name) */
+ .uleb128 0x8 /* (DW_FORM_string) */
+ .uleb128 0x55 /* (DW_AT_ranges) */
+ .uleb128 0x6 /* (DW_FORM_data4) */
+ .byte 0x0
+ .byte 0x0
+
+ .byte 0x0 /* abbrevs terminator */
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/testranges.d b/binutils-2.24/binutils/testsuite/binutils-all/testranges.d
new file mode 100644
index 00000000..07f97503
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/testranges.d
@@ -0,0 +1,15 @@
+#PROG: objcopy
+#source: testranges.s
+#readelf: -wR --wide
+#name: unordered .debug_info references to .debug_ranges
+#not-target: ia64-*-*
+
+Contents of the \.z?debug_ranges section:
+
+ Offset Begin End
+ 00000000 00000001 00000002
+ 00000000 <End of list>
+ 00000010 00000000 00000002
+ 00000010 <End of list>
+
+#pass
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/testranges.s b/binutils-2.24/binutils/testsuite/binutils-all/testranges.s
new file mode 100644
index 00000000..e1f9931b
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/testranges.s
@@ -0,0 +1,61 @@
+# Test .debug_info can reference .debug_ranges entries without ordering the
+# offsets strictly as increasing.
+
+ .text
+start:
+ .byte 1
+sub:
+ .byte 2
+end:
+
+ .section .debug_ranges,"",%progbits
+range:
+
+range_sub:
+ .4byte sub, end
+ .4byte 0, 0 ;# range terminator
+
+range_cu:
+ .4byte start, end
+ .4byte 0, 0 ;# range terminator
+
+ .section .debug_info,"",%progbits
+ .4byte debugE - debugS ;# Length of Compilation Unit Info
+debugS:
+ .short 0x2 ;# DWARF version number
+ .4byte abbrev0 ;# Offset Into Abbrev. Section
+ .byte 0x4 ;# Pointer Size (in bytes)
+
+ .uleb128 0x1 ;# (DIE (0xb) DW_TAG_compile_unit)
+ .4byte range_cu - range ;# DW_AT_ranges
+
+ .uleb128 0x2 ;# (DIE (0x6d) DW_TAG_subprogram)
+ .ascii "A\0" ;# DW_AT_name
+ .4byte range_sub - range ;# DW_AT_ranges
+
+ ;# minimal section alignment on alpha-* is 2, ensure no new invalid CU
+ ;# will be started.
+ .balign 2
+debugE:
+
+ .section .debug_abbrev,"",%progbits
+abbrev0:
+ .uleb128 0x1 ;# (abbrev code)
+ .uleb128 0x11 ;# (TAG: DW_TAG_compile_unit)
+ .byte 0x0 ;# DW_children_no
+ .uleb128 0x55 ;# (DW_AT_ranges)
+ .uleb128 0x6 ;# (DW_FORM_data4)
+ .byte 0x0
+ .byte 0x0
+
+ .uleb128 0x2 ;# (abbrev code)
+ .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
+ .byte 0x0 ;# DW_children_no
+ .uleb128 0x3 ;# (DW_AT_name)
+ .uleb128 0x8 ;# (DW_FORM_string)
+ .uleb128 0x55 ;# (DW_AT_ranges)
+ .uleb128 0x6 ;# (DW_FORM_data4)
+ .byte 0x0
+ .byte 0x0
+
+ .byte 0x0 ;# abbrevs terminator
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/unique.s b/binutils-2.24/binutils/testsuite/binutils-all/unique.s
new file mode 100644
index 00000000..44fb7a09
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/unique.s
@@ -0,0 +1,4 @@
+ .data
+ .type foo,%gnu_unique_object
+foo:
+ .byte 0
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/unknown.s b/binutils-2.24/binutils/testsuite/binutils-all/unknown.s
new file mode 100644
index 00000000..e1b53c01
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/unknown.s
@@ -0,0 +1,4 @@
+ .section .foo,"a","note"
+ .global _start
+_start:
+ .long 0
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/vax/entrymask.s b/binutils-2.24/binutils/testsuite/binutils-all/vax/entrymask.s
new file mode 100644
index 00000000..18f90106
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/vax/entrymask.s
@@ -0,0 +1,11 @@
+.text
+
+.global label1
+label1:
+ .word 0x0110
+
+.global label2
+.type label2,@function
+label2:
+ .word 0x0224
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/vax/objdump.exp b/binutils-2.24/binutils/testsuite/binutils-all/vax/objdump.exp
new file mode 100644
index 00000000..f4734a5b
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/vax/objdump.exp
@@ -0,0 +1,64 @@
+#
+# Copyright 1993, 1994, 1995, 1997, 1999, 2000, 2002, 2005, 2007, 2009
+# 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 3 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 file was written by Jan-Benedict Glaw <jbglaw@lug-owl.de>. It's goal
+# is to check the VAX-specific support of the -M entry:0xf00 switch, which
+# allows to force function entry masks at given addresses.
+#
+
+if ![istarget vax*-*-*] then {
+ return
+}
+
+if {[which $OBJDUMP] == 0} then {
+ perror "$OBJDUMP does not exist"
+ return
+}
+
+send_user "Version [binutil_version $OBJDUMP]"
+
+if {![binutils_assemble $srcdir/$subdir/entrymask.s tmpdir/entrymask.o]} then {
+ return
+}
+
+if [is_remote host] {
+ set objfile [remote_download host tmpdir/entrymask.o]
+} else {
+ set objfile tmpdir/entrymask.o
+}
+
+#
+# We check both function entry points. The second one at offset 2 will
+# show up automatically on ELF targets, but needs to be set on a.out
+# targets.
+#
+set got [binutils_run $OBJDUMP "$OBJDUMPFLAGS -d -M entry:0x0 -M entry:2 $objfile"]
+set want1 "\[ \]+0:\[ \]+10 01\[ \]+\\.word 0x0110.\*r8 r4"
+set want2 "\[ \]+2:\[ \]+24 02\[ \]+\\.word 0x0224.\*r9 r5 r2"
+if [regexp $want1 $got] then {
+ pass "entrymask test 1"
+} else {
+ fail "entrymask test 1"
+}
+if [regexp $want2 $got] then {
+ pass "entrymask test 2"
+} else {
+ fail "entrymask test 2"
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/version.def b/binutils-2.24/binutils/testsuite/binutils-all/version.def
new file mode 100644
index 00000000..ce1c4b54
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/version.def
@@ -0,0 +1,17 @@
+LIBRARY VERSION.dll
+EXPORTS
+GetFileVersionInfoA1
+GetFileVersionInfoSizeA2
+GetFileVersionInfoSizeW3
+GetFileVersionInfoW4
+VerFindFileA5
+VerFindFileW6
+VerInstallFileA7
+VerInstallFileW8
+VerLanguageNameA9
+VerLanguageNameW10
+VerQueryValueA11
+VerQueryValueIndexA12
+VerQueryValueIndexW13
+VerQueryValueW14
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/version.s b/binutils-2.24/binutils/testsuite/binutils-all/version.s
new file mode 100644
index 00000000..66a0566b
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/version.s
@@ -0,0 +1 @@
+ .version "Version 1.0"
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/MSG00001.bin b/binutils-2.24/binutils/testsuite/binutils-all/windres/MSG00001.bin
new file mode 100644
index 00000000..0092b834
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/MSG00001.bin
Binary files differ
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/README b/binutils-2.24/binutils/testsuite/binutils-all/windres/README
new file mode 100644
index 00000000..67114461
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/README
@@ -0,0 +1,33 @@
+Instructions for adding tests:
+
+The files *.rc are hand-edited or copied from elsewhere.
+
+The script msupdate is used to generate the *.rsd files, which are
+dumps of the RES formatted output of MSVC's RC utility.
+
+Within the *.rc file, the first N lines beginning with a special
+comment can control the test. Comments are // /* or # (// is
+recommended, as both rc and windres support those). Each line
+contains one command:
+
+ // parse-only
+ // xfail *-*-*
+ // cpparg <preprocessor options passed via --preprocessor-arg>
+
+parse-only must preceed any xfail commands, and indicates that a
+comparison with the *.rsd file will not happen. xfail indicates when
+a failure is expected. This should only be used for when you are
+adding a new test that is known to fail because of a bug in windres,
+and it should be removed when the bug is fixed.
+
+You can use pfail or cfail instead of xfail to indicate that only the
+parsing or comparing should be xfailed.
+
+The windres tests only run for ix86 targets, because the
+MSVC-generated *.rsd files are generated for that.
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/bmp1.bmp b/binutils-2.24/binutils/testsuite/binutils-all/windres/bmp1.bmp
new file mode 100644
index 00000000..208a8aa2
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/bmp1.bmp
Binary files differ
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/bmpalign.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/bmpalign.rc
new file mode 100644
index 00000000..7cb5583d
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/bmpalign.rc
@@ -0,0 +1,9 @@
+LANGUAGE 0, 0
+
+A BITMAP MOVEABLE PURE DISCARDABLE "bmp1.bmp"
+
+AB BITMAP MOVEABLE PURE DISCARDABLE "bmp1.bmp"
+
+ABC BITMAP MOVEABLE PURE DISCARDABLE "bmp1.bmp"
+
+ABCD BITMAP MOVEABLE PURE DISCARDABLE "bmp1.bmp"
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/bmpalign.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/bmpalign.rsd
new file mode 100644
index 00000000..3ee53965
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/bmpalign.rsd
@@ -0,0 +1,38 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 6c000000 20000000 ffff0200 41000000 l... .......A...
+ 0030 00000000 30100000 00000000 00000000 ....0...........
+ 0040 28000000 01000000 01000000 01000400 (...............
+ 0050 00000000 04000000 00000000 00000000 ................
+ 0060 00000000 00000000 00000000 00008000 ................
+ 0070 00800000 00808000 80000000 80008000 ................
+ 0080 80800000 c0c0c000 80808000 0000ff00 ................
+ 0090 00ff0000 00ffff00 ff000000 ff00ff00 ................
+ 00a0 ffff0000 ffffff00 90000000 6c000000 ............l...
+ 00b0 24000000 ffff0200 41004200 00000000 $.......A.B.....
+ 00c0 00000000 30100000 00000000 00000000 ....0...........
+ 00d0 28000000 01000000 01000000 01000400 (...............
+ 00e0 00000000 04000000 00000000 00000000 ................
+ 00f0 00000000 00000000 00000000 00008000 ................
+ 0100 00800000 00808000 80000000 80008000 ................
+ 0110 80800000 c0c0c000 80808000 0000ff00 ................
+ 0120 00ff0000 00ffff00 ff000000 ff00ff00 ................
+ 0130 ffff0000 ffffff00 90000000 6c000000 ............l...
+ 0140 24000000 ffff0200 41004200 43000000 $.......A.B.C...
+ 0150 00000000 30100000 00000000 00000000 ....0...........
+ 0160 28000000 01000000 01000000 01000400 (...............
+ 0170 00000000 04000000 00000000 00000000 ................
+ 0180 00000000 00000000 00000000 00008000 ................
+ 0190 00800000 00808000 80000000 80008000 ................
+ 01a0 80800000 c0c0c000 80808000 0000ff00 ................
+ 01b0 00ff0000 00ffff00 ff000000 ff00ff00 ................
+ 01c0 ffff0000 ffffff00 90000000 6c000000 ............l...
+ 01d0 28000000 ffff0200 41004200 43004400 (.......A.B.C.D.
+ 01e0 00000000 00000000 30100000 00000000 ........0.......
+ 01f0 00000000 28000000 01000000 01000000 ....(...........
+ 0200 01000400 00000000 04000000 00000000 ................
+ 0210 00000000 00000000 00000000 00000000 ................
+ 0220 00008000 00800000 00808000 80000000 ................
+ 0230 80008000 80800000 c0c0c000 80808000 ................
+ 0240 0000ff00 00ff0000 00ffff00 ff000000 ................
+ 0250 ff00ff00 ffff0000 ffffff00 90000000 ................
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/capstyle.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/capstyle.rc
new file mode 100644
index 00000000..238d21ea
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/capstyle.rc
@@ -0,0 +1,5 @@
+101 DIALOG DISCARDABLE 0, 0, 186, 95
+CAPTION ""
+BEGIN
+ DEFPUSHBUTTON "OK",1,129,7,50,14
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/capstyle.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/capstyle.rsd
new file mode 100644
index 00000000..fef81169
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/capstyle.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 36000000 20000000 ffff0500 ffff6500 6... .........e.
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 0000c880 00000000 01000000 0000ba00 ................
+ 0050 5f000000 00000000 01000150 00000000 _..........P....
+ 0060 81000700 32000e00 0100ffff 80004f00 ....2.........O.
+ 0070 4b000000 00000000 K.......
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/checkbox.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/checkbox.rc
new file mode 100644
index 00000000..a941d6a5
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/checkbox.rc
@@ -0,0 +1,5 @@
+501 DIALOGEX DISCARDABLE 0, 0, 168, 137
+BEGIN
+ CHECKBOX 108, 1002, 12, 76, 123, 41
+ CHECKBOX "tick me", 1001, 12, 15, 123, 41
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/checkbox.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/checkbox.rsd
new file mode 100644
index 00000000..f3ea5a04
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/checkbox.rsd
@@ -0,0 +1,12 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 72000000 20000000 ffff0500 fffff501 r... ...........
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 0100ffff 00000000 00000000 00008880 ................
+ 0050 02000000 0000a800 89000000 00000000 ................
+ 0060 00000000 00000000 02000150 0c004c00 ...........P..L.
+ 0070 7b002900 ea030000 ffff8000 ffff6c00 {.)...........l.
+ 0080 00000000 00000000 00000000 02000150 ...............P
+ 0090 0c000f00 7b002900 e9030000 ffff8000 ....{.).........
+ 00a0 74006900 63006b00 20006d00 65000000 t.i.c.k. .m.e...
+ 00b0 00000000 ....
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/combobox.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/combobox.rc
new file mode 100644
index 00000000..f9f52d18
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/combobox.rc
@@ -0,0 +1,8 @@
+#define CBS_SIMPLE 0x1
+#define WS_TABSTOP 0x10000
+
+501 DIALOG DISCARDABLE 0, 0, 168, 137
+BEGIN
+ COMBOBOX 1001,10,10,50,54, CBS_SIMPLE | WS_TABSTOP
+END
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/combobox.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/combobox.rsd
new file mode 100644
index 00000000..509c7382
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/combobox.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 32000000 20000000 ffff0500 fffff501 2... ...........
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 00008880 00000000 01000000 0000a800 ................
+ 0050 89000000 00000000 01000150 00000000 ...........P....
+ 0060 0a000a00 32003600 e903ffff 85000000 ....2.6.........
+ 0070 00000000 ....
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/deflang.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/deflang.rc
new file mode 100644
index 00000000..1f3c20f5
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/deflang.rc
@@ -0,0 +1,4 @@
+101 DIALOG DISCARDABLE 0, 0, 186, 95
+BEGIN
+ DEFPUSHBUTTON "OK",1,129,7,50,14
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/deflang.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/deflang.rsd
new file mode 100644
index 00000000..270b6223
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/deflang.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 36000000 20000000 ffff0500 ffff6500 6... .........e.
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 00008880 00000000 01000000 0000ba00 ................
+ 0050 5f000000 00000000 01000150 00000000 _..........P....
+ 0060 81000700 32000e00 0100ffff 80004f00 ....2.........O.
+ 0070 4b000000 00000000 K.......
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/dialog0.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialog0.rc
new file mode 100644
index 00000000..fba7ed77
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialog0.rc
@@ -0,0 +1,4 @@
+101 DIALOG 0, 0, 186, 95
+BEGIN
+ DEFPUSHBUTTON "OK", 1, 129, 7, 50, 14
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/dialog0.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialog0.rsd
new file mode 100644
index 00000000..270b6223
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialog0.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 36000000 20000000 ffff0500 ffff6500 6... .........e.
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 00008880 00000000 01000000 0000ba00 ................
+ 0050 5f000000 00000000 01000150 00000000 _..........P....
+ 0060 81000700 32000e00 0100ffff 80004f00 ....2.........O.
+ 0070 4b000000 00000000 K.......
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/dialog1.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialog1.rc
new file mode 100644
index 00000000..71deb4a5
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialog1.rc
@@ -0,0 +1,5 @@
+101 DIALOG DISCARDABLE 0, 0, 186, 95
+BEGIN
+ DEFPUSHBUTTON "OK", 1, 129, 7, 50, 14
+END
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/dialog1.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialog1.rsd
new file mode 100644
index 00000000..270b6223
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialog1.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 36000000 20000000 ffff0500 ffff6500 6... .........e.
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 00008880 00000000 01000000 0000ba00 ................
+ 0050 5f000000 00000000 01000150 00000000 _..........P....
+ 0060 81000700 32000e00 0100ffff 80004f00 ....2.........O.
+ 0070 4b000000 00000000 K.......
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/dialogid.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialogid.rc
new file mode 100644
index 00000000..43bf1ec8
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialogid.rc
@@ -0,0 +1,9 @@
+// Test created based on bug report submitted to binutils mailing list
+// See: http://sources.redhat.com/ml/binutils/2003-03/msg00312.html
+
+101 DIALOGEX 0, 0, 200, 200
+
+BEGIN
+CONTROL 108, -1, "classname", 77, 11, 11, 83, 162
+CONTROL "stringid", 102, "classname", 0x5000120e, 5, 5, 10, 10
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/dialogid.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialogid.rsd
new file mode 100644
index 00000000..6c655a1c
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialogid.rsd
@@ -0,0 +1,18 @@
+
+fred.res: file format binary
+
+Contents of section .data:
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 94000000 20000000 ffff0500 ffff6500 .... .........e.
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 0100ffff 00000000 00000000 00008880 ................
+ 0050 02000000 0000c800 c8000000 00000000 ................
+ 0060 00000000 00000000 4d000050 0b000b00 ........M..P....
+ 0070 5300a200 ffffffff 43004c00 41005300 S.......C.L.A.S.
+ 0080 53004e00 41004d00 45000000 ffff6c00 S.N.A.M.E.....l.
+ 0090 00000000 00000000 00000000 0e120050 ...............P
+ 00a0 05000500 0a000a00 66000000 43004c00 ........f...C.L.
+ 00b0 41005300 53004e00 41004d00 45000000 A.S.S.N.A.M.E...
+ 00c0 73007400 72006900 6e006700 69006400 s.t.r.i.n.g.i.d.
+ 00d0 00000000 ....
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/dialogsignature.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialogsignature.rc
new file mode 100644
index 00000000..a05ce190
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialogsignature.rc
@@ -0,0 +1,5 @@
+101 DIALOG DISCARDABLE 0, 0, 186, 95
+STYLE 1
+BEGIN
+ DEFPUSHBUTTON "OK",1,129,7,50,14
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/dialogsignature.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialogsignature.rsd
new file mode 100644
index 00000000..a01c14de
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/dialogsignature.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 36000000 20000000 ffff0500 ffff6500 6... .........e.
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 01000000 00000000 01000000 0000ba00 ................
+ 0050 5f000000 00000000 01000150 00000000 _..........P....
+ 0060 81000700 32000e00 0100ffff 80004f00 ....2.........O.
+ 0070 4b000000 00000000 K.......
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/dlgfont.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/dlgfont.rc
new file mode 100644
index 00000000..9c763e59
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/dlgfont.rc
@@ -0,0 +1,29 @@
+101 DIALOG DISCARDABLE 0, 0, 186, 95
+FONT 8, "Tahoma"
+BEGIN
+ DEFPUSHBUTTON "OK", 1, 129, 7, 50, 14
+END
+
+102 DIALOGEX DISCARDABLE 0, 0, 186, 95
+FONT 8, "Tahoma"
+BEGIN
+ DEFPUSHBUTTON "OK", 1, 129, 7, 50, 14
+END
+
+103 DIALOGEX DISCARDABLE 0, 0, 186, 95
+FONT 8, "Tahoma", 0
+BEGIN
+ DEFPUSHBUTTON "OK", 1, 129, 7, 50, 14
+END
+
+104 DIALOGEX DISCARDABLE 0, 0, 186, 95
+FONT 8, "Tahoma", 0, 0
+BEGIN
+ DEFPUSHBUTTON "OK", 1, 129, 7, 50, 14
+END
+
+105 DIALOGEX DISCARDABLE 0, 0, 186, 95
+FONT 8, "Tahoma", 0, 0, 1
+BEGIN
+ DEFPUSHBUTTON "OK", 1, 129, 7, 50, 14
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/dlgfont.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/dlgfont.rsd
new file mode 100644
index 00000000..8a25cfa6
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/dlgfont.rsd
@@ -0,0 +1,39 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 46000000 20000000 ffff0500 ffff6500 F... .........e.
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 40008880 00000000 01000000 0000ba00 @...............
+ 0050 5f000000 00000000 08005400 61006800 _.........T.a.h.
+ 0060 6f006d00 61000000 01000150 00000000 o.m.a......P....
+ 0070 81000700 32000e00 0100ffff 80004f00 ....2.........O.
+ 0080 4b000000 00000000 58000000 20000000 K.......X... ...
+ 0090 ffff0500 ffff6600 00000000 30100904 ......f.....0...
+ 00a0 00000000 00000000 0100ffff 00000000 ................
+ 00b0 00000000 40008880 01000000 0000ba00 ....@...........
+ 00c0 5f000000 00000000 08000000 00015400 _.............T.
+ 00d0 61006800 6f006d00 61000000 00000000 a.h.o.m.a.......
+ 00e0 00000000 01000150 81000700 32000e00 .......P....2...
+ 00f0 01000000 ffff8000 4f004b00 00000000 ........O.K.....
+ 0100 58000000 20000000 ffff0500 ffff6700 X... .........g.
+ 0110 00000000 30100904 00000000 00000000 ....0...........
+ 0120 0100ffff 00000000 00000000 40008880 ............@...
+ 0130 01000000 0000ba00 5f000000 00000000 ........_.......
+ 0140 08000000 00015400 61006800 6f006d00 ......T.a.h.o.m.
+ 0150 61000000 00000000 00000000 01000150 a..............P
+ 0160 81000700 32000e00 01000000 ffff8000 ....2...........
+ 0170 4f004b00 00000000 58000000 20000000 O.K.....X... ...
+ 0180 ffff0500 ffff6800 00000000 30100904 ......h.....0...
+ 0190 00000000 00000000 0100ffff 00000000 ................
+ 01a0 00000000 40008880 01000000 0000ba00 ....@...........
+ 01b0 5f000000 00000000 08000000 00015400 _.............T.
+ 01c0 61006800 6f006d00 61000000 00000000 a.h.o.m.a.......
+ 01d0 00000000 01000150 81000700 32000e00 .......P....2...
+ 01e0 01000000 ffff8000 4f004b00 00000000 ........O.K.....
+ 01f0 58000000 20000000 ffff0500 ffff6900 X... .........i.
+ 0200 00000000 30100904 00000000 00000000 ....0...........
+ 0210 0100ffff 00000000 00000000 40008880 ............@...
+ 0220 01000000 0000ba00 5f000000 00000000 ........_.......
+ 0230 08000000 00015400 61006800 6f006d00 ......T.a.h.o.m.
+ 0240 61000000 00000000 00000000 01000150 a..............P
+ 0250 81000700 32000e00 01000000 ffff8000 ....2...........
+ 0260 4f004b00 00000000 O.K.....
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/edittext.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/edittext.rc
new file mode 100644
index 00000000..0fd70001
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/edittext.rc
@@ -0,0 +1,4 @@
+501 DIALOG DISCARDABLE 0, 0, 168, 137
+BEGIN
+ EDITTEXT 1001, 28, 63, 137, 52
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/edittext.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/edittext.rsd
new file mode 100644
index 00000000..7132b20f
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/edittext.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 32000000 20000000 ffff0500 fffff501 2... ...........
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 00008880 00000000 01000000 0000a800 ................
+ 0050 89000000 00000000 00008150 00000000 ...........P....
+ 0060 1c003f00 89003400 e903ffff 81000000 ..?...4.........
+ 0070 00000000 ....
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/escapea.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/escapea.rc
new file mode 100644
index 00000000..0e3e9670
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/escapea.rc
@@ -0,0 +1,7 @@
+20 MENU DISCARDABLE
+BEGIN
+ POPUP "&File"
+ BEGIN
+ MENUITEM "&Open\a^O", 17
+ END
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/escapea.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/escapea.rsd
new file mode 100644
index 00000000..c8a7f4eb
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/escapea.rsd
@@ -0,0 +1,7 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 28000000 20000000 ffff0400 ffff1400 (... ...........
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 00000000 90002600 46006900 6c006500 ......&.F.i.l.e.
+ 0050 00008000 11002600 4f007000 65006e00 ......&.O.p.e.n.
+ 0060 08005e00 4f000000 ..^.O...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/escapex-2.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/escapex-2.rc
new file mode 100755
index 00000000..ed35b214
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/escapex-2.rc
@@ -0,0 +1,5 @@
+101 DIALOG DISCARDABLE 0, 0, 186, 95
+BEGIN
+ LTEXT "\xB0ABC",-1,23,46,28,8
+END
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/escapex-2.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/escapex-2.rsd
new file mode 100644
index 00000000..774c648c
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/escapex-2.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 3a000000 20000000 ffff0500 ffff6500 :... .........e.
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 00008880 00000000 01000000 0000ba00 ................
+ 0050 5f000000 00000000 00000250 00000000 _..........P....
+ 0060 17002e00 1c000800 ffffffff 8200b000 ................
+ 0070 41004200 43000000 00000000 A.B.C.......
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/escapex.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/escapex.rc
new file mode 100644
index 00000000..1a025f65
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/escapex.rc
@@ -0,0 +1,4 @@
+101 DIALOG DISCARDABLE 0, 0, 186, 95
+BEGIN
+ LTEXT "\xB0",-1,23,46,28,8
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/escapex.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/escapex.rsd
new file mode 100644
index 00000000..280aead0
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/escapex.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 34000000 20000000 ffff0500 ffff6500 4... .........e.
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 00008880 00000000 01000000 0000ba00 ................
+ 0050 5f000000 00000000 00000250 00000000 _..........P....
+ 0060 17002e00 1c000800 ffffffff 8200b000 ................
+ 0070 00000000 ....
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/html.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/html.rc
new file mode 100644
index 00000000..d85f5653
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/html.rc
@@ -0,0 +1,6 @@
+#include "windows.h"
+
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+
+129 HTML "html1.hm"
+130 HTML "html2.hm"
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/html.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/html.rsd
new file mode 100644
index 00000000..c124a82b
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/html.rsd
@@ -0,0 +1,45 @@
+
+html.res: file format binary
+
+Contents of section .data:
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 0d010000 20000000 ffff1700 ffff8100 .... ...........
+ 0030 00000000 30100704 00000000 00000000 ....0...........
+ 0040 3c21444f 43545950 4520646f 63747970 <!DOCTYPE doctyp
+ 0050 65205055 424c4943 20222d2f 2f773363 e PUBLIC "-//w3c
+ 0060 2f2f6474 64206874 6d6c2034 2e302074 //dtd html 4.0 t
+ 0070 72616e73 6974696f 6e616c2f 2f656e22 ransitional//en"
+ 0080 3e0d0a3c 68746d6c 3e0d0a3c 68656164 >..<html>..<head
+ 0090 3e0d0a20 203c6d65 74612063 6f6e7465 >.. <meta conte
+ 00a0 6e743d22 74657874 2f68746d 6c3b2063 nt="text/html; c
+ 00b0 68617273 65743d69 736f2d38 3835392d harset=iso-8859-
+ 00c0 31222020 68747470 2d657175 69763d22 1" http-equiv="
+ 00d0 436f6e74 656e742d 54797065 223e0d0a Content-Type">..
+ 00e0 20203c74 69746c65 3e57696e 64726573 <title>Windres
+ 00f0 3c2f7469 746c653e 0d0a3c2f 68656164 </title>..</head
+ 0100 3e0d0a0d 0a3c626f 64793e0d 0a546869 >....<body>..Thi
+ 0110 73206973 20612074 65737420 70616765 s is a test page
+ 0120 20666f72 2077696e 64726573 2048544d for windres HTM
+ 0130 4c207265 736f7572 63652e0d 0a3c2f62 L resource...</b
+ 0140 6f64793e 0d0a3c2f 68746d6c 3e000000 ody>..</html>...
+ 0150 14010000 20000000 ffff1700 ffff8200 .... ...........
+ 0160 00000000 30100704 00000000 00000000 ....0...........
+ 0170 3c21444f 43545950 4520646f 63747970 <!DOCTYPE doctyp
+ 0180 65205055 424c4943 20222d2f 2f773363 e PUBLIC "-//w3c
+ 0190 2f2f6474 64206874 6d6c2034 2e302074 //dtd html 4.0 t
+ 01a0 72616e73 6974696f 6e616c2f 2f656e22 ransitional//en"
+ 01b0 3e0d0a3c 68746d6c 3e0d0a3c 68656164 >..<html>..<head
+ 01c0 3e0d0a20 203c6d65 74612063 6f6e7465 >.. <meta conte
+ 01d0 6e743d22 74657874 2f68746d 6c3b2063 nt="text/html; c
+ 01e0 68617273 65743d69 736f2d38 3835392d harset=iso-8859-
+ 01f0 31222020 68747470 2d657175 69763d22 1" http-equiv="
+ 0200 436f6e74 656e742d 54797065 223e0d0a Content-Type">..
+ 0210 20203c74 69746c65 3e57696e 64726573 <title>Windres
+ 0220 3c2f7469 746c653e 0d0a3c2f 68656164 </title>..</head
+ 0230 3e0d0a0d 0a3c626f 64793e0d 0a546869 >....<body>..Thi
+ 0240 73206973 20612073 65636f6e 64207465 s is a second te
+ 0250 73742070 61676520 666f7220 77696e64 st page for wind
+ 0260 72657320 48544d4c 20726573 6f757263 res HTML resourc
+ 0270 652e0d0a 3c2f626f 64793e0d 0a3c2f68 e...</body>..</h
+ 0280 746d6c3e tml>
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/html1.hm b/binutils-2.24/binutils/testsuite/binutils-all/windres/html1.hm
new file mode 100644
index 00000000..ffc5a182
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/html1.hm
@@ -0,0 +1,11 @@
+<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+ <title>Windres</title>
+</head>
+
+<body>
+This is a test page for windres HTML resource.
+</body>
+</html> \ No newline at end of file
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/html2.hm b/binutils-2.24/binutils/testsuite/binutils-all/windres/html2.hm
new file mode 100644
index 00000000..2fb343bf
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/html2.hm
@@ -0,0 +1,11 @@
+<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
+ <title>Windres</title>
+</head>
+
+<body>
+This is a second test page for windres HTML resource.
+</body>
+</html> \ No newline at end of file
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/lang.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/lang.rc
new file mode 100644
index 00000000..d8943155
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/lang.rc
@@ -0,0 +1,15 @@
+#include "windows.h"
+
+LANGUAGE 0, 0
+
+1 MENU MOVEABLE PURE DISCARDABLE
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+BEGIN
+ POPUP "&Datei" { MENUITEM "foo", 1 }
+END
+
+1 MENU MOVEABLE PURE DISCARDABLE
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+BEGIN
+ POPUP "&File" { MENUITEM "foo", 1 }
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/lang.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/lang.rsd
new file mode 100644
index 00000000..9e0045f6
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/lang.rsd
@@ -0,0 +1,10 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 20000000 20000000 ffff0400 ffff0100 ... ...........
+ 0030 00000000 30100704 00000000 00000000 ....0...........
+ 0040 00000000 90002600 44006100 74006500 ......&.D.a.t.e.
+ 0050 69000000 80000100 66006f00 6f000000 i.......f.o.o...
+ 0060 1e000000 20000000 ffff0400 ffff0100 .... ...........
+ 0070 00000000 30100904 00000000 00000000 ....0...........
+ 0080 00000000 90002600 46006900 6c006500 ......&.F.i.l.e.
+ 0090 00008000 01006600 6f006f00 00000000 ......f.o.o.....
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/listbox.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/listbox.rc
new file mode 100644
index 00000000..bb7c121e
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/listbox.rc
@@ -0,0 +1,4 @@
+501 DIALOG DISCARDABLE 0, 0, 168, 137
+BEGIN
+ LISTBOX 1001, 28, 63, 137, 52
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/listbox.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/listbox.rsd
new file mode 100644
index 00000000..4c3eadfc
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/listbox.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 32000000 20000000 ffff0500 fffff501 2... ...........
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 00008880 00000000 01000000 0000a800 ................
+ 0050 89000000 00000000 01008050 00000000 ...........P....
+ 0060 1c003f00 89003400 e903ffff 83000000 ..?...4.........
+ 0070 00000000 ....
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/messagetable.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/messagetable.rc
new file mode 100644
index 00000000..250d2417
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/messagetable.rc
@@ -0,0 +1,5 @@
+#include "windows.h"
+
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+
+888 MESSAGETABLE MSG00001.bin
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/messagetable.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/messagetable.rsd
new file mode 100644
index 00000000..9d108a58
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/messagetable.rsd
@@ -0,0 +1,15 @@
+
+messagetable.res: file format binary
+
+Contents of section .data:
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 70000000 20000000 ffff0b00 ffff7803 p... .........x.
+ 0030 00000000 30100704 00000000 00000000 ....0...........
+ 0040 01000000 00000000 05000000 10000000 ................
+ 0050 14000000 4e6f7469 63653a20 25310d0a ....Notice: %1..
+ 0060 00000000 0c000000 25310d0a 00000000 ........%1......
+ 0070 10000000 5761726e 3a202531 0d0a0000 ....Warn: %1....
+ 0080 10000000 4572726f 723a2025 310d0a00 ....Error: %1...
+ 0090 10000000 46617461 6c3a2025 310d0a00 ....Fatal: %1...
+ 00a0 10000000 25310d0a 25320d0a 00000000 ....%1..%2......
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/msupdate b/binutils-2.24/binutils/testsuite/binutils-all/windres/msupdate
new file mode 100755
index 00000000..94d36988
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/msupdate
@@ -0,0 +1,40 @@
+#!/bin/sh
+# Copyright 2001, 2007, 2009 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 3 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.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# Written by DJ Delorie <dj@redhat.com>
+
+# Run this on a machine with Cygwin and Microsoft Visual C to create
+# the RES files we match against.
+
+RC="rc"
+if test x"$1" != x""
+then
+ RC="$1"
+fi
+
+for i in *.rc
+do
+ o=`echo $i | sed s/.rc/.res/`
+ d=`echo $i | sed s/.rc/.rsd/`
+ echo "$i -> $o -> $d"
+ $RC /fo$o $i
+ objdump -b binary -s $o | sed -n '/^ [0-9a-f][0-9a-f]* /p' > $d
+ rm $o
+done
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/nocaption.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/nocaption.rc
new file mode 100644
index 00000000..1f3c20f5
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/nocaption.rc
@@ -0,0 +1,4 @@
+101 DIALOG DISCARDABLE 0, 0, 186, 95
+BEGIN
+ DEFPUSHBUTTON "OK",1,129,7,50,14
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/nocaption.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/nocaption.rsd
new file mode 100644
index 00000000..270b6223
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/nocaption.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 36000000 20000000 ffff0500 ffff6500 6... .........e.
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 00008880 00000000 01000000 0000ba00 ................
+ 0050 5f000000 00000000 01000150 00000000 _..........P....
+ 0060 81000700 32000e00 0100ffff 80004f00 ....2.........O.
+ 0070 4b000000 00000000 K.......
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/printstyle.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/printstyle.rc
new file mode 100644
index 00000000..0066c995
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/printstyle.rc
@@ -0,0 +1,6 @@
+101 DIALOG DISCARDABLE 0, 0, 186, 95
+STYLE 0
+BEGIN
+ DEFPUSHBUTTON "OK",1,129,7,50,14
+END
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/printstyle.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/printstyle.rsd
new file mode 100644
index 00000000..6a4a919c
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/printstyle.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 36000000 20000000 ffff0500 ffff6500 6... .........e.
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 00000000 00000000 01000000 0000ba00 ................
+ 0050 5f000000 00000000 01000150 00000000 _..........P....
+ 0060 81000700 32000e00 0100ffff 80004f00 ....2.........O.
+ 0070 4b000000 00000000 K.......
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/quoteclass.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/quoteclass.rc
new file mode 100644
index 00000000..c1f98e19
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/quoteclass.rc
@@ -0,0 +1,8 @@
+// parse-only
+
+101 DIALOG DISCARDABLE 0, 0, 186, 95
+CLASS "myclass"
+BEGIN
+ DEFPUSHBUTTON "OK",1,129,7,50,14
+END
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/scrollbar.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/scrollbar.rc
new file mode 100644
index 00000000..9391d1ab
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/scrollbar.rc
@@ -0,0 +1,4 @@
+501 DIALOGEX 0, 0, 168, 137
+BEGIN
+ SCROLLBAR 1001,43,68,105,10,0,0,0x81f503e9
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/scrollbar.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/scrollbar.rsd
new file mode 100644
index 00000000..c509c4cd
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/scrollbar.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 40000000 20000000 ffff0500 fffff501 @... ...........
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 0100ffff 00000000 00000000 00008880 ................
+ 0050 01000000 0000a800 89000000 00000000 ................
+ 0060 e903f581 00000000 00000050 2b004400 ...........P+.D.
+ 0070 69000a00 e9030000 ffff8400 00000000 i...............
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab1.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab1.rc
new file mode 100644
index 00000000..a1a246d8
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab1.rc
@@ -0,0 +1,8 @@
+#include "windows.h"
+
+LANGUAGE 0, 0
+
+STRINGTABLE MOVEABLE PURE DISCARDABLE
+BEGIN
+ 1 "hello, world"
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab1.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab1.rsd
new file mode 100644
index 00000000..4d610739
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab1.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 38000000 20000000 ffff0600 ffff0100 8... ...........
+ 0030 00000000 30100000 00000000 00000000 ....0...........
+ 0040 00000c00 68006500 6c006c00 6f002c00 ....h.e.l.l.o.,.
+ 0050 20007700 6f007200 6c006400 00000000 .w.o.r.l.d.....
+ 0060 00000000 00000000 00000000 00000000 ................
+ 0070 00000000 00000000 ........
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab2.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab2.rc
new file mode 100644
index 00000000..2721d159
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab2.rc
@@ -0,0 +1,8 @@
+#include "windows.h"
+
+LANGUAGE 0, 0
+
+STRINGTABLE MOVEABLE PURE DISCARDABLE
+BEGIN
+ 1 L"hello, world"
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab2.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab2.rsd
new file mode 100644
index 00000000..4d610739
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab2.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 38000000 20000000 ffff0600 ffff0100 8... ...........
+ 0030 00000000 30100000 00000000 00000000 ....0...........
+ 0040 00000c00 68006500 6c006c00 6f002c00 ....h.e.l.l.o.,.
+ 0050 20007700 6f007200 6c006400 00000000 .w.o.r.l.d.....
+ 0060 00000000 00000000 00000000 00000000 ................
+ 0070 00000000 00000000 ........
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab3.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab3.rc
new file mode 100644
index 00000000..542e9dc6
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab3.rc
@@ -0,0 +1,14 @@
+// cpparg -DTEST=1
+
+#include "windows.h"
+
+LANGUAGE 0, 0
+
+STRINGTABLE MOVEABLE PURE DISCARDABLE
+BEGIN
+#ifdef TEST
+ 1 "hello, world"
+#else
+ 1 "fail"
+#endif
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab3.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab3.rsd
new file mode 100644
index 00000000..4d610739
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab3.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 38000000 20000000 ffff0600 ffff0100 8... ...........
+ 0030 00000000 30100000 00000000 00000000 ....0...........
+ 0040 00000c00 68006500 6c006c00 6f002c00 ....h.e.l.l.o.,.
+ 0050 20007700 6f007200 6c006400 00000000 .w.o.r.l.d.....
+ 0060 00000000 00000000 00000000 00000000 ................
+ 0070 00000000 00000000 ........
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab4.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab4.rc
new file mode 100644
index 00000000..cd532980
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab4.rc
@@ -0,0 +1,10 @@
+// cpparg -DTEST=1
+
+#include "windows.h"
+
+LANGUAGE 0, 0
+
+STRINGTABLE MOVEABLE PURE DISCARDABLE
+BEGIN
+ 1 "hello\0 world"
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab4.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab4.rsd
new file mode 100644
index 00000000..9fa055d7
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/strtab4.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 38000000 20000000 ffff0600 ffff0100 8... ...........
+ 0030 00000000 30100000 00000000 00000000 ....0...........
+ 0040 00000c00 68006500 6c006c00 6f000000 ....h.e.l.l.o...
+ 0050 20007700 6f007200 6c006400 00000000 .w.o.r.l.d.....
+ 0060 00000000 00000000 00000000 00000000 ................
+ 0070 00000000 00000000 ........
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/sublang.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/sublang.rc
new file mode 100644
index 00000000..a37921b3
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/sublang.rc
@@ -0,0 +1,5 @@
+LANGUAGE 9, 1
+101 DIALOG DISCARDABLE 0, 0, 186, 95
+BEGIN
+ DEFPUSHBUTTON "OK",1,129,7,50,14
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/sublang.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/sublang.rsd
new file mode 100644
index 00000000..270b6223
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/sublang.rsd
@@ -0,0 +1,8 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 36000000 20000000 ffff0500 ffff6500 6... .........e.
+ 0030 00000000 30100904 00000000 00000000 ....0...........
+ 0040 00008880 00000000 01000000 0000ba00 ................
+ 0050 5f000000 00000000 01000150 00000000 _..........P....
+ 0060 81000700 32000e00 0100ffff 80004f00 ....2.........O.
+ 0070 4b000000 00000000 K.......
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/version.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/version.rc
new file mode 100644
index 00000000..59c8743a
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/version.rc
@@ -0,0 +1,32 @@
+#include "windows.h"
+
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+ FILEFLAGS 0x0L
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040704e4"
+ BEGIN
+ VALUE L"CompanyName", L"binutil\x0073"
+ VALUE "FileDescription", "RC compiler."
+ VALUE "FileVersion", "1.0.0.1"
+ VALUE "InternalName", "windres.exe"
+ VALUE "LegalCopyright", "(c) FSF. All rights are reserved."
+ VALUE "OriginalFilename", "windres.exe"
+ VALUE "ProductName", "windows resource compiler"
+ VALUE "ProductVersion", "1.0.0.1"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x407, 1252
+ END
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/version.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/version.rsd
new file mode 100644
index 00000000..8ad479c1
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/version.rsd
@@ -0,0 +1,51 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 ec020000 20000000 ffff1000 ffff0100 .... ...........
+ 0030 00000000 00000704 00000000 00000000 ................
+ 0040 ec023400 00005600 53005f00 56004500 ..4...V.S._.V.E.
+ 0050 52005300 49004f00 4e005f00 49004e00 R.S.I.O.N._.I.N.
+ 0060 46004f00 00000000 bd04effe 00000100 F.O.............
+ 0070 00000100 01000000 00000100 01000000 ................
+ 0080 3f000000 00000000 04000000 01000000 ?...............
+ 0090 00000000 00000000 00000000 4c020000 ............L...
+ 00a0 01005300 74007200 69006e00 67004600 ..S.t.r.i.n.g.F.
+ 00b0 69006c00 65004900 6e006600 6f000000 i.l.e.I.n.f.o...
+ 00c0 28020000 01003000 34003000 37003000 (.....0.4.0.7.0.
+ 00d0 34006500 34000000 32000900 01004300 4.e.4...2.....C.
+ 00e0 6f006d00 70006100 6e007900 4e006100 o.m.p.a.n.y.N.a.
+ 00f0 6d006500 00000000 62006900 6e007500 m.e.....b.i.n.u.
+ 0100 74006900 6c007300 00000000 42000d00 t.i.l.s.....B...
+ 0110 01004600 69006c00 65004400 65007300 ..F.i.l.e.D.e.s.
+ 0120 63007200 69007000 74006900 6f006e00 c.r.i.p.t.i.o.n.
+ 0130 00000000 52004300 20006300 6f006d00 ....R.C. .c.o.m.
+ 0140 70006900 6c006500 72002e00 00000000 p.i.l.e.r.......
+ 0150 30000800 01004600 69006c00 65005600 0.....F.i.l.e.V.
+ 0160 65007200 73006900 6f006e00 00000000 e.r.s.i.o.n.....
+ 0170 31002e00 30002e00 30002e00 31000000 1...0...0...1...
+ 0180 38000c00 01004900 6e007400 65007200 8.....I.n.t.e.r.
+ 0190 6e006100 6c004e00 61006d00 65000000 n.a.l.N.a.m.e...
+ 01a0 77006900 6e006400 72006500 73002e00 w.i.n.d.r.e.s...
+ 01b0 65007800 65000000 68002200 01004c00 e.x.e...h."...L.
+ 01c0 65006700 61006c00 43006f00 70007900 e.g.a.l.C.o.p.y.
+ 01d0 72006900 67006800 74000000 28006300 r.i.g.h.t...(.c.
+ 01e0 29002000 46005300 46002e00 20004100 ). .F.S.F... .A.
+ 01f0 6c006c00 20007200 69006700 68007400 l.l. .r.i.g.h.t.
+ 0200 73002000 61007200 65002000 72006500 s. .a.r.e. .r.e.
+ 0210 73006500 72007600 65006400 2e000000 s.e.r.v.e.d.....
+ 0220 40000c00 01004f00 72006900 67006900 @.....O.r.i.g.i.
+ 0230 6e006100 6c004600 69006c00 65006e00 n.a.l.F.i.l.e.n.
+ 0240 61006d00 65000000 77006900 6e006400 a.m.e...w.i.n.d.
+ 0250 72006500 73002e00 65007800 65000000 r.e.s...e.x.e...
+ 0260 54001a00 01005000 72006f00 64007500 T.....P.r.o.d.u.
+ 0270 63007400 4e006100 6d006500 00000000 c.t.N.a.m.e.....
+ 0280 77006900 6e006400 6f007700 73002000 w.i.n.d.o.w.s. .
+ 0290 72006500 73006f00 75007200 63006500 r.e.s.o.u.r.c.e.
+ 02a0 20006300 6f006d00 70006900 6c006500 .c.o.m.p.i.l.e.
+ 02b0 72000000 34000800 01005000 72006f00 r...4.....P.r.o.
+ 02c0 64007500 63007400 56006500 72007300 d.u.c.t.V.e.r.s.
+ 02d0 69006f00 6e000000 31002e00 30002e00 i.o.n...1...0...
+ 02e0 30002e00 31000000 44000000 01005600 0...1...D.....V.
+ 02f0 61007200 46006900 6c006500 49006e00 a.r.F.i.l.e.I.n.
+ 0300 66006f00 00000000 24000400 00005400 f.o.....$.....T.
+ 0310 72006100 6e007300 6c006100 74006900 r.a.n.s.l.a.t.i.
+ 0320 6f006e00 00000000 0704e404 o.n.........
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/version_cat.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/version_cat.rc
new file mode 100644
index 00000000..8368aa12
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/version_cat.rc
@@ -0,0 +1,32 @@
+#include "windows.h"
+
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+ FILEFLAGS 0x0L
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040704e4"
+ BEGIN
+ VALUE L"Company" "Name", L"binutil\x0073"
+ VALUE "File" "Description", L"RC " L"compiler."
+ VALUE "File" "Version", "1.0.0.1"
+ VALUE "Internal" "Name", "windres" L".exe"
+ VALUE "Legal" "Copyright", "(c) FSF." " All rights are reserved."
+ VALUE "Original" "Filename", L"windres" ".exe"
+ VALUE "Product" "Name", "windows resource " "compiler"
+ VALUE "Product" "Version", "1.0.0.1"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x407, 1252
+ END
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/version_cat.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/version_cat.rsd
new file mode 100644
index 00000000..4e575121
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/version_cat.rsd
@@ -0,0 +1,55 @@
+
+version.res: file format binary
+
+Contents of section .data:
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 ec020000 20000000 ffff1000 ffff0100 .... ...........
+ 0030 00000000 00000704 00000000 00000000 ................
+ 0040 ec023400 00005600 53005f00 56004500 ..4...V.S._.V.E.
+ 0050 52005300 49004f00 4e005f00 49004e00 R.S.I.O.N._.I.N.
+ 0060 46004f00 00000000 bd04effe 00000100 F.O.............
+ 0070 00000100 01000000 00000100 01000000 ................
+ 0080 3f000000 00000000 04000000 01000000 ?...............
+ 0090 00000000 00000000 00000000 4c020000 ............L...
+ 00a0 01005300 74007200 69006e00 67004600 ..S.t.r.i.n.g.F.
+ 00b0 69006c00 65004900 6e006600 6f000000 i.l.e.I.n.f.o...
+ 00c0 28020000 01003000 34003000 37003000 (.....0.4.0.7.0.
+ 00d0 34006500 34000000 32000900 01004300 4.e.4...2.....C.
+ 00e0 6f006d00 70006100 6e007900 4e006100 o.m.p.a.n.y.N.a.
+ 00f0 6d006500 00000000 62006900 6e007500 m.e.....b.i.n.u.
+ 0100 74006900 6c007300 00000000 42000d00 t.i.l.s.....B...
+ 0110 01004600 69006c00 65004400 65007300 ..F.i.l.e.D.e.s.
+ 0120 63007200 69007000 74006900 6f006e00 c.r.i.p.t.i.o.n.
+ 0130 00000000 52004300 20006300 6f006d00 ....R.C. .c.o.m.
+ 0140 70006900 6c006500 72002e00 00000000 p.i.l.e.r.......
+ 0150 30000800 01004600 69006c00 65005600 0.....F.i.l.e.V.
+ 0160 65007200 73006900 6f006e00 00000000 e.r.s.i.o.n.....
+ 0170 31002e00 30002e00 30002e00 31000000 1...0...0...1...
+ 0180 38000c00 01004900 6e007400 65007200 8.....I.n.t.e.r.
+ 0190 6e006100 6c004e00 61006d00 65000000 n.a.l.N.a.m.e...
+ 01a0 77006900 6e006400 72006500 73002e00 w.i.n.d.r.e.s...
+ 01b0 65007800 65000000 68002200 01004c00 e.x.e...h."...L.
+ 01c0 65006700 61006c00 43006f00 70007900 e.g.a.l.C.o.p.y.
+ 01d0 72006900 67006800 74000000 28006300 r.i.g.h.t...(.c.
+ 01e0 29002000 46005300 46002e00 20004100 ). .F.S.F... .A.
+ 01f0 6c006c00 20007200 69006700 68007400 l.l. .r.i.g.h.t.
+ 0200 73002000 61007200 65002000 72006500 s. .a.r.e. .r.e.
+ 0210 73006500 72007600 65006400 2e000000 s.e.r.v.e.d.....
+ 0220 40000c00 01004f00 72006900 67006900 @.....O.r.i.g.i.
+ 0230 6e006100 6c004600 69006c00 65006e00 n.a.l.F.i.l.e.n.
+ 0240 61006d00 65000000 77006900 6e006400 a.m.e...w.i.n.d.
+ 0250 72006500 73002e00 65007800 65000000 r.e.s...e.x.e...
+ 0260 54001a00 01005000 72006f00 64007500 T.....P.r.o.d.u.
+ 0270 63007400 4e006100 6d006500 00000000 c.t.N.a.m.e.....
+ 0280 77006900 6e006400 6f007700 73002000 w.i.n.d.o.w.s. .
+ 0290 72006500 73006f00 75007200 63006500 r.e.s.o.u.r.c.e.
+ 02a0 20006300 6f006d00 70006900 6c006500 .c.o.m.p.i.l.e.
+ 02b0 72000000 34000800 01005000 72006f00 r...4.....P.r.o.
+ 02c0 64007500 63007400 56006500 72007300 d.u.c.t.V.e.r.s.
+ 02d0 69006f00 6e000000 31002e00 30002e00 i.o.n...1...0...
+ 02e0 30002e00 31000000 44000000 01005600 0...1...D.....V.
+ 02f0 61007200 46006900 6c006500 49006e00 a.r.F.i.l.e.I.n.
+ 0300 66006f00 00000000 24000400 00005400 f.o.....$.....T.
+ 0310 72006100 6e007300 6c006100 74006900 r.a.n.s.l.a.t.i.
+ 0320 6f006e00 00000000 0704e404 o.n.........
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/version_mlang.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/version_mlang.rc
new file mode 100644
index 00000000..e796ca95
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/version_mlang.rc
@@ -0,0 +1,43 @@
+#include "windows.h"
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+ FILEFLAGS 0x0L
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", "binutils"
+ VALUE "FileDescription", "RC compiler."
+ VALUE "FileVersion", "1.0.0.1"
+ VALUE "InternalName", "windres.exe"
+ VALUE "LegalCopyright", "(c) FSF. All rights are reserved."
+ VALUE "OriginalFilename", "windres.exe"
+ VALUE "ProductName", "windows resource compiler"
+ VALUE "ProductVersion", "1.0.0.1"
+ END
+ BLOCK "041504b0"
+ BEGIN
+ VALUE "CompanyName", "binutils"
+ VALUE "FileDescription", "Kompilator RC."
+ VALUE "FileVersion", "1.0.0.1"
+ VALUE "InternalName", "windres.exe"
+ VALUE "LegalCopyright", "(c) FSF. Wszystkie prawa zastrzezone."
+ VALUE "OriginalFilename", "windres.exe"
+ VALUE "ProductName", "windows resource compiler"
+ VALUE "ProductVersion", "1.0.0.1"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 0x04b0, 0x0415, 0x04b0
+ END
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/version_mlang.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/version_mlang.rsd
new file mode 100644
index 00000000..05ed4883
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/version_mlang.rsd
@@ -0,0 +1,87 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 24050000 20000000 ffff1000 ffff0100 $... ...........
+ 0030 00000000 00000000 00000000 00000000 ................
+ 0040 24053400 00005600 53005f00 56004500 $.4...V.S._.V.E.
+ 0050 52005300 49004f00 4e005f00 49004e00 R.S.I.O.N._.I.N.
+ 0060 46004f00 00000000 bd04effe 00000100 F.O.............
+ 0070 00000100 01000000 00000100 01000000 ................
+ 0080 3f000000 00000000 04000000 01000000 ?...............
+ 0090 00000000 00000000 00000000 80040000 ................
+ 00a0 01005300 74007200 69006e00 67004600 ..S.t.r.i.n.g.F.
+ 00b0 69006c00 65004900 6e006600 6f000000 i.l.e.I.n.f.o...
+ 00c0 28020000 01003000 34003000 39003000 (.....0.4.0.9.0.
+ 00d0 34006200 30000000 32000900 01004300 4.b.0...2.....C.
+ 00e0 6f006d00 70006100 6e007900 4e006100 o.m.p.a.n.y.N.a.
+ 00f0 6d006500 00000000 62006900 6e007500 m.e.....b.i.n.u.
+ 0100 74006900 6c007300 00000000 42000d00 t.i.l.s.....B...
+ 0110 01004600 69006c00 65004400 65007300 ..F.i.l.e.D.e.s.
+ 0120 63007200 69007000 74006900 6f006e00 c.r.i.p.t.i.o.n.
+ 0130 00000000 52004300 20006300 6f006d00 ....R.C. .c.o.m.
+ 0140 70006900 6c006500 72002e00 00000000 p.i.l.e.r.......
+ 0150 30000800 01004600 69006c00 65005600 0.....F.i.l.e.V.
+ 0160 65007200 73006900 6f006e00 00000000 e.r.s.i.o.n.....
+ 0170 31002e00 30002e00 30002e00 31000000 1...0...0...1...
+ 0180 38000c00 01004900 6e007400 65007200 8.....I.n.t.e.r.
+ 0190 6e006100 6c004e00 61006d00 65000000 n.a.l.N.a.m.e...
+ 01a0 77006900 6e006400 72006500 73002e00 w.i.n.d.r.e.s...
+ 01b0 65007800 65000000 68002200 01004c00 e.x.e...h."...L.
+ 01c0 65006700 61006c00 43006f00 70007900 e.g.a.l.C.o.p.y.
+ 01d0 72006900 67006800 74000000 28006300 r.i.g.h.t...(.c.
+ 01e0 29002000 46005300 46002e00 20004100 ). .F.S.F... .A.
+ 01f0 6c006c00 20007200 69006700 68007400 l.l. .r.i.g.h.t.
+ 0200 73002000 61007200 65002000 72006500 s. .a.r.e. .r.e.
+ 0210 73006500 72007600 65006400 2e000000 s.e.r.v.e.d.....
+ 0220 40000c00 01004f00 72006900 67006900 @.....O.r.i.g.i.
+ 0230 6e006100 6c004600 69006c00 65006e00 n.a.l.F.i.l.e.n.
+ 0240 61006d00 65000000 77006900 6e006400 a.m.e...w.i.n.d.
+ 0250 72006500 73002e00 65007800 65000000 r.e.s...e.x.e...
+ 0260 54001a00 01005000 72006f00 64007500 T.....P.r.o.d.u.
+ 0270 63007400 4e006100 6d006500 00000000 c.t.N.a.m.e.....
+ 0280 77006900 6e006400 6f007700 73002000 w.i.n.d.o.w.s. .
+ 0290 72006500 73006f00 75007200 63006500 r.e.s.o.u.r.c.e.
+ 02a0 20006300 6f006d00 70006900 6c006500 .c.o.m.p.i.l.e.
+ 02b0 72000000 34000800 01005000 72006f00 r...4.....P.r.o.
+ 02c0 64007500 63007400 56006500 72007300 d.u.c.t.V.e.r.s.
+ 02d0 69006f00 6e000000 31002e00 30002e00 i.o.n...1...0...
+ 02e0 30002e00 31000000 34020000 01003000 0...1...4.....0.
+ 02f0 34003100 35003000 34006200 30000000 4.1.5.0.4.b.0...
+ 0300 32000900 01004300 6f006d00 70006100 2.....C.o.m.p.a.
+ 0310 6e007900 4e006100 6d006500 00000000 n.y.N.a.m.e.....
+ 0320 62006900 6e007500 74006900 6c007300 b.i.n.u.t.i.l.s.
+ 0330 00000000 46000f00 01004600 69006c00 ....F.....F.i.l.
+ 0340 65004400 65007300 63007200 69007000 e.D.e.s.c.r.i.p.
+ 0350 74006900 6f006e00 00000000 4b006f00 t.i.o.n.....K.o.
+ 0360 6d007000 69006c00 61007400 6f007200 m.p.i.l.a.t.o.r.
+ 0370 20005200 43002e00 00000000 30000800 .R.C.......0...
+ 0380 01004600 69006c00 65005600 65007200 ..F.i.l.e.V.e.r.
+ 0390 73006900 6f006e00 00000000 31002e00 s.i.o.n.....1...
+ 03a0 30002e00 30002e00 31000000 38000c00 0...0...1...8...
+ 03b0 01004900 6e007400 65007200 6e006100 ..I.n.t.e.r.n.a.
+ 03c0 6c004e00 61006d00 65000000 77006900 l.N.a.m.e...w.i.
+ 03d0 6e006400 72006500 73002e00 65007800 n.d.r.e.s...e.x.
+ 03e0 65000000 70002600 01004c00 65006700 e...p.&...L.e.g.
+ 03f0 61006c00 43006f00 70007900 72006900 a.l.C.o.p.y.r.i.
+ 0400 67006800 74000000 28006300 29002000 g.h.t...(.c.). .
+ 0410 46005300 46002e00 20005700 73007a00 F.S.F... .W.s.z.
+ 0420 79007300 74006b00 69006500 20007000 y.s.t.k.i.e. .p.
+ 0430 72006100 77006100 20007a00 61007300 r.a.w.a. .z.a.s.
+ 0440 74007200 7a006500 7a006f00 6e006500 t.r.z.e.z.o.n.e.
+ 0450 2e000000 40000c00 01004f00 72006900 ....@.....O.r.i.
+ 0460 67006900 6e006100 6c004600 69006c00 g.i.n.a.l.F.i.l.
+ 0470 65006e00 61006d00 65000000 77006900 e.n.a.m.e...w.i.
+ 0480 6e006400 72006500 73002e00 65007800 n.d.r.e.s...e.x.
+ 0490 65000000 54001a00 01005000 72006f00 e...T.....P.r.o.
+ 04a0 64007500 63007400 4e006100 6d006500 d.u.c.t.N.a.m.e.
+ 04b0 00000000 77006900 6e006400 6f007700 ....w.i.n.d.o.w.
+ 04c0 73002000 72006500 73006f00 75007200 s. .r.e.s.o.u.r.
+ 04d0 63006500 20006300 6f006d00 70006900 c.e. .c.o.m.p.i.
+ 04e0 6c006500 72000000 34000800 01005000 l.e.r...4.....P.
+ 04f0 72006f00 64007500 63007400 56006500 r.o.d.u.c.t.V.e.
+ 0500 72007300 69006f00 6e000000 31002e00 r.s.i.o.n...1...
+ 0510 30002e00 30002e00 31000000 48000000 0...0...1...H...
+ 0520 01005600 61007200 46006900 6c006500 ..V.a.r.F.i.l.e.
+ 0530 49006e00 66006f00 00000000 28000800 I.n.f.o.....(...
+ 0540 00005400 72006100 6e007300 6c006100 ..T.r.a.n.s.l.a.
+ 0550 74006900 6f006e00 00000000 0904b004 t.i.o.n.........
+ 0560 1504b004 ....
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/version_small.rc b/binutils-2.24/binutils/testsuite/binutils-all/windres/version_small.rc
new file mode 100755
index 00000000..add98551
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/version_small.rc
@@ -0,0 +1,32 @@
+#include "windows.h"
+
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,1
+ PRODUCTVERSION 1,1
+ FILEFLAGSMASK 0x3fL
+ FILEFLAGS 0x0L
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040704e4"
+ BEGIN
+ VALUE L"CompanyName", L"binutil\x0073"
+ VALUE "FileDescription", "RC compiler."
+ VALUE "FileVersion", "1.0.1.0"
+ VALUE "InternalName", "windres.exe"
+ VALUE "LegalCopyright", "(c) FSF. All rights are reserved."
+ VALUE "OriginalFilename", "windres.exe"
+ VALUE "ProductName", "windows resource compiler"
+ VALUE "ProductVersion", "1.1.0.0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x407, 1252
+ END
+END
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/version_small.rsd b/binutils-2.24/binutils/testsuite/binutils-all/windres/version_small.rsd
new file mode 100755
index 00000000..141ddb14
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/version_small.rsd
@@ -0,0 +1,51 @@
+ 0000 00000000 20000000 ffff0000 ffff0000 .... ...........
+ 0010 00000000 00000000 00000000 00000000 ................
+ 0020 ec020000 20000000 ffff1000 ffff0100 .... ...........
+ 0030 00000000 00000704 00000000 00000000 ................
+ 0040 ec023400 00005600 53005f00 56004500 ..4...V.S._.V.E.
+ 0050 52005300 49004f00 4e005f00 49004e00 R.S.I.O.N._.I.N.
+ 0060 46004f00 00000000 bd04effe 00000100 F.O.............
+ 0070 00000100 00000100 01000100 00000000 ................
+ 0080 3f000000 00000000 04000000 01000000 ?...............
+ 0090 00000000 00000000 00000000 4c020000 ............L...
+ 00a0 01005300 74007200 69006e00 67004600 ..S.t.r.i.n.g.F.
+ 00b0 69006c00 65004900 6e006600 6f000000 i.l.e.I.n.f.o...
+ 00c0 28020000 01003000 34003000 37003000 (.....0.4.0.7.0.
+ 00d0 34006500 34000000 32000900 01004300 4.e.4...2.....C.
+ 00e0 6f006d00 70006100 6e007900 4e006100 o.m.p.a.n.y.N.a.
+ 00f0 6d006500 00000000 62006900 6e007500 m.e.....b.i.n.u.
+ 0100 74006900 6c007300 00000000 42000d00 t.i.l.s.....B...
+ 0110 01004600 69006c00 65004400 65007300 ..F.i.l.e.D.e.s.
+ 0120 63007200 69007000 74006900 6f006e00 c.r.i.p.t.i.o.n.
+ 0130 00000000 52004300 20006300 6f006d00 ....R.C. .c.o.m.
+ 0140 70006900 6c006500 72002e00 00000000 p.i.l.e.r.......
+ 0150 30000800 01004600 69006c00 65005600 0.....F.i.l.e.V.
+ 0160 65007200 73006900 6f006e00 00000000 e.r.s.i.o.n.....
+ 0170 31002e00 30002e00 31002e00 30000000 1...0...1...0...
+ 0180 38000c00 01004900 6e007400 65007200 8.....I.n.t.e.r.
+ 0190 6e006100 6c004e00 61006d00 65000000 n.a.l.N.a.m.e...
+ 01a0 77006900 6e006400 72006500 73002e00 w.i.n.d.r.e.s...
+ 01b0 65007800 65000000 68002200 01004c00 e.x.e...h."...L.
+ 01c0 65006700 61006c00 43006f00 70007900 e.g.a.l.C.o.p.y.
+ 01d0 72006900 67006800 74000000 28006300 r.i.g.h.t...(.c.
+ 01e0 29002000 46005300 46002e00 20004100 ). .F.S.F... .A.
+ 01f0 6c006c00 20007200 69006700 68007400 l.l. .r.i.g.h.t.
+ 0200 73002000 61007200 65002000 72006500 s. .a.r.e. .r.e.
+ 0210 73006500 72007600 65006400 2e000000 s.e.r.v.e.d.....
+ 0220 40000c00 01004f00 72006900 67006900 @.....O.r.i.g.i.
+ 0230 6e006100 6c004600 69006c00 65006e00 n.a.l.F.i.l.e.n.
+ 0240 61006d00 65000000 77006900 6e006400 a.m.e...w.i.n.d.
+ 0250 72006500 73002e00 65007800 65000000 r.e.s...e.x.e...
+ 0260 54001a00 01005000 72006f00 64007500 T.....P.r.o.d.u.
+ 0270 63007400 4e006100 6d006500 00000000 c.t.N.a.m.e.....
+ 0280 77006900 6e006400 6f007700 73002000 w.i.n.d.o.w.s. .
+ 0290 72006500 73006f00 75007200 63006500 r.e.s.o.u.r.c.e.
+ 02a0 20006300 6f006d00 70006900 6c006500 .c.o.m.p.i.l.e.
+ 02b0 72000000 34000800 01005000 72006f00 r...4.....P.r.o.
+ 02c0 64007500 63007400 56006500 72007300 d.u.c.t.V.e.r.s.
+ 02d0 69006f00 6e000000 31002e00 31002e00 i.o.n...1...1...
+ 02e0 30002e00 30000000 44000000 01005600 0...0...D.....V.
+ 02f0 61007200 46006900 6c006500 49006e00 a.r.F.i.l.e.I.n.
+ 0300 66006f00 00000000 24000400 00005400 f.o.....$.....T.
+ 0310 72006100 6e007300 6c006100 74006900 r.a.n.s.l.a.t.i.
+ 0320 6f006e00 00000000 0704e404 o.n.........
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/windres/windres.exp b/binutils-2.24/binutils/testsuite/binutils-all/windres/windres.exp
new file mode 100644
index 00000000..2ef73ffe
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/windres/windres.exp
@@ -0,0 +1,141 @@
+# Copyright 2001, 2003, 2004, 2006, 2007, 2009 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 3 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.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# Written by DJ Delorie <dj@redhat.com>
+
+if {![istarget "i*86-*-*"] && ![istarget "x86_64-*-mingw*"] } {
+ return
+}
+
+if {![info exists WINDRES]} then {
+ return
+}
+
+if {[which $WINDRES] == 0} then {
+ return
+}
+
+set wr "$WINDRES --include-dir $srcdir/$subdir"
+
+if [file exists "$srcdir/../../winsup/w32api/include"] {
+ set wr "$wr --include-dir $srcdir/../../winsup/w32api/include"
+} else {
+ send_log "\nWarning: Assuming windres can find the win32 headers\n\n"
+}
+
+set res_list [lsort [glob -nocomplain $srcdir/$subdir/*.rc]]
+
+proc oneline { file } {
+ while { 1 } {
+ if { [gets $file line] == -1 } {
+ return ""
+ }
+ if [regexp "^ \[0-9a-z\]\[0-9a-z\]* " $line] {
+ return $line
+ }
+ }
+}
+
+foreach res $res_list {
+ set sroot [file rootname $res]
+ set broot [file tail $sroot]
+ set done 0
+ set cpp_opts ""
+
+ set rc [open $res]
+ while { [gets $rc line] != -1 } {
+ if ![regexp "^(//|/\*|#)" $line] {
+ break
+ }
+ if [regexp "\[xp\]fail *(\[^ \]*)" $line junk sys] {
+ setup_xfail $sys
+ continue
+ }
+ if [regexp "cpparg *(\[^ \]*)" $line junk cppopt] {
+ set cpp_opts "--preprocessor-arg \"$cppopt\""
+ continue
+ }
+ }
+
+ verbose "$wr -J rc -O res $res tmpdir/$broot.res" 1
+ catch "exec $wr $cpp_opts -J rc -O res $res tmpdir/$broot.res" err
+
+ if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ if [string match "*windows.h: No such file*" $err] then {
+ unsupported "windres/$broot (parse)"
+ } else {
+ fail "windres/$broot (parse)"
+ }
+ continue
+ }
+ pass "windres/$broot (parse)"
+
+ set rc [open $res]
+ while { [gets $rc line] != -1 } {
+ if ![regexp "^(//|/\*|#)" $line] {
+ break
+ }
+ if [regexp "parse-only" $line] {
+ file delete "tmpdir/$broot.res"
+ set done 1
+ break
+ }
+ if [regexp "\[xc\]fail *(\[^ \]*)" $line junk sys] {
+ setup_xfail $sys
+ continue
+ }
+ }
+ if { $done != 0 } {
+ continue
+ }
+
+ verbose "$OBJDUMP -b binary -s tmpdir/$broot.res > tmpdir/$broot.dump" 1
+ catch "exec $OBJDUMP -b binary -s tmpdir/$broot.res > tmpdir/$broot.dump" err
+
+ if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "windres/$broot (compare)"
+ continue
+ }
+
+ set pat [open "$sroot.rsd"]
+ set out [open "tmpdir/$broot.dump"]
+ set patline "foo"
+
+ while { ![string match $patline ""] } {
+ set patline [oneline $pat]
+ set outline [oneline $out]
+
+ if ![string match $patline $outline] {
+ send_log "< $patline\n"
+ send_log "> $outline\n"
+ fail "windres/$broot (compare)"
+ set done 1
+ break
+ }
+ }
+ if { $done == 0 } {
+ pass "windres/$broot (compare)"
+ file delete "tmpdir/$broot.res"
+ file delete "tmpdir/$broot.dump"
+ }
+}
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1.s b/binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1.s
new file mode 100644
index 00000000..e0ffc82b
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1.s
@@ -0,0 +1,142 @@
+ .file "compressed-1.c"
+ .section .debug_abbrev,"",@progbits
+.Ldebug_abbrev0:
+ .section .debug_info,"",@progbits
+.Ldebug_info0:
+ .section .debug_line,"",@progbits
+.Ldebug_line0:
+ .text
+.Ltext0:
+ .cfi_sections .debug_frame
+ .p2align 4,,15
+.globl foo2
+ .type foo2, @function
+foo2:
+.LFB1:
+ .file 1 "compressed-1.c"
+ .loc 1 11 0
+ .cfi_startproc
+ .loc 1 12 0
+ rep
+ ret
+ .cfi_endproc
+.LFE1:
+ .size foo2, .-foo2
+ .p2align 4,,15
+.globl foo1
+ .type foo1, @function
+foo1:
+.LFB0:
+ .loc 1 5 0
+ .cfi_startproc
+ .loc 1 6 0
+ jmp bar
+ .cfi_endproc
+.LFE0:
+ .size foo1, .-foo1
+.Letext0:
+ .section .debug_info
+ .long 0x5e
+ .value 0x3
+ .long .Ldebug_abbrev0
+ .byte 0x8
+ .uleb128 0x1
+ .long .LASF2
+ .byte 0x1
+ .long .LASF3
+ .long .LASF4
+ .quad .Ltext0
+ .quad .Letext0
+ .long .Ldebug_line0
+ .uleb128 0x2
+ .byte 0x1
+ .long .LASF0
+ .byte 0x1
+ .byte 0xa
+ .quad .LFB1
+ .quad .LFE1
+ .byte 0x1
+ .byte 0x9c
+ .uleb128 0x2
+ .byte 0x1
+ .long .LASF1
+ .byte 0x1
+ .byte 0x4
+ .quad .LFB0
+ .quad .LFE0
+ .byte 0x1
+ .byte 0x9c
+ .byte 0x0
+ .section .debug_abbrev
+ .uleb128 0x1
+ .uleb128 0x11
+ .byte 0x1
+ .uleb128 0x25
+ .uleb128 0xe
+ .uleb128 0x13
+ .uleb128 0xb
+ .uleb128 0x3
+ .uleb128 0xe
+ .uleb128 0x1b
+ .uleb128 0xe
+ .uleb128 0x11
+ .uleb128 0x1
+ .uleb128 0x12
+ .uleb128 0x1
+ .uleb128 0x10
+ .uleb128 0x6
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x2
+ .uleb128 0x2e
+ .byte 0x0
+ .uleb128 0x3f
+ .uleb128 0xc
+ .uleb128 0x3
+ .uleb128 0xe
+ .uleb128 0x3a
+ .uleb128 0xb
+ .uleb128 0x3b
+ .uleb128 0xb
+ .uleb128 0x11
+ .uleb128 0x1
+ .uleb128 0x12
+ .uleb128 0x1
+ .uleb128 0x40
+ .uleb128 0xa
+ .byte 0x0
+ .byte 0x0
+ .byte 0x0
+ .section .debug_pubnames,"",@progbits
+ .long 0x20
+ .value 0x2
+ .long .Ldebug_info0
+ .long 0x62
+ .long 0x2d
+ .string "foo2"
+ .long 0x47
+ .string "foo1"
+ .long 0x0
+ .section .debug_aranges,"",@progbits
+ .long 0x2c
+ .value 0x2
+ .long .Ldebug_info0
+ .byte 0x8
+ .byte 0x0
+ .value 0x0
+ .value 0x0
+ .quad .Ltext0
+ .quad .Letext0-.Ltext0
+ .quad 0x0
+ .quad 0x0
+ .section .debug_str,"MS",@progbits,1
+.LASF2:
+ .string "GNU C 4.4.4"
+.LASF0:
+ .string "foo2"
+.LASF1:
+ .string "foo1"
+.LASF4:
+ .string "."
+.LASF3:
+ .string "compressed-1.c"
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1a.d b/binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1a.d
new file mode 100644
index 00000000..f1e4bbcd
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1a.d
@@ -0,0 +1,157 @@
+#PROG: objcopy
+#source: compressed-1.s
+#as: --64 --compress-debug-sections
+#objcopy:
+#readelf: -w
+#name: objcopy on compressed debug sections
+
+Contents of the .[z]?debug_abbrev section:
+
+ Number TAG \(0x0\)
+ 1 DW_TAG_compile_unit \[has children\]
+ DW_AT_producer DW_FORM_strp
+ DW_AT_language DW_FORM_data1
+ DW_AT_name DW_FORM_strp
+ DW_AT_comp_dir DW_FORM_strp
+ DW_AT_low_pc DW_FORM_addr
+ DW_AT_high_pc DW_FORM_addr
+ DW_AT_stmt_list DW_FORM_data4
+ DW_AT value: 0 DW_FORM value: 0
+ 2 DW_TAG_subprogram \[no children\]
+ DW_AT_external DW_FORM_flag
+ DW_AT_name DW_FORM_strp
+ DW_AT_decl_file DW_FORM_data1
+ DW_AT_decl_line DW_FORM_data1
+ DW_AT_low_pc DW_FORM_addr
+ DW_AT_high_pc DW_FORM_addr
+ DW_AT_frame_base DW_FORM_block1
+ DW_AT value: 0 DW_FORM value: 0
+
+Contents of the .[z]?debug_info section:
+
+ Compilation Unit @ offset 0x0:
+ Length: 0x5e \(32-bit\)
+ Version: 3
+ Abbrev Offset: 0x0
+ Pointer Size: 8
+ <0><b>: Abbrev Number: 1 \(DW_TAG_compile_unit\)
+ <c> DW_AT_producer : \(indirect string, offset: 0x0\): GNU C 4.4.4
+ <10> DW_AT_language : 1 \(ANSI C\)
+ <11> DW_AT_name : \(indirect string, offset: 0x18\): compressed-1.c
+ <15> DW_AT_comp_dir : \(indirect string, offset: 0x16\): .
+ <19> DW_AT_low_pc : 0x0
+ <21> DW_AT_high_pc : 0x15
+ <29> DW_AT_stmt_list : 0x0
+ <1><2d>: Abbrev Number: 2 \(DW_TAG_subprogram\)
+ <2e> DW_AT_external : 1
+ <2f> DW_AT_name : \(indirect string, offset: 0xc\): foo2
+ <33> DW_AT_decl_file : 1
+ <34> DW_AT_decl_line : 10
+ <35> DW_AT_low_pc : 0x0
+ <3d> DW_AT_high_pc : 0x2
+ <45> DW_AT_frame_base : 1 byte block: 9c \(DW_OP_call_frame_cfa\)
+ <1><47>: Abbrev Number: 2 \(DW_TAG_subprogram\)
+ <48> DW_AT_external : 1
+ <49> DW_AT_name : \(indirect string, offset: 0x11\): foo1
+ <4d> DW_AT_decl_file : 1
+ <4e> DW_AT_decl_line : 4
+ <4f> DW_AT_low_pc : 0x10
+ <57> DW_AT_high_pc : 0x15
+ <5f> DW_AT_frame_base : 1 byte block: 9c \(DW_OP_call_frame_cfa\)
+ <1><61>: Abbrev Number: 0
+
+Raw dump of debug contents of section .[z]?debug_line:
+
+ Offset: 0x0
+ Length: 67
+ DWARF Version: 2
+ Prologue Length: 37
+ Minimum Instruction Length: 1
+ Initial value of 'is_stmt': 1
+ Line Base: -5
+ Line Range: 14
+ Opcode Base: 13
+
+ Opcodes:
+ Opcode 1 has 0 args
+ Opcode 2 has 1 args
+ Opcode 3 has 1 args
+ Opcode 4 has 1 args
+ Opcode 5 has 1 args
+ Opcode 6 has 0 args
+ Opcode 7 has 0 args
+ Opcode 8 has 0 args
+ Opcode 9 has 1 args
+ Opcode 10 has 0 args
+ Opcode 11 has 0 args
+ Opcode 12 has 1 args
+
+ The Directory Table is empty.
+
+ The File Name Table \(offset 0x.*\):
+ Entry Dir Time Size Name
+ 1 0 0 0 compressed-1.c
+
+ Line Number Statements:
+ \[0x.*\] Extended opcode 2: set Address to 0x0
+ \[0x.*\] Advance Line by 10 to 11
+ \[0x.*\] Copy
+ \[0x.*\] Special opcode 6: advance Address by 0 to 0x0 and Line by 1 to 12
+ \[0x.*\] Advance Line by -7 to 5
+ \[0x.*\] Special opcode 229: advance Address by 16 to 0x10 and Line by 0 to 5
+ \[0x.*\] Special opcode 6: advance Address by 0 to 0x10 and Line by 1 to 6
+ \[0x.*\] Advance PC by 5 to 0x15
+ \[0x.*\] Extended opcode 1: End of Sequence
+
+
+Contents of the .[z]?debug_pubnames section:
+
+ Length: 32
+ Version: 2
+ Offset into .[z]?debug_info section: 0x0
+ Size of area in .[z]?debug_info section: 98
+
+ Offset Name
+ 2d foo2
+ 47 foo1
+
+Contents of the .[z]?debug_aranges section:
+
+ Length: 44
+ Version: 2
+ Offset into .[z]?debug_info: 0x0
+ Pointer Size: 8
+ Segment Size: 0
+
+ Address Length
+ 0000000000000000 0000000000000015
+ 0000000000000000 0000000000000000
+
+Contents of the .[z]?debug_str section:
+
+ 0x00000000 474e5520 4320342e 342e3400 666f6f32 GNU C 4.4.4.foo2
+ 0x00000010 00666f6f 31002e00 636f6d70 72657373 .foo1...compress
+ 0x00000020 65642d31 2e6300 ed-1.c.
+
+Contents of the .[z]?debug_frame section:
+
+00000000 0+014 ffffffff CIE
+ Version: 1
+ Augmentation: ""
+ Code alignment factor: 1
+ Data alignment factor: -8
+ Return address column: 16
+
+ DW_CFA_def_cfa: r7 \(rsp\) ofs 8
+ DW_CFA_offset: r16 \(rip\) at cfa-8
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+
+00000018 0+014 00000000 FDE cie=00000000 pc=0+0000..0+0002
+
+00000030 0+014 00000000 FDE cie=00000000 pc=0+0010..0+0015
+
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1b.d b/binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1b.d
new file mode 100644
index 00000000..ed5a45ed
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1b.d
@@ -0,0 +1,18 @@
+#PROG: strip
+#source: compressed-1.s
+#as: --64
+#strip:
+#readelf: -S --wide
+#name: strip on uncompressed debug sections
+
+There are 5 section headers, starting at offset 0x78:
+
+Section Headers:
+ \[Nr\] Name Type Address Off Size ES Flg Lk Inf Al
+ \[ 0\] NULL 0000000000000000 000000 000000 00 0 0 0
+ \[ 1\] .text PROGBITS 0000000000000000 000040 000015 00 AX 0 0 16
+ \[ 2\] .data PROGBITS 0000000000000000 000055 000000 00 WA 0 0 1
+ \[ 3\] .bss NOBITS 0000000000000000 000055 000000 00 WA 0 0 1
+ \[ 4\] .shstrtab STRTAB 0000000000000000 000055 00001c 00 0 0 1
+Key to Flags:
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1c.d b/binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1c.d
new file mode 100644
index 00000000..a0308c89
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/x86-64/compressed-1c.d
@@ -0,0 +1,18 @@
+#PROG: strip
+#source: compressed-1.s
+#as: --64 --compress-debug-sections
+#strip:
+#readelf: -S --wide
+#name: strip on compressed debug sections
+
+There are 5 section headers, starting at offset 0x78:
+
+Section Headers:
+ \[Nr\] Name Type Address Off Size ES Flg Lk Inf Al
+ \[ 0\] NULL 0000000000000000 000000 000000 00 0 0 0
+ \[ 1\] .text PROGBITS 0000000000000000 000040 000015 00 AX 0 0 16
+ \[ 2\] .data PROGBITS 0000000000000000 000055 000000 00 WA 0 0 1
+ \[ 3\] .bss NOBITS 0000000000000000 000055 000000 00 WA 0 0 1
+ \[ 4\] .shstrtab STRTAB 0000000000000000 000055 00001c 00 0 0 1
+Key to Flags:
+#...
diff --git a/binutils-2.24/binutils/testsuite/binutils-all/x86-64/x86-64.exp b/binutils-2.24/binutils/testsuite/binutils-all/x86-64/x86-64.exp
new file mode 100644
index 00000000..ccabc635
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/binutils-all/x86-64/x86-64.exp
@@ -0,0 +1,34 @@
+# Copyright 2010, 2012
+# 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 3 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.
+
+if {!([istarget "x86_64-*-linux*"]
+ || [istarget "x86_64-*-nacl*"])
+ || [is_remote host]} {
+ return
+}
+
+global tempfile
+global copyfile
+set tempfile tmpdir/x86-64temp.o
+set copyfile tmpdir/x86-64copy
+
+set test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
+foreach t $test_list {
+ # We need to strip the ".d", but can leave the dirname.
+ verbose [file rootname $t]
+ run_dump_test [file rootname $t]
+}
diff --git a/binutils-2.24/binutils/testsuite/config/default.exp b/binutils-2.24/binutils/testsuite/config/default.exp
new file mode 100644
index 00000000..c5595a18
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/config/default.exp
@@ -0,0 +1,135 @@
+# Copyright 1993, 1994, 1995, 1997, 1999, 2001, 2002, 2004, 2005, 2007, 2009
+# 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 3 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.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# This file was written by Rob Savoye. (rob@cygnus.com)
+
+load_lib utils-lib.exp
+
+if ![info exists NM] then {
+ set NM [findfile $base_dir/nm-new $base_dir/nm-new [transform nm]]
+}
+if ![info exists NMFLAGS] then {
+ set NMFLAGS ""
+}
+if ![info exists SIZE] then {
+ set SIZE [findfile $base_dir/size]
+}
+if ![info exists SIZEFLAGS] then {
+ set SIZEFLAGS ""
+}
+if ![info exists OBJDUMP] then {
+ set OBJDUMP [findfile $base_dir/objdump]
+}
+if ![info exists OBJDUMPFLAGS] then {
+ set OBJDUMPFLAGS ""
+}
+if ![info exists OBJCOPY] then {
+ set OBJCOPY [findfile $base_dir/objcopy]
+}
+if ![info exists OBJCOPYFLAGS] then {
+ set OBJCOPYFLAGS ""
+}
+if ![info exists AR] then {
+ set AR [findfile $base_dir/ar]
+}
+if ![info exists STRIP] then {
+ set STRIP [findfile $base_dir/strip-new $base_dir/strip-new [transform strip]]
+}
+if ![info exists STRIPFLAGS] then {
+ set STRIPFLAGS ""
+}
+if ![info exists READELF] then {
+ set READELF [findfile $base_dir/readelf]
+}
+if ![info exists READELFFLAGS] then {
+ set READELFFLAGS ""
+}
+if ![info exists ELFEDIT] then {
+ set ELFEDIT [findfile $base_dir/elfedit]
+}
+if ![info exists ELFEDITFLAGS] then {
+ set ELFEDITFLAGS ""
+}
+if ![info exists WINDRES] then {
+ set WINDRES [findfile $base_dir/windres]
+}
+if ![info exists DLLTOOL] then {
+ set DLLTOOL [findfile $base_dir/dlltool]
+}
+
+if ![file isdirectory tmpdir] {catch "exec mkdir tmpdir" status}
+
+# Make a copy from tmpdir/gas/as and tmpdir/gas/ld to the assembler
+# and linker in the build tree, so that we can use a -B option to gcc
+# to force it to use the newly built assembler/linker.
+if {![file isdirectory tmpdir/gas]} {catch "exec mkdir tmpdir/gas" status}
+
+proc link_or_copy { src dst } {
+ if ![catch "exec ln -sf ../../../$src tmpdir/gas/$dst" status] then {return 0}
+ if ![catch "exec ln -f ../$src tmpdir/gas/$dst" status] then {return 0}
+ catch "exec cp -fpu ../$src tmpdir/gas/$dst" status
+}
+
+if {[file isfile gas/as-new[exe_ext]]} then {
+ link_or_copy gas/as-new[exe_ext] as[exe_ext]
+} else {
+ # For non-Windows hosts there may be an executable
+ # without a .exe suffix, so try copying that instead.
+ link_or_copy gas/as-new as[exe_ext]
+}
+# This may not be needed any more...
+if {[file isfile ld/ld-new[exe_ext]]} then {
+ link_or_copy ld/ld-new[exe_ext] ld[exe_ext]
+} else {
+ link_or_copy ld/ld-new ld[exe_ext]
+}
+if {[file isfile tmpdir/gas/as[exe_ext]]} then {
+ set gcc_gas_flag "-B[pwd]/tmpdir/gas/"
+ set dlltool_gas_flag "-S [pwd]/tmpdir/gas/as[exe_ext]"
+} else {
+ # Testing an installed toolchain.
+ set gcc_gas_flag ""
+ set dlltool_gas_flag ""
+}
+
+#
+# binutils_run
+# run a program, returning the output
+# sets binutils_run_failed if the program does not exist
+#
+proc binutils_run { prog progargs } {
+ default_binutils_run $prog $progargs
+}
+
+#
+# binutils_assemble
+# assemble a file
+#
+proc binutils_assemble { source object } {
+ default_binutils_assemble_flags $source $object ""
+}
+
+#
+# binutils_assemble_flags
+# assemble a file
+#
+proc binutils_assemble_flags { source object asflags } {
+ default_binutils_assemble_flags $source $object $asflags
+}
diff --git a/binutils-2.24/binutils/testsuite/config/hppa.sed b/binutils-2.24/binutils/testsuite/config/hppa.sed
new file mode 100644
index 00000000..5b1b808f
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/config/hppa.sed
@@ -0,0 +1,4 @@
+s/# Old OSF sed blows up if you have a sed command starting with "#"//
+s/# Avoid it by putting the comments within real sed commands.//
+s/# Fix the definition of common_symbol to be correct for the PA assemblers.//
+s/ \.comm common_symbol,4/common_symbol .comm 4/
diff --git a/binutils-2.24/binutils/testsuite/lib/binutils-common.exp b/binutils-2.24/binutils/testsuite/lib/binutils-common.exp
new file mode 100644
index 00000000..af0040ec
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/lib/binutils-common.exp
@@ -0,0 +1,342 @@
+# Copyright 1993, 1994, 1995, 1996, 1997, 2000, 2001, 2003, 2004, 2006, 2007,
+# 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# 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 3 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.
+
+# True if the object format is known to be ELF.
+#
+proc is_elf_format {} {
+ if { ![istarget *-*-sysv4*]
+ && ![istarget *-*-unixware*]
+ && ![istarget *-*-elf*]
+ && ![istarget *-*-eabi*]
+ && ![istarget *-*-rtems*]
+ && ![istarget hppa*64*-*-hpux*]
+ && ![istarget ia64-*-hpux*]
+ && ![istarget *-*-linux*]
+ && ![istarget *-*-gnu*]
+ && ![istarget *-*-nacl*]
+ && ![istarget frv-*-uclinux*]
+ && ![istarget bfin-*-uclinux]
+ && ![istarget sh*-*-uclinux*]
+ && ![istarget tic6x*-*-uclinux*]
+ && ![istarget *-*-irix5*]
+ && ![istarget *-*-irix6*]
+ && ![istarget *-*-netbsd*]
+ && ![istarget *-*-openbsd*]
+ && ![istarget *-*-solaris2*] } {
+ return 0
+ }
+
+ if { [istarget *-*-linux*aout*]
+ || [istarget *-*-linux*ecoff*]
+ || [istarget *-*-linux*oldld*]
+ || [istarget h8500-*-rtems*]
+ || [istarget i960-*-rtems*]
+ || [istarget *-*-rtemscoff*] } {
+ return 0
+ }
+
+ if { ![istarget *-*-netbsdelf*]
+ && ([istarget *-*-netbsd*aout*]
+ || [istarget *-*-netbsdpe*]
+ || [istarget arm*-*-netbsd*]
+ || [istarget sparc-*-netbsd*]
+ || [istarget i*86-*-netbsd*]
+ || [istarget m68*-*-netbsd*]
+ || [istarget vax-*-netbsd*]
+ || [istarget ns32k-*-netbsd*]) } {
+ return 0
+ }
+
+ if { [istarget arm-*-openbsd*]
+ || [istarget i386-*-openbsd\[0-2\].*]
+ || [istarget i386-*-openbsd3.\[0-2\]]
+ || [istarget m68*-*-openbsd*]
+ || [istarget ns32k-*-openbsd*]
+ || [istarget sparc-*-openbsd\[0-2\].*]
+ || [istarget sparc-*-openbsd3.\[0-1\]]
+ || [istarget vax-*-openbsd*] } {
+ return 0
+ }
+
+ return 1
+}
+
+# True if the object format is known to be a.out.
+#
+proc is_aout_format {} {
+ if { [istarget *-*-netbsdelf]
+ || [istarget sparc64-*-netbsd*]
+ || [istarget sparc64-*-openbsd*] } {
+ return 0
+ }
+ if { [istarget *-*-*\[ab\]out*]
+ || [istarget *-*-linux*oldld*]
+ || [istarget *-*-bsd*]
+ || [istarget *-*-msdos*]
+ || [istarget arm-*-netbsd*]
+ || [istarget arm-*-openbsd*]
+ || [istarget arm-*-riscix*]
+ || [istarget i?86-*-freebsd\[12\]*]
+ || [istarget i?86-*-netbsd*]
+ || [istarget i?86-*-openbsd\[0-2\]*]
+ || [istarget i?86-*-openbsd3.\[0-2\]*]
+ || [istarget i?86-*-vsta]
+ || [istarget i?86-*-mach*]
+ || [istarget m68*-*-netbsd*]
+ || [istarget m68*-*-openbsd*]
+ || [istarget ns32k-*-*]
+ || [istarget pdp11-*-*]
+ || [istarget sparc*-*-sunos4*]
+ || [istarget sparc*-*-netbsd*]
+ || [istarget sparc*-*-openbsd\[0-2\]*]
+ || [istarget sparc*-*-openbsd3.\[0-1\]*]
+ || [istarget sparc*-fujitsu-none]
+ || [istarget vax-dec-ultrix*]
+ || [istarget vax-*-netbsd] } {
+ return 1
+ }
+ return 0
+}
+
+# True if the object format is known to be PE COFF.
+#
+proc is_pecoff_format {} {
+ if { ![istarget *-*-mingw*]
+ && ![istarget *-*-cygwin*]
+ && ![istarget *-*-cegcc*]
+ && ![istarget *-*-pe*] } {
+ return 0
+ }
+
+ return 1
+}
+
+# True if the object format is known to be 64-bit ELF.
+#
+proc is_elf64 { binary_file } {
+ global READELF
+ global READELFFLAGS
+
+ set readelf_size ""
+ catch "exec $READELF $READELFFLAGS -h $binary_file > readelf.out" got
+
+ if ![string match "" $got] then {
+ return 0
+ }
+
+ if { ![regexp "\n\[ \]*Class:\[ \]*ELF(\[0-9\]+)\n" \
+ [file_contents readelf.out] nil readelf_size] } {
+ return 0
+ }
+
+ if { $readelf_size == "64" } {
+ return 1
+ }
+
+ return 0
+}
+
+# True if the build supports zlib compression.
+proc is_zlib_supported {} {
+
+ # This replicates the AS selection logic of dejagnu's target_assemble.
+ global AS_FOR_TARGET
+ if [info exists AS_FOR_TARGET] {
+ set AS $AS_FOR_TARGET
+ } else {
+ if {![board_info target exists assembler]} {
+ set AS [find_gas]
+ } else {
+ set AS [board_info target assembler]
+ }
+ }
+
+ set as_output [remote_exec host "$AS --help"]
+
+ set have_zlib 0
+ if {[string first "--compress-debug-sections" $as_output] >= 0} {
+ set have_zlib 1
+ }
+
+ return $have_zlib
+}
+
+# Compare two files line-by-line. FILE_1 is the actual output and FILE_2
+# is the expected output. Ignore blank lines in either file.
+#
+# FILE_2 is a series of regexps, comments and # directives. The directives
+# are:
+#
+# #pass
+# Treat the test as a PASS if everything up till this point has
+# matched. Ignore any remaining lines in either FILE_1 or FILE_2.
+#
+# #failif
+# Reverse the sense of the test: expect differences to exist.
+#
+# #...
+# REGEXP
+# Skip all lines in FILE_1 until the first that matches REGEXP.
+#
+# Other # lines are comments. Regexp lines starting with the `!' character
+# specify inverse matching (use `\!' for literal matching against a leading
+# `!'). Skip empty lines in both files.
+#
+# The first optional argument is a list of regexp substitutions of the form:
+#
+# EXP1 SUBSPEC1 EXP2 SUBSPEC2 ...
+#
+# This tells the function to apply each regexp substitution EXPi->SUBSPECi
+# in order to every line of FILE_2.
+#
+# Return nonzero if differences exist.
+proc regexp_diff { file_1 file_2 args } {
+ set eof -1
+ set end_1 0
+ set end_2 0
+ set differences 0
+ set diff_pass 0
+ set fail_if_match 0
+ set ref_subst ""
+ if { [llength $args] > 0 } {
+ set ref_subst [lindex $args 0]
+ }
+ if { [llength $args] > 1 } {
+ perror "Too many arguments to regexp_diff"
+ return 1
+ }
+
+ if [file exists $file_1] then {
+ set file_a [open $file_1 r]
+ } else {
+ perror "$file_1 doesn't exist"
+ return 1
+ }
+
+ if [file exists $file_2] then {
+ set file_b [open $file_2 r]
+ } else {
+ perror "$file_2 doesn't exist"
+ close $file_a
+ return 1
+ }
+
+ verbose " Regexp-diff'ing: $file_1 $file_2" 2
+
+ while { 1 } {
+ set line_a ""
+ set line_b ""
+ while { [string length $line_a] == 0 } {
+ # Ignore blank line in FILE_1.
+ if { [gets $file_a line_a] == $eof } {
+ set end_1 1
+ break
+ }
+ }
+ while { [string length $line_b] == 0 || [string match "#*" $line_b] } {
+ if { [string match "#pass" $line_b] } {
+ set end_2 1
+ set diff_pass 1
+ break
+ } elseif { [string match "#failif" $line_b] } {
+ send_log "fail if no difference\n"
+ verbose "fail if no difference" 3
+ set fail_if_match 1
+ } elseif { [string match "#..." $line_b] } {
+ if { [gets $file_b line_b] == $eof } {
+ set end_2 1
+ set diff_pass 1
+ break
+ }
+ set negated [expr { [string index $line_b 0] == "!" }]
+ set line_bx [string range $line_b $negated end]
+ set n [expr { $negated ? "! " : "" }]
+ # Substitute on the reference.
+ foreach {name value} $ref_subst {
+ regsub -- $name $line_bx $value line_bx
+ }
+ verbose "looking for $n\"^$line_bx$\"" 3
+ while { [expr [regexp "^$line_bx$" "$line_a"] == $negated] } {
+ verbose "skipping \"$line_a\"" 3
+ if { [gets $file_a line_a] == $eof } {
+ set end_1 1
+ break
+ }
+ }
+ break
+ }
+ if { [gets $file_b line_b] == $eof } {
+ set end_2 1
+ break
+ }
+ }
+
+ if { $diff_pass } {
+ break
+ } elseif { $end_1 && $end_2 } {
+ break
+ } elseif { $end_1 } {
+ send_log "extra regexps in $file_2 starting with \"^$line_b$\"\nEOF from $file_1\n"
+ verbose "extra regexps in $file_2 starting with \"^$line_b$\"\nEOF from $file_1" 3
+ set differences 1
+ break
+ } elseif { $end_2 } {
+ send_log "extra lines in $file_1 starting with \"^$line_a$\"\nEOF from $file_2\n"
+ verbose "extra lines in $file_1 starting with \"^$line_a$\"\nEOF from $file_2\n" 3
+ set differences 1
+ break
+ } else {
+ set negated [expr { [string index $line_b 0] == "!" }]
+ set line_bx [string range $line_b $negated end]
+ set n [expr { $negated ? "! " : "" }]
+ set s [expr { $negated ? " " : "" }]
+ # Substitute on the reference.
+ foreach {name value} $ref_subst {
+ regsub -- $name $line_bx $value line_bx
+ }
+ verbose "regexp $n\"^$line_bx$\"\nline \"$line_a\"" 3
+ if { [expr [regexp "^$line_bx$" "$line_a"] == $negated] } {
+ send_log "regexp_diff match failure\n"
+ send_log "regexp $n\"^$line_bx$\"\nline $s\"$line_a\"\n"
+ verbose "regexp_diff match failure\n" 3
+ set differences 1
+ }
+ }
+ }
+
+ if { $differences == 0 && !$diff_pass && [eof $file_a] != [eof $file_b] } {
+ send_log "$file_1 and $file_2 are different lengths\n"
+ verbose "$file_1 and $file_2 are different lengths" 3
+ set differences 1
+ }
+
+ if { $fail_if_match } {
+ if { $differences == 0 } {
+ set differences 1
+ } else {
+ set differences 0
+ }
+ }
+
+ close $file_a
+ close $file_b
+
+ return $differences
+}
diff --git a/binutils-2.24/binutils/testsuite/lib/utils-lib.exp b/binutils-2.24/binutils/testsuite/lib/utils-lib.exp
new file mode 100644
index 00000000..3fe6c14b
--- /dev/null
+++ b/binutils-2.24/binutils/testsuite/lib/utils-lib.exp
@@ -0,0 +1,558 @@
+# Copyright 1993, 1994, 1995, 1996, 1997, 2000, 2001, 2003, 2004, 2006, 2007,
+# 2009, 2010, 2012 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 3 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.
+
+# Please email any bugs, comments, and/or additions to this file to:
+# bug-dejagnu@prep.ai.mit.edu
+
+# This file was written by Rob Savoye <rob@cygnus.com>
+# and extended by Ian Lance Taylor <ian@cygnus.com>
+
+proc load_common_lib { name } {
+ load_lib $name
+}
+
+load_common_lib binutils-common.exp
+
+proc binutil_version { prog } {
+ if ![is_remote host] {
+ set path [which $prog]
+ if {$path == 0} then {
+ perror "$prog can't be run, file not found."
+ return ""
+ }
+ } else {
+ set path $prog
+ }
+ set state [remote_exec host $prog --version]
+ set tmp "[lindex $state 1]\n"
+ # Should find a way to discard constant parts, keep whatever's
+ # left, so the version string could be almost anything at all...
+ regexp "\[^\n\]* (cygnus-|)(\[-0-9.a-zA-Z-\]+)\[\r\n\].*" "$tmp" version cyg number
+ if ![info exists number] then {
+ return "$path (no version number)\n"
+ }
+ return "$path $number\n"
+}
+
+#
+# default_binutils_run
+# run a program, returning the output
+# sets binutils_run_failed if the program does not exist
+#
+proc default_binutils_run { prog progargs } {
+ global binutils_run_failed
+ global host_triplet
+
+ set binutils_run_failed 0
+
+ if ![is_remote host] {
+ if {[which $prog] == 0} then {
+ perror "$prog does not exist"
+ set binutils_run_failed 1
+ return ""
+ }
+ }
+
+ send_log "$prog $progargs\n"
+ verbose "$prog $progargs"
+
+ # Gotta quote dollar-signs because they get mangled by the
+ # shell otherwise.
+ regsub -all "\\$" "$progargs" "\\$" progargs
+
+ set state [remote_exec host $prog $progargs]
+ set exec_output [prune_warnings [lindex $state 1]]
+ if {![string match "" $exec_output]} then {
+ send_log "$exec_output\n"
+ verbose "$exec_output"
+ } else {
+ if { [lindex $state 0] != 0 } {
+ set exec_output "$prog exited with status [lindex $state 0]"
+ send_log "$exec_output\n"
+ verbose "$exec_output"
+ }
+ }
+ return $exec_output
+}
+
+#
+# default_binutils_assemble_flags
+# assemble a file
+#
+proc default_binutils_assemble_flags { source object asflags } {
+ global srcdir
+ global host_triplet
+
+ # The HPPA assembler syntax is a little different than most, to make
+ # the test source file assemble we need to run it through sed.
+ #
+ # This is a hack in that it won't scale well if other targets need
+ # similar transformations to assemble. We'll generalize the hack
+ # if/when other targets need similar handling.
+ if { [istarget "hppa*-*-*"] && ![istarget "*-*-linux*" ] } then {
+ set sed_file $srcdir/config/hppa.sed
+ send_log "sed -f $sed_file < $source > asm.s\n"
+ verbose "sed -f $sed_file < $source > asm.s"
+ catch "exec sed -f $sed_file < $source > asm.s"
+ set source asm.s
+ }
+
+ set exec_output [target_assemble $source $object $asflags]
+ set exec_output [prune_warnings $exec_output]
+
+ if [string match "" $exec_output] {
+ return 1
+ } else {
+ send_log "$exec_output\n"
+ verbose "$exec_output"
+ perror "$source: assembly failed"
+ return 0
+ }
+}
+
+#
+# exe_ext
+# Returns target executable extension, if any.
+#
+proc exe_ext {} {
+ if { [istarget *-*-mingw*] || [istarget *-*-cygwin*] } {
+ return ".exe"
+ } else {
+ return ""
+ }
+}
+
+# Copied and modified from gas.
+
+# run_dump_test FILE (optional:) EXTRA_OPTIONS
+#
+# Assemble a .s file, then run some utility on it and check the output.
+#
+# There should be an assembly language file named FILE.s in the test
+# suite directory, and a pattern file called FILE.d. `run_dump_test'
+# will assemble FILE.s, run some tool like `objdump', `objcopy', or
+# `nm' on the .o file to produce textual output, and then analyze that
+# with regexps. The FILE.d file specifies what program to run, and
+# what to expect in its output.
+#
+# The FILE.d file begins with zero or more option lines, which specify
+# flags to pass to the assembler, the program to run to dump the
+# assembler's output, and the options it wants. The option lines have
+# the syntax:
+#
+# # OPTION: VALUE
+#
+# OPTION is the name of some option, like "name" or "objdump", and
+# VALUE is OPTION's value. The valid options are described below.
+# Whitespace is ignored everywhere, except within VALUE. The option
+# list ends with the first line that doesn't match the above syntax.
+# However, a line within the options that begins with a #, but doesn't
+# have a recognizable option name followed by a colon, is considered a
+# comment and entirely ignored.
+#
+# The optional EXTRA_OPTIONS argument to `run_dump_test' is a list of
+# two-element lists. The first element of each is an option name, and
+# the second additional arguments to be added on to the end of the
+# option list as given in FILE.d. (If omitted, no additional options
+# are added.)
+#
+# The interesting options are:
+#
+# name: TEST-NAME
+# The name of this test, passed to DejaGNU's `pass' and `fail'
+# commands. If omitted, this defaults to FILE, the root of the
+# .s and .d files' names.
+#
+# as: FLAGS
+# When assembling FILE.s, pass FLAGS to the assembler.
+#
+# PROG: PROGRAM-NAME
+# The name of the program to run to analyze the .o file produced
+# by the assembler. This can be omitted; run_dump_test will guess
+# which program to run by seeing which of the flags options below
+# is present.
+#
+# objdump: FLAGS
+# nm: FLAGS
+# objcopy: FLAGS
+# Use the specified program to analyze the .o file, and pass it
+# FLAGS, in addition to the .o file name. Note that they are run
+# with LC_ALL=C in the environment to give consistent sorting
+# of symbols.
+#
+# source: SOURCE
+# Assemble the file SOURCE.s. If omitted, this defaults to FILE.s.
+# This is useful if several .d files want to share a .s file.
+#
+# target: GLOBS...
+# Run this test only on a specified list of targets. More precisely,
+# each glob in the space-separated list is passed to "istarget"; if
+# it evaluates true for any of them, the test will be run, otherwise
+# it will be marked unsupported.
+#
+# not-target: GLOBS...
+# Do not run this test on a specified list of targets. Again,
+# the each glob in the space-separated list is passed to
+# "istarget", and the test is run if it evaluates *false* for
+# *all* of them. Otherwise it will be marked unsupported.
+#
+# skip: GLOBS...
+# not-skip: GLOBS...
+# These are exactly the same as "not-target" and "target",
+# respectively, except that they do nothing at all if the check
+# fails. They should only be used in groups, to construct a single
+# test which is run on all targets but with variant options or
+# expected output on some targets. (For example, see
+# gas/arm/inst.d and gas/arm/wince_inst.d.)
+#
+# error: REGEX
+# An error with message matching REGEX must be emitted for the test
+# to pass. The PROG, objdump, nm and objcopy options have no
+# meaning and need not supplied if this is present.
+#
+# warning: REGEX
+# Expect a gas warning matching REGEX. It is an error to issue
+# both "error" and "warning".
+#
+# stderr: FILE
+# FILE contains regexp lines to be matched against the diagnostic
+# output of the assembler. This does not preclude the use of
+# PROG, nm, objdump, or objcopy.
+#
+# error-output: FILE
+# Means the same as 'stderr', but also indicates that the assembler
+# is expected to exit unsuccessfully (therefore PROG, objdump, nm,
+# and objcopy have no meaning and should not be supplied).
+#
+# Each option may occur at most once.
+#
+# After the option lines come regexp lines. `run_dump_test' calls
+# `regexp_diff' to compare the output of the dumping tool against the
+# regexps in FILE.d. `regexp_diff' is defined in binutils-common.exp;
+# see further comments there.
+
+proc run_dump_test { name {extra_options {}} } {
+ global subdir srcdir
+ global OBJDUMP NM OBJCOPY READELF STRIP
+ global OBJDUMPFLAGS NMFLAGS OBJCOPYFLAGS READELFFLAGS STRIPFLAGS
+ global ELFEDIT ELFEDITFLAGS
+ global host_triplet
+ global env
+ global copyfile
+ global tempfile
+
+ if [string match "*/*" $name] {
+ set file $name
+ set name [file tail $name]
+ } else {
+ set file "$srcdir/$subdir/$name"
+ }
+ set opt_array [slurp_options "${file}.d"]
+ if { $opt_array == -1 } {
+ perror "error reading options from $file.d"
+ unresolved $subdir/$name
+ return
+ }
+ set opts(addr2line) {}
+ set opts(ar) {}
+ set opts(as) {}
+ set opts(nm) {}
+ set opts(objcopy) {}
+ set opts(objdump) {}
+ set opts(strip) {}
+ set opts(ranlib) {}
+ set opts(readelf) {}
+ set opts(size) {}
+ set opts(strings) {}
+ set opts(name) {}
+ set opts(elfedit) {}
+ set opts(PROG) {}
+ set opts(DUMPPROG) {}
+ set opts(source) {}
+ set opts(target) {}
+ set opts(not-target) {}
+ set opts(skip) {}
+ set opts(not-skip) {}
+
+ foreach i $opt_array {
+ set opt_name [lindex $i 0]
+ set opt_val [lindex $i 1]
+ if ![info exists opts($opt_name)] {
+ perror "unknown option $opt_name in file $file.d"
+ unresolved $subdir/$name
+ return
+ }
+
+ # Permit the option to use $srcdir to refer to the source
+ # directory.
+ regsub -all "\\\$srcdir" "$opt_val" "$srcdir/$subdir" opt_val
+
+ if [string length $opts($opt_name)] {
+ perror "option $opt_name multiply set in $file.d"
+ unresolved $subdir/$name
+ return
+ }
+ set opts($opt_name) $opt_val
+ }
+
+ foreach i $extra_options {
+ set opt_name [lindex $i 0]
+ set opt_val [lindex $i 1]
+ if ![info exists opts($opt_name)] {
+ perror "unknown option $opt_name given in extra_opts"
+ unresolved $subdir/$name
+ return
+ }
+
+ # Permit the option to use $srcdir to refer to the source
+ # directory.
+ regsub -all "\\\$srcdir" "$opt_val" "$srcdir/$subdir" opt_val
+
+ # add extra option to end of existing option, adding space
+ # if necessary.
+ if [string length $opts($opt_name)] {
+ append opts($opt_name) " "
+ }
+ append opts($opt_name) $opt_val
+ }
+
+ if { $opts(name) == "" } {
+ set testname "$subdir/$name"
+ } else {
+ set testname $opts(name)
+ }
+ verbose "Testing $testname"
+
+ if {$opts(PROG) == ""} {
+ perror "program isn't set in $file.d"
+ unresolved $testname
+ return
+ }
+
+ set destopt ""
+ switch -- $opts(PROG) {
+ ar { set program ar }
+ objcopy { set program objcopy }
+ ranlib { set program ranlib }
+ strip {
+ set program strip
+ set destopt "-o"
+ }
+ strings { set program strings }
+ elfedit { set program elfedit }
+ nm { set program nm }
+ default {
+ perror "unrecognized program option $opts(PROG) in $file.d"
+ unresolved $testname
+ return }
+ }
+
+ set dumpprogram ""
+ if { $opts(DUMPPROG) != "" } {
+ switch -- $opts(DUMPPROG) {
+ addr2line { set dumpprogram addr2line }
+ nm { set dumpprogram nm }
+ objdump { set dumpprogram objdump }
+ readelf { set dumpprogram readelf }
+ size { set dumpprogram size }
+ default {
+ perror "unrecognized dump program option $opts(DUMPPROG) in $file.d"
+ unresolved $testname
+ return }
+ }
+ } else {
+ # Guess which program to run, by seeing which option was specified.
+ foreach p {objdump nm readelf} {
+ if {$opts($p) != ""} {
+ if {$dumpprogram != ""} {
+ perror "ambiguous dump program in $file.d"
+ unresolved $testname
+ return
+ } else {
+ set dumpprogram $p
+ }
+ }
+ }
+ }
+
+ # Handle skipping the test on specified targets.
+ # You can have both skip/not-skip and target/not-target, but you can't
+ # have both skip and not-skip, or target and not-target, in the same file.
+ if { $opts(skip) != "" } then {
+ if { $opts(not-skip) != "" } then {
+ perror "$testname: mixing skip and not-skip directives is invalid"
+ unresolved $testname
+ return
+ }
+ foreach glob $opts(skip) {
+ if {[istarget $glob]} { return }
+ }
+ }
+ if { $opts(not-skip) != "" } then {
+ set skip 1
+ foreach glob $opts(not-skip) {
+ if {[istarget $glob]} {
+ set skip 0
+ break
+ }
+ }
+ if {$skip} { return }
+ }
+ if { $opts(target) != "" } then {
+ if { $opts(not-target) != "" } then {
+ perror "$testname: mixing target and not-target directives is invalid"
+ unresolved $testname
+ return
+ }
+ set skip 1
+ foreach glob $opts(target) {
+ if {[istarget $glob]} {
+ set skip 0
+ break
+ }
+ }
+ if {$skip} {
+ unsupported $testname
+ return
+ }
+ }
+ if { $opts(not-target) != "" } then {
+ foreach glob $opts(not-target) {
+ if {[istarget $glob]} {
+ unsupported $testname
+ return
+ }
+ }
+ }
+
+ if { [string match "*--compress-debug-sections*" $opts(as)] \
+ && ![is_zlib_supported] } {
+ unsupported $testname
+ return
+ }
+
+ if { $opts(source) == "" } {
+ set srcfile ${file}.s
+ } else {
+ set srcfile $srcdir/$subdir/$opts(source)
+ }
+
+ set exec_output [binutils_assemble_flags ${srcfile} $tempfile $opts(as)]
+ if [string match "" $exec_output] then {
+ send_log "$exec_output\n"
+ verbose "$exec_output"
+ fail $testname
+ return
+ }
+
+ set progopts1 $opts($program)
+ eval set progopts \$[string toupper $program]FLAGS
+ eval set binary \$[string toupper $program]
+
+ set exec_output [binutils_run $binary "$progopts $progopts1 $tempfile $destopt ${copyfile}.o"]
+ if ![string match "" $exec_output] {
+ send_log "$exec_output\n"
+ verbose "$exec_output"
+ fail $testname
+ return
+ }
+
+ set progopts1 $opts($dumpprogram)
+ eval set progopts \$[string toupper $dumpprogram]FLAGS
+ eval set binary \$[string toupper $dumpprogram]
+
+ if { ![is_remote host] && [which $binary] == 0 } {
+ untested $testname
+ return
+ }
+
+ verbose "running $binary $progopts $progopts1" 3
+
+ set cmd "$binary $progopts $progopts1 ${copyfile}.o"
+
+ # Ensure consistent sorting of symbols
+ if {[info exists env(LC_ALL)]} {
+ set old_lc_all $env(LC_ALL)
+ }
+ set env(LC_ALL) "C"
+ send_log "$cmd\n"
+ set comp_output [remote_exec host $cmd "" "/dev/null" "tmpdir/dump.out"]
+ if {[info exists old_lc_all]} {
+ set env(LC_ALL) $old_lc_all
+ } else {
+ unset env(LC_ALL)
+ }
+ if { [lindex $comp_output 0] != 0 } then {
+ send_log "$comp_output\n"
+ fail $testname
+ return
+ }
+ set comp_output [prune_warnings [lindex $comp_output 1]]
+ if ![string match "" $comp_output] then {
+ send_log "$comp_output\n"
+ fail $testname
+ return
+ }
+
+ verbose_eval {[file_contents "tmpdir/dump.out"]} 3
+ if { [regexp_diff "tmpdir/dump.out" "${file}.d"] } then {
+ fail $testname
+ verbose "output is [file_contents "tmpdir/dump.out"]" 2
+ return
+ }
+
+ pass $testname
+}
+
+proc slurp_options { file } {
+ if [catch { set f [open $file r] } x] {
+ #perror "couldn't open `$file': $x"
+ perror "$x"
+ return -1
+ }
+ set opt_array {}
+ # whitespace expression
+ set ws {[ ]*}
+ set nws {[^ ]*}
+ # whitespace is ignored anywhere except within the options list;
+ # option names are alphabetic plus dash
+ set pat "^#${ws}(\[a-zA-Z-\]*)$ws:${ws}(.*)$ws\$"
+ while { [gets $f line] != -1 } {
+ set line [string trim $line]
+ # Whitespace here is space-tab.
+ if [regexp $pat $line xxx opt_name opt_val] {
+ # match!
+ lappend opt_array [list $opt_name $opt_val]
+ } elseif {![regexp "^#" $line ]} {
+ break
+ }
+ }
+ close $f
+ return $opt_array
+}
+
+proc file_contents { filename } {
+ set file [open $filename r]
+ set contents [read $file]
+ close $file
+ return $contents
+}
+
+proc verbose_eval { expr { level 1 } } {
+ global verbose
+ if $verbose>$level then { eval verbose "$expr" $level }
+}
diff --git a/binutils-2.24/binutils/unwind-ia64.c b/binutils-2.24/binutils/unwind-ia64.c
new file mode 100644
index 00000000..249114ff
--- /dev/null
+++ b/binutils-2.24/binutils/unwind-ia64.c
@@ -0,0 +1,1086 @@
+/* unwind-ia64.c -- utility routines to dump IA-64 unwind info for readelf.
+ Copyright 2000, 2001, 2002, 2003, 2005, 2007, 2012
+ Free Software Foundation, Inc.
+
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+ 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#include "config.h"
+#include "unwind-ia64.h"
+#include <stdio.h>
+#include <string.h>
+
+#if __GNUC__ >= 2
+/* Define BFD64 here, even if our default architecture is 32 bit ELF
+ as this will allow us to read in and parse 64bit and 32bit ELF files.
+ Only do this if we believe that the compiler can support a 64 bit
+ data type. For now we only rely on GCC being able to do this. */
+#define BFD64
+#endif
+#include "bfd.h"
+
+static bfd_vma unw_rlen = 0;
+
+static void unw_print_brmask (char *, unsigned int);
+static void unw_print_grmask (char *, unsigned int);
+static void unw_print_frmask (char *, unsigned int);
+static void unw_print_abreg (char *, unsigned int);
+static void unw_print_xyreg (char *, unsigned int, unsigned int);
+
+static void
+unw_print_brmask (char *cp, unsigned int mask)
+{
+ int sep = 0;
+ int i;
+
+ for (i = 0; mask && (i < 5); ++i)
+ {
+ if (mask & 1)
+ {
+ if (sep)
+ *cp++ = ',';
+ *cp++ = 'b';
+ *cp++ = i + 1 + '0';
+ sep = 1;
+ }
+ mask >>= 1;
+ }
+ *cp = '\0';
+}
+
+static void
+unw_print_grmask (char *cp, unsigned int mask)
+{
+ int sep = 0;
+ int i;
+
+ for (i = 0; i < 4; ++i)
+ {
+ if (mask & 1)
+ {
+ if (sep)
+ *cp++ = ',';
+ *cp++ = 'r';
+ *cp++ = i + 4 + '0';
+ sep = 1;
+ }
+ mask >>= 1;
+ }
+ *cp = '\0';
+}
+
+static void
+unw_print_frmask (char *cp, unsigned int mask)
+{
+ int sep = 0;
+ int i;
+
+ for (i = 0; i < 20; ++i)
+ {
+ if (mask & 1)
+ {
+ if (sep)
+ *cp++ = ',';
+ *cp++ = 'f';
+ if (i < 4)
+ *cp++ = i + 2 + '0';
+ else
+ {
+ *cp++ = (i + 2) / 10 + 1 + '0';
+ *cp++ = (i + 2) % 10 + '0';
+ }
+ sep = 1;
+ }
+ mask >>= 1;
+ }
+ *cp = '\0';
+}
+
+static void
+unw_print_abreg (char *cp, unsigned int abreg)
+{
+ static const char * const special_reg[16] =
+ {
+ "pr", "psp", "@priunat", "rp", "ar.bsp", "ar.bspstore", "ar.rnat",
+ "ar.unat", "ar.fpsr", "ar.pfs", "ar.lc",
+ "Unknown11", "Unknown12", "Unknown13", "Unknown14", "Unknown15"
+ };
+
+ switch ((abreg >> 5) & 0x3)
+ {
+ case 0: /* gr */
+ sprintf (cp, "r%u", (abreg & 0x1f));
+ break;
+
+ case 1: /* fr */
+ sprintf (cp, "f%u", (abreg & 0x1f));
+ break;
+
+ case 2: /* br */
+ sprintf (cp, "b%u", (abreg & 0x1f));
+ break;
+
+ case 3: /* special */
+ strcpy (cp, special_reg[abreg & 0xf]);
+ break;
+ }
+}
+
+static void
+unw_print_xyreg (char *cp, unsigned int x, unsigned int ytreg)
+{
+ switch ((x << 1) | ((ytreg >> 7) & 1))
+ {
+ case 0: /* gr */
+ sprintf (cp, "r%u", (ytreg & 0x1f));
+ break;
+
+ case 1: /* fr */
+ sprintf (cp, "f%u", (ytreg & 0x1f));
+ break;
+
+ case 2: /* br */
+ sprintf (cp, "b%u", (ytreg & 0x1f));
+ break;
+ }
+}
+
+#define UNW_REG_BSP "bsp"
+#define UNW_REG_BSPSTORE "bspstore"
+#define UNW_REG_FPSR "fpsr"
+#define UNW_REG_LC "lc"
+#define UNW_REG_PFS "pfs"
+#define UNW_REG_PR "pr"
+#define UNW_REG_PSP "psp"
+#define UNW_REG_RNAT "rnat"
+#define UNW_REG_RP "rp"
+#define UNW_REG_UNAT "unat"
+
+typedef bfd_vma unw_word;
+
+#define UNW_DEC_BAD_CODE(code) \
+ printf ("Unknown code 0x%02x\n", code)
+
+#define UNW_DEC_PROLOGUE(fmt, body, rlen, arg) \
+ do \
+ { \
+ unw_rlen = rlen; \
+ *(int *)arg = body; \
+ printf (" %s:%s(rlen=%lu)\n", \
+ fmt, body ? "body" : "prologue", (unsigned long) rlen); \
+ } \
+ while (0)
+
+#define UNW_DEC_PROLOGUE_GR(fmt, rlen, mask, grsave, arg) \
+ do \
+ { \
+ char regname[16], maskstr[64], *sep; \
+ \
+ unw_rlen = rlen; \
+ *(int *)arg = 0; \
+ \
+ maskstr[0] = '\0'; \
+ sep = ""; \
+ if (mask & 0x8) \
+ { \
+ strcat (maskstr, "rp"); \
+ sep = ","; \
+ } \
+ if (mask & 0x4) \
+ { \
+ strcat (maskstr, sep); \
+ strcat (maskstr, "ar.pfs"); \
+ sep = ","; \
+ } \
+ if (mask & 0x2) \
+ { \
+ strcat (maskstr, sep); \
+ strcat (maskstr, "psp"); \
+ sep = ","; \
+ } \
+ if (mask & 0x1) \
+ { \
+ strcat (maskstr, sep); \
+ strcat (maskstr, "pr"); \
+ } \
+ sprintf (regname, "r%u", grsave); \
+ printf (" %s:prologue_gr(mask=[%s],grsave=%s,rlen=%lu)\n", \
+ fmt, maskstr, regname, (unsigned long) rlen); \
+ } \
+ while (0)
+
+#define UNW_DEC_FR_MEM(fmt, frmask, arg) \
+ do \
+ { \
+ char frstr[200]; \
+ \
+ unw_print_frmask (frstr, frmask); \
+ printf ("\t%s:fr_mem(frmask=[%s])\n", fmt, frstr); \
+ } \
+ while (0)
+
+#define UNW_DEC_GR_MEM(fmt, grmask, arg) \
+ do \
+ { \
+ char grstr[200]; \
+ \
+ unw_print_grmask (grstr, grmask); \
+ printf ("\t%s:gr_mem(grmask=[%s])\n", fmt, grstr); \
+ } \
+ while (0)
+
+#define UNW_DEC_FRGR_MEM(fmt, grmask, frmask, arg) \
+ do \
+ { \
+ char frstr[200], grstr[20]; \
+ \
+ unw_print_grmask (grstr, grmask); \
+ unw_print_frmask (frstr, frmask); \
+ printf ("\t%s:frgr_mem(grmask=[%s],frmask=[%s])\n", fmt, grstr, frstr); \
+ } \
+ while (0)
+
+#define UNW_DEC_BR_MEM(fmt, brmask, arg) \
+ do \
+ { \
+ char brstr[20]; \
+ \
+ unw_print_brmask (brstr, brmask); \
+ printf ("\t%s:br_mem(brmask=[%s])\n", fmt, brstr); \
+ } \
+ while (0)
+
+#define UNW_DEC_BR_GR(fmt, brmask, gr, arg) \
+ do \
+ { \
+ char brstr[20]; \
+ \
+ unw_print_brmask (brstr, brmask); \
+ printf ("\t%s:br_gr(brmask=[%s],gr=r%u)\n", fmt, brstr, gr); \
+ } \
+ while (0)
+
+#define UNW_DEC_REG_GR(fmt, src, dst, arg) \
+ printf ("\t%s:%s_gr(reg=r%u)\n", fmt, src, dst)
+
+#define UNW_DEC_RP_BR(fmt, dst, arg) \
+ printf ("\t%s:rp_br(reg=b%u)\n", fmt, dst)
+
+#define UNW_DEC_REG_WHEN(fmt, reg, t, arg) \
+ printf ("\t%s:%s_when(t=%lu)\n", fmt, reg, (unsigned long) t)
+
+#define UNW_DEC_REG_SPREL(fmt, reg, spoff, arg) \
+ printf ("\t%s:%s_sprel(spoff=0x%lx)\n", \
+ fmt, reg, 4*(unsigned long)spoff)
+
+#define UNW_DEC_REG_PSPREL(fmt, reg, pspoff, arg) \
+ printf ("\t%s:%s_psprel(pspoff=0x10-0x%lx)\n", \
+ fmt, reg, 4*(unsigned long)pspoff)
+
+#define UNW_DEC_GR_GR(fmt, grmask, gr, arg) \
+ do \
+ { \
+ char grstr[20]; \
+ \
+ unw_print_grmask (grstr, grmask); \
+ printf ("\t%s:gr_gr(grmask=[%s],r%u)\n", fmt, grstr, gr); \
+ } \
+ while (0)
+
+#define UNW_DEC_ABI(fmt, abi, context, arg) \
+ do \
+ { \
+ static const char * const abiname[] = \
+ { \
+ "@svr4", "@hpux", "@nt" \
+ }; \
+ char buf[20]; \
+ const char *abistr = buf; \
+ \
+ if (abi < 3) \
+ abistr = abiname[abi]; \
+ else \
+ sprintf (buf, "0x%x", abi); \
+ printf ("\t%s:unwabi(abi=%s,context=0x%02x)\n", \
+ fmt, abistr, context); \
+ } \
+ while (0)
+
+#define UNW_DEC_PRIUNAT_GR(fmt, r, arg) \
+ printf ("\t%s:priunat_gr(reg=r%u)\n", fmt, r)
+
+#define UNW_DEC_PRIUNAT_WHEN_GR(fmt, t, arg) \
+ printf ("\t%s:priunat_when_gr(t=%lu)\n", fmt, (unsigned long) t)
+
+#define UNW_DEC_PRIUNAT_WHEN_MEM(fmt, t, arg) \
+ printf ("\t%s:priunat_when_mem(t=%lu)\n", fmt, (unsigned long) t)
+
+#define UNW_DEC_PRIUNAT_PSPREL(fmt, pspoff, arg) \
+ printf ("\t%s:priunat_psprel(pspoff=0x10-0x%lx)\n", \
+ fmt, 4*(unsigned long)pspoff)
+
+#define UNW_DEC_PRIUNAT_SPREL(fmt, spoff, arg) \
+ printf ("\t%s:priunat_sprel(spoff=0x%lx)\n", \
+ fmt, 4*(unsigned long)spoff)
+
+#define UNW_DEC_MEM_STACK_F(fmt, t, size, arg) \
+ printf ("\t%s:mem_stack_f(t=%lu,size=%lu)\n", \
+ fmt, (unsigned long) t, 16*(unsigned long)size)
+
+#define UNW_DEC_MEM_STACK_V(fmt, t, arg) \
+ printf ("\t%s:mem_stack_v(t=%lu)\n", fmt, (unsigned long) t)
+
+#define UNW_DEC_SPILL_BASE(fmt, pspoff, arg) \
+ printf ("\t%s:spill_base(pspoff=0x10-0x%lx)\n", \
+ fmt, 4*(unsigned long)pspoff)
+
+#define UNW_DEC_SPILL_MASK(fmt, dp, arg) \
+ do \
+ { \
+ static const char *spill_type = "-frb"; \
+ unsigned const char *imaskp = dp; \
+ unsigned char mask = 0; \
+ bfd_vma insn = 0; \
+ \
+ printf ("\t%s:spill_mask(imask=[", fmt); \
+ for (insn = 0; insn < unw_rlen; ++insn) \
+ { \
+ if ((insn % 4) == 0) \
+ mask = *imaskp++; \
+ if (insn > 0 && (insn % 3) == 0) \
+ putchar (','); \
+ putchar (spill_type[(mask >> (2 * (3 - (insn & 0x3)))) & 0x3]); \
+ } \
+ printf ("])\n"); \
+ dp = imaskp; \
+ } \
+ while (0)
+
+#define UNW_DEC_SPILL_SPREL(fmt, t, abreg, spoff, arg) \
+ do \
+ { \
+ char regname[20]; \
+ \
+ unw_print_abreg (regname, abreg); \
+ printf ("\t%s:spill_sprel(reg=%s,t=%lu,spoff=0x%lx)\n", \
+ fmt, regname, (unsigned long) t, 4*(unsigned long)off); \
+ } \
+ while (0)
+
+#define UNW_DEC_SPILL_PSPREL(fmt, t, abreg, pspoff, arg) \
+ do \
+ { \
+ char regname[20]; \
+ \
+ unw_print_abreg (regname, abreg); \
+ printf ("\t%s:spill_psprel(reg=%s,t=%lu,pspoff=0x10-0x%lx)\n", \
+ fmt, regname, (unsigned long) t, 4*(unsigned long)pspoff); \
+ } \
+ while (0)
+
+#define UNW_DEC_RESTORE(fmt, t, abreg, arg) \
+ do \
+ { \
+ char regname[20]; \
+ \
+ unw_print_abreg (regname, abreg); \
+ printf ("\t%s:restore(t=%lu,reg=%s)\n", \
+ fmt, (unsigned long) t, regname); \
+ } \
+ while (0)
+
+#define UNW_DEC_SPILL_REG(fmt, t, abreg, x, ytreg, arg) \
+ do \
+ { \
+ char abregname[20], tregname[20]; \
+ \
+ unw_print_abreg (abregname, abreg); \
+ unw_print_xyreg (tregname, x, ytreg); \
+ printf ("\t%s:spill_reg(t=%lu,reg=%s,treg=%s)\n", \
+ fmt, (unsigned long) t, abregname, tregname); \
+ } \
+ while (0)
+
+#define UNW_DEC_SPILL_SPREL_P(fmt, qp, t, abreg, spoff, arg) \
+ do \
+ { \
+ char regname[20]; \
+ \
+ unw_print_abreg (regname, abreg); \
+ printf ("\t%s:spill_sprel_p(qp=p%u,t=%lu,reg=%s,spoff=0x%lx)\n", \
+ fmt, qp, (unsigned long) t, regname, 4 * (unsigned long)spoff); \
+ } \
+ while (0)
+
+#define UNW_DEC_SPILL_PSPREL_P(fmt, qp, t, abreg, pspoff, arg) \
+ do \
+ { \
+ char regname[20]; \
+ \
+ unw_print_abreg (regname, abreg); \
+ printf ("\t%s:spill_psprel_p(qp=p%u,t=%lu,reg=%s,pspoff=0x10-0x%lx)\n",\
+ fmt, qp, (unsigned long) t, regname, 4*(unsigned long)pspoff);\
+ } \
+ while (0)
+
+#define UNW_DEC_RESTORE_P(fmt, qp, t, abreg, arg) \
+ do \
+ { \
+ char regname[20]; \
+ \
+ unw_print_abreg (regname, abreg); \
+ printf ("\t%s:restore_p(qp=p%u,t=%lu,reg=%s)\n", \
+ fmt, qp, (unsigned long) t, regname); \
+ } \
+ while (0)
+
+#define UNW_DEC_SPILL_REG_P(fmt, qp, t, abreg, x, ytreg, arg) \
+ do \
+ { \
+ char regname[20], tregname[20]; \
+ \
+ unw_print_abreg (regname, abreg); \
+ unw_print_xyreg (tregname, x, ytreg); \
+ printf ("\t%s:spill_reg_p(qp=p%u,t=%lu,reg=%s,treg=%s)\n", \
+ fmt, qp, (unsigned long) t, regname, tregname); \
+ } \
+ while (0)
+
+#define UNW_DEC_LABEL_STATE(fmt, label, arg) \
+ printf ("\t%s:label_state(label=%lu)\n", fmt, (unsigned long) label)
+
+#define UNW_DEC_COPY_STATE(fmt, label, arg) \
+ printf ("\t%s:copy_state(label=%lu)\n", fmt, (unsigned long) label)
+
+#define UNW_DEC_EPILOGUE(fmt, t, ecount, arg) \
+ printf ("\t%s:epilogue(t=%lu,ecount=%lu)\n", \
+ fmt, (unsigned long) t, (unsigned long) ecount)
+
+/*
+ * Generic IA-64 unwind info decoder.
+ *
+ * This file is used both by the Linux kernel and objdump. Please
+ * keep the two copies of this file in sync (modulo differences in the
+ * prototypes...).
+ *
+ * You need to customize the decoder by defining the following
+ * macros/constants before including this file:
+ *
+ * Types:
+ * unw_word Unsigned integer type with at least 64 bits
+ *
+ * Register names:
+ * UNW_REG_BSP
+ * UNW_REG_BSPSTORE
+ * UNW_REG_FPSR
+ * UNW_REG_LC
+ * UNW_REG_PFS
+ * UNW_REG_PR
+ * UNW_REG_RNAT
+ * UNW_REG_PSP
+ * UNW_REG_RP
+ * UNW_REG_UNAT
+ *
+ * Decoder action macros:
+ * UNW_DEC_BAD_CODE(code)
+ * UNW_DEC_ABI(fmt,abi,context,arg)
+ * UNW_DEC_BR_GR(fmt,brmask,gr,arg)
+ * UNW_DEC_BR_MEM(fmt,brmask,arg)
+ * UNW_DEC_COPY_STATE(fmt,label,arg)
+ * UNW_DEC_EPILOGUE(fmt,t,ecount,arg)
+ * UNW_DEC_FRGR_MEM(fmt,grmask,frmask,arg)
+ * UNW_DEC_FR_MEM(fmt,frmask,arg)
+ * UNW_DEC_GR_GR(fmt,grmask,gr,arg)
+ * UNW_DEC_GR_MEM(fmt,grmask,arg)
+ * UNW_DEC_LABEL_STATE(fmt,label,arg)
+ * UNW_DEC_MEM_STACK_F(fmt,t,size,arg)
+ * UNW_DEC_MEM_STACK_V(fmt,t,arg)
+ * UNW_DEC_PRIUNAT_GR(fmt,r,arg)
+ * UNW_DEC_PRIUNAT_WHEN_GR(fmt,t,arg)
+ * UNW_DEC_PRIUNAT_WHEN_MEM(fmt,t,arg)
+ * UNW_DEC_PRIUNAT_WHEN_PSPREL(fmt,pspoff,arg)
+ * UNW_DEC_PRIUNAT_WHEN_SPREL(fmt,spoff,arg)
+ * UNW_DEC_PROLOGUE(fmt,body,rlen,arg)
+ * UNW_DEC_PROLOGUE_GR(fmt,rlen,mask,grsave,arg)
+ * UNW_DEC_REG_PSPREL(fmt,reg,pspoff,arg)
+ * UNW_DEC_REG_REG(fmt,src,dst,arg)
+ * UNW_DEC_REG_SPREL(fmt,reg,spoff,arg)
+ * UNW_DEC_REG_WHEN(fmt,reg,t,arg)
+ * UNW_DEC_RESTORE(fmt,t,abreg,arg)
+ * UNW_DEC_RESTORE_P(fmt,qp,t,abreg,arg)
+ * UNW_DEC_SPILL_BASE(fmt,pspoff,arg)
+ * UNW_DEC_SPILL_MASK(fmt,imaskp,arg)
+ * UNW_DEC_SPILL_PSPREL(fmt,t,abreg,pspoff,arg)
+ * UNW_DEC_SPILL_PSPREL_P(fmt,qp,t,abreg,pspoff,arg)
+ * UNW_DEC_SPILL_REG(fmt,t,abreg,x,ytreg,arg)
+ * UNW_DEC_SPILL_REG_P(fmt,qp,t,abreg,x,ytreg,arg)
+ * UNW_DEC_SPILL_SPREL(fmt,t,abreg,spoff,arg)
+ * UNW_DEC_SPILL_SPREL_P(fmt,qp,t,abreg,pspoff,arg)
+ */
+
+static unw_word unw_decode_uleb128 (const unsigned char **);
+static const unsigned char *unw_decode_x1
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_x2
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_x3
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_x4
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_r1
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_r2
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_r3
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_p1
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_p2_p5
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_p6
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_p7_p10
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_b1
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_b2
+ (const unsigned char *, unsigned int, void *);
+static const unsigned char *unw_decode_b3_x4
+ (const unsigned char *, unsigned int, void *);
+
+static unw_word
+unw_decode_uleb128 (const unsigned char **dpp)
+{
+ unsigned shift = 0;
+ unw_word byte, result = 0;
+ const unsigned char *bp = *dpp;
+
+ while (1)
+ {
+ byte = *bp++;
+ result |= (byte & 0x7f) << shift;
+
+ if ((byte & 0x80) == 0)
+ break;
+
+ shift += 7;
+ }
+
+ *dpp = bp;
+
+ return result;
+}
+
+static const unsigned char *
+unw_decode_x1 (const unsigned char *dp, unsigned int code ATTRIBUTE_UNUSED,
+ void *arg ATTRIBUTE_UNUSED)
+{
+ unsigned char byte1, abreg;
+ unw_word t, off;
+
+ byte1 = *dp++;
+ t = unw_decode_uleb128 (&dp);
+ off = unw_decode_uleb128 (&dp);
+ abreg = (byte1 & 0x7f);
+ if (byte1 & 0x80)
+ UNW_DEC_SPILL_SPREL ("X1", t, abreg, off, arg);
+ else
+ UNW_DEC_SPILL_PSPREL ("X1", t, abreg, off, arg);
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_x2 (const unsigned char *dp, unsigned int code ATTRIBUTE_UNUSED,
+ void *arg ATTRIBUTE_UNUSED)
+{
+ unsigned char byte1, byte2, abreg, x, ytreg;
+ unw_word t;
+
+ byte1 = *dp++;
+ byte2 = *dp++;
+ t = unw_decode_uleb128 (&dp);
+ abreg = (byte1 & 0x7f);
+ ytreg = byte2;
+ x = (byte1 >> 7) & 1;
+ if ((byte1 & 0x80) == 0 && ytreg == 0)
+ UNW_DEC_RESTORE ("X2", t, abreg, arg);
+ else
+ UNW_DEC_SPILL_REG ("X2", t, abreg, x, ytreg, arg);
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_x3 (const unsigned char *dp, unsigned int code ATTRIBUTE_UNUSED,
+ void *arg ATTRIBUTE_UNUSED)
+{
+ unsigned char byte1, byte2, abreg, qp;
+ unw_word t, off;
+
+ byte1 = *dp++;
+ byte2 = *dp++;
+ t = unw_decode_uleb128 (&dp);
+ off = unw_decode_uleb128 (&dp);
+
+ qp = (byte1 & 0x3f);
+ abreg = (byte2 & 0x7f);
+
+ if (byte1 & 0x80)
+ UNW_DEC_SPILL_SPREL_P ("X3", qp, t, abreg, off, arg);
+ else
+ UNW_DEC_SPILL_PSPREL_P ("X3", qp, t, abreg, off, arg);
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_x4 (const unsigned char *dp, unsigned int code ATTRIBUTE_UNUSED,
+ void *arg ATTRIBUTE_UNUSED)
+{
+ unsigned char byte1, byte2, byte3, qp, abreg, x, ytreg;
+ unw_word t;
+
+ byte1 = *dp++;
+ byte2 = *dp++;
+ byte3 = *dp++;
+ t = unw_decode_uleb128 (&dp);
+
+ qp = (byte1 & 0x3f);
+ abreg = (byte2 & 0x7f);
+ x = (byte2 >> 7) & 1;
+ ytreg = byte3;
+
+ if ((byte2 & 0x80) == 0 && byte3 == 0)
+ UNW_DEC_RESTORE_P ("X4", qp, t, abreg, arg);
+ else
+ UNW_DEC_SPILL_REG_P ("X4", qp, t, abreg, x, ytreg, arg);
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_r1 (const unsigned char *dp, unsigned int code, void *arg)
+{
+ int body = (code & 0x20) != 0;
+ unw_word rlen;
+
+ rlen = (code & 0x1f);
+ UNW_DEC_PROLOGUE ("R1", body, rlen, arg);
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_r2 (const unsigned char *dp, unsigned int code, void *arg)
+{
+ unsigned char byte1, mask, grsave;
+ unw_word rlen;
+
+ byte1 = *dp++;
+
+ mask = ((code & 0x7) << 1) | ((byte1 >> 7) & 1);
+ grsave = (byte1 & 0x7f);
+ rlen = unw_decode_uleb128 (& dp);
+ UNW_DEC_PROLOGUE_GR ("R2", rlen, mask, grsave, arg);
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_r3 (const unsigned char *dp, unsigned int code, void *arg)
+{
+ unw_word rlen;
+
+ rlen = unw_decode_uleb128 (& dp);
+ UNW_DEC_PROLOGUE ("R3", ((code & 0x3) == 1), rlen, arg);
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_p1 (const unsigned char *dp, unsigned int code,
+ void *arg ATTRIBUTE_UNUSED)
+{
+ unsigned char brmask = (code & 0x1f);
+
+ UNW_DEC_BR_MEM ("P1", brmask, arg);
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_p2_p5 (const unsigned char *dp, unsigned int code,
+ void *arg ATTRIBUTE_UNUSED)
+{
+ if ((code & 0x10) == 0)
+ {
+ unsigned char byte1 = *dp++;
+
+ UNW_DEC_BR_GR ("P2", ((code & 0xf) << 1) | ((byte1 >> 7) & 1),
+ (byte1 & 0x7f), arg);
+ }
+ else if ((code & 0x08) == 0)
+ {
+ unsigned char byte1 = *dp++, r, dst;
+
+ r = ((code & 0x7) << 1) | ((byte1 >> 7) & 1);
+ dst = (byte1 & 0x7f);
+ switch (r)
+ {
+ case 0:
+ UNW_DEC_REG_GR ("P3", UNW_REG_PSP, dst, arg);
+ break;
+ case 1:
+ UNW_DEC_REG_GR ("P3", UNW_REG_RP, dst, arg);
+ break;
+ case 2:
+ UNW_DEC_REG_GR ("P3", UNW_REG_PFS, dst, arg);
+ break;
+ case 3:
+ UNW_DEC_REG_GR ("P3", UNW_REG_PR, dst, arg);
+ break;
+ case 4:
+ UNW_DEC_REG_GR ("P3", UNW_REG_UNAT, dst, arg);
+ break;
+ case 5:
+ UNW_DEC_REG_GR ("P3", UNW_REG_LC, dst, arg);
+ break;
+ case 6:
+ UNW_DEC_RP_BR ("P3", dst, arg);
+ break;
+ case 7:
+ UNW_DEC_REG_GR ("P3", UNW_REG_RNAT, dst, arg);
+ break;
+ case 8:
+ UNW_DEC_REG_GR ("P3", UNW_REG_BSP, dst, arg);
+ break;
+ case 9:
+ UNW_DEC_REG_GR ("P3", UNW_REG_BSPSTORE, dst, arg);
+ break;
+ case 10:
+ UNW_DEC_REG_GR ("P3", UNW_REG_FPSR, dst, arg);
+ break;
+ case 11:
+ UNW_DEC_PRIUNAT_GR ("P3", dst, arg);
+ break;
+ default:
+ UNW_DEC_BAD_CODE (r);
+ break;
+ }
+ }
+ else if ((code & 0x7) == 0)
+ UNW_DEC_SPILL_MASK ("P4", dp, arg);
+ else if ((code & 0x7) == 1)
+ {
+ unw_word grmask, frmask, byte1, byte2, byte3;
+
+ byte1 = *dp++;
+ byte2 = *dp++;
+ byte3 = *dp++;
+ grmask = ((byte1 >> 4) & 0xf);
+ frmask = ((byte1 & 0xf) << 16) | (byte2 << 8) | byte3;
+ UNW_DEC_FRGR_MEM ("P5", grmask, frmask, arg);
+ }
+ else
+ UNW_DEC_BAD_CODE (code);
+
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_p6 (const unsigned char *dp, unsigned int code,
+ void *arg ATTRIBUTE_UNUSED)
+{
+ int gregs = (code & 0x10) != 0;
+ unsigned char mask = (code & 0x0f);
+
+ if (gregs)
+ UNW_DEC_GR_MEM ("P6", mask, arg);
+ else
+ UNW_DEC_FR_MEM ("P6", mask, arg);
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_p7_p10 (const unsigned char *dp, unsigned int code, void *arg)
+{
+ unsigned char r, byte1, byte2;
+ unw_word t, size;
+
+ if ((code & 0x10) == 0)
+ {
+ r = (code & 0xf);
+ t = unw_decode_uleb128 (&dp);
+ switch (r)
+ {
+ case 0:
+ size = unw_decode_uleb128 (&dp);
+ UNW_DEC_MEM_STACK_F ("P7", t, size, arg);
+ break;
+
+ case 1:
+ UNW_DEC_MEM_STACK_V ("P7", t, arg);
+ break;
+ case 2:
+ UNW_DEC_SPILL_BASE ("P7", t, arg);
+ break;
+ case 3:
+ UNW_DEC_REG_SPREL ("P7", UNW_REG_PSP, t, arg);
+ break;
+ case 4:
+ UNW_DEC_REG_WHEN ("P7", UNW_REG_RP, t, arg);
+ break;
+ case 5:
+ UNW_DEC_REG_PSPREL ("P7", UNW_REG_RP, t, arg);
+ break;
+ case 6:
+ UNW_DEC_REG_WHEN ("P7", UNW_REG_PFS, t, arg);
+ break;
+ case 7:
+ UNW_DEC_REG_PSPREL ("P7", UNW_REG_PFS, t, arg);
+ break;
+ case 8:
+ UNW_DEC_REG_WHEN ("P7", UNW_REG_PR, t, arg);
+ break;
+ case 9:
+ UNW_DEC_REG_PSPREL ("P7", UNW_REG_PR, t, arg);
+ break;
+ case 10:
+ UNW_DEC_REG_WHEN ("P7", UNW_REG_LC, t, arg);
+ break;
+ case 11:
+ UNW_DEC_REG_PSPREL ("P7", UNW_REG_LC, t, arg);
+ break;
+ case 12:
+ UNW_DEC_REG_WHEN ("P7", UNW_REG_UNAT, t, arg);
+ break;
+ case 13:
+ UNW_DEC_REG_PSPREL ("P7", UNW_REG_UNAT, t, arg);
+ break;
+ case 14:
+ UNW_DEC_REG_WHEN ("P7", UNW_REG_FPSR, t, arg);
+ break;
+ case 15:
+ UNW_DEC_REG_PSPREL ("P7", UNW_REG_FPSR, t, arg);
+ break;
+ default:
+ UNW_DEC_BAD_CODE (r);
+ break;
+ }
+ }
+ else
+ {
+ switch (code & 0xf)
+ {
+ case 0x0: /* p8 */
+ {
+ r = *dp++;
+ t = unw_decode_uleb128 (&dp);
+ switch (r)
+ {
+ case 1:
+ UNW_DEC_REG_SPREL ("P8", UNW_REG_RP, t, arg);
+ break;
+ case 2:
+ UNW_DEC_REG_SPREL ("P8", UNW_REG_PFS, t, arg);
+ break;
+ case 3:
+ UNW_DEC_REG_SPREL ("P8", UNW_REG_PR, t, arg);
+ break;
+ case 4:
+ UNW_DEC_REG_SPREL ("P8", UNW_REG_LC, t, arg);
+ break;
+ case 5:
+ UNW_DEC_REG_SPREL ("P8", UNW_REG_UNAT, t, arg);
+ break;
+ case 6:
+ UNW_DEC_REG_SPREL ("P8", UNW_REG_FPSR, t, arg);
+ break;
+ case 7:
+ UNW_DEC_REG_WHEN ("P8", UNW_REG_BSP, t, arg);
+ break;
+ case 8:
+ UNW_DEC_REG_PSPREL ("P8", UNW_REG_BSP, t, arg);
+ break;
+ case 9:
+ UNW_DEC_REG_SPREL ("P8", UNW_REG_BSP, t, arg);
+ break;
+ case 10:
+ UNW_DEC_REG_WHEN ("P8", UNW_REG_BSPSTORE, t, arg);
+ break;
+ case 11:
+ UNW_DEC_REG_PSPREL ("P8", UNW_REG_BSPSTORE, t, arg);
+ break;
+ case 12:
+ UNW_DEC_REG_SPREL ("P8", UNW_REG_BSPSTORE, t, arg);
+ break;
+ case 13:
+ UNW_DEC_REG_WHEN ("P8", UNW_REG_RNAT, t, arg);
+ break;
+ case 14:
+ UNW_DEC_REG_PSPREL ("P8", UNW_REG_RNAT, t, arg);
+ break;
+ case 15:
+ UNW_DEC_REG_SPREL ("P8", UNW_REG_RNAT, t, arg);
+ break;
+ case 16:
+ UNW_DEC_PRIUNAT_WHEN_GR ("P8", t, arg);
+ break;
+ case 17:
+ UNW_DEC_PRIUNAT_PSPREL ("P8", t, arg);
+ break;
+ case 18:
+ UNW_DEC_PRIUNAT_SPREL ("P8", t, arg);
+ break;
+ case 19:
+ UNW_DEC_PRIUNAT_WHEN_MEM ("P8", t, arg);
+ break;
+ default:
+ UNW_DEC_BAD_CODE (r);
+ break;
+ }
+ }
+ break;
+
+ case 0x1:
+ byte1 = *dp++;
+ byte2 = *dp++;
+ UNW_DEC_GR_GR ("P9", (byte1 & 0xf), (byte2 & 0x7f), arg);
+ break;
+
+ case 0xf: /* p10 */
+ byte1 = *dp++;
+ byte2 = *dp++;
+ UNW_DEC_ABI ("P10", byte1, byte2, arg);
+ break;
+
+ case 0x9:
+ return unw_decode_x1 (dp, code, arg);
+
+ case 0xa:
+ return unw_decode_x2 (dp, code, arg);
+
+ case 0xb:
+ return unw_decode_x3 (dp, code, arg);
+
+ case 0xc:
+ return unw_decode_x4 (dp, code, arg);
+
+ default:
+ UNW_DEC_BAD_CODE (code);
+ break;
+ }
+ }
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_b1 (const unsigned char *dp, unsigned int code,
+ void *arg ATTRIBUTE_UNUSED)
+{
+ unw_word label = (code & 0x1f);
+
+ if ((code & 0x20) != 0)
+ UNW_DEC_COPY_STATE ("B1", label, arg);
+ else
+ UNW_DEC_LABEL_STATE ("B1", label, arg);
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_b2 (const unsigned char *dp, unsigned int code,
+ void *arg ATTRIBUTE_UNUSED)
+{
+ unw_word t;
+
+ t = unw_decode_uleb128 (& dp);
+ UNW_DEC_EPILOGUE ("B2", t, (code & 0x1f), arg);
+ return dp;
+}
+
+static const unsigned char *
+unw_decode_b3_x4 (const unsigned char *dp, unsigned int code, void *arg)
+{
+ unw_word t, ecount, label;
+
+ if ((code & 0x10) == 0)
+ {
+ t = unw_decode_uleb128 (&dp);
+ ecount = unw_decode_uleb128 (&dp);
+ UNW_DEC_EPILOGUE ("B3", t, ecount, arg);
+ }
+ else if ((code & 0x07) == 0)
+ {
+ label = unw_decode_uleb128 (&dp);
+ if ((code & 0x08) != 0)
+ UNW_DEC_COPY_STATE ("B4", label, arg);
+ else
+ UNW_DEC_LABEL_STATE ("B4", label, arg);
+ }
+ else
+ switch (code & 0x7)
+ {
+ case 1:
+ return unw_decode_x1 (dp, code, arg);
+ case 2:
+ return unw_decode_x2 (dp, code, arg);
+ case 3:
+ return unw_decode_x3 (dp, code, arg);
+ case 4:
+ return unw_decode_x4 (dp, code, arg);
+ default:
+ UNW_DEC_BAD_CODE (code);
+ break;
+ }
+ return dp;
+}
+
+typedef const unsigned char *(*unw_decoder)
+ (const unsigned char *, unsigned int, void *);
+
+static const unw_decoder unw_decode_table[2][8] =
+ {
+ /* prologue table: */
+ {
+ unw_decode_r1, /* 0 */
+ unw_decode_r1,
+ unw_decode_r2,
+ unw_decode_r3,
+ unw_decode_p1, /* 4 */
+ unw_decode_p2_p5,
+ unw_decode_p6,
+ unw_decode_p7_p10
+ },
+ {
+ unw_decode_r1, /* 0 */
+ unw_decode_r1,
+ unw_decode_r2,
+ unw_decode_r3,
+ unw_decode_b1, /* 4 */
+ unw_decode_b1,
+ unw_decode_b2,
+ unw_decode_b3_x4
+ }
+ };
+
+/* Decode one descriptor and return address of next descriptor. */
+const unsigned char *
+unw_decode (const unsigned char *dp, int inside_body,
+ void *ptr_inside_body)
+{
+ unw_decoder decoder;
+ unsigned char code;
+
+ code = *dp++;
+ decoder = unw_decode_table[inside_body][code >> 5];
+ return (*decoder) (dp, code, ptr_inside_body);
+}
diff --git a/binutils-2.24/binutils/unwind-ia64.h b/binutils-2.24/binutils/unwind-ia64.h
new file mode 100644
index 00000000..b004bc34
--- /dev/null
+++ b/binutils-2.24/binutils/unwind-ia64.h
@@ -0,0 +1,32 @@
+/* unwind-ia64.h -- dump IA-64 unwind info.
+ Copyright 2000, 2001, 2002, 2003, 2005, 2007 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+ 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#include "elf/ia64.h"
+#include "ansidecl.h"
+
+#define UNW_VER(x) ((x) >> 48)
+#define UNW_FLAG_MASK 0x0000ffff00000000LL
+#define UNW_FLAG_OSMASK 0x0000f00000000000LL
+#define UNW_FLAG_EHANDLER(x) ((x) & 0x0000000100000000LL)
+#define UNW_FLAG_UHANDLER(x) ((x) & 0x0000000200000000LL)
+#define UNW_LENGTH(x) ((x) & 0x00000000ffffffffLL)
+
+extern const unsigned char *unw_decode (const unsigned char *, int, void *);
diff --git a/binutils-2.24/binutils/version.c b/binutils-2.24/binutils/version.c
new file mode 100644
index 00000000..332dff17
--- /dev/null
+++ b/binutils-2.24/binutils/version.c
@@ -0,0 +1,42 @@
+/* version.c -- binutils version information
+ Copyright 1991, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
+ 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 3, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "bucomm.h"
+
+/* Print the version number and copyright information, and exit.
+ This implements the --version option for the various programs. */
+
+void
+print_version (const char *name)
+{
+ /* This output is intended to follow the GNU standards document. */
+ /* xgettext:c-format */
+ printf ("GNU %s %s\n", name, BFD_VERSION_STRING);
+ printf (_("Copyright 2013 Free Software Foundation, Inc.\n"));
+ printf (_("\
+This program is free software; you may redistribute it under the terms of\n\
+the GNU General Public License version 3 or (at your option) any later version.\n\
+This program has absolutely no warranty.\n"));
+ exit (0);
+}
diff --git a/binutils-2.24/binutils/windint.h b/binutils-2.24/binutils/windint.h
new file mode 100644
index 00000000..0a758995
--- /dev/null
+++ b/binutils-2.24/binutils/windint.h
@@ -0,0 +1,1098 @@
+/* windint.h -- internal header file for windres program.
+ Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2011
+ Free Software Foundation, Inc.
+ Written by Kai Tietz, Onevision.
+
+ 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 3 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 "winduni.h"
+
+#ifndef WINDINT_H
+#define WINDINT_H
+
+/* Use bfd_size_type to ensure a sufficient number of bits. */
+#ifndef DEFINED_RC_UINT_TYPE
+#define DEFINED_RC_UINT_TYPE
+typedef bfd_size_type rc_uint_type;
+#endif
+
+/* Resource directory structure. */
+
+typedef struct res_hdr
+{
+ rc_uint_type data_size;
+ rc_uint_type header_size;
+} res_hdr;
+
+struct __attribute__ ((__packed__)) bin_res_hdr
+{
+ bfd_byte data_size[4];
+ bfd_byte header_size[4];
+};
+#define BIN_RES_HDR_SIZE 8
+
+struct __attribute__ ((__packed__)) bin_res_id
+{
+ bfd_byte sig[2]; /* Has to be 0xffff for unnamed ids. */
+ bfd_byte id[2];
+};
+#define BIN_RES_ID 4
+
+/* This structure is used when converting resource information to
+ binary. */
+
+typedef struct bindata
+{
+ /* Next data. */
+ struct bindata *next;
+ /* Length of data. */
+ rc_uint_type length;
+ /* Data. */
+ bfd_byte *data;
+} bindata;
+
+/* This structure is used when converting resource information to
+ coff. */
+typedef struct coff_res_data
+{
+ /* Next data. */
+ struct coff_res_data *next;
+ /* Length of data. */
+ rc_uint_type length;
+ /* Data. */
+ const struct rc_res_resource *res;
+} coff_res_data;
+
+/* We represent resources internally as a tree, similar to the tree
+ used in the .rsrc section of a COFF file. The root is a
+ rc_res_directory structure. */
+
+typedef struct rc_res_directory
+{
+ /* Resource flags. According to the MS docs, this is currently
+ always zero. */
+ rc_uint_type characteristics;
+ /* Time/date stamp. */
+ rc_uint_type time;
+ /* Major version number. */
+ rc_uint_type major;
+ /* Minor version number. */
+ rc_uint_type minor;
+ /* Directory entries. */
+ struct rc_res_entry *entries;
+} rc_res_directory;
+
+/* A resource ID is stored in a rc_res_id structure. */
+
+typedef struct rc_res_id
+{
+ /* Non-zero if this entry has a name rather than an ID. */
+ rc_uint_type named : 1;
+ union
+ {
+ /* If the named field is non-zero, this is the name. */
+ struct
+ {
+ /* Length of the name. */
+ rc_uint_type length;
+ /* Pointer to the name, which is a Unicode string. */
+ unichar *name;
+ } n;
+ /* If the named field is zero, this is the ID. */
+ rc_uint_type id;
+ } u;
+} rc_res_id;
+
+/* Each entry in the tree is a rc_res_entry structure. We mix
+ directories and resources because in a COFF file all entries in a
+ directory are sorted together, whether the entries are
+ subdirectories or resources. */
+
+typedef struct rc_res_entry
+{
+ /* Next entry. */
+ struct rc_res_entry *next;
+ /* Resource ID. */
+ rc_res_id id;
+ /* Non-zero if this entry is a subdirectory rather than a leaf. */
+ rc_uint_type subdir : 1;
+ union
+ {
+ /* If the subdir field is non-zero, this is a pointer to the
+ subdirectory. */
+ rc_res_directory *dir;
+ /* If the subdir field is zero, this is a pointer to the resource
+ data. */
+ struct rc_res_resource *res;
+ } u;
+} rc_res_entry;
+
+/* Types of resources. */
+
+enum rc_res_type
+{
+ RES_TYPE_UNINITIALIZED,
+ RES_TYPE_ACCELERATOR,
+ RES_TYPE_BITMAP,
+ RES_TYPE_CURSOR,
+ RES_TYPE_GROUP_CURSOR,
+ RES_TYPE_DIALOG,
+ RES_TYPE_FONT,
+ RES_TYPE_FONTDIR,
+ RES_TYPE_ICON,
+ RES_TYPE_GROUP_ICON,
+ RES_TYPE_MENU,
+ RES_TYPE_MESSAGETABLE,
+ RES_TYPE_RCDATA,
+ RES_TYPE_STRINGTABLE,
+ RES_TYPE_USERDATA,
+ RES_TYPE_VERSIONINFO,
+ RES_TYPE_DLGINCLUDE,
+ RES_TYPE_PLUGPLAY,
+ RES_TYPE_VXD,
+ RES_TYPE_ANICURSOR,
+ RES_TYPE_ANIICON,
+ RES_TYPE_DLGINIT,
+ RES_TYPE_TOOLBAR
+};
+
+/* A res file and a COFF file store information differently. The
+ res_info structures holds data which in a res file is stored with
+ each resource, but in a COFF file is stored elsewhere. */
+
+typedef struct rc_res_res_info
+{
+ /* Language. In a COFF file, the third level of the directory is
+ keyed by the language, so the language of a resource is defined
+ by its location in the resource tree. */
+ rc_uint_type language;
+ /* Characteristics of the resource. Entirely user defined. In a
+ COFF file, the rc_res_directory structure has a characteristics
+ field, but I don't know if it's related to the one in the res
+ file. */
+ rc_uint_type characteristics;
+ /* Version of the resource. Entirely user defined. In a COFF file,
+ the rc_res_directory structure has a characteristics field, but I
+ don't know if it's related to the one in the res file. */
+ rc_uint_type version;
+ /* Memory flags. This is a combination of the MEMFLAG values
+ defined below. Most of these values are historical, and are not
+ meaningful for win32. I don't think there is any way to store
+ this information in a COFF file. */
+ rc_uint_type memflags;
+} rc_res_res_info;
+
+/* Binary layout of rc_res_info. */
+
+struct __attribute__ ((__packed__)) bin_res_info
+{
+ bfd_byte version[4];
+ bfd_byte memflags[2];
+ bfd_byte language[2];
+ bfd_byte version2[4];
+ bfd_byte characteristics[4];
+};
+#define BIN_RES_INFO_SIZE 16
+
+/* Each resource in a COFF file has some information which can does
+ not appear in a res file. */
+
+typedef struct rc_res_coff_info
+{
+ /* The code page used for the data. I don't really know what this
+ should be. It has something todo with ASCII to Unicode encoding. */
+ rc_uint_type codepage;
+ /* A resource entry in a COFF file has a reserved field, which we
+ record here when reading a COFF file. When writing a COFF file,
+ we set this field to zero. */
+ rc_uint_type reserved;
+} rc_res_coff_info;
+
+/* Resource data is stored in a rc_res_resource structure. */
+
+typedef struct rc_res_resource
+{
+ /* The type of resource. */
+ enum rc_res_type type;
+ /* The data for the resource. */
+ union
+ {
+ struct
+ {
+ rc_uint_type length;
+ const bfd_byte *data;
+ } data;
+ struct rc_accelerator *acc;
+ struct rc_cursor *cursor;
+ struct rc_group_cursor *group_cursor;
+ struct rc_dialog *dialog;
+ struct rc_fontdir *fontdir;
+ struct rc_group_icon *group_icon;
+ struct rc_menu *menu;
+ struct rc_rcdata_item *rcdata;
+ struct rc_stringtable *stringtable;
+ struct rc_rcdata_item *userdata;
+ struct rc_versioninfo *versioninfo;
+ struct rc_toolbar *toolbar;
+ } u;
+ /* Information from a res file. */
+ struct rc_res_res_info res_info;
+ /* Information from a COFF file. */
+ rc_res_coff_info coff_info;
+} rc_res_resource;
+
+#define SUBLANG_SHIFT 10
+
+/* Memory flags in the memflags field of a rc_res_resource. */
+
+#define MEMFLAG_MOVEABLE 0x10
+#define MEMFLAG_PURE 0x20
+#define MEMFLAG_PRELOAD 0x40
+#define MEMFLAG_DISCARDABLE 0x1000
+
+/* Standard resource type codes. These are used in the ID field of a
+ rc_res_entry structure. */
+
+#define RT_CURSOR 1
+#define RT_BITMAP 2
+#define RT_ICON 3
+#define RT_MENU 4
+#define RT_DIALOG 5
+#define RT_STRING 6
+#define RT_FONTDIR 7
+#define RT_FONT 8
+#define RT_ACCELERATOR 9
+#define RT_RCDATA 10
+#define RT_MESSAGETABLE 11
+#define RT_GROUP_CURSOR 12
+#define RT_GROUP_ICON 14
+#define RT_VERSION 16
+#define RT_DLGINCLUDE 17
+#define RT_PLUGPLAY 19
+#define RT_VXD 20
+#define RT_ANICURSOR 21
+#define RT_ANIICON 22
+#define RT_HTML 23
+#define RT_MANIFEST 24
+#define RT_DLGINIT 240
+#define RT_TOOLBAR 241
+
+/* An accelerator resource is a linked list of these structures. */
+
+typedef struct rc_accelerator
+{
+ /* Next accelerator. */
+ struct rc_accelerator *next;
+ /* Flags. A combination of the ACC values defined below. */
+ rc_uint_type flags;
+ /* Key value. */
+ rc_uint_type key;
+ /* Resource ID. */
+ rc_uint_type id;
+} rc_accelerator;
+
+struct __attribute__ ((__packed__)) bin_accelerator
+{
+ bfd_byte flags[2];
+ bfd_byte key[2];
+ bfd_byte id[2];
+ bfd_byte pad[2];
+};
+#define BIN_ACCELERATOR_SIZE 8
+
+/* Accelerator flags in the flags field of a rc_accelerator.
+ These are the same values that appear in a res file. I hope. */
+
+#define ACC_VIRTKEY 0x01
+#define ACC_NOINVERT 0x02
+#define ACC_SHIFT 0x04
+#define ACC_CONTROL 0x08
+#define ACC_ALT 0x10
+#define ACC_LAST 0x80
+
+/* A cursor resource. */
+
+typedef struct rc_cursor
+{
+ /* X coordinate of hotspot. */
+ bfd_signed_vma xhotspot;
+ /* Y coordinate of hotspot. */
+ bfd_signed_vma yhotspot;
+ /* Length of bitmap data. */
+ rc_uint_type length;
+ /* Data. */
+ const bfd_byte *data;
+} rc_cursor;
+
+struct __attribute__ ((__packed__)) bin_cursor
+{
+ bfd_byte xhotspot[2];
+ bfd_byte yhotspot[2];
+};
+#define BIN_CURSOR_SIZE 4
+
+/* A group_cursor resource is a list of rc_i_group_cursor structures. */
+
+typedef struct rc_group_cursor
+{
+ /* Next cursor in group. */
+ struct rc_group_cursor *next;
+ /* Width. */
+ rc_uint_type width;
+ /* Height. */
+ rc_uint_type height;
+ /* Planes. */
+ rc_uint_type planes;
+ /* Bits per pixel. */
+ rc_uint_type bits;
+ /* Number of bytes in cursor resource. */
+ rc_uint_type bytes;
+ /* Index of cursor resource. */
+ rc_uint_type index;
+} rc_group_cursor;
+
+struct __attribute__ ((__packed__)) bin_group_cursor_item
+{
+ bfd_byte width[2];
+ bfd_byte height[2];
+ bfd_byte planes[2];
+ bfd_byte bits[2];
+ bfd_byte bytes[4];
+ bfd_byte index[2];
+};
+#define BIN_GROUP_CURSOR_ITEM_SIZE 14
+
+struct __attribute__ ((__packed__)) bin_group_cursor
+{
+ bfd_byte sig1[2];
+ bfd_byte sig2[2];
+ bfd_byte nitems[2];
+ /* struct bin_group_cursor_item item[nitems]; */
+};
+#define BIN_GROUP_CURSOR_SIZE 6
+
+/* A dialog resource. */
+
+typedef struct rc_dialog
+{
+ /* Basic window style. */
+ unsigned int style;
+ /* Extended window style. */
+ rc_uint_type exstyle;
+ /* X coordinate. */
+ rc_uint_type x;
+ /* Y coordinate. */
+ rc_uint_type y;
+ /* Width. */
+ rc_uint_type width;
+ /* Height. */
+ rc_uint_type height;
+ /* Menu name. */
+ rc_res_id menu;
+ /* Class name. */
+ rc_res_id class;
+ /* Caption. */
+ unichar *caption;
+ /* Font point size. */
+ rc_uint_type pointsize;
+ /* Font name. */
+ unichar *font;
+ /* Extended information for a dialogex. */
+ struct rc_dialog_ex *ex;
+ /* Controls. */
+ struct rc_dialog_control *controls;
+} rc_dialog;
+
+struct __attribute__ ((__packed__)) bin_dialog
+{
+ bfd_byte style[4];
+ bfd_byte exstyle[4];
+ bfd_byte off[2];
+ bfd_byte x[2];
+ bfd_byte y[2];
+ bfd_byte width[2];
+ bfd_byte height[2];
+};
+#define BIN_DIALOG_SIZE 18
+
+/* An extended dialog has additional information. */
+
+typedef struct rc_dialog_ex
+{
+ /* Help ID. */
+ rc_uint_type help;
+ /* Font weight. */
+ rc_uint_type weight;
+ /* Whether the font is italic. */
+ bfd_byte italic;
+ /* Character set. */
+ bfd_byte charset;
+} rc_dialog_ex;
+
+struct __attribute__ ((__packed__)) bin_dialogex
+{
+ bfd_byte sig1[2];
+ bfd_byte sig2[2];
+ bfd_byte help[4];
+ bfd_byte exstyle[4];
+ bfd_byte style[4];
+ bfd_byte off[2];
+ bfd_byte x[2];
+ bfd_byte y[2];
+ bfd_byte width[2];
+ bfd_byte height[2];
+};
+#define BIN_DIALOGEX_SIZE 26
+
+struct __attribute__ ((__packed__)) bin_dialogfont
+{
+ bfd_byte pointsize[2];
+};
+#define BIN_DIALOGFONT_SIZE 2
+
+struct __attribute__ ((__packed__)) bin_dialogexfont
+{
+ bfd_byte pointsize[2];
+ bfd_byte weight[2];
+ bfd_byte italic[1];
+ bfd_byte charset[1];
+};
+#define BIN_DIALOGEXFONT_SIZE 6
+
+/* Window style flags, from the winsup Defines.h header file. These
+ can appear in the style field of a rc_dialog or a rc_dialog_control. */
+
+#define CW_USEDEFAULT 0x80000000
+#define WS_BORDER 0x800000L
+#define WS_CAPTION 0xc00000L
+#define WS_CHILD 0x40000000L
+#define WS_CHILDWINDOW 0x40000000L
+#define WS_CLIPCHILDREN 0x2000000L
+#define WS_CLIPSIBLINGS 0x4000000L
+#define WS_DISABLED 0x8000000L
+#define WS_DLGFRAME 0x400000L
+#define WS_GROUP 0x20000L
+#define WS_HSCROLL 0x100000L
+#define WS_ICONIC 0x20000000L
+#define WS_MAXIMIZE 0x1000000L
+#define WS_MAXIMIZEBOX 0x10000L
+#define WS_MINIMIZE 0x20000000L
+#define WS_MINIMIZEBOX 0x20000L
+#define WS_OVERLAPPED 0L
+#define WS_OVERLAPPEDWINDOW 0xcf0000L
+#define WS_POPUP 0x80000000L
+#define WS_POPUPWINDOW 0x80880000L
+#define WS_SIZEBOX 0x40000L
+#define WS_SYSMENU 0x80000L
+#define WS_TABSTOP 0x10000L
+#define WS_THICKFRAME 0x40000L
+#define WS_TILED 0L
+#define WS_TILEDWINDOW 0xcf0000L
+#define WS_VISIBLE 0x10000000L
+#define WS_VSCROLL 0x200000L
+#define MDIS_ALLCHILDSTYLES 0x1
+#define BS_3STATE 0x5L
+#define BS_AUTO3STATE 0x6L
+#define BS_AUTOCHECKBOX 0x3L
+#define BS_AUTORADIOBUTTON 0x9L
+#define BS_BITMAP 0x80L
+#define BS_BOTTOM 0x800L
+#define BS_CENTER 0x300L
+#define BS_CHECKBOX 0x2L
+#define BS_DEFPUSHBUTTON 0x1L
+#define BS_GROUPBOX 0x7L
+#define BS_ICON 0x40L
+#define BS_LEFT 0x100L
+#define BS_LEFTTEXT 0x20L
+#define BS_MULTILINE 0x2000L
+#define BS_NOTIFY 0x4000L
+#define BS_OWNERDRAW 0xbL
+#define BS_PUSHBOX 0xcL /* FIXME! What should this be? */
+#define BS_PUSHBUTTON 0L
+#define BS_PUSHLIKE 0x1000L
+#define BS_RADIOBUTTON 0x4L
+#define BS_RIGHT 0x200L
+#define BS_RIGHTBUTTON 0x20L
+#define BS_TEXT 0L
+#define BS_TOP 0x400L
+#define BS_USERBUTTON 0x8L
+#define BS_VCENTER 0xc00L
+#define CBS_AUTOHSCROLL 0x40L
+#define CBS_DISABLENOSCROLL 0x800L
+#define CBS_DROPDOWN 0x2L
+#define CBS_DROPDOWNLIST 0x3L
+#define CBS_HASSTRINGS 0x200L
+#define CBS_LOWERCASE 0x4000L
+#define CBS_NOINTEGRALHEIGHT 0x400L
+#define CBS_OEMCONVERT 0x80L
+#define CBS_OWNERDRAWFIXED 0x10L
+#define CBS_OWNERDRAWVARIABLE 0x20L
+#define CBS_SIMPLE 0x1L
+#define CBS_SORT 0x100L
+#define CBS_UPPERCASE 0x2000L
+#define ES_AUTOHSCROLL 0x80L
+#define ES_AUTOVSCROLL 0x40L
+#define ES_CENTER 0x1L
+#define ES_LEFT 0L
+#define ES_LOWERCASE 0x10L
+#define ES_MULTILINE 0x4L
+#define ES_NOHIDESEL 0x100L
+#define ES_NUMBER 0x2000L
+#define ES_OEMCONVERT 0x400L
+#define ES_PASSWORD 0x20L
+#define ES_READONLY 0x800L
+#define ES_RIGHT 0x2L
+#define ES_UPPERCASE 0x8L
+#define ES_WANTRETURN 0x1000L
+#define LBS_DISABLENOSCROLL 0x1000L
+#define LBS_EXTENDEDSEL 0x800L
+#define LBS_HASSTRINGS 0x40L
+#define LBS_MULTICOLUMN 0x200L
+#define LBS_MULTIPLESEL 0x8L
+#define LBS_NODATA 0x2000L
+#define LBS_NOINTEGRALHEIGHT 0x100L
+#define LBS_NOREDRAW 0x4L
+#define LBS_NOSEL 0x4000L
+#define LBS_NOTIFY 0x1L
+#define LBS_OWNERDRAWFIXED 0x10L
+#define LBS_OWNERDRAWVARIABLE 0x20L
+#define LBS_SORT 0x2L
+#define LBS_STANDARD 0xa00003L
+#define LBS_USETABSTOPS 0x80L
+#define LBS_WANTKEYBOARDINPUT 0x400L
+#define SBS_BOTTOMALIGN 0x4L
+#define SBS_HORZ 0L
+#define SBS_LEFTALIGN 0x2L
+#define SBS_RIGHTALIGN 0x4L
+#define SBS_SIZEBOX 0x8L
+#define SBS_SIZEBOXBOTTOMRIGHTALIGN 0x4L
+#define SBS_SIZEBOXTOPLEFTALIGN 0x2L
+#define SBS_SIZEGRIP 0x10L
+#define SBS_TOPALIGN 0x2L
+#define SBS_VERT 0x1L
+#define SS_BITMAP 0xeL
+#define SS_BLACKFRAME 0x7L
+#define SS_BLACKRECT 0x4L
+#define SS_CENTER 0x1L
+#define SS_CENTERIMAGE 0x200L
+#define SS_ENHMETAFILE 0xfL
+#define SS_ETCHEDFRAME 0x12L
+#define SS_ETCHEDHORZ 0x10L
+#define SS_ETCHEDVERT 0x11L
+#define SS_GRAYFRAME 0x8L
+#define SS_GRAYRECT 0x5L
+#define SS_ICON 0x3L
+#define SS_LEFT 0L
+#define SS_LEFTNOWORDWRAP 0xcL
+#define SS_NOPREFIX 0x80L
+#define SS_NOTIFY 0x100L
+#define SS_OWNERDRAW 0xdL
+#define SS_REALSIZEIMAGE 0x800L
+#define SS_RIGHT 0x2L
+#define SS_RIGHTJUST 0x400L
+#define SS_SIMPLE 0xbL
+#define SS_SUNKEN 0x1000L
+#define SS_USERITEM 0xaL
+#define SS_WHITEFRAME 0x9L
+#define SS_WHITERECT 0x6L
+#define DS_3DLOOK 0x4L
+#define DS_ABSALIGN 0x1L
+#define DS_CENTER 0x800L
+#define DS_CENTERMOUSE 0x1000L
+#define DS_CONTEXTHELP 0x2000L
+#define DS_CONTROL 0x400L
+#define DS_FIXEDSYS 0x8L
+#define DS_LOCALEDIT 0x20L
+#define DS_MODALFRAME 0x80L
+#define DS_NOFAILCREATE 0x10L
+#define DS_NOIDLEMSG 0x100L
+#define DS_SETFONT 0x40L
+#define DS_SETFOREGROUND 0x200L
+#define DS_SYSMODAL 0x2L
+
+/* A dialog control. */
+
+typedef struct rc_dialog_control
+{
+ /* Next control. */
+ struct rc_dialog_control *next;
+ /* ID. */
+ rc_uint_type id;
+ /* Style. */
+ rc_uint_type style;
+ /* Extended style. */
+ rc_uint_type exstyle;
+ /* X coordinate. */
+ rc_uint_type x;
+ /* Y coordinate. */
+ rc_uint_type y;
+ /* Width. */
+ rc_uint_type width;
+ /* Height. */
+ rc_uint_type height;
+ /* Class name. */
+ rc_res_id class;
+ /* Associated text. */
+ rc_res_id text;
+ /* Extra data for the window procedure. */
+ struct rc_rcdata_item *data;
+ /* Help ID. Only used in an extended dialog. */
+ rc_uint_type help;
+} rc_dialog_control;
+
+struct __attribute__ ((__packed__)) bin_dialog_control
+{
+ bfd_byte style[4];
+ bfd_byte exstyle[4];
+ bfd_byte x[2];
+ bfd_byte y[2];
+ bfd_byte width[2];
+ bfd_byte height[2];
+ bfd_byte id[2];
+};
+#define BIN_DIALOG_CONTROL_SIZE 18
+
+struct __attribute__ ((__packed__)) bin_dialogex_control
+{
+ bfd_byte help[4];
+ bfd_byte exstyle[4];
+ bfd_byte style[4];
+ bfd_byte x[2];
+ bfd_byte y[2];
+ bfd_byte width[2];
+ bfd_byte height[2];
+ bfd_byte id[4];
+};
+#define BIN_DIALOGEX_CONTROL_SIZE 24
+
+/* Control classes. These can be used as the ID field in a rc_dialog_control. */
+
+#define CTL_BUTTON 0x80
+#define CTL_EDIT 0x81
+#define CTL_STATIC 0x82
+#define CTL_LISTBOX 0x83
+#define CTL_SCROLLBAR 0x84
+#define CTL_COMBOBOX 0x85
+
+/* A fontdir resource is a list of rc_fontdir. */
+
+typedef struct rc_fontdir
+{
+ struct rc_fontdir *next;
+ /* Index of font entry. */
+ rc_uint_type index;
+ /* Length of font information. */
+ rc_uint_type length;
+ /* Font information. */
+ const bfd_byte *data;
+} rc_fontdir;
+
+struct __attribute__ ((__packed__)) bin_fontdir_item
+{
+ bfd_byte index[2];
+ bfd_byte header[54];
+ bfd_byte device_name[1];
+ /* bfd_byte face_name[]; */
+};
+
+/* A group_icon resource is a list of rc_group_icon. */
+
+typedef struct rc_group_icon
+{
+ /* Next icon in group. */
+ struct rc_group_icon *next;
+ /* Width. */
+ bfd_byte width;
+ /* Height. */
+ bfd_byte height;
+ /* Color count. */
+ bfd_byte colors;
+ /* Planes. */
+ rc_uint_type planes;
+ /* Bits per pixel. */
+ rc_uint_type bits;
+ /* Number of bytes in cursor resource. */
+ rc_uint_type bytes;
+ /* Index of cursor resource. */
+ rc_uint_type index;
+} rc_group_icon;
+
+struct __attribute__ ((__packed__)) bin_group_icon
+{
+ bfd_byte sig1[2];
+ bfd_byte sig2[2];
+ bfd_byte count[2];
+};
+#define BIN_GROUP_ICON_SIZE 6
+
+struct __attribute__ ((__packed__)) bin_group_icon_item
+{
+ bfd_byte width[1];
+ bfd_byte height[1];
+ bfd_byte colors[1];
+ bfd_byte pad[1];
+ bfd_byte planes[2];
+ bfd_byte bits[2];
+ bfd_byte bytes[4];
+ bfd_byte index[2];
+};
+#define BIN_GROUP_ICON_ITEM_SIZE 14
+
+/* A menu resource. */
+
+typedef struct rc_menu
+{
+ /* List of menuitems. */
+ struct rc_menuitem *items;
+ /* Help ID. I don't think there is any way to set this in an rc
+ file, but it can appear in the binary format. */
+ rc_uint_type help;
+} rc_menu;
+
+struct __attribute__ ((__packed__)) bin_menu
+{
+ bfd_byte sig1[2];
+ bfd_byte sig2[2];
+};
+#define BIN_MENU_SIZE 4
+
+struct __attribute__ ((__packed__)) bin_menuex
+{
+ bfd_byte sig1[2];
+ bfd_byte sig2[2];
+ bfd_byte help[4];
+};
+#define BIN_MENUEX_SIZE 8
+
+/* A menu resource is a list of rc_menuitem. */
+
+typedef struct rc_menuitem
+{
+ /* Next menu item. */
+ struct rc_menuitem *next;
+ /* Type. In a normal menu, rather than a menuex, this is the flags
+ field. */
+ rc_uint_type type;
+ /* State. This is only used in a menuex. */
+ rc_uint_type state;
+ /* Id. */
+ rc_uint_type id;
+ /* Unicode text. */
+ unichar *text;
+ /* Popup menu items for a popup. */
+ struct rc_menuitem *popup;
+ /* Help ID. This is only used in a menuex. */
+ rc_uint_type help;
+} rc_menuitem;
+
+struct __attribute__ ((__packed__)) bin_menuitem
+{
+ bfd_byte flags[2];
+ bfd_byte id[2];
+};
+#define BIN_MENUITEM_SIZE 4
+#define BIN_MENUITEM_POPUP_SIZE 2
+
+struct __attribute__ ((__packed__)) bin_menuitemex
+{
+ bfd_byte type[4];
+ bfd_byte state[4];
+ bfd_byte id[4];
+ bfd_byte flags[2];
+ /* unicode text */
+ /* if popup: align, bfd_byte help[4], align, bin_menuitemex[]; */
+};
+#define BIN_MENUITEMEX_SIZE 14
+
+/* Menu item flags. These can appear in the flags field of a rc_menuitem. */
+
+#define MENUITEM_GRAYED 0x001
+#define MENUITEM_INACTIVE 0x002
+#define MENUITEM_BITMAP 0x004
+#define MENUITEM_OWNERDRAW 0x100
+#define MENUITEM_CHECKED 0x008
+#define MENUITEM_POPUP 0x010
+#define MENUITEM_MENUBARBREAK 0x020
+#define MENUITEM_MENUBREAK 0x040
+#define MENUITEM_ENDMENU 0x080
+#define MENUITEM_HELP 0x4000
+
+/* An rcdata resource is a pointer to a list of rc_rcdata_item. */
+
+typedef struct rc_rcdata_item
+{
+ /* Next data item. */
+ struct rc_rcdata_item *next;
+ /* Type of data. */
+ enum
+ {
+ RCDATA_WORD,
+ RCDATA_DWORD,
+ RCDATA_STRING,
+ RCDATA_WSTRING,
+ RCDATA_BUFFER
+ } type;
+ union
+ {
+ rc_uint_type word;
+ rc_uint_type dword;
+ struct
+ {
+ rc_uint_type length;
+ const char *s;
+ } string;
+ struct
+ {
+ rc_uint_type length;
+ const unichar *w;
+ } wstring;
+ struct
+ {
+ rc_uint_type length;
+ const bfd_byte *data;
+ } buffer;
+ } u;
+} rc_rcdata_item;
+
+/* A stringtable resource is a pointer to a rc_stringtable. */
+
+typedef struct rc_stringtable
+{
+ /* Each stringtable resource is a list of 16 unicode strings. */
+ struct
+ {
+ /* Length of string. */
+ rc_uint_type length;
+ /* String data if length > 0. */
+ unichar *string;
+ } strings[16];
+} rc_stringtable;
+
+/* A versioninfo resource points to a rc_versioninfo. */
+
+typedef struct rc_versioninfo
+{
+ /* Fixed version information. */
+ struct rc_fixed_versioninfo *fixed;
+ /* Variable version information. */
+ struct rc_ver_info *var;
+} rc_versioninfo;
+
+struct __attribute__ ((__packed__)) bin_versioninfo
+{
+ bfd_byte size[2];
+ bfd_byte fixed_size[2];
+ bfd_byte sig2[2];
+};
+#define BIN_VERSIONINFO_SIZE 6
+
+/* The fixed portion of a versioninfo resource. */
+
+typedef struct rc_fixed_versioninfo
+{
+ /* The file version, which is two 32 bit integers. */
+ rc_uint_type file_version_ms;
+ rc_uint_type file_version_ls;
+ /* The product version, which is two 32 bit integers. */
+ rc_uint_type product_version_ms;
+ rc_uint_type product_version_ls;
+ /* The file flags mask. */
+ rc_uint_type file_flags_mask;
+ /* The file flags. */
+ rc_uint_type file_flags;
+ /* The OS type. */
+ rc_uint_type file_os;
+ /* The file type. */
+ rc_uint_type file_type;
+ /* The file subtype. */
+ rc_uint_type file_subtype;
+ /* The date, which in Windows is two 32 bit integers. */
+ rc_uint_type file_date_ms;
+ rc_uint_type file_date_ls;
+} rc_fixed_versioninfo;
+
+struct __attribute__ ((__packed__)) bin_fixed_versioninfo
+{
+ bfd_byte sig1[4];
+ bfd_byte sig2[4];
+ bfd_byte file_version[4];
+ bfd_byte file_version_ls[4];
+ bfd_byte product_version_ms[4];
+ bfd_byte product_version_ls[4];
+ bfd_byte file_flags_mask[4];
+ bfd_byte file_flags[4];
+ bfd_byte file_os[4];
+ bfd_byte file_type[4];
+ bfd_byte file_subtype[4];
+ bfd_byte file_date_ms[4];
+ bfd_byte file_date_ls[4];
+};
+#define BIN_FIXED_VERSIONINFO_SIZE 52
+
+/* A list of string version information. */
+
+typedef struct rc_ver_stringtable
+{
+ /* Next item. */
+ struct rc_ver_stringtable *next;
+ /* Language. */
+ unichar *language;
+ /* Strings. */
+ struct rc_ver_stringinfo *strings;
+} rc_ver_stringtable;
+
+/* A list of variable version information. */
+
+typedef struct rc_ver_info
+{
+ /* Next item. */
+ struct rc_ver_info *next;
+ /* Type of data. */
+ enum { VERINFO_STRING, VERINFO_VAR } type;
+ union
+ {
+ /* StringFileInfo data. */
+ struct
+ {
+ /* String tables. */
+ struct rc_ver_stringtable *stringtables;
+ } string;
+ /* VarFileInfo data. */
+ struct
+ {
+ /* Key. */
+ unichar *key;
+ /* Values. */
+ struct rc_ver_varinfo *var;
+ } var;
+ } u;
+} rc_ver_info;
+
+struct __attribute__ ((__packed__)) bin_ver_info
+{
+ bfd_byte size[2];
+ bfd_byte sig1[2];
+ bfd_byte sig2[2];
+};
+#define BIN_VER_INFO_SIZE 6
+
+/* A list of string version information. */
+
+typedef struct rc_ver_stringinfo
+{
+ /* Next string. */
+ struct rc_ver_stringinfo *next;
+ /* Key. */
+ unichar *key;
+ /* Value. */
+ unichar *value;
+} rc_ver_stringinfo;
+
+/* A list of variable version information. */
+
+typedef struct rc_ver_varinfo
+{
+ /* Next item. */
+ struct rc_ver_varinfo *next;
+ /* Language ID. */
+ rc_uint_type language;
+ /* Character set ID. */
+ rc_uint_type charset;
+} rc_ver_varinfo;
+
+typedef struct rc_toolbar_item
+{
+ struct rc_toolbar_item *next;
+ struct rc_toolbar_item *prev;
+ rc_res_id id;
+} rc_toolbar_item;
+
+struct __attribute__ ((__packed__)) bin_messagetable_item
+{
+ bfd_byte length[2];
+ bfd_byte flags[2];
+ bfd_byte data[1];
+};
+#define BIN_MESSAGETABLE_ITEM_SIZE 4
+
+#define MESSAGE_RESOURCE_UNICODE 0x0001
+
+struct __attribute__ ((__packed__)) bin_messagetable_block
+{
+ bfd_byte lowid[4];
+ bfd_byte highid[4];
+ bfd_byte offset[4];
+};
+#define BIN_MESSAGETABLE_BLOCK_SIZE 12
+
+struct __attribute__ ((__packed__)) bin_messagetable
+{
+ bfd_byte cblocks[4];
+ struct bin_messagetable_block items[1];
+};
+#define BIN_MESSAGETABLE_SIZE 8
+
+typedef struct rc_toolbar
+{
+ rc_uint_type button_width;
+ rc_uint_type button_height;
+ rc_uint_type nitems;
+ rc_toolbar_item *items;
+} rc_toolbar;
+
+struct __attribute__ ((__packed__)) bin_toolbar
+{
+ bfd_byte button_width[4];
+ bfd_byte button_height[4];
+ bfd_byte nitems[4];
+ /* { bfd_byte id[4]; } * nitems; */
+};
+#define BIN_TOOLBAR_SIZE 12
+
+extern int target_is_bigendian;
+
+typedef struct windres_bfd
+{
+ bfd *abfd;
+ asection *sec;
+ rc_uint_type kind : 4;
+} windres_bfd;
+
+#define WR_KIND_TARGET 0
+#define WR_KIND_BFD 1
+#define WR_KIND_BFD_BIN_L 2
+#define WR_KIND_BFD_BIN_B 3
+
+#define WR_KIND(PTR) (PTR)->kind
+#define WR_SECTION(PTR) (PTR)->sec
+#define WR_BFD(PTR) (PTR)->abfd
+
+extern void set_windres_bfd_content (windres_bfd *, const void *, rc_uint_type, rc_uint_type);
+extern void get_windres_bfd_content (windres_bfd *, void *, rc_uint_type, rc_uint_type);
+
+extern void windres_put_8 (windres_bfd *, void *, rc_uint_type);
+extern void windres_put_16 (windres_bfd *, void *, rc_uint_type);
+extern void windres_put_32 (windres_bfd *, void *, rc_uint_type);
+extern rc_uint_type windres_get_8 (windres_bfd *, const void *, rc_uint_type);
+extern rc_uint_type windres_get_16 (windres_bfd *, const void *, rc_uint_type);
+extern rc_uint_type windres_get_32 (windres_bfd *, const void *, rc_uint_type);
+
+extern void set_windres_bfd (windres_bfd *, bfd *, asection *, rc_uint_type);
+extern void set_windres_bfd_endianness (windres_bfd *, int);
+
+#endif
diff --git a/binutils-2.24/binutils/windmc.c b/binutils-2.24/binutils/windmc.c
new file mode 100644
index 00000000..e4f9b598
--- /dev/null
+++ b/binutils-2.24/binutils/windmc.c
@@ -0,0 +1,1172 @@
+/* windmc.c -- a program to compile Windows message files.
+ Copyright 2007, 2008, 2009, 2010, 2011
+ Free Software Foundation, Inc.
+ Written by Kai Tietz, Onevision.
+
+ 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 3 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 program can read and comile Windows message format.
+
+ It is based on information taken from the following sources:
+
+ * Microsoft documentation.
+
+ * The wmc program, written by Bertho A. Stultiens (BS). */
+
+#include "sysdep.h"
+#include <assert.h>
+#include <time.h>
+#include "bfd.h"
+#include "getopt.h"
+#include "bucomm.h"
+#include "libiberty.h"
+#include "safe-ctype.h"
+#include "obstack.h"
+
+#include "windmc.h"
+#include "windint.h"
+
+/* Defines a message compiler element item with length and offset
+ information. */
+typedef struct mc_msg_item
+{
+ rc_uint_type res_len;
+ rc_uint_type res_off;
+ struct bin_messagetable_item *res;
+} mc_msg_item;
+
+int target_is_bigendian = 0;
+const char *def_target_arch;
+
+/* Globals and static variable definitions. */
+
+/* bfd global helper struct variable. */
+static struct
+{
+ bfd *abfd;
+ asection *sec;
+} mc_bfd;
+
+/* Memory list. */
+mc_node *mc_nodes = NULL;
+static mc_node_lang **mc_nodes_lang = NULL;
+static int mc_nodes_lang_count = 0;
+static mc_keyword **mc_severity_codes = NULL;
+static int mc_severity_codes_count = 0;
+static mc_keyword **mc_facility_codes = NULL;
+static int mc_facility_codes_count = 0;
+
+/* When we are building a resource tree, we allocate everything onto
+ an obstack, so that we can free it all at once if we want. */
+#define obstack_chunk_alloc xmalloc
+#define obstack_chunk_free free
+
+/* The resource building obstack. */
+static struct obstack res_obstack;
+
+/* Flag variables. */
+/* Set by -C. Set the default code page to be used for input text file. */
+static rc_uint_type mcset_codepage_in = 0;
+
+/* Set by -O. Set the default code page to be used for output text files. */
+static rc_uint_type mcset_codepage_out = 0;
+
+/* Set by -b. .BIN filename should have .mc filename_ included for uniqueness. */
+static int mcset_prefix_bin = 0;
+
+/* The base name of the .mc file. */
+static const char *mcset_mc_basename = "unknown";
+
+/* Set by -e <ext>. Specify the extension for the header file. */
+static const char *mcset_header_ext = ".h";
+
+/* Set by -h <path>. Gives the path of where to create the C include file. */
+static const char *mcset_header_dir = "./";
+
+/* Set by -r <path>. Gives the path of where to create the RC include file
+ and the binary message resource files it includes. */
+static const char *mcset_rc_dir = "./";
+
+/* Modified by -a & -u. By -u input file is unicode, by -a is ASCII (default). */
+static int mcset_text_in_is_unicode = 0;
+
+/* Modified by -A & -U. By -U bin file is unicode (default), by -A is ASCII. */
+static int mcset_bin_out_is_unicode = 1;
+
+/* Set by -c. Sets the Customer bit in all the message ID's. */
+int mcset_custom_bit = 0;
+
+/* Set by -o. Generate OLE2 header file. Use HRESULT definition instead of
+ status code definition. */
+static int mcset_use_hresult = 0;
+
+/* Set by -m <msglen>. Generate a warning if the size of any message exceeds
+ maxmsglen characters. */
+rc_uint_type mcset_max_message_length = 0;
+
+/* Set by -d. Sets message values in header to decimal initially. */
+int mcset_out_values_are_decimal = 0;
+
+/* Set by -n. terminates all strings with null's in the message tables. */
+static int mcset_automatic_null_termination = 0;
+
+/* The type used for message id output in header. */
+unichar *mcset_msg_id_typedef = NULL;
+
+/* Set by -x path. Geberated debug C file for mapping ID's to text. */
+static const char *mcset_dbg_dir = NULL;
+
+/* getopt long name definitions. */
+static const struct option long_options[] =
+{
+ {"binprefix", no_argument, 0, 'b'},
+ {"target", required_argument, 0, 'F'},
+ {"extension", required_argument, 0, 'e'},
+ {"headerdir", required_argument, 0, 'h'},
+ {"rcdir", required_argument, 0, 'r'},
+ {"verbose", no_argument, 0, 'v'},
+ {"codepage_in", required_argument, 0, 'C'},
+ {"codepage_out", required_argument, 0, 'O'},
+ {"maxlength", required_argument, 0, 'm'},
+ {"ascii_in", no_argument, 0, 'a'},
+ {"ascii_out", no_argument, 0, 'A'},
+ {"unicode_in", no_argument, 0, 'u'},
+ {"unicode_out", no_argument, 0, 'U'},
+ {"customflag", no_argument, 0, 'c'},
+ {"decimal_values", no_argument, 0, 'd'},
+ {"hresult_use", no_argument, 0, 'o'},
+ {"nullterminate", no_argument, 0, 'n'},
+ {"xdbg", required_argument, 0, 'x'},
+ {"version", no_argument, 0, 'V'},
+ {"help", no_argument, 0, 'H'},
+ {0, no_argument, 0, 0}
+};
+
+
+/* Initialize the resource building obstack. */
+static void
+res_init (void)
+{
+ obstack_init (&res_obstack);
+}
+
+/* Allocate space on the resource building obstack. */
+void *
+res_alloc (rc_uint_type bytes)
+{
+ return obstack_alloc (&res_obstack, (size_t) bytes);
+}
+
+static FILE *
+mc_create_path_text_file (const char *path, const char *ext)
+{
+ FILE *ret;
+ size_t len = 1;
+ char *hsz;
+
+ len += (path != NULL ? strlen (path) : 0);
+ len += strlen (mcset_mc_basename);
+ len += (ext != NULL ? strlen (ext) : 0);
+ hsz = xmalloc (len);
+ sprintf (hsz, "%s%s%s", (path != NULL ? path : ""), mcset_mc_basename,
+ (ext != NULL ? ext : ""));
+ if ((ret = fopen (hsz, "wb")) == NULL)
+ fatal (_("can't create %s file `%s' for output.\n"), (ext ? ext : "text"), hsz);
+ free (hsz);
+ return ret;
+}
+
+static void
+usage (FILE *stream, int status)
+{
+ fprintf (stream, _("Usage: %s [option(s)] [input-file]\n"),
+ program_name);
+ fprintf (stream, _(" The options are:\n\
+ -a --ascii_in Read input file as ASCII file\n\
+ -A --ascii_out Write binary messages as ASCII\n\
+ -b --binprefix .bin filename is prefixed by .mc filename_ for uniqueness.\n\
+ -c --customflag Set custom flags for messages\n\
+ -C --codepage_in=<val> Set codepage when reading mc text file\n\
+ -d --decimal_values Print values to text files decimal\n\
+ -e --extension=<extension> Set header extension used on export header file\n\
+ -F --target <target> Specify output target for endianness.\n\
+ -h --headerdir=<directory> Set the export directory for headers\n\
+ -u --unicode_in Read input file as UTF16 file\n\
+ -U --unicode_out Write binary messages as UFT16\n\
+ -m --maxlength=<val> Set the maximal allowed message length\n\
+ -n --nullterminate Automatic add a zero termination to strings\n\
+ -o --hresult_use Use HRESULT definition instead of status code definition\n\
+ -O --codepage_out=<val> Set codepage used for writing text file\n\
+ -r --rcdir=<directory> Set the export directory for rc files\n\
+ -x --xdbg=<directory> Where to create the .dbg C include file\n\
+ that maps message ID's to their symbolic name.\n\
+"));
+ fprintf (stream, _("\
+ -H --help Print this help message\n\
+ -v --verbose Verbose - tells you what it's doing\n\
+ -V --version Print version information\n"));
+
+ list_supported_targets (program_name, stream);
+
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+
+ exit (status);
+}
+
+static void
+set_endianness (bfd *abfd, const char *target)
+{
+ const bfd_target *target_vec;
+
+ def_target_arch = NULL;
+ target_vec = bfd_get_target_info (target, abfd, &target_is_bigendian, NULL,
+ &def_target_arch);
+ if (! target_vec)
+ fatal ("Can't detect target endianness and architecture.");
+ if (! def_target_arch)
+ fatal ("Can't detect architecture.");
+}
+
+static int
+probe_codepage (rc_uint_type *cp, int *is_uni, const char *pswitch, int defmode)
+{
+ if (*is_uni == -1)
+ {
+ if (*cp != CP_UTF16)
+ *is_uni = defmode;
+ else
+ *is_uni = 1;
+ }
+ if (*is_uni)
+ {
+ if (*cp != 0 && *cp != CP_UTF16)
+ {
+ fprintf (stderr, _("%s: warning: "), program_name);
+ fprintf (stderr, _("A codepage was specified switch `%s' and UTF16.\n"), pswitch);
+ fprintf (stderr, _("\tcodepage settings are ignored.\n"));
+ }
+ *cp = CP_UTF16;
+ return 1;
+ }
+ if (*cp == CP_UTF16)
+ {
+ *is_uni = 1;
+ return 1;
+ }
+ if (*cp == 0)
+ *cp = 1252;
+ if (! unicode_is_valid_codepage (*cp))
+ fatal ("Code page 0x%x is unknown.", (unsigned int) *cp);
+ *is_uni = 0;
+ return 1;
+}
+
+mc_node *
+mc_add_node (void)
+{
+ mc_node *ret;
+
+ ret = res_alloc (sizeof (mc_node));
+ memset (ret, 0, sizeof (mc_node));
+ if (! mc_nodes)
+ mc_nodes = ret;
+ else
+ {
+ mc_node *h = mc_nodes;
+
+ while (h->next != NULL)
+ h = h->next;
+ h->next = ret;
+ }
+ return ret;
+}
+
+mc_node_lang *
+mc_add_node_lang (mc_node *root, const mc_keyword *lang, rc_uint_type vid)
+{
+ mc_node_lang *ret, *h, *p;
+
+ if (! lang || ! root)
+ fatal (_("try to add a ill language."));
+ ret = res_alloc (sizeof (mc_node_lang));
+ memset (ret, 0, sizeof (mc_node_lang));
+ ret->lang = lang;
+ ret->vid = vid;
+ if ((h = root->sub) == NULL)
+ root->sub = ret;
+ else
+ {
+ p = NULL;
+ while (h != NULL)
+ {
+ if (h->lang->nval > lang->nval)
+ break;
+ if (h->lang->nval == lang->nval)
+ {
+ if (h->vid > vid)
+ break;
+ if (h->vid == vid)
+ fatal ("double defined message id %ld.\n", (long) vid);
+ }
+ h = (p = h)->next;
+ }
+ ret->next = h;
+ if (! p)
+ root->sub = ret;
+ else
+ p->next = ret;
+ }
+ return ret;
+}
+
+static char *
+convert_unicode_to_ACP (const unichar *usz)
+{
+ char *s;
+ rc_uint_type l;
+
+ if (! usz)
+ return NULL;
+ codepage_from_unicode (&l, usz, &s, mcset_codepage_out);
+ if (! s)
+ fatal ("unicode string not mappable to ASCII codepage 0x%lx.\n",
+ (unsigned long) mcset_codepage_out);
+ return s;
+}
+
+static void
+write_dbg_define (FILE *fp, const unichar *sym_name, const unichar *typecast)
+{
+ char *sym;
+
+ if (!sym_name || sym_name[0] == 0)
+ return;
+ sym = convert_unicode_to_ACP (sym_name);
+ fprintf (fp, " {(");
+ if (typecast)
+ unicode_print (fp, typecast, unichar_len (typecast));
+ else
+ fprintf (fp, "DWORD");
+ fprintf (fp, ") %s, \"%s\" },\n", sym, sym);
+}
+
+static void
+write_header_define (FILE *fp, const unichar *sym_name, rc_uint_type vid, const unichar *typecast, mc_node_lang *nl)
+{
+ char *sym;
+ char *tdef = NULL;
+
+ if (!sym_name || sym_name[0] == 0)
+ {
+ if (nl != NULL)
+ {
+ if (mcset_out_values_are_decimal)
+ fprintf (fp, "//\n// MessageId: 0x%lu\n//\n", (unsigned long) vid);
+ else
+ fprintf (fp, "//\n// MessageId: 0x%lx\n//\n", (unsigned long) vid);
+ }
+ return;
+ }
+ sym = convert_unicode_to_ACP (sym_name);
+ if (typecast && typecast[0] != 0)
+ tdef = convert_unicode_to_ACP (typecast);
+ fprintf (fp, "//\n// MessageId: %s\n//\n", sym);
+ if (! mcset_out_values_are_decimal)
+ fprintf (fp, "#define %s %s%s%s 0x%lx\n\n", sym,
+ (tdef ? "(" : ""), (tdef ? tdef : ""), (tdef ? ")" : ""),
+ (unsigned long) vid);
+ else
+ fprintf (fp, "#define %s %s%s%s 0x%lu\n\n", sym,
+ (tdef ? "(" : ""), (tdef ? tdef : ""), (tdef ? ")" : ""),
+ (unsigned long) vid);
+}
+
+static int
+sort_mc_node_lang (const void *l, const void *r)
+{
+ const mc_node_lang *l1 = *((const mc_node_lang **)l);
+ const mc_node_lang *r1 = *((const mc_node_lang **)r);
+
+ if (l == r)
+ return 0;
+ if (l1->lang != r1->lang)
+ {
+ if (l1->lang->nval < r1->lang->nval)
+ return -1;
+ return 1;
+ }
+ if (l1->vid == r1->vid)
+ return 0;
+ if (l1->vid < r1->vid)
+ return -1;
+ return 1;
+}
+
+static int
+sort_keyword_by_nval (const void *l, const void *r)
+{
+ const mc_keyword *l1 = *((const mc_keyword **)l);
+ const mc_keyword *r1 = *((const mc_keyword **)r);
+ rc_uint_type len1, len2;
+ int e;
+
+ if (l == r)
+ return 0;
+ if (l1->nval != r1->nval)
+ {
+ if (l1->nval < r1->nval)
+ return -1;
+ return 1;
+ }
+ len1 = unichar_len (l1->usz);
+ len2 = unichar_len (r1->usz);
+ if (len1 <= len2)
+ e = memcmp (l1->usz, r1->usz, sizeof (unichar) * len1);
+ else
+ e = memcmp (l1->usz, r1->usz, sizeof (unichar) * len2);
+ if (e)
+ return e;
+ if (len1 < len2)
+ return -1;
+ else if (len1 > len2)
+ return 1;
+ return 0;
+}
+
+static void
+do_sorts (void)
+{
+ mc_node *h;
+ mc_node_lang *n;
+ const mc_keyword *k;
+ int i;
+
+ /* Sort message by their language and id ascending. */
+ mc_nodes_lang_count = 0;
+
+ h = mc_nodes;
+ while (h != NULL)
+ {
+ n = h->sub;
+ while (n != NULL)
+ {
+ mc_nodes_lang_count +=1;
+ n = n->next;
+ }
+ h = h->next;
+ }
+
+ if (mc_nodes_lang_count != 0)
+ {
+ h = mc_nodes;
+ i = 0;
+ mc_nodes_lang = xmalloc (sizeof (mc_node_lang *) * mc_nodes_lang_count);
+
+ while (h != NULL)
+ {
+ n = h->sub;
+ while (n != NULL)
+ {
+ mc_nodes_lang[i++] = n;
+ n = n->next;
+ }
+ h = h->next;
+ }
+ qsort (mc_nodes_lang, (size_t) mc_nodes_lang_count, sizeof (mc_node_lang *), sort_mc_node_lang);
+ }
+ /* Sort facility code definitions by there id ascending. */
+ i = 0;
+ while ((k = enum_facility (i)) != NULL)
+ ++i;
+ mc_facility_codes_count = i;
+ if (i != 0)
+ {
+ mc_facility_codes = xmalloc (sizeof (mc_keyword *) * i);
+ i = 0;
+ while ((k = enum_facility (i)) != NULL)
+ mc_facility_codes[i++] = (mc_keyword *) k;
+ qsort (mc_facility_codes, (size_t) mc_facility_codes_count, sizeof (mc_keyword *), sort_keyword_by_nval);
+ }
+
+ /* Sort severity code definitions by there id ascending. */
+ i = 0;
+ while ((k = enum_severity (i)) != NULL)
+ ++i;
+ mc_severity_codes_count = i;
+ if (i != 0)
+ {
+ mc_severity_codes = xmalloc (sizeof (mc_keyword *) * i);
+ i = 0;
+ while ((k = enum_severity (i)) != NULL)
+ mc_severity_codes[i++] = (mc_keyword *) k;
+ qsort (mc_severity_codes, (size_t) mc_severity_codes_count, sizeof (mc_keyword *), sort_keyword_by_nval);
+ }
+}
+
+static int
+mc_get_block_count (mc_node_lang **nl, int elems)
+{
+ rc_uint_type exid;
+ int i, ret;
+
+ if (! nl)
+ return 0;
+ i = 0;
+ ret = 0;
+ while (i < elems)
+ {
+ ret++;
+ exid = nl[i++]->vid;
+ while (i < elems && nl[i]->vid == exid + 1)
+ exid = nl[i++]->vid;
+ }
+ return ret;
+}
+
+static bfd *
+windmc_open_as_binary (const char *filename)
+{
+ bfd *abfd;
+
+ abfd = bfd_openw (filename, "binary");
+ if (! abfd)
+ fatal ("can't open `%s' for output", filename);
+
+ return abfd;
+}
+
+static void
+target_put_16 (void *p, rc_uint_type value)
+{
+ assert (!! p);
+
+ if (target_is_bigendian)
+ bfd_putb16 (value, p);
+ else
+ bfd_putl16 (value, p);
+}
+
+static void
+target_put_32 (void *p, rc_uint_type value)
+{
+ assert (!! p);
+
+ if (target_is_bigendian)
+ bfd_putb32 (value, p);
+ else
+ bfd_putl32 (value, p);
+}
+
+static struct bin_messagetable_item *
+mc_generate_bin_item (mc_node_lang *n, rc_uint_type *res_len)
+{
+ struct bin_messagetable_item *ret = NULL;
+ rc_uint_type len;
+
+ *res_len = 0;
+ if (mcset_bin_out_is_unicode == 1)
+ {
+ unichar *ht = n->message;
+ rc_uint_type txt_len;
+
+ txt_len = unichar_len (n->message);
+ if (mcset_automatic_null_termination && txt_len != 0)
+ {
+ while (txt_len > 0 && ht[txt_len - 1] > 0 && ht[txt_len - 1] < 0x20)
+ ht[--txt_len] = 0;
+ }
+ txt_len *= sizeof (unichar);
+ len = BIN_MESSAGETABLE_ITEM_SIZE + txt_len + sizeof (unichar);
+ ret = res_alloc ((len + 3) & ~3);
+ memset (ret, 0, (len + 3) & ~3);
+ target_put_16 (ret->length, (len + 3) & ~3);
+ target_put_16 (ret->flags, MESSAGE_RESOURCE_UNICODE);
+ txt_len = 0;
+ while (*ht != 0)
+ {
+ target_put_16 (ret->data + txt_len, *ht++);
+ txt_len += 2;
+ }
+ }
+ else
+ {
+ rc_uint_type txt_len, l;
+ char *cvt_txt;
+
+ codepage_from_unicode( &l, n->message, &cvt_txt, n->lang->lang_info.wincp);
+ if (! cvt_txt)
+ fatal ("Failed to convert message to language codepage.\n");
+ txt_len = strlen (cvt_txt);
+ if (mcset_automatic_null_termination && txt_len > 0)
+ {
+ while (txt_len > 0 && cvt_txt[txt_len - 1] > 0 && cvt_txt[txt_len - 1] < 0x20)
+ cvt_txt[--txt_len] = 0;
+ }
+ len = BIN_MESSAGETABLE_ITEM_SIZE + txt_len + 1;
+ ret = res_alloc ((len + 3) & ~3);
+ memset (ret, 0, (len + 3) & ~3);
+ target_put_16 (ret->length, (len + 3) & ~3);
+ target_put_16 (ret->flags, 0);
+ strcpy ((char *) ret->data, cvt_txt);
+ }
+ *res_len = (len + 3) & ~3;
+ return ret;
+}
+
+static void
+mc_write_blocks (struct bin_messagetable *mtbl, mc_node_lang **nl, mc_msg_item *ml, int elems)
+{
+ int i, idx = 0;
+ rc_uint_type exid;
+
+ if (! nl)
+ return;
+ i = 0;
+ while (i < elems)
+ {
+ target_put_32 (mtbl->items[idx].lowid, nl[i]->vid);
+ target_put_32 (mtbl->items[idx].highid, nl[i]->vid);
+ target_put_32 (mtbl->items[idx].offset, ml[i].res_off);
+ exid = nl[i++]->vid;
+ while (i < elems && nl[i]->vid == exid + 1)
+ {
+ target_put_32 (mtbl->items[idx].highid, nl[i]->vid);
+ exid = nl[i++]->vid;
+ }
+ ++idx;
+ }
+}
+
+static void
+set_windmc_bfd_content (const void *data, rc_uint_type off, rc_uint_type length)
+{
+ if (! bfd_set_section_contents (mc_bfd.abfd, mc_bfd.sec, data, off, length))
+ bfd_fatal ("bfd_set_section_contents");
+}
+
+static void
+windmc_write_bin (const char *filename, mc_node_lang **nl, int elems)
+{
+ unsigned long sec_length = 1;
+ int block_count, i;
+ mc_msg_item *mi;
+ struct bin_messagetable *mtbl;
+ rc_uint_type dta_off, dta_start;
+
+ if (elems <= 0)
+ return;
+ mc_bfd.abfd = windmc_open_as_binary (filename);
+ mc_bfd.sec = bfd_make_section_with_flags (mc_bfd.abfd, ".data",
+ (SEC_HAS_CONTENTS | SEC_ALLOC
+ | SEC_LOAD | SEC_DATA));
+ if (mc_bfd.sec == NULL)
+ bfd_fatal ("bfd_make_section");
+ /* Requiring this is probably a bug in BFD. */
+ mc_bfd.sec->output_section = mc_bfd.sec;
+
+ block_count = mc_get_block_count (nl, elems);
+
+ dta_off = (rc_uint_type) ((BIN_MESSAGETABLE_BLOCK_SIZE * block_count) + BIN_MESSAGETABLE_SIZE - 4);
+ dta_start = dta_off = (dta_off + 3) & ~3;
+ mi = xmalloc (sizeof (mc_msg_item) * elems);
+ mtbl = xmalloc (dta_start);
+
+ /* Clear header region. */
+ memset (mtbl, 0, dta_start);
+ target_put_32 (mtbl->cblocks, block_count);
+ /* Prepare items section for output. */
+ for (i = 0; i < elems; i++)
+ {
+ mi[i].res_off = dta_off;
+ mi[i].res = mc_generate_bin_item (nl[i], &mi[i].res_len);
+ dta_off += mi[i].res_len;
+ }
+ sec_length = (dta_off + 3) & ~3;
+ if (! bfd_set_section_size (mc_bfd.abfd, mc_bfd.sec, sec_length))
+ bfd_fatal ("bfd_set_section_size");
+ /* Make sure we write the complete block. */
+ set_windmc_bfd_content ("\0", sec_length - 1, 1);
+
+ /* Write block information. */
+ mc_write_blocks (mtbl, nl, mi, elems);
+
+ set_windmc_bfd_content (mtbl, 0, dta_start);
+
+ /* Write items. */
+ for (i = 0; i < elems; i++)
+ set_windmc_bfd_content (mi[i].res, mi[i].res_off, mi[i].res_len);
+
+ free (mtbl);
+ free (mi);
+ bfd_close (mc_bfd.abfd);
+ mc_bfd.abfd = NULL;
+ mc_bfd.sec = NULL;
+}
+
+static void
+write_bin (void)
+{
+ mc_node_lang *n = NULL;
+ int i, c;
+
+ if (! mc_nodes_lang_count)
+ return;
+
+ i = 0;
+ while (i < mc_nodes_lang_count)
+ {
+ char *nd;
+ char *filename;
+
+ if (n && n->lang == mc_nodes_lang[i]->lang)
+ {
+ i++;
+ continue;
+ }
+ n = mc_nodes_lang[i];
+ c = i + 1;
+ while (c < mc_nodes_lang_count && n->lang == mc_nodes_lang[c]->lang)
+ c++;
+ nd = convert_unicode_to_ACP (n->lang->sval);
+
+ /* Prepare filename for binary output. */
+ filename = xmalloc (strlen (nd) + 4 + 1 + strlen (mcset_mc_basename) + 1 + strlen (mcset_rc_dir));
+ strcpy (filename, mcset_rc_dir);
+ if (mcset_prefix_bin)
+ sprintf (filename + strlen (filename), "%s_", mcset_mc_basename);
+ strcat (filename, nd);
+ strcat (filename, ".bin");
+
+ /* Write message file. */
+ windmc_write_bin (filename, &mc_nodes_lang[i], (c - i));
+
+ free (filename);
+ i = c;
+ }
+}
+
+static void
+write_rc (FILE *fp)
+{
+ mc_node_lang *n;
+ int i, l;
+
+ fprintf (fp,
+ "/* Do not edit this file manually.\n"
+ " This file is autogenerated by windmc. */\n\n");
+ if (! mc_nodes_lang_count)
+ return;
+ n = NULL;
+ i = 0;
+ for (l = 0; l < mc_nodes_lang_count; l++)
+ {
+ if (n && n->lang == mc_nodes_lang[l]->lang)
+ continue;
+ ++i;
+ n = mc_nodes_lang[l];
+ fprintf (fp, "\n// Country: %s\n// Language: %s\n#pragma code_page(%u)\n",
+ n->lang->lang_info.country, n->lang->lang_info.name,
+ (unsigned) n->lang->lang_info.wincp);
+ fprintf (fp, "LANGUAGE 0x%lx, 0x%lx\n",
+ (unsigned long) (n->lang->nval & 0x3ff),
+ (unsigned long) ((n->lang->nval & 0xffff) >> 10));
+ fprintf (fp, "1 MESSAGETABLE \"");
+ if (mcset_prefix_bin)
+ fprintf (fp, "%s_", mcset_mc_basename);
+ unicode_print (fp, n->lang->sval, unichar_len (n->lang->sval));
+ fprintf (fp, ".bin\"\n");
+ }
+}
+
+static void
+write_dbg (FILE *fp)
+{
+ mc_node *h;
+
+ fprintf (fp,
+ "/* Do not edit this file manually.\n"
+ " This file is autogenerated by windmc.\n\n"
+ " This file maps each message ID value in to a text string that contains\n"
+ " the symbolic name used for it. */\n\n");
+
+ fprintf (fp,
+ "struct %sSymbolicName\n"
+ "{\n ", mcset_mc_basename);
+ if (mcset_msg_id_typedef)
+ unicode_print (fp, mcset_msg_id_typedef, unichar_len (mcset_msg_id_typedef));
+ else
+ fprintf (fp, "DWORD");
+ fprintf (fp,
+ " MessageId;\n"
+ " char *SymbolicName;\n"
+ "} %sSymbolicNames[] =\n"
+ "{\n", mcset_mc_basename);
+ h = mc_nodes;
+ while (h != NULL)
+ {
+ if (h->symbol)
+ write_dbg_define (fp, h->symbol, mcset_msg_id_typedef);
+ h = h->next;
+ }
+ fprintf (fp, " { (");
+ if (mcset_msg_id_typedef)
+ unicode_print (fp, mcset_msg_id_typedef, unichar_len (mcset_msg_id_typedef));
+ else
+ fprintf (fp, "DWORD");
+ fprintf (fp,
+ ") 0xffffffff, NULL }\n"
+ "};\n");
+}
+
+static void
+write_header (FILE *fp)
+{
+ char *s;
+ int i;
+ const mc_keyword *key;
+ mc_node *h;
+
+ fprintf (fp,
+ "/* Do not edit this file manually.\n"
+ " This file is autogenerated by windmc. */\n\n"
+ "//\n// The values are 32 bit layed out as follows:\n//\n"
+ "// 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1\n"
+ "// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0\n"
+ "// +---+-+-+-----------------------+-------------------------------+\n"
+ "// |Sev|C|R| Facility | Code |\n"
+ "// +---+-+-+-----------------------+-------------------------------+\n//\n"
+ "// where\n//\n"
+ "// C - is the Customer code flag\n//\n"
+ "// R - is a reserved bit\n//\n"
+ "// Code - is the facility's status code\n//\n");
+
+ h = mc_nodes;
+
+ fprintf (fp, "// Sev - is the severity code\n//\n");
+ if (mc_severity_codes_count != 0)
+ {
+ for (i = 0; i < mc_severity_codes_count; i++)
+ {
+ key = mc_severity_codes[i];
+ fprintf (fp, "// %s - %02lx\n", convert_unicode_to_ACP (key->usz),
+ (unsigned long) key->nval);
+ if (key->sval && key->sval[0] != 0)
+ {
+ if (! mcset_out_values_are_decimal)
+ fprintf (fp, "#define %s 0x%lx\n", convert_unicode_to_ACP (key->sval),
+ (unsigned long) key->nval);
+ else
+ fprintf (fp, "#define %s 0x%lu\n", convert_unicode_to_ACP (key->sval),
+ (unsigned long) key->nval);
+ }
+ }
+ fprintf (fp, "//\n");
+ }
+ fprintf (fp, "// Facility - is the facility code\n//\n");
+ if (mc_facility_codes_count != 0)
+ {
+ for (i = 0; i < mc_facility_codes_count; i++)
+ {
+ key = mc_facility_codes[i];
+ fprintf (fp, "// %s - %04lx\n", convert_unicode_to_ACP (key->usz),
+ (unsigned long) key->nval);
+ if (key->sval && key->sval[0] != 0)
+ {
+ if (! mcset_out_values_are_decimal)
+ fprintf (fp, "#define %s 0x%lx\n", convert_unicode_to_ACP (key->sval),
+ (unsigned long) key->nval);
+ else
+ fprintf (fp, "#define %s 0x%lu\n", convert_unicode_to_ACP (key->sval),
+ (unsigned long) key->nval);
+ }
+ }
+ fprintf (fp, "//\n");
+ }
+ fprintf (fp, "\n");
+ while (h != NULL)
+ {
+ if (h->user_text)
+ {
+ s = convert_unicode_to_ACP (h->user_text);
+ if (s)
+ fprintf (fp, "%s", s);
+ }
+ if (h->symbol)
+ write_header_define (fp, h->symbol, h->vid, mcset_msg_id_typedef, h->sub);
+ h = h->next;
+ }
+}
+
+static const char *
+mc_unify_path (const char *path)
+{
+ char *end;
+ char *hsz;
+
+ if (! path || *path == 0)
+ return "./";
+ hsz = xmalloc (strlen (path) + 2);
+ strcpy (hsz, path);
+ end = hsz + strlen (hsz);
+ if (hsz[-1] != '/' && hsz[-1] != '\\')
+ strcpy (end, "/");
+ while ((end = strchr (hsz, '\\')) != NULL)
+ *end = '/';
+ return hsz;
+}
+
+int main (int, char **);
+
+int
+main (int argc, char **argv)
+{
+ FILE *h_fp;
+ int c;
+ char *target, *input_filename;
+ int verbose;
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = argv[0];
+ xmalloc_set_program_name (program_name);
+
+ expandargv (&argc, &argv);
+
+ bfd_init ();
+ set_default_bfd_target ();
+
+ target = NULL;
+ verbose = 0;
+ input_filename = NULL;
+
+ res_init ();
+
+ while ((c = getopt_long (argc, argv, "C:F:O:h:e:m:r:x:aAbcdHunoUvV", long_options,
+ (int *) 0)) != EOF)
+ {
+ switch (c)
+ {
+ case 'b':
+ mcset_prefix_bin = 1;
+ break;
+ case 'e':
+ {
+ mcset_header_ext = optarg;
+ if (mcset_header_ext[0] != '.' && mcset_header_ext[0] != 0)
+ {
+ char *hsz = xmalloc (strlen (mcset_header_ext) + 2);
+
+ sprintf (hsz, ".%s", mcset_header_ext);
+ mcset_header_ext = hsz;
+ }
+ }
+ break;
+ case 'h':
+ mcset_header_dir = mc_unify_path (optarg);
+ break;
+ case 'r':
+ mcset_rc_dir = mc_unify_path (optarg);
+ break;
+ case 'a':
+ mcset_text_in_is_unicode = 0;
+ break;
+ case 'x':
+ if (*optarg != 0)
+ mcset_dbg_dir = mc_unify_path (optarg);
+ break;
+ case 'A':
+ mcset_bin_out_is_unicode = 0;
+ break;
+ case 'd':
+ mcset_out_values_are_decimal = 1;
+ break;
+ case 'u':
+ mcset_text_in_is_unicode = 1;
+ break;
+ case 'U':
+ mcset_bin_out_is_unicode = 1;
+ break;
+ case 'c':
+ mcset_custom_bit = 1;
+ break;
+ case 'n':
+ mcset_automatic_null_termination = 1;
+ break;
+ case 'o':
+ mcset_use_hresult = 1;
+ fatal ("option -o is not implemented until yet.\n");
+ break;
+ case 'F':
+ target = optarg;
+ break;
+ case 'v':
+ verbose ++;
+ break;
+ case 'm':
+ mcset_max_message_length = strtol (optarg, (char **) NULL, 10);
+ break;
+ case 'C':
+ mcset_codepage_in = strtol (optarg, (char **) NULL, 10);
+ break;
+ case 'O':
+ mcset_codepage_out = strtol (optarg, (char **) NULL, 10);
+ break;
+ case '?':
+ case 'H':
+ usage (stdout, 0);
+ break;
+ case 'V':
+ print_version ("windmc");
+ break;
+
+ default:
+ usage (stderr, 1);
+ break;
+ }
+ }
+ if (input_filename == NULL && optind < argc)
+ {
+ input_filename = argv[optind];
+ ++optind;
+ }
+
+ set_endianness (NULL, target);
+
+ if (input_filename == NULL)
+ {
+ fprintf (stderr, "Error: No input file was specified.\n");
+ usage (stderr, 1);
+ }
+ mc_set_inputfile (input_filename);
+
+ if (!probe_codepage (&mcset_codepage_in, &mcset_text_in_is_unicode, "codepage_in", 0))
+ usage (stderr, 1);
+ if (mcset_codepage_out == 0)
+ mcset_codepage_out = 1252;
+ if (! unicode_is_valid_codepage (mcset_codepage_out))
+ fatal ("Code page 0x%x is unknown.", (unsigned int) mcset_codepage_out);
+ if (mcset_codepage_out == CP_UTF16)
+ fatal ("UTF16 is no valid text output code page.");
+ if (verbose)
+ {
+ fprintf (stderr, "// Default target is %s and it is %s endian.\n",
+ def_target_arch, (target_is_bigendian ? "big" : "little"));
+ fprintf (stderr, "// Input codepage: 0x%x\n", (unsigned int) mcset_codepage_in);
+ fprintf (stderr, "// Output codepage: 0x%x\n", (unsigned int) mcset_codepage_out);
+ }
+
+ if (argc != optind)
+ usage (stderr, 1);
+
+ /* Initialize mcset_mc_basename. */
+ {
+ const char *bn, *bn2;
+ char *hsz;
+
+ bn = strrchr (input_filename, '/');
+ bn2 = strrchr (input_filename, '\\');
+ if (! bn)
+ bn = bn2;
+ if (bn && bn2 && bn < bn2)
+ bn = bn2;
+ if (! bn)
+ bn = input_filename;
+ else
+ bn++;
+ mcset_mc_basename = hsz = xstrdup (bn);
+
+ /* Cut of right-hand extension. */
+ if ((hsz = strrchr (hsz, '.')) != NULL)
+ *hsz = 0;
+ }
+
+ /* Load the input file and do code page transformations to UTF16. */
+ {
+ unichar *u;
+ rc_uint_type ul;
+ char *buff;
+ bfd_size_type flen;
+ FILE *fp = fopen (input_filename, "rb");
+
+ if (!fp)
+ fatal (_("unable to open file `%s' for input.\n"), input_filename);
+
+ fseek (fp, 0, SEEK_END);
+ flen = ftell (fp);
+ fseek (fp, 0, SEEK_SET);
+ buff = malloc (flen + 3);
+ memset (buff, 0, flen + 3);
+ if (fread (buff, 1, flen, fp) < flen)
+ fatal (_("unable to read contents of %s"), input_filename);
+ fclose (fp);
+ if (mcset_text_in_is_unicode != 1)
+ {
+ unicode_from_codepage (&ul, &u, buff, mcset_codepage_in);
+ if (! u)
+ fatal ("Failed to convert input to UFT16\n");
+ mc_set_content (u);
+ }
+ else
+ {
+ if ((flen & 1) != 0)
+ fatal (_("input file does not seems to be UFT16.\n"));
+ mc_set_content ((unichar *) buff);
+ }
+ free (buff);
+ }
+
+ while (yyparse ())
+ ;
+
+ do_sorts ();
+
+ h_fp = mc_create_path_text_file (mcset_header_dir, mcset_header_ext);
+ write_header (h_fp);
+ fclose (h_fp);
+
+ h_fp = mc_create_path_text_file (mcset_rc_dir, ".rc");
+ write_rc (h_fp);
+ fclose (h_fp);
+
+ if (mcset_dbg_dir != NULL)
+ {
+ h_fp = mc_create_path_text_file (mcset_dbg_dir, ".dbg");
+ write_dbg (h_fp);
+ fclose (h_fp);
+ }
+ write_bin ();
+
+ if (mc_nodes_lang)
+ free (mc_nodes_lang);
+ if (mc_severity_codes)
+ free (mc_severity_codes);
+ if (mc_facility_codes)
+ free (mc_facility_codes);
+
+ xexit (0);
+ return 0;
+}
diff --git a/binutils-2.24/binutils/windmc.h b/binutils-2.24/binutils/windmc.h
new file mode 100644
index 00000000..9ce638fb
--- /dev/null
+++ b/binutils-2.24/binutils/windmc.h
@@ -0,0 +1,99 @@
+/* windmc.h -- header file for windmc program.
+ Copyright 2007
+ Free Software Foundation, Inc.
+ Written by Kai Tietz, Onevision.
+
+ 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 3 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 "ansidecl.h"
+
+/* This is the header file for the windmc program. It defines
+ structures and declares functions used within the program. */
+
+#include "winduni.h"
+
+#ifndef WINDMC_HXX
+#define WINDMC_HXX
+
+/* Global flag variables (set by windmc.c file. */
+extern int mcset_custom_bit;
+extern int mcset_out_values_are_decimal;
+extern rc_uint_type mcset_max_message_length;
+extern unichar *mcset_msg_id_typedef;
+
+/* Lexer keyword definition and internal memory structures. */
+
+typedef struct mc_keyword
+{
+ struct mc_keyword *next;
+ const char *group_name;
+ size_t len;
+ unichar *usz;
+ int rid;
+ rc_uint_type nval;
+ unichar *sval;
+ wind_language_t lang_info;
+} mc_keyword;
+
+typedef struct mc_node_lang
+{
+ struct mc_node_lang *next;
+ rc_uint_type vid;
+ const mc_keyword *lang;
+ unichar *message;
+} mc_node_lang;
+
+typedef struct mc_node
+{
+ struct mc_node *next;
+ unichar *user_text;
+ const mc_keyword *facility;
+ const mc_keyword *severity;
+ unichar *symbol;
+ rc_uint_type id;
+ rc_uint_type vid;
+ mc_node_lang *sub;
+} mc_node;
+
+extern mc_node *mc_nodes;
+
+void mc_add_keyword (unichar *, int, const char *, rc_uint_type, unichar *);
+const mc_keyword *enum_facility (int);
+const mc_keyword *enum_severity (int);
+
+mc_node_lang *mc_add_node_lang (mc_node *, const mc_keyword *, rc_uint_type);
+mc_node *mc_add_node (void);
+
+/* Standard yacc/flex stuff. */
+int yyerror (const char *, ...);
+int yylex (void);
+int yyparse (void);
+
+/* mclex.c */
+void mc_set_inputfile (const char *);
+void mc_set_content (const unichar *);
+
+/* Lexer control variables. Used by mcparser.y file. */
+extern bfd_boolean mclex_want_nl;
+extern bfd_boolean mclex_want_line;
+extern bfd_boolean mclex_want_filename;
+
+void mc_fatal (const char *, ...);
+void mc_warn (const char *, ...);
+
+#endif
diff --git a/binutils-2.24/binutils/windres.c b/binutils-2.24/binutils/windres.c
new file mode 100644
index 00000000..64afb3ad
--- /dev/null
+++ b/binutils-2.24/binutils/windres.c
@@ -0,0 +1,1406 @@
+/* windres.c -- a program to manipulate Windows resources
+ Copyright 1997-2013 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Cygnus Support.
+ Rewritten by Kai Tietz, Onevision.
+
+ 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 3 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 program can read and write Windows resources in various
+ formats. In particular, it can act like the rc resource compiler
+ program, and it can act like the cvtres res to COFF conversion
+ program.
+
+ It is based on information taken from the following sources:
+
+ * Microsoft documentation.
+
+ * The rcl program, written by Gunther Ebert
+ <gunther.ebert@ixos-leipzig.de>.
+
+ * The res2coff program, written by Pedro A. Aranda <paag@tid.es>. */
+
+#include "sysdep.h"
+#include <assert.h>
+#include "bfd.h"
+#include "getopt.h"
+#include "bucomm.h"
+#include "libiberty.h"
+#include "safe-ctype.h"
+#include "obstack.h"
+#include "windres.h"
+
+/* Used by resrc.c at least. */
+
+int verbose = 0;
+
+int target_is_bigendian = 0;
+const char *def_target_arch;
+
+static void set_endianness (bfd *, const char *);
+
+/* An enumeration of format types. */
+
+enum res_format
+{
+ /* Unknown format. */
+ RES_FORMAT_UNKNOWN,
+ /* Textual RC file. */
+ RES_FORMAT_RC,
+ /* Binary RES file. */
+ RES_FORMAT_RES,
+ /* COFF file. */
+ RES_FORMAT_COFF
+};
+
+/* A structure used to map between format types and strings. */
+
+struct format_map
+{
+ const char *name;
+ enum res_format format;
+};
+
+/* A mapping between names and format types. */
+
+static const struct format_map format_names[] =
+{
+ { "rc", RES_FORMAT_RC },
+ { "res", RES_FORMAT_RES },
+ { "coff", RES_FORMAT_COFF },
+ { NULL, RES_FORMAT_UNKNOWN }
+};
+
+/* A mapping from file extensions to format types. */
+
+static const struct format_map format_fileexts[] =
+{
+ { "rc", RES_FORMAT_RC },
+ { "res", RES_FORMAT_RES },
+ { "exe", RES_FORMAT_COFF },
+ { "obj", RES_FORMAT_COFF },
+ { "o", RES_FORMAT_COFF },
+ { NULL, RES_FORMAT_UNKNOWN }
+};
+
+/* A list of include directories. */
+
+struct include_dir
+{
+ struct include_dir *next;
+ char *dir;
+};
+
+static struct include_dir *include_dirs;
+
+/* Static functions. */
+
+static void res_init (void);
+static int extended_menuitems (const rc_menuitem *);
+static enum res_format format_from_name (const char *, int);
+static enum res_format format_from_filename (const char *, int);
+static void usage (FILE *, int);
+static int cmp_res_entry (const void *, const void *);
+static rc_res_directory *sort_resources (rc_res_directory *);
+static void reswr_init (void);
+static const char * quot (const char *);
+
+static rc_uint_type target_get_8 (const void *, rc_uint_type);
+static void target_put_8 (void *, rc_uint_type);
+static rc_uint_type target_get_16 (const void *, rc_uint_type);
+static void target_put_16 (void *, rc_uint_type);
+static rc_uint_type target_get_32 (const void *, rc_uint_type);
+static void target_put_32 (void *, rc_uint_type);
+
+
+/* When we are building a resource tree, we allocate everything onto
+ an obstack, so that we can free it all at once if we want. */
+
+#define obstack_chunk_alloc xmalloc
+#define obstack_chunk_free free
+
+/* The resource building obstack. */
+
+static struct obstack res_obstack;
+
+/* Initialize the resource building obstack. */
+
+static void
+res_init (void)
+{
+ obstack_init (&res_obstack);
+}
+
+/* Allocate space on the resource building obstack. */
+
+void *
+res_alloc (rc_uint_type bytes)
+{
+ return obstack_alloc (&res_obstack, (size_t) bytes);
+}
+
+/* We also use an obstack to save memory used while writing out a set
+ of resources. */
+
+static struct obstack reswr_obstack;
+
+/* Initialize the resource writing obstack. */
+
+static void
+reswr_init (void)
+{
+ obstack_init (&reswr_obstack);
+}
+
+/* Allocate space on the resource writing obstack. */
+
+void *
+reswr_alloc (rc_uint_type bytes)
+{
+ return obstack_alloc (&reswr_obstack, (size_t) bytes);
+}
+
+/* Open a file using the include directory search list. */
+
+FILE *
+open_file_search (const char *filename, const char *mode, const char *errmsg,
+ char **real_filename)
+{
+ FILE *e;
+ struct include_dir *d;
+
+ e = fopen (filename, mode);
+ if (e != NULL)
+ {
+ *real_filename = xstrdup (filename);
+ return e;
+ }
+
+ if (errno == ENOENT)
+ {
+ for (d = include_dirs; d != NULL; d = d->next)
+ {
+ char *n;
+
+ n = (char *) xmalloc (strlen (d->dir) + strlen (filename) + 2);
+ sprintf (n, "%s/%s", d->dir, filename);
+ e = fopen (n, mode);
+ if (e != NULL)
+ {
+ *real_filename = n;
+ return e;
+ }
+
+ if (errno != ENOENT)
+ break;
+ }
+ }
+
+ fatal (_("can't open %s `%s': %s"), errmsg, filename, strerror (errno));
+
+ /* Return a value to avoid a compiler warning. */
+ return NULL;
+}
+
+/* Compare two resource ID's. We consider name entries to come before
+ numeric entries, because that is how they appear in the COFF .rsrc
+ section. */
+
+int
+res_id_cmp (rc_res_id a, rc_res_id b)
+{
+ if (! a.named)
+ {
+ if (b.named)
+ return 1;
+ if (a.u.id > b.u.id)
+ return 1;
+ else if (a.u.id < b.u.id)
+ return -1;
+ else
+ return 0;
+ }
+ else
+ {
+ unichar *as, *ase, *bs, *bse;
+
+ if (! b.named)
+ return -1;
+
+ as = a.u.n.name;
+ ase = as + a.u.n.length;
+ bs = b.u.n.name;
+ bse = bs + b.u.n.length;
+
+ while (as < ase)
+ {
+ int i;
+
+ if (bs >= bse)
+ return 1;
+ i = (int) *as - (int) *bs;
+ if (i != 0)
+ return i;
+ ++as;
+ ++bs;
+ }
+
+ if (bs < bse)
+ return -1;
+
+ return 0;
+ }
+}
+
+/* Print a resource ID. */
+
+void
+res_id_print (FILE *stream, rc_res_id id, int quote)
+{
+ if (! id.named)
+ fprintf (stream, "%u", (int) id.u.id);
+ else
+ {
+ if (quote)
+ unicode_print_quoted (stream, id.u.n.name, id.u.n.length);
+ else
+ unicode_print (stream, id.u.n.name, id.u.n.length);
+ }
+}
+
+/* Print a list of resource ID's. */
+
+void
+res_ids_print (FILE *stream, int cids, const rc_res_id *ids)
+{
+ int i;
+
+ for (i = 0; i < cids; i++)
+ {
+ res_id_print (stream, ids[i], 1);
+ if (i + 1 < cids)
+ fprintf (stream, ": ");
+ }
+}
+
+/* Convert an ASCII string to a resource ID. */
+
+void
+res_string_to_id (rc_res_id *res_id, const char *string)
+{
+ res_id->named = 1;
+ unicode_from_ascii (&res_id->u.n.length, &res_id->u.n.name, string);
+}
+
+/* Convert an unicode string to a resource ID. */
+void
+res_unistring_to_id (rc_res_id *res_id, const unichar *u)
+{
+ res_id->named = 1;
+ res_id->u.n.length = unichar_len (u);
+ res_id->u.n.name = unichar_dup_uppercase (u);
+}
+
+/* Define a resource. The arguments are the resource tree, RESOURCES,
+ and the location at which to put it in the tree, CIDS and IDS.
+ This returns a newly allocated rc_res_resource structure, which the
+ caller is expected to initialize. If DUPOK is non-zero, then if a
+ resource with this ID exists, it is returned. Otherwise, a warning
+ is issued, and a new resource is created replacing the existing
+ one. */
+
+rc_res_resource *
+define_resource (rc_res_directory **resources, int cids,
+ const rc_res_id *ids, int dupok)
+{
+ rc_res_entry *re = NULL;
+ int i;
+
+ assert (cids > 0);
+ for (i = 0; i < cids; i++)
+ {
+ rc_res_entry **pp;
+
+ if (*resources == NULL)
+ {
+ *resources = ((rc_res_directory *)
+ res_alloc (sizeof (rc_res_directory)));
+ (*resources)->characteristics = 0;
+ /* Using a real timestamp only serves to create non-deterministic
+ results. Use zero instead. */
+ (*resources)->time = 0;
+ (*resources)->major = 0;
+ (*resources)->minor = 0;
+ (*resources)->entries = NULL;
+ }
+
+ for (pp = &(*resources)->entries; *pp != NULL; pp = &(*pp)->next)
+ if (res_id_cmp ((*pp)->id, ids[i]) == 0)
+ break;
+
+ if (*pp != NULL)
+ re = *pp;
+ else
+ {
+ re = (rc_res_entry *) res_alloc (sizeof (rc_res_entry));
+ re->next = NULL;
+ re->id = ids[i];
+ if ((i + 1) < cids)
+ {
+ re->subdir = 1;
+ re->u.dir = NULL;
+ }
+ else
+ {
+ re->subdir = 0;
+ re->u.res = NULL;
+ }
+
+ *pp = re;
+ }
+
+ if ((i + 1) < cids)
+ {
+ if (! re->subdir)
+ {
+ fprintf (stderr, "%s: ", program_name);
+ res_ids_print (stderr, i, ids);
+ fprintf (stderr, _(": expected to be a directory\n"));
+ xexit (1);
+ }
+
+ resources = &re->u.dir;
+ }
+ }
+
+ if (re->subdir)
+ {
+ fprintf (stderr, "%s: ", program_name);
+ res_ids_print (stderr, cids, ids);
+ fprintf (stderr, _(": expected to be a leaf\n"));
+ xexit (1);
+ }
+
+ if (re->u.res != NULL)
+ {
+ if (dupok)
+ return re->u.res;
+
+ fprintf (stderr, _("%s: warning: "), program_name);
+ res_ids_print (stderr, cids, ids);
+ fprintf (stderr, _(": duplicate value\n"));
+ }
+
+ re->u.res = ((rc_res_resource *)
+ res_alloc (sizeof (rc_res_resource)));
+ memset (re->u.res, 0, sizeof (rc_res_resource));
+
+ re->u.res->type = RES_TYPE_UNINITIALIZED;
+ return re->u.res;
+}
+
+/* Define a standard resource. This is a version of define_resource
+ that just takes type, name, and language arguments. */
+
+rc_res_resource *
+define_standard_resource (rc_res_directory **resources, int type,
+ rc_res_id name, rc_uint_type language, int dupok)
+{
+ rc_res_id a[3];
+
+ a[0].named = 0;
+ a[0].u.id = type;
+ a[1] = name;
+ a[2].named = 0;
+ a[2].u.id = language;
+ return define_resource (resources, 3, a, dupok);
+}
+
+/* Comparison routine for resource sorting. */
+
+static int
+cmp_res_entry (const void *p1, const void *p2)
+{
+ const rc_res_entry **re1, **re2;
+
+ re1 = (const rc_res_entry **) p1;
+ re2 = (const rc_res_entry **) p2;
+ return res_id_cmp ((*re1)->id, (*re2)->id);
+}
+
+/* Sort the resources. */
+
+static rc_res_directory *
+sort_resources (rc_res_directory *resdir)
+{
+ int c, i;
+ rc_res_entry *re;
+ rc_res_entry **a;
+
+ if (resdir->entries == NULL)
+ return resdir;
+
+ c = 0;
+ for (re = resdir->entries; re != NULL; re = re->next)
+ ++c;
+
+ /* This is a recursive routine, so using xmalloc is probably better
+ than alloca. */
+ a = (rc_res_entry **) xmalloc (c * sizeof (rc_res_entry *));
+
+ for (i = 0, re = resdir->entries; re != NULL; re = re->next, i++)
+ a[i] = re;
+
+ qsort (a, c, sizeof (rc_res_entry *), cmp_res_entry);
+
+ resdir->entries = a[0];
+ for (i = 0; i < c - 1; i++)
+ a[i]->next = a[i + 1];
+ a[i]->next = NULL;
+
+ free (a);
+
+ /* Now sort the subdirectories. */
+
+ for (re = resdir->entries; re != NULL; re = re->next)
+ if (re->subdir)
+ re->u.dir = sort_resources (re->u.dir);
+
+ return resdir;
+}
+
+/* Return whether the dialog resource DIALOG is a DIALOG or a
+ DIALOGEX. */
+
+int
+extended_dialog (const rc_dialog *dialog)
+{
+ const rc_dialog_control *c;
+
+ if (dialog->ex != NULL)
+ return 1;
+
+ for (c = dialog->controls; c != NULL; c = c->next)
+ if (c->data != NULL || c->help != 0)
+ return 1;
+
+ return 0;
+}
+
+/* Return whether MENUITEMS are a MENU or a MENUEX. */
+
+int
+extended_menu (const rc_menu *menu)
+{
+ return extended_menuitems (menu->items);
+}
+
+static int
+extended_menuitems (const rc_menuitem *menuitems)
+{
+ const rc_menuitem *mi;
+
+ for (mi = menuitems; mi != NULL; mi = mi->next)
+ {
+ if (mi->help != 0 || mi->state != 0)
+ return 1;
+ if (mi->popup != NULL && mi->id != 0)
+ return 1;
+ if ((mi->type
+ & ~ (MENUITEM_CHECKED
+ | MENUITEM_GRAYED
+ | MENUITEM_HELP
+ | MENUITEM_INACTIVE
+ | MENUITEM_MENUBARBREAK
+ | MENUITEM_MENUBREAK))
+ != 0)
+ return 1;
+ if (mi->popup != NULL)
+ {
+ if (extended_menuitems (mi->popup))
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+/* Convert a string to a format type, or exit if it can't be done. */
+
+static enum res_format
+format_from_name (const char *name, int exit_on_error)
+{
+ const struct format_map *m;
+
+ for (m = format_names; m->name != NULL; m++)
+ if (strcasecmp (m->name, name) == 0)
+ break;
+
+ if (m->name == NULL && exit_on_error)
+ {
+ non_fatal (_("unknown format type `%s'"), name);
+ fprintf (stderr, _("%s: supported formats:"), program_name);
+ for (m = format_names; m->name != NULL; m++)
+ fprintf (stderr, " %s", m->name);
+ fprintf (stderr, "\n");
+ xexit (1);
+ }
+
+ return m->format;
+}
+
+/* Work out a format type given a file name. If INPUT is non-zero,
+ it's OK to look at the file itself. */
+
+static enum res_format
+format_from_filename (const char *filename, int input)
+{
+ const char *ext;
+ FILE *e;
+ bfd_byte b1, b2, b3, b4, b5;
+ int magic;
+
+ /* If we have an extension, see if we recognize it as implying a
+ particular format. */
+ ext = strrchr (filename, '.');
+ if (ext != NULL)
+ {
+ const struct format_map *m;
+
+ ++ext;
+ for (m = format_fileexts; m->name != NULL; m++)
+ if (strcasecmp (m->name, ext) == 0)
+ return m->format;
+ }
+
+ /* If we don't recognize the name of an output file, assume it's a
+ COFF file. */
+ if (! input)
+ return RES_FORMAT_COFF;
+
+ /* Read the first few bytes of the file to see if we can guess what
+ it is. */
+ e = fopen (filename, FOPEN_RB);
+ if (e == NULL)
+ fatal ("%s: %s", filename, strerror (errno));
+
+ b1 = getc (e);
+ b2 = getc (e);
+ b3 = getc (e);
+ b4 = getc (e);
+ b5 = getc (e);
+
+ fclose (e);
+
+ /* A PE executable starts with 0x4d 0x5a. */
+ if (b1 == 0x4d && b2 == 0x5a)
+ return RES_FORMAT_COFF;
+
+ /* A COFF .o file starts with a COFF magic number. */
+ magic = (b2 << 8) | b1;
+ switch (magic)
+ {
+ case 0x14c: /* i386 */
+ case 0x166: /* MIPS */
+ case 0x184: /* Alpha */
+ case 0x268: /* 68k */
+ case 0x1f0: /* PowerPC */
+ case 0x290: /* PA */
+ return RES_FORMAT_COFF;
+ }
+
+ /* A RES file starts with 0x0 0x0 0x0 0x0 0x20 0x0 0x0 0x0. */
+ if (b1 == 0 && b2 == 0 && b3 == 0 && b4 == 0 && b5 == 0x20)
+ return RES_FORMAT_RES;
+
+ /* If every character is printable or space, assume it's an RC file. */
+ if ((ISPRINT (b1) || ISSPACE (b1))
+ && (ISPRINT (b2) || ISSPACE (b2))
+ && (ISPRINT (b3) || ISSPACE (b3))
+ && (ISPRINT (b4) || ISSPACE (b4))
+ && (ISPRINT (b5) || ISSPACE (b5)))
+ return RES_FORMAT_RC;
+
+ /* Otherwise, we give up. */
+ fatal (_("can not determine type of file `%s'; use the -J option"),
+ filename);
+
+ /* Return something to silence the compiler warning. */
+ return RES_FORMAT_UNKNOWN;
+}
+
+/* Print a usage message and exit. */
+
+static void
+usage (FILE *stream, int status)
+{
+ fprintf (stream, _("Usage: %s [option(s)] [input-file] [output-file]\n"),
+ program_name);
+ fprintf (stream, _(" The options are:\n\
+ -i --input=<file> Name input file\n\
+ -o --output=<file> Name output file\n\
+ -J --input-format=<format> Specify input format\n\
+ -O --output-format=<format> Specify output format\n\
+ -F --target=<target> Specify COFF target\n\
+ --preprocessor=<program> Program to use to preprocess rc file\n\
+ --preprocessor-arg=<arg> Additional preprocessor argument\n\
+ -I --include-dir=<dir> Include directory when preprocessing rc file\n\
+ -D --define <sym>[=<val>] Define SYM when preprocessing rc file\n\
+ -U --undefine <sym> Undefine SYM when preprocessing rc file\n\
+ -v --verbose Verbose - tells you what it's doing\n\
+ -c --codepage=<codepage> Specify default codepage\n\
+ -l --language=<val> Set language when reading rc file\n\
+ --use-temp-file Use a temporary file instead of popen to read\n\
+ the preprocessor output\n\
+ --no-use-temp-file Use popen (default)\n"));
+#ifdef YYDEBUG
+ fprintf (stream, _("\
+ --yydebug Turn on parser debugging\n"));
+#endif
+ fprintf (stream, _("\
+ -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"));
+ fprintf (stream, _("\
+FORMAT is one of rc, res, or coff, and is deduced from the file name\n\
+extension if not specified. A single file name is an input file.\n\
+No input-file is stdin, default rc. No output-file is stdout, default rc.\n"));
+
+ list_supported_targets (program_name, stream);
+
+ if (REPORT_BUGS_TO[0] && status == 0)
+ fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+
+ exit (status);
+}
+
+/* Quote characters that will confuse the shell when we run the preprocessor. */
+
+static const char *
+quot (const char *string)
+{
+ static char *buf = 0;
+ static int buflen = 0;
+ int slen = strlen (string);
+ const char *src;
+ char *dest;
+
+ if ((buflen < slen * 2 + 2) || ! buf)
+ {
+ buflen = slen * 2 + 2;
+ if (buf)
+ free (buf);
+ buf = (char *) xmalloc (buflen);
+ }
+
+ for (src=string, dest=buf; *src; src++, dest++)
+ {
+ if (*src == '(' || *src == ')' || *src == ' ')
+ *dest++ = '\\';
+ *dest = *src;
+ }
+ *dest = 0;
+ return buf;
+}
+
+/* Long options. */
+
+enum option_values
+{
+ /* 150 isn't special; it's just an arbitrary non-ASCII char value. */
+ OPTION_PREPROCESSOR = 150,
+ OPTION_USE_TEMP_FILE,
+ OPTION_NO_USE_TEMP_FILE,
+ OPTION_YYDEBUG,
+ OPTION_INCLUDE_DIR,
+ OPTION_PREPROCESSOR_ARG
+};
+
+static const struct option long_options[] =
+{
+ {"input", required_argument, 0, 'i'},
+ {"output", required_argument, 0, 'o'},
+ {"input-format", required_argument, 0, 'J'},
+ {"output-format", required_argument, 0, 'O'},
+ {"target", required_argument, 0, 'F'},
+ {"preprocessor", required_argument, 0, OPTION_PREPROCESSOR},
+ {"preprocessor-arg", required_argument, 0, OPTION_PREPROCESSOR_ARG},
+ {"include-dir", required_argument, 0, OPTION_INCLUDE_DIR},
+ {"define", required_argument, 0, 'D'},
+ {"undefine", required_argument, 0, 'U'},
+ {"verbose", no_argument, 0, 'v'},
+ {"codepage", required_argument, 0, 'c'},
+ {"language", required_argument, 0, 'l'},
+ {"use-temp-file", no_argument, 0, OPTION_USE_TEMP_FILE},
+ {"no-use-temp-file", no_argument, 0, OPTION_NO_USE_TEMP_FILE},
+ {"yydebug", no_argument, 0, OPTION_YYDEBUG},
+ {"version", no_argument, 0, 'V'},
+ {"help", no_argument, 0, 'h'},
+ {0, no_argument, 0, 0}
+};
+
+void
+windres_add_include_dir (const char *p)
+{
+ struct include_dir *n, **pp;
+
+ /* Computing paths is often complicated and error prone.
+ The easiest way to check for mistakes is at the time
+ we add them to include_dirs. */
+ assert (p != NULL);
+ assert (*p != '\0');
+
+ n = xmalloc (sizeof *n);
+ n->next = NULL;
+ n->dir = (char * ) p;
+
+ for (pp = &include_dirs; *pp != NULL; pp = &(*pp)->next)
+ ;
+ *pp = n;
+}
+
+/* This keeps gcc happy when using -Wmissing-prototypes -Wstrict-prototypes. */
+int main (int, char **);
+
+/* The main function. */
+
+int
+main (int argc, char **argv)
+{
+ int c;
+ char *input_filename;
+ char *output_filename;
+ enum res_format input_format;
+ enum res_format input_format_tmp;
+ enum res_format output_format;
+ char *target;
+ char *preprocessor;
+ char *preprocargs;
+ const char *quotedarg;
+ int language;
+ rc_res_directory *resources;
+ int use_temp_file;
+
+#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES)
+ setlocale (LC_MESSAGES, "");
+#endif
+#if defined (HAVE_SETLOCALE)
+ setlocale (LC_CTYPE, "");
+#endif
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ program_name = argv[0];
+ xmalloc_set_program_name (program_name);
+
+ expandargv (&argc, &argv);
+
+ bfd_init ();
+ set_default_bfd_target ();
+
+ res_init ();
+
+ input_filename = NULL;
+ output_filename = NULL;
+ input_format = RES_FORMAT_UNKNOWN;
+ output_format = RES_FORMAT_UNKNOWN;
+ target = NULL;
+ preprocessor = NULL;
+ preprocargs = NULL;
+ language = 0x409; /* LANG_ENGLISH, SUBLANG_ENGLISH_US. */
+ use_temp_file = 0;
+
+ while ((c = getopt_long (argc, argv, "c:f:i:l:o:I:J:O:F:D:U:rhHvV", long_options,
+ (int *) 0)) != EOF)
+ {
+ switch (c)
+ {
+ case 'c':
+ {
+ rc_uint_type ncp;
+
+ if (optarg[0] == '0' && (optarg[1] == 'x' || optarg[1] == 'X'))
+ ncp = (rc_uint_type) strtol (optarg + 2, NULL, 16);
+ else
+ ncp = (rc_uint_type) strtol (optarg, NULL, 10);
+ if (ncp == CP_UTF16 || ! unicode_is_valid_codepage (ncp))
+ fatal (_("invalid codepage specified.\n"));
+ wind_default_codepage = wind_current_codepage = ncp;
+ }
+ break;
+
+ case 'i':
+ input_filename = optarg;
+ break;
+
+ case 'f':
+ /* For compatibility with rc we accept "-fo <name>" as being the
+ equivalent of "-o <name>". We do not advertise this fact
+ though, as we do not want users to use non-GNU like command
+ line switches. */
+ if (*optarg != 'o')
+ fatal (_("invalid option -f\n"));
+ optarg++;
+ if (* optarg == 0)
+ {
+ if (optind == argc)
+ fatal (_("No filename following the -fo option.\n"));
+ optarg = argv [optind++];
+ }
+ /* Fall through. */
+
+ case 'o':
+ output_filename = optarg;
+ break;
+
+ case 'J':
+ input_format = format_from_name (optarg, 1);
+ break;
+
+ case 'O':
+ output_format = format_from_name (optarg, 1);
+ break;
+
+ case 'F':
+ target = optarg;
+ break;
+
+ case OPTION_PREPROCESSOR:
+ preprocessor = optarg;
+ break;
+
+ case OPTION_PREPROCESSOR_ARG:
+ if (preprocargs == NULL)
+ {
+ quotedarg = quot (optarg);
+ preprocargs = xstrdup (quotedarg);
+ }
+ else
+ {
+ char *n;
+
+ quotedarg = quot (optarg);
+ n = xmalloc (strlen (preprocargs) + strlen (quotedarg) + 2);
+ sprintf (n, "%s %s", preprocargs, quotedarg);
+ free (preprocargs);
+ preprocargs = n;
+ }
+ break;
+
+ case 'D':
+ case 'U':
+ if (preprocargs == NULL)
+ {
+ quotedarg = quot (optarg);
+ preprocargs = xmalloc (strlen (quotedarg) + 3);
+ sprintf (preprocargs, "-%c%s", c, quotedarg);
+ }
+ else
+ {
+ char *n;
+
+ quotedarg = quot (optarg);
+ n = xmalloc (strlen (preprocargs) + strlen (quotedarg) + 4);
+ sprintf (n, "%s -%c%s", preprocargs, c, quotedarg);
+ free (preprocargs);
+ preprocargs = n;
+ }
+ break;
+
+ case 'r':
+ /* Ignored for compatibility with rc. */
+ break;
+
+ case 'v':
+ verbose ++;
+ break;
+
+ case 'I':
+ /* For backward compatibility, should be removed in the future. */
+ input_format_tmp = format_from_name (optarg, 0);
+ if (input_format_tmp != RES_FORMAT_UNKNOWN)
+ {
+ struct stat statbuf;
+ char modebuf[11];
+
+ if (stat (optarg, & statbuf) == 0
+ /* Coded this way to avoid importing knowledge of S_ISDIR into this file. */
+ && (mode_string (statbuf.st_mode, modebuf), modebuf[0] == 'd'))
+ /* We have a -I option with a directory name that just happens
+ to match a format name as well. eg: -I res Assume that the
+ user knows what they are doing and do not complain. */
+ ;
+ else
+ {
+ fprintf (stderr,
+ _("Option -I is deprecated for setting the input format, please use -J instead.\n"));
+ input_format = input_format_tmp;
+ break;
+ }
+ }
+ /* Fall through. */
+
+ case OPTION_INCLUDE_DIR:
+ if (preprocargs == NULL)
+ {
+ quotedarg = quot (optarg);
+ preprocargs = xmalloc (strlen (quotedarg) + 3);
+ sprintf (preprocargs, "-I%s", quotedarg);
+ }
+ else
+ {
+ char *n;
+
+ quotedarg = quot (optarg);
+ n = xmalloc (strlen (preprocargs) + strlen (quotedarg) + 4);
+ sprintf (n, "%s -I%s", preprocargs, quotedarg);
+ free (preprocargs);
+ preprocargs = n;
+ }
+
+ windres_add_include_dir (optarg);
+
+ break;
+
+ case 'l':
+ language = strtol (optarg, (char **) NULL, 16);
+ break;
+
+ case OPTION_USE_TEMP_FILE:
+ use_temp_file = 1;
+ break;
+
+ case OPTION_NO_USE_TEMP_FILE:
+ use_temp_file = 0;
+ break;
+
+#ifdef YYDEBUG
+ case OPTION_YYDEBUG:
+ yydebug = 1;
+ break;
+#endif
+
+ case 'h':
+ case 'H':
+ usage (stdout, 0);
+ break;
+
+ case 'V':
+ print_version ("windres");
+ break;
+
+ default:
+ usage (stderr, 1);
+ break;
+ }
+ }
+
+ if (input_filename == NULL && optind < argc)
+ {
+ input_filename = argv[optind];
+ ++optind;
+ }
+
+ if (output_filename == NULL && optind < argc)
+ {
+ output_filename = argv[optind];
+ ++optind;
+ }
+
+ if (argc != optind)
+ usage (stderr, 1);
+
+ if (input_format == RES_FORMAT_UNKNOWN)
+ {
+ if (input_filename == NULL)
+ input_format = RES_FORMAT_RC;
+ else
+ input_format = format_from_filename (input_filename, 1);
+ }
+
+ if (output_format == RES_FORMAT_UNKNOWN)
+ {
+ if (output_filename == NULL)
+ output_format = RES_FORMAT_RC;
+ else
+ output_format = format_from_filename (output_filename, 0);
+ }
+
+ set_endianness (NULL, target);
+
+ /* Read the input file. */
+ switch (input_format)
+ {
+ default:
+ abort ();
+ case RES_FORMAT_RC:
+ resources = read_rc_file (input_filename, preprocessor, preprocargs,
+ language, use_temp_file);
+ break;
+ case RES_FORMAT_RES:
+ resources = read_res_file (input_filename);
+ break;
+ case RES_FORMAT_COFF:
+ resources = read_coff_rsrc (input_filename, target);
+ break;
+ }
+
+ if (resources == NULL)
+ fatal (_("no resources"));
+
+ /* Sort the resources. This is required for COFF, convenient for
+ rc, and unimportant for res. */
+ resources = sort_resources (resources);
+
+ /* Write the output file. */
+ reswr_init ();
+
+ switch (output_format)
+ {
+ default:
+ abort ();
+ case RES_FORMAT_RC:
+ write_rc_file (output_filename, resources);
+ break;
+ case RES_FORMAT_RES:
+ write_res_file (output_filename, resources);
+ break;
+ case RES_FORMAT_COFF:
+ write_coff_file (output_filename, target, resources);
+ break;
+ }
+
+ xexit (0);
+ return 0;
+}
+
+static void
+set_endianness (bfd *abfd, const char *target)
+{
+ const bfd_target *target_vec;
+
+ def_target_arch = NULL;
+ target_vec = bfd_get_target_info (target, abfd, &target_is_bigendian, NULL,
+ &def_target_arch);
+ if (! target_vec)
+ fatal ("Can't detect target endianness and architecture.");
+ if (! def_target_arch)
+ fatal ("Can't detect architecture.");
+}
+
+bfd *
+windres_open_as_binary (const char *filename, int rdmode)
+{
+ bfd *abfd;
+
+ abfd = (rdmode ? bfd_openr (filename, "binary") : bfd_openw (filename, "binary"));
+ if (! abfd)
+ fatal ("can't open `%s' for %s", filename, (rdmode ? "input" : "output"));
+
+ if (rdmode && ! bfd_check_format (abfd, bfd_object))
+ fatal ("can't open `%s' for input.", filename);
+
+ return abfd;
+}
+
+void
+set_windres_bfd_endianness (windres_bfd *wrbfd, int is_bigendian)
+{
+ assert (!! wrbfd);
+ switch (WR_KIND(wrbfd))
+ {
+ case WR_KIND_BFD_BIN_L:
+ if (is_bigendian)
+ WR_KIND(wrbfd) = WR_KIND_BFD_BIN_B;
+ break;
+ case WR_KIND_BFD_BIN_B:
+ if (! is_bigendian)
+ WR_KIND(wrbfd) = WR_KIND_BFD_BIN_L;
+ break;
+ default:
+ /* only binary bfd can be overriden. */
+ abort ();
+ }
+}
+
+void
+set_windres_bfd (windres_bfd *wrbfd, bfd *abfd, asection *sec, rc_uint_type kind)
+{
+ assert (!! wrbfd);
+ switch (kind)
+ {
+ case WR_KIND_TARGET:
+ abfd = NULL;
+ sec = NULL;
+ break;
+ case WR_KIND_BFD:
+ case WR_KIND_BFD_BIN_L:
+ case WR_KIND_BFD_BIN_B:
+ assert (!! abfd);
+ assert (!!sec);
+ break;
+ default:
+ abort ();
+ }
+ WR_KIND(wrbfd) = kind;
+ WR_BFD(wrbfd) = abfd;
+ WR_SECTION(wrbfd) = sec;
+}
+
+void
+set_windres_bfd_content (windres_bfd *wrbfd, const void *data, rc_uint_type off,
+ rc_uint_type length)
+{
+ if (WR_KIND(wrbfd) != WR_KIND_TARGET)
+ {
+ if (! bfd_set_section_contents (WR_BFD(wrbfd), WR_SECTION(wrbfd), data, off, length))
+ bfd_fatal ("bfd_set_section_contents");
+ }
+ else
+ abort ();
+}
+
+void
+get_windres_bfd_content (windres_bfd *wrbfd, void *data, rc_uint_type off,
+ rc_uint_type length)
+{
+ if (WR_KIND(wrbfd) != WR_KIND_TARGET)
+ {
+ if (! bfd_get_section_contents (WR_BFD(wrbfd), WR_SECTION(wrbfd), data, off, length))
+ bfd_fatal ("bfd_get_section_contents");
+ }
+ else
+ abort ();
+}
+
+void
+windres_put_8 (windres_bfd *wrbfd, void *p, rc_uint_type value)
+{
+ switch (WR_KIND(wrbfd))
+ {
+ case WR_KIND_TARGET:
+ target_put_8 (p, value);
+ break;
+ case WR_KIND_BFD:
+ case WR_KIND_BFD_BIN_L:
+ case WR_KIND_BFD_BIN_B:
+ bfd_put_8 (WR_BFD(wrbfd), value, p);
+ break;
+ default:
+ abort ();
+ }
+}
+
+void
+windres_put_16 (windres_bfd *wrbfd, void *data, rc_uint_type value)
+{
+ switch (WR_KIND(wrbfd))
+ {
+ case WR_KIND_TARGET:
+ target_put_16 (data, value);
+ break;
+ case WR_KIND_BFD:
+ case WR_KIND_BFD_BIN_B:
+ bfd_put_16 (WR_BFD(wrbfd), value, data);
+ break;
+ case WR_KIND_BFD_BIN_L:
+ bfd_putl16 (value, data);
+ break;
+ default:
+ abort ();
+ }
+}
+
+void
+windres_put_32 (windres_bfd *wrbfd, void *data, rc_uint_type value)
+{
+ switch (WR_KIND(wrbfd))
+ {
+ case WR_KIND_TARGET:
+ target_put_32 (data, value);
+ break;
+ case WR_KIND_BFD:
+ case WR_KIND_BFD_BIN_B:
+ bfd_put_32 (WR_BFD(wrbfd), value, data);
+ break;
+ case WR_KIND_BFD_BIN_L:
+ bfd_putl32 (value, data);
+ break;
+ default:
+ abort ();
+ }
+}
+
+rc_uint_type
+windres_get_8 (windres_bfd *wrbfd, const void *data, rc_uint_type length)
+{
+ if (length < 1)
+ fatal ("windres_get_8: unexpected eob.");
+ switch (WR_KIND(wrbfd))
+ {
+ case WR_KIND_TARGET:
+ return target_get_8 (data, length);
+ case WR_KIND_BFD:
+ case WR_KIND_BFD_BIN_B:
+ case WR_KIND_BFD_BIN_L:
+ return bfd_get_8 (WR_BFD(wrbfd), data);
+ default:
+ abort ();
+ }
+ return 0;
+}
+
+rc_uint_type
+windres_get_16 (windres_bfd *wrbfd, const void *data, rc_uint_type length)
+{
+ if (length < 2)
+ fatal ("windres_get_16: unexpected eob.");
+ switch (WR_KIND(wrbfd))
+ {
+ case WR_KIND_TARGET:
+ return target_get_16 (data, length);
+ case WR_KIND_BFD:
+ case WR_KIND_BFD_BIN_B:
+ return bfd_get_16 (WR_BFD(wrbfd), data);
+ case WR_KIND_BFD_BIN_L:
+ return bfd_getl16 (data);
+ default:
+ abort ();
+ }
+ return 0;
+}
+
+rc_uint_type
+windres_get_32 (windres_bfd *wrbfd, const void *data, rc_uint_type length)
+{
+ if (length < 4)
+ fatal ("windres_get_32: unexpected eob.");
+ switch (WR_KIND(wrbfd))
+ {
+ case WR_KIND_TARGET:
+ return target_get_32 (data, length);
+ case WR_KIND_BFD:
+ case WR_KIND_BFD_BIN_B:
+ return bfd_get_32 (WR_BFD(wrbfd), data);
+ case WR_KIND_BFD_BIN_L:
+ return bfd_getl32 (data);
+ default:
+ abort ();
+ }
+ return 0;
+}
+
+static rc_uint_type
+target_get_8 (const void *p, rc_uint_type length)
+{
+ rc_uint_type ret;
+
+ if (length < 1)
+ fatal ("Resource too small for getting 8-bit value.");
+
+ ret = (rc_uint_type) *((const bfd_byte *) p);
+ return ret & 0xff;
+}
+
+static rc_uint_type
+target_get_16 (const void *p, rc_uint_type length)
+{
+ if (length < 2)
+ fatal ("Resource too small for getting 16-bit value.");
+
+ if (target_is_bigendian)
+ return bfd_getb16 (p);
+ else
+ return bfd_getl16 (p);
+}
+
+static rc_uint_type
+target_get_32 (const void *p, rc_uint_type length)
+{
+ if (length < 4)
+ fatal ("Resource too small for getting 32-bit value.");
+
+ if (target_is_bigendian)
+ return bfd_getb32 (p);
+ else
+ return bfd_getl32 (p);
+}
+
+static void
+target_put_8 (void *p, rc_uint_type value)
+{
+ assert (!! p);
+ *((bfd_byte *) p)=(bfd_byte) value;
+}
+
+static void
+target_put_16 (void *p, rc_uint_type value)
+{
+ assert (!! p);
+
+ if (target_is_bigendian)
+ bfd_putb16 (value, p);
+ else
+ bfd_putl16 (value, p);
+}
+
+static void
+target_put_32 (void *p, rc_uint_type value)
+{
+ assert (!! p);
+
+ if (target_is_bigendian)
+ bfd_putb32 (value, p);
+ else
+ bfd_putl32 (value, p);
+}
+
+static int isInComment = 0;
+
+int wr_printcomment (FILE *e, const char *fmt, ...)
+{
+ va_list arg;
+ int r = 0;
+
+ if (isInComment)
+ r += fprintf (e, "\n ");
+ else
+ fprintf (e, "/* ");
+ isInComment = 1;
+ if (fmt == NULL)
+ return r;
+ va_start (arg, fmt);
+ r += vfprintf (e, fmt, arg);
+ va_end (arg);
+ return r;
+}
+
+int wr_print (FILE *e, const char *fmt, ...)
+{
+ va_list arg;
+ int r = 0;
+ if (isInComment)
+ r += fprintf (e, ". */\n");
+ isInComment = 0;
+ if (! fmt)
+ return r;
+ va_start (arg, fmt);
+ r += vfprintf (e, fmt, arg);
+ va_end (arg);
+ return r;
+}
diff --git a/binutils-2.24/binutils/windres.h b/binutils-2.24/binutils/windres.h
new file mode 100644
index 00000000..bd6dd053
--- /dev/null
+++ b/binutils-2.24/binutils/windres.h
@@ -0,0 +1,123 @@
+/* windres.h -- header file for windres program.
+ Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2011
+ Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Cygnus Support.
+ Rewritten by Kai Tietz, Onevision.
+
+ 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 3 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 "ansidecl.h"
+
+/* This is the header file for the windres program. It defines
+ structures and declares functions used within the program. */
+
+#include "winduni.h"
+#include "windint.h"
+
+extern int verbose;
+
+/* Function declarations. */
+
+extern rc_res_directory *read_rc_file (const char *, const char *, const char *, int, int);
+extern rc_res_directory *read_res_file (const char *);
+extern rc_res_directory *read_coff_rsrc (const char *, const char *);
+extern void write_rc_file (const char *, const rc_res_directory *);
+extern void write_res_file (const char *, const rc_res_directory *);
+extern void write_coff_file (const char *, const char *, const rc_res_directory *);
+
+extern rc_res_resource *bin_to_res (windres_bfd *, rc_res_id, const bfd_byte *,
+ rc_uint_type);
+extern rc_uint_type res_to_bin (windres_bfd *, rc_uint_type, const rc_res_resource *);
+
+extern FILE *open_file_search (const char *, const char *, const char *, char **);
+
+extern void *res_alloc (rc_uint_type);
+extern void *reswr_alloc (rc_uint_type);
+
+/* Resource ID handling. */
+
+extern int res_id_cmp (rc_res_id, rc_res_id);
+extern void res_id_print (FILE *, rc_res_id, int);
+extern void res_ids_print (FILE *, int, const rc_res_id *);
+extern void res_string_to_id (rc_res_id *, const char *);
+extern void res_unistring_to_id (rc_res_id *, const unichar *);
+
+/* Manipulation of the resource tree. */
+
+extern rc_res_resource *define_resource (rc_res_directory **, int, const rc_res_id *,
+ int);
+extern rc_res_resource *define_standard_resource (rc_res_directory **, int, rc_res_id,
+ rc_uint_type, int);
+
+extern int extended_dialog (const rc_dialog *);
+extern int extended_menu (const rc_menu *);
+
+/* Communication between the rc file support and the parser and lexer. */
+
+extern int yydebug;
+extern char *rc_filename;
+extern int rc_lineno;
+
+extern int yyparse (void);
+extern int yylex (void);
+extern void yyerror (const char *);
+extern void rcparse_warning (const char *);
+extern void rcparse_set_language (int);
+extern void rcparse_discard_strings (void);
+extern void rcparse_rcdata (void);
+extern void rcparse_normal (void);
+
+extern void define_accelerator (rc_res_id, const rc_res_res_info *, rc_accelerator *);
+extern void define_bitmap (rc_res_id, const rc_res_res_info *, const char *);
+extern void define_cursor (rc_res_id, const rc_res_res_info *, const char *);
+extern void define_dialog (rc_res_id, const rc_res_res_info *, const rc_dialog *);
+extern rc_dialog_control *define_control (const rc_res_id, rc_uint_type, rc_uint_type,
+ rc_uint_type, rc_uint_type, rc_uint_type,
+ const rc_res_id, rc_uint_type, rc_uint_type);
+extern rc_dialog_control *define_icon_control (rc_res_id, rc_uint_type, rc_uint_type,
+ rc_uint_type, rc_uint_type, rc_uint_type,
+ rc_uint_type, rc_rcdata_item *,
+ rc_dialog_ex *);
+extern void define_font (rc_res_id, const rc_res_res_info *, const char *);
+extern void define_icon (rc_res_id, const rc_res_res_info *, const char *);
+extern void define_menu (rc_res_id, const rc_res_res_info *, rc_menuitem *);
+extern rc_menuitem *define_menuitem (const unichar *, rc_uint_type, rc_uint_type,
+ rc_uint_type, rc_uint_type, rc_menuitem *);
+extern void define_messagetable (rc_res_id, const rc_res_res_info *, const char *);
+extern void define_rcdata (rc_res_id, const rc_res_res_info *, rc_rcdata_item *);
+extern void define_rcdata_file (rc_res_id, const rc_res_res_info *, const char *);
+extern rc_rcdata_item *define_rcdata_string (const char *, rc_uint_type);
+extern rc_rcdata_item *define_rcdata_unistring (const unichar *, rc_uint_type);
+extern rc_rcdata_item *define_rcdata_number (rc_uint_type, int);
+extern void define_stringtable (const rc_res_res_info *, rc_uint_type, const unichar *, int);
+extern void define_user_data (rc_res_id, rc_res_id, const rc_res_res_info *, rc_rcdata_item *);
+extern void define_toolbar (rc_res_id, rc_res_res_info *, rc_uint_type ,rc_uint_type ,rc_toolbar_item *);
+extern void define_user_file (rc_res_id, rc_res_id, const rc_res_res_info *, const char *);
+extern void define_versioninfo (rc_res_id, rc_uint_type, rc_fixed_versioninfo *, rc_ver_info *);
+extern rc_ver_info *append_ver_stringfileinfo (rc_ver_info *, rc_ver_stringtable *);
+extern rc_ver_stringtable *append_ver_stringtable (rc_ver_stringtable *, const char *, rc_ver_stringinfo *);
+extern rc_ver_info *append_ver_varfileinfo (rc_ver_info *, const unichar *, rc_ver_varinfo *);
+extern rc_ver_stringinfo *append_verval (rc_ver_stringinfo *, const unichar *, const unichar *);
+extern rc_ver_varinfo *append_vertrans (rc_ver_varinfo *, rc_uint_type, rc_uint_type);
+
+extern bfd *windres_open_as_binary (const char *, int);
+extern void windres_add_include_dir (const char *);
+
+extern int wr_printcomment (FILE *, const char *, ...);
+extern int wr_print (FILE *, const char *, ...);
+#define wr_print_flush(FP) wr_print ((FP),NULL)
diff --git a/binutils-2.24/binutils/winduni.c b/binutils-2.24/binutils/winduni.c
new file mode 100644
index 00000000..f3fb2807
--- /dev/null
+++ b/binutils-2.24/binutils/winduni.c
@@ -0,0 +1,905 @@
+/* winduni.c -- unicode support for the windres program.
+ Copyright 1997-2013 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Cygnus Support.
+ Rewritten by Kai Tietz, Onevision.
+
+ 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 3 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 file contains unicode support routines for the windres
+ program. Ideally, we would have generic unicode support which
+ would work on all systems. However, we don't. Instead, on a
+ Windows host, we are prepared to call some Windows routines. This
+ means that we will generate different output on Windows and Unix
+ hosts, but that seems better than not really supporting unicode at
+ all. */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h" /* for xstrdup */
+#include "bucomm.h"
+/* Must be include before windows.h and winnls.h. */
+#if defined (_WIN32) || defined (__CYGWIN__)
+#include <windows.h>
+#include <winnls.h>
+#endif
+#include "winduni.h"
+#include "safe-ctype.h"
+
+#if HAVE_ICONV
+#include <iconv.h>
+#endif
+
+static rc_uint_type wind_WideCharToMultiByte (rc_uint_type, const unichar *, char *, rc_uint_type);
+static rc_uint_type wind_MultiByteToWideChar (rc_uint_type, const char *, unichar *, rc_uint_type);
+static int unichar_isascii (const unichar *, rc_uint_type);
+
+/* Convert an ASCII string to a unicode string. We just copy it,
+ expanding chars to shorts, rather than doing something intelligent. */
+
+#if !defined (_WIN32) && !defined (__CYGWIN__)
+
+/* Codepages mapped. */
+static local_iconv_map codepages[] =
+{
+ { 0, "MS-ANSI" },
+ { 1, "WINDOWS-1252" },
+ { 437, "MS-ANSI" },
+ { 737, "MS-GREEK" },
+ { 775, "WINBALTRIM" },
+ { 850, "MS-ANSI" },
+ { 852, "MS-EE" },
+ { 857, "MS-TURK" },
+ { 862, "CP862" },
+ { 864, "CP864" },
+ { 866, "MS-CYRL" },
+ { 874, "WINDOWS-874" },
+ { 932, "CP932" },
+ { 936, "CP936" },
+ { 949, "CP949" },
+ { 950, "CP950" },
+ { 1250, "WINDOWS-1250" },
+ { 1251, "WINDOWS-1251" },
+ { 1252, "WINDOWS-1252" },
+ { 1253, "WINDOWS-1253" },
+ { 1254, "WINDOWS-1254" },
+ { 1255, "WINDOWS-1255" },
+ { 1256, "WINDOWS-1256" },
+ { 1257, "WINDOWS-1257" },
+ { 1258, "WINDOWS-1258" },
+ { CP_UTF7, "UTF-7" },
+ { CP_UTF8, "UTF-8" },
+ { CP_UTF16, "UTF-16LE" },
+ { (rc_uint_type) -1, NULL }
+};
+
+/* Languages supported. */
+static const wind_language_t languages[] =
+{
+ { 0x0000, 437, 1252, "Neutral", "Neutral" },
+ { 0x0401, 864, 1256, "Arabic", "Saudi Arabia" }, { 0x0402, 866, 1251, "Bulgarian", "Bulgaria" },
+ { 0x0403, 850, 1252, "Catalan", "Spain" }, { 0x0404, 950, 950, "Chinese", "Taiwan" },
+ { 0x0405, 852, 1250, "Czech", "Czech Republic" }, { 0x0406, 850, 1252, "Danish", "Denmark" },
+ { 0x0407, 850, 1252, "German", "Germany" }, { 0x0408, 737, 1253, "Greek", "Greece" },
+ { 0x0409, 437, 1252, "English", "United States" }, { 0x040A, 850, 1252, "Spanish - Traditional Sort", "Spain" },
+ { 0x040B, 850, 1252, "Finnish", "Finland" }, { 0x040C, 850, 1252, "French", "France" },
+ { 0x040D, 862, 1255, "Hebrew", "Israel" }, { 0x040E, 852, 1250, "Hungarian", "Hungary" },
+ { 0x040F, 850, 1252, "Icelandic", "Iceland" }, { 0x0410, 850, 1252, "Italian", "Italy" },
+ { 0x0411, 932, 932, "Japanese", "Japan" }, { 0x0412, 949, 949, "Korean", "Korea (south)" },
+ { 0x0413, 850, 1252, "Dutch", "Netherlands" }, { 0x0414, 850, 1252, "Norwegian (Bokm\345l)", "Norway" },
+ { 0x0415, 852, 1250, "Polish", "Poland" }, { 0x0416, 850, 1252, "Portuguese", "Brazil" },
+ { 0x0418, 852, 1250, "Romanian", "Romania" }, { 0x0419, 866, 1251, "Russian", "Russia" },
+ { 0x041A, 852, 1250, "Croatian", "Croatia" }, { 0x041B, 852, 1250, "Slovak", "Slovakia" },
+ { 0x041C, 852, 1250, "Albanian", "Albania" }, { 0x041D, 850, 1252, "Swedish", "Sweden" },
+ { 0x041E, 874, 874, "Thai", "Thailand" }, { 0x041F, 857, 1254, "Turkish", "Turkey" },
+ { 0x0421, 850, 1252, "Indonesian", "Indonesia" }, { 0x0422, 866, 1251, "Ukrainian", "Ukraine" },
+ { 0x0423, 866, 1251, "Belarusian", "Belarus" }, { 0x0424, 852, 1250, "Slovene", "Slovenia" },
+ { 0x0425, 775, 1257, "Estonian", "Estonia" }, { 0x0426, 775, 1257, "Latvian", "Latvia" },
+ { 0x0427, 775, 1257, "Lithuanian", "Lithuania" },
+ { 0x0429, 864, 1256, "Arabic", "Farsi" }, { 0x042A,1258, 1258, "Vietnamese", "Vietnam" },
+ { 0x042D, 850, 1252, "Basque", "Spain" },
+ { 0x042F, 866, 1251, "Macedonian", "Former Yugoslav Republic of Macedonia" },
+ { 0x0436, 850, 1252, "Afrikaans", "South Africa" },
+ { 0x0438, 850, 1252, "Faroese", "Faroe Islands" },
+ { 0x043C, 437, 1252, "Irish", "Ireland" },
+ { 0x043E, 850, 1252, "Malay", "Malaysia" },
+ { 0x0801, 864, 1256, "Arabic", "Iraq" },
+ { 0x0804, 936, 936, "Chinese (People's republic of China)", "People's republic of China" },
+ { 0x0807, 850, 1252, "German", "Switzerland" },
+ { 0x0809, 850, 1252, "English", "United Kingdom" }, { 0x080A, 850, 1252, "Spanish", "Mexico" },
+ { 0x080C, 850, 1252, "French", "Belgium" },
+ { 0x0810, 850, 1252, "Italian", "Switzerland" },
+ { 0x0813, 850, 1252, "Dutch", "Belgium" }, { 0x0814, 850, 1252, "Norwegian (Nynorsk)", "Norway" },
+ { 0x0816, 850, 1252, "Portuguese", "Portugal" },
+ { 0x081A, 852, 1252, "Serbian (latin)", "Yugoslavia" },
+ { 0x081D, 850, 1252, "Swedish (Finland)", "Finland" },
+ { 0x0C01, 864, 1256, "Arabic", "Egypt" },
+ { 0x0C04, 950, 950, "Chinese", "Hong Kong" },
+ { 0x0C07, 850, 1252, "German", "Austria" },
+ { 0x0C09, 850, 1252, "English", "Australia" }, { 0x0C0A, 850, 1252, "Spanish - International Sort", "Spain" },
+ { 0x0C0C, 850, 1252, "French", "Canada"},
+ { 0x0C1A, 855, 1251, "Serbian (Cyrillic)", "Serbia" },
+ { 0x1001, 864, 1256, "Arabic", "Libya" },
+ { 0x1004, 936, 936, "Chinese", "Singapore" },
+ { 0x1007, 850, 1252, "German", "Luxembourg" },
+ { 0x1009, 850, 1252, "English", "Canada" },
+ { 0x100A, 850, 1252, "Spanish", "Guatemala" },
+ { 0x100C, 850, 1252, "French", "Switzerland" },
+ { 0x1401, 864, 1256, "Arabic", "Algeria" },
+ { 0x1407, 850, 1252, "German", "Liechtenstein" },
+ { 0x1409, 850, 1252, "English", "New Zealand" }, { 0x140A, 850, 1252, "Spanish", "Costa Rica" },
+ { 0x140C, 850, 1252, "French", "Luxembourg" },
+ { 0x1801, 864, 1256, "Arabic", "Morocco" },
+ { 0x1809, 850, 1252, "English", "Ireland" }, { 0x180A, 850, 1252, "Spanish", "Panama" },
+ { 0x180C, 850, 1252, "French", "Monaco" },
+ { 0x1C01, 864, 1256, "Arabic", "Tunisia" },
+ { 0x1C09, 437, 1252, "English", "South Africa" }, { 0x1C0A, 850, 1252, "Spanish", "Dominican Republic" },
+ { 0x2001, 864, 1256, "Arabic", "Oman" },
+ { 0x2009, 850, 1252, "English", "Jamaica" }, { 0x200A, 850, 1252, "Spanish", "Venezuela" },
+ { 0x2401, 864, 1256, "Arabic", "Yemen" },
+ { 0x2409, 850, 1252, "English", "Caribbean" }, { 0x240A, 850, 1252, "Spanish", "Colombia" },
+ { 0x2801, 864, 1256, "Arabic", "Syria" },
+ { 0x2809, 850, 1252, "English", "Belize" }, { 0x280A, 850, 1252, "Spanish", "Peru" },
+ { 0x2C01, 864, 1256, "Arabic", "Jordan" },
+ { 0x2C09, 437, 1252, "English", "Trinidad & Tobago" },{ 0x2C0A, 850, 1252, "Spanish", "Argentina" },
+ { 0x3001, 864, 1256, "Arabic", "Lebanon" },
+ { 0x3009, 437, 1252, "English", "Zimbabwe" }, { 0x300A, 850, 1252, "Spanish", "Ecuador" },
+ { 0x3401, 864, 1256, "Arabic", "Kuwait" },
+ { 0x3409, 437, 1252, "English", "Philippines" }, { 0x340A, 850, 1252, "Spanish", "Chile" },
+ { 0x3801, 864, 1256, "Arabic", "United Arab Emirates" },
+ { 0x380A, 850, 1252, "Spanish", "Uruguay" },
+ { 0x3C01, 864, 1256, "Arabic", "Bahrain" },
+ { 0x3C0A, 850, 1252, "Spanish", "Paraguay" },
+ { 0x4001, 864, 1256, "Arabic", "Qatar" },
+ { 0x400A, 850, 1252, "Spanish", "Bolivia" },
+ { 0x440A, 850, 1252, "Spanish", "El Salvador" },
+ { 0x480A, 850, 1252, "Spanish", "Honduras" },
+ { 0x4C0A, 850, 1252, "Spanish", "Nicaragua" },
+ { 0x500A, 850, 1252, "Spanish", "Puerto Rico" },
+ { (unsigned) -1, 0, 0, NULL, NULL }
+};
+
+#endif
+
+/* Specifies the default codepage to be used for unicode
+ transformations. By default this is CP_ACP. */
+rc_uint_type wind_default_codepage = CP_ACP;
+
+/* Specifies the currently used codepage for unicode
+ transformations. By default this is CP_ACP. */
+rc_uint_type wind_current_codepage = CP_ACP;
+
+/* Convert an ASCII string to a unicode string. We just copy it,
+ expanding chars to shorts, rather than doing something intelligent. */
+
+void
+unicode_from_ascii (rc_uint_type *length, unichar **unicode, const char *ascii)
+{
+ unicode_from_codepage (length, unicode, ascii, wind_current_codepage);
+}
+
+/* Convert an ASCII string with length A_LENGTH to a unicode string. We just
+ copy it, expanding chars to shorts, rather than doing something intelligent.
+ This routine converts also \0 within a string. */
+
+void
+unicode_from_ascii_len (rc_uint_type *length, unichar **unicode, const char *ascii, rc_uint_type a_length)
+{
+ char *tmp, *p;
+ rc_uint_type tlen, elen, idx = 0;
+
+ *unicode = NULL;
+
+ if (!a_length)
+ {
+ if (length)
+ *length = 0;
+ return;
+ }
+
+ /* Make sure we have zero terminated string. */
+ p = tmp = (char *) alloca (a_length + 1);
+ memcpy (tmp, ascii, a_length);
+ tmp[a_length] = 0;
+
+ while (a_length > 0)
+ {
+ unichar *utmp, *up;
+
+ tlen = strlen (p);
+
+ if (tlen > a_length)
+ tlen = a_length;
+ if (*p == 0)
+ {
+ /* Make room for one more character. */
+ utmp = (unichar *) res_alloc (sizeof (unichar) * (idx + 1));
+ if (idx > 0)
+ {
+ memcpy (utmp, *unicode, idx * sizeof (unichar));
+ }
+ *unicode = utmp;
+ utmp[idx++] = 0;
+ --a_length;
+ p++;
+ continue;
+ }
+ utmp = NULL;
+ elen = 0;
+ elen = wind_MultiByteToWideChar (wind_current_codepage, p, NULL, 0);
+ if (elen)
+ {
+ utmp = ((unichar *) res_alloc (elen + sizeof (unichar) * 2));
+ wind_MultiByteToWideChar (wind_current_codepage, p, utmp, elen);
+ elen /= sizeof (unichar);
+ elen --;
+ }
+ else
+ {
+ /* Make room for one more character. */
+ utmp = (unichar *) res_alloc (sizeof (unichar) * (idx + 1));
+ if (idx > 0)
+ {
+ memcpy (utmp, *unicode, idx * sizeof (unichar));
+ }
+ *unicode = utmp;
+ utmp[idx++] = ((unichar) *p) & 0xff;
+ --a_length;
+ p++;
+ continue;
+ }
+ p += tlen;
+ a_length -= tlen;
+
+ up = (unichar *) res_alloc (sizeof (unichar) * (idx + elen));
+ if (idx > 0)
+ memcpy (up, *unicode, idx * sizeof (unichar));
+
+ *unicode = up;
+ if (elen)
+ memcpy (&up[idx], utmp, sizeof (unichar) * elen);
+
+ idx += elen;
+ }
+
+ if (length)
+ *length = idx;
+}
+
+/* Convert an unicode string to an ASCII string. We just copy it,
+ shrink shorts to chars, rather than doing something intelligent.
+ Shorts with not within the char range are replaced by '_'. */
+
+void
+ascii_from_unicode (rc_uint_type *length, const unichar *unicode, char **ascii)
+{
+ codepage_from_unicode (length, unicode, ascii, wind_current_codepage);
+}
+
+/* Print the unicode string UNICODE to the file E. LENGTH is the
+ number of characters to print, or -1 if we should print until the
+ end of the string. FIXME: On a Windows host, we should be calling
+ some Windows function, probably WideCharToMultiByte. */
+
+void
+unicode_print (FILE *e, const unichar *unicode, rc_uint_type length)
+{
+ while (1)
+ {
+ unichar ch;
+
+ if (length == 0)
+ return;
+ if ((bfd_signed_vma) length > 0)
+ --length;
+
+ ch = *unicode;
+
+ if (ch == 0 && (bfd_signed_vma) length < 0)
+ return;
+
+ ++unicode;
+
+ if ((ch & 0x7f) == ch)
+ {
+ if (ch == '\\')
+ fputs ("\\\\", e);
+ else if (ch == '"')
+ fputs ("\"\"", e);
+ else if (ISPRINT (ch))
+ putc (ch, e);
+ else
+ {
+ switch (ch)
+ {
+ case ESCAPE_A:
+ fputs ("\\a", e);
+ break;
+
+ case ESCAPE_B:
+ fputs ("\\b", e);
+ break;
+
+ case ESCAPE_F:
+ fputs ("\\f", e);
+ break;
+
+ case ESCAPE_N:
+ fputs ("\\n", e);
+ break;
+
+ case ESCAPE_R:
+ fputs ("\\r", e);
+ break;
+
+ case ESCAPE_T:
+ fputs ("\\t", e);
+ break;
+
+ case ESCAPE_V:
+ fputs ("\\v", e);
+ break;
+
+ default:
+ fprintf (e, "\\%03o", (unsigned int) ch);
+ break;
+ }
+ }
+ }
+ else if ((ch & 0xff) == ch)
+ fprintf (e, "\\%03o", (unsigned int) ch);
+ else
+ fprintf (e, "\\x%04x", (unsigned int) ch);
+ }
+}
+
+/* Print a unicode string to a file. */
+
+void
+ascii_print (FILE *e, const char *s, rc_uint_type length)
+{
+ while (1)
+ {
+ char ch;
+
+ if (length == 0)
+ return;
+ if ((bfd_signed_vma) length > 0)
+ --length;
+
+ ch = *s;
+
+ if (ch == 0 && (bfd_signed_vma) length < 0)
+ return;
+
+ ++s;
+
+ if ((ch & 0x7f) == ch)
+ {
+ if (ch == '\\')
+ fputs ("\\\\", e);
+ else if (ch == '"')
+ fputs ("\"\"", e);
+ else if (ISPRINT (ch))
+ putc (ch, e);
+ else
+ {
+ switch (ch)
+ {
+ case ESCAPE_A:
+ fputs ("\\a", e);
+ break;
+
+ case ESCAPE_B:
+ fputs ("\\b", e);
+ break;
+
+ case ESCAPE_F:
+ fputs ("\\f", e);
+ break;
+
+ case ESCAPE_N:
+ fputs ("\\n", e);
+ break;
+
+ case ESCAPE_R:
+ fputs ("\\r", e);
+ break;
+
+ case ESCAPE_T:
+ fputs ("\\t", e);
+ break;
+
+ case ESCAPE_V:
+ fputs ("\\v", e);
+ break;
+
+ default:
+ fprintf (e, "\\%03o", (unsigned int) ch);
+ break;
+ }
+ }
+ }
+ else
+ fprintf (e, "\\%03o", (unsigned int) ch & 0xff);
+ }
+}
+
+rc_uint_type
+unichar_len (const unichar *unicode)
+{
+ rc_uint_type r = 0;
+
+ if (unicode)
+ while (unicode[r] != 0)
+ r++;
+ else
+ --r;
+ return r;
+}
+
+unichar *
+unichar_dup (const unichar *unicode)
+{
+ unichar *r;
+ int len;
+
+ if (! unicode)
+ return NULL;
+ for (len = 0; unicode[len] != 0; ++len)
+ ;
+ ++len;
+ r = ((unichar *) res_alloc (len * sizeof (unichar)));
+ memcpy (r, unicode, len * sizeof (unichar));
+ return r;
+}
+
+unichar *
+unichar_dup_uppercase (const unichar *u)
+{
+ unichar *r = unichar_dup (u);
+ int i;
+
+ if (! r)
+ return NULL;
+
+ for (i = 0; r[i] != 0; ++i)
+ {
+ if (r[i] >= 'a' && r[i] <= 'z')
+ r[i] &= 0xdf;
+ }
+ return r;
+}
+
+static int
+unichar_isascii (const unichar *u, rc_uint_type len)
+{
+ rc_uint_type i;
+
+ if ((bfd_signed_vma) len < 0)
+ {
+ if (u)
+ len = (rc_uint_type) unichar_len (u);
+ else
+ len = 0;
+ }
+
+ for (i = 0; i < len; i++)
+ if ((u[i] & 0xff80) != 0)
+ return 0;
+ return 1;
+}
+
+void
+unicode_print_quoted (FILE *e, const unichar *u, rc_uint_type len)
+{
+ if (! unichar_isascii (u, len))
+ fputc ('L', e);
+ fputc ('"', e);
+ unicode_print (e, u, len);
+ fputc ('"', e);
+}
+
+int
+unicode_is_valid_codepage (rc_uint_type cp)
+{
+ if ((cp & 0xffff) != cp)
+ return 0;
+ if (cp == CP_UTF16 || cp == CP_ACP)
+ return 1;
+
+#if !defined (_WIN32) && !defined (__CYGWIN__)
+ if (! wind_find_codepage_info (cp))
+ return 0;
+ return 1;
+#else
+ return !! IsValidCodePage ((UINT) cp);
+#endif
+}
+
+#if defined (_WIN32) || defined (__CYGWIN__)
+
+#define max_cp_string_len 6
+
+static unsigned int
+codepage_from_langid (unsigned short langid)
+{
+ char cp_string [max_cp_string_len];
+ int c;
+
+ memset (cp_string, 0, max_cp_string_len);
+ /* LOCALE_RETURN_NUMBER flag would avoid strtoul conversion,
+ but is unavailable on Win95. */
+ c = GetLocaleInfoA (MAKELCID (langid, SORT_DEFAULT),
+ LOCALE_IDEFAULTANSICODEPAGE,
+ cp_string, max_cp_string_len);
+ /* If codepage data for an LCID is not installed on users's system,
+ GetLocaleInfo returns an empty string. Fall back to system ANSI
+ default. */
+ if (c == 0)
+ return CP_ACP;
+ return strtoul (cp_string, 0, 10);
+}
+
+static unsigned int
+wincodepage_from_langid (unsigned short langid)
+{
+ char cp_string [max_cp_string_len];
+ int c;
+
+ memset (cp_string, 0, max_cp_string_len);
+ /* LOCALE_RETURN_NUMBER flag would avoid strtoul conversion,
+ but is unavailable on Win95. */
+ c = GetLocaleInfoA (MAKELCID (langid, SORT_DEFAULT),
+ LOCALE_IDEFAULTCODEPAGE,
+ cp_string, max_cp_string_len);
+ /* If codepage data for an LCID is not installed on users's system,
+ GetLocaleInfo returns an empty string. Fall back to system ANSI
+ default. */
+ if (c == 0)
+ return CP_OEM;
+ return strtoul (cp_string, 0, 10);
+}
+
+static char *
+lang_from_langid (unsigned short langid)
+{
+ char cp_string[261];
+ int c;
+
+ memset (cp_string, 0, 261);
+ c = GetLocaleInfoA (MAKELCID (langid, SORT_DEFAULT),
+ LOCALE_SENGLANGUAGE,
+ cp_string, 260);
+ /* If codepage data for an LCID is not installed on users's system,
+ GetLocaleInfo returns an empty string. Fall back to system ANSI
+ default. */
+ if (c == 0)
+ strcpy (cp_string, "Neutral");
+ return xstrdup (cp_string);
+}
+
+static char *
+country_from_langid (unsigned short langid)
+{
+ char cp_string[261];
+ int c;
+
+ memset (cp_string, 0, 261);
+ c = GetLocaleInfoA (MAKELCID (langid, SORT_DEFAULT),
+ LOCALE_SENGCOUNTRY,
+ cp_string, 260);
+ /* If codepage data for an LCID is not installed on users's system,
+ GetLocaleInfo returns an empty string. Fall back to system ANSI
+ default. */
+ if (c == 0)
+ strcpy (cp_string, "Neutral");
+ return xstrdup (cp_string);
+}
+
+#endif
+
+const wind_language_t *
+wind_find_language_by_id (unsigned id)
+{
+#if !defined (_WIN32) && !defined (__CYGWIN__)
+ int i;
+
+ if (! id)
+ return NULL;
+ for (i = 0; languages[i].id != (unsigned) -1 && languages[i].id != id; i++)
+ ;
+ if (languages[i].id == id)
+ return &languages[i];
+ return NULL;
+#else
+ static wind_language_t wl;
+
+ wl.id = id;
+ wl.doscp = codepage_from_langid ((unsigned short) id);
+ wl.wincp = wincodepage_from_langid ((unsigned short) id);
+ wl.name = lang_from_langid ((unsigned short) id);
+ wl.country = country_from_langid ((unsigned short) id);
+
+ return & wl;
+#endif
+}
+
+const local_iconv_map *
+wind_find_codepage_info (unsigned cp)
+{
+#if !defined (_WIN32) && !defined (__CYGWIN__)
+ int i;
+
+ for (i = 0; codepages[i].codepage != (rc_uint_type) -1 && codepages[i].codepage != cp; i++)
+ ;
+ if (codepages[i].codepage == (rc_uint_type) -1)
+ return NULL;
+ return &codepages[i];
+#else
+ static local_iconv_map lim;
+ if (!unicode_is_valid_codepage (cp))
+ return NULL;
+ lim.codepage = cp;
+ lim.iconv_name = "";
+ return & lim;
+#endif
+}
+
+/* Convert an Codepage string to a unicode string. */
+
+void
+unicode_from_codepage (rc_uint_type *length, unichar **u, const char *src, rc_uint_type cp)
+{
+ rc_uint_type len;
+
+ len = wind_MultiByteToWideChar (cp, src, NULL, 0);
+ if (len)
+ {
+ *u = ((unichar *) res_alloc (len));
+ wind_MultiByteToWideChar (cp, src, *u, len);
+ }
+ /* Discount the trailing '/0'. If MultiByteToWideChar failed,
+ this will set *length to -1. */
+ len -= sizeof (unichar);
+
+ if (length != NULL)
+ *length = len / sizeof (unichar);
+}
+
+/* Convert an unicode string to an codepage string. */
+
+void
+codepage_from_unicode (rc_uint_type *length, const unichar *unicode, char **ascii, rc_uint_type cp)
+{
+ rc_uint_type len;
+
+ len = wind_WideCharToMultiByte (cp, unicode, NULL, 0);
+ if (len)
+ {
+ *ascii = (char *) res_alloc (len * sizeof (char));
+ wind_WideCharToMultiByte (cp, unicode, *ascii, len);
+ }
+ /* Discount the trailing '/0'. If MultiByteToWideChar failed,
+ this will set *length to -1. */
+ len--;
+
+ if (length != NULL)
+ *length = len;
+}
+
+#if defined (HAVE_ICONV) && !defined (_WIN32) && !defined (__CYGWIN__)
+static int
+iconv_onechar (iconv_t cd, ICONV_CONST char *s, char *d, int d_len, const char **n_s, char **n_d)
+{
+ int i;
+
+ for (i = 1; i <= 32; i++)
+ {
+ char *tmp_d = d;
+ ICONV_CONST char *tmp_s = s;
+ size_t ret;
+ size_t s_left = (size_t) i;
+ size_t d_left = (size_t) d_len;
+
+ ret = iconv (cd, & tmp_s, & s_left, & tmp_d, & d_left);
+
+ if (ret != (size_t) -1)
+ {
+ *n_s = tmp_s;
+ *n_d = tmp_d;
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+static const char *
+wind_iconv_cp (rc_uint_type cp)
+{
+ const local_iconv_map *lim = wind_find_codepage_info (cp);
+
+ if (!lim)
+ return NULL;
+ return lim->iconv_name;
+}
+#endif /* HAVE_ICONV */
+
+static rc_uint_type
+wind_MultiByteToWideChar (rc_uint_type cp, const char *mb,
+ unichar *u, rc_uint_type u_len)
+{
+ rc_uint_type ret = 0;
+
+#if defined (_WIN32) || defined (__CYGWIN__)
+ rc_uint_type conv_flags = MB_PRECOMPOSED;
+
+ /* MB_PRECOMPOSED is not allowed for UTF-7 or UTF-8.
+ MultiByteToWideChar will set the last error to
+ ERROR_INVALID_FLAGS if we do. */
+ if (cp == CP_UTF8 || cp == CP_UTF7)
+ conv_flags = 0;
+
+ ret = (rc_uint_type) MultiByteToWideChar (cp, conv_flags,
+ mb, -1, u, u_len);
+ /* Convert to bytes. */
+ ret *= sizeof (unichar);
+
+#elif defined (HAVE_ICONV)
+ int first = 1;
+ char tmp[32];
+ char *p_tmp;
+ const char *iconv_name = wind_iconv_cp (cp);
+
+ if (!mb || !iconv_name)
+ return 0;
+ iconv_t cd = iconv_open ("UTF-16LE", iconv_name);
+
+ while (1)
+ {
+ int iret;
+ const char *n_mb = "";
+ char *n_tmp = "";
+
+ p_tmp = tmp;
+ iret = iconv_onechar (cd, (ICONV_CONST char *) mb, p_tmp, 32, & n_mb, & n_tmp);
+ if (first)
+ {
+ first = 0;
+ continue;
+ }
+ if (!iret)
+ {
+ size_t l_tmp = (size_t) (n_tmp - p_tmp);
+
+ if (u)
+ {
+ if ((size_t) u_len < l_tmp)
+ break;
+ memcpy (u, tmp, l_tmp);
+ u += l_tmp/2;
+ u_len -= l_tmp;
+ }
+ ret += l_tmp;
+ }
+ else
+ break;
+ if (tmp[0] == 0 && tmp[1] == 0)
+ break;
+ mb = n_mb;
+ }
+ iconv_close (cd);
+#else
+ if (cp)
+ ret = 0;
+ ret = strlen (mb) + 1;
+ ret *= sizeof (unichar);
+ if (u != NULL && u_len != 0)
+ {
+ do
+ {
+ *u++ = ((unichar) *mb) & 0xff;
+ --u_len; mb++;
+ }
+ while (u_len != 0 && mb[-1] != 0);
+ }
+ if (u != NULL && u_len != 0)
+ *u = 0;
+#endif
+ return ret;
+}
+
+static rc_uint_type
+wind_WideCharToMultiByte (rc_uint_type cp, const unichar *u, char *mb, rc_uint_type mb_len)
+{
+ rc_uint_type ret = 0;
+#if defined (_WIN32) || defined (__CYGWIN__)
+ WINBOOL used_def = FALSE;
+
+ ret = (rc_uint_type) WideCharToMultiByte (cp, 0, u, -1, mb, mb_len,
+ NULL, & used_def);
+#elif defined (HAVE_ICONV)
+ int first = 1;
+ char tmp[32];
+ char *p_tmp;
+ const char *iconv_name = wind_iconv_cp (cp);
+
+ if (!u || !iconv_name)
+ return 0;
+ iconv_t cd = iconv_open (iconv_name, "UTF-16LE");
+
+ while (1)
+ {
+ int iret;
+ const char *n_u = "";
+ char *n_tmp = "";
+
+ p_tmp = tmp;
+ iret = iconv_onechar (cd, (ICONV_CONST char *) u, p_tmp, 32, &n_u, & n_tmp);
+ if (first)
+ {
+ first = 0;
+ continue;
+ }
+ if (!iret)
+ {
+ size_t l_tmp = (size_t) (n_tmp - p_tmp);
+
+ if (mb)
+ {
+ if ((size_t) mb_len < l_tmp)
+ break;
+ memcpy (mb, tmp, l_tmp);
+ mb += l_tmp;
+ mb_len -= l_tmp;
+ }
+ ret += l_tmp;
+ }
+ else
+ break;
+ if (u[0] == 0)
+ break;
+ u = (const unichar *) n_u;
+ }
+ iconv_close (cd);
+#else
+ if (cp)
+ ret = 0;
+
+ while (u[ret] != 0)
+ ++ret;
+
+ ++ret;
+
+ if (mb)
+ {
+ while (*u != 0 && mb_len != 0)
+ {
+ if (u[0] == (u[0] & 0x7f))
+ *mb++ = (char) u[0];
+ else
+ *mb++ = '_';
+ ++u; --mb_len;
+ }
+ if (mb_len != 0)
+ *mb = 0;
+ }
+#endif
+ return ret;
+}
diff --git a/binutils-2.24/binutils/winduni.h b/binutils-2.24/binutils/winduni.h
new file mode 100644
index 00000000..8b3a389e
--- /dev/null
+++ b/binutils-2.24/binutils/winduni.h
@@ -0,0 +1,140 @@
+/* winduni.h -- header file for unicode support for windres program.
+ Copyright 1997, 1998, 2002, 2005, 2007
+ Free Software Foundation, Inc.
+ Written by Ian Lance Taylor, Cygnus Support.
+ Rewritten by Kai Tietz, Onevision.
+
+ 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 3 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 "ansidecl.h"
+
+#ifndef WINDUNI_H
+#define WINDUNI_H
+
+/* This header file declares the types and functions we use for
+ unicode support in windres. Our unicode support is very limited at
+ present.
+
+ We don't put this stuff in windres.h so that winduni.c doesn't have
+ to include windres.h. winduni.c needs to includes windows.h, and
+ that would conflict with the definitions of Windows macros we
+ already have in windres.h. */
+
+/* Use bfd_size_type to ensure a sufficient number of bits. */
+#ifndef DEFINED_RC_UINT_TYPE
+#define DEFINED_RC_UINT_TYPE
+typedef bfd_size_type rc_uint_type;
+#endif
+
+/* We use this type to hold a unicode character. */
+
+typedef unsigned short unichar;
+
+/* Escape character translations. */
+
+#define ESCAPE_A 007
+#define ESCAPE_B 010
+#define ESCAPE_F 014
+#define ESCAPE_N 012
+#define ESCAPE_R 015
+#define ESCAPE_T 011
+#define ESCAPE_V 013
+
+/* Convert an ASCII string to a unicode string. */
+extern void unicode_from_ascii (rc_uint_type *, unichar **, const char *);
+
+/* Convert an unicode string to an ASCII string. */
+extern void ascii_from_unicode (rc_uint_type *, const unichar *, char **);
+
+/* Duplicate a unicode string by using res_alloc. */
+extern unichar *unichar_dup (const unichar *);
+
+/* Duplicate a unicode string by using res_alloc and make it uppercase. */
+extern unichar *unichar_dup_uppercase (const unichar *);
+
+/* The count of unichar elements. */
+extern rc_uint_type unichar_len (const unichar *);
+
+/* Print a unicode string to a file. */
+extern void unicode_print (FILE *, const unichar *, rc_uint_type);
+
+/* Print a ascii string to a file. */
+extern void ascii_print (FILE *, const char *, rc_uint_type);
+
+/* Print a quoted unicode string to a file. */
+extern void unicode_print_quoted (FILE *, const unichar *, rc_uint_type);
+
+#ifndef CP_UTF8
+#define CP_UTF7 65000 /* UTF-7 translation. */
+#define CP_UTF8 65001 /* UTF-8 translation. */
+#endif
+
+#ifndef CP_UTF16
+#define CP_UTF16 65002 /* UTF-16 translation. */
+#endif
+
+#ifndef CP_ACP
+#define CP_ACP 0 /* Default to ANSI code page. */
+#endif
+
+#ifndef CP_OEM
+#define CP_OEM 1 /* Default OEM code page. */
+#endif
+
+/* Specifies the default codepage to be used for unicode
+ transformations. By default this is CP_ACP. */
+extern rc_uint_type wind_default_codepage;
+
+/* Specifies the currently used codepage for unicode
+ transformations. By default this is CP_ACP. */
+extern rc_uint_type wind_current_codepage;
+
+typedef struct wind_language_t
+{
+ unsigned id;
+ unsigned doscp;
+ unsigned wincp;
+ const char *name;
+ const char *country;
+} wind_language_t;
+
+extern const wind_language_t *wind_find_language_by_id (unsigned);
+extern int unicode_is_valid_codepage (rc_uint_type);
+
+typedef struct local_iconv_map
+{
+ rc_uint_type codepage;
+ const char * iconv_name;
+} local_iconv_map;
+
+extern const local_iconv_map *wind_find_codepage_info (unsigned);
+
+/* Convert an Codepage string to a unicode string. */
+extern void unicode_from_codepage (rc_uint_type *, unichar **, const char *, rc_uint_type);
+extern void unicode_from_ascii_len (rc_uint_type *, unichar **, const char *, rc_uint_type );
+
+/* Convert an unicode string to an codepage string. */
+extern void codepage_from_unicode (rc_uint_type *, const unichar *, char **, rc_uint_type);
+
+/* Windres support routine called by unicode_from_ascii. This is both
+ here and in windres.h. It should probably be in a separate header
+ file, but it hardly seems worth it for one function. */
+
+extern void * res_alloc (rc_uint_type);
+
+#endif
diff --git a/binutils-2.24/binutils/wrstabs.c b/binutils-2.24/binutils/wrstabs.c
new file mode 100644
index 00000000..bbf257e5
--- /dev/null
+++ b/binutils-2.24/binutils/wrstabs.c
@@ -0,0 +1,2272 @@
+/* wrstabs.c -- Output stabs debugging information
+ Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006,
+ 2007, 2009 Free Software Foundation, Inc.
+ Written by Ian Lance Taylor <ian@cygnus.com>.
+
+ 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 3 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 file contains code which writes out stabs debugging
+ information. */
+
+#include "sysdep.h"
+#include <assert.h>
+#include "bfd.h"
+#include "libiberty.h"
+#include "filenames.h"
+#include "safe-ctype.h"
+#include "bucomm.h"
+#include "debug.h"
+#include "budbg.h"
+#include "aout/aout64.h"
+#include "aout/stab_gnu.h"
+
+/* The size of a stabs symbol. This presumes 32 bit values. */
+
+#define STAB_SYMBOL_SIZE (12)
+
+/* An entry in a string hash table. */
+
+struct string_hash_entry
+{
+ struct bfd_hash_entry root;
+ /* Next string in this table. */
+ struct string_hash_entry *next;
+ /* Index in string table. */
+ long index;
+ /* Size of type if this is a typedef. */
+ unsigned int size;
+};
+
+/* A string hash table. */
+
+struct string_hash_table
+{
+ struct bfd_hash_table table;
+};
+
+/* The type stack. Each element on the stack is a string. */
+
+struct stab_type_stack
+{
+ /* The next element on the stack. */
+ struct stab_type_stack *next;
+ /* This element as a string. */
+ char *string;
+ /* The type index of this element. */
+ long index;
+ /* The size of the type. */
+ unsigned int size;
+ /* Whether type string defines a new type. */
+ bfd_boolean definition;
+ /* String defining struct fields. */
+ char *fields;
+ /* NULL terminated array of strings defining base classes for a
+ class. */
+ char **baseclasses;
+ /* String defining class methods. */
+ char *methods;
+ /* String defining vtable pointer for a class. */
+ char *vtable;
+};
+
+/* This structure is used to keep track of type indices for tagged
+ types. */
+
+struct stab_tag
+{
+ /* The type index. */
+ long index;
+ /* The tag name. */
+ const char *tag;
+ /* The kind of type. This is set to DEBUG_KIND_ILLEGAL when the
+ type is defined. */
+ enum debug_type_kind kind;
+ /* The size of the struct. */
+ unsigned int size;
+};
+
+/* We remember various sorts of type indices. They are not related,
+ but, for convenience, we keep all the information in this
+ structure. */
+
+struct stab_type_cache
+{
+ /* The void type index. */
+ long void_type;
+ /* Signed integer type indices, indexed by size - 1. */
+ long signed_integer_types[8];
+ /* Unsigned integer type indices, indexed by size - 1. */
+ long unsigned_integer_types[8];
+ /* Floating point types, indexed by size - 1. */
+ long float_types[16];
+ /* Pointers to types, indexed by the type index. */
+ long *pointer_types;
+ size_t pointer_types_alloc;
+ /* Functions returning types, indexed by the type index. */
+ long *function_types;
+ size_t function_types_alloc;
+ /* References to types, indexed by the type index. */
+ long *reference_types;
+ size_t reference_types_alloc;
+ /* Struct/union/class type indices, indexed by the struct id. */
+ struct stab_tag *struct_types;
+ size_t struct_types_alloc;
+};
+
+/* This is the handle passed through debug_write. */
+
+struct stab_write_handle
+{
+ /* The BFD. */
+ bfd *abfd;
+ /* This buffer holds the symbols. */
+ bfd_byte *symbols;
+ size_t symbols_size;
+ size_t symbols_alloc;
+ /* This is a list of hash table entries for the strings. */
+ struct string_hash_entry *strings;
+ /* The last string hash table entry. */
+ struct string_hash_entry *last_string;
+ /* The size of the strings. */
+ size_t strings_size;
+ /* This hash table eliminates duplicate strings. */
+ struct string_hash_table strhash;
+ /* The type stack. */
+ struct stab_type_stack *type_stack;
+ /* The next type index. */
+ long type_index;
+ /* The type cache. */
+ struct stab_type_cache type_cache;
+ /* A mapping from typedef names to type indices. */
+ struct string_hash_table typedef_hash;
+ /* If this is not -1, it is the offset to the most recent N_SO
+ symbol, and the value of that symbol needs to be set. */
+ long so_offset;
+ /* If this is not -1, it is the offset to the most recent N_FUN
+ symbol, and the value of that symbol needs to be set. */
+ long fun_offset;
+ /* The last text section address seen. */
+ bfd_vma last_text_address;
+ /* The block nesting depth. */
+ unsigned int nesting;
+ /* The function address. */
+ bfd_vma fnaddr;
+ /* A pending LBRAC symbol. */
+ bfd_vma pending_lbrac;
+ /* The current line number file name. */
+ const char *lineno_filename;
+};
+
+static struct bfd_hash_entry *string_hash_newfunc
+ (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
+static bfd_boolean stab_write_symbol
+ (struct stab_write_handle *, int, int, bfd_vma, const char *);
+static bfd_boolean stab_push_string
+ (struct stab_write_handle *, const char *, long, bfd_boolean, unsigned int);
+static bfd_boolean stab_push_defined_type
+ (struct stab_write_handle *, long, unsigned int);
+static char *stab_pop_type (struct stab_write_handle *);
+static bfd_boolean stab_modify_type
+ (struct stab_write_handle *, int, unsigned int, long **, size_t *);
+static long stab_get_struct_index
+ (struct stab_write_handle *, const char *, unsigned int,
+ enum debug_type_kind, unsigned int *);
+static bfd_boolean stab_class_method_var
+ (struct stab_write_handle *, const char *, enum debug_visibility,
+ bfd_boolean, bfd_boolean, bfd_boolean, bfd_vma, bfd_boolean);
+static bfd_boolean stab_start_compilation_unit (void *, const char *);
+static bfd_boolean stab_start_source (void *, const char *);
+static bfd_boolean stab_empty_type (void *);
+static bfd_boolean stab_void_type (void *);
+static bfd_boolean stab_int_type (void *, unsigned int, bfd_boolean);
+static bfd_boolean stab_float_type (void *, unsigned int);
+static bfd_boolean stab_complex_type (void *, unsigned int);
+static bfd_boolean stab_bool_type (void *, unsigned int);
+static bfd_boolean stab_enum_type
+ (void *, const char *, const char **, bfd_signed_vma *);
+static bfd_boolean stab_pointer_type (void *);
+static bfd_boolean stab_function_type (void *, int, bfd_boolean);
+static bfd_boolean stab_reference_type (void *);
+static bfd_boolean stab_range_type (void *, bfd_signed_vma, bfd_signed_vma);
+static bfd_boolean stab_array_type
+ (void *, bfd_signed_vma, bfd_signed_vma, bfd_boolean);
+static bfd_boolean stab_set_type (void *, bfd_boolean);
+static bfd_boolean stab_offset_type (void *);
+static bfd_boolean stab_method_type (void *, bfd_boolean, int, bfd_boolean);
+static bfd_boolean stab_const_type (void *);
+static bfd_boolean stab_volatile_type (void *);
+static bfd_boolean stab_start_struct_type
+ (void *, const char *, unsigned int, bfd_boolean, unsigned int);
+static bfd_boolean stab_struct_field
+ (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
+static bfd_boolean stab_end_struct_type (void *);
+static bfd_boolean stab_start_class_type
+ (void *, const char *, unsigned int, bfd_boolean, unsigned int,
+ bfd_boolean, bfd_boolean);
+static bfd_boolean stab_class_static_member
+ (void *, const char *, const char *, enum debug_visibility);
+static bfd_boolean stab_class_baseclass
+ (void *, bfd_vma, bfd_boolean, enum debug_visibility);
+static bfd_boolean stab_class_start_method (void *, const char *);
+static bfd_boolean stab_class_method_variant
+ (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean,
+ bfd_vma, bfd_boolean);
+static bfd_boolean stab_class_static_method_variant
+ (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean);
+static bfd_boolean stab_class_end_method (void *);
+static bfd_boolean stab_end_class_type (void *);
+static bfd_boolean stab_typedef_type (void *, const char *);
+static bfd_boolean stab_tag_type
+ (void *, const char *, unsigned int, enum debug_type_kind);
+static bfd_boolean stab_typdef (void *, const char *);
+static bfd_boolean stab_tag (void *, const char *);
+static bfd_boolean stab_int_constant (void *, const char *, bfd_vma);
+static bfd_boolean stab_float_constant (void *, const char *, double);
+static bfd_boolean stab_typed_constant (void *, const char *, bfd_vma);
+static bfd_boolean stab_variable
+ (void *, const char *, enum debug_var_kind, bfd_vma);
+static bfd_boolean stab_start_function (void *, const char *, bfd_boolean);
+static bfd_boolean stab_function_parameter
+ (void *, const char *, enum debug_parm_kind, bfd_vma);
+static bfd_boolean stab_start_block (void *, bfd_vma);
+static bfd_boolean stab_end_block (void *, bfd_vma);
+static bfd_boolean stab_end_function (void *);
+static bfd_boolean stab_lineno (void *, const char *, unsigned long, bfd_vma);
+
+static const struct debug_write_fns stab_fns =
+{
+ stab_start_compilation_unit,
+ stab_start_source,
+ stab_empty_type,
+ stab_void_type,
+ stab_int_type,
+ stab_float_type,
+ stab_complex_type,
+ stab_bool_type,
+ stab_enum_type,
+ stab_pointer_type,
+ stab_function_type,
+ stab_reference_type,
+ stab_range_type,
+ stab_array_type,
+ stab_set_type,
+ stab_offset_type,
+ stab_method_type,
+ stab_const_type,
+ stab_volatile_type,
+ stab_start_struct_type,
+ stab_struct_field,
+ stab_end_struct_type,
+ stab_start_class_type,
+ stab_class_static_member,
+ stab_class_baseclass,
+ stab_class_start_method,
+ stab_class_method_variant,
+ stab_class_static_method_variant,
+ stab_class_end_method,
+ stab_end_class_type,
+ stab_typedef_type,
+ stab_tag_type,
+ stab_typdef,
+ stab_tag,
+ stab_int_constant,
+ stab_float_constant,
+ stab_typed_constant,
+ stab_variable,
+ stab_start_function,
+ stab_function_parameter,
+ stab_start_block,
+ stab_end_block,
+ stab_end_function,
+ stab_lineno
+};
+
+/* Routine to create an entry in a string hash table. */
+
+static struct bfd_hash_entry *
+string_hash_newfunc (struct bfd_hash_entry *entry,
+ struct bfd_hash_table *table, const char *string)
+{
+ struct string_hash_entry *ret = (struct string_hash_entry *) entry;
+
+ /* Allocate the structure if it has not already been allocated by a
+ subclass. */
+ if (ret == (struct string_hash_entry *) NULL)
+ ret = ((struct string_hash_entry *)
+ bfd_hash_allocate (table, sizeof (struct string_hash_entry)));
+ if (ret == (struct string_hash_entry *) NULL)
+ return NULL;
+
+ /* Call the allocation method of the superclass. */
+ ret = ((struct string_hash_entry *)
+ bfd_hash_newfunc ((struct bfd_hash_entry *) ret, table, string));
+
+ if (ret)
+ {
+ /* Initialize the local fields. */
+ ret->next = NULL;
+ ret->index = -1;
+ ret->size = 0;
+ }
+
+ return (struct bfd_hash_entry *) ret;
+}
+
+/* Look up an entry in a string hash table. */
+
+#define string_hash_lookup(t, string, create, copy) \
+ ((struct string_hash_entry *) \
+ bfd_hash_lookup (&(t)->table, (string), (create), (copy)))
+
+/* Add a symbol to the stabs debugging information we are building. */
+
+static bfd_boolean
+stab_write_symbol (struct stab_write_handle *info, int type, int desc,
+ bfd_vma value, const char *string)
+{
+ bfd_size_type strx;
+ bfd_byte sym[STAB_SYMBOL_SIZE];
+
+ if (string == NULL)
+ strx = 0;
+ else
+ {
+ struct string_hash_entry *h;
+
+ h = string_hash_lookup (&info->strhash, string, TRUE, TRUE);
+ if (h == NULL)
+ {
+ non_fatal (_("string_hash_lookup failed: %s"),
+ bfd_errmsg (bfd_get_error ()));
+ return FALSE;
+ }
+ if (h->index != -1)
+ strx = h->index;
+ else
+ {
+ strx = info->strings_size;
+ h->index = strx;
+ if (info->last_string == NULL)
+ info->strings = h;
+ else
+ info->last_string->next = h;
+ info->last_string = h;
+ info->strings_size += strlen (string) + 1;
+ }
+ }
+
+ /* This presumes 32 bit values. */
+ bfd_put_32 (info->abfd, strx, sym);
+ bfd_put_8 (info->abfd, type, sym + 4);
+ bfd_put_8 (info->abfd, 0, sym + 5);
+ bfd_put_16 (info->abfd, desc, sym + 6);
+ bfd_put_32 (info->abfd, value, sym + 8);
+
+ if (info->symbols_size + STAB_SYMBOL_SIZE > info->symbols_alloc)
+ {
+ info->symbols_alloc *= 2;
+ info->symbols = (bfd_byte *) xrealloc (info->symbols,
+ info->symbols_alloc);
+ }
+
+ memcpy (info->symbols + info->symbols_size, sym, STAB_SYMBOL_SIZE);
+
+ info->symbols_size += STAB_SYMBOL_SIZE;
+
+ return TRUE;
+}
+
+/* Push a string on to the type stack. */
+
+static bfd_boolean
+stab_push_string (struct stab_write_handle *info, const char *string,
+ long tindex, bfd_boolean definition, unsigned int size)
+{
+ struct stab_type_stack *s;
+
+ s = (struct stab_type_stack *) xmalloc (sizeof *s);
+ s->string = xstrdup (string);
+ s->index = tindex;
+ s->definition = definition;
+ s->size = size;
+
+ s->fields = NULL;
+ s->baseclasses = NULL;
+ s->methods = NULL;
+ s->vtable = NULL;
+
+ s->next = info->type_stack;
+ info->type_stack = s;
+
+ return TRUE;
+}
+
+/* Push a type index which has already been defined. */
+
+static bfd_boolean
+stab_push_defined_type (struct stab_write_handle *info, long tindex,
+ unsigned int size)
+{
+ char buf[20];
+
+ sprintf (buf, "%ld", tindex);
+ return stab_push_string (info, buf, tindex, FALSE, size);
+}
+
+/* Pop a type off the type stack. The caller is responsible for
+ freeing the string. */
+
+static char *
+stab_pop_type (struct stab_write_handle *info)
+{
+ struct stab_type_stack *s;
+ char *ret;
+
+ s = info->type_stack;
+ assert (s != NULL);
+
+ info->type_stack = s->next;
+
+ ret = s->string;
+
+ free (s);
+
+ return ret;
+}
+
+/* The general routine to write out stabs in sections debugging
+ information. This accumulates the stabs symbols and the strings in
+ two obstacks. We can't easily write out the information as we go
+ along, because we need to know the section sizes before we can
+ write out the section contents. ABFD is the BFD and DHANDLE is the
+ handle for the debugging information. This sets *PSYMS to point to
+ the symbols, *PSYMSIZE the size of the symbols, *PSTRINGS to the
+ strings, and *PSTRINGSIZE to the size of the strings. */
+
+bfd_boolean
+write_stabs_in_sections_debugging_info (bfd *abfd, void *dhandle,
+ bfd_byte **psyms,
+ bfd_size_type *psymsize,
+ bfd_byte **pstrings,
+ bfd_size_type *pstringsize)
+{
+ struct stab_write_handle info;
+ struct string_hash_entry *h;
+ bfd_byte *p;
+
+ info.abfd = abfd;
+
+ info.symbols_size = 0;
+ info.symbols_alloc = 500;
+ info.symbols = (bfd_byte *) xmalloc (info.symbols_alloc);
+
+ info.strings = NULL;
+ info.last_string = NULL;
+ /* Reserve 1 byte for a null byte. */
+ info.strings_size = 1;
+
+ if (!bfd_hash_table_init (&info.strhash.table, string_hash_newfunc,
+ sizeof (struct string_hash_entry))
+ || !bfd_hash_table_init (&info.typedef_hash.table, string_hash_newfunc,
+ sizeof (struct string_hash_entry)))
+ {
+ non_fatal ("bfd_hash_table_init_failed: %s",
+ bfd_errmsg (bfd_get_error ()));
+ return FALSE;
+ }
+
+ info.type_stack = NULL;
+ info.type_index = 1;
+ memset (&info.type_cache, 0, sizeof info.type_cache);
+ info.so_offset = -1;
+ info.fun_offset = -1;
+ info.last_text_address = 0;
+ info.nesting = 0;
+ info.fnaddr = 0;
+ info.pending_lbrac = (bfd_vma) -1;
+
+ /* The initial symbol holds the string size. */
+ if (! stab_write_symbol (&info, 0, 0, 0, (const char *) NULL))
+ return FALSE;
+
+ /* Output an initial N_SO symbol. */
+ info.so_offset = info.symbols_size;
+ if (! stab_write_symbol (&info, N_SO, 0, 0, bfd_get_filename (abfd)))
+ return FALSE;
+
+ if (! debug_write (dhandle, &stab_fns, (void *) &info))
+ return FALSE;
+
+ assert (info.pending_lbrac == (bfd_vma) -1);
+
+ /* Output a trailing N_SO. */
+ if (! stab_write_symbol (&info, N_SO, 0, info.last_text_address,
+ (const char *) NULL))
+ return FALSE;
+
+ /* Put the string size in the initial symbol. */
+ bfd_put_32 (abfd, info.strings_size, info.symbols + 8);
+
+ *psyms = info.symbols;
+ *psymsize = info.symbols_size;
+
+ *pstringsize = info.strings_size;
+ *pstrings = (bfd_byte *) xmalloc (info.strings_size);
+
+ p = *pstrings;
+ *p++ = '\0';
+ for (h = info.strings; h != NULL; h = h->next)
+ {
+ strcpy ((char *) p, h->root.string);
+ p += strlen ((char *) p) + 1;
+ }
+
+ return TRUE;
+}
+
+/* Start writing out information for a compilation unit. */
+
+static bfd_boolean
+stab_start_compilation_unit (void *p, const char *filename)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ /* We would normally output an N_SO symbol here. However, that
+ would force us to reset all of our type information. I think we
+ will be better off just outputting an N_SOL symbol, and not
+ worrying about splitting information between files. */
+
+ info->lineno_filename = filename;
+
+ return stab_write_symbol (info, N_SOL, 0, 0, filename);
+}
+
+/* Start writing out information for a particular source file. */
+
+static bfd_boolean
+stab_start_source (void *p, const char *filename)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ /* FIXME: The symbol's value is supposed to be the text section
+ address. However, we would have to fill it in later, and gdb
+ doesn't care, so we don't bother with it. */
+
+ info->lineno_filename = filename;
+
+ return stab_write_symbol (info, N_SOL, 0, 0, filename);
+}
+
+/* Push an empty type. This shouldn't normally happen. We just use a
+ void type. */
+
+static bfd_boolean
+stab_empty_type (void *p)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ /* We don't call stab_void_type if the type is not yet defined,
+ because that might screw up the typedef. */
+
+ if (info->type_cache.void_type != 0)
+ return stab_push_defined_type (info, info->type_cache.void_type, 0);
+ else
+ {
+ long tindex;
+ char buf[40];
+
+ tindex = info->type_index;
+ ++info->type_index;
+
+ sprintf (buf, "%ld=%ld", tindex, tindex);
+
+ return stab_push_string (info, buf, tindex, FALSE, 0);
+ }
+}
+
+/* Push a void type. */
+
+static bfd_boolean
+stab_void_type (void *p)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ if (info->type_cache.void_type != 0)
+ return stab_push_defined_type (info, info->type_cache.void_type, 0);
+ else
+ {
+ long tindex;
+ char buf[40];
+
+ tindex = info->type_index;
+ ++info->type_index;
+
+ info->type_cache.void_type = tindex;
+
+ sprintf (buf, "%ld=%ld", tindex, tindex);
+
+ return stab_push_string (info, buf, tindex, TRUE, 0);
+ }
+}
+
+/* Push an integer type. */
+
+static bfd_boolean
+stab_int_type (void *p, unsigned int size, bfd_boolean unsignedp)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ long *cache;
+
+ if (size <= 0 || (size > sizeof (long) && size != 8))
+ {
+ non_fatal (_("stab_int_type: bad size %u"), size);
+ return FALSE;
+ }
+
+ if (unsignedp)
+ cache = info->type_cache.signed_integer_types;
+ else
+ cache = info->type_cache.unsigned_integer_types;
+
+ if (cache[size - 1] != 0)
+ return stab_push_defined_type (info, cache[size - 1], size);
+ else
+ {
+ long tindex;
+ char buf[100];
+
+ tindex = info->type_index;
+ ++info->type_index;
+
+ cache[size - 1] = tindex;
+
+ sprintf (buf, "%ld=r%ld;", tindex, tindex);
+ if (unsignedp)
+ {
+ strcat (buf, "0;");
+ if (size < sizeof (long))
+ sprintf (buf + strlen (buf), "%ld;", ((long) 1 << (size * 8)) - 1);
+ else if (size == sizeof (long))
+ strcat (buf, "-1;");
+ else if (size == 8)
+ strcat (buf, "01777777777777777777777;");
+ else
+ abort ();
+ }
+ else
+ {
+ if (size <= sizeof (long))
+ sprintf (buf + strlen (buf), "%ld;%ld;",
+ (long) - ((unsigned long) 1 << (size * 8 - 1)),
+ (long) (((unsigned long) 1 << (size * 8 - 1)) - 1));
+ else if (size == 8)
+ strcat (buf, "01000000000000000000000;0777777777777777777777;");
+ else
+ abort ();
+ }
+
+ return stab_push_string (info, buf, tindex, TRUE, size);
+ }
+}
+
+/* Push a floating point type. */
+
+static bfd_boolean
+stab_float_type (void *p, unsigned int size)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ if (size > 0
+ && size - 1 < (sizeof info->type_cache.float_types
+ / sizeof info->type_cache.float_types[0])
+ && info->type_cache.float_types[size - 1] != 0)
+ return stab_push_defined_type (info,
+ info->type_cache.float_types[size - 1],
+ size);
+ else
+ {
+ long tindex;
+ char *int_type;
+ char buf[50];
+
+ /* Floats are defined as a subrange of int. */
+ if (! stab_int_type (info, 4, FALSE))
+ return FALSE;
+ int_type = stab_pop_type (info);
+
+ tindex = info->type_index;
+ ++info->type_index;
+
+ if (size > 0
+ && size - 1 < (sizeof info->type_cache.float_types
+ / sizeof info->type_cache.float_types[0]))
+ info->type_cache.float_types[size - 1] = tindex;
+
+ sprintf (buf, "%ld=r%s;%u;0;", tindex, int_type, size);
+
+ free (int_type);
+
+ return stab_push_string (info, buf, tindex, TRUE, size);
+ }
+}
+
+/* Push a complex type. */
+
+static bfd_boolean
+stab_complex_type (void *p, unsigned int size)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ char buf[50];
+ long tindex;
+
+ tindex = info->type_index;
+ ++info->type_index;
+
+ sprintf (buf, "%ld=r%ld;%u;0;", tindex, tindex, size);
+
+ return stab_push_string (info, buf, tindex, TRUE, size * 2);
+}
+
+/* Push a bfd_boolean type. We use an XCOFF predefined type, since gdb
+ always recognizes them. */
+
+static bfd_boolean
+stab_bool_type (void *p, unsigned int size)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ long tindex;
+
+ switch (size)
+ {
+ case 1:
+ tindex = -21;
+ break;
+
+ case 2:
+ tindex = -22;
+ break;
+
+ default:
+ case 4:
+ tindex = -16;
+ break;
+
+ case 8:
+ tindex = -33;
+ break;
+ }
+
+ return stab_push_defined_type (info, tindex, size);
+}
+
+/* Push an enum type. */
+
+static bfd_boolean
+stab_enum_type (void *p, const char *tag, const char **names,
+ bfd_signed_vma *vals)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ size_t len;
+ const char **pn;
+ char *buf;
+ long tindex = 0;
+ bfd_signed_vma *pv;
+
+ if (names == NULL)
+ {
+ assert (tag != NULL);
+
+ buf = (char *) xmalloc (10 + strlen (tag));
+ sprintf (buf, "xe%s:", tag);
+ /* FIXME: The size is just a guess. */
+ if (! stab_push_string (info, buf, 0, FALSE, 4))
+ return FALSE;
+ free (buf);
+ return TRUE;
+ }
+
+ len = 10;
+ if (tag != NULL)
+ len += strlen (tag);
+ for (pn = names; *pn != NULL; pn++)
+ len += strlen (*pn) + 20;
+
+ buf = (char *) xmalloc (len);
+
+ if (tag == NULL)
+ strcpy (buf, "e");
+ else
+ {
+ tindex = info->type_index;
+ ++info->type_index;
+ sprintf (buf, "%s:T%ld=e", tag, tindex);
+ }
+
+ for (pn = names, pv = vals; *pn != NULL; pn++, pv++)
+ sprintf (buf + strlen (buf), "%s:%ld,", *pn, (long) *pv);
+ strcat (buf, ";");
+
+ if (tag == NULL)
+ {
+ /* FIXME: The size is just a guess. */
+ if (! stab_push_string (info, buf, 0, FALSE, 4))
+ return FALSE;
+ }
+ else
+ {
+ /* FIXME: The size is just a guess. */
+ if (! stab_write_symbol (info, N_LSYM, 0, 0, buf)
+ || ! stab_push_defined_type (info, tindex, 4))
+ return FALSE;
+ }
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Push a modification of the top type on the stack. Cache the
+ results in CACHE and CACHE_ALLOC. */
+
+static bfd_boolean
+stab_modify_type (struct stab_write_handle *info, int mod,
+ unsigned int size, long **cache, size_t *cache_alloc)
+{
+ long targindex;
+ long tindex;
+ char *s, *buf;
+
+ assert (info->type_stack != NULL);
+ targindex = info->type_stack->index;
+
+ if (targindex <= 0
+ || cache == NULL)
+ {
+ bfd_boolean definition;
+
+ /* Either the target type has no index, or we aren't caching
+ this modifier. Either way we have no way of recording the
+ new type, so we don't bother to define one. */
+ definition = info->type_stack->definition;
+ s = stab_pop_type (info);
+ buf = (char *) xmalloc (strlen (s) + 2);
+ sprintf (buf, "%c%s", mod, s);
+ free (s);
+ if (! stab_push_string (info, buf, 0, definition, size))
+ return FALSE;
+ free (buf);
+ }
+ else
+ {
+ if ((size_t) targindex >= *cache_alloc)
+ {
+ size_t alloc;
+
+ alloc = *cache_alloc;
+ if (alloc == 0)
+ alloc = 10;
+ while ((size_t) targindex >= alloc)
+ alloc *= 2;
+ *cache = (long *) xrealloc (*cache, alloc * sizeof (long));
+ memset (*cache + *cache_alloc, 0,
+ (alloc - *cache_alloc) * sizeof (long));
+ *cache_alloc = alloc;
+ }
+
+ tindex = (*cache)[targindex];
+ if (tindex != 0 && ! info->type_stack->definition)
+ {
+ /* We have already defined a modification of this type, and
+ the entry on the type stack is not a definition, so we
+ can safely discard it (we may have a definition on the
+ stack, even if we already defined a modification, if it
+ is a struct which we did not define at the time it was
+ referenced). */
+ free (stab_pop_type (info));
+ if (! stab_push_defined_type (info, tindex, size))
+ return FALSE;
+ }
+ else
+ {
+ tindex = info->type_index;
+ ++info->type_index;
+
+ s = stab_pop_type (info);
+ buf = (char *) xmalloc (strlen (s) + 20);
+ sprintf (buf, "%ld=%c%s", tindex, mod, s);
+ free (s);
+
+ (*cache)[targindex] = tindex;
+
+ if (! stab_push_string (info, buf, tindex, TRUE, size))
+ return FALSE;
+
+ free (buf);
+ }
+ }
+
+ return TRUE;
+}
+
+/* Push a pointer type. */
+
+static bfd_boolean
+stab_pointer_type (void *p)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ /* FIXME: The size should depend upon the architecture. */
+ return stab_modify_type (info, '*', 4, &info->type_cache.pointer_types,
+ &info->type_cache.pointer_types_alloc);
+}
+
+/* Push a function type. */
+
+static bfd_boolean
+stab_function_type (void *p, int argcount,
+ bfd_boolean varargs ATTRIBUTE_UNUSED)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ int i;
+
+ /* We have no way to represent the argument types, so we just
+ discard them. However, if they define new types, we must output
+ them. We do this by producing empty typedefs. */
+ for (i = 0; i < argcount; i++)
+ {
+ if (! info->type_stack->definition)
+ free (stab_pop_type (info));
+ else
+ {
+ char *s, *buf;
+
+ s = stab_pop_type (info);
+
+ buf = (char *) xmalloc (strlen (s) + 3);
+ sprintf (buf, ":t%s", s);
+ free (s);
+
+ if (! stab_write_symbol (info, N_LSYM, 0, 0, buf))
+ return FALSE;
+
+ free (buf);
+ }
+ }
+
+ return stab_modify_type (info, 'f', 0, &info->type_cache.function_types,
+ &info->type_cache.function_types_alloc);
+}
+
+/* Push a reference type. */
+
+static bfd_boolean
+stab_reference_type (void *p)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ /* FIXME: The size should depend upon the architecture. */
+ return stab_modify_type (info, '&', 4, &info->type_cache.reference_types,
+ &info->type_cache.reference_types_alloc);
+}
+
+/* Push a range type. */
+
+static bfd_boolean
+stab_range_type (void *p, bfd_signed_vma low, bfd_signed_vma high)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ bfd_boolean definition;
+ unsigned int size;
+ char *s, *buf;
+
+ definition = info->type_stack->definition;
+ size = info->type_stack->size;
+
+ s = stab_pop_type (info);
+ buf = (char *) xmalloc (strlen (s) + 100);
+ sprintf (buf, "r%s;%ld;%ld;", s, (long) low, (long) high);
+ free (s);
+
+ if (! stab_push_string (info, buf, 0, definition, size))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Push an array type. */
+
+static bfd_boolean
+stab_array_type (void *p, bfd_signed_vma low, bfd_signed_vma high,
+ bfd_boolean stringp)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ bfd_boolean definition;
+ unsigned int element_size;
+ char *range, *element, *buf;
+ long tindex;
+ unsigned int size;
+
+ definition = info->type_stack->definition;
+ range = stab_pop_type (info);
+
+ definition = definition || info->type_stack->definition;
+ element_size = info->type_stack->size;
+ element = stab_pop_type (info);
+
+ buf = (char *) xmalloc (strlen (range) + strlen (element) + 100);
+
+ if (! stringp)
+ {
+ tindex = 0;
+ *buf = '\0';
+ }
+ else
+ {
+ /* We need to define a type in order to include the string
+ attribute. */
+ tindex = info->type_index;
+ ++info->type_index;
+ definition = TRUE;
+ sprintf (buf, "%ld=@S;", tindex);
+ }
+
+ sprintf (buf + strlen (buf), "ar%s;%ld;%ld;%s",
+ range, (long) low, (long) high, element);
+ free (range);
+ free (element);
+
+ if (high < low)
+ size = 0;
+ else
+ size = element_size * ((high - low) + 1);
+ if (! stab_push_string (info, buf, tindex, definition, size))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Push a set type. */
+
+static bfd_boolean
+stab_set_type (void *p, bfd_boolean bitstringp)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ bfd_boolean definition;
+ char *s, *buf;
+ long tindex;
+
+ definition = info->type_stack->definition;
+
+ s = stab_pop_type (info);
+ buf = (char *) xmalloc (strlen (s) + 30);
+
+ if (! bitstringp)
+ {
+ *buf = '\0';
+ tindex = 0;
+ }
+ else
+ {
+ /* We need to define a type in order to include the string
+ attribute. */
+ tindex = info->type_index;
+ ++info->type_index;
+ definition = TRUE;
+ sprintf (buf, "%ld=@S;", tindex);
+ }
+
+ sprintf (buf + strlen (buf), "S%s", s);
+ free (s);
+
+ if (! stab_push_string (info, buf, tindex, definition, 0))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Push an offset type. */
+
+static bfd_boolean
+stab_offset_type (void *p)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ bfd_boolean definition;
+ char *target, *base, *buf;
+
+ definition = info->type_stack->definition;
+ target = stab_pop_type (info);
+
+ definition = definition || info->type_stack->definition;
+ base = stab_pop_type (info);
+
+ buf = (char *) xmalloc (strlen (target) + strlen (base) + 3);
+ sprintf (buf, "@%s,%s", base, target);
+ free (base);
+ free (target);
+
+ if (! stab_push_string (info, buf, 0, definition, 0))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Push a method type. */
+
+static bfd_boolean
+stab_method_type (void *p, bfd_boolean domainp, int argcount,
+ bfd_boolean varargs)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ bfd_boolean definition;
+ char *domain, *return_type, *buf;
+ char **args;
+ int i;
+ size_t len;
+
+ /* We don't bother with stub method types, because that would
+ require a mangler for C++ argument types. This will waste space
+ in the debugging output. */
+
+ /* We need a domain. I'm not sure DOMAINP can ever be false,
+ anyhow. */
+ if (! domainp)
+ {
+ if (! stab_empty_type (p))
+ return FALSE;
+ }
+
+ definition = info->type_stack->definition;
+ domain = stab_pop_type (info);
+
+ /* A non-varargs function is indicated by making the last parameter
+ type be void. */
+
+ if (argcount < 0)
+ {
+ args = NULL;
+ argcount = 0;
+ }
+ else if (argcount == 0)
+ {
+ if (varargs)
+ args = NULL;
+ else
+ {
+ args = (char **) xmalloc (1 * sizeof (*args));
+ if (! stab_empty_type (p))
+ return FALSE;
+ definition = definition || info->type_stack->definition;
+ args[0] = stab_pop_type (info);
+ argcount = 1;
+ }
+ }
+ else
+ {
+ args = (char **) xmalloc ((argcount + 1) * sizeof (*args));
+ for (i = argcount - 1; i >= 0; i--)
+ {
+ definition = definition || info->type_stack->definition;
+ args[i] = stab_pop_type (info);
+ }
+ if (! varargs)
+ {
+ if (! stab_empty_type (p))
+ return FALSE;
+ definition = definition || info->type_stack->definition;
+ args[argcount] = stab_pop_type (info);
+ ++argcount;
+ }
+ }
+
+ definition = definition || info->type_stack->definition;
+ return_type = stab_pop_type (info);
+
+ len = strlen (domain) + strlen (return_type) + 10;
+ for (i = 0; i < argcount; i++)
+ len += strlen (args[i]);
+
+ buf = (char *) xmalloc (len);
+
+ sprintf (buf, "#%s,%s", domain, return_type);
+ free (domain);
+ free (return_type);
+ for (i = 0; i < argcount; i++)
+ {
+ strcat (buf, ",");
+ strcat (buf, args[i]);
+ free (args[i]);
+ }
+ strcat (buf, ";");
+
+ if (args != NULL)
+ free (args);
+
+ if (! stab_push_string (info, buf, 0, definition, 0))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Push a const version of a type. */
+
+static bfd_boolean
+stab_const_type (void *p)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ return stab_modify_type (info, 'k', info->type_stack->size,
+ (long **) NULL, (size_t *) NULL);
+}
+
+/* Push a volatile version of a type. */
+
+static bfd_boolean
+stab_volatile_type (void *p)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ return stab_modify_type (info, 'B', info->type_stack->size,
+ (long **) NULL, (size_t *) NULL);
+}
+
+/* Get the type index to use for a struct/union/class ID. This should
+ return -1 if it fails. */
+
+static long
+stab_get_struct_index (struct stab_write_handle *info, const char *tag,
+ unsigned int id, enum debug_type_kind kind,
+ unsigned int *psize)
+{
+ if (id >= info->type_cache.struct_types_alloc)
+ {
+ size_t alloc;
+
+ alloc = info->type_cache.struct_types_alloc;
+ if (alloc == 0)
+ alloc = 10;
+ while (id >= alloc)
+ alloc *= 2;
+ info->type_cache.struct_types =
+ (struct stab_tag *) xrealloc (info->type_cache.struct_types,
+ alloc * sizeof (struct stab_tag));
+ memset ((info->type_cache.struct_types
+ + info->type_cache.struct_types_alloc),
+ 0,
+ ((alloc - info->type_cache.struct_types_alloc)
+ * sizeof (struct stab_tag)));
+ info->type_cache.struct_types_alloc = alloc;
+ }
+
+ if (info->type_cache.struct_types[id].index == 0)
+ {
+ info->type_cache.struct_types[id].index = info->type_index;
+ ++info->type_index;
+ info->type_cache.struct_types[id].tag = tag;
+ info->type_cache.struct_types[id].kind = kind;
+ }
+
+ if (kind == DEBUG_KIND_ILLEGAL)
+ {
+ /* This is a definition of the struct. */
+ info->type_cache.struct_types[id].kind = kind;
+ info->type_cache.struct_types[id].size = *psize;
+ }
+ else
+ *psize = info->type_cache.struct_types[id].size;
+
+ return info->type_cache.struct_types[id].index;
+}
+
+/* Start outputting a struct. We ignore the tag, and handle it in
+ stab_tag. */
+
+static bfd_boolean
+stab_start_struct_type (void *p, const char *tag, unsigned int id,
+ bfd_boolean structp, unsigned int size)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ long tindex;
+ bfd_boolean definition;
+ char buf[40];
+
+ if (id == 0)
+ {
+ tindex = 0;
+ *buf = '\0';
+ definition = FALSE;
+ }
+ else
+ {
+ tindex = stab_get_struct_index (info, tag, id, DEBUG_KIND_ILLEGAL,
+ &size);
+ if (tindex < 0)
+ return FALSE;
+ sprintf (buf, "%ld=", tindex);
+ definition = TRUE;
+ }
+
+ sprintf (buf + strlen (buf), "%c%u",
+ structp ? 's' : 'u',
+ size);
+
+ if (! stab_push_string (info, buf, tindex, definition, size))
+ return FALSE;
+
+ info->type_stack->fields = (char *) xmalloc (1);
+ info->type_stack->fields[0] = '\0';
+
+ return TRUE;
+}
+
+/* Add a field to a struct. */
+
+static bfd_boolean
+stab_struct_field (void *p, const char *name, bfd_vma bitpos,
+ bfd_vma bitsize, enum debug_visibility visibility)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ bfd_boolean definition;
+ unsigned int size;
+ char *s, *n;
+ const char *vis;
+
+ definition = info->type_stack->definition;
+ size = info->type_stack->size;
+ s = stab_pop_type (info);
+
+ /* Add this field to the end of the current struct fields, which is
+ currently on the top of the stack. */
+
+ assert (info->type_stack->fields != NULL);
+ n = (char *) xmalloc (strlen (info->type_stack->fields)
+ + strlen (name)
+ + strlen (s)
+ + 50);
+
+ switch (visibility)
+ {
+ default:
+ abort ();
+
+ case DEBUG_VISIBILITY_PUBLIC:
+ vis = "";
+ break;
+
+ case DEBUG_VISIBILITY_PRIVATE:
+ vis = "/0";
+ break;
+
+ case DEBUG_VISIBILITY_PROTECTED:
+ vis = "/1";
+ break;
+ }
+
+ if (bitsize == 0)
+ {
+ bitsize = size * 8;
+ if (bitsize == 0)
+ non_fatal (_("%s: warning: unknown size for field `%s' in struct"),
+ bfd_get_filename (info->abfd), name);
+ }
+
+ sprintf (n, "%s%s:%s%s,%ld,%ld;", info->type_stack->fields, name, vis, s,
+ (long) bitpos, (long) bitsize);
+
+ free (info->type_stack->fields);
+ info->type_stack->fields = n;
+
+ if (definition)
+ info->type_stack->definition = TRUE;
+
+ return TRUE;
+}
+
+/* Finish up a struct. */
+
+static bfd_boolean
+stab_end_struct_type (void *p)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ bfd_boolean definition;
+ long tindex;
+ unsigned int size;
+ char *fields, *first, *buf;
+
+ assert (info->type_stack != NULL && info->type_stack->fields != NULL);
+
+ definition = info->type_stack->definition;
+ tindex = info->type_stack->index;
+ size = info->type_stack->size;
+ fields = info->type_stack->fields;
+ first = stab_pop_type (info);
+
+ buf = (char *) xmalloc (strlen (first) + strlen (fields) + 2);
+ sprintf (buf, "%s%s;", first, fields);
+ free (first);
+ free (fields);
+
+ if (! stab_push_string (info, buf, tindex, definition, size))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Start outputting a class. */
+
+static bfd_boolean
+stab_start_class_type (void *p, const char *tag, unsigned int id, bfd_boolean structp, unsigned int size, bfd_boolean vptr, bfd_boolean ownvptr)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ bfd_boolean definition;
+ char *vstring;
+
+ if (! vptr || ownvptr)
+ {
+ definition = FALSE;
+ vstring = NULL;
+ }
+ else
+ {
+ definition = info->type_stack->definition;
+ vstring = stab_pop_type (info);
+ }
+
+ if (! stab_start_struct_type (p, tag, id, structp, size))
+ return FALSE;
+
+ if (vptr)
+ {
+ char *vtable;
+
+ if (ownvptr)
+ {
+ assert (info->type_stack->index > 0);
+ vtable = (char *) xmalloc (20);
+ sprintf (vtable, "~%%%ld", info->type_stack->index);
+ }
+ else
+ {
+ vtable = (char *) xmalloc (strlen (vstring) + 3);
+ sprintf (vtable, "~%%%s", vstring);
+ free (vstring);
+ }
+
+ info->type_stack->vtable = vtable;
+ }
+
+ if (definition)
+ info->type_stack->definition = TRUE;
+
+ return TRUE;
+}
+
+/* Add a static member to the class on the type stack. */
+
+static bfd_boolean
+stab_class_static_member (void *p, const char *name, const char *physname,
+ enum debug_visibility visibility)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ bfd_boolean definition;
+ char *s, *n;
+ const char *vis;
+
+ definition = info->type_stack->definition;
+ s = stab_pop_type (info);
+
+ /* Add this field to the end of the current struct fields, which is
+ currently on the top of the stack. */
+
+ assert (info->type_stack->fields != NULL);
+ n = (char *) xmalloc (strlen (info->type_stack->fields)
+ + strlen (name)
+ + strlen (s)
+ + strlen (physname)
+ + 10);
+
+ switch (visibility)
+ {
+ default:
+ abort ();
+
+ case DEBUG_VISIBILITY_PUBLIC:
+ vis = "";
+ break;
+
+ case DEBUG_VISIBILITY_PRIVATE:
+ vis = "/0";
+ break;
+
+ case DEBUG_VISIBILITY_PROTECTED:
+ vis = "/1";
+ break;
+ }
+
+ sprintf (n, "%s%s:%s%s:%s;", info->type_stack->fields, name, vis, s,
+ physname);
+
+ free (info->type_stack->fields);
+ info->type_stack->fields = n;
+
+ if (definition)
+ info->type_stack->definition = TRUE;
+
+ return TRUE;
+}
+
+/* Add a base class to the class on the type stack. */
+
+static bfd_boolean
+stab_class_baseclass (void *p, bfd_vma bitpos, bfd_boolean is_virtual,
+ enum debug_visibility visibility)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ bfd_boolean definition;
+ char *s;
+ char *buf;
+ unsigned int c;
+ char **baseclasses;
+
+ definition = info->type_stack->definition;
+ s = stab_pop_type (info);
+
+ /* Build the base class specifier. */
+
+ buf = (char *) xmalloc (strlen (s) + 25);
+ buf[0] = is_virtual ? '1' : '0';
+ switch (visibility)
+ {
+ default:
+ abort ();
+
+ case DEBUG_VISIBILITY_PRIVATE:
+ buf[1] = '0';
+ break;
+
+ case DEBUG_VISIBILITY_PROTECTED:
+ buf[1] = '1';
+ break;
+
+ case DEBUG_VISIBILITY_PUBLIC:
+ buf[1] = '2';
+ break;
+ }
+
+ sprintf (buf + 2, "%ld,%s;", (long) bitpos, s);
+ free (s);
+
+ /* Add the new baseclass to the existing ones. */
+
+ assert (info->type_stack != NULL && info->type_stack->fields != NULL);
+
+ if (info->type_stack->baseclasses == NULL)
+ c = 0;
+ else
+ {
+ c = 0;
+ while (info->type_stack->baseclasses[c] != NULL)
+ ++c;
+ }
+
+ baseclasses = (char **) xrealloc (info->type_stack->baseclasses,
+ (c + 2) * sizeof (*baseclasses));
+ baseclasses[c] = buf;
+ baseclasses[c + 1] = NULL;
+
+ info->type_stack->baseclasses = baseclasses;
+
+ if (definition)
+ info->type_stack->definition = TRUE;
+
+ return TRUE;
+}
+
+/* Start adding a method to the class on the type stack. */
+
+static bfd_boolean
+stab_class_start_method (void *p, const char *name)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ char *m;
+
+ assert (info->type_stack != NULL && info->type_stack->fields != NULL);
+
+ if (info->type_stack->methods == NULL)
+ {
+ m = (char *) xmalloc (strlen (name) + 3);
+ *m = '\0';
+ }
+ else
+ {
+ m = (char *) xrealloc (info->type_stack->methods,
+ (strlen (info->type_stack->methods)
+ + strlen (name)
+ + 4));
+ }
+
+ sprintf (m + strlen (m), "%s::", name);
+
+ info->type_stack->methods = m;
+
+ return TRUE;
+}
+
+/* Add a variant, either static or not, to the current method. */
+
+static bfd_boolean
+stab_class_method_var (struct stab_write_handle *info, const char *physname,
+ enum debug_visibility visibility,
+ bfd_boolean staticp, bfd_boolean constp,
+ bfd_boolean volatilep, bfd_vma voffset,
+ bfd_boolean contextp)
+{
+ bfd_boolean definition;
+ char *type;
+ char *context = NULL;
+ char visc, qualc, typec;
+
+ definition = info->type_stack->definition;
+ type = stab_pop_type (info);
+
+ if (contextp)
+ {
+ definition = definition || info->type_stack->definition;
+ context = stab_pop_type (info);
+ }
+
+ assert (info->type_stack != NULL && info->type_stack->methods != NULL);
+
+ switch (visibility)
+ {
+ default:
+ abort ();
+
+ case DEBUG_VISIBILITY_PRIVATE:
+ visc = '0';
+ break;
+
+ case DEBUG_VISIBILITY_PROTECTED:
+ visc = '1';
+ break;
+
+ case DEBUG_VISIBILITY_PUBLIC:
+ visc = '2';
+ break;
+ }
+
+ if (constp)
+ {
+ if (volatilep)
+ qualc = 'D';
+ else
+ qualc = 'B';
+ }
+ else
+ {
+ if (volatilep)
+ qualc = 'C';
+ else
+ qualc = 'A';
+ }
+
+ if (staticp)
+ typec = '?';
+ else if (! contextp)
+ typec = '.';
+ else
+ typec = '*';
+
+ info->type_stack->methods =
+ (char *) xrealloc (info->type_stack->methods,
+ (strlen (info->type_stack->methods)
+ + strlen (type)
+ + strlen (physname)
+ + (contextp ? strlen (context) : 0)
+ + 40));
+
+ sprintf (info->type_stack->methods + strlen (info->type_stack->methods),
+ "%s:%s;%c%c%c", type, physname, visc, qualc, typec);
+ free (type);
+
+ if (contextp)
+ {
+ sprintf (info->type_stack->methods + strlen (info->type_stack->methods),
+ "%ld;%s;", (long) voffset, context);
+ free (context);
+ }
+
+ if (definition)
+ info->type_stack->definition = TRUE;
+
+ return TRUE;
+}
+
+/* Add a variant to the current method. */
+
+static bfd_boolean
+stab_class_method_variant (void *p, const char *physname,
+ enum debug_visibility visibility,
+ bfd_boolean constp, bfd_boolean volatilep,
+ bfd_vma voffset, bfd_boolean contextp)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ return stab_class_method_var (info, physname, visibility, FALSE, constp,
+ volatilep, voffset, contextp);
+}
+
+/* Add a static variant to the current method. */
+
+static bfd_boolean
+stab_class_static_method_variant (void *p, const char *physname,
+ enum debug_visibility visibility,
+ bfd_boolean constp, bfd_boolean volatilep)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ return stab_class_method_var (info, physname, visibility, TRUE, constp,
+ volatilep, 0, FALSE);
+}
+
+/* Finish up a method. */
+
+static bfd_boolean
+stab_class_end_method (void *p)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ assert (info->type_stack != NULL && info->type_stack->methods != NULL);
+
+ /* We allocated enough room on info->type_stack->methods to add the
+ trailing semicolon. */
+ strcat (info->type_stack->methods, ";");
+
+ return TRUE;
+}
+
+/* Finish up a class. */
+
+static bfd_boolean
+stab_end_class_type (void *p)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ size_t len;
+ unsigned int i = 0;
+ char *buf;
+
+ assert (info->type_stack != NULL && info->type_stack->fields != NULL);
+
+ /* Work out the size we need to allocate for the class definition. */
+
+ len = (strlen (info->type_stack->string)
+ + strlen (info->type_stack->fields)
+ + 10);
+ if (info->type_stack->baseclasses != NULL)
+ {
+ len += 20;
+ for (i = 0; info->type_stack->baseclasses[i] != NULL; i++)
+ len += strlen (info->type_stack->baseclasses[i]);
+ }
+ if (info->type_stack->methods != NULL)
+ len += strlen (info->type_stack->methods);
+ if (info->type_stack->vtable != NULL)
+ len += strlen (info->type_stack->vtable);
+
+ /* Build the class definition. */
+
+ buf = (char *) xmalloc (len);
+
+ strcpy (buf, info->type_stack->string);
+
+ if (info->type_stack->baseclasses != NULL)
+ {
+ sprintf (buf + strlen (buf), "!%u,", i);
+ for (i = 0; info->type_stack->baseclasses[i] != NULL; i++)
+ {
+ strcat (buf, info->type_stack->baseclasses[i]);
+ free (info->type_stack->baseclasses[i]);
+ }
+ free (info->type_stack->baseclasses);
+ info->type_stack->baseclasses = NULL;
+ }
+
+ strcat (buf, info->type_stack->fields);
+ free (info->type_stack->fields);
+ info->type_stack->fields = NULL;
+
+ if (info->type_stack->methods != NULL)
+ {
+ strcat (buf, info->type_stack->methods);
+ free (info->type_stack->methods);
+ info->type_stack->methods = NULL;
+ }
+
+ strcat (buf, ";");
+
+ if (info->type_stack->vtable != NULL)
+ {
+ strcat (buf, info->type_stack->vtable);
+ free (info->type_stack->vtable);
+ info->type_stack->vtable = NULL;
+ }
+
+ /* Replace the string on the top of the stack with the complete
+ class definition. */
+ free (info->type_stack->string);
+ info->type_stack->string = buf;
+
+ return TRUE;
+}
+
+/* Push a typedef which was previously defined. */
+
+static bfd_boolean
+stab_typedef_type (void *p, const char *name)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ struct string_hash_entry *h;
+
+ h = string_hash_lookup (&info->typedef_hash, name, FALSE, FALSE);
+ assert (h != NULL && h->index > 0);
+
+ return stab_push_defined_type (info, h->index, h->size);
+}
+
+/* Push a struct, union or class tag. */
+
+static bfd_boolean
+stab_tag_type (void *p, const char *name, unsigned int id,
+ enum debug_type_kind kind)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ long tindex;
+ unsigned int size = 0;
+
+ tindex = stab_get_struct_index (info, name, id, kind, &size);
+ if (tindex < 0)
+ return FALSE;
+
+ return stab_push_defined_type (info, tindex, size);
+}
+
+/* Define a typedef. */
+
+static bfd_boolean
+stab_typdef (void *p, const char *name)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ long tindex;
+ unsigned int size;
+ char *s, *buf;
+ struct string_hash_entry *h;
+
+ tindex = info->type_stack->index;
+ size = info->type_stack->size;
+ s = stab_pop_type (info);
+
+ buf = (char *) xmalloc (strlen (name) + strlen (s) + 20);
+
+ if (tindex > 0)
+ sprintf (buf, "%s:t%s", name, s);
+ else
+ {
+ tindex = info->type_index;
+ ++info->type_index;
+ sprintf (buf, "%s:t%ld=%s", name, tindex, s);
+ }
+
+ free (s);
+
+ if (! stab_write_symbol (info, N_LSYM, 0, 0, buf))
+ return FALSE;
+
+ free (buf);
+
+ h = string_hash_lookup (&info->typedef_hash, name, TRUE, FALSE);
+ if (h == NULL)
+ {
+ non_fatal (_("string_hash_lookup failed: %s"),
+ bfd_errmsg (bfd_get_error ()));
+ return FALSE;
+ }
+
+ /* I don't think we care about redefinitions. */
+
+ h->index = tindex;
+ h->size = size;
+
+ return TRUE;
+}
+
+/* Define a tag. */
+
+static bfd_boolean
+stab_tag (void *p, const char *tag)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ char *s, *buf;
+
+ s = stab_pop_type (info);
+
+ buf = (char *) xmalloc (strlen (tag) + strlen (s) + 3);
+
+ sprintf (buf, "%s:T%s", tag, s);
+ free (s);
+
+ if (! stab_write_symbol (info, N_LSYM, 0, 0, buf))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Define an integer constant. */
+
+static bfd_boolean
+stab_int_constant (void *p, const char *name, bfd_vma val)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ char *buf;
+
+ buf = (char *) xmalloc (strlen (name) + 20);
+ sprintf (buf, "%s:c=i%ld", name, (long) val);
+
+ if (! stab_write_symbol (info, N_LSYM, 0, 0, buf))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Define a floating point constant. */
+
+static bfd_boolean
+stab_float_constant (void *p, const char *name, double val)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ char *buf;
+
+ buf = (char *) xmalloc (strlen (name) + 20);
+ sprintf (buf, "%s:c=f%g", name, val);
+
+ if (! stab_write_symbol (info, N_LSYM, 0, 0, buf))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Define a typed constant. */
+
+static bfd_boolean
+stab_typed_constant (void *p, const char *name, bfd_vma val)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ char *s, *buf;
+
+ s = stab_pop_type (info);
+
+ buf = (char *) xmalloc (strlen (name) + strlen (s) + 20);
+ sprintf (buf, "%s:c=e%s,%ld", name, s, (long) val);
+ free (s);
+
+ if (! stab_write_symbol (info, N_LSYM, 0, 0, buf))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Record a variable. */
+
+static bfd_boolean
+stab_variable (void *p, const char *name, enum debug_var_kind kind,
+ bfd_vma val)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ char *s, *buf;
+ int stab_type;
+ const char *kindstr;
+
+ s = stab_pop_type (info);
+
+ switch (kind)
+ {
+ default:
+ abort ();
+
+ case DEBUG_GLOBAL:
+ stab_type = N_GSYM;
+ kindstr = "G";
+ break;
+
+ case DEBUG_STATIC:
+ stab_type = N_STSYM;
+ kindstr = "S";
+ break;
+
+ case DEBUG_LOCAL_STATIC:
+ stab_type = N_STSYM;
+ kindstr = "V";
+ break;
+
+ case DEBUG_LOCAL:
+ stab_type = N_LSYM;
+ kindstr = "";
+
+ /* Make sure that this is a type reference or definition. */
+ if (! ISDIGIT (*s))
+ {
+ char *n;
+ long tindex;
+
+ tindex = info->type_index;
+ ++info->type_index;
+ n = (char *) xmalloc (strlen (s) + 20);
+ sprintf (n, "%ld=%s", tindex, s);
+ free (s);
+ s = n;
+ }
+ break;
+
+ case DEBUG_REGISTER:
+ stab_type = N_RSYM;
+ kindstr = "r";
+ break;
+ }
+
+ buf = (char *) xmalloc (strlen (name) + strlen (s) + 3);
+ sprintf (buf, "%s:%s%s", name, kindstr, s);
+ free (s);
+
+ if (! stab_write_symbol (info, stab_type, 0, val, buf))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Start outputting a function. */
+
+static bfd_boolean
+stab_start_function (void *p, const char *name, bfd_boolean globalp)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ char *rettype, *buf;
+
+ assert (info->nesting == 0 && info->fun_offset == -1);
+
+ rettype = stab_pop_type (info);
+
+ buf = (char *) xmalloc (strlen (name) + strlen (rettype) + 3);
+ sprintf (buf, "%s:%c%s", name,
+ globalp ? 'F' : 'f',
+ rettype);
+
+ /* We don't know the value now, so we set it in start_block. */
+ info->fun_offset = info->symbols_size;
+
+ if (! stab_write_symbol (info, N_FUN, 0, 0, buf))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Output a function parameter. */
+
+static bfd_boolean
+stab_function_parameter (void *p, const char *name, enum debug_parm_kind kind, bfd_vma val)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+ char *s, *buf;
+ int stab_type;
+ char kindc;
+
+ s = stab_pop_type (info);
+
+ switch (kind)
+ {
+ default:
+ abort ();
+
+ case DEBUG_PARM_STACK:
+ stab_type = N_PSYM;
+ kindc = 'p';
+ break;
+
+ case DEBUG_PARM_REG:
+ stab_type = N_RSYM;
+ kindc = 'P';
+ break;
+
+ case DEBUG_PARM_REFERENCE:
+ stab_type = N_PSYM;
+ kindc = 'v';
+ break;
+
+ case DEBUG_PARM_REF_REG:
+ stab_type = N_RSYM;
+ kindc = 'a';
+ break;
+ }
+
+ buf = (char *) xmalloc (strlen (name) + strlen (s) + 3);
+ sprintf (buf, "%s:%c%s", name, kindc, s);
+ free (s);
+
+ if (! stab_write_symbol (info, stab_type, 0, val, buf))
+ return FALSE;
+
+ free (buf);
+
+ return TRUE;
+}
+
+/* Start a block. */
+
+static bfd_boolean
+stab_start_block (void *p, bfd_vma addr)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ /* Fill in any slots which have been waiting for the first known
+ text address. */
+
+ if (info->so_offset != -1)
+ {
+ bfd_put_32 (info->abfd, addr, info->symbols + info->so_offset + 8);
+ info->so_offset = -1;
+ }
+
+ if (info->fun_offset != -1)
+ {
+ bfd_put_32 (info->abfd, addr, info->symbols + info->fun_offset + 8);
+ info->fun_offset = -1;
+ }
+
+ ++info->nesting;
+
+ /* We will be called with a top level block surrounding the
+ function, but stabs information does not output that block, so we
+ ignore it. */
+
+ if (info->nesting == 1)
+ {
+ info->fnaddr = addr;
+ return TRUE;
+ }
+
+ /* We have to output the LBRAC symbol after any variables which are
+ declared inside the block. We postpone the LBRAC until the next
+ start_block or end_block. */
+
+ /* If we have postponed an LBRAC, output it now. */
+ if (info->pending_lbrac != (bfd_vma) -1)
+ {
+ if (! stab_write_symbol (info, N_LBRAC, 0, info->pending_lbrac,
+ (const char *) NULL))
+ return FALSE;
+ }
+
+ /* Remember the address and output it later. */
+
+ info->pending_lbrac = addr - info->fnaddr;
+
+ return TRUE;
+}
+
+/* End a block. */
+
+static bfd_boolean
+stab_end_block (void *p, bfd_vma addr)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ if (addr > info->last_text_address)
+ info->last_text_address = addr;
+
+ /* If we have postponed an LBRAC, output it now. */
+ if (info->pending_lbrac != (bfd_vma) -1)
+ {
+ if (! stab_write_symbol (info, N_LBRAC, 0, info->pending_lbrac,
+ (const char *) NULL))
+ return FALSE;
+ info->pending_lbrac = (bfd_vma) -1;
+ }
+
+ assert (info->nesting > 0);
+
+ --info->nesting;
+
+ /* We ignore the outermost block. */
+ if (info->nesting == 0)
+ return TRUE;
+
+ return stab_write_symbol (info, N_RBRAC, 0, addr - info->fnaddr,
+ (const char *) NULL);
+}
+
+/* End a function. */
+
+static bfd_boolean
+stab_end_function (void *p ATTRIBUTE_UNUSED)
+{
+ return TRUE;
+}
+
+/* Output a line number. */
+
+static bfd_boolean
+stab_lineno (void *p, const char *file, unsigned long lineno, bfd_vma addr)
+{
+ struct stab_write_handle *info = (struct stab_write_handle *) p;
+
+ assert (info->lineno_filename != NULL);
+
+ if (addr > info->last_text_address)
+ info->last_text_address = addr;
+
+ if (filename_cmp (file, info->lineno_filename) != 0)
+ {
+ if (! stab_write_symbol (info, N_SOL, 0, addr, file))
+ return FALSE;
+ info->lineno_filename = file;
+ }
+
+ return stab_write_symbol (info, N_SLINE, lineno, addr - info->fnaddr,
+ (const char *) NULL);
+}